aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2015-02-17 19:53:43 +0100
committerWillem Jan Palenstijn2015-02-17 19:58:24 +0100
commitfdc09c2cb7ff3041dbd11c146d3d669cc7aa4777 (patch)
treea8d02ed4504c3a6bdd2765bd6d3981f9ca0d7eaf /engines/sci
parentb45e706012d7131035867fdd1e6f7109db1ae635 (diff)
downloadscummvm-rg350-fdc09c2cb7ff3041dbd11c146d3d669cc7aa4777.tar.gz
scummvm-rg350-fdc09c2cb7ff3041dbd11c146d3d669cc7aa4777.tar.bz2
scummvm-rg350-fdc09c2cb7ff3041dbd11c146d3d669cc7aa4777.zip
SCI: Add alternative version of QfG3 "Woo" dialog patch
The GOG version of QfG3 is shipped with a patch to script 440 that broke our existing internal script patch for this script bug. See bug #6806.
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/engine/script_patches.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index c2a0b8b95d..45e0155950 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -2282,10 +2282,40 @@ static const uint16 qfg3PatchWooDialog[] = {
PATCH_END
};
+// Alternative version, with uint16 offsets, for GOG release of QfG3.
+static const uint16 qfg3SignatureWooDialogAlt[] = {
+ SIG_MAGICDWORD,
+ 0x67, 0x12, // pTos 12 (query)
+ 0x35, 0xb6, // ldi b6
+ 0x1a, // eq?
+ 0x2e, SIG_UINT16(0x0005), // bt 05
+ 0x67, 0x12, // pTos 12 (query)
+ 0x35, 0x9b, // ldi 9b
+ 0x1a, // eq?
+ 0x30, SIG_UINT16(0x000c), // bnt 0c
+ 0x38, SIG_SELECTOR16(solvePuzzle), // pushi 0297
+ 0x7a, // push2
+ 0x38, SIG_UINT16(0x010c), // pushi 010c
+ 0x7a, // push2
+ 0x81, 0x00, // lag 00
+ 0x4a, 0x08, // send 08
+ 0x67, 0x12, // pTos 12 (query)
+ 0x35, 0xb5, // ldi b5
+ SIG_END
+};
+
+static const uint16 qfg3PatchWooDialogAlt[] = {
+ PATCH_ADDTOOFFSET(+0x2C),
+ 0x33, 0x12, // jmp to 0x708, the call to hero::solvePuzzle for 0xFFFC
+ PATCH_END
+};
+
+
// script, description, signature patch
static const SciScriptPatcherEntry qfg3Signatures[] = {
{ true, 944, "import dialog continuous calls", 1, qfg3SignatureImportDialog, qfg3PatchImportDialog },
{ true, 440, "dialog crash when asking about Woo", 1, qfg3SignatureWooDialog, qfg3PatchWooDialog },
+ { true, 440, "dialog crash when asking about Woo", 1, qfg3SignatureWooDialogAlt, qfg3PatchWooDialogAlt },
SCI_SIGNATUREENTRY_TERMINATOR
};