[Scummvm-git-logs] scummvm master -> 3c3ed549f1097c7550d53be06454c81a4e4e3fbd
sluicebox
noreply at scummvm.org
Fri Jun 3 16:02:51 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
3c3ed549f1 SCI: Disable JONES speed test
Commit: 3c3ed549f1097c7550d53be06454c81a4e4e3fbd
https://github.com/scummvm/scummvm/commit/3c3ed549f1097c7550d53be06454c81a4e4e3fbd
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-06-03T12:00:58-04:00
Commit Message:
SCI: Disable JONES speed test
Fixes bug #13529
Changed paths:
engines/sci/engine/script_patches.cpp
engines/sci/graphics/animate.cpp
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 9fb12ea17b6..b078c64644a 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -4691,6 +4691,39 @@ static const SciScriptPatcherEntry islandBrainSignatures[] = {
SCI_SIGNATUREENTRY_TERMINATOR
};
+// ===========================================================================
+// Jones In The Fast Lane
+
+// Disable the CD version's speed test so that all views are drawn. Originally
+// we detected this benchmark and disabled speed throttling during it, but on
+// very fast computers the counter can overflow and fail the test.
+//
+// Applies to: PC CD
+// Responsible method: noticeRoom:doit
+// Fixes bug: #13529
+static const uint16 jonesSignatureSpeedTest[] = {
+ SIG_MAGICDWORD,
+ 0x8b, 0x00, // lsl 00
+ 0x76, // push0
+ 0x43, 0x42, 0x00, // callk GetTime 00
+ 0x2a, // ult? [ is speed test complete? ]
+ 0x30, // bnt
+ SIG_END
+};
+
+static const uint16 jonesPatchSpeedTest[] = {
+ 0x83, 0x02, // lal 02 [ best result ]
+ 0xa3, 0x01, // sal 01 [ local1 = local2 ]
+ 0x33, 0x04, // jmp 04 [ complete speed test ]
+ PATCH_END
+};
+
+// script, description, signature patch
+static const SciScriptPatcherEntry jonesSignatures[] = {
+ { true, 764, "CD: disable speed test", 1, jonesSignatureSpeedTest, jonesPatchSpeedTest },
+ SCI_SIGNATUREENTRY_TERMINATOR
+};
+
// ===========================================================================
// King's Quest 1
@@ -23250,6 +23283,9 @@ void ScriptPatcher::processScript(uint16 scriptNr, SciSpan<byte> scriptData) {
case GID_ISLANDBRAIN:
signatureTable = islandBrainSignatures;
break;
+ case GID_JONES:
+ signatureTable = jonesSignatures;
+ break;
case GID_KQ1:
signatureTable = kq1Signatures;
break;
diff --git a/engines/sci/graphics/animate.cpp b/engines/sci/graphics/animate.cpp
index 0b8d3e7b9ec..98d8cdcf1e7 100644
--- a/engines/sci/graphics/animate.cpp
+++ b/engines/sci/graphics/animate.cpp
@@ -722,13 +722,7 @@ void GfxAnimate::throttleSpeed() {
// One entry drawn -> check if that entry was a speed benchmark view, if not enable speed throttler
AnimateEntry *onlyCast = &_lastCastData[0];
- if ((onlyCast->viewId == 0) && (onlyCast->loopNo == 13) && (onlyCast->celNo == 0)) {
- // this one is used by jones talkie
- if ((onlyCast->celRect.height() == 8) && (onlyCast->celRect.width() == 8)) {
- _s->_gameIsBenchmarking = true;
- return;
- }
- }
+
// first loop and first cel used?
if ((onlyCast->loopNo == 0) && (onlyCast->celNo == 0)) {
// and that cel has a known speed benchmark resolution
More information about the Scummvm-git-logs
mailing list