⏱ 10 min read  ·  ✅ Updated Sep 2026
Affiliate Disclosure: As an Amazon Associate, we earn from qualifying purchases. Links marked "Check on Amazon" are affiliate links — learn more.
🔥Amazon Prime Day 2026 is coming — don’t miss the best deals.See Top Deals →

Quick answer: Install RetroArch, then set your System/BIOS and save directories first. Download cores from the Online Updater, one per system you want to emulate. Scan your own game dumps to build playlists, update controller profiles, then enable Run-Ahead and a CRT shader with integer scaling. Configuration order is what makes RetroArch feel simple.

Why RetroArch feels confusing (and the fix)

RetroArch is not an emulator. It is a frontend — a shell that loads separate emulators, called cores, inside one interface with shared video, audio, input and save handling. That is why a single app can run a Game Boy, a PlayStation and an arcade board with the same controller layout and shader, and also why a fresh install shows you an empty menu.

The confusion comes from doing things in the wrong order: people load a game first, then try to fix directories, controllers and shaders afterwards, and end up with settings scattered across config layers. Do the setup in the order below and RetroArch behaves like a console — about twenty minutes on a modest gaming PC, less on a handheld.

One boundary first: this guide covers legal emulation only. Several cores require BIOS or firmware images, and those must be dumped from hardware you personally own. Game content must likewise be your own dumps or freely distributed homebrew. RetroArch ships no games and no BIOS, and this article will not point you anywhere that does.

Step 1: Set your directories before anything else

Open Settings → Directory and fix three entries now, because changing them later orphans what you have already built:

  1. System/BIOS — where cores look for firmware. Use a folder you control, not a temp path.
  2. Save Files — battery saves (.srm), the ones that matter long term.
  3. Save States — snapshots, disposable by comparison.

Then open Settings → Saving and turn on Sort Saves Into Folders By Core Name, plus the same option for states — otherwise every core dumps files into one directory and you end up with a thousand loose files. Also set SaveRAM Autosave Interval to 10 seconds; it flushes in-game saves to disk periodically instead of only on exit, which is the best protection against losing a long RPG session to a crash.

Step 2: RetroArch cores explained — accuracy vs performance

Go to Online Updater → Core Downloader and grab only the cores you need; installing all 200 just makes the list unusable.

Most systems have at least two cores, and the split is nearly always the same: an accuracy core that simulates hardware timing closely and costs more CPU, and a performance core that cuts corners for speed. On a desktop CPU from the last decade, run the accuracy core — the difference shows up in exactly the edge cases (raster effects, audio timing, copy protection) that make a game look wrong rather than fail outright. On a low-power handheld or an older mini PC, take the performance core.

SystemAccuracy pickLighter alternativeNotes
NES / FamicomMesenFCEUmm or Nestopia UEMesen is cycle-accurate and still cheap to run
SNESbsnes / bsnes-hdSnes9x, or Snes9x 2010 on weak hardwarebsnes needs noticeably more CPU headroom
Game Boy / ColorSameBoyGambatteSameBoy models the audio hardware more closely
Game Boy AdvancemGBAgpSPmGBA is the default for almost everyone
Genesis / Mega DriveBlastEmGenesis Plus GXGenesis Plus GX also covers SMS, Game Gear and CD
PlayStationBeetle PSX HWPCSX ReARMedRequires a BIOS image dumped from your own console
Nintendo 64Mupen64Plus-Next (ParaLLEl RDP)Mupen64Plus-Next (GLideN64)ParaLLEl RDP needs a Vulkan-capable GPU
SaturnBeetle SaturnYabaSanshiro / KronosDemanding; BIOS required for the accurate core
ArcadeMAME (current)FinalBurn NeoFBNeo is far lighter for 2D boards
DOSDOSBox-PureMounts .zip folders directly, no install step

Cores that need firmware refuse to load and name the missing file in the log. Information → Core Information lists the exact files and checksums a core expects — supply them from your own hardware.

Step 3: Scanning and playlists so the library is not a mess

Put each system in its own folder, then use Import Content → Scan Directory. RetroArch matches file checksums against its bundled database and files each title under the correct system playlist with a clean name — which is why scanning beats adding files manually.

Anything the scanner does not recognise — homebrew, translated builds, compilations — is skipped rather than mislabelled; use Manual Scan for those and pick the system yourself. Then run Online Updater → Thumbnails Updater per system so the grid fills in with box art instead of grey placeholders.

Step 4: Controllers, autoconfig and per-core remapping

Run Online Updater → Update Controller Profiles before plugging anything in. RetroArch ships autoconfig profiles for hundreds of pads, so an Xbox, DualSense or 8BitDo controller is recognised and mapped the moment it connects, with an on-screen message naming the profile it matched.

If your pad is not recognised, bind buttons manually in Settings → Input → Port 1 Controls; this writes a profile you keep. Two ideas cause most controller confusion:

  • Binds map your physical pad to RetroArch’s virtual “RetroPad” — set once per controller.
  • Remaps map the RetroPad to a specific core or game. Set them from Quick Menu → Controls in-game and save as a core, content-directory or game remap. That is how SNES shoulder buttons move without disturbing the Genesis layout.

Also set a Hotkey Enable button (usually Select or the Guide button), or save-state and menu hotkeys will fire during normal play. A well-mapped pad matters more here than raw hardware — the same logic that applies when choosing a controller for PC gaming.

Step 5: Run-Ahead, the feature almost nobody enables

Emulated games inherit the original hardware’s input delay and add the modern display chain on top. Run-Ahead removes it: RetroArch runs the core a frame or two ahead internally and shows that future frame when you press a button, so the response lands sooner than on real hardware.

