diff options
author | Filippos Karapetis | 2011-12-09 01:23:38 +0200 |
---|---|---|
committer | Filippos Karapetis | 2011-12-09 01:24:25 +0200 |
commit | baf2cc8b8eaa6a4d56c0764eb7a1e1a6c8b9758e (patch) | |
tree | d3b1e25148fa81bdab9f8beecfc06cea1b53f50d | |
parent | a2da8e6b397a76e2efef41b4d07b1baef78a6abc (diff) | |
download | scummvm-rg350-baf2cc8b8eaa6a4d56c0764eb7a1e1a6c8b9758e.tar.gz scummvm-rg350-baf2cc8b8eaa6a4d56c0764eb7a1e1a6c8b9758e.tar.bz2 scummvm-rg350-baf2cc8b8eaa6a4d56c0764eb7a1e1a6c8b9758e.zip |
DREAMWEB: Port 'usediary' to C++ and remove diarylist from the blob
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 2 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 122 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 24 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 11 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/use.cpp | 44 |
6 files changed, 96 insertions, 108 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index d05c28dd1c..90bd9cae24 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -49,6 +49,7 @@ p = parser(skip_binary_data = [ # keypad.asm 'keypadlist', 'symbollist', + 'diarylist', # newplace.asm 'destlist', # object.asm @@ -700,6 +701,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'useclearbox', 'usecooker', 'usecoveredbox', + 'usediary', 'usedryer', 'useelevator1', 'useelevator2', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index a6841506e7..95dd6f4490 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -3380,14 +3380,14 @@ void DreamGenContext::getDestInfo() { push(ax); dx = data; es = dx; - si = 1497; + si = 1455; _add(si, ax); cl = es.byte(si); ax = pop(); push(cx); dx = data; es = dx; - si = 1513; + si = 1471; _add(si, ax); ax = pop(); } @@ -3439,7 +3439,7 @@ clearedlocations: bx = ax; dx = data; es = dx; - _add(bx, 1497); + _add(bx, 1455); es.byte(bx) = 0; } @@ -3475,7 +3475,7 @@ void DreamGenContext::execCommand() { es = cs; bx = offset_comlist; ds = cs; - si = 1531; + si = 1489; al = ds.byte(si); _cmp(al, 0); if (!flags.z()) @@ -3670,7 +3670,7 @@ notyetassigned: push(bx); _add(bx, 2); ds = cs; - si = 1531; + si = 1489; checkpass: _lodsw(); ah = es.byte(bx); @@ -3998,7 +3998,7 @@ void DreamGenContext::parser() { al = '='; _stosb(); ds = cs; - si = 1531; + si = 1489; notspace1: _lodsw(); _cmp(al, 32); @@ -5569,48 +5569,6 @@ notwrapbackb: data.byte(kSymbolbotdir) = 0; } -void DreamGenContext::useDiary() { - STACK_CHECK; - getRidOfReels(); - dx = 1003; - loadIntoTemp(); - dx = 1016; - loadTempText(); - dx = 977; - loadTempCharset(); - createPanel(); - showIcon(); - showDiary(); - underTextLine(); - showDiaryPage(); - readMouse(); - showPointer(); - workToScreen(); - delPointer(); - data.byte(kGetback) = 0; -diaryloop: - delPointer(); - readMouse(); - showDiaryKeys(); - showPointer(); - vSync(); - dumpPointer(); - dumpDiaryKeys(); - dumpTextLine(); - bx = offset_diarylist; - checkCoords(); - _cmp(data.byte(kGetback), 0); - if (flags.z()) - goto diaryloop; - getRidOfTemp(); - getRidOfTempText(); - getRidOfTempCharset(); - restoreReels(); - data.byte(kManisoffscreen) = 0; - redrawMainScrn(); - workToScreenM(); -} - void DreamGenContext::showDiaryKeys() { STACK_CHECK; _cmp(data.byte(kPresscount), 0); @@ -5874,7 +5832,7 @@ void DreamGenContext::getNamePos() { _mul(cx); dx = data; es = dx; - bx = 1665; + bx = 1623; _add(bx, ax); al = data.byte(kCursorpos); ah = 0; @@ -5970,7 +5928,7 @@ void DreamGenContext::showNames() { STACK_CHECK; dx = data; es = dx; - si = 1665+1; + si = 1623+1; di = (60)+21; bx = (52)+10; cl = 0; @@ -6346,7 +6304,7 @@ void DreamGenContext::clearChanges() { di = 0; _stosw(cx, true); es = cs; - di = 1497; + di = 1455; al = 1; _stosb(2); al = 0; @@ -6705,31 +6663,31 @@ void DreamGenContext::__start() { //0x0510: ."R OOT . 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x30, 0x30, //0x0520: " .00 - 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0xba, 0x00, 0xca, 0x00, 0x9d, 0x00, 0xad, 0x00, 0x1c, 0xc8, - //0x0530: 00.0 0... .... .... - 0xf3, 0x00, 0x03, 0x01, 0x83, 0x00, 0x93, 0x00, 0x18, 0xc8, 0x0c, 0x01, 0x1c, 0x01, 0xa8, 0x00, - //0x0540: .... .... .... .... - 0xb8, 0x00, 0x50, 0xc7, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xc8, 0x00, 0xa0, 0xca, 0xff, 0xff, - //0x0550: ..P. ..@. .... .... - 0x0d, 0x0a, 0x0d, 0x0a, 0x24, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x52, 0x32, 0x34, 0x43, 0x30, - //0x0560: .... $SPE ECHR 24C0 - 0x30, 0x30, 0x35, 0x2e, 0x52, 0x41, 0x57, 0x00, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x20, 0x4e, - //0x0570: 005. RAW. OBJE CT N - 0x41, 0x4d, 0x45, 0x20, 0x4f, 0x4e, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - //0x0580: AME ONE + 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x0d, 0x0a, 0x0d, 0x0a, 0x24, 0x53, 0x50, 0x45, 0x45, 0x43, + //0x0530: 00.0 0... ..$S PEEC + 0x48, 0x52, 0x32, 0x34, 0x43, 0x30, 0x30, 0x30, 0x35, 0x2e, 0x52, 0x41, 0x57, 0x00, 0x4f, 0x42, + //0x0540: HR24 C000 5.RA W.OB + 0x4a, 0x45, 0x43, 0x54, 0x20, 0x4e, 0x41, 0x4d, 0x45, 0x20, 0x4f, 0x4e, 0x45, 0x20, 0x20, 0x20, + //0x0550: JECT NAM E ON E 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - //0x0590: - 0x00, 0x10, 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + //0x0560: + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x10, 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, + //0x0570: .. .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x44, + //0x0580: .... .... .... ...D + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + //0x0590: :... .... .... .... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, //0x05a0: .... .... .... .... - 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x44, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x05b0: .... .... .D:. .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + //0x05b0: .... .... .... .... + 0x00, 0x03, 0x02, 0x04, 0x01, 0x0a, 0x09, 0x08, 0x06, 0x0b, 0x04, 0x07, 0x07, 0x00, 0x00, 0x00, //0x05c0: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x05d0: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x02, 0x04, 0x01, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x05e0: .... .... .... .... - 0x09, 0x08, 0x06, 0x0b, 0x04, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x05f0: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0600: .... .... .... .... @@ -6741,27 +6699,23 @@ void DreamGenContext::__start() { //0x0630: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0640: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x0650: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x0660: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, //0x0670: .... .... .... .... - 0xff, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, //0x0680: .... .... .... .... - 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, //0x0690: .... .... .... .... - 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, //0x06a0: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, //0x06b0: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, //0x06c0: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x06d0: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x06e0: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, }; + 0x00, }; ds.assign(src, src + sizeof(src)); dreamweb(); } diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index b0620648cf..ebc1aec764 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -33,12 +33,11 @@ namespace DreamGen { static const uint16 offset_money1poke = 0x052e; -static const uint16 offset_commandline = 0x0578; +static const uint16 offset_speechfile = 0x0541; static const uint16 offset_openchangesize = 0x0446; static const uint16 offset_operand1 = 0x0504; static const uint16 offset_comlist = 0x045e; -static const uint16 offset_diarylist = 0x0536; -static const uint16 offset_speechfile = 0x056b; +static const uint16 offset_commandline = 0x054e; static const uint16 offset_rootdir = 0x0512; static const uint16 offset_money2poke = 0x0533; static const uint16 offset_keys = 0x049a; @@ -424,15 +423,15 @@ static const uint16 kGungraphic = 1055; static const uint16 kMonkface = 1068; static const uint16 kTitle7graphics = 1081; static const uint16 kCurrentfile = 1312; -static const uint16 kRoomscango = 1497; -static const uint16 kRoompics = 1513; -static const uint16 kOplist = 1528; -static const uint16 kInputline = 1531; -static const uint16 kPresslist = 1659; -static const uint16 kSavenames = 1665; -static const uint16 kQuitrequested = 1784; -static const uint16 kSubtitles = 1785; -static const uint16 kForeignrelease = 1786; +static const uint16 kRoomscango = 1455; +static const uint16 kRoompics = 1471; +static const uint16 kOplist = 1486; +static const uint16 kInputline = 1489; +static const uint16 kPresslist = 1617; +static const uint16 kSavenames = 1623; +static const uint16 kQuitrequested = 1742; +static const uint16 kSubtitles = 1743; +static const uint16 kForeignrelease = 1744; static const uint16 kBlocktextdat = (0); static const uint16 kPersonframes = (0); static const uint16 kDebuglevel1 = (0); @@ -659,7 +658,6 @@ public: void selectOpenOb(); void useGun(); void autoAppear(); - void useDiary(); void newPlace(); void useHandle(); void showPuzText(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index f0c49f4803..0e6767799e 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -1685,17 +1685,6 @@ void DreamGenContext::checkCoords() { checkCoords(quitList); break; } - case offset_diarylist: { - RectWithCallback diaryList[] = { - { kDiaryx+94,kDiaryx+110,kDiaryy+97,kDiaryy+113,&DreamGenContext::diaryKeyN }, - { kDiaryx+151,kDiaryx+167,kDiaryy+71,kDiaryy+87,&DreamGenContext::diaryKeyP }, - { kDiaryx+176,kDiaryx+192,kDiaryy+108,kDiaryy+124,&DreamGenContext::quitKey }, - { 0,320,0,200,&DreamGenContext::blank }, - { 0xFFFF,0,0,0,0 } - }; - checkCoords(diaryList); - break; - } default: ::error("Unimplemented checkcoords() call"); } diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 422038e920..68f3d6fb74 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -558,5 +558,6 @@ void talk(); void discOps(); void doSaveLoad(); + void useDiary(); #endif diff --git a/engines/dreamweb/use.cpp b/engines/dreamweb/use.cpp index f06a30d81e..be4906c8b2 100644 --- a/engines/dreamweb/use.cpp +++ b/engines/dreamweb/use.cpp @@ -1158,5 +1158,49 @@ void DreamBase::removeFreeObject(uint8 index) { getFreeAd(index)->mapad[0] = 0xFF; } +void DreamGenContext::useDiary() { + getRidOfReels(); + loadIntoTemp((const char *)data.ptr(kDiarygraphic, 0)); + loadTempText((const char *)data.ptr(kDiarytext, 0)); + loadTempCharset((const char *)data.ptr(kCharacterset3, 0)); + createPanel(); + showIcon(); + showDiary(); + underTextLine(); + showDiaryPage(); + readMouse(); + showPointer(); + workToScreen(); + delPointer(); + data.byte(kGetback) = 0; + + RectWithCallback diaryList[] = { + { kDiaryx+94,kDiaryx+110,kDiaryy+97,kDiaryy+113,&DreamGenContext::diaryKeyN }, + { kDiaryx+151,kDiaryx+167,kDiaryy+71,kDiaryy+87,&DreamGenContext::diaryKeyP }, + { kDiaryx+176,kDiaryx+192,kDiaryy+108,kDiaryy+124,&DreamGenContext::quitKey }, + { 0,320,0,200,&DreamGenContext::blank }, + { 0xFFFF,0,0,0,0 } + }; + + do { + delPointer(); + readMouse(); + showDiaryKeys(); + showPointer(); + vSync(); + dumpPointer(); + dumpDiaryKeys(); + dumpTextLine(); + checkCoords(diaryList); + } while (!data.byte(kGetback)); + + getRidOfTemp(); + getRidOfTempText(); + getRidOfTempCharset(); + restoreReels(); + data.byte(kManisoffscreen) = 0; + redrawMainScrn(); + workToScreenM(); +} } // End of namespace DreamGen |