mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 22:14:17 +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;
|
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;
|
int16_t val = 0;
|
||||||
settings_t *settings = config_get_ptr();
|
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);
|
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)
|
if (AXIS_POS_GET(joyaxis) == AXIS_DIR_NONE)
|
||||||
{
|
{
|
||||||
/* current axis is negative */
|
/* current axis is negative */
|
||||||
@ -913,7 +917,6 @@ static int16_t input_joypad_axis(const input_device_driver_t *drv, unsigned port
|
|||||||
left = false;
|
left = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (settings->floats.input_analog_deadzone)
|
if (settings->floats.input_analog_deadzone)
|
||||||
{
|
{
|
||||||
/* 0/1 are the left analog X/Y axes, 2/3 are the right analog X/Y axes */
|
/* 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))
|
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;
|
float scaled_axis = (float)abs(axis) / 0x8000;
|
||||||
bit_pressed = scaled_axis > joypad_info.axis_threshold;
|
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))
|
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;
|
float scaled_axis = (float)abs(axis) / 0x8000;
|
||||||
bit_pressed = scaled_axis > joypad_info.axis_threshold;
|
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;
|
axis = joypad_info.auto_binds[ident].joyaxis;
|
||||||
|
|
||||||
/* Analog button. */
|
/* 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 the result is zero, it's got a digital button attached to it */
|
||||||
if (res == 0)
|
if (res == 0)
|
||||||
@ -1824,8 +1827,8 @@ int16_t input_joypad_analog(const input_device_driver_t *drv,
|
|||||||
if (axis_plus == AXIS_NONE)
|
if (axis_plus == AXIS_NONE)
|
||||||
axis_plus = joypad_info.auto_binds[ident_plus].joyaxis;
|
axis_plus = joypad_info.auto_binds[ident_plus].joyaxis;
|
||||||
|
|
||||||
pressed_minus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_minus));
|
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));
|
pressed_plus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_plus, false));
|
||||||
res = pressed_plus - pressed_minus;
|
res = pressed_plus - pressed_minus;
|
||||||
|
|
||||||
if (res == 0)
|
if (res == 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user