[Scummvm-git-logs] scummvm master -> 34459a53a3b28172a1e3239d89ab43a40af91e68

antoniou79 noreply at scummvm.org
Sat May 9 17:22:17 UTC 2026


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:
34459a53a3 MYST3: Remove GUIO_NOSUBTITLES, GUIO_NOSPEECH from detection entries


Commit: 34459a53a3b28172a1e3239d89ab43a40af91e68
    https://github.com/scummvm/scummvm/commit/34459a53a3b28172a1e3239d89ab43a40af91e68
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2026-05-09T20:19:58+03:00

Commit Message:
MYST3: Remove GUIO_NOSUBTITLES, GUIO_NOSPEECH from detection entries

Fixes #16720

Myst 3 has subtitles that can be enabled or disabled from its in-game options screen.
The previous inclusion of GUIO_NOSUBTITLES probably meant that the user cannot change the subtitle settings from the ScummVM GUI (launcher or GMM).
However, due to code in OptionsDialog::apply() (in gui/options.cpp) the "subtitles" and "speech_mute" key/value entries get explicitly removed from the game domain settings when changes are made and applied to game domain options (like toggling the widescreen mod on/off) which might result in an inconsistency with the user's setting of enabling subtitles via the game's interface as described in bug #16720.

This fix removes GUIO_NOSUBTITLES and GUIO_NOSPEECH, thus avoiding the reported issue with the removal of the "subtitles" key.

GUIO_NOSPEECH is replaced by GUIO_NOSPEECHVOLUME.

The fix results in the subtitle settings being available for change via the ScummVM launcher menu (Edit Game -> Audio). If the user sets "subtitles" only in the Text and Speech for the game's domain or if this setting value is inherited from global settings, it will be changed to "both" (by essentially forcefully changing the "speech_mute" config key value to false). Any setting for subtitles speed is ignored by the game.

Note: If we only remove GUIO_NOSUBTITLES, keeping GUIO_NOSPEECH, then the result is that, when overriding audio settings in the game's domain options, the user will see the "Text and speech" radio buttons disabled, but the subtitles speed setting enabled, which could be confusing. This is because GUIO_NOSPEECH also implies GUIO_NOSUBTITLES (at least as far as the "Text and speech" setting goes).

Changed paths:
    engines/myst3/detection.cpp
    engines/myst3/myst3.cpp


diff --git a/engines/myst3/detection.cpp b/engines/myst3/detection.cpp
index 1b4f67c1b1c..2a356057b6d 100644
--- a/engines/myst3/detection.cpp
+++ b/engines/myst3/detection.cpp
@@ -247,7 +247,7 @@ static const Myst3GameDescription gameDescriptions[] = {
 class Myst3MetaEngineDetection : public AdvancedMetaEngineDetection<Myst3GameDescription> {
 public:
 	Myst3MetaEngineDetection() : AdvancedMetaEngineDetection(gameDescriptions, myst3Games) {
-		_guiOptions = GUIO5(GUIO_NOMIDI, GUIO_NOSFX, GUIO_NOSPEECH, GUIO_NOSUBTITLES, GAMEOPTION_WIDESCREEN_MOD);
+		_guiOptions = GUIO4(GUIO_NOMIDI, GUIO_NOSFX, GUIO_NOSPEECHVOLUME, GAMEOPTION_WIDESCREEN_MOD);
 		_maxScanDepth = 3;
 		_directoryGlobs = directoryGlobs;
 	}
diff --git a/engines/myst3/myst3.cpp b/engines/myst3/myst3.cpp
index ed06cf62d7c..e0fe658545b 100644
--- a/engines/myst3/myst3.cpp
+++ b/engines/myst3/myst3.cpp
@@ -1935,6 +1935,7 @@ void Myst3Engine::settingsInitDefaults() {
 	ConfMan.registerDefault("mouse_inverted", false);
 	ConfMan.registerDefault("zip_mode", false);
 	ConfMan.registerDefault("subtitles", false);
+	ConfMan.registerDefault("speech_mute", false);
 	ConfMan.registerDefault("vibrations", true); // Xbox specific
 }
 
@@ -1963,6 +1964,7 @@ void Myst3Engine::settingsApplyFromVars() {
 	ConfMan.setInt("mouse_speed", _state->getMouseSpeed());
 	ConfMan.setBool("zip_mode", _state->getZipModeEnabled());
 	ConfMan.setBool("subtitles", _state->getSubtitlesEnabled());
+	ConfMan.setBool("speech_mute", false);
 
 	if (getPlatform() != Common::kPlatformXbox) {
 		ConfMan.setInt("overall_volume", _state->getOverallVolume() * 256 / 100);
@@ -1999,6 +2001,13 @@ void Myst3Engine::settingsApplyFromVars() {
 void Myst3Engine::syncSoundSettings() {
 	Engine::syncSoundSettings();
 
+	// If speech_mute is set to true, either in the game domain "Text and speech" settings or inherited from the global settings
+	// translate it to false, since speech cannot be muted in Myst 3.
+	// This will result in a setting of "just subtitles" for the game's domain option "Text and speech" to change to "both" (after the game is run).
+	if (ConfMan.getBool("speech_mute") == true) {
+		ConfMan.setBool("speech_mute", false);
+	}
+
 	uint soundOverall = ConfMan.getInt("overall_volume");
 	uint soundVolumeMusic = ConfMan.getInt("music_volume");
 




More information about the Scummvm-git-logs mailing list