RetroArch – Multi-System Emulator Frontend
Play Classic Games Across Every Platform with RetroArch
RetroArch serves as the ultimate frontend for emulation, providing a unified interface to play games from dozens of classic gaming systems through a single application. Built on the libretro API, RetroArch separates the frontend interface from emulation cores, allowing developers to create optimized emulators that plug seamlessly into a consistent user experience across Windows, Linux, macOS, Android, iOS, and even gaming consoles.
The project represents the culmination of the emulation community’s collective expertise, offering features like shaders that recreate CRT monitor aesthetics, netplay for online multiplayer, achievements through RetroAchievements integration, and cloud saves across devices. For preservationists and retro gaming enthusiasts, RetroArch provides the most comprehensive solution for experiencing gaming history.
Installation
Linux Installation
Ubuntu/Debian:
sudo add-apt-repository ppa:libretro/stable
sudo apt update
sudo apt install retroarch
Fedora:
sudo dnf install retroarch
Arch Linux:
sudo pacman -S retroarch retroarch-assets-xmb
Flatpak:
flatpak install flathub org.libretro.RetroArch
macOS Installation
brew install --cask retroarch
Windows Installation
winget install Libretro.RetroArch
# or
choco install retroarch
Android Installation
Available on Google Play Store or F-Droid.
Core Management
Installing Cores
Cores are the emulators that run games. Install via:
Main Menu > Online Updater > Core Downloader
Or via command line:
retroarch --menu --menu-entry-hover "Online Updater"
Popular Cores
# Nintendo Systems
- NES: Mesen / FCEUmm
- SNES: bsnes / Snes9x
- N64: Mupen64Plus-Next / ParaLLEl N64
- GBA: mGBA / VBA-M
- DS: melonDS / DeSmuME
- 3DS: Citra (standalone)
# Sony Systems
- PS1: Beetle PSX HW / PCSX ReARMed
- PS2: PCSX2 (standalone recommended)
- PSP: PPSSPP
# Sega Systems
- Genesis/Mega Drive: Genesis Plus GX
- Saturn: Beetle Saturn / Yabause
- Dreamcast: Flycast
# Other Systems
- Arcade: FinalBurn Neo / MAME
- Atari: Stella (2600)
- DOS: DOSBox Pure
Basic Configuration
Setting Up Directories
Settings > Directory
??? System/BIOS: ~/RetroArch/system
??? Saves: ~/RetroArch/saves
??? States: ~/RetroArch/states
??? Screenshots: ~/RetroArch/screenshots
??? Playlists: ~/RetroArch/playlists
Controller Configuration
Settings > Input > Port 1 Controls
# Map your controller buttons
# Save controller profile
Settings > Input > User 1 Binds > Save Controller Profile
Hotkeys
Settings > Input > Hotkeys
- Save State: F2
- Load State: F4
- Fast Forward: Space
- Pause: P
- Screenshot: F8
- Menu Toggle: F1
- Quit: Escape
Video Configuration
Display Settings
Settings > Video > Output
- Video Driver: vulkan (recommended) / gl / glcore
- Fullscreen Mode: On/Off
- Windowed Scale: 3x-5x for retro feel
Settings > Video > Scaling
- Integer Scale: On (prevents blurring)
- Aspect Ratio: Core Provided
Shaders (CRT Effects)
Quick Menu > Shaders > Load Shader Preset
Popular presets:
- shaders_slang/crt/crt-royale.slangp (best quality)
- shaders_slang/crt/crt-lottes.slangp (balanced)
- shaders_slang/interpolation/sharp-bilinear-2x-prescale.slangp (sharp)
Update Shaders
Main Menu > Online Updater > Update Slang Shaders
Creating Playlists
Automatic Scanning
Import Content > Scan Directory
# Select your ROM folder
# RetroArch matches against database
Manual Playlist Creation
# ~/.config/retroarch/playlists/Nintendo - Game Boy.lpl
{
"version": "1.4",
"default_core_path": "/path/to/mgba_libretro.so",
"default_core_name": "mGBA",
"items": [
{
"path": "/roms/gb/Pokemon Red.gb",
"label": "Pokemon Red",
"core_path": "DETECT",
"core_name": "DETECT"
}
]
}
Advanced Features
Netplay (Online Multiplayer)
# Host a game
Main Menu > Netplay > Start Netplay Host
# Join a game
Main Menu > Netplay > Connect to Netplay Host
# Enter host IP address
Achievements
Settings > Achievements
- Enable: On
- Username: your_retroachievements_username
- Password: your_password
# Register at retroachievements.org
Run Ahead (Reduce Latency)
Quick Menu > Latency > Run-Ahead
- Run-Ahead to Reduce Latency: On
- Number of Frames: 1-2
- Use Second Instance: On (for compatible cores)
Rewind
Settings > Frame Throttle > Rewind
- Rewind Support: On
- Rewind Buffer Size: 100 MB
Command Line Usage
Launch Games Directly
# Launch specific game with core
retroarch -L /path/to/core.so /path/to/rom.zip
# Example for SNES
retroarch -L ~/.config/retroarch/cores/snes9x_libretro.so ~/roms/snes/game.sfc
# Launch in fullscreen
retroarch -f -L core.so game.rom
# List available cores
ls ~/.config/retroarch/cores/
Configuration Override
# Use specific config
retroarch --config /path/to/custom.cfg
# Append config
retroarch --appendconfig /path/to/override.cfg -L core.so game.rom
BIOS Files
Required BIOS
# Place in system directory
~/.config/retroarch/system/
# PS1
scph5501.bin (US) / scph5500.bin (JP) / scph5502.bin (EU)
# Sega CD
bios_CD_U.bin / bios_CD_J.bin / bios_CD_E.bin
# GBA (optional, improves compatibility)
gba_bios.bin
Steam Deck / Gaming Handhelds
Steam Deck Setup
# Install via Flatpak in Desktop Mode
flatpak install flathub org.libretro.RetroArch
# Add to Steam as non-Steam game
# Configure controls for each core
Troubleshooting
Black Screen
# Try different video driver
Settings > Video > Output > Video Driver
# Switch between vulkan, gl, glcore
Audio Issues
Settings > Audio > Output
- Audio Driver: pulse / alsa / sdl2
- Audio Latency: 64ms (lower = less delay, may cause crackling)
Controller Not Detected
Settings > Input > Port 1 Controls
- Device Type: Ensure correct type selected
- Bind All: Remap all buttons
RetroArch transforms any device into a comprehensive retro gaming station. Its modular architecture, extensive feature set, and cross-platform availability make it the definitive solution for preserving and playing classic games. Whether on a powerful desktop or a portable device, RetroArch delivers authentic gaming experiences with modern conveniences.
Download Options
Safe & Secure
Verified and scanned for viruses
Regular Updates
Always get the latest version
24/7 Support
Help available when you need it