diff options
author | Filippos Karapetis | 2011-12-17 00:01:45 +0200 |
---|---|---|
committer | Filippos Karapetis | 2011-12-17 00:01:45 +0200 |
commit | 654a60a90cfec631893598325dbfc5ab8adbfa35 (patch) | |
tree | d7fd9dc41603a4b92308545a3c4ddff7ad6f627f | |
parent | 2887686d56544e6edfaf401c0aab5203be3c1ccc (diff) | |
download | scummvm-rg350-654a60a90cfec631893598325dbfc5ab8adbfa35.tar.gz scummvm-rg350-654a60a90cfec631893598325dbfc5ab8adbfa35.tar.bz2 scummvm-rg350-654a60a90cfec631893598325dbfc5ab8adbfa35.zip |
DREAMWEB: Rewrote useCashCard() in C++ and got rid of moneyPoke() and its associated offsets in the data blob
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 4 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 134 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 22 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/use.cpp | 29 |
5 files changed, 59 insertions, 131 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 8b61fc5017..94a74e5b2a 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -108,6 +108,8 @@ p = parser(skip_binary_data = [ 'title6graphics', # use.asm 'uselist', + 'money1poke', + 'money2poke', # vars.asm 'currentset', 'icons1', @@ -566,6 +568,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'middlepanel', 'mode640x480', 'modifychar', + 'moneypoke', 'monitorlogo', 'monkandryan', 'monks2text', @@ -828,6 +831,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'usecardreader2', 'usecardreader3', 'usecart', + 'usecashcard', 'usecharset1', 'usechurchgate', 'usechurchhole', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index b756c39bbf..47b01d3785 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -2170,14 +2170,14 @@ void DreamGenContext::getDestInfo() { push(ax); dx = data; es = dx; - si = 1131; + si = 1123; _add(si, ax); cl = es.byte(si); ax = pop(); push(cx); dx = data; es = dx; - si = 1147; + si = 1139; _add(si, ax); ax = pop(); } @@ -2229,7 +2229,7 @@ clearedlocations: bx = ax; dx = data; es = dx; - _add(bx, 1131); + _add(bx, 1123); es.byte(bx) = 0; } @@ -2370,7 +2370,7 @@ notyetassigned: push(bx); _add(bx, 2); ds = cs; - si = 1165; + si = 1157; checkpass: _lodsw(); ah = es.byte(bx); @@ -2698,7 +2698,7 @@ void DreamGenContext::parser() { al = '='; _stosb(); ds = cs; - si = 1165; + si = 1157; notspace1: _lodsw(); _cmp(al, 32); @@ -2736,106 +2736,6 @@ lookcolon: goto lookcolon; } -void DreamGenContext::useCashCard() { - STACK_CHECK; - getRidOfReels(); - loadKeypad(); - createPanel(); - showPanel(); - showExit(); - showMan(); - di = 114; - bx = 120; - _cmp(data.byte(kForeignrelease), 0); - if (flags.z()) - goto _tmp1; - bx = 120-3; -_tmp1: - ds = data.word(kTempgraphics); - al = 39; - ah = 0; - showFrame(); - ax = data.word(kCard1money); - moneyPoke(); - getObTextStart(); - nextColon(); - nextColon(); - di = 36; - bx = 98; - dl = 241; - al = 0; - ah = 0; - printDirect(); - di = 160; - bx = 155; - es = cs; - si = offset_money1poke; - data.word(kCharshift) = 91*2+75; - al = 0; - ah = 0; - dl = 240; - printDirect(); - di = 187; - bx = 155; - es = cs; - si = offset_money2poke; - data.word(kCharshift) = 91*2+85; - al = 0; - ah = 0; - dl = 240; - printDirect(); - data.word(kCharshift) = 0; - workToScreenM(); - cx = 400; - hangOnP(); - getRidOfTemp(); - restoreReels(); - putBackObStuff(); -} - -void DreamGenContext::moneyPoke() { - STACK_CHECK; - bx = offset_money1poke; - cl = 48-1; -numberpoke0: - _inc(cl); - _sub(ax, 10000); - if (!flags.c()) - goto numberpoke0; - _add(ax, 10000); - cs.byte(bx) = cl; - _inc(bx); - cl = 48-1; -numberpoke1: - _inc(cl); - _sub(ax, 1000); - if (!flags.c()) - goto numberpoke1; - _add(ax, 1000); - cs.byte(bx) = cl; - _inc(bx); - cl = 48-1; -numberpoke2: - _inc(cl); - _sub(ax, 100); - if (!flags.c()) - goto numberpoke2; - _add(ax, 100); - cs.byte(bx) = cl; - _inc(bx); - cl = 48-1; -numberpoke3: - _inc(cl); - _sub(ax, 10); - if (!flags.c()) - goto numberpoke3; - _add(ax, 10); - cs.byte(bx) = cl; - bx = offset_money2poke; - _add(al, 48); - cs.byte(bx) = al; -} - void DreamGenContext::useStereo() { STACK_CHECK; _cmp(data.byte(kLocation), 0); @@ -3059,7 +2959,7 @@ void DreamGenContext::clearChanges() { di = 0; _stosw(cx, true); es = cs; - di = 1131; + di = 1123; al = 1; _stosb(2); al = 0; @@ -3292,19 +3192,19 @@ void DreamGenContext::__start() { //0x0400: ."R OOT 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, //0x0410: . " - 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x30, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x0d, 0x0a, - //0x0420: .00 00.0 0... - 0x0d, 0x0a, 0x24, 0x10, 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x0430: ..$. .... .... .... - 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x44, 0x3a, 0x00, 0x00, 0x00, - //0x0440: .... .... ...D :... + 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x0d, 0x0a, 0x0d, 0x0a, 0x24, 0x10, 0x12, 0x12, 0x11, 0x10, + //0x0420: ... ..$. .... + 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, + //0x0430: .... .... .... .... + 0x02, 0x02, 0x02, 0x44, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + //0x0440: ...D :... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0450: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0460: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x02, 0x04, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x02, 0x04, 0x01, 0x0a, 0x09, 0x08, 0x06, 0x0b, 0x04, 0x07, //0x0470: .... .... .... .... - 0x01, 0x0a, 0x09, 0x08, 0x06, 0x0b, 0x04, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0480: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0490: .... .... .... .... @@ -3320,9 +3220,7 @@ void DreamGenContext::__start() { //0x04e0: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x04f0: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, - //0x0500: .... .... .... .... - 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, }; + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, }; ds.assign(src, src + sizeof(src)); dreamweb(); } diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 05e7c856df..94826e8433 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -32,11 +32,9 @@ namespace DreamGen { -static const uint16 offset_money1poke = 0x0426; static const uint16 offset_operand1 = 0x03fc; -static const uint16 offset_rootdir = 0x040a; static const uint16 offset_keys = 0x0392; -static const uint16 offset_money2poke = 0x042b; +static const uint16 offset_rootdir = 0x040a; static const uint16 kStartvars = 0; static const uint16 kProgresspoints = 1; static const uint16 kWatchon = 2; @@ -365,14 +363,14 @@ static const uint16 kRoomssample = 443; static const uint16 kReelroutines = 444; static const uint16 kBasicsample = 901; static const uint16 kCurrentfile = 1048; -static const uint16 kRoomscango = 1131; -static const uint16 kRoompics = 1147; -static const uint16 kOplist = 1162; -static const uint16 kInputline = 1165; -static const uint16 kPresslist = 1293; -static const uint16 kQuitrequested = 1299; -static const uint16 kSubtitles = 1300; -static const uint16 kForeignrelease = 1301; +static const uint16 kRoomscango = 1123; +static const uint16 kRoompics = 1139; +static const uint16 kOplist = 1154; +static const uint16 kInputline = 1157; +static const uint16 kPresslist = 1285; +static const uint16 kQuitrequested = 1291; +static const uint16 kSubtitles = 1292; +static const uint16 kForeignrelease = 1293; static const uint16 kBlocktextdat = (0); static const uint16 kPersonframes = (0); static const uint16 kDebuglevel1 = (0); @@ -480,8 +478,6 @@ public: void getObTextStart(); void checkObjectSize(); void fillOpen(); - void useCashCard(); - void moneyPoke(); void doSomeTalk(); void resetLocation(); void adjustUp(); diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 741abd807f..ab09fd3ace 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -394,5 +394,6 @@ void useGun(); void identifyOb(); void showSlots(); + void useCashCard(); #endif diff --git a/engines/dreamweb/use.cpp b/engines/dreamweb/use.cpp index 385bfbb101..6b59faf401 100644 --- a/engines/dreamweb/use.cpp +++ b/engines/dreamweb/use.cpp @@ -1613,4 +1613,33 @@ void DreamGenContext::notHeldError() { putBackObStuff(); } +void DreamGenContext::useCashCard() { + getRidOfReels(); + loadKeypad(); + createPanel(); + showPanel(); + showExit(); + showMan(); + uint16 y = (!data.byte(kForeignrelease)) ? 120 : 120 - 3; + showFrame(tempGraphics(), 114, y, 39, 0); + const uint8 *obText = getObTextStartCPP(); + findNextColon(&obText); + findNextColon(&obText); + y = 98; + printDirect(&obText, 36, &y, 36, 36 & 1); + char amountStr[10]; + sprintf(amountStr, "%04d", data.word(kCard1money) / 10); + data.word(kCharshift) = 91 * 2 + 75; + printDirect((const uint8 *)amountStr, 160, 155, 240, 240 & 1); + sprintf(amountStr, "%02d", (data.word(kCard1money) % 10) * 10); + data.word(kCharshift) = 91 * 2 + 85; + printDirect((const uint8 *)amountStr, 187, 155, 240, 240 & 1); + data.word(kCharshift) = 0; + workToScreenM(); + hangOnP(400); + getRidOfTemp(); + restoreReels(); + putBackObStuff(); +} + } // End of namespace DreamGen |