https://bugs.winehq.org/show_bug.cgi?id=45669
Bug ID: 45669 Summary: Controllers don't work in Lego Starwars The Complete Saga Product: Wine Version: 3.13 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-dinput Assignee: wine-bugs@winehq.org Reporter: wberrier@gmail.com Distribution: ---
This also happens with several other lego games:
* Lego Batman * Lego Indiana Jones * (most of the older lego games that don't have xinput support)
The issue seems to be best described here:
https://github.com/00cpxxx/wine-xinput/issues/3#issuecomment-267162846
Quoting from the above link:
"Thanks again, I think I see what is happening. The game is not using xinput for all controllers, it is actually using dinput and Wine differs from Windows in how the L/R triggers are outputted. In Windows both triggers show as Axis 3 (Z) where 0 is not pressed, negative means left is pressed and positive means right is pressed. Pressing both results in non distinguishable action, this was a design decision back when they added the Xbox controller to dinput to make games think the Axis is "centered". On Wine the triggers are represented as lZ and rZ (left/right Z), where the not pressed state for each is -32767. The game is expecting zero so when it sees the negative value it thinks the value is pressed. This requires fixing dinput in Wine to merge both axes in a single axis."
If I enable js/event in the wine control panel, the game will respond to controller events. But, once I try to assign buttons to the various actions, before I can press a button "Z Axis" is registered as the pressed button.
NOTE: newer lego games that use xinput work great with Wine's new xinput support.