From 4f8cf19292ed5d76b0e67a77331ae7d5a2112955 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Sat, 12 Jan 2008 08:04:00 +0000 Subject: [PATCH] Commit patch #1869749 "KYRA: HoF Towns Audio fix". svn-id: r30438 --- engines/kyra/sound.cpp | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/engines/kyra/sound.cpp b/engines/kyra/sound.cpp index 5571e4631ab..4a62671df30 100644 --- a/engines/kyra/sound.cpp +++ b/engines/kyra/sound.cpp @@ -469,20 +469,32 @@ void KyraEngine::snd_playWanderScoreViaMap(int command, int restart) { // XXX //} - assert(command*2+1 < _trackMapSize); - if (_curMusicTheme != _trackMap[command*2]) { - if (_trackMap[command*2] != -1 && _trackMap[command*2] != -2) - snd_playTheme(_trackMap[command*2]); - } - - if (command != 1) { - if (_lastMusicCommand != command) { - _sound->haltTrack(); - _sound->playTrack(_trackMap[command*2+1]); + if (_flags.platform == Common::kPlatformPC) { + assert(command*2+1 < _trackMapSize); + if (_curMusicTheme != _trackMap[command*2]) { + if (_trackMap[command*2] != -1 && _trackMap[command*2] != -2) + snd_playTheme(_trackMap[command*2]); } - } else { - _sound->beginFadeOut(); - } + + if (command != 1) { + if (_lastMusicCommand != command) { + _sound->haltTrack(); + _sound->playTrack(_trackMap[command*2+1]); + } + } else { + _sound->beginFadeOut(); + } + } else if (_flags.platform == Common::kPlatformFMTowns || _flags.platform == Common::kPlatformPC98) { + if (command == -1) { + _sound->haltTrack(); + } else { + assert(command*2+1 < _trackMapSize); + if (_trackMap[command*2] != -2 && command != _lastMusicCommand) { + _sound->haltTrack(); + _sound->playTrack(command); + } + } + } _lastMusicCommand = command; }