LinuxCommandLibrary

retroarch

Run emulators, play retro games

TLDR

Start in the menu mode

$ retroarch
copy

Start in full screen mode
$ retroarch --fullscreen
copy

List all compiled features
$ retroarch --features
copy

Set the path of a configuration file
$ retroarch --config=[path/to/config_file]
copy

Display help
$ retroarch --help
copy

Display version
$ retroarch --version
copy

SYNOPSIS

retroarch [options] [content_file_path]
retroarch -L core_path [options] [content_file_path]
retroarch --menu

PARAMETERS

-L, --libretro
    Loads a specific Libretro core (e.g., /usr/lib/libretro/snes9x_libretro.so).

-f, --fullscreen
    Starts RetroArch immediately in fullscreen mode.

-c, --config
    Specifies an alternative configuration file to load instead of the default.

--menu
    Launches RetroArch directly into its graphical user interface menu.

-s, --load-state
    Loads a specific savestate file when content is loaded.

-S, --save-state-on-exit
    Saves a savestate to the specified file upon exiting content.

-v, --verbose
    Enables verbose logging, providing more detailed output to the console.

--set-libretro-path
    Overrides the default directory where Libretro cores are searched for.

--scan-directory
    Scans a directory for supported content and adds it to playlists.

--output-directory
    Sets the base directory for screenshots, savestates, and other generated files.

--version
    Displays the RetroArch version information and exits.

DESCRIPTION

RetroArch is a free, open-source, and cross-platform frontend for the Libretro API. It consolidates a vast array of emulators, game engines, video games, media players, and other applications into a single, cohesive interface. By leveraging a modular system known as cores, RetroArch allows users to run diverse content ranging from classic arcade games and retro console titles to modern homebrew applications.

Its powerful feature set includes advanced video shaders for enhanced graphics, netplay for online multiplayer, robust save state and rewind capabilities, and highly configurable input remapping. RetroArch aims to provide a unified, low-latency, and feature-rich experience for retro gaming and media consumption across various operating systems and devices, making it a cornerstone for game preservation and emulation enthusiasts.

CAVEATS

RetroArch's extensive configuration options can be daunting for new users, requiring a learning curve to fully utilize its capabilities.
Cores must be downloaded separately, often through the in-application updater, or manually placed in the correct directories.
Performance can vary significantly depending on the chosen core, content, and the host system's hardware, especially when using advanced video shaders or high-resolution packs.

LIBRETRO CORES

Libretro cores are dynamic libraries (e.g., .so files on Linux) that implement the Libretro API. Each core is essentially a specific emulator (e.g., SNES9x, PCSX2, Dolphin) or game engine, allowing RetroArch to run different types of content without needing to be rebuilt for each system. Users typically download and manage cores via RetroArch's internal Core Downloader.

CONFIGURATION FILES

RetroArch relies heavily on configuration files, typically located at ~/.config/retroarch/retroarch.cfg or system-wide under /etc/retroarch.cfg. These plaintext files control every aspect of RetroArch's behavior, including video settings, input binds, directory paths, and UI preferences. Per-core or per-game configuration overrides are also possible, offering granular control.

USER INTERFACE (UI) DRIVERS

RetroArch offers several customizable UI drivers, allowing users to choose their preferred look and feel. Popular drivers include XMB (inspired by PlayStation XMB), Ozone (a modern, clean interface), and RGUI (a lightweight, text-based interface ideal for resource-constrained systems or command-line navigation). These can be switched within the settings or via command-line options.

HISTORY

RetroArch began its life around 2010 as SSNES, a Super Nintendo Entertainment System emulator. Its developers soon realized the potential for a unified API to run various emulators, leading to the creation of the Libretro API. RetroArch then evolved as the primary frontend for this API, allowing different emulators (now called cores) to plug into a standardized interface. This architectural shift significantly simplified development and distribution of emulators and their features. Over the years, it has grown into a highly flexible and powerful platform supporting hundreds of cores and a vast array of features, becoming a cornerstone of the open-source emulation community.

Copied to clipboard