[Scummvm-git-logs] scummvm master -> c6c8cecb6dd3e81819a8efac4a2a1b68bbddc096

sluicebox noreply at scummvm.org
Mon Sep 8 07:51:18 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
c6c8cecb6d SCI: Fix SLATER Macintosh kDoAudio and kDoSync


Commit: c6c8cecb6dd3e81819a8efac4a2a1b68bbddc096
    https://github.com/scummvm/scummvm/commit/c6c8cecb6dd3e81819a8efac4a2a1b68bbddc096
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2025-09-08T00:48:44-07:00

Commit Message:
SCI: Fix SLATER Macintosh kDoAudio and kDoSync

- kDoAudio is an empty function
- kDoSync treats sync36 tuples as a sync id

Fixes audio and lip-sync on menu screens

Changed paths:
    engines/sci/engine/kernel.cpp
    engines/sci/engine/ksound.cpp


diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp
index 4915afce3d4..49dc9f4db3b 100644
--- a/engines/sci/engine/kernel.cpp
+++ b/engines/sci/engine/kernel.cpp
@@ -777,6 +777,10 @@ void Kernel::loadKernelNames(GameFeatures *features) {
 				_kernelNames[0x84] = "ShowMovie";
 		} else if (g_sci->getGameId() == GID_QFG4DEMO) {
 			_kernelNames[0x7b] = "RemapColors"; // QFG4 Demo has this SCI2 function instead of StrSplit
+		} else if (g_sci->getGameId() == GID_SLATER && g_sci->getPlatform() == Common::kPlatformMacintosh) {
+			// SLATER Macintosh has an empty kDoAudio. Scripts rely on this, as
+			// they contain calls to play non-existent audio from the PC version.
+			_kernelNames[0x75] = "Empty";
 		} else if (_resMan->testResource(ResourceId(kResourceTypeVocab, 184))) {
 			_kernelNames[0x7b] = "RemapColorsKawa";
 			_kernelNames[0x88] = "KawaDbugStr";
diff --git a/engines/sci/engine/ksound.cpp b/engines/sci/engine/ksound.cpp
index d219d0460b4..04cc6046aea 100644
--- a/engines/sci/engine/ksound.cpp
+++ b/engines/sci/engine/ksound.cpp
@@ -385,8 +385,15 @@ reg_t kDoSync(EngineState *s, int argc, reg_t *argv) {
 		if (argc == 3) {
 			id = ResourceId(kResourceTypeSync, argv[2].toUint16());
 		} else if (argc == 7) {
-			id = ResourceId(kResourceTypeSync36, argv[2].toUint16(), argv[3].toUint16(), argv[4].toUint16(),
-							argv[5].toUint16(), argv[6].toUint16());
+			if (g_sci->getGameId() == GID_SLATER && g_sci->getPlatform() == Common::kPlatformMacintosh) {
+				// SLATER Macintosh does not support sync36 tuples, but the scripts
+				// still pass 7 parameters because it was modified from the PC
+				// version. Ignore the extra parameters as the Mac interpreter does.
+				id = ResourceId(kResourceTypeSync, argv[2].toUint16());
+			} else {
+				id = ResourceId(kResourceTypeSync36, argv[2].toUint16(), argv[3].toUint16(), argv[4].toUint16(),
+				                argv[5].toUint16(), argv[6].toUint16());
+			}
 		} else {
 			warning("kDoSync: Start called with an unknown number of parameters (%d)", argc);
 			return s->r_acc;




More information about the Scummvm-git-logs mailing list