/// FIELD NOTES FROM A SELF-AWARE GAME SITE
RetroArch Cores 2026: 200+ in 14 Steps, 30 Min
RetroArch is a frontend with a bottomless settings tree and, on a fresh install, exactly zero ability to run a single game. That is not a defect. It is the architecture stated out loud: the program you downloaded is a shell, and the emulators live elsewhere, in files called cores. Until you fetch them, RetroArch emulates nothing but your patience.
This is the long version of installing those cores — not the three-minute clip where you mash Download and pray, but the version where you learn why the list came up empty, why your core loaded with no name attached, and why bsnes runs at half speed on the handheld a marketplace listing swore could handle it. Budget fourteen steps and roughly half an hour. It buys you out of the forum thread you were about to post in.
What a Core Actually Is
People say "RetroArch is an emulator" the way they say "a browser is the internet." It is a convenient lie. RetroArch does not emulate anything. It draws menus, reads controllers, pushes audio, records your saves, and manages a dozen video pipelines. The emulation — the part that pretends to be a Super Nintendo — happens inside a separate compiled library that RetroArch loads at runtime. That library is a core.
The Libretro API in one breath
Cores talk to the frontend through a specification called the Libretro API. The core says, in effect, "here is a frame of video, here is a chunk of audio, tell me what the buttons are doing." The frontend handles everything a modern user expects — shaders, rewind, netplay, achievements, run-ahead — so the emulator author does not have to reinvent a UI or a controller mapper. This division is the whole reason one program can front more than 200 platforms. The frontend improves once; every core inherits it.
A core is a shared object: .so on Linux, Android, and WebOS; .dll on Windows; .dylib on macOS. This matters more than it sounds, because a core built for one operating system or CPU architecture will not load on another, and RetroArch will tell you so in the least helpful way it can. Ars Technica, covering the framework's evolution across 2025 and 2026, made the point that the open-source nature of these cores is exactly what lets the community fix accuracy bugs faster than any single commercial emulator team — but it also means you are responsible for matching the right binary to your box.
The 200+ number, and what it actually contains
The Libretro buildbot maintains over 200 distinct cores, and the count keeps climbing as new emulators and game engines land. Not all of them are consoles. A meaningful slice are game-engine reimplementations — ScummVM for point-and-click adventures, a DOSBox core, Cannonball for OutRun, OpenLara for Tomb Raider — plus multimedia oddities and, yes, a core whose only job is playing video files. When Polygon and Ars Technica wrote about "Libretro cores" in 2025 and 2026, this breadth is the story: it is not a SNES emulator with friends, it is a universal runtime for interactive software from the last four decades.
Why the frontend ships with nothing
Install RetroArch 1.20 and it boots into a menu of nothing. Every 2026 setup video demonstrates the same first shock: zero cores by default. This is deliberate. Bundling 200 emulators would bloat the download, and — the part nobody says out loud — some cores carry licensing baggage the RetroArch team would rather you opt into deliberately. So you fetch cores yourself, at runtime, from a build server. The upside is that the same decoupling lets these cores run outside RetroArch too: EmulationStation lists them under "Alternative Emulators," and full distributions like Batocera on a USB stick and RetroPie on a PC are, under the hood, curated RetroArch installs with the cores already chosen for you. Learn the cores here and you have learned the engine behind half the retro-handheld ecosystem.
Prerequisites & Hardware
Skip this section and you will spend your thirty minutes diagnosing problems that were decided before you downloaded anything. Cores are small and fussy; the box underneath them is neither.
Software: RetroArch 1.20 and the platform matrix
Install the stable 1.20 build from the official platforms page, not a random mirror. Stable matters because cores from the buildbot are compiled against a specific frontend ABI, and mixing a bleeding-edge nightly core with a months-old stable frontend is the fastest way to a silent crash on load. The 2025 setup guides are blunt about one quirk of 1.20: the buildbot rebuilds core databases and support files daily, but the stable release does not pull those updates automatically. You get them by asking, manually, through the Online Updater. Nothing arrives on its own.
| Platform | Recommended minimum | Core file type |
|---|---|---|
| Windows | Windows 10/11, 64-bit | .dll (match 64-bit build) |
| Linux | Modern 64-bit distro, x86_64 | .so |
| macOS | Recent release, Apple Silicon or Intel | .dylib |
| Android | Android 8.0 or newer | .so (arm64/arm7) |
| WebOS TV | Rebuilt cores via webosbrew | .so (armv7) |
Hardware: a tiered reality check
"Can it run RetroArch" is the wrong question. Every device can run the frontend. The question is which cores your silicon can sustain at full speed, and the answer is a ladder, not a yes. Low-accuracy cores forgive weak hardware; high-accuracy cores punish it. The research is explicit that bsnes and Beetle PSX are the demanding end and that weaker hardware simply cannot keep up with the accurate SNES core. Plan around that before you download it and wonder why the audio crackles.
| Tier | Example hardware | Comfortable with | Chokes on |
|---|---|---|---|
| Entry handheld | Class of the Miyoo Mini Plus | 8/16-bit, Genesis Plus GX, Snes9x, PCSX ReARMed | bsnes, Beetle PSX HW, current MAME |
| Mid Android | Class of the Retroid Pocket 6 | Beetle PSX, Final Burn Neo, most 32-bit | Heavy current-MAME sets, some accuracy cores |
| Desktop | Modern PC or Mac | bsnes, Beetle PSX HW upscaled, current MAME | Very little in the retro range |
BIOS and ROMs: dump your own or don't bother
Here is the part the Machine will not pretend around. Several cores are useless without firmware: Beetle PSX will not boot a PlayStation disc without the correct PlayStation BIOS in your system folder, matched by hash. That BIOS is copyrighted, and the only clean way to have it is to dump it from hardware you own. The same logic governs the games. There are no ROM links in this article and there will not be. If you want cartridge dumps that are legally yours, the honest path is a hardware dumper — we walked through reading your own carts with a Retrode, which produces files from silicon you physically hold. Cores are the engine; providing the fuel legally is on you. That is not a disclaimer bolted on for lawyers. It is the difference between a hobby and a liability.
The Order of Operations
Most people install cores first and support files never. Then they file a bug report. The correct sequence is the reverse, and it is the single highest-leverage habit in this entire tutorial.
Core Info Files: the manifest that makes the list make sense
A core is a binary. It does not, by itself, know how to describe itself to the menu. That job belongs to a companion .info file — a small text manifest that tells RetroArch the core's display name, which system it emulates, which file extensions it accepts, which BIOS it needs, and whether it supports netplay or savestates. The Core Downloader list you are about to browse is generated from these info files. If your info files are stale, the download list is stale, and a core you install will load with no name, no system, and no BIOS hint — the exact "my core shows up blank" symptom that fills support channels. So you update the manifests before you shop from them.
Assets and Controller Profiles
Assets are the menu's own furniture: the fonts, icons, and background graphics the Ozone and XMB interfaces draw. Controller profiles — autoconfig files — are the mappings that let RetroArch recognize your gamepad on sight instead of making you bind sixteen buttons by hand. Neither is a core, but both ship separately and both go stale. Retro Game Corps, cited across the 2025 and 2026 guides, puts the rule plainly in the RetroArch starter guide: update Core Info Files, Assets, and Controller Profiles before you download new cores, for basic system stability.
Why this prevents 90% of "my core won't show up" threads
Because the failure is almost never the core. It is the metadata around the core. When the info file is current, the Downloader shows accurate names, the loaded core reports its system correctly, and the BIOS requirements surface in the core information screen instead of as a mystery black screen. Do these three updates once, up front, and a whole genre of problems never happens to you.
Installing Cores: 14 Steps
Fourteen steps, each with the reason it exists. Do them in order. The order is the point.
- Install RetroArch 1.20 stable. Get it from the official platforms page, matching your OS and — on Windows — your architecture. Rationale: buildbot cores are compiled against the stable ABI; a mismatched frontend loads nothing.
- Launch it once and quit. The first run writes the default retroarch.cfg and creates the folder skeleton (cores, system, saves, states). Rationale: you cannot configure directories that do not exist yet.
- Set your directories deliberately. Under Settings > Directory, confirm where cores, system BIOS, and info files live. On a fresh Linux install the defaults look like the block below. Rationale: knowing these paths turns every later problem from guesswork into a file you can go look at.
# retroarch.cfg — the paths that matter (Linux example)
libretro_directory = "~/.config/retroarch/cores"
libretro_info_path = "~/.config/retroarch/cores"
system_directory = "~/.config/retroarch/system"
savefile_directory = "~/.config/retroarch/saves"
savestate_directory = "~/.config/retroarch/states"
# Windows: %APPDATA%\RetroArch\ | macOS: ~/Library/Application Support/RetroArch/- Update Core Info Files. Main Menu > Online Updater > Update Core Info Files. Rationale: this refreshes the manifests that the Downloader and the core-information screen read from. Do it first, always.
- Update Assets. Online Updater > Update Assets. Rationale: current menu graphics and fonts; skip it and Ozone renders with missing glyphs.
- Update Controller Profiles and Databases. Run Update Controller Profiles, and while you are there, Update Databases and Update Cheats. Rationale: gamepad autodetection and the ROM-scanning database that builds your playlists.
- Open the Core Downloader. Online Updater > Core Downloader (also reachable via Load Core > Download a Core). Rationale: this is the actual store; because you updated info files first, the list is accurate.
- Download the cores for the systems you own. Scroll and select. Each pick downloads a small binary plus its info file. A sensible starter set for a desktop is shown below as expected on-screen entries.
# What the Core Downloader list looks like (abridged, desktop)
Sony - PlayStation (Beetle PSX HW)
Nintendo - SNES / SFC (bsnes)
Sega - MS/GG/MD/CD (Genesis Plus GX)
Arcade (FinalBurn Neo)
Arcade (MAME - Current)
ColecoVision (Gearcoleco)
Handheld Electronic (GW)- Verify a core actually loaded. Go to Load Core, pick the one you downloaded, then open Information > Core Information. You should see something concrete, not a blank. Expected output for Beetle PSX HW:
Core name: Beetle PSX HW
Core label: Sony - PlayStation (Beetle PSX HW)
System name: PlayStation
System manufacturer: Sony
Supported extensions: cue|toc|m3u|ccd|exe|pbp|chd
Firmware: scph5501.bin [required] -- missing- Place BIOS files in the system folder. Copy your own dumped firmware into the system_directory from step 3, filenames and hashes matching what the core information screen listed. Rationale: the "missing" line above becomes "present" and the console will actually boot.
- Load content and pick the core. Load Content, browse to a game, and when prompted choose the matching core. Rationale: RetroArch can associate extensions to cores, but the first time you tell it explicitly.
- Set core options. With the game running, open the Quick Menu > Options. This is where renderer, internal resolution, and region live — per core. Rationale: defaults are conservative; the good stuff is opt-in.
- Save a core override. Quick Menu > Overrides > Save Core Overrides writes your tweaks so they apply every time this core runs, without touching your global config. Rationale: isolation. One core's settings never poison another's.
- Update installed cores on a schedule you choose. Online Updater > Update Installed Cores pulls the latest builds for everything you have. Rationale: the buildbot rebuilds nightly, but do this when a game misbehaves, not compulsively — a working core does not need chasing.
Choosing the Right Core
Most systems have more than one core, and the choice is always the same trade: accuracy against the power it costs. The 2025 accuracy guides have settled opinions, and for once they are right.
The heavy-but-accurate tier: Beetle PSX and bsnes
For PlayStation, Beetle PSX is the recommended and most accurate core, and it holds that title straight through the 2025 and 2026 tutorials. Its documentation is the reference for its many options; the HW variant adds hardware-accelerated upscaling and PGXP geometry correction, at the cost of wanting a real GPU. On a handheld, the lighter PCSX ReARMed is the pragmatic fallback. For SNES, bsnes is the accuracy king — cycle-precise, faithful to the strangest edge cases — and the research is equally clear that it demands higher power and is unsuitable for weaker hardware. Read its core docs before you commit a slow device to it.
The efficient all-rounders: Genesis Plus GX and Snes9x
For everything Sega — Master System, Game Gear, SG-1000, Genesis/Mega Drive, and Sega CD — Genesis Plus GX is the ideal core, praised in the 2025 accuracy guides for compatibility that reaches well beyond the Genesis nameplate. Its documentation covers the region and filter options worth setting. On the SNES side, Snes9x is the sane default for anything that is not a desktop: it is close enough to bsnes in accuracy for the entire mainstream library while running comfortably where bsnes would stutter. Reserve bsnes for the machine that can afford it.
Arcade and the long tail
Arcade is two answers. Final Burn Neo (FBNeo) is the best all-around arcade core in 2025 — broad, accurate, and forgiving of romset quirks; its source lives on the libretro GitHub. When you need the deepest possible accuracy on obscure boards, the current MAME core is the reference, at a steep hardware cost, with lighter historical builds like mame2003-plus for weaker devices and older, more forgiving romsets. Then there is the genuinely niche end: as of 2026 RetroArch fields dedicated cores for ColecoVision (Gearcoleco or blueMSX) and Game & Watch (the GW core), proof that "over 200 cores" is not marketing — it is a long tail that reaches systems most emulators forgot.
| System | Accuracy pick | Efficient alternative |
|---|---|---|
| PlayStation | Beetle PSX / Beetle PSX HW | PCSX ReARMed |
| SNES / SFC | bsnes | Snes9x |
| Genesis / Mega Drive | Genesis Plus GX | PicoDrive |
| Arcade | MAME (current) | FinalBurn Neo / mame2003-plus |
| ColecoVision | Gearcoleco | blueMSX |
| Game & Watch | GW | — |
Manual Install & WebOS
The Core Downloader is the easy path. Sometimes you need the hard one — a device the in-app updater cannot reach, a core the buildbot lists but your build does not offer, or a platform like a WebOS television that is not officially supported at all.
Where the cores actually live: the libretro buildbot
Every core the Downloader offers is compiled and published on the libretro buildbot. You can browse it in a web browser, navigate to your platform and architecture, and pull a core by hand. This is the same source; you are just cutting out the menu. The layout is predictable — operating system, then CPU architecture, then latest.
# Fetch a single core straight from the buildbot (Linux x86_64)
CORE="mednafen_psx_hw_libretro"
BASE="https://buildbot.libretro.com/nightly/linux/x86_64/latest"
curl -L -o "$CORE.so.zip" "$BASE/$CORE.so.zip"
unzip "$CORE.so.zip" -d ~/.config/retroarch/cores/
# Result: mednafen_psx_hw_libretro.so now sits alongside the othersSideloading a core file manually
Once you have the unzipped .so, .dll, or .dylib, installation is just placement: drop it into your libretro_directory (step 3), grab the matching .info file from the buildbot's info folder so the core is not nameless, and restart RetroArch. This is exactly how you move cores onto an Android handheld like the Retroid Pocket 6 when the on-device updater is being uncooperative — copy the arm64 core into the app's cores folder and it appears in Load Core like any other.
WebOS, armv7, and the webosbrew repository
WebOS televisions are the frontier case, and the community has done the work. As of December 2025 the webosbrew/retroarch-cores repository hosts over 170 cores compiled specifically for WebOS on armv7, rebuilt to run on modern WebOS hardware where the stock builds would fail. You install the homebrew RetroArch, then place these rebuilt armv7 cores into its cores directory — the same file-placement dance as everywhere else, only the binaries are the special ingredient.
# WebOS: illustrative core placement (paths vary by webosbrew build)
# 1. Install RetroArch via the webOS Homebrew Channel
# 2. Copy a rebuilt armv7 core into RetroArch's cores dir, e.g.:
ares-put --device tv \
./genesis_plus_gx_libretro.so \
/media/developer/apps/usr/palm/applications/com.retroarch/cores/
# 3. Restart RetroArch on the TV; the core appears under Load CoreRun-Ahead & Latency
Emulators are accused of feeling "laggy," and the accusation is usually correct — but the lag is not RetroArch's. It is latency baked into the original hardware, faithfully reproduced. Run-Ahead is the feature that lets you have accuracy and responsiveness at the same time, and it is criminally underused.
What Run-Ahead does
Real consoles took a frame or three between your button press and a visible reaction — internal processing the game itself imposed. A faithful core reproduces that delay. Run-Ahead exploits the fact that emulation is deterministic: it runs the core a few frames ahead of what you see, so when you press a button the reaction the original hardware would have shown two frames later is already computed and can be displayed now. The result is a game that responds faster than the real console did. Enable it per core via Quick Menu > Latency > Run-Ahead > ON, then set the number of frames — one or two is usually the sweet spot.
Single instance vs second instance
There are two ways to pay for this. Single instance re-runs the one running core to compute ahead, which is cheaper on CPU but can misbehave with audio in some cores. Second instance spins up a shadow copy of the core to do the look-ahead work, which is cleaner and more compatible but roughly doubles the CPU that core consumes. On a desktop, use second instance. On a handheld running a light core, single instance is the compromise. On a handheld running bsnes — you were not going to do that anyway.
Preemptive Frames: the lighter successor
Newer RetroArch builds add Preemptive Frames, an alternative that achieves the same latency reduction by re-running frames from a savestate only when input changes, rather than running a full second instance continuously. Where a core supports it, it delivers most of Run-Ahead's benefit at a fraction of the CPU cost — the practical choice for weaker devices that want responsiveness without the second-instance tax. Try Run-Ahead first because it is universal; reach for Preemptive Frames when the CPU budget is tight.
Common Pitfalls
Five ways this goes wrong, and the fix for each. All five are self-inflicted, which is the good news — self-inflicted means avoidable.
- Downloading cores before updating Core Info Files. Symptom: cores load with no name, no system, and no BIOS hint. Fix: run Online Updater > Update Core Info Files, then reload the core. The binary was fine; its manifest was stale.
- Mixing nightly cores with a stable frontend (ABI mismatch). Symptom: a core that used to work now crashes RetroArch instantly on load. Fix: keep frontend and cores on the same track. On stable 1.20, install cores through the in-app Downloader so they match; if you hand-pulled a nightly build, either update the frontend to match or fetch the stable core.
- Missing or wrong-hash BIOS. Symptom: black screen, or "failed to load content," specifically on systems like PlayStation. Fix: open Core Information, read the exact firmware filename it wants, and confirm your dumped file matches by hash. A renamed file with the wrong contents will not fool the core.
- Wrong file format for the core. Symptom: the core loads but the game will not, or a multi-disc game only sees disc one. Fix: match formats — .chd for compressed discs, .cue pointing at its .bin tracks, and an .m3u playlist for multi-disc titles so the core can swap discs. The Core Information "Supported extensions" line is the authority.
- Running an accuracy core on hardware that cannot sustain it. Symptom: full-speed video but crackling, pitch-shifted audio — the classic underpowered tell. Fix: drop from bsnes to Snes9x, or Beetle PSX HW to PCSX ReARMed. The research says weaker hardware cannot keep up with the accurate cores; believe it before you spend an evening tuning a core that will never fit.
- 32-bit vs 64-bit core mismatch on Windows. Symptom: the core file exists but never appears in Load Core. Fix: a 64-bit RetroArch loads only 64-bit cores. Download the build that matches your frontend and delete the mismatched one.
Troubleshooting Table
The fast lookup. Symptom in the left column, the actual cause in the middle, the fix on the right.
| Symptom | Likely cause | Fix |
|---|---|---|
| Core Downloader list looks old or wrong | Stale Core Info Files | Online Updater > Update Core Info Files, then reopen |
| Core loads with a blank name | Missing .info file for that core | Update Core Info Files, or copy the .info from the buildbot |
| Core crashes RetroArch on load | Architecture or ABI mismatch | Match core build to frontend (64-bit, same track) |
| Black screen after loading a game | Missing or wrong-hash BIOS | Place correct firmware in system_directory by exact name |
| "Failed to load content" | Unsupported file format for that core | Convert to .chd/.cue or pick a core that accepts the format |
| Audio crackles, speed dips | Core too heavy for the device | Switch to the efficient alternative core |
| Multi-disc game stuck on disc 1 | Loaded a .bin/.cue instead of a playlist | Create an .m3u listing all discs and load that |
| Gamepad not recognized | Outdated controller autoconfig profiles | Online Updater > Update Controller Profiles |
| Cores never update automatically | Stable 1.20 does not auto-pull buildbot builds | Run Update Installed Cores manually when needed |
| Overrides do not stick | Saved a game override expecting a core-wide one | Quick Menu > Overrides > Save Core Overrides |
Advanced Tips
Once the basics hold, RetroArch's real power is in how granularly it lets one core behave differently in different situations — and in a few features that turn a working setup into a genuinely good one.
Overrides: core, content-directory, and game
RetroArch layers configuration in a hierarchy, most-specific winning. Your global retroarch.cfg is the base. A core override applies to every game a given core runs. A content-directory override applies to everything in one folder. A game override applies to a single title. This is how you set 4x internal resolution for one PlayStation RPG that can afford it while leaving a twitchy fighter at native. Save them from Quick Menu > Overrides, and remember the precedence: game beats directory beats core beats global. When a setting mysteriously refuses to change, an override further down the chain is overruling you.
Subsystems and link cables
Some cores expose subsystems — special load modes for hardware combinations. bsnes can run Super Game Boy by loading a Game Boy ROM through a Super Game Boy BIOS, and it handles Sufami Turbo and satellite-broadcast content the same way. Several cores support link-cable emulation for two-player trading and battling across a single instance. These live under Load Content's special load options or the core's own menu; they are the reason "one core, one system" is an oversimplification.
Core options files and where they live
Everything you toggle under Quick Menu > Options is written to a plain-text core-options file you can edit directly — useful for scripting a setup across many devices, or for reading exactly what a menu toggle actually changed. A global file holds defaults; per-core files override them. An abbreviated Beetle PSX HW block looks like this:
# retroarch-core-options.cfg (excerpt) — Beetle PSX HW
beetle_psx_hw_renderer = "vulkan"
beetle_psx_hw_internal_resolution = "4x"
beetle_psx_hw_pgxp_mode = "memory only"
beetle_psx_hw_dither_mode = "disabled"
# Genesis Plus GX niceties
genesis_plus_gx_blargg_ntsc_filter = "composite"
genesis_plus_gx_overscan = "disabled"Two more worth your time: many cores are RetroAchievements-compatible and will work in hardcore mode, and most mainstream cores support netplay — but only with an identical core version on both ends, which is the real reason to keep versions matched. The RetroArch documentation lists per-core support for both.
Complete Configuration
Here is a full, coherent setup you can mirror — a directory tree, the config keys that matter, and a per-core override showing Run-Ahead applied to exactly one core. This is a desktop-class configuration; scale the accuracy cores down for a handheld.
The directory tree
~/.config/retroarch/
|-- retroarch.cfg
|-- cores/
| |-- mednafen_psx_hw_libretro.so (+ .info)
| |-- bsnes_libretro.so (+ .info)
| |-- genesis_plus_gx_libretro.so (+ .info)
| |-- fbneo_libretro.so (+ .info)
| `-- gearcoleco_libretro.so (+ .info)
|-- system/ # BIOS (your own dumps)
| |-- scph5501.bin
| `-- ...
|-- config/ # per-core overrides
| `-- Beetle PSX HW/
| `-- Beetle PSX HW.cfg
|-- saves/
|-- states/
|-- assets/
`-- autoconfig/retroarch.cfg — the parts that matter
# --- drivers ---
menu_driver = "ozone"
video_driver = "vulkan"
# --- core + support paths ---
libretro_directory = "~/.config/retroarch/cores"
libretro_info_path = "~/.config/retroarch/cores"
system_directory = "~/.config/retroarch/system"
savefile_directory = "~/.config/retroarch/saves"
savestate_directory = "~/.config/retroarch/states"
# --- updater behaviour ---
core_updater_auto_extract_archive = "true"
core_updater_show_experimental_cores = "false"
# --- global latency (enable run-ahead per-core, not here) ---
run_ahead_enabled = "false"A per-core override
# config/Beetle PSX HW/Beetle PSX HW.cfg
# Applies ONLY when the Beetle PSX HW core is loaded
video_shader_enable = "true"
run_ahead_enabled = "true"
run_ahead_frames = "1"
run_ahead_secondary_instance = "true"That is the whole machine: a frontend that ships empty on purpose, a build server with more than 200 cores, a manifest system that keeps the list honest, and a configuration hierarchy granular enough to give every game its own personality. Install the info files before the cores, dump your own firmware, match accuracy to hardware, and turn on Run-Ahead. Do that and RetroArch stops being a menu of nothing and becomes the only emulator you need — which was the promise all along, minus the fluff. The Machine has spoken. Go update your core info files.
Questions the search bar asks me
- Why does RetroArch have no cores after I install it?
- By design — the frontend and the emulators are decoupled. RetroArch 1.20 ships with zero cores and you fetch them at runtime from the libretro buildbot via Online Updater > Core Downloader. Over 200 cores are available across more than 200 platforms.
- Which PlayStation core should I use in 2026?
- Beetle PSX, or Beetle PSX HW for upscaling — it remains the most accurate PSX core cited across 2025-2026 setup guides. It needs the correct BIOS placed in your system folder and more power than PCSX ReARMed, which is the lighter fallback for handhelds.
- Why is the bsnes core running at half speed?
- bsnes is the most accurate SNES core and also the most demanding; the 2025 accuracy guides note weaker hardware simply cannot sustain it. Switch to Snes9x for near-identical results at a fraction of the cost, or reserve bsnes for a desktop.
- How often should I update my cores?
- The buildbot rebuilds nightly, but stable RetroArch 1.20 does not pull those builds automatically. Run Online Updater > Update Installed Cores manually when a game misbehaves — not compulsively, since a working core does not need chasing.
- Can I use these cores outside RetroArch?
- Yes — the Libretro API means the same cores run in Batocera, RetroPie, Lakka, and EmulationStation (listed under 'Alternative Emulators'). WebOS televisions get over 170 armv7 cores via the webosbrew/retroarch-cores repository as of December 2025.