diff options
author | Filippos Karapetis | 2011-12-06 23:01:59 +0200 |
---|---|---|
committer | Filippos Karapetis | 2011-12-06 23:02:31 +0200 |
commit | 7445c62a713de489b3515711de579696c64239fe (patch) | |
tree | 3230e4e14c1e36f1802836665b28189ae0e75241 | |
parent | 9a7b8340c5c77b04b4eaf934b6c9093cf66c2e43 (diff) | |
download | scummvm-rg350-7445c62a713de489b3515711de579696c64239fe.tar.gz scummvm-rg350-7445c62a713de489b3515711de579696c64239fe.tar.bz2 scummvm-rg350-7445c62a713de489b3515711de579696c64239fe.zip |
DREAMWEB: 'usecardreader1', 'usecardreader2', 'usecardreader3', 'usepoolreader' ported to C++
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 4 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 197 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 4 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 4 | ||||
-rw-r--r-- | engines/dreamweb/use.cpp | 106 |
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(); |