added configure script
[drnoksnes] / platform / config.cpp
index 151feee..cf01595 100644 (file)
@@ -35,8 +35,8 @@ static struct poptOption commonOptionsTable[] = {
        "start in fullscreen mode", 0 },
        { "transparency", 'y', POPT_ARG_NONE, 0, 5,
        "enable transparency effects (slower)", 0 },
-       { "hacks", 'h', POPT_ARG_STRING | POPT_ARGFLAG_OPTIONAL, 0, 6,
-       "enable hacks (yes, speed-only, no)", "option" },
+       { "scaler", 'S', POPT_ARG_STRING, 0, 6,
+       "select scaler to use", 0 },
        { "pal", 'p', POPT_ARG_NONE, 0, 7,
        "run in PAL mode", 0 },
        { "ntsc", 'n', POPT_ARG_NONE, 0, 8,
@@ -57,6 +57,12 @@ static struct poptOption commonOptionsTable[] = {
        "audio output buffer size", "SAMPLES" },
        { "touchscreen", 'd', POPT_ARG_NONE, 0, 16,
        "enable touchscreen controls", 0 },
+       { "touchscreen-grid", 'D', POPT_ARG_NONE, 0, 17,
+       "enable touchscreen controls and show grid", 0 },
+       { "hacks", 'h', POPT_ARG_NONE, 0, 18,
+       "enable safe subset of speedhacks", 0 },
+       { "all-hacks", 'H', POPT_ARG_NONE, 0, 19,
+       "enable all speedhacks (may break sound)", 0 },
        POPT_TABLEEND
 };
 
@@ -116,6 +122,14 @@ static unsigned char actionNameToBit(const char *s) {
                return kActionQuit;
        } else if (strcasecmp(s, "fullscreen") == 0) {
                return kActionToggleFullscreen;
+       } else if (strcasecmp(s, "quickload1") == 0) {
+               return kActionQuickLoad1;
+       } else if (strcasecmp(s, "quicksave1") == 0) {
+               return kActionQuickSave1;
+       } else if (strcasecmp(s, "quickload2") == 0) {
+               return kActionQuickLoad2;
+       } else if (strcasecmp(s, "quicksave2") == 0) {
+               return kActionQuickSave2;
        } else {
                DIE("Bad action name: %s\n", s);
        }
@@ -123,7 +137,7 @@ static unsigned char actionNameToBit(const char *s) {
 
 const char * S9xGetFilename(FileTypes file)
 {
-       static char filename [PATH_MAX + 1];
+       static char filename[PATH_MAX + 1];
        const char * ext;
        switch (file) {
                case FILE_ROM:
@@ -155,6 +169,13 @@ const char * S9xGetFilename(FileTypes file)
        return filename;
 }
 
+const char * S9xGetQuickSaveFilename(unsigned int slot)
+{
+       static char filename[PATH_MAX + 1];
+       snprintf(filename, PATH_MAX, "%s.frz.%u.gz", basePath, slot);
+       return filename;
+}
+
 static void loadDefaults()
 {
        ZeroMemory(&Settings, sizeof(Settings));
@@ -166,9 +187,10 @@ static void loadDefaults()
        Config.quitting = false;
        Config.enableAudio = true;
        Config.fullscreen = false;
-       Config.xsp = false;
+       Config.scaler = 0;
        Config.hacksFile = 0;
        Config.touchscreenInput = false;
+       Config.touchscreenShow = false;
 
        Settings.JoystickEnabled = FALSE;
        Settings.SoundPlaybackRate = 22050;
@@ -244,31 +266,6 @@ static bool gotRomFile()
        return romFile ? true : false;
 }
 
-static void setHacks(const char * value)
-{
-       // Unconditionally enable hacks even if no argument passed
-       Settings.HacksEnabled = TRUE;
-
-       if (!value) return;
-
-       if (strcasecmp(value, "speed-only") == 0 ||
-               strcasecmp(value, "speed") == 0 ||
-               strcasecmp(value, "s") == 0) {
-                       Settings.HacksFilter = TRUE;
-       } else if (strcasecmp(value, "yes") == 0 ||
-               strcasecmp(value, "y") == 0) {
-                       // Do nothing
-       } else if (strcasecmp(value, "no") == 0 ||
-               strcasecmp(value, "n") == 0) {
-                       Settings.HacksEnabled = FALSE;
-       } else {
-               // Hack: the user probably wants to enable hacks
-               // and use this argument as the ROM file.
-               // Wonder why popt does not support this or if there's a better way.
-               S9xSetRomFile(value);
-       }
-}
-
 static void loadConfig(poptContext optCon, const char * file)
 {
        char * out;
@@ -320,8 +317,8 @@ static void parseArgs(poptContext optCon)
                                Settings.Transparency = TRUE;
                                break;
                        case 6:
-                               Settings.HacksEnabled = TRUE;
-                               setHacks(poptGetOptArg(optCon));
+                               free(Config.scaler);
+                               Config.scaler = strdup(poptGetOptArg(optCon));
                                break;
                        case 7:
                                Settings.ForcePAL = TRUE;
@@ -363,6 +360,18 @@ static void parseArgs(poptContext optCon)
                        case 16:
                                Config.touchscreenInput = true;
                                break;
+                       case 17:
+                               Config.touchscreenInput = true;
+                               Config.touchscreenShow = true;
+                               break;
+                       case 18:
+                               Settings.HacksEnabled = TRUE;
+                               Settings.HacksFilter = TRUE;
+                               break;
+                       case 19:
+                               Settings.HacksEnabled = TRUE;
+                               Settings.HacksFilter = FALSE;
+                               break;
                        case 100:
                                scancode = atoi(poptGetOptArg(optCon));
                                break;