From 67acdb628bf371f04b7387c61dc0f669360abe40 Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Fri, 30 Sep 2016 19:59:05 -0500 Subject: SCI32: Sync subtitle text speed with ScummVM GUI --- engines/sci/engine/vm.cpp | 7 +++++++ engines/sci/engine/vm.h | 1 + engines/sci/sci.cpp | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index 9d8c5f7fc6..82de957387 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -20,6 +20,7 @@ * */ +#include "common/config-manager.h" #include "common/debug.h" #include "common/debug-channels.h" @@ -209,6 +210,12 @@ static void write_var(EngineState *s, int type, int index, reg_t value) { g_sci->updateScummVMAudioOptions(); } } + +#ifdef ENABLE_SCI32 + if (type == VAR_GLOBAL && index == kGlobalVarTextSpeed && getSciVersion() >= SCI_VERSION_2) { + ConfMan.setInt("talkspeed", (8 - value.toSint16()) * 255 / 8); + } +#endif } } diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h index a4ac16ea32..dd66d9d52c 100644 --- a/engines/sci/engine/vm.h +++ b/engines/sci/engine/vm.h @@ -148,6 +148,7 @@ enum GlobalVar { kGlobalVarScore = 15, kGlobalVarFastCast = 84, // SCI16 kGlobalVarMessageType = 90, + kGlobalVarTextSpeed = 94, // SCI32; 0 is fastest, 8 is slowest kGlobalVarShivers1Score = 349 }; diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index 168e3c49ba..246c031c06 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -1121,6 +1121,12 @@ void SciEngine::syncIngameAudioOptions() { bool subtitlesOn = ConfMan.getBool("subtitles"); bool speechOn = !ConfMan.getBool("speech_mute"); +#ifdef ENABLE_SCI32 + if (getSciVersion() >= SCI_VERSION_2) { + _gamestate->variables[VAR_GLOBAL][kGlobalVarTextSpeed] = make_reg(0, 8 - ConfMan.getInt("talkspeed") * 8 / 255); + } +#endif + if (useGlobal90) { if (subtitlesOn && !speechOn) { _gamestate->variables[VAR_GLOBAL][kGlobalVarMessageType] = make_reg(0, 1); // subtitles -- cgit v1.2.3