diff options
| -rw-r--r-- | devtools/tasmrecover/dreamweb/dreamweb.asm | 22 | ||||
| -rw-r--r-- | devtools/tasmrecover/dreamweb/saveload.asm | 35 | ||||
| -rw-r--r-- | devtools/tasmrecover/dreamweb/titles.asm | 3 | ||||
| -rw-r--r-- | engines/dreamweb/dreamgen.cpp | 47 | ||||
| -rw-r--r-- | engines/dreamweb/dreamgen.h | 1 | ||||
| -rw-r--r-- | engines/dreamweb/dreamweb.cpp | 1 | 
6 files changed, 87 insertions, 22 deletions
| diff --git a/devtools/tasmrecover/dreamweb/dreamweb.asm b/devtools/tasmrecover/dreamweb/dreamweb.asm index 5d2a60a0c7..a3c165aaf9 100644 --- a/devtools/tasmrecover/dreamweb/dreamweb.asm +++ b/devtools/tasmrecover/dreamweb/dreamweb.asm @@ -135,13 +135,24 @@ Dreamweb	proc	near  dodecisions:	call	cls  	call	setmode  	call	decide + +	cmp quitrequested, 0 +	jnz exitgame +  	cmp	getback,4  	jz	mainloop  	call	titles + +	cmp quitrequested, 0 +	jnz exitgame +  	call	credits -playgame:	call	clearchanges +playgame: +	cmp quitrequested, 0 +	jnz exitgame +	call	clearchanges  	call	setmode  	call	loadpalfromiff  	mov	location,255 @@ -196,9 +207,8 @@ alreadyloaded:	mov	newlocation,255  mainloop:  	cmp quitrequested, 0 -	jz $1 -	ret -$1: +	jnz exitgame +  	call	screenupdate  	cmp	wongame,0  	jnz	endofgame @@ -240,7 +250,9 @@ endofgame:	call	clearbeforeload  	call	hangon  	call	endgame  	jmp	quickquit2 -	 + +exitgame: +	ret  	endp diff --git a/devtools/tasmrecover/dreamweb/saveload.asm b/devtools/tasmrecover/dreamweb/saveload.asm index f10d87149d..9a34a763f2 100644 --- a/devtools/tasmrecover/dreamweb/saveload.asm +++ b/devtools/tasmrecover/dreamweb/saveload.asm @@ -109,7 +109,11 @@ restartops:	call	showopbox  	call	showmainops  	call	worktoscreenm  donefirstops:	mov	getback,0 -waitops:	call	readmouse +waitops:	 +	cmp quitrequested, 0 +	jnz justret + +	call	readmouse  	call	showpointer  	call	vsync  	call	dumppointer @@ -260,7 +264,11 @@ doload: 	mov	loadingorsave,1  	call	namestoold  	mov	getback,0 -loadops:	call	delpointer +loadops:	 +	cmp quitrequested, 0 +	jnz quitloaded + +	call	delpointer  	call	readmouse  	call	showpointer  	call	vsync @@ -354,7 +362,11 @@ dodiscops:	call	scanfornames  	call	worktoscreenm  	mov	getback,0 -discopsloop:	call	delpointer +discopsloop: +	cmp quitrequested, 0 +	jnz quitdiscops + +	call	delpointer  	call	readmouse  	call	showpointer  	call	vsync @@ -364,6 +376,7 @@ discopsloop:	call	delpointer  	call	checkcoords  	cmp	getback,0  	jz	discopsloop +quitdiscops:  	ret  discopslist:	dw	opsx+59,opsx+114,opsy+30,opsy+76,loadgame @@ -411,7 +424,11 @@ dosave: 	mov	loadingorsave,2  	mov	getback,0 -saveops:	call	delpointer +saveops: +	cmp quitrequested, 0 +	jnz quitsavegame + +	call	delpointer  	call	checkinput  	call	readmouse  	call	showpointer @@ -423,6 +440,7 @@ saveops:	call	delpointer  	call	checkcoords  	cmp	getback,0  	jz	saveops +quitsavegame:  	ret  savelist:	dw	opsx+176,opsx+192,opsy+60,opsy+76,getbacktoops @@ -1398,7 +1416,12 @@ Decide	proc	near  	call	fadescreenup  	mov	getback,0 -waitdecide:	call	readmouse +waitdecide:	 +	cmp quitrequested, 0 +	jz $1 +	ret +$1: +	call	readmouse  	call	showpointer  	call	vsync  	call	dumppointer @@ -1482,6 +1505,8 @@ alreadyloadold:	mov	ax,mousebutton  	call	doload  	cmp	getback,4  	jz	noloadold +	cmp quitrequested, 0 +	jnz noloadold  	call	showdecisions  	call	worktoscreenm  	mov	getback,0 diff --git a/devtools/tasmrecover/dreamweb/titles.asm b/devtools/tasmrecover/dreamweb/titles.asm index a47f31a327..acaeefa995 100644 --- a/devtools/tasmrecover/dreamweb/titles.asm +++ b/devtools/tasmrecover/dreamweb/titles.asm @@ -9,7 +9,10 @@ Titles	proc	near  	else  	call	clearpalette  	call	biblequote +	cmp quitrequested, 0 +	jnz titlesearly  	call	intro +titlesearly:  	ret  	endif diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 35721d3d4b..7c9c88136c 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -4165,11 +4165,6 @@ deloneloop:  		goto deloneloop;  } -void DreamGenContext::width160() { -	STACK_CHECK; -	_movsw(161); -} -  void DreamGenContext::doblocks() {  	STACK_CHECK;  	es = data.word(kWorkspace); @@ -5169,6 +5164,9 @@ void DreamGenContext::titles() {  	STACK_CHECK;  	clearpalette();  	biblequote(); +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		return /* (titlesearly) */;  	intro();  } @@ -15958,6 +15956,9 @@ restartops:  donefirstops:  	data.byte(kGetback) = 0;  waitops: +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		goto justret;  	readmouse();  	showpointer();  	vsync(); @@ -16083,6 +16084,9 @@ doload:  	namestoold();  	data.byte(kGetback) = 0;  loadops: +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		return /* (quitloaded) */;  	delpointer();  	readmouse();  	showpointer(); @@ -16164,6 +16168,9 @@ dodiscops:  	worktoscreenm();  	data.byte(kGetback) = 0;  discopsloop: +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		return /* (quitdiscops) */;  	delpointer();  	readmouse();  	showpointer(); @@ -16210,6 +16217,9 @@ dosave:  	data.word(kBufferout) = 0;  	data.byte(kGetback) = 0;  saveops: +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		return /* (quitsavegame) */;  	delpointer();  	checkinput();  	readmouse(); @@ -16833,6 +16843,11 @@ void DreamGenContext::decide() {  	fadescreenup();  	data.byte(kGetback) = 0;  waitdecide: +	_cmp(data.byte(kQuitrequested),  0); +	if (flags.z()) +		goto _tmp1; +	return; +_tmp1:  	readmouse();  	showpointer();  	vsync(); @@ -16895,6 +16910,9 @@ void DreamGenContext::doload() {  	namestoold();  	data.byte(kGetback) = 0;  loadops: +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		return /* (quitloaded) */;  	delpointer();  	readmouse();  	showpointer(); @@ -16945,6 +16963,9 @@ alreadyloadold:  	_cmp(data.byte(kGetback), 4);  	if (flags.z())  		return /* (noloadold) */; +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		return /* (noloadold) */;  	showdecisions();  	worktoscreenm();  	data.byte(kGetback) = 0; @@ -21319,12 +21340,21 @@ dodecisions:  	cls();  	setmode();  	decide(); +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		return /* (exitgame) */;  	_cmp(data.byte(kGetback), 4);  	if (flags.z())  		goto mainloop;  	titles(); +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		return /* (exitgame) */;  	credits();  playgame: +	_cmp(data.byte(kQuitrequested),  0); +	if (!flags.z()) +		return /* (exitgame) */;  	clearchanges();  	setmode();  	loadpalfromiff(); @@ -21364,10 +21394,8 @@ loadnew:  	data.byte(kCommandtype) = 255;  mainloop:  	_cmp(data.byte(kQuitrequested),  0); -	if (flags.z()) -		goto _tmp1; -	return; -_tmp1: +	if (!flags.z()) +		return /* (exitgame) */;  	screenupdate();  	_cmp(data.byte(kWongame), 0);  	if (!flags.z()) @@ -22120,7 +22148,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {  		case 0xc20c: doshake(); break;  		case 0xc210: zoom(); break;  		case 0xc214: delthisone(); break; -		case 0xc224: width160(); break;  		case 0xc228: doblocks(); break;  		case 0xc22c: showframe(); break;  		case 0xc230: frameoutv(); break; diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 94b7607087..d7cf4677e3 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -964,7 +964,6 @@ public:  	void createpanel();  	void turnpathon();  	void showmainops(); -	void width160dosreturn();  	void madmanstelly();  	void constant();  	void loadroomssample(); diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp index 0dc25afab0..7e1b9833dc 100644 --- a/engines/dreamweb/dreamweb.cpp +++ b/engines/dreamweb/dreamweb.cpp @@ -102,7 +102,6 @@ void DreamWebEngine::waitForVSync() {  void DreamWebEngine::quit() {  	_context.data.byte(DreamGen::DreamGenContext::kQuitrequested) = 1;  	_context.data.byte(DreamGen::DreamGenContext::kLasthardkey) = 1; -	_context.data.byte(DreamGen::DreamGenContext::kGetback) = 4;  }  void DreamWebEngine::processEvents() { | 
