FollowTrainTV

Twitch Tutorials and Streaming Advice

Steam Link with RetroArch + Ice, running emulators for SNES and Genesis in Big Picture Mode

Sharing is Caring!

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:
E:\SteamLibrary\Emulator\RetroArch
E:\SteamLibrary\Emulator\Ice
E:\SteamLibrary\Emulator\ROMs

Inside ROMs I have two more folders which contain some ROM files:
E:\SteamLibrary\Emulator\ROMs\SNES
E:\SteamLibrary\Emulator\ROMs\Genesis

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.

RetroArch GUI

RetroArch GUI

Navigate using your keyboard and follow the steps below:

Download a Core:
Settings tab > Online Updater > Core Updater > bsnes_balanced_libretro.dll

Once you have a Core downloaded you will need to load the Core.

Load a Core into RetroArch:
Settings tab > Load Core > bsnes_balanced_libretro.dll

Once you have a Core loaded you can now load a ROM file.

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.

config.txt
consoles.txt
emulators.txt

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.

config.txt

[Storage]
# My ROM Files:
ROMs Directory=E:\SteamLibrary\Emulator\ROMs

[Grid Images]
# The default is ConsoleGrid (consolegrid.com/api/top_picture)
# If this field is left blank, Ice will not attempt to download images
Source=consolegrid.com/api/top_picture

consoles.txt

# This [WORD] represents the category in Steam
[Super Nintendo]
# nickname must match you folder name in your ROMs folder
nickname=SNES
# This is the name you specify in emulators.txt
emulator=RetroArch_SNES
# This is the file extension of the ROMs in the ROMs folder
extensions=sfc

[Sega Genesis]
nickname=Genesis
emulator=RetroArch_Genesis
extensions=md

emulators.txt

[RetroArch_SNES]
# Location of RetroArch.exe
location=E:\SteamLibrary\Emulator\RetroArch\retroarch.exe
# Location of SNES CORE and some launch options
command=%l -fullscreen -L cores\bsnes_balanced_libretro.dll %r

[RetroArch_Genesis]
location=E:\SteamLibrary\Emulator\RetroArch\retroarch.exe
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.

Ice for Steam Link

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.

Steam Link with RetroArch and Ice running in Big Picture Mode

Steam Link with RetroArch and Ice running SNES Games in Big Picture Mode

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

Wireless SNES ControllerI 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.



