It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
It's not really much of a surprise, but launching the game with my DS4 connected (without additional software running, meaning that it works as a standard DInput device) doesn't allow me to enable controller support in the options panel.

Obviously, I can use any number of remapper programs to emulate a keyboard, but does anybody know whether it is possible to use the gamepad without any of these hacks?
This question / problem has been solved by oigroigimage
Looking at the EXE file, it seems Gex is implementing joypad support via WinMM.DLL which seems to be completely separate from DirectInput.

The good news is that it doesn't seem to use a whole lot of WinMM.DLL functions and seems to load a WinMM.DLL replacement instead of the system provided one if such a file is present in the Gex directory. So basically, we need a wrapper DLL that hands everything except joystick functions to the system, while implementing joystick support itself on top of DirectInput.

Does anybody know whether such a project exists?

BTW, these are the functions that Gex calls:
joyGetDevCapsA
joyGetNumDevs
joyGetPos
joyGetPosEx
mciGetErrorStringA
mciSendCommandA
sndPlaySoundA
timeBeginPeriod
timeEndPeriod
timeGetTime
timeKillEvent
timeSetEvent
Look what I found:
http://www.codeproject.com/Articles/16541/Create-your-Proxy-DLLs-automatically

I'll have to look into this tomorrow :)
Does Gex 1 work automatically with an Xbox 360 controller?
I think the XBox360 controller doesn't like WinMM, but I could be wrong... I'll try it tonight.

Playing around with WinMM, it seems it still is supported for standard HID game controllers... so why is it not working for Gex? Could be that the device detection is a bit oversimplified:
Apparently WinMM always reports 16 joysticks if at least one is connected, but will indicate the state as "unplugged" for those other 15 ones.

This means that the joystick could be any one of those 16 and you have to loop over them and find out. Mine is connected as joystick #2 (which doesn't seem to change). Maybe Gex is only checking #1? That should be fixable with a wrapper.
avatar
IronArcturus: Does Gex 1 work automatically with an Xbox 360 controller?
yes,tried now
I've marked the above answer as correct since this is usually the right answer.

But in case somebody is suffering from the same issues as me:
It really is due to Gex always using the first port when it should be using the first port with something plugged in.
And for some strange reason, the XBox360 controller always seems to use the first port, even when the controller is off. So if you have an XBox360 controller AND another kind of controller that you would want to use, it will still try to use the non-connected XBox360 controller instead of the second one.

I've solved the issue with a wrapper for WinMM.DLL. I've kept things simple and a little hackish, but it works:
http://www.tapper-ware.net/data/files/gex/GexControllerFix.zip

In the download are three files.
PatchGEX.exe changes the reference to WinMM.DLL to LinMM.DLL in the GEX.exe file, causing it to use the second file included in the archive.
LinMM.DLL passes most stuff directly back to the real WinMM.DLL, but the joystick functions get redirected to the third file instead.
WinMMProxy.DLL does a search for a CONNECTED controller when an application starts using it. It will then redirect all following commands to that controller until the application is closed.

Just extract it to your Gex directory and run PatchGEX.
Post edited October 19, 2014 by hansschmucker
Try to connect my ASUS gamepad for Nexus Player, but it can't work even with solution here, before one guy tell me about JoyToKey.
Highly recommend!
avatar
hansschmucker: I've marked the above answer as correct since this is usually the right answer.

But in case somebody is suffering from the same issues as me:
It really is due to Gex always using the first port when it should be using the first port with something plugged in.
And for some strange reason, the XBox360 controller always seems to use the first port, even when the controller is off. So if you have an XBox360 controller AND another kind of controller that you would want to use, it will still try to use the non-connected XBox360 controller instead of the second one.

I've solved the issue with a wrapper for WinMM.DLL. I've kept things simple and a little hackish, but it works:
http://www.tapper-ware.net/data/files/gex/GexControllerFix.zip

In the download are three files.
PatchGEX.exe changes the reference to WinMM.DLL to LinMM.DLL in the GEX.exe file, causing it to use the second file included in the archive.
LinMM.DLL passes most stuff directly back to the real WinMM.DLL, but the joystick functions get redirected to the third file instead.
WinMMProxy.DLL does a search for a CONNECTED controller when an application starts using it. It will then redirect all following commands to that controller until the application is closed.

Just extract it to your Gex directory and run PatchGEX.
My wireless Xbox 360 controller wasn't working with Gex under Windows 10, and your patch fixed it, thanks!
avatar
hansschmucker: I've marked the above answer as correct since this is usually the right answer.

But in case somebody is suffering from the same issues as me:
It really is due to Gex always using the first port when it should be using the first port with something plugged in.
And for some strange reason, the XBox360 controller always seems to use the first port, even when the controller is off. So if you have an XBox360 controller AND another kind of controller that you would want to use, it will still try to use the non-connected XBox360 controller instead of the second one.

I've solved the issue with a wrapper for WinMM.DLL. I've kept things simple and a little hackish, but it works:
http://www.tapper-ware.net/data/files/gex/GexControllerFix.zip

In the download are three files.
PatchGEX.exe changes the reference to WinMM.DLL to LinMM.DLL in the GEX.exe file, causing it to use the second file included in the archive.
LinMM.DLL passes most stuff directly back to the real WinMM.DLL, but the joystick functions get redirected to the third file instead.
WinMMProxy.DLL does a search for a CONNECTED controller when an application starts using it. It will then redirect all following commands to that controller until the application is closed.

Just extract it to your Gex directory and run PatchGEX.
Do you still have this patch? I was unable to find it downloadable from your website anymore, and I am having trouble with Gex and my gamepad. Thanks!
Hi Taco
Actually the link is still up:
http://www.tapper-ware.net/data/files/gex/GexControllerFix.zip
If it still works I can't say... haven't used it in ages if I'm totally honest >_<

--hans
Just tried it, it works ^_^

Also, really looks a whole lot better with FSR scaling. xBR also works nicely.