I might have a clue (or a totally wrong thought).
Steam auto-installs VC9, DirectX9 and probably dotnet when launching the game. Using the builtin control.exe, I can see the controller in the game controllers section but if I get native dinput with winetricks, then it disappears.
My clue would be that maybe the game uses native dinput DLL as it installed it and not using builtin (even when I explicitely put builtin in winecfg).
I'm still surprised that native dinput can't see my controller (as it works flawlessly in windows without any driver install IIRC) but I'd obviously rather use builtin, so the fact that they work in control.exe is a good point. How can I track which dinput DLL is used when the game is launched ?
If I try to see console output of a game with dinput debug flag I can see an awful lot of :
Code: Select all
trace:dinput:IDirectInputDevice2WImpl_GetDeviceData (0x188798) 0x1d1fb74 -> 0x1d1fb44(1) x20, 0x00000000
trace:dinput:IDirectInputDevice2WImpl_GetDeviceData Returning 0 events queued
If I catch full output, I can see specific portion of output when launching wineserver here :
Code: Select all
trace:dinput:find_joydevs Found a joystick on /dev/input/event16: Generic X-Box pad (event) ({9e573eda-7734-11d2-8d4a-23903fb6bdf7})
trace:dinput:find_joydevs ... with force feedback
trace:dinput:find_joydevs ... with axis 0: cur=128, min=-32768, max=32767, fuzz=16, flat=128
trace:dinput:find_joydevs ... with axis 1: cur=27884, min=-32768, max=32767, fuzz=16, flat=128
trace:dinput:find_joydevs ... with axis 2: cur=0, min=0, max=255, fuzz=0, flat=0
trace:dinput:find_joydevs ... with axis 3: cur=899, min=-32768, max=32767, fuzz=16, flat=128
trace:dinput:find_joydevs ... with axis 4: cur=-643, min=-32768, max=32767, fuzz=16, flat=128
trace:dinput:find_joydevs ... with axis 5: cur=0, min=0, max=255, fuzz=0, flat=0
trace:dinput:find_joydevs ... with axis 16: cur=0, min=-1, max=1, fuzz=0, flat=0
trace:dinput:find_joydevs ... with axis 17: cur=0, min=-1, max=1, fuzz=0, flat=0
and here:
Code: Select all
trace:dinput:find_joystick_devices Found a joystick on /dev/input/js0: Generic X-Box pad (js)
with 8 axes and 11 buttons
trace:dinput:joydev_enum_deviceW Enumerating the linux Joystick device: /dev/input/js0 (Generic X-Box pad (js))
I can tell that the device changes something when launching the actual game because it kinda changes its output (not really sure about what it means though) :
Code: Select all
<repeat ad nauseam>
trace:dinput:IDirectInputDevice2WImpl_GetDeviceData (0x187940) 0x1d1fb74 -> 0x1d1fb44(1) x20, 0x00000000
trace:dinput:IDirectInputDevice2WImpl_GetDeviceData Returning 0 events queued
trace:dinput:IDirectInputDevice2WImpl_GetDeviceData (0x187940) 0x1d1fc14 -> 0x1d1fbe4(1) x20, 0x00000000
<repeat ad nauseam again>
And after that if I hit start on the controller I get that:
Code: Select all
trace:dinput:LL_hook_proc calling 0x187940->0xf3ff41c0 (200 b2ae708)
trace:dinput:dinput_mouse_hook msg 200 @ (740 282)
trace:dinput:queue_event queueing -11 at offset 0 (queue head 43 / size 1023)
trace:dinput:_dump_mouse_state (X: -20 Y: 76 Z: 0 B0: 00 B1: 00 B2: 00 B3: 00 B4: 00)
trace:dinput:queue_event queueing -7 at offset 4 (queue head 44 / size 1023)
trace:dinput:LL_hook_proc calling 0x187940->0xf3ff41c0 (200 b2ae708)
trace:dinput:dinput_mouse_hook msg 200 @ (740 282)
The questions I'm looking for answers here are:
- How can I know if it's using builtin or native DLL (as Steam installs DirectX package when launching the game)?
- What information must I put in a bug report about this issue?