[Scummvm-git-logs] scummvm master -> 589aabcb1902e92c71f7f435c3e84c0c8a096731

NMIError noreply at scummvm.org
Mon Sep 29 19:50:26 UTC 2025


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

Summary:
6d32eda8e2 DARKSEED: Register engine options defaults
589aabcb19 AGOS: Add MIDI mode GUI option


Commit: 6d32eda8e2f3b221069a66b8420502ad511cee38
    https://github.com/scummvm/scummvm/commit/6d32eda8e2f3b221069a66b8420502ad511cee38
Author: Coen Rampen (crampen at gmail.com)
Date: 2025-09-29T21:48:57+02:00

Commit Message:
DARKSEED: Register engine options defaults

Changed paths:
    engines/darkseed/metaengine.cpp
    engines/darkseed/metaengine.h


diff --git a/engines/darkseed/metaengine.cpp b/engines/darkseed/metaengine.cpp
index 4a0aeb5c63a..cd48163c620 100644
--- a/engines/darkseed/metaengine.cpp
+++ b/engines/darkseed/metaengine.cpp
@@ -80,6 +80,14 @@ bool DarkseedMetaEngine::hasFeature(MetaEngineFeature f) const {
 		(f == kSupportsLoadingDuringStartup);
 }
 
+void DarkseedMetaEngine::registerDefaultSettings(const Common::String &target) const {
+	for (const ADExtraGuiOptionsMap *entry = Darkseed::optionsList; entry->guioFlag; ++entry)
+		ConfMan.registerDefault(entry->option.configOption, entry->option.defaultState);
+
+	for (const Darkseed::PopUpOptionsMap *entry = Darkseed::popUpOptionsList; entry->guioFlag; ++entry)
+		ConfMan.registerDefault(entry->configOption, entry->defaultState);
+}
+
 GUI::OptionsContainerWidget *DarkseedMetaEngine::buildEngineOptionsWidget(GUI::GuiObject *boss, const Common::String &name, const Common::String &target) const {
 	return new Darkseed::OptionsWidget(boss, name, target);
 }
diff --git a/engines/darkseed/metaengine.h b/engines/darkseed/metaengine.h
index 895177c4962..1f6d04fb811 100644
--- a/engines/darkseed/metaengine.h
+++ b/engines/darkseed/metaengine.h
@@ -39,6 +39,7 @@ public:
 	bool hasFeature(MetaEngineFeature f) const override;
 
 	Common::KeymapArray initKeymaps(const char *target) const override;
+	void registerDefaultSettings(const Common::String &target) const override;
 	GUI::OptionsContainerWidget *buildEngineOptionsWidget(GUI::GuiObject *boss, const Common::String &name, const Common::String &target) const override;
 };
 


Commit: 589aabcb1902e92c71f7f435c3e84c0c8a096731
    https://github.com/scummvm/scummvm/commit/589aabcb1902e92c71f7f435c3e84c0c8a096731
Author: Coen Rampen (crampen at gmail.com)
Date: 2025-09-29T21:49:31+02:00

Commit Message:
AGOS: Add MIDI mode GUI option

Changed paths:
  A engines/agos/dialogs.cpp
  A engines/agos/dialogs.h
    engines/agos/POTFILES
    engines/agos/detection.h
    engines/agos/detection_tables.h
    engines/agos/metaengine.cpp
    engines/agos/module.mk


diff --git a/engines/agos/POTFILES b/engines/agos/POTFILES
index 95027f8fe42..0c93690b03b 100644
--- a/engines/agos/POTFILES
+++ b/engines/agos/POTFILES
@@ -2,3 +2,4 @@ engines/agos/saveload.cpp
 engines/agos/animation.cpp
 engines/agos/metaengine.cpp
 engines/agos/midi.cpp
