From 08731303d857ba0d8684f77e193f2958e7691ccb Mon Sep 17 00:00:00 2001 From: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com> Date: Mon, 7 Apr 2025 22:58:00 +0200 Subject: [PATCH] Fix incorrect calculation setting the center of the joysticks one value off causing stick drift in games that assume already corrected input values (#2760) --- src/input/input_handler.cpp | 6 +++--- src/input/input_mouse.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/input/input_handler.cpp b/src/input/input_handler.cpp index f7c2ee296..3e2d66a6b 100644 --- a/src/input/input_handler.cpp +++ b/src/input/input_handler.cpp @@ -550,18 +550,18 @@ void ControllerOutput::FinalizeUpdate() { break; case Axis::TriggerLeft: ApplyDeadzone(new_param, lefttrigger_deadzone); - controller->Axis(0, c_axis, GetAxis(0x0, 0x80, *new_param)); + controller->Axis(0, c_axis, GetAxis(0x0, 0x7f, *new_param)); controller->CheckButton(0, OrbisPadButtonDataOffset::L2, *new_param > 0x20); return; case Axis::TriggerRight: ApplyDeadzone(new_param, righttrigger_deadzone); - controller->Axis(0, c_axis, GetAxis(0x0, 0x80, *new_param)); + controller->Axis(0, c_axis, GetAxis(0x0, 0x7f, *new_param)); controller->CheckButton(0, OrbisPadButtonDataOffset::R2, *new_param > 0x20); return; default: break; } - controller->Axis(0, c_axis, GetAxis(-0x80, 0x80, *new_param * multiplier)); + controller->Axis(0, c_axis, GetAxis(-0x80, 0x7f, *new_param * multiplier)); } } diff --git a/src/input/input_mouse.cpp b/src/input/input_mouse.cpp index 11feaeebb..c84d14b3f 100644 --- a/src/input/input_mouse.cpp +++ b/src/input/input_mouse.cpp @@ -61,11 +61,11 @@ Uint32 MousePolling(void* param, Uint32 id, Uint32 interval) { float a_x = cos(angle) * output_speed, a_y = sin(angle) * output_speed; if (d_x != 0 && d_y != 0) { - controller->Axis(0, axis_x, GetAxis(-0x80, 0x80, a_x)); - controller->Axis(0, axis_y, GetAxis(-0x80, 0x80, a_y)); + controller->Axis(0, axis_x, GetAxis(-0x80, 0x7f, a_x)); + controller->Axis(0, axis_y, GetAxis(-0x80, 0x7f, a_y)); } else { - controller->Axis(0, axis_x, GetAxis(-0x80, 0x80, 0)); - controller->Axis(0, axis_y, GetAxis(-0x80, 0x80, 0)); + controller->Axis(0, axis_x, GetAxis(-0x80, 0x7f, 0)); + controller->Axis(0, axis_y, GetAxis(-0x80, 0x7f, 0)); } return interval;