new menu option code
[picodrive.git] / platform / gp2x / emu.c
index 0e1246c..27e9d13 100644 (file)
@@ -62,6 +62,7 @@ static int movie_size = 0;
 unsigned char *framebuff = 0;  // temporary buffer for alt renderer\r
 int state_slot = 0;\r
 int reset_timing = 0;\r
+int config_slot = 0, config_slot_current = 0;\r
 \r
 \r
 // utilities\r
@@ -474,7 +475,7 @@ void scaling_update(void)
 int emu_ReadConfig(int game)\r
 {\r
        FILE *f;\r
-       char cfg[512];\r
+       char cfg[512], extbuf[16];\r
        int bread = 0;\r
 \r
        if (!game)\r
@@ -507,9 +508,19 @@ int emu_ReadConfig(int game)
                currentConfig.PicoCDBuffers = 64;\r
                currentConfig.scaling = 0;\r
                strncpy(cfg, PicoConfigFile, 511);\r
+               if (config_slot != 0)\r
+               {\r
+                       char *p = strrchr(cfg, '.');\r
+                       if (p == NULL) p = cfg + strlen(cfg);\r
+                       sprintf(extbuf, ".%i.pbcfg", config_slot);\r
+                       strncpy(p, extbuf, 511 - (p - cfg));\r
+               }\r
                cfg[511] = 0;\r
        } else {\r
-               romfname_ext(cfg, "cfg/", ".pbcfg");\r
+               if (config_slot != 0)\r
+                    sprintf(extbuf, ".%i.pbcfg", config_slot);\r
+               else strcpy(extbuf, ".pbcfg");\r
+               romfname_ext(cfg, "cfg/", extbuf);\r
                f = fopen(cfg, "rb");\r
                if (!f) romfname_ext(cfg, NULL, ".pbcfg");\r
                else fclose(f);\r
@@ -543,6 +554,7 @@ int emu_ReadConfig(int game)
                currentConfig.KeyBinds[22] = 1<<30; // vol down\r
        }\r
 \r
+       if (bread > 0) config_slot_current = config_slot;\r
        return (bread > 0); // == sizeof(currentConfig));\r
 }\r
 \r
@@ -550,15 +562,25 @@ int emu_ReadConfig(int game)
 int emu_WriteConfig(int game)\r
 {\r
        FILE *f;\r
-       char cfg[512];\r
+       char cfg[512], extbuf[16];\r
        int bwrite = 0;\r
 \r
        if (!game)\r
        {\r
                strncpy(cfg, PicoConfigFile, 511);\r
+               if (config_slot != 0)\r
+               {\r
+                       char *p = strrchr(cfg, '.');\r
+                       if (p == NULL) p = cfg + strlen(cfg);\r
+                       sprintf(extbuf, ".%i.pbcfg", config_slot);\r
+                       strncpy(p, extbuf, 511 - (p - cfg));\r
+               }\r
                cfg[511] = 0;\r
        } else {\r
-               romfname_ext(cfg, "cfg/", ".pbcfg");\r
+               if (config_slot != 0)\r
+                    sprintf(extbuf, ".%i.pbcfg", config_slot);\r
+               else strcpy(extbuf, ".pbcfg");\r
+               romfname_ext(cfg, "cfg/", extbuf);\r
        }\r
 \r
        printf("emu_WriteConfig: %s ", cfg);\r
@@ -578,6 +600,7 @@ int emu_WriteConfig(int game)
        }\r
        printf((bwrite == sizeof(currentConfig)) ? "(ok)\n" : "(failed)\n");\r
 \r
+       if (bwrite == sizeof(currentConfig)) config_slot_current = config_slot;\r
        return (bwrite == sizeof(currentConfig));\r
 }\r
 \r