Last updated: 28FEB2022 (see Changelog for details)
RetroArch is one of my favorite programs to use for retro game emulation, because it can emulate many systems. But it does have quite a steep learning curve. In this guide I’m going to demystify some of the more peculiar things about this emulation frontend, and show you how I set up RetroArch on my own gaming platforms.
This guide is meant to help you get set up with various RetroArch iterations. The video will primarily be done on Windows PC, but the same method will apply to MacOS, Linux, Android, iOS, Vita, and Xbox platforms, and more.
RetroArch really shines on retro systems, particularly PlayStation 1 and below games. For more modern consoles, it is often more efficient to rely on standalone emulators, which are generally more optimized than RetroArch. However, if you are using a system that relies primarily on RetroArch for emulation (like Xbox), or you have a beefy PC that can run well regardless of optimizations, you may find success in emulating higher-end systems in RetroArch, too.
Table of Contents What is RetroArch? Game and BIOS files Install RetroArch Understanding configurations and saves Set your file directory Update RetroArch assets, cores, and more Adjust the user interface Button mapping and hotkeys Optional features Create playlists Scaling and video options Shaders and filters Core options RetroAchievements Cheats Updating RetroArch Further reading Changelog
What is RetroArch?
RetroArch is a frontend for emulators, game engines and media players. It can run on the usual platforms like Windows, MacOS and Linux, but it also runs on iOS and Android for tablets and phones, as well as on game consoles like PS2, PS3, PSP, PS Vita, Wii, Wii U, 2DS, 3DS, Switch, and more. The frontend for RetroArch is often referred to as the “libretro frontend”.
Note that technically, “RetroArch” should be pronounced like “RetroARTCH” versus “RetroARK”, because it was first based on Arch Linux, but both pronunciations are considered acceptable. I have a habit of pronouncing it the latter way, which is what you’ll hear in my videos.
RetroArch consists of what they call “cores“, which function as emulators embedded in the program. So in this guide I will use the words “emulators” and “cores” interchangeably. Depending on the version of RetroArch you are using, you can pick and choose which cores to load, to be able to customize your experience, or the RetroArch build may come pre-loaded with all working cores.
So you might be asking yourself, why should I bother with RetroArch, if I already have standalone emulator options that will play my games? That’s a fair question. The answer is that RetroArch contains a lot of universal features that are not implemented in many of the other emulators. For example, with RetroArch, you can unlock the following features:
- Wide system support. You can find RetroArch on many systems, and it can also emulate a ton of systems too. Here is a full core list so you can get an idea of all the emulation options within.
- Universal button mapping. You can set your buttons for any RA core, and also save per-game settings and button remaps for the best experience. You can also set up hotkeys for things like save states, loading save states, bringing up the RA menu, fast forward, etc. With this method, you only have to remember hotkeys for one platform instead of different key mapping options across various emulators.
- Precise video scaling options. With RetroArch, you can adjust the game image to match your device’s dimensions and resolution, or even apply bezel overlays to customize the layout of your screen. If you have certain preferences for your scaling (perfect pixel accuracy, or stretching out the image to take up the full screen), RA should have what you need.
- Shaders and Filters. Shaders apply an overlay to your screen that can mimic scanlines, colorization, or other effects that will recreate CRT monitors, chunky LCD grid displays, and more. Filters behave like shaders for your games, and can alter the screen to provide you a better visual experience. Adding filters to your game image will smooth out pixel distortion for screens that don’t accurately match the original console you are emulating.
- Playlists and thumbnails. RetroArch uses “Playlists” to organize the game library, and it will allow you to add box art (“Thumbnails”) to every game as you scroll through, and you can also set favorites, which is very handy.
- In-game saves and save states. RetroArch has the ability to save your game with SRAM (in-game) saves like how it was on the original console, and you can also use save states to take a snapshot of any game at any time as well.
- Fast forward, rewind support. RetroArch has universal support for fast forward and rewind hotkeys, which will allow you to navigate slow (or perilous) moments in certain games.
- Universal cheats. With RetroArch, you can simply add the appropriate cheat files and access all of the cheats from the RA menu.
- Achievements. RetroArch supports Retro Achievements, which are super fun.
- NetPlay. You can use RetroArch to host or join online gaming sessions for retro games.
- Recording and Streaming. You can record your gameplay directly in the app, and even stream it to services like Twitch.
- Active development. RetroArch has been around since 2004 and its development team is very active.
That being said, RetroArch is not perfect. The user interface can be cumbersome to newcomers, and some emulation cores aren’t as performant as standalone emulators. So there may be times when standalone emulators are preferred to a full RA build.
Game and BIOS files
The primary file requirements for running RetroArch will be the game files, as well as BIOS files for systems that require them.
Game files will be standard ROMs that you would use with any other emulator. RetroArch (generally) has the ability to use .zip or .7z files that will compress those ROM files as well. To find which ROM files work best for your desired core, I recommend going to the Libretro Docs page, then navigating the Core Library menu on the left-hand side to find the core you want to use, and then consult the “Extensions” section to see what files are accepted. Here is an example of the Gambatte core section, which will show you the accepted file types for Game Boy and Game Boy Color, plus information on BIOS and other core-specific options.
At the end of the day, the most important thing for you to do is to build a standardized ROM library. This can be done in a number of ways, but the easiest way to do it would be to make a folder on your computer called “GAMES”. Inside, create subfolders for each of your systems (NES, SNES, GB, GBC, etc.). Then in each of those subfolders, add your ROM files. I recommend sticking with the same file type for each system, like .sfc files for SNES games. File names should be named according to the “No Intro” standard (e.g. “Super Mario Bros. 3 (USA)”).
Additionally, inside your GAMES folder, make a BIOS folder and put the BIOS files inside. BIOS files are necessary system files for certain consoles to run properly. Examples of systems that will not run without BIOS include PlayStation 1, Game Boy Advance, and Sega CD. Here is more information about BIOS files, including links to specific BIOS requirements for each core.
Here is a list of recommended BIOS files to get you started:
SEGA CD: bios_CD_E.bin bios_CD_J.bin bios_CD_U.bin FAMICOM DISK SYSTEM: disksys.rom GAME BOY (for boot logo): gb_bios.bin GAME BOY COLOR (for boot logo): gbc_bios.bin GAME BOY ADVANCE: gba_bios.bin NEO GEO: neogeo.zip PLAYSTATION 1: scph1001.bin TURBOGRAFX-CD: syscard1.pce syscard2.pce syscard3.pce
BIOS files cannot be shared due to copyright, so you are on your own to dump them from the original console or to find backup RetroArch BIOS packs via the Internet.
Depending on what device or console you are using, you may have to manually install RetroArch, or it will already be loaded. For example, RetroArch is already installed on certain firmwares and operating systems, like Batocera, EmuELEC or RetroPie, and so you don’t need to install anything. However, for something like a PS Vita, Xbox, Android phone, Mac, or Windows PC, you will need to download and install RetroArch yourself.
To install RetroArch, head over to their Downloads page and find the platform you want to use to run RetroArch. You can then download the version of your choice and install it. Note that there may be 64-bit and 32-bit versions available. In most cases, you want to install the 64-bit version if your device can handle it.
- The list on the Downloads page features Stable releases. If you want more cutting-edge (and potentially buggy) software, you can also download their Nightly builds here. In most cases, the Stable releases are perfectly fine.
- If using Android, you can download and install RetroArch directly from the Google Play Store. However, the Google Play Store version is not updated as frequently as the version you can find on the RetroArch Downloads page, so for the latest and greatest features, it might be easier to download the APK and sideload it yourself.
After you have installed RetroArch, launch the app for the first time. This will create your file directory structure, and you can also check to see if your controller works out of the box with the interface. If it doesn’t, check out my button mapping section.
Understanding configurations and saves
Before we get started, it is very important to understand how configuration saves work in RetroArch, because it follows a specific logic. 99% of the time when someone tells me they “screwed up their RetroArch” it’s because they saved a configuration in a way they didn’t expect. So let’s take a minute and explain how this stuff works.
CONFIGURATION FILE. Basic configurations are saved in a configuration file called retroarch.cfg. This is where you would save system-wide configurations that would apply to the entire frontend. For example, this file will dictate what menu driver (theme) to display when showing RetroArch, your button mapping preferences, hotkeys, video scaling options, and more. To make adjustments to the configuration file, you need to be using RetroArch without a game loaded, and then you will make your adjustments and go to Main Menu > Configuration File > Save Current Configuration. Consider this your “baseline” configurations. Note that the configuration file can only be saved when a game is NOT loaded.
OVERRIDES. If you want to make a specific configuration that applies only to a certain emulator, emulated console, or game, you will want to use overrides. These are basically configuration (.cfg) files that are specific to a game or console. For example, if there is a certain game where you want to use a special hotkey or video scaling option, you would open up that game, make the adjustment in the settings, and then save it as a per-game override. Every other game will function normally, but the next time you boot that specific game, those per-game settings will load.
There are three types of overrides, which follow a specific hierarchy: core overrides, content directory overrides, and game overrides. In order to save an override, you need to launch a game first, and then access the RetroArch Quick Menu (which we will set up in the hotkeys section below), and then go to Quick Menu > Overrides to save the override.
CORE OVERRIDES will save your configuration for that entire core. This is good when you have a core that emulates multiple systems and you want to have the same experience across each of those systems. An example of this would be the Gambatte core, which emulates Game Boy and Game Boy Color. If you make a CORE OVERRIDE for Gambatte, all Game Boy and Game Boy Color games will be affected when launching those games with the Gambatte core.
CONTENT DIRECTORY OVERRIDES will save your configuration for every game file in that same folder. For example, if you save a content directory override for a Game Boy game, it will affect all Game Boy games, but not Game Boy Color games since those ROM files will (likely) reside in a different folder — even though they use the same core. This feature is helpful when you have disparate systems that are supported by the same core. Another example is the Genesis Plus GX core, which can support Sega Genesis, 32X, Master System, and Game Gear. If you were to make some configuration adjustments that would be beneficial for the Genesis but not the Game Gear, you would want to use a content directory override instead of a core override, that way it would only affect Genesis games.
GAME OVERRIDES affect only that one game, and not others.
REMAP FILES. If you want to save game-specific controls, then this is done via a REMAP (.rmp) file. To do so, you will need to enter the RetroArch Quick Menu > Controls section, make your changes (likely in the Port 1 Controls subsection), then save a Core / Content Directory / Game Remap file. These three types of remap files follow the same pattern as the overrides above.
The hierarchy of these overrides and remap files are as follows:
So by default the settings within retroarch.cfg will be your primary configuration settings, but if you have a core override then those settings will take precedence. But if you also have a content directory (or game) override, that will take precedence over anything else.
INDEPENDENT SAVES. Confusingly, there are a couple other options and configurations that work outside of the process above. This is because they are governed by their own configuration files, and not the typical retroarch.cfg or override cfg/rmp files mentioned above.
- If you open a game then go into Quick Menu > Options and make adjustments here (which are called “Core Options“), it will affect everything that boots from that core, and you don’t need to manually save it — the settings changes will just save at the core level when you close out the game. Within this Options menu you can also choose to manually save these core options by game or content directory by going into the Manage Core Options section.
- If you open a game then go into Quick Menu > Shaders you can save what they call “Shader Presets“, which will apply a specific shader profile. Like with other options, you can specify how they apply, as either GLOBAL (whole system), CORE, CONTENT DIRECTORY, or GAME presets.
Note that some operating systems, like EmuELEC, Batocera, and 351ELEC, use their own frontend (EmulationStation) to synchronize settings with the RetroArch system that functions as a backend. This means that you will go into the EmulationStation frontend menu and make adjustments there, which will then trigger configuration or override file adjustments in RetroArch without having to actually use RetroArch itself. As an added bonus, 351ELEC will actually provide optimized settings custom tailored to the device you are using it on. Alternatively, if you try to go into RetroArch and adjust things yourself, you may find that your saved configurations won’t work, because the EmulationStation settings will override RetroArch. In most cases, stick with the EmulationStation menu to make your changes.
Set your file directory
When you launch RetroArch for the first time, it will create a file structure, which they call “Directories” on your device. Generally this will be the same folder where your RetroArch app is located, or in the root directory of your device (like an Android phone). However, you may want to adjust the file locations manually, so that you can point RetroArch to your own BIOS folder, or to change the location of your save files for easier access.
Go to Settings > Directory and you will see a list of directory paths. Here you can configure them to your needs. Some adjustments worth considering:
- System/BIOS: You can either go into the default RetroArch directory on your device and find the “system” folder to add all your BIOS files, or you can just change the BIOS location to point to wherever your BIOS are already saved. Go in here and navigate to your BIOS folder, then select “Use This Directory”.
- File Browser: You can adjust this to the main GAMES folder you have on your device, so that way you don’t have to navigate to that folder every time you want to add a new system to your Playlists. This will save you time in the long run.
- Cheat Files: If you manually install cheat files like in my section below, this option will allow you to set a new default cheat file location. If you were able to install cheats via the Update Cheats function described in the next section, you won’t need to do anything.
- Screenshots: Here you can adjust the screenshots location to the folder of your choice.
- Save Files: For easier access, you can change the location of your save files on your device. If you are running RetroArch on your PC, you could theoretically point this section to a cloud-based folder (like a Dropbox or Google Drive folder) and create a cloud-based save system that would work across multiple devices.
- Save States: This works like the Save Files section above, but with Save States. The same process applies here.
You could offload even more of your directories to custom folders as well, so that they were located somewhere independent of the default RetroArch folders. This is beneficial if you want to update RetroArch in the future while preserving your current setup. See the Updating RetroArch section below for more information.
After you have made your adjustments, be sure to go to Main Menu > Configuration File > Save Current Configuration.
Update RetroArch assets, cores, and more
Now that we have built our file structure and know how to save configurations, let’s go in and start updating RetroArch. The core system you installed may not have all of its functions included, so you will want to load them yourself. Note that you will need to be connected to the Internet for this section to work. To do so, go to Main Menu > Online Updater and run some of the updater functions available. I recommend the following:
- Update Core Info Files
- Update Assets
- Update Controller Profiles
- Update Cheats
- Update Databases
- Update Shaders
Note that some versions of RetroArch may not have these options, which is done by design. Don’t sweat it.
Additionally you will want to go into Online Updater > Core Downloader and download the cores you want to run on your system. You can download as many or few as you would like. I would recommend fully downloading one core before starting the download for the next core, because it can mess up your downloads to queue them all up at once. Periodically, you can also go in and select Update Installed Cores to see if there have been any updates to the cores since you first downloaded them.
My preferred RetroArch cores for popular systems:
Arcade (FB Alpha 2012) – for low-end devices Arcade (FinalBurn Neo) – fighting games and beat’em ups Arcade (MAME 2003-Plus) – all-around arcade emulation Commodore Amiga (PUAE) DOS (DosBox-Pure) NEC PCE/TG-16/PCE-CD/TG-CD (Beetle PCE) Nintendo GB/GBC (Gambatte) Nintendo GBA (gpSP or mGBA) Nintendo Virtual Boy (Beetle VB) Nintendo DS (melonDS) Nintendo NES (Nestopia or fceumm) Nintendo SNES (Snes9x Current) Nintendo 64 (ParaLLEl or Mupen64Plus) Nintendo GameCube/Wii (Dolphin) ScummVM – point-and-click PC games Sega Master System/Genesis/CD (Genesis Plus GX) Sega 32x (PicoDrive) Sega Saturn (YabaSanshiro or Beetle Saturn) Sega Dreamcast (Flycast) SNK Neo Geo (FinalBurn Neo) Sony PlayStation (DuckStation, SwanStation, or PCSX ReARMed) Sony PlayStation 2 (PCSX2) Sony Playstation Portable (PPSSPP)
Adjust the user interface
Once you have an understanding of how to save configurations, and we have the most updated assets, let’s start actually adjusting RetroArch. We’ll start with the user interface, which is called a “menu driver” in RetroArch.
When starting up the system, you will likely be greeted with a black and white interface called “glui”. It’s okay, but I find that it can be confusing to navigate. Instead, I prefer to use an older interface called “xmb”, modeled after the original PlayStation 3 cross-menu bar. I prefer this menu because it makes the submenus more logical and visual to me, so that is what I will use in my video guides.
To change the User Interface, go to Settings > User Interface > Menu and adjust it to one of the other menus. Then go to Configuration File > Save Current Configuration to save your changes. After you exit and re-open RetroArch, you will have the new menu.
You can also adjust the menu appearance to fit your preferences. To do so, go to Settings > User Interface > Appearance and adjust the settings here. You can adjust the Menu Scale Factor to increase or decrease the menu font, adjust the menu icons, or change the background color, and more.
Finally, you can adjust the menu items that are displayed on your interface, to clean it up a bit. Go to Settings > User Interface > Menu Item Visibility and toggle off the menus you don’t want to see. In general, these are the menu items I turn off by default:
Show ‘Explore’ > OFFShow ‘Favorites’ > OFFShow ‘Images’ > OFFShow ‘Music’ > OFFShow ‘Netplay’ > OFF
After you have made your adjustments, be sure to go to Main Menu > Configuration File > Save Current Configuration.
Button mapping and hotkeys
Button mapping is likely the next thing you want to do. This will align your controller’s controls with the RetroArch universal button mapping. If you are using an x-input controller (like an Xbox controller) the buttons will likely be automatically mapped, and if you are using a handheld device that has a RetroArch backend already baked in (like ArkOS, EmuELEC, or 351ELEC), then you likely don’t have to map the controls. But some bluetooth or wired controllers may behave unexpectedly, so let’s adjust the button mapping.
To configure your controls, open RetroArch and go to Settings > Input > Port 1 Controls > Set All Controls and follow the prompts.
After you are done setting up the controls, you will want to decide which buttons you want to use for OK and Cancel buttons. If you don’t like how they are configured by default, you can go into Settings > Input > Menu Controls and swap the buttons.
Once you have mapped your controls, be sure to go to RetroArch Main Menu > Configuration File > Save Current Configuration. Note that you can make core or game specific button mapping by using overrides, if you want to have a special setup for a particular game or core. Additionally, in the Input setting there is an option to create and save Controller Profiles, which you could use for multiple controllers (for example, if you wanted to use a specific controller for SNES gameplay, you could map the controls to that one controller and then choose that profile for SNES gameplay).
HOTKEYS are simple button combinations that will allow you to make certain adjustments while in games and RetroArch. You will want to set these up next.
Open RetroArch and then go to Settings > Input > Hotkeys. Here you will see a number of hotkey options.
Here are a couple options that are fundamental to the hotkey experience:
Confirm Quit: with this ON, you will have to press the Quit RetroArch hotkey twice to actually exit. This can be good to avoid accidental button presses, but can get annoying over time. I leave this one OFF.Menu Toggle Controller Combo: this option will pause your game and bring up the RetroArch Quick Menu. This can be a specific key combination that works independently of any other hotkey setup. For this one I choose Hold Start (2 Seconds). This means if I hold the START button for two seconds, the RetroArch Quick Menu will appear.Hotkey Enable: this will be your primary hotkey button. Every hotkey you choose in the options below it will need to be used in combination with your hotkey enable button. For this I usually choose the SELECT button. This means that SELECT + whatever other hotkey I choose will be my button combo to activate a hotkey shortcut.
There are several hotkeys I recommend you set while you’re in these settings. Here are some of my preferred hotkeys:
Hotkey Enable: SELECT button Fast-Forward (Toggle): R2 button Rewind: L2 button * Load State: L1 button Save state: R1 button Show FPS (Toggle): Y button Pause (Toggle): A button ** Reset Game: B button Close Content (or Quit RetroArch): START button *** Menu (Toggle): X button Volume Up: Left d-pad Volume Down: Right d-pad Run-Ahead (Toggle): Up d-pad
* For the Rewind function to work, you will need to go into Settings > Frame Throttle > Rewind > ON. This is not something I would recommend turning on as a global configuration, because some systems (like Saturn or PS1) will be very slow with it on, and some (like PSP) may outright crash. Instead, I recommend setting the hotkey now, then for the systems you want to use rewind (like NES, for example), you can go into the Quick Menu by pressing SELECT + X and then go turn Rewind on and save it as a core override. More information is in the section below.
** There is a bug in the Android version of RetroArch when mapping the “Pause Game” hotkey. This will break the use of the button within the menu altogether. So for Android, skip that particular hotkey.
*** Note that your SELECT + START hotkey should be set to either “Close Content” or “Quit RetroArch”, but this will depend on your use case. If you plan on using RetroArch as your frontend, then you will want to Close Content to return to the RetroArch menu. If you are using a different frontend, like EmulationStation or LaunchBox, you will want to set it to Quit RetroArch so that when using this hotkey it will return you to the frontend instead.
After you’ve made all of your configurations, go to the RetroArch Main Menu > Configuration File > Save Current Configuration.
An option I like to set with my games is AUTO SAVE / AUTO LOAD. This will create a save state when you close down a game, and then load that save state when you launch the game again. It provides a pick-up-and-play feel to your retro gaming. To set this, use the following two commands:
- Settings > Saving > Auto Save State > ON
- Settings > Saving > Load State Automatically > ON
The auto save/load feature works best when combine with the “Reset Game” hotkey above, so that way if your game loads at a part you don’t want, you can press SELECT + B to reboot the game and start over.
The REWIND feature in RetroArch is helpful when you want to re-do a mistake on the fly. And while we set it as the SELECT + L2 hotkey above, by default this feature should be turned OFF in RetroArch, and then enabled only for certain systems. That’s because this feature has a somewhat high performance tax which can negatively affect performance on systems like PS1 and above. Instead, you will want to use a core override to save this setting. First, start up a game (like an NES game), and then press SELECT + X to bring up the Quick Menu, then navigate to the Rewind section within the Quick Menu. Now select Rewind Support > ON. Now you can go to Quick Menu > Overrides > Save Core Overrides, which will enable rewind support on all NES games running that emulator core.
There is also a RUN AHEAD feature which will reduce latency on certain setups. For example, this may be beneficial when using the Android-based version of RetroArch and a bluetooth controller, to give a more natural feel to retro gaming. Like with the rewind feature, this has a performance tax and should only be used on systems that would benefit from it (like SNES and below). For this reason we’ll use a core override again. First, start up a game (like an NES game), and then press SELECT + X to bring up the Quick Menu, then navigate to the Latency section within the Quick Menu. Now select Run-Ahead to Reduce Latency > ON. Now you can go to Quick Menu > Overrides > Save Core Overrides, which will enable run ahead support on all NES games running that emulator core. Note that this is one of many advanced features to improve latency; here is more information.
Finally, on many versions of RetroArch (specifically those with touchscreen capability, like Android), they may have a TOUCHSCREEN BUTTON OVERLAY on your screen when starting up a game. If you have a controller you likely do not want to see this overlay. To turn it off, go to Settings > On-Screen Display > On-Screen Overlay > Display Overlay > Hide Overlay When Controller is Connected > ON.
You can set up playlists within RetroArch to browse and launch your games directly in the program. This will be helpful if you just want to remain within RetroArch to launch your games. There are two methods for creating playlists in RetroArch:
SCAN DIRECTORY. This is the most straightforward way to make playlists, and is best for systems with unzipped ROMs that have distinct file types (like .nes games). With this option, you will navigate to the folder that contains your ROM files, then select “Scan this Directory”. RetroArch will then recognize and scan the directory for games, and assign the console and assets to that system. You should then see it in your playlist. When you have a more common file type for your games (like .bin files for Genesis games, it’s better to do a Manual Scan).
MANUAL SCAN. This is the preferred way to scan your directories because it gives you more control. Here is the breakdown:
Content Directory: navigate to your ROM folder and select “Scan this Directory”System Name: select the system name you want to associate with your playlistCustom System Name: use this if you want to use a special name for this playlist. Note that you will also need to set your “System Name” to “Custom” for this to workDefault Core: select the core you want to associate with this play list. Afterwards you can assign a different core to specific games by selecting the game and choose “Set Core Association”File Extensions: add in all of the file extensions you want to scan for your console. You can leave this blank if they are all the same (e.g. zip files for arcade games), but for the most part it’s helpful to add these in, especially if you are using several file types. Separate each file extension with a space (no comma), like this for Dremcast: cdi, gdi, chdScan Recursively: turn this on if you want to scan subfolders tooScan Inside Archives: this will scan the files within the zip file, whether you want this on will depend on the system you are scanning. You will want this off if scanning arcade gamesArcade DAT File: this is important if you are scanning arcade games, because it will associate your zip file (“simps2pj”) with a full file name (The Simpsons). To set this up, head to this page and download the latest MAME dat/xml file. Then save this file somewhere that you can access on your device, and choose it when at this part of the menuArcade DAT Filter: with this selected, only arcade games that appear in the DAT file will show up in your playlist. Generally you want this setting OFFOverwrite Existing Playlist: this will overwrite anything already in the playlist. You generally want this OFF if you are just adding new games to your playlist
If you want thumbnails to appear next to your games, you need two things: 1) the files must be named according to the “No Intro” standard (e.g. “Super Mario Bros. 3 (USA)”) and 2) go into Online Updater > On-Demand Thumbnail Downloads > ON so that they will download when you browse through your playlist. Alternatively, you can manually scan each playlist for thumbnails in the Online Updater section instead.
Finally, you can go into Settings > Playlists and adjust how your playlists behave. There is also a Manage Playlists section within here that will allow you to adjust things like the default core, how the thumbnails appear, or just delete the playlist altogether.
Scaling and video options
One of the biggest advantages of using RetroArch is that you can use universal and streamlined video options. So let’s take some time to go over the basics here.
Let’s first define aspect ratio. A square screen aspect ratio would be defined as 1:1 (or 1.0), and very few game systems ran at this aspect ratio (Watara Supervision). At the other end of the spectrum, a standard widescreen TV aspect ratio would be 16:9, or 1.76,
Most classic home consoles had an aspect ratio of 4:3 to match CRT TVs. Handheld systems had varying aspect ratios, due to having a variety of screens. Arcade system aspect ratios are also all over the place, because each cabinet was different. Some other notes:
- Aspect ratios for some systems are not set in stone. Atari 2600 games didn’t technically have pixels, so they are at a different standard. Similarly, more modern consoles like the PS2 had widescreen options and variable resolutions.
- The NES had a resolution of 256×240, but only showed 256×224 on NSTC screens (which were limited to 224 vertical pixels); the 256×240 resolution can still be displayed on emulators. So while the NTSC TV showed an aspect ratio of 4:3 (1.33), most emulators show NES at 16:15 (1.07), and likely look best at a 4:3 anyway.
- Some games actually had different native resolutions on the same system. Most NTSC SNES games had a native resolution of 256×224 pixels, while Star Fox had 224×190, and Yoshi’s Island had 256×208. So for the chart below I stuck with the general NTSC aspect ratios.
- PAL TVs output a 240-pixel height, so PAL ROMs may have different resolutions than shown below. PAL ROMs on Nintendo GameCube have a resolution of 768×576.
- Some systems introduced scaling for certain games. For example, the PS1 mostly played games at a resolution of 320×240, but some scenes could scale up to 640×480. N64 games could scale from 320×240 up to 640×480 as well.
Common aspect ratios for handheld and home console systems (click to enlarge)
So why is aspect ratio important? Because if you plan on playing RetroArch on a modern TV or monitor (which likely has a 16:9 aspect ratio), emulated systems at their native aspect ratio will have black bars on the left and right sides. If you want to preserve the native aspect ratio then it’s all good, but if you want to stretch out the display to take up more space on your TV, then you will need to adjust scaling options.
You can adjust the aspect ratio by going into Settings > Video > Scaling > Aspect Ratio and adjusting your global configuration. I would recommend “Core Provided” since that will allow each emulator core to decide the appropriate aspect ratio. If you want to stretch the aspect ratio to fit your screen no matter what, you would want to select your screen’s ratio (like 16:9). Just beware that the emulation police will likely come for you if you don’t use the proper aspect ratio.
After you have made your adjustment, go to Main Menu > Configuration File > Save Current Configuration. You could also use the Overrides function to make core-specific or game-specific configurations.
Because many handheld systems had a much lower pixel density than the resolution of your TV, monitor, or phone, some of these systems will benefit from integer scaling. Integer scaling is defined as scaling by a factor of a whole number (2x, 3x, etc), as opposed to non-integer scaling (1.5x, etc). When turned on, RetroArch will scale up to the greatest integer scale below your device’s resolution. So for Nintendo 64 games, which have a native resolution of 640×480, it will scale up to 2x, or 1240×960, with black borders on all sides. This will keep a 1:1 pixel ratio and everything will look nice and crisp, so long as you don’t mind the black bars around the image.
If you don’t turn on integer scaling, the image will scale to match your device’s display (while preserving aspect ratio) to fill out as much of the screen as possible, but this may result in pixel distortion which can make some pixels look distorted on your display. You may not notice the difference, which is totally fine. You can also use shaders or filters to re-balance the image, as you’ll see in the section below.
To turn on integer scaling, go to Settings > Video > Scaling > Integer Scaling and make your adjustment. Like with everything else, you will need to save your configuration file, and you could also use overrides to make per-core or per-game settings, too.
Shaders and filters
You can add Shaders to your game image to recreate classic looks (like scanlines to mimic CRT displays) or LCD grids, and more. They are stackable and adjustable, giving you a lot of freedom in their implementation. For more information on shaders, check out this page from RetroArch. Shaders can become very complex, so we will stick with just the basics here.
To find shaders, start a game then enter the Quick Menu > Shaders > Video Shaders > ON, then navigate to the Load menu. You will likely have the choice of glsl or slang shaders; slang shaders are newer but may not be compatible with your device. You can experiment with the two to find which set you prefer. Within each shader folder will be subfolders that contain shader collections. Some of the best places to start looking are the handheld folder (for handheld systems) or the interpolation folder. Once you have found shaders you like, you can save them as global, core-based, or game-based presets within the Shaders folder.
Filters behave a lot like shaders but are more CPU intensive, although sometimes they can create a more accurate effect than shaders alone. You can find the filters section in Settings > Video > Video Filter. The Normal 2x and 4x shaders are effective in balancing pixels when not using integer scaling. This will give you the best “clean” screen option but will have some CPU tax, so I do not recommend using them on lower-end consoles like RK3326 handheld devices (Abernic RG351 series, PowKiddy RGB10, etc.). Another set of filters that work really well with NES and SNES games are the Blargg filters, which recreate the experience of using an older television set. Once you have found a filter you like, you can save the configuration file for a global setting, or use overrides for core-specific or game-specific settings.
Note that the way you save shaders versus filters is different. Shaders are saved by their own presets within the Shaders setting menu, while Filters are saved via overrides or the global configuration file (Save Current Configuration).
The last settings worth messing with are core options. You can find these by starting up a game, entering the Quick Menu > Options section, and seeing what core options are available. For example, on higher-end systems like N64 or PSP, within the core options you can find the ability to upscale the resolution from 480p to 720p or 1080p, or higher. Each core options section will be unique to that core, so go in there and see what options you have. If you have any questions about any of these settings, I recommend consulting the LibRetro Docs page and browsing their Core Library to see what options are available and what they do.
An easy example of core options would be to adjust colorization options for Game Boy within the Gambatte core, demonstrated above.
- Open a Game Boy game in RetroArch
- Bring up the RetroArch Quick Menu, then go to Options > GB Colorization > Internal. Next, go to Internal Palette > Special 1. This will produce a night light green colorization. For colorization that is more in line with the original DMG display, set it to Options > GB Colorization > DMG. Experiment to find what you like best! Above you can see three Super Game Boy colorization options.
- To set it as default for that game or for all Game Boy games no further configuration is necessary. Core options will automatically save when you close the game out. To save it for a specific game, go to Options > Manage Core Options > Save Game Options.
Another core options adjustment you could make in Gambatte is LCD ghosting, which will recreate the original blur effect on the Game Boy.
- Go to Quick Menu > Options > Interframe Blending. There you will see two LCD ghosting effects:
- LCD Ghosting (Accurate)
- LCD Ghosting (Fast)
- To set it as default, go to Overrides > Save Content Directory Overrides.
Finally, in addition to ghosting and GB colorization, the Gambatte RetroArch core also provides an accurate color correction for Game Boy Color games, as you can see above. This setting is found in Quick Menu > Options > Color Correction Mode > Accurate. You can also adjust the “frontlight position” options within Color Correction Mode to tone down any harsh contrast in your current configuration.
One neat feature that is available within RetroArch is a service called RetroAchievements. These function as you would expect — as you complete a milestone in a retro game, you will get an achievement pop-up celebrating that accomplishment. Moreover, you can track your achievements from within RetroArch or on the RetroAchievements website. And if you want to go all the way down the rabbit hole, you could compete with friends or join the community to participate in discussions or contribute to creating or refining achievements in the future. Note the you must be connected to the internet for RetroAchievements to work.
To get started, go to RetroAchievements.org and register for a free account. Then in RetroArch, go to Settings > Achievements > ON and enter your username and password. Finally, to save this setting, go to Main Menu > Configuration File > Save Current Configuration. The same account can be used on multiple versions of RetroArch spread across various platforms.
If you’d like to add me as a friend or track my (abysmal) progress on retro games, here is my profile.
RetroArch has an embedded universal cheat system, which can be used in a pinch or for the duration of your game.
To set these up, you must first go into Main Menu > Online Updater > Update Cheats. This will download the cht database and install everything automatically.
If you do not have internet access on your device, or if you use an operating system that doesn’t enable the cheats downloader function, you can still load cheats offline. This only needs to be done one time.First, go to this GitHub page and click on the green “Code” button, and select Download Zip. Download that file, and unzip it. Inside you’ll find a folder named “cht”, and within that, a bunch of game system folders. Grab the game system folders for the systems that you want to enable cheats for, and place those folders somewhere handy, like in a “Cheats” folder within the GAMES folder where your ROMs reside. Open up RetroArch then navigate to Settings > Directory > Cheat File, and then navigate to the Cheats folder, then select <Use This Directory>. To save this setting, go to Main Menu > Configuration File > Save Current Configuration. Now, whenever you try and load cheats, it will default to your Cheats folder to find your cheat files.
Once you have the cheat files installed, it’s easy to activate them. Start up a game, then go to Quick Menu > Cheats > Load Cheat File
The process of updating RetroArch is unique for each system. For example, on Windows, you can update the program by simply overwriting the .exe file with a newer version. For more information, I recommend going to the installation page of your respective RetroArch version and see what the team says to do. I wouldn’t sweat too much about keeping the absolute latest version of RetroArch on your device; it’s often enough to use a stable build and update your cores via the Online Update tool instead.
Another way to update RetroArch is to do a manual reinstallation while preserving your most critical files. To do so, you would want to go into the Settings > Directory section and point some important folders to somewhere besides the default RetroArch folder. Here is the process:
- Create the following folders somewhere safe:
- Cheat Files
- Controller Profiles
- Input Remaps
- Save Files
- Save States
- Note that if you are just starting up RetroArch for the first time (i.e. nothing is saved in the corresponding RetroArch folders already), you don’t need to do anything else. However, if you have been using RetroArch for a while already, then you want to go into the default RetroArch folders and copy their contents from their current location to your new location.
- Go into Settings > Directory and point the above directories to their new location.
- Before installing the new version of RetroArch, you need to find the retroarch.cfg file on your system. Its location will vary by device. On PC, you can find it in the root directory of the retroarch.exe file. On Android, it will be found in the Android > Data > com.retroarch.aarch64 (or similar) folder. Save a copy of this file somewhere you can access later.
- Download and install the new version of RetroArch and install it onto your device. You may need to delete the old one first (don’t worry, the folders you saved elsewhere will be fine). Before starting up RetroArch for the first time, place a copy of the retroarch.cfg in the same place where you found it originally.
- Launch RetroArch and it should pull up the retroarch.cfg file and all of your settings and directory locations along with it. You will need to go into the Online Updater tool and re-download assets, databases, etc.
This guide, while quite long, only scrapes the surface of what is available in RetroArch. I’ve made a couple dedicated guides for other functions, such as multi-disk gameplay, or NetPlay. You can find those guides below, and let me know in the comments if there is something else you’d like me to tackle in the future.
Multi-Disk Gameplay GuideNetPlay Guide
28FEB2022– published guide