[Scummvm-git-logs] scummvm master -> 609e8b54e017020828b62a46dd3ae8113d0e1cfc

bluegr noreply at scummvm.org
Mon Nov 4 08:12:21 UTC 2024


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:
609e8b54e0 SCI: Disallow saving from the GMM and add a new game option to allow it


Commit: 609e8b54e017020828b62a46dd3ae8113d0e1cfc
    https://github.com/scummvm/scummvm/commit/609e8b54e017020828b62a46dd3ae8113d0e1cfc
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2024-11-04T10:11:57+02:00

Commit Message:
SCI: Disallow saving from the GMM and add a new game option to allow it

This disables the feature, but allows users to enable it, if they want,
via a new checkbox. An appropriate warning has been added to the
checkbox, notifying the user that saves created through the GMM may be
corrupted and unusable. This addresses bug 15358

Changed paths:
    engines/sci/detection.h
    engines/sci/detection_options.h
    engines/sci/detection_tables.h
    engines/sci/engine/features.cpp


diff --git a/engines/sci/detection.h b/engines/sci/detection.h
index 63875e39d13..ae5df995f24 100644
--- a/engines/sci/detection.h
+++ b/engines/sci/detection.h
@@ -43,6 +43,7 @@ namespace Sci {
 #define GAMEOPTION_PALETTE_MODS             GUIO_GAMEOPTIONS15
 #define GAMEOPTION_SQ1_BEARDED_MUSICIANS    GUIO_GAMEOPTIONS16
 #define GAMEOPTION_TTS                      GUIO_GAMEOPTIONS17
+#define GAMEOPTION_ENABLE_GMM_SAVE          GUIO_GAMEOPTIONS18
 
 enum SciGameId {
 	GID_ALL,
diff --git a/engines/sci/detection_options.h b/engines/sci/detection_options.h
index cc77d65f255..9bcadf2c4f0 100644
--- a/engines/sci/detection_options.h
+++ b/engines/sci/detection_options.h
@@ -230,6 +230,18 @@ const ADExtraGuiOptionsMap optionsList[] = {
  	},
 #endif
 
+	{
+		GAMEOPTION_ENABLE_GMM_SAVE,
+		{
+			_s("Enable saving via the GMM"),
+			_s("Allows saving via the GMM. WARNING: saves created via the GMM may be corrupted and unusable. Use at your own risk!"),
+			"gmm_save_enabled",
+			false,
+			0,
+			0
+		}
+ 	},
+
 	AD_EXTRA_GUI_OPTIONS_TERMINATOR
 };
 
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 4e695adc013..0f59da1ccc8 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -23,17 +23,17 @@
 
 namespace Sci {
 
-#define GUIO_STD16 GUIO6(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS)
-#define GUIO_STD16_HIRES GUIO7(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS)
-#define GUIO_STD16_UNDITHER GUIO7(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS)
-#define GUIO_STD16_PALETTEMODS GUIO8(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_PALETTE_MODS, GAMEOPTION_TTS)
-#define GUIO_STD16_SPEECH GUIO4(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING)
-#define GUIO_STD16_SPEECH_GM GUIO5(GUIO_MIDIGM, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING)
-#define GUIO_STD16_MAC GUIO5(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS)
-#define GUIO_STD16_MAC_HIRESFONTS GUIO6(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS)
-#define GUIO_STD16_MAC_UNDITHER GUIO6(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS)
-#define GUIO_STD16_MAC_PALETTEMODS GUIO7(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_PALETTE_MODS, GAMEOPTION_TTS)
-#define GUIO_STD16_MAC_SPEECH GUIO3(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING)
+#define GUIO_STD16 GUIO7(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_HIRES GUIO8(GUIO_NOSPEECH, GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_UNDITHER GUIO8(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_PALETTEMODS GUIO9(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_PALETTE_MODS, GAMEOPTION_TTS, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_SPEECH GUIO5(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_SPEECH_GM GUIO6(GUIO_MIDIGM, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_MAC GUIO6(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_MAC_HIRESFONTS GUIO7(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_MAC_UNDITHER GUIO7(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_TTS, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_MAC_PALETTEMODS GUIO8(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_PALETTE_MODS, GAMEOPTION_TTS, GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_STD16_MAC_SPEECH GUIO4(GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_MIDI_MODE, GAMEOPTION_RGB_RENDERING, GAMEOPTION_ENABLE_GMM_SAVE)
 
 #define FANMADE_L(name, resMapMd5, resMapSize, resMd5, resSize, resVol, lang) \
 	{"sci-fanmade", name, { \
@@ -869,18 +869,22 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 		Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_STD16_SPEECH	},
 
-#define GUIO_GK1_FLOPPY GUIO3(GUIO_NOSPEECH, \
+#define GUIO_GK1_FLOPPY GUIO4(GUIO_NOSPEECH, \
 							  GAMEOPTION_ORIGINAL_SAVELOAD, \
-							  GAMEOPTION_TTS)
-#define GUIO_GK1_CD_DOS GUIO4(GUIO_LINKSPEECHTOSFX, \
+							  GAMEOPTION_TTS, \
+							  GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_GK1_CD_DOS GUIO5(GUIO_LINKSPEECHTOSFX, \
 							  GAMEOPTION_ORIGINAL_SAVELOAD, \
 							  GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, \
-							  GAMEOPTION_HQ_VIDEO)
-#define GUIO_GK1_CD_WIN GUIO3(GUIO_LINKSPEECHTOSFX, \
+							  GAMEOPTION_HQ_VIDEO, \
+							  GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_GK1_CD_WIN GUIO4(GUIO_LINKSPEECHTOSFX, \
 							  GAMEOPTION_ORIGINAL_SAVELOAD, \
-							  GAMEOPTION_HQ_VIDEO)
-#define GUIO_GK1_MAC    GUIO2(GUIO_NOSPEECH, \
-							  GAMEOPTION_TTS)
+							  GAMEOPTION_HQ_VIDEO, \
+							  GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_GK1_MAC    GUIO3(GUIO_NOSPEECH, \
+							  GAMEOPTION_TTS, \
+							  GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Gabriel Knight - English DOS Floppy
 	// SCI interpreter version 2.000.000
@@ -1004,20 +1008,22 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 #undef GUIO_GK1_CD_WIN
 #undef GUIO_GK1_MAC
 
-#define GUIO_GK2_DEMO GUIO8(GUIO_NOSUBTITLES, \
+#define GUIO_GK2_DEMO GUIO9(GUIO_NOSUBTITLES, \
 							GUIO_NOMUSIC, \
 							GUIO_NOSFX, \
 							GUIO_NOSPEECH, \
 							GUIO_NOMIDI, \
 							GUIO_NOLAUNCHLOAD, \
 							GUIO_NOASPECT, \
-							GAMEOPTION_HQ_VIDEO)
-#define GUIO_GK2      GUIO6(GUIO_LINKSPEECHTOSFX, \
+							GAMEOPTION_HQ_VIDEO, \
+							GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_GK2      GUIO7(GUIO_LINKSPEECHTOSFX, \
 							GUIO_NOMIDI, \
 							GUIO_NOASPECT, \
 							GAMEOPTION_ORIGINAL_SAVELOAD, \
 							GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
-							GAMEOPTION_HQ_VIDEO)
+							GAMEOPTION_HQ_VIDEO, \
+							GAMEOPTION_ENABLE_GMM_SAVE)
 #define GUIO_GK2_MAC  GUIO_GK2
 
 	// Gabriel Knight 2 - English Windows Non-Interactive Demo
