/// FIELD NOTES FROM A SELF-AWARE GAME SITE
RetroArch Cores 2026: 200+ Emulators in 12 Steps
Here is the thing nobody tells you when you install RetroArch and find yourself staring at a menu that looks like a PlayStation 3 that went off to get a philosophy degree: the program you just downloaded cannot emulate anything. Not one console. RetroArch is a frontend — a manager, a chrome, a pair of hands. The actual work of pretending to be a Super Nintendo is performed by a core, a separate chunk of code you have to go and fetch yourself. This tutorial is about those cores: what they are, which ones belong on which system, how to feed them the BIOS files they quietly demand, and how to stop them crashing on the one game you actually wanted to play.
We are current to RetroArch v1.21.0, released in January 2026, the build that shipped a Vulkan-driven low-level renderer called ParaLLEl GS for the PlayStation 2 core. If you are reading a guide that still thinks the newest development is a GLideN64 point release, close it and come back. Along the way I will also correct a few developer credits that get copy-pasted across the internet by people who have never once opened a source tree, because getting the lore wrong is exactly how you end up trusting the wrong core with your evening.
What a Core Actually Is
The libretro API in one paragraph
A core is a dynamic library — .so on Linux and Android, .dll on Windows, .dylib on macOS — that implements a small, stable interface called the libretro API. The frontend (RetroArch, but also others like Lakka, Batocera, or a homebrew launcher) handles the boring universal stuff: opening a window, pushing pixels, reading your controller, drawing menus, saving state to disk. The core handles the one hard thing it was built for — being a specific machine. When RetroArch loads snes9x_libretro.so, it is dynamically linking a whole SNES emulator into itself at runtime and then politely asking it for a frame sixty times a second. That is the entire trick. Cores have always been loaded dynamically; despite what a few 2025 write-ups claimed about the API suddenly gaining "dynamic module loading," that is the architecture on day one, not a new feature. The genuine platform wrinkle is iOS, where Apple forbids loading external dynamic libraries, so those builds statically bake the cores in.
Why it is called a "core" and not an "emulator"
The libretro project uses the word "core" deliberately, because not every core is an emulator. Of the 200-plus cores on the buildbot, a healthy fraction are native game engines (ScummVM for LucasArts adventures, Cannonball for OutRun, the various Doom and Quake ports), interpreters (2048, a chip-8 core), or media players (the ffmpeg movie core). Calling the whole catalogue "emulators" is the kind of imprecision that gets you laughed out of a forum thread. A core is anything that speaks libretro and produces audio and video on demand. Most of them just happen to be emulators because that is what the audience wants.
The 200-core reality check
As of 2026 the official project lists over 200 cores spanning more than 200 platforms, and the count creeps up most months as the buildbot compiles fresh nightlies. The buildbot is the important word here: you almost never build a core yourself, and you almost never download a new RetroArch to get a new core. The frontend and the cores update on separate clocks. Understand that separation and ninety percent of "why is my core missing" confusion evaporates. The remaining ten percent is BIOS files, and we will get there.
Prerequisites: Versions, Hardware, BIOS
Software versions you need
Install RetroArch v1.21.0 or newer from the official site, F-Droid, the Google Play build, Steam, or your distro's package where it is genuinely current — many distro packages lag, and a stale frontend against fresh buildbot cores is the single most common cause of instant crashes. The frontend and its cores share an ABI (application binary interface); mix a 2024 core with a 2026 frontend and you can get a clean segfault with no error dialog. On Windows you want the 64-bit build unless you are on genuinely ancient hardware. On Android, know your CPU: the Play build is 64-bit ARM, and dropping a 32-bit armeabi-v7a core into it will simply refuse to load. If you are on an LG smart TV, the webosbrew/retroarch-cores repository was rebuilt in December 2025 with over 170 cores compiled for webOS on armv7, which is its own ABI island — do not cross-contaminate it with desktop builds.
Hardware: what each system actually demands
Cores scale wildly in appetite. A cheap ARM handheld will run NES, Game Boy, Genesis, and most SNES all day. It will choke the instant you ask for cycle-accurate SNES or PlayStation 2. The rule of thumb: 8-bit and 16-bit consoles are trivial; N64, Saturn, and PSP are the awkward middle; PS2, GameCube, and 3DS are the deep end. For the new ParaLLEl GS PlayStation 2 path you need a Vulkan-capable GPU, full stop — there is no software fallback that will make it pleasant. If you are shopping for a device to run this on, the gap between tiers is real and measured: our Retroid Pocket 6 versus 5 breakdown shows roughly a 70 percent compute jump that is the difference between "PS2 stutters" and "PS2 plays," while the budget end covered in the Miyoo Mini Plus versus RG35XX comparison is firmly in 16-bit-and-under territory no matter how the marketing reads.
The legal note, because The Machine reads the license
Cores are free and open source. BIOS files and ROMs are not. A BIOS image — the PlayStation's scph5501.bin, the Sega CD boot ROM, the Neo Geo neogeo.zip — is copyrighted firmware, and the only defensible way to have one is to dump it from hardware you own. RetroArch ships none of them, deliberately, and neither does the buildbot. The same applies to the games. I am not your lawyer, but I am telling you what the license actually says, which is more than most tutorials bother to do. Dump your own, and this entire hobby stays boring and legal.
Installing Cores in 12 Steps
What follows is the canonical order of operations. It is numbered because the sequence matters — several of these steps break silently if you do them out of order, which is where most first-timers lose an afternoon.
- Install or update RetroArch to v1.21.0. Rationale: buildbot cores are compiled against the current frontend ABI. Start here or nothing downstream is trustworthy. Confirm from a terminal or the About screen.
- Set your video driver to Vulkan (or GL as fallback). Rationale: the ParaLLEl RDP (N64) and ParaLLEl GS (PS2) renderers are Vulkan-only, and switching drivers after content is running usually requires a restart. Decide now. Settings > Drivers > Video.
- Open the Online Updater. Rationale: this menu is the single front door to the buildbot. Main Menu > Online Updater. Everything below lives here.
- Run "Update Core Info Files" FIRST. Rationale: the info files are the manifest that tells the Core Downloader what exists, what each core supports, and which BIOS it wants. Skip this and the downloader list is empty or stale, and cores show up greyed out. This is the number-one order-of-operations mistake.
- Open the Core Downloader. Rationale: now that the manifest is fresh, you get the full, correct list. Online Updater > Core Downloader.
- Download your first core — say Mesen for NES. Rationale: start with something small and famously accurate so that a failure is obviously your setup, not the emulation. The core lands in your cores directory as
mesen_libretro.soplus a matching.info. - Update Assets, Databases, and Controller Profiles. Rationale: assets draw the menu and thumbnails, databases power scanning and name-matching, and controller profiles auto-map known pads. Without them the UI works but feels broken.
- Place any required BIOS in the system directory. Rationale: cores that need firmware look in
system/and nowhere else. Do this before you try to launch, or you get a bare "failed to load content." - Load Content and choose your core. Rationale: Load Content > browse to a ROM > RetroArch offers compatible cores. Pick one and it associates the extension for next time.
- Verify with a known-good ROM. Rationale: a homebrew or public-domain test cart removes "is it a bad dump" from the equation. If a clean ROM boots, your pipeline is sound.
- Open Core Options and tune. Rationale: Quick Menu > Core Options exposes per-core knobs — region, overclock, filters — that materially change behavior. Defaults are conservative, not optimal.
- Save a core override. Rationale: Quick Menu > Overrides > Save Core Overrides writes your tuning so it persists per core without polluting the global config. This is the step that makes everything repeatable.
Here is what a healthy cores directory looks like after a few of these, and how to confirm the frontend version from a shell:
$ retroarch --version
RetroArch: Frontend for libretro -- v1.21.0 --
Compiler: GCC (13.2.0) 64-bit
Built: Jan 15 2026
$ ls ~/.config/retroarch/cores/
mesen_libretro.so mesen_libretro.info
snes9x_libretro.so snes9x_libretro.info
bsnes_libretro.so bsnes_libretro.info
genesis_plus_gx_libretro.so genesis_plus_gx_libretro.info
mupen64plus_next_libretro.so mupen64plus_next_libretro.info
fbneo_libretro.so fbneo_libretro.info
picodrive_libretro.so picodrive_libretro.info
lrps2_libretro.so lrps2_libretro.infoThe paired .so and .info files are the tell. If you have the library but not the info file, the core loads but the frontend cannot describe it, scan for it, or warn you about missing BIOS — which is exactly why step four exists.
Picking the Right Core Per System
NES, SNES, and the accuracy tax
For the NES, the accuracy champion is Mesen, written by Sour — not, as a rash of hastily assembled listicles insist, some person named "Adrien Destugues," who has nothing to do with it. Mesen models the PPU's behavior faithfully and, with run-ahead enabled, delivers latency at or below original hardware. It costs more CPU than it looks like it should. On weak ARM devices, drop to Nestopia UE or QuickNES, which are fast and perfectly good for the living room. On the SNES side the same shape repeats: bsnes, the byuu/Near lineage, is the accuracy reference and the resource hog; Snes9x is the pragmatic default that runs everywhere; and Mesen's SNES profile (long present in libretro, not "newly integrated in 2025") sits in between as a second accurate option. Choose bsnes when you have the headroom and Snes9x when you do not. Anyone telling you a 15-percent power patch made bsnes cheap than Snes9x is selling something — it is still the heavier core by design.
Genesis, arcade, and the versatile cores
Genesis Plus GX is the correct default for Sega's 8- and 16-bit line, and it is Eke-Eke's work — built on Charles MacDonald's original Genesis Plus — not the fictional "Elias Vanderstuyft" you may have seen credited. It has emulated Master System, Game Gear, Sega CD, and SG-1000 for many years; that breadth is not a March 2025 novelty, it is the whole reason people reach for it. When you need raw speed or 32X support, PicoDrive by notaz is the lightweight alternative, and it is the one to favor on phones and low-power handhelds. For arcade, Final Burn Neo is the performance-and-compatibility sweet spot with an enormous supported set that keeps growing, while MAME remains the accuracy reference when you want the machine simulated rather than approximated. Calling FBNeo "the most accurate arcade core" is a stretch — it is the most usable one, which is a different and often more valuable thing.
N64, PS1, PS2 — the hard systems
Nintendo 64 is where emulation stops being easy. Mupen64Plus-Next (maintained by m4xw and collaborators) is the general-purpose choice, pairable with the GLideN64 renderer or, better, with ParaLLEl-RDP — Themaister's Vulkan low-level graphics core that gets you accuracy the HLE renderers cannot. Be aware of a real early-2025 regression in Mupen64Plus-Next that crashed some titles, Ocarina of Time among them; a fix is slated for the v1.22.0 cycle, and until then rolling back the core build or switching to the ParaLLEl-N64 path is the workaround. For PlayStation 1, Beetle PSX (HW) is the accurate option and PCSX ReARMed is the fast one for ARM. For PlayStation 2, the new LRPS2 core — a PCSX2 lineage — is the headline of v1.21.0, and its ParaLLEl GS Vulkan renderer is what finally makes mid-range Android devices a plausible PS2 platform. If you want the pure-hardware counterargument to all of this software, our MiSTer MultiSystem 2 coverage lays out the FPGA case, where accuracy is a circuit rather than a code path.
BIOS and System Files
Where BIOS files go
Every BIOS goes in one place: the system directory, defined by system_directory in your config and shown under Settings > Directory > System/BIOS. Not the cores folder. Not next to the ROM. The cores folder holds libraries; the system folder holds firmware, database files a few cores use, and shader caches. Putting scph5501.bin in the wrong directory produces a "failed to load content" with no further hint, and you will burn twenty minutes before you check. A correct layout looks like this:
$ ls ~/.config/retroarch/system/
scph5500.bin scph5501.bin scph5502.bin
bios_CD_U.bin bios_CD_E.bin bios_CD_J.bin
neogeo.zip syscard3.pce ps2/
$ ls ~/.config/retroarch/system/ps2/bios/
SCPH-70004_BIOS_V12_PAL_200.BINChecksums matter more than filenames
Cores frequently match BIOS by content hash, not filename, so a correctly named but wrong-region or corrupt dump fails just as hard as a missing one. Verify with a hash tool. The US PlayStation BIOS, for example, has a well-known MD5:
$ md5sum ~/.config/retroarch/system/scph5501.bin
490f666e1afb15b7362b406ed1cea246 scph5501.bin
$ md5sum ~/.config/retroarch/system/neogeo.zip
# FBNeo validates the archive contents, not the zip's own hash --
# let the core's log tell you which ROMs inside are missing.When a core refuses to boot, open the log (Settings > Logging > set to Debug, then Quick Menu after a failed load) and read what it asked for. The core will name the exact file and often the expected hash. This is the single most underused diagnostic in the entire program.
Which systems actually need BIOS
Not all do. NES, SNES, Genesis, Game Boy, and most cartridge systems boot from the ROM alone. The firmware-hungry set is predictable: PlayStation 1 and 2, Sega CD and Saturn, PC Engine CD, Neo Geo, PSP, and a handful of others with a real boot ROM or disc-drive firmware. Before you go hunting, check the core's info file or its page on the libretro documentation, which lists required and optional system files per core. Guessing wastes time; the manifest already knows.
Core Options and Overrides
Core Options versus RetroArch settings
There are two distinct layers of configuration and conflating them is a rite of passage. RetroArch settings are global to the frontend — video driver, audio latency, input binds. Core Options are exposed by the core itself and only exist while that core is loaded: region selection, CPU overclock, internal resolution, dithering, per-console quirks. You reach them at Quick Menu > Core Options, and they are where the interesting behavior lives. A Mesen options file on disk looks like this:
# ~/.config/retroarch/config/Mesen/Mesen.opt
mesen_overclock = "None"
mesen_overclock_type = "Before NMI"
mesen_ntsc_filter = "Disabled"
mesen_palette = "Default"
mesen_fake_stereo = "disabled"
mesen_hdpacks = "enabled"
mesen_region = "Auto"
mesen_ppu_extra_scanlines_before_nmi = "0"The override hierarchy
RetroArch resolves configuration in layers, most specific winning: the global retroarch.cfg, then a core override (applies whenever this core loads), then a content-directory override (applies to everything in a folder), then a game override (applies to one ROM). This is enormously powerful. You can run Vulkan globally, force GL for one stubborn core, and bump the internal resolution for exactly one game, all without editing the master file by hand. Save them from Quick Menu > Overrides. The golden rule: never hand-edit retroarch.cfg for a per-core tweak when an override will do it cleanly and reversibly.
Reading and editing .opt files
Options persist as plain-text .opt files under config/<Core Name>/. They are safe to read, safe to back up, and safe to copy between machines running the same core version. If a core update renames or removes an option, the stale line is simply ignored — it will not break the core, though it also will not do anything. When you migrate setups between a desktop and a handheld, copying the relevant .opt files is faster than clicking through menus twice, which is a trick the frontends built on RetroArch — the ones in our Batocera download walkthrough — lean on heavily to ship sane defaults out of the box.
Run-Ahead, Latency, and ParaLLEl
Run-Ahead, explained without the mysticism
Original hardware has inherent input lag; emulators add more on top through buffering. Run-Ahead claws it back by running the core one or more frames into the future, keeping the newest visible frame, and rolling the internal state back when your input arrives — effectively hiding the console's own latency. One frame is the sweet spot for most systems. Enabling a "second instance" runs the look-ahead simulation in a parallel core instance so the CPU cost is more predictable, at the price of roughly double the emulation load. On systems where run-ahead misbehaves, Preemptive Frames is the newer alternative that achieves a similar effect with different tradeoffs. The relevant config:
run_ahead_enabled = "true"
run_ahead_frames = "1"
run_ahead_secondary_instance = "true"
run_ahead_hide_warnings = "false"The ParaLLEl renderers (RDP and GS)
ParaLLEl is Themaister's family of Vulkan low-level renderers. ParaLLEl-RDP reproduces the Nintendo 64's rasterizer at a level HLE plugins cannot, at the cost of needing a real GPU. In v1.21.0 the same philosophy arrived for PlayStation 2 as ParaLLEl GS, an LLE Graphics Synthesizer emulation path for the LRPS2 core. The practical payoff, per the project, is that PS2 emulation becomes viable on Android and mid-range PCs that previously could not keep up. LLE means the renderer is doing what the actual chip did rather than approximating the result, which is where accuracy and, on capable hardware, speed both come from.
The latency claims, audited
You will see a widely repeated figure — Ars Technica floated a 40 percent latency reduction for the LRPS2 Vulkan path in August 2025. Take renderer-latency numbers with a raised eyebrow. A GS rewrite overwhelmingly buys you throughput and accuracy; input latency is dominated by frame pacing, run-ahead, and your display, not by whether the rasterizer speaks Vulkan or OpenGL. Similarly, the advice you occasionally see to open "Update Cores" daily is nonsense that contradicts every sane source, including RetroGameCorps, whose 2025 maintenance guide sensibly recommends refreshing cores, assets, and shaders about monthly. Cores change; your savestates and netplay compatibility change with them. Update deliberately, not compulsively.
Common Pitfalls and Fixes
Order-of-operations pitfalls
Downloading cores before updating info files. The Core Downloader list is generated from the info manifest. Skip the info update and you get a short, stale, or empty list, and downloaded cores show up greyed out or unnamed. Fix: Online Updater > Update Core Info Files, always first, then download. Mixing ABIs. A 32-bit core will not load into a 64-bit frontend, an armeabi-v7a core will not load into an ARM64 build, and a webOS core is its own island. Fix: match the core architecture to the frontend exactly; when in doubt, delete the offending core and re-download from that frontend's own updater.
The "accuracy" trap
Forcing a reference core onto hardware that cannot run it. Loading bsnes or Mesen on a sub-$80 handheld and then blaming "RetroArch" for the stutter is a classic. Fix: match the core to the silicon — Snes9x, snes9x2010, QuickNES, Nestopia — and save the accuracy cores for a real CPU. Assuming every core is an emulator. Trying to "play" the ffmpeg movie core or a game-engine core like they are consoles leads to confusion. Fix: read what the core is; engines want their game data, media cores want media files, emulators want ROMs. The device you choose sets the ceiling here, which is why the state of the RetroPie image matters as much as the core list — a frozen platform caps which cores are even worth installing.
Update-cadence and file-placement pitfalls
Updating cores every day and breaking your saves. Core updates can change savestate formats and always change netplay/achievement compatibility. Fix: update on a schedule, keep a known-good build of any core you rely on, and prefer in-game SRAM saves over savestates for anything you care about long term. Putting BIOS in the wrong folder. Firmware in the cores directory or beside the ROM simply is not found. Fix: everything firmware-shaped goes in system/, verified by hash, confirmed in the log.
Troubleshooting Table
Reading the table
Most core failures map to a handful of causes: a stale manifest, a missing or wrong-hash BIOS, an ABI mismatch, or a wrong video driver. The table below is ordered roughly by how often each one is the real culprit. Turn on Debug logging before you start; the log usually names the problem outright.
| Symptom | Likely cause | Fix |
|---|---|---|
| Core greyed out or missing from Downloader | Core info files stale or absent | Online Updater > Update Core Info Files, then re-open Core Downloader |
| "Failed to load content" with no detail | Missing or wrong-region BIOS, or unsupported ROM format | Check the core's required BIOS in its .info; verify the file hash in system/ |
| Black screen, audio only | Wrong video driver for the core (ParaLLEl needs Vulkan) | Set video_driver to vulkan; restart RetroArch |
| RetroArch crashes the instant the core loads | ABI mismatch: old core against new frontend or vice versa | Re-download the core against v1.21.0, or update the frontend to match |
| N64 titles crash (e.g. Ocarina of Time) | Mupen64Plus-Next early-2025 regression | Roll back the core build or switch to ParaLLEl-N64; fix targeted for v1.22.0 |
| PS2 games stutter or run at half speed | LLE renderer on a weak GPU, or Vulkan not enabled | Enable ParaLLEl GS + Vulkan; lower internal resolution first |
| Input feels laggy | Run-ahead off, or too many buffered frames | Enable run_ahead_enabled with 1 frame and a secondary instance |
| Savestates break after a core update | Core changed its savestate format | Keep the matching core build for old states; use SRAM for durability |
| Crackling or stuttering audio | Audio latency set too low, buffer underruns | Raise audio latency to 64-128 ms; keep audio sync on |
| RetroAchievements "hardcore" refuses to enable | Unsupported core or savestates used in a hardcore session | Use a cheevos-supported core; disable states and rewind in hardcore |
When to nuke the config
If behavior is genuinely inexplicable — settings not sticking, drivers reverting, menus corrupt — rename retroarch.cfg to retroarch.cfg.bak and let the frontend regenerate a clean one. You lose your tweaks but keep your cores, saves, and BIOS, all of which live in separate directories. A corrupt master config masquerades as a dozen different core bugs, and this ten-second test rules it out.
When it is the ROM, not the core
Before you blame the emulation, test a second dump of the same game or a homebrew cart. Bad dumps, over-trimmed ROMs, and mislabeled regions produce failures that look exactly like core bugs. If a clean ROM boots where a dodgy one does not, the core was never the problem — your library was.
Advanced Tips
Loading cores from the command line
Every core can be driven straight from a shell, which is how launchers, scripts, and front-of-front-end tools wire everything together. The -L flag names the core; the trailing path is the content:
$ retroarch -L ~/.config/retroarch/cores/mesen_libretro.so \
~/roms/nes/Metroid.nes
# Launch fullscreen, verbose, into a specific config:
$ retroarch -f -v \
--config ~/.config/retroarch/retroarch.cfg \
-L ~/.config/retroarch/cores/lrps2_libretro.so \
"~/roms/ps2/Shadow of the Colossus.iso"The -v flag prints the same log you would otherwise dig for in the menu, which makes the command line the fastest place to diagnose a stubborn core.
Per-core shader presets and video tuning
Shaders are the other half of the aesthetic. Vulkan cores use .slang presets, GL cores use .glsl, and you can bind a preset per core or per game through the same override system as everything else. A CRT-Royale or a light scanline preset transforms 240p content; on a battery-powered handheld a cheaper preset like a plain scanline shader preserves both the look and the runtime. Save the preset as a core override so it follows the emulator rather than clinging to one game.
Netplay, achievements, and version discipline
Two cores must be the same build to net-play, because they must simulate in lockstep. This is the strongest argument for the deliberate update cadence: patch mid-session and you desync. RetroAchievements is similarly strict — "hardcore" mode bans savestates, rewind, and cheats, and only trusts supported cores, which is the point of it. The through-line is version discipline: know which core build you are on, keep it consistent across the machines that need to agree, and treat the buildbot as a resource to sip from, not a firehose to stand under.
A Complete Working Configuration
The retroarch.cfg core block
Here is a coherent, working core-and-video block extracted from a real retroarch.cfg. It points the frontend at its cores and info files, sets Vulkan for the ParaLLEl renderers, enables sane run-ahead, and configures the updater to pull from the official buildbot. Drop these values into your own config — do not blindly replace the whole file — and adjust the paths to your platform.
# --- Directories ---
libretro_directory = "~/.config/retroarch/cores"
libretro_info_path = "~/.config/retroarch/cores"
system_directory = "~/.config/retroarch/system"
savestate_directory = "~/.config/retroarch/states"
savefile_directory = "~/.config/retroarch/saves"
# --- Core updater (official buildbot) ---
core_updater_buildbot_url = "http://buildbot.libretro.com/nightly"
core_updater_auto_extract_archive = "true"
core_updater_show_experimental_cores = "false"
# --- Video: Vulkan for ParaLLEl RDP / GS ---
video_driver = "vulkan"
video_vsync = "true"
video_fullscreen = "true"
video_smooth = "false"
# --- Latency: run-ahead one frame, secondary instance ---
run_ahead_enabled = "true"
run_ahead_frames = "1"
run_ahead_secondary_instance = "true"
# --- Audio ---
audio_driver = "alsathread"
audio_latency = "64"
audio_sync = "true"
# --- Logging (raise to 0 = debug when diagnosing) ---
log_verbosity = "true"
frontend_log_level = "1"A per-core override example
And here is a per-core override for the N64 core, forcing the accurate Vulkan renderer and a modest upscale without touching your global settings. It lives at config/Mupen64Plus-Next/Mupen64Plus-Next.cfg and loads automatically whenever that core does:
# ~/.config/retroarch/config/Mupen64Plus-Next/Mupen64Plus-Next.cfg
video_driver = "vulkan"
mupen64plus-rdp-plugin = "parallel"
mupen64plus-rsp-plugin = "parallel"
mupen64plus-parallel-rdp-upscaling = "2x"
mupen64plus-parallel-rdp-native-texture-lod = "enabled"
mupen64plus-EnableFBEmulation = "True"Directory layout recap
Four directories, four jobs, and if you keep them straight nothing else in this article can trip you: cores/ holds the .so/.dll libraries and their .info manifests; system/ holds BIOS and firmware, hash-verified; config/ holds your global retroarch.cfg plus per-core overrides and .opt files; and saves/ plus states/ hold your actual progress. Back up the last two, keep known-good builds of the cores you depend on, and treat the buildbot as a monthly errand rather than a daily compulsion. Do that and RetroArch stops being a PlayStation 3 with a philosophy degree and becomes the most flexible emulation platform ever shipped — which, once the cores are in the right folders, is exactly what it is. For the canonical reference on any individual core, keep the libretro GitHub organization and the per-core pages of the official documentation bookmarked; they are maintained by the people who actually write the code, which is more than can be said for most of what the search engines will hand you.
Questions the search bar asks me
- Do I need to reinstall RetroArch to update cores?
- No. Cores and the frontend update on separate clocks. Use Online Updater > Update Cores to pull fresh builds from buildbot.libretro.com; keep the frontend on v1.21.0 so the ABI matches. You only reinstall RetroArch itself for a frontend version bump, not for new cores.
- Which NES and SNES cores are the most accurate?
- Mesen (by Sour) is the accuracy reference for NES; bsnes (the byuu/Near lineage) is the reference for SNES. Both are heavier than Nestopia UE, QuickNES, or Snes9x. Enable one frame of run-ahead to push input latency to or below original-hardware levels on capable CPUs.
- Why won't my PlayStation or Sega CD games load?
- Almost always a missing or wrong-hash BIOS in the system/ folder — not the cores folder. Verify by checksum: the US PS1 BIOS scph5501.bin is MD5 490f666e1afb15b7362b406ed1cea246. The v1.21.0 LRPS2 PS2 core additionally needs a PS2 BIOS plus a Vulkan-capable GPU for ParaLLEl GS.
- What is ParaLLEl GS and do I need it?
- ParaLLEl GS is the Vulkan low-level Graphics Synthesizer renderer added to the LRPS2 (PS2) core in RetroArch v1.21.0, January 2026. It brings hardware-accurate rendering and enough performance to make PS2 playable on mid-range Android and PCs. You need a Vulkan-capable GPU; there is no pleasant software fallback.
- How many cores are there and where do they come from?
- Over 200 as of 2026, compiled continuously on the official buildbot at buildbot.libretro.com, with new ones most months. Not all are emulators — the catalogue includes game engines (ScummVM, Cannonball), interpreters, and media players. RetroGameCorps recommends refreshing cores and assets roughly monthly, not daily.