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 the package or alternatively AUR for the development version.
Each libretro core package will install a library to
/usr/lib/libretro/. The syntax to choose one when executing retroarch is:
$ retroarch --libretro /usr/lib/libretro/core-libretro.so /path/to/rom
A default core can be defined in the configuration, obviating the need to specify it on every run.
libretro_path = "/usr/lib/libretro/core-libretro.so"
RetroArch provides a very well commented skeleton configuration file located at
Copy the skeleton configuration file to your home directory
$ cp /etc/retroarch.cfg ~/.config/retroarch/retroarch.cfg
It supports split configuration files using the
#include "foo.cfg" directive within the main configuration file,
retroarch.cfg. This can be overridden using the
--appendconfig /path/to/config parameter and is beneficial if different keybinds, video configurations or audio settings are required for the various cores.
- AUR requires in order to use the cg shaders.
- When using ALSA it is necessary for the
audio_out_rateto be equal to the system's default output rate, usually
Tips and tricks
Enabling the Online Updater
Recent versions of RetroArch have introduced a built-in menu for updating and downloading core files and various assets from the libretro Buildbot. To enable it, open
~/.config/retroarch/retroarch.cfg and set
menu_show_core_updater = "true"
Core Updater Thumbnails Updater Content Downloader Update Core Info Files Update Assets Update Joypad Profiles Update Cheats Update Databases Update Overlays Update GLSL Shaders Update Slang Shaders
These cores and assets are kept up to date and can be pulled from the updater any time there's an update.
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.
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 will attempt to find cores in
/usr/lib/libretro/. Cores downloaded using the built-in Online Updater will fail to save unless RetroArch is run as root (not recommended, as it may overwrite cores installed by pacman and also because it poses a security risk.) because users do not normally have permission to modify this directory. To use a user-owned directory instead, edit these lines:
libretro_directory = "~/.config/retroarch/cores" libretro_info_path = "~/.config/retroarch/cores/info"
/usr/lib/libretro/regardless of this setting, because of this, it's recommended to stick to one method of obtaining cores, use the default directory when obtaining cores from the Community repository or the AUR or a user-owned directory (such as
~/.config/retroarch/cores) when using the Online Updater.
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.