Merge pull request #244 from retro-wertz/sync_to_upstream
[pcsx_rearmed.git] / frontend / libretro.c
index 7eb8480..06b66b1 100644 (file)
@@ -469,14 +469,14 @@ void retro_set_environment(retro_environment_t cb)
       { "pcsx_rearmed_bios", "Use BIOS; auto|HLE" },
       { "pcsx_rearmed_region", "Region; auto|NTSC|PAL" },
       { "pcsx_rearmed_memcard2", "Enable second memory card; disabled|enabled" },
-      { "pcsx_rearmed_pad1type", "Pad 1 Type; default|none|standard|analog|dualshock|negcon" },
-      { "pcsx_rearmed_pad2type", "Pad 2 Type; default|none|standard|analog|dualshock|negcon" },
-      { "pcsx_rearmed_pad3type", "Pad 3 Type; default|none|standard|analog|dualshock|negcon" },
-      { "pcsx_rearmed_pad4type", "Pad 4 Type; default|none|standard|analog|dualshock|negcon" },
-      { "pcsx_rearmed_pad5type", "Pad 5 Type; default|none|standard|analog|dualshock|negcon" },
-      { "pcsx_rearmed_pad6type", "Pad 6 Type; default|none|standard|analog|dualshock|negcon" },
-      { "pcsx_rearmed_pad7type", "Pad 7 Type; default|none|standard|analog|dualshock|negcon" },
-      { "pcsx_rearmed_pad8type", "Pad 8 Type; default|none|standard|analog|dualshock|negcon" },
+      { "pcsx_rearmed_pad1type", "Pad 1 Type; standard|analog|dualshock|negcon|none" },
+      { "pcsx_rearmed_pad2type", "Pad 2 Type; standard|analog|dualshock|negcon|none" },
+      { "pcsx_rearmed_pad3type", "Pad 3 Type; none|standard|analog|dualshock|negcon" },
+      { "pcsx_rearmed_pad4type", "Pad 4 Type; none|standard|analog|dualshock|negcon" },
+      { "pcsx_rearmed_pad5type", "Pad 5 Type; none|standard|analog|dualshock|negcon" },
+      { "pcsx_rearmed_pad6type", "Pad 6 Type; none|standard|analog|dualshock|negcon" },
+      { "pcsx_rearmed_pad7type", "Pad 7 Type; none|standard|analog|dualshock|negcon" },
+      { "pcsx_rearmed_pad8type", "Pad 8 Type; none|standard|analog|dualshock|negcon" },
       { "pcsx_rearmed_multitap1", "Multitap 1; auto|disabled|enabled" },
       { "pcsx_rearmed_multitap2", "Multitap 2; auto|disabled|enabled" },
       { "pcsx_rearmed_negcon_deadzone", "NegCon Twist Deadzone (percent); 0|5|10|15|20|25|30" },
@@ -500,6 +500,7 @@ void retro_set_environment(retro_environment_t cb)
       { "pcsx_rearmed_show_bios_bootlogo", "Show Bios Bootlogo(Breaks some games); disabled|enabled" },
       { "pcsx_rearmed_spu_reverb", "Sound: Reverb; enabled|disabled" },
       { "pcsx_rearmed_spu_interpolation", "Sound: Interpolation; simple|gaussian|cubic|off" },
+      { "pcsx_rearmed_idiablofix", "Diablo Music Fix; disabled|enabled" },
       { "pcsx_rearmed_pe2_fix", "Parasite Eve 2/Vandal Hearts 1/2 Fix; disabled|enabled" },
       { "pcsx_rearmed_inuyasha_fix", "InuYasha Sengoku Battle Fix; disabled|enabled" },
       { NULL, NULL },
@@ -819,7 +820,7 @@ void retro_cheat_set(unsigned index, bool enabled, const char *code)
        // cheat funcs are destructive, need a copy..
        strncpy(buf, code, sizeof(buf));
        buf[sizeof(buf) - 1] = 0;
-       
+
        //Prepare buffered cheat for PCSX's AddCheat fucntion.
        int cursor=0;
        int nonhexdec=0;
@@ -833,7 +834,7 @@ void retro_cheat_set(unsigned index, bool enabled, const char *code)
                }
                cursor++;
        }
-       
+
 
        if (index < NumCheats)
                ret = EditCheat(index, "", buf);
@@ -1557,6 +1558,17 @@ static void update_variables(bool in_flight)
          Config.RCntFix = 1;
    }
 
+   var.value = "NULL";
+   var.key = "pcsx_rearmed_idiablofix";
+
+   if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+   {
+      if (strcmp(var.value, "disabled") == 0)
+         spu_config.idiablofix = 0;
+      else if (strcmp(var.value, "enabled") == 0)
+         spu_config.idiablofix = 1;
+   }
+
    var.value = "NULL";
    var.key = "pcsx_rearmed_inuyasha_fix";
 
@@ -1581,7 +1593,7 @@ static void update_variables(bool in_flight)
    }
    else{
       //not yet running
-      
+
       //bootlogo display hack
       if (found_bios) {
          var.value = "NULL";
@@ -1881,9 +1893,12 @@ static int init_memcards(void)
        struct retro_variable var = { .key="pcsx_rearmed_memcard2", .value=NULL };
        static const char CARD2_FILE[] = "pcsx-card2.mcd";
 
-       McdDisable[0] = 0;
-       // Disable memcard 2 by default
-       McdDisable[1] = 1;
+       // Memcard2 will be handled and is re-enabled if needed using core
+       // operations.
+       // Memcard1 is handled by libretro, doing this will set core to
+       // skip file io operations for memcard1 like SaveMcd
+       snprintf(Config.Mcd1, sizeof(Config.Mcd1), "none");
+       snprintf(Config.Mcd2, sizeof(Config.Mcd2), "none");
        init_memcard(Mcd1Data);
        // Memcard 2 is managed by the emulator on the filesystem,
        // There is no need to initialize Mcd2Data like Mcd1Data.
@@ -1916,8 +1931,10 @@ static void loadPSXBios(void)
        unsigned useHLE = 0;
 
        const char *bios[] = {
-               "SCPH101", "SCPH7001", "SCPH5501", "SCPH1001",
-               "scph101", "scph7001", "scph5501", "scph1001"
+               "SCPH101", "scph101",
+               "SCPH5501", "scph5501",
+               "SCPH7001", "scph7001",
+               "SCPH1001", "scph1001"
        };
 
        struct retro_variable var = {
@@ -1987,7 +2004,7 @@ void retro_init(void)
    psxUnmapHook = pl_vita_munmap;
 #endif
        ret = emu_core_preinit();
-#ifdef _3DS 
+#ifdef _3DS
    /* emu_core_preinit sets the cpu to dynarec */
    if(!__ctr_svchax)
       Config.Cpu = CPU_INTERPRETER;
@@ -2007,7 +2024,7 @@ void retro_init(void)
 #else
        vout_buf = malloc(VOUT_MAX_WIDTH * VOUT_MAX_HEIGHT * 2);
 #endif
-  
+
        vout_buf_ptr = vout_buf;
 
        loadPSXBios();