Hi, I'm trying to get a brand new Xbox 360 controller to work with Overlord in Wine. The gamepad works flawlessly with at least one other game under Wine, namely Everyday Shooter, but not at all in this game. Both run under Steam. Strace reveals that the joystick devices are never opened or stat'd, where it shows that Everyday Shooter does open them. Overlord uses xinput9_1_0, which currently seems to be stubbed out to the native library. I have the game's own version and directx installed with winetricks, and I've also tried replacing xinput9_1_0 with the newer xinput1_3, to no avail. I guess the native xinput9 doesn't know anything about Linux joystick devices. I've also tried using native dinput.dll and dinput8.dll, to no avail as well. Keyboard/mouse also work in game, if that is enabled; when gamepad mode is enabled nothing moves the character. I'm wondering if anybody has any ideas on what could take to fix this. I'm a programmer, but I've never developed for Wine, and I've done very little Windows programming. I can catch up quickly, but a nod in the right direction would be very helpful. Would it be possible to implement the basics of this library using the current joystick support in Wine? By this support I mean whatever Everyday Shooter, which doesn't seem to be specifically designed for the Xbox 360 controller, is currently using. If not, where can I lookup more information on APIs and expected implementations? I have the pad, so access to the hardware should pose no problems. I've copied Andrew Fenn on this e-mail, since he has contributed the stubs, and seems to have done some extra work with the controller on the side. Any guidance will be vastly appreciated, -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.winehq.org/pipermail/wine-users/attachments/20091124/0365ab54/attachment.htm>
I don't have an Xbox 360 controller myself, so I haven't looked at this in much detail. Microsoft has a reference for xinput at http://msdn.microsoft.com/en-us/library/ee416996(VS.85).aspx. From what I can remember, the API itself is very simple and shouldn't require a detailed understanding of other parts of Wine. The generic joystick support is in dinput. According to http://msdn.microsoft.com/en-us/library/ee417014(VS.85).aspx, dinput doesn't support some features that are in xinput. Since we don't like to add new features to a windows dll, I don't think xinput should use dinput. Also, I worry that you might not get a consistent button mapping between operating systems, and that you may need to use some more direct interface to be sure you get it right. But I could be wrong. As far as I know, no one is working on this, so by all means go for it. -- Vincent Povirk
Javier Kohen wrote:> I'm trying to get a brand new Xbox 360 controller to work with Overlord in Wine.Native dlls won't work with joysticks (for obvious reasons). Wine's xinput is a plain stub and doesn't work with anything. Wine's dinput should work okish for most programs. This means if a game can use dinput it will see and will work with joysticks. If it needs xinput - you out of luck.
Javier Kohen wrote:> After a closer inspection it seems I was wrong, > and actually the IDirectInput implementation needs to be extended. > Namely EnumDevicesBySemantics and SetActionMap.Yeah this is completely not implemented in Wine. And that's the main reason for your problem. Former is some-what easy to implement. The later will require quite some modifications to Wine code. Plus adding all the static mapping garbage.
How can I upgrade my regular non-xbox live account to xbox live without losing all my data and gamerscore? I have a couple cards to redeem for xbox live gold. Is it possible to upgrade my account I have now to an xbox live one? Or do I have to start all over?