diff --git a/Makefile.ps3 b/Makefile.ps3 index bb0280a983..75d5675d0e 100644 --- a/Makefile.ps3 +++ b/Makefile.ps3 @@ -44,7 +44,6 @@ PPU_SRCS = fifo_buffer.c \ console/librsound/librsound.c \ console/szlib/szlib.c \ ps3/ps3_input.c \ - input/input_luts.c \ ps3/cellframework2/utility/oskutil.c \ compat/compat.c \ ssnes.c \ diff --git a/console/console_ext.c b/console/console_ext.c index 4db5566909..ca951628b9 100644 --- a/console/console_ext.c +++ b/console/console_ext.c @@ -39,6 +39,10 @@ #define MAX_ARGS 32 +/*============================================================ + ROM EXTENSIONS +============================================================ */ + static char g_rom_ext[1024]; void ssnes_console_set_rom_ext(const char *ext) @@ -240,3 +244,244 @@ int ssnes_main_init_wrap(const struct ssnes_main_wrap *args) return ret; } + +/*============================================================ + INPUT EXTENSIONS +============================================================ */ + +#include "console_ext_input.h" + +struct platform_bind +{ + uint64_t joykey; + const char *label; +}; + +uint64_t ssnes_default_keybind_lut[SSNES_FIRST_META_KEY]; + +char ssnes_default_libsnes_keybind_name_lut[SSNES_FIRST_META_KEY][256] = { + "B Button", /* SNES_DEVICE_ID_JOYPAD_B */ + "Y Button", /* SNES_DEVICE_ID_JOYPAD_Y */ + "Select button", /* SNES_DEVICE_ID_JOYPAD_SELECT */ + "Start button", /* SNES_DEVICE_ID_JOYPAD_START */ + "D-Pad Up", /* SNES_DEVICE_ID_JOYPAD_UP */ + "D-Pad Down", /* SNES_DEVICE_ID_JOYPAD_DOWN */ + "D-Pad Left", /* SNES_DEVICE_ID_JOYPAD_LEFT */ + "D-Pad Right", /* SNES_DEVICE_ID_JOYPAD_RIGHT */ + "A Button", /* SNES_DEVICE_ID_JOYPAD_A */ + "X Button", /* SNES_DEVICE_ID_JOYPAD_X */ + "L Button", /* SNES_DEVICE_ID_JOYPAD_L */ + "R Button", /* SNES_DEVICE_ID_JOYPAD_R */ +}; + +#if defined(__CELLOS_LV2__) +uint64_t ssnes_platform_keybind_lut[SSNES_LAST_PLATFORM_KEY] = { + CTRL_CIRCLE_MASK, + CTRL_CROSS_MASK, + CTRL_TRIANGLE_MASK, + CTRL_SQUARE_MASK, + CTRL_UP_MASK, + CTRL_DOWN_MASK, + CTRL_LEFT_MASK, + CTRL_RIGHT_MASK, + CTRL_SELECT_MASK, + CTRL_START_MASK, + CTRL_L1_MASK, + CTRL_L2_MASK, + CTRL_L3_MASK, + CTRL_R1_MASK, + CTRL_R2_MASK, + CTRL_R3_MASK, + CTRL_LSTICK_LEFT_MASK, + CTRL_LSTICK_RIGHT_MASK, + CTRL_LSTICK_UP_MASK, + CTRL_LSTICK_DOWN_MASK, + CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK, + CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK, + CTRL_UP_MASK | CTRL_LSTICK_UP_MASK, + CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK, + CTRL_RSTICK_LEFT_MASK, + CTRL_RSTICK_RIGHT_MASK, + CTRL_RSTICK_UP_MASK, + CTRL_RSTICK_DOWN_MASK, + CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK, + CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK, + CTRL_UP_MASK | CTRL_RSTICK_UP_MASK, + CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK, +}; + +static const struct platform_bind platform_keys[] = { + { CTRL_CIRCLE_MASK, "Circle button" }, + { CTRL_CROSS_MASK, "Cross button" }, + { CTRL_TRIANGLE_MASK, "Triangle button" }, + { CTRL_SQUARE_MASK, "Square button" }, + { CTRL_UP_MASK, "D-Pad Up" }, + { CTRL_DOWN_MASK, "D-Pad Down" }, + { CTRL_LEFT_MASK, "D-Pad Left" }, + { CTRL_RIGHT_MASK, "D-Pad Right" }, + { CTRL_SELECT_MASK, "Select button" }, + { CTRL_START_MASK, "Start button" }, + { CTRL_L1_MASK, "L1 button" }, + { CTRL_L2_MASK, "L2 button" }, + { CTRL_L3_MASK, "L3 button" }, + { CTRL_R1_MASK, "R1 button" }, + { CTRL_R2_MASK, "R2 button" }, + { CTRL_R3_MASK, "R3 button" }, + { CTRL_LSTICK_LEFT_MASK, "LStick Left" }, + { CTRL_LSTICK_RIGHT_MASK, "LStick Right" }, + { CTRL_LSTICK_UP_MASK, "LStick Up" }, + { CTRL_LSTICK_DOWN_MASK, "LStick Down" }, + { CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, + { CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, + { CTRL_UP_MASK | CTRL_LSTICK_UP_MASK, "LStick D-Pad Up" }, + { CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, + { CTRL_RSTICK_LEFT_MASK, "RStick Left" }, + { CTRL_RSTICK_RIGHT_MASK, "RStick Right" }, + { CTRL_RSTICK_UP_MASK, "RStick Up" }, + { CTRL_RSTICK_DOWN_MASK, "RStick Down" }, + { CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, + { CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, + { CTRL_UP_MASK | CTRL_RSTICK_UP_MASK, "RStick D-Pad Up" }, + { CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, +}; +#elif defined(_XBOX) +uint64_t ssnes_platform_keybind_lut[SSNES_LAST_PLATFORM_KEY] = { + XINPUT_GAMEPAD_B, + XINPUT_GAMEPAD_A, + XINPUT_GAMEPAD_Y, + XINPUT_GAMEPAD_X, + XINPUT_GAMEPAD_DPAD_UP, + XINPUT_GAMEPAD_DPAD_DOWN, + XINPUT_GAMEPAD_DPAD_LEFT, + XINPUT_GAMEPAD_DPAD_RIGHT, + XINPUT_GAMEPAD_BACK, + XINPUT_GAMEPAD_START, + XINPUT_GAMEPAD_LEFT_SHOULDER, + XINPUT_GAMEPAD_LEFT_TRIGGER, + XINPUT_GAMEPAD_LEFT_THUMB, + XINPUT_GAMEPAD_RIGHT_SHOULDER, + XINPUT_GAMEPAD_RIGHT_TRIGGER, + XINPUT_GAMEPAD_RIGHT_THUMB, + XINPUT_GAMEPAD_LSTICK_LEFT_MASK, + XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, + XINPUT_GAMEPAD_LSTICK_UP_MASK, + XINPUT_GAMEPAD_LSTICK_DOWN_MASK, + XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_LSTICK_LEFT_MASK, + XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, + XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_LSTICK_UP_MASK, + XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_LSTICK_DOWN_MASK, + XINPUT_GAMEPAD_RSTICK_LEFT_MASK, + XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, + XINPUT_GAMEPAD_RSTICK_UP_MASK, + XINPUT_GAMEPAD_RSTICK_DOWN_MASK, + XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_RSTICK_LEFT_MASK, + XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, + XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_RSTICK_UP_MASK, + XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_RSTICK_DOWN_MASK, +}; + +static const struct platform_bind platform_keys[] = { + { XINPUT_GAMEPAD_B, "B button" }, + { XINPUT_GAMEPAD_A, "A button" }, + { XINPUT_GAMEPAD_Y, "Y button" }, + { XINPUT_GAMEPAD_X, "X button" }, + { XINPUT_GAMEPAD_DPAD_UP, "D-Pad Up" }, + { XINPUT_GAMEPAD_DPAD_DOWN, "D-Pad Down" }, + { XINPUT_GAMEPAD_DPAD_LEFT, "D-Pad Left" }, + { XINPUT_GAMEPAD_DPAD_RIGHT, "D-Pad Right" }, + { XINPUT_GAMEPAD_BACK, "Back button" }, + { XINPUT_GAMEPAD_START, "Start button" }, + { XINPUT_GAMEPAD_LEFT_SHOULDER, "Left Shoulder" }, + { XINPUT_GAMEPAD_LEFT_TRIGGER, "Left Trigger" }, + { XINPUT_GAMEPAD_LEFT_THUMB, "Left Thumb" }, + { XINPUT_GAMEPAD_RIGHT_SHOULDER, "Right Shoulder" }, + { XINPUT_GAMEPAD_RIGHT_TRIGGER, "Right Trigger" }, + { XINPUT_GAMEPAD_RIGHT_THUMB, "Right Thumb" }, + { XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick Left" }, + { XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick Right" }, + { XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick Up" }, + { XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick Down" }, + { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, + { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, + { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick D-Pad Up" }, + { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, + { XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick Left" }, + { XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick Right" }, + { XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick Up" }, + { XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick Down" }, + { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, + { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, + { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick D-Pad Up" }, + { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, +}; +#endif + +uint64_t ssnes_input_find_previous_platform_key(uint64_t joykey) +{ + size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); + + if (platform_keys[0].joykey == joykey) + return joykey; + + for (size_t i = 1; i < arr_size; i++) + { + if (platform_keys[i].joykey == joykey) + return platform_keys[i - 1].joykey; + } + + return NO_BTN; +} + +uint64_t ssnes_input_find_next_platform_key(uint64_t joykey) +{ + size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); + if (platform_keys[arr_size - 1].joykey == joykey) + return joykey; + + for (size_t i = 0; i < arr_size - 1; i++) + { + if (platform_keys[i].joykey == joykey) + return platform_keys[i + 1].joykey; + } + + return NO_BTN; +} + +const char *ssnes_input_find_platform_key_label(uint64_t joykey) +{ + if (joykey == NO_BTN) + return "No button"; + + size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); + for (size_t i = 0; i < arr_size; i++) + { + if (platform_keys[i].joykey == joykey) + return platform_keys[i].label; + } + + return "Unknown"; +} + +void ssnes_input_set_default_keybind_names_for_emulator(void) +{ + const char *id = snes_library_id(); + + // Genesis Plus GX/Next + if (strstr(id, "Genesis Plus GX")) + { + strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_B], + "B button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_B])); + strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_A], + "C button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_A])); + strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_X], + "Y button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_X])); + strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_Y], + "A button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_Y])); + strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_L], + "X button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_L])); + strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_R], + "Z button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_R])); + strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_SELECT], + "Mode button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_SELECT])); + } +} diff --git a/console/console_ext.h b/console/console_ext.h index 9f7006b604..3fedf3a95b 100644 --- a/console/console_ext.h +++ b/console/console_ext.h @@ -19,6 +19,12 @@ #ifndef ROM_EXT_H__ #define ROM_EXT_H__ +#include "console_ext_input.h" + +/*============================================================ + ROM EXTENSIONS +============================================================ */ + void ssnes_console_set_rom_ext(const char *ext); // Get rom extensions for current library. @@ -32,4 +38,16 @@ void ssnes_console_name_from_id(char *name, size_t size); int ssnes_extract_zipfile(const char *zip_path); #endif +/*============================================================ + INPUT EXTENSIONS +============================================================ */ + +const char *ssnes_input_find_platform_key_label(uint64_t joykey); +uint64_t ssnes_input_find_previous_platform_key(uint64_t joykey); +uint64_t ssnes_input_find_next_platform_key(uint64_t joykey); + +// Sets custom default keybind names (some systems emulated by the emulator +// will need different keybind names for buttons, etc.) +void ssnes_input_set_default_keybind_names_for_emulator(void); + #endif diff --git a/input/input_luts.h b/console/console_ext_input.h similarity index 87% rename from input/input_luts.h rename to console/console_ext_input.h index a3d63ae18b..874f1a904c 100644 --- a/input/input_luts.h +++ b/console/console_ext_input.h @@ -16,17 +16,13 @@ * If not, see . */ -#ifndef __SSNES_INPUT_LUTS_H -#define __SSNES_INPUT_LUTS_H +#ifndef ROM_EXT_INPUT_H__ +#define ROM_EXT_INPUT_H__ #include "../driver.h" -#include "../libsnes.hpp" -#include #if defined(__CELLOS_LV2__) - #include "../ps3/ps3_input.h" - enum ps3_device_id { PS3_DEVICE_ID_JOYPAD_CIRCLE = 0, @@ -111,13 +107,4 @@ extern uint64_t ssnes_default_keybind_lut[SSNES_FIRST_META_KEY]; extern uint64_t ssnes_platform_keybind_lut[SSNES_LAST_PLATFORM_KEY]; extern char ssnes_default_libsnes_keybind_name_lut[SSNES_FIRST_META_KEY][256]; -const char *ssnes_input_find_platform_key_label(uint64_t joykey); -uint64_t ssnes_input_find_previous_platform_key(uint64_t joykey); -uint64_t ssnes_input_find_next_platform_key(uint64_t joykey); - -// Sets custom default keybind names (some systems emulated by the emulator -// will need different keybind names for buttons, etc.) -void ssnes_input_set_default_keybind_names_for_emulator(void); - #endif - diff --git a/input/input_luts.c b/input/input_luts.c deleted file mode 100644 index 3750efc8c2..0000000000 --- a/input/input_luts.c +++ /dev/null @@ -1,265 +0,0 @@ -/* SSNES - A Super Nintendo Entertainment System (SNES) Emulator frontend for libsnes. - * Copyright (C) 2010-2012 - Hans-Kristian Arntzen - * Copyright (C) 2011-2012 - Daniel De Matteis - * - * Some code herein may be based on code found in BSNES. - * - * SSNES is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * SSNES is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with SSNES. - * If not, see . - */ - -#ifdef _XBOX -#define NOD3D -#define NONET -#include -#endif - -#include -#include -#include "input_luts.h" -#include "../compat/strl.h" - -uint64_t ssnes_default_keybind_lut[SSNES_FIRST_META_KEY]; - -char ssnes_default_libsnes_keybind_name_lut[SSNES_FIRST_META_KEY][256] = { - "B Button", /* SNES_DEVICE_ID_JOYPAD_B */ - "Y Button", /* SNES_DEVICE_ID_JOYPAD_Y */ - "Select button", /* SNES_DEVICE_ID_JOYPAD_SELECT */ - "Start button", /* SNES_DEVICE_ID_JOYPAD_START */ - "D-Pad Up", /* SNES_DEVICE_ID_JOYPAD_UP */ - "D-Pad Down", /* SNES_DEVICE_ID_JOYPAD_DOWN */ - "D-Pad Left", /* SNES_DEVICE_ID_JOYPAD_LEFT */ - "D-Pad Right", /* SNES_DEVICE_ID_JOYPAD_RIGHT */ - "A Button", /* SNES_DEVICE_ID_JOYPAD_A */ - "X Button", /* SNES_DEVICE_ID_JOYPAD_X */ - "L Button", /* SNES_DEVICE_ID_JOYPAD_L */ - "R Button", /* SNES_DEVICE_ID_JOYPAD_R */ -}; - -#if defined(__CELLOS_LV2__) -uint64_t ssnes_platform_keybind_lut[SSNES_LAST_PLATFORM_KEY] = { - CTRL_CIRCLE_MASK, - CTRL_CROSS_MASK, - CTRL_TRIANGLE_MASK, - CTRL_SQUARE_MASK, - CTRL_UP_MASK, - CTRL_DOWN_MASK, - CTRL_LEFT_MASK, - CTRL_RIGHT_MASK, - CTRL_SELECT_MASK, - CTRL_START_MASK, - CTRL_L1_MASK, - CTRL_L2_MASK, - CTRL_L3_MASK, - CTRL_R1_MASK, - CTRL_R2_MASK, - CTRL_R3_MASK, - CTRL_LSTICK_LEFT_MASK, - CTRL_LSTICK_RIGHT_MASK, - CTRL_LSTICK_UP_MASK, - CTRL_LSTICK_DOWN_MASK, - CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK, - CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK, - CTRL_UP_MASK | CTRL_LSTICK_UP_MASK, - CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK, - CTRL_RSTICK_LEFT_MASK, - CTRL_RSTICK_RIGHT_MASK, - CTRL_RSTICK_UP_MASK, - CTRL_RSTICK_DOWN_MASK, - CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK, - CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK, - CTRL_UP_MASK | CTRL_RSTICK_UP_MASK, - CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK, -}; -#elif defined(_XBOX) -uint64_t ssnes_platform_keybind_lut[SSNES_LAST_PLATFORM_KEY] = { - XINPUT_GAMEPAD_B, - XINPUT_GAMEPAD_A, - XINPUT_GAMEPAD_Y, - XINPUT_GAMEPAD_X, - XINPUT_GAMEPAD_DPAD_UP, - XINPUT_GAMEPAD_DPAD_DOWN, - XINPUT_GAMEPAD_DPAD_LEFT, - XINPUT_GAMEPAD_DPAD_RIGHT, - XINPUT_GAMEPAD_BACK, - XINPUT_GAMEPAD_START, - XINPUT_GAMEPAD_LEFT_SHOULDER, - XINPUT_GAMEPAD_LEFT_TRIGGER, - XINPUT_GAMEPAD_LEFT_THUMB, - XINPUT_GAMEPAD_RIGHT_SHOULDER, - XINPUT_GAMEPAD_RIGHT_TRIGGER, - XINPUT_GAMEPAD_RIGHT_THUMB, - XINPUT_GAMEPAD_LSTICK_LEFT_MASK, - XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, - XINPUT_GAMEPAD_LSTICK_UP_MASK, - XINPUT_GAMEPAD_LSTICK_DOWN_MASK, - XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_LSTICK_LEFT_MASK, - XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, - XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_LSTICK_UP_MASK, - XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_LSTICK_DOWN_MASK, - XINPUT_GAMEPAD_RSTICK_LEFT_MASK, - XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, - XINPUT_GAMEPAD_RSTICK_UP_MASK, - XINPUT_GAMEPAD_RSTICK_DOWN_MASK, - XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_RSTICK_LEFT_MASK, - XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, - XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_RSTICK_UP_MASK, - XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_RSTICK_DOWN_MASK, -}; -#endif - -struct platform_bind -{ - uint64_t joykey; - const char *label; -}; - -#if defined(__CELLOS_LV2__) -static const struct platform_bind platform_keys[] = { - { CTRL_CIRCLE_MASK, "Circle button" }, - { CTRL_CROSS_MASK, "Cross button" }, - { CTRL_TRIANGLE_MASK, "Triangle button" }, - { CTRL_SQUARE_MASK, "Square button" }, - { CTRL_UP_MASK, "D-Pad Up" }, - { CTRL_DOWN_MASK, "D-Pad Down" }, - { CTRL_LEFT_MASK, "D-Pad Left" }, - { CTRL_RIGHT_MASK, "D-Pad Right" }, - { CTRL_SELECT_MASK, "Select button" }, - { CTRL_START_MASK, "Start button" }, - { CTRL_L1_MASK, "L1 button" }, - { CTRL_L2_MASK, "L2 button" }, - { CTRL_L3_MASK, "L3 button" }, - { CTRL_R1_MASK, "R1 button" }, - { CTRL_R2_MASK, "R2 button" }, - { CTRL_R3_MASK, "R3 button" }, - { CTRL_LSTICK_LEFT_MASK, "LStick Left" }, - { CTRL_LSTICK_RIGHT_MASK, "LStick Right" }, - { CTRL_LSTICK_UP_MASK, "LStick Up" }, - { CTRL_LSTICK_DOWN_MASK, "LStick Down" }, - { CTRL_LEFT_MASK | CTRL_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, - { CTRL_RIGHT_MASK | CTRL_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, - { CTRL_UP_MASK | CTRL_LSTICK_UP_MASK, "LStick D-Pad Up" }, - { CTRL_DOWN_MASK | CTRL_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, - { CTRL_RSTICK_LEFT_MASK, "RStick Left" }, - { CTRL_RSTICK_RIGHT_MASK, "RStick Right" }, - { CTRL_RSTICK_UP_MASK, "RStick Up" }, - { CTRL_RSTICK_DOWN_MASK, "RStick Down" }, - { CTRL_LEFT_MASK | CTRL_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, - { CTRL_RIGHT_MASK | CTRL_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, - { CTRL_UP_MASK | CTRL_RSTICK_UP_MASK, "RStick D-Pad Up" }, - { CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, -}; -#elif defined(_XBOX) -static const struct platform_bind platform_keys[] = { - { XINPUT_GAMEPAD_B, "B button" }, - { XINPUT_GAMEPAD_A, "A button" }, - { XINPUT_GAMEPAD_Y, "Y button" }, - { XINPUT_GAMEPAD_X, "X button" }, - { XINPUT_GAMEPAD_DPAD_UP, "D-Pad Up" }, - { XINPUT_GAMEPAD_DPAD_DOWN, "D-Pad Down" }, - { XINPUT_GAMEPAD_DPAD_LEFT, "D-Pad Left" }, - { XINPUT_GAMEPAD_DPAD_RIGHT, "D-Pad Right" }, - { XINPUT_GAMEPAD_BACK, "Back button" }, - { XINPUT_GAMEPAD_START, "Start button" }, - { XINPUT_GAMEPAD_LEFT_SHOULDER, "Left Shoulder" }, - { XINPUT_GAMEPAD_LEFT_TRIGGER, "Left Trigger" }, - { XINPUT_GAMEPAD_LEFT_THUMB, "Left Thumb" }, - { XINPUT_GAMEPAD_RIGHT_SHOULDER, "Right Shoulder" }, - { XINPUT_GAMEPAD_RIGHT_TRIGGER, "Right Trigger" }, - { XINPUT_GAMEPAD_RIGHT_THUMB, "Right Thumb" }, - { XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick Left" }, - { XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick Right" }, - { XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick Up" }, - { XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick Down" }, - { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, - { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, - { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick D-Pad Up" }, - { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, - { XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick Left" }, - { XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick Right" }, - { XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick Up" }, - { XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick Down" }, - { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, - { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, - { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick D-Pad Up" }, - { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, -}; -#endif - -uint64_t ssnes_input_find_previous_platform_key(uint64_t joykey) -{ - size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); - - if (platform_keys[0].joykey == joykey) - return joykey; - - for (size_t i = 1; i < arr_size; i++) - { - if (platform_keys[i].joykey == joykey) - return platform_keys[i - 1].joykey; - } - - return NO_BTN; -} - -uint64_t ssnes_input_find_next_platform_key(uint64_t joykey) -{ - size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); - if (platform_keys[arr_size - 1].joykey == joykey) - return joykey; - - for (size_t i = 0; i < arr_size - 1; i++) - { - if (platform_keys[i].joykey == joykey) - return platform_keys[i + 1].joykey; - } - - return NO_BTN; -} - -const char *ssnes_input_find_platform_key_label(uint64_t joykey) -{ - if (joykey == NO_BTN) - return "No button"; - - size_t arr_size = sizeof(platform_keys) / sizeof(platform_keys[0]); - for (size_t i = 0; i < arr_size; i++) - { - if (platform_keys[i].joykey == joykey) - return platform_keys[i].label; - } - - return "Unknown"; -} - -void ssnes_input_set_default_keybind_names_for_emulator(void) -{ - const char *id = snes_library_id(); - - // Genesis Plus GX/Next - if (strstr(id, "Genesis Plus GX")) - { - strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_B], - "B button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_B])); - strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_A], - "C button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_A])); - strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_X], - "Y button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_X])); - strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_Y], - "A button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_Y])); - strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_L], - "X button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_L])); - strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_R], - "Z button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_R])); - strlcpy(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_SELECT], - "Mode button", sizeof(ssnes_default_libsnes_keybind_name_lut[SNES_DEVICE_ID_JOYPAD_SELECT])); - } -} diff --git a/ps3/main.c b/ps3/main.c index 26680921e2..91ece6d52d 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -47,7 +47,6 @@ #include "../console/main_wrap.h" #include "../conf/config_file.h" #include "../conf/config_file_macros.h" -#include "../input/input_luts.h" #include "../general.h" #include "../file.h" diff --git a/ps3/menu.c b/ps3/menu.c index 88f7d3f8fb..1001f75fec 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -28,7 +28,6 @@ #include "ps3_input.h" #include "cellframework2/fileio/file_browser.h" -#include "../input/input_luts.h" #include "../console/console_ext.h" #include "ps3_video_psgl.h" diff --git a/ps3/ps3_input.c b/ps3/ps3_input.c index b74bfedb77..e08bcdc261 100644 --- a/ps3/ps3_input.c +++ b/ps3/ps3_input.c @@ -25,7 +25,7 @@ #include "ps3_input.h" #include "ps3_video_psgl.h" #include "../driver.h" -#include "../input/input_luts.h" +#include "../console/console_ext_input.h" #include "../libsnes.hpp" #include "../general.h" #include "shared.h"