aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBertrand Augereau2011-08-29 14:54:21 +0200
committerBertrand Augereau2011-08-29 15:19:22 +0200
commit3d85a4974bfd93a69fa51f54b12c0728509450fa (patch)
treebbf7b84912fa5b2e64cd059ef228b07e2f7a1ab7
parent3623ae35efd6269c862ab894ef03fbeb7704d765 (diff)
downloadscummvm-rg350-3d85a4974bfd93a69fa51f54b12c0728509450fa.tar.gz
scummvm-rg350-3d85a4974bfd93a69fa51f54b12c0728509450fa.tar.bz2
scummvm-rg350-3d85a4974bfd93a69fa51f54b12c0728509450fa.zip
DREAMWEB: 'showgamereel' gets a ReelRoutine* as parameter
-rw-r--r--engines/dreamweb/sprite.cpp12
-rw-r--r--engines/dreamweb/structs.h2
-rw-r--r--engines/dreamweb/stubs.cpp4
-rw-r--r--engines/dreamweb/stubs.h1
4 files changed, 13 insertions, 6 deletions
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index 95d8321ad1..f555daa626 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -549,16 +549,16 @@ void DreamGenContext::showreelframe(Reel *reel) {
}
void DreamGenContext::showgamereel() {
- uint16 reelpointer = es.word(bx+3);
+ showgamereel((ReelRoutine *)es.ptr(bx, sizeof(ReelRoutine)));
+}
+
+void DreamGenContext::showgamereel(ReelRoutine *routine) {
+ uint16 reelpointer = routine->reelPointer();
if (reelpointer >= 512)
return;
data.word(kReelpointer) = reelpointer;
- push(es);
- push(bx);
plotreel();
- bx = pop();
- es = pop();
- es.word(bx+3) = data.word(kReelpointer);
+ routine->setReelPointer(data.word(kReelpointer));
}
const Frame *DreamGenContext::getreelframeax(uint16 frame) {
diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h
index 1cb52eccea..804684ad33 100644
--- a/engines/dreamweb/structs.h
+++ b/engines/dreamweb/structs.h
@@ -168,6 +168,8 @@ struct ReelRoutine {
uint8 mapY;
uint8 b3;
uint8 b4;
+ uint16 reelPointer() const { return READ_LE_UINT16(&b3); }
+ void setReelPointer(uint16 v) { WRITE_LE_UINT16(&b3, v); }
uint8 b5;
uint8 b6;
uint8 b7;
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 92a2a3d139..d56394ea3f 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -935,7 +935,11 @@ void DreamGenContext::plotreel() {
showreelframe(reel);
++reel;
}
+ push(es);
+ push(bx);
soundonreels();
+ bx = pop();
+ es = pop();
}
void DreamGenContext::crosshair() {
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 746855b18d..2d5d45a692 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -99,6 +99,7 @@
void findsource();
Frame *findsourceCPP();
void showgamereel();
+ void showgamereel(ReelRoutine *routine);
void showreelframe();
void showreelframe(Reel *reel);
const Frame *getreelframeax(uint16 frame);