|
@@ -10,6 +10,7 @@
|
|
|
|
|
|
|
|
namespace Core::HID {
|
|
namespace Core::HID {
|
|
|
constexpr s32 HID_JOYSTICK_MAX = 0x7fff;
|
|
constexpr s32 HID_JOYSTICK_MAX = 0x7fff;
|
|
|
|
|
+constexpr s32 HID_JOYSTICK_MIN = 0x7ffe;
|
|
|
constexpr s32 HID_TRIGGER_MAX = 0x7fff;
|
|
constexpr s32 HID_TRIGGER_MAX = 0x7fff;
|
|
|
// Use a common UUID for TAS and Virtual Gamepad
|
|
// Use a common UUID for TAS and Virtual Gamepad
|
|
|
constexpr Common::UUID TAS_UUID =
|
|
constexpr Common::UUID TAS_UUID =
|
|
@@ -798,9 +799,16 @@ void EmulatedController::SetStick(const Common::Input::CallbackStatus& callback,
|
|
|
return;
|
|
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{
|
|
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) {
|
|
switch (index) {
|