Enable it under Settings → Latency → Run-Ahead to Reduce Latency. Start at 1 frame and raise it until inputs feel wrong or audio glitches; 1–2 frames suits most games, and going past a game’s internal delay causes visible mispredictions. Use Second Instance is gentler on audio but runs the core twice, so it needs CPU headroom. Newer builds offer Preemptive Frames, which does the same job without repeated save-state loads on supported cores — try it first if you see it.

Run-Ahead costs CPU, not GPU — the opposite of shaders. Pair it with the display-side work you would do for any fast game; see our notes on reducing input lag.

Step 6: Shaders, CRT filters and integer scaling

Do the scaling before the shader. In Settings → Video → Scaling, turn on Integer Scale so the emulated frame is multiplied by a whole number; non-integer scaling makes some pixel rows taller than others, which is the uneven, shimmering look people blame on “bad emulation”. Set aspect ratio to Core Provided, then load a shader from Quick Menu → Shaders. CRT shaders restore scanlines, phosphor mask and slight bloom — blending a lot of 2D art was drawn to exploit.

Shader / settingWhat it doesGPU costBest for
Integer scale, no shaderClean, sharp pixels with even geometryNoneHandhelds, weak GPUs, purists
crt-easymodeSimple scanlines, minimal blurLowLaptops and handheld PCs
crt-lottesCurvature, mask and glow in one passModerateA good default CRT look at 1080p
crt-guest-advancedHighly configurable mask, bloom, halationHigh1440p/4K displays with a real GPU
crt-royaleHeaviest, most detailed aperture-grille simVery high4K screens and strong hardware
xBR / ScaleFXSmooths and reshapes pixel edgesLow–moderatePeople who dislike visible pixels
Handheld LCD shadersDot-matrix grid and washed LCD tintLowGame Boy and GBA authenticity

CRT masks need resolution to work: at 1080p they are a compromise, and they come into their own at 1440p and above. Save your choice as a core preset so it loads for that system and nothing else. On Mesa drivers, confirm your shader backend is available — see our guide to gaming on Linux.

Save states vs native saves

Native saves are what the game itself writes — battery SRAM or a memory card file. They live in your Save Files directory, survive core updates and transfer to other emulators. Treat them as the real save.

Save states snapshot emulated RAM and CPU registers. They are instant and fragile: a state is tied to the core that made it, so updating or switching cores can invalidate it. Use states for retry loops and mid-session pauses, and the in-game save for anything you would hate to lose. RetroAchievements Hardcore mode disables states by design.

Syncing between a PC and a handheld

Sync your saves, not your whole config. Recent RetroArch versions include Cloud Sync under Settings → Saving, which pushes saves and states to a WebDAV target; any third-party sync tool on that folder works as well. What you should not share is retroarch.cfg — video driver, resolution, shader preset and input bindings are device-specific, and copying a desktop config onto a handheld gaming PC is how people end up staring at a black screen.

Troubleshooting the usual failures

  • Core fails to load a game — usually a missing BIOS file or a wrong filename/checksum. Read Information → Core Information and supply the file from your own hardware.
  • Audio crackles — raise audio latency to 96ms, or check whether Run-Ahead is set too high for your CPU.
  • Game runs slightly fast or slow — keep Vertical Sync on and turn off Sync to Exact Content Framerate unless your display matches the core’s refresh.
  • Controller works in the menu but not in-game — the pad is bound to the wrong port. Check Port 1 Controls.
  • Scanner finds nothing — unsupported archive format, or content not in the database. Use Manual Scan.
  • Stutter despite high frame rate — frame pacing, not performance; the causes overlap with ordinary game stutter fixes on Windows.

Work through the six steps in order and RetroArch stops being a settings maze: one interface, one controller layout, one shader stack, one save location — with lower latency than the original hardware managed. For hardware that suits this setup, our retro gaming console coverage is a reasonable next stop.

Frequently Asked Questions

What is a core in RetroArch?

A core is an individual emulator compiled to run inside RetroArch through the libretro API. RetroArch provides the interface, video and audio output, input handling and save management, while the core emulates one system’s hardware. You download cores separately from the Online Updater, and most consoles have several to choose between.

Do I need BIOS files to use RetroArch?

Some cores do, some do not. Cartridge-era systems such as NES, SNES and Genesis generally run without firmware, while disc-based systems like PlayStation and Saturn require BIOS images. Those must come from console hardware you own and dump yourself — RetroArch does not distribute them, and Core Information lists which files each core expects.

How many Run-Ahead frames should I use?

Start at one frame and increase only until responsiveness stops improving or you notice mispredictions and audio artefacts. One or two frames suits most games, because that roughly matches the internal input delay the original software carried. Going higher makes RetroArch predict further than the game’s logic supports, producing visible glitches.

Why do my emulated games look uneven or shimmery?

That is almost always non-integer scaling. When a low-resolution frame is stretched by a fractional amount, some pixel rows get more screen pixels than others, so sprites shimmer as they move. Turn on Integer Scale under Video Scaling and set aspect ratio to Core Provided, then add a CRT shader if you want scanlines.

Can I use save states instead of in-game saves?

You can, but do not rely on them alone. Save states snapshot emulated memory and are tied to the core version that wrote them, so a core update can make older states unloadable. Native in-game saves are written by the game itself, survive core updates and move to other emulators. Use states for convenience, native saves for real progress.

Ready to decide? Our #1 pick for 2026 is the NES / Famicom.

Check Price on Amazon →

Live price & availability on Amazon.

Explore Our Guides & Free Tools