From 69301e4f63e17aa7df696a0160eb07c77c8eac30 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Sat, 3 Dec 2011 19:50:25 +0100 Subject: DREAMWEB: Convert 'atmospheres' --- devtools/tasmrecover/tasm-recover | 3 +- engines/dreamweb/dreamgen.cpp | 286 ++++++++++++++----------------------- engines/dreamweb/dreamgen.h | 40 +++--- engines/dreamweb/structs.h | 8 ++ engines/dreamweb/stubs.cpp | 290 ++++++++++++++++++++++++++++---------- engines/dreamweb/stubs.h | 1 + 6 files changed, 348 insertions(+), 280 deletions(-) diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index e4ac1cc9a2..05cc5e0985 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -34,6 +34,7 @@ p = parser(skip_binary_data = [ 'folderlist', 'stak', 'keyconverttab', + 'atmospherelist', # keypad.asm 'keypadlist', # object.asm @@ -75,6 +76,7 @@ generator = cpp(context, "DreamGen", blacklist = [ 'allocateload', 'allocatework', 'animpointer', + 'atmospheres', 'autolook', 'autosetwalk', 'backobject', @@ -421,7 +423,6 @@ generator = cpp(context, "DreamGen", blacklist = [ 'zoomonoff', ], skip_output = [ # These functions are processed but not output - 'atmospheres', 'dreamweb', ], skip_dispatch_call = True, skip_addr_constants = True, header_omit_blacklisted = True, diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index f0eb3ad627..b655dcf2aa 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -5273,14 +5273,14 @@ void DreamGenContext::getDestInfo() { push(ax); dx = data; es = dx; - si = 4646; + si = 4045; _add(si, ax); cl = es.byte(si); ax = pop(); push(cx); dx = data; es = dx; - si = 4662; + si = 4061; _add(si, ax); ax = pop(); } @@ -5457,7 +5457,7 @@ clearedlocations: bx = ax; dx = data; es = dx; - _add(bx, 4646); + _add(bx, 4045); es.byte(bx) = 0; } @@ -5670,7 +5670,7 @@ void DreamGenContext::delChar() { si = data.word(kCurpos); _add(si, si); es = cs; - _add(si, 4680); + _add(si, 4079); es.byte(si) = 0; al = es.byte(si+1); ah = 0; @@ -5697,7 +5697,7 @@ void DreamGenContext::execCommand() { es = cs; bx = offset_comlist; ds = cs; - si = 4680; + si = 4079; al = ds.byte(si); _cmp(al, 0); if (!flags.z()) @@ -5892,7 +5892,7 @@ notyetassigned: push(bx); _add(bx, 2); ds = cs; - si = 4680; + si = 4079; checkpass: _lodsw(); ah = es.byte(bx); @@ -6220,7 +6220,7 @@ void DreamGenContext::parser() { al = '='; _stosb(); ds = cs; - si = 4680; + si = 4079; notspace1: _lodsw(); _cmp(al, 32); @@ -9844,7 +9844,7 @@ void DreamGenContext::getNamePos() { _mul(cx); dx = data; es = dx; - bx = 5214; + bx = 4613; _add(bx, ax); al = data.byte(kCursorpos); ah = 0; @@ -9998,7 +9998,7 @@ void DreamGenContext::showNames() { STACK_CHECK; dx = data; es = dx; - si = 5214+1; + si = 4613+1; di = (60)+21; bx = (52)+10; cl = 0; @@ -10518,7 +10518,7 @@ void DreamGenContext::clearChanges() { di = 0; _stosw(cx, true); es = cs; - di = 4646; + di = 4045; al = 1; _stosb(2); al = 0; @@ -11805,213 +11805,137 @@ void DreamGenContext::__start() { //0x0eb0: .... ...> .o.. ...@ 0x01, 0x00, 0x00, 0xc8, 0x00, 0xa0, 0xca, 0xff, 0xff, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x52, //0x0ec0: .... .... .SPE ECHR - 0x32, 0x34, 0x43, 0x30, 0x30, 0x30, 0x35, 0x2e, 0x52, 0x41, 0x57, 0x00, 0x00, 0x21, 0x0a, 0x0f, - //0x0ed0: 24C0 005. RAW. .!.. - 0xff, 0x00, 0x16, 0x0a, 0x0f, 0xff, 0x00, 0x16, 0x00, 0x0f, 0xff, 0x00, 0x0b, 0x00, 0x0f, 0xff, - //0x0ee0: .... .... .... .... - 0x00, 0x0b, 0x0a, 0x0f, 0xff, 0x00, 0x00, 0x0a, 0x0f, 0xff, 0x01, 0x2c, 0x0a, 0x06, 0xff, 0x01, - //0x0ef0: .... .... ..., .... - 0x2c, 0x00, 0x0d, 0xff, 0x02, 0x21, 0x00, 0x06, 0xff, 0x02, 0x16, 0x00, 0x05, 0xff, 0x02, 0x16, - //0x0f00: ,... .!.. .... .... - 0x0a, 0x10, 0xff, 0x02, 0x0b, 0x0a, 0x10, 0xff, 0x03, 0x2c, 0x00, 0x0f, 0xff, 0x03, 0x21, 0x0a, - //0x0f10: .... .... .,.. ..!. - 0x06, 0xff, 0x03, 0x21, 0x00, 0x05, 0xff, 0x04, 0x0b, 0x1e, 0x06, 0xff, 0x04, 0x16, 0x1e, 0x05, - //0x0f20: ...! .... .... .... - 0xff, 0x04, 0x16, 0x14, 0x0d, 0xff, 0x0a, 0x21, 0x1e, 0x06, 0xff, 0x0a, 0x16, 0x1e, 0x06, 0xff, - //0x0f30: .... ...! .... .... - 0x09, 0x16, 0x0a, 0x06, 0xff, 0x09, 0x16, 0x14, 0x10, 0xff, 0x09, 0x16, 0x1e, 0x10, 0xff, 0x09, - //0x0f40: .... .... .... .... - 0x16, 0x28, 0x10, 0xff, 0x09, 0x16, 0x32, 0x10, 0xff, 0x06, 0x0b, 0x1e, 0x06, 0xff, 0x06, 0x00, - //0x0f50: .(.. ..2. .... .... - 0x0a, 0x0f, 0xff, 0x06, 0x00, 0x14, 0x0f, 0xff, 0x06, 0x0b, 0x14, 0x0f, 0xff, 0x06, 0x16, 0x14, - //0x0f60: .... .... .... .... - 0x0f, 0xff, 0x07, 0x0b, 0x14, 0x06, 0xff, 0x07, 0x00, 0x14, 0x06, 0xff, 0x07, 0x00, 0x1e, 0x06, - //0x0f70: .... .... .... .... - 0xff, 0x37, 0x2c, 0x00, 0x05, 0xff, 0x37, 0x2c, 0x0a, 0x05, 0xff, 0x05, 0x16, 0x1e, 0x06, 0xff, - //0x0f80: .7,. ..7, .... .... - 0x05, 0x16, 0x14, 0x0f, 0xff, 0x05, 0x16, 0x0a, 0x0f, 0xff, 0x18, 0x16, 0x00, 0x0f, 0xff, 0x18, - //0x0f90: .... .... .... .... - 0x21, 0x00, 0x0f, 0xff, 0x18, 0x2c, 0x00, 0x0f, 0xff, 0x18, 0x21, 0x0a, 0x0f, 0xff, 0x08, 0x00, - //0x0fa0: !... .,.. ..!. .... - 0x0a, 0x06, 0xff, 0x08, 0x0b, 0x0a, 0x06, 0xff, 0x08, 0x16, 0x0a, 0x06, 0xff, 0x08, 0x21, 0x0a, - //0x0fb0: .... .... .... ..!. - 0x06, 0xff, 0x08, 0x21, 0x14, 0x06, 0xff, 0x08, 0x21, 0x1e, 0x06, 0xff, 0x08, 0x21, 0x28, 0x06, - //0x0fc0: ...! .... !... .!(. - 0xff, 0x08, 0x16, 0x28, 0x06, 0xff, 0x08, 0x0b, 0x28, 0x06, 0xff, 0x0b, 0x0b, 0x14, 0x0c, 0xff, - //0x0fd0: ...( .... (... .... - 0x0b, 0x0b, 0x1e, 0x0c, 0xff, 0x0b, 0x16, 0x14, 0x0c, 0xff, 0x0b, 0x16, 0x1e, 0x0c, 0xff, 0x0c, - //0x0fe0: .... .... .... .... - 0x16, 0x14, 0x0c, 0xff, 0x0d, 0x16, 0x14, 0x0c, 0xff, 0x0d, 0x21, 0x14, 0x0c, 0xff, 0x0e, 0x2c, - //0x0ff0: .... .... ..!. ..., - 0x14, 0x0c, 0xff, 0x0e, 0x21, 0x00, 0x0c, 0xff, 0x0e, 0x21, 0x0a, 0x0c, 0xff, 0x0e, 0x21, 0x14, - //0x1000: .... !... .!.. ..!. - 0x0c, 0xff, 0x0e, 0x21, 0x1e, 0x0c, 0xff, 0x0e, 0x21, 0x28, 0x0c, 0xff, 0x0e, 0x16, 0x00, 0x10, - //0x1010: ...! .... !(.. .... - 0xff, 0x13, 0x00, 0x00, 0x0c, 0xff, 0x14, 0x00, 0x14, 0x10, 0xff, 0x14, 0x00, 0x1e, 0x10, 0xff, - //0x1020: .... .... .... .... - 0x14, 0x0b, 0x1e, 0x10, 0xff, 0x14, 0x00, 0x28, 0x10, 0xff, 0x14, 0x0b, 0x28, 0x10, 0xff, 0x15, - //0x1030: .... ...( .... (... - 0x0b, 0x0a, 0x0f, 0xff, 0x15, 0x0b, 0x14, 0x0f, 0xff, 0x15, 0x00, 0x14, 0x0f, 0xff, 0x15, 0x16, - //0x1040: .... .... .... .... - 0x14, 0x0f, 0xff, 0x15, 0x21, 0x14, 0x0f, 0xff, 0x15, 0x2c, 0x14, 0x0f, 0xff, 0x15, 0x2c, 0x0a, - //0x1050: .... !... .,.. ..,. - 0x0f, 0xff, 0x16, 0x16, 0x0a, 0x10, 0xff, 0x16, 0x16, 0x14, 0x10, 0xff, 0x17, 0x16, 0x1e, 0x0d, - //0x1060: .... .... .... .... - 0xff, 0x17, 0x16, 0x28, 0x0d, 0xff, 0x17, 0x21, 0x28, 0x0d, 0xff, 0x17, 0x0b, 0x28, 0x0d, 0xff, - //0x1070: ...( ...! (... .(.. - 0x17, 0x00, 0x28, 0x0d, 0xff, 0x17, 0x00, 0x32, 0x0d, 0xff, 0x19, 0x0b, 0x28, 0x10, 0xff, 0x19, - //0x1080: ..(. ...2 .... (... - 0x0b, 0x32, 0x10, 0xff, 0x19, 0x00, 0x32, 0x10, 0xff, 0x1b, 0x0b, 0x14, 0x10, 0xff, 0x1b, 0x0b, - //0x1090: .2.. ..2. .... .... - 0x1e, 0x10, 0xff, 0x1d, 0x0b, 0x0a, 0x10, 0xff, 0x2d, 0x16, 0x1e, 0x0c, 0xff, 0x2d, 0x16, 0x28, - //0x10a0: .... .... -... .-.( - 0x0c, 0xff, 0x2d, 0x16, 0x32, 0x0c, 0xff, 0x2e, 0x16, 0x28, 0x0c, 0xff, 0x2e, 0x0b, 0x32, 0x0c, - //0x10b0: ..-. 2... .(.. ..2. - 0xff, 0x2e, 0x16, 0x32, 0x0c, 0xff, 0x2e, 0x21, 0x32, 0x0c, 0xff, 0x2f, 0x00, 0x00, 0x0c, 0xff, - //0x10c0: ...2 ...! 2../ .... - 0x1a, 0x16, 0x14, 0x10, 0xff, 0x1a, 0x21, 0x0a, 0x10, 0xff, 0x1a, 0x21, 0x14, 0x10, 0xff, 0x1a, - //0x10d0: .... ..!. ...! .... - 0x21, 0x1e, 0x10, 0xff, 0x1a, 0x2c, 0x1e, 0x10, 0xff, 0x1a, 0x16, 0x1e, 0x10, 0xff, 0x1a, 0x0b, - //0x10e0: !... .,.. .... .... - 0x1e, 0x10, 0xff, 0x1a, 0x0b, 0x14, 0x10, 0xff, 0x1a, 0x00, 0x14, 0x10, 0xff, 0x1a, 0x0b, 0x28, - //0x10f0: .... .... .... ...( - 0x10, 0xff, 0x1a, 0x00, 0x28, 0x10, 0xff, 0x1a, 0x16, 0x28, 0x10, 0xff, 0x1a, 0x0b, 0x32, 0x10, - //0x1100: .... (... .(.. ..2. - 0xff, 0x1c, 0x00, 0x1e, 0x0f, 0xff, 0x1c, 0x00, 0x14, 0x0f, 0xff, 0x1c, 0x00, 0x28, 0x0f, 0xff, - //0x1110: .... .... .... .(.. - 0x1c, 0x0b, 0x1e, 0x0f, 0xff, 0x1c, 0x0b, 0x14, 0x0f, 0xff, 0x1c, 0x16, 0x1e, 0x0f, 0xff, 0x1c, - //0x1120: .... .... .... .... - 0x16, 0x14, 0x0f, 0xff, 0xff, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x20, 0x4e, 0x41, 0x4d, 0x45, - //0x1130: .... .OBJ ECT NAME - 0x20, 0x4f, 0x4e, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - //0x1140: ONE - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x10, 0x12, - //0x1150: ... - 0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, - //0x1160: .... .... .... .... - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1170: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1180: .... ..D: .... .... + 0x32, 0x34, 0x43, 0x30, 0x30, 0x30, 0x35, 0x2e, 0x52, 0x41, 0x57, 0x00, 0x4f, 0x42, 0x4a, 0x45, + //0x0ed0: 24C0 005. RAW. OBJE + 0x43, 0x54, 0x20, 0x4e, 0x41, 0x4d, 0x45, 0x20, 0x4f, 0x4e, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, + //0x0ee0: CT N AME ONE + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + //0x0ef0: + 0x20, 0x20, 0x20, 0x20, 0x00, 0x10, 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, + //0x0f00: .... .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, + //0x0f10: .... .... .... .... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x3a, 0x00, + //0x0f20: .... .... .... .D:. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1190: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x20, 0x44, - //0x11a0: .... ..DR EAMW EB D - 0x41, 0x54, 0x41, 0x20, 0x46, 0x49, 0x4c, 0x45, 0x20, 0x43, 0x4f, 0x50, 0x59, 0x52, 0x49, 0x47, - //0x11b0: ATA FILE COP YRIG - 0x48, 0x54, 0x20, 0x31, 0x39, 0x39, 0x32, 0x20, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x56, 0x45, - //0x11c0: HT 1 992 CREA TIVE - 0x20, 0x52, 0x45, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x11d0: REA LITY .... .... + //0x0f30: .... .... .... .... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x52, 0x45, + //0x0f40: .... .... .... .DRE + 0x41, 0x4d, 0x57, 0x45, 0x42, 0x20, 0x44, 0x41, 0x54, 0x41, 0x20, 0x46, 0x49, 0x4c, 0x45, 0x20, + //0x0f50: AMWE B DA TA F ILE + 0x43, 0x4f, 0x50, 0x59, 0x52, 0x49, 0x47, 0x48, 0x54, 0x20, 0x31, 0x39, 0x39, 0x32, 0x20, 0x43, + //0x0f60: COPY RIGH T 19 92 C + 0x52, 0x45, 0x41, 0x54, 0x49, 0x56, 0x45, 0x20, 0x52, 0x45, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x00, + //0x0f70: REAT IVE REAL ITY. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x11e0: .... .... .... .... + //0x0f80: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x11f0: .... .... .... .... + //0x0f90: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1200: .... .... .... .... + //0x0fa0: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1210: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1220: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x02, 0x04, 0x01, 0x0a, 0x09, 0x08, 0x06, - //0x1230: .... .... .... .... - 0x0b, 0x04, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1240: .... .... .... .... + //0x0fb0: .... .... .... .... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + //0x0fc0: .... .... .... .... + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, + //0x0fd0: .... .... .... .... + 0x02, 0x04, 0x01, 0x0a, 0x09, 0x08, 0x06, 0x0b, 0x04, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + //0x0fe0: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1250: .... .... .... .... + //0x0ff0: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1260: .... .... .... .... + //0x1000: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1270: .... .... .... .... + //0x1010: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1280: .... .... .... .... + //0x1020: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x1290: .... .... .... .... + //0x1030: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x12a0: .... .... .... .... + //0x1040: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - //0x12b0: .... .... .... .... - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x12c0: .... .... .... .... + //0x1050: .... .... .... .... + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + //0x1060: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x12d0: .... .... .... .... + //0x1070: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x12e0: .... .... .... .... + //0x1080: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x12f0: .... .... .... .... + //0x1090: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1300: .... .... .... .... + //0x10a0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1310: .... .... .... .... + //0x10b0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1320: .... .... .... .... + //0x10c0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1330: .... .... .... .... + //0x10d0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1340: .... .... .... .... + //0x10e0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1350: .... .... .... .... + //0x10f0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1360: .... .... .... .... + //0x1100: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1370: .... .... .... .... + //0x1110: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1380: .... .... .... .... + //0x1120: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1390: .... .... .... .... + //0x1130: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x13a0: .... .... .... .... + //0x1140: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x13b0: .... .... .... .... + //0x1150: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x13c0: .... .... .... .... + //0x1160: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x13d0: .... .... .... .... + //0x1170: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x13e0: .... .... .... .... + //0x1180: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x13f0: .... .... .... .... + //0x1190: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1400: .... .... .... .... + //0x11a0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1410: .... .... .... .... + //0x11b0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1420: .... .... .... .... + //0x11c0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1430: .... .... .... .... + //0x11d0: .... .... .... .... 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x1440: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, - //0x1450: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, - //0x1460: .... .... .... .... - 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x1470: .... .... .... .... - 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x1480: .... .... .... .... - 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x1490: .... .... .... .... - 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x14a0: .... .... .... .... - 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x14b0: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x14c0: .... .... .... .... - 0x01, 0x01, 0x01, 0x01, 0x01, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, - //0x14d0: .... .DRE AMWE B.D0 - 0x30, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x31, 0x00, 0x44, - //0x14e0: 0.DR EAMW EB.D 01.D - 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x32, 0x00, 0x44, 0x52, 0x45, 0x41, - //0x14f0: REAM WEB. D02. DREA - 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x33, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, - //0x1500: MWEB .D03 .DRE AMWE - 0x42, 0x2e, 0x44, 0x30, 0x34, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, - //0x1510: B.D0 4.DR EAMW EB.D - 0x30, 0x35, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x36, 0x00, - //0x1520: 05.D REAM WEB. D06. - 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x45, 0x4d, 0x00, 0x00, 0x00, 0x00, - //0x1530: DREA MWEB .DEM .... - }; + //0x11e0: .... .... .... .... + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + //0x11f0: .... .... .... .... + 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + //0x1200: .... .... .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + //0x1210: .... .... .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + //0x1220: .... .... .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + //0x1230: .... .... .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, + //0x1240: .... .... .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, + //0x1250: .... .... .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, + //0x1260: .... .... .... .... + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x44, 0x52, 0x45, 0x41, + //0x1270: .... .... .... DREA + 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x30, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, + //0x1280: MWEB .D00 .DRE AMWE + 0x42, 0x2e, 0x44, 0x30, 0x31, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, + //0x1290: B.D0 1.DR EAMW EB.D + 0x30, 0x32, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x33, 0x00, + //0x12a0: 02.D REAM WEB. D03. + 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x34, 0x00, 0x44, 0x52, 0x45, + //0x12b0: DREA MWEB .D04 .DRE + 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x35, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, + //0x12c0: AMWE B.D0 5.DR EAMW + 0x45, 0x42, 0x2e, 0x44, 0x30, 0x36, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, + //0x12d0: EB.D 06.D REAM WEB. + 0x44, 0x45, 0x4d, 0x00, 0x00, 0x00, 0x00, }; ds.assign(src, src + sizeof(src)); dreamweb(); } diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index ba3e690858..70c471582d 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -43,7 +43,6 @@ public: static const uint16 offset_error6patch = 0x0c0d; static const uint16 offset_operand1 = 0x098f; static const uint16 offset_gameerror4 = 0x0b46; - static const uint16 offset_keybuffer = 0x1176; static const uint16 offset_comlist = 0x08e9; static const uint16 offset_quitlist = 0x0895; static const uint16 offset_decidelist = 0x0e9f; @@ -59,12 +58,12 @@ public: static const uint16 offset_gameerror7 = 0x0c13; static const uint16 offset_speechfilename = 0x0ec9; static const uint16 offset_discopslist = 0x0a53; - static const uint16 offset_atmospherelist = 0x0edc; + static const uint16 offset_commandline = 0x0edc; static const uint16 offset_error2patch = 0x0b05; static const uint16 offset_money2poke = 0x09be; static const uint16 offset_opslist = 0x0a29; + static const uint16 offset_keybuffer = 0x0f1d; static const uint16 offset_openchangesize = 0x0873; - static const uint16 offset_commandline = 0x1135; static const uint16 offset_keys = 0x0925; static const uint16 kStartvars = 0; static const uint16 kProgresspoints = 1; @@ -523,22 +522,22 @@ public: static const uint16 kTitle7graphics = 2137; static const uint16 kPalettescreen = 2150; static const uint16 kCurrentfile = 2475; - static const uint16 kFileheader = 4518; - static const uint16 kFiledata = 4568; - static const uint16 kExtradata = 4608; - static const uint16 kMadeuproomdat = 4614; - static const uint16 kRoomscango = 4646; - static const uint16 kRoompics = 4662; - static const uint16 kOplist = 4677; - static const uint16 kInputline = 4680; - static const uint16 kLinedata = 4808; - static const uint16 kPresslist = 5208; - static const uint16 kSavenames = 5214; - static const uint16 kSavefiles = 5333; - static const uint16 kRecname = 5424; - static const uint16 kQuitrequested = 5437; - static const uint16 kSubtitles = 5438; - static const uint16 kForeignrelease = 5439; + static const uint16 kFileheader = 3917; + static const uint16 kFiledata = 3967; + static const uint16 kExtradata = 4007; + static const uint16 kMadeuproomdat = 4013; + static const uint16 kRoomscango = 4045; + static const uint16 kRoompics = 4061; + static const uint16 kOplist = 4076; + static const uint16 kInputline = 4079; + static const uint16 kLinedata = 4207; + static const uint16 kPresslist = 4607; + static const uint16 kSavenames = 4613; + static const uint16 kSavefiles = 4732; + static const uint16 kRecname = 4823; + static const uint16 kQuitrequested = 4836; + static const uint16 kSubtitles = 4837; + static const uint16 kForeignrelease = 4838; static const uint16 kBlocktextdat = (0); static const uint16 kPersonframes = (0); static const uint16 kDebuglevel1 = (0); @@ -610,8 +609,8 @@ public: static const uint16 kTablesize = (32); static const uint16 kScreenwidth = (320); static const uint16 kKeypadx = (36+112); + static const uint16 kHeaderlen = (4013-3917); static const uint16 kItempicsize = (44); - static const uint16 kHeaderlen = (4614-4518); static const uint16 kDiaryy = (48+12); static const uint16 kOpsy = (52); static const uint16 kSymboly = (56); @@ -931,7 +930,6 @@ public: void fadeScreenUps(); void hotelControl(); void mugger(); - void atmospheres(); void loadPersonal(); void gettingShot(); void setTopLeft(); diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h index b542cfacbf..7f14fa4ae5 100644 --- a/engines/dreamweb/structs.h +++ b/engines/dreamweb/structs.h @@ -277,3 +277,11 @@ struct FileHeader { } }; +struct Atmosphere { + uint8 _location; + uint8 _mapX; + uint8 _mapY; + uint8 _sound; + uint8 _repeat; +}; + diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 7103697a51..9cdcef814f 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -298,6 +298,161 @@ const Room g_roomData[] = { 0,0,255,255,255,255,255,255,255,255,55 } }; +static const Atmosphere g_atmosphereList[] = { + // location,map x,y,sound,repeat + { 0,33,10,15,255 }, + { 0,22,10,15,255 }, + { 0,22,0,15,255 }, + { 0,11,0,15,255 }, + { 0,11,10,15,255 }, + { 0,0,10,15,255 }, + + { 1,44,10,6,255 }, + { 1,44,0,13,255 }, + + { 2,33,0,6,255 }, + { 2,22,0,5,255 }, + { 2,22,10,16,255 }, + { 2,11,10,16,255 }, + + { 3,44,0,15,255 }, + { 3,33,10,6,255 }, + { 3,33,0,5,255 }, + + { 4,11,30,6,255 }, + { 4,22,30,5,255 }, + { 4,22,20,13,255 }, + + { 10,33,30,6,255 }, + { 10,22,30,6,255 }, + + { 9,22,10,6,255 }, + { 9,22,20,16,255 }, + { 9,22,30,16,255 }, + { 9,22,40,16,255 }, + { 9,22,50,16,255 }, + + { 6,11,30,6,255 }, + { 6,0,10,15,255 }, + { 6,0,20,15,255 }, + { 6,11,20,15,255 }, + { 6,22,20,15,255 }, + + { 7,11,20,6,255 }, + { 7,0,20,6,255 }, + { 7,0,30,6,255 }, + + { 55,44,0,5,255 }, + { 55,44,10,5,255 }, + + { 5,22,30,6,255 }, + { 5,22,20,15,255 }, // if demo: { 5,22,20,16,255 }, + { 5,22,10,15,255 }, // if demo: { 5,22,10,16,255 }, + + { 24,22,0,15,255 }, + { 24,33,0,15,255 }, + { 24,44,0,15,255 }, + { 24,33,10,15,255 }, + + { 8,0,10,6,255 }, + { 8,11,10,6,255 }, + { 8,22,10,6,255 }, + { 8,33,10,6,255 }, + { 8,33,20,6,255 }, + { 8,33,30,6,255 }, + { 8,33,40,6,255 }, + { 8,22,40,6,255 }, + { 8,11,40,6,255 }, + + { 11,11,20,12,255 }, + { 11,11,30,12,255 }, + { 11,22,20,12,255 }, + { 11,22,30,12,255 }, + + { 12,22,20,12,255 }, + { 13,22,20,12,255 }, + { 13,33,20,12,255 }, + + { 14,44,20,12,255 }, + { 14,33,0,12,255 }, + { 14,33,10,12,255 }, + { 14,33,20,12,255 }, + { 14,33,30,12,255 }, + { 14,33,40,12,255 }, + { 14,22,0,16,255 }, + + { 19,0,0,12,255 }, + + { 20,0,20,16,255 }, + { 20,0,30,16,255 }, + { 20,11,30,16,255 }, + { 20,0,40,16,255 }, + { 20,11,40,16,255 }, + + { 21,11,10,15,255 }, // if demo: { 21,11,10,16,255 }, + { 21,11,20,15,255 }, // if demo: { 21,11,20,16,255 }, + { 21, 0,20,15,255 }, // if demo: { 21,0,20,16,255 }, + { 21,22,20,15,255 }, // if demo: { 21,22,20,16,255 }, + { 21,33,20,15,255 }, // if demo: { 21,33,20,16,255 }, + { 21,44,20,15,255 }, // if demo: { 21,44,20,16,255 }, + { 21,44,10,15,255 }, // if demo: { 21,44,10,16,255 }, + + { 22,22,10,16,255 }, + { 22,22,20,16,255 }, + + { 23,22,30,13,255 }, + { 23,22,40,13,255 }, + { 23,33,40,13,255 }, + { 23,11,40,13,255 }, + { 23,0,40,13,255 }, + { 23,0,50,13,255 }, + + { 25,11,40,16,255 }, + { 25,11,50,16,255 }, + { 25,0,50,16,255 }, + + { 27,11,20,16,255 }, + { 27,11,30,16,255 }, + + { 29,11,10,16,255 }, + + { 45,22,30,12,255 }, + { 45,22,40,12,255 }, + { 45,22,50,12,255 }, + + { 46,22,40,12,255 }, + { 46,11,50,12,255 }, + { 46,22,50,12,255 }, + { 46,33,50,12,255 }, + + { 47,0,0,12,255 }, + + { 26,22,20,16,255 }, + { 26,33,10,16,255 }, + { 26,33,20,16,255 }, + { 26,33,30,16,255 }, + { 26,44,30,16,255 }, + { 26,22,30,16,255 }, + { 26,11,30,16,255 }, + { 26,11,20,16,255 }, + { 26,0,20,16,255 }, + { 26,11,40,16,255 }, + { 26,0,40,16,255 }, + { 26,22,40,16,255 }, + { 26,11,50,16,255 }, + + { 28,0,30,15,255 }, + { 28,0,20,15,255 }, + { 28,0,40,15,255 }, + { 28,11,30,15,255 }, + { 28,11,20,15,255 }, + { 28,22,30,15,255 }, + { 28,22,20,15,255 }, + + { 255,255,255,255,255 } + +}; + void DreamGenContext::dreamweb() { STACK_CHECK; @@ -2852,83 +3007,64 @@ void DreamGenContext::useMenu() { } void DreamGenContext::atmospheres() { - STACK_CHECK; - cl = data.byte(kMapx); - ch = data.byte(kMapy); - bx = offset_atmospherelist; -nextatmos: - al = cs.byte(bx); - _cmp(al, 255); - if (flags.z()) - goto nomoreatmos; - _cmp(al, data.byte(kReallocation)); - if (!flags.z()) - goto wrongatmos; - ax = cs.word(bx+1); - _cmp(ax, cx); - if (!flags.z()) - goto wrongatmos; - ax = cs.word(bx+3); - _cmp(al, data.byte(kCh0playing)); - if (flags.z()) - goto playingalready; - _cmp(data.byte(kLocation), 45); - if (!flags.z()) - goto notweb; - _cmp(data.word(kReeltowatch), 45); - if (flags.z()) - goto wrongatmos; -notweb: - playChannel0(); - _cmp(data.byte(kReallocation), 2); - _cmp(data.byte(kMapy), 0); - if (flags.z()) - goto fullvol; - if (!flags.z()) - goto notlouisvol; - _cmp(data.byte(kMapy), 10); - if (!flags.z()) - goto notlouisvol; - _cmp(data.byte(kMapx), 22); - if (!flags.z()) - goto notlouisvol; - data.byte(kVolume) = 5; -notlouisvol: - _cmp(data.byte(kReallocation), 14); - if (!flags.z()) - goto notmad1; - _cmp(data.byte(kMapx), 33); - if (flags.z()) - goto ismad2; - _cmp(data.byte(kMapx), 22); - if (!flags.z()) - goto notmad1; - data.byte(kVolume) = 5; - return; -ismad2: - data.byte(kVolume) = 0; - return; -notmad1: -playingalready: - _cmp(data.byte(kReallocation), 2); - if (!flags.z()) - return /* (notlouisvol2) */; - _cmp(data.byte(kMapx), 22); - if (flags.z()) - goto louisvol; - _cmp(data.byte(kMapx), 11); - if (!flags.z()) - return /* (notlouisvol2) */; -fullvol: - data.byte(kVolume) = 0; - return; -louisvol: - data.byte(kVolume) = 5; - return; -wrongatmos: - _add(bx, 5); - goto nextatmos; -nomoreatmos: + + const Atmosphere *a = &g_atmosphereList[0]; + + for (; a->_location != 255; ++a) { + if (a->_location != data.byte(kReallocation)) + continue; + if (a->_mapX != data.byte(kMapx) || a->_mapY != data.byte(kMapy)) + continue; + if (a->_sound != data.byte(kCh0playing)) { + + if (data.byte(kLocation) == 45 && data.word(kReeltowatch) == 45) + continue; // "web" + + playChannel0(a->_sound, a->_repeat); + + // NB: The asm here reads + // cmp reallocation,2 + // cmp mapy,0 + // jz fullvol + // jnz notlouisvol + // I'm interpreting this as if the cmp reallocation is below the jz + + if (data.byte(kMapy) == 0) { + data.byte(kVolume) = 0; // "fullvol" + return; + } + + if (data.byte(kReallocation) == 2 && data.byte(kMapx) == 22 && data.byte(kMapy) == 10) + data.byte(kVolume) = 5; // "louisvol" + + if (isCD() && data.byte(kReallocation) == 14) { + if (data.byte(kMapx) == 33) { + data.byte(kVolume) = 0; // "ismad2" + return; + } + + if (data.byte(kMapx) == 22) { + data.byte(kVolume) = 5; + return; + } + + } + } + + if (data.byte(kReallocation) == 2) { + if (data.byte(kMapx) == 22) { + data.byte(kVolume) = 5; // "louisvol" + return; + } + + if (data.byte(kMapx) == 11) { + data.byte(kVolume) = 0; // "fullvol" + return; + } + } + return; + } + cancelCh0(); } diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index c6c392ecf0..967c1f1737 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -425,4 +425,5 @@ void saveGame(); void zoomOnOff(); void doShake(); + void atmospheres(); -- cgit v1.2.3