aboutsummaryrefslogtreecommitdiff
path: root/string.cpp
diff options
context:
space:
mode:
authorJames Brown2002-07-31 13:33:07 +0000
committerJames Brown2002-07-31 13:33:07 +0000
commit3ab2d71154172f6f900f3c1b2e04aad7e3b44b4e (patch)
treebc78574d6a59c1d1a470092f985b3a0fd6e5fb2e /string.cpp
parent30cd1e43d2b6b74d56d19b21f114542b961edad5 (diff)
downloadscummvm-rg350-3ab2d71154172f6f900f3c1b2e04aad7e3b44b4e.tar.gz
scummvm-rg350-3ab2d71154172f6f900f3c1b2e04aad7e3b44b4e.tar.bz2
scummvm-rg350-3ab2d71154172f6f900f3c1b2e04aad7e3b44b4e.zip
Fix by yot to prevent two Zak freezes. This may be a fixme.
Zak is now pretty much bugless except for a walkbox issue and some sound stuff. svn-id: r4683
Diffstat (limited to 'string.cpp')
-rw-r--r--string.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/string.cpp b/string.cpp
index 8a64bdc716..df90fd8c52 100644
--- a/string.cpp
+++ b/string.cpp
@@ -203,7 +203,11 @@ void Scumm::CHARSET_1()
if (!_haveMsg)
return;
- if (!(_features & GF_AFTER_V7)) {
+ // FIXME: This Zak check fixes several hangs (Yak hang, and opening
+ // 'secret room while walking' hang. It doesn't do the camera check
+ // when the talk target isn't an actor. The question is, can we make
+ // this a more general case? Does it really need to be Zak specific?
+ if (!(_features & GF_AFTER_V7) && !(_gameId==GID_ZAK256 && _vars[VAR_TALK_ACTOR] == 0xFF)) {
if ((camera._dest.x >> 3) != (camera._cur.x >> 3) || camera._cur.x != camera._last.x)
return;
}