Jon Ashcroft

A guide to setting up RetroArch on the Amazon Fire TV

28th October, 2017

Something that I’ve been meaning to do for the longest time was to set up a TV based retro gaming emulator – and it turns out that the Amazon Fire TV is a great device for doing this.

I think that in an ideal world, this would probably have been done on a Raspberry Pi with RetroPie – but currently plugged into our TV is a Chromecast, Now TV Box, and an Amazon Fire TV. I didn’t really want to add a fourth device to the mix, so to keep things central, I’ve opted to emulate on the Amazon Fire TV.

When setting this up – I noticed that there were many tutorials out there for this, but I couldn’t find a specific guide for setting all of this up on an Amazon Fire TVMost of the tutorials were PC based, so I wanted to write a guide for those out there who want to set up retro gaming on the Fire TV.

What you’ll need:

*  I’ve used the Gen 2 box, Gen 3 should be the same – I’m not sure how performance would be on Generation 1 and the Fire Sticks. Kodi version I’m using is 17.4

With that out the way – this is a pretty lengthy guide, so grab some coffee.

Installation

For the purpose of this tutorial, I’ll assume that you already have Kodi installed on your Fire TV, if you don’t – you can follow the same method as described for installing RetroArch below.

Installing RetroArch

RetroArch is a cross platform, all in one emulator. You’ll need to download the latest APK file and sideload it the Fire TV. As of writing this, 1.6.7 is the latest version, but if there’s a newer version available, use that instead.

I personally always use adbfire to sideload. You can find an easy tutorial to do that over at AFTVNews.

Installing Internet Archive ROM Launcher

This Kodi add-on does exactly what it says on the tin. It’s collated ROMs that were released onto The Internet Archive and lets you browse games within Kodi and play them via the cloud.

To install – you’ll need to download zachmorris’ repository zip to your computer, you can then use the ‘File Manager’ option in adbfire to push the .zip to your Fire TV.

Once you’ve transferred the .zip to your Fire TV, you’ll install the add-on by: Kodi -> Add-on Browser -> Install from zip file.

When zachmorris’ repository is installed, you’ll then be able to install the IARL add-on by: Add-on Browser -> Zach Morris’ Add-ons -> Video add-ons -> Internet Archive Rom Launcher.

It might seem a bit weird that it’s listed under ‘Video add-ons’ – but this is just so the add-on has the option to use the cover-art focused ViewTypes in Kodi.

Configuration

Okay, so, two things should have happened now: the RetroArch app will be on your Fire TV homepage, and The Internet Archive ROM Launcher will be under ‘Add-ons’ on Kodi. The endgame of this tutorial is that you’re going to be browsing the ROMs in Kodi, and have them automatically launch into RetroArch to play.

Configuring RetroArch

Before we begin, you need to know that RetroArch’s UI can be a confusing pain in the ass, especially when configuring it for the first time, but the app is very powerful.

What you’ll want to do first is bind your controllers buttons to RetroArch. As RetroArch is multi-platform, the default button bindings can be a bit confusing, especially as RetroArch won’t know which controller you’re using. I’m using a no-name wireless controller from Amazon (it looks sort of like an Xbox 360 controller and works great).

With your controller already paired up to your Fire TV, open up RetroArch -> Settings -> Input -> Input User 1 Binds. By default, I think these are configured for a PC keyboard, so bind the keys to something comfortable for you to navigate the menus with.

Downloading Cores

RetroArch uses something called cores for each console that it emulates, and these cores must be downloaded individually on a per-console basis.

“RetroArch is a modular program that runs emulators and games within its framework as if they were ‘plugins’.
These plugins are called ‘cores’, and you need to install them inside RetroArch to be able to use them.”

While still in RetroArch, navigate to Main Menu -> Online Updater -> Core Updater. Here, you’ll see a giant list of of consoles, most with something following it brackets:

List of RetroArch Cores
List of RetroArch Cores

These are all of the cores that are available. I don’t know if RetroArch configures this list based on the hosts’ platform, so I’m not entirely sure if they’re all compatible for the Fire TV. Nevertheless, you’re going to want to download cores for the consoles you want. For this tutorial, we’ll do the SNES.

You’ll notice that each console may have more than one core, different cores may perform better/worse than others, but I’d recommend only downloading one per console. For SNES, I use Snes9x 2010 on the Fire TV, so click that. You’ll see the download status appear in the bottom left corner.

Configuring Cores

You’ll now have your first core! What you’re going to do next is configure your newly downloaded core, so hit ‘Back’ until you’re at ‘Main Menu’ again. This time, go into ‘Load Core’, locate ‘SNES / Super Famicon (Snes9x 2010)’ and click it.

Now, this is where RetroArch gets confusing: you’re no longer in the RetroArch ‘Main Menu’, you’re in the Snes9x ‘Core Menu’:

RetroArch SNES9x Core Menu
Navigating RetroArch’s Snes9x Core Main Menu

Notice how the bottom left of the screenshot has changed from ‘No Core’ to ‘Snes9x 2010’? That’s how you know which menu you’re in, so any changes you make now will only affect the Snes9x 2010 menu. Let’s say you bind new input keys for the SNES (which we’re about to do) – the buttons you bind here won’t overwrite the input keys you set earlier for the Main Menu. The same goes for future consoles that you add.

