1 | diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
|
---|
2 | index 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 |
|
---|