diff options
Diffstat (limited to 'engines/sci/engine/script_patches.cpp')
| -rw-r--r-- | engines/sci/engine/script_patches.cpp | 25 | 
1 files changed, 25 insertions, 0 deletions
| diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp index 61cd437865..6d8938c7a4 100644 --- a/engines/sci/engine/script_patches.cpp +++ b/engines/sci/engine/script_patches.cpp @@ -2136,9 +2136,34 @@ static const uint16 kq7BenchmarkPatch[] = {  	PATCH_END  }; +// When attempting to use an inventory item on an object that does not interact +// with that item, the game temporarily displays an X cursor, but does this by +// spinning for 90000 cycles, which make the duration dependent on CPU speed, +// maxes out the CPU for no reason, and keeps the engine from polling for events +// (which may make the window appear nonresponsive to the OS) +// Applies to at least: KQ7 English 2.00b +static const uint16 kq7PragmaFailSpinSignature[] = { +	0x35, 0x00,               // ldi 0 +	0xa5, 0x02,               // sat 2 +	SIG_MAGICDWORD, +	0x8d, 0x02,               // lst 2 +	0x35, 0x03,               // ldi 3 +	0x22,                     // lt? +	SIG_END +}; + +static const uint16 kq7PragmaFailSpinPatch[] = { +	0x78,                                     // push1 +	0x39, 0x12,                               // pushi 18 (~300ms) +	0x43, kScummVMWaitId, PATCH_UINT16(0x02), // callk Wait, 2 +	0x33, 0x16,                               // jmp to setCursor +	PATCH_END +}; +  //          script, description,                                      signature                                 patch  static const SciScriptPatcherEntry kq7Signatures[] = {  	{  true,     0, "disable video benchmarking",                  1, kq7BenchmarkSignature,                    kq7BenchmarkPatch }, +	{  true,     0, "remove hardcoded spinloop",                   1, kq7PragmaFailSpinSignature,               kq7PragmaFailSpinPatch },  	{  true,    31, "subtitle fix 1/3",                            1, kq7SignatureSubtitleFix1,                 kq7PatchSubtitleFix1 },  	{  true, 64928, "subtitle fix 2/3",                            1, kq7SignatureSubtitleFix2,                 kq7PatchSubtitleFix2 },  	{  true, 64928, "subtitle fix 3/3",                            1, kq7SignatureSubtitleFix3,                 kq7PatchSubtitleFix3 }, | 