@@ -1388,12 +1394,13 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 						  GUIO_NOASPECT)
 
 // versions with bridge or poker have save/load screens
-#define GUIO_HOYLE5_SAVELOAD GUIO6(GUIO_NOMIDI, \
+#define GUIO_HOYLE5_SAVELOAD GUIO7(GUIO_NOMIDI, \
 								   GUIO_NOLAUNCHLOAD, \
 								   GUIO_LINKMUSICTOSFX, \
 								   GUIO_LINKSPEECHTOSFX, \
 								   GUIO_NOASPECT, \
-								   GAMEOPTION_ORIGINAL_SAVELOAD )
+								   GAMEOPTION_ORIGINAL_SAVELOAD, \
+								   GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Hoyle 5 (Hoyle Classic Games) - Windows demo
 	// Executable scanning reports "2.100.002"
@@ -1823,12 +1830,13 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 		Common::RU_RUS, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_STD16_UNDITHER	},
 
-#define GUIO_KQ5_CD_WINDOWS GUIO6(GUIO_MIDIGM,                         \
+#define GUIO_KQ5_CD_WINDOWS GUIO7(GUIO_MIDIGM,                         \
 								  GAMEOPTION_PREFER_DIGITAL_SFX,       \
 								  GAMEOPTION_ORIGINAL_SAVELOAD,        \
 								  GAMEOPTION_MIDI_MODE,                \
 								  GAMEOPTION_RGB_RENDERING,            \
