[Scummvm-git-logs] scummvm master -> 1f1a013549b2efaae33487a29ebf152e1fc35913

sev- noreply at scummvm.org
Sun Nov 5 21:10:55 UTC 2023


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:
1f1a013549 SCUMM: Change heuristic for identifying Indy 3 Mac sound (bug #14663)


Commit: 1f1a013549b2efaae33487a29ebf152e1fc35913
    https://github.com/scummvm/scummvm/commit/1f1a013549b2efaae33487a29ebf152e1fc35913
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2023-11-05T22:10:52+01:00

Commit Message:
SCUMM: Change heuristic for identifying Indy 3 Mac sound (bug #14663)

Instead of trying to identify it by looking for a value expected to be
the same for all sound effects (which turns out to not be as reliable as
hoped), look for a value that appears to be the same in all music.

This fixes a missing sound effect when pouring liquids, e.g. when
filling the beer stein in the castle Brunwald kitchen, or pouring liquid
on the Venice catacomb torch to loosen it.

Changed paths:
    engines/scumm/sound.cpp


diff --git a/engines/scumm/sound.cpp b/engines/scumm/sound.cpp
index 9fc23198c51..94e4215f756 100644
--- a/engines/scumm/sound.cpp
+++ b/engines/scumm/sound.cpp
@@ -529,13 +529,18 @@ void Sound::triggerSound(int soundID) {
 			warning("Scumm::Sound::triggerSound: encountered audio resource with chunk type 'SOUN' and sound type %d", type);
 		}
 	}
-	else if ((_vm->_game.platform == Common::kPlatformMacintosh) && (_vm->_game.id == GID_INDY3) && READ_BE_UINT16(ptr + 8) == 0x1C) {
+	else if ((_vm->_game.platform == Common::kPlatformMacintosh) && (_vm->_game.id == GID_INDY3) && ptr[4] != 0x7F) {
 		// Sound format as used in Indy3 EGA Mac.
 		// It seems to be closely related to the Amiga format, see player_v3a.cpp
+		//
+		// We assume that if byte 5 is 0x7F, it's music because that's
+		// where the priority of the track is stored, and it's always
+		// that value. See player_v2.cpp
+		//
 		// The following is known:
 		// offset 0, 16 LE: total size
 		// offset 2-7: ?
-		// offset 8, 16BE: offset to sound data (0x1C = 28 -> header size 28?)
+		// offset 8, 16BE: offset to sound data (usually 0x1C = 28 -> header size 28?)
 		// offset 10-11: ? another offset, maybe related to looping?
 		// offset 12, 16BE: size of sound data
 		// offset 14-15: ? often the same as 12-13: maybe loop size/end?




More information about the Scummvm-git-logs mailing list