How to play SNES games from Steam (with the Steam overlay)

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.

Steam Big Picture Mode

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.

3. Open config.txt

Find the line that says:

ROMs Directory=

Add the folder path where your ROMs are located. Mine looks like this:

ROMs Directory=E:\ROMs

Ice expects your ROMs to be seperated by console type. For example:

E:\ROMs\N64
E:\ROMs\PS1
E:\ROMs\SNES

4. Open emulators.txt

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).

The 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:

[Name]
location=[full path to exe]
command=[full command to run]

To add snes9x, add the following three lines:

[Snes9x]
location=C:\Opt\snes9x\snes9x.exe
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.

5. Open consoles.txt

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 Super Nintendo.

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 E:\ROMs\SNES.

The emulator is the name of the emulator as defined in emulators.txt. In our example above, that was Snes9x.

Change the [Super Nintendo] block to look like this:

[Super Nintendo]
nickname=SNES
emulator=Snes9x

If you named anything differently than the above examples, or if your SNES roms are not in the SNES folder, change these values accordingly.

6. Run Ice.exe

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:

Ice in action

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 Simple 2X.

SNES game with Steam overlay

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.

JoytoKey

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!

Steam with SNES games

mike

Michael Day is a web engineer, javascript junkie, video game enthusiast, and blogger. Hating how the big console makers were taking advantage of gamers, he made the switch to PC and set it upon himself to make a machine that did everything the more popular consoles wouldn't.