aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorColin Snover2017-01-14 14:30:33 -0600
committerColin Snover2017-01-16 12:16:13 -0600
commitf66c033d526e39547e2ceb3d28ccaf24efaf060e (patch)
treebe4197bb92c6a80f57c0a7488be2e70e455d2c68 /engines/sci
parent8859c3ccaea83c747b911203bf2529843c2b0238 (diff)
downloadscummvm-rg350-f66c033d526e39547e2ceb3d28ccaf24efaf060e.tar.gz
scummvm-rg350-f66c033d526e39547e2ceb3d28ccaf24efaf060e.tar.bz2
scummvm-rg350-f66c033d526e39547e2ceb3d28ccaf24efaf060e.zip
SCI32: Add workaround for Hoyle5
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/engine/kernel_tables.h2
-rw-r--r--engines/sci/engine/workarounds.cpp6
-rw-r--r--engines/sci/engine/workarounds.h1
3 files changed, 8 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h
index 589a1f68a3..af8e2d8f70 100644
--- a/engines/sci/engine/kernel_tables.h
+++ b/engines/sci/engine/kernel_tables.h
@@ -225,7 +225,7 @@ static const SciKernelMapSubEntry kDoAudio_subops[] = {
{ SIG_SCI32, 2, MAP_CALL(DoAudioPlay), "(i)(i)(i)(i)(i)(i)(i)", NULL },
{ SIG_SCI32, 3, MAP_CALL(DoAudioStop), "(i)(i)(i)(i)(i)", NULL },
{ SIG_SCI32, 4, MAP_CALL(DoAudioPause), "(i)(i)(i)(i)(i)", NULL },
- { SIG_SCI32, 5, MAP_CALL(DoAudioResume), "(i)(i)(i)(i)(i)", NULL },
+ { SIG_SCI32, 5, MAP_CALL(DoAudioResume), "(i)(i)(i)(i)(i)", kDoAudioResume_workarounds },
{ SIG_SCI32, 6, MAP_CALL(DoAudioPosition), "(i)(i)(i)(i)(i)", NULL },
{ SIG_SCI32, 7, MAP_CALL(DoAudioRate), "(i)", NULL },
{ SIG_SCI32, 8, MAP_CALL(DoAudioVolume), "(i)(i)(i)(i)(i)(i)", NULL },
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index 659fa68384..a627033500 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -560,6 +560,12 @@ const SciWorkaroundEntry kDisposeScript_workarounds[] = {
};
// gameID, room,script,lvl, object-name, method-name, local-call-signature, index, workaround
+const SciWorkaroundEntry kDoAudioResume_workarounds[] = {
+ { GID_HOYLE5, -1, 17, 0, NULL, "startAudio", NULL, 0, { WORKAROUND_STILLCALL, 0 } }, // when a character talks during a game
+ SCI_WORKAROUNDENTRY_TERMINATOR
+};
+
+// gameID, room,script,lvl, object-name, method-name, local-call-signature, index, workaround
const SciWorkaroundEntry kDoSoundPlay_workarounds[] = {
{ GID_LSL6HIRES, -1, 64989, 0, NULL, "play", NULL, 0, { WORKAROUND_STILLCALL, 0 } }, // always passes an extra null argument
{ GID_QFG4, -1, 64989, 0, NULL, "play", NULL, 0, { WORKAROUND_STILLCALL, 0 } }, // always passes an extra null argument
diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h
index cb928faf09..960c01efdd 100644
--- a/engines/sci/engine/workarounds.h
+++ b/engines/sci/engine/workarounds.h
@@ -68,6 +68,7 @@ extern const SciWorkaroundEntry kDeviceInfo_workarounds[];
extern const SciWorkaroundEntry kDisplay_workarounds[];
extern const SciWorkaroundEntry kDirLoop_workarounds[];
extern const SciWorkaroundEntry kDisposeScript_workarounds[];
+extern const SciWorkaroundEntry kDoAudioResume_workarounds[];
extern const SciWorkaroundEntry kDoSoundPlay_workarounds[];
extern const SciWorkaroundEntry kDoSoundFade_workarounds[];
extern const SciWorkaroundEntry kFileIOOpen_workarounds[];