Ticket #15303: lsl5-patch-v3.txt

File lsl5-patch-v3.txt, 2.5 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..1d05a94288d 100644
3--- a/engines/sci/engine/script_patches.cpp
4+++ b/engines/sci/engine/script_patches.cpp
5@@ -9385,6 +9385,38 @@ 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+ PATCH_GETORIGINALBYTE(0),
31+ 0x31, 0x07, // bnt 07
32+ PATCH_GETORIGINALBYTES(4, 5),
33+ 0x33, 0x14, // jmp 14
34+ PATCH_GETORIGINALBYTES(12, 2),
35+ 0x31, 0x07, // bnt 07
36+ PATCH_GETORIGINALBYTES(17, 9),
37+ 0x31, 0x07, // bnt 07
38+ PATCH_END
39+};
40+
41 // script, description, signature patch
42 static const SciScriptPatcherEntry larry5Signatures[] = {
43 { true, 0, "update stopGroop client", 1, larry5SignatureUpdateStopGroopClient, larry5PatchUpdateStopGroopClient },
44@@ -9395,6 +9427,7 @@ static const SciScriptPatcherEntry larry5Signatures[] = {
45 { true, 280, "English-only: fix green card limo bug", 1, larry5SignatureGreenCardLimoBug, larry5PatchGreenCardLimoBug },
46 { true, 380, "German-only: Enlarge Patti Textbox", 1, larry5SignatureGermanEndingPattiTalker, larry5PatchGermanEndingPattiTalker },
47 { true, 500, "speed up palette animation", 1, larry5SignatureRoom500PaletteAnimation, larry5PatchRoom500PaletteAnimation },
48+ { true, 928, "English-only: fix text box timeout", 1, larry5SignatureTalkerDisposeWhenDone, larry5PatchTalkerDisposeWhenDone },
49 SCI_SIGNATUREENTRY_TERMINATOR
50 };
51