X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2Flibretro.c;h=07601cbe38372aceb8a3f0a8d081f51c2a5f981b;hb=f65750134e163ab96cb3f59a572fd9b9d07b87d0;hp=9aadb32feb114d69b71807e4a6949a6e17d235dd;hpb=0e1ccb3fef5d07b2b9d3e8ad12fe69f704b9669b;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index 9aadb32f..07601cbe 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -39,6 +39,7 @@ #include "revision.h" #include +#include #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;