Next, navigate to Settings -> Input -> Input User 1 Binds and configure your games controller to match that of your emulated consoles controller. I found that it helped to open a picture of a SNES controller from Google and use that as a reference.

While there are more configuration options you can set for everything else, I’m just using the default settings for everything currently, so hit ‘Back’ until you’re back at the ‘Snes9x Main Menu’ and ‘Quit RetroArch’.

It’s worth noting that – you can also use RetroArch to display and load locally stored ROMs, but I’d prefer to keep media browsing central to Kodi, so we’re going to use Internet Archive ROM Launcher.

Configuring Internet Archive ROM Launcher

We’re at the halfway point now! I know you’re gonna want to just play some games, but we still have some more setting up to do. It’s worth it, believe me.

Open up Kodi and navigate the keypad to the IARL add-on so that the UI has the icon in focus. Don’t open it, instead, press the ‘Menu’ button on the Fire TV remote and select ‘Settings’.

The Internet Archive ROM Launcher is a front-end for ROMs, it’ll categorise everything and display cover art, but it can’t emulate games, so we need to tell it to launch ROMs externally.

In the add-on settings menu, head to ‘External Launchers’ and click on ‘My System Type’  and select ‘Android’.

As we’re running RetroArch on Android, we don’t have to enter values for ‘RetroArch System Folder’ and ‘CFG’ (config) – as the Internet Archive ROM Launcher will automatically populate these using the default locations later.

Next, go down to ‘Setup Wizard’ – for ‘Set me up for’, select ‘Balanced’. I haven’t tried the other options, but I figured that balanced performance should be a good default for most systems, you’re obviously welcome to try the others.

Configuring different consoles

Nearly there – I promise. Remember how in RetroArch we had to set up different configurations for each console? You’ve got to do something similar for IARL, whereby you need to tell each console to launch RetroArch with the correct core.

Open up Internet Archive ROM Launcher, navigate to the SNES and press the ‘Menu’ button to bring up the console’s sub menu:

Internet Archive ROM Launcher console settings
Internet Archive ROM Launcher console settings submenu

We’re going to be configuring the first three options from this submenu. First, click on ‘Update Download Path’ and set this to ‘Default’. This is where ROMs will download/cache to when you play.

Next, set ‘Update Launcher’ to ‘External’.

Finally, click on ‘Update Ext Launcher Command’ – this is where we tell our External Launcher (RetroArch) to load the correct core for our console (Snes9X 2010). So open up this menu and it’ll bring up another list of cores.

External Launchers for Internet Archive Rom Launcher in Kodi
List of External Launcher commands in Internet Archive ROM Launcher

This list will display all available cores for all platforms, not just the Fire TV. Conveniently, the RetroArch ones are prefixed with RetroArch, so navigate to ‘RetroArch SNES9x 2010 (SNES)’ and hit ‘Okay’.

In a roundabout way, we’ve just told IARL: “When I select SNES, I want you to open RetroArch and use the Snes9X 2010 core.” This part needs to be all configured correctly, else your ROMs won’t launch.

You’ll need to do this bit for each individual console that you’ve configured in RetroArch, it’s a bit tedious to do, but once you’ve set it up once, you can go straight into launching games every time.

Playing your games

You’ll finally be able to play games. The Internet Archive ROM Launcher has a huge collection of games – so navigating through lists may take some time.

Some games require you to login to play, so I’d highly recommend registering at archive.org and entering your login details in the ‘Add-on Settings’ menu. (Note that IARL stores your login data in plain-text, so use different login details to your usual).

As an added quirk – RetroArch needs to not be running for Internet Archive ROM Launcher to launch games correctly. From the documentation:

“This is a limitation of the Retroarch command line in Android. To workaround this, I recommend setting up a hotkey / button combination to exit Retroarch when you exit a game – that way the next game you try will launch correctly.”

From now on, when you select a game, you’ll have the option to ‘Download’ or ‘Launch’ the game. In most scenarios, you’ll be fine with just ‘Launch’, as the ROM’ll be cached, though ‘Download’ will obviously allow for quicker launch. When you ‘Launch’ the game, it’ll open up RetroArch.

Super Mario All-Stars on Kodi Fire TV
Super Mario All-Stars on Fire TV via RetroArch

Wrapping things up

You should now have emulation on your Fire TV! I know that the setup is incredibly tedious, but I think that the results are absolutely worth it. You just have to be patient and experiment with the different options. It’s not as intimidating as it looks, and you will get it working.

You can use the same steps as above to emulate other consoles. I’d recommend Googling around to see what cores and configurations people are using and follow suite – or experiment! It might be good to use trial and error so that you can learn for yourself.

So far, I’ve played SNES, PS1, and N64 on my Fire TV with excellent performance. The way I see it is that you only have to do the tedious part one time. Once you know how to set up RetroArch and Internet Archive ROM Launcher, I think that setting up a new consoles is relatively quick.

If you’ve read through this whole post – thank you! It was a long read. Now go play some retro games, you deserve it.