+engines/agos/dialogs.h
diff --git a/engines/agos/detection.h b/engines/agos/detection.h
index 87a63a90852..c5cdffe5296 100644
--- a/engines/agos/detection.h
+++ b/engines/agos/detection.h
@@ -49,10 +49,19 @@ struct AGOSGameDescription {
 
 #define GAMEOPTION_OPL3_MODE            GUIO_GAMEOPTIONS1
 #define GAMEOPTION_DOS_TEMPOS           GUIO_GAMEOPTIONS2
-#define GAMEOPTION_WINDOWS_TEMPOS       GUIO_GAMEOPTIONS3
-#define GAMEOPTION_PREFER_DIGITAL_SFX   GUIO_GAMEOPTIONS4
-#define GAMEOPTION_DISABLE_FADE_EFFECTS GUIO_GAMEOPTIONS5
-#define GAMEOPTION_COPY_PROTECTION      GUIO_GAMEOPTIONS6
+#define GAMEOPTION_PREFER_DIGITAL_SFX   GUIO_GAMEOPTIONS3
+#define GAMEOPTION_DISABLE_FADE_EFFECTS GUIO_GAMEOPTIONS4
+#define GAMEOPTION_COPY_PROTECTION      GUIO_GAMEOPTIONS5
+#define GAMEOPTION_MIDI_MODE            GUIO_GAMEOPTIONS6
+
+/** MIDI devices */
+enum kMidiMode {
+	kMidiModeStandard,
+	kMidiModeFB01,
+	kMidiModeD110,
+	kMidiModeMT540,
+	kMidiModeCT460
+};
 
 } // End of namespace AGOS
 
diff --git a/engines/agos/detection_tables.h b/engines/agos/detection_tables.h
index e43059299a8..679264a39b5 100644
--- a/engines/agos/detection_tables.h
+++ b/engines/agos/detection_tables.h
@@ -284,7 +284,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformDOS,
 			ADGF_DEMO,
-			GUIO2(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE)
+			GUIO3(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE, GAMEOPTION_MIDI_MODE)
 		},
 
 		GType_ELVIRA1,
@@ -307,7 +307,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformDOS,
 			ADGF_NO_FLAGS,
-			GUIO2(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE)
+			GUIO3(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE, GAMEOPTION_MIDI_MODE)
 		},
 
 		GType_ELVIRA1,
@@ -330,7 +330,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::CS_CZE,
 			Common::kPlatformDOS,
 			ADGF_NO_FLAGS,
-			GUIO2(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE)
+			GUIO3(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE, GAMEOPTION_MIDI_MODE)
 		},
 
 		GType_ELVIRA1,
@@ -353,7 +353,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::ES_ESP,
 			Common::kPlatformDOS,
 			ADGF_NO_FLAGS,
-			GUIO2(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE)
+			GUIO3(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE, GAMEOPTION_MIDI_MODE)
 		},
 
 		GType_ELVIRA1,
@@ -376,7 +376,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::FR_FRA,
 			Common::kPlatformDOS,
 			ADGF_NO_FLAGS,
-			GUIO2(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE)
+			GUIO3(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE, GAMEOPTION_MIDI_MODE)
 		},
 
 		GType_ELVIRA1,
@@ -399,7 +399,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::DE_DEU,
 			Common::kPlatformDOS,
 			ADGF_NO_FLAGS,
-			GUIO2(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE)
+			GUIO3(GUIO_NOSPEECH, GAMEOPTION_OPL3_MODE, GAMEOPTION_MIDI_MODE)
 		},
 
 		GType_ELVIRA1,
@@ -1132,7 +1132,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformAcorn,
 			ADGF_DEMO,
-			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_WINDOWS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
+			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_DOS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
 		},
 
 		GType_SIMON1,
@@ -1157,7 +1157,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformAcorn,
 			ADGF_CD,
-			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_WINDOWS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
+			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_DOS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
 		},
 
 		GType_SIMON1,
@@ -2015,7 +2015,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformWindows,
 			ADGF_CD,
-			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_WINDOWS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
+			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_DOS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
 		},
 
 		GType_SIMON1,
@@ -2040,7 +2040,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::DE_DEU,
 			Common::kPlatformWindows,
 			ADGF_CD,
-			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_WINDOWS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
+			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_DOS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
 		},
 
 		GType_SIMON1,
@@ -2065,7 +2065,7 @@ static const AGOSGameDescription gameDescriptions[] = {
 			Common::EN_ANY,
 			Common::kPlatformWindows,
 			ADGF_CD,
-			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_WINDOWS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
+			GUIO3(GUIO_NOSUBTITLES, GAMEOPTION_DOS_TEMPOS, GAMEOPTION_DISABLE_FADE_EFFECTS)
 		},
 
 		GType_SIMON1,
