diff options
author | Bertrand Augereau | 2011-08-29 14:54:21 +0200 |
---|---|---|
committer | Bertrand Augereau | 2011-08-29 15:19:22 +0200 |
commit | 3d85a4974bfd93a69fa51f54b12c0728509450fa (patch) | |
tree | bbf7b84912fa5b2e64cd059ef228b07e2f7a1ab7 | |
parent | 3623ae35efd6269c862ab894ef03fbeb7704d765 (diff) | |
download | scummvm-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.cpp | 12 | ||||
-rw-r--r-- | engines/dreamweb/structs.h | 2 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 4 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 |
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); |