Difference between revisions of "RetroArch"

From ArchWiki
Jump to navigation Jump to search
m (→‎No cores found: used colon instead of period, as the sentence is referring to the following table)
m (Added translation spanish)
Line 1: Line 1:
{{Note|RetroArch is not affiliated with [[Arch Linux]].}}
{{Note|RetroArch is not affiliated with [[Arch Linux]].}}

Revision as of 01:52, 14 September 2017

Note: RetroArch is not affiliated with Arch Linux.

RetroArch is a modular, command-line driven, multi-system emulator that is designed to be fast, lightweight, and portable. Some of its features can be found on few other emulators, such as real-time rewinding and game-aware shading based on the libretro API.


1. Install the retroarch package or alternatively retroarch-gitAUR for the development version.

2. Install retroarch-assets-xmb package to Show XMB menu assets , Properly.


RetroArch uses separate libraries, called "emulator cores" or "emulator implementations", available from both Community and the libretro GitHub repository.

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/libretro-core.so path/to/rom

A default emulation core can be defined in the configuration, obviating the need to specify it on every run.

/etc/retroarch.cfg or ~/.config/retroarch/retroarch.cfg
libretro_path = "/usr/lib/libretro/libretro-core.so"


RetroArch provides a very well commented skeleton configuration file located at /etc/retroarch.cfg.

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 implementations.

Tip: RetroArch is capable of loading bsnes xml filters and cg shaders that can be defined in retroarch.cfg as video_bsnes_shader and video_cg_shader respectively.
Note: retroarch-gitAUR requires nvidia-cg-toolkit in order to use the cg shaders.
Warning: When using ALSA it is necessary for the audio_out_rate to be equal to the system's default output rate, usually 48000.

Online updater

Recent versions of RetroArch have introduced a built-in menu for updating core files and various assets from the RetroArch Buildbot. It can be accessed from the main menu at "Online Updater".

Online Updater
Core Updater
Update Core Info Files
Update Assets
Update Autoconfig Profiles
Update Cheats
Update Databases
Update Overlays
Update GLSL Shaders

These cores and assets are kept up to date and can be pulled from the updater at any time.


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), since the user does not have permission to modify this directory. To use cores from the Online Updater, edit these lines:

libretro_directory = "~/.config/retroarch/cores"
libretro_info_path = "~/.config/retroarch/cores/info"

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, e.g.

# usermod -a -G input username

Alternatively, manually add a rule in /etc/udev/rules.d/99-evdev.rules, with 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 ~/.config/retroarch/retroarch.cfg.

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.

See also