implify multitap core options
[pcsx_rearmed.git] / frontend / libretro.c
index 9aadb32..07601cb 100644 (file)
@@ -39,6 +39,7 @@
 #include "revision.h"
 
 #include <libretro.h>
+#include <compat/fopen_utf8.h>
 #include "libretro_core_options.h"
 
 #ifdef _3DS
@@ -577,53 +578,37 @@ unsigned retro_api_version(void)
 
 static void update_multitap(void)
 {
-   struct retro_variable var;
-   int auto_case, port;
+   struct retro_variable var = {};
 
    var.value = NULL;
-   var.key = "pcsx_rearmed_multitap1";
-   auto_case = 0;
+   var.key = "pcsx_rearmed_multitap";
    if (environ_cb && (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value))
    {
-      if (strcmp(var.value, "enabled") == 0)
+      if (strcmp(var.value, "port 1 only") == 0)
+      {
          multitap1 = 1;
-      else if (strcmp(var.value, "disabled") == 0)
+         multitap2 = 0;
+      }
+      else if (strcmp(var.value, "port 2 only") == 0)
+      {
          multitap1 = 0;
-      else if (strcmp(var.value, "automatic") == 0)
-         auto_case = 1;
-   }
-   else
-      multitap1 = 0;
-
-   if (auto_case)
-   {
-      // If a gamepad is plugged after port 2, we need a first multitap.
-      multitap1 = 0;
-      for (port = 2; port < PORTS_NUMBER; port++)
-         multitap1 |= in_type[port] != PSE_PAD_TYPE_NONE;
-   }
-
-   var.value = NULL;
-   var.key = "pcsx_rearmed_multitap2";
-   auto_case = 0;
-   if (environ_cb && (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value))
-   {
-      if (strcmp(var.value, "enabled") == 0)
          multitap2 = 1;
-      else if (strcmp(var.value, "disabled") == 0)
+      }
+      else if (strcmp(var.value, "both") == 0)
+      {
+         multitap1 = 1;
+         multitap2 = 1;
+      }
+      else
+      {
+         multitap1 = 0;
          multitap2 = 0;
-      else if (strcmp(var.value, "automatic") == 0)
-         auto_case = 1;
+      }
    }
    else
-      multitap2 = 0;
-
-   if (auto_case)
    {
-      // If a gamepad is plugged after port 4, we need a second multitap.
+      multitap1 = 0;
       multitap2 = 0;
-      for (port = 4; port < PORTS_NUMBER; port++)
-         multitap2 |= in_type[port] != PSE_PAD_TYPE_NONE;
    }
 }
 
@@ -660,6 +645,7 @@ void retro_set_controller_port_device(unsigned port, unsigned device)
    }
 
    SysPrintf("port: %u  device: %s\n", port + 1, get_pse_pad_label[in_type[port]]);
+   input_changed = 1;
 }
 
 void retro_get_system_info(struct retro_system_info *info)
@@ -1112,7 +1098,7 @@ static bool read_m3u(const char *file)
 {
    char line[1024];
    char name[PATH_MAX];
-   FILE *f = fopen(file, "r");
+   FILE *f = fopen_utf8(file, "r");
    if (!f)
       return false;
 
@@ -2572,7 +2558,7 @@ static bool try_use_bios(const char *path)
    long size;
    const char *name;
 
-   f = fopen(path, "rb");
+   f = fopen_utf8(path, "rb");
    if (f == NULL)
       return false;