diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hid/emulated_controller.cpp | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index 7a01f3f4c..a959c9db9 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp @@ -10,6 +10,7 @@  namespace Core::HID {  constexpr s32 HID_JOYSTICK_MAX = 0x7fff; +constexpr s32 HID_JOYSTICK_MIN = 0x7ffe;  constexpr s32 HID_TRIGGER_MAX = 0x7fff;  // Use a common UUID for TAS and Virtual Gamepad  constexpr Common::UUID TAS_UUID = @@ -798,9 +799,16 @@ void EmulatedController::SetStick(const Common::Input::CallbackStatus& callback,          return;      } +    const auto FloatToShort = [](float a) { +        if (a > 0) { +            return static_cast<s32>(a * HID_JOYSTICK_MAX); +        } +        return static_cast<s32>(a * HID_JOYSTICK_MIN); +    }; +      const AnalogStickState stick{ -        .x = static_cast<s32>(controller.stick_values[index].x.value * HID_JOYSTICK_MAX), -        .y = static_cast<s32>(controller.stick_values[index].y.value * HID_JOYSTICK_MAX), +        .x = FloatToShort(controller.stick_values[index].x.value), +        .y = FloatToShort(controller.stick_values[index].y.value),      };      switch (index) { | 
