[Scummvm-git-logs] scummvm master -> d1b1bd5381ea76872a2d464a918d0d191f4d6044

bluegr bluegr at gmail.com
Mon Feb 25 06:57:02 CET 2019


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:
d1b1bd5381 SCI: Fix LONGBOW Day 8 archer pathfinding


Commit: d1b1bd5381ea76872a2d464a918d0d191f4d6044
    https://github.com/scummvm/scummvm/commit/d1b1bd5381ea76872a2d464a918d0d191f4d6044
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2019-02-25T07:56:58+02:00

Commit Message:
SCI: Fix LONGBOW Day 8 archer pathfinding

Work around a lockup that occurs due to our pathfinding, bug #10896

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 93122c7..2db70a4 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -3997,6 +3997,29 @@ static const uint16 longbowPatchAmigaPubFix[] = {
 	PATCH_END
 };
 
+// WORKAROUND: Script needed, because of differences in our pathfinding
+// algorithm
+// When the guards kick Robin out of archery room 320 the game locks up due to
+//  pathfinding algorithm differences. Ours sends ego in the wrong direction,
+//  colliding with a guard, and preventing the script from continuing.
+//
+// Applies to: English PC Floppy, German PC Floppy, English Amiga Floppy
+// Responsible method: takeHimOut:changeState(1)
+// Fixes bug: #10896
+static const uint16 longbowSignatureArcherPathfinding[] = {
+	SIG_MAGICDWORD,
+	0x38, SIG_UINT16(0x00c8),       // pushi 00c8 [ y = 200 ]
+	0x7c,                           // pushSelf
+	0x81, 0x00,                     // lag 00
+	0x4a, 0x0c,                     // send 0c [ ego setMotion: PolyPath (ego x?) 200 self ]
+	SIG_END
+};
+
+static const uint16 longbowPatchArcherPathfinding[] = {
+	0x38, PATCH_UINT16(0x00c4),     // pushi 00c4 [ y = 196 ]
+	PATCH_END
+};
+
 //          script, description,                                      signature                          patch
 static const SciScriptPatcherEntry longbowSignatures[] = {
 	{  true,   150, "day 5/6 camp sunset fix",                     2, longbowSignatureCampSunsetFix,     longbowPatchCampSunsetFix },
@@ -4005,6 +4028,7 @@ static const SciScriptPatcherEntry longbowSignatures[] = {
 	{  true,   225, "arithmetic berry bush fix",                   1, longbowSignatureBerryBushFix,      longbowPatchBerryBushFix },
 	{  true,   250, "day 5/6 rescue flag fix",                     1, longbowSignatureRescueFlagFix,     longbowPatchRescueFlagFix },
 	{  true,   260, "day 5/6 town map sunset fix",                 1, longbowSignatureTownMapSunsetFix,  longbowPatchTownMapSunsetFix },
+	{  true,   320, "day 8 archer pathfinding workaround",         1, longbowSignatureArcherPathfinding, longbowPatchArcherPathfinding },
 	{  true,   350, "day 9 cobbler hut fix",                      10, longbowSignatureCobblerHut,        longbowPatchCobblerHut },
 	{  true,   530, "amiga pub fix",                               1, longbowSignatureAmigaPubFix,       longbowPatchAmigaPubFix },
 	SCI_SIGNATUREENTRY_TERMINATOR





More information about the Scummvm-git-logs mailing list