aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Menshakov2011-06-19 15:49:49 +0400
committerVladimir Menshakov2011-06-19 15:50:22 +0400
commit4ede98d748d1d3a52714cf84da17ccd83b50d35b (patch)
treee8955461b497d48d3c16ebf5e58372a68f4802d5
parent41159c68ab35abea23e95974cedc286f530b11c9 (diff)
downloadscummvm-rg350-4ede98d748d1d3a52714cf84da17ccd83b50d35b.tar.gz
scummvm-rg350-4ede98d748d1d3a52714cf84da17ccd83b50d35b.tar.bz2
scummvm-rg350-4ede98d748d1d3a52714cf84da17ccd83b50d35b.zip
DREAMWEB: Removed getback = 4 hack, added clean exit from every menus and credits
-rw-r--r--devtools/tasmrecover/dreamweb/dreamweb.asm22
-rw-r--r--devtools/tasmrecover/dreamweb/saveload.asm35
-rw-r--r--devtools/tasmrecover/dreamweb/titles.asm3
-rw-r--r--engines/dreamweb/dreamgen.cpp47
-rw-r--r--engines/dreamweb/dreamgen.h1
-rw-r--r--engines/dreamweb/dreamweb.cpp1
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() {