Every PokÃĐmon generation from Game Boy through Nintendo DS has its own “best” standalone emulator: Gambatte for the originals, mGBA for the Game Boy Advance trilogy, melonDS for the DS era. Installing and configuring three or four separate programs just to play through your PokÃĐdex works, but it also means three separate control schemes, three save systems, and three sets of shader settings to maintain. RetroArch collapses all of that into a single frontend. One install, one set of hotkeys, one place to manage save states, and cores for every PokÃĐmon console generation sitting inside the same menu.
This tutorial walks through setting up RetroArch, currently 1.22.2, the current stable release as of October 16, 2026, specifically for PokÃĐmon games, from the initial install through configuring the Gambatte, mGBA, and melonDS cores, mapping controllers, tuning shaders, and eliminating input lag with Run-Ahead. By the end you’ll have one emulator handling PokÃĐmon Red through PokÃĐmon Black and White, plus a working retroarch.cfg you can copy directly. If you’re chasing newer PokÃĐmon Switch titles instead of the Game Boy-through-DS generations covered here, our Ryubing setup guide for PokÃĐmon Switch games covers that separate emulator and workflow.
Don't miss new tech stories on Google
Add Tech Insider once in the Google app and our stories appear in your news suggestions.
Quick Answer: What This Setup Actually Involves
Budget about 90 minutes for the full walkthrough below if you’re starting from zero: installing RetroArch 1.22.2 from the official RetroArch site, downloading the Gambatte, mGBA, and melonDS cores through Online Updater â Core Downloader, organizing ROMs, and tuning controls and shaders across all 13 steps. Most of that time goes toward sourcing and organizing your own ROM files rather than configuring RetroArch itself. If you only care about one PokÃĐmon generation today, you don’t need to run through all 13 in order â install the single core you need in Step 3, configure it in Steps 6-8, then jump to Step 9 for controller mapping; the shader, Run-Ahead, and Netplay steps near the end are optional polish, not requirements.
That’s longer than Tech Insider’s other 2026 RetroArch coverage by design: the general RetroArch setup guide runs 12 steps in about 30 minutes, and the Best PokÃĐmon Emulators roundup covers 10 steps in 80 minutes, because neither one configures three separate cores for four PokÃĐmon generations in a single sitting the way this guide does.
At a Glance: All 13 Setup Steps
Here’s the full sequence before you dive in, so you know exactly how far the 90 minutes and 13 steps below actually go:
- Download and Install RetroArch
- Set Up Your Directory Structure
- Download the Right Cores for PokÃĐmon
- Source and Organize Your PokÃĐmon ROMs
- Scan Your Content and Build Playlists
- Configure Gambatte for Gen 1-2 PokÃĐmon Games
- Configure mGBA for Gen 3 PokÃĐmon Games
- Configure melonDS for Gen 4-5 PokÃĐmon Games
- Controller Mapping and Input Profiles
- Shaders and Visual Filters
- Save States, SRAM, and Save File Management
- RetroAchievements and Netplay for Trading and Battling
- Performance Tuning â Run-Ahead and Frame Delay
Each one is covered in full below, with the exact core options, config lines, and menu paths to use.
What Is RetroArch and Why It’s the Smartest Way to Emulate Every PokÃĐmon Game
One Frontend, Four Emulator Cores
RetroArch is a cross-platform frontend built on the libretro API, an open-source project maintained by the Libretro team under the GPLv3 license. Instead of being an emulator itself, RetroArch loads “cores,” which are individual emulator engines compiled to a common interface. Getting any game on screen, PokÃĐmon included, still comes down to three components as of October 16, 2026: the RetroArch frontend itself, at least one matching libretro core, and legally obtained game content, and on some systems, a BIOS file as well, which the Prerequisites section just below covers in more detail for the Nintendo DS cores. That’s the whole trick: Gambatte (Game Boy/Game Boy Color), mGBA (Game Boy Advance), and melonDS (Nintendo DS) all run inside the exact same window, with the exact same menu, hotkeys, and save-state system layered on top.
Why This Matters More for PokÃĐmon Than Most Franchises
For PokÃĐmon players specifically, this matters more than for most franchises. The series is one of the few where players routinely replay four different console generations back to back, chase Living Dexes across games, or trade and battle between versions that technically require separate hardware. Running Red, Emerald, and Platinum inside one program with a shared achievement layer, one shader setup, and unified controller mapping removes a lot of the friction that comes with juggling standalone Gambatte, mGBA, and melonDS builds.
Active Development and Cross-Platform Support
RetroArch is also actively maintained: version 1.20.0 shipped January 6, 2025, and 1.21.0 followed on April 29, 2025. 1.22.2 shipped on November 20, 2025 and remains the current stable release listed on both the Libretro site and retroarch.com as of October 16, 2026, so the project keeps shipping new named versions rather than sitting still on 1.21.0. Development hasn’t stalled between stable tags, either, nightly builds added animated PNG overlay support on September 18, 2026, the kind of smaller feature that typically lands in nightlies months before it’s folded into the next numbered release. The codebase remains free and open source. It ships on Windows, macOS, Linux, Android, iOS, and even as a Steam release, so the same configuration approach in this guide carries over to a Steam Deck or an Android phone with minor path differences.
The Trade-Off: A Real Learning Curve
It’s worth being upfront about the trade-off, too. RetroArch’s menu system has a genuine learning curve compared to opening a standalone app like Delta or Azahar and pressing play. The settings are spread across nested menus that weren’t designed with any single franchise in mind, and the first-run experience can feel more like configuring a media server than launching a game. The payoff for pushing through that curve once is that every future PokÃĐmon generation you add â from a fresh Crystal playthrough to revisiting Platinum years later â reuses the same cores, hotkeys, and shader presets instead of starting from zero with a new app each time.
Prerequisites: Versions, Hardware, and What You’ll Need
Before starting, confirm you have the following. None of this requires premium hardware; RetroArch’s PokÃĐmon-relevant cores (Gambatte, mGBA, melonDS) are all light enough to run on a decade-old laptop.
Minimum and Recommended Specs
| Requirement | Minimum | Recommended |
|---|---|---|
| RetroArch version | 1.20.x or newer | 1.22.2 (current stable) |
| Operating system | Windows 10, macOS 12, or a 2020-era Linux distro | Windows 11, macOS 14+, Ubuntu 24.04+ |
| CPU | Dual-core, 2 GHz | Quad-core, 3 GHz+ (for shader stacks and Run-Ahead) |
| RAM | 4 GB | 8 GB+ |
| GPU | Any GPU with OpenGL 3.3 support | Vulkan 1.1-capable GPU for the newer video driver |
| Storage | 500 MB for RetroArch + cores | 2 GB+ if you’re keeping save states and shader presets for a full PokÃĐdex run |
| Controller | None (keyboard works) | Xbox or DualSense-style controller for accurate D-pad input |
A Note on ROM Legality
You’ll also need legally obtained ROM files. RetroArch, Gambatte, mGBA, and melonDS are all legal, open-source software on their own â the legal line sits with how the game files were acquired. Downloading a ROM for a game you don’t personally own a physical copy of is copyright infringement in most jurisdictions. Dumping a cartridge you own using a flash cart or a dedicated dumping device (like a Retrode or GBxCart RW) for personal backup is the commonly cited legally safe path, and it’s the approach this guide assumes. Nintendo DS games additionally need no separate BIOS file for melonDS in most configurations, though a real DS BIOS and firmware dump (from your own console) improves accuracy for a handful of titles.
RetroArch Cores Mapped to Every PokÃĐmon Generation
Picking the right core per generation is the single biggest factor in getting PokÃĐmon games running well. RetroArch bundles well over 200 cores in total â the Libretro Team pegged the count at more than 200 as of April 2025 â but only a handful matter for the mainline PokÃĐmon RPGs.
Core-to-Generation Quick Reference
| Generation / Console | PokÃĐmon Games | Recommended Core | File Extension |
|---|---|---|---|
| Gen 1-2 (Game Boy / GBC) | Red, Blue, Yellow, Gold, Silver, Crystal | Gambatte | .gb / .gbc |
| Gen 3 (Game Boy Advance) | Ruby, Sapphire, Emerald, FireRed, LeafGreen | mGBA | .gba |
| Gen 4 (Nintendo DS) | Diamond, Pearl, Platinum, HeartGold, SoulSilver | melonDS | .nds |
| Gen 5 (Nintendo DS) | Black, White, Black 2, White 2 | melonDS | .nds |
| Gen 4-5 fallback | Same DS titles, lower-spec hardware | DeSmuME | .nds |
Why Gen 6 and Later Aren’t Covered Here
Gen 6 onward (X/Y, Sun/Moon on 3DS; Switch-era games) isn’t covered here because RetroArch doesn’t ship a mature 3DS or Switch core comparable to dedicated projects like Azahar or Eden â for those consoles, a standalone emulator is still the better call. This guide focuses on the four generations where RetroArch genuinely outperforms running four separate programs: Gen 1 through Gen 5.
Step 1: Download and Install RetroArch
Installing on Windows, macOS, and Linux
Grab the installer from the official RetroArch platforms page rather than a third-party mirror â RetroArch is bundled in some sketchy “emulator pack” downloads that carry adware. As of October 2026, retroarch.com, RetroArch’s GitHub releases page, each platform’s official app store, and Steam remain the only download sources worth trusting; treat anything else as an unverified mirror. On Windows, download the 64-bit installer for the current 1.22.2 release, run it, and accept the default install path unless you have a specific reason to change it. On macOS, drag the app to Applications. On Linux, it’s available via Flatpak (flatpak install flathub org.libretro.RetroArch) or your distro’s package manager.
# Linux (Flatpak â recommended for sandboxing and auto-updates)
flatpak install flathub org.libretro.RetroArch
# Linux (Debian/Ubuntu via PPA)
sudo add-apt-repository ppa:libretro/stable
sudo apt update && sudo apt install retroarch
# macOS (Homebrew cask)
brew install --cask retroarch
Launching RetroArch for the First Time
Launch RetroArch once after installing so it creates its default directory structure. On first run you’ll see the RetroArch main menu â a horizontal tab bar with Main Menu, Settings, and a content-driver interface that looks nothing like a traditional emulator UI. That’s expected; the first few steps below configure it into something usable for PokÃĐmon specifically.
Step 2: Set Up Your Directory Structure
The Recommended Folder Layout
Before importing any ROMs, go to Settings â Directory and point RetroArch at folders you control, rather than leaving everything in the default install directory. This matters most if you’re syncing saves across devices later (Dropbox, Syncthing, a NAS share).
RetroArch/
âââ cores/ # Gambatte, mGBA, melonDS .dll/.so files land here
âââ roms/
â âââ gb-gbc/ # Red, Blue, Yellow, Gold, Silver, Crystal
â âââ gba/ # Ruby, Sapphire, Emerald, FireRed, LeafGreen
â âââ nds/ # Diamond, Pearl, Platinum, HeartGold, SoulSilver, Black, White
âââ saves/ # In-game battery saves (.srm)
âââ states/ # Save states (.state)
âââ system/ # BIOS files (DS firmware, if used)
âââ shaders/ # CRT and LCD shader presets
âââ playlists/ # Auto-generated .lpl scan results
Pointing RetroArch at Each Folder
Set System/BIOS Directory, ROM Directory, Save Files, Save States, and Cores Directory to match this layout under Settings â Directory. Keeping ROMs sorted by console generation (rather than one giant folder) makes the playlist scanner in Step 5 far more reliable, since it reduces false-positive matches between similarly named GB and GBC dumps.
Step 3: Download the Right Cores for PokÃĐmon
The Three Cores You Need
From the RetroArch main menu, go to Online Updater â Core Downloader. The current 1.22.2 build pulls cores directly from Libretro’s buildbot, which is the only source you should trust â never download a core .dll from a random forum post. Install these three:
- Gambatte â Game Boy / Game Boy Color core, used for Red, Blue, Yellow, Gold, Silver, and Crystal. Cycle-accurate and lightweight enough to run at full speed on essentially any hardware made in the last 15 years.
- mGBA â Game Boy Advance core, used for Ruby, Sapphire, Emerald, FireRed, and LeafGreen. This is the same emulation engine behind the standalone mGBA app, just wrapped as a libretro core.
- melonDS â Nintendo DS core, used for Diamond, Pearl, Platinum, HeartGold, SoulSilver, Black, and White. The Core Downloader lists it as melonDS DS under the Nintendo – Nintendo DS section as of October 2026, not a plain “melonDS” entry, so match on that exact name. If your hardware struggles with melonDS (older laptops, low-end Android devices), install DeSmuME as a fallback; it trades some accuracy for lower system requirements.
If the Core Downloader Won’t Connect
Cores download automatically to the directory you set in Step 2. If the Online Updater fails to connect (common on restrictive networks or if RetroArch’s buildbot is temporarily down), you can grab core builds manually from the Libretro core documentation pages and drop the platform-appropriate file into your cores/ folder by hand â community-maintained repos that track ARM builds specifically are worth bookmarking as a backup source for exactly this kind of manual install. Gambatte, mGBA, and melonDS each get core-level fixes on their own schedule, independent of RetroArch’s own version number, so it’s worth returning to Online Updater â Update Installed Cores every month or two rather than assuming the builds you grabbed today stay current indefinitely.
Step 4: Source and Organize Your PokÃĐmon ROMs
Dumping and Sorting Your Cartridges
Dump your own cartridges using a flash cart or hardware dumper, then sort the resulting files into the roms/gb-gbc/, roms/gba/, and roms/nds/ folders you created in Step 2.
Why Clean, Unmodified Dumps Matter
RetroAchievements â covered in Step 12 â specifically requires clean, unmodified dumps that match No-Intro checksums to unlock achievements, so avoid ROM hacks or headered/trimmed files if you plan to use that feature. File naming doesn’t need to be exact; RetroArch’s playlist scanner matches against internal ROM headers, not filenames, for most systems.
Step 5: Scan Your Content and Build Playlists
Running the Scan
With cores installed and ROMs sorted, go to Main Menu â Import Content â Scan Directory, and point it at your top-level roms/ folder. RetroArch scans recursively, identifies each file’s system based on header data, and builds a playlist (a .lpl file, which is just JSON under the hood) per console. You’ll end up with separate playlists like “Nintendo – Game Boy.lpl”, “Nintendo – Game Boy Advance.lpl”, and “Nintendo – Nintendo DS.lpl” showing up as tabs on the main menu.
{
"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/RetroArch/roms/gba/Pokemon - Emerald Version (USA).gba",
"label": "Pokemon - Emerald Version (USA)",
"core_path": "/home/user/RetroArch/cores/mgba_libretro.so",
"core_name": "mGBA",
"crc32": "00000000|crc",
"db_name": "Nintendo - Game Boy Advance.lpl"
}
]
}
Fixing a Misidentified Core
If a game doesn’t get auto-assigned the right core, right-click (or hold Select on a controller) on the entry and choose Set Core Association manually. This locks that specific ROM to Gambatte, mGBA, or melonDS regardless of what RetroArch guesses on future scans.
Step 6: Configure Gambatte for Gen 1-2 PokÃĐmon Games
Core Options to Change
Load PokÃĐmon Red (or any Gen 1/2 title) once, then open the Quick Menu (default hotkey: F1 on desktop) and go to Core Options. The two settings worth changing immediately:
- gambatte_gb_colorization â set to “GBC” even for original Game Boy titles like Red/Blue. This applies a color palette to games that were originally monochrome, which most players prefer over the stock green-tinted look.
- gambatte_gbc_color_correction â set to “GBC only” if you want Crystal, Gold, and Silver to render with the LCD’s actual color curve rather than a flat RGB output. Purely a visual preference; doesn’t affect emulation accuracy.
No Performance Tuning Needed
Gambatte runs at essentially zero CPU overhead on any modern machine, so there’s no performance tuning needed here â the only real decisions are cosmetic.
Step 7: Configure mGBA for Gen 3 PokÃĐmon Games
Core Options to Change
Load a GBA-era PokÃĐmon title and check the Core Options for these:
- mgba_solar_sensor_level â only relevant if you’re playing Ruby or Sapphire and need to interact with in-game solar-powered mechanics (certain Team Aqua/Magma events). Adjust this if a puzzle seems stuck.
- mgba_gb_model â leave on Autodetect unless you’re specifically testing GBA-compatibility edge cases.
- mgba_idle_optimization â set to “Detect and Remove” for a noticeable speed boost on lower-end hardware; it skips CPU cycles the game spends idling, which is safe for all mainline PokÃĐmon GBA titles.
Same Engine as Standalone mGBA
mGBA-core is the same underlying emulation engine used by the standalone mGBA app covered in our mGBA setup guide for PokÃĐmon GBA games, so accuracy and compatibility are identical â the only difference is the RetroArch wrapper around it.
Step 8: Configure melonDS for Gen 4-5 PokÃĐmon Games
Core Options to Change
melonDS â shown as melonDS DS in the Core Downloader â is the heaviest of the three cores, and it’s where hardware requirements actually matter. Open Core Options after loading a DS PokÃĐmon title:
- melonds_threaded_renderer â set to “Enabled.” This is the single biggest performance lever for melonDS; it moves 3D rendering (used in DS-era PokÃĐmon battle animations) onto a separate thread.
- melonds_opengl_renderer â set to “OpenGL” instead of the default software renderer if your GPU supports it. This can double frame rates in PokÃĐmon Platinum’s battle screens.
- melonds_screen_layout â set to “Top/Bottom” or “Hybrid” depending on preference; Hybrid keeps the touch-screen PokÃĐ Transfer/PokÃĐWalker menus visible without shrinking the main view.
- melonds_touch_mode â set to “Mouse” if playing with a keyboard/mouse, since several DS PokÃĐmon UI screens (naming your character, the PokÃĐtch) need direct touch input.
When to Fall Back to DeSmuME
If melonDS runs below full speed even with threaded rendering enabled, switch to the DeSmuME core installed in Step 3 as a fallback â it’s less demanding, at the cost of some minor graphical accuracy in 3D battle scenes.
Step 9: Controller Mapping and Input Profiles
Setting Up Your Controller
Go to Settings â Input â Port 1 Controls and either select an auto-detected profile for your controller or bind manually. RetroArch maps a single virtual Game Boy Advance-style layout (D-pad, A, B, L, R, Start, Select) across all three cores, so you only need to configure this once â Gambatte, mGBA, and melonDS all read from the same input bindings.
input_player1_a = "x"
input_player1_b = "z"
input_player1_start = "enter"
input_player1_select = "rshift"
input_player1_left = "left"
input_player1_right = "right"
input_player1_up = "up"
input_player1_down = "down"
input_player1_l = "q"
input_player1_r = "w"
# Touch-screen substitute for DS titles (mouse click)
input_player1_touch_type = "mouse"
A Swap-Screens Hotkey for DS Titles
For DS games specifically, add a hotkey to toggle “swap screens” (default: not bound) if you use a Hybrid layout, since some PokÃĐmon menus expect the touch screen on top rather than bottom.
Step 10: Shaders and Visual Filters
Choosing a Shader
Open the Quick Menu â Shaders while any PokÃĐmon game is running. Two shader presets cover most preferences: a CRT-style shader (crt-royale or the lighter crt-easymode) for an authentic handheld-on-a-CRT look, or a simple LCD grid shader (lcd-grid) that mimics the actual Game Boy/GBA screen without the heavier CRT scanline simulation. CRT shaders are noticeably more GPU-intensive; on integrated graphics, stick to lcd-grid or skip shaders entirely.
# shaders/presets/pokemon-gba.glslp
shaders = "1"
shader0 = "shaders_glsl/lcd/lcd-grid.glsl"
filter_linear0 = "false"
scale_type0 = "source"
scale0 = "1.0"
Saving Shader Presets Per Core
Save the preset per-core (Quick Menu â Shaders â Save Core Preset) so Gambatte, mGBA, and melonDS each remember their own shader independently â the flat, sharp look that works for GBA doesn’t necessarily suit the DS screen’s higher resolution.
Step 11: Save States, SRAM, and Save File Management
Two Separate Save Systems
RetroArch handles two separate save systems, and mixing them up is one of the most common PokÃĐmon-specific mistakes:
- In-game saves (.srm) â the actual cartridge-equivalent save file, written when you save inside the PokÃĐmon game itself. These are what carries your PokÃĐdex, badges, and party between sessions and syncs correctly across devices.
- Save states (.state) â instant snapshots of the entire emulator state, bound to a specific core version and game revision. Convenient for quick-saving before a tough Gym fight, but not a substitute for in-game saves; a core update can occasionally break old save state compatibility.
Best Practice Before Closing RetroArch
Always do a proper in-game save (walk into a PokÃĐmon Center, open the Start menu, Save) before closing RetroArch, even if you’ve been using save states throughout a session. Set Settings â Saving â Sort Saves/States by Content Directory to “On” if you want saves organized per console folder rather than dumped in one flat directory.
Step 12: RetroAchievements and Netplay for Trading and Battling
Enabling RetroAchievements
RetroArch has built-in support for RetroAchievements, a community achievement layer that adds unlockable challenges (catch every Gym Leader’s signature PokÃĐmon, complete a Nuzlocke, and similar) to classic games, including the mainline PokÃĐmon titles. Enable it under Settings â Achievements and log in with a free RetroAchievements account. The service explicitly requires clean, No-Intro-verified ROM dumps â the same clean dumps recommended back in Step 4 â since modified or trimmed ROMs won’t match the expected checksums and achievements simply won’t trigger.
Netplay for Trading and Battling
Netplay (Settings â Network â Netplay) lets two RetroArch instances connect directly, which is the closest RetroArch gets to simulating PokÃĐmon trading or Link Cable battles across emulated Game Boy and GBA titles. Both players need matching ROM revisions and the same core version. RetroAchievements can stay active during a netplay session as long as both players are signed in, so achievement hunting and co-op play aren’t mutually exclusive.
Step 13: Performance Tuning â Run-Ahead and Frame Delay
How Run-Ahead Works
Even lightweight cores like Gambatte carry a frame or two of built-in input lag from buffering. RetroArch’s Run-Ahead feature (Settings â Latency â Run-Ahead) runs the emulator core several frames ahead of what’s displayed, then rolls back if your input changes the outcome, effectively canceling that lag out. For turn-based PokÃĐmon battles this barely matters, but it makes a real difference in overworld movement and fast-paced menuing.
# retroarch.cfg â latency section
run_ahead_enabled = "true"
run_ahead_frames = "2"
run_ahead_secondary_instance = "true"
video_frame_delay_auto = "true"
video_frame_delay = "0"
Should You Enable the Secondary Instance?
Enable run_ahead_secondary_instance if your hardware can spare the extra CPU cycles â it runs a second, hidden instance of the core to avoid save-state-related audio glitches that plain Run-Ahead can introduce. For Gambatte and mGBA on any machine built in the last five years, this costs essentially nothing. melonDS with threaded rendering can double CPU load with Run-Ahead active, so test it per-core rather than assuming one setting fits all three.
Complete Working Project: A Full retroarch.cfg for PokÃĐmon
Putting every step above together, here’s a working baseline config covering directories, input, saving, and latency settings tuned for a Gambatte/mGBA/melonDS PokÃĐmon setup. Drop this into your RetroArch config folder (overwriting the defaults) after a fresh install, then adjust paths to match your system.
The Full Config File
# retroarch.cfg â PokÃĐmon multi-generation baseline
system_directory = "~/RetroArch/system"
rgui_browser_directory = "~/RetroArch/roms"
savefile_directory = "~/RetroArch/saves"
savestate_directory = "~/RetroArch/states"
libretro_directory = "~/RetroArch/cores"
video_shader_dir = "~/RetroArch/shaders"
playlist_directory = "~/RetroArch/playlists"
# Playback
video_vsync = "true"
video_smooth = "false"
video_threaded = "true"
# Latency
run_ahead_enabled = "true"
run_ahead_frames = "2"
run_ahead_secondary_instance = "true"
# Saving
sort_savefiles_enable = "true"
sort_savestates_enable = "true"
block_sram_overwrite = "false"
# Achievements + Netplay
cheevos_enable = "true"
cheevos_hardcore_mode_enable = "false"
netplay_public_announce = "false"
# Input (example: Xbox-style pad, Port 1)
input_player1_joypad_index = "0"
input_player1_a_btn = "1"
input_player1_b_btn = "0"
input_player1_start_btn = "9"
input_player1_select_btn = "8"
input_player1_l_btn = "4"
input_player1_r_btn = "5"
A Note on Hardcore Mode
Keep cheevos_hardcore_mode_enable off unless you specifically want to disable save states and fast-forward while achievement hunting â hardcore mode on RetroAchievements blocks both, which conflicts with the save-state workflow described in Step 11.
Running This Same Setup on Steam Deck and Android
Steam Deck Setup
One of RetroArch’s real advantages over standalone PokÃĐmon emulators is that the exact configuration built in Steps 1-13 travels almost unchanged to a Steam Deck or an Android phone. On Steam Deck, install RetroArch through the Steam Store rather than sideloading it â the Steam release auto-updates alongside the rest of your library and integrates with Steam Input for controller mapping, which saves you from manually rebuilding the input profile from Step 9. That auto-update pipeline is active: RetroArch’s Steam depot picked up a refresh on August 3, 2026, pushing newer cores into the Windows, macOS, and Linux builds without any action needed on your end. Copy your roms/, saves/, and shaders/ folders onto the Deck’s internal storage or a microSD card, point RetroArch’s directory settings at those paths, and the same Gambatte, mGBA, and melonDS cores load identically to the desktop version. If you’re managing a broader console library on the same Deck rather than just these PokÃĐmon-relevant cores, Steam ROM Manager can keep playlists and Steam shortcuts in sync as RetroArch’s background depot updates roll in.
Performance on Deck-class hardware (the original Steam Deck’s Zen 2 APU) handles Gambatte and mGBA without any tuning at all â both run at a tiny fraction of the device’s available headroom. melonDS is the one core worth watching: keep threaded rendering and the OpenGL renderer enabled from Step 8, and Run-Ahead at 2 frames rather than higher, since the Deck’s thermal envelope is tighter than a desktop CPU under sustained 3D-heavy DS battle animations.
Android Setup
On Android, get RetroArch from the official retroarch.com downloads page rather than the Play Store listing â the Play Store build was last refreshed August 26, 2026 and still trails the current 1.22.2 release, so download the APK directly from retroarch.com and sideload it instead of waiting on Google’s review queue. Avoid third-party “all-in-one” APK bundles that pre-package cores or ROMs, the same adware risk flagged for desktop installs in Step 1. RetroArch’s Android build doesn’t ship with any cores preinstalled, so open Main Menu â Load Core â Download a Core â Nintendo – Game Boy Advance (mGBA) from inside the app before trying to load a Gen 3 PokÃĐmon title â the Android menu wording differs slightly from the desktop’s Online Updater â Core Downloader, but it pulls the same mGBA core you installed in Step 3. Then go to Settings â Directory and point the ROM directory at the same roms/gba/ folder â copied or synced onto the device â where your PokÃĐmon ROMs already live, so mGBA resolves them correctly instead of scanning an empty folder. The mobile UI swaps Quick Menu access to a long-press or on-screen overlay button instead of a keyboard hotkey, but every Core Option covered in Steps 6-8 lives in the same menu structure. The main adjustment worth making on a phone is switching melonds_touch_mode to a direct touchscreen tap rather than the mouse-click binding used on desktop, since Android devices obviously don’t have a separate touch/mouse input to translate. Battery life is the real constraint here rather than raw performance â melonDS with OpenGL rendering and Run-Ahead active can noticeably drain a phone faster than Gambatte or mGBA alone, so it’s worth toggling Run-Ahead off for long DS-era sessions away from a charger.
RetroArch vs Standalone PokÃĐmon Emulators: Which Should You Use?
RetroArch isn’t automatically the right call for every PokÃĐmon generation. Here’s how it stacks up against the standalone options for each console tier.
Console-by-Console Comparison
| Console | Standalone Option | RetroArch Core | Better Choice |
|---|---|---|---|
| Game Boy / GBC | SameBoy (standalone) | Gambatte | Tie â both accurate; RetroArch wins if you’re also running GBA/DS titles |
| Game Boy Advance | mGBA standalone app | mGBA-core | RetroArch, for shared save-state UI and shaders across generations |
| Nintendo DS | melonDS standalone | melonDS-core | Standalone melonDS, slightly ahead on 3D rendering fixes and update cadence |
| Nintendo 3DS | Azahar (2125.1.3) | Not available | Standalone Azahar â RetroArch has no mature 3DS core |
| Multi-generation play | Requires 3-4 separate apps | One app, all cores | RetroArch, decisively |
The Bottom Line
The honest takeaway: if you only ever play one PokÃĐmon generation, a standalone emulator like our melonDS setup guide may edge out RetroArch on raw update speed for that one core. Cross-checking standalone version numbers as of October 2026 shows the gap: standalone mGBA is at 0.10.5 (released March 2025 and still the latest stable build) and melonDS at 1.1, both typically ahead of where core-update lag leaves their RetroArch-wrapped equivalents, and 3DS-only Azahar has moved to 2125.1.3 (released June 29, 2026), with 2126.0 still working through release-candidate testing. The moment you want Red, Emerald, and Platinum in the same session with shared achievements and controller bindings, RetroArch’s single-frontend approach wins outright. Players managing a larger multi-system library beyond just the PokÃĐmon-relevant cores here may also want our guide to RetroArch’s full 100+ core lineup, and anyone who’d rather skip local installs entirely can compare against our browser-based PokÃĐmon emulator setup guide.
Common Pitfalls When Setting Up RetroArch for PokÃĐmon
These are the mistakes that come up most often when people move from a standalone PokÃĐmon emulator to RetroArch:
Core and Save Mistakes
- Downloading cores from third-party sites instead of the Core Downloader. Off-buildbot core builds are a common source of crashes and, occasionally, malware. Always use Online Updater â Core Downloader.
- Mixing up save states and in-game saves. A save state tied to a specific core build can become unloadable after a core update. Treat in-game saves (walking into a PokÃĐmon Center and saving) as the only permanent record of progress.
- Leaving melonDS on the software renderer. Without
melonds_threaded_rendererand OpenGL enabled, DS-era PokÃĐmon battle animations can drop well below full speed on mid-range hardware, making the core look broken when it’s just misconfigured.
Achievement, Input, and Latency Mistakes
- Using ROM hacks or trimmed dumps with RetroAchievements enabled. Achievements silently fail to trigger because the checksum doesn’t match the No-Intro database â this looks like a bug but is actually expected behavior.
- Forgetting to set per-core controller overrides for DS touch input. Several DS PokÃĐmon menus (naming screens, the PokÃĐtch) require touch/mouse input specifically; a controller alone can get stuck on these screens until touch mode is bound.
- Running Run-Ahead with the wrong frame count. Setting
run_ahead_framestoo high (4+) on a core with unstable timing, like melonDS, can introduce audio crackle. Start at 2 and raise only if input still feels delayed.
Troubleshooting: RetroArch PokÃĐmon Problems and Fixes
The most common issues players hit when running PokÃĐmon games through RetroArch, and how to resolve each one. Most of these trace back to a directory pointing at the wrong folder, a core option left on its default value, or a ROM dump that doesn’t match what RetroAchievements expects â worth checking those three things first before assuming something is actually broken.
Installation and Core Issues
- Game loads but shows a black screen. Usually a missing or wrong-region BIOS file for that core. Check Settings â Directory â System/BIOS and confirm the required files are present (melonDS in particular can need a DS BIOS/firmware dump for some titles) â see our guide to legally sourcing RetroArch BIOS files if you need to track one down.
- Core Downloader shows no cores available. RetroArch’s buildbot may be temporarily unreachable. Retry later, or manually download the core build from the Libretro documentation site and drop it into your cores folder.
- melonDS runs at half speed or worse. Enable
melonds_threaded_rendererand switchmelonds_opengl_rendererto OpenGL in Core Options; fall back to DeSmuME if the hardware still can’t keep up.
Save, Input, and Achievement Issues
- Controller isn’t detected. Go to Settings â Input â Port 1 Controls and manually rebind rather than relying on autoconfiguration, especially for third-party or Bluetooth controllers.
- Save file doesn’t persist between sessions. Confirm
savefile_directoryis a writable folder (not inside a read-only or cloud-synced path that locks files), and make sure you saved in-game, not just via a save state. - Achievements never unlock. Your ROM dump likely doesn’t match the No-Intro checksum RetroAchievements expects. Re-dump the cartridge or verify the file against a known-good checksum database.
Performance and Connectivity Issues
- Audio crackles or stutters with Run-Ahead enabled. Lower
run_ahead_framesto 1-2, or enablerun_ahead_secondary_instanceto avoid the save-state-related glitch that causes this. - DS touch-screen menus won’t respond to a controller. Set
melonds_touch_modeto Mouse (for keyboard/mouse setups) or bind a controller stick to touch input in Settings â Input â Port 1 Controls â DS Touch. - Playlist scan misses some ROMs entirely. Confirm the files use standard extensions (.gb, .gbc, .gba, .nds) and aren’t zipped â RetroArch’s scanner reads compressed archives inconsistently depending on core support.
- Netplay connection times out. Both players need the same RetroArch version and core build number, not just the same core name; mismatched versions fail to sync.
Advanced Tips for Power Users
Once the basic setup is running, a few settings push the experience further for players doing serious PokÃĐdex completion runs or speedrunning:
Gameplay Tweaks
- Rewind for Nuzlocke runs. Settings â Rewind lets you step backward frame-by-frame, which is controversial for Nuzlocke purists but genuinely useful for testing strategies before committing to a permadeath run.
- Per-core video filters via shader passes. Chain multiple shaders (e.g., a color-correction pass followed by
lcd-grid) by adding passes in the Shader menu â useful for matching a specific Game Boy Color model’s exact palette. - Custom cheat files for known PokÃĐmon glitches. RetroArch supports Game Genie/Action Replay-style cheat codes per game via Quick Menu â Cheats, useful for fixing (or exploiting) known bugs like the Gen 1 Missingno encounter without editing save data directly.
- Automatic frame-rate matching for 60Hz vs native handheld refresh. Game Boy and GBA hardware ran slightly below 60 Hz natively; RetroArch’s default sync to your monitor’s 60Hz can introduce minor audio pitch drift. Enable
video_refresh_rateauto-detection under Settings â Video â Synchronization if you notice audio sounding subtly off-pitch during long sessions.
Workflow and Library Management
- Per-game core overrides for mixed libraries. If a specific ROM needs different Core Options than the rest of your library (a ROM hack that needs the software renderer instead of OpenGL, for example), save a per-game override via Quick Menu â Overrides â Save Game Overrides rather than changing the global core config, which would affect every other title using that core.
- Automatic screenshot and video capture for documentation. RetroArch’s built-in screenshot hotkey and GPU-accelerated video recording (Settings â Recording) are useful for cataloguing shiny PokÃĐmon encounters or documenting a completed Nuzlocke run without needing separate capture software.
Frequently Asked Questions
How long does it actually take to set up RetroArch for PokÃĐmon?
About 90 minutes for the complete 13-step process, including downloading cores and organizing ROMs. Installing RetroArch and the three cores (Steps 1-3) is the fastest part; sourcing and sorting your own ROM dumps usually takes longer than the configuration itself.
Do I need to complete all 13 steps, or can I stop early?
No. Steps 1-8 cover installing RetroArch, downloading cores, organizing ROMs, and configuring Gambatte, mGBA, and melonDS â that’s enough to start playing. Steps 9-13 (controller mapping, shaders, save management, RetroAchievements/Netplay, and Run-Ahead tuning) are worth doing eventually but aren’t required for a game to run.
Is RetroArch better than standalone emulators for playing PokÃĐmon games?
It depends on how many generations you play. For a single game or generation, a standalone app like mGBA or melonDS can be marginally simpler to configure. For anyone bouncing between Red, Emerald, and Platinum in the same week, RetroArch’s shared interface, save-state system, and achievement layer save real time.
Which RetroArch core should I use for PokÃĐmon Emerald?
mGBA-core. It’s the same emulation engine as the standalone mGBA app, just running inside RetroArch’s frontend.
Can RetroArch play PokÃĐmon 3DS games like X/Y or Sun/Moon?
No. RetroArch doesn’t ship a mature 3DS core. For those titles, use a standalone 3DS emulator like Azahar.
Does RetroArch support PokÃĐmon trading between games?
Not in the way a physical Link Cable did. RetroArch’s Netplay feature lets two instances connect for simultaneous play, which is the closest equivalent, but it isn’t a direct substitute for in-game trade mechanics that depend on specific link protocols.
Is it legal to use RetroArch for PokÃĐmon games?
RetroArch itself is fully legal, open-source software. The legal question is entirely about how you obtain the ROM files â dumping cartridges you personally own is the commonly cited safe path; downloading ROMs for games you don’t own is copyright infringement in most jurisdictions.
Why does melonDS run slower than mGBA or Gambatte in RetroArch?
The Nintendo DS is significantly more powerful hardware than the Game Boy Advance or Game Boy, with dual CPUs and real 3D rendering, so melonDS inherently needs more processing power than the older cores. Enabling threaded rendering and OpenGL in Core Options closes most of that gap.
What’s the difference between melonDS and DeSmuME cores in RetroArch?
melonDS is generally more accurate, especially for 3D rendering used in DS-era PokÃĐmon battles, but demands more CPU/GPU resources. DeSmuME is lighter and better suited to older or lower-power hardware, at some cost to visual accuracy.
Can I use RetroAchievements and save states at the same time?
Yes, as long as RetroAchievements Hardcore Mode is disabled. Hardcore mode blocks save states and fast-forward specifically to preserve challenge integrity; standard mode allows both alongside achievement tracking.
Does the same RetroArch configuration work on Steam Deck and Android?
Yes. Copying your ROM, save, and shader folders over and repointing RetroArch’s directory settings is usually enough â the Gambatte, mGBA, and melonDS cores behave identically across desktop, Steam Deck, and Android, with only minor input-method differences like touchscreen tap instead of mouse-click for DS titles.
Why would I pick RetroArch over Delta or a similar single-purpose PokÃĐmon emulator app?
Single-purpose apps like Delta are built around convenience for one platform (iPhone) and generally cover a narrower set of consoles. RetroArch trades a steeper initial setup for covering four PokÃĐmon generations, shared achievements, and one save-state system across every desktop and mobile platform it supports.





