From 5687b7cf4fc5674b18b61d7312a15b3248570fbe Mon Sep 17 00:00:00 2001 From: Aaron M Date: Wed, 21 Apr 2021 22:33:23 +1200 Subject: [PATCH] Fix & Re-Do Daytona 3 FFB Values & FFB Deadzone Values have been super wrong. Fixed it up --- OpenParrot/src/Functions/XInputEmu.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/OpenParrot/src/Functions/XInputEmu.cpp b/OpenParrot/src/Functions/XInputEmu.cpp index 762d2c8..16f8ee7 100644 --- a/OpenParrot/src/Functions/XInputEmu.cpp +++ b/OpenParrot/src/Functions/XInputEmu.cpp @@ -142,18 +142,27 @@ DWORD WINAPI XInputGetState { gamepadState.bRightTrigger = daytonaPressStart ? 0xFF : 0x00; - if (*ffbOffset2 < 1) + int Wheel = 0; + + if ((*ffbOffset2 >= (128 - FFBDeadzoneMaxMin)) && (*ffbOffset2 <= 128 + FFBDeadzoneMaxMin)) //Deadzone for FFB { - gamepadState.sThumbLX |= 257 - (-(32767 - *ffbOffset2) * 257); + gamepadState.sThumbLX = 0; } - else if ((*ffbOffset2 >= (128 - FFBDeadzoneMaxMin)) && (*ffbOffset2 <= 128 + FFBDeadzoneMaxMin)) //Deadzone for FFB + else if (*ffbOffset2 > 128) { - gamepadState.sThumbLX == 32768; + Wheel = -(-32767 + -(*ffbOffset2 * 255.9921875)); + + if (*ffbOffset2 >= 254) + Wheel = 32767; } else { - gamepadState.sThumbLX |= (-(32768 - *ffbOffset2) * 257); + Wheel = (-32767 - -(*ffbOffset2 * 255.9921875)); + + if (*ffbOffset2 >= 254) + Wheel = -32767; } + gamepadState.sThumbLX = Wheel; } #endif if (pState->dwPacketNumber == UINT_MAX)