49 Comments

  • Joe says:

    This is great thanks. Is there anyway to exit the game without using the keyboard though?

  • Shaun Carr says:

    so i followed this exactly. games are showing up in steam but failing to actually launch. no message just games never launch.

  • […] World, Rock and Roll Racing and The Legend of Zelda: A Link to the Past. Recently I worked out how to stream RetroArch to my television and now I can play Super Nintendo classics in my living room with a friend like it was 1991. I mean […]

  • El Gringo says:

    What he means is that to close a game you need to press “esc” on the keyboard. There no close button. You can just close it by using the big picture overlay.

  • Chris says:

    Hi,

    thank you for this great tutorial, everything exept one little thing wokrs perfekt and it is a great way to play our old games =D

    One problem i struggle with are the covers, they work perfectly on my stem pc but the steam link in my living room won´t show me the covers… can you tell me how i can fix that?

  • SkorcherX says:

    Are you able to remap your DS4 controller from within Steam Link? I am not able to. And because of this the roms are unplayable. Sure they load and the start button works… but by default the “A” button is mapped to “ESC”. This will exit retroarch if pressed. Have you been able to work around this? If so please let us know how.

    • Jojoba says:

      Hi,
      Have you been able to fix the issue with the DS4 controller? No matter how I reconfigure the inputs in Steam, I still have the issues you described, with the A button exiting retroarch, etc.
      Thanks!

  • Do I need to add RetroArch as a non-Steam game?

  • pv2b says:

    Hi! Why not recommend 7-zip (from http://www.7-zip.org) to unpack the .7z files, which is open source and free of charge, rather than the commercial WinRar software you end up having to buy if your trial expired? Makes sense since the .7z files were actually created by 7zip.

  • sn0ke says:

    Hey there. Thanks for the tutorial !
    Did you manage to get the SFC30 working ?

  • Phil says:

    Hey, Great tutorial, thank you for taking the time to do it, everything works like a charm. Quick question, I also ended up getting the 8bitdo controller. However, I am running into trouble when it comes to mapping the controller in retroarch via the steam link, any ideas what I could be doing wrong? Again, many thanks. Best, Phil

    • FiveManDown says:

      So I tried this weekend again with my 8bitdo controller direct to the Steam Link and I can no longer seem to even see the controller, do you have the ability to see it in the controllers section of the Steam Link?

      • Philipp Kohl says:

        yea, it recognizes it without a problem, as a bluetooth snes 30 controller. however, the button mapping is all messed up when I start retroarch. This is probably because it is just being streamed from my computer, and I am connected to my steam link, retroarch just registers it as a generic controller. I haven’t found a workaround yet. Regarding your problem, maybe download the latest update for the steam link as well as the latest firmware for the controller? Also, I start it by just pressing start (Mode 1 I think). Good luck, please let me know should you figure out something, I will do the same.

    • FiveManDown says:

      I tried again today I press Start+R1 and the controller goes into joystick mode and it works!

  • Peter says:

    Great tutorial! Have you been able to get the SFC30 working over Bluetooth? I have it working perfectly over wired using VirtualHere (getting the ‘back’ button to register in BPM was a challenge, however) . Wired without VirtualHere and Bluetooth don’t really seem to work. Inputs are registered, but not the right ones. Rebinding the inputs in RetroArch doesn’t work either. Some buttons are not recognized and some allow you to rebind, but then don’t seem to register.

  • Bob says:

    Thanks so much for this amazing post! It worked perfectly for me.

    I’m using an Xbox 360 controller plugged in to my steam link and am experiencing some input lag. I noticed you are using the dual shock controller. Did you experience and lag with the controller. I was playing Super Mario World.

    Thanks again!

  • Lee says:

    Great tutorial! Thanks so much. One Question: Is it necessary to add the file extension line when editing consoles.txt? It seems like the examples given in the consoles file I downloaded with ice does not show that. I ask because some of my SNES roms have differing file extensions (.srm vs .src). If so how does one account for multiple file types?
    Thanks!

  • Jorchking says:

    Is this useful for GBA, NES , Master System and N64 too?

  • Jimbo says:

    I’m running RetroArch version 1.3.6. Everything has been setup as instructed. I am able to launch the rom in Retroarch, but Steam will not launch the rom. I’m guessing something is wrong with the “emulators” ice file. Feel free to critique.

    consoles:

    [Sega Genesis]
    nickname=Genesis
    emulator=RetroArch_Genesis
    extensions=md

    emulators:

    [RetroArch_Genesis]
    location=E:\SteamLibrary\Emulator\RetroArch\retroarch.exe
    command=%l -fullscreen -L cores\Sega MS/GG/MD/CD (Genesis Plus GX) %r

    Any input would help. Thanks!

  • Marshal says:

    Any luck with the 8bitdo controller? Would love some tips on making that work for this steam link set up.

  • Bob says:

    Did you get the 8bitdo SFC30 to work?

    • FiveManDown says:

      So when I first got it, it worked. Then I had issues with steam link and updated. Then it didn’t work and this is about 6 months ago. How about you did you get it tot work?

    • FiveManDown says:

      I tried again today I press Start+R1 and the controller goes into joystick mode and it works!

      • Bob says:

        Thank you! How did you set it up?

        I configured it via USB on my PC (in retroarch) before connecting the controller to the Steamlink via Bluetooth. This way it does work while playing SNES-games via Steam but it seems that Steam switches the A- & B-button which is quite annoying (and I cannot navigate the Steam-menu with the controller).

        Configuring the controller directly via Steam I can navigate through the menu but cannot use it properly while playing SNES-games…

        Any idea / advice would be greatly appreciated. Can we use 2 8bitdo controllers while playing via Steamlink?

  • eXoRt says:

    I can’t get my xbox one controller to work with retroarch in steamlink. It’s working fine from steam or retroarch from my host PC.

    All the emulators within retroarch are doing this. I’ve try using the -D option, no luck. Any clues ?

  • sean says:

    worked out ice and set up steam, all the roms loaded into shortcuts on my library but i cannot seem to start the roms from steam, it gives me an error message.

    [RetroArch_SNES]
    location=C:\Games\retroarch\retroarch.exe
    command=%L-fullscreen -L cores\bsnes_balanced_libretro.dll %r

    [RetroArch_N64]
    location=C:\Games\retroarch\retroarch.exe
    command=%L-fullscreen -L cores\mupen64plus_libretro.dll %r

    [RetroArch_Genesis]
    location=C:\Games\retroarch\retroarch.exe
    command=%L-fullscreen -L cores\genesis_plus_gx_libretro.dll %r

    do you see anything wrong? they load in retroarch easily, and ice loads them in but they wont start through steam

  • Tobias Funke says:

    So how do you save your games like this? Do you need to get a keyboard everytime? I feel like I’m missing something simple, but I can’t figure out how to get to the save state options using a controller.

  • vertigo says:

    I’ve got an issue with controller binds using DS4 in retroarch/any emulator. When I go to bind keys X is picked up as space, O as escape etc presumably because it’s xinput? In any case some buttons don’t get picked up (i.e dpad) and I can’t bind games to make them really playable. I’m running 4 DS4s connected via BT to the Steam Link.

    Any ideas? I’ve searched a lot but keep coming up with dead ends.

  • Sean McKnight says:

    I’m having an issue getting the games to launch from Steam and I am hoping you could give me a hand!

    The games are being added into my steam library but when I click on Play, nothing happens. It just looks like it is loading for a moment then stops, and that’s it.

    These are my settings in Ice –

    config.txt

    [Storage]
    ROMs Directory=D:\Program Files (x86)\Steam\Emulator\ROMs

    consoles.txt

    [Super Nintendo]
    nickname=SNES
    emulator=RetroArch_SNES
    extensions=sfc

    [Nintendo 64]
    nickname=N64
    emulator=RetroArch_N64
    extensions=n64

    emulators.txt

    [RetroArch_SNES]
    location=D:\Program Files (x86)\Steam\Emulator\RetroArch\retroarch.exe
    command=%l -fullscreen -L D:\Program Files (x86)\Steam\Emulator\RetroArch\cores\bsnes_balanced_libretro.dll\bsnes_balanced_libretro.dll %r

    [RetroArch_N64]
    location=D:\Program Files (x86)\Steam\Emulator\RetroArch\retroarch.exe
    command=%l -fullscreen -L D:\Program Files (x86)\Steam\Emulator\RetroArch\cores\mupen64plus_libretro.dll\mupen64plus_libretro.dll %r

    If you can see anything wrong that may be causing my error, that would be awesome! Thanks

  • pixr says:

    Thanks for this awesome tutorial, worked perfectly! Super happy with my steam link now. Do you have any other recommended emulators (core) I should choose? And Can I copy over the commands like full screen and such to every emulator?

  • Scott White says:

    anyidea on the code to use for the nintendo 64 core can not seem to get it to launch from steam the game appears in steam library but wont launch

  • Ma says:

    ConsoleGrid doesn’t have images for a lot of games. e.g. Super Mario World, Link to the Past, etc. Is this a recent thing?

  • Gwokk says:

    Great guide!

    Yeah consolegrid seems to be basically down, it’s not letting me upload images.
    Core games like goldeneye007 on N64 don’t have banners

    How do you add a custom banner from a file on the hard drive?

  • Cyril says:

    How were you able to get your PS4 controller to work with steam link and RetroArch? I was able to get everything working with an xbox 360 controller, but when I use a ps4 controller the keyboard mouse binds take over on the PS4 controller and it refuses to use xinput instead?

  • Mike says:

    When I try to run Ice it opens, appears to run something for a fraction of a second, then immediately closes. I then go to Steam and there has been no change in Big Picture mode (or at all).

    This is distinct from the “Steam is running” error, so I’m really not sure what it could be!

  • Jim says:

    Seems to execute fine, but when I click on the shortcuts in Steam I get the following Windows error: “This file does not have a program associated with it for performing this action. Please install a program or, if one is already installed, create an association in the Default Programs control panel.”

    I am using the .dll’s specified in my folders, but is that not the right executable?

    Thanks for any help at all!

Leave a Reply

%d bloggers like this: