[Scummvm-git-logs] scummvm master -> 1748825c36724b139aa772dd1ddc366d4408e884

sluicebox 22204938+sluicebox at users.noreply.github.com
Mon Jan 13 15:49:59 UTC 2020


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:
1748825c36 SCI32: Fix KQ7 snake oil salesman disposal


Commit: 1748825c36724b139aa772dd1ddc366d4408e884
    https://github.com/scummvm/scummvm/commit/1748825c36724b139aa772dd1ddc366d4408e884
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2020-01-13T07:47:27-08:00

Commit Message:
SCI32: Fix KQ7 snake oil salesman disposal

Fixes bug #10221

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 2a23d26..261750f 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -165,6 +165,7 @@ static const char *const selectorNameTable[] = {
 	"fore",         // KQ7
 	"back",         // KQ7
 	"font",         // KQ7
+	"setHeading",   // KQ7
 	"setScale",     // LSL6hires, QFG4
 	"setScaler",    // LSL6hires, QFG4
 	"readWord",     // LSL7, Phant1, Torin
@@ -279,6 +280,7 @@ enum ScriptPatcherSelectors {
 	SELECTOR_fore,
 	SELECTOR_back,
 	SELECTOR_font,
+	SELECTOR_setHeading,
 	SELECTOR_setScale,
 	SELECTOR_setScaler,
 	SELECTOR_readWord,
@@ -5060,10 +5062,48 @@ static const uint16 kq7ExtraAmbrosiaPatch[] = {
 	PATCH_END
 };
 
+// In KQ7 1.4, after giving the statue to the snake oil salesman, the curtain is
+//  drawn on top of ego when walking in front of the wagon. The script doesn't
+//  dispose of the salesman and this leaves his final cel stuck on the screen.
+//  We add the missing call to snakeSalesman:dispose.
+//
+// Applies to: English PC 1.4
+// Responsible method: giveStatue:changeState
+// Fixes bug: #10221
+static const uint16 kq7SnakeOilSalesmanSignature[] = {
+	0x38, SIG_SELECTOR16(setHeading),   // pushi setHeading
+	SIG_ADDTOOFFSET(+0x281),
+	0x72, SIG_UINT16(0x15b4),           // lofsa snakeSalesman
+	SIG_ADDTOOFFSET(+0x3f),
+	0x3c,                               // dup
+	0x35, SIG_MAGICDWORD, 0x0c,         // ldi 0c
+	0x1a,                               // eq?
+	0x30, SIG_UINT16(0x0010),           // bnt 0010 [ state 13 ]
+	0x38, SIG_SELECTOR16(setHeading),   // pushi setHeading
+	0x7a,                               // pushi2
+	0x38, SIG_UINT16(0x00b4),           // pushi 00b4
+	0x7c,                               // pushSelf
+	0x81, 0x00,                         // lag 00
+	0x4a, SIG_UINT16(0x0008),           // send 08  [ KQEgo setHeading: 180 self ]
+	0x32, SIG_UINT16(0x0017),           // jmp 0017 [ end of method ]
+	SIG_END
+};
+
+static const uint16 kq7SnakeOilSalesmanPatch[] = {
+	PATCH_ADDTOOFFSET(+0x02cd),
+	0x38, PATCH_SELECTOR16(dispose),    // pushi dispose
+	0x76,                               // push0
+	0x72, PATCH_UINT16(0x15b4),         // lofsa snakeSalesman
+	0x4a, PATCH_UINT16(0x0004),         // send 04  [ snakeSalesman: dispose ]
+	0x32, PATCH_UINT16(0xfd26),         // jmp fd26 [ KQEgo setHeading and end of method ] 
+	PATCH_END
+};
+
 //          script, description,                                      signature                                 patch
 static const SciScriptPatcherEntry kq7Signatures[] = {
 	{  true,     0, "disable video benchmarking",                  1, kq7BenchmarkSignature,                    kq7BenchmarkPatch },
 	{  true,     0, "remove hardcoded spin loop",                  1, kq7PragmaFailSpinSignature,               kq7PragmaFailSpinPatch },
+	{  true,  5300, "fix snake oil salesman disposal",             1, kq7SnakeOilSalesmanSignature,             kq7SnakeOilSalesmanPatch },
 	{  true,  6100, "fix extra ambrosia",                          1, kq7ExtraAmbrosiaSignature,                kq7ExtraAmbrosiaPatch },
 	{  true,    31, "enable subtitles (1/3)",                      1, kq7SubtitleFixSignature1,                 kq7SubtitleFixPatch1 },
 	{  true, 64928, "enable subtitles (2/3)",                      1, kq7SubtitleFixSignature2,                 kq7SubtitleFixPatch2 },




More information about the Scummvm-git-logs mailing list