diff --git a/360/xinput_360_input.c b/360/xinput_360_input.c index 2fee1c62ec..8c69f034ed 100644 --- a/360/xinput_360_input.c +++ b/360/xinput_360_input.c @@ -30,38 +30,38 @@ static uint64_t state[MAX_PADS]; static unsigned pads_connected; 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" }, + { XINPUT1_GAMEPAD_B, "B button" }, + { XINPUT1_GAMEPAD_A, "A button" }, + { XINPUT1_GAMEPAD_Y, "Y button" }, + { XINPUT1_GAMEPAD_X, "X button" }, + { XINPUT1_GAMEPAD_DPAD_UP, "D-Pad Up" }, + { XINPUT1_GAMEPAD_DPAD_DOWN, "D-Pad Down" }, + { XINPUT1_GAMEPAD_DPAD_LEFT, "D-Pad Left" }, + { XINPUT1_GAMEPAD_DPAD_RIGHT, "D-Pad Right" }, + { XINPUT1_GAMEPAD_BACK, "Back button" }, + { XINPUT1_GAMEPAD_START, "Start button" }, + { XINPUT1_GAMEPAD_WHITE, "Right shoulder" }, + { XINPUT1_GAMEPAD_LEFT_TRIGGER, "Left Trigger" }, + { XINPUT1_GAMEPAD_LEFT_THUMB, "Left Thumb" }, + { XINPUT1_GAMEPAD_BLACK, "Left shoulder" }, + { XINPUT1_GAMEPAD_RIGHT_TRIGGER, "Right Trigger" }, + { XINPUT1_GAMEPAD_RIGHT_THUMB, "Right Thumb" }, + { XINPUT1_GAMEPAD_LSTICK_LEFT_MASK, "LStick Left" }, + { XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK, "LStick Right" }, + { XINPUT1_GAMEPAD_LSTICK_UP_MASK, "LStick Up" }, + { XINPUT1_GAMEPAD_LSTICK_DOWN_MASK, "LStick Down" }, + { XINPUT1_GAMEPAD_DPAD_LEFT | XINPUT1_GAMEPAD_LSTICK_LEFT_MASK, "LStick D-Pad Left" }, + { XINPUT1_GAMEPAD_DPAD_RIGHT | XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK, "LStick D-Pad Right" }, + { XINPUT1_GAMEPAD_DPAD_UP | XINPUT1_GAMEPAD_LSTICK_UP_MASK, "LStick D-Pad Up" }, + { XINPUT1_GAMEPAD_DPAD_DOWN | XINPUT1_GAMEPAD_LSTICK_DOWN_MASK, "LStick D-Pad Down" }, + { XINPUT1_GAMEPAD_RSTICK_LEFT_MASK, "RStick Left" }, + { XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK, "RStick Right" }, + { XINPUT1_GAMEPAD_RSTICK_UP_MASK, "RStick Up" }, + { XINPUT1_GAMEPAD_RSTICK_DOWN_MASK, "RStick Down" }, + { XINPUT1_GAMEPAD_DPAD_LEFT | XINPUT1_GAMEPAD_RSTICK_LEFT_MASK, "RStick D-Pad Left" }, + { XINPUT1_GAMEPAD_DPAD_RIGHT | XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK, "RStick D-Pad Right" }, + { XINPUT1_GAMEPAD_DPAD_UP | XINPUT1_GAMEPAD_RSTICK_UP_MASK, "RStick D-Pad Up" }, + { XINPUT1_GAMEPAD_DPAD_DOWN | XINPUT1_GAMEPAD_RSTICK_DOWN_MASK, "RStick D-Pad Down" }, }; const unsigned int platform_keys_size = sizeof(platform_keys); @@ -79,17 +79,31 @@ static void xinput_input_poll(void *data) { retval = XInputGetState(i, &state_tmp); pads_connected += (retval == ERROR_DEVICE_NOT_CONNECTED) ? 0 : 1; - state[i] = state_tmp.Gamepad.wButtons; - state[i] |= ((state_tmp.Gamepad.sThumbLX < -DEADZONE)) << 16; - state[i] |= ((state_tmp.Gamepad.sThumbLX > DEADZONE)) << 17; - state[i] |= ((state_tmp.Gamepad.sThumbLY > DEADZONE)) << 18; - state[i] |= ((state_tmp.Gamepad.sThumbLY < -DEADZONE)) << 19; - state[i] |= ((state_tmp.Gamepad.sThumbRX < -DEADZONE)) << 20; - state[i] |= ((state_tmp.Gamepad.sThumbRX > DEADZONE)) << 21; - state[i] |= ((state_tmp.Gamepad.sThumbRY > DEADZONE)) << 22; - state[i] |= ((state_tmp.Gamepad.sThumbRY < -DEADZONE)) << 23; - state[i] |= ((state_tmp.Gamepad.bLeftTrigger > 128 ? 1 : 0)) << 24; - state[i] |= ((state_tmp.Gamepad.bRightTrigger > 128 ? 1 : 0)) << 25; + state[i] = 0; + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_B) ? XINPUT1_GAMEPAD_B : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_A) ? XINPUT1_GAMEPAD_A : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_Y) ? XINPUT1_GAMEPAD_Y : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_X) ? XINPUT1_GAMEPAD_X : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT) ? XINPUT1_GAMEPAD_DPAD_LEFT : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) ? XINPUT1_GAMEPAD_DPAD_RIGHT : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP) ? XINPUT1_GAMEPAD_DPAD_UP : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN) ? XINPUT1_GAMEPAD_DPAD_DOWN : 0); + state[i] |= ((state_tmp.Gamepad.sThumbLX < -DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_LEFT_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbLX > DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbLY > DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_UP_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbLY < -DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_DOWN_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbRX < -DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_LEFT_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbRX > DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbRY > DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_UP_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbRY < -DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_DOWN_MASK : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_START) ? XINPUT1_GAMEPAD_START : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_BACK) ? XINPUT1_GAMEPAD_BACK : 0); + state[i] |= ((state_tmp.Gamepad.bLeftTrigger > 128) ? XINPUT1_GAMEPAD_LEFT_TRIGGER : 0); + state[i] |= ((state_tmp.Gamepad.bRightTrigger > 128) ? XINPUT1_GAMEPAD_RIGHT_TRIGGER : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER) ? XINPUT1_GAMEPAD_WHITE : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER) ? XINPUT1_GAMEPAD_BLACK : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB) ? XINPUT1_GAMEPAD_LEFT_THUMB : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) ? XINPUT1_GAMEPAD_RIGHT_THUMB : 0); } } } @@ -154,23 +168,20 @@ static bool xinput_input_key_pressed(void *data, int key) { (void)data; bool retval = false; - XINPUT_STATE state; xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data; - - XInputGetState(0, &state); - + switch(key) { case RARCH_FAST_FORWARD_HOLD_KEY: - return ((state.Gamepad.sThumbRY < -DEADZONE) && !(state.Gamepad.bRightTrigger > 128)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_DOWN_MASK) && !(state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_LOAD_STATE_KEY: - return ((state.Gamepad.sThumbRY > DEADZONE) && (state.Gamepad.bRightTrigger > 128)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_UP_MASK) && (state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_SAVE_STATE_KEY: - return ((state.Gamepad.sThumbRY < -DEADZONE) && (state.Gamepad.bRightTrigger > 128)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_DOWN_MASK) && (state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_STATE_SLOT_PLUS: - return ((state.Gamepad.sThumbRX > DEADZONE) && (state.Gamepad.bRightTrigger > 128)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK) && (state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_STATE_SLOT_MINUS: - return ((state.Gamepad.sThumbRX < -DEADZONE) && (state.Gamepad.bRightTrigger > 128)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_LEFT_MASK) && (state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_FRAMEADVANCE: if(g_console.frame_advance_enable) { @@ -180,12 +191,12 @@ static bool xinput_input_key_pressed(void *data, int key) } return false; case RARCH_REWIND: - return ((state.Gamepad.sThumbRY > DEADZONE) && !(state.Gamepad.bRightTrigger > 128)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_UP_MASK) && !(state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_QUIT_KEY: if(IS_TIMER_EXPIRED(d3d)) { - uint32_t left_thumb_pressed = (state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB); - uint32_t right_thumb_pressed = (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB); + uint32_t left_thumb_pressed = (state[0] & XINPUT1_GAMEPAD_LEFT_THUMB); + uint32_t right_thumb_pressed = (state[0] & XINPUT1_GAMEPAD_RIGHT_THUMB); g_console.menu_enable = right_thumb_pressed && left_thumb_pressed && IS_TIMER_EXPIRED(d3d); g_console.ingame_menu_enable = right_thumb_pressed && !left_thumb_pressed; @@ -198,6 +209,7 @@ static bool xinput_input_key_pressed(void *data, int key) } retval = g_console.ingame_menu_enable ? g_console.ingame_menu_enable : g_console.menu_enable; } + break; } return retval; diff --git a/360/xinput_360_input.h b/360/xinput_360_input.h index 9e4e1d2cd2..49b57c36c7 100644 --- a/360/xinput_360_input.h +++ b/360/xinput_360_input.h @@ -18,16 +18,30 @@ #define _XDK360_XINPUT2_H enum { - XINPUT_GAMEPAD_LSTICK_LEFT_MASK = 1 << 16, - XINPUT_GAMEPAD_LSTICK_RIGHT_MASK = 1 << 17, - XINPUT_GAMEPAD_LSTICK_UP_MASK = 1 << 18, - XINPUT_GAMEPAD_LSTICK_DOWN_MASK = 1 << 19, - XINPUT_GAMEPAD_RSTICK_LEFT_MASK = 1 << 20, - XINPUT_GAMEPAD_RSTICK_RIGHT_MASK = 1 << 21, - XINPUT_GAMEPAD_RSTICK_UP_MASK = 1 << 22, - XINPUT_GAMEPAD_RSTICK_DOWN_MASK = 1 << 23, - XINPUT_GAMEPAD_LEFT_TRIGGER = 1 << 24, - XINPUT_GAMEPAD_RIGHT_TRIGGER = 1 << 25 + XINPUT1_GAMEPAD_B = 1 << 0, + XINPUT1_GAMEPAD_A = 1 << 1, + XINPUT1_GAMEPAD_Y = 1 << 2, + XINPUT1_GAMEPAD_X = 1 << 3, + XINPUT1_GAMEPAD_DPAD_UP = 1 << 4, + XINPUT1_GAMEPAD_DPAD_DOWN = 1 << 5, + XINPUT1_GAMEPAD_DPAD_LEFT = 1 << 6, + XINPUT1_GAMEPAD_DPAD_RIGHT = 1 << 7, + XINPUT1_GAMEPAD_BACK = 1 << 8, + XINPUT1_GAMEPAD_START = 1 << 9, + XINPUT1_GAMEPAD_WHITE = 1 << 10, + XINPUT1_GAMEPAD_LEFT_TRIGGER = 1 << 11, + XINPUT1_GAMEPAD_LEFT_THUMB = 1 << 12, + XINPUT1_GAMEPAD_BLACK = 1 << 13, + XINPUT1_GAMEPAD_RIGHT_TRIGGER = 1 << 14, + XINPUT1_GAMEPAD_RIGHT_THUMB = 1 << 15, + XINPUT1_GAMEPAD_LSTICK_LEFT_MASK = 1 << 16, + XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK = 1 << 17, + XINPUT1_GAMEPAD_LSTICK_UP_MASK = 1 << 18, + XINPUT1_GAMEPAD_LSTICK_DOWN_MASK = 1 << 19, + XINPUT1_GAMEPAD_RSTICK_LEFT_MASK = 1 << 20, + XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK = 1 << 21, + XINPUT1_GAMEPAD_RSTICK_UP_MASK = 1 << 22, + XINPUT1_GAMEPAD_RSTICK_DOWN_MASK = 1 << 23, }; enum xdk_device_id diff --git a/console/rarch_console.h b/console/rarch_console.h index c7e3601b6a..d5072bf15c 100644 --- a/console/rarch_console.h +++ b/console/rarch_console.h @@ -21,7 +21,7 @@ #define EXT_EXECUTABLES "self|SELF|bin|BIN" #elif defined(_XBOX1) #define EXT_EXECUTABLES "xbe|XBE" -#elif defineD(_XBOX360) +#elif defined(_XBOX360) #define EXT_EXECUTABLES "xex|XEX" #elif defined(GEKKO) #define EXT_EXECUTABLES "dol|DOL" diff --git a/xbox1/xinput_xbox_input.c b/xbox1/xinput_xbox_input.c index dd3188567a..7d81da1cbd 100644 --- a/xbox1/xinput_xbox_input.c +++ b/xbox1/xinput_xbox_input.c @@ -28,7 +28,7 @@ #include "../libretro.h" #include "xinput_xbox_input.h" -static uint64_t real_state[MAX_PADS]; +static uint64_t state[MAX_PADS]; HANDLE gamepads[MAX_PADS]; DWORD dwDeviceMask; bool bInserted[MAX_PADS]; @@ -86,10 +86,9 @@ static void xinput_input_poll(void *data) for (unsigned i = 0; i < MAX_PADS; i++) { - XINPUT_STATE state[MAX_PADS]; XINPUT_CAPABILITIES caps[MAX_PADS]; (void)caps; - real_state[i] = 0; + state[i] = 0; // handle removed devices bRemoved[i] = (dwRemovals & (1< DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK : 0); - real_state[i] |= ((state[i].Gamepad.sThumbLY > DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_UP_MASK : 0); - real_state[i] |= ((state[i].Gamepad.sThumbLY < -DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_DOWN_MASK : 0); - real_state[i] |= ((state[i].Gamepad.sThumbRX < -DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_LEFT_MASK : 0); - real_state[i] |= ((state[i].Gamepad.sThumbRX > DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK : 0); - real_state[i] |= ((state[i].Gamepad.sThumbRY > DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_UP_MASK : 0); - real_state[i] |= ((state[i].Gamepad.sThumbRY < -DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_DOWN_MASK : 0); - real_state[i] |= ((state[i].Gamepad.wButtons & XINPUT_GAMEPAD_START) ? XINPUT1_GAMEPAD_START : 0); - real_state[i] |= ((state[i].Gamepad.wButtons & XINPUT_GAMEPAD_BACK) ? XINPUT1_GAMEPAD_BACK : 0); - real_state[i] |= ((state[i].Gamepad.bAnalogButtons[XINPUT_GAMEPAD_LEFT_TRIGGER]) ? XINPUT1_GAMEPAD_LEFT_TRIGGER : 0); - real_state[i] |= ((state[i].Gamepad.bAnalogButtons[XINPUT_GAMEPAD_RIGHT_TRIGGER]) ? XINPUT1_GAMEPAD_RIGHT_TRIGGER : 0); - real_state[i] |= ((state[i].Gamepad.bAnalogButtons[XINPUT_GAMEPAD_WHITE]) ? XINPUT1_GAMEPAD_WHITE : 0); - real_state[i] |= ((state[i].Gamepad.bAnalogButtons[XINPUT_GAMEPAD_BLACK]) ? XINPUT1_GAMEPAD_BLACK : 0); - real_state[i] |= ((state[i].Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB) ? XINPUT1_GAMEPAD_LEFT_THUMB : 0); - real_state[i] |= ((state[i].Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) ? XINPUT1_GAMEPAD_RIGHT_THUMB : 0); + state[i] |= ((state_tmp.Gamepad.bAnalogButtons[XINPUT_GAMEPAD_B]) ? XINPUT1_GAMEPAD_B : 0); + state[i] |= ((state_tmp.Gamepad.bAnalogButtons[XINPUT_GAMEPAD_A]) ? XINPUT1_GAMEPAD_A : 0); + state[i] |= ((state_tmp.Gamepad.bAnalogButtons[XINPUT_GAMEPAD_Y]) ? XINPUT1_GAMEPAD_Y : 0); + state[i] |= ((state_tmp.Gamepad.bAnalogButtons[XINPUT_GAMEPAD_X]) ? XINPUT1_GAMEPAD_X : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT) ? XINPUT1_GAMEPAD_DPAD_LEFT : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) ? XINPUT1_GAMEPAD_DPAD_RIGHT : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP) ? XINPUT1_GAMEPAD_DPAD_UP : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN) ? XINPUT1_GAMEPAD_DPAD_DOWN : 0); + state[i] |= ((state_tmp.Gamepad.sThumbLX < -DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_LEFT_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbLX > DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_RIGHT_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbLY > DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_UP_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbLY < -DEADZONE) ? XINPUT1_GAMEPAD_LSTICK_DOWN_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbRX < -DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_LEFT_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbRX > DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbRY > DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_UP_MASK : 0); + state[i] |= ((state_tmp.Gamepad.sThumbRY < -DEADZONE) ? XINPUT1_GAMEPAD_RSTICK_DOWN_MASK : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_START) ? XINPUT1_GAMEPAD_START : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_BACK) ? XINPUT1_GAMEPAD_BACK : 0); + state[i] |= ((state_tmp.Gamepad.bAnalogButtons[XINPUT_GAMEPAD_LEFT_TRIGGER]) ? XINPUT1_GAMEPAD_LEFT_TRIGGER : 0); + state[i] |= ((state_tmp.Gamepad.bAnalogButtons[XINPUT_GAMEPAD_RIGHT_TRIGGER]) ? XINPUT1_GAMEPAD_RIGHT_TRIGGER : 0); + state[i] |= ((state_tmp.Gamepad.bAnalogButtons[XINPUT_GAMEPAD_WHITE]) ? XINPUT1_GAMEPAD_WHITE : 0); + state[i] |= ((state_tmp.Gamepad.bAnalogButtons[XINPUT_GAMEPAD_BLACK]) ? XINPUT1_GAMEPAD_BLACK : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB) ? XINPUT1_GAMEPAD_LEFT_THUMB : 0); + state[i] |= ((state_tmp.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) ? XINPUT1_GAMEPAD_RIGHT_THUMB : 0); } } } @@ -164,7 +163,7 @@ static int16_t xinput_input_state(void *data, const struct retro_keybind **binds unsigned player = port; uint64_t button = binds[player][id].joykey; - return (real_state[player] & button) ? 1 : 0; + return (state[player] & button) ? 1 : 0; } static void xinput_input_free_input(void *data) @@ -268,15 +267,15 @@ static bool xinput_input_key_pressed(void *data, int key) switch(key) { case RARCH_FAST_FORWARD_HOLD_KEY: - return ((real_state[0] & XINPUT1_GAMEPAD_RSTICK_DOWN_MASK) && !(real_state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_DOWN_MASK) && !(state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_LOAD_STATE_KEY: - return ((real_state[0] & XINPUT1_GAMEPAD_RSTICK_UP_MASK) && (real_state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_UP_MASK) && (state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_SAVE_STATE_KEY: - return ((real_state[0] & XINPUT1_GAMEPAD_RSTICK_DOWN_MASK) && (real_state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_DOWN_MASK) && (state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_STATE_SLOT_PLUS: - return ((real_state[0] & XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK) && (real_state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_RIGHT_MASK) && (state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_STATE_SLOT_MINUS: - return ((real_state[0] & XINPUT1_GAMEPAD_RSTICK_LEFT_MASK) && (real_state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_LEFT_MASK) && (state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_FRAMEADVANCE: if(g_console.frame_advance_enable) { @@ -286,12 +285,12 @@ static bool xinput_input_key_pressed(void *data, int key) } return false; case RARCH_REWIND: - return ((real_state[0] & XINPUT1_GAMEPAD_RSTICK_UP_MASK) && !(real_state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); + return ((state[0] & XINPUT1_GAMEPAD_RSTICK_UP_MASK) && !(state[0] & XINPUT1_GAMEPAD_RIGHT_TRIGGER)); case RARCH_QUIT_KEY: if(IS_TIMER_EXPIRED(d3d)) { - uint32_t left_thumb_pressed = (real_state[0] & XINPUT1_GAMEPAD_LEFT_THUMB); - uint32_t right_thumb_pressed = (real_state[0] & XINPUT1_GAMEPAD_RIGHT_THUMB); + uint32_t left_thumb_pressed = (state[0] & XINPUT1_GAMEPAD_LEFT_THUMB); + uint32_t right_thumb_pressed = (state[0] & XINPUT1_GAMEPAD_RIGHT_THUMB); g_console.menu_enable = right_thumb_pressed && left_thumb_pressed && IS_TIMER_EXPIRED(d3d); g_console.ingame_menu_enable = right_thumb_pressed && !left_thumb_pressed;