platform, basic msu-md support
authorkub <derkub@gmail.com>
Sun, 28 May 2023 13:56:55 +0000 (13:56 +0000)
committerkub <derkub@gmail.com>
Sun, 28 May 2023 13:56:55 +0000 (13:56 +0000)
loading a .cue file will look for a cartridge image with the same basename
and an extension of "gen", "smd", "md", "32x".

platform/common/emu.c
platform/libretro/libretro.c

index d75d6e4..0f4ae16 100644 (file)
@@ -182,6 +182,21 @@ static const char *find_bios(int *region, const char *cd_fname)
                        (*region == 8 ? "EU" : "JAP") : "USA");\r
        }\r
 \r
+       // look for MSU.MD rom file. XXX another extension list? ugh...\r
+       static const char *md_exts[] = { "gen", "smd", "md", "32x" };\r
+       char *ext = strrchr(cd_fname, '.');\r
+       int extpos = ext ? ext-cd_fname : strlen(cd_fname);\r
+       strcpy(static_buff, cd_fname);\r
+       static_buff[extpos++] = '.';\r
+       for (i = 0; i < ARRAY_SIZE(md_exts); i++) {\r
+               strcpy(static_buff+extpos, md_exts[i]);\r
+               if (access(static_buff, R_OK) == 0) {\r
+                       printf("found MSU rom: %s\n",static_buff);\r
+                       return static_buff;\r
+               }\r
+       }\r
+\r
+       // locate BIOS file\r
        if (*region == 4) { // US\r
                files = biosfiles_us;\r
                count = sizeof(biosfiles_us) / sizeof(char *);\r
index abbe312..2504cf9 100644 (file)
@@ -1274,6 +1274,22 @@ static const char *find_bios(int *region, const char *cd_fname)
    int i, count;
    FILE *f = NULL;
 
+   // look for MSU.MD rom file. XXX another extension list? ugh...
+   static const char *md_exts[] = { "gen", "smd", "md", "32x" };
+   char *ext = strrchr(cd_fname, '.');
+   int extpos = ext ? ext-cd_fname : strlen(cd_fname);
+   strcpy(path, cd_fname);
+   path[extpos++] = '.';
+   for (i = 0; i < ARRAY_SIZE(md_exts); i++) {
+      strcpy(path+extpos, md_exts[i]);
+      f = fopen(path, "rb");
+      if (f != NULL) {
+         log_cb(RETRO_LOG_INFO, "found MSU rom: %s\n", path);
+        fclose(f);
+         return path;
+      }
+   }
+
    if (*region == 4) { // US
       files = biosfiles_us;
       count = sizeof(biosfiles_us) / sizeof(char *);