diff options
author | sluicebox | 2018-11-13 13:41:05 -0800 |
---|---|---|
committer | Filippos Karapetis | 2018-11-13 23:41:05 +0200 |
commit | 0b7ec3af00f91e490fac9985a301d0682d0d91c7 (patch) | |
tree | 6fb5a2427d3c201842cb2b72426915e72e0ed4e3 | |
parent | 09abcc5c2c59341fadd0450db3755e1d2662655d (diff) | |
download | scummvm-rg350-0b7ec3af00f91e490fac9985a301d0682d0d91c7.tar.gz scummvm-rg350-0b7ec3af00f91e490fac9985a301d0682d0d91c7.tar.bz2 scummvm-rg350-0b7ec3af00f91e490fac9985a301d0682d0d91c7.zip |
SCI32: Fix GK1 day 2 binoculars lockup (#1381)
Fixes a lockup in floppy version. bug #10797
-rw-r--r-- | engines/sci/engine/script_patches.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp index ab1f6b464e..107fe18ab8 100644 --- a/engines/sci/engine/script_patches.cpp +++ b/engines/sci/engine/script_patches.cpp @@ -1465,6 +1465,61 @@ static const uint16 gk1HonfourUnlockDoorPatch[] = { PATCH_END }; +// GK1 english pc floppy locks up on day 2 when using the binoculars to view +// room 410 when the artist's drawing blows away. This is particularly bad +// because when using the binoculars you can't use the mouse to access the +// control panel to restore. +// +// We fix this as Sierra did in later versions by not allowing the drawing to +// blow away when viewing through binoculars. To make room for this patch +// we remove initializing juggler:cycleSpeed to 6 as this is redundant. +// juggler is a Prop and Prop:cycleSpeed's initial value is 6. +// +// Applies to: English PC Floppy +// Responsible method: neJackson:init +// Fixes bug #10797 +static const uint16 gk1Day2BinocularsLockupSignature[] = { + SIG_MAGICDWORD, + 0x30, SIG_UINT16(0x01d6), // bnt 01d6 [ english pc floppy 1.0 only ] + 0x38, SIG_SELECTOR16(init), // pushi init + 0x76, // push0 + 0x38, SIG_SELECTOR16(cycleSpeed), // pushi cycleSpeed + 0x78, // push1 + 0x39, 0x06, // pushi 06 + 0x38, SIG_SELECTOR16(setCycle), // pushi setCycle + 0x78, // push1 + 0x51, 0x15, // class Fwd + 0x36, // push + 0x72, SIG_UINT16(0x02b0), // lofsa juggler + 0x4a, SIG_UINT16(0x0010), // send 10 [ juggler: init, cycleSpeed: 6, setCycle: Fwd ] + 0x38, SIG_SELECTOR16(init), // pushi init + 0x76, // push0 + 0x72, SIG_UINT16(0x0538), // lofsa easel + 0x4a, SIG_UINT16(0x0004), // send 4 [ easel: init ] + SIG_END +}; + +static const uint16 gk1Day2BinocularsLockupPatch[] = { + PATCH_ADDTOOFFSET(+6), + 0x3c, // dup + 0x76, // push0 + 0x38, PATCH_SELECTOR16(setCycle), // pushi setCycle + 0x78, // push1 + 0x51, 0x15, // class Fwd + 0x36, // push + 0x72, PATCH_UINT16(0x02b0), // lofsa juggler + 0x4a, PATCH_UINT16(0x000a), // send a [ juggler: init, setCycle Fwd ] + 0x76, // push0 + 0x72, PATCH_UINT16(0x0538), // lofsa easel + 0x4a, PATCH_UINT16(0x0004), // send 4 [ easel: init ] + + 0x89, 0x0c, // lsg 0c [ previous room ] + 0x34, PATCH_UINT16(0x0190), // ldi 0190 [ overlook ] + 0x1c, // ne? + 0x31, 0x09, // bnt 09 [ drawing doesn't blow away ] + PATCH_END +}; + // GK1 english pc floppy has a missing-points bug on day 5 in room 240. // Showing Mosely the veve sketch and Hartridge's notes awards 2 points // but not if you show the notes before the veve. @@ -1832,6 +1887,7 @@ static const SciScriptPatcherEntry gk1Signatures[] = { { true, 280, "fix pathfinding in Madame Cazanoux's house", 1, gk1CazanouxPathfindingSignature, gk1CazanouxPathfindingPatch }, { true, 290, "fix magentia missing message", 1, gk1ShowMagentiaItemSignature, gk1ShowMagentiaItemPatch }, { true, 380, "fix ego flicker in Gran's chair", 1, gk1GranChairFlickerSignature, gk1GranChairFlickerPatch }, + { true, 410, "fix day 2 binoculars lockup", 1, gk1Day2BinocularsLockupSignature, gk1Day2BinocularsLockupPatch }, { true, 710, "fix day 9 vine swing speech playing", 1, gk1Day9VineSwingSignature, gk1Day9VineSwingPatch }, { true, 800, "fix day 10 honfour unlock door lockup", 1, gk1HonfourUnlockDoorSignature, gk1HonfourUnlockDoorPatch }, { true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch }, |