diff --git a/input/drivers_joypad/ctr_joypad.c b/input/drivers_joypad/ctr_joypad.c index f6364fed42..edb6120168 100644 --- a/input/drivers_joypad/ctr_joypad.c +++ b/input/drivers_joypad/ctr_joypad.c @@ -74,41 +74,43 @@ static void ctr_joypad_get_buttons(unsigned port_num, input_bits_t *state) static int16_t ctr_joypad_axis_state(unsigned port_num, uint32_t joyaxis) { - int val = 0; - int axis = -1; - bool is_neg = false; - bool is_pos = false; - if (AXIS_NEG_GET(joyaxis) < 4) { - axis = AXIS_NEG_GET(joyaxis); - is_neg = true; + int val = 0; + int axis = AXIS_NEG_GET(joyaxis); + switch (axis) + { + case 0: + case 1: + val = analog_state[port_num][0][axis]; + break; + case 2: + case 3: + val = analog_state[port_num][1][axis - 2]; + break; + } + if (val < 0) + return val; } else if (AXIS_POS_GET(joyaxis) < 4) { - axis = AXIS_POS_GET(joyaxis); - is_pos = true; + int val = 0; + int axis = AXIS_POS_GET(joyaxis); + switch (axis) + { + case 0: + case 1: + val = analog_state[port_num][0][axis]; + break; + case 2: + case 3: + val = analog_state[port_num][1][axis - 2]; + break; + } + if (val > 0) + return val; } - else - return 0; - - switch (axis) - { - case 0: - case 1: - val = analog_state[port_num][0][axis]; - break; - case 2: - case 3: - val = analog_state[port_num][1][axis - 2]; - break; - } - - if (is_neg && val > 0) - return 0; - else if (is_pos && val < 0) - return 0; - return val; + return 0; } static int16_t ctr_joypad_axis(unsigned port_num, uint32_t joyaxis) diff --git a/input/drivers_joypad/dinput_joypad_inl.h b/input/drivers_joypad/dinput_joypad_inl.h index 1ceb8ccaa8..b0dae69508 100644 --- a/input/drivers_joypad/dinput_joypad_inl.h +++ b/input/drivers_joypad/dinput_joypad_inl.h @@ -178,55 +178,71 @@ static int16_t dinput_joypad_axis_state( const struct dinput_joypad_data *pad, uint32_t joyaxis) { - int val = 0; - int axis = -1; - bool is_neg = false; - bool is_pos = false; - if (AXIS_NEG_GET(joyaxis) <= 7) { - axis = AXIS_NEG_GET(joyaxis); - is_neg = true; + int16_t val = 0; + int axis = AXIS_NEG_GET(joyaxis); + switch (axis) + { + case 0: + val = pad->joy_state.lX; + break; + case 1: + val = pad->joy_state.lY; + break; + case 2: + val = pad->joy_state.lZ; + break; + case 3: + val = pad->joy_state.lRx; + break; + case 4: + val = pad->joy_state.lRy; + break; + case 5: + val = pad->joy_state.lRz; + break; + case 6: + case 7: + val = pad->joy_state.rglSlider[axis - 6]; + break; + } + if (val < 0) + return val; } else if (AXIS_POS_GET(joyaxis) <= 7) { - axis = AXIS_POS_GET(joyaxis); - is_pos = true; + int16_t val = 0; + int axis = AXIS_POS_GET(joyaxis); + switch (axis) + { + case 0: + val = pad->joy_state.lX; + break; + case 1: + val = pad->joy_state.lY; + break; + case 2: + val = pad->joy_state.lZ; + break; + case 3: + val = pad->joy_state.lRx; + break; + case 4: + val = pad->joy_state.lRy; + break; + case 5: + val = pad->joy_state.lRz; + break; + case 6: + case 7: + val = pad->joy_state.rglSlider[axis - 6]; + break; + } + if (val > 0) + return val; } - else - return 0; - - switch (axis) - { - case 0: - val = pad->joy_state.lX; - break; - case 1: - val = pad->joy_state.lY; - break; - case 2: - val = pad->joy_state.lZ; - break; - case 3: - val = pad->joy_state.lRx; - break; - case 4: - val = pad->joy_state.lRy; - break; - case 5: - val = pad->joy_state.lRz; - break; - case 6: - case 7: - val = pad->joy_state.rglSlider[axis - 6]; - break; - } - - if (is_neg && val > 0) - return 0; - else if (is_pos && val < 0) - return 0; - return val; + return 0; } static int32_t dinput_joypad_button(unsigned port, uint16_t joykey) diff --git a/input/drivers_joypad/gx_joypad.c b/input/drivers_joypad/gx_joypad.c index 2b9914a225..09fa1808ab 100644 --- a/input/drivers_joypad/gx_joypad.c +++ b/input/drivers_joypad/gx_joypad.c @@ -287,16 +287,12 @@ static int16_t gx_joypad_axis_state(unsigned port, uint32_t joyaxis) switch (axis) { case 0: - val = analog_state[port][0][0]; - break; case 1: - val = analog_state[port][0][1]; + val = analog_state[port][0][axis]; break; case 2: - val = analog_state[port][1][0]; - break; case 3: - val = analog_state[port][1][1]; + val = analog_state[port][1][axis - 2]; break; } diff --git a/input/drivers_joypad/mfi_joypad.m b/input/drivers_joypad/mfi_joypad.m index 89337b6afd..a1f6fe443f 100644 --- a/input/drivers_joypad/mfi_joypad.m +++ b/input/drivers_joypad/mfi_joypad.m @@ -536,31 +536,23 @@ static void apple_gamecontroller_joypad_get_buttons(unsigned port, static int16_t apple_gamecontroller_joypad_axis( unsigned port, uint32_t joyaxis) { - int16_t val = 0; - int16_t axis = -1; - bool is_neg = false; - bool is_pos = false; - if (AXIS_NEG_GET(joyaxis) < 4) { - axis = AXIS_NEG_GET(joyaxis); - is_neg = true; + int16_t val = 0; + int16_t axis = AXIS_NEG_GET(joyaxis); + if (axis >= 0 && axis < 4) + if ((val = mfi_axes[port][axis]) < 0) + return val; } else if(AXIS_POS_GET(joyaxis) < 4) { - axis = AXIS_POS_GET(joyaxis); - is_pos = true; + int16_t val = 0; + int16_t axis = AXIS_POS_GET(joyaxis); + if (axis >= 0 && axis < 4) + if ((val = mfi_axes[port][axis]) > 0) + return val; } - else - return 0; - - if (axis >= 0 && axis < 4) - val = mfi_axes[port][axis]; - if (is_neg && val > 0) - return 0; - else if (is_pos && val < 0) - return 0; - return val; + return 0; } static int16_t apple_gamecontroller_joypad_state( diff --git a/input/drivers_joypad/ps2_joypad.c b/input/drivers_joypad/ps2_joypad.c index e0801c52e1..5f629db830 100644 --- a/input/drivers_joypad/ps2_joypad.c +++ b/input/drivers_joypad/ps2_joypad.c @@ -123,7 +123,7 @@ static int16_t ps2_joypad_axis_state(unsigned port_num, uint32_t joyaxis) break; case 2: case 3: - val = analog_state[port_num][1][axis-2]; + val = analog_state[port_num][1][axis - 2]; break; } diff --git a/input/drivers_joypad/ps3_joypad.c b/input/drivers_joypad/ps3_joypad.c index 41d2b6ea79..24406dc9a8 100644 --- a/input/drivers_joypad/ps3_joypad.c +++ b/input/drivers_joypad/ps3_joypad.c @@ -113,7 +113,7 @@ static int16_t ps3_joypad_axis_state(unsigned port, uint32_t joyaxis) break; case 2: case 3: - val = analog_state[port][1][axis-2]; + val = analog_state[port][1][axis - 2]; break; } diff --git a/input/drivers_joypad/ps4_joypad.c b/input/drivers_joypad/ps4_joypad.c index 4e3beef75f..5a860abf18 100644 --- a/input/drivers_joypad/ps4_joypad.c +++ b/input/drivers_joypad/ps4_joypad.c @@ -174,16 +174,12 @@ static int16_t ps4_joypad_axis(unsigned port, uint32_t joyaxis) switch (axis) { case 0: - val = analog_state[port][0][0]; - break; case 1: - val = analog_state[port][0][1]; + val = analog_state[port][0][axis]; break; case 2: - val = analog_state[port][1][0]; - break; case 3: - val = analog_state[port][1][1]; + val = analog_state[port][1][axis - 2]; break; } diff --git a/input/drivers_joypad/qnx_joypad.c b/input/drivers_joypad/qnx_joypad.c index d010adafdd..7bfd754908 100644 --- a/input/drivers_joypad/qnx_joypad.c +++ b/input/drivers_joypad/qnx_joypad.c @@ -87,7 +87,7 @@ static int16_t qnx_joypad_axis_state( break; case 2: case 3: - val = controller->analog1[axis-2]; + val = controller->analog1[axis - 2]; break; }