-								  GAMEOPTION_WINDOWS_CURSORS)
+								  GAMEOPTION_WINDOWS_CURSORS,          \
+								  GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// King's Quest 5 - English Amiga (from www.back2roots.org)
 	// Game version 1.000.000
@@ -2250,26 +2258,29 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 
 #undef GUIO_KQ5_CD_WINDOWS
 
-#define GUIO_KQ6_DEMO GUIO6(GUIO_NOSPEECH,                     \
+#define GUIO_KQ6_DEMO GUIO7(GUIO_NOSPEECH,                     \
 						  GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, \
 	                      GAMEOPTION_PREFER_DIGITAL_SFX,       \
 	                      GAMEOPTION_ORIGINAL_SAVELOAD,        \
 	                      GAMEOPTION_MIDI_MODE,                \
-	                      GAMEOPTION_RGB_RENDERING)
+	                      GAMEOPTION_RGB_RENDERING,            \
+	                      GAMEOPTION_ENABLE_GMM_SAVE)
 
-#define GUIO_KQ6_CD GUIO5(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, \
+#define GUIO_KQ6_CD GUIO6(GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, \
 						  GAMEOPTION_PREFER_DIGITAL_SFX,       \
 						  GAMEOPTION_ORIGINAL_SAVELOAD,        \
 						  GAMEOPTION_MIDI_MODE,                \
-						  GAMEOPTION_RGB_RENDERING)
+						  GAMEOPTION_RGB_RENDERING,            \
+						  GAMEOPTION_ENABLE_GMM_SAVE)
 
-#define GUIO_KQ6_CD_WINDOWS GUIO7(GUIO_NOASPECT,                       \
+#define GUIO_KQ6_CD_WINDOWS GUIO8(GUIO_NOASPECT,                       \
 								  GAMEOPTION_WINDOWS_CURSORS,          \
 								  GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, \
 								  GAMEOPTION_PREFER_DIGITAL_SFX,       \
 								  GAMEOPTION_ORIGINAL_SAVELOAD,        \
 								  GAMEOPTION_MIDI_MODE,                \
-								  GAMEOPTION_RGB_RENDERING)
+								  GAMEOPTION_RGB_RENDERING,            \
+								  GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// King's Quest 6 - English DOS Playable CD "Sneak Peaks" Demo (first island fully playable)
 	//  (supplied by KQ5 G5 in bug report #6824)
@@ -2403,16 +2414,18 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 #undef GUIO_KQ6_CD
 #undef GUIO_KQ6_CD_WINDOWS
 
-#define GUIO_KQ7_DEMO GUIO5(GUIO_NOSUBTITLES, \
+#define GUIO_KQ7_DEMO GUIO6(GUIO_NOSUBTITLES, \
 							GUIO_NOLAUNCHLOAD, \
 							GUIO_LINKMUSICTOSFX, \
 							GUIO_LINKSPEECHTOSFX, \
