X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2Flibretro.c;h=07601cbe38372aceb8a3f0a8d081f51c2a5f981b;hb=f65750134e163ab96cb3f59a572fd9b9d07b87d0;hp=91721af36f0f81665b07ded4da4e921fbe99c178;hpb=6a3c7538f6167cfc9025d7157c1f8555edc2d51e;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index 91721af3..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; @@ -2725,11 +2711,19 @@ static void loadPSXBios(void) } } - if (useHLE || !found_bios) + if (!found_bios) { - const char *msg_str = "No PlayStation BIOS file found - add for better compatibility"; - - SysPrintf("no BIOS files found.\n"); + const char *msg_str; + if (useHLE) + { + msg_str = "BIOS set to \'hle\' in core options - real BIOS will be ignored"; + SysPrintf("Using HLE BIOS.\n"); + } + else + { + msg_str = "No PlayStation BIOS file found - add for better compatibility"; + SysPrintf("No BIOS files found.\n"); + } if (msg_interface_version >= 1) { @@ -2764,7 +2758,7 @@ void retro_init(void) msg_interface_version = 0; environ_cb(RETRO_ENVIRONMENT_GET_MESSAGE_INTERFACE_VERSION, &msg_interface_version); -#ifdef __MACH__ +#if defined(__MACH__) && !defined(TVOS) // magic sauce to make the dynarec work on iOS syscall(SYS_ptrace, 0 /*PTRACE_TRACEME*/, 0, 0, 0); #endif