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() { |