diff --git a/config.def.h b/config.def.h index 3860e673a9..b2178a6172 100644 --- a/config.def.h +++ b/config.def.h @@ -295,18 +295,22 @@ static const float axis_threshold = 0.5; // Player 1 static const struct snes_keybind snes_keybinds_1[] = { // SNES button | keyboard key | js btn | js axis | - { true, RETRO_DEVICE_ID_JOYPAD_B, SK_z, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_Y, SK_a, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_SELECT, SK_RSHIFT, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_START, SK_RETURN, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_UP, SK_UP, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_DOWN, SK_DOWN, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_LEFT, SK_LEFT, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_RIGHT, SK_RIGHT, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_A, SK_x, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_X, SK_s, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_L, SK_q, NO_BTN, AXIS_NONE }, - { true, RETRO_DEVICE_ID_JOYPAD_R, SK_w, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_B, SK_z, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_Y, SK_a, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_SELECT, SK_RSHIFT, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_START, SK_RETURN, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_UP, SK_UP, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_DOWN, SK_DOWN, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_LEFT, SK_LEFT, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_RIGHT, SK_RIGHT, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_A, SK_x, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_X, SK_s, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L, SK_q, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R, SK_w, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L2, SK_UNKNOWN, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R2, SK_UNKNOWN, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L3, SK_UNKNOWN, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R3, SK_UNKNOWN, NO_BTN, AXIS_NONE }, { true, RARCH_FAST_FORWARD_KEY, SK_SPACE, NO_BTN, AXIS_NONE }, { true, RARCH_FAST_FORWARD_HOLD_KEY, SK_l, NO_BTN, AXIS_NONE }, @@ -349,6 +353,10 @@ static const struct snes_keybind snes_keybinds_rest[] = { { true, RETRO_DEVICE_ID_JOYPAD_X, SK_UNKNOWN, NO_BTN, AXIS_NONE }, { true, RETRO_DEVICE_ID_JOYPAD_L, SK_UNKNOWN, NO_BTN, AXIS_NONE }, { true, RETRO_DEVICE_ID_JOYPAD_R, SK_UNKNOWN, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L2, SK_UNKNOWN, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R2, SK_UNKNOWN, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_L3, SK_UNKNOWN, NO_BTN, AXIS_NONE }, + { true, RETRO_DEVICE_ID_JOYPAD_R3, SK_UNKNOWN, NO_BTN, AXIS_NONE }, }; #endif diff --git a/driver.h b/driver.h index 34d3716328..236fccce4c 100644 --- a/driver.h +++ b/driver.h @@ -28,8 +28,8 @@ #define AUDIO_CHUNK_SIZE_NONBLOCKING 2048 // So we don't get complete line-noise when fast-forwarding audio. #define AUDIO_MAX_RATIO 16 -// libretro has 12 buttons from 0-11 (libretro.h) -#define RARCH_FIRST_META_KEY 12 +// libretro has 16 buttons from 0-15 (libretro.h) +#define RARCH_FIRST_META_KEY 16 enum { RARCH_FAST_FORWARD_KEY = RARCH_FIRST_META_KEY, diff --git a/libretro.h b/libretro.h index 4b5d71d491..3411817976 100755 --- a/libretro.h +++ b/libretro.h @@ -42,6 +42,10 @@ extern "C" { #define RETRO_DEVICE_ID_JOYPAD_X 9 #define RETRO_DEVICE_ID_JOYPAD_L 10 #define RETRO_DEVICE_ID_JOYPAD_R 11 +#define RETRO_DEVICE_ID_JOYPAD_L2 12 +#define RETRO_DEVICE_ID_JOYPAD_R2 13 +#define RETRO_DEVICE_ID_JOYPAD_L3 14 +#define RETRO_DEVICE_ID_JOYPAD_R3 15 #define RETRO_DEVICE_ID_MOUSE_X 0 #define RETRO_DEVICE_ID_MOUSE_Y 1 diff --git a/retroarch.cfg b/retroarch.cfg index e2c909a9a5..80e6950e0f 100644 --- a/retroarch.cfg +++ b/retroarch.cfg @@ -189,6 +189,10 @@ # input_player1_right = right # input_player1_up = up # input_player1_down = down +# input_player1_l2 = +# input_player1_r2 = +# input_player1_l3 = +# input_player1_r3 = # If desired, it is possible to override which joypads are being used for player 1 through 5. First joypad available is 0. # input_player1_joypad_index = 0 @@ -217,6 +221,10 @@ # input_player1_right_btn = # input_player1_up_btn = # input_player1_down_btn = +# input_player1_l2_btn = +# input_player1_r2_btn = +# input_player1_l3_btn = +# input_player1_r3_btn = # Axis for SNES DPAD. # Needs to be either '+' or '-' in the first character signaling either positive or negative direction of the axis, then the axis number. diff --git a/settings.c b/settings.c index e31f68a040..b439e079b8 100644 --- a/settings.c +++ b/settings.c @@ -537,6 +537,10 @@ struct bind_map DECLARE_BIND(player##P##_x, RETRO_DEVICE_ID_JOYPAD_X), \ DECLARE_BIND(player##P##_l, RETRO_DEVICE_ID_JOYPAD_L), \ DECLARE_BIND(player##P##_r, RETRO_DEVICE_ID_JOYPAD_R), \ + DECLARE_BIND(player##P##_l2, RETRO_DEVICE_ID_JOYPAD_L2), \ + DECLARE_BIND(player##P##_r2, RETRO_DEVICE_ID_JOYPAD_R2), \ + DECLARE_BIND(player##P##_l3, RETRO_DEVICE_ID_JOYPAD_L3), \ + DECLARE_BIND(player##P##_r3, RETRO_DEVICE_ID_JOYPAD_R3), \ } // Big and nasty bind map... :) @@ -554,6 +558,10 @@ static const struct bind_map bind_maps[MAX_PLAYERS][RARCH_BIND_LIST_END] = { DECLARE_BIND(player1_x, RETRO_DEVICE_ID_JOYPAD_X), DECLARE_BIND(player1_l, RETRO_DEVICE_ID_JOYPAD_L), DECLARE_BIND(player1_r, RETRO_DEVICE_ID_JOYPAD_R), + DECLARE_BIND(player1_l2, RETRO_DEVICE_ID_JOYPAD_L2), + DECLARE_BIND(player1_r2, RETRO_DEVICE_ID_JOYPAD_R2), + DECLARE_BIND(player1_l3, RETRO_DEVICE_ID_JOYPAD_L3), + DECLARE_BIND(player1_r3, RETRO_DEVICE_ID_JOYPAD_R3), DECLARE_BIND(toggle_fast_forward, RARCH_FAST_FORWARD_KEY), DECLARE_BIND(hold_fast_forward, RARCH_FAST_FORWARD_HOLD_KEY),