rdoeffinger / xwa_ddraw_d3d11

Direct3D 11 implementation of DDraw.dll for XWA
MIT License
63 stars 2 forks source link

Joystick deadzone investigation #22

Open rdoeffinger opened 4 years ago

rdoeffinger commented 4 years ago

Some joysticks seem to have issue with e.g. drifting if the in-game deadzone handling is patched out. It is of course possible to just leave that enabled by default, but it generally seems too extreme by default and makes it hard to aim for anyone with good joysticks. So this ticket is meant for collecting data on different joysticks/gamepads to see if there is a reasonable compromise. To collect data run the JoystickStats.exe file (download from release page: https://github.com/rdoeffinger/xwa_ddraw_d3d11/releases/download/v1.5.13/JoystickStats.exe ). Move the joystick, then let it return to center position and press button/"A" button. Let it run for a bit without moving the joystick and copy-paste the output line (to copy press Ctrl+M, mark text, press enter). Example for my Logitech Extreme 3D pro: Try 1: winmm: 32511,32767 min: 32511,32767 max:32511,32767

Try 2: winmm: 32767,32767 min: 32767,32767 max:32767,32767

Try 3: winmm: 32767,32511 min: 32767,32511 max:32767,32511

As you can see, normally the position is stable once the joystick is in center (min and max are the same), however it doesn't always return to exact center but is a bit above 200 units (less than 1% as it uses the full 0 to 65535 range) off.

Writhyn commented 4 years ago

Xbox Elite Controller (Gen 1): Try 1: winmm: 31138,33962 min: 31138,32767 max:32767,33962 xinput: 1325,1465 min: -32746,-32768 max:32587,32750

Try 2: winmm: 31138,33962 min: 31138,32767 max:32767,33962 xinput: 590,1571 min: -32768,-32768 max:32587,32750

Try 3: winmm: 31138,33962 min: 31138,32767 max:32767,33962xinput: 1587,1971 min: -32768,-32768 max:32672,32756

FlyingFox333 commented 4 years ago

Thrustmaster T.16000M Original version with green lighting, not FCS version with orange lighting This joystick uses a hall effect sensor

winmm: 31371,31675 min: 30599,30751 max:31371,32699 winmm: 31823,31699 min: 30863,30975 max:31823,31699 winmm: 31507,31699 min: 31027,31051 max:31507,31811 winmm: 30799,31631 min: 30799,31631 max:31011,32411 winmm: 31855,32183 min: 30955,30599 max:31855,32691 winmm: 32071,32767 min: 31483,32767 max:32071,32767 winmm: 32767,31991 min: 31267,31079 max:32767,32115 winmm: 32767,32767 min: 31579,32011 max:32767,32767 winmm: 32767,32331 min: 32691,31879 max:32767,32767 winmm: 32703,31055 min: 32703,31055 max:32767,32759

rdoeffinger commented 3 years ago

Thanks for your contributions, it's very helpful. It might take a while longer before I get around to do something with it though!

fourpastmidnight commented 3 years ago

Logitech Wingman:

winmm: 33475,32383 min: 33475,32383 max:33475,32383 winmm: 33732,32639 min: 33732,32639 max:34760,32639 winmm: 34310,32447 min: 34310,32447 max:34374,32447

V000id commented 2 years ago

T16000m FCS

Try 1: winmm: 32767,32767 min: 32767,32767 max:32767,32767 Try 2: winmm: 32767,32767 min: 32767,32767 max:32767,32767 Try 3: winmm: 32767,32767 min: 32767,32767 max:32767,32767

It seems always exact.

I'd love to know if there was away to patch away the hard coded dead zone in old TieFighter 1995 CD version (steam). As much as I like the improved XWA graphics, I love to play the old original pixel art and the better midi sound of the 1995 CD version.