[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