This RetroArch Fire TV guide began life as a post on my blog about gaming on the lightest weight Fire TV, the 2014 Fire TV Stick, and kind of grew from there. The popularity of that post is what inspired me to create this site.
RetroArch isn’t in the Amazon app store, so you’re going to have to sideload it. This means you’ll need to enable sideloading in the Fire TV menu: Settings/Device/Developer Options/Apps from Unknown Sources.
ES File Explorer
Probably the easiest way to sideload apps is the ES File Explorer. Once you’ve installed ES File Explorer you have lots of options. My preferred option “Remote Manager.” Opening remote manager will make your device an FTP anonymous server and you can then do everything from your computer. This is far and away the fastest option. From your PC, you can use something like WinSCP as an FTP client, or really whatever you’re comfortable with. Note that if you are using wired Ethernet on a Fire TV device, the IP address may be wrong. When I tested this, ES File Explorer set up its FTP server on my Bluetooth network instead of the wired Ethernet network. I worked around this by unplugging wired Ethernet and using WiFi temporarily instead, and ES File Explorer correctly used my WiFi IP address.
Once you’ve copied the APK to a folder on your Fire TV (I copied it to the “downloads” folder using ES File Explorer, as mentioned above), you can open the APK in ES File Explorer to install it.
The first time you start RetroArch it unpacks everything and creates its basic configuration file, retroarch.cfg. Close RetroArch (“Quit RetroArch) from the main menu), re-enable Remote Manager in ES File Explorer, and use Win SCP to can edit retroarch.cfg in “/Android/data/com.retroarch/files” (or possibly /storage/emulated/0/Android/data/com.retroarch/files if you’re using another tool).
One of the things I did in my retroarch.cfg is switch some file locations from their normal locations to locations that I could access without root. You absolutely don’t have to do this, but if you want to tinker, and you don’t have root, it’s a good idea. Basically I looked for paths:
or on the newer Gen 3 Fire TV:
and changed them to:
or on the newer Gen 3 Fire TV:
You don’t want to change them all, or you’ll break RetroArch, but a few that you might change include:
- joypad_autoconfig_dir – if you want to be able to tinker with controller autoconfig settings easily.
- libretro_directory – if you want to be able to install cores and later delete them
- playlist_directory – manually edit playlists
- thumbnails – again, for manual manipulation
- content_history_path – so you can manually edit
Some things, like the autoconfig files, will need to be redownloaded after you relocate their directory. You can do this in the RetroArch menu.
You probably already have a game controller if you’re reading this, but if not, check out our guide. The first thing you’re going to want to do is make sure your controller inputs work. They *should* automatically work. In older versions, with the Amazon Fire Game Controller, the A/B and X/Y assignments were backwards, matching the labels on the controller instead of the position on the controller. This is because RetroArch uses a Nintendo style layout for its standard RetroPad:
|Look where B and A are on the NES controller|
|Note the Y/B/X/A positions on the SNES controller|
|Gameboy, Gameboy Color, and Gameboy Advance have the same B A configuration as the NES|
This made navigation confusing, and required a correction in the retroarch.cfg file (swapping menu_ok_btn and menu_cancel_btn assignments). This is no longer necessary. The Back key on the controller maps to “Select,” the Menu key on the controller maps to “Start,” and the Play/Pause button on the original Fire controller pulled up the RetroArch menu from with a game. On other controllers, L+R+START+SELECT is the default, but, like everything in Retroarch, you can configure it how you want.
In the settings menu, select inputs, User 1 Binds, and Bind All. This will cycle through all the buttons you can map and you can push the button on your controller to map them. It goes a little fast, so be ready when you start it. You might need to do it a second time once you’ve seen all the options. Finally, you will want to go into the “Hotkeys” menu to set a button for the RetroArch menu, otherwise you won’t be able to get back to RetroArch from your game.
Once you have your controller like you like it, you can actually customize the layout for each core you have installed by loading that core and going back to the input setup.
Another thing you’ll want to do is turn off overlays. Since this APK is intended for all sorts of Android devices, many of which are touch devices, it defaults to turning on overlays for touch based controls. Just go to setting and overlays and switch that off.
I created a standalone directory on my Fire TV Stick for my ROMs. From the default ES File Explorer FTP session, it’s just called /ROMS, from Fire OS’s perspective it’s located at /storage/emulated/0/ROMS. On my Fire TV I did this on my SD Card.
Really Retroarch is a wrapper for running various different emulator cores. You’ll find that there are a plethora of options, and some are better and some are worse for various reasons.
NES (Famicom/Nintendo Entertainment System)
For NES I’m using Nestopia, which has been around for years. It seems to be the best option right now. I still have my original NES. It’s my second console love after my Atari 2600, so I always am always going straight for the NES emulator. I mean, Zelda, Mario, Metroid, etc.
Sega Master System, Genesis, etc.
If you want to play 8 or 16 bit Sega games, Genesis Plus GX seems to be the go-to emulator. I was never a big Sega guy growing up, but this emulator seems to support everything from the original SG-1000 to the Genesis and Game Gear.
Gameboy/Game Boy Color
For GB/GBC I’m using Gambatte, which was far and away the best GB/GBC emulator in the testing I found from about 18 month ago.
SNES (Super Nintendo Entertainment System)
Right now I’m using SNES9x. There is also a SNES9x Next, but the best data I could find, which was 18 months old, showed it not testing as well for compatibility as SNES9x. Still doing more research here.
Game Boy Advanced
For GBA I’m using mGBA, which gets high marks for compatibility.
N64 (Nintendo 64)
I’ve installed Mupen64Plus, but the 2014 Fire TV Stick just doesn’t have the horsepower. On my Gen 2 Fire TV N64 games work like a champ. Of course, my N64 is sitting right under the TV with GoldenEye and Ocarina of Time calling to me…
MAME (Multiple Arcade Machine Emulator)
MAME is, well, really cool. It emulates all SORTS of arcade games. Because of this, your success with running it on the Fire TV platform is probably going to vary a lot depending on the machine that’s being emulated.