aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorsluicebox2018-10-24 12:24:27 -0700
committerFilippos Karapetis2018-10-24 22:24:27 +0300
commit2aa7f71fc0be2d1776213fda79ea850c6547bbe5 (patch)
treefde4cbae323e554aa410d33eb0d22d2d3dce33cf /engines/sci
parent7b5a275fa5ff92eb7e8a85845c1f235d78e1deb4 (diff)
downloadscummvm-rg350-2aa7f71fc0be2d1776213fda79ea850c6547bbe5.tar.gz
scummvm-rg350-2aa7f71fc0be2d1776213fda79ea850c6547bbe5.tar.bz2
scummvm-rg350-2aa7f71fc0be2d1776213fda79ea850c6547bbe5.zip
SCI32: Fix GK1 honfour keycard lockup (#1363)
Fixes lockup in original game, bug #10767
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/engine/script_patches.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 726d629053..d5b33a8226 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -1431,6 +1431,34 @@ static const uint16 gk1CazanouxPathfindingPatch[] = {
PATCH_END
};
+// GK1 english pc floppy locks up on day 10 in the honfour (room 800) when
+// using the keycard on an unlocked door's keypad. This is due to mistakenly
+// calling handsOff instead of handsOn. Sierra fixed this in floppy patch 1.0a
+// and all other versions.
+//
+// We fix this by changing handsOff to handsOn and passing 0 as the caller
+// to gkMessager:say since the script disposes itself.
+//
+// Applies to: English PC Floppy only
+// Responsible method: sUnlockDoor:changeState(2)
+// Fixes bug #10767
+static const uint16 gk1HonfourUnlockDoorSignature[] = {
+ 0x7c, // pushSelf
+ 0x81, 0x5b, // lag 5b
+ 0x4a, SIG_MAGICDWORD, // send e [ gkMessager:say ... self ]
+ SIG_UINT16(0x000e),
+ 0x38, SIG_UINT16(0x0216), // push 0216 [ handsOff ]
+ SIG_END
+};
+
+static const uint16 gk1HonfourUnlockDoorPatch[] = {
+ 0x76, // push0
+ 0x81, 0x5b, // lag 5b
+ 0x4a, PATCH_UINT16(0x000e), // send e [ gkMessager:say ... 0 ]
+ 0x38, PATCH_UINT16(0x0217), // push 0217 [ handsOn ]
+ 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.
@@ -1498,6 +1526,7 @@ static const SciScriptPatcherEntry gk1Signatures[] = {
{ true, 240, "fix day 5 mosely veve missing points", 1, gk1Day5MoselyVevePointsSignature, gk1Day5MoselyVevePointsPatch },
{ true, 280, "fix pathfinding in Madame Cazanoux's house", 1, gk1CazanouxPathfindingSignature, gk1CazanouxPathfindingPatch },
{ 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 },
{ true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
{ true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },