[Scummvm-cvs-logs] SF.net SVN: scummvm: [24726] scummvm/trunk/engines/scumm/imuse/imuse.cpp
eriktorbjorn at users.sourceforge.net
eriktorbjorn at users.sourceforge.net
Thu Nov 16 18:08:32 CET 2006
Revision: 24726
http://svn.sourceforge.net/scummvm/?rev=24726&view=rev
Author: eriktorbjorn
Date: 2006-11-16 09:08:31 -0800 (Thu, 16 Nov 2006)
Log Message:
-----------
Applied my own patch #1594924 to work around bug #1324106 ("MI2 VGA: Music as
Rapp is instantiating isn't synchronized"). I don't know if our timing is off,
or if it's just a case of overly optimistic scripting, but the pause / unpause
music instructions are issued in the wrong order.
Modified Paths:
--------------
scummvm/trunk/engines/scumm/imuse/imuse.cpp
Modified: scummvm/trunk/engines/scumm/imuse/imuse.cpp
===================================================================
--- scummvm/trunk/engines/scumm/imuse/imuse.cpp 2006-11-15 23:00:41 UTC (rev 24725)
+++ scummvm/trunk/engines/scumm/imuse/imuse.cpp 2006-11-16 17:08:31 UTC (rev 24726)
@@ -960,6 +960,8 @@
_trigger_count--;
_queue_cleared = false;
do {
+ bool skip_cmd = false;
+
pos = (pos + 1) % ARRAYSIZE(_cmd_queue);
if (_queue_pos == pos)
break;
@@ -968,8 +970,30 @@
break;
_queue_end = pos;
- doCommand_internal(p[0], p[1], p[2], p[3], p[4], p[5], p[6], 0);
+ // WORKAROUND for bug #1324106. When playing the "flourishes"
+ // as Rapp's body appears from his ashes, MI2 sets up a trigger
+ // to pause the music, in case the animation plays too slowly,
+ // and then the music is manually unpaused for the next part of
+ // the animation.
+ //
+ // However, with ScummVM the animation finishes slightly too
+ // quickly instead, and the pause command is run *after* the
+ // unpause, so the whole thing is thrown out of sync. I think
+ // we can assume that any platform running ScummVM is fast
+ // enough to keep up with the animation here, so ignore the
+ // pause command.
+ //
+ // Since setting up a trigger is a multi-step operation (first
+ // the trigger, and then the commands), it's probably easiest
+ // to catch it here.
+ if (_game_id == GID_MONKEY2 && p[0] == 262 && p[1] == 183 && p[2] == 0) {
+ skip_cmd = true;
+ }
+
+ if (!skip_cmd)
+ doCommand_internal(p[0], p[1], p[2], p[3], p[4], p[5], p[6], 0);
+
if (_queue_cleared)
return;
pos = _queue_end;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list