Closed DistantThunder closed 8 years ago
I see a "gameoverlayrenderer" in the crash .. are you using it with steam ? Try to disable the steam overlay.
@KoKuToru
I disabled the gameoverlay in Steam to no avail. It still crashes.
Sorry for the late response.
So the builtin-dll version still crashes the a Unhandled page fault on read access
at =>0 0x7e33753b XInputGetCapabilities+0x15() in xinput1_3 (0x0033cea4)
?
Based on this crash, I would say the game does try to get the game controller from the builtin-dll but somehow crashes...
We could add some debug messages to XInputGetCapabilities
maybe we can narrow down the problem..
If you want, I can create a branch for you with the added debug messages
Hi. I apologize for the late response as well.
Yes, I'd like a branch with more debug messages so that we can sort this out and hopefully expand Koku Xinput compatibility.
Well I did add debug messages now into the wine
-branch..
While adding the messages.. I might have found the problem .. it crashes with a Unhandled page fault on read access
and movl 0x0(%eax),%eax
.. so maybe .. pCapabilities == nullptr
?
Anyways please test it when you have time :dancer:
Using your build.sh in the wine branch, I have the following error messages, even though the xinput1_3.dll ends up in bin/
.
~/dev/koku-xinput-wine/xinput1_3 ~/dev/koku-xinput-wine
Winemaker 0.8.4
Copyright 2000-2004 François Gouget <fgouget@codeweavers.com> for CodeWeavers
Copyright 2004 Dimitrie O. Paun
Copyright 2009-2012 André Hentschel
Scanning the source directories...
Generating project files...
.
winegcc -c -mno-cygwin -m32 -I../include -o xinput1_3_main.o xinput1_3_main.c
xinput1_3_main.c: In function 'XInputGetCapabilities':
xinput1_3_main.c:251:9: error: expected expression before ':' token
std::cerr << "koku-xinput-wine:" << "XInputGetCapabilities(" << dwUserIndex << ", " << dwFlags << ", " << (void*) pCapabilities << ") called" << std::endl;
^
xinput1_3_main.c:253:9: error: duplicate label 'std'
std::cerr << "koku-xinput-wine:" << "return ERROR_DEVICE_NOT_CONNECTED" << std::endl;
^
xinput1_3_main.c:251:5: note: previous definition of 'std' was here
std::cerr << "koku-xinput-wine:" << "XInputGetCapabilities(" << dwUserIndex << ", " << dwFlags << ", " << (void*) pCapabilities << ") called" << std::endl;
^
xinput1_3_main.c:253:13: error: expected expression before ':' token
std::cerr << "koku-xinput-wine:" << "return ERROR_DEVICE_NOT_CONNECTED" << std::endl;
^
xinput1_3_main.c:256:5: error: duplicate label 'std'
std::cerr << "koku-xinput-wine:" << "fill Data";
^
xinput1_3_main.c:251:5: note: previous definition of 'std' was here
std::cerr << "koku-xinput-wine:" << "XInputGetCapabilities(" << dwUserIndex << ", " << dwFlags << ", " << (void*) pCapabilities << ") called" << std::endl;
^
xinput1_3_main.c:256:9: error: expected expression before ':' token
std::cerr << "koku-xinput-wine:" << "fill Data";
^
xinput1_3_main.c:277:5: error: duplicate label 'std'
std::cerr << "koku-xinput-wine:" << "return ERROR_SUCCESS" << std::endl;
^
xinput1_3_main.c:251:5: note: previous definition of 'std' was here
std::cerr << "koku-xinput-wine:" << "XInputGetCapabilities(" << dwUserIndex << ", " << dwFlags << ", " << (void*) pCapabilities << ") called" << std::endl;
^
xinput1_3_main.c:277:9: error: expected expression before ':' token
std::cerr << "koku-xinput-wine:" << "return ERROR_SUCCESS" << std::endl;
^
winegcc: gcc failed
Makefile:89: recipe for target 'xinput1_3_main.o' failed
make: *** [xinput1_3_main.o] Error 2
~/dev/koku-xinput-wine
~/dev/koku-xinput-wine/xinput1_4 ~/dev/koku-xinput-wine
Winemaker 0.8.4
Copyright 2000-2004 François Gouget <fgouget@codeweavers.com> for CodeWeavers
Copyright 2004 Dimitrie O. Paun
Copyright 2009-2012 André Hentschel
Scanning the source directories...
Generating project files...
.
make: Nothing to be done for 'all'.
~/dev/koku-xinput-wine
all done, files are in bin-folder
And so, upon launching the game, it crashes:
lol, my console window was too small and I didn't see that compile error ..
I commited a fix
EDIT: the fix is in the wine
-branch
There's progress! I tried it. Now, the game does detect an additional "legit" X360 controller but it seems some nonsense is still occurring:
Though the mapping is better achieved (I now have LT/RT), it seems the kernel driver is still interfering somehow, and I get an endless camera motion that turns and turns and turns, just like it happened in Tales of Zestiria for example, prior to the solution you found there.
In addition, the game shows me the "random gamepad" buttons (1 2 3 ...) instead of the 360 gamepad one, which it does have on Windows.
However, I suspect the game itself may not be well coded in this regard:
https://steamcommunity.com/app/367500/discussions/0/451850849185557418/
Thanks again for your efforts.
EDIT: P.S.: Trying to fiddle with xboxdrv to try and stop the interference, I noticed my kernel lacks the uinput module. I'll recompile my kernel including that module and see if it works.
EDIT2: Also wondering if I should install dinput8. Afraid it could screw the game...
Alright:
- If I use just the kernel drivers (xpad, uinput, joydev), when I get into the game, it detects and expose an official XBOX 360 gamepad and the two additional jsx, and uevent gamepads.
However, it displays generic gamepad buttons and in-game the mappings are screwed.
- If I activate xboxdrv userspace driver, detaching the kernel driver, the game still detects the official XBOX 360 gamepad and now displays the corresponding buttons! Yet ingame, the mappings are still screwed, but in a different way/layout.
- If I activate xboxdrv userspace driver, detaching the kernel driver AND not using uinput, the game detects no gamepad at all.
- Leaving kernel drivers loaded (xpad, joydev, uinput), installing winetricks dinput8, playing the game with the files from the
wine
branch in the game directory: intended behaviour. Official XBOX 360 pad is detected, its buttons show in the interfaces and all the mappings are correct.
I think this is solved. Thanks a lot for your help! :dancer:
Hi! It's me again :)
This time, DDDA is proving a bit quirky. All of this have been realised on a clean Wine 32bit profile created for the game.
I tried to use the .dll(.so) from the Wine branch like I did the last time with Tales of Zestiria. They seemed to be working everywhere and be the ultimate solution.
Sadly, they didn't work this time. Which is strange because as far as I can tell, this game doesn't use SDL.
DDDA.exe.xz.zip
I tried to use the old /usr/lib32/koku_xinput_wine.so method but it didn't work either. Here's the debug output:
I'm using
And I'm positive Zestiria and other games based on the .dll method are still working.