diff options
author | Filippos Karapetis | 2011-12-09 00:09:38 +0200 |
---|---|---|
committer | Filippos Karapetis | 2011-12-09 00:11:24 +0200 |
commit | 4fdaba7e5ece3ac9d1ac2c7848072c70c1c5c746 (patch) | |
tree | 33eb4d6f97bb8b94f6d0aa2c44dba8a8137590a8 | |
parent | 0db0bf45046205f5a55d88896c215dbaa8a9397a (diff) | |
download | scummvm-rg350-4fdaba7e5ece3ac9d1ac2c7848072c70c1c5c746.tar.gz scummvm-rg350-4fdaba7e5ece3ac9d1ac2c7848072c70c1c5c746.tar.bz2 scummvm-rg350-4fdaba7e5ece3ac9d1ac2c7848072c70c1c5c746.zip |
DREAMWEB: Port 'talk' to C++. Remove decidelist and talklist offsets
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 9 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 198 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 46 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 62 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 |
5 files changed, 149 insertions, 167 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 0c014621f0..f0c3c609f4 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -52,7 +52,8 @@ p = parser(skip_binary_data = [ # newplace.asm 'destlist', # object.asm - 'invlist1', 'invlist1continued', + 'invlist1', + 'invlist1continued', 'examlist', 'withlist1', # saveload.asm @@ -71,6 +72,7 @@ p = parser(skip_binary_data = [ 'gameinfo', 'endgametext1', 'savefiles', + 'decidelist', # sblaster.asm 'dmaaddresses', # sprite.asm @@ -81,6 +83,8 @@ p = parser(skip_binary_data = [ 'r0','r1','r2','r6','r8','r9','r10','r11','r12','r13','r14', 'r20','r22','r23','r25','r26','r27','r28','r29', 'r45','r46','r47','r52','r53','r55', + #talk.asm + 'talklist', # titles.asm 'introtextname', 'title0graphics', @@ -301,12 +305,12 @@ generator = cpp(context, "DreamGen", blacklist = [ 'facerightway', 'fadecalculation', 'fadedos', + 'fadefromwhite', 'fadescreenup', 'fadescreenups', 'fadescreenuphalf', 'fadescreendown', 'fadescreendowns', - 'fadefromwhite', 'fadetowhite', 'fadeupmonfirst', 'fadeupyellows', @@ -663,6 +667,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'storeit', 'switchryanoff', 'switchryanon', + 'talk', 'tattooman', 'textforend', 'textformonk', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 663606e81b..5331d78fdf 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -2967,60 +2967,6 @@ dogetback: data.byte(kPickup) = 0; } -void DreamGenContext::talk() { - STACK_CHECK; - data.byte(kTalkpos) = 0; - data.byte(kInmaparea) = 0; - al = data.byte(kCommand); - data.byte(kCharacter) = al; - createPanel(); - showPanel(); - showMan(); - showExit(); - underTextLine(); - convIcons(); - startTalk(); - data.byte(kCommandtype) = 255; - readMouse(); - showPointer(); - workToScreen(); -waittalk: - delPointer(); - readMouse(); - animPointer(); - showPointer(); - vSync(); - dumpPointer(); - dumpTextLine(); - data.byte(kGetback) = 0; - bx = offset_talklist; - checkCoords(); - _cmp(data.byte(kQuitrequested), 0); - if (!flags.z()) - goto finishtalk; - _cmp(data.byte(kGetback), 0); - if (flags.z()) - goto waittalk; -finishtalk: - bx = data.word(kPersondata); - es = cs; - _cmp(data.byte(kTalkpos), 4); - if (flags.c()) - goto notnexttalk; - al = es.byte(bx+7); - _or(al, 128); - es.byte(bx+7) = al; -notnexttalk: - redrawMainScrn(); - workToScreenM(); - _cmp(data.byte(kSpeechloaded), 1); - if (!flags.z()) - return /* (nospeech) */; - cancelCh1(); - data.byte(kVolumedirection) = -1; - data.byte(kVolumeto) = 0; -} - void DreamGenContext::startTalk() { STACK_CHECK; data.byte(kTalkmode) = 0; @@ -3434,14 +3380,14 @@ void DreamGenContext::getDestInfo() { push(ax); dx = data; es = dx; - si = 1655; + si = 1581; _add(si, ax); cl = es.byte(si); ax = pop(); push(cx); dx = data; es = dx; - si = 1671; + si = 1597; _add(si, ax); ax = pop(); } @@ -3493,7 +3439,7 @@ clearedlocations: bx = ax; dx = data; es = dx; - _add(bx, 1655); + _add(bx, 1581); es.byte(bx) = 0; } @@ -3529,7 +3475,7 @@ void DreamGenContext::execCommand() { es = cs; bx = offset_comlist; ds = cs; - si = 1689; + si = 1615; al = ds.byte(si); _cmp(al, 0); if (!flags.z()) @@ -3622,7 +3568,7 @@ dirroot: si = offset_rootdir; _inc(si); es = cs; - di = 1344; + di = 1312; _inc(di); cx = 12; _movsb(cx, true); @@ -3724,7 +3670,7 @@ notyetassigned: push(bx); _add(bx, 2); ds = cs; - si = 1689; + si = 1615; checkpass: _lodsw(); ah = es.byte(bx); @@ -3795,7 +3741,7 @@ void DreamGenContext::read() { return; okcom: es = cs; - di = 1344; + di = 1312; ax = data.word(kTextfile1); data.word(kMonsource) = ax; ds = ax; @@ -3925,7 +3871,7 @@ keyok2: ds = cs; si = offset_operand1+1; es = cs; - di = 1344+1; + di = 1312+1; cx = 12; _movsb(cx, true); monitorLogo(); @@ -4052,7 +3998,7 @@ void DreamGenContext::parser() { al = '='; _stosb(); ds = cs; - si = 1689; + si = 1615; notspace1: _lodsw(); _cmp(al, 32); @@ -6025,7 +5971,7 @@ void DreamGenContext::getNamePos() { _mul(cx); dx = data; es = dx; - bx = 1823; + bx = 1749; _add(bx, ax); al = data.byte(kCursorpos); ah = 0; @@ -6121,7 +6067,7 @@ void DreamGenContext::showNames() { STACK_CHECK; dx = data; es = dx; - si = 1823+1; + si = 1749+1; di = (60)+21; bx = (52)+10; cl = 0; @@ -6497,7 +6443,7 @@ void DreamGenContext::clearChanges() { di = 0; _stosw(cx, true); es = cs; - di = 1655; + di = 1581; al = 1; _stosb(2); al = 0; @@ -6828,111 +6774,101 @@ void DreamGenContext::__start() { //0x0430: MWEB .G15 .DRE AMWE 0x42, 0x2e, 0x49, 0x30, 0x37, 0x00, 0x00, 0x01, 0x11, 0x01, 0x40, 0x01, 0x9d, 0x00, 0xc6, 0x00, //0x0440: B.I0 7... ..@. .... - 0x7c, 0xc4, 0xf0, 0x00, 0x22, 0x01, 0x02, 0x00, 0x2c, 0x00, 0x94, 0xc4, 0x00, 0x00, 0x40, 0x01, - //0x0450: |... "... ,... ..@. - 0x00, 0x00, 0xc8, 0x00, 0xa0, 0xca, 0xff, 0xff, 0x11, 0x01, 0x40, 0x01, 0x9d, 0x00, 0xc6, 0x00, - //0x0460: .... .... ..@. .... 0x7c, 0xc4, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xc8, 0x00, 0xa0, 0xca, 0xff, 0xff, 0x45, 0x58, - //0x0470: |... @... .... ..EX + //0x0450: |... @... .... ..EX 0x49, 0x54, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x45, 0x4c, 0x50, 0x20, 0x20, 0x20, 0x20, - //0x0480: IT HELP + //0x0460: IT HELP 0x20, 0x20, 0x4c, 0x49, 0x53, 0x54, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x45, 0x41, 0x44, - //0x0490: LI ST READ + //0x0470: LI ST READ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x4f, 0x47, 0x4f, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, - //0x04a0: LO GON + //0x0480: LO GON 0x4b, 0x45, 0x59, 0x53, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0x00, 0x50, 0x55, 0x42, 0x4c, - //0x04b0: KEYS .. PUBL + //0x0490: KEYS .. PUBL 0x49, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x20, - //0x04c0: IC PUBL IC + //0x04a0: IC PUBL IC 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x47, 0x4f, - //0x04d0: . ..BL ACKD RAGO + //0x04b0: . ..BL ACKD RAGO 0x4e, 0x20, 0x52, 0x59, 0x41, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, - //0x04e0: N RY AN ... + //0x04c0: N RY AN ... 0x48, 0x45, 0x4e, 0x44, 0x52, 0x49, 0x58, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x4f, 0x55, 0x49, - //0x04f0: HEND RIX LOUI + //0x04d0: HEND RIX LOUI 0x53, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x53, 0x45, 0x50, 0x54, 0x49, 0x4d, - //0x0500: S . ..SE PTIM + //0x04e0: S . ..SE PTIM 0x55, 0x53, 0x20, 0x20, 0x20, 0x20, 0x42, 0x45, 0x43, 0x4b, 0x45, 0x54, 0x54, 0x20, 0x20, 0x20, - //0x0510: US BE CKET T + //0x04f0: US BE CKET T 0x20, 0x00, 0xff, 0xff, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - //0x0520: ... + //0x0500: ... 0x20, 0x00, 0x22, 0x52, 0x4f, 0x4f, 0x54, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, - //0x0530: ."R OOT . + //0x0510: ."R OOT . 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x30, 0x30, - //0x0540: " .00 + //0x0520: " .00 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0xba, 0x00, 0xca, 0x00, 0x9d, 0x00, 0xad, 0x00, 0x1c, 0xc8, - //0x0550: 00.0 0... .... .... + //0x0530: 00.0 0... .... .... 0xf3, 0x00, 0x03, 0x01, 0x83, 0x00, 0x93, 0x00, 0x18, 0xc8, 0x0c, 0x01, 0x1c, 0x01, 0xa8, 0x00, - //0x0560: .... .... .... .... + //0x0540: .... .... .... .... 0xb8, 0x00, 0x50, 0xc7, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xc8, 0x00, 0xa0, 0xca, 0xff, 0xff, - //0x0570: ..P. ..@. .... .... + //0x0550: ..P. ..@. .... .... 0x77, 0x00, 0xae, 0x00, 0x52, 0x00, 0x80, 0x00, 0x34, 0xc8, 0x46, 0x00, 0x89, 0x00, 0x3e, 0x00, - //0x0580: w... R... 4.F. ..>. + //0x0560: w... R... 4.F. ..>. 0x6f, 0x00, 0x80, 0xc8, 0xbc, 0x00, 0xfa, 0x00, 0x44, 0x00, 0x98, 0x00, 0x4c, 0xc8, 0x00, 0x00, - //0x0590: o... .... D... L... + //0x0570: o... .... D... L... 0x40, 0x01, 0x00, 0x00, 0xc8, 0x00, 0xa0, 0xca, 0xff, 0xff, 0x77, 0x00, 0xae, 0x00, 0x52, 0x00, - //0x05a0: @... .... ..w. ..R. + //0x0580: @... .... ..w. ..R. 0x80, 0x00, 0x44, 0xc8, 0x46, 0x00, 0x8b, 0x00, 0x3e, 0x00, 0x6f, 0x00, 0x50, 0xc8, 0xec, 0x00, - //0x05b0: ..D. F... >.o. P... + //0x0590: ..D. F... >.o. P... 0xfc, 0x00, 0x70, 0x00, 0x80, 0x00, 0x48, 0xc8, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xc8, 0x00, - //0x05c0: ..p. ..H. ..@. .... - 0xa0, 0xca, 0xff, 0xff, 0x0d, 0x0a, 0x0d, 0x0a, 0x24, 0x81, 0x00, 0xb8, 0x00, 0x52, 0x00, 0x80, - //0x05d0: .... .... $... .R.. - 0x00, 0xc0, 0xc8, 0x50, 0x00, 0x93, 0x00, 0x3e, 0x00, 0x6f, 0x00, 0x80, 0xc8, 0xb7, 0x00, 0xfa, - //0x05e0: ...P ...> .o.. .... - 0x00, 0x3e, 0x00, 0x6f, 0x00, 0xc4, 0xc8, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xc8, 0x00, 0xa0, - //0x05f0: .>.o .... .@.. .... - 0xca, 0xff, 0xff, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x52, 0x32, 0x34, 0x43, 0x30, 0x30, 0x30, - //0x0600: ...S PEEC HR24 C000 - 0x35, 0x2e, 0x52, 0x41, 0x57, 0x00, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x20, 0x4e, 0x41, 0x4d, - //0x0610: 5.RA W.OB JECT NAM - 0x45, 0x20, 0x4f, 0x4e, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - //0x0620: E ON E - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x10, - //0x0630: .. - 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, + //0x05a0: ..p. ..H. ..@. .... + 0xa0, 0xca, 0xff, 0xff, 0x0d, 0x0a, 0x0d, 0x0a, 0x24, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x52, + //0x05b0: .... .... $SPE ECHR + 0x32, 0x34, 0x43, 0x30, 0x30, 0x30, 0x35, 0x2e, 0x52, 0x41, 0x57, 0x00, 0x4f, 0x42, 0x4a, 0x45, + //0x05c0: 24C0 005. RAW. OBJE + 0x43, 0x54, 0x20, 0x4e, 0x41, 0x4d, 0x45, 0x20, 0x4f, 0x4e, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, + //0x05d0: CT N AME ONE + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + //0x05e0: + 0x20, 0x20, 0x20, 0x20, 0x00, 0x10, 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, + //0x05f0: .... .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x44, 0x3a, 0x00, + //0x0600: .... .... .... .D:. + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + //0x0610: .... .... .... .... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + //0x0620: .... .... .... .... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, + //0x0630: .... .... .... .... + 0x02, 0x04, 0x01, 0x0a, 0x09, 0x08, 0x06, 0x0b, 0x04, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0640: .... .... .... .... - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x44, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x0650: .... ...D :... .... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + //0x0650: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0660: .... .... .... .... - 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, 0x00, 0x00, //0x0670: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x02, 0x04, 0x01, 0x0a, 0x09, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0680: .... .... .... .... - 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, 0x00, 0x00, //0x0690: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x06a0: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x06b0: .... .... .... .... - 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, //0x06c0: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x06d0: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x06e0: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x06f0: .... .... .... .... - 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, //0x0700: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, //0x0710: .... .... .... .... - 0x00, 0x01, 0x01, 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, //0x0720: .... .... .... .... - 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, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, //0x0730: .... .... .... .... - 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x0740: .... .... .... .... - 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x0750: .... .... .... .... - 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x0760: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x0770: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x0780: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, }; + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, }; ds.assign(src, src + sizeof(src)); dreamweb(); } diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index f0e4208890..f35c87d536 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -32,20 +32,19 @@ namespace DreamGen { -static const uint16 offset_money1poke = 0x054e; -static const uint16 offset_talklist = 0x0448; -static const uint16 offset_discopslist = 0x05aa; +static const uint16 offset_opslist = 0x0560; +static const uint16 offset_operand1 = 0x0504; +static const uint16 offset_money1poke = 0x052e; static const uint16 offset_openchangesize = 0x0446; -static const uint16 offset_operand1 = 0x0524; -static const uint16 offset_speechfile = 0x0609; -static const uint16 offset_comlist = 0x047e; -static const uint16 offset_opslist = 0x0580; -static const uint16 offset_diarylist = 0x0556; -static const uint16 offset_rootdir = 0x0532; -static const uint16 offset_money2poke = 0x0553; -static const uint16 offset_commandline = 0x0616; -static const uint16 offset_keys = 0x04ba; -static const uint16 offset_quitlist = 0x0468; +static const uint16 offset_discopslist = 0x058a; +static const uint16 offset_commandline = 0x05cc; +static const uint16 offset_comlist = 0x045e; +static const uint16 offset_speechfile = 0x05bf; +static const uint16 offset_diarylist = 0x0536; +static const uint16 offset_rootdir = 0x0512; +static const uint16 offset_money2poke = 0x0533; +static const uint16 offset_keys = 0x049a; +static const uint16 offset_quitlist = 0x0448; static const uint16 kStartvars = 0; static const uint16 kProgresspoints = 1; static const uint16 kWatchon = 2; @@ -426,16 +425,16 @@ static const uint16 kVolumetabname = 1042; static const uint16 kGungraphic = 1055; static const uint16 kMonkface = 1068; static const uint16 kTitle7graphics = 1081; -static const uint16 kCurrentfile = 1344; -static const uint16 kRoomscango = 1655; -static const uint16 kRoompics = 1671; -static const uint16 kOplist = 1686; -static const uint16 kInputline = 1689; -static const uint16 kPresslist = 1817; -static const uint16 kSavenames = 1823; -static const uint16 kQuitrequested = 1942; -static const uint16 kSubtitles = 1943; -static const uint16 kForeignrelease = 1944; +static const uint16 kCurrentfile = 1312; +static const uint16 kRoomscango = 1581; +static const uint16 kRoompics = 1597; +static const uint16 kOplist = 1612; +static const uint16 kInputline = 1615; +static const uint16 kPresslist = 1743; +static const uint16 kSavenames = 1749; +static const uint16 kQuitrequested = 1868; +static const uint16 kSubtitles = 1869; +static const uint16 kForeignrelease = 1870; static const uint16 kBlocktextdat = (0); static const uint16 kPersonframes = (0); static const uint16 kDebuglevel1 = (0); @@ -575,7 +574,6 @@ public: void usePipe(); void reminders(); void runTap(); - void talk(); void showMonk(); void checkForExit(); void lookInInterface(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index a56d63e1a5..8d7ef9340a 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -1676,16 +1676,6 @@ void DreamGenContext::checkCoords() { // FIXME: Move all these lists to the callers switch ((uint16)bx) { - case offset_talklist: { - RectWithCallback talkList[] = { - { 273,320,157,198,&DreamGenContext::getBack1 }, - { 240,290,2,44,&DreamGenContext::moreTalk }, - { 0,320,0,200,&DreamGenContext::blank }, - { 0xFFFF,0,0,0,0 } - }; - checkCoords(talkList); - break; - } case offset_quitlist: { RectWithCallback quitList[] = { { 273,320,157,198,&DreamGenContext::getBack1 }, @@ -3982,4 +3972,56 @@ void DreamGenContext::decide() { data.byte(kTextlen) = 240; } +void DreamGenContext::talk() { + data.byte(kTalkpos) = 0; + data.byte(kInmaparea) = 0; + data.byte(kCharacter) = data.byte(kCommand); + createPanel(); + showPanel(); + showMan(); + showExit(); + underTextLine(); + convIcons(); + startTalk(); + data.byte(kCommandtype) = 255; + readMouse(); + showPointer(); + workToScreen(); + + RectWithCallback talkList[] = { + { 273,320,157,198,&DreamGenContext::getBack1 }, + { 240,290,2,44,&DreamGenContext::moreTalk }, + { 0,320,0,200,&DreamGenContext::blank }, + { 0xFFFF,0,0,0,0 } + }; + + do { + delPointer(); + readMouse(); + animPointer(); + showPointer(); + vSync(); + dumpPointer(); + dumpTextLine(); + data.byte(kGetback) = 0; + checkCoords(talkList); + if (data.byte(kQuitrequested)) + break; + } while (!data.byte(kGetback)); + + bx = data.word(kPersondata); + es = cs; + + if (data.byte(kTalkpos) >= 4) + es.byte(bx+7) |= 128; + + redrawMainScrn(); + workToScreenM(); + if (data.byte(kSpeechloaded) == 1) { + cancelCh1(); + data.byte(kVolumedirection) = -1; + data.byte(kVolumeto) = 0; + } +} + } // End of namespace DreamGen diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index ff5585b941..ab59b973d2 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -555,5 +555,6 @@ void getUnderZoom(); void putUnderZoom(); void decide(); + void talk(); #endif |