In my quest to build the best console ever, I’ve decided to start with Steam as a base. Moving from Xbox to a custom built console means losing the overlay that lets me do things like chat with friends. Steam provides things like that, and I buy most of my games via Steam, so it makes sense to start there. And with Steam’s big picture mode, it will work perfectly with a controller.
The first challenge, then, was setting things up so I could launch my emulated games as easily as my modern games. This is how I did it.
1. Get an emulator and some games
There’s no special Steam related app that will play older games. You have to use existing emulators and ROMs you already have. Setting up emulators and ROMs is a bit outside the scope of this article, so if you don’t have any ROMs or don’t know how to use emulators, Google around, get some experience with emulators, and come back later. In this guide I’m going to be using snes9x. Get it here.
Make sure you remember where your emulators and ROMs are located. You’re going to need that later. My copy of snes9x is kept in
C:\Opt\snes9x and my SNES roms are in
E:\ROMs\SNES. Your locations are probably going to be different, so when you see those paths later on, change them out for your own correct paths.
2. Download Ice
Ice is a program for Windows that helps you import your games into Steam. Get it here, and unzip it.
Ice doesn’t have a GUI (yet). Configuration is done via config files, but they aren’t as hard to set up as they seem when you first see them.
Find the line that says:
Add the folder path where your ROMs are located. Mine looks like this:
Ice expects your ROMs to be seperated by console type. For example:
Ice adds each game as a shortcut in Steam. Those shortcuts load your emulator with command line arguments to open a specific game. In this step, you are going to tell Ice where the emualtor is (and how to launch it).
emulators.txt file is pretty bare when you first open it, and only contains some example configurations.
The format for an emulator looks like this:
location=[full path to exe]
command=[full command to run]
To add snes9x, add the following three lines:
command=%l -fullscreen %r
Make sure your location matches the actual exe of your copy of snes9x. In the command arugment,
%l is the location (the full path to the exe), and
%r is the path to the ROM. The name (
Snes9x in this case) is going to be referenced later.
In this case, the actual command that is run will look something like this:
C:\Opt\snes9x\snes9x-x64.exe -fullscreen E:\ROMs\SNES\Chrono Trigger.smc
Any other command line arguments (like
-fullscreen) are passed directly to the emulator.
This is the file that links everything together. A block looks like this:
[Full name of system]
nickname=[Short name of system]
emulator=[Name of emulator]
The full name of the system is what is going to show up in Steam. So, for example, all games under
[Super Nintendo] are going to be added to a category in Steam called
The nickname is the same as the name of your ROMs folder. So if your ROMs folder is
E:\ROMs, and you put
SNES here, it will look for roms in
The emulator is the name of the emulator as defined in
emulators.txt. In our example above, that was
[Super Nintendo] block to look like this:
If you named anything differently than the above examples, or if your SNES roms are not in the
SNES folder, change these values accordingly.
Just double click it and let it work it’s magic. Make sure Steam is closed first. If you configured it correctly, it should look something like this:
That’s all there is to it if you are trying to add your SNES games to Steam. They should now be mixed in with all of your other games as if they are native, and launching them will open snes9x in fullscreen mode.
There’s two more things missing though, if we are trying to make this a real console experience.
7. Fix snes9x’s video configuration
Launching the game from Steam will enable the Steam overlay, but some video configurations in snes9x will stop it from working properly. Steam will still show you as playing the correct game to your friends (the name of the SNES game you are playing, e.g., Chrono Trigger), but trying to open the overlay (via
Shift+Tab, the Xbox button, or any other hotkey) will not do anything.
If you launch the game, and the overlay isn’t working, try this. Open snes9x, and click on the
Video menu, and then
Display Configuration. Make sure
Output Method is set to either Direct3D or OpenGL. I’ve had better success with OpenGL, but I’ve also seen Direct3D work. If neither of those options change anything, it might be the
Output Image Processing section. Change that, start the game from Steam, and see if it works.
My configuration works perfectly with the
Output Method value set to OpenGL, the
Output Display Processing value set to
Super2xSal, and the
Hi Res value set to
That screenshot was taken in window mode just to make it easier to take a screenshot. It works just as well in Big Picture mode. Personal info blurred out. Feel free to add me on Steam.
8. Install and configure JoyToKey
Without this, there is no way to exit the game from the controller. Do not use the Steam overlay to quit the game – it will work, but it is the equivalent of the program crashing – your save games will be lost.
To close the game from the controller, Ice comes with a configuration for JoyToKey that will let you press
Select+Start to quit the game.
If you’ve never used JoyToKey before, you can get it here. Download it and unzip it somewhere. There is a file called
ExitCombination.cfg in the same folder as Ice. Copy it to the JoyToKey folder, and open JoyToKey.exe. Click on
ExitCombination in the list of profiles to activate it. If you want to get fancy, you can click on the
Settings menu and then
Associate profiles with application to activate it automatically when snes9x is open, but that’s a little outside the scope of this article. But as long as the
ExitCombination profile is active, pressing
Start+Select on your controller will close the current window. It’s the same thing as pressing Alt-F4 on your keyboard.
If you have any trouble with the key combination, try changing which button it is set to. Under
Joystick 1, one of the buttons says
Use Joystick #5 configuration. This is your
Select button. If it’s set to the wrong button (mine is set to Button 7), this is the value you want to change. The
Start button is set to
Alt+F4 in the
Joystick 5 tab.
9. You’re done!
Steam should now show SNES games as if they were native games. Opening one should set your currently playing game on Steam, and you should be able to use all features of the Steam overlay while in game, like web browsing and chatting. Have fun!