mirror of
https://github.com/libretro/RetroArch
synced 2025-04-07 13:23:32 +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)
|
for (i = 0; i < MAX_USERS; i += 2)
|
||||||
previous_split_joycon_setting[i] = settings->uints.input_split_joycon[i];
|
previous_split_joycon_setting[i] = settings->uints.input_split_joycon[i];
|
||||||
|
|
||||||
previous_handheld = handheld;
|
previous_handheld = handheld;
|
||||||
|
|
||||||
for (i = 0; i < DEFAULT_MAX_PADS; i++)
|
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];
|
unsigned input_split_joycon = settings->uints.input_split_joycon[i];
|
||||||
int pad_button = padGetButtons(&pad_states[i]);
|
int pad_button = padGetButtons(&pad_states[i]);
|
||||||
if (input_split_joycon && !handheld) {
|
if (input_split_joycon && !handheld) {
|
||||||
|
button_state[i] = 0;
|
||||||
|
|
||||||
if (hidGetNpadDeviceType((HidNpadIdType)i) & HidDeviceTypeBits_JoyLeft) {
|
if (hidGetNpadDeviceType((HidNpadIdType)i) & HidDeviceTypeBits_JoyLeft) {
|
||||||
if (pad_button & HidNpadButton_Left)
|
if (pad_button & HidNpadButton_Left)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_B;
|
button_state[i] |= (uint16_t)HidNpadButton_B;
|
||||||
else if (pad_button & HidNpadButton_Up)
|
if (pad_button & HidNpadButton_Up)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_Y;
|
button_state[i] |= (uint16_t)HidNpadButton_Y;
|
||||||
else if (pad_button & HidNpadButton_Right)
|
if (pad_button & HidNpadButton_Right)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_X;
|
button_state[i] |= (uint16_t)HidNpadButton_X;
|
||||||
else if (pad_button & HidNpadButton_Down)
|
if (pad_button & HidNpadButton_Down)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_A;
|
button_state[i] |= (uint16_t)HidNpadButton_A;
|
||||||
else if (pad_button & HidNpadButton_LeftSL)
|
if (pad_button & HidNpadButton_LeftSL)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_L;
|
button_state[i] |= (uint16_t)HidNpadButton_L;
|
||||||
else if (pad_button & HidNpadButton_LeftSR)
|
if (pad_button & HidNpadButton_LeftSR)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_R;
|
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]
|
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_Y] = -stick_left_state.x;
|
||||||
[RETRO_DEVICE_ID_ANALOG_X] = -stick_left_state.y;
|
} else if (hidGetNpadDeviceType((HidNpadIdType)i) & HidDeviceTypeBits_JoyRight) {
|
||||||
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)
|
if (pad_button & HidNpadButton_A)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_B;
|
button_state[i] |= (uint16_t)HidNpadButton_B;
|
||||||
else if (pad_button & HidNpadButton_B)
|
if (pad_button & HidNpadButton_B)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_Y;
|
button_state[i] |= (uint16_t)HidNpadButton_Y;
|
||||||
else if (pad_button & HidNpadButton_X)
|
if (pad_button & HidNpadButton_X)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_A;
|
button_state[i] |= (uint16_t)HidNpadButton_A;
|
||||||
else if (pad_button & HidNpadButton_Y)
|
if (pad_button & HidNpadButton_Y)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_X;
|
button_state[i] |= (uint16_t)HidNpadButton_X;
|
||||||
else if (pad_button & HidNpadButton_RightSL)
|
if (pad_button & HidNpadButton_RightSL)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_L;
|
button_state[i] |= (uint16_t)HidNpadButton_L;
|
||||||
else if (pad_button & HidNpadButton_RightSR)
|
if (pad_button & HidNpadButton_RightSR)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_R;
|
button_state[i] |= (uint16_t)HidNpadButton_R;
|
||||||
else if (pad_button & HidNpadButton_StickR)
|
if (pad_button & HidNpadButton_StickR)
|
||||||
button_state[i] = (uint16_t)HidNpadButton_StickL;
|
button_state[i] |= (uint16_t)HidNpadButton_StickL;
|
||||||
else
|
|
||||||
button_state[i] = pad_button;
|
/* Throw JoyRight state into retro left analog */
|
||||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT]
|
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_X] = stick_right_state.y;
|
||||||
[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;
|
||||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT]
|
} else {
|
||||||
[RETRO_DEVICE_ID_ANALOG_Y] = stick_right_state.x;
|
/* Handle other types via Default Input Handling */
|
||||||
|
goto lblDefaultInputHandling;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* Default Input Handling */
|
||||||
|
lblDefaultInputHandling:
|
||||||
button_state[i] = pad_button;
|
button_state[i] = pad_button;
|
||||||
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT]
|
analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_X] = stick_left_state.x;
|
||||||
[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_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
|
#else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user