These are some useful tools to help make older games easier to use for setting up controllers or graphics on a modern system.
I can't claim these are all easy to use but they're all tools that I use at various times to make things work!
Why?
Most older games (prior to the mid 2000s) only allow for a limited number of joysticks/axis and devices (typically one or two). This means in order to use a joystick with an older game it typically has to the "first" or "second" joystick Windows sees and cannot have more than two axis/limited buttons. These tools allow you to change how Windows sees the controllers to manipulate your personal joystick configuration to work with (almost) any game
THE TOOLS
Download: https://github.com/nefarius/HidHide/releases
Description: This tool lets you hide joysticks from a game so they are ignored. This allows you to do a few things:
No longer needed to plug/unplug devices when playing older games
Disable parts of controllers if they have multiple entries (like Fanatec devices)
Hide controllers which are being used in tools like vJoy to emulate other joysticks
Useful Titles/Limitations:
This should work on basically any game (new or old) since it disables the Device's visiblity to the application. It is specifically useful for games/programs which do not use direct input since devreorder does not work there:
DosBox
Grand Prix Legends
Papyrus Windows Games (Nascar 3, Nascar Legends, N1999 3DFX)
Installation:
Download the latest version from the releases on github (download the exe under the latest release)
Install using the downloaded file
Run the program:
A. On the "Applications" tab, select the apps you wish the program to apply to (using the inverse mode)
B. On the "Devices" tab, unclick the 'check' box next to any control you wish to disable
Be sure to double-click a device which shows up multiple times in your windows 'controllers' panel if you wish to disable parts of it (such as Fanatec's "second" controller). This helps reduce the number of Axis the game will report which can fix problems with games like Grand Prix Legends running out of available axis:
I recommend enabling the "Inverse application cloak" so you only need to list the games/exes you want HidHide to work on, so you don't need to disable it every time you want to do something else:
Download: https://github.com/briankendall/devreorder/releases
Description: This tool lets you change the order and hide/disable joysticks for a specific game.
Define exactly which devices a game can see
Save settings for a game individually (once you set it up once you are good to go!)
Change the order of devices (huge for which controller is 1st/2nd etc)
Useful Titles/Limitations:
This only works for games which use DirectInput8 (dinput8.dll). Its not always easy to see what directinput version games use, but anything in that 2000 - 2008 range should most likely work with this
GTR2
Grand Prix 4
NASCAR 4-2003
Richard Burns Rally (including RallySimFans)
Joy2Key (use this with Joy2Key so that it doesn't change the order of the devices if one is unplugged!)
Installation:
Download the latest version (devreorder.zip) under Releases
Copy the 'devreorder.ini' and the appropriate dinput8.dll to the folder where the .exe for the game you are running is
a. If the game is 32bit use the .dll in the "x86" folder, if it is 64bit use the .dll in the "x64" folder. For the purposes of this guide most games are probably 32bit
Run the "DeviceLister.exe" to see the list of your current devices:
This contains both the Name (in quotes) and the ID (in curly brackets {}) for each of your devices. You don't need to keep the DeviceLister.exe, but its probably a good idea to put it somewhere where you can run it whenever you need to configure a game (or if you get a new device!)
4. Edit the 'devreorder.ini' in your game's folder (use a text editor/notepad) to list each device in the section you want them to be interpreted as for that game:
[order] <- Anything which should be seen by the game AND the order they should be in
[hidden] <- Anything which should not be visible in the game
You can just use the name of the device unless that device has multiple controllers (like Fanatec). For those devices you should use the ID (with curly brackets and all {}) if you want to enable/disable those devices individually.
In the screenshot here I have the first part of my Fanatec wheel enabled but the second part disabled. This hides all the extra axis (which I don't even use) from the game. This is necessary in some games like Grand Prix Legends which have a limit on how many axis they can read.
Make sure to match the name exactly, or better yet Copy and Paste it from the device lister window!
Download: https://joytokey.net/download/JoyToKey_en.zip
There are other versions for download here, but beware the site has many many ads!
https://joytokey.net/en/download
Description: This tool lets you map joystick buttons/axis to keyboard buttons (and probably a lot more!). There are many apps which let you do stuff like this, but I've found this one the most easy to use over the years
Map buttonboxes/wheel buttons to commands in old games which cannot be remapped
Configure multiple button-press/macros to make your buttons do whatever you need them to!
Useful Titles/Limitations:
Useful in almost every game which has keyboard commands needed while driving but no way to remap them to a button natively. Some examples:
Old Papyrus games (f-boxes, pausing, scrolling standings etc)
Grand Prix Legends (raise that arm!/view the pitboard)
GTR2
Crammond Sims (GP1-4)
Installation:
Unzip Joy2Key where you want it to live
Run (as admin)
Create a profile for your game
Under "Options" Configure how many joysticks you want Joy2Key to see (necessary if you have more than 2)
On the Joystick tab which corresponds with the joystick you want to map (press a button and the tab will turn yellow)
Double-click the button/axis you want to map a key to
In the Assignment window, type the Key (or keys) the button should press
Run Joy2Key in the background to have your controller press the keys you have assigned
Download:
Vjoy: https://github.com/shauleiz/vJoy/releases
Universal Joystick Remapper: https://github.com/evilC/AHK-Universal-Joystick-Remapper/releases
Description: These are a couple of tools which can be used to create a "Fake" single consolidated joystick device using the axis/buttons of your other devices. This allows you to control exactly what buttons/axis are seen by a game and what order they are in, how they function and a whole lot more.
Useful Titles/Limitations:
I've used UJR and VJoy when you must create the "perfect" device which has the axis in the right order. The main limitation with Vjoy/UJR is it does not support force feedback on the axis. I have found this program useful for remapping my pedals in games like GP4, or for creating new axis out of multiple such as for single-axis pedals or rudder pedals in flight sims
Configuration:
Vjoy will create a new "Controller" in windows. How many axis/buttons that controller has is up to you, it can be selected/enabled in the vJoy window, for example:
This is a controller enabled on "vJoy Device: 2" (important in a moment). It has 4 buttons and only an X and a Y Axis.
You can enable/disable vJoy in the bottom left. You can have multiple vJoy Joysticks, but I recommend sticking to one unless you know what you are doing!
In Universal Joystick Remapper you can "Tie" your controllers to the vJoy controller using the 'vJoy Stick ID':
You can then map your real-life joystick to the vJoy joystick using the below settings.
For example, in this screenshot my "3rd" controller's "1st" axis is mapped to the vJoy "X" axis.
You can use Special Operations to modify how the axis behaves (such as splitting the vJoy axis across two actual axis to combine pedals)
In your game you will want to use hidHide or devreorder to hide your actual controllers and have the specific game only see the vJoy controller
Download: https://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/
Under the "Latest Stable Version" section
Description: This tool lets you emulate a game's rendering to manipulate many settings for how the computer draws it. This can allow you to:
Run a game in windowed mode
Upscale/specify a game resolution (on some games)
Run 3DFX games on Windows
Disable/change filtering settings (get that pixelated look instead of the bilinear smear!)
Useful Titles/Limitations:
Some games (like 3DFX ones) require you use a tool like dgVoodoo to run them on a modern system, but I've also found a lot of use using dgVoodoo make some games behave better on modern windows, or have more control over how the game runs (windowed / aliasing etc). This can be especially useful if you have a second monitor and want to be able to alt+tab or use it while a game is runing
Grand Prix Legends
Papyrus 3DFX Games (N99/N2)
Papyrus D3D Games (N3/NL)
GTR2
Installation:
Download the latest version of dgVoodoo (regular usage version
Copy the "dgVoodoo.conf", "dgVoodooCpl.exe" and the relevant .dll files for the game you are emulating from the subfolders
Most of the games in question for this tutorial (old racing games) are going to use the .dll files in the "MS/x86" folder for D3D games, or the ones in the "3Dfx/x86" folder for 3DFX. You only need the .dll that the game specifically uses, but its ok (in most instances) to copy multiple into the folder if you don't know
You can double click the "dgVoodooCpl" to launch a UI to edit the settings, but you can also edit them in a text editor in the "dgVoodoo.conf"
The [General] settings will let you specify if the game runs in fullscreen or a window, as well as if the aspect ratio is preserved. These are useful settings for something like Grand Prix Legends:
FullScreenMode = false
ScalingMode = stretched_4_3
CaptureMouse = false
CenterAppWindow = true
In the [GeneralExt] section you can specify if the app is in borderless window using these settings:
WindowedAttributes = borderless, alwaysontop
FullscreenAttributes = fake
I made a more in-depth post on running GPL in a window, available here:
https://srmz.the-fastlane.co.uk/viewtopic.php?t=2094
Purchase: https://store.steampowered.com/app/993090/Lossless_Scaling/
Description: This is an amazing program which can both upscale and create fake frames to make older games look smoother!
Useful Titles/Limitations:
This is really wonderful for games which are locked to a lower framerate, but is also nice as a tool to make a game fullscreen at the click of a button, but have it return to windowed mode easily.
I recommend checking out the "Scale Hotkey" option under the "Settings" menu to bind the enable/disable of the program to a button or key command. This makes it very easy to switch between on and off.
Video Overview:
I also use Lossless Scaling to "Crop" the window when the tool is enabled. This is very useful if you want to chop off part of the screen which isnt used in some games (ie. old Papyrus NASCAR sims)
<- NASCAR 99 with the top and bottom of the screen cropped almost looks like native widescreen!