aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/gameDetector.cpp39
-rw-r--r--base/gameDetector.h4
-rw-r--r--base/main.cpp2
-rw-r--r--engines/scumm/scumm.cpp9
4 files changed, 22 insertions, 32 deletions
diff --git a/base/gameDetector.cpp b/base/gameDetector.cpp
index fe762b4994..4139b54d99 100644
--- a/base/gameDetector.cpp
+++ b/base/gameDetector.cpp
@@ -157,6 +157,12 @@ GameDetector::GameDetector() {
ConfMan.registerDefault("aspect_ratio", false);
ConfMan.registerDefault("gfx_mode", "normal");
ConfMan.registerDefault("render_mode", "default");
+#if defined(__SYMBIAN32__)
+ ConfMan.registerDefault("force_1x_overlay", true);
+#else
+ ConfMan.registerDefault("force_1x_overlay", false);
+#endif
+
// Sound & Music
ConfMan.registerDefault("music_volume", 192);
@@ -182,6 +188,7 @@ GameDetector::GameDetector() {
ConfMan.registerDefault("sfx_mute", false);
ConfMan.registerDefault("subtitles", false);
ConfMan.registerDefault("boot_param", 0);
+ ConfMan.registerDefault("dump_scripts", false);
ConfMan.registerDefault("save_slot", -1);
ConfMan.registerDefault("autosave_period", 5 * 60); // By default, trigger autosave every 5 minutes
@@ -242,14 +249,6 @@ GameDetector::GameDetector() {
#endif
#endif // #ifdef DEFAULT_SAVE_PATH
- _dumpScripts = false;
-
-#if defined(__SYMBIAN32__)
- _force1xOverlay = true;
-#else
- _force1xOverlay = false;
-#endif
-
_plugin = 0;
}
@@ -276,7 +275,8 @@ GameDescriptor GameDetector::findGame(const String &gameName, const Plugin **plu
// Use this for options which have an *optional* value
#define DO_OPTION_OPT(shortCmd, longCmd, defaultVal) \
- if (isLongCmd ? (!memcmp(s, longCmd"=", sizeof(longCmd"=") - 1)) : (shortCmdLower == shortCmd)) { \
+ if (isLongCmd ? (!memcmp(s+2, longCmd"=", sizeof(longCmd"=") - 1)) : (tolower(s[1]) == shortCmd)) { \
+ s += 2; \
if (isLongCmd) \
s += sizeof(longCmd"=") - 1; \
const char *option = s; \
@@ -300,8 +300,9 @@ GameDescriptor GameDetector::findGame(const String &gameName, const Plugin **plu
// Use this for boolean options; this distinguishes between "-x" and "-X",
// resp. between "--some-option" and "--no-some-option".
#define DO_OPTION_BOOL(shortCmd, longCmd) \
- if (isLongCmd ? (!strcmp(s, longCmd) || !strcmp(s, "no-"longCmd)) : (shortCmdLower == shortCmd)) { \
- bool boolValue = (shortCmdLower == s[1]); \
+ if (isLongCmd ? (!strcmp(s+2, longCmd) || !strcmp(s+2, "no-"longCmd)) : (tolower(s[1]) == shortCmd)) { \
+ bool boolValue = islower(s[1]); \
+ s += 2; \
if (isLongCmd) { \
boolValue = !strcmp(s, longCmd); \
s += boolValue ? (sizeof(longCmd) - 1) : (sizeof("no-"longCmd) - 1); \
@@ -312,7 +313,8 @@ GameDescriptor GameDetector::findGame(const String &gameName, const Plugin **plu
// Use this for options which never have a value, i.e. for 'commands', like "--help".
#define DO_OPTION_CMD(shortCmd, longCmd) \
- if (isLongCmd ? (!strcmp(s, longCmd)) : (shortCmdLower == shortCmd)) { \
+ if (isLongCmd ? (!strcmp(s+2, longCmd)) : (tolower(s[1]) == shortCmd)) { \
+ s += 2; \
if (isLongCmd) \
s += sizeof(longCmd) - 1; \
if (*s != '\0') goto unknownOption;
@@ -357,9 +359,7 @@ Common::String GameDetector::parseCommandLine(Common::StringMap &settings, int a
return s;
} else {
- char shortCmdLower = tolower(s[1]);
bool isLongCmd = (s[0] == '-' && s[1] == '-');
- s += 2;
DO_OPTION_CMD('h', "help")
printf(HELP_STRING, argv[0]);
@@ -567,17 +567,6 @@ void GameDetector::processSettings(Common::String &target, Common::StringMap &se
#endif
- if (settings.contains("dump-scripts")) {
- _dumpScripts = (settings["dump-scripts"] == "true");
- settings.erase("dump-scripts"); // This option should not be passed to ConfMan.
- }
-
- if (settings.contains("force-1x-overlay")) {
- _force1xOverlay = (settings["force-1x-overlay"] == "true");
- settings.erase("force-1x-overlay"); // This option should not be passed to ConfMan.
- }
-
-
// Finally, store the command line settings into the config manager.
for (Common::StringMap::const_iterator x = settings.begin(); x != settings.end(); ++x) {
String key(x->_key);
diff --git a/base/gameDetector.h b/base/gameDetector.h
index f9234bb9c6..876035cead 100644
--- a/base/gameDetector.h
+++ b/base/gameDetector.h
@@ -76,10 +76,6 @@ public:
String _targetName;
String _gameid;
- bool _dumpScripts;
-
- bool _force1xOverlay;
-
const Plugin *_plugin; // TODO: This should be protected
public:
diff --git a/base/main.cpp b/base/main.cpp
index 6fdcc55b36..740434fe2e 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -137,7 +137,7 @@ static bool launcherDialog(GameDetector &detector, OSystem &system) {
system.setGraphicsMode(ConfMan.get("gfx_mode").c_str());
// Make GUI 640 x 400
- system.initSize(320, 200, (detector._force1xOverlay ? 1 : 2));
+ system.initSize(320, 200, (ConfMan.getBool("force-1x-overlay") ? 1 : 2));
system.endGFXTransaction();
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 042c589718..ed846fa7b9 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -536,7 +536,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const GameSettin
// Read settings from the detector & config manager
_debugMode = (gDebugLevel >= 0);
- _dumpScripts = detector->_dumpScripts;
+ _dumpScripts = ConfMan.getBool("dump_scripts");
_bootParam = ConfMan.getInt("boot_param");
// Boot params often need debugging switched on to work
if (_bootParam)
@@ -859,7 +859,12 @@ int ScummEngine::init(GameDetector &detector) {
_system->initSize(Common::kHercW, Common::kHercH, 1);
defaultTo1XScaler = true;
} else {
- _system->initSize(_screenWidth, _screenHeight, (detector._force1xOverlay ? 1 : 2));
+ // FIXME: The way we now handle the force_1x_overlay setting implies
+ // that if you start scummvm into the launcher with force_1x_overlay
+ // set to true, it'll get reset to the default value (usually 'false'
+ // except for Symbian) before launching a game.
+ // This may or may not be the desired behavior...
+ _system->initSize(_screenWidth, _screenHeight, (ConfMan.getBool("force_1x_overlay") ? 1 : 2));
defaultTo1XScaler = (_screenWidth > 320);
}
initCommonGFX(detector, defaultTo1XScaler);