diff options
| -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);  | 
