The Complete Guide to RetroArch
RetroArch is the closest thing retro gaming has to a universal remote. One app, a long list of emulators under the hood, consistent controls across most of the classic gamepad-based systems, and the same save-state and shader pipeline everywhere. It runs on Windows, macOS, Linux, Android, iOS, the Steam Deck, the Raspberry Pi, a long list of homebrew-enabled consoles, and even inside a web browser.
It is also confusing on first contact. This guide fixes that.
We consolidated 111 smaller RetroArch articles into a single reference and then had the result fact-checked by a second AI model before publication. If you want a quick answer, use the table of contents. If you want to actually understand what RetroArch is doing, read it straight through.
What Is RetroArch? {#what-is-retroarch}
RetroArch is a frontend, not an emulator. That distinction matters.
An emulator imitates a specific console — Dolphin emulates the GameCube and Wii, PCSX2 emulates the PlayStation 2, mGBA emulates the Game Boy Advance. RetroArch, on its own, emulates nothing. What it does is provide a consistent interface, hotkey system, save-state mechanism, shader pipeline, and controller layer that can host any emulator written to a shared API called libretro.
Those libretro-compatible emulators are called cores. You pick a core for the system you want to play — Snes9x for SNES, Beetle PSX HW for PlayStation 1, mGBA for Game Boy Advance — and RetroArch loads it, hands it your ROM, and displays the output. The menus, shortcuts, save states, and shaders stay the same across every core.
That is the whole idea. Instead of learning ten emulators, you learn one frontend and swap the engine under the hood.
RetroArch is open-source software released under the GPLv3 licence. The project started in 2010 under the name SSNES and was renamed to RetroArch in April 2012 as its multi-system scope took shape. Today it is maintained by the Libretro team and a large community of core developers, and ships on most platforms you can think of.
It is free, and it is legal to download in most jurisdictions. The legality of the ROMs you load into it is a separate matter, discussed further down.
Is RetroArch Safe, Legal, and Any Good? {#is-retroarch-safe-and-legal}
RetroArch itself is safe. It is an open-source project distributed from known-good sources, and its code can be audited by anyone. Official builds have no bundled adware or malware, and there are no "activation" servers that could fail and lock you out.
Where users get into trouble is with unofficial repackaged builds — third-party APKs for Android, .exe installers on shady retro-gaming download portals, and cracked frontends that bundle RetroArch with pirated ROMs and adware. Stick to the official sources listed below and you will never have a problem:
Is it legal? Yes, RetroArch itself is. It contains no copyrighted console code, no games, and no BIOS files. It is a frontend that can run libretro cores, and cores are emulators built without shipping any of the original console firmware. Emulators of long-discontinued consoles are legal to distribute in many jurisdictions — the US precedent most people cite is Sony Computer Entertainment v Connectix (2000), though that ruling is US-specific rather than a global rule.
What is not automatically legal is the content you play on RetroArch. Dumping your own cartridges and discs for personal use is often legal in many jurisdictions, but downloading ROMs for games you do not own is copyright infringement in the US, UK, EU, and nearly every other major legal system. RetroArch does not help you with this and does not want to. Bring your own ROMs.
You may have seen news about Yuzu (the Nintendo Switch emulator) settling with Nintendo in March 2024 for $2.4 million, and about Ryujinx going dark in October 2024 after Nintendo contacted its lead developer. Both projects are gone. RetroArch has not been targeted — likely in part because it is a frontend and does not distribute Switch emulation code or ship a libretro Switch core. Nintendo's issue with Yuzu was not emulators in general; it was specifically an emulator for a current, commercially active console bundled with decryption tooling. RetroArch steers well clear of that category.
Is RetroArch any good? Once configured, yes. It is the most powerful retro gaming frontend you can install. It has features standalone emulators do not bother with — per-core frame-level shader chains, rollback netplay, RetroAchievements integration, AI translation via OCR, runahead latency reduction — and it does all of this with the same UI on your phone, your PC, your Steam Deck, and your Xbox Series X in developer mode. The learning curve is the price.
What Can RetroArch Emulate? The Compatibility Matrix {#what-can-retroarch-emulate}
The short version: almost everything from the cartridge era up to the sixth generation of consoles, plus a long tail of handhelds, home computers, and arcade boards. The table below groups the systems RetroArch covers well, adequately, and poorly. "Core" column lists the recommended libretro core; we cover them in detail in Best Cores by System.
| System | Support | Recommended core(s) | Notes |
|---|---|---|---|
| Atari 2600 | Well supported | Stella | |
| Atari 5200 / 7800 / Lynx | Well supported | a5200, ProSystem, Handy / Beetle Lynx | |
| Atari Jaguar | Partial | Virtual Jaguar | Some 3D games still problematic. |
| NES / Famicom | Strong | FCEUmm, Nestopia UE, Mesen | Mesen for accuracy, FCEUmm for compatibility. |
| SNES / Super Famicom | Strong | Snes9x, bsnes-mercury, Mesen-S | bsnes for accuracy, Snes9x for speed. |
| Nintendo 64 | Usable | Mupen64Plus-Next, ParaLLEl N64 | ParaLLEl + RDP Vulkan plugin for accuracy. |
| GameCube / Wii | Rough | Dolphin (libretro) | Libretro port lags behind standalone Dolphin; use standalone unless you need RetroArch integration. |
| Wii U | Poor | — | No viable libretro Cemu core; use standalone Cemu. |
| Nintendo DS | Strong | melonDS DS, DeSmuME | melonDS DS for modern accuracy, DeSmuME for broad compatibility. |
| Nintendo 3DS | Rough | Citra | Citra standalone was discontinued March 2024 but a libretro fork still ships; accuracy behind standalone forks. |
| Nintendo Switch | Not supported | — | No Switch core exists. |
| Game Boy / Color / Advance | Strong | mGBA, Gambatte, SameBoy | mGBA for GBA, Gambatte/SameBoy for GB/GBC accuracy. |
| Sega Master System / Game Gear | Strong | Genesis Plus GX, SMS Plus GX | |
| Sega Mega Drive / Genesis / Mega CD | Strong | Genesis Plus GX, PicoDrive | Mega CD BIOS required. |
| Sega 32X | Usable | PicoDrive | PicoDrive is the 32X core; Genesis Plus GX does not cover 32X. |
| Sega Saturn | Usable | Beetle Saturn, Kronos, YabaSanshiro | Beetle for accuracy; Kronos for performance. |
| Sega Dreamcast / NAOMI / Atomiswave | Strong | Flycast | Gold standard for Dreamcast on libretro. |
| PlayStation 1 | Strong | Beetle PSX HW, SwanStation, PCSX ReARMed | Beetle PSX HW for accuracy on PC, ReARMed for mobile/weak hardware. |
| PlayStation 2 | Good (2025+) | LRPS2, PCSX2 (libretro) | LRPS2 launched January 2025 with the paraLLEl-GS Vulkan renderer; standalone PCSX2 still most capable overall. |
| PlayStation 3 | Not supported | — | No RPCS3 libretro core; use standalone RPCS3. |
| PlayStation 4 / 5 | Not supported | — | RetroArch has no PS4/PS5 core. |
| PSP | Strong | PPSSPP | Official libretro PPSSPP port. |
| PS Vita | Not supported as an emulated target | — | Use standalone Vita3K for Vita emulation. |
| Xbox (original) | Very limited | — | No production-ready libretro Xbox core; xemu standalone exists. |
| Xbox 360 | Not supported | — | RetroArch has no Xbox 360 core. Desktop Xbox 360 emulation is handled by standalone Xenia. |
| Arcade (pre-2000) | Strong | FBNeo, MAME 2003 Plus, MAME current | FBNeo for CPS/Neo Geo/Taito; MAME 2003 Plus for broad compatibility with smaller ROM sets. |
| Arcade (3D / post-2000) | Usable | Flycast (NAOMI / Atomiswave) | For Model 2/3/Chihiro era, use standalone emulators. |
| Neo Geo AES / CD | Strong | FBNeo, Genesis Plus, NeoCD | neogeo.zip BIOS required. |
| TurboGrafx-16 / PC Engine / SuperGrafx / CD | Strong | Beetle PCE / PCE Fast | |
| 3DO | Usable | Opera (formerly 4DO) | |
| Amiga / C64 / ZX Spectrum | Usable | PUAE, VICE, FUSE | |
| MS-DOS games | Strong | DOSBox Pure | Scans .conf and ships with shader presets. |
| ScummVM adventure games | Strong | ScummVM (libretro) |
The three big exclusions: Nintendo Switch, PlayStation 3 and up, and Xbox 360. Those systems have no viable libretro core. If someone tells you otherwise, they are mistaken or they are telling you about RetroArch running on that console (which is a different thing — see the platform sections later in this guide).
"Can RetroArch Play [System] Games?" — Quick Answers {#can-retroarch-play-specific-systems}
A variant of this question exists for every console, and the confusion is almost always the same: people conflate "RetroArch runs on X" with "RetroArch emulates X". Those are completely different statements.
The pattern: for many systems up to and including the sixth console generation (PS2 / GameCube / Dreamcast) and their handheld contemporaries, RetroArch has a usable core — though not all of them (the original Xbox is the notable hole). After that generation, you are in standalone emulator territory.
Can RetroArch read ZIP files? Often yes. Many cores that accept single-file ROMs (NES, SNES, Genesis, GBA, etc.) unpack .zip and sometimes .7z archives transparently. Support varies by core and platform. Disc-based cores (PS1, Saturn, Dreamcast) prefer their content as .chd, .cue/.bin, .iso, or .pbp; they will read a zipped CD image but expect one valid disc image inside.
System Requirements {#system-requirements}
There is no single spec sheet for RetroArch because the demands depend entirely on which cores you run. Roughly:
RAM is rarely the bottleneck — 4 GB is usually enough. The GPU and single-core CPU speed are what matter, plus Vulkan or Metal support for the modern backends.
Android: older devices sometimes run better on the 32-bit APK than on the 64-bit build. If a heavy core crashes on install, try the 32-bit variant.
How to Download and Install RetroArch {#how-to-download-and-install-retroarch}
The single source of truth for downloads is retroarch.com. From the front page, click Downloads, pick your platform, and grab either:
Each platform has its own quirks, and we cover every one of them in the platform-specific sections below — Windows / macOS / Linux, Android, iOS, Steam Deck, Nintendo Switch, Xbox, Raspberry Pi, PlayStation 3 / Vita / PSP / PS2, and Wii / Wii U / 3DS. For now, the generic flow is:
Pick the row for your device.
Download the current stable build (as of April 2026, v1.22.2 released November 20, 2025). Nightlies from buildbot.libretro.com are fine if you need a recent feature but stable is the default.
Run the installer or unpack the archive.
Launch RetroArch.
On first launch you see an empty main menu. Before you can play anything you need to install at least one core (the emulator-per-system module) and have one ROM to feed it.
How to install RetroArch on [platform X]:
How to Use RetroArch — A First-Run Walkthrough {#how-to-use-retroarch}
This is the flow every new user goes through. Learn it once and every platform works the same way.
1. Install a core.
From the main menu, pick Online Updater → Core Downloader. Scroll to the system you want — say "Nintendo - Super Nintendo Entertainment System" — and pick a core like Snes9x. RetroArch downloads it and drops it in the cores/ folder.
2. Import your ROMs.
Copy your ROM files into a dedicated folder — something like C:\ROMs\SNES\ on Windows or ~/roms/snes/ on Linux and macOS. ROMs can be single-file (.sfc, .smc for SNES) or archives (.zip containing the ROM).
From the main menu pick Import Content → Scan Directory, navigate to your ROMs folder, and let RetroArch scan. It matches filenames and CRC checksums against its internal content database and builds a playlist — an entry in the main menu for each system it found.
3. Download thumbnails.
With the playlist present, go to Online Updater → Update Playlists → Update Thumbnails and RetroArch pulls boxart, in-game screenshots, and title-screen images from the libretro-thumbnails GitHub repository. No more wall of filenames.
4. Launch a game.
Pick the playlist (e.g. "Super Nintendo Entertainment System"), pick a game, and press the cross / A / Enter to load. RetroArch asks which core to use if more than one is installed; pick Snes9x, and you are playing.
5. Access the in-game Quick Menu.
Press F1 on keyboard to open the Quick Menu. On controllers, RetroArch does not ship a universal default combo — bind one under Settings → Input → Hotkeys → Menu Toggle (Controller Combo). From the Quick Menu you can save state, load state, enable shaders, turn on cheats, change controller mappings, and resume. The Quick Menu is the single most important part of the RetroArch UI — it is where everything per-game happens.
6. Save and exit cleanly.
Games save progress in two ways: native in-game saves (written to the emulated cartridge or memory card and saved automatically when you return to the main menu), and save states (a full RAM snapshot you can take at any moment via Save State in the Quick Menu). Always prefer native saves where they exist; save states are for experimenting and for games that never shipped with a save feature.
That is the complete loop: install core, scan ROMs, download thumbnails, launch, play, save. Everything else in this guide is refinement.
Understanding Cores and the Libretro API {#understanding-cores}
A core is a shared library (a .dll, .dylib, .so, .rpx, .3dsx — whichever fits the host platform) that implements the libretro API. The API is deliberately minimal: a core must expose functions that describe itself, initialise, accept input, run a frame of emulation, and hand RetroArch the resulting video and audio buffers. That is it.
This minimalism is why the libretro/RetroArch ecosystem has grown so wide. Porting an existing emulator to libretro is usually a few hundred lines of glue code rather than a full rewrite. Most major emulators (Snes9x, Dolphin, PPSSPP, Mupen64Plus, mGBA, Flycast, Mednafen) have libretro ports or forks, with maintenance varying by project — some cores track upstream closely, others lag. Some projects (Beetle PSX, Beetle Saturn, Beetle PCE) exist only as libretro cores.
A few things follow from the design:
.info file that RetroArch uses to label it, declare supported extensions, and list required BIOS. If a core is misbehaving, Information → Core Information is your first diagnostic..dll does not work on Linux; the x86-64 .so does not work on ARM. RetroArch's core downloader gives you the correct binary for your host.When people talk about "the latest RetroArch cores" they usually mean either the buildbot nightly cores or the latest stable cores rebuilt alongside a RetroArch point release. Keep cores updated via Online Updater → Update Installed Cores whenever you update RetroArch itself.
Best Cores by System {#best-cores-by-system}
Not every core is created equal. The list below is our recommendation per system for a typical modern desktop or handheld — accuracy-first where accuracy is realistic, performance where it is not. For each core we note what it does well and when to pick a different one.
NES / Famicom
SNES / Super Famicom
Game Boy / GBC / GBA
Nintendo 64
N64 emulation is the one place where per-game settings still matter. GoldenEye 007, Perfect Dark, Indiana Jones and the Infernal Machine, and a handful of others want specific plugin or accuracy configurations. Use Save Game Options in the Quick Menu.
GameCube / Wii
Our blunt recommendation: if you want Dolphin, install standalone Dolphin. We have a complete Dolphin guide that covers everything. Only use the libretro core if you have a deliberate reason (shader integration, a frontend like Batocera).
Nintendo DS
3DS
Sega Master System / Mega Drive / Mega CD / Game Gear
Saturn
Dreamcast / NAOMI / Atomiswave
PlayStation 1
PlayStation 2
Standalone PCSX2 remains the most capable PS2 emulator overall, so if you are doing dedicated PS2 emulation outside a retro-frontend context, use that.
PSP
Arcade
Home computers
DOS / ScummVM
.conf files, has a built-in shader pass tuned for DOS resolutions, reads ZIP archives directly.A rule of thumb: when two cores exist for a system, start with the default recommendation above. If you hit a specific compatibility issue, switch. Most users never need to.
BIOS Files — Where to Put Them and Which You Need {#bios-setup}
RetroArch ships no BIOS files. This is deliberate — BIOS ROMs are copyrighted console firmware, and distributing them would turn RetroArch into a piracy vehicle instead of a clean frontend. Some cores do not need BIOS at all (NES, SNES, Game Boy, most 8/16-bit cores, PPSSPP for PSP); some cores refuse to run without it (Sega CD, Dreamcast, Saturn, PS1 with Beetle PSX). You have to source BIOS files yourself — the safest legal route in many jurisdictions is to dump them from hardware you own.
Where BIOS files live: all BIOS goes in the system/ directory inside your RetroArch install. The actual path differs per platform (standard Windows, macOS, Linux-distro package, and Linux Flatpak all put it in slightly different places). Instead of memorising paths, open Settings → Directory → System/BIOS inside RetroArch and it shows you the exact folder on your device.
Per-core BIOS requirements
| Core / system | BIOS files required | Notes |
|---|---|---|
| Beetle PSX / Beetle PSX HW (PS1) | scph5500.bin, scph5501.bin, scph5502.bin | One per region. Exact filenames mandatory. |
| SwanStation (PS1) | Same as Beetle PSX or psxonpsp660.bin | Can run BIOS-less for most games but compatibility drops. |
| LRPS2 / PCSX2 libretro (PS2) | SCPH-xxxxx.bin region BIOS + EE/GS sub-files | Region-matched BIOS for the game. Check Core Information → Firmware for the exact file list the installed core wants. |
| Beetle Saturn / YabaSanshiro / Kronos | saturn_bios.bin + region variants | sega_101.bin, mpr-17933.bin, mpr-18811-mx.ic1, mpr-19367-mx.ic1 where needed. |
| Genesis Plus GX (Sega CD) | bios_CD_E.bin, bios_CD_U.bin, bios_CD_J.bin | Region-specific Sega CD BIOS. |
| Flycast (Dreamcast) | dc_boot.bin, dc_flash.bin | Required for most Dreamcast games. dc_boot.bin for VMU menu, dc_flash.bin for save support. |
| Flycast (NAOMI / Atomiswave) | naomi.zip, awbios.zip | Arcade BIOS zips. |
| DeSmuME / melonDS DS | bios7.bin, bios9.bin, firmware.bin | Required by melonDS for authentic boot. Optional on DeSmuME. |
| Citra | DSP firmware + 3ds_sysarchive/ | Partial — system archive needed for certain games. |
| mGBA | gba_bios.bin | Optional. Enables intro screen and improves compatibility in a handful of games. |
| FCEUmm / Nestopia (FDS) | disksys.rom | Famicom Disk System only. |
| FBNeo / MAME (Neo Geo) | neogeo.zip | Required for Neo Geo AES/MVS games. |
| Beetle PCE (PC Engine CD) | syscard3.pce | CD-ROM² games. |
| Opera (3DO) | panafz1.bin | Or equivalent regional 3DO BIOS. |
"Firmware is missing" — how to fix it
This message appears when:
The BIOS file is in the wrong folder. Check Settings → Directory → System/BIOS and make sure your files are actually there.
The BIOS filename is wrong. Every expected filename is case-sensitive on Linux / Android / macOS. SCPH5500.bin is not the same as scph5500.bin on those systems.
The BIOS checksum is wrong. RetroArch validates most BIOS against known-good hashes. A BIOS file edited or truncated will fail the check even with the right name.
To see which BIOS RetroArch expects for a core: load the core, open Information → Core Information → Firmware. You get a table showing each expected file, its role, and whether RetroArch has found it.
BIOS packs
Searches for "RetroArch BIOS pack" and "RetroArch BIOS pack 2025" return pre-assembled archives floating around the internet. These are legally murky — you do not own a licence to those firmware ROMs unless you own the hardware. We do not link to them. The legal path is to dump your own consoles using documented tools (PS1Utility for PS1, the PS2 FreeMcBoot BIOS dumper, CHD tools for optical, ROM dumpers like RetroN5 for cartridges). If you do use a pack, keep only the BIOS files for hardware you actually own and delete the rest.
Where to Put ROMs and How to Scan Your Library {#adding-games-and-roms}
RetroArch does not care where your ROMs live as long as you tell it where to look. Most users create a single top-level folder like:
ROMs/
NES/
SNES/
GBA/
PS1/
Genesis/
Saturn/
Dreamcast/
PSP/
Arcade/
...and point RetroArch at the top-level ROMs/ directory.
Scanning
Import Content → Scan Directory is the one-click option. Pick your top folder, let RetroArch recurse, and it creates per-system playlists by matching file hashes against its internal content database. Each system becomes an entry in the main menu with the right label and, once thumbnails are pulled, the right artwork.
Archives (zip, 7z, rar)
Most RetroArch cores accept archives transparently — you can leave SNES ROMs zipped and Snes9x unpacks them on load. Exceptions:
.cue/.bin, .chd, .iso, or .pbp. Zipping a PS1 game works but converting it to .chd with the chdman tool gives smaller files and faster seeks, and is strongly recommended..m3u playlist file referencing each disc .chd.Playlists and metadata
Playlists live as JSON files under the playlists/ directory:
playlists/
Nintendo - Super Nintendo Entertainment System.lpl
Sony - PlayStation.lpl
Arcade.lplYou can edit them by hand if you want to relabel entries, fix wrong matches, or merge playlists across regions. The format is straightforward — each entry has a path, label, core name, core path, CRC, and database name.
Third-party tool Playlist Buddy makes this less tedious — bulk renames, sorting by name, removing duplicates, assigning default cores.
Thumbnails
Online Updater → Update Thumbnails pulls imagery from the community-maintained libretro-thumbnails GitHub organisation. Three types:
Which one shows by default is set in Settings → User Interface → Appearance → Menu Thumbnails. Most users prefer Boxart.
"Does RetroArch come with games?"
No, and that is a good thing. RetroArch includes no games and no BIOS for the reasons discussed above. Bring your own. Legal options for acquiring ROMs include:
.chd using chdman on a PC with an optical drive.Controller Setup and Autoconfig {#controller-setup}
RetroArch abstracts every controller through a virtual gamepad called the RetroPad. The RetroPad layout mirrors a modern console controller: D-pad, four face buttons (A/B/X/Y in SNES order by default), Start/Select, dual shoulders (L1/R1), dual triggers (L2/R2), dual analog sticks with click (L3/R3). Every core maps its native controller to this abstraction.
When you plug in a controller, RetroArch looks it up in its autoconfig profile database — a community-maintained library of several hundred controller definitions. If it recognises the pad, a notification appears on screen ("Device #0 'Xbox Wireless Controller' configured in port 1") and you can play immediately.
Controllers with autoconfig profiles out of the box
Manually binding an unknown controller
Settings → Input → RetroPad Binds → Port 1 Controls → Set All Controls, and RetroArch walks you through every button one at a time. Save the profile with a memorable name; next time that controller connects, RetroArch re-applies it.
Hotkeys and the Hotkey Enable button
Hotkeys are RetroArch-specific shortcuts — save state, load state, fast forward, rewind, screenshot, open menu. Map them under Settings → Input → Hotkeys.
The single most useful setting here is Hotkey Enable, also called the "hotkey modifier". Bind it to a button you rarely need during gameplay (Select is a common choice). Now hotkeys only fire when you hold that modifier. No more accidental save-state overwrites when a game uses F2 as a native input.
Common hotkey defaults (keyboard):
F1 — Menu ToggleF2 — Save StateF4 — Load StateSpace — Fast ForwardR — Rewind (while held, if Rewind is enabled)F8 — ScreenshotP — PauseCtrl+Q — QuitOn controllers, RetroArch does not define universal defaults across platforms; the "Hotkey Enable" button (often Select) acts as a modifier if you set it. Bind your own combos under Settings → Input → Hotkeys — pick the actions you use most (Menu Toggle, Save State, Load State, Fast Forward) and pair each with Select + a face button.
Wii Remote support
RetroArch supports Wii Remote input on platforms that expose it through the OS — Linux via Bluetooth, Android via dedicated driver apps, Wii itself natively. IR pointer is available via the Dolphin libretro core and certain Sinden-compatible cores. Motion-plus and Nunchuk extensions work on Dolphin but are inconsistent on the older Wii homebrew port of RetroArch.
Multiple controllers and per-port device types
Many systems used different controllers in different ports — PS1's GunCon for player 2 in shooting games, SNES's Super Scope, NES's Zapper, Sega's Menacer. Set this per core in Quick Menu → Controls → Port X Device Type. The options list depends on the core — Beetle PSX offers "Standard Gamepad", "DualShock", "GunCon", "Justifier", "Mouse", "neGcon". Change the device type, then map your physical controller to that port.
Light Gun Gaming with RetroArch {#light-gun-setup}
This is where RetroArch earns its keep for arcade fans. Light gun titles — Time Crisis, House of the Dead, Virtua Cop, Point Blank, Lethal Enforcers, Area 51, Duck Hunt, Operation Wolf — were a huge chunk of the arcade and early console scene, and the modern generation of light guns (Sinden, Gun4IR, AimTrak, Retro Shooter) are specifically built to make these games playable on a modern LCD or OLED. RetroArch gives you a consistent framework for playing them, with a few quirks you should understand.
The three ways RetroArch handles light gun input
Native lightgun device type. Cores that exposed a lightgun in the original console — NES (Zapper), SNES (Super Scope), PS1 (GunCon / Justifier), Saturn (Stunner), Genesis (Menacer), Dreamcast (arcade-era lightgun), Mega CD — let you change the device type in Quick Menu → Controls to something like "GunCon" or "Zapper", and then map a physical input device to it.
Mouse routing. Modern light guns (Sinden, Gun4IR, AimTrak, Retro Shooter) commonly present themselves as pointing devices that the host OS sees as a mouse. RetroArch treats a lightgun-as-mouse transparently, and most arcade cores (FBNeo, MAME) just ask for a mouse device.
Input overlay lightgun. On phones and tablets without a physical gun, RetroArch's Input Overlay system can provide tap-to-shoot zones. Useful for Duck Hunt and similar on an iPad.
Core-by-core light gun story
Setting up a Sinden Light Gun with RetroArch
The Sinden is the most popular "modern" lightgun because it works on any unmodified LCD / OLED with a calibration white border displayed on screen.
Install Sinden Lightgun software (the bundle from sindenlightgun.com, which includes the firmware, calibration app, and the virtual-border generator).
Calibrate the gun in the Sinden app against your TV. Note the gun's port assignment (Player 1, Player 2).
Launch RetroArch and open the core you want (FBNeo or MAME 2003 Plus are the usual picks for arcade shooters).
Load the game and open Quick Menu → Controls → Port 1 Device Type → Lightgun.
Settings → Input → User 1 Binds → Mouse Index — set to the Sinden's mouse index (usually 0 if it's the only gun, or whichever index is shown in the Sinden app).
Bind actions — trigger, reload (off-screen shot), action / grenade buttons via Quick Menu → Controls → Port 1 Controls.
For the white border that Sinden needs, either:
sinden-border variant.Setting up a Gun4IR / AimTrak with RetroArch
The flow is identical to Sinden, with two differences:
Neither Gun4IR nor AimTrak need a white border because they do not rely on camera-to-screen pixel detection.
Dual-gun setup and DemulShooter
For two-player light gun cabinet-style play (one person holding a Sinden, one with a Gun4IR, both shooting simultaneously at the same screen), the problem is Windows by default collapses all mice into a single shared cursor. You need raw input routing so RetroArch can tell which gun is Player 1 and which is Player 2.
input_driver = raw on Windows lets you assign each mouse to a specific port via Settings → Input → Port X → Mouse Index. This works directly for FBNeo, MAME, Beetle PSX, and Flycast.For 2-player RetroArch light gun setup:
Plug in both guns. Confirm in Windows Settings → Bluetooth & Devices that both show up as distinct HID mice.
In RetroArch, Settings → Input → Input Drivers → raw (Windows only).
In RetroArch, Settings → Input → Port 1 → Mouse Index: 0 (or whichever your P1 gun is), Port 2 → Mouse Index: 1.
Load the core, set both ports' device type to Lightgun, and launch the game.
Recommended light-gun game libraries per core
| Core | Standout light-gun games |
|---|---|
| FBNeo | Lethal Enforcers, Area 51 / Site 4, Point Blank, Operation Wolf / Thunderbolt, and other 2D arcade lightgun titles (check FBNeo's per-game list) |
| MAME 2003 Plus | Terminator 2: Judgment Day, Beast Busters, Police Trainer, Mechanized Attack, Zombie Raid, Silent Scope |
| Beetle PSX | Time Crisis, Time Crisis: Project Titan, Point Blank 1/2/3, Die Hard Trilogy, Elemental Gearbolt |
| Flycast | House of the Dead 2, Confidential Mission, Virtua Cop 3, Death Crimson OX, Ranger Mission, LA Machineguns |
| Beetle Saturn | Virtua Cop 1/2, House of the Dead, Policenauts |
| Genesis Plus GX | Lethal Enforcers I/II (Mega CD with Justifier) |
| FCEUmm / Nestopia | Duck Hunt, Hogan's Alley, Wild Gunman, To the Earth, Chiller |
For a broader look at modern light guns, setups, and TV compatibility, see our upcoming modern light gun buying guide.
Graphics, Shaders, and CRT Filters {#graphics-and-shaders}
RetroArch's shader system is unusually good for a free, open-source frontend. It is the main reason community members who have been doing this for twenty years still recommend RetroArch when you want pixel-perfect CRT simulation on a modern flat panel.
Three shader backends
RetroArch supports three shader formats, and each runs in a different rendering backend:
.slang) — the modern format. Targets Vulkan, Direct3D 10/11/12, and Metal. This is where new shader development happens. Use Slang if your GPU and RetroArch backend support it..glsl) — OpenGL / GLES format. Extremely compatible across older GPUs and mobile devices..cg) — legacy format. Deprecated in GLES and EGL contexts. Kept for backwards compatibility with older shader packs.Switch backend in Settings → Drivers → Video. Vulkan is the modern default on Windows and Linux, Metal on macOS and iOS, GLES on Android.
Loading a shader preset
Quick Menu → Shaders → Load Preset. RetroArch ships with hundreds of presets under shaders/shaders_slang/ (and sibling GLSL/Cg directories). The most useful categories:
CRT shaders — the important ones
vrr off, vsync on, and a stable 60.0Hz emulated output.HDR output
RetroArch supports HDR output on the Vulkan backend (and, on Windows, on D3D11/12 where the driver exposes HDR). Settings → Video → HDR → HDR Enable turns it on. Pair with an HDR-aware shader preset (e.g. an hdr-vivid-style preset) and you get properly mapped highlights on an HDR display.
Shader chains
A preset is a list of passes stacked on top of each other. Quick Menu → Shaders → Shader Parameters shows every variable exposed by the current preset — scanline weight, mask strength, geometry curvature — and you can tune them per game.
Save your tuned preset as:
The most specific preset wins, so you can run crt-royale globally and override with crt-lottes-fast for your PSP games because PSP resolution does not benefit from a CRT effect. Handheld shaders like dot-and-bloom or lcd-grid-v2 are typical for PSP, DS, and GB cores.
Wildcard paths
Presets support tokens like $GAME$, $CORE$, and $VID-DRV$. Example: a preset that loads $CORE$/$GAME$.png as an overlay automatically picks the right image per game without you writing one preset per ROM.
Overlays vs shaders
Overlays are raster images displayed above the gameplay — bezels, arcade cabinet artwork, phone-screen buttons. Shaders are post-processing. They are different systems; a preset can include both.
Load overlays in Settings → On-Screen Display → On-Screen Overlay → Overlay Preset. Browse overlays/borders/ for arcade bezels and overlays/gamepads/ for phone touch-control overlays.
Audio Setup and Latency {#audio-setup}
Audio in RetroArch is usually "just works", but when it breaks the symptoms are memorable — stutter, crackle, pitch shifts, short audio dropouts during menu transitions. Here is the quick fix-it checklist and then the explanation.
Quick fixes
128 ms (up from default 64 ms). Almost all audio issues are latency-too-low.wasapi (Windows), alsa or pipewire (Linux), coreaudio (macOS and iOS), openslES or audiotrack (Android) as your platform default.256 ms or 512 ms. Bluetooth audio is laggy by physics, not by RetroArch.How RetroArch audio works
The emulated console produces audio at its native rate — 44.1 kHz for PS1, 48 kHz for Dreamcast, 32 kHz for N64 — and RetroArch resamples it to the output device's rate in real-time via the sinc resampler. Latency is the size of the ring buffer between "core produces audio" and "OS plays audio". Low latency sounds snappier but risks buffer underruns (crackle) if a frame runs slow; high latency trades away some snappiness for robustness.
"No sound" after launching a game
DSP audio plugins
RetroArch supports optional DSP plugins: reverb, EQ, phase shifter, 4-point echo, chorus. Load one per project under Settings → Audio → DSP Plugin. Niche but useful for live audio monitoring of cores that do not support reverb natively.
Dynamic Rate Control
Settings → Audio → Dynamic Rate Control ties the audio rate to the video rate very slightly, so if your display is actually running at 59.94 Hz (cinema-standard) instead of exact 60 Hz, audio stays pitch-stable and the game runs at the video rate instead of stuttering audio every few seconds. Leave this at the default 0.005 unless you know why you want it off.
Performance — Why Is RetroArch Slow, and How to Speed It Up {#performance-optimisation}
RetroArch is only as fast as the core you are running. A blanket "RetroArch is slow" complaint almost always means "this core is slow on this hardware". Here is the systematic approach to fixing it.
Fast first wins
Switch to a lighter core for the system. Snes9x instead of bsnes-mercury accuracy. QuickNES instead of Mesen. MAME 2003 Plus instead of full current MAME. PCSX ReARMed instead of Beetle PSX HW on mobile.
Disable shaders. A heavy CRT shader can cost 30–50% of your GPU budget. Quick Menu → Shaders → Remove.
Lower internal resolution. Beetle PSX HW and Dolphin libretro both expose an "Internal Resolution" option. 1x native is free; 4x native is GPU-expensive.
Enable Threaded Video. Settings → Video → Threaded Video: On. Decouples the video submission thread from the emulator thread — reduces stutter on modern multi-core hardware.
Pick the right GPU backend. Vulkan is usually fastest on modern hardware, Metal on macOS and iOS, GLES on Android. OpenGL is the most compatible but slower.
Turn off Rewind. Rewind has a per-frame memory cost. Settings → Frame Throttle → Rewind: Off unless you need it.
Turn off Runahead. Runahead runs several frames of emulation ahead to reduce perceived input lag. It doubles or triples CPU cost. Great for lag-sensitive games on strong hardware, but the first thing to disable if you are struggling.
Cap background processes. Browsers, Discord, OBS — all of these steal CPU cycles RetroArch wants. Close them for heavy cores.
Per-system optimisation
Why is RetroArch so slow on my phone?
Usually one of:
Settings → Drivers → Video. Vulkan is fastest when it works; some Mali / PowerVR GPUs prefer OpenGLES.Fast forward and slow-mo
Space on keyboard or Select+R2 on controller. Caps at the "Fast-Forward Ratio" set under Settings → Frame Throttle — default is unlimited (runs as fast as your CPU allows). Useful for skipping RPG grinds or JRPG text.E. Useful for close-viewing animation frames or easing past a tricky platforming section.Runahead: reducing input lag
Runahead runs the core N frames ahead of display and only shows the most recent. It costs CPU/RAM but shaves input lag to near-CRT levels (1–2 frames end-to-end). Enable under Settings → Latency → Runahead. Start with 1 frame; most systems handle 2–4 frames. If a core crashes with Runahead enabled, reduce N or disable entirely (not all cores support single-instance Runahead; second-instance Runahead requires separate core support).
Save States, SRAM, CloudSync, and Memory Cards {#save-management}
RetroArch distinguishes between three independent save mechanisms, and knowing which is which will save you at least one lost file.
Save states
A save state is a full RAM snapshot — CPU registers, memory, video, audio, the lot — captured at the instant you saved. Restoring a state puts the emulator exactly where it was. Save states are per-core, per-game, and per-slot. RetroArch offers ten slots by default (configurable under Settings → Saving → Save State Slot).
Hotkeys:
F2 / Select + X.F4 / Select + Y.F6 / F7.Save states are extremely useful but are not compatible across cores. A save state you made in Snes9x will not load in bsnes-mercury. They are also fragile across RetroArch version upgrades — a major core update can invalidate older states. For long-term saves, prefer native saves.
Native saves (SRAM / memory card)
Games that supported in-cartridge battery saves (Zelda on NES, Pokémon on GBA, Final Fantasy on PS1) get a per-game .srm or .sav file in the saves/ directory. These survive core updates, RetroArch updates, and most platform moves. They are the "real" save.
Disc-based consoles (PS1, PS2, Saturn, Dreamcast) use memory-card emulation:
.mcr or .mc1/.mc2 virtual memory-card files under saves/mcr/. Beetle PSX and SwanStation are compatible with each other's memory card format..ps2 virtual cards under saves/ps2/. LRPS2 and libretro PCSX2 share the same format..bin files. Flycast writes to saves/dc/..gci files (Dolphin libretro stores these in saves/Dolphin/GC/).CloudSync
Introduced in RetroArch 1.20.0 (January 2025), CloudSync can sync your saves, save states, configs, and system files across devices via any WebDAV-compatible backend — Nextcloud, pCloud, Hetzner Storage Box, Webdav for Google Drive, Infomaniak kDrive, kDrive WebDAV, etc. Apple iCloud and Dropbox are not directly supported (no native WebDAV).
Setup:
Settings → CloudSync → CloudSync Enable: On.
Destination — set to your WebDAV endpoint (e.g. https://your-nextcloud.example/remote.php/dav/files/username/RetroArch/).
Username / Password — your WebDAV credentials.
CloudSync SRAMs / States / Configs / System Files — toggle which categories to sync.
Force CloudSync Now — first sync is manual; after that it runs on start-up and on content close.
CloudSync keeps a per-item backup on sync so a bad merge does not destroy prior data. Exact conflict behaviour is evolving across point releases; test with non-critical data before committing irreplaceable saves.
Rewind
Rewind is a circular-buffer backtracking system independent of save states. Enable under Settings → Frame Throttle → Rewind Enable. Set the buffer size (default 20 MB, good for 20–60 seconds of rewind on most systems). Hold the Rewind hotkey (default R) to step backwards in real time.
Rewind has a per-frame memory and CPU cost. Turn it off when you do not need it.
"How to save RetroArch settings"
RetroArch saves user-level settings in retroarch.cfg in its config directory. Changes made through the menu are written automatically on quit, if Settings → Saving → Save Configuration on Quit is on (it is by default). To force-save your current settings to disk, use Main Menu → Configuration File → Save Current Configuration.
Per-core and per-game config overrides live under config/ with names like config/Snes9x/Snes9x.cfg and config/Snes9x/Super Mario World.cfg. The most specific override wins.
Netplay — Playing Online With Friends {#netplay}
RetroArch's netplay system is built around peer-to-peer rollback. Two or more players each run the core locally, synchronise state at launch, and then exchange input over the network while running the emulation in lockstep. If a packet arrives late, the emulator briefly rewinds, replays with the correct input, and catches up — the same technique modern fighting games use on their netcode.
Hosting
Main Menu → Netplay → Start Netplay Host.
Forward the Netplay TCP/UDP port shown in Settings → Network → Netplay on your router (or use the MITM relay below if port-forwarding isn't an option).
Other players connect by IP or via the public Netplay Rooms browser.
Joining
Main Menu → Netplay → Netplay Rooms (the public browser).
Pick a room listing the same core/game you have locally.
Connect.
Or Main Menu → Netplay → Connect to Netplay Host and enter an IP.
MITM relay servers
If your NAT makes direct peer-to-peer unreliable, RetroArch offers a MITM relay — traffic is routed through a community relay server instead of direct p2p. Enable under Settings → Network → Netplay → Use Relay Server: On, pick one of the regional servers. Adds latency but solves connectivity headaches.
Cores that netplay well
Netplay works best on deterministic cores where two instances with the same state and input will run identically forever. In practice:
Limitations
RetroAchievements Support {#retroachievements}
RetroAchievements (RA) is an independent project that layers trophy-style achievements over retro games. RetroArch is its flagship client. The Libretro team maintain the integration; RA itself is maintained by the RA team at retroachievements.org.
Enabling
Create an account at retroachievements.org and confirm via email.
In RetroArch: Settings → Achievements → Enable Achievements: On.
Username / Password — enter your RA credentials. Token is stored locally.
Load an RA-compatible core and game — the achievement overlay appears in-game when triggered.
Hardcore Mode
Settings → Achievements → Hardcore Mode: On disables the features RA considers cheating:
In return, you earn double points and land on the Hardcore leaderboard. You can turn Hardcore off mid-session, but you lose all Hardcore achievements earned during that run.
Which cores support achievements
Not every core is compatible. A current list lives at docs.retroachievements.org/general/emulator-support-and-issues.html. As a rule of thumb:
Login token problems
If you log in and get "token rejected", clear your credentials under Settings → User → Accounts → RetroAchievements → Clear Credentials, then re-enter. Tokens occasionally expire on the server.
Achievement notifications and overlays
Achievements pop as OSD notifications. You can enable a richer overlay (progress tracking, challenge indicators) under Settings → Achievements → Appearance.
Cheats — Action Replay, GameShark, and Cheat Files {#cheats}
RetroArch has a built-in cheat engine that reads and applies cheats at the libretro level. It supports several cheat code formats depending on the core — most notably Action Replay, GameShark, Gecko / Pro Action Replay, and simple RAW memory patches.
Loading a cheat
Quick Menu → Cheats during gameplay. You will see:
.cht file that contains a pre-assembled cheat list for the current game. Most users get these from the libretro cheats pack (Online Updater → Update Cheats).Where cheat files live
In the cheats/ directory, organised by system:
cheats/
Nintendo - Super Nintendo Entertainment System/
Super Mario World.cht
Zelda - A Link to the Past.cht
Sega - Mega Drive - Genesis/
Sonic the Hedgehog.cht
...File format is plain text, one code per line, with a human-readable label and the raw code. Edit in any text editor.
RetroArch cheat database (cheats.zip)
The cheats.zip archive hosted alongside RetroArch downloads is a bundled collection of community cheat files covering thousands of games. Alternatively, use Online Updater → Update Cheats to pull the live version.
Per-core cheat formats
D0xxxxxx conditional codes and 80xxxxxx write codes.DD64-AF64) and Pro Action Replay.Dolphin libretro cheats
One quirk: Dolphin libretro's cheat system is not the same as standalone Dolphin's Gecko/AR manager. If you are loading a .gct (compiled Gecko codes) from standalone Dolphin, you need to import the raw codes into RetroArch's cheat format and re-enable them there.
"Cheats not working"
Information → Core Information → Supports Cheats.Themes, UI Drivers, and Customisation {#themes-and-ui}
RetroArch's default UI (Ozone) is already well-tuned, but four different menu drivers ship with every build, each with a distinct personality.
The four UI drivers
Switch between them in Settings → Drivers → Menu. Changes take effect on next launch.
Themes
Each driver has its own theme catalogue:
Settings → User Interface → Appearance → Menu Colour Theme. Ships with a list of named themes (the selection expands with releases).Settings → User Interface → Appearance → Menu Wallpaper), icon themes, and per-playlist colour gradients.Custom wallpapers and icons
Drop a .png or .jpg into assets/menu_wallpapers/ and select it in the menu driver's wallpaper setting. For custom per-system icons, the libretro thumbnails repo is extensible — you can drop your own PNG set into thumbnails/.icons/.
RetroArch Plus vs RetroArch (Android)
"RetroArch Plus" is a legacy Android distinction. The Plus build was a 64-bit APK variant that included additional 64-bit cores (PPSSPP, Citra, Dolphin, LRPS2) that did not fit inside the main 32-bit APK under Play Store's old size limits. Modern RetroArch distribution via F-Droid, buildbot, and alternative stores has largely closed the gap — current 64-bit builds include the full core set. The Play Store listing is stale and should be avoided. If you still see both names around:
Install either and let the Core Downloader handle the rest.
Front-ends that embed RetroArch
Each is useful if you want a turnkey experience rather than configuring RetroArch from scratch.
Hotkeys and the Quick Menu {#hotkeys-and-quick-menu}
Opening the in-game menu
On keyboard, F1 toggles the in-game menu. On controllers, bind a combo under Settings → Input → Hotkeys → Menu Toggle (Controller Combo) — a common choice is Select + X. This opens the Quick Menu, which contains every per-game action:
Default hotkey table (keyboard)
Keyboard defaults are stable across platforms. Controller combos vary by profile — check Settings → Input → Hotkeys after first launch and bind your preferred combos.
| Action | Keyboard default |
|---|---|
| Menu Toggle | F1 |
| Save State | F2 |
| Load State | F4 |
| State Slot + | F6 |
| State Slot − | F7 |
| Fast Forward (hold) | Space |
| Rewind (hold) | R |
| Screenshot | F8 |
| Pause Toggle | P |
| Quit | Ctrl + Q |
| Reset Content | H |
| Mute Audio | F9 |
All of these are remappable under Settings → Input → Hotkeys. Hotkey Enable is the most important binding — set it to Select and the entire hotkey system becomes "hold Select + action".
How to open the RetroArch menu in-game (platform specifics)
"Pause when inactive"
Settings → Frame Throttle → Pause When Not Active: On pauses RetroArch automatically when you alt-tab away. Useful on desktop if you regularly step away mid-game.
Rewind activation
Rewind is disabled by default (performance cost). Enable under Settings → Frame Throttle → Rewind Enable. Set Rewind Buffer Size (default 20 MB). Bind the hotkey under Settings → Input → Hotkeys → Rewind.
How to exit a game
Three options, any of which work:
RetroArch on Windows, macOS, and Linux {#pc-installation}
Desktop is where RetroArch is most mature and most configurable. Every core is available, every shader works, every backend is supported.
Windows
Recommended install: retroarch.com → Windows Installer → follow the wizard, or download the 7-zip archive for a portable install (no system changes, put it on any drive).
Two important notes:
After install, launch, let RetroArch detect your GPU, and the default driver will be Vulkan (Windows 10+) or DirectX 11 (older). Pick Online Updater → Update Core Info Files on first launch to ensure your info files match the current core catalogue.
macOS
macOS 10.13+ gets a Universal .dmg build with native Apple Silicon support and full Metal backend. On Apple Silicon (M1/M2/M3/M4) RetroArch is frankly outstanding — full-speed PS2 emulation on a MacBook Air is normal.
Install: retroarch.com → macOS Universal .dmg → drag to /Applications. First launch may require System Settings → Privacy & Security → Open Anyway because RetroArch is not notarised by Apple (it is open-source and signing cost would be unreasonable for a community project).
macOS 10.12 and earlier still gets legacy builds — Intel with/without Cg shader support, PowerPC for pre-Intel Macs. Use these only if you are on vintage hardware.
Steam builds are available. Same caveat as Windows: no core updater.
Linux
Linux is the platform RetroArch grew up on. Every modern distro has RetroArch somewhere:
flatpak install flathub org.libretro.RetroArch. Sandboxed, auto-updating, works on anything with Flatpak.sudo snap install retroarch. Less popular than Flatpak but works..AppImage, chmod +x, run. Portable, no install.apt install retroarch on Debian/Ubuntu, pacman -S retroarch retroarch-assets-xmb on Arch (both assets packages recommended).Wayland support has matured across recent releases and now works well on most Linux desktops. If you hit a Wayland bug, pass SDL_VIDEODRIVER=x11 to fall back to XWayland.
Chromebook
ChromeOS users have two paths:
Android app (if your Chromebook supports Google Play) — install RetroArch from Play Store or Aurora Store. Works well, touch + controller.
Linux container — enable Linux (Beta) in ChromeOS Settings, then flatpak install org.libretro.RetroArch or use a distro package. This is the desktop-class RetroArch experience on ChromeOS.
The Linux path is more powerful; the Android path is easier.
RetroArch on Android {#retroarch-on-android}
Android is RetroArch's highest-volume platform — it is the default emulation frontend for phones, tablets, Android TVs, Firesticks, Chromecasts, and handheld devices running Android. But it also has the most confusing install story because of the state of the Google Play version.
The Play Store problem
As of April 2026, the Google Play version of RetroArch is over a year out of date. The Libretro team's stated reason is Play Store policy friction around emulation apps. The official retroarch.com site explicitly recommends using alternative sources.
Recommended install sources (Android)
In order of preference:
F-Droid — f-droid.org/en/packages/com.retroarch/. Open-source repository, always current, auto-update via the F-Droid app.
Official APK from buildbot.libretro.com — buildbot.libretro.com/stable/latest/android/. Direct download, install via sideload (allow "install unknown apps" for your browser). Manually update.
Amazon App Store — search "RetroArch" and install. Up to date.
Samsung Galaxy Store — up to date.
Huawei AppGallery — up to date.
Aurora Store — third-party Play Store alternative that some users use to obtain RetroArch. Useful on devices where installing F-Droid or sideloading a buildbot APK is inconvenient.
32-bit vs 64-bit and RetroArch Plus
The official site distributes both 32-bit and 64-bit APKs. 64-bit has more cores and better performance on modern phones (Snapdragon 8xx+, Tensor, A-series). 32-bit is a lighter fallback for budget devices with less RAM.
RetroArch Plus was a legacy distinction — a 64-bit APK specifically built with extra cores (PPSSPP, Citra, Dolphin, LRPS2) that exceeded the old 100 MB Play Store APK limit. Modern Play Store Android App Bundles and the buildbot 64-bit build include all of this in one package. The Plus naming persists on some alternative stores, where:
If your phone is modern (2020+, 8 GB+ RAM), install RetroArch Plus (64-bit) where available. Otherwise install RetroArch.
Android TV, Firestick, Nvidia Shield, Chromecast Google TV
RetroArch runs on every Android TV device as a proper TV-optimised app. The UI driver defaults to MaterialUI on phone and to Ozone on TV.
adb install or the "Downloader" app (Amazon Appstore has RetroArch but is not always current; buildbot APK is reliable). Controller support via Bluetooth (Xbox, PS5, 8BitDo).Setup flow for Android
Install RetroArch (or RetroArch Plus) from a trusted source.
Grant storage permissions on first launch.
Put your ROMs in an accessible folder (internal storage, SD card, or cloud-synced folder — pick one you'll remember).
Scan via Import Content → Scan Directory.
Update cores and thumbnails via Online Updater.
Configure your controller (auto-detected for Xbox, PS5, Switch Pro, 8BitDo). For unknown pads, manually bind.
On tablets, enable the on-screen overlay: Settings → On-Screen Display → Overlay → Overlay Preset.
Common Android issues
Quick Menu → Controls → Port 1 Device Type.RetroArch on iOS, iPadOS, tvOS, and visionOS {#retroarch-on-ios}
On May 15, 2024, RetroArch launched on the official Apple App Store for iOS, iPadOS, tvOS, and visionOS, after Apple revised its App Store Review Guidelines to explicitly permit retro-game emulators in early 2024. It is the biggest single change to iOS emulation in years.
Installing from the App Store
Search RetroArch in the App Store on iPhone, iPad, Apple TV (tvOS), or Apple Vision Pro (visionOS). Install as normal. It is free.
The App Store build supports recent iOS, iPadOS, tvOS, and visionOS releases — check the listing on your device for the current minimum OS version (it updates as Apple drops older OS support).
The JIT limitation
The App Store build cannot use JIT (just-in-time) compilation. Apple's sandbox does not permit mmap with PROT_EXEC in signed App Store apps. For most cores this is invisible — NES, SNES, Game Boy, Mega Drive, PC Engine, Neo Geo, MAME 2003 Plus, and every other simple-to-moderately-complex retro core runs at full speed on a modern iPhone without JIT.
For JIT-dependent cores — PPSSPP, PCSX2 libretro, Dolphin libretro, DuckStation libretro at high settings, 3DS (Citra) — JIT is a significant performance multiplier. The App Store version runs these cores in interpreter mode. Expect roughly 30–60% of JIT performance:
Getting JIT on iOS (sideloaded builds)
For JIT you need an alternative distribution. The iOS sideloading landscape changes quickly and depends on your iOS version, your region (post-DMA EU users have additional options), and current exploits. Rather than hardcode specifics that will be out of date in months, the general families are:
.ipa and enable JIT when the companion app is on the same network.Pick whichever fits your iOS version and region. RetroArch's .ipa is built by the Libretro team and is the same binary they ship to the App Store; sideloading just re-signs it for a different distribution workflow. The legality and feasibility of each route varies by jurisdiction and iOS version.
Apple TV installation
The App Store version works natively on Apple TV HD (4th gen) and Apple TV 4K (all generations, though 1st-gen is getting tight). Controller support via MFi certified controllers, DualShock 4/5, Xbox Wireless, Switch Pro.
File transfer on tvOS is fiddly — the Files app works with iCloud Drive, and for bulk transfers most users set up a network share (SMB/WebDAV) from a NAS or PC that RetroArch can browse directly.
visionOS
The visionOS build runs as a flat app inside a window in the Vision Pro's shared space. Controller support via connected Bluetooth pads. Spatial emulation — playing N64 on a wall-sized display — works fine because it is just a very big flat window; there is no stereoscopic console emulation today.
Common iOS issues
RetroArch on the Nintendo Switch {#retroarch-on-switch}
RetroArch has an official Switch homebrew port. "Homebrew" is the key word — it requires a hacked Switch running custom firmware.
Prerequisites
Installing RetroArch on Switch
On your PC, download the Switch 7z archive from retroarch.com/platforms.
Extract the archive to your microSD card in the location described by the release's readme (typically alongside other homebrew under /switch/).
Insert SD into Switch, boot into hbmenu (Atmosphère).
Launch the RetroArch homebrew entry.
Online Updater → Core Downloader — download the cores you need.
Cores that run on Switch
The Switch's Tegra X1 is a capable chip and handles the traditional emulation tiers well:
Switch is not a target for heavy 6th-gen 3D emulation (PS2, GameCube/Wii) through RetroArch. Cores like LRPS2 and Dolphin libretro target x86/ARM64 desktop platforms rather than Switch; use standalone alternatives on a PC for those systems.
If you see community guides discussing CPU overclocking for emulation headroom, approach carefully — pushing Tegra X1 past stock clocks increases heat and power draw significantly.
Hotkeys on Switch
Default menu toggle is Select + X. Screenshot via the Switch's own capture button does not work in-app (RetroArch takes precedence); use RetroArch's F8-equivalent hotkey mapping.
Updating RetroArch on Switch
Replace retroarch_switch.nro with the new version from retroarch.com. Cores update via Online Updater if the Switch can reach the internet (wi-fi works; Tinfoil / DBI for offline core install).
RetroArch on the Xbox Series X|S and Xbox One {#retroarch-on-xbox}
Xbox Series and Xbox One console-generation devices can run RetroArch, but only in Developer Mode. This is a supported Microsoft feature, not a hack.
Prerequisites
Activating Dev Mode
Pay the $19 dev account fee once.
Install the Dev Mode Activation app from the Xbox Store on your console.
Follow the on-screen flow, reboot into Dev Mode.
The console now has two modes — Retail (your normal Xbox experience) and Dev (no Xbox Store, sideloaded apps only). Swap between them via the activation app.
Installing RetroArch
Download the Xbox .appx from retroarch.com/platforms.
Download the matching Visual Studio 2019/2022 C++ Runtime .appxbundle (Microsoft link provided on the RetroArch Xbox page).
In Dev Mode, open the Xbox Device Portal from a PC browser (the Xbox shows its local IP under Dev Home).
In Device Portal → My Apps → Add → upload retroarch.appx and the runtime .appxbundle.
Launch RetroArch from the Dev Home.
Performance
Xbox Series X has excellent RetroArch performance — roughly on par with a mid-range gaming PC. Most cores run at 4x internal resolution without breaking a sweat, including LRPS2 and Dolphin libretro.
Xbox Series S is noticeably weaker. 10 GB RAM total with reduced GPU bandwidth means Vulkan-heavy cores struggle at high internal resolutions. Drop to 2x native.
Xbox One (original) and Xbox One S — 8-core Jaguar CPU is slow. PS2 and GameCube are borderline; stick to 6th-gen and below.
Xbox One X — older Jaguar CPU with a stronger GPU than the base One. Decent for 6th-gen and below, but Series S is a newer architecture overall.
File management
In Dev Mode, your ROMs go onto the console via:
Common Xbox issues
Xbox 360
RetroArch has a separate, less-maintained Xbox 360 XEX build for the "jailbroken" Xbox 360 scene. If you have a hacked 360 (RGH / JTAG), the binary is on retroarch.com. It is slower than the Series build and has fewer cores — not recommended as a first platform.
RetroArch on the PlayStation 3, PS Vita, PSP, and PS2 {#retroarch-on-playstation}
RetroArch has official homebrew builds for most modern-ish Sony consoles, with PS3/PS4 still "coming soon" officially.
PlayStation 3
Status: the retroarch.com/platforms page says "Coming soon" for the official PS3 build. Unofficial community builds exist and have been around for years; they run on a jailbroken PS3 (Homebrew Enabler via exploitable firmware). Because there is no official build, we do not walk through that install here — consult the current state of the community scene before proceeding.
The PS3's Cell processor is well-suited to older systems — PS1, N64, SNES at full speed is the typical story. 6th-gen systems (GameCube, Dreamcast) run variably at best. PS2 is not realistic — the modern PS2 libretro core (LRPS2) targets x86/ARM64 desktop platforms, not PPC Cell.
"Can RetroArch emulate PS3?" No. RetroArch runs on PS3 as a frontend for older systems. To emulate PS3 games, you need standalone RPCS3 running on a powerful x86 PC. There is no libretro RPCS3 core.
PlayStation 4 / 5
No official RetroArch builds. The community has made progress on PS4 homebrew via the PS4HEN kernel exploits but RetroArch is not a first-class citizen there. PS5 has no meaningful homebrew scene at the time of writing.
PlayStation Vita / PS TV
.vpk + data files from retroarch.com/platforms.Vita is a surprisingly good RetroArch target — native ARM Cortex-A9 runs 8/16-bit and PS1 at full speed, and the Vita's excellent screen makes the handheld experience lovely. (For running PSP software on the Vita itself, most users prefer the native Sony PSP compatibility mode via Adrenaline rather than a RetroArch-hosted PPSSPP.)
PS TV is Vita hardware in a TV-box form factor. Same story.
PlayStation Portable
.7z Portable build from retroarch.com/platforms.PSP/GAME/.Low-end by modern standards — PSP runs 8/16-bit and a handful of light PS1 games. Primarily a curiosity.
PlayStation 2
.elf PS2 build from retroarch.com/platforms.Light 8/16-bit emulation only — PS2 has 32 MB RAM and limited GPU. PS1 emulation via the PS2's native PSX-mode is better than through libretro in most cases.
RetroArch on the Steam Deck {#retroarch-on-steam-deck}
Steam Deck is the single most important RetroArch platform of 2025–2026. The combination of x86 performance, AMD RDNA2 GPU, 16 GB unified memory, built-in controls, and portable form factor makes it the best general-purpose emulation device ever made, and RetroArch is central to the default emulation stack on Deck.
Two install paths
Path 1: Steam version (easy)
Path 2: Flatpak (more powerful)
flatpak install flathub org.libretro.RetroArch.flatpak run org.libretro.RetroArch.Path 3: EmuDeck (easiest full-featured)
Recommended cores on Deck
Deck handles every libretro core without breaking a sweat. For the best experience:
Deck-specific tips
gamescope -f -- flatpak run org.libretro.RetroArch.Steam → Settings → Performance → FPS Overlay gives you in-game frame rate, battery draw, CPU/GPU use. Useful for tuning per-game settings.Chromebook-mode comparison
Some users compare Deck to a Chromebook in Linux Container mode. Deck is vastly more powerful for emulation; Chromebooks are typically Intel UHD or low-end ARM, which is fine for 8/16-bit but struggles at 6th-gen.
RetroArch on Raspberry Pi, Handhelds, and Retro Distros {#raspberry-pi-and-handhelds}
RetroArch runs on a wide variety of single-board computers and dedicated handheld devices, and the usual way to get it is through a purpose-built Linux distribution rather than a raw install.
Raspberry Pi
On a Pi 4 or 5, you can expect:
Handhelds
For any handheld that runs a community distro, RetroArch is installed and preconfigured. You just add ROMs.
Retro handheld distros at a glance
| Distro | Target devices | Strengths |
|---|---|---|
| Lakka | Pi, x86, some handhelds | Minimal, RetroArch-as-UI |
| RetroPie | Pi | Huge community, tons of docs |
| Batocera | x86, Pi, handhelds | Polished, preconfigured |
| ArkOS | Anbernic handhelds | Good Anbernic hardware tuning |
| JELOS / ROCKNIX | Anbernic, AYN Odin, many others | Modern, actively developed |
| muOS | Anbernic RG35XX family | Lightweight, fast boot |
All of them include RetroArch as the main emulator backend.
RetroArch on Legacy Platforms (Wii, Wii U, GameCube, 3DS) {#retroarch-on-legacy-homebrew}
RetroArch has homebrew ports for every major pre-Switch Nintendo platform. All of them require a hacked console.
Nintendo 3DS / 2DS
.cia installs via FBI onto the 3DS home screen.3DS RetroArch runs:
Nintendo Wii U
.rpx to the Wii U's SD card under wiiu/apps/retroarch/.Wii U's PowerPC 750-derived CPU is roughly 2x faster than Wii's PowerPC Broadway. Strong on 8/16-bit, Saturn, N64, PS1. Heavy 3D cores are not realistic targets on this platform.
Nintendo Wii
retroarch_wii to apps/retroarch/ on the SD card.Wii's PowerPC Broadway + GX graphics is slower than Wii U. 8/16-bit flawless, N64/PS1 on certain cores playable, anything heavier impractical. Wiimote support is good — pointer works for shooting games on many cores.
Nintendo GameCube
A historical curiosity. The GC has great hardware for the time but the port is minimal.
Other legacy ports
RetroArch on Web Browsers and Other Unusual Targets {#retroarch-web-and-other}
The web.libretro.com build runs RetroArch inside the browser via WebAssembly. You can load a small selection of bundled cores (NES, SNES, Genesis, GBA, some arcade) and play via keyboard or connected controller. No save persistence beyond browser localStorage. No shaders beyond the most basic. Useful for:
Not a serious emulation solution but a genuinely interesting demo of WebAssembly's capabilities.
RetroArch on GitHub: the project's source lives at github.com/libretro/RetroArch. File issues there, not on the forums. The main libretro organisation at github.com/libretro also hosts every core, the thumbnails repos, and the overlays repo.
Nightly builds: buildbot.libretro.com/nightly/ has a build for every platform, updated daily. Use stable (1.22.2 as of this guide) unless you need a fix or feature that landed after the last stable.
How to Update RetroArch and Cores {#updating-retroarch}
Updating RetroArch itself
Updating cores
Main Menu → Online Updater → Update Installed Cores. This grabs the latest version of every core you have. Do this after a RetroArch update.
For individual cores, Online Updater → Core Downloader shows current versions next to installed versions — pick a specific core to update.
Updating metadata
Run all of these once after any major update.
Nightly vs stable
Stable is released every 3–6 months (v1.22.2 in November 2025, v1.21.0 in May 2025, v1.20.0 in January 2025, v1.19.0 in May 2024 — the cadence varies). Nightly builds incorporate every merged fix and feature, sometimes many per day. If you hit a bug in stable, check the nightly; it may already be fixed. If you want stability, stay on stable.
Organising Directories — Where Everything Lives {#directory-layout}
A clean RetroArch install has a consistent folder structure. Knowing it saves you time when debugging.
RetroArch/
├── retroarch.cfg # main config file
├── config/ # per-core and per-game overrides
│ ├── Snes9x/
│ │ ├── Snes9x.cfg # core-wide overrides
│ │ └── Super Mario World.cfg # per-game override
│ └── ...
├── cores/ # .dll / .dylib / .so / .nro binaries
├── system/ # BIOS files live here
├── saves/ # per-game SRAM and memory card saves
├── states/ # save states
├── screenshots/
├── playlists/ # .lpl JSON files, one per system
├── thumbnails/ # cached thumbnail images
├── cheats/ # .cht cheat files
├── shaders/
│ ├── shaders_slang/ # modern shaders
│ ├── shaders_glsl/ # OpenGL shaders
│ └── shaders_cg/ # legacy Cg shaders
├── overlays/ # on-screen overlays (borders, touch)
├── assets/ # menu assets (icons, wallpapers)
├── info/ # .info files describing each core
├── autoconfig/ # controller profiles
├── recordings/ # gameplay video captures
└── logs/ # retroarch.log and crash logsSetting directories
Settings → Directory exposes each of these. Change them if you want ROMs on a network drive, saves in Dropbox, cores on a USB. Most users leave them at the defaults.
Portable mode
Drop a file called retroarch.cfg alongside retroarch.exe (or the equivalent binary on your platform) and RetroArch switches to portable mode — all paths become relative to the install directory, so the whole folder is movable between PCs. Useful for running RetroArch off a USB stick.
Playlist Tweaks and Thumbnail Packs {#playlists-and-thumbnails}
Playlist file format
Each playlist is a JSON .lpl file under playlists/:
json{ "version": "1.5", "default_core_path": "", "default_core_name": "", "label_display_mode": 0, "right_thumbnail_mode": 0, "left_thumbnail_mode": 0, "sort_mode": 0, "items": [ { "path": "/home/user/roms/snes/Super Mario World.sfc", "label": "Super Mario World", "core_path": "DETECT", "core_name": "DETECT", "crc32": "B19ED489|crc", "db_name": "Nintendo - Super Nintendo Entertainment System.lpl" }, ... ] }
You can edit by hand. Common edits:
label if Scan Directory misidentified a ROM."Super Mario Bros. (USA)" → "Super Mario Bros.".default_core_path and default_core_name so games launch that core directly (no "pick a core" prompt).Playlist Buddy
Playlist Buddy is a community tool for bulk-editing playlists: sort by name, remove duplicates, merge US/EU/JP versions into one entry with region-agnostic label, assign default cores per playlist. Search the RetroArch forum or GitHub for the current link (community tools move around).
Thumbnail packs
Thumbnails come from the libretro-thumbnails GitHub organisation, which hosts one repo per system. If you want specific boxart packs (original US vs European box, Japanese original, custom 3D-rendered boxes), fork the relevant repo and point RetroArch at it via Settings → Directory → Thumbnails.
Three thumbnail types per playlist entry:
Toggle which one displays under Settings → User Interface → Appearance → Menu Thumbnails. Many users set Primary Thumbnail: Boxart and Secondary Thumbnail: Snap so a single entry shows both.
Playlist icons
Each system playlist can have a custom icon. Drop a PNG into assets/xmb/monochrome/png/ (for XMB driver) or the equivalent under Ozone's assets, named to match the playlist file. Naming is precise — a mismatch shows the default icon.
"retroarch.exe" path updates
When you move RetroArch to a new machine, your playlists have hardcoded paths. Fix via:
sed -i 's|C:/oldpath|C:/newpath|g' playlists/*.lpl on Linux / macOS.AI Translation and OCR Service {#ai-service}
RetroArch ships with an AI Service that runs OCR over a screenshot, translates, and optionally overlays the result on-screen or speaks it aloud. It works with any core and is useful for playing untranslated Japanese games in real time.
Configuring the AI Service
Settings → AI Service → AI Service Enable: On.
Endpoint: defaults to http://ztranslate.net/service?api_key=BATCHTEST&mode=Fast&output=png&source=auto&target=English. You can swap in your own Google Cloud Translate, Azure Cognitive Services, or self-hosted OCR endpoint.
Hotkey: map "AI Service" under Settings → Input → Hotkeys → AI Service.
What it does
Press the AI Service hotkey mid-game. RetroArch takes a screenshot, sends it to the configured endpoint, waits a beat, and overlays the translated text over the original text on-screen (or prompts a pause, depending on mode).
Modes
Works best for static text (menus, dialogue boxes, NPC conversation) and poorly for heavily-stylised or animated text. Great for playing a Japanese JRPG blind.
Comparisons — RetroArch vs Standalone Emulators {#retroarch-vs-standalone}
RetroArch is not a universal replacement for standalone emulators, and we have been careful throughout this guide to point out where a dedicated app is still better. Here is the decision matrix.
When RetroArch is the right choice
When a standalone emulator is better
Common comparisons
Our recommendation
Run RetroArch as your general-purpose frontend. For GC/Wii, PS3, PS4, Switch, Wii U, Xbox, Xbox 360 — use standalones. For everything else, RetroArch plus the right core is either as good as or genuinely better than the standalone alternative.
Troubleshooting Common Issues {#troubleshooting}
A catalogue of the problems most RetroArch users hit eventually, and how to fix them. Ordered by frequency.
RetroArch won't open {#retroarch-wont-open}
retroarch.exe --verbose --menu_driver=ozone --video_driver=gl.xattr -dr com.apple.quarantine /Applications/RetroArch.app.SDL_VIDEODRIVER=x11 retroarch to force X11 fallback.Black screen when starting a game {#black-screen}
No audio {#no-audio}
Covered in depth in Audio Setup and Latency. TL;DR: bump latency to 128 ms, ensure Audio Sync is On, check the OS mixer, check Mute hotkey.
Controller not detected {#controller-not-detected}
Missing BIOS {#missing-bios}
system/ folder, and matches the expected hash.Games not scanning / showing up {#games-not-scanning}
.smc or .sfc specifically for SNES..chd or .cue/.bin — .iso works for some systems but not all.Cheats not working {#cheats-not-working}
Game crashes during play
Slow performance
See Performance — Why Is RetroArch Slow for the full flow.
"Why does RetroArch keep crashing?"
Reinstall in this order:
Back up retroarch.cfg, saves/, states/, playlists/.
Uninstall RetroArch.
Reinstall the current stable build from retroarch.com.
Copy your saves/, states/, playlists/ back.
Leave retroarch.cfg alone (let RetroArch regenerate it).
Update cores and info files.
This fixes roughly 80% of recurring-crash complaints. If it still crashes, check logs/retroarch.log for the specific error and file an issue on GitHub.
Trying to read from invalid content path
Usually a broken playlist path. See Playlist Tweaks.
"Warning: no content found in path"
Mismatch between ROM location and what the playlist expects. Re-scan via Import Content → Scan Directory.
Keyboard and Mouse Controls (Reference) {#keyboard-and-mouse-reference}
Default keyboard mappings, assuming User 1 is a keyboard (most desktop users):
| Action | Key |
|---|---|
| D-pad Up | Up arrow |
| D-pad Down | Down arrow |
| D-pad Left | Left arrow |
| D-pad Right | Right arrow |
| A (confirm) | X |
| B (cancel) | Z |
| X | S |
| Y | A |
| Start | Enter |
| Select | Right Shift |
| L1 | Q |
| R1 | W |
| L2 | (unbound by default) |
| R2 | (unbound by default) |
| L3 | (unbound) |
| R3 | (unbound) |
Remap any of these in Settings → Input → Port 1 Controls.
Keyboard won't work in a game — some cores (DOSBox Pure, ScummVM, PPSSPP on-screen keyboard) use raw keyboard input, which conflicts with RetroArch's mapping. Disable Settings → Input → Unified Menu Controls or change the Input Device to "None" for the keyboard port and bind everything to your controller.
Mouse support — for lightgun cores, the mouse is the primary input. Set Port X Device Type: Mouse for cores that expose it, then Settings → Input → Mouse Index to pick which HID mouse maps to which port. Covered in the light gun section.
Hide the mouse cursor in fullscreen — Settings → Video → Output → Show Cursor: Disabled.
Pause when the RetroArch window is inactive (alt-tab pauses the game): Settings → Frame Throttle → Pause When Not Active: On.
How to Reset RetroArch {#resetting-retroarch}
If RetroArch is badly broken and you want a clean start:
Soft reset (keep saves)
saves/, states/, playlists/, thumbnails/, and downloaded cores.retroarch.cfg — RetroArch regenerates it with defaults on next launch.Full reset
Back up saves/, states/, playlists/, thumbnails/, and any custom folders.
Uninstall RetroArch (or delete the install directory for portable installs).
Reinstall.
Let RetroArch regenerate all config files and the default directory structure.
Restore your backed-up saves and states if you want them; otherwise start clean.
Mobile-specific resets
Frequently Asked Questions {#frequently-asked-questions}
Does RetroArch come with games? No. Bring your own ROMs. See ROMs and Scanning.
Does RetroArch need BIOS? Some cores do. See BIOS Setup for the per-core table.
Is RetroArch a virus? No, not from official sources. Third-party repackaged APKs sometimes are. See Is RetroArch Safe.
Does RetroArch emulate [console]? See the compatibility matrix and the per-system FAQ.
Is RetroArch open source? Yes, GPLv3. Source at github.com/libretro/RetroArch.
What's the difference between RetroArch and libretro? Libretro is the API; RetroArch is the reference frontend that implements it. Cores implement the other side of the API.
Can I use RetroArch without a controller? Yes, keyboard works for most cores, touchscreen for mobile via on-screen overlay.
Can RetroArch play PS2 games? Yes, via LRPS2 or PCSX2 libretro. See PS2 core section.
Does RetroArch support Gecko codes / Action Replay? Yes via the cheat engine. See Cheats.
Can RetroArch do netplay? Yes, peer-to-peer rollback. See Netplay.
How do I update RetroArch? Replace the binary, then Online Updater → Update Installed Cores. See Updating.
How do I open the in-game menu? F1 on keyboard, Select+X on controller. See Hotkeys.
How do I exit a game? Quick Menu → Close Content, or hotkey Quit. See Hotkeys.
Can I save settings globally for a game? Yes, per-core or per-content-dir or per-game. See How to Save RetroArch Settings.
Does RetroArch read zip files? Yes, for most single-file cores (NES, SNES, Genesis, GBA, etc.). Disc-based cores want unarchived .chd / .cue/.bin.
What's the best SNES core? Snes9x for most people; bsnes-mercury for accuracy; Snes9x 2005/2010 for weak hardware. See Best Cores by System.
What's the best PS1 core? Beetle PSX HW for PC; SwanStation or PCSX ReARMed for lower-end hardware. See Best Cores by System.
What's the best PS2 core? LRPS2. See Best Cores by System.
What's the best N64 core? Mupen64Plus-Next with ParaLLEl-RDP on desktop; with GLideN64 HLE on weaker hardware. See Best Cores by System.
What's the best GBA core? mGBA. See Best Cores by System.
What's the best GameCube/Wii core? Don't use the RetroArch one — use standalone Dolphin. See Comparisons.
What's the best arcade core? FBNeo for CPS/Neo Geo/Taito, MAME 2003 Plus for broader pre-2003 compatibility. See Best Cores by System.
Does RetroArch work with Sinden / Gun4IR / AimTrak? Yes, all three. See Light Gun Gaming.
