implify multitap core options
authornegativeExponent <negativeExponent@users.noreply.github.com>
Wed, 21 Apr 2021 21:59:52 +0000 (05:59 +0800)
committernegativeExponent <negativeExponent@users.noreply.github.com>
Fri, 23 Apr 2021 09:47:09 +0000 (17:47 +0800)
- Combines multitap1 and multitap2 core options
- Removes "automatic" mode

frontend/libretro.c
frontend/libretro_core_options.h

index f94bcc6..07601cb 100644 (file)
@@ -578,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;
    }
 }
 
@@ -661,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)
index cf89605..e16246f 100644 (file)
@@ -157,25 +157,14 @@ struct retro_core_option_definition option_defs_us[] = {
       "1.00",
    },
    {
-      "pcsx_rearmed_multitap1",
-      "Multitap 1 (Restart)",
-      "Enables/Disables multitap on port 1, allowing upto 5 players in games that permit it.",
+      "pcsx_rearmed_multitap",
+      "Multitap Mode (Restart)",
+      "Enables/Disables multitap on port 1 and/or port 2, allowing upto 5 players in games that permit it.",
       {
-         { "automatic",     NULL },
-         { "disabled", NULL },
-         { "enabled",  NULL },
-         { NULL, NULL },
-      },
-      "disabled",
-   },
-   {
-      "pcsx_rearmed_multitap2",
-      "Multitap 2 (Restart)",
-      "Enables/Disables multitap on port 2, allowing up to 8 players in games that permit it. Multitap 1 has to be enabled for this to work.",
-      {
-         { "automatic",     NULL },
-         { "disabled", NULL },
-         { "enabled",  NULL },
+         { "disable",     NULL },
+         { "port 1 only", NULL },
+         { "port 2 only", NULL },
+         { "both",        NULL },
          { NULL, NULL },
       },
       "disabled",