How to Set Up RetroArch and Install Libretro Cores
A complete walkthrough from a fresh RetroArch install to a properly configured, playable core — including the two steps most first-time setups skip.
RetroArch ships without any emulation cores built in — the frontend and the actual per-system emulation logic are separate downloads by design (see inside libretro for why). This walks through a complete setup from installation to a properly running game.
Step 1: install RetroArch
Download from the official source for your platform (retroarch.com, or your OS’s package manager):
# macOS (Homebrew)
brew install --cask retroarch
# Windows / Linux: use the installer or package from retroarch.com,
# or your distribution's package manager, e.g.:
sudo apt install retroarch # Debian/Ubuntu
Step 2: update the core downloader’s buildbot list
Before cores can be installed, RetroArch needs its list of available cores refreshed from the buildbot:
Main Menu → Online Updater → Update Core Info Files
Skipping this step is the most common reason a freshly installed RetroArch shows an empty or outdated core list.
Step 3: download a core for the system you want to emulate
Main Menu → Online Updater → Core Downloader → [select a system,
e.g. "Nintendo -
SNES / Super
Famicom (Snes9x)"]
Multiple cores often exist for the same system, trading off accuracy against performance — Snes9x prioritizes speed and broad compatibility, while bsnes-family cores prioritize cycle accuracy at higher performance cost (see cycle-accurate emulation for what that trade-off actually means). Starting with the most popular/default option for a system is reasonable; switching cores later is just re-running this step.
Step 4: set up your content (ROM) directory
Settings → Directory → Downloads / Assets / Cores → set paths that
match where your legally-owned game files live
Main Menu → Load Content → [navigate to that directory]
RetroArch scans directories rather than requiring files in one fixed location, so pointing it at wherever your content already lives is enough.
Step 5: build a playlist for easier access (optional but recommended)
Main Menu → Import Content → Manual Scan → [select your content
directory and the matching core] → Start Scan
This creates a playlist entry per game with box art and metadata (if available) rather than needing to browse the raw file system every time, and remembers which core each game should launch with.
Step 6: configure your controller
Settings → Input → Port 1 Controls → Set All (Manual Bind)
Most common controllers are recognized automatically via RetroArch’s autoconfig database; if buttons are mapped incorrectly or the controller isn’t recognized at all, see fixing a controller that isn’t detected for a full troubleshooting path.
Step 7: launch and verify
Main Menu → Load Content → [your playlist or file] → confirms
the core loads and runs at a stable frame rate
Check the on-screen frame-rate display (Settings → Onscreen Display → Onscreen Notifications) on first launch to confirm the core is actually running at full speed before assuming the setup is complete.
Why the core/frontend split matters here in practice
Every step above — installing the frontend once, then downloading whichever cores you actually need — is a direct, hands-on consequence of RetroArch’s core/frontend architecture: one installation, one settings menu, one controller configuration, reused identically across however many different systems’ cores you add on top of it.