https://bugs.winehq.org/show_bug.cgi?id=52714
Tomasz Pakuła tomasz.pakula.oficjalny@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tomasz.pakula.oficjalny@gma | |il.com
--- Comment #10 from Tomasz Pakuła tomasz.pakula.oficjalny@gmail.com --- I've done extensive testing and debugging with Oleg Makarenko and this is an issue with the game, not wine. Wine works as expected and removing these checks would be in clear opposition to how directinput works. The same issue is present on windows.
1. The game creates FFB effects incorrectly. It includes ALL the FFB-enabled axes found on a device but then tries to change cAxes to 1, rgdwAxes to only contain the steering axis and rglDirection to only contain one entry. This is in clear violation of directinput which clearly states that cAxes, rgdwAxes and rglDirection can't be changed once they have been set during effect creation. https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ee417536...)
NOTE from linked documentation: The cAxes and rgdwAxes members cannot be modified once they have been set. An effect always has the same axis list.
2. The same issue (no FFB) is present on windows. A lof of PID wheelbases (Moza, VRS, Cammus etc) expose two possible FFB axes in their descriptors. The registry fix/hack from Moza (and later adapted by RSF for other manufacturers) overrides directinput and tells it that a specific device only has one FFB enabled axis. directinput in Wine doesn't have this functionality as it's pretty arcane.
3. Oleg created a small program to test effect creation and updates and we confirmed that there's no way to change cAxes once it has been set with the effect creation. In every possibility (changing direction types, supplying different axes etc) Wine behaves and returns the same errors as Windows AND works properly wit the same configs that work on Windows. Any change to cAxes will always return DIERR_INVALIDPARAM.
The game worked previously as directinput emulation was very rudimentary. Now, that it's much, much closer to 100% replicating Windows, these game bugs are surfacing.
Why would it not work with known working devices like Logitech G29? I'm trying to get a hold of data from one to confirm but Logitech does a lot of custom work in their windows drivers which expose different HID descriptors to what's actually found on the devices. They might actually expose two FFB axes. Maybe it's something in the driver/SDL/Wine handling of virtual joysticks that exposes more than the one FFB axis.
I just want to emphasize that this is not the device's or Wine's issue/problem. A single-axis effect should be created with just one axis from the start. https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ee417536...
If possible, it would be best to fix game/rsf ngp FFB effect creation.