This was written by a friend of mine, Raj, at UmNotaBlogger.com.
The site has been closed down and in the process of being merged with UNaBMag.com. Since this tutorial has a really high page view, even after 3 years, I am going to keep it alive here on this site till the merge is complete so that those who are looking for a kick-ass tutorial don't go back empty handed. :D
Also do note that I have just copy-pasted the whole thing, so the links posted might have changed.
Written by: Raj Wraith
Published on: Jan 29, 2012 @ 16:02 (GMT +6)
If you're like me and have bought a cheap, generic (i.e. Chinese) controller, you're in for a surprise. Why? Well that generic fake-named, PS 2 designed game-pad won't be recognized by the games you play. This is because the games are programmed to only communicate with an Xbox 360 controller.
The reason behind this dilemma
An API or Application Programming Interface is basically a set of rules that software programs make use of to communicate with each other. Generic controllers, including ones made by renowned brands such as Logitech, use the dated DirectInput APIs whereas the X360 controller uses the latest XInput APIs.
Both DirectInput and XInput are part of DirectX, the piece of software you install whenever you install games for Windows. DirectInput was last updated in DirectX 8 in 2002. So unless you're playing a game from that time, you will either need to buy a 360 controller or use an emulator to convert DirectInput calls to XInput ones. For example, I started playing Metal Gear Solid 2 Substance out of nostalgia a few weeks back. I did not need to map any of the keys of my controller as the game recognized it without hassle. The game came out for the PC in 2003.
o emulate your generic controller, you must first download this software: x360ce (Xbox 360 Controller Emulator). The link is given below.
Extract the folder and you will find the application inside as you can see from the picture.
For this tutorial, I'm going to use the racing game Dirt 3 and sports game Fifa 12 as examples.
In the picture I put the x360ce file in the directory where the dirt3_game.exe file is or in the case of Fifa, where the fifa.exe file is. Remember, you must put the x360ce application file where the primary executable file for that game is, or else x360ce won't be able to locate the main game file.
Next, fire up x360ce and of course make sure that your controller is connected to your PC.
Upon opening, the application will ask to create certain files (x360ce.ini and xinput1_3.dll) and also if you would allow the app to search the internet for necessary settings. Accept the prompts in both cases.
Before clicking finish, check if the app found the right source file for your game. For Fifa 12, it should be fifa.exe, for Dirt 3 it should be dirt3_game.exe and so on.
Then you will see a window showing an X360 controller. If the image is in color, you can be sure that the game has recognized your controller. If it's in black and white however, you've either put the x360ce file in the wrong directory OR the game doesn't support gamepads at all OR you have numlock enabled (which is easiest to not notice). An example would be Bulletstorm which doesn't even support the 360 controller. Just go to the controller options in your game and check if it allows gamepad customization. No gamepad options mean zero support for controllers.
The rest of the tutorial deals with mapping your buttons with that of the emulator. In most cases, the emulator screws up the button mapping.
The emulator fortunately provides an easy solution to this problem. All you need to do is find out which button is wrongly placed and record the right input for that button. If for example your right trigger button is in place of the right bumper button, simply scroll down "Right Trigger's" menu and click Record. Press the right trigger and you're set.
Most games look for the xinput1_3.dll file. Some may look for different dll files. To help the game find the right dll go to the options tab and select one of the 3 choices given. Also, you may need to change the InputHook Mode to make things work.
Different games require different settings and like me, many faced the same problems. It’s best to refer to the x360ce wiki (link given below) and change settings according to instructions.
While it’s great to have that cheap controller work for you, it is still a better (and more convenient) option to get a 360 controller. Generic controllers don’t usually have pressure sensitive triggers, something that is essential to racing games for acceleration and braking as they require precision. Playing one with a keyboard, especially on hard difficulty can be painful and controllers are the only way to win those races.
This tutorial isn’t a 100 percent fool proof. There are games which the emulator can’t help with. But it has worked for me in all latest games that I have played, including Battlefield 3, Batman Arkham City and The Elder Scrolls IV: Skyrim. Experiment a bit, keep your head on, and you’ll get that Chinese controller working in no time.