diff --git a/engines/agos/dialogs.cpp b/engines/agos/dialogs.cpp
new file mode 100644
index 00000000000..0211667a309
--- /dev/null
+++ b/engines/agos/dialogs.cpp
@@ -0,0 +1,91 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "base/plugins.h"
+#include "common/file.h"
+#include "common/hashmap.h"
+#include "common/ptr.h"
+#include "common/translation.h"
+#include "engines/advancedDetector.h"
+
+#include "agos/detection.h"
+#include "agos/dialogs.h"
+
+namespace AGOS {
+
+OptionsWidget::OptionsWidget(GuiObject *boss, const Common::String &name, const Common::String &domain) : OptionsContainerWidget(boss, name, "AgosGameOptionsDialog", domain) {
+	_guiOptions = ConfMan.get("guioptions", domain);
+
+	for (const ADExtraGuiOptionsMap *entry = optionsList; entry->guioFlag; ++entry)
+		if (checkGameGUIOption(entry->guioFlag, _guiOptions))
+			_checkboxes[entry->option.configOption] = new GUI::CheckboxWidget(widgetsBoss(), _dialogLayout + "." + entry->option.configOption, _(entry->option.label), _(entry->option.tooltip));
+
+	for (const PopUpOptionsMap *entry = popUpOptionsList; entry->guioFlag; ++entry)
+		if (checkGameGUIOption(entry->guioFlag, _guiOptions)) {
+			GUI::StaticTextWidget *textWidget = new GUI::StaticTextWidget(widgetsBoss(), _dialogLayout + "." + entry->configOption + "_desc", _(entry->label), _(entry->tooltip));
+			textWidget->setAlign(Graphics::kTextAlignRight);
+
+			_popUps[entry->configOption] = new GUI::PopUpWidget(widgetsBoss(), _dialogLayout + "." + entry->configOption);
+
+			for (uint i = 0; entry->items[i].label; ++i)
+				_popUps[entry->configOption]->appendEntry(_(entry->items[i].label), entry->items[i].configValue);
+		}
+}
+
+void OptionsWidget::defineLayout(GUI::ThemeEval &layouts, const Common::String &layoutName, const Common::String &overlayedLayout) const {
+	layouts.addDialog(layoutName, overlayedLayout);
+	layouts.addLayout(GUI::ThemeLayout::kLayoutVertical).addPadding(0, 0, 0, 0);
+
+	for (const ADExtraGuiOptionsMap *entry = optionsList; entry->guioFlag; ++entry)
+		layouts.addWidget(entry->option.configOption, "Checkbox");
+
+	for (const PopUpOptionsMap *entry = popUpOptionsList; entry->guioFlag; ++entry) {
+		layouts.addLayout(GUI::ThemeLayout::kLayoutHorizontal).addPadding(0, 0, 0, 0);
+		layouts.addWidget(Common::String(entry->configOption) + "_desc", "OptionsLabel");
+		layouts.addWidget(entry->configOption, "PopUp").closeLayout();
+	}
+
+	layouts.closeLayout().closeDialog();
+}
+
+void OptionsWidget::load() {
+	for (const ADExtraGuiOptionsMap *entry = optionsList; entry->guioFlag; ++entry)
+		if (checkGameGUIOption(entry->guioFlag, _guiOptions))
+			_checkboxes[entry->option.configOption]->setState(ConfMan.getBool(entry->option.configOption, _domain));
+
+	for (const PopUpOptionsMap *entry = popUpOptionsList; entry->guioFlag; ++entry)
+		if (checkGameGUIOption(entry->guioFlag, _guiOptions))
+			_popUps[entry->configOption]->setSelectedTag(ConfMan.getInt(entry->configOption, _domain));
+}
+
+bool OptionsWidget::save() {
+	for (const ADExtraGuiOptionsMap *entry = optionsList; entry->guioFlag; ++entry)
+		if (checkGameGUIOption(entry->guioFlag, _guiOptions))
+			ConfMan.setBool(entry->option.configOption, _checkboxes[entry->option.configOption]->getState(), _domain);
+
+	for (const PopUpOptionsMap *entry = popUpOptionsList; entry->guioFlag; ++entry)
+		if (checkGameGUIOption(entry->guioFlag, _guiOptions))
+			ConfMan.setInt(entry->configOption, _popUps[entry->configOption]->getSelectedTag(), _domain);
+
+	return true;
+}
+
+} // End of namespace AGOS
diff --git a/engines/agos/dialogs.h b/engines/agos/dialogs.h
new file mode 100644
index 00000000000..ea678cb0dcd
--- /dev/null
+++ b/engines/agos/dialogs.h
@@ -0,0 +1,156 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef AGOS_DIALOGS_H
+#define AGOS_DIALOGS_H
+
+#include "gui/ThemeEval.h"
+#include "gui/widget.h"
+#include "gui/widgets/popup.h"
+
+namespace AGOS {
+
+struct PopUpOptionsItem {
+	const char *label;
+	int configValue;
+};
+
+#define POPUP_OPTIONS_ITEMS_TERMINATOR { nullptr, 0 }
+
+struct PopUpOptionsMap {
+	const char *guioFlag;
+	const char *label;
+	const char *tooltip;
+	const char *configOption;
+	int defaultState;
+	PopUpOptionsItem items[10];
+};
+
+#define POPUP_OPTIONS_TERMINATOR                                                  \
+	{                                                                             \
+		nullptr, nullptr, nullptr, nullptr, 0, { POPUP_OPTIONS_ITEMS_TERMINATOR } \
+	}
+
+class OptionsWidget : public GUI::OptionsContainerWidget {
+public:
+	explicit OptionsWidget(GuiObject *boss, const Common::String &name, const Common::String &domain);
+
+	// OptionsContainerWidget API
+	void load() override;
+	bool save() override;
+
+private:
+	// OptionsContainerWidget API
+	void defineLayout(GUI::ThemeEval &layouts, const Common::String &layoutName, const Common::String &overlayedLayout) const override;
+
+	Common::String _guiOptions;
+	Common::HashMap<Common::String, GUI::CheckboxWidget *> _checkboxes;
+	Common::HashMap<Common::String, GUI::PopUpWidget *> _popUps;
+};
+
+static const ADExtraGuiOptionsMap optionsList[] = {
+	{
+		GAMEOPTION_COPY_PROTECTION,
+		{
+			_s("Enable copy protection"),
+			_s("Enable any copy protection that would otherwise be bypassed by default."),
+			"copy_protection",
+			false,
+			0,
+			0
+		},
+	},
+	{
+		GAMEOPTION_OPL3_MODE,
+		{
+			_s("AdLib OPL3 mode"),
+			_s("When AdLib is selected, OPL3 features will be used. Depending on the game, this will prevent cut-off notes, add extra notes or instruments and/or add stereo."),
+			"opl3_mode",
+			false,
+			0,
+			0
+		}
+	},
+	{
+		GAMEOPTION_DOS_TEMPOS,
+		{
+			_s("Use DOS version music tempos"),
+			_s("Selecting this option will play the music using the tempos used by the DOS version of the game. Otherwise, the faster tempos of the Windows version will be used."),
+			"dos_music_tempos",
+			true,
+			0,
+			0
+		}
+	},
+	{
+		GAMEOPTION_PREFER_DIGITAL_SFX,
+		{
+			_s("Prefer digital sound effects"),
+			_s("Prefer digital sound effects instead of synthesized ones"),
+			"prefer_digitalsfx",
+			true,
+			0,
+			0
+		}
+	},
+	{
+		GAMEOPTION_DISABLE_FADE_EFFECTS,
+		{
+			_s("Disable fade-out effects"),
+			_s("Don't fade every screen to black when leaving a room."),
+			"disable_fade_effects",
+			false,
+			0,
+			0
+		}
+	},
+	AD_EXTRA_GUI_OPTIONS_TERMINATOR
+};
+
+static const PopUpOptionsMap popUpOptionsList[] = {
+	{
+		GAMEOPTION_MIDI_MODE,
+		_s("MIDI mode:"),
+		_s("When using external MIDI devices (e.g. through USB-MIDI), select your device here"),
+		"midi_mode",
+		kMidiModeStandard,
+		{
+			{
+				_s("Standard (GM / MT-32)"),
+				kMidiModeStandard
+			},
+			{
+				_s("Casio MT-540"),
+				kMidiModeMT540
+			},
+			{
+				_s("Casio CT-460 / CSM-1"),
+				kMidiModeCT460
+			},
+			POPUP_OPTIONS_ITEMS_TERMINATOR
+		}
+	},
+	POPUP_OPTIONS_TERMINATOR
+};
+
+} // End of namespace AGOS
+
+#endif // AGOS_DIALOGS_H
diff --git a/engines/agos/metaengine.cpp b/engines/agos/metaengine.cpp
index d3195091e58..9c78f425e8d 100644
--- a/engines/agos/metaengine.cpp
+++ b/engines/agos/metaengine.cpp
@@ -34,80 +34,7 @@
 #include "agos/intern.h"
 #include "agos/agos.h"
 #include "agos/detection.h"
