Polygon’s recent breakdown of a cheating accusation in competitive Pokemon Emerald sent a lot of people back to their save files, and the rabbit hole that follows usually ends with picking the right emulator. Desktop emulation is the place to do it. The screens are bigger, the inputs more accurate, and the save-state tooling makes shiny hunting and EV training tractable in a way no original hardware ever was.
We tested seven Pokemon emulators across a Windows desktop, an M2 MacBook Air, and a Steam Deck running Arch. Picks span Game Boy through Switch, with notes on which generation each one actually shines on.
What matters in a Pokemon emulator
- Accuracy on the target system. A perfect Game Boy emulator is the wrong tool for Pokemon Sun. Picking by generation matters more than picking by name.
- Save and savestate handling. Compatible
.savfiles mean you can move a real cart dump into the emulator. Savestates let you reset for shiny hunting. - Link-cable simulation. Trading and battling between generations 1 to 5 requires emulator-side link cable support, ideally over LAN for online trades.
- Controller mapping. Keyboard works for Game Boy. Anything past the DS benefits from a real pad. Look for clean controller profiles.
- Active maintenance. Emulator development moves fast. A project that has not shipped in three years is usually missing recent fixes.
Quick comparison
| Emulator | Best for | Generations | OS support | Maintained |
|---|---|---|---|---|
| mGBA | Game Boy, Game Boy Color, Game Boy Advance | Gen 1 to Gen 3 | Windows, macOS, Linux | Yes |
| VBA-M | Older Game Boy and GBA hardware | Gen 1 to Gen 3 | Windows, macOS, Linux | Yes |
| DeSmuME | Nintendo DS | Gen 4, Gen 5 | Windows, macOS, Linux | Yes |
| melonDS | Nintendo DS and DSi | Gen 4, Gen 5 | Windows, macOS, Linux | Yes |
| Citra | Nintendo 3DS via active community forks | Gen 6, Gen 7 | Windows, macOS, Linux | Forks active after upstream sunset |
| RetroArch | All older generations via cores | Gen 1 to Gen 7 | Windows, macOS, Linux | Yes |
| Skyemu | Lightweight GB / GBC / GBA / NDS | Gen 1 to Gen 5 | Windows, macOS, Linux, web | Yes |
The apps
1. mGBA — Best for Game Boy through GBA
mGBA is the modern default for Pokemon Red, Blue, Yellow, Gold, Silver, Crystal, Ruby, Sapphire, Emerald, FireRed, and LeafGreen. The accuracy is high enough to run battle-tested romhacks (Pokemon Radical Red, Pokemon Unbound) cleanly, and the link-cable simulation handles in-game trades over LAN with another mGBA instance. The savestate slot system is one of the cleanest in any emulator.
Where it falls short: Game Boy Advance only. No DS, no 3DS, no Switch. The default video filter does not preserve the GBA pixel grid; you have to enable the bilinear or LCD shaders by hand.
Pricing:
- Free: full feature set, MPL-2.0 open source
- Paid: none
Platforms: Windows, macOS, Linux
Bottom line: Pick this for everything Generation 1 through Generation 3. It is the right answer.
2. VBA-M — Best classic option
VBA-M is the modern fork of VisualBoyAdvance, the emulator nearly every Pokemon player ran during the 2000s. The accuracy on Game Boy and Game Boy Color is solid, the link cable supports IPS and IPC modes that mGBA does not always cover, and it runs on hardware older than what mGBA reliably supports.
Where it falls short: Slightly less accurate than mGBA on edge-case games. Romhack compatibility is uneven on recent releases. The interface still shows its 2000s lineage.
Pricing:
- Free: full feature set, GPLv2 open source
- Paid: none
Platforms: Windows, macOS, Linux
Bottom line: Pick this on older hardware or when you need a link-cable mode mGBA does not implement.
3. DeSmuME — Best for the DS era
DeSmuME has run Pokemon Diamond, Pearl, Platinum, HeartGold, SoulSilver, Black, White, Black 2, and White 2 since the games came out. The emulation accuracy is high enough to run the in-game Wi-Fi events offline through tooling, and the rendering options handle the dual-screen layout cleanly.
Where it falls short: Performance can be uneven on lower-end hardware; the JIT recompiler helps but still trails melonDS. Wi-Fi support is read-only. The interface remains DS-era utilitarian.
Pricing:
- Free: full feature set, GPLv2 open source
- Paid: none
Platforms: Windows, macOS, Linux
Bottom line: Pick this for Generation 4 and 5 if accuracy matters more than the fastest performance.
4. melonDS — Best modern DS option
melonDS is the newer, faster, more accurate DS emulator. The JIT recompiler outperforms DeSmuME on most modern hardware, the upscaling is sharper, and the local-wireless emulation actually supports trading between two melonDS instances over the network. The interface is the cleanest of any DS emulator.
Where it falls short: Some long-standing romhacks built against DeSmuME quirks misbehave in melonDS. The DSi emulation, while supported, is newer and rougher than the DS path.
Pricing:
- Free: full feature set, GPLv3 open source
- Paid: none
Platforms: Windows, macOS, Linux
Bottom line: Pick this for Generation 4 and 5 when you want speed, accuracy, and online trading.
5. Citra — Best surviving option for 3DS
Citra as an upstream project was sunset in 2024, but actively maintained community forks (Citra Enhanced, Lime3DS, Azahar) keep Generation 6 and 7 Pokemon running on desktop. Pokemon X, Y, Omega Ruby, Alpha Sapphire, Sun, Moon, Ultra Sun, and Ultra Moon all play well, with internal-resolution scaling that makes the 240p original look closer to native HD.
Where it falls short: No single canonical build. The fork landscape shifts; the right answer this month may be the wrong one in six. Performance varies widely between forks and against the 3DS games’ uneven optimization. Citra-the-name has legal weight; pick a fork that adapted accordingly.
Pricing:
- Free: GPLv2 open source across forks
- Paid: none
Platforms: Windows, macOS, Linux
Download: Lime3DS (a community-maintained Citra fork) | Azahar (another Citra fork)
Bottom line: Pick a community fork for Generation 6 and 7. Check fork activity before committing your save data to one.
6. RetroArch — Best all-in-one
RetroArch is a frontend that runs emulator cores. The mGBA core, the DeSmuME core, the melonDS core, and others are all available, and a single interface plus shared shaders, save-state slots, and controller profiles cover every Pokemon generation from Red through Black 2. Useful when you want one application instead of seven.
Where it falls short: First-time setup is involved. The interface is keyboard- and controller-first; mouse navigation feels like an afterthought. Some cores lag the standalone emulators by a release or two.
Pricing:
- Free: GPLv3 open source
- Paid: none
Platforms: Windows, macOS, Linux, plus many more
Bottom line: Pick this when you want one interface that covers every classic Pokemon generation.
7. Skyemu — Best for lightweight setups
Skyemu is the newer entrant that packs Game Boy, Game Boy Color, Game Boy Advance, and Nintendo DS support into a single tiny binary that also runs in a browser. The accuracy is good enough for Pokemon, the interface is modern, and the savestate system works the same way across systems. The web build is handy for quick savestate inspection without installing anything.
Where it falls short: Younger project, so a few edge-case romhacks still hit issues that DeSmuME or melonDS handle. No 3DS or Switch support. Documentation lags the code.
Pricing:
- Free: MIT open source
- Paid: none
Platforms: Windows, macOS, Linux, web
Bottom line: Pick this when you want one small emulator that covers Generation 1 through Generation 5 and runs anywhere.
How to pick the right one
- For Generation 1 to 3 (Red through Emerald): mGBA.
- For Generation 4 and 5 (Diamond through Black 2): melonDS if you have modern hardware, DeSmuME if you do not.
- For Generation 6 and 7 (X through Ultra Moon): a maintained Citra fork.
- For everything in one interface: RetroArch with the relevant cores.
- For the lightest install: Skyemu.
- For older Windows hardware with link-cable requirements: VBA-M.
Pokemon Sword, Shield, Brilliant Diamond, Shining Pearl, Legends Arceus, Scarlet, Violet, and Legends Z-A run on Switch emulators that sit outside this list and carry their own legal and performance caveats.
FAQ
Is using a Pokemon emulator legal?
Owning an emulator is legal. Distributing or downloading copyrighted ROMs is not. The clean path is dumping ROMs from cartridges or game cards you own.
Can I trade Pokemon between emulators?
Yes, within the same generation and on emulators that emulate the link cable or local wireless. mGBA supports GBA link, DeSmuME and melonDS support DS wireless, and several emulators offer trade between two running instances over the network.
What is the most accurate Pokemon emulator?
mGBA for the Game Boy through GBA era. melonDS for the DS era. The 3DS scene is fork-driven; pick whichever community fork is the most active at the time you install.
Can I migrate a save file from a real cartridge?
Yes. Tools like GBxCart RW dump cartridge save files into the standard .sav format that mGBA, VBA-M, DeSmuME, melonDS, and others all read. The cartridge plays normally afterward.
Do these emulators run on a Steam Deck?
Yes. RetroArch is the easiest path because it auto-detects the Deck’s controller. mGBA, melonDS, and DeSmuME all have native Linux builds that install cleanly. Mapping the Deck’s grips to L3, R3, and savestate hotkeys is the only setup step.
Which emulator handles romhacks like Pokemon Radical Red?
mGBA for GBA-base romhacks. Most modern Pokemon romhacks target the GBA Generation 3 codebase and run cleanly on a current mGBA build with no special configuration.