From fa9523933f69497bae19510ff1c7f17e4cbe8024 Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Wed, 18 Jan 2017 11:41:16 -0600 Subject: SCI32: Fix broken sliders in Shivers settings This problem is caused by the same invalid super call that broke the CCTV joystick. --- engines/sci/engine/script_patches.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'engines') diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp index d84d2ab780..f5ec2d300c 100644 --- a/engines/sci/engine/script_patches.cpp +++ b/engines/sci/engine/script_patches.cpp @@ -4871,7 +4871,9 @@ static const SciScriptPatcherEntry sq5Signatures[] = { // In SSCI, this happens to work because the uninitialized value on the stack // happens to be 1. Disabling the super call avoids the bad doVerb call without // any apparent ill effect. -static const uint16 shiversSignatureJoystickFix[] = { +// The same problem exists when trying to drag the volume & brightness sliders +// in the main menu. These controls are also fixed by this patch. +static const uint16 shiversSignatureSuperCall[] = { SIG_MAGICDWORD, 0x38, SIG_UINT16(0xa5), // pushi handleEvent 0x78, // push1 @@ -4881,14 +4883,15 @@ static const uint16 shiversSignatureJoystickFix[] = { SIG_END }; -static const uint16 shiversPatchJoystickFix[] = { +static const uint16 shiversPatchSuperCall[] = { 0x48, // ret PATCH_END }; // script, description, signature patch static const SciScriptPatcherEntry shiversSignatures[] = { - { true, 35170, "fix CCTV joystick interaction", 1, shiversSignatureJoystickFix, shiversPatchJoystickFix }, + { true, 35170, "fix CCTV joystick interaction", 1, shiversSignatureSuperCall, shiversPatchSuperCall }, + { true, 990, "fix volume & brightness sliders", 2, shiversSignatureSuperCall, shiversPatchSuperCall }, SCI_SIGNATUREENTRY_TERMINATOR }; -- cgit v1.2.3