-
-namespace AGOS {
-
-static const ADExtraGuiOptionsMap optionsList[] = {
-	{
-		GAMEOPTION_COPY_PROTECTION,
-		{
-			_s("Enable copy protection"),
-			_s("Enable any copy protection that would otherwise be bypassed by default."),
-			"copy_protection",
-			false,
-			0,
-			0
-		},
-	},
-	{
-		GAMEOPTION_OPL3_MODE,
-		{
-			_s("AdLib OPL3 mode"),
-			_s("When AdLib is selected, OPL3 features will be used. Depending on the game, this will prevent cut-off notes, add extra notes or instruments and/or add stereo."),
-			"opl3_mode",
-			false,
-			0,
-			0
-		}
-	},
-	{
-		GAMEOPTION_DOS_TEMPOS,
-		{
-			_s("Use DOS version music tempos"),
-			_s("Selecting this option will play the music using the tempos used by the DOS version of the game. Otherwise, the faster tempos of the Windows version will be used."),
-			"dos_music_tempos",
-			true,
-			0,
-			0
-		}
-	},
-	{
-		GAMEOPTION_WINDOWS_TEMPOS,
-		{
-			_s("Use DOS version music tempos"),
-			_s("Selecting this option will play the music using the tempos used by the DOS version of the game. Otherwise, the faster tempos of the Windows version will be used."),
-			"dos_music_tempos",
-			false,
-			0,
-			0
-		}
-	},
-	{
-		GAMEOPTION_PREFER_DIGITAL_SFX,
-		{
-			_s("Prefer digital sound effects"),
-			_s("Prefer digital sound effects instead of synthesized ones"),
-			"prefer_digitalsfx",
-			true,
-			0,
-			0
-		}
-	},
-	{
-		GAMEOPTION_DISABLE_FADE_EFFECTS,
-		{
-			_s("Disable fade-out effects"),
-			_s("Don't fade every screen to black when leaving a room."),
-			"disable_fade_effects",
-			false,
-			0,
-			0
-		}
-	},
-	AD_EXTRA_GUI_OPTIONS_TERMINATOR
-};
-
-} // End of namespace AGOS
+#include "agos/dialogs.h"
 
 class AgosMetaEngine : public AdvancedMetaEngine<AGOS::AGOSGameDescription> {
 public:
@@ -115,10 +42,6 @@ public:
 		return "agos";
 	}
 
