aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authornegativeExponent2020-11-03 22:24:00 +0800
committernegativeExponent2020-11-04 01:52:40 +0800
commit82df580d6a00527fd55898b21a0d8e82b951620b (patch)
tree6fc9f718d44f5d0f2359138d83b1618f9584f21d /frontend
parent311312335dca8b82913397418ca5c8aa8a677081 (diff)
downloadpcsx_rearmed-82df580d6a00527fd55898b21a0d8e82b951620b.tar.gz
pcsx_rearmed-82df580d6a00527fd55898b21a0d8e82b951620b.tar.bz2
pcsx_rearmed-82df580d6a00527fd55898b21a0d8e82b951620b.zip
Indicate that multitap requires restart and cleanup
Multi-tap related feature like enabling/changing controllers type on port 4-8 and changing multitap option requires a restart. Port 1 and 2 (player 1-2) are mostly safe to change options anytime
Diffstat (limited to 'frontend')
-rw-r--r--frontend/libretro.c130
-rw-r--r--frontend/libretro_core_options.h129
-rw-r--r--frontend/libretro_core_options_intl.h125
3 files changed, 19 insertions, 365 deletions
diff --git a/frontend/libretro.c b/frontend/libretro.c
index 62c4fbf..e18b190 100644
--- a/frontend/libretro.c
+++ b/frontend/libretro.c
@@ -117,6 +117,7 @@ int in_mouse[8][2];
int multitap1 = 0;
int multitap2 = 0;
int in_enable_vibration = 1;
+static int input_changed = 0;
// NegCon adjustment parameters
// > The NegCon 'twist' action is somewhat awkward when mapped
@@ -574,106 +575,6 @@ unsigned retro_api_version(void)
return RETRO_API_VERSION;
}
-static int controller_port_variable(unsigned port, struct retro_variable *var)
-{
- if (port >= PORTS_NUMBER)
- return 0;
-
- if (!environ_cb)
- return 0;
-
- var->value = NULL;
- switch (port)
- {
- case 0:
- var->key = "pcsx_rearmed_pad1type";
- break;
- case 1:
- var->key = "pcsx_rearmed_pad2type";
- break;
- case 2:
- var->key = "pcsx_rearmed_pad3type";
- break;
- case 3:
- var->key = "pcsx_rearmed_pad4type";
- break;
- case 4:
- var->key = "pcsx_rearmed_pad5type";
- break;
- case 5:
- var->key = "pcsx_rearmed_pad6type";
- break;
- case 6:
- var->key = "pcsx_rearmed_pad7type";
- break;
- case 7:
- var->key = "pcsx_rearmed_pad8type";
- break;
- }
-
- return environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, var) && var->value;
-}
-
-static void update_controller_port_variable(unsigned port)
-{
- if (port >= PORTS_NUMBER)
- return;
-
- struct retro_variable var;
-
- if (controller_port_variable(port, &var))
- {
- if (strcmp(var.value, "standard") == 0)
- in_type[port] = PSE_PAD_TYPE_STANDARD;
- else if (strcmp(var.value, "analog") == 0)
- in_type[port] = PSE_PAD_TYPE_ANALOGJOY;
- else if (strcmp(var.value, "dualshock") == 0)
- in_type[port] = PSE_PAD_TYPE_ANALOGPAD;
- else if (strcmp(var.value, "negcon") == 0)
- in_type[port] = PSE_PAD_TYPE_NEGCON;
- else if (strcmp(var.value, "guncon") == 0)
- in_type[port] = PSE_PAD_TYPE_GUNCON;
- else if (strcmp(var.value, "mouse") == 0)
- in_type[port] = PSE_PAD_TYPE_MOUSE;
- else if (strcmp(var.value, "none") == 0)
- in_type[port] = PSE_PAD_TYPE_NONE;
- // else 'default' case, do nothing
- }
-}
-
-static void update_controller_port_device(unsigned port, unsigned device)
-{
- if (port >= PORTS_NUMBER)
- return;
-
- struct retro_variable var;
-
- if (!controller_port_variable(port, &var))
- return;
-
- if (strcmp(var.value, "default") != 0)
- return;
-
- switch (device)
- {
- case RETRO_DEVICE_JOYPAD:
- in_type[port] = PSE_PAD_TYPE_STANDARD;
- break;
- case RETRO_DEVICE_ANALOG:
- in_type[port] = PSE_PAD_TYPE_ANALOGPAD;
- break;
- case RETRO_DEVICE_MOUSE:
- in_type[port] = PSE_PAD_TYPE_MOUSE;
- break;
- case RETRO_DEVICE_LIGHTGUN:
- in_type[port] = PSE_PAD_TYPE_GUN;
- break;
- case RETRO_DEVICE_NONE:
- default:
- in_type[port] = PSE_PAD_TYPE_NONE;
- }
-}
-
static void update_multitap(void)
{
struct retro_variable var;
@@ -1519,6 +1420,8 @@ bool retro_load_game(const struct retro_game_info *info)
set_retro_memmap();
+ input_changed = 1;
+
return true;
}
@@ -1585,7 +1488,6 @@ static float GunconAdjustRatioY = 1;
static void update_variables(bool in_flight)
{
struct retro_variable var;
- int i;
#ifdef GPU_PEOPS
int gpu_peops_fix = 0;
#endif
@@ -2221,12 +2123,6 @@ static void update_variables(bool in_flight)
char gpu_peops_option[][50] = {
"pcsx_rearmed_multitap1",
"pcsx_rearmed_multitap2",
- "pcsx_rearmed_pad3type",
- "pcsx_rearmed_pad4type",
- "pcsx_rearmed_pad5type",
- "pcsx_rearmed_pad6type",
- "pcsx_rearmed_pad7type",
- "pcsx_rearmed_pad8type",
"pcsx_rearmed_negcon_deadzone",
"pcsx_rearmed_negcon_response",
"pcsx_rearmed_analog_axis_modifier",
@@ -2281,12 +2177,6 @@ static void update_variables(bool in_flight)
}
}
}
-
- for (i = 0; i < 8; i++) {
- SysPrintf("[DEBUG] Player %d: %s\n", i + 1, get_pse_pad_label[in_type[i]]);
- }
- SysPrintf("Multiplayer 1: %s\n", multitap1 ? "enabled" : "disabled");
- SysPrintf("Multiplayer 2: %s\n", multitap2 ? "enabled" : "disabled");
}
// Taken from beetle-psx-libretro
@@ -2621,6 +2511,19 @@ static void print_internal_fps(void)
void retro_run(void)
{
+ /* update multitap when inputs have changed */
+ /* this is only applied on core restart */
+ if (input_changed)
+ {
+ int i;
+ input_changed = 0;
+ update_multitap();
+ for (i = 0; i < 8; i++)
+ SysDLog("Player %d: %s\n", i + 1, get_pse_pad_label[in_type[i]]);
+ SysDLog("Multiplayer 1: %s\n", multitap1 ? "enabled" : "disabled");
+ SysDLog("Multiplayer 2: %s\n", multitap2 ? "enabled" : "disabled");
+ }
+
//SysReset must be run while core is running,Not in menu (Locks up Retroarch)
if (rebootemu != 0)
{
@@ -2631,6 +2534,7 @@ void retro_run(void)
// skip BIOS logos
psxRegs.pc = psxRegs.GPR.n.ra;
}
+ return;
}
print_internal_fps();
diff --git a/frontend/libretro_core_options.h b/frontend/libretro_core_options.h
index c28de2a..3f589cc 100644
--- a/frontend/libretro_core_options.h
+++ b/frontend/libretro_core_options.h
@@ -157,133 +157,8 @@ struct retro_core_option_definition option_defs_us[] = {
"1.00",
},
{
- "pcsx_rearmed_pad1type",
- "Pad 1 Type",
- "Pad type for player 1",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", NULL },
- { NULL, NULL },
- },
- "standard",
- },
- {
- "pcsx_rearmed_pad2type",
- "Pad 2 Type",
- "Pad type for player 2",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", NULL },
- { NULL, NULL },
- },
- "standard",
- },
- {
- "pcsx_rearmed_pad3type",
- "Pad 3 Type",
- "Pad type for player 3",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", NULL },
- { NULL, NULL },
- },
- "none",
- },
- {
- "pcsx_rearmed_pad4type",
- "Pad 4 Type",
- "Pad type for player 4",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", NULL },
- { NULL, NULL },
- },
- "none",
- },
- {
- "pcsx_rearmed_pad5type",
- "Pad 5 Type",
- "Pad type for player 5",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", NULL },
- { NULL, NULL },
- },
- "none",
- },{
- "pcsx_rearmed_pad6type",
- "Pad 6 Type",
- "Pad type for player 6",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", NULL },
- { NULL, NULL },
- },
- "none",
- },{
- "pcsx_rearmed_pad7type",
- "Pad 7 Type",
- "Pad type for player 7",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", NULL },
- { NULL, NULL },
- },
- "none",
- },{
- "pcsx_rearmed_pad8type",
- "Pad 8 Type",
- "Pad type for player 8",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", NULL },
- { NULL, NULL },
- },
- "none",
- },
- {
"pcsx_rearmed_multitap1",
- "Multitap 1",
+ "Multitap 1 (Restart)",
"Enables/Disables multitap on port 1, allowing upto 5 players in games that permit it.",
{
{ "auto", NULL },
@@ -295,7 +170,7 @@ struct retro_core_option_definition option_defs_us[] = {
},
{
"pcsx_rearmed_multitap2",
- "Multitap 2",
+ "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.",
{
{ "auto", NULL },
diff --git a/frontend/libretro_core_options_intl.h b/frontend/libretro_core_options_intl.h
index 1e7fd79..1601ec4 100644
--- a/frontend/libretro_core_options_intl.h
+++ b/frontend/libretro_core_options_intl.h
@@ -116,131 +116,6 @@ struct retro_core_option_definition option_defs_tr[] = {
NULL
},
{
- "pcsx_rearmed_pad1type",
- "Kumanda 1 Tipi",
- "1. Oyuncu için kontrolör tipi",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", "hiçbiri" },
- { NULL, NULL },
- },
- "standard",
- },
- {
- "pcsx_rearmed_pad2type",
- "Kumanda 2 Tipi",
- "2. Oyuncu için kontrolör tipi",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", "hiçbiri" },
- { NULL, NULL },
- },
- "standard",
- },
- {
- "pcsx_rearmed_pad3type",
- "Kumanda 3 Tipi",
- "3. Oyuncu için kontrolör tipi",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", "hiçbiri" },
- { NULL, NULL },
- },
- "none",
- },
- {
- "pcsx_rearmed_pad4type",
- "Kumanda 4 Tipi",
- "4. Oyuncu için kontrolör tipi",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", "hiçbiri" },
- { NULL, NULL },
- },
- "none",
- },
- {
- "pcsx_rearmed_pad5type",
- "Kumanda 5 Tipi",
- "5. Oyuncu için kontrolör tipi",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", "hiçbiri" },
- { NULL, NULL },
- },
- "none",
- },{
- "pcsx_rearmed_pad6type",
- "Kumanda 6 Tipi",
- "6. Oyuncu için kontrolör tipi",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", "hiçbiri" },
- { NULL, NULL },
- },
- "none",
- },{
- "pcsx_rearmed_pad7type",
- "Kumanda 7 Tipi",
- "7. Oyuncu için kontrolör tipi",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", "hiçbiri" },
- { NULL, NULL },
- },
- "none",
- },{
- "pcsx_rearmed_pad8type",
- "Kumanda 8 Tipi",
- "8. Oyuncu için kontrolör tipi",
- {
- { "standard", NULL },
- { "analog", NULL },
- { "dualshock", NULL },
- { "negcon", NULL },
- { "guncon", NULL },
- { "mouse", NULL },
- { "none", "hiçbiri" },
- { NULL, NULL },
- },
- "none",
- },
- {
"pcsx_rearmed_multitap1",
"Multitap 1",
"Bağlantı noktası 1'deki multitap'ı etkinleştirir / devre dışı bırakır ve izin veren oyunlarda 5 oyuncuya kadar izin verir.",