From 72965b6406adbd701b3fca00029cfdb5d71e8628 Mon Sep 17 00:00:00 2001 From: Vladimir Menshakov Date: Fri, 24 Jun 2011 00:01:59 +0400 Subject: DREAMWEB: Fixed quit() from dialogue --- devtools/tasmrecover/dreamweb/talk.asm | 4 ++++ engines/dreamweb/dreamgen.cpp | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/devtools/tasmrecover/dreamweb/talk.asm b/devtools/tasmrecover/dreamweb/talk.asm index 6bee4409b7..b6b96313f7 100644 --- a/devtools/tasmrecover/dreamweb/talk.asm +++ b/devtools/tasmrecover/dreamweb/talk.asm @@ -28,6 +28,8 @@ waittalk: call delpointer mov getback,0 mov bx,offset cs:talklist call checkcoords + cmp quitrequested, 0 + jnz finishtalk cmp getback,0 jz waittalk finishtalk: mov bx,persondata @@ -490,6 +492,8 @@ hangloopq: push cx bx pop bx cx cmp getback,1 jz quitconv + cmp quitrequested, 0 + jnz quitconv cmp speechloaded,1 jnz notspeaking cmp ch1playing,255 diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 2485b5ad6a..e92cd83c2b 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -9065,9 +9065,13 @@ waittalk: data.byte(kGetback) = 0; bx = 2660; checkcoords(); + _cmp(data.byte(kQuitrequested), 0); + if (!flags.z()) + goto finishtalk; _cmp(data.byte(kGetback), 0); if (flags.z()) goto waittalk; +finishtalk: bx = data.word(kPersondata); es = cs; _cmp(data.byte(kTalkpos), 4); @@ -9360,6 +9364,9 @@ hangloopq: _cmp(data.byte(kGetback), 1); if (flags.z()) goto quitconv; + _cmp(data.byte(kQuitrequested), 0); + if (!flags.z()) + goto quitconv; _cmp(data.byte(kSpeechloaded), 1); if (!flags.z()) goto notspeaking; -- cgit v1.2.3