aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kiewitz2017-09-17 14:43:27 +0200
committerMartin Kiewitz2017-09-17 14:43:27 +0200
commit294503f5169ce72eb897bb21989c944eb0b1b7ac (patch)
tree146a5e7cdd2a2c764381ab8f474dca45ae16ff69
parent787392fe11753d3dfc430edff6334926703b5810 (diff)
downloadscummvm-rg350-294503f5169ce72eb897bb21989c944eb0b1b7ac.tar.gz
scummvm-rg350-294503f5169ce72eb897bb21989c944eb0b1b7ac.tar.bz2
scummvm-rg350-294503f5169ce72eb897bb21989c944eb0b1b7ac.zip
SCI32: GK1CD: script for vine swing issue bug #9820
Gabriel's "I can't believe I'm doing this..." line was cut off. This script patch stops that from happening.
-rw-r--r--engines/sci/engine/script_patches.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 738f2acfd0..868939c150 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -1054,6 +1054,64 @@ static const uint16 gk1Day5PhoneFreezePatch[] = {
PATCH_END
};
+// When Gabriel is grabbing a vine 'vineSwing::changeState(1)',
+// him saying "I can't believe I'm doing this..." is cut off.
+// We change it so the scripts wait for the audio.
+// This is not supposed to be applied to the Floppy version.
+//
+// Applies to at lesat: English PC-CD, German PC-CD, Spanish PC-CD
+static const uint16 gk1Day9VineSwingSignature[] = {
+ 0x38, SIG_UINT16(4), // pushi $4
+ 0x51, 0x17, // class CT
+ 0x36, // push
+ 0x39, 0x0b, // pushi $b
+ 0x78, // push1
+ 0x7c, // pushSelf
+ 0x81, 0x00, // lag global[$0]
+ 0x4a, SIG_UINT16(0x20), // send $20
+ 0x38, SIG_SELECTOR16(setMotion), // pushi setMotion
+ 0x78, // push1
+ 0x76, // push0
+ 0x72, SIG_UINT16(0x0412), // lofsa guard1
+ 0x4a, SIG_UINT16(0x06), // send $6
+ 0x38, SIG_SELECTOR16(say), // pushi say
+ 0x38, SIG_UINT16(0x04), // pushi $4
+ SIG_MAGICDWORD,
+ 0x39, 0x07, // pushi $7
+ 0x39, 0x08, // pushi $8
+ 0x39, 0x10, // pushi $10
+ 0x78, // push1
+ 0x81, 0x5b, // lsg global[$5b]
+ 0x4a, SIG_UINT16(0x000c), // send $c
+ SIG_END
+};
+
+static const uint16 gk1Day9VineSwingPatch[] = {
+ 0x38, SIG_UINT16(3), // pushi $3
+ 0x51, 0x17, // class CT
+ 0x36, // push
+ 0x39, 0x0b, // pushi $b
+ 0x78, // push1
+ 0x81, 0x00, // lag global[$0]
+ 0x4a, SIG_UINT16(0x1e), // send $20
+ 0x38, SIG_SELECTOR16(setMotion), // pushi setMotion
+ 0x78, // push1
+ 0x76, // push0
+ 0x72, SIG_UINT16(0x0412), // lofsa guard1
+ 0x4a, SIG_UINT16(0x06), // send $6
+ 0x38, SIG_SELECTOR16(say), // pushi say
+ 0x38, SIG_UINT16(0x05), // pushi $5
+ 0x39, 0x07, // pushi $7
+ 0x39, 0x08, // pushi $8
+ 0x39, 0x10, // pushi $10
+ 0x78, // push1
+ 0x7c, // pushSelf
+ 0x81, 0x5b, // lsg global[$5b]
+ 0x4a, SIG_UINT16(0x000e), // send $c
+ PATCH_END
+};
+
+
// In GK1, the `view` selector is used to store view numbers in some cases and
// object references to Views in other cases. `Interrogation::dispose` compares
// an object stored in the `view` selector with a number (which is not valid)
@@ -1120,6 +1178,7 @@ static const SciScriptPatcherEntry gk1Signatures[] = {
{ true, 230, "fix day 6 police beignet timer issue (1/2)", 1, gk1Day6PoliceBeignetSignature1, gk1Day6PoliceBeignetPatch1 },
{ true, 230, "fix day 6 police beignet timer issue (2/2)", 1, gk1Day6PoliceBeignetSignature2, gk1Day6PoliceBeignetPatch2 },
{ true, 230, "fix day 6 police sleep timer issue", 1, gk1Day6PoliceSleepSignature, gk1Day6PoliceSleepPatch },
+ { true, 710, "fix day 9 vine swing speech playing", 1, gk1Day9VineSwingSignature, gk1Day9VineSwingPatch },
{ true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
{ true, 64990, "increase number of save games (1/2)", 1, sci2NumSavesSignature1, sci2NumSavesPatch1 },
{ true, 64990, "increase number of save games (2/2)", 1, sci2NumSavesSignature2, sci2NumSavesPatch2 },