From f65750134e163ab96cb3f59a572fd9b9d07b87d0 Mon Sep 17 00:00:00 2001 From: negativeExponent Date: Thu, 22 Apr 2021 05:59:52 +0800 Subject: [PATCH] implify multitap core options - Combines multitap1 and multitap2 core options - Removes "automatic" mode --- frontend/libretro.c | 55 ++++++++++++-------------------- frontend/libretro_core_options.h | 25 ++++----------- 2 files changed, 27 insertions(+), 53 deletions(-) diff --git a/frontend/libretro.c b/frontend/libretro.c index f94bcc68..07601cbe 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -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) diff --git a/frontend/libretro_core_options.h b/frontend/libretro_core_options.h index cf896059..e16246ff 100644 --- a/frontend/libretro_core_options.h +++ b/frontend/libretro_core_options.h @@ -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", -- 2.39.5