[Scummvm-git-logs] scummvm master -> fd13a9bf92afef9087837cda8bc3f7ad8f79122b
sluicebox
22204938+sluicebox at users.noreply.github.com
Tue Jun 9 03:05:32 UTC 2020
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:
fd13a9bf92 SCI32: Fix SQ6 music volume on Polysorbate LX
Commit: fd13a9bf92afef9087837cda8bc3f7ad8f79122b
https://github.com/scummvm/scummvm/commit/fd13a9bf92afef9087837cda8bc3f7ad8f79122b
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2020-06-08T20:01:51-07:00
Commit Message:
SCI32: Fix SQ6 music volume on Polysorbate LX
Fixes bug #9578
Changed paths:
engines/sci/engine/script_patches.cpp
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 2ab4e7cade..395a0e0d3b 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -194,6 +194,7 @@ static const char *const selectorNameTable[] = {
"setLooper", // QFG4
"useStamina", // QFG4
"value", // QFG4
+ "vol", // SQ6
#endif
NULL
};
@@ -311,7 +312,8 @@ enum ScriptPatcherSelectors {
SELECTOR_setCursor,
SELECTOR_setLooper,
SELECTOR_useStamina,
- SELECTOR_value
+ SELECTOR_value,
+ SELECTOR_vol
#endif
};
@@ -18305,6 +18307,48 @@ static const uint16 sq6RestoreErrorDialogPatch[] = {
PATCH_END
};
+// The scripts that manage the music volume on Polysorbate LX have conflicts
+// which can set the volume too low outside and in the arcade and club.
+//
+// Outside the arcade and club, room 330 adjusts the current music and volume
+// based on which entrance ego is nearest and the distance. All Polysorbate LX
+// music plays through gSound1. rm330:init records gSound1:vol when ego enters,
+/// rm330:doit uses this value in volume calculations, and then sExitToArcade or
+// sExitToClub restores gSound1:vol to its original value. The other two street
+// rooms (320 and 340) slowly fade gSound1:vol in from 0 to the normal value of
+// 127 whenever entering from another room.
+//
+// Entering room 330 from another street while gSound1 is still fading stops the
+// fade and causes the current low volume to be recorded and used. This may be
+// so low that the music can't be heard at all. Entering the arcade or club
+// restores this artificially low volume. Both of these areas expect the volume
+// to already be set to 127 and so it remains low until doing something that
+// adjusts and resets it, like going to and from the basement.
+//
+// We fix this by ignoring the value of gSound1:vol when entering room 330 so
+// that the scripts always use the normal initial volume of 127 and restore
+// this when entering the arcade or club. This bug is the only circumstance in
+// which gSound1:vol isn't already 127 when entering room 330.
+//
+// Applies to: All versions
+// Responsible method: rm330:init
+// Fixes bug: #9578
+static const uint16 sq6PolysorbateVolumeSignature[] = {
+ SIG_MAGICDWORD,
+ 0x39, SIG_SELECTOR8(vol), // pushi vol
+ 0x76, // push0
+ 0x81, 0x68, // lag 68
+ 0x4a, SIG_UINT16(0x0004), // send 04 [ gSound1 vol? ]
+ 0xa3, 0x07, // sal 07
+ SIG_END
+};
+
+static const uint16 sq6PolysorbateVolumePatch[] = {
+ 0x35, 0x7f, // ldi 7f [ normal volume ]
+ 0x32, PATCH_UINT16(0x0003), // jmp 0003
+ PATCH_END
+};
+
// script, description, signature patch
static const SciScriptPatcherEntry sq6Signatures[] = {
{ true, 0, "fix slow transitions", 1, sq6SlowTransitionSignature2, sq6SlowTransitionPatch2 },
@@ -18314,6 +18358,7 @@ static const SciScriptPatcherEntry sq6Signatures[] = {
{ true, 15, "fix invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
{ true, 22, "fix invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
{ true, 33, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
+ { true, 330, "fix polysorbate lx music volume", 1, sq6PolysorbateVolumeSignature, sq6PolysorbateVolumePatch },
{ true, 410, "fix slow transitions", 1, sq6SlowTransitionSignature2, sq6SlowTransitionPatch2 },
{ true, 460, "fix invalid array construction", 1, sci21IntArraySignature, sci21IntArrayPatch },
{ true, 500, "fix slow transitions", 1, sq6SlowTransitionSignature1, sq6SlowTransitionPatch1 },
More information about the Scummvm-git-logs
mailing list