aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorsluicebox2019-06-09 21:22:24 -0700
committerFilippos Karapetis2019-06-10 11:04:15 +0300
commit4a0e2e528bf16f562e78542eb1851b45f2de53f6 (patch)
tree152c98b16f4996a5fd207b75ce7f3738ae50e129 /engines/sci/engine
parent2f837d9edca44936cf8b6bf0302b6a26e7a4219f (diff)
downloadscummvm-rg350-4a0e2e528bf16f562e78542eb1851b45f2de53f6.tar.gz
scummvm-rg350-4a0e2e528bf16f562e78542eb1851b45f2de53f6.tar.bz2
scummvm-rg350-4a0e2e528bf16f562e78542eb1851b45f2de53f6.zip
SCI: Fix SQ4 Big & Tall missing room message
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/script_patches.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 6574eb4961..00ce1a3d68 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -124,6 +124,7 @@ static const char *const selectorNameTable[] = {
"canControl", // Space Quest 4
"looper", // Space Quest 4
"nMsgType", // Space Quest 4
+ "doVerb", // Space Quest 4
"loop", // Laura Bow 1 Colonel's Bequest, QFG4
"setLoop", // Laura Bow 1 Colonel's Bequest, QFG4
"ignoreActors", // Laura Bow 1 Colonel's Bequest
@@ -232,6 +233,7 @@ enum ScriptPatcherSelectors {
SELECTOR_canControl,
SELECTOR_looper,
SELECTOR_nMsgType,
+ SELECTOR_doVerb,
SELECTOR_loop,
SELECTOR_setLoop,
SELECTOR_ignoreActors,
@@ -11656,6 +11658,51 @@ static const uint16 sq4CdPatchGetPointsForChangingBackClothes[] = {
PATCH_END
};
+// The Big And Tall store (room 381) doesn't display its Look message in the CD
+// version. We add the missing super:doVerb call to theStore:doVerb.
+//
+// Applies to: English PC CD
+// Responsible method: theStore:doVerb
+static const uint16 sq4CdSignatureBigAndTallDescription[] = {
+ 0x3c, // dup
+ 0x35, 0x06, // ldi 06
+ 0x1a, // eq? [ verb == smell ]
+ 0x30, SIG_UINT16(0x0013), // bnt 0013
+ 0x38, SIG_SELECTOR16(modNum), // pushi modNum [ redundant when set to room number ]
+ 0x78, // push1
+ 0x38, SIG_UINT16(0x017d), // pushi 017d
+ 0x38, SIG_SELECTOR16(say), // pushi say
+ 0x78, // push1
+ 0x39, 0x0a, // pushi 0a
+ 0x81, 0x59, // lag 59
+ 0x4a, 0x0c, // send 0c [ sq4GlobalNarrator modNum: 381 say: 10 ]
+ SIG_MAGICDWORD,
+ 0x33, 0x02, // jmp 02
+ 0x35, 0x00, // ldi 00
+ 0x3a, // toss
+ SIG_END
+};
+
+static const uint16 sq4CdPatchBigAndTallDescription[] = {
+ 0x35, 0x06, // ldi 06
+ 0x1a, // eq? [ verb == smell ]
+ 0x31, 0x0a, // bnt 0a
+ 0x38, PATCH_SELECTOR16(say), // pushi say
+ 0x78, // push1
+ 0x39, 0x0a, // pushi 0a
+ 0x81, 0x59, // lag 59
+ 0x4a, 0x06, // send 06 [ sq4GlobalNarrator say: 10 ]
+ 0x87, 0x01, // lap 01
+ 0x78, // push1
+ 0x1a, // eq? [ verb == look ]
+ 0x31, 0x08, // bnt 08
+ 0x38, PATCH_SELECTOR16(doVerb), // pushi doVerb
+ 0x78, // push1
+ 0x78, // push1
+ 0x57, 0x7a, 0x06, // super Sq4Feature 06 [ super doVerb: 1 ]
+ PATCH_END
+};
+
// For Space Quest 4 CD, Sierra added a pick up animation for Roger when he
// picks up the rope.
//
@@ -12453,6 +12500,7 @@ static const SciScriptPatcherEntry sq4Signatures[] = {
{ true, 290, "CD: cedric lockup fix (1/2)", 1, sq4CdSignatureCedricLockup1, sq4CdPatchCedricLockup1 },
{ true, 290, "CD: cedric lockup fix (2/2)", 1, sq4CdSignatureCedricLockup2, sq4CdPatchCedricLockup2 },
{ true, 370, "CD: sock's door restore and message fix", 1, sq4CdSignatureSocksDoor, sq4CdPatchSocksDoor },
+ { true, 381, "CD: big and tall room description", 1, sq4CdSignatureBigAndTallDescription, sq4CdPatchBigAndTallDescription },
{ true, 391, "CD: missing Audio for universal remote control", 1, sq4CdSignatureMissingAudioUniversalRemote, sq4CdPatchMissingAudioUniversalRemote },
{ true, 396, "CD: get points for changing back clothes fix", 1, sq4CdSignatureGetPointsForChangingBackClothes, sq4CdPatchGetPointsForChangingBackClothes },
{ true, 405, "CD/Floppy: zero gravity blast fix", 1, sq4SignatureZeroGravityBlast, sq4PatchZeroGravityBlast },