Enable memcard 2
[pcsx_rearmed.git] / frontend / libretro.c
index 7fd20b1..bf877cb 100644 (file)
@@ -54,6 +54,8 @@ static retro_input_state_t input_state_cb;
 static retro_environment_t environ_cb;
 static retro_audio_sample_batch_t audio_batch_cb;
 static struct retro_rumble_interface rumble;
+static struct retro_log_callback logging;
+static retro_log_printf_t log_cb;
 
 static void *vout_buf;
 static void * vout_buf_ptr;
@@ -435,7 +437,7 @@ void retro_set_environment(retro_environment_t cb)
 {
    static const struct retro_variable vars[] = {
       { "pcsx_rearmed_frameskip", "Frameskip; 0|1|2|3" },
-      { "pcsx_rearmed_region", "Region; Auto|NTSC|PAL" },
+      { "pcsx_rearmed_region", "Region; auto|NTSC|PAL" },
       { "pcsx_rearmed_pad1type", "Pad 1 Type; default|none|standard|analog|negcon" },
       { "pcsx_rearmed_pad2type", "Pad 2 Type; default|none|standard|analog|negcon" },
       { "pcsx_rearmed_pad3type", "Pad 3 Type; default|none|standard|analog|negcon" },
@@ -447,6 +449,7 @@ void retro_set_environment(retro_environment_t cb)
       { "pcsx_rearmed_multitap1", "Multitap 1; auto|disabled|enabled" },
       { "pcsx_rearmed_multitap2", "Multitap 2; auto|disabled|enabled" },
       { "pcsx_rearmed_vibration", "Enable Vibration; enabled|disabled" },
+      { "pcsx_rearmed_dithering", "Enable Dithering; enabled|disabled" },
 #ifndef DRC_DISABLE
       { "pcsx_rearmed_drc", "Dynamic recompiler; enabled|disabled" },
 #endif
@@ -464,6 +467,9 @@ void retro_set_environment(retro_environment_t cb)
       { NULL, NULL },
    };
 
+    if (cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &logging))
+        log_cb = logging.log;
+
    environ_cb = cb;
 
    cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void*)vars);
@@ -1218,7 +1224,7 @@ bool retro_load_game(const struct retro_game_info *info)
 
        if (is_m3u) {
                if (!read_m3u(info->path)) {
-                       SysPrintf("failed to read m3u file\n");
+                       log_cb(RETRO_LOG_INFO, "failed to read m3u file\n");
                        return false;
                }
        } else {
@@ -1230,7 +1236,7 @@ bool retro_load_game(const struct retro_game_info *info)
 
        /* have to reload after set_cd_image for correct cdr plugin */
        if (LoadPlugins() == -1) {
-               SysPrintf("failed to load plugins\n");
+               log_cb(RETRO_LOG_INFO, "failed to load plugins\n");
                return false;
        }
 
@@ -1238,23 +1244,22 @@ bool retro_load_game(const struct retro_game_info *info)
        NetOpened = 0;
 
        if (OpenPlugins() == -1) {
-               SysPrintf("failed to open plugins\n");
+               log_cb(RETRO_LOG_INFO, "failed to open plugins\n");
                return false;
        }
 
        plugin_call_rearmed_cbs();
        dfinput_activate();
 
-       Config.PsxAuto = 1;
        if (CheckCdrom() == -1) {
-               SysPrintf("unsupported/invalid CD image: %s\n", info->path);
+        log_cb(RETRO_LOG_INFO, "unsupported/invalid CD image: %s\n", info->path);
                return false;
        }
 
        SysReset();
 
        if (LoadCdrom() == -1) {
-               SysPrintf("could not load CD-ROM!\n");
+               log_cb(RETRO_LOG_INFO, "could not load CD\n");
                return false;
        }
        emu_on_new_cd(0);
@@ -1334,7 +1339,7 @@ static void update_variables(bool in_flight)
    if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
    {
       Config.PsxAuto = 0;
-      if (strcmp(var.value, "Automatic") == 0)
+      if (strcmp(var.value, "auto") == 0)
          Config.PsxAuto = 1;
       else if (strcmp(var.value, "NTSC") == 0)
          Config.PsxType = 0;
@@ -1358,6 +1363,27 @@ static void update_variables(bool in_flight)
          in_enable_vibration = 1;
    }
 
+   var.value = NULL;
+   var.key = "pcsx_rearmed_dithering";
+
+   if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+   {
+      if (strcmp(var.value, "disabled") == 0) {
+         pl_rearmed_cbs.gpu_peops.iUseDither = 0;
+         pl_rearmed_cbs.gpu_peopsgl.bDrawDither = 0;
+#ifdef __ARM_NEON__
+         pl_rearmed_cbs.gpu_neon.allow_dithering = 0;
+#endif
+      }
+      else if (strcmp(var.value, "enabled") == 0) {
+         pl_rearmed_cbs.gpu_peops.iUseDither = 1;
+         pl_rearmed_cbs.gpu_peopsgl.bDrawDither = 1;
+#ifdef __ARM_NEON__
+         pl_rearmed_cbs.gpu_neon.allow_dithering = 1;
+#endif
+      }
+   }
+
 #ifdef __ARM_NEON__
    var.value = "NULL";
    var.key = "pcsx_rearmed_neon_interlace_enable";
@@ -1613,7 +1639,7 @@ static void check_system_specs(void)
 
 void retro_init(void)
 {
-       const char *bios[] = { "scph1001", "scph5501", "scph7001" };
+       const char *bios[] = { "SCPH101", "SCPH7001", "SCPH5501", "SCPH1001" };
        const char *dir;
        char path[256];
        int i, ret;
@@ -1680,7 +1706,7 @@ void retro_init(void)
                SysPrintf("no BIOS files found.\n");
                struct retro_message msg =
                {
-                       "no BIOS found, expect bugs!",
+                       "No PlayStation BIOS file found - add for better compatibility",
                        180
                };
                environ_cb(RETRO_ENVIRONMENT_SET_MESSAGE, (void*)&msg);
@@ -1701,7 +1727,7 @@ void retro_init(void)
        spu_config.iUseFixedUpdates = 1;
 
        McdDisable[0] = 0;
-       McdDisable[1] = 1;
+       McdDisable[1] = 0;
        init_memcard(Mcd1Data);
    init_memcard(Mcd2Data);