Light Gun Gamer logoLight Gun Gamer

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.

📷 RetroArch main menu on desktop with Ozone UI driver, PS1 game selected in playlist

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.


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:

  • retroarch.com — the canonical download page.
  • buildbot.libretro.com — nightly and stable builds for every platform.
  • Apple App Store — the iOS / iPadOS / tvOS / visionOS build.
  • F-Droid — the recommended Android source.
  • Steam and Itch.io — for Windows, macOS, and Linux users who prefer a store.
  • Amazon App Store, Samsung Galaxy Store, Huawei AppGallery — additional trustworthy Android sources.
  • GitHub releases — official binaries published by the Libretro team.
  • 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.

    SystemSupportRecommended core(s)Notes
    Atari 2600Well supportedStella
    Atari 5200 / 7800 / LynxWell supporteda5200, ProSystem, Handy / Beetle Lynx
    Atari JaguarPartialVirtual JaguarSome 3D games still problematic.
    NES / FamicomStrongFCEUmm, Nestopia UE, MesenMesen for accuracy, FCEUmm for compatibility.
    SNES / Super FamicomStrongSnes9x, bsnes-mercury, Mesen-Sbsnes for accuracy, Snes9x for speed.
    Nintendo 64UsableMupen64Plus-Next, ParaLLEl N64ParaLLEl + RDP Vulkan plugin for accuracy.
    GameCube / WiiRoughDolphin (libretro)Libretro port lags behind standalone Dolphin; use standalone unless you need RetroArch integration.
    Wii UPoorNo viable libretro Cemu core; use standalone Cemu.
    Nintendo DSStrongmelonDS DS, DeSmuMEmelonDS DS for modern accuracy, DeSmuME for broad compatibility.
    Nintendo 3DSRoughCitraCitra standalone was discontinued March 2024 but a libretro fork still ships; accuracy behind standalone forks.
    Nintendo SwitchNot supportedNo Switch core exists.
    Game Boy / Color / AdvanceStrongmGBA, Gambatte, SameBoymGBA for GBA, Gambatte/SameBoy for GB/GBC accuracy.
    Sega Master System / Game GearStrongGenesis Plus GX, SMS Plus GX
    Sega Mega Drive / Genesis / Mega CDStrongGenesis Plus GX, PicoDriveMega CD BIOS required.
    Sega 32XUsablePicoDrivePicoDrive is the 32X core; Genesis Plus GX does not cover 32X.
    Sega SaturnUsableBeetle Saturn, Kronos, YabaSanshiroBeetle for accuracy; Kronos for performance.
    Sega Dreamcast / NAOMI / AtomiswaveStrongFlycastGold standard for Dreamcast on libretro.
    PlayStation 1StrongBeetle PSX HW, SwanStation, PCSX ReARMedBeetle PSX HW for accuracy on PC, ReARMed for mobile/weak hardware.
    PlayStation 2Good (2025+)LRPS2, PCSX2 (libretro)LRPS2 launched January 2025 with the paraLLEl-GS Vulkan renderer; standalone PCSX2 still most capable overall.
    PlayStation 3Not supportedNo RPCS3 libretro core; use standalone RPCS3.
    PlayStation 4 / 5Not supportedRetroArch has no PS4/PS5 core.
    PSPStrongPPSSPPOfficial libretro PPSSPP port.
    PS VitaNot supported as an emulated targetUse standalone Vita3K for Vita emulation.
    Xbox (original)Very limitedNo production-ready libretro Xbox core; xemu standalone exists.
    Xbox 360Not supportedRetroArch has no Xbox 360 core. Desktop Xbox 360 emulation is handled by standalone Xenia.
    Arcade (pre-2000)StrongFBNeo, MAME 2003 Plus, MAME currentFBNeo for CPS/Neo Geo/Taito; MAME 2003 Plus for broad compatibility with smaller ROM sets.
    Arcade (3D / post-2000)UsableFlycast (NAOMI / Atomiswave)For Model 2/3/Chihiro era, use standalone emulators.
    Neo Geo AES / CDStrongFBNeo, Genesis Plus, NeoCDneogeo.zip BIOS required.
    TurboGrafx-16 / PC Engine / SuperGrafx / CDStrongBeetle PCE / PCE Fast
    3DOUsableOpera (formerly 4DO)
    Amiga / C64 / ZX SpectrumUsablePUAE, VICE, FUSE
    MS-DOS gamesStrongDOSBox PureScans .conf and ships with shader presets.
    ScummVM adventure gamesStrongScummVM (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.

  • Can RetroArch play PS1 games? Yes, excellently. Use Beetle PSX HW or SwanStation.
  • Can RetroArch play PS2 games? Yes, with the LRPS2 core (released January 2025) or the older PCSX2 libretro core. Standalone PCSX2 is still the most capable option overall.
  • Can RetroArch play PS3 games? No. RetroArch has no libretro RPCS3 core. To emulate PS3 games, use standalone RPCS3. RetroArch does run on a jailbroken PS3, but in that role it only emulates older systems on the PS3 — it cannot emulate the PS3 itself.
  • Can RetroArch play PS4 games? No emulator can reliably play PS4 games yet.
  • Can RetroArch play PSP games? Yes, excellently, via the official libretro PPSSPP core.
  • Can RetroArch play PS Vita games? No — Vita emulation lives in standalone Vita3K. RetroArch does run on a hacked Vita, but in that role it only emulates older systems.
  • Can RetroArch play Wii games? Yes, via the Dolphin libretro core, but the standalone Dolphin app is faster, more compatible, and better maintained. Use standalone if you can.
  • Can RetroArch play GameCube games? Same answer as Wii — yes, via Dolphin libretro, with the same caveats.
  • Can RetroArch play Wii U games? No. There is no working libretro Cemu core; use standalone Cemu.
  • Can RetroArch play Switch games? No. There is no libretro Switch core.
  • Can RetroArch play 3DS games? Yes, via the libretro Citra core, though Citra is behind modern standalone 3DS forks. Expect some compatibility gaps.
  • Can RetroArch play DS games? Yes, via melonDS DS or DeSmuME cores — both work well.
  • Can RetroArch play Xbox games? No (original Xbox or later). RetroArch runs on Xbox Series and Xbox One via Developer Mode, but emulates older systems from there; it does not emulate Xbox.
  • Can RetroArch play Xbox 360 games? No. Xbox 360 emulation on desktop is Xenia's territory, and there is no libretro Xenia core.
  • 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:

  • 8-bit and 16-bit consoles (NES, SNES, Master System, Mega Drive, Game Boy, GBA, PC Engine) — any computer or phone made in the last fifteen years, with light cores and no heavy shaders.
  • 5th-gen consoles (PS1, N64, Saturn) — a budget modern laptop handles these without breaking a sweat. A low-end phone runs PS1 full-speed; N64 is a bit more demanding because ParaLLEl N64 uses Vulkan.
  • 6th-gen consoles (GameCube, Wii, PS2, Dreamcast, Xbox) — a mid-range modern PC (roughly a mid-2010s quad-core Intel/AMD CPU with a Vulkan-capable GPU) is the practical minimum. Modern flagship phones can handle many titles but struggle with demanding PS2 games. Apple Silicon Macs do well on this tier.
  • PSP — demands vary wildly. Simple 2D titles land near PS1; heavy 3D PSP games (God of War, Persona) need substantially more headroom.
  • 3DS — Citra core is heavy; a modern mid-range PC or Apple Silicon Mac is ideal.
  • Arcade — extremely variable. CPS-1 games run on anything. Sega Model 2 does not.
  • 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:

  • The installer (Windows, macOS) or
  • The 7-zip archive (portable — no installer, just unzip anywhere).
  • 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:

    2.

    Pick the row for your device.

    3.

    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.

    4.

    Run the installer or unpack the archive.

    5.

    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]:

  • Windows / macOS / Linux → §23
  • Android → §24
  • iOS / iPadOS / tvOS → §25
  • Steam Deck → §29
  • Nintendo Switch → §26
  • Xbox Series / One → §27
  • Raspberry Pi → §30
  • PS Vita / PSP / PS2 / PS3 → §28
  • Wii / Wii U / 3DS → §31
  • Chromebook / Firestick → §24 (both run the Android app)

  • 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.

  • Tip: some cores need BIOS files to work. We cover exactly which in BIOS Setup.*
  • 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.

    📷 Quick Menu open during gameplay with Save State, Shaders, Controls, Cheats visible

    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:

  • Every core comes with a .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.
  • Cores are per-architecture. The Windows .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.
  • Cores can have options exposed through the Quick Menu under Core Options. These are per-core things — "Beetle PSX HW internal resolution: 2x/4x/8x", "mGBA skip BIOS intro: on/off". Save per-game if you want.
  • Cores are native code loaded into the RetroArch process. A misbehaving core can crash RetroArch and, in principle, do anything RetroArch itself can do — stick to cores from the official updater rather than random third-party builds.
  • 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

  • FCEUmm — the most mapper-complete NES core. Handles virtually every unlicensed and obscure cart. Default recommendation.
  • Nestopia UE — the accuracy-first NES core; clean and simple.
  • Mesen — extremely accurate, full debugger, HD pack support. Slightly heavier than FCEUmm on weak hardware.
  • QuickNES — fast but sacrifices accuracy. Good for extremely weak hardware or maximum runahead latency reduction.
  • SNES / Super Famicom

  • Snes9x — fast, broadly compatible. Default recommendation for most users.
  • bsnes-mercury (accuracy) — cycle-accurate SNES emulation. Noticeably more demanding than Snes9x. Use for Star Fox, Stunt Race FX, and other SuperFX titles where accuracy matters.
  • Snes9x 2010 / Snes9x 2005 — progressively lighter Snes9x forks for low-power devices (Raspberry Pi, older phones, Switch).
  • Mesen-S — modern multi-system core (SNES + GB/GBC) from the same author as Mesen. Excellent.
  • Game Boy / GBC / GBA

  • mGBA — the default for all three GB systems. Active development, GBA Link Cable, save conversion tools.
  • Gambatte — extremely accurate GB/GBC core. No GBA support.
  • SameBoy — newer accuracy-focused GB/GBC core with Super Game Boy support.
  • Nintendo 64

  • Mupen64Plus-Next — the default. ParaLLEl-RDP for LLE Vulkan rendering or GLideN64 for HLE.
  • ParaLLEl N64 — a different flavour of the ParaLLEl stack, better for some games.
  • 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

  • Dolphin (libretro) — works, but lags significantly behind standalone Dolphin and misses features like the latest Vulkan improvements, save-file compatibility polish, and the sysconf editor.
  • 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

  • melonDS DS — modern, accurate, active. Works with wireless features (some). Our default.
  • DeSmuME — older, broadly compatible.
  • 3DS

  • Citra — the libretro Citra fork continues to ship. The standalone Citra project was discontinued in March 2024 following the Yuzu settlement, but the code survives in libretro and in community forks. Expect slower shader compile and some compatibility gaps compared to the most active community forks.
  • Sega Master System / Mega Drive / Mega CD / Game Gear

  • Genesis Plus GX — the default for the Sega 8/16-bit family and Mega CD: Master System, Game Gear, SG-1000, Mega Drive, and Sega CD. One core does all of it.
  • PicoDrive — the 32X core, and a lighter alternative to Genesis Plus GX on weak devices (Raspberry Pi, older Switch). PicoDrive also handles Mega Drive, Master System, and Mega CD.
  • Saturn

  • Beetle Saturn — cycle-accurate, very demanding. Best visuals.
  • Kronos — actively developed, moderate demands, hardware renderer.
  • YabaSanshiro — light option.
  • Dreamcast / NAOMI / Atomiswave

  • Flycast — the gold standard. Broad compatibility with Dreamcast and the arcade systems that shared its hardware, with lightgun support for the arcade shooting games that used it.
  • PlayStation 1

  • Beetle PSX HW — the accuracy-plus-HD choice. Supports internal upscaling, PGXP for precision geometry, a widescreen hack, and GunCon input.
  • Beetle PSX (software) — purely accurate, no upscaling, slower.
  • SwanStation — a libretro fork of DuckStation. Fast, very compatible, great for lower-end hardware. Some options (disc switcher, cheevos hardcore) vary from standalone DuckStation.
  • PCSX ReARMed — the go-to core for Android, ARM-based devices, and older phones.
  • PlayStation 2

  • LRPS2 — launched January 2025. Uses the paraLLEl-GS Vulkan LLE renderer. Windows, macOS, Linux. High-resolution upscaling and supersampling.
  • PCSX2 (libretro) — the older libretro fork. Still works. Consider it a fallback to LRPS2.
  • 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

  • PPSSPP (libretro) — the official libretro port. Maintained alongside standalone PPSSPP.
  • Arcade

  • Final Burn Neo (FBNeo) — the default arcade core. Excellent for CPS-1/2/3, Neo Geo, Taito, Psikyo, Cave, many Sega System boards. Light gun support is strong.
  • MAME 2003 Plus — widely used for broad compatibility with smaller, pre-2003 romsets — the older romsets are smaller and in wider community circulation. Strong light gun support.
  • MAME (current) — full, up-to-date MAME. Demanding. Requires exact current-version romsets.
  • MAME 2010 / MAME 2015 / MAME 2016 — older snapshots that trade off compatibility vs resource use. Useful on weak hardware that cannot run current MAME.
  • Home computers

  • PUAE (Amiga), VICE (C64 / VIC-20 / PET), FUSE (ZX Spectrum), MSX / MSX1 / MSX2 (blueMSX), PC-98 (Neko Project 2 Kai) — all libretro cores, all current.
  • DOS / ScummVM

  • DOSBox Pure — the modern DOSBox libretro port. Parses .conf files, has a built-in shader pass tuned for DOS resolutions, reads ZIP archives directly.
  • ScummVM (libretro) — all the LucasArts and Sierra point-and-clicks, plus everything ScummVM's main app supports.
  • 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 / systemBIOS files requiredNotes
    Beetle PSX / Beetle PSX HW (PS1)scph5500.bin, scph5501.bin, scph5502.binOne per region. Exact filenames mandatory.
    SwanStation (PS1)Same as Beetle PSX or psxonpsp660.binCan run BIOS-less for most games but compatibility drops.
    LRPS2 / PCSX2 libretro (PS2)SCPH-xxxxx.bin region BIOS + EE/GS sub-filesRegion-matched BIOS for the game. Check Core Information → Firmware for the exact file list the installed core wants.
    Beetle Saturn / YabaSanshiro / Kronossaturn_bios.bin + region variantssega_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.binRegion-specific Sega CD BIOS.
    Flycast (Dreamcast)dc_boot.bin, dc_flash.binRequired for most Dreamcast games. dc_boot.bin for VMU menu, dc_flash.bin for save support.
    Flycast (NAOMI / Atomiswave)naomi.zip, awbios.zipArcade BIOS zips.
    DeSmuME / melonDS DSbios7.bin, bios9.bin, firmware.binRequired by melonDS for authentic boot. Optional on DeSmuME.
    CitraDSP firmware + 3ds_sysarchive/Partial — system archive needed for certain games.
    mGBAgba_bios.binOptional. Enables intro screen and improves compatibility in a handful of games.
    FCEUmm / Nestopia (FDS)disksys.romFamicom Disk System only.
    FBNeo / MAME (Neo Geo)neogeo.zipRequired for Neo Geo AES/MVS games.
    Beetle PCE (PC Engine CD)syscard3.pceCD-ROM² games.
    Opera (3DO)panafz1.binOr equivalent regional 3DO BIOS.

    "Firmware is missing" — how to fix it

    This message appears when:

    1.

    The BIOS file is in the wrong folder. Check Settings → Directory → System/BIOS and make sure your files are actually there.

    2.

    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.

    3.

    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.

    📷 Core Information screen showing BIOS file list with tick marks for found files and red crosses for missing

    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.

  • Scan is smart but not perfect.* If a game does not match the database (rare romsets, romhacks, prototypes), it lands in an Unknown playlist. Move it manually via Import Content → Manual Scan, which lets you pick a system and scan by extension.
  • Archives (zip, 7z, rar)

    Most RetroArch cores accept archives transparently — you can leave SNES ROMs zipped and Snes9x unpacks them on load. Exceptions:

  • Disc-based cores (Beetle PSX, LRPS2, Beetle Saturn, Flycast) want a direct .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.
  • Multi-disc games are best stored as a single .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.lpl

    You 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:

  • Boxart — the original box / cartridge / disc cover.
  • Snap — in-game screenshot.
  • Title — title screen.
  • 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:

  • Dumping your own cartridges with a ROM reader (RetroN5/RetroN Sq, Retrode, Open Source Cartridge Reader).
  • Ripping your own discs to .chd using chdman on a PC with an optical drive.
  • Public-domain homebrew collections (itch.io, No More Secrets, Doodle World).
  • Commercial retro compilations you own digital licences to (some Steam collections allow you to extract their assets, though this is a per-title legal judgment).

  • 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

  • Xbox Wireless (Xbox One / Series / Elite / 360)
  • Sony DualShock 3 / 4, DualSense (wired or Bluetooth)
  • Nintendo Switch Pro, Joy-Con (paired)
  • 8BitDo Pro 2, SN30 Pro, M30, Ultimate, Zero 2, and most of the 8BitDo range
  • Logitech F310 / F710 / RumblePad
  • PowerA Enhanced Wired / Enhanced Wireless for Xbox and Switch
  • Steam Controller (via Steam Input only, bypassing autoconfig)
  • Mayflash arcade sticks, adapters, and Wiimote bridges
  • Retro-Bit Tribute 64, Saturn USB, Mega Drive USB
  • 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 Toggle
  • F2 — Save State
  • F4 — Load State
  • Space — Fast Forward
  • R — Rewind (while held, if Rewind is enabled)
  • F8 — Screenshot
  • P — Pause
  • Ctrl+Q — Quit
  • On 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.

    📷 Port 1 Controls screen showing DualSense mapped, Port 2 set to GunCon device type

    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

    1.

    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.

    2.

    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.

    3.

    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

  • FBNeo — the most light-gun-rich core. Supports multiple simultaneous lightguns for two-player arcade games. Set each player's input source under Controls → Port X Device Type → Lightgun. Strong compatibility with classic 2D arcade lightgun titles (the Lethal Enforcers, Operation Wolf / Thunderbolt, Point Blank, and Area 51 families are typical examples). Individual game support varies — check the FBNeo game list before committing to it.
  • MAME 2003 Plus and MAME (current) — both support lightguns via crosshair system; MAME 2003 Plus is the popular choice because its smaller romset is easier to acquire.
  • Mednafen PSX / Beetle PSX HW — full GunCon and Justifier support for PS1 shooting games like Time Crisis, Time Crisis: Project Titan, Point Blank 1/2/3, Die Hard Trilogy, Die Hard Trilogy 2: Viva Las Vegas, Elemental Gearbolt.
  • Flycast — Dreamcast and NAOMI lightgun games — House of the Dead 2, Confidential Mission, Virtua Cop 3, Death Crimson OX, Ranger Mission, LA Machineguns. Flycast exposes a lightgun device type per port.
  • Beetle SaturnVirtua Cop 1/2, House of the Dead, Policenauts (pen/lightgun), Death Crimson. Set port 2 device type to "Stunner" or "Virtua Gun".
  • Genesis Plus GX — Mega CD's Lethal Enforcers I/II with Justifier, plus Menacer support for a small library.
  • FCEUmm / Nestopia — NES Zapper for Duck Hunt, Hogan's Alley, Wild Gunman, To the Earth, Chiller, Baby Boomer, Gotcha!, Gumshoe.
  • 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.

    1.

    Install Sinden Lightgun software (the bundle from sindenlightgun.com, which includes the firmware, calibration app, and the virtual-border generator).

    2.

    Calibrate the gun in the Sinden app against your TV. Note the gun's port assignment (Player 1, Player 2).

    3.

    Launch RetroArch and open the core you want (FBNeo or MAME 2003 Plus are the usual picks for arcade shooters).

    4.

    Load the game and open Quick Menu → Controls → Port 1 Device Type → Lightgun.

    5.

    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).

    6.

    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:

  • Enable the border in the Sinden app globally (it overlays on everything), or
  • Use a RetroArch overlay that adds a white border — libretro-overlays has a sinden-border variant.
  • Setting up a Gun4IR / AimTrak with RetroArch

    The flow is identical to Sinden, with two differences:

  • Gun4IR uses IR emitters on a sensor bar (like a Wiimote). Calibrate via the Gun4IR app before launching RetroArch.
  • AimTrak uses IR on an LED bar. Install the Ultimarc AimTrak driver and calibrate. Both enumerate as mice.
  • 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.

  • Native raw input. RetroArch's 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.
  • DemulShooter. A Windows utility by argonlefou that was originally built for Demul (Dreamcast/NAOMI) and has grown to cover several emulators including selected RetroArch setups for games using raw input. It handles raw-input translation on cores that do not expose a mouse-index setting cleanly, plus per-game quirks (calibration offsets, reload behaviour, dual-trigger games). DemulShooter's RetroArch support is selective and game-specific rather than universal — check the current DemulShooter game list before committing to it. We have a dedicated DemulShooter guide planned for this site.
  • For 2-player RetroArch light gun setup:

    1.

    Plug in both guns. Confirm in Windows Settings → Bluetooth & Devices that both show up as distinct HID mice.

    2.

    In RetroArch, Settings → Input → Input Drivers → raw (Windows only).

    3.

    In RetroArch, Settings → Input → Port 1 → Mouse Index: 0 (or whichever your P1 gun is), Port 2 → Mouse Index: 1.

    4.

    Load the core, set both ports' device type to Lightgun, and launch the game.

    CoreStandout light-gun games
    FBNeoLethal Enforcers, Area 51 / Site 4, Point Blank, Operation Wolf / Thunderbolt, and other 2D arcade lightgun titles (check FBNeo's per-game list)
    MAME 2003 PlusTerminator 2: Judgment Day, Beast Busters, Police Trainer, Mechanized Attack, Zombie Raid, Silent Scope
    Beetle PSXTime Crisis, Time Crisis: Project Titan, Point Blank 1/2/3, Die Hard Trilogy, Elemental Gearbolt
    FlycastHouse of the Dead 2, Confidential Mission, Virtua Cop 3, Death Crimson OX, Ranger Mission, LA Machineguns
    Beetle SaturnVirtua Cop 1/2, House of the Dead, Policenauts
    Genesis Plus GXLethal Enforcers I/II (Mega CD with Justifier)
    FCEUmm / NestopiaDuck 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.

    📷 Port 1 Controls screen showing device type "Lightgun" with Sinden mapped as mouse index 0

    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 (.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 (.glsl) — OpenGL / GLES format. Extremely compatible across older GPUs and mobile devices.
  • Cg (.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 — simulate cathode-ray-tube TVs and arcade monitors.
  • Handheld — simulate Game Boy screens, PSP screens, DS screens.
  • NTSC — simulate NTSC composite signal artefacts (the Sonic the Hedgehog waterfall is the classic example).
  • Anti-aliasing — smooth jaggies on early 3D hardware.
  • Upscaling — xBR, HQx, Scale2x-style pixel-art preserving upscalers.
  • CRT shaders — the important ones

  • crt-royale — the community reference standard. Heavy, beautiful, highly configurable. Requires a modern GPU.
  • crt-lottes — a fast CRT shader by Timothy Lottes (ex-AMD). Single-pass, runs on almost anything.
  • crt-guest-advanced / crt-guest-advanced-fastest — modern pair from the guest shader author. Highly tweakable, good "default modern CRT" look.
  • crt-geom / crt-geom-deluxe — the classic older CRT shader.
  • crt-hyllian — sharp scanlines with mild phosphor bloom.
  • BlurBusters CRT Beam Racing Shader — the newest entry. Requires a high-refresh display (240Hz+ is the target), low input lag, and a high-refresh graphics backend. Simulates CRT phosphor decay and scanning-beam motion clarity for a more accurate CRT-motion feel on a modern LCD/OLED. Pairs with 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:

  • Global — applies to everything.
  • Core — applies to all games in that core.
  • Content Directory — applies to all games in that folder.
  • Game — applies only to this specific ROM.
  • 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.

    📷 Shader parameters screen showing crt-royale with scanline weight and bloom sliders

    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

  • Set Settings → Audio → Output → Latency to 128 ms (up from default 64 ms). Almost all audio issues are latency-too-low.
  • Make sure Audio Sync is On.
  • Set Audio Driver to wasapi (Windows), alsa or pipewire (Linux), coreaudio (macOS and iOS), openslES or audiotrack (Android) as your platform default.
  • For Bluetooth audio specifically, bump latency to 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

  • Check Settings → Audio → Mute — easy to toggle on by accident via the hotkey.
  • Check that a core is actually playing — some cores (ScummVM, DOSBox Pure) run silent until you load a game.
  • Check system volume. RetroArch does not fight the OS mixer.
  • On Linux with PipeWire/PulseAudio, check that the right sink is active.
  • On iOS, check silent-mode switch on the side of the phone.
  • 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

    1.

    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.

    2.

    Disable shaders. A heavy CRT shader can cost 30–50% of your GPU budget. Quick Menu → Shaders → Remove.

    3.

    Lower internal resolution. Beetle PSX HW and Dolphin libretro both expose an "Internal Resolution" option. 1x native is free; 4x native is GPU-expensive.

    4.

    Enable Threaded Video. Settings → Video → Threaded Video: On. Decouples the video submission thread from the emulator thread — reduces stutter on modern multi-core hardware.

    5.

    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.

    6.

    Turn off Rewind. Rewind has a per-frame memory cost. Settings → Frame Throttle → Rewind: Off unless you need it.

    7.

    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.

    8.

    Cap background processes. Browsers, Discord, OBS — all of these steal CPU cycles RetroArch wants. Close them for heavy cores.

    Per-system optimisation

  • N64 — pick ParaLLEl N64 with ParaLLEl-RDP (Vulkan) on strong hardware; switch to Mupen64Plus-Next with GLideN64 (HLE) on weaker hardware.
  • PS2 — LRPS2 is faster than the old PCSX2 libretro on most hardware; make sure you are on the modern core. Drop internal resolution to 1x if struggling. Close every other app.
  • GameCube / Wii (libretro Dolphin) — honestly, just use standalone Dolphin. The libretro port's performance floor is higher.
  • 3DS — Citra is heavy. Apple Silicon Macs and Zen 4-class desktops run it well; older hardware struggles regardless of settings.
  • Saturn — YabaSanshiro is much lighter than Beetle Saturn. For most games it is indistinguishable visually.
  • Why is RetroArch so slow on my phone?

    Usually one of:

  • Wrong core variant — install the 32-bit APK on low-RAM devices even if your phone is 64-bit, because RetroArch Plus includes cores like PPSSPP and Citra that are memory-heavy.
  • Wrong graphics backend — switch between Vulkan, OpenGLES3, and OpenGLES in Settings → Drivers → Video. Vulkan is fastest when it works; some Mali / PowerVR GPUs prefer OpenGLES.
  • Thermal throttling — sustained heavy emulation pushes phones into thermal cut. Let the phone cool between sessions.
  • Background apps — close them. Android is especially aggressive about keeping apps warm in RAM.
  • Fast forward and slow-mo

  • Fast forward. Default hotkey 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.
  • Slow motion. Default hotkey 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:

  • Save State — default F2 / Select + X.
  • Load State — default F4 / Select + Y.
  • Next/Previous Slot — default 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:

  • PS1.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.ps2 virtual cards under saves/ps2/. LRPS2 and libretro PCSX2 share the same format.
  • Saturn — internal battery + cartridge RAM both emulated, stored alongside saves.
  • Dreamcast — VMU emulation with per-slot .bin files. Flycast writes to saves/dc/.
  • GameCube — memory card .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:

    1.

    Settings → CloudSync → CloudSync Enable: On.

    2.

    Destination — set to your WebDAV endpoint (e.g. https://your-nextcloud.example/remote.php/dav/files/username/RetroArch/).

    3.

    Username / Password — your WebDAV credentials.

    4.

    CloudSync SRAMs / States / Configs / System Files — toggle which categories to sync.

    5.

    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

    1.

    Main Menu → Netplay → Start Netplay Host.

    2.

    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).

    3.

    Other players connect by IP or via the public Netplay Rooms browser.

    Joining

    1.

    Main Menu → Netplay → Netplay Rooms (the public browser).

    2.

    Pick a room listing the same core/game you have locally.

    3.

    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:

  • Fighting games (FBNeo, MAME 2003 Plus, Genesis Plus GX) — outstanding.
  • 2D platformers and brawlers (Snes9x, Genesis Plus, FCEUmm, mGBA, PCSX ReARMed) — very good.
  • 3D cores (Mupen64Plus-Next, Beetle PSX HW, Flycast) — good, but heavier and more finicky about desync.
  • LRPS2 / PCSX2 — playable but desyncs happen; not recommended for competitive play.
  • Limitations

  • RetroAchievements Hardcore Mode disables netplay — you cannot earn hardcore achievements in a netplay session.
  • Players must have matching ROM CRCs. The handshake fails if your P1's ROM is a different dump from your P2's.
  • Save states transferred at session start can be large; expect a few seconds of loading between game selection and play.

  • 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

    1.

    Create an account at retroachievements.org and confirm via email.

    2.

    In RetroArch: Settings → Achievements → Enable Achievements: On.

    3.

    Username / Password — enter your RA credentials. Token is stored locally.

    4.

    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:

  • No save states.
  • No slow-motion.
  • No cheats.
  • No rewind.
  • No netplay.
  • 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:

  • Supported: FCEUmm, Nestopia, Snes9x, bsnes-mercury, mGBA, Gambatte, SameBoy, Genesis Plus GX, PicoDrive, Beetle PSX HW, SwanStation, PCSX ReARMed, PPSSPP, DeSmuME, melonDS DS, Dolphin (libretro), LRPS2, Flycast, Mupen64Plus-Next.
  • Not supported yet: Some niche cores, most arcade cores (FBNeo has partial support), ScummVM, DOSBox Pure.
  • 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:

  • Load Cheat File (Replace) — load a .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).
  • Load Cheat File (Append) — add cheats to the existing list.
  • Save Cheat File As — export your edited cheat list.
  • Apply Changes — toggle enabled cheats on/off.
  • Start Or Continue Cheat Search — RAM searching for your own code discovery. Find a value, change it in-game, search again for values that changed accordingly.
  • 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

  • PS1 (Beetle PSX / SwanStation) — GameShark / PAR codes. RetroArch's cheat manager accepts D0xxxxxx conditional codes and 80xxxxxx write codes.
  • SNES (Snes9x, bsnes-mercury) — Game Genie codes (e.g. DD64-AF64) and Pro Action Replay.
  • NES (FCEUmm, Nestopia) — Game Genie / RAW memory patches.
  • GB / GBA (mGBA, Gambatte) — GameShark / GameShark V3 / CodeBreaker / Action Replay.
  • Genesis (Genesis Plus GX) — Game Genie / Pro Action Replay.
  • N64 (Mupen64Plus-Next) — GameShark / Xplorer64.
  • GameCube / Wii (Dolphin libretro) — Gecko codes, Action Replay.
  • PSP (PPSSPP) — PSP-specific CheatDB format plus basic RAM patches.
  • 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"

  • Make sure Apply After Toggle or Apply After Load is enabled, otherwise toggling a cheat doesn't take effect until the next reset.
  • Some cheats expect specific ROM versions (e.g. US vs PAL Pokémon Red). Wrong ROM = cheat writes to wrong address = crash or corruption.
  • Some cores have dropped cheat support in recent versions — check 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

  • Ozone — modern two-column layout with a sidebar. Active default on desktop and handheld. Recommended for most users.
  • XMB — the PS3/PSP-inspired cross-media bar. Horizontal rows for systems, vertical columns for items. The classic RetroArch look. Fans swear by it.
  • MaterialUI — flat-card, phone-first. Default on Android. Not ideal for controllers.
  • RGUI — minimalist text-based menu, low-memory footprint. Still useful on Raspberry Pi 1, older Vitas, Nintendo 3DS, and other tightly-constrained targets.
  • Switch between them in Settings → Drivers → Menu. Changes take effect on next launch.

    📷 Four-way side-by-side comparison of Ozone, XMB, MaterialUI, RGUI menu drivers

    Themes

    Each driver has its own theme catalogue:

  • OzoneSettings → User Interface → Appearance → Menu Colour Theme. Ships with a list of named themes (the selection expands with releases).
  • XMB — supports custom background images (Settings → User Interface → Appearance → Menu Wallpaper), icon themes, and per-playlist colour gradients.
  • MaterialUI — light/dark themes and several colour-palette options.
  • 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:

  • RetroArch (standard) — 32-bit cores only on the very oldest builds.
  • RetroArch Plus — 64-bit cores for heavier systems; the one to install on modern phones.
  • Install either and let the Core Downloader handle the rest.

    Front-ends that embed RetroArch

  • EmuDeck (Steam Deck) — installs and auto-configures RetroArch plus several standalone emulators.
  • LaunchBox / BigBox (Windows) — commercial arcade-style frontend, calls RetroArch per-platform.
  • Batocera (x86 / Raspberry Pi / some handhelds) — Linux distro built around EmulationStation with RetroArch as a core.
  • Lakka — minimal Linux distro with RetroArch as the whole UI.
  • RetroPie (Raspberry Pi, Ubuntu) — classic RetroArch + EmulationStation setup.
  • ArkOS / RecalBox / JELOS / muOS — handheld-focused distros.
  • 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:

  • Resume / Restart / Close Content
  • Save State / Load State / Undo Save / Undo Load (per slot)
  • Take Screenshot
  • Core Options (per-core settings exposed to users)
  • Controls (per-port device type and mapping)
  • Cheats
  • Shaders (load preset, parameters, save)
  • Disc Control (for multi-disc games)
  • Achievements list
  • Information (core info, system info, cheat engine info)
  • 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.

    ActionKeyboard default
    Menu ToggleF1
    Save StateF2
    Load StateF4
    State Slot +F6
    State Slot −F7
    Fast Forward (hold)Space
    Rewind (hold)R
    ScreenshotF8
    Pause ToggleP
    QuitCtrl + Q
    Reset ContentH
    Mute AudioF9

    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)

  • Desktop — F1, or your configured controller combo.
  • Android / iOS — tap the hamburger icon at the top-right of the overlay, or use the Menu Toggle hotkey if you have a connected controller.
  • Steam Deck — the Steam button opens the Steam overlay, so bind Menu Toggle to something distinct, e.g. both back grips via Steam Input.
  • Xbox (Dev Mode) — the Xbox button opens the Xbox overlay, so bind Menu Toggle to a Select-plus-face-button combo.
  • Switch — bind whatever combo you prefer. The Home button exits to the Switch OS.
  • "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:

  • Quick Menu → Close Content — unloads the core and returns to the main menu.
  • Hotkey: Quit — default Ctrl+Q on keyboard. Closes RetroArch entirely. Bind a controller combo under Hotkeys if you want one.
  • Close the window — RetroArch saves SRAM on a clean close.

  • 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.comWindows 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:

  • Microsoft Store version — available but not recommended. Lags behind the official builds.
  • Steam version — good UX, Steam Input works, but cores on Steam are distributed as separate Steam items rather than via RetroArch's built-in Online Updater. If you want the full core catalogue with one-click updates, use the official installer.
  • 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 (most distros) — flatpak install flathub org.libretro.RetroArch. Sandboxed, auto-updating, works on anything with Flatpak.
  • Snapsudo snap install retroarch. Less popular than Flatpak but works.
  • AppImage (buildbot) — download the .AppImage, chmod +x, run. Portable, no install.
  • Distro packagesapt install retroarch on Debian/Ubuntu, pacman -S retroarch retroarch-assets-xmb on Arch (both assets packages recommended).
  • Steam — same story as other desktops.
  • Itch.io — builds for those who prefer Itch.
  • 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:

    1.

    Android app (if your Chromebook supports Google Play) — install RetroArch from Play Store or Aurora Store. Works well, touch + controller.

    2.

    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.

    In order of preference:

    1.

    F-Droidf-droid.org/en/packages/com.retroarch/. Open-source repository, always current, auto-update via the F-Droid app.

    2.

    Official APK from buildbot.libretro.combuildbot.libretro.com/stable/latest/android/. Direct download, install via sideload (allow "install unknown apps" for your browser). Manually update.

    3.

    Amazon App Store — search "RetroArch" and install. Up to date.

    4.

    Samsung Galaxy Store — up to date.

    5.

    Huawei AppGallery — up to date.

    6.

    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:

  • RetroArch — 32-bit or minimal 64-bit
  • RetroArch Plus — full 64-bit with heavy cores bundled
  • 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.

  • Firestick / Fire TV — sideload via 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).
  • Nvidia Shield — install from F-Droid or a sideloaded buildbot APK (the Shield's Google TV Play Store version is stale like other Play Store installs). Excellent Android platform for emulation; Tegra X1 runs most cores at full speed, with some lighter PS2 games playable via LRPS2.
  • Chromecast with Google TV / Google TV Streamer — install RetroArch via the most current source available on that device (prefer Aurora Store or a sideloaded buildbot APK over the stale Play Store build). Storage is limited — use USB or network-attached ROMs.
  • Android handhelds (Retroid Pocket 4 Pro, Ayn Odin, Odin 2, AYANEO Pocket Air, KT-R1) — all ship with Android and all run RetroArch natively; prefer F-Droid, buildbot APK, or the Amazon / Samsung / Huawei stores over the outdated Play Store build.
  • Apple TV — Apple TV runs tvOS, not Android. See the iOS section.
  • Setup flow for Android

    1.

    Install RetroArch (or RetroArch Plus) from a trusted source.

    2.

    Grant storage permissions on first launch.

    3.

    Put your ROMs in an accessible folder (internal storage, SD card, or cloud-synced folder — pick one you'll remember).

    4.

    Scan via Import Content → Scan Directory.

    5.

    Update cores and thumbnails via Online Updater.

    6.

    Configure your controller (auto-detected for Xbox, PS5, Switch Pro, 8BitDo). For unknown pads, manually bind.

    7.

    On tablets, enable the on-screen overlay: Settings → On-Screen Display → Overlay → Overlay Preset.

    Common Android issues

  • "App not installed" after download — existing RetroArch installed via Play Store; uninstall first (or change package name — buildbot and Play Store use different package IDs).
  • Permissions denied — Android 11+ has tighter storage permissions. Grant file access under Android Settings → Apps → RetroArch → Permissions, or move your ROMs into an app-accessible folder.
  • Black screen on launch — GPU driver incompatibility. Switch video driver: Settings → Drivers → Video → gl (force OpenGL ES) instead of Vulkan.
  • Controller works in the menu but not in-game — core option overriding input. Check 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:

  • PSP games that are easy (top-down, 2D-heavy) run fine.
  • PSP games that are heavy (God of War: Chains of Olympus, Shin Megami Tensei: Persona) stutter or slow.
  • PS2, GameCube, Wii — unplayable without JIT, even on M2 iPad Pro.
  • 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:

  • AltStore and AltStore PAL (the EU-only DMA-era variant) — pair with a Mac/Windows companion app, sideload an .ipa and enable JIT when the companion app is on the same network.
  • TrollStore — a permanent-signing tool, only available on a specific range of iOS versions where the underlying exploit works. Re-check compatibility before use.
  • Developer-account sideloading via Xcode — free Apple IDs give a 7-day signed install; paid developer accounts extend it to a year.
  • 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

  • "App can't be opened" — iOS signature issue. Redownload from App Store or re-sign sideloaded .ipa.
  • Games run slowly — you are on the App Store build without JIT. Either switch to a lighter core (PCSX ReARMed instead of Beetle PSX HW) or sideload with JIT.
  • Controller won't pair — MFi vs non-MFi. Xbox Wireless and DualSense pair via Bluetooth. Some cheap Bluetooth pads don't implement MFi and won't map properly in iOS.
  • File import fails — iOS sandbox restricts what RetroArch can see. Use the Files app → RetroArch folder, or point RetroArch at iCloud Drive if you have it set up.

  • 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

  • A Switch running CFW. The Switch homebrew scene has evolved significantly — check a current hacking guide (the community "Nintendo Homebrew" Discord and wiki are the standard references) for which console revisions and firmware versions are currently supported and what install route to take.
  • Atmosphère CFW installed.
  • An SD cardnot exFAT. FAT32 is the safe recommendation for Switch homebrew. This is the single most-important warning; exFAT on Switch is a known corruption source.
  • Installing RetroArch on Switch

    1.

    On your PC, download the Switch 7z archive from retroarch.com/platforms.

    2.

    Extract the archive to your microSD card in the location described by the release's readme (typically alongside other homebrew under /switch/).

    3.

    Insert SD into Switch, boot into hbmenu (Atmosphère).

    4.

    Launch the RetroArch homebrew entry.

    5.

    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:

  • All 8/16-bit systems at full speed with shaders.
  • PS1 (Beetle PSX HW, PCSX ReARMed) — full speed.
  • N64 (Mupen64Plus-Next GLideN64) — full speed for most games; ParaLLEl-RDP Vulkan path is heavier.
  • GBA, DS (melonDS DS), GB/GBC — excellent.
  • PSP (PPSSPP) — very good, close to original hardware.
  • Saturn (YabaSanshiro) — playable for most titles.
  • Dreamcast (Flycast) — playable docked; heavier games struggle handheld.
  • 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

  • An Xbox Series X, Series S, Xbox One, One S, or One X console.
  • An Xbox Developer Account — $19 one-time fee, via partner.microsoft.com.
  • A PC for sideload.
  • Patience — the first-time Dev Mode activation process is long.
  • Activating Dev Mode

    1.

    Pay the $19 dev account fee once.

    2.

    Install the Dev Mode Activation app from the Xbox Store on your console.

    3.

    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

    1.

    Download the Xbox .appx from retroarch.com/platforms.

    2.

    Download the matching Visual Studio 2019/2022 C++ Runtime .appxbundle (Microsoft link provided on the RetroArch Xbox page).

    3.

    In Dev Mode, open the Xbox Device Portal from a PC browser (the Xbox shows its local IP under Dev Home).

    4.

    In Device Portal → My Apps → Add → upload retroarch.appx and the runtime .appxbundle.

    5.

    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:

  • USB storage — plug a USB drive formatted NTFS, exFAT, or FAT32 into the console.
  • Device Portal upload — slow for large files but works.
  • Network share from RetroArch itself — RetroArch-on-Xbox can mount SMB shares from a NAS or PC.
  • Common Xbox issues

  • "RetroArch will not launch" — C++ runtime not installed, or wrong version. Install the matching VS2019 runtime appxbundle.
  • "Game crashes" — usually memory pressure on Series S; lower internal resolution.
  • Controllers — Xbox controllers work by default. Other pads (PS5, Switch) need Bluetooth pairing through Dev Home Settings.
  • Dev Home shows black / white / blue screen after update — revert to a known-good Dev Home snapshot via Microsoft's recovery process.
  • 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

  • Requires hacked Vita (HENkaku / Enso).
  • Download the .vpk + data files from retroarch.com/platforms.
  • Install via VitaShell.
  • Launch from LiveArea.
  • 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

  • Download the .7z Portable build from retroarch.com/platforms.
  • Copy to the PSP's memory stick under PSP/GAME/.
  • Launch from the PSP's game menu (requires CFW or signed homebrew).
  • Low-end by modern standards — PSP runs 8/16-bit and a handful of light PS1 games. Primarily a curiosity.

    PlayStation 2

  • Download the .elf PS2 build from retroarch.com/platforms.
  • Load via uLaunchELF or OPL on a modded PS2.
  • Select cores and ROMs from USB or internal HDD.
  • 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)

  • From Deck's desktop or gaming mode, open Steam, search "RetroArch", install.
  • Launches as a normal Steam game. Plays nicely with gamescope and the Deck's built-in controller.
  • Drawback: no core updater (Steam policy). You install cores as separate Steam items.
  • Path 2: Flatpak (more powerful)

  • Desktop mode → open Discover (KDE's software centre), search RetroArch, install the Flatpak.
  • Or terminal: flatpak install flathub org.libretro.RetroArch.
  • Launches via Steam if you Add Non-Steam Game → flatpak run org.libretro.RetroArch.
  • Full core updater, full thumbnail updater, full shader catalogue.
  • emudeck.com bundles RetroArch, standalone emulators (Dolphin, Cemu, RPCS3, PCSX2, Xemu, Yuzu-fork, Citra-fork, PPSSPP, DuckStation), EmulationStation frontend, shader packs, and per-system controller layouts. One-click install, sensible defaults.
  • The EmuDeck vs bare RetroArch question is covered in the comparisons section — both have merit.
  • Deck handles every libretro core without breaking a sweat. For the best experience:

  • PS2 — LRPS2 at 2x–4x internal resolution.
  • GameCube / Wii — Dolphin libretro or, better, standalone Dolphin via EmuDeck.
  • 3DS — Citra libretro; runs well.
  • Dreamcast / NAOMI — Flycast at 4x.
  • N64 — ParaLLEl N64 with Vulkan RDP.
  • PSP — PPSSPP at 2x–3x internal.
  • Deck-specific tips

  • Gamescope launch — run RetroArch inside gamescope for the best handheld experience. Steam's "Game Mode" already does this; if launching from Desktop Mode, wrap with gamescope -f -- flatpak run org.libretro.RetroArch.
  • Controller mapping — the Deck's XInput mapping works out of the box. For per-game Steam Input profiles (touchpad-as-mouse for strategy games), configure per-game via Steam's Controller Configuration.
  • Performance overlaySteam → 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

  • Lakka — the official Libretro-team Linux distro. RetroArch is the entire UI. Flash to an SD card, boot, done. Great for Pi 4 and Pi 5.
  • RetroPie — the most popular Pi emulation distro. EmulationStation + RetroArch + standalone emulators. More features than Lakka, more config options, slightly more complex setup.
  • Batocera — also based on EmulationStation + RetroArch; ships for x86 too. Polished OOBE.
  • Recalbox — French community distro. Similar feature set to Batocera.
  • On a Pi 4 or 5, you can expect:

  • Flawless 8/16-bit emulation.
  • N64 via ParaLLEl N64 (GLideN64 HLE works well).
  • PS1, PSP, GBA — excellent.
  • Dreamcast / NAOMI via Flycast — works, needs tuning.
  • GameCube / Wii — Pi 5 can handle lighter GC titles, heavier ones stutter.
  • Handhelds

  • Anbernic handhelds (RG35XX, RG351, RG353, RG503, RG556) — most ship with a custom Linux distro + RetroArch. Community firmware (ArkOS, JELOS, muOS, ROCKNIX) offers better RetroArch.
  • Retroid (Pocket 4 Pro, Flip 2) — Android-based, install RetroArch from Play Store.
  • Ayn Odin / Odin 2 / Odin Lite — Android, same story.
  • AYN Loki / Loki Zero — Windows 11 / SteamOS-ish handhelds.
  • OpenDingux devices (GCW Zero, RG350M, RG280V) — old but beloved. RetroArch binary from retroarch.com/platforms.
  • Miyoo (Pocket Go, PowKiddy Q90/V90, New BittBoy) — low-end but RetroArch-capable. Binary on retroarch.com.
  • For any handheld that runs a community distro, RetroArch is installed and preconfigured. You just add ROMs.

    Retro handheld distros at a glance

    DistroTarget devicesStrengths
    LakkaPi, x86, some handheldsMinimal, RetroArch-as-UI
    RetroPiePiHuge community, tons of docs
    Batocerax86, Pi, handheldsPolished, preconfigured
    ArkOSAnbernic handheldsGood Anbernic hardware tuning
    JELOS / ROCKNIXAnbernic, AYN Odin, many othersModern, actively developed
    muOSAnbernic RG35XX familyLightweight, 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

  • Requires Luma3DS CFW (the standard 3DS hack).
  • Download the 3dsx (Homebrew Menu) or .cia (permanently installed) variant from retroarch.com/platforms.
  • .cia installs via FBI onto the 3DS home screen.
  • RGUI is the default menu driver — low-memory, fast. XMB and Ozone work but are heavy.
  • 3DS RetroArch runs:

  • 8/16-bit systems at full speed.
  • PS1 (PCSX ReARMed) at playable speeds for 2D-heavy games, slower for heavy 3D.
  • PSP — not practical on original 3DS; New 3DS does some light titles.
  • Nintendo Wii U

  • Requires CFW (Tiramisu, Aroma).
  • Install .rpx to the Wii U's SD card under wiiu/apps/retroarch/.
  • Launch from Homebrew Launcher.
  • 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

  • Requires Homebrew Channel (Twilight Hack / LetterBomb / BannerBomb / Str2Hax).
  • Copy retroarch_wii to apps/retroarch/ on the SD card.
  • Launch from Homebrew Channel.
  • 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

  • Requires modchip or Swiss boot disc.
  • RetroArch GC is tight — no shaders, few cores, simple menu.
  • Primarily runs NES, SNES, Genesis, Game Boy, Master System cores.
  • A historical curiosity. The GC has great hardware for the time but the port is minimal.

    Other legacy ports

  • Haiku (the BeOS-inspired OS) — RetroArch ships in Haiku Depot.
  • Steam Link — AppImage from the RetroArch GitHub.
  • Web (web.libretro.com) — WebAssembly build. Limited performance. Good for demos.

  • 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:

  • Demoing an emulator to a friend on someone else's computer.
  • Quickly launching a game without installing anything.
  • Running RetroArch on a Chromebook where you cannot install native apps.
  • 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

  • Windows / macOS / Linux — download the new installer / AppImage / Flatpak and run it. Settings and saves are preserved.
  • Android — F-Droid and Aurora Store update automatically. Play Store is stale; install buildbot APK manually.
  • iOS — App Store updates automatically; sideloaded builds update via the sideloader of choice.
  • Steam Deck — Flatpak auto-updates via Discover; Steam version via Steam client.
  • Switch / Xbox / Wii / etc. — replace the binary with the new version from retroarch.com.
  • 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

  • Update Core Info Files — small, lightweight, always safe to run.
  • Update Databases — updates the internal content database used by Scan Directory.
  • Update Autoconfig Profiles — for new controllers.
  • Update Cheats — pulls the latest community cheat files.
  • Update Playlists — updates playlist format fields but does not re-scan.
  • Update Thumbnails — downloads thumbnails for your existing playlists.
  • Update Overlays / Shaders — downloads community overlay and shader packs.
  • 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 logs

    Setting 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:

  • Fix wrong matches — change label if Scan Directory misidentified a ROM.
  • Relabel to remove region tags"Super Mario Bros. (USA)""Super Mario Bros.".
  • Assign default core — set 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:

  • Named_Boxarts — the box cover.
  • Named_Snaps — in-game action screenshot.
  • Named_Titles — title screen.
  • 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.
  • Playlist Buddy's "Fix Paths" feature on Windows.
  • Or just delete the playlists and re-scan.

  • 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

  • Image Mode — overlay translation back on the screenshot.
  • Speech Mode — speak the translated text through your audio driver.
  • Narrator Mode — continuous translation while the game plays.
  • 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

  • You want one UI across many systems — hotkeys, shaders, save states, playlists all the same regardless of which console you are emulating.
  • You want RetroAchievements — the deepest integration of any emulator.
  • You want rollback netplay — some cores have better netplay than any standalone alternative.
  • You want shaders and CRT filters — no standalone has as rich a shader pipeline.
  • You run emulation on unusual platforms — RetroArch is usually the only option on Switch, Xbox Dev Mode, Vita, Wii, 3DS.
  • You want runahead for latency reduction — a unique libretro feature.
  • When a standalone emulator is better

  • Dolphin (standalone) for GameCube / Wii — libretro Dolphin is significantly behind. Our Dolphin guide covers it in depth.
  • Cemu (standalone) for Wii U — no viable libretro Cemu.
  • RPCS3 (standalone) for PS3 — no libretro RPCS3.
  • PCSX2 (standalone) for PS2 in compatibility-critical scenarios — LRPS2 is impressive but PCSX2 has wider game compat and per-game hack options.
  • DuckStation (standalone) for PS1 — libretro SwanStation is a fork that trails standalone by a few months. Standalone has a cleaner UI, built-in disk-swap, and more accurate Action Replay manager.
  • PPSSPP (standalone) for PSP — more actively developed than the libretro port, and its per-game settings UI is friendlier.
  • Xemu for original Xbox — no libretro alternative.
  • xenia for Xbox 360 — no libretro alternative.
  • Suyu / Sudachi / Ryujinx forks for Switch — no libretro alternative.
  • Common comparisons

  • DuckStation vs RetroArch — DuckStation standalone is easier for PS1-only setups; RetroArch + SwanStation is easier when you want one UI for PS1 + everything else.
  • PCSX2 vs RetroArch — PCSX2 standalone for PS2-focused users; RetroArch + LRPS2 for multi-system setups.
  • Cemu vs RetroArch — no contest; use Cemu. The Cemu libretro core is a dead stub.
  • Dolphin vs RetroArch — standalone Dolphin; libretro Dolphin is for frontends that need unified UI.
  • EmuDeck vs RetroArch — not strictly a comparison, since EmuDeck includes RetroArch alongside standalones. EmuDeck is a Steam Deck meta-installer, not a replacement.
  • RetroArch vs LaunchBox / BigBox — LaunchBox is a Windows-only meta-frontend that can call RetroArch per-platform. Use LaunchBox if you want a slick Windows-only experience with RetroArch doing the emulation underneath.
  • 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}

  • Windows: missing Visual C++ Runtime. Install vc_redist.x64.exe.
  • Windows with Intel / AMD GPU: graphics driver out of date; Vulkan may crash before reaching the menu. Force OpenGL via command-line: retroarch.exe --verbose --menu_driver=ozone --video_driver=gl.
  • macOS "App is damaged": Gatekeeper quarantine. Run xattr -dr com.apple.quarantine /Applications/RetroArch.app.
  • Linux Wayland bug: SDL_VIDEODRIVER=x11 retroarch to force X11 fallback.
  • Android "App not installed": conflicting package ID from Play Store vs buildbot install. Uninstall the other RetroArch.
  • iOS "Cannot open": provisioning profile expired (sideloaded build). Re-sign and reinstall.
  • Black screen when starting a game {#black-screen}

  • Wrong core for the ROM. Beetle PSX PSX will not load a SNES ROM.
  • Missing BIOS. Check Information → Core Information → Firmware.
  • Graphics backend mismatch. Some cores only support OpenGL (e.g. older shader packs); switch driver.
  • Corrupt ROM. Verify CRC against redump.org or no-intro.
  • Core itself is broken on that architecture. Pick a different core.
  • 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}

  • Run Online Updater → Update Autoconfig Profiles.
  • Settings → Input → RetroPad Binds → Port 1 Controls → Set All Controls to bind manually.
  • For Xbox / PlayStation controllers on Windows, ensure Steam is not eating the input (close Steam or disable Steam Input for RetroArch).
  • For Bluetooth pads, re-pair the controller with the OS, not just RetroArch.
  • Missing BIOS {#missing-bios}

  • See BIOS Setup.
  • Confirm file is named exactly right, in the system/ folder, and matches the expected hash.
  • Games not scanning / showing up {#games-not-scanning}

  • Import Content → Manual Scan if the filename doesn't match the internal database.
  • Check file extensions. Some cores insist on .smc or .sfc specifically for SNES.
  • For disc-based games, use .chd or .cue/.bin.iso works for some systems but not all.
  • Delete the playlist file and re-scan if it has become corrupt.
  • Cheats not working {#cheats-not-working}

  • Wrong ROM version for the cheat. Many cheats are coded for a specific regional/revision dump.
  • Cheats toggled but not applied. Enable Apply After Toggle.
  • Cheat format unsupported by the core. Check the cheat file header.
  • Game crashes during play

  • Save state or runahead corruption. Disable runahead, reset, try again.
  • Core bug. Switch cores (e.g. from Beetle PSX HW to SwanStation).
  • RAM pressure on mobile. Close other apps, clear background apps.
  • Hardware issue — heat, RAM, GPU. Test on another device.
  • Slow performance

    See Performance — Why Is RetroArch Slow for the full flow.

    "Why does RetroArch keep crashing?"

    Reinstall in this order:

    1.

    Back up retroarch.cfg, saves/, states/, playlists/.

    2.

    Uninstall RetroArch.

    3.

    Reinstall the current stable build from retroarch.com.

    4.

    Copy your saves/, states/, playlists/ back.

    5.

    Leave retroarch.cfg alone (let RetroArch regenerate it).

    6.

    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):

    ActionKey
    D-pad UpUp arrow
    D-pad DownDown arrow
    D-pad LeftLeft arrow
    D-pad RightRight arrow
    A (confirm)X
    B (cancel)Z
    XS
    YA
    StartEnter
    SelectRight Shift
    L1Q
    R1W
    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 fullscreenSettings → 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)

  • Main Menu → Configuration File → Reset to Defaults. Resets every setting but keeps saves/, states/, playlists/, thumbnails/, and downloaded cores.
  • Or delete retroarch.cfg — RetroArch regenerates it with defaults on next launch.
  • Full reset

    1.

    Back up saves/, states/, playlists/, thumbnails/, and any custom folders.

    2.

    Uninstall RetroArch (or delete the install directory for portable installs).

    3.

    Reinstall.

    4.

    Let RetroArch regenerate all config files and the default directory structure.

    5.

    Restore your backed-up saves and states if you want them; otherwise start clean.

    Mobile-specific resets

  • Android — Apps → RetroArch → Storage → Clear Data clears config and playlists but keeps cores. Pair with re-scanning your ROM folder.
  • iOS — delete the app (which wipes everything) and reinstall from App Store / sideloader. iCloud Drive saves survive if you had CloudSync.

  • 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.


    Further Reading

  • The Complete Guide to Dolphin Emulator — companion guide for GameCube/Wii.
  • The Complete Guide to DemulShooter — dual-gun setup for RetroArch and beyond.
  • The Complete Modern Light Gun Buying Guide — Sinden vs Gun4IR vs AimTrak vs Retro Shooter.
  • Best Emulator for PS1 / N64 / Dreamcast / Arcade — standalone alternatives and when to pick them over RetroArch.
  • Official libretro documentation — the authoritative source.
  • r/RetroArch on Reddit — active community Q&A.

  • Last verified: April 2026 against RetroArch v1.22.2. Cores and platform versions change frequently; check the official sources for the latest. We update this guide quarterly.*