From ae628c18d462f4b58a6636f9fd4655e98072b5a1 Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Mon, 8 May 2017 19:45:07 -0500 Subject: SCI32: Add workaround for KQ7 Fixes Trac#9763. --- engines/sci/engine/kernel_tables.h | 2 +- engines/sci/engine/workarounds.cpp | 6 ++++++ engines/sci/engine/workarounds.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index b6fddd8657..de9f66205b 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -278,7 +278,7 @@ static const SciKernelMapSubEntry kPalVary_subops[] = { { SIG_SCI16, 5, MAP_CALL(PalVaryChangeTicks), "i", NULL }, { SIG_SCI16, 6, MAP_CALL(PalVaryPauseResume), "i", NULL }, #ifdef ENABLE_SCI32 - { SIG_SCI32, 0, MAP_CALL(PalVarySetVary), "i(i)(i)(i)(i)", NULL }, + { SIG_SCI32, 0, MAP_CALL(PalVarySetVary), "i(i)(i)(i)(i)", kPalVarySetVary_workarounds }, { SIG_SCI32, 1, MAP_CALL(PalVarySetPercent), "(i)(i)", kPalVarySetPercent_workarounds }, { SIG_SCI32, 2, MAP_CALL(PalVaryGetPercent), "", NULL }, { SIG_SCI32, 3, MAP_CALL(PalVaryOff), "", NULL }, diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 0b19c144d0..c951404661 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -756,6 +756,12 @@ const SciWorkaroundEntry kNewWindow_workarounds[] = { SCI_WORKAROUNDENTRY_TERMINATOR }; +// gameID, room,script,lvl, object-name, method-name, local-call-signature, index, workaround +const SciWorkaroundEntry kPalVarySetVary_workarounds[] = { + { GID_KQ7, 4600, 4600, 0, "sRosDogDeath2", "changeState", NULL, 0, { WORKAROUND_FAKE, 0 } }, // when dying by letting the dog find you under the house. Trac#9763 + SCI_WORKAROUNDENTRY_TERMINATOR +}; + // gameID, room,script,lvl, object-name, method-name, local-call-signature, index, workaround const SciWorkaroundEntry kPalVarySetPercent_workarounds[] = { { GID_GK1, 370, 370, 0, "graceComeOut", "changeState", NULL, 0, { WORKAROUND_STILLCALL, 0 } }, // there's an extra parameter in GK1, when changing chapters. This extra parameter seems to be a bug or just unimplemented functionality, as there's no visible change from the original in the chapter change room diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h index 44f7d857bb..08a9fa606f 100644 --- a/engines/sci/engine/workarounds.h +++ b/engines/sci/engine/workarounds.h @@ -88,6 +88,7 @@ extern const SciWorkaroundEntry kListAt_workarounds[]; extern const SciWorkaroundEntry kMemory_workarounds[]; extern const SciWorkaroundEntry kMoveCursor_workarounds[]; extern const SciWorkaroundEntry kNewWindow_workarounds[]; +extern const SciWorkaroundEntry kPalVarySetVary_workarounds[]; extern const SciWorkaroundEntry kPalVarySetPercent_workarounds[]; extern const SciWorkaroundEntry kPalVaryMergeStart_workarounds[]; extern const SciWorkaroundEntry kPlatform32_workarounds[]; -- cgit v1.2.3