From 09161504210d3a659f99d804b9a326fb441568bd Mon Sep 17 00:00:00 2001 From: sluicebox Date: Tue, 7 Jan 2020 02:13:55 -0800 Subject: SCI32: Ignore invalid GK2 audio maps in all versions Fixes #11014, #11270 --- engines/sci/resource_audio.cpp | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/engines/sci/resource_audio.cpp b/engines/sci/resource_audio.cpp index c825196d93..73e10eb1ee 100644 --- a/engines/sci/resource_audio.cpp +++ b/engines/sci/resource_audio.cpp @@ -513,36 +513,23 @@ int ResourceManager::readAudioMapSCI11(IntMapResourceSource *map) { continue; } + // GK2 has invalid audio36 map entries on CD 1 of the German + // version and CD 6 of all versions. All are safe to ignore + // because their content doesn't apply to the disc's chapter. if (g_sci->getGameId() == GID_GK2) { - // At least version 1.00 of the US release, and the German - // release, of GK2 have multiple invalid audio36 map entries on - // CD 6 - if (map->_volumeNumber == 6 && offset + syncSize >= srcSize) { - bool skip; - switch (g_sci->getLanguage()) { - case Common::EN_ANY: - skip = (map->_mapNumber == 22 || map->_mapNumber == 160); - break; - case Common::DE_DEU: - skip = (map->_mapNumber == 22); - break; - default: - skip = false; - } - - if (skip) { - continue; - } + // Map 2020 on CD 1 only exists in localized versions and + // contains inventory messages from later chapters. + if (map->_volumeNumber == 1 && + map->_mapNumber == 2020) { + continue; } - // Map 2020 on CD 1 of the German release of GK2 is invalid. - // This content does not appear to ever be used by the game (it - // does not even exist in the US release), and there is a - // correct copy of it on CD 6, so just ignore the bad copy on - // CD 1 - if (g_sci->getLanguage() == Common::DE_DEU && - map->_volumeNumber == 1 && - map->_mapNumber == 2020) { + // Maps 22 and 160 on CD 6 appear in various broken forms + // in English and apparently every localized version. + // These messages are for Grace's notebook and castle + // secret passage rooms which aren't in chapter 6. + if (map->_volumeNumber == 6 && + (map->_mapNumber == 22 || map->_mapNumber == 160)) { continue; } } -- cgit v1.2.3