mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-25 20:32:22 +00:00
no analog/sensitivity correction for analog buttons
This commit is contained in:
parent
dc80e49509
commit
e0b59f13e2
@ -879,7 +879,7 @@ static INLINE bool input_keys_pressed_iterate(unsigned i,
|
||||
return false;
|
||||
}
|
||||
|
||||
static int16_t input_joypad_axis(const input_device_driver_t *drv, unsigned port, uint32_t joyaxis)
|
||||
static int16_t input_joypad_axis(const input_device_driver_t *drv, unsigned port, uint32_t joyaxis, bool button)
|
||||
{
|
||||
int16_t val = 0;
|
||||
settings_t *settings = config_get_ptr();
|
||||
@ -890,6 +890,10 @@ static int16_t input_joypad_axis(const input_device_driver_t *drv, unsigned port
|
||||
|
||||
val = drv->axis(port, joyaxis);
|
||||
|
||||
/* no deadzone/sensitivity correction for analog buttons currently */
|
||||
if (button)
|
||||
return val;
|
||||
|
||||
if (AXIS_POS_GET(joyaxis) == AXIS_DIR_NONE)
|
||||
{
|
||||
/* current axis is negative */
|
||||
@ -913,7 +917,6 @@ static int16_t input_joypad_axis(const input_device_driver_t *drv, unsigned port
|
||||
left = false;
|
||||
}
|
||||
|
||||
|
||||
if (settings->floats.input_analog_deadzone)
|
||||
{
|
||||
/* 0/1 are the left analog X/Y axes, 2/3 are the right analog X/Y axes */
|
||||
@ -1054,7 +1057,7 @@ void input_menu_keys_pressed(void *data, input_bits_t *p_new_state)
|
||||
{
|
||||
if (joykey == NO_BTN || !sec->button(joypad_info.joy_idx, joykey))
|
||||
{
|
||||
int16_t axis = input_joypad_axis(sec, joypad_info.joy_idx, joyaxis);
|
||||
int16_t axis = input_joypad_axis(sec, joypad_info.joy_idx, joyaxis, false);
|
||||
float scaled_axis = (float)abs(axis) / 0x8000;
|
||||
bit_pressed = scaled_axis > joypad_info.axis_threshold;
|
||||
}
|
||||
@ -1066,7 +1069,7 @@ void input_menu_keys_pressed(void *data, input_bits_t *p_new_state)
|
||||
{
|
||||
if (joykey == NO_BTN || !first->button(joypad_info.joy_idx, joykey))
|
||||
{
|
||||
int16_t axis = input_joypad_axis(first, joypad_info.joy_idx, joyaxis);
|
||||
int16_t axis = input_joypad_axis(first, joypad_info.joy_idx, joyaxis, false);
|
||||
float scaled_axis = (float)abs(axis) / 0x8000;
|
||||
bit_pressed = scaled_axis > joypad_info.axis_threshold;
|
||||
}
|
||||
@ -1776,7 +1779,7 @@ int16_t input_joypad_analog(const input_device_driver_t *drv,
|
||||
axis = joypad_info.auto_binds[ident].joyaxis;
|
||||
|
||||
/* Analog button. */
|
||||
res = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis));
|
||||
res = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis, true));
|
||||
|
||||
/* If the result is zero, it's got a digital button attached to it */
|
||||
if (res == 0)
|
||||
@ -1824,8 +1827,8 @@ int16_t input_joypad_analog(const input_device_driver_t *drv,
|
||||
if (axis_plus == AXIS_NONE)
|
||||
axis_plus = joypad_info.auto_binds[ident_plus].joyaxis;
|
||||
|
||||
pressed_minus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_minus));
|
||||
pressed_plus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_plus));
|
||||
pressed_minus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_minus, false));
|
||||
pressed_plus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_plus, false));
|
||||
res = pressed_plus - pressed_minus;
|
||||
|
||||
if (res == 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user