mgs2-v-s-fix
mgs2-v-s-fix copied to clipboard
Compatibility with "Dumb Xinput Emulator"?
I've been trying MGS2 on Linux through Wine with your fix and it works pretty well, however trying to enable the custom 360 controller layouts doesn't seem to work. It complains about UAC/permissions at first when trying to save the settings, then throws a message about "hardware structure" when trying to launch the game before re-opening the configuration window.
In trying to figure out how to get it to work, I noticed you use something called Xinput Plus and put a custom xinput1_3.dll and custom dinput.dll and dinput8.dll in the games folder I assume to translate dinput controls to xinput API, and I wander if this is part of the problem?
There's another tool called dumbxinputemu (https://github.com/kozec/dumbxinputemu) that does something similar, only requires a custom xinput1_3.dll, is made in part to work in Wine and I've used in the past with other games in Wine with success. Would it be possible to add support for this, or would the problem be something else?
Sorry for the late reply, fellow Linux user!
Unfortunately my laptop doesn't support very well any Linux distribution, so I have never tried the fix under Wine myself.
But I would be happy to do a 100% support for it: in the last update I had to work hard to fix the issue #19 , so I glad that it worked good, at least for that problem.
Now:
It complains about UAC/permissions at first when trying to save the settings,
This should be normal, even if it should ask it at the opening of the fix and not later. But I think could be normal under the Wine environment.
then throws a message about "hardware structure" when trying to launch the game before re-opening the configuration window.
Probably the game crash and then it re-open the fix automatically (this is intended, and can be disabled under the 'Other' tab of the fix.).
Can please you provide me with a screenshot of that error? Also, can you please enable the Debug mode and send me the .log file? Can be useful to understand better the situation.
In trying to figure out how to get it to work, I noticed you use something called Xinput Plus and put a custom xinput1_3.dll and custom dinput.dll and dinput8.dll in the games folder I assume to translate dinput controls to xinput API, and I wander if this is part of the problem?
You assume well: Xinput plus does exactly that work.
I wander if this is part of the problem?
Is simple to tell: disable the controller support putting the button to OFF and then SAVE.
If the game start, we have understand the cause.
There's another tool called dumbxinputemu (https://github.com/kozec/dumbxinputemu) that does something similar, only requires a custom xinput1_3.dll, is made in part to work in Wine and I've used in the past with other games in Wine with success. Would it be possible to add support for this, or would the problem be something else?
I saw the dumbxinputemu page, and one of the possible issues is the GPL Licence: because that I don't really know if I can include dumbxinputemu inside my fix (that can't be released under GPL itself for various reason).
Also, for the reason I explained above, I never tried the game under Wine, so I can't do "experiments" on it myself, but I promise that I will try it as soon as I can if I find a way to do it.
If you want to try it for us you can: simply set your game through the Fix, disable controller support, press SAVE, then manually install dumbxinputemu, then I think it should work without hassles (If I understand well how it works)!
Probably the game crash and then it re-open the fix automatically (this is intended, and can be disabled under the 'Other' tab of the fix.).
Can please you provide me with a screenshot of that error? Also, can you please enable the Debug mode and send me the .log file? Can be useful to understand better the situation.
Unfortunately, a power cut shortly after I opened this suggestion/bug has left my PC that I was using for this unable to boot :( (for now at least...)
I will report back whenever I can with the info you need.
Is simple to tell: disable the controller support putting the button to OFF and then SAVE.
If the game start, we have understand the cause.
Yeah, the game starts when the Xbox/Custom layouts are disabled. I was able to play a decent chunk of the game with just the default dinput support and Kozecs SC-Controller (for Steam Controller -> 360 controller emulation similar to with Steam but without need for buggy in-game Steam overlay).
I saw the dumbxinputemu page, and one of the possible issues is the GPL Licence: because that I don't really know if I can include dumbxinputemu inside my fix (that can't be released under GPL itself or various reason).
That's unfortunate, maybe you can contact Kozec for special permission to do so? I've filed bugs for SC-Controller on Github and I know he usually responds.
Also, for the reason I explained above, I never tried the game under Wine, so I can't do "experiments" on it myself, but I promise that I will try it as soon as I can if I find a way to do it.
If you want to try it for us you can: simply set your game through the Fix, disable controller support, press SAVE, then manually install dumbxinputemu, then I think it should work without hassles (If I understand well how it works)!
If I understand what you're suggesting, dumbxinputemu as far as I know only does the part to translate dinput to Xinput e.g. for games that already have Xinput support in WINE (as wine has no Xinput support, controlllers are normally only usable via dinput), so it still relies on the other parts your fix (or Xinput plus?) does in addition to seemingly get MGS2 to see and use Xinput controllers.
The things I tried were deleting the xinput1_3.dll your fix creates and replacing it with dumbxinputs, however, the dll is simply created again when the fix/game starts. I then tried setting directory to read only after deleting xinput1_3.dll hoping your fix would pick up dumbxinputs dll instead, but simply got the same error message.
Unfortunately my PC won't boot so I can't re-check and go through what you mentioned, so it might be a while before I can give you any more useful info, sorry!
OK, my PC is now working, so I went back and experimented again and enabled debug mode.
- The games default dinput controls (with no fix) work largely as you'd expect, with no ability to use analogue triggers on Steam Controller, but it is functional.
- Using your fix with Xinput plus, whilst changes the control layout between PS2/V config, whatever precisely Xinput plus does to make the rest of the controls work does not (analogue triggers don't work, and button layout isn't quite correct with item select menu on R3, L3 does nothing, no weapon select menu)
I've tried setting DLL overrides in Wine to help make sure it picks up custom xinput1_3.dll, dinput.dll and dinput8.dll but doesn't seem to work. Setting dinput,dll and dinput8.dll to native (instead of native, then builtin) causes the game to not launch at all.
MGS2_VFix_debug-dinputoverrides-dumbxinput.txt
I also tried setting the xinput1_3.dll from dumbxinputemu to read only, as not doing so means your fix deletes/overwrites it with Xinput Plus xinput1_3.dll. Doing that though is what causes the UAC error to appear it seems, and causes the game not to launch.
MGS2_VFix_debug-dumxinputemu-xinput1_3-readonly.txt
https://imgur.com/a/lMOoN
So, to really make sure I'm getting what this does after a bit more research:
-
Xinput Plus is rebinding the Xinput side for Dinput compatibility
-
dumbxinputemu is trying to get Dinput controllers visible to Xinput compatible games
Is that right? Would that mean dumbxinputemu couldn't be used for this?
but, isn't steam controller xinput certified?
Also, idk why i was notified of this, but since i was im gonna be nosey.
Steam Controller relies on another program (like Steam or sc-controller) to create a virtual Xbox 360 controller as far as I understand it, then the controller can be configured to send 360 or mouse and keyboard input.
The issue here is that Wine does not implement Xinput, only Dinput, so the method of trying to fix/reconfigure MGS 2 controls with Xinput Plus doesn't quite work, and dumbxinputemu isn't compatible thanks to both implementing a custom xinput1_3.dll (I think).
even if you try installing the xbox 360 accessories software under wine?
https://www.microsoft.com/accessories/pt-br/d/xbox-360-controller-for-windows
I mean, i though on the xbox drivers bc the last time i used wine it was some sort of windows XP (there was windows 8 available at the time), and the first time I used a xbox controller on XP I needed this software too.
So it made sense to me that this may work.
I doubt it, the issue is not really a lack of a driver, just a lack of implementing the API's applications expect to work to use the hardware.
But apparently Wine just released a new version with some work towards HID and Xinput support, so maybe nothing will be needed to be changed after all!
https://www.winehq.org/announce/3.2
but you got the try the driver?
SORRY for the late reply! I thought I answered it a few days ago, but instead I forgot it!
OK, my PC is now working, so I went back and experimented again and enabled debug mode...
Basically you got it right!
Also: the fix looking is so ugly under Wine 😣 I should really improve it...
But apparently Wine just released a new version with some work towards HID and Xinput support, so maybe nothing will be needed to be changed after all!
Wine is doing some amazing improvement lately!
I really can't try it now for various reason (I also never really tried Wine, like I sayed in the past).
If you are going to try it and see if its working all good I would be very happy!