RetroArch: The Emulation Ecosystem Powering Consistency & Customizability
Written by Racketboy in collaboration with Samurai Megas and Ray Commend
I’ll never forget the experience of discovering classic game emulators in the late 90s and getting some of my old favorites loaded onto my trusty Windows machine. It came in especially handy in my college days when I didn’t have my old systems handy. For the longest time, I was quite content with the icons belonging to SNES9X, Kega Fusion, and NESticle ready to open up a world of nostalgic gaming at the click of a mouse.
A Vision for a Standardized Front End for Retro Gaming
As I became more of a “grown up” with an apartment, I began tinkering with Windows Media Center PCs. These setups were great for playing Xvid formats of movies and TV shows connected to a TV. I also dreamed of a future where emulators from different systems could seamlessly be loaded up via remote. Ideally, I envision browsing a classic game library on different types of devices the way we all browse Netflix for something to watch.
While the classic gaming utopia experience hasn’t materialized just yet, a lot of progress has been made in the last couple of decades. I previously covered the wonder that is the MiSTer FPGA project which is one of the most accurate ways to experience a lot of classic games outside of original hardware. And while the MiSTer project is constantly developing and supporting more platforms and arcade games, it is limited to a strict set of FPGA hardware. In turn, MiSTer has limitations on what platforms it can emulate and on what types of hardware form factors. For this reason, traditional software emulation still has a place in this world.
Circling back to the concept of having a central interface to browse and play classic games, both MiSTer and other software front-ends like RetroArch have made strides to make my dreams a reality. There have been other front ends over the years such as Maximum Arcade, which I used on Windows Media Center back in the day and OpenEmu which I have installed on my current MacOS machines. As great as those other solutions were for simplifying interfaces, RetroArch and the related Libretro project have aimed to not only make a useful and customizable interface, but utilize that very system on the more diverse set of modern tech devices we have in our reach.
How RetroArch Works
Instead of only being an interface that organizes your games and then acts as a program launcher (which is why some projects remained exclusive to either Windows or MacOS), Libretro (which is an underlying layer in RetroArch) has created a standard way that emulators can plug into its front-ends (such as RetroArch) and increase the reliability on different platforms over the years.
GammaFire on Reddit has a good overview of RetroArch’s function: “RetroArch is basically a multiplatform program that can be used for emulating a massive amount of different platforms, with the help of cores that developers make in order to be able to load different ROM’s for different systems. Think about RetroArch as a skeleton, and the Cores as the brain for emulating a system.”
To allow this “skeleton” to work together with the “brain”, the Libretro API system could be thought of as the nervous system and muscle that connects the structure to the function that the gamers interact with.
Also, from Libretro’s site:
“When you choose to use the libretro API, your program gets turned into a single library file (called a ‘libretro core’). A frontend that supports the libretro API can then load that library file and run the app. The frontend’s responsibility is to provide all the implementation-specific details, such as video/audio/input drivers. The libretro core’s responsibility is solely to provide the main program. You therefore don’t have to worry about writing different video drivers for Direct3D, OpenGL or worrying about catering to all possible input APIs/sound APIs/supporting all known joypads/etc. This is none of your concern at the libretro core implementation level.”
Consistency Over Multiple Platforms
One of RetroArch’s main selling points (and its pitch for improving the ecosystem in the future) is standardizing front-ends and back-ends of an emulation experience. This broad point has a handful of benefits to consider:
For Front-End Experience & Developers
One of the biggest overarching goals of the RetroArch project is bringing a consistent experience to both emulator developers and the users when they want to use different devices — whether its a Raspberry Pi or Playstation 3 at home or a PSP or Nvidia Shield on the go (and there’s plenty of other devices supported as well).
“Any project that is ported to work with this API can be made to run on ANY libretro frontend – now and forever. You maintain a single codebase that only deals with the main program, and you then target one single API (libretro) in order to port your program over to multiple platforms at once.”
From GammaFire on Reddit:
“RetroArch and its Cores need to be modified for every device they will run on, so not every Core is available on every system. Hence why the Vita only has like 18 Cores (and not all of them work properly yet).”
Hacks / Features for Further Consistency and Automation
Having the same family of software managing emulators, interfaces, and configurations across multiple devices opens up some interesting possibilities for making an active retro gamer’s playing productivity a bit more efficient (after some initial legwork).
Syncing ROM Folders and Save Files
This video tutorial from Vimitation does a good job of running through the relatively simple (but mildly time-consuming) process of using Google Drive to keep your ROM and Save State files synced between devices.
Other solutions out there to get a similar setup involved using Dropbox (like DropSync). There’s a handful of other hacks and software solutions for other cloud storage systems if you look around. But in the end, the process is relatively similar regardless.
One thing worth noting is that for save states, you’ll need to use the same emulator cores on the different devices for the save states to be compatible. This could be a problem if you’re using something like a high-accuracy BSNES emulator on a PC or high-end Android device but need to use something like SNES9X on a less-powerful Raspberry Pi.
I should also note that you could accomplish some of this functionality using individual emulators as well, but it could take some extra legwork.
Exporting/Importing Config Files for New Device Setups
This trick requires a bit more legwork to get set up, but Redditor AbsoluteChungus1 shared his interesting automation project to configure RetroArch on a new Android device and automatically download his preferred ROMs, all with a QR code.
“I’m using TagSH to execute a script on my device. The QR code contains a script that takes the latest retroarch.cfg file on my GitHub and saves it to my device. Then it downloads my preferred ROMs from my PRIVATE GitHub repo to my external storage.
So every time I want to configure my RetroArch setup on an android phone, I just scan that QR code and it does it for me, exactly the same, every time.”
How the RetroArch Experience Differs on Different Devices
Even though there are definite benefits of having consistency between hardware devices, there are substantial differences between real-life experiences on hardware of different capabilities and maturity.
One of my favorite retro gaming individuals to follow on Twitter and Youtube, Ray Commend, shares:
“The Shield is much more powerful than the Pi’s and the software is more mature on it. The Pi4 is still relatively new in terms of any kind of emulation support. For example, one of the cores for SNES is SNEX9x, which as you already know has been around since the 90’s.
Stuff like SNES9x may be available on all Retroarch builds for example, whether it’s a Nvidia Shield, Raspberry Pi, PSP, Wii, ect. Higan would probably only show up on a Shield, a PC, or a powerful Android device. Usually, RetroArch’s built-in core downloader will only show you what should be compatible with your device. [In that way] it’s similar to MiSTer. Mister controls the interface for the cores. That’s also what RetroArch does.”
While there are many cores/emulators (and variants of each) to choose from for the most popular consoles like the SNES, RetroArch will blacklist those that won’t run well on your hardware, and it won’t make a recommendation for you. You may need to do a bit of research to figure out which one might be best.
You can assign a default emulator/core for a given console, but you can also load a different emulator for a certain game if you find that there are issues using the default.
Enhancing The Gameplay Presentation
In addition to some consistency, some of the coolest aspects of RetroArch are how you can customize the presentation of the game emulation if you’re up to some configuration. Here’s some of the more interesting opportunities for enhancing game presentation.
Shaders are resource-efficient graphic filters that can improve the rendering and presentation of classic games. Some of the most interesting ones have been used to replicate the look and feel of classic CRT monitors or even the screen characteristics of the classic Game Boy or other retro handhelds. You are also able to stack shaders to create a custom effect.
You can learn more of the Shaders basics on RetroArch’s dedicated page for the topic.
These are somewhat similar to things like frames on the Nintendo Classic devices and Nintendo’s Game Boy Player or Super Game Boy frames that provide some stylistic or nostalgia-fueled backdrops. Unlike those, the possibilities are much wider due to the enthusiast community.
There was a cool pack of Console-inspired TV bevels that were shared on Reddit a few months back. There are also a few other TV-inspired ones mentioned in the comments of that Reddit thread.
What’s The Difference Between Shaders & Overlays?
Dankcusions on Reddit handled this quite well:
“Overlays are just that – images are displayed over video output. An image with black horizontal lines, and transparent lines in between, is a rudimentary scanline effect.
Effectively no performance hits have to be perfectly aligned for your target system (ie, you’ll need a separate image for every different resolution of every different system, which makes using this approach in something like MAME, with many different systems of many different resolutions, impossible) shaders are graphical programs that manipulate the pixels. they can make scanlines, they can make a ‘curved’ TV screen effect, they can do (almost) anything, at a performance cost.
Scanline effects are calculated on-the-fly, so it looks at how many lines as being displayed, and creates the scanline to suit. no tweaking needed. Many more effects are possible. subtle pixel blending, color tweaks, etc, to more extreme things like making NES games 3D
Performance takes a hit if you choose one that is too heavy for your GPU. A popular shader on the Pi is CRT-Pi, which does scanlines, an (optional) curved screen effect, and several other things. It’s also able to do this whilst having no measurable performance hit in almost every scenario on a pi2, and probably every scenario on a Pi3. Scanline overlays are a complete ball-ache, and only do one thing. you can get away with it if you’re only running a couple of systems and don’t mind tweaking.”
Nice Additional Features
If the above items aren’t enough to pique your interest in RetroArch, there are some additional features that might sweeten the deal for you.
Online Multiplayer / Netplay
As I write this introductory guide, we are in the middle of a strong stay-at-home culture. Video games have been getting a lot more rotation time as more of us are indeed spending more time at home. However, having more isolation makes online multiplayer all the more appealing. Obviously, most classic games don’t support online multiplayer natively, but RetroArch helps fill in the gap.
RetroArch’s official Netplay page shares,”Host or join a network gaming session. Rediscover the joy of multiplayer games using RetroArch’s builtin netplay lobby. You can also use the spectator mode to watch others play… RetroArch relies on peer-to-peer networking to reduce network latency and ensure the best possible experience.”
It’s worth noting that RetroArch users will need the exact same version of the ROM of the game and it’s highly recommended to use the exact same core for the system (and there’s some cores that don’t support Netplay).
The device platform (PC, Raspberry Pi, Android, etc) doesn’t need to match up for it to work — that’s where the RetroArch platform really comes in handy! However, the most consistent elements you have in the multiplayer setup, the more likely you are to have an optimal experience. You can either use RetroArch’s lobby system or you can connect by an IP address.
For those that would like to learn more about this feature, I’d recommend checking out Mr. Sujano’s video going over the feature and its setup.
Playlists & Favorites
When you have a massive collection of ROMs and ISOs spread along a generous buffet of systems you can emulate, you increasingly need some way of keeping track of games you enjoy the most and are in the middle of playing. Something like Netflix’s “List” and “Continue Watching” is a great setup for this situation, but RetroArch gives you the opportunity to build a similar setup via playlists and favorites.
RetroArch touches on the basics on their site: “You can add new tabs to XMB by scanning your game collection and creating playlists. Games will be sorted per system. You can also write playlists manually to display a list of your favorite games, or any list you can think of. Playlist entries can be associated with a database entry to display the metadata of the game: Release Year, Genre, Developer, Number of Players, etc.”
Archades Games has a solid Youtube video going over how this process works along with some of the challenges you might run into.
Screen Recording & Streaming
If you’re into recording or streaming your retro gameplay, RetroArch has some native functionality built into the system. Granted, a lot of dedicated retro gamers would probably rather stream off real hardware, but it’s a nice option if you’re interested. See RetroArch’s official page for Recording & Streaming.
If you’re into unlocking achievements within your games, RetroArch has native integrations with the RetroAchievements service.
Innovative Features in Development
The RetroArch team is not content with what they have baked in already. There are a handful of promising features that are in a beta phase, but show some interesting prospects of what is to come to the world of retro game emulation.
In decades past, we retro gamers mostly dealt with cartridge ROM files for emulation, but disc-based systems are increasingly becoming heavier in our emulation rotation. Unfortunately, those games also result in very large file sizes.
This new feature supporting direct reading of many types of discs as opposed to ISO files will be quite handy if you want to play original media or happen to have disc backups or prefer to conserve internal storage.
Live Translation Engine
There’s lot of great games out there that never made it outside of Japan and can have quite a bit of text that can make things challenging for those that don’t speak the language. As many retro fans know, there are many ROM translation projects out there, but RetroArch looks to actually automate some of these efforts on the fly with its translation engine. RetroArch’s goal is to dynamically translate in-game dialogue and menus.
RetroArch also will offer two modes for this translation: an Image Mode that tries to replace the text onscreen with the output text and a Speech mode that will dictate the dialogue to your native language. (So this doesn’t only benefit English speakers)
Even if this doesn’t work perfectly, you have to admit this is quite impressive!
Multi-Touch Light Gun Controls on Android and iOS
With RetroArch 1.7.8, it is possible to use your fingers as a lightgun on iOS and Android. Not only that, but it supports multi-touch too!
Some emulator users still prefer the old-school method of launching individual emulators of their choosing, but it’s cool to see some standardization efforts to make things easier for the general retro gaming public.
Getting Familiar and Set Up With RetroArch
If this guide has got you interested in RetroArch, but want to see some of the setup in action, either to build familiarity or to give you a little hand-holding while setting up your own emulation station, a guide is always handy.
However, with so many devices and possibilities on RetroArch, it’s not especially feasible for me to include a in-depth guide on setup. However, I’ve screened a handful of existing tutorials out there that will both get you familiar with the system, but also give you some tips and tricks to get yourself up and running.
It’s worth noting that I am nowhere near an expert on RetroArch myself, but just trying to provide a useful jumping-off point for those interested.
If you happen to know of another good tutorial that would be a good fit to include here, please let me know and I can consider adding it to this section.
Finding the Best Cores for a System
One of the downsides of RetroArch is that there are SO many cores supported for the most popular classic systems such as the NES, SNES, and Genesis/Megadrive that it can be hard to know what core/emulator is best. This decision process is complicated further by the many hardware configurations on personal computers and mobile devices.
For these more established emulators you probably want to try a few different ones with games you’re familiar with to see which ones seem to work the best. If you have a lower-end device, you might want to lean towards “performance”-friendly configurations while more cutting-edge and powerful devices can go for more “accuracy”-driven emulator versions.
However, if you do need some solid recommendations to start you on your journey (based on a couple Reddit threads on the topic),
- NES: Mesen
- SNES: Snes9x or Higan (depends on strength of device)
- GB/CBC: Gambatte or SameBoy (a new-ish accuracy-focused GB core. bsnes even uses it for its Super Game Boy support! – @sjake333)
- GBA: MGBA
- Sega Genesis/MegaDrive + Master System & Game Gear: Genesis Plus GX
- PC Engine/TG16: Mednafen Supergrafx
- PS1: Beetle PSX HW
- N64: ParallelN64 or Mupen64plus (careful, must have “GL” in Video Driver Options)
RetroArch May Not Be For Everyone
While there are definitely some benefits to using RetroArch for certain setups, it’s not necessarily the best fit for every gamer or for every setup.
Especially if you have been familiar with running “standard” emulator programs on a PC for a while, you might find RetroArch more work than it’s worth.
For example, one of your longtime Racketboy Forum members, samsonlonghair commented:
“I’m more familiar with older emulators like SNES9x or GENS that just emulate one system (or a group of similar/related systems like KEGA Fusion). I’ve certainly heard of retro arch, but I fail to see the advantage of emulating dozens of different, unrelated systems in one application…
Every time I try to dive into [RetroArch], I find myself saying, ‘this would be so much simpler if I used such-n-such emulator,’ or, ‘why the heck do I need to fool around with cores anyway?’ I guess I’m getting old. I remember when I was explaining to other people how to use emulators. Now I’m the one scratching my head.”
In fact, if you are running emulators on a PC or Mac (and are not worried about consistency of experience on other devices), there are often solutions out there that provide a more polished experience. Personally, I use OpenEmu on my Mac and solutions like Maximus Arcade and Hyperspin are still around on the PC as well.
Another racketboy member, nightnr shared his thoughts:
“For older systems (PC, PS2, PSP, and Xbox) I’ll use the old stuff, even if RetroArch has been offered for them. RetroArch for PS2 was a disaster for me (but then it is pretty low-end for this).
Personally, I really only would use RetroArch for [a hacked] Wii U and for PS Classic (and only because it seems to be the only real option for those systems). But it does seem a bit convoluted in practice. Dedicated emulators just have a better feel and ease of use to them, even if it’s not a Swiss army all-in-one utility program.”
Even though he’s not a big fan of RetroArch, he does share some redeeming factors and benefits that the system delivers:
“Oddly, Retroarch could also be most helpful for when you DON’T put a lot of ROMs on there. You just have an “everything” emulator for when you want to try games at random and need it to play without searching for other programs to make them work.
Finally, I think Retropie is maybe the biggest reason for this. A Raspberry Pi for emulation really isn’t designed for individual emulators. I still haven’t set mine up for that purpose yet (and maybe never will).”
What are the best Hardware/Devices for RetroArch?
With RetroArch being supported on so many devices, one can’t help but wonder which devices are most worth the effort of trying out. Some of the most helpful options on the matter, I have found on Reddit — here’s some comment excerpts from this Reddit thread…
“A strong PC running up-to-date hardware/software is going to be the most compatible and flexible, but there are a lot of other good platforms/experiences for special use-cases. For example RetroArch on Wii is very good for use with CRT TVs, and RA on 3DS is good for portable gaming, etc.”
Another member replied with
“If you’re going handheld I’d go for a Switch before 3DS, especially if cash isn’t a problem. I’d even say a psp or vita before 3DS retroarch because it is terribly confusing on 3DS. However if you want a portable powerhouse I’d look into a hackable switch, or an Android system for simplicity’s sake.
EDIT: gpd xd plus is a good android handheld I’d recommend, not sure if there’s anything else more recent.”
“I’ve tested it on Vita, 3DS, Wii, PS3, SNES Classic, Xbox 360, Wii U, and Raspberry Pi. The SNES Classic and Pi versions are the easiest to maintain and use. The others work but are either harder to maintain (Xbox 360 which has not gotten an update in forever) or crash often (Wii U and PS3). The Vita and 3DS are limited in storage and power to load and run arcade games quickly and effectively.”
The controller configuration can also figure in heavily into how natural your setup and configuration may feel. One of the nice things about RetroArch is that it autoconfigures a universal 4 button control scheme, designed to be easily used with modern controllers such as those in the XBox and Playstation families. This configuration works very well for emulating systems like the SNES, NES, original Playstation and many retro consoles that have less buttons. However, for die-hard fans of systems like the Sega Genesis or Sega Saturn that have a 3 or 6-button layout, additional configuration can be quite frustrating.
Racketboy member SamuraiMegas shared :
“I personally had a bit of trouble setting up a Sega Saturn controller through a Mayflash adapter as a six button controller. I couldn’t get it to use all 6 buttons for Genesis games no matter what I tried, and eventually gave up and had to use a separate emulator. It worked fine as a 4 button controller, but my poor C and Z buttons were left unused.
The RetroArch UI may also feel a little too controller friendly at times if you’re used to other emulators on the PC; it took me a bit to realize that to change the input device on a controller, you have to use left and right on the keyboard, instead of having a drop down menu which lists everything.”
The Ideal Use Cases for RetroArch Right Now
While I am only dipping my toe into the RetroArch community right now, I’ve been talking about it with a lot of experienced retro gamers that have been tinkering with it for years. I’ve noticed a lot of common themes in the conversations and I’ll try to summarize the themes here.
High-End Emulator Boxes For Those That Enjoy Tinkering and Customizing
Some of the most impressive and useful RetroArch setups are either modern personal computers (some in console-like cases) that the owners have spent a lot of time configuring and fine-tuning.
Of course, these machines often will allow you to play the most demanding emulation cores. To really get the most out of RetroArch as a whole, there is typically a lot of initial setup and refinement. This includes things such as controller mapping (perhaps even for different controllers) and setting up all the filters, overlays, and other features that interest you.
For those that look at their emulation boxes as one of their main gaming devices (perhaps the primary “retro box” to accompany their modern consoles) this may be worth their effort. However, this could be a bit much for somebody that looks at emulation as merely a supplement to their dedicated retro hardware.
However, there are some RetroArch setups that community members have automated a bit more, which leads us to….
The Playstation Vita (And Any Others with Strong Curated Environment)
There are also some devices that have a strong following for emulation and certain individuals have made a heavily-curated solution for that particular device. One such example is the custom Playstation Vita build put together by Alex Martens (aka CrazyMac). This well-designed solution includes playlists, bezels, artwork, and the best core selected for each system. It really minimizes the work it takes to set things up well.
According to one of my favorite Instagram personalities, Veddermandenis (who I interviewed about his handheld/emulator/display shelf setup), “every game has a custom bezel and it has every system you can think of… There’s no assembly required apart from following the included instructions, but it’s just copy and paste some folders, really.”
This custom Vita pack is offered in both a Lite and a Mega version. The Mega version adds some CD systems like the Sega CD/Mega CD and the PC Engine CD (both full set) and some PS1 games as well… I never really liked RetroArch really. Always felt overwhelming, but not anymore!”
Between the high level of polished presentation and taking much of the legwork out of the setup, this can really be an attractive approach to dipping your toes into the RetroArch world or give yourself a solid mobile emulation solution.
The Raspberry Pi
The Raspberry Pi hardware is a popular platform for a low-cost emulator box. Unlike most other devices, the Raspberry Pi isn’t really set up well to run individual system emulators.
RetroPi is the most popular retro gaming operating system for the Raspberry Pi and RecallBox is another up-and-coming OS for those interested in retro gaming. While many of the internals of the OSs may differ, both use RetroArch with EmulationStation as an additional front-end.
Because of this integration, if you have a Raspberry Pi as one of the pillars in your retro gaming setup, having other devices running RetroArch could be appealing as well.
Hacked Consoles & Handhelds Where RetroArch is the Primary Solution
As mentioned above, some consoles such as the Wii U and the Playstation Classic have RetroArch as their only solid solution for getting emulators up and running easily on a hacked console. RetroArch can also be handy if you want to emulate multiple systems on “Mini” consoles like the NES Classic, SNES Classic and the Sega Genesis Mini. Personally, I just like to stick with the default interface and emulate extra ROMs for the system the box was designed for, but these little devices can be a decent introductory RetroArch box. These consoles have HDMI output and USB ports, so they are a good alternative to a Raspberry Pi.
The Nvidia Shield series are great Android devices that are intended to be used for gaming. The Shield Portable was an interesting device that was released in 2013 and essentially had a screen built into a controller. Two years later, Nvidia released the Shield TV that works as a micro console. They have since produced a refreshed version in 2019 with more modern processors.
Ray Commend shares his love for the Nvidia Shield for emulation use:
“It’s small, powerful, versatile, has its own controller, and scales up to 4K. It can even do some Saturn, Dreamcast, and Gamecube emulation, though such emulation is usually playable at best. Not sure how accurate it is based on the complexity of the original hardware.”
In case you’re interested, you can find his late 2018 video showing off Saturn emulation running on his Shield in 1080p.
RetroArch’s Impact on the Emulation Community
As I alluded to above, while there is a dedicated group of RetroArch and RetroPi enthusiasts , there are also many experienced gamers that don’t quite think the software lives up to the hype. In reality, RetroArch’s value is truly dependent on a gamer’s goals and preferences.
Regardless of where you land personally, there are things that RetroArch has brought to the emulation community. I will share this brief exchange on Reddit to help sum it up…
“How has RetroArch changed the world? It is just a frontend for all the hard work of the devs for the emulators which do literally all of the important stuff. No offense to RetroArch, even though I actually don’t like it that much. I prefer LaunchBox with the individual emulators unless I have no choice.”
“I’m glad you asked.
- Retroarch is portable. I’m able to copy and paste my settings folder from my Windows PC to my Android handheld and continue where I left off.
- You are able to use RetroArch on a CRT television and play the games they were meant to be played across all emulator cores. Which standalone emulators can do that besides GroovyMAME?
- The ability to use hot key shortcuts across all emulators without having to set up each individual emulator core
- Instant xbox one controller compatibility. Plug and play. I’m not saying that RetroArch is the originator of these emulators. But you can’t deny the strides that this program has made toward game preservation. When RetroArch first came out I didn’t understand the vision. It was clunky and hard to use.
- But eight years later I’m finally seeing the end result and I am blown away at how you can instantly port your RetroArch install to any device that supports it and seamlessly game on practically anything as shown by the OP’s post.”
The conversation goes deeper into a debate which you are welcome to read on Reddit.
What Questions Do You Still Have?
My goal with this guide was to present an introduction to the RetroArch project, its current status, and its near-term potential. There is obviously a lot of ground to cover, and I may have missed something. Or perhaps, there was something that was unclear or confusing.
I would love to hear your response to this article in the comments section below. Feel free to share your praises, questions, or concerns below. All feedback will help us improve this guide over time. I hope to keep this updated and/or do occasional updates, when useful.
Help Spread the Word!
If you enjoyed this article, please feel free to share it on social media, with your gaming buddies, etc. I wanted something that was easy to pass around and spread the word of this free, ambitious project.