Ticket #15303: lsl5-patch-v2.txt

File lsl5-patch-v2.txt, 3.0 KB (added by eriktorbjorn, 4 weeks ago)
Line 
1diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
2index 2aa46a9dd3e..d7645baf5d4 100644
3--- a/engines/sci/engine/script_patches.cpp
4+++ b/engines/sci/engine/script_patches.cpp
5@@ -9385,6 +9385,49 @@ static const uint16 larry5PatchPokerJackpotInit[] = {
6 PATCH_END
7 };
8
9+// The way LSL5's Talker is written, there is a small recurring chance that
10+// text boxes will time out immediately, and an even smaller chance that they
11+// won't time out at all. This was fixed in the German, French, Spanis, and
12+// Italian versions of the game, though it seems we can't rely on the global
13+// variable the way they do so we go with a slightly different fix that still
14+// calls the GetTime kernel function.
15+//
16+// Applies to: English VGA version
17+// Responsible method: Talker::doit in script 928
18+
19+static const uint16 larry5SignatureTalkerDisposeWhenDone[] = {
20+ SIG_MAGICDWORD,
21+ 0x1e, // gt?
22+ 0x30, 0x08, 0x00, // bnt 0008
23+ SIG_END
24+};
25+
26+static const uint16 larry5PatchTalkerDisposeWhenDone[] = {
27+ 0x04, // sub
28+ 0x36, // push
29+ 0x35, 0x00, // ldi 00
30+ 0x1e, // gt?
31+ 0x31, 0x07, // bnt 07
32+ 0x39, 0x6c, // pushi 6c
33+ 0x78, // push1
34+ 0x67, 0x5e, // pTos disposeWhenDone
35+ 0x33, 0x14, // jmp 14
36+ 0x63, 0x58, // pToa eyes
37+ 0x31, 0x07, // bnt 07
38+ 0x38, 0xb0, 0x00, // pushi 00b0
39+ 0x78, // push1
40+ 0x36, // push
41+ 0x54, 0x06, // self 06
42+ 0x63, 0x5a, // pToa mouth
43+ 0x31, 0x07, // bnt 07
44+ 0x38, 0xb0, 0x00, // pushi 00b0
45+ 0x78, // push1
46+ 0x36, // push
47+ 0x54, 0x06, // self 06
48+ 0x48, // ret
49+ PATCH_END
50+};
51+
52 // script, description, signature patch
53 static const SciScriptPatcherEntry larry5Signatures[] = {
54 { true, 0, "update stopGroop client", 1, larry5SignatureUpdateStopGroopClient, larry5PatchUpdateStopGroopClient },
55@@ -9395,6 +9438,7 @@ static const SciScriptPatcherEntry larry5Signatures[] = {
56 { true, 280, "English-only: fix green card limo bug", 1, larry5SignatureGreenCardLimoBug, larry5PatchGreenCardLimoBug },
57 { true, 380, "German-only: Enlarge Patti Textbox", 1, larry5SignatureGermanEndingPattiTalker, larry5PatchGermanEndingPattiTalker },
58 { true, 500, "speed up palette animation", 1, larry5SignatureRoom500PaletteAnimation, larry5PatchRoom500PaletteAnimation },
59+ { true, 928, "English-only: fix text box timeout", 1, larry5SignatureTalkerDisposeWhenDone, larry5PatchTalkerDisposeWhenDone },
60 SCI_SIGNATUREENTRY_TERMINATOR
61 };
62