mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
[LIBNX] Fix Split Joycon
This commit is contained in:
parent
1ff024be26
commit
931eb3221b
@ -306,6 +306,7 @@ static void switch_joypad_poll(void)
|
||||
|
||||
for (i = 0; i < MAX_USERS; i += 2)
|
||||
previous_split_joycon_setting[i] = settings->uints.input_split_joycon[i];
|
||||
|
||||
previous_handheld = handheld;
|
||||
|
||||
for (i = 0; i < DEFAULT_MAX_PADS; i++)
|
||||
@ -315,61 +316,59 @@ static void switch_joypad_poll(void)
|
||||
unsigned input_split_joycon = settings->uints.input_split_joycon[i];
|
||||
int pad_button = padGetButtons(&pad_states[i]);
|
||||
if (input_split_joycon && !handheld) {
|
||||
button_state[i] = 0;
|
||||
|
||||
if (hidGetNpadDeviceType((HidNpadIdType)i) & HidDeviceTypeBits_JoyLeft) {
|
||||
if (pad_button & HidNpadButton_Left)
|
||||
button_state[i] = (uint16_t)HidNpadButton_B;
|
||||
else if (pad_button & HidNpadButton_Up)
|
||||
button_state[i] = (uint16_t)HidNpadButton_Y;
|
||||
else if (pad_button & HidNpadButton_Right)
|
||||
button_state[i] = (uint16_t)HidNpadButton_X;
|
||||
else if (pad_button & HidNpadButton_Down)
|
||||
button_state[i] = (uint16_t)HidNpadButton_A;
|
||||
else if (pad_button & HidNpadButton_LeftSL)
|
||||
button_state[i] = (uint16_t)HidNpadButton_L;
|
||||
else if (pad_button & HidNpadButton_LeftSR)
|
||||
button_state[i] = (uint16_t)HidNpadButton_R;
|
||||
else
|
||||
button_state[i] = pad_button;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT]
|
||||
[RETRO_DEVICE_ID_ANALOG_X] = -stick_left_state.y;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT]
|
||||
[RETRO_DEVICE_ID_ANALOG_Y] = -stick_left_state.x;
|
||||
}
|
||||
else if (hidGetNpadDeviceType((HidNpadIdType)i) & HidDeviceTypeBits_JoyRight) {
|
||||
button_state[i] |= (uint16_t)HidNpadButton_B;
|
||||
if (pad_button & HidNpadButton_Up)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_Y;
|
||||
if (pad_button & HidNpadButton_Right)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_X;
|
||||
if (pad_button & HidNpadButton_Down)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_A;
|
||||
if (pad_button & HidNpadButton_LeftSL)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_L;
|
||||
if (pad_button & HidNpadButton_LeftSR)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_R;
|
||||
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_X] = -stick_left_state.y;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_Y] = -stick_left_state.x;
|
||||
} else if (hidGetNpadDeviceType((HidNpadIdType)i) & HidDeviceTypeBits_JoyRight) {
|
||||
if (pad_button & HidNpadButton_A)
|
||||
button_state[i] = (uint16_t)HidNpadButton_B;
|
||||
else if (pad_button & HidNpadButton_B)
|
||||
button_state[i] = (uint16_t)HidNpadButton_Y;
|
||||
else if (pad_button & HidNpadButton_X)
|
||||
button_state[i] = (uint16_t)HidNpadButton_A;
|
||||
else if (pad_button & HidNpadButton_Y)
|
||||
button_state[i] = (uint16_t)HidNpadButton_X;
|
||||
else if (pad_button & HidNpadButton_RightSL)
|
||||
button_state[i] = (uint16_t)HidNpadButton_L;
|
||||
else if (pad_button & HidNpadButton_RightSR)
|
||||
button_state[i] = (uint16_t)HidNpadButton_R;
|
||||
else if (pad_button & HidNpadButton_StickR)
|
||||
button_state[i] = (uint16_t)HidNpadButton_StickL;
|
||||
else
|
||||
button_state[i] = pad_button;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT]
|
||||
[RETRO_DEVICE_ID_ANALOG_X] = stick_right_state.y;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT]
|
||||
[RETRO_DEVICE_ID_ANALOG_Y] = stick_right_state.x;
|
||||
button_state[i] |= (uint16_t)HidNpadButton_B;
|
||||
if (pad_button & HidNpadButton_B)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_Y;
|
||||
if (pad_button & HidNpadButton_X)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_A;
|
||||
if (pad_button & HidNpadButton_Y)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_X;
|
||||
if (pad_button & HidNpadButton_RightSL)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_L;
|
||||
if (pad_button & HidNpadButton_RightSR)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_R;
|
||||
if (pad_button & HidNpadButton_StickR)
|
||||
button_state[i] |= (uint16_t)HidNpadButton_StickL;
|
||||
|
||||
/* Throw JoyRight state into retro left analog */
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_X] = stick_right_state.y;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_Y] = stick_right_state.x;
|
||||
} else {
|
||||
/* Handle other types via Default Input Handling */
|
||||
goto lblDefaultInputHandling;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Default Input Handling */
|
||||
lblDefaultInputHandling:
|
||||
button_state[i] = pad_button;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT]
|
||||
[RETRO_DEVICE_ID_ANALOG_X] = stick_left_state.x;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT]
|
||||
[RETRO_DEVICE_ID_ANALOG_Y] = -stick_left_state.y;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_X] = stick_left_state.x;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_Y] = -stick_left_state.y;
|
||||
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_RIGHT][RETRO_DEVICE_ID_ANALOG_X] = stick_right_state.x;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_RIGHT][RETRO_DEVICE_ID_ANALOG_Y] = -stick_right_state.y;
|
||||
}
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_RIGHT]
|
||||
[RETRO_DEVICE_ID_ANALOG_X] = stick_right_state.x;
|
||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_RIGHT]
|
||||
[RETRO_DEVICE_ID_ANALOG_Y] = -stick_right_state.y;
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
Loading…
x
Reference in New Issue
Block a user