[Scummvm-git-logs] scummvm master -> 9fec79ac5abcd14cd1914e5679069dcbdb7f79b8
bluegr
bluegr at gmail.com
Sat Dec 22 10:14:17 CET 2018
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
9fec79ac5a SCI: Fix LONGBOW Day 7 Tuck/Net scene, bug #10847 (#1457)
Commit: 9fec79ac5abcd14cd1914e5679069dcbdb7f79b8
https://github.com/scummvm/scummvm/commit/9fec79ac5abcd14cd1914e5679069dcbdb7f79b8
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2018-12-22T11:14:13+02:00
Commit Message:
SCI: Fix LONGBOW Day 7 Tuck/Net scene, bug #10847 (#1457)
Fixes a bug in the original that plays a scene when it shouldn't
Changed paths:
engines/sci/engine/script_patches.cpp
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 8eddbfc..a8d24d2 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -118,6 +118,8 @@ static const char *const selectorNameTable[] = {
"cycler", // Space Quest 4 / system selector
"setLoop", // Laura Bow 1 Colonel's Bequest, QFG4
"ignoreActors", // Laura Bow 1 Colonel's Bequest
+ "at", // Longbow
+ "owner", // Longbow
#ifdef ENABLE_SCI32
"newWith", // SCI2 array script
"scrollSelections", // GK2
@@ -199,7 +201,9 @@ enum ScriptPatcherSelectors {
SELECTOR_modeless,
SELECTOR_cycler,
SELECTOR_setLoop,
- SELECTOR_ignoreActors
+ SELECTOR_ignoreActors,
+ SELECTOR_at,
+ SELECTOR_owner
#ifdef ENABLE_SCI32
,
SELECTOR_newWith,
@@ -3609,6 +3613,55 @@ static const uint16 longbowPatchRescueFlagFix[] = {
PATCH_END
};
+// On day 7, Tuck can appear at camp to say that the widow wants to see you when
+// she really doesn't. This scene is only supposed to occur if you haven't
+// received the net but the script only tests if the net is currently in
+// inventory, which it isn't if you've already used it or are in disguise.
+//
+// We fix this by testing the net's owner instead of inventory. If net:owner is
+// non-zero then it's in inventory or in your cave or has been used.
+//
+// Applies to: English PC Floppy, German PC Floppy, English Amiga Floppy
+// Responsible method: local procedure #3 in script 150
+// Fixes bug #10847
+static const uint16 longbowSignatureTuckNetFix[] = {
+ SIG_MAGICDWORD,
+ 0x30, SIG_UINT16(0x03a2), // bnt 03a2 [ end of method ]
+ 0x38, SIG_SELECTOR16(has), // pushi has
+ 0x78, // push1
+ 0x39, 0x04, // pushi 04
+ 0x81, 0x00, // lag 00
+ 0x4a, 0x06, // send 6 [ ego: has 4 ]
+ 0x18, // not
+ 0x30, SIG_UINT16(0x0394), // bnt 0394 [ end of method if net not in inventory ]
+ 0x78, // push1
+ 0x39, 0x47, // pushi 47
+ 0x45, 0x05, 0x02, // callb proc0_5 [ is flag 47 set? ]
+ 0x18, // not
+ 0x30, SIG_UINT16(0x038a), // bnt 038a [ end of method ]
+ SIG_ADDTOOFFSET(+60),
+ 0x32, SIG_UINT16(0x034b), // jmp 034b [ end of method ]
+ SIG_END
+};
+
+static const uint16 longbowPatchTuckNetFix[] = {
+ 0x31, 0x55, // bnt 55 [ skip scene, save a byte ]
+ 0x39, PATCH_SELECTOR8(at), // pushi at
+ 0x78, // push1
+ 0x39, 0x04, // pushi 04
+ 0x81, 0x09, // lag 09
+ 0x4a, 0x06, // send 6 [ Inv: at 4 ]
+ 0x38, PATCH_SELECTOR16(owner), // pushi owner
+ 0x76, // push0
+ 0x4a, 0x04, // send 4 [ net: owner? ]
+ 0x2f, 0x44, // bt 44 [ skip scene if net:owner != 0 ]
+ 0x78, // push1
+ 0x39, 0x47, // pushi 47
+ 0x45, 0x05, 0x02, // callb proc0_5 [ is flag 47 set? ]
+ 0x2f, 0x3c, // bt 3c [ skip scene, save 2 bytes ]
+ PATCH_END
+};
+
// On day 9, room 350 outside the cobbler's hut is initialized incorrectly if
// disguised as a monk. The entrance to the hut is broken and several minor
// messages are incorrect. This is due to the room's script assuming that the
@@ -3676,6 +3729,7 @@ static const uint16 longbowPatchAmigaPubFix[] = {
// script, description, signature patch
static const SciScriptPatcherEntry longbowSignatures[] = {
{ true, 150, "day 5/6 camp sunset fix", 2, longbowSignatureCampSunsetFix, longbowPatchCampSunsetFix },
+ { true, 150, "day 7 tuck net fix", 1, longbowSignatureTuckNetFix, longbowPatchTuckNetFix },
{ true, 210, "hand code crash", 5, longbowSignatureShowHandCode, longbowPatchShowHandCode },
{ true, 225, "arithmetic berry bush fix", 1, longbowSignatureBerryBushFix, longbowPatchBerryBushFix },
{ true, 250, "day 5/6 rescue flag fix", 1, longbowSignatureRescueFlagFix, longbowPatchRescueFlagFix },
More information about the Scummvm-git-logs
mailing list