[Scummvm-cvs-logs] scummvm master -> f0eee81d327957cddb85c5a1ffe7a308a377f636
bluegr
md5 at scummvm.org
Mon Dec 19 02:25:29 CET 2011
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f0eee81d32 DREAMWEB: Port 'intoinv', 'outofinv' to C++
Commit: f0eee81d327957cddb85c5a1ffe7a308a377f636
https://github.com/scummvm/scummvm/commit/f0eee81d327957cddb85c5a1ffe7a308a377f636
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2011-12-18T17:24:03-08:00
Commit Message:
DREAMWEB: Port 'intoinv', 'outofinv' to C++
Changed paths:
devtools/tasmrecover/tasm-recover
engines/dreamweb/dreamgen.cpp
engines/dreamweb/dreamgen.h
engines/dreamweb/object.cpp
engines/dreamweb/stubs.h
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 04f8ebe..e7716ac 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -509,6 +509,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'input',
'interupttest',
'interviewer',
+ 'intoinv',
'intro',
'intro1text',
'intro2text',
@@ -638,6 +639,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'openyourneighbour',
'othersmoker',
'out22c',
+ 'outofinv',
'paltoendpal',
'paltostartpal',
'panelicons1',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index be1bfa6..a0ce29d 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -691,118 +691,6 @@ actuallyswap:
delPointer();
}
-void DreamGenContext::inToInv() {
- STACK_CHECK;
- _cmp(data.byte(kPickup), 0);
- if (!flags.z())
- goto notout;
- outOfInv();
- return;
-notout:
- findInvPos();
- ax = es.word(bx);
- _cmp(al, 255);
- if (flags.z())
- goto canplace1;
- swapWithInv();
- return;
-canplace1:
- al = data.byte(kItemframe);
- ah = data.byte(kObjecttype);
- _cmp(ax, data.word(kOldsubject));
- if (!flags.z())
- goto difsub1;
- _cmp(data.byte(kCommandtype), 220);
- if (flags.z())
- goto alreadyplce;
- data.byte(kCommandtype) = 220;
-difsub1:
- data.word(kOldsubject) = ax;
- bx = ax;
- al = 35;
- commandWithOb();
-alreadyplce:
- ax = data.word(kMousebutton);
- _cmp(ax, data.word(kOldbutton));
- if (flags.z())
- return /* (notletgo2) */;
- _and(ax, 1);
- if (!flags.z())
- goto doplace;
- return;
-doplace:
- delPointer();
- al = data.byte(kItemframe);
- getExAd();
- es.byte(bx+2) = 4;
- es.byte(bx+3) = 255;
- al = data.byte(kLastinvpos);
- es.byte(bx+4) = al;
- data.byte(kPickup) = 0;
- fillRyan();
- readMouse();
- showPointer();
- outOfInv();
- workToScreen();
- delPointer();
-}
-
-void DreamGenContext::outOfInv() {
- STACK_CHECK;
- findInvPos();
- ax = es.word(bx);
- _cmp(al, 255);
- if (!flags.z())
- goto canpick2;
- blank();
- return;
-canpick2:
- bx = data.word(kMousebutton);
- _cmp(bx, 2);
- if (!flags.z())
- goto canpick2a;
- reExFromInv();
- return;
-canpick2a:
- _cmp(ax, data.word(kOldsubject));
- if (!flags.z())
- goto difsub3;
- _cmp(data.byte(kCommandtype), 221);
- if (flags.z())
- goto alreadygrab;
- data.byte(kCommandtype) = 221;
-difsub3:
- data.word(kOldsubject) = ax;
- bx = ax;
- al = 36;
- commandWithOb();
-alreadygrab:
- ax = data.word(kMousebutton);
- _cmp(ax, data.word(kOldbutton));
- if (flags.z())
- return /* (notletgo) */;
- _and(ax, 1);
- if (!flags.z())
- goto dograb;
- return;
-dograb:
- delPointer();
- data.byte(kPickup) = 1;
- findInvPos();
- ax = es.word(bx);
- data.byte(kItemframe) = al;
- data.byte(kObjecttype) = ah;
- getExAd();
- es.byte(bx+2) = 20;
- es.byte(bx+3) = 255;
- fillRyan();
- readMouse();
- showPointer();
- inToInv();
- workToScreen();
- delPointer();
-}
-
void DreamGenContext::getFreeAd() {
STACK_CHECK;
ah = 0;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 77e3abd..b13d150 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -477,13 +477,11 @@ public:
void startTalk();
void getAnyAd();
void reminders();
- void inToInv();
void getFreeAd();
void dirFile();
void pickupConts();
void fadeUpMon();
void reExFromInv();
- void outOfInv();
void transferMap();
void purgeAnItem();
void purgeALocation();
diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp
index 384e001..9fe94c4 100644
--- a/engines/dreamweb/object.cpp
+++ b/engines/dreamweb/object.cpp
@@ -562,5 +562,87 @@ void DreamBase::removeObFromInv() {
deleteExObject(data.byte(kCommand));
}
+void DreamGenContext::inToInv() {
+ if (!data.byte(kPickup)) {
+ outOfInv();
+ return;
+ }
+
+ findInvPos();
+ ax = es.word(bx);
+
+ if (al != 255) {
+ swapWithInv();
+ return;
+ }
+
+ al = data.byte(kItemframe);
+ ah = data.byte(kObjecttype);
+
+ if (ax == data.word(kOldsubject) && data.byte(kCommandtype) != 220)
+ data.byte(kCommandtype) = 220;
+
+ data.word(kOldsubject) = ax;
+ commandWithOb(35, data.byte(kObjecttype), data.byte(kItemframe));
+
+ if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1))
+ return; // notletgo2
+
+ delPointer();
+ DynObject *object = getExAd(data.byte(kItemframe));
+ object->mapad[0] = 4;
+ object->mapad[1] = 255;
+ object->mapad[2] = data.byte(kLastinvpos);
+ data.byte(kPickup) = 0;
+ fillRyan();
+ readMouse();
+ showPointer();
+ outOfInv();
+ workToScreen();
+ delPointer();
+}
+
+void DreamGenContext::outOfInv() {
+ findInvPos();
+ ax = es.word(bx);
+
+ if (al == 255) {
+ blank();
+ return;
+ }
+
+ if (data.word(kMousebutton) == 2) {
+ reExFromInv();
+ return;
+ }
+
+ if (ax == data.word(kOldsubject) && data.byte(kCommandtype) != 221)
+ data.byte(kCommandtype) = 221;
+
+ data.word(kOldsubject) = ax;
+ commandWithOb(36, ah, al);
+
+ if (data.word(kMousebutton) == data.word(kOldbutton))
+ return; // notletgo
+
+ if (!(data.word(kMousebutton) & 1))
+ return;
+
+ delPointer();
+ data.byte(kPickup) = 1;
+ findInvPos();
+ ax = es.word(bx);
+ data.byte(kItemframe) = al;
+ data.byte(kObjecttype) = ah;
+ DynObject *object = getExAd(data.byte(kItemframe));
+ object->mapad[0] = 20;
+ object->mapad[1] = 255;
+ fillRyan();
+ readMouse();
+ showPointer();
+ inToInv();
+ workToScreen();
+ delPointer();
+}
} // End of namespace DreamGen
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 3ab7cfb..1a76a78 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -375,5 +375,7 @@
}
void signOn();
void lookAtPlace();
+ void inToInv();
+ void outOfInv();
#endif
More information about the Scummvm-git-logs
mailing list