aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorTravis Howell2006-02-27 23:25:07 +0000
committerTravis Howell2006-02-27 23:25:07 +0000
commit86c913a5f4770b839c9774648bc8fee305091e54 (patch)
treec8b5713dce1bbf08ef94f20ef2baee5a07cc00bf /engines/scumm
parentf3106feaf524d065eb495b9bd423011171623fcb (diff)
downloadscummvm-rg350-86c913a5f4770b839c9774648bc8fee305091e54.tar.gz
scummvm-rg350-86c913a5f4770b839c9774648bc8fee305091e54.tar.bz2
scummvm-rg350-86c913a5f4770b839c9774648bc8fee305091e54.zip
Update comment for SO_WAIT_FOR_TURN workaround in The Dig, this is due to script bugs. SO_WAIT_FOR_TURN is never used by FT r COMI either, so remove game check.
svn-id: r20962
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/script_v6.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp
index 9aa73d3f01..56535d3210 100644
--- a/engines/scumm/script_v6.cpp
+++ b/engines/scumm/script_v6.cpp
@@ -2231,19 +2231,15 @@ void ScummEngine_v6::o6_wait() {
break;
return;
case 232: // SO_WAIT_FOR_TURN
- // FIXME: This opcode is really odd. It's used a lot in The Dig.
- // But sometimes it receives the actor ID as params, and sometimes an
- // angle. However in (almost?) all cases, just before calling it, _curActor
- // is set, so we can use it. I tried to add code that detects if an angle
- // is passed, and if so, wait till that angle is reached, but that leads to hangs.
- // Disassembly doesn't show anything special for that opcode, though.
+ // WORKAROUND for bug #744441: An angle will often be received as the
+ // actor numnber due to script bugs in The Dig. In all cases where this
+ // occurs, _curActor is set just before it, so we can use it instead.
//
// For now, if the value passed in is divisible by 45, assume it is an
- // angle, and use _curActor as the actor to wait for. See bug report #744441
+ // angle, and use _curActor as the actor to wait for.
offs = fetchScriptWordSigned();
actnum = pop();
- if (_game.id == GID_DIG && actnum % 45 == 0) {
- warning("Working around invalid actor num %d", actnum);
+ if (actnum % 45 == 0) {
actnum = _curActor;
}
a = derefActor(actnum, "o6_wait:232b");