I am Setsuna

I am Setsuna

View Stats:
AnoHito Feb 17, 2017 @ 8:06pm
Controller Fix (for real this time)
So I decided to buy I Am Setsuna last evening because I am a huge Chrono Trigger fan, and I'd heard it was was a heavy influence for this game. I was really exited to try it, but when I started the game, the cursor wouldn't stop moving down (like the down key was stuck). I looked around the forums and found that I was far from the only one to have this issue, and the recommended fix is just to disable controllers. So, being the resourceful person I am, I wrote a ruby script that uses "devcon.exe" to automatically disable/enable the offending controller when the game start/stops, while leaving my other controller active. And that sort of worked, except the button configuration wouldn't work right, so I had to add a line to my script to automatically start Xpadder and load a profile I made to map the joystick input to the keyboard. That got me to the main menu without issue, but then when I tried to start the game, nothing happened when I pressed the button, even though I confirmed the controls were mapped correctly. In fact, even using the keyboard to start the game wouldn't work. After further investigation, I came to the conclusion that the only way to make the game work correctly was to disable or disconnect all the controllers connected to my computer.

Now I would like a moment to say, there is no excuse for this. As a developer of a game, there is a certain level of obligation to test input devices with your game to ensure they work correctly. Maybe not every device that exists, but just plugging an Xbox controller into a computer and calling it a day when it works isn't good enough. Failing that, you should at least add a built in way to disable input for controllers that you haven't tested. I partially blame the Unity Engine itself for these issues, because the way the engine handles input by default on Windows is generally speaking, not good, and developers don't always realize there are third party components to support DirectInput/XInput properly.

Anyway, after extensive experimentation, I figured out this game is using something called Raw Input for controller support. Raw Input is the third, and probably least known controller input system on windows, next to DirectInput and XInput. Raw Input, unlike the other systems mentioned, is able to handle a wide range of Human Interface Devices, assuming the library is used properly. However, unlike the other input systems, there are no tools like x360ce to bridge the compatibility gap between controllers and games. If a game used Raw Input, and a controller doesn't work, then it just doesn't work and there's nothing that you can do about it. Until now...

RawInputIgnore[mega.nz]

RawInputIgnore is a very simple tool that hooks the GetRawInputDeviceList function in user32.dll and replaces it with one that always returns 0 devices. No devices, no input. It doesn't allow for remapping with a virtual Human Interface Device (it could, but that would be a ton of work), but it will prevent the game from seeing your controllers. This will let you use the controller with Xpadder[www.xpadder.com], or one of these alternatives[alternativeto.net]. Here are the steps to get everything working:

1. Install Ruby[rubyinstaller.org].
2. Extract https://mega.nz/#!awo0FLDJ!ckOBc9CTGJMoj5L_OKRxTBPQ_JN1Ua2-eNfyFe4hrZo to the I am Setsuna application folder (example: C:\Program Files\SteamLibrary\SteamApps\common\SETSUNA).
3. Run patch.rb to patch SETSUNA.exe (note that the patcher is very hacky, and you are at your own risk if you use it with other games).
4. Find an input mapper[alternativeto.net] if you still want to use your controller.

By the way, if anyone is interested in how I made the user32.dll shim, or wants to try to make something that could do more than just disable controllers, be sure to check this out: http://www.hulver.com/scoop/story/2006/2/18/125521/185.
Last edited by AnoHito; Feb 17, 2017 @ 8:25pm
< >
Showing 1-7 of 7 comments
XT Feb 18, 2017 @ 9:12pm 
When I've had that kind of problem, I have found that my controller actually had one of the buttons wedged down. Especially the analog sticks, those can easily be out of position if the controller is resting wrong.

Might not be your issue, I dunno, but just thought I'd throw that out there because I have run into a problem like that which confused me for a while.
AnoHito Feb 18, 2017 @ 10:28pm 
I should probably explain, my other controller is a pop'n music[en.wikipedia.org] controller, which has a virtual dpad where the right, left, and down buttons are permanently "stuck". This was a trick used to allow the controller to be detected on a PS2, but it can cause problems if the controller is plugged into a PC and is detected by a game that can't be configured to ignore it. I can be pretty lazy about dealing that sort of thing, so I've actually written scripts to disable it automatically when a game starts before (and re-enable it when the game closes).

That wasn't so much of a problem, but the real problem was my other controller (a regular PS2 Dual Shock controller with an adapter), still wouldn't work no matter what I tried. If the game detected it at all, it made is so you could not select options in menus. Even if you disabled it while the game started it and re-enabled it later, the second you got to a menu you would not be able to proceed. Using a weird PS2 controller adaptor, I have experienced a ton of issues getting it to work with games, but this is on a whole different level. I am getting so sick of these issues, I am even considering expanding my shim to reroute Raw Input to XInput, now that I know it's possible. This would finally allow you to use x360ce on most games where it had previously not worked. I'll let everyone know if I make any progress.
Last edited by AnoHito; Feb 18, 2017 @ 10:30pm
CyberDown Feb 23, 2017 @ 7:16am 
ive seen a lot of these threads for games that i have zero issue with a steam controller.

with that said the steam controller kinda sucks vs an xbox controller for any game requiring a twin stick set up...i will say im very impressed with the steam controller for games like this with partial controller support or a lot of issues with xbox or generic controllers.

just sayin...
EddieDracula Feb 25, 2017 @ 8:54pm 
I'm using a SteelSeries Stratus XL and never experienced any issues with the game. It just works perfectly.
Ynehrs Jun 28, 2017 @ 5:49pm 
Hi Anohito, the download files got deleted from the post, could you send them to me please? I have the same problem as you
Tracido Jun 29, 2017 @ 9:22am 
Seriously, steam needs to stop removing links, I'm not having issues with an Xbox360 controller but I cannot imagine doing this game on mouse and keyboard as it stands, my gawd, cannot even assign a dang thing but a-z and 1-0..
Last edited by Tracido; Jun 29, 2017 @ 9:22am
SenMithrarin85 Jun 30, 2017 @ 3:50pm 
the unity engine only supports x-input afaik and doesn't like controller emulators like xpadder/x360ce.

I have been using a ds4 with scpserver/scptoolkit and never had a controller recognition issue with this or any game.
< >
Showing 1-7 of 7 comments
Per page: 1530 50