https://bugs.winehq.org/show_bug.cgi?id=52841
Bug ID: 52841 Summary: leverless arcade controller SOCD cleaning regression Product: Wine Version: 7.0 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: namtsui@gmail.com Distribution: ---
Created attachment 72236 --> https://bugs.winehq.org/attachment.cgi?id=72236 fix
downstream bug: https://github.com/ValveSoftware/Proton/issues/5527
There is a regression in wine SDL. I tested wine 7.0 using Linux 5.17.2. I think this is the commit to blame: https://github.com/wine-mirror/wine/commit/9cf1e8353cf05af1009e3e5d40b62f0e7...
See the file: wine-7.0/dlls/winebus.sys/bus_sdl.c https://github.com/wine-mirror/wine/blob/6d4ec1255acceec7152ed98764ee29991ac...
Leverless arcade controllers have all-buttons. One such controller is the hitbox controller from the company hitbox. It has four directional buttons mapped to DPAD. It has simultaneous opposite cardinal direction (SOCD) cleaning. If you hold down + up, it should output up. If you hold left + right, it should output nothing at all (neutral).
I added print statements. See the attached fix.
In clip 1, I demonstrate SDL2 events when down and up are held simultaneously during a jump for a while:
hold down (DOWN press event) hold up (DOWN release event. UP press event.) hold both for a while release all (UP release event. DOWN release event.)
[1] https://clips.twitch.tv/PlausibleSparklingButterJonCarnage-1nJQjUmS_kATb5Y6
In clip 2 the actual bug is shown.
hold down (DOWN press event) press up (DOWN release event. UP press event.) steps 1 to 2 were demonstrated in clip 1. release up (DOWN press event. UP release event.) keep holding down
[2] https://clips.twitch.tv/FunnyPlayfulClintmullinsArgieB8-p3pUOVQuS-eA8oqi
The UP release event at the end in step 3 causes the axis to be reset to 0. This ignores the DOWN press event immediately preceding it.
Clip 3 shows after the proposed fix is applied.
[3] https://clips.twitch.tv/RacyNeighborlyCookiePeteZaroll-2wwLnflwjAa3ZlFz