[Scummvm-cvs-logs] scummvm master -> 60ece632b87ab8cb797df0a245bb5f97301fe610
wjp
wjp at usecode.org
Sun Dec 18 16:56:23 CET 2011
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
60ece632b8 DREAMWEB: Remove reelRoutines from data blob
Commit: 60ece632b87ab8cb797df0a245bb5f97301fe610
https://github.com/scummvm/scummvm/commit/60ece632b87ab8cb797df0a245bb5f97301fe610
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-18T07:54:16-08:00
Commit Message:
DREAMWEB: Remove reelRoutines from data blob
Changed paths:
devtools/tasmrecover/dreamweb/sprite.asm
devtools/tasmrecover/tasm-recover
engines/dreamweb/dreambase.h
engines/dreamweb/dreamgen.cpp
engines/dreamweb/dreamgen.h
engines/dreamweb/people.cpp
engines/dreamweb/saveload.cpp
engines/dreamweb/structs.h
engines/dreamweb/stubs.cpp
engines/dreamweb/stubs.h
diff --git a/devtools/tasmrecover/dreamweb/sprite.asm b/devtools/tasmrecover/dreamweb/sprite.asm
index 06b06c7..658484d 100644
--- a/devtools/tasmrecover/dreamweb/sprite.asm
+++ b/devtools/tasmrecover/dreamweb/sprite.asm
@@ -244,7 +244,7 @@ Reelroutines db 1,44,0 ;Room number and x,y
db 255
-Lenofreelrouts equ $-reelroutines
+Lenofreelrouts equ 457 ; $-reelroutines
Reelcalls dw gamer,sparkydrip,eden,edeninbath,sparky,smokebloke
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 36e04a2..b1f861d 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -87,6 +87,7 @@ p = parser(skip_binary_data = [
'speechfilename',
'speechfile',
# sprite.asm
+ 'reelroutines',
'reelcalls',
'facelist',
'rainlocations',
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index 9a5d684..6de854f 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -34,6 +34,9 @@ namespace DreamWeb {
namespace DreamGen {
+
+const unsigned int kNumReelRoutines = 57;
+
/**
* This class is one of the parent classes of DreamGenContext. Its sole purpose
* is to allow us to incrementally move things out of DreamGenContext into this
@@ -60,6 +63,9 @@ protected:
// from vgagrafx.cpp
uint8 _workspace[(0x1000 + 2) * 16];
+ // from people.cpp
+ ReelRoutine _reelRoutines[kNumReelRoutines+1];
+
public:
DreamBase(DreamWeb::DreamWebEngine *en);
@@ -158,6 +164,7 @@ public:
void workoutFrames();
// from people.cpp
+ void setupInitialReelRoutines();
void updatePeople();
void madmanText();
void madman(ReelRoutine &routine);
@@ -232,6 +239,8 @@ public:
void showMainOps();
void showDiscOps();
void showNames();
+ void loadPosition(unsigned int slot);
+ void savePosition(unsigned int slot, const char *descbuf);
// from sound.cpp
bool loadSpeech(byte type1, int idx1, byte type2, int idx2);
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 6d303e6..33bac82 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -1773,14 +1773,14 @@ void DreamGenContext::getDestInfo() {
push(ax);
dx = data;
es = dx;
- si = 1120;
+ si = 663;
_add(si, ax);
cl = es.byte(si);
ax = pop();
push(cx);
dx = data;
es = dx;
- si = 1136;
+ si = 679;
_add(si, ax);
ax = pop();
}
@@ -1832,7 +1832,7 @@ clearedlocations:
bx = ax;
dx = data;
es = dx;
- _add(bx, 1120);
+ _add(bx, 663);
es.byte(bx) = 0;
}
@@ -1852,7 +1852,7 @@ dirroot:
si = offset_rootdir;
_inc(si);
es = cs;
- di = 1045;
+ di = 588;
_inc(di);
cx = 12;
_movsb(cx, true);
@@ -1954,7 +1954,7 @@ notyetassigned:
push(bx);
_add(bx, 2);
ds = cs;
- si = 1154;
+ si = 697;
checkpass:
_lodsw();
ah = es.byte(bx);
@@ -1998,7 +1998,7 @@ void DreamGenContext::read() {
return;
okcom:
es = cs;
- di = 1045;
+ di = 588;
ax = data.word(kTextfile1);
data.word(kMonsource) = ax;
ds = ax;
@@ -2128,7 +2128,7 @@ keyok2:
ds = cs;
si = offset_operand1+1;
es = cs;
- di = 1045+1;
+ di = 588+1;
cx = 12;
_movsb(cx, true);
monitorLogo();
@@ -2210,7 +2210,7 @@ void DreamGenContext::parser() {
al = '=';
_stosb();
ds = cs;
- si = 1154;
+ si = 697;
notspace1:
_lodsw();
_cmp(al, 32);
@@ -2391,113 +2391,57 @@ void DreamGenContext::__start() {
//0x0190: .... .... .... ....
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
//0x01a0: .... .... .... ....
- 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x01, 0x2c, 0x00, 0x14, 0x00, 0x02, 0x00,
- //0x01b0: .... .... ..,. ....
- 0x01, 0x01, 0x37, 0x00, 0x00, 0x00, 0x32, 0x14, 0x00, 0x18, 0x16, 0x00, 0x4a, 0x00, 0x01, 0x00,
- //0x01c0: ..7. ..2. .... J...
- 0x00, 0x18, 0x21, 0x0a, 0x4b, 0x00, 0x01, 0x00, 0x01, 0x01, 0x2c, 0x00, 0x1b, 0x00, 0x02, 0x00,
- //0x01d0: ..!. K... ..,. ....
- 0x02, 0x01, 0x2c, 0x00, 0x60, 0x00, 0x03, 0x00, 0x04, 0x01, 0x2c, 0x00, 0x76, 0x00, 0x02, 0x00,
- //0x01e0: ..,. `... ..,. v...
- 0x05, 0x01, 0x2c, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x16, 0x14, 0x35, 0x00, 0x03, 0x00,
- //0x01f0: ..,. .... .... 5...
- 0x00, 0x05, 0x16, 0x14, 0x28, 0x00, 0x01, 0x00, 0x02, 0x05, 0x16, 0x14, 0x32, 0x00, 0x01, 0x00,
- //0x0200: .... (... .... 2...
- 0x03, 0x02, 0x0b, 0x0a, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x02, 0x0b, 0x0a, 0xb6, 0x00, 0x02, 0x00,
- //0x0210: .... .... .... ....
- 0x01, 0x08, 0x0b, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x01, 0x17, 0x00, 0x32, 0x00, 0x00, 0x03, 0x00,
- //0x0220: .... .... ...2 ....
- 0x00, 0x1c, 0x0b, 0x14, 0xfa, 0x00, 0x04, 0x00, 0x00, 0x17, 0x00, 0x32, 0x2b, 0x00, 0x02, 0x00,
- //0x0230: .... .... ...2 +...
- 0x08, 0x17, 0x0b, 0x28, 0x82, 0x00, 0x02, 0x00, 0x01, 0x17, 0x16, 0x28, 0x7a, 0x00, 0x02, 0x00,
- //0x0240: ...( .... ...( z...
- 0x02, 0x17, 0x16, 0x28, 0x69, 0x00, 0x02, 0x00, 0x03, 0x17, 0x16, 0x28, 0x51, 0x00, 0x02, 0x00,
- //0x0250: ...( i... ...( Q...
- 0x04, 0x17, 0x0b, 0x28, 0x87, 0x00, 0x02, 0x00, 0x05, 0x17, 0x16, 0x28, 0x91, 0x00, 0x02, 0x00,
- //0x0260: ...( .... ...( ....
- 0x06, 0x04, 0x16, 0x1e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x2d, 0x16, 0x1e, 0xc8, 0x00, 0x00, 0x00,
- //0x0270: .... .... .-.. ....
- 0x14, 0x2d, 0x16, 0x1e, 0x27, 0x00, 0x02, 0x00, 0x00, 0x2d, 0x16, 0x1e, 0x19, 0x00, 0x02, 0x00,
- //0x0280: .-.. '... .-.. ....
- 0x00, 0x08, 0x16, 0x28, 0x20, 0x00, 0x02, 0x00, 0x00, 0x07, 0x0b, 0x14, 0x40, 0x00, 0x02, 0x00,
- //0x0290: ...( ... .... @...
- 0x00, 0x16, 0x16, 0x14, 0x52, 0x00, 0x02, 0x00, 0x00, 0x1b, 0x0b, 0x1e, 0x00, 0x00, 0x02, 0x00,
- //0x02a0: .... R... .... ....
- 0x00, 0x14, 0x00, 0x1e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0e, 0x21, 0x28, 0x15, 0x00, 0x01, 0x00,
- //0x02b0: .... .... ..!( ....
- 0x00, 0x1d, 0x0b, 0x0a, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x16, 0x00, 0x02, 0x00, 0x02, 0x00,
- //0x02c0: .... .... .... ....
- 0x00, 0x19, 0x00, 0x32, 0x04, 0x00, 0x02, 0x00, 0x00, 0x32, 0x16, 0x1e, 0x79, 0x00, 0x02, 0x00,
- //0x02d0: ...2 .... .2.. y...
- 0x00, 0x32, 0x16, 0x1e, 0x00, 0x00, 0x14, 0x00, 0x00, 0x34, 0x16, 0x1e, 0xc0, 0x00, 0x02, 0x00,
- //0x02e0: .2.. .... .4.. ....
- 0x00, 0x34, 0x16, 0x1e, 0xe9, 0x00, 0x02, 0x00, 0x00, 0x32, 0x16, 0x28, 0x68, 0x00, 0x37, 0x00,
- //0x02f0: .4.. .... .2.( h.7.
- 0x00, 0x35, 0x21, 0x00, 0x63, 0x00, 0x02, 0x00, 0x00, 0x32, 0x16, 0x28, 0x00, 0x00, 0x03, 0x00,
- //0x0300: .5!. c... .2.( ....
- 0x00, 0x32, 0x16, 0x1e, 0xa2, 0x00, 0x02, 0x00, 0x00, 0x34, 0x16, 0x1e, 0x39, 0x00, 0x02, 0x00,
- //0x0310: .2.. .... .4.. 9...
- 0x00, 0x34, 0x16, 0x1e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x36, 0x00, 0x00, 0x48, 0x00, 0x03, 0x00,
- //0x0320: .4.. .... .6.. H...
- 0x00, 0x37, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00,
- //0x0330: .7,. .... .... ....
- 0x00, 0x0e, 0x16, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x0e, 0x16, 0x00, 0x2c, 0x01, 0x01, 0x00,
- //0x0340: .... .... .... ,...
- 0x00, 0x0a, 0x16, 0x1e, 0xae, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x16, 0x14, 0x00, 0x00, 0x01, 0x00,
- //0x0350: .... .... .... ....
- 0x00, 0x0b, 0x0b, 0x14, 0x00, 0x00, 0x32, 0x14, 0x00, 0x0b, 0x0b, 0x1e, 0x00, 0x00, 0x32, 0x14,
- //0x0360: .... ..2. .... ..2.
- 0x00, 0x0b, 0x16, 0x14, 0x00, 0x00, 0x32, 0x14, 0x00, 0x0e, 0x21, 0x28, 0x00, 0x00, 0x32, 0x14,
- //0x0370: .... ..2. ..!( ..2.
- 0x00, 0xff, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x56, 0x39, 0x39, 0x00, 0x01,
- //0x0380: ..DR EAMW EB.V 99..
- 0x00, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x55, 0x42,
- //0x0390: .PUB LIC PUB
- 0x4c, 0x49, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x42, 0x4c, 0x41, 0x43, 0x4b,
- //0x03a0: LIC ...B LACK
- 0x44, 0x52, 0x41, 0x47, 0x4f, 0x4e, 0x20, 0x52, 0x59, 0x41, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20,
- //0x03b0: DRAG ON R YAN
- 0x20, 0x20, 0x00, 0x00, 0x00, 0x48, 0x45, 0x4e, 0x44, 0x52, 0x49, 0x58, 0x20, 0x20, 0x20, 0x20,
- //0x03c0: .. .HEN DRIX
- 0x20, 0x4c, 0x4f, 0x55, 0x49, 0x53, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x53,
- //0x03d0: LOU IS ...S
- 0x45, 0x50, 0x54, 0x49, 0x4d, 0x55, 0x53, 0x20, 0x20, 0x20, 0x20, 0x42, 0x45, 0x43, 0x4b, 0x45,
- //0x03e0: EPTI MUS B ECKE
- 0x54, 0x54, 0x20, 0x20, 0x20, 0x20, 0x00, 0xff, 0xff, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- //0x03f0: TT .. .
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x22, 0x52, 0x4f, 0x4f, 0x54, 0x20, 0x20, 0x20, 0x20,
- //0x0400: ." ROOT
- 0x20, 0x20, 0x20, 0x20, 0x00, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- //0x0410: ."
- 0x20, 0x20, 0x00, 0x0d, 0x0a, 0x0d, 0x0a, 0x24, 0x10, 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x01,
- //0x0420: .. ...$ .... ....
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
- //0x0430: .... .... .... ....
- 0x44, 0x3a, 0x00, 0x00, 0x00, 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: .... .... .... ....
- 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- //0x0460: .... .... .... ....
- 0x05, 0x00, 0x03, 0x02, 0x04, 0x01, 0x0a, 0x09, 0x08, 0x06, 0x0b, 0x04, 0x07, 0x07, 0x00, 0x00,
- //0x0470: .... .... .... ....
+ 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45,
+ //0x01b0: .... .... .DRE AMWE
+ 0x42, 0x2e, 0x56, 0x39, 0x39, 0x00, 0x01, 0x00, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x20,
+ //0x01c0: B.V9 9... PUBL IC
+ 0x20, 0x20, 0x20, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
+ //0x01d0: PUBL IC .
+ 0x00, 0x00, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x47, 0x4f, 0x4e, 0x20, 0x52, 0x59,
+ //0x01e0: ..BL ACKD RAGO N RY
+ 0x41, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x48, 0x45, 0x4e, 0x44,
+ //0x01f0: AN ... HEND
+ 0x52, 0x49, 0x58, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x4f, 0x55, 0x49, 0x53, 0x20, 0x20, 0x20,
+ //0x0200: RIX LOUI S
+ 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x53, 0x45, 0x50, 0x54, 0x49, 0x4d, 0x55, 0x53, 0x20, 0x20,
+ //0x0210: . ..SE PTIM US
+ 0x20, 0x20, 0x42, 0x45, 0x43, 0x4b, 0x45, 0x54, 0x54, 0x20, 0x20, 0x20, 0x20, 0x00, 0xff, 0xff,
+ //0x0220: BE CKET T ...
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x22, 0x52,
+ //0x0230: ."R
+ 0x4f, 0x4f, 0x54, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x22, 0x20, 0x20, 0x20,
+ //0x0240: OOT . "
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x0d, 0x0a, 0x0d, 0x0a, 0x24, 0x10,
+ //0x0250: ... ..$.
+ 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02,
+ //0x0260: .... .... .... ....
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x44, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ //0x0270: .... ...D :... ....
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- //0x0480: .... .... .... ....
+ //0x0280: .... .... .... ....
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ //0x0290: .... .... .... ....
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x02, 0x04, 0x01, 0x0a, 0x09, 0x08,
+ //0x02a0: .... .... .... ....
+ 0x06, 0x0b, 0x04, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ //0x02b0: .... .... .... ....
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- //0x0490: .... .... .... ....
+ //0x02c0: .... .... .... ....
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- //0x04a0: .... .... .... ....
+ //0x02d0: .... .... .... ....
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- //0x04b0: .... .... .... ....
+ //0x02e0: .... .... .... ....
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- //0x04c0: .... .... .... ....
+ //0x02f0: .... .... .... ....
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- //0x04d0: .... .... .... ....
+ //0x0300: .... .... .... ....
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- //0x04e0: .... .... .... ....
+ //0x0310: .... .... .... ....
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- //0x04f0: .... .... .... ....
- 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, };
+ //0x0320: .... .... .... ....
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
+ //0x0330: .... .... .... ....
+ 0x00, 0x00, };
ds.assign(src, src + sizeof(src));
dreamweb();
}
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index b7a644f..47be37a 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -32,9 +32,9 @@
namespace DreamGen {
-static const uint16 offset_rootdir = 0x0407;
-static const uint16 offset_operand1 = 0x03f9;
-static const uint16 offset_keys = 0x038f;
+static const uint16 offset_keys = 0x01c6;
+static const uint16 offset_rootdir = 0x023e;
+static const uint16 offset_operand1 = 0x0230;
static const uint16 kStartvars = 0;
static const uint16 kProgresspoints = 1;
static const uint16 kWatchon = 2;
@@ -357,17 +357,16 @@ static const uint16 kCh1blockstocopy = 435;
static const uint16 kSoundbufferwrite = 437;
static const uint16 kCurrentsample = 439;
static const uint16 kRoomssample = 440;
-static const uint16 kReelroutines = 441;
-static const uint16 kBasicsample = 898;
-static const uint16 kCurrentfile = 1045;
-static const uint16 kRoomscango = 1120;
-static const uint16 kRoompics = 1136;
-static const uint16 kOplist = 1151;
-static const uint16 kInputline = 1154;
-static const uint16 kPresslist = 1282;
-static const uint16 kQuitrequested = 1288;
-static const uint16 kSubtitles = 1289;
-static const uint16 kForeignrelease = 1290;
+static const uint16 kBasicsample = 441;
+static const uint16 kCurrentfile = 588;
+static const uint16 kRoomscango = 663;
+static const uint16 kRoompics = 679;
+static const uint16 kOplist = 694;
+static const uint16 kInputline = 697;
+static const uint16 kPresslist = 825;
+static const uint16 kQuitrequested = 831;
+static const uint16 kSubtitles = 832;
+static const uint16 kForeignrelease = 833;
static const uint16 kBlocktextdat = (0);
static const uint16 kPersonframes = (0);
static const uint16 kDebuglevel1 = (0);
@@ -406,8 +405,8 @@ static const uint16 kListofchanges = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768
static const uint16 kUndertimedtext = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4));
static const uint16 kRainlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30));
static const uint16 kInitialreelrouts = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64));
-static const uint16 kInitialvars = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+898-441);
-static const uint16 kLengthofbuffer = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+898-441+68-0);
+static const uint16 kInitialvars = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+457);
+static const uint16 kLengthofbuffer = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+457+68-0);
static const uint16 kReellist = (0+(36*144));
static const uint16 kIntext = (0+(38*2));
static const uint16 kLengthofmap = (0+(66*60));
@@ -440,6 +439,7 @@ static const uint16 kTablesize = (32);
static const uint16 kScreenwidth = (320);
static const uint16 kKeypadx = (36+112);
static const uint16 kItempicsize = (44);
+static const uint16 kLenofreelrouts = (457);
static const uint16 kDiaryy = (48+12);
static const uint16 kOpsy = (52);
static const uint16 kSymboly = (56);
@@ -458,7 +458,6 @@ static const uint16 kKeypady = (72);
static const uint16 kZoomx = (8);
static const uint16 kInventx = (80);
static const uint16 kMenux = (80+40);
-static const uint16 kLenofreelrouts = (898-441);
static const uint16 kHeaderlen = (96);
diff --git a/engines/dreamweb/people.cpp b/engines/dreamweb/people.cpp
index 801e959..4d66134 100644
--- a/engines/dreamweb/people.cpp
+++ b/engines/dreamweb/people.cpp
@@ -56,12 +56,6 @@ static void (DreamBase::*reelCallbacks[57])(ReelRoutine &) = {
&DreamBase::carParkDrip
};
-#if 0
-// TODO: Enable this when the ReelRoutine list has been moved out of the
-// data segment, all ReelCallbacks are in DreamBase, and the
-// ReelRoutine::reelPointer field is a real member.
-// See also struct ReelRoutine, clearBuffers, clearChanges, syncReelRoutine
-
static const ReelRoutine g_initialReelRoutines[] = {
// Room number and x,y
// reel pointer
@@ -126,28 +120,25 @@ static const ReelRoutine g_initialReelRoutines[] = {
{ 255,0,0, 0, 0,0,0 }
};
-void DreamBase::setupInitialReelRoutines(ReelRoutine *dest) {
- for (unsigned int i = 0; i < ARRAYSIZE(g_initialReelRoutines); ++i) {
- dest[i] = g_initialReelRoutines[i];
- if (dest[i].period == 55 && isCD() && engine->getLanguage() == Common::DE_DEU)
- dest[i].period = 65;
+void DreamBase::setupInitialReelRoutines() {
+ for (unsigned int i = 0; i < kNumReelRoutines + 1; ++i) {
+ _reelRoutines[i] = g_initialReelRoutines[i];
+ if (_reelRoutines[i].period == 55 && isCD() && engine->getLanguage() == Common::DE_DEU)
+ _reelRoutines[i].period = 65;
}
}
-#endif
void DreamBase::updatePeople() {
data.word(kListpos) = kPeoplelist;
memset(getSegment(data.word(kBuffers)).ptr(kPeoplelist, 12 * sizeof(People)), 0xff, 12 * sizeof(People));
++data.word(kMaintimer);
- ReelRoutine *r = (ReelRoutine *)data.ptr(kReelroutines, 0);
-
- for (int i = 0; r[i].reallocation != 255; ++i) {
- if (r[i].reallocation == data.byte(kReallocation) &&
- r[i].mapX == data.byte(kMapx) &&
- r[i].mapY == data.byte(kMapy)) {
+ for (int i = 0; _reelRoutines[i].reallocation != 255; ++i) {
+ if (_reelRoutines[i].reallocation == data.byte(kReallocation) &&
+ _reelRoutines[i].mapX == data.byte(kMapx) &&
+ _reelRoutines[i].mapY == data.byte(kMapy)) {
assert(reelCallbacks[i]);
- (this->*(reelCallbacks[i]))(r[i]);
+ (this->*(reelCallbacks[i]))(_reelRoutines[i]);
}
}
}
diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 4001cb1..cd32e4f 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -38,12 +38,7 @@ void syncReelRoutine(Common::Serializer &s, ReelRoutine *reel) {
s.syncAsByte(reel->reallocation);
s.syncAsByte(reel->mapX);
s.syncAsByte(reel->mapY);
-#if 1
- s.syncAsByte(reel->b3);
- s.syncAsByte(reel->b4);
-#else
s.syncAsUint16LE(reel->_reelPointer);
-#endif
s.syncAsByte(reel->period);
s.syncAsByte(reel->counter);
s.syncAsByte(reel->b7);
@@ -380,7 +375,7 @@ void DreamGenContext::actualLoad() {
data.byte(kGetback) = 1;
}
-void DreamGenContext::savePosition(unsigned int slot, const char *descbuf) {
+void DreamBase::savePosition(unsigned int slot, const char *descbuf) {
const Room ¤tRoom = g_roomData[data.byte(kLocation)];
@@ -411,7 +406,7 @@ void DreamGenContext::savePosition(unsigned int slot, const char *descbuf) {
// fill length fields in savegame file header
uint16 len[6] = { 17, kLengthofvars, kLengthofextra,
- 4*kNumchanges, 48, kLenofreelrouts };
+ 4*kNumchanges, 48, kNumReelRoutines*8+1 };
for (int i = 0; i < 6; ++i)
header.setLen(i, len[i]);
@@ -432,11 +427,11 @@ void DreamGenContext::savePosition(unsigned int slot, const char *descbuf) {
// TODO: Convert more to serializer?
Common::Serializer s(0, outSaveFile);
- for (unsigned int i = 0; 8*i < kLenofreelrouts - 1; ++i) {
- syncReelRoutine(s, (ReelRoutine *)data.ptr(kReelroutines + 8*i, 8));
+ for (unsigned int i = 0; i < kNumReelRoutines; ++i) {
+ syncReelRoutine(s, &_reelRoutines[i]);
}
// Terminator
- s.syncAsByte(*data.ptr(kReelroutines + kLenofreelrouts - 1, 1));
+ s.syncAsByte(_reelRoutines[kNumReelRoutines].reallocation);
// ScummVM data block
outSaveFile->writeUint32BE(SCUMMVM_HEADER);
@@ -460,7 +455,7 @@ void DreamGenContext::savePosition(unsigned int slot, const char *descbuf) {
delete outSaveFile;
}
-void DreamGenContext::loadPosition(unsigned int slot) {
+void DreamBase::loadPosition(unsigned int slot) {
data.word(kTimecount) = 0;
clearChanges();
@@ -500,11 +495,11 @@ void DreamGenContext::loadPosition(unsigned int slot) {
// TODO: Use serializer for more
Common::Serializer s(inSaveFile, 0);
- for (unsigned int i = 0; 8*i < kLenofreelrouts - 1; ++i) {
- syncReelRoutine(s, (ReelRoutine *)data.ptr(kReelroutines + 8*i, 8));
+ for (unsigned int i = 0; i < kNumReelRoutines; ++i) {
+ syncReelRoutine(s, &_reelRoutines[i]);
}
// Terminator
- s.syncAsByte(*data.ptr(kReelroutines + kLenofreelrouts - 1, 1));
+ s.syncAsByte(_reelRoutines[kNumReelRoutines].reallocation);
// Check if there's a ScummVM data block
if (header.len(6) == SCUMMVM_BLOCK_MAGIC_SIZE) {
@@ -686,10 +681,4 @@ void DreamGenContext::selectSlot() {
delPointer();
}
-void DreamGenContext::selectSlot2() {
- if (data.word(kMousebutton))
- data.byte(kLoadingorsave) = 2;
- selectSlot();
-}
-
} // End of namespace DreamGen
diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h
index d96469f..313f3ca 100644
--- a/engines/dreamweb/structs.h
+++ b/engines/dreamweb/structs.h
@@ -168,18 +168,10 @@ struct ReelRoutine {
uint8 reallocation;
uint8 mapX;
uint8 mapY;
-#if 0
uint16 _reelPointer;
uint16 reelPointer() const { return _reelPointer; }
void setReelPointer(uint16 v) { _reelPointer = v; }
void incReelPointer() { _reelPointer++; }
-#else
- uint8 b3;
- uint8 b4;
- uint16 reelPointer() const { return READ_LE_UINT16(&b3); }
- void setReelPointer(uint16 v) { WRITE_LE_UINT16(&b3, v); }
- void incReelPointer() { setReelPointer(reelPointer() + 1); }
-#endif
uint8 period;
uint8 counter;
uint8 b7;
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 4ac13ea..98d961e 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -4540,10 +4540,6 @@ void DreamBase::clearBuffers() {
memset(getSegment(data.word(kExtras)).ptr(0, kLengthofextra), 0xFF, kLengthofextra);
- // TODO: Remove this line
- // (once the ReelRoutines are no longer in the data segment)
- memcpy(getSegment(data.word(kBuffers)).ptr(kInitialreelrouts, kLenofreelrouts), data.ptr(kReelroutines, kLenofreelrouts), kLenofreelrouts);
-
memcpy(getSegment(data.word(kBuffers)).ptr(kInitialvars, kLengthofvars), data.ptr(kStartvars, kLengthofvars), kLengthofvars);
clearChanges();
@@ -4552,9 +4548,7 @@ void DreamBase::clearBuffers() {
void DreamBase::clearChanges() {
memset(getSegment(data.word(kBuffers)).ptr(kListofchanges, 4*kNumchanges), 0xFF, 4*kNumchanges);
- // TODO: Call setupInitialReelRoutines instead
- // (once the ReelRoutines are no longer in the data segment)
- memcpy(data.ptr(kReelroutines, kLenofreelrouts), getSegment(data.word(kBuffers)).ptr(kInitialreelrouts, kLenofreelrouts), kLenofreelrouts);
+ setupInitialReelRoutines();
memcpy(data.ptr(kStartvars, kLengthofvars), getSegment(data.word(kBuffers)).ptr(kInitialvars, kLengthofvars), kLengthofvars);
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index de03e45..3f38ad4 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -174,8 +174,6 @@
void showSecondUse();
void actualSave();
void actualLoad();
- void loadPosition(unsigned int slot);
- void savePosition(unsigned int slot, const char *descbuf);
void restoreAll();
void enterSymbol();
void viewFolder();
More information about the Scummvm-git-logs
mailing list