diff --git a/rpcs3/Emu/Io/PadHandler.cpp b/rpcs3/Emu/Io/PadHandler.cpp index 3f9610e3e4..a1c6740574 100644 --- a/rpcs3/Emu/Io/PadHandler.cpp +++ b/rpcs3/Emu/Io/PadHandler.cpp @@ -174,12 +174,12 @@ u16 PadHandlerBase::NormalizeStickInput(u16 raw_value, int threshold, int multip // return is new x and y values in 0-255 range std::tuple PadHandlerBase::NormalizeStickDeadzone(s32 inX, s32 inY, u32 deadzone) { - const float dzRange = deadzone / static_cast((std::abs(thumb_max) + std::abs(thumb_min))); + const float dz_range = deadzone / static_cast(std::abs(thumb_max)); // NOTE: thumb_max should be positive anyway float X = inX / 255.0f; float Y = inY / 255.0f; - if (dzRange > 0.f) + if (dz_range > 0.f) { const float mag = std::min(sqrtf(X * X + Y * Y), 1.f); @@ -188,16 +188,16 @@ std::tuple PadHandlerBase::NormalizeStickDeadzone(s32 inX, s32 inY, u3 return std::tuple(ConvertAxis(X), ConvertAxis(Y)); } - if (mag > dzRange) + if (mag > dz_range) { - const float pos = std::lerp(0.13f, 1.f, (mag - dzRange) / (1 - dzRange)); + const float pos = std::lerp(0.13f, 1.f, (mag - dz_range) / (1 - dz_range)); const float scale = pos / mag; X = X * scale; Y = Y * scale; } else { - const float pos = std::lerp(0.f, 0.13f, mag / dzRange); + const float pos = std::lerp(0.f, 0.13f, mag / dz_range); const float scale = pos / mag; X = X * scale; Y = Y * scale; diff --git a/rpcs3/Emu/Io/PadHandler.h b/rpcs3/Emu/Io/PadHandler.h index 4fcfd49cca..0d2a542130 100644 --- a/rpcs3/Emu/Io/PadHandler.h +++ b/rpcs3/Emu/Io/PadHandler.h @@ -123,8 +123,8 @@ protected: static std::tuple ConvertToSquirclePoint(u16 inX, u16 inY, int squircle_factor); public: - s32 thumb_min = 0; - s32 thumb_max = 255; + // s32 thumb_min = 0; // Unused. Make sure all handlers report 0+ values for sticks in get_button_values. + s32 thumb_max = 255; // NOTE: Better keep this positive s32 trigger_min = 0; s32 trigger_max = 255; s32 vibration_min = 0; diff --git a/rpcs3/Input/ds4_pad_handler.cpp b/rpcs3/Input/ds4_pad_handler.cpp index 68eb1b94c7..f71dd2a735 100644 --- a/rpcs3/Input/ds4_pad_handler.cpp +++ b/rpcs3/Input/ds4_pad_handler.cpp @@ -114,7 +114,6 @@ ds4_pad_handler::ds4_pad_handler() : PadHandlerBase(pad_handler::ds4) init_configs(); // Define border values - thumb_min = 0; thumb_max = 255; trigger_min = 0; trigger_max = 255; diff --git a/rpcs3/Input/evdev_joystick_handler.cpp b/rpcs3/Input/evdev_joystick_handler.cpp index 0da05f3191..d144da3d07 100644 --- a/rpcs3/Input/evdev_joystick_handler.cpp +++ b/rpcs3/Input/evdev_joystick_handler.cpp @@ -25,7 +25,6 @@ evdev_joystick_handler::evdev_joystick_handler() init_configs(); // Define border values - thumb_min = 0; thumb_max = 255; trigger_min = 0; trigger_max = 255; diff --git a/rpcs3/Input/mm_joystick_handler.cpp b/rpcs3/Input/mm_joystick_handler.cpp index 20aae71159..c98e2b94b3 100644 --- a/rpcs3/Input/mm_joystick_handler.cpp +++ b/rpcs3/Input/mm_joystick_handler.cpp @@ -9,7 +9,6 @@ mm_joystick_handler::mm_joystick_handler() : PadHandlerBase(pad_handler::mm) init_configs(); // Define border values - thumb_min = 0; thumb_max = 255; trigger_min = 0; trigger_max = 255; diff --git a/rpcs3/Input/xinput_pad_handler.cpp b/rpcs3/Input/xinput_pad_handler.cpp index 5b53bb6a97..bd8c8969e0 100644 --- a/rpcs3/Input/xinput_pad_handler.cpp +++ b/rpcs3/Input/xinput_pad_handler.cpp @@ -49,7 +49,6 @@ xinput_pad_handler::xinput_pad_handler() : PadHandlerBase(pad_handler::xinput) init_configs(); // Define border values - thumb_min = -32768; thumb_max = 32767; trigger_min = 0; trigger_max = 255;