aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorColin Snover2016-12-01 12:53:02 -0600
committerColin Snover2016-12-03 12:00:58 -0600
commit68023904a4c4138cdd87e8f86ebddb19be802309 (patch)
tree9a45a95c596e985841273df0c1f8da79890a8edd /engines/sci/engine
parent3d83ab2cf01867fdb98362cdd4589c02ebde0e11 (diff)
downloadscummvm-rg350-68023904a4c4138cdd87e8f86ebddb19be802309.tar.gz
scummvm-rg350-68023904a4c4138cdd87e8f86ebddb19be802309.tar.bz2
scummvm-rg350-68023904a4c4138cdd87e8f86ebddb19be802309.zip
SCI32: Fix LSL6hires text speed slider
For whatever reason, this game uses a different global for specifying the text speed.
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/vm.cpp23
-rw-r--r--engines/sci/engine/vm.h1
2 files changed, 18 insertions, 6 deletions
diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp
index 01051ebdd4..92228fd38a 100644
--- a/engines/sci/engine/vm.cpp
+++ b/engines/sci/engine/vm.cpp
@@ -199,6 +199,23 @@ static void write_var(EngineState *s, int type, int index, reg_t value) {
s->variables[type][index] = value;
+#ifdef ENABLE_SCI32
+ if (type == VAR_GLOBAL && getSciVersion() >= SCI_VERSION_2 && g_sci->getEngineState()->_syncedAudioOptions) {
+
+ switch (g_sci->getGameId()) {
+ case GID_LSL6HIRES:
+ if (index == kGlobalVarLSL6HiresTextSpeed) {
+ ConfMan.setInt("talkspeed", (14 - value.toSint16()) * 255 / 13);
+ }
+ break;
+ default:
+ if (index == kGlobalVarTextSpeed) {
+ ConfMan.setInt("talkspeed", (8 - value.toSint16()) * 255 / 8);
+ }
+ }
+ }
+#endif
+
if (type == VAR_GLOBAL && index == kGlobalVarMessageType) {
// The game is trying to change its speech/subtitle settings
if (!g_sci->getEngineState()->_syncedAudioOptions || s->variables[VAR_GLOBAL][kGlobalVarQuit] == TRUE_REG) {
@@ -212,12 +229,6 @@ 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 cec9e1528c..13f60fd49c 100644
--- a/engines/sci/engine/vm.h
+++ b/engines/sci/engine/vm.h
@@ -150,6 +150,7 @@ enum GlobalVar {
kGlobalVarFastCast = 84, // SCI16
kGlobalVarMessageType = 90,
kGlobalVarTextSpeed = 94, // SCI32; 0 is fastest, 8 is slowest
+ kGlobalVarLSL6HiresTextSpeed = 167, // 1 is fastest, 14 is slowest
kGlobalVarShivers1Score = 349
};