aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2011-12-06 23:01:59 +0200
committerFilippos Karapetis2011-12-06 23:02:31 +0200
commit7445c62a713de489b3515711de579696c64239fe (patch)
tree3230e4e14c1e36f1802836665b28189ae0e75241
parent9a7b8340c5c77b04b4eaf934b6c9093cf66c2e43 (diff)
downloadscummvm-rg350-7445c62a713de489b3515711de579696c64239fe.tar.gz
scummvm-rg350-7445c62a713de489b3515711de579696c64239fe.tar.bz2
scummvm-rg350-7445c62a713de489b3515711de579696c64239fe.zip
DREAMWEB: 'usecardreader1', 'usecardreader2', 'usecardreader3', 'usepoolreader' ported to C++
-rwxr-xr-xdevtools/tasmrecover/tasm-recover4
-rw-r--r--engines/dreamweb/dreamgen.cpp197
-rw-r--r--engines/dreamweb/dreamgen.h4
-rw-r--r--engines/dreamweb/stubs.h4
-rw-r--r--engines/dreamweb/use.cpp106
5 files changed, 114 insertions, 201 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index ce45a91a97..a270a7f487 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -598,6 +598,9 @@ generator = cpp(context, "DreamGen", blacklist = [
'twodigitnum',
'updatepeople',
'usebalcony',
+ 'usecardreader1',
+ 'usecardreader2',
+ 'usecardreader3',
'usecart',
'usecharset1',
'usechurchgate',
@@ -621,6 +624,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'useobject',
'useplate',
'useplinth',
+ 'usepoolreader',
'userailing',
'useroutine',
'useshield',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 1ab7af082e..28d4634f1c 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -5308,43 +5308,6 @@ void DreamGenContext::drawItAll() {
showIcon();
}
-void DreamGenContext::usePoolReader() {
- STACK_CHECK;
- _cmp(data.byte(kWithobject), 255);
- if (!flags.z())
- goto poolwith;
- withWhat();
- return;
-poolwith:
- al = data.byte(kWithobject);
- ah = data.byte(kWithtype);
- cl = 'M';
- ch = 'E';
- dl = 'M';
- dh = 'B';
- compare();
- if (flags.z())
- goto openpool;
- cx = 300;
- al = 14;
- showPuzText();
- putBackObStuff();
- return;
-openpool:
- _cmp(data.byte(kTalkedtoattendant), 1);
- if (flags.z())
- goto canopenpool;
- showSecondUse();
- putBackObStuff();
- return;
-canopenpool:
- al = 17;
- playChannel1();
- showFirstUse();
- data.byte(kCounttoopen) = 6;
- data.byte(kGetback) = 1;
-}
-
void DreamGenContext::useLighter() {
STACK_CHECK;
_cmp(data.byte(kWithobject), 255);
@@ -5375,166 +5338,6 @@ cigarette:
data.byte(kGetback) = 1;
}
-void DreamGenContext::useCardReader1() {
- STACK_CHECK;
- _cmp(data.byte(kWithobject), 255);
- if (!flags.z())
- goto gotreader1with;
- withWhat();
- return;
-gotreader1with:
- al = data.byte(kWithobject);
- ah = data.byte(kWithtype);
- cl = 'C';
- ch = 'S';
- dl = 'H';
- dh = 'R';
- compare();
- if (flags.z())
- goto correctcard;
- cx = 300;
- al = 14;
- showPuzText();
- putBackObStuff();
- return;
-correctcard:
- _cmp(data.byte(kTalkedtosparky), 0);
- if (flags.z())
- goto notyet;
- _cmp(data.word(kCard1money), 0);
- if (flags.z())
- goto getscash;
- cx = 300;
- al = 17;
- showPuzText();
- putBackObStuff();
- return;
-getscash:
- al = 16;
- playChannel1();
- cx = 300;
- al = 18;
- showPuzText();
- _inc(data.byte(kProgresspoints));
- data.word(kCard1money) = 12432;
- data.byte(kGetback) = 1;
- return;
-notyet:
- showFirstUse();
- putBackObStuff();
-}
-
-void DreamGenContext::useCardReader2() {
- STACK_CHECK;
- _cmp(data.byte(kWithobject), 255);
- if (!flags.z())
- goto gotreader2with;
- withWhat();
- return;
-gotreader2with:
- al = data.byte(kWithobject);
- ah = data.byte(kWithtype);
- cl = 'C';
- ch = 'S';
- dl = 'H';
- dh = 'R';
- compare();
- if (flags.z())
- goto correctcard2;
- cx = 300;
- al = 14;
- showPuzText();
- putBackObStuff();
- return;
-correctcard2:
- _cmp(data.byte(kTalkedtoboss), 0);
- if (flags.z())
- goto notyetboss;
- _cmp(data.word(kCard1money), 0);
- if (flags.z())
- goto nocash;
- _cmp(data.byte(kGunpassflag), 2);
- if (flags.z())
- goto alreadygotnew;
- al = 18;
- playChannel1();
- cx = 300;
- al = 19;
- showPuzText();
- al = 94;
- placeSetObject();
- data.byte(kGunpassflag) = 1;
- _sub(data.word(kCard1money), 2000);
- _inc(data.byte(kProgresspoints));
- data.byte(kGetback) = 1;
- return;
-nocash:
- cx = 300;
- al = 20;
- showPuzText();
- putBackObStuff();
- return;
-alreadygotnew:
- cx = 300;
- al = 22;
- showPuzText();
- putBackObStuff();
- return;
-notyetboss:
- showFirstUse();
- putBackObStuff();
-}
-
-void DreamGenContext::useCardReader3() {
- STACK_CHECK;
- _cmp(data.byte(kWithobject), 255);
- if (!flags.z())
- goto gotreader3with;
- withWhat();
- return;
-gotreader3with:
- al = data.byte(kWithobject);
- ah = data.byte(kWithtype);
- cl = 'C';
- ch = 'S';
- dl = 'H';
- dh = 'R';
- compare();
- if (flags.z())
- goto rightcard;
- cx = 300;
- al = 14;
- showPuzText();
- putBackObStuff();
- return;
-rightcard:
- _cmp(data.byte(kTalkedtorecep), 0);
- if (flags.z())
- goto notyetrecep;
- _cmp(data.byte(kCardpassflag), 0);
- if (!flags.z())
- goto alreadyusedit;
- al = 16;
- playChannel1();
- cx = 300;
- al = 25;
- showPuzText();
- _inc(data.byte(kProgresspoints));
- _sub(data.word(kCard1money), 8300);
- data.byte(kCardpassflag) = 1;
- data.byte(kGetback) = 1;
- return;
-alreadyusedit:
- cx = 300;
- al = 26;
- showPuzText();
- putBackObStuff();
- return;
-notyetrecep:
- showFirstUse();
- putBackObStuff();
-}
-
void DreamGenContext::useCashCard() {
STACK_CHECK;
getRidOfReels();
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 58c19c5834..6b0fc9e243 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -544,7 +544,6 @@ public:
void identifyOb();
void useLighter();
void runEndSeq();
- void usePoolReader();
void useOpenBox();
void clearBuffers();
void getObTextStart();
@@ -735,9 +734,6 @@ public:
void useGun();
void autoAppear();
void newPlace();
- void useCardReader1();
- void useCardReader2();
- void useCardReader3();
void useHandle();
void showPuzText();
void incRyanPage();
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index fd734b20cc..e96fde30e2 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -405,6 +405,10 @@
void useElvDoor();
void useObject();
void useWinch();
+ void useCardReader1();
+ void useCardReader2();
+ void useCardReader3();
+ void usePoolReader();
bool defaultUseHandler(const char *id);
void openTVDoor();
void wearWatch();
diff --git a/engines/dreamweb/use.cpp b/engines/dreamweb/use.cpp
index 96dfc26344..34d1ed2c77 100644
--- a/engines/dreamweb/use.cpp
+++ b/engines/dreamweb/use.cpp
@@ -1012,6 +1012,112 @@ void DreamGenContext::grafittiDoor() {
putBackObStuff();
}
+void DreamGenContext::usePoolReader() {
+ char id[4] = { 'M', 'E', 'M', 'B' }; // TODO: convert to string with trailing zero
+ if (defaultUseHandler(id))
+ return;
+
+ if (data.byte(kTalkedtoattendant) != 1) {
+ // Can't open pool
+ showSecondUse();
+ putBackObStuff();
+ } else {
+ playChannel1(17);
+ showFirstUse();
+ data.byte(kCounttoopen) = 6;
+ data.byte(kGetback) = 1;
+ }
+}
+
+void DreamGenContext::useCardReader1() {
+ char id[4] = { 'C', 'S', 'H', 'R' }; // TODO: convert to string with trailing zero
+ if (defaultUseHandler(id))
+ return;
+
+ if (data.byte(kTalkedtosparky) == 0) {
+ // Not yet
+ showFirstUse();
+ putBackObStuff();
+ } else if (data.word(kCard1money) == 0) {
+ // No cash
+ cx = 300;
+ al = 17;
+ showPuzText();
+ putBackObStuff();
+ return;
+ } else {
+ // Get cash
+ playChannel1(16);
+ cx = 300;
+ al = 18;
+ showPuzText();
+ data.byte(kProgresspoints)++;
+ data.word(kCard1money) = 12432;
+ data.byte(kGetback) = 1;
+ }
+}
+
+void DreamGenContext::useCardReader2() {
+ char id[4] = { 'C', 'S', 'H', 'R' }; // TODO: convert to string with trailing zero
+ if (defaultUseHandler(id))
+ return;
+
+ if (data.byte(kTalkedtoboss) == 0) {
+ // Haven't talked to boss
+ showFirstUse();
+ putBackObStuff();
+ } else if (data.byte(kCard1money) == 0) {
+ // No cash
+ cx = 300;
+ al = 20;
+ showPuzText();
+ putBackObStuff();
+ } else if (data.byte(kGunpassflag) == 2) {
+ // Already got new
+ cx = 300;
+ al = 22;
+ showPuzText();
+ putBackObStuff();
+ } else {
+ playChannel1(18);
+ cx = 300;
+ al = 19;
+ showPuzText();
+ placeSetObject(94);
+ data.byte(kGunpassflag) = 1;
+ data.word(kCard1money) -= 2000;
+ data.byte(kProgresspoints)++;
+ data.byte(kGetback) = 1;
+ }
+}
+
+void DreamGenContext::useCardReader3() {
+ char id[4] = { 'C', 'S', 'H', 'R' }; // TODO: convert to string with trailing zero
+ if (defaultUseHandler(id))
+ return;
+
+ if (data.byte(kTalkedtorecep) == 0) {
+ // Haven't talked to receptionist
+ showFirstUse();
+ putBackObStuff();
+ } else if (data.byte(kCardpassflag) != 0) {
+ // Already used it
+ cx = 300;
+ al = 26;
+ showPuzText();
+ putBackObStuff();
+ } else {
+ playChannel1(16);
+ cx = 300;
+ al = 25;
+ showPuzText();
+ data.byte(kProgresspoints)++;
+ data.word(kCard1money) -= 8300;
+ data.byte(kCardpassflag) = 1;
+ data.byte(kGetback) = 1;
+ }
+}
+
void DreamGenContext::openTomb() {
data.byte(kProgresspoints)++;
showFirstUse();