improve cue handling a bit
[picodrive.git] / pico / media.c
index ef9b315..597a43c 100644 (file)
@@ -132,14 +132,15 @@ int PicoCdCheck(const char *fname_in, int *pregion)
   cue_track_type type = CT_UNKNOWN;
   cue_data_t *cue_data = NULL;
 
-  get_ext(fname_in, ext);
-  if (strcasecmp(ext, ".cue") == 0) {
-    cue_data = cue_parse(fname_in);
-    if (cue_data != NULL) {
-      fname = cue_data->tracks[1].fname;
-      type  = cue_data->tracks[1].type;
-    }
-    else
+  // opens a cue, or searches for one
+  cue_data = cue_parse(fname_in);
+  if (cue_data != NULL) {
+    fname = cue_data->tracks[1].fname;
+    type  = cue_data->tracks[1].type;
+  }
+  else {
+    get_ext(fname_in, ext);
+    if (strcasecmp(ext, ".cue") == 0)
       return -1;
   }
 
@@ -212,12 +213,13 @@ enum media_type_e PicoLoadMedia(const char *filename,
     Stop_CD();
   PicoCartUnload();
   PicoAHW = 0;
+  PicoQuirks = 0;
 
   if (media_type == PM_CD)
   {
     // check for MegaCD image
     cd_img_type = PicoCdCheck(filename, &cd_region);
-    if (cd_img_type >= 0 && cd_img_type != CIT_NOT_CD)
+    if ((int)cd_img_type >= 0 && cd_img_type != CIT_NOT_CD)
     {
       // valid CD image, ask frontend for BIOS..
       rom_fname = NULL;
@@ -296,6 +298,9 @@ enum media_type_e PicoLoadMedia(const char *filename,
     }
   }
 
+  if (PicoQuirks & PQUIRK_FORCE_6BTN)
+    PicoSetInputDevice(0, PICO_INPUT_PAD_6BTN);
+
 out:
   if (rom_data)
     free(rom_data);