From b97c9ef136436112e3a58e5fbe4a2b59242d4152 Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Fri, 11 Jan 2008 22:59:13 +0000 Subject: Work around bug #1324106 again. Apparently, I was mistaken the other day when I said the timer changes fixed it. This time, I've made the workaround a bit simpler to understand, though. svn-id: r30429 --- engines/scumm/imuse/imuse.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'engines/scumm/imuse/imuse.cpp') diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index 0e21e9a24b..2d20b72db6 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -871,7 +871,23 @@ int32 IMuseInternal::doCommand_internal(int numargs, int a[]) { player->setDetune(a[2]); return 0; case 6: - player->setSpeed(a[2]); + // WORKAROUND for bug #1324106. When playing the + // "flourishes" as Rapp's body appears from his ashes, + // MI2 sets up triggers to pause the music, in case the + // animation plays too slowly, and then the music is + // manually unpaused for the next part of the music. + // + // In ScummVM, the animation finishes slightly too + // quickly, and the pause command is run *after* the + // unpause command. So we work around it by ignoring + // all attempts at pausing this particular sound. + // + // I could have sworn this wasn't needed after the + // recent timer change, but now it looks like it's + // still needed after all. + if (_game_id != GID_MONKEY2 || player->getID() != 183 || a[2] != 0) { + player->setSpeed(a[2]); + } return 0; case 7: return player->jump(a[2], a[3], a[4]) ? 0 : -1; -- cgit v1.2.3