-	const ADExtraGuiOptionsMap *getAdvancedExtraGuiOptions() const override {
-		return AGOS::optionsList;
-	}
-
 	bool hasFeature(MetaEngineFeature f) const override;
 
 	Common::Error createInstance(OSystem *syst, Engine **engine, const AGOS::AGOSGameDescription *desc) const override;
@@ -127,6 +50,9 @@ public:
 	int getMaximumSaveSlot() const override;
 
 	Common::KeymapArray initKeymaps(const char *target) const override;
+
+	void registerDefaultSettings(const Common::String &target) const override;
+	GUI::OptionsContainerWidget *buildEngineOptionsWidget(GUI::GuiObject *boss, const Common::String &name, const Common::String &target) const override;
 };
 
 bool AgosMetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -406,6 +332,22 @@ Common::KeymapArray AgosMetaEngine::initKeymaps(const char *target) const {
 	return keymaps;
 }
 
+void AgosMetaEngine::registerDefaultSettings(const Common::String &target) const {
+	for (const ADExtraGuiOptionsMap *entry = AGOS::optionsList; entry->guioFlag; ++entry)
+		ConfMan.registerDefault(entry->option.configOption, entry->option.defaultState);
+
+	for (const AGOS::PopUpOptionsMap *entry = AGOS::popUpOptionsList; entry->guioFlag; ++entry)
+		ConfMan.registerDefault(entry->configOption, entry->defaultState);
+
+	// DOS music tempos should default to true for DOS, false for Windows and Acorn
+	bool isDos = ConfMan.get("gameid", target) == "simon1" && ConfMan.get("platform", target) == "pc";
+	ConfMan.registerDefault("dos_music_tempos", isDos);
+}
+
+GUI::OptionsContainerWidget *AgosMetaEngine::buildEngineOptionsWidget(GUI::GuiObject *boss, const Common::String &name, const Common::String &target) const {
+	return new AGOS::OptionsWidget(boss, name, target);
+}
+
 #if PLUGIN_ENABLED_DYNAMIC(AGOS)
 	REGISTER_PLUGIN_DYNAMIC(AGOS, PLUGIN_TYPE_ENGINE, AgosMetaEngine);
 #else
diff --git a/engines/agos/module.mk b/engines/agos/module.mk
index 37432e1edde..2d11c9725f9 100644
--- a/engines/agos/module.mk
+++ b/engines/agos/module.mk
@@ -15,6 +15,7 @@ MODULE_OBJS := \
 	cursor.o \
 	debug.o \
 	debugger.o \
+	dialogs.o \
 	draw.o \
 	event.o \
 	gfx.o \




More information about the Scummvm-git-logs mailing list