Video Game Emulation Wiki

Work in progress guide. Please expand upon it.

Basic Usage (RGUI)

Download RetroArch,

RGUI, RetroArch's interface

start up retroarch.exe.

To launch a game, select the emulator core you'd like to use under Core, and select a ROM under Load Game.

For more convenient ROM selection, setup your browser directory under Path Options.

Installing RetroArch on Linux


The first step is to add the PPA for libretro/stable in a terminal:

sudo add-apt-repository ppa:libretro/stable

The next step is to type the following into the terminal:

sudo apt-get update

sudo apt-get install retroarch*

sudo apt-get install <corename>

Replace <corename> with the name of the package the core is available in. You can see all of the cores available to you either in your package manager (e.g. Synaptic, Software Center) or by visiting [[1]]. To install all (or at least most) of the cores in one go, run

sudo apt-get install libretro*

Initial setup (Ubuntu)

This section applies to most distros of Linux, but the paths referenced may be Ubuntu-specific.

Before you can use the cores you've downloaded in Retroarch, you need to set the path to the libraries in retroarch.cfg, the configuration file for Retroarch. Run Retroarch at least once to create a skeleton retroarch.cfg. By default, retroarch.cfg will be created in the directory $HOME/.config/retroarch, where $HOME is your home directory. If retroarch.cfg is not found at that location, run Retroarch and choose the Save Config option - Retroarch will save a new configuration file and display its path on screen. Alternatively, you can use the find command:

find ~ -name "retroarch.cfg"

Next you need to locate the directory in which the libretro cores are stored. They should have been saved in the directory /usr/lib/libretro. You can check this by entering the command

ls /usr/lib/libretro

You should see a list of all the cores you downloaded. If the directory does not exist, you can find where the cores were saved with the find command:

sudo find / -name "libretro"

find may return several directories. Use ls to check each one until you find the downloaded cores.

Once you've located the libretro cores, it's time to open retroarch.cfg using your editor of choice. Look for the option libretro_directory, which may be located near the bottom of the file. Insert the path to the libretro cores between the quotation marks on the right hand side. Assuming the cores are located in /usr/lib/libretro, the line in the configuration file should look like

libretro_directory = "/usr/lib/libretro"

You can also set the libretro path using the RGUI. In Retroarch, go to Settings -> Path Options -> Core Directory and navigate to the appropriate folder. If you set everything up correctly, you should see the cores when you select the Core option in the RGUI.

Other Distros

You will have to compile from source. For Arch Linux, there are AUR packages and packages in the community repository that simplify this process - though it isn't incredibly difficult otherwise. The most important part is making sure you have all the dependencies.