-							GUIO_NOASPECT)
-#define GUIO_KQ7      GUIO5(GUIO_NOASPECT, \
+							GUIO_NOASPECT, \
+							GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_KQ7      GUIO6(GUIO_NOASPECT, \
 							GUIO_LINKMUSICTOSFX, \
 							GUIO_LINKSPEECHTOSFX, \
 							GAMEOPTION_HQ_VIDEO, \
-							GAMEOPTION_UPSCALE_VIDEOS)
+							GAMEOPTION_UPSCALE_VIDEOS, \
+							GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// King's Quest 7 - English Windows (from the King's Quest Collection)
 	// Executable scanning reports "2.100.002", VERSION file reports "1.4"
@@ -2811,21 +2824,23 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 								   GUIO_NOMIDI, \
 								   GUIO_NOLAUNCHLOAD, \
 								   GAMEOPTION_HQ_VIDEO)
-#define GUIO_LIGHTHOUSE      GUIO8(GUIO_NOASPECT, \
+#define GUIO_LIGHTHOUSE      GUIO9(GUIO_NOASPECT, \
 								   GUIO_NOMIDI, \
 								   GUIO_NOSUBTITLES, \
 								   GUIO_LINKMUSICTOSFX, \
 								   GUIO_LINKSPEECHTOSFX, \
 								   GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
 								   GAMEOPTION_ORIGINAL_SAVELOAD, \
-								   GAMEOPTION_HQ_VIDEO)
-#define GUIO_LIGHTHOUSE_MAC  GUIO7(GUIO_NOASPECT, \
+								   GAMEOPTION_HQ_VIDEO, \
+								   GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_LIGHTHOUSE_MAC  GUIO8(GUIO_NOASPECT, \
 								   GUIO_NOMIDI, \
 								   GUIO_NOSUBTITLES, \
 								   GUIO_LINKMUSICTOSFX, \
 								   GUIO_LINKSPEECHTOSFX, \
 								   GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
-								   GAMEOPTION_HQ_VIDEO)
+								   GAMEOPTION_HQ_VIDEO, \
+								   GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Lighthouse - English Windows Demo (from jvprat)
 	// Executable scanning reports "2.100.002", VERSION file reports "1.00", plays 2.VMD
@@ -3616,11 +3631,13 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 		Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_STD16	},
 
-#define GUIO_LSL6HIRES GUIO3(GUIO_NOASPECT, \
+#define GUIO_LSL6HIRES GUIO4(GUIO_NOASPECT, \
 							 GUIO_LINKSPEECHTOSFX, \
-							 GAMEOPTION_ORIGINAL_SAVELOAD)
-#define GUIO_LSL6HIRES_MAC GUIO2(GUIO_NOASPECT, \
-								 GUIO_LINKSPEECHTOSFX)
+							 GAMEOPTION_ORIGINAL_SAVELOAD, \
+							 GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_LSL6HIRES_MAC GUIO3(GUIO_NOASPECT, \
+								 GUIO_LINKSPEECHTOSFX, \
+								 GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Larry 6 - English/German DOS CD - HIRES
 	// SCI interpreter version 2.100.002
@@ -3683,12 +3700,13 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 							 GUIO_NOMIDI, \
 							 GUIO_NOLAUNCHLOAD, \
 							 GAMEOPTION_LARRYSCALE)
-#define GUIO_LSL7      GUIO6(GUIO_NOASPECT, \
+#define GUIO_LSL7      GUIO7(GUIO_NOASPECT, \
 							 GUIO_NOMIDI, \
 							 GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
 							 GAMEOPTION_ORIGINAL_SAVELOAD, \
 							 GAMEOPTION_HQ_VIDEO, \
