retroarch
Run emulators, play retro games
TLDR
Start in the menu mode
Start in full screen mode
List all compiled features
Set the path of a configuration file
Display help
Display version
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.