Dependencies: (refer to your distro's wiki or package manager for exact package names)

  • pkgconfig
  • OpenGL headers (should be on most distros by default, if not try installing libgl/mesa development package


  • libxml2 - For XML shaders and cheat support
  • freetype - TTF font rendering
  • ffmpeg/libavcodec - FFmpeg recording
  • nvidia-cg-toolkit - Cg shaders

Using RetroArch

RetroArch has a robust CLI for those who prefer the command line, there are also many pages which should have been installed by default for retro-arch, retroarch-joyconfig and others. If you use the CLI be sure to configure your retroarch.cfg file before first use. This config is well commented so each option can be fully understood. Use retroarch-joyconfig command for simplified input setup. RetroArch can auto-detect inputs, which is a great feature to simplify playing with multiple/different controllers (refer to "man retroarch-joyconfig" for details). The retroarch.cfg file should be located in /etc/retroarch.cfg, your home folder or the directory where RetroArch was installed depending on your distro and compilation setup.

General Setup/Usage

RGUI Controls

Default keys for the keyboard are: x (confirm), z (back) and the arrow keys. If you're using an XInput (xbox 360) controller, your controller should already be set-up.


If you are going to play in a system that needs a BIOS (e.g. PS1), place it in RetroArch's 'system' directory.

Mednafen is very picky about which BIOS to use. The ones that you might need are:

  • scph5500.bin
  • scph5501.bin
  • scph5502.bin

If you can't find one of these, check the MD5 values of your current ones; for:

scph5500.bin MD5 is: 8dd7d5296a650fac7319bce665a6a53c

scph5501.bin MD5 is: 490f666e1afb15b7362b406ed1cea246

scph5502.bin MD5 is: e56ec1b027e2fe8a49217d9678f7f6bb

The hardest to find is the scph5501.bin, but its MD5 is identical of scph7003 so you can rename 7003 to 5501 and it will work. Note that the file names are case sensitive, thus they must be named exactly as listed above to avoid problems.

Disc images

Mednafen requires you to load games through CUE sheets. Ensure that the CUE sheet is properly set up in order for the game to run. See the Cue sheet (.cue) for more.


The following file need to be placed in the System folder to use the Rice plugin:

  • RiceVideoLinux.ini

Download it here.

Glide64mk2.ini is no longer needed in the current version of mupen64plus-libretro as it is baked into the Glide64 now.

Super Game Boy

Using recent builds of the bsnes libretro cores, you can load Game Boy games in a fully emulated Super Game Boy. As this feature is not currently implemented in RGUI, you must do so using a command line. First you need to set the core to a bsnes core (any of the 3 profiles will work) using RGUI or editing your config file, then start RetroArch with the following command to load GB games in SGB mode using bsnes:

retroarch "path to Super Game Boy SNES cartridge ROM" --gameboy "path to Game Boy cartridge ROM"

Put the actual paths to the ROMs in double quotes. For example:

retroarch "C:/Games/SNES/Super Game Boy 2 (Japan).sfc" --gameboy "C:/Games/Game Boy/Kirby's Dream Land (USA, Europe).gb"

You will need sgb.boot.rom in your System folder, this can be found on the Emulator Files page in the SNES file pack if you do not have it.

You can also use the RetroArch-Phoenix launcher to launcher to load them, but YMMV since it is not being updated anymore.

Dual Analog Controllers

PS1 games often used a set of default remappings if they didn't support it directly. Some games used both analogs as the D-pad, RetroArch doesn't support that though. Dual analogs only work in games that fully supported them, such as Ape Escape. To use dual analog for such games, go to Input Options, and change Device Type to JoyPad w/ Analog.

For full rumble and analog support in mednafen, you may need to set psx_enable_dual_analog_type to "dualshock" in .retroarch-core-options.cfg

Transfer PS1 Memory Card Files

Mednafen creates memory card files for each individual game, in contrast to PCSX-R/ePSXe where all game saves are stored into 2 memory card files. To transfer memory card files from PCSX-R/ePSXe to RetroArch:

  • Start game in RetroArch.
  • Go to system folder. Copy the names of the .mcr files created for the game.
  • Delete them.
  • Rename the files you want to transfer with the names of the RetroArch memcard files.
  • Place the new ones in the system folder.

PS1 Disk Changing

Option 1: To changes disks in-game, go to Disk Options > Disk Image Append.

Some games like Metal Gear Solid require the disk tray to be opened before changing disks. To do this, change 'Disk Index' to 'No Disk' first.

Option 2 (if the first option failed): Use i-File or i-FunBox or any applications possible to access root file. Go to var/mobile/Applications/ [RetroArch-icon folder] / Documents. Rename [disc1].srm to [disc2].srm in which [disc1] and [disc2] are the names of your discs.

FDS Disk Side Changing

Just press the configured "Y" button. RetroArch won't display any OSD message to confirm the change.

Gambatte GB custom palettes

It is possible to use the custom palettes created with the standalone Qt GUI version of Gambatte.

First set the "gb_colorization" core option as "custom". Then create a "palettes" subdirectory in the Gambatte core home directory and copy the custom palettes there.

The custom palettes will be searched in this order:

  • Your Rom Filename.pal
  • default.pal

You can download the set of standard SGB and GBC palettes here (look for "goomba2gambatte palette converter in python").

Cheat support

Since v1.2 cheat support is now available in all the cores.

It is also possible to use cheats with the mednafen-psx core by swapping a cheat disk (CodeBreaker/GameShark/etc.)

Audio DSP Plugins

RetroArch supports loading audio DSP plugins to add effects such as reverb to the audio output. This has been in RetroArch for a long time, but was recently reworked to be easier to use and more accessible from RGUI, and are available in the main RetroArch repository now. Now you can load DSP filters using RGUI under Settings\Audio Options\DSP Filter, where you can load a DSP preset with .dsp extension, which is a text file similar to a shader preset that lets you chain DSP filters and specify their options. The DSP filters themselves are dynamic libraries that are loaded according to the .dsp file. Each DSP filter has a standalone preset that documents the default options, and there are some example presets that combine more than one filter.

Note that some of these filters may reduce volume a bit, so you may want to boost RA's volume level to compensate. If you want to remove the filter, press Start when the DSP Filter option is highlighted.

The filters and their presets can be found here, which the DSP filters can be built for your platform with the makefile. Some precompiled Windows x64 builds of these filters can be obtained here.


Classic emulator filters like SuperEagle or Blargg's NTSC have been available as bSNES filter plugins in the past, which is no longer supported in bSNES/higan but was still available in RetroArch. However, this filter format was recently replaced with the SoftFilter spec, which has been upgraded to support more platforms, multi-threading and SIMD usage. The filters are dynamic libraries which are loaded in RGUI under Settings\Video\Soft Filter, which will apply the filter before any shaders are applied.

The filters are found here, which can be built for your platform with the makefile. Precompiled Windows x64 builds can be found here.

Note that these filters are WIP and may not work with all cores as they need to have codepaths for the pixel format the core uses (either 32bpp XRGB8888 or 16bpp RGB565). Blargg's NTSC is currently limited to 16bpp cores for example (bSNES is 32bpp so it won't work, but SNES9x is 16bpp so it works there). Cores that use Libretro GL for 3D like Mupen64plus can not use these filters.

Outputting log to a file

An easy way to get RetroArch to output logs to file for easy copy/pasting:

retroarch --menu --verbose >> log.txt 2>&1

It will load up to RGUI as if you just double clicked the executable, but it will redirect standard output and standard error to a text file called log.txt in your RetroArch folder. The command above will append to the log and not overwrite existing information, if you want it to overwrite, change ">>" into ">". This can be put into a .bat file to easily run it when desired.

Building from source

Main article: Building RetroArch

Libretro-super is a series of scripts used to ease the compilation and installation of each and every libretro emulation core and RetroArch itself. Thus this is the simplest route to a fully functional installation. If you need or want to build each core individually then you can refer to the script for direction.

git clone git://
cd libretro-super
bash <path where you'd like RetroArch installed>

If you want to build cores individually with the script instead of all of them at once, you can do this

bash build_libretro_<corename>

to call one core's build function directly instead of calling them all.


  • F1 - Open RGUI
  • F2 - Save state
  • F4 - Load state
  • F6 - Input save state slot decrease
  • F7 - Input save state slot increase
  • F8 - Take Screenshot
  • F9 - Mute Audio
  • F11 - Hide Cursor
  • Space - Turn off Frame Limiter
  • Esc - Exit game
  • f - Fullscreen
  • Select on Retropad - Info

Problems and Solutions

Command prompt running and closing itself upon running retroarch.exe

Open up retroarch.cfg using Notepad. Inside, you should find

config_save_on_exit = "true"

Now, under it, write

video_driver = "d3d9" or

video_driver = "gl"

External links