diff options
Diffstat (limited to 'engines/sci/sci.cpp')
-rw-r--r-- | engines/sci/sci.cpp | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index 065565d8de..f32e0e16f9 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -38,6 +38,7 @@ #include "sci/engine/state.h" #include "sci/engine/kernel.h" #include "sci/engine/script.h" // for script_adjust_opcode_formats +#include "sci/engine/script_patches.h" #include "sci/engine/selector.h" // for SELECTOR #include "sci/sound/audio.h" @@ -136,7 +137,7 @@ SciEngine::SciEngine(OSystem *syst, const ADGameDescription *desc, SciGameId gam SearchMan.addSubDirectoryMatching(gameDataDir, "duk"); // Duck movie files in Phantasmagoria 2 SearchMan.addSubDirectoryMatching(gameDataDir, "Robot Folder"); // Mac robot files SearchMan.addSubDirectoryMatching(gameDataDir, "Sound Folder"); // Mac audio files - SearchMan.addSubDirectoryMatching(gameDataDir, "Voices Folder"); // Mac audio36 files + SearchMan.addSubDirectoryMatching(gameDataDir, "Voices Folder", 0, 2, true); // Mac audio36 files (recursive for Torin) SearchMan.addSubDirectoryMatching(gameDataDir, "Voices"); // Mac audio36 files SearchMan.addSubDirectoryMatching(gameDataDir, "VMD Folder"); // Mac VMD files @@ -184,6 +185,7 @@ SciEngine::~SciEngine() { delete[] _opcode_formats; + delete _scriptPatcher; delete _resMan; // should be deleted last g_sci = 0; } @@ -217,8 +219,9 @@ Common::Error SciEngine::run() { // Add the after market GM patches for the specified game, if they exist _resMan->addNewGMPatch(_gameId); _gameObjectAddress = _resMan->findGameObject(); - - SegManager *segMan = new SegManager(_resMan); + + _scriptPatcher = new ScriptPatcher(); + SegManager *segMan = new SegManager(_resMan, _scriptPatcher); // Initialize the game screen _gfxScreen = new GfxScreen(_resMan); @@ -883,12 +886,12 @@ void SciEngine::syncSoundSettings() { } } -// used by Script Patcher. Used to find out, if Laura Bow 2 needs patching for Speech+Subtitles - or not +// used by Script Patcher. Used to find out, if Laura Bow 2/King's Quest 6 need patching for Speech+Subtitles - or not bool SciEngine::speechAndSubtitlesEnabled() { bool subtitlesOn = ConfMan.getBool("subtitles"); bool speechOn = !ConfMan.getBool("speech_mute"); - if (subtitlesOn && speechOn) + if (isCD() && subtitlesOn && speechOn) return true; return false; } @@ -910,13 +913,10 @@ void SciEngine::syncIngameAudioOptions() { case GID_FREDDYPHARKAS: case GID_ECOQUEST: case GID_LSL6: - // TODO: The following need script patches for simultaneous speech and subtitles - // GID_KQ6 + case GID_LAURABOW2: + case GID_KQ6: _gamestate->variables[VAR_GLOBAL][90] = make_reg(0, 3); // speech + subtitles break; - case GID_LAURABOW2: - // Laura Bow 2 gets patched when speech and subtitles are enabled - // It then does both, when the user has "speech" selected. That's why we select speech here default: // Game does not support speech and subtitles, set it to speech _gamestate->variables[VAR_GLOBAL][90] = make_reg(0, 2); // speech @@ -930,8 +930,6 @@ void SciEngine::updateScummVMAudioOptions() { // depending on the in-game settings if (isCD() && getSciVersion() == SCI_VERSION_1_1) { uint16 ingameSetting = _gamestate->variables[VAR_GLOBAL][90].getOffset(); - bool subtitlesOn = ConfMan.getBool("subtitles"); - bool speechOn = !ConfMan.getBool("speech_mute"); switch (ingameSetting) { case 1: @@ -941,16 +939,6 @@ void SciEngine::updateScummVMAudioOptions() { break; case 2: // speech - switch (_gameId) { - case GID_LAURABOW2: - // We don't sync "speech" for Laura Bow 2 in case the user choose "both" in the setting - // Because "speech" (2) within SCI means "speech + subtitles" for Laura Bow 2 - if (subtitlesOn && speechOn) - return; - break; - default: - break; - } ConfMan.setBool("subtitles", false); ConfMan.setBool("speech_mute", false); break; |