From 613a203c8a8ac6175988938fbbceaa47ee8b2877 Mon Sep 17 00:00:00 2001 From: Vladimir Menshakov Date: Sun, 19 Jun 2011 16:56:19 +0400 Subject: DREAMWEB: Added crash workaround --- devtools/tasmrecover/dreamweb/object.asm | 4 +++- engines/dreamweb/dreamgen.cpp | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/devtools/tasmrecover/dreamweb/object.asm b/devtools/tasmrecover/dreamweb/object.asm index 93710d3c23..d0465e09bc 100644 --- a/devtools/tasmrecover/dreamweb/object.asm +++ b/devtools/tasmrecover/dreamweb/object.asm @@ -2583,8 +2583,10 @@ findlenextext: mov cl,[es:si] sub bx,extext push bx ax sub cx,bx + cmp cx, 0xffff; BIG FIXME! Find out why this is happening + jz $1 rep movsb - pop bx +$1: pop bx sub extextpos,bx pop si diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 7c9c88136c..d4fb4441f6 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -8302,7 +8302,11 @@ findlenextext: push(bx); push(ax); _sub(cx, bx); + _cmp(cx, 0xffff); + if (flags.z()) + goto _tmp1; _movsb(cx, true); +_tmp1: bx = pop(); _sub(data.word(kExtextpos), bx); si = pop(); @@ -9536,6 +9540,9 @@ void DreamGenContext::selectlocation() { playchannel0(); data.byte(kNewlocation) = 255; select: + _cmp(data.byte(kQuitrequested), 0); + if (!flags.z()) + goto quittravel; delpointer(); readmouse(); showpointer(); -- cgit v1.2.3