Yesterday was a wonderful day, I finally got my Steam Link working flawlessly with RetroArch and a PlayStation DualShock 4 Controller on the big screen in my living room. It was my third attempt at getting an emulator to work with the Steam Link and now I can teach you exactly what I did and what I have learned over the past week.
Since I got my Steam Link I have been obsessed with the idea of running old school games like Super Mario World for the SNES and Sonic the Hedgehog for the Sega Genesis (MegaDrive). I saw some people had done it already so I knew it could be done, but the tutorials out there leave much to be desired and can be confusing and over complicated at best.
I will try in this article to keep things simple. I will explain some of the basic concepts that you need to understand to get this working. If you have any questions please leave me a comment and I will try to help.
How to run emulators on the Steam Link
We will be using RetroArch, which is creating quite a bit of buzz in the emulator world right now because it allows you to control multiple emulators and works on multiple platforms. RetroArch is kind of an emulator manager, it is more than that but for the purpose of this article it allows you to have multiple emulators all under one interface.
Then we will use a piece of software called Ice to create the bridge between RetroArch and the Steam Platform. Once we have RetroArch and Ice configured we can use our Steam Link to launch emulators and play retro games directly from Steam in Big Picture Mode with a seamless integration.
Where to save every thing?
There are no rules where you save RetroArch, Ice or your ROM files. I will show you how I have it on my machine to make this tutorial easier to understand.
I install some of my Steam games on my extra hard drive. I have a folder there called “SteamLibrary” and this is where I install some of my Steam games. I decided I would keep all of my game files all in one place so now I have RetroArch, Ice and my ROM files all in a SteamLibrary folder on my 1TB external hard drive.
So E:\SteamLibrary\steamapps is where some of my Steam games are installed.
I then created an “Emulator Folder” under E:\SteamLibrary\Emulator so that I can store every thing connected with emulation all in one place.
Then I created:
Inside ROMs I have two more folders which contain some ROM files:
Remember there are no rules here, you do not have to have this structure and the fact that these folders are inside my Steam folder serves no relevance to the tutorial whatsoever because you can install these things wherever you wish.
First let’s download and start RetroArch
Before we think about Steam or using the Steam Link its important that we get RetroArch running first. You will need to install “RetroArch” load up a “Core” and then load some “Content”. In other words we will use RetroArch to load a console for example the Super Nintendo core then we will load a game which is also called a ROM file.
Download the latest stable version of RetroArch for Windows and unpack it into E:\SteamLibrary\Emulators\RetroArch, you will need WINRar or similar to unzip the 7-Zip file. You can choose between 32-bit and 64-bit depending on your current operating system. I use Windows 10 so I went with the Stable 1.3.2 64-bit download.
After you unpack it, launch retroarch.exe and you should see the RetroArch GUI. Now we need to download our first Core and then we can load a ROM file.
Navigate using your keyboard and follow the steps below:
Settings tab > Online Updater > Core Updater > bsnes_balanced_libretro.dll
Once you have a Core downloaded you will need to load the Core.
Settings tab > Load Core > bsnes_balanced_libretro.dll
Once you have a Core loaded you can now load a ROM file.
Settings tab > Load Content > Select File > E:\SteamLibrary\Emulator\ROMs\SNES\Super Mario World.sfc
If all is working correctly you will see the game you just selected and you should have control using the keyboard. For a more in depth article or if you get stuck with my guide you can read Getting Started with RetroArch you can also ask questions on the LibRetro Forums and you can check the LibRetro Wiki.
IMPORTANT: YOU MUST HAVE RETROARCH WORKING BEFORE YOU CONTINUE!
Using Ice to add ROM files to your Steam Library
Once we have RetroArch working we need to create the bridge between Steam and RetroArch. To do this we will use a really awesome GitHub project called Ice created by Scott Rice. Ice will scan our ROM folders we created earlier and add any games it finds into Steam as non-Steam games. Its customizable, with a fairly low level setup. It also helps you find artwork so that your ROMs look great when you are running Steam in Big Picture Mode which is the mode launched by default when you use your Steam Link.
Configuring Ice to work with RetroArch and the Steam Platform
Download the latest version of Ice and unpack it into E:\SteamLibrary\Emulators\Ice.
There are three config files that you will need to edit to get Ice working correctly.
The reason I showed you my file structure earlier is to try and help you understand how to configure the Ice config files.
Here are my config files, you can of course configure Ice to work differently but for the purpose of this article I will show you what I have in my three config files. I have removed most of the content that comes in these files to keep the demonstration simple and to show you that some things are not needed for our particular setup. Please review the files you downloaded from the Ice website and compare them with mine. I have added some of my own comments to help you understand how these three files work together. I am currently running both SNES and Genesis/MegaDrive on my Steam Link so if you only want SNES games you can ignore the Genesis stuff but I have left it here to help show you how this stuff is working.
# My ROM Files:
# The default is ConsoleGrid (consolegrid.com/api/top_picture)
# If this field is left blank, Ice will not attempt to download images
# This [WORD] represents the category in Steam
# nickname must match you folder name in your ROMs folder
# This is the name you specify in emulators.txt
# This is the file extension of the ROMs in the ROMs folder
# Location of RetroArch.exe
# Location of SNES CORE and some launch options
command=%l -fullscreen -L cores\bsnes_balanced_libretro.dll %r
command=%l -fullscreen -L cores\genesis_plus_gx_libretro.dll %r
Ice will also grab the artwork to use for the ROM’s when in Big Picture Mode. But the ROM file name must match the name found on the consolegrid.com website.
For example I had to rename my Super Mario World ROM to “Super Mario World.sfc” before running Ice so that Ice could get the correct artwork for me.
Once you have your config files edited and pointing to the correct locations on your hard drive you must exit Steam and launch Ice.exe. If all is successful you will see a screen which looks similar to the one below.
If you have some issues with Ice you will need to read what the Ice console tells you and Google for any problems that it reports. You can also read the Ice Getting Started Guide where you can read more about the ROM folder structure and how to set custom images and icons for your games in Steam.
If Ice executed without any issues it’s time to load up Steam, launch Big Picture Mode and test if all is working correctly. Once you are happy that all is working as expected on your desktop it’s time to move into the other room and boot up your Steam Link for some awesome retro gaming fun!
It should work flawlessly once you have all the kinks ironed out.
This is a dream come true for me and I hope that you are also able to play some ROMs on your Steam Link. It brings back a ton of childhood memories and I am excited to play on the Steam Link with my friends and family.
The Finishing Touch, Using the 8bitdo SFC30 Wireless Bluetooth Controller with the Steam Link
I just purchased the 8bitdo SFC30 Wireless Bluetooth Controller. I have no idea if this thing will work. I will update you here as I get my hands on it to let you know if the SFC30 works with Steam Link and RetroArch.
The Final Word
After trying for several days I truly believe that this article outlines the best setup for running emulated games on the Steam Link. Many people are using LaunchBox or BigBox as a layer in-between Steam and the emulator but this comes with it’s own issues. I personally was not able to get things working using LaunchBox, my controllers never worked and it looked horrible trying to navigate LaunchBox plus I really don’t see why you would want to use LaunchBox when you can launch games directly from Steam Big Picture Mode which looks great and it just works better.
If you add more Cores to RetroArch you simply add a few lines of code to your Ice config files and then run Ice again. If you add more ROM files you simply exit Steam and run Ice again. I love how RetroArch works independently in this setup. I can swap shaders, configure controllers and do all of that fun stuff directly in RetroArch, afterwards I just boot up my Steam Link and it works flawlessly.
I really hope you have been able to learn something today and If you have any questions, comments or praise to give, please do so in the comments below and I will try to reply.
Known issues and Frequently asked Questions
I will try to keep this article updated and if I get similar questions from people I will try to add them here as a help resource.
Where can I download ROM Files?
It is actually illegal to download ROM files. People say if you own a physical copy you can download a copy of the internet. This is not true. The copy you download is an illegally distributed copy and this is not ok. You will need to purchase a Retrode 2 and create your own ROMs using your original games. These ROMs will be backup copies of your already purchased games. You can purchase games from dkoldies.com and lukiegames.com and make your own backup files.
Issues with the Steam Controller not working with RetroArch!
I did have some issues with the Steam Controller bindings when I launched my first game and you will need to modify your Steam Controller to map it to the keyboard inputs used by RetrocArch. I actually just used my DualShock 4 controller via Bluetooth and it worked instantly with no extra setup required.
Problems when running Ice and the consolegrid API!
Originally in my ROM folder I had folder called “MegaDrive” which made Ice report that the consolegrid API was down, but in reality it just didn’t know that MegaDrive was is also called Genesis. I renamed the folder from MegaDrive to Genesis and then Ice worked correctly and grabbed the artwork from consolegrid.
Everything seems correct after running Ice but the games just wont load from Steam!
Test the ROM and the Core directly from RetroArch first, Launch retroarch.exe and make sure it works as expected before running Ice and trying to launch it with Steam. If it wont work just using RetroArch it definitely wont work using Steam. During the setup process I had downloaded the bnes_libretro.dll it took me a good thirty minutes to realise that I had downloaded a NES Core instead of a SNES Core which prevented it from running in RetroArch. I switched to the bsnes_balanced_libretro.dll and then it worked as expected.
Games launch correctly but my controller does not seem to work!
It seems sometimes that if you have a controller plugged in to your desktop PC, RetroArch gives priority to that controller and then the controllers connected to the Steam Link don’t seem to work. Unplug any controllers from your desktop before launching your games in Steam.