What’s this all about?
RetroArch is the official front-end for Libretro, an interface that allows for the easy creation of emulators and other applications.
EmulationStation is a graphical front-end that allows for the access of all games and emulators in one place and without a keyboard.
Together, they make a great team for a television kind of setup, with clean and beautiful graphic interface, perfectly suited to be used with a controller only.
RetroArch comes bundled with dozens of emulators ready for use, therefore it is a way better choice for an EmulationStation “combo” than installing (and configuring, and learning how to use, and…) ad-hoc emulators for each system.
This article aims to help anybody finding other guides to be unclear or simply targeted to tech-savvy users.
Also, this guide is Windows oriented (Windows 8.1 64bit to be more precise), but other than installing and finding the correct paths, the gist of it should be the same for any other operating system.
First thing first, we’re going to download all the software needed.
As for RetroArch (from now on simply RA), my suggestion is to download the nightly build, which is the latest, most updated, yet to be released version.
It could have some bugs, but the pros are totally worth the occasional crash.
You can find the latest nightly scrolling down to the bottom of this page, or you can simply use the direct link always pointing to the latest version.
Once you downloaded RA, just extract it wherever you please, possibly in an easily accessible folder (for example, I put in
D:\Apps\RetroArch). You don’t need to install anything: once extracted, RA is ready to go.
If you don’t know how to extract a .7z file, just download and install 7-Zip, which is also great at extracting basically any other compressed format; then, right-click on the file and you should find a new 7-Zip option.
EmulationStation (from now on simply ES) is way easier.
Simply download the latest version installer and install it wherever you want.
If you already searched for other guides about how to configure RetroArch, then you already know: it’s a huge pain in the back.
But let’s dive in.
Enter the folder where you installed RA (as I said before, mine is
D:\Apps\RetroArch), locate the
retroarch.exe file (the one with the Space Invaders icon: ) and launch it.
You’ll find yourself in an ancient-looking, unfriendly interface, with no mouse support. You can move around with the keyboard’s arrow keys, X to confirm, Z to cancel or go back and ESC to quit RA.
Do not fear and despair (yet): you should be able to use your controller right away! Just keep in mind that the buttons layout is the Super Nintendo one: A button to confirm and B button to cancel.
In case you cannot use your controller right away, let’s configure it.
Navigate the RA menu this way:
Settings > Input Settings > User 1 Bind All.
This will open a pop-up prompting to press the controller button for B. Just press the relative button on your controller and keep doing the same for any other button prompt RA will throw at you.
When you’re done, you’ll see that RA is perfectly usable with your controller.
Let’s go to the Video Settings menu:
Settings > Video Settings and set up the following settings like this (left and right to scroll through the various options):
- Use Auto Aspect Ratio: ON
- VSync: ON
- Hard GPU Sync: ON
Then go to
Settings > Driver Settings and choose gl as your Video Driver if needed.
Settings > Path Settings > Browser Directory and navigate through your computer’s filesystem to choose the folder where you’re storing your ROMs. In my case is
D:\Games\ROMs. Once you’ve found the folder you were looking for, select Use this directory and you’re done.
My suggestion is to keep your ROMs in a different sub-folder for each system (eg.
ROMs\SNES for your Super Nintendo games,
ROMs\GB for your Game Boy ones, etc.).
If you want, you can change the screenshot folder with the
Settings > Path Settings > Screenshot Directory option. It defaults to the Content directory which is the current loaded ROM folder (eg. if I take a screenshot of Super Metroid, it will be saved in the
D:\Games\ROMs\SNES folder), but you may want it to be a different one.
These are some shortcuts you’re likely to use at some point.
Of course, you can assign any and each of them to your controller in the
Settings > Input Settings page (just be sure to scroll down a lot to find them).
- F: switch between windowed and fullscreen
- F1: open RA menu while in game
- F2: quick save state
- F4: quick load state
- F8: take a screenshot
Using emulators in RetroArch
Nightly versions of RA don’t include any emulator to keep everything as light as possible. Luckily, it’s very simple to install emulators directly inside RetroArch, using the built-in Core Updater.
From the main menu, go to
What you’re looking at is a list of all the emulators currently supported by RA. If you select one of them, RA will download and extract it in its
RetroArch\cores folder, and you’ll be able to use it to play your ROMs.
Once you’ve installed an emulator, you’ll have to load it in
Core Selection, from the main menu. Right now, you’ll see just a list of filenames of the emulators you installed, but if you restart RA this list will be much more user-friendly, showing the emulated console and the actual names of the emulators.
Anyway, if you select an emulator, you’ll see that in the lower part of the window, the
1.1 - No Core will be replaced with the name of the emulator you’ve selected (eg.
1.1 - Gambatte v0.5.0).
If by now it isn’t clear enough, RA calls emulators cores. This is just because RA doesn’t use the entire emulator programs, but just their cores (which are the
.dll files you can find in the
Once you’ve selected an emulator, you’ll be able to launch your ROM by going in
Load Content from the main menu.
You’ll find yourself in the folder you selected before in the
Path Settings; just pick the ROM you want to play and the game should load without further ado.
You’ll probably notice that in the
Load Content list, only the ROMs compatible with the currently loaded emulator will be shown.
If you want to play with other console games, just go back and load the proper core.
Recommended emulators included in RetroArch
If the section title isn’t clear enough, these are only my suggestions and anyway, I’m always up to try your own favourite cores!
- NES: NEStopia
- Super Nintendo: bsnes (balanced)
- Nintendo 64: Mupen64
- Game Boy / Game Boy Color: Gambatte
- Game Boy Advance: VBA Next
- any Sega console before Saturn: Genesis Plus GX
- PlayStation 1: PCSX Rearmed
- PSP: PPSSPP
Almost all ES settings are contained in several text files to be freely edited with your text editor of choice. So, first thing first you’ll want to get accustomed to the ES settings folder:
%HOMEPATH% is just a shortcut to get to your own user folder. In my case that would be
C:\Users\Copons, so I could also get to the ES folder navigating to (or writing it in any window’s address bar)
Once there, just browsing around should give you a good idea of what each file and folder does.
As a rule of thumbs, do not edit any configuration file while ES is running, because it could lead to unforeseen consequences, like losing your customizations.
Let’s start with the only required file.
To let ES know what consoles you’re going to emulate through its graphical interface, you’ll have to edit an
.xml configuration file. It may seem a daunting task, but I’m here to help you get through with it.
es_systems.cfg with any text editor.
By default there is an example system, full of useful comments, to get you started. For the untrained eye, though, it could be hard to understand what’s going on, so I’ll explain briefly how XML works.
XML is a simple and readable language used to describe collections of data.
Every piece of information is enclosed in so called tags. Every information can contain “nested” tags.
A tag consists of a name and an opening (
) and closing () part.
For example, a tag describing a person, would start with
, finish with and contain any other information needed.
Let’s have a look at what it would be like in XML a person called John Doe and born on 18 January 2015 (notice the date notation
year month day).
John Doe 20151801
Easy, isn’t it?
Now that you know how to deal with XML, let’s dive in ES systems configuration.
You’ll have the following organization:
Inside each “ you’ll have to put the following tags:
a short name, used internally (lower-case);
the “pretty” name, displayed in menus;
the path to the ROMs folder;
a space separated list of file extensions that ES will look for inside thefolder (case sensitive, so there should be both the lower and upper case version of the extensions);
the command used to run this system’s emulator (more on this later);
the platform name used by ES to scrape for games details and cover (full list here, near the bottom of the page);
the theme name for this system (usually the same of, but some systems simply don’t have any theme available), displayed in ES graphic interface.
Putting it all together, this is how the Super Nintendo system looks like in my configuration:
snes Super Nintendo D:\Games\ROMs\SNES .sfc .SFC <command></command>D:\Apps\RetroArch\retroarch.exe -L D:\Apps\RetroArch\cores\bsnes_balanced_libretro.dll "%ROM_RAW%" snes snes
EDIT: as pointed out by Ben in the comments, paths containing spaces should be surrounded by double quotes (ie.
"D:\Games and Emulators\RetroArch\retroarch.exe").
While this is 100% true for the
<command></command> tag, I’m actually unsure – and I can’t check it at the moment – if the “ tag would work anyway even without double quotes.
<command></command> tag is used to teach ES which emulator and with what options it’ll have to use for each system.
Usually, a command consists of the following parts, separated by spaces:
- the path to the emulator
- any needed option
- the path to the ROM
As we’re talking about RetroArch (and I’ve also used it in my example), let’s see what’s going on:
is the path to RetroArch’s executable; of course it’s likely to be different on you computer, so feel free to customize it as needed;
the -L part is an option meaning that the following path will be the core used to load the ROM, in this case bsnes; again, check your own path and write here the correct core
the ROM path; as you’ve already set the system’s ROMs folder path in the “ tag, this part is simply a placeholder and ES will automatically put the full ROM path here; on Windows it’s basically compulsory to use the notation
"%ROM_RAW%", so avoid spelling errors here!
Once you’ve correctly set up all your systems, it’s finally time to launch ES!
The first time you launch ES, it will make you configure your controller, just like you did with RA.
This time, though, you’ll have way less buttons to configure, as ES doesn’t need to know every possible input you may use in game, but just the bare minimum to navigate around.
es_systems.cfg is properly configured, you should see that each system will have its own logo and a background image.
By entering a system, you’ll see a list of ROMs ES found in your system’s ROMs folder.
You’ll probably notice that it lacks every possible information about the games. We’ll get there shortly.
Pick a game and launch it.
<command></command> tag was correct, you should see RA firing up and loading your game. Well done!
Exiting RA (with ESC or whatever button you configured in
Input Settings), you’ll be back in ES.
To quit ES, you have to enter the menu (Start button) and there you’ll find the quit command. Be careful, though, because the option to go back to the desktop is the last one (the first two will restart or completely shut down your computer).
Scraping for information
ES has a built-in feature linked to TheGamesDB that will automatically try to download every games information.
Sadly, it doesn’t work all that well, so be ready to see plenty of “not found” or wrong results.
At least, there is an option that allow you to take action whenever there’s a “conflict”.
Anyway, from the main screen, open the menu and navigate to
Scraper > Scrape Now and finally Start.
One by one, you’ll see your games obtain information and such.
When you’re finished scraping, it’s time to fix those poor games where the scraper failed.
Fixing the scraping failures
From the ES folder, enter the
You’ll see a list of folders relative to the systems you set up before.
Inside each folder there’s a
gamelist.xml file, containing all the information of its system games.
Editing this file is basically the same as before, so I won’t explain it any deeper than needed.
The structure should be familiar:
Each game can contain the following tags:
it’s basically the ROM’s filename (leave it as it is);
the actual name of the game;
the long description of the game (as featured on TheGamesDB);
the path to the cover art (more on this later);
the TheGamesDB decimal rating (eg. “6 / 10” should be written as “0.6”);
the game’s release date and time, written as
T000000part is basically because the release hour is not used, so it may very well be as a simple placeholder text);
the game’s developer;
the game’s publisher;
the game’s genre;
the number of players (it’s an optional tag if the number is 1);
number of times you’ve played this game (automatically generated and updated by ES, leave it alone and if there isn’t, don’t add it);
last time you played the game (same deal as: don’t touch it!).
Now, if you want, simply go to TheGamesDB and copy and paste everything in the various system’s XML files.
As for the images, you could download the cover art from TheGamesDB (scale them to 400px of width for maximum consistency) and put them in the proper system folder inside
You can call them as you wish, or you could follow ES style:
Anyway, when you’re done, go back to the system’s
gamelist.xml file and edit the proper “ tag to reflect the new image you’ve downloaded.
As you may notice, sometimes ES use a tilde (
~) instead of
%HOMEPATH%, but that’s really the same. Write the correct path (eg.
~/.emulationstation/downloaded_images/snes/Super Metroid-image.jpg) you used for your images and that’s about it.
You can check if everything is working just by launching ES again.
Other notable emulators commands
While we’re talking about RA, I’m sure some of you would like to use ES to launch other emulators not provided by RA.
Let’s see the commands needed for the couple of other ones I use:
- GameCube/Wii (Dolphin):
path\to\dolphin.exe --batch --exec="%ROM_RAW%"
- PlayStation 2 (PCSX2):
path\to\pcsx2.exe "%ROM_RAW%" --nogui
- Commodore 64 (Vice64):