RetroArch is the reference implementation of the libretro API. It is a modular front-end for video game system emulators, game engines, video games, media players and other applications that offers several uncommon technical features such as multi-pass shader support, real-time rewinding and video recording (using FFmpeg), it also features a gamepad-driven UI on top of a full-featured command-line interface.
- 1 Installation
- 2 Usage
- 3 Configuration
- 4 Tips and tricks
- 5 Troubleshooting
- 6 See also
Install or alternatively AUR for the development version.
RetroArch relies on separate libraries, called "cores", for most of its functionality. These can be downloaded per-user within RetroArch itself (via the libretro Buildbot) or you can install them system-wide via Community or AUR.
By default RetroArch is configured to load the per-user cores that it downloads. Change your #Configuration if you install them elsewhere.
The command to run a particular core is
$ retroarch --libretro /path/to/some_core_libretro.so /path/to/rom
When you first run RetroArch it will create the user configuration file
~/.config/retroarch/retroarch.cfg. If you install any RetroArch components system-wide with pacman, you should specify these in the global configuration file and include them in your user file. For example,
# for retroarch-assets-xmb assets_directory = "/usr/share/retroarch/assets" # for libretro-core-info libretro_info_path = "/usr/share/libretro/info" # for libretro cores libretro_directory = "/usr/lib/libretro"
If you want to override your configuration (for example when running certain cores) you can use the
--appendconfig /path/to/config command line option.
Tips and tricks
Disabling the Online Updater
If you prefer to install all RetroArch components with pacman, you can disable RetroArch's built-in updater to prevent accidentally installing components the wrong way.
menu_show_core_updater = "false"
Enabling SaveRAM Autosave Interval
By default, RetroArch only writes SRAM onto disk when it exits without error, which means that there's a risk of losing save data when using crash-prone cores. To change this behavior, open
~/.config/retroarch/retroarch.cfg and set
autosave_interval to n.
autosave_interval = "600"
With the example above, RetroArch will write SRAM changes onto disk every 600 seconds.
Filters and shaders
Reset settings to their default value
To reset a setting or keybind to its default value through the GUI, highlight it and press
Start. To remove a button from a keybind, highlight the keybind and press
No cores found
By default RetroArch searches for cores in
~/.config/retroarch/cores, which is where the Online Updater installs them. Cores installed with pacman are placed in
/usr/lib/libretro and thus will not appear in RetroArch's GUI. You should choose one method of installing cores (pacman or the Online Updater) and change your #Configuration to match.
Input devices do not operate
You may encounter problems if running on a CLI or a display server other than Xorg or if you use the udev input driver, because
/dev/input nodes are limited to root-only access. Try adding your user to the "input" group then logging in again.
Alternatively, manually add a rule in
KERNEL=="event*", NAME="input/%k", MODE="666" as its contents. Reload udev rules by running:
# udevadm control --reload-rules
If rebooting the system or replugging the devices are not options, permissions may be forced using:
# chmod 666 /dev/input/event*
Poor video performance
If poor video performance is met, RetroArch may be run on a separate thread by setting
video_threaded = true in
This is, however, a solution that should be not be used if tweaking RetroArch's video resolution/refresh rate fixes the problem, as it makes perfect V-Sync impossible, and slightly increases latency.
Audio issues with ALSA
When using ALSA the
audio_out_rate must match the system's default output rate, usually