-							 GAMEOPTION_LARRYSCALE)
+							 GAMEOPTION_LARRYSCALE, \
+							 GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Larry 7 - English DOS Demo (provided by richiefs in bug report #4214)
 	// SCI interpreter version 2.100.002
@@ -4132,7 +4150,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 #undef GUIO_PHANTASMAGORIA
 #undef GUIO_PHANTASMAGORIA_MAC
 
-#define GUIO_PHANTASMAGORIA2 GUIO9(GUIO_NOSUBTITLES, \
+#define GUIO_PHANTASMAGORIA2 GUIO10(GUIO_NOSUBTITLES, \
 								   GUIO_LINKMUSICTOSFX, \
 								   GUIO_LINKSPEECHTOSFX, \
 								   GUIO_NOMIDI, \
@@ -4140,17 +4158,19 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 								   GAMEOPTION_ORIGINAL_SAVELOAD, \
 								   GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
 								   GAMEOPTION_HQ_VIDEO, \
-								   GAMEOPTION_ENABLE_CENSORING)
+								   GAMEOPTION_ENABLE_CENSORING, \
+								   GAMEOPTION_ENABLE_GMM_SAVE)
 // TODO: Learn which are the censored game editions and give them this GUIO
 // instead
-#define GUIO_PHANTASMAGORIA2_CENSORED GUIO8(GUIO_NOSUBTITLES, \
+#define GUIO_PHANTASMAGORIA2_CENSORED GUIO9(GUIO_NOSUBTITLES, \
 											GUIO_LINKMUSICTOSFX, \
 											GUIO_LINKSPEECHTOSFX, \
 											GUIO_NOMIDI, \
 											GUIO_NOASPECT, \
 											GAMEOPTION_ORIGINAL_SAVELOAD, \
 											GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
-											GAMEOPTION_HQ_VIDEO)
+											GAMEOPTION_HQ_VIDEO, \
+											GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Some versions of Phantasmagoria 2 were heavily censored.
 	// Censored versions (data files are currently unknown to us): UK, Australia, first English release in Germany
@@ -4518,13 +4538,16 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 		Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_STD16	},
 
-#define GUIO_PQ4_FLOPPY GUIO3(GUIO_NOSPEECH, \
+#define GUIO_PQ4_FLOPPY GUIO4(GUIO_NOSPEECH, \
 							  GAMEOPTION_ORIGINAL_SAVELOAD, \
-							  GAMEOPTION_TTS)
-#define GUIO_PQ4_CD     GUIO3(GUIO_LINKSPEECHTOSFX, \
+							  GAMEOPTION_TTS, \
+							  GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_PQ4_CD     GUIO4(GUIO_LINKSPEECHTOSFX, \
 							  GAMEOPTION_HIGH_RESOLUTION_GRAPHICS, \
-							  GAMEOPTION_ORIGINAL_SAVELOAD)
-#define GUIO_PQ4_MAC    GUIO1(GUIO_LINKSPEECHTOSFX)
+							  GAMEOPTION_ORIGINAL_SAVELOAD, \
+							  GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_PQ4_MAC    GUIO2(GUIO_LINKSPEECHTOSFX, \
+							  GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Police Quest 4 - English DOS CD
 	// Executable scanning reports "2.100.002", VERSION file reports "1.100.000"
@@ -4594,7 +4617,8 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 							   GUIO_LINKMUSICTOSFX, \
 							   GUIO_LINKSPEECHTOSFX, \
 							   GUIO_NOASPECT, \
-							   GUIO_NOLAUNCHLOAD)
+							   GUIO_NOLAUNCHLOAD, \
+							   GAMEOPTION_ENABLE_GMM_SAVE)
 #define GUIO_PQSWAT      GUIO8(GUIO_NOSUBTITLES, \
 							   GUIO_NOMIDI, \
 							   GUIO_LINKMUSICTOSFX, \
@@ -4602,7 +4626,8 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 							   GUIO_NOASPECT, \
 							   GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
 							   GAMEOPTION_HQ_VIDEO, \
-							   GAMEOPTION_UPSCALE_VIDEOS)
+							   GAMEOPTION_UPSCALE_VIDEOS, \
+							   GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Police Quest: SWAT - English DOS/Windows Demo (from jvprat)
 	// Executable scanning reports "2.100.002", VERSION file reports "0.001.200"
@@ -5118,12 +5143,14 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 		Common::EN_ANY, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_STD16 },
 
-#define GUIO_QFG4_FLOPPY GUIO3(GUIO_NOSPEECH, \
+#define GUIO_QFG4_FLOPPY GUIO4(GUIO_NOSPEECH, \
 							   GAMEOPTION_ORIGINAL_SAVELOAD, \
-							   GAMEOPTION_TTS)
-#define GUIO_QFG4_CD     GUIO3(GUIO_LINKSPEECHTOSFX, \
+							   GAMEOPTION_TTS, \
+							   GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_QFG4_CD     GUIO4(GUIO_LINKSPEECHTOSFX, \
 							   GAMEOPTION_ORIGINAL_SAVELOAD, \
-							   GAMEOPTION_HQ_VIDEO)
+							   GAMEOPTION_HQ_VIDEO, \
+							   GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Quest for Glory 4 1.1 Floppy - English DOS (supplied by markcool in bug report #4280)
 	// SCI interpreter version 2.000.000
@@ -5290,18 +5317,20 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 		Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_UNSTABLE, GUIO1(GUIO_NONE) },
 
-#define GUIO_SHIVERS_DEMO GUIO6(GUIO_NOSUBTITLES, \
+#define GUIO_SHIVERS_DEMO GUIO7(GUIO_NOSUBTITLES, \
 								GUIO_NOMIDI, \
 								GUIO_NOLAUNCHLOAD, \
 								GUIO_LINKSPEECHTOSFX, \
 								GUIO_LINKMUSICTOSFX, \
-								GUIO_NOASPECT)
-#define GUIO_SHIVERS      GUIO6(GUIO_NOMIDI, \
+								GUIO_NOASPECT, \
+								GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_SHIVERS      GUIO7(GUIO_NOMIDI, \
 								GUIO_LINKSPEECHTOSFX, \
 								GUIO_LINKMUSICTOSFX, \
 								GUIO_NOASPECT, \
 								GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
-								GAMEOPTION_HQ_VIDEO)
+								GAMEOPTION_HQ_VIDEO, \
+								GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Shivers - English Windows (from jvprat)
 	// Executable scanning reports "2.100.002", VERSION file reports "1.02"
@@ -5433,7 +5462,8 @@ static const struct ADGameDescription SciGameDescriptions[] = {
                                   GAMEOPTION_MIDI_MODE,          \
                                   GAMEOPTION_RGB_RENDERING,      \
                                   GAMEOPTION_SQ1_BEARDED_MUSICIANS, \
-                                  GAMEOPTION_TTS)
+                                  GAMEOPTION_TTS, \
+                                  GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Space Quest 1 VGA Remake - English Amiga (from www.back2roots.org)
 	// SCI interpreter version 1.000.510 (just a guess)
@@ -5735,19 +5765,21 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 		Common::ES_ESP, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_STD16_PALETTEMODS },
 
-#define GUIO_SQ4_CD GUIO5(GAMEOPTION_SQ4_SILVER_CURSORS,	\
+#define GUIO_SQ4_CD GUIO6(GAMEOPTION_SQ4_SILVER_CURSORS,	\
 						  GAMEOPTION_PREFER_DIGITAL_SFX,	\
 						  GAMEOPTION_ORIGINAL_SAVELOAD,		\
 						  GAMEOPTION_MIDI_MODE,				\
-						  GAMEOPTION_RGB_RENDERING)
+						  GAMEOPTION_RGB_RENDERING,         \
+						  GAMEOPTION_ENABLE_GMM_SAVE)
 
-#define GUIO_SQ4_CD_WINDOWS GUIO7(GUIO_MIDIGM,				\
+#define GUIO_SQ4_CD_WINDOWS GUIO8(GUIO_MIDIGM,				\
 						  GAMEOPTION_WINDOWS_CURSORS,		\
 						  GAMEOPTION_SQ4_SILVER_CURSORS,	\
 	                      GAMEOPTION_PREFER_DIGITAL_SFX,	\
 	                      GAMEOPTION_ORIGINAL_SAVELOAD,		\
 	                      GAMEOPTION_MIDI_MODE,				\
-	                      GAMEOPTION_RGB_RENDERING)
+	                      GAMEOPTION_RGB_RENDERING,         \
+	                      GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Space Quest 4 - English Amiga
 	// Executable scanning reports "1.004.024"
@@ -6105,18 +6137,21 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 		Common::HE_ISR, Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO_STD16	},
 
-#define GUIO_SQ6_DEMO GUIO3(GUIO_NOLAUNCHLOAD, \
+#define GUIO_SQ6_DEMO GUIO4(GUIO_NOLAUNCHLOAD, \
 							GUIO_LINKSPEECHTOSFX, \
-							GUIO_NOASPECT)
-#define GUIO_SQ6      GUIO5(GUIO_LINKSPEECHTOSFX, \
+							GUIO_NOASPECT, \
+							GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_SQ6      GUIO6(GUIO_LINKSPEECHTOSFX, \
 							GUIO_NOASPECT, \
 							GAMEOPTION_ORIGINAL_SAVELOAD, \
 							GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
-							GAMEOPTION_HQ_VIDEO)
-#define GUIO_SQ6_MAC  GUIO4(GUIO_LINKSPEECHTOSFX, \
+							GAMEOPTION_HQ_VIDEO, \
+							GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_SQ6_MAC  GUIO5(GUIO_LINKSPEECHTOSFX, \
 							GUIO_NOASPECT, \
 							GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
-							GAMEOPTION_HQ_VIDEO)
+							GAMEOPTION_HQ_VIDEO, \
+							GAMEOPTION_ENABLE_GMM_SAVE)
 
 	// Space Quest 6 - English DOS/Win3.11 CD (from the Space Quest Collection)
 	// Executable scanning reports "2.100.002", VERSION file reports "1.0"
@@ -6233,14 +6268,16 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 		Common::EN_ANY, Common::kPlatformDOS, ADGF_DEMO, GUIO_STD16	},
 
-#define GUIO_TORIN_DEMO GUIO3(GUIO_NOMIDI, \
+#define GUIO_TORIN_DEMO GUIO4(GUIO_NOMIDI, \
 							  GUIO_NOLAUNCHLOAD, \
-							  GUIO_NOASPECT)
-#define GUIO_TORIN      GUIO5(GUIO_NOMIDI, \
+							  GUIO_NOASPECT, \
+							  GAMEOPTION_ENABLE_GMM_SAVE)
+#define GUIO_TORIN      GUIO6(GUIO_NOMIDI, \
 							  GUIO_NOASPECT, \
 							  GAMEOPTION_ORIGINAL_SAVELOAD, \
 							  GAMEOPTION_ENABLE_BLACK_LINED_VIDEO, \
-							  GAMEOPTION_HQ_VIDEO)
+							  GAMEOPTION_HQ_VIDEO, \
+							  GAMEOPTION_ENABLE_GMM_SAVE)
 #define GUIO_TORIN_MAC  GUIO_TORIN
 
 	// Torin's Passage - English DOS/Windows Early Demo
diff --git a/engines/sci/engine/features.cpp b/engines/sci/engine/features.cpp
index 2ecf52b7e37..90b7e8a04fb 100644
--- a/engines/sci/engine/features.cpp
+++ b/engines/sci/engine/features.cpp
@@ -862,6 +862,9 @@ bool GameFeatures::hasScriptObjectNames() const {
 }
 
 bool GameFeatures::canSaveFromGMM() const {
+	if (!ConfMan.getBool("gmm_save_enabled"))
+		return false;
+
 	switch (g_sci->getGameId()) {
 	// ==== Demos/mini-games with no saving functionality ====
 	case GID_ASTROCHICKEN:




More information about the Scummvm-git-logs mailing list