From 34a36a61a06c3ca108419df3e0f9bc5971cba7f8 Mon Sep 17 00:00:00 2001 From: Tony Jansson Date: Sun, 8 Nov 2020 21:55:36 +0200 Subject: [PATCH] Mapper cleanup --- libretro/libretro-core.c | 24 +++++++++----------- libretro/libretro-mapper.c | 45 +++++++++++++++++++------------------- libretro/libretro-mapper.h | 3 ++- 3 files changed, 34 insertions(+), 38 deletions(-) diff --git a/libretro/libretro-core.c b/libretro/libretro-core.c index 550a0a5981..187551b48c 100644 --- a/libretro/libretro-core.c +++ b/libretro/libretro-core.c @@ -41,8 +41,6 @@ unsigned int opt_vkbd_alpha = 204; unsigned int vkbd_alpha = 204; /* Core vars */ -char retro_key_state[RETROK_LAST] = {0}; -char retro_key_state_old[RETROK_LAST] = {0}; static bool noautostart = false; static char* autostartString = NULL; static char* autostartProgram = NULL; @@ -581,7 +579,7 @@ static int process_cmdline(const char* argv) snprintf(full_path, sizeof(full_path), "%s", retro_temp_directory); FILE *zip_m3u; - char zip_m3u_list[20][RETRO_PATH_MAX] = {0}; + char zip_m3u_list[DC_MAX_SIZE][RETRO_PATH_MAX] = {0}; char zip_m3u_path[RETRO_PATH_MAX] = {0}; snprintf(zip_m3u_path, sizeof(zip_m3u_path), "%s%s%s.m3u", retro_temp_directory, FSDEV_DIR_SEP_STR, zip_basename); int zip_m3u_num = 0; @@ -1446,27 +1444,27 @@ void retro_set_led(unsigned led) void retro_set_environment(retro_environment_t cb) { static const struct retro_controller_description p1_controllers[] = { - { "Joystick", RETRO_DEVICE_JOYSTICK }, - { "Keyboard", RETRO_DEVICE_KEYBOARD }, + { "Joystick", RETRO_DEVICE_VICE_JOYSTICK }, + { "Keyboard", RETRO_DEVICE_VICE_KEYBOARD }, { "None", RETRO_DEVICE_NONE }, }; static const struct retro_controller_description p2_controllers[] = { - { "Joystick", RETRO_DEVICE_JOYSTICK }, - { "Keyboard", RETRO_DEVICE_KEYBOARD }, + { "Joystick", RETRO_DEVICE_VICE_JOYSTICK }, + { "Keyboard", RETRO_DEVICE_VICE_KEYBOARD }, { "None", RETRO_DEVICE_NONE }, }; static const struct retro_controller_description p3_controllers[] = { - { "Joystick", RETRO_DEVICE_JOYSTICK }, - { "Keyboard", RETRO_DEVICE_KEYBOARD }, + { "Joystick", RETRO_DEVICE_VICE_JOYSTICK }, + { "Keyboard", RETRO_DEVICE_VICE_KEYBOARD }, { "None", RETRO_DEVICE_NONE }, }; static const struct retro_controller_description p4_controllers[] = { - { "Joystick", RETRO_DEVICE_JOYSTICK }, - { "Keyboard", RETRO_DEVICE_KEYBOARD }, + { "Joystick", RETRO_DEVICE_VICE_JOYSTICK }, + { "Keyboard", RETRO_DEVICE_VICE_KEYBOARD }, { "None", RETRO_DEVICE_NONE }, }; static const struct retro_controller_description p5_controllers[] = { - { "Keyboard", RETRO_DEVICE_KEYBOARD }, + { "Keyboard", RETRO_DEVICE_VICE_KEYBOARD }, { "None", RETRO_DEVICE_NONE }, }; @@ -5350,8 +5348,6 @@ void retro_init(void) environ_cb(RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS, &achievements); memset(retro_bmp, 0, sizeof(retro_bmp)); - memset(retro_key_state, 0, sizeof(retro_key_state)); - memset(retro_key_state_old, 0, sizeof(retro_key_state_old)); retro_ui_finalized = false; update_variables(); diff --git a/libretro/libretro-mapper.c b/libretro/libretro-mapper.c index 0816e8a734..d703895a0c 100644 --- a/libretro/libretro-mapper.c +++ b/libretro/libretro-mapper.c @@ -14,9 +14,6 @@ #include "kbd.h" #include "mousedrv.h" -extern char retro_key_state[RETROK_LAST]; -extern char retro_key_state_old[RETROK_LAST]; - static retro_input_state_t input_state_cb; static retro_input_poll_t input_poll_cb; @@ -68,6 +65,7 @@ extern bool retro_vkbd; extern bool retro_vkbd_transparent; extern unsigned int retro_devices[RETRO_DEVICES]; +static unsigned retro_key_state[RETROK_LAST] = {0}; static int16_t joypad_bits[RETRO_DEVICES]; extern bool libretro_supports_bitmasks; @@ -243,26 +241,27 @@ void retro_key_down(int symkey) kbd_handle_keydown(symkey); } -void process_key(int disable_physical_cursor_keys) +void process_key(int disable_keys) { - int i; + int i = 0; + unsigned state = 0; for (i = RETROK_BACKSPACE; i < RETROK_LAST; i++) { - retro_key_state[i] = input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0, i); - - if (disable_physical_cursor_keys && (i == RETROK_UP || i == RETROK_DOWN || i == RETROK_LEFT || i == RETROK_RIGHT)) + if (disable_keys && (i == RETROK_UP || i == RETROK_DOWN || i == RETROK_LEFT || i == RETROK_RIGHT)) continue; - if (retro_key_state[i] && !retro_key_state_old[i]) + state = input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0, i); + + if (state && !retro_key_state[i]) { + retro_key_state[i] = 1; retro_key_down(i); - retro_key_state_old[i] = 1; } - else if (!retro_key_state[i] && retro_key_state_old[i]) + else if (!state && retro_key_state[i]) { + retro_key_state[i] = 0; retro_key_up(i); - retro_key_state_old[i] = 0; } } } @@ -846,7 +845,7 @@ void update_input(int disable_physical_cursor_keys) int process_keyboard_pass_through() { - unsigned process_key = 0; + unsigned process = 0; /* Defaults */ int fire_button = RETRO_DEVICE_ID_JOYPAD_B; @@ -900,25 +899,25 @@ int process_keyboard_pass_through() ((joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_R3)) && mapper_keys[RETRO_DEVICE_ID_JOYPAD_R3]) || ((joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_SELECT)) && mapper_keys[RETRO_DEVICE_ID_JOYPAD_SELECT]) || ((joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_START)) && mapper_keys[RETRO_DEVICE_ID_JOYPAD_START])) - process_key = 2; /* Skip all keyboard input when RetroPad buttons are pressed */ + process = 2; /* Skip all keyboard input when RetroPad buttons are pressed */ else if ((joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_UP)) || (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN)) || (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT))) - process_key = 1; /* Skip cursor keys */ + process = 1; /* Skip cursor keys */ break; - case RETRO_DEVICE_JOYSTICK: + case RETRO_DEVICE_VICE_JOYSTICK: if ((fire_button > -1 && (joypad_bits[0] & (1 << fire_button))) || (jump_button > -1 && (joypad_bits[0] & (1 << jump_button)))) - process_key = 2; /* Skip all keyboard input when RetroPad buttons are pressed */ + process = 2; /* Skip all keyboard input when RetroPad buttons are pressed */ else if ((joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_UP)) || (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN)) || (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (joypad_bits[0] & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT))) - process_key = 1; /* Skip cursor keys */ + process = 1; /* Skip cursor keys */ break; } @@ -975,21 +974,21 @@ int process_keyboard_pass_through() (joypad_bits[1] & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN)) || (joypad_bits[1] & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (joypad_bits[1] & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT))) - process_key = 2; /* Skip all keyboard input from RetroPad 2 */ + process = 2; /* Skip all keyboard input from RetroPad 2 */ break; - case RETRO_DEVICE_JOYSTICK: + case RETRO_DEVICE_VICE_JOYSTICK: if ((fire_button > -1 && (joypad_bits[1] & (1 << fire_button))) || (jump_button > -1 && (joypad_bits[1] & (1 << jump_button))) || (joypad_bits[1] & (1 << RETRO_DEVICE_ID_JOYPAD_UP)) || (joypad_bits[1] & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN)) || (joypad_bits[1] & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT)) || (joypad_bits[1] & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT))) - process_key = 2; /* Skip all keyboard input from RetroPad 2 */ + process = 2; /* Skip all keyboard input from RetroPad 2 */ break; } - return process_key; + return process; } void retro_poll_event() @@ -1022,7 +1021,7 @@ void retro_poll_event() int retro_port; for (retro_port = 0; retro_port <= 4; retro_port++) { - if (retro_devices[retro_port] == RETRO_DEVICE_JOYSTICK || retro_devices[retro_port] == RETRO_DEVICE_JOYPAD) + if (retro_devices[retro_port] == RETRO_DEVICE_VICE_JOYSTICK || retro_devices[retro_port] == RETRO_DEVICE_JOYPAD) { int vice_port = cur_port; BYTE j = 0; diff --git a/libretro/libretro-mapper.h b/libretro/libretro-mapper.h index 784828d6c5..54a48fa923 100644 --- a/libretro/libretro-mapper.h +++ b/libretro/libretro-mapper.h @@ -3,7 +3,8 @@ #define RETRO_DEVICES 5 -#define RETRO_DEVICE_JOYSTICK RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 1) +#define RETRO_DEVICE_VICE_JOYSTICK RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 1) +#define RETRO_DEVICE_VICE_KEYBOARD RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_KEYBOARD, 0) #define RETRO_DEVICE_ID_JOYPAD_LR 16 #define RETRO_DEVICE_ID_JOYPAD_LL 17