https://bugs.winehq.org/show_bug.cgi?id=52714
--- Comment #5 from Sven Arvidsson sa@whiz.se --- Created attachment 76065 --> https://bugs.winehq.org/attachment.cgi?id=76065 Remove the axes check from dinput
I think I figured out what's going on:
The game creates single constant force with two axes. It then uses a SetParameters in a loop to update, download and run the effect.
The calls to SetParameters also changes the number of axes to 1. This is the problem.
According to the DirectInput API "The number of axes for an effect cannot be changed once it has been set*". Wine handles this by returning early from the method call with DIERR_INVALIDPARAM and never playing the effect. It seems Windows is more lenient, simply ignores the attempt to change the axes and plays the effect.
My workaround (and the attached patch) simply removes the check for axes changes.
I'm not sure if it's the correct way to handle this but force feedback works for me now. I tested the original game with and without the FixUp plugin (using a Logitech G29 and Wine 9.2).
* https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ee416616...)