What You’ll Need: Prerequisites and Compatibility Check
Before touching an app store, confirm your phone can actually handle what you’re about to throw at it. Emulation performance on Android tracks chipset generation closely, and the requirements shift a lot between a GBA Pokémon game and a 3DS one.
– **Android version:** 9.0 or newer (64-bit) for 3DS emulation via Azahar; 6.0+ covers GBA and most DS apps.
– **Chipset:** Snapdragon 835 or better is the documented floor for 3DS titles; Snapdragon 845+ is what most 2026 guides call the realistic minimum for a smooth experience. GBA and DS games run fine on almost anything from the last six years.
– **RAM:** 4GB minimum, 6-8GB recommended if you’re running Azahar alongside melonDS and RetroArch on the same device.
– **Storage:** At least 4-8GB free — 3DS ROM dumps in .3ds/.cia format run 1-4GB each; GBA and DS ROMs are a few megabytes to a few hundred MB.
– **A file manager app** that can navigate to app-specific storage folders (most stock Android file managers work).
– **Your own game cartridges or purchased digital copies** to dump, or a legally obtained ROM source — see the legality section below before you download anything.
– **A Bluetooth or USB-C controller** (optional but strongly recommended for anything past the GBA generation).
If your phone runs a mid-range Snapdragon 6-series or 7-series chip from 2023 or earlier, GBA and DS Pokémon games (Emerald, FireRed, Platinum, HeartGold) will run at full speed without issue. 3DS titles like Pokémon Sun/Moon or Pokémon X/Y are the ones that separate flagship phones from budget ones — a Snapdragon 8 Gen 2 or newer is where 3DS emulation on Android genuinely stops feeling like a compromise.
Understanding Pokémon ROM Legality on Android in 2026
Emulator software itself is legal. U.S. courts settled that question decades ago in cases like Sony v. Connectix, and the Electronic Frontier Foundation has continued to defend reverse-engineering rights for emulator developers since. What isn’t settled — and what still gets people into trouble — is where the ROM files come from.
Downloading a copy of a Pokémon game you don’t own from a ROM site is copyright infringement, regardless of how old the game is or whether Nintendo still sells it. The legally defensible path is dumping ROMs from cartridges or digital copies you already purchased, using your own hardware. It’s a bit more work, but it’s the baseline most emulation communities and legal commentators treat as the minimum ethical standard for 2026.
It’s also worth understanding the difference between what’s happening to GBA/DS/3DS emulators covered in this guide and the much bigger legal fight playing out around Nintendo Switch emulation. In February 2026, Nintendo filed a DMCA sweep against 6 separate Switch emulator projects and forks hosted on GitHub — including Citron, Eden, Ryubing, Sudachi, and Suyu, among others. That crackdown targets tools built to bypass the Switch’s active technological protection measures, which is a different legal category from emulators for consoles Nintendo hasn’t manufactured or actively protected in over a decade. My Boy!, John GBAC, melonDS, and Azahar have not been targeted by that campaign, and their Play Store listings remained live as of mid-August 2026.
Step 1: Prepare Your Android Device for Emulation
Start with housekeeping. Create a dedicated folder structure before installing anything — most Android emulators scan specific directories for ROMs, and a messy folder layout is the single most common reason people can’t get their games to show up in-app.
“`
/storage/emulated/0/ROMs/
├── gba/ (Pokémon Emerald.gba, Pokémon FireRed.gba)
├── nds/ (Pokémon Platinum.nds, Pokémon HeartGold.nds)
├── 3ds/ (Pokémon X.3ds, Pokémon Sun.cia)
├── bios/ (gba_bios.bin, firmware.bin — see Step 7)
└── saves/ (backup copies of your .sav and .dsv files)
“`
If you’re on Android 11 or newer, expect to grant “All files access” permission individually to each emulator the first time you launch it — Google’s scoped storage rules require it for apps that need to browse arbitrary folders rather than a single app-locked directory. Skipping this step is the second most common cause of “my emulator can’t find my ROMs” support threads.
Also confirm sideloading is enabled if you plan to install any emulator outside the Play Store (RetroArch’s own APK, for example, since its Play Store build is outdated — more on that in Step 3). Go to Settings > Apps > Special app access > Install unknown apps, and allow it for your file manager or browser.
Step 2: Install My Boy! or John GBAC for GBA Pokémon Games
For Game Boy Advance titles — Emerald, Ruby, Sapphire, FireRed, LeafGreen — you have two solid Play Store options in 2026, and neither requires a separate BIOS file.
**My Boy! Free** is the more polished of the two. Its last documented stable build is v2.0.9 (May 2024), it supports Android 6.0 and up, uses an open-source boot ROM so you don’t need to source a BIOS dump, offers unlimited save states, and carries Play Protect certification. It’s the app most GBA Pokémon tutorials from the last five years have defaulted to, and that reputation still holds up.
**John GBAC** is the actively updated alternative. It merged the older John GBA and John GBC apps into a single build, sits around 3.7 stars with roughly 15,000-16,000 reviews and over a million downloads on Play, and its most recent APK release is v2.14, dated December 5, 2025 — the Play Store listing itself shows a last update of November 29, 2025, with a changelog noting the core was rebuilt to support 16KB memory page sizes (a compatibility requirement introduced by newer Android builds). If you want the more frequently patched of the two, John GBAC is currently ahead.
Installation is identical for both: search the app name on Google Play, install, open the app, point it at your `/ROMs/gba/` folder, and your Pokémon ROM should appear in the library grid within a few seconds.
Step 3: Set Up RetroArch’s mGBA Core as a Backup Option
RetroArch is worth having installed as a second GBA option, mainly because its mGBA core has a reputation for the most accurate GBA emulation available on any platform. The catch: RetroArch’s own documentation flags its Google Play build as outdated, stating plainly that the Play Store version “has not been updated for years due to Play Store policy changes” and recommending users grab the APK directly from the official site instead.
“`
# Download the current APK directly from retroarch.com/index.php#Downloads
# instead of the outdated Play Store listing, then sideload it:
adb install retroarch64-2.10.2.apk
# After first launch, download the mGBA core from inside the app:
# Main Menu > Load Core > Download a Core > Nintendo – Game Boy Advance (mGBA)
“`
A reasonable current version pairing is RetroArch v2.10.2 with mGBA core v7.8, both distributed through Libretro’s own build system with verified core signatures. Once the core is downloaded, point RetroArch’s content directory at the same `/ROMs/gba/` folder you set up in Step 1, and it’ll list your Pokémon ROMs alongside whatever else you’ve imported.
This is optional if My Boy! or John GBAC already runs your GBA Pokémon games without issue — but keep it in your back pocket for the rare ROM hack or compatibility edge case those apps choke on.
Step 4: Install melonDS for Nintendo DS Pokémon Titles
For DS-generation Pokémon games — Diamond, Pearl, Platinum, HeartGold, SoulSilver, Black, White, and the sequels — melonDS Android is now the top Play Store recommendation, and it’s had a genuinely active year of development. The Play Store build sits at version 2.0.1 as of early May 2026, following a version 2.0.0 release on April 18, 2026 that updated the emulation core to melonDS 1.1, added dual-screen device layout support, improved RetroAchievements integration, added Rumble Pak support, enabled launching DSiWare titles directly from the ROM list, and cut audio latency along with fixing microphone sensitivity issues (relevant if you’re doing anything with the DS mic in older Pokémon spin-offs).
Install it from Google Play, then in-app go to Settings > File Browsing and point it at your `/ROMs/nds/` folder. melonDS Android also supports importing your firmware dump for a more accurate boot experience — covered in Step 7.
Our dedicated melonDS setup walkthrough for Pokémon covers the desktop version in more depth if you’re also running it on PC and want save file compatibility between the two.
Step 5: Why DraStic No Longer Belongs in Your 2026 Setup
If you’ve read an older “best Pokémon emulators” article recently, it probably told you to install DraStic. Don’t — not from the Play Store, at least, because it isn’t there anymore. Developer Exophase pulled DraStic DS Emulator from Google Play in February 2025 with no public explanation, and the emulator’s official website went dark around the same time. As of this writing in August 2026, there’s no indication it’s coming back; the most recent activity in the emulation community involves unofficial third-party forks that continue development outside any official channel, which carries the usual risks of installing APKs from sources you can’t fully verify.
If you already have a DraStic APK installed from before the delisting, it’ll likely keep working — Android doesn’t retroactively uninstall apps that leave the Play Store. But for anyone setting up fresh in 2026, melonDS (Step 4) is the safer, actively maintained default, and RetroArch’s DeSmuME core is a reasonable fallback for titles melonDS still struggles with.
Step 6: Install Azahar for 3DS Pokémon Games
This is the step where the landscape has changed the most since 2024. Citra, the original 3DS emulator, was shut down after Nintendo’s lawsuit against its developers was settled, and official Citra builds — Android included — stopped being distributed. Azahar is the actively maintained continuation of that codebase, built by the community that kept working after Citra’s shutdown, and it’s the emulator you actually want for Pokémon X/Y, Omega Ruby/Alpha Sapphire, Sun/Moon, and Ultra Sun/Ultra Moon on Android in 2026.
Azahar has an official Play Store listing (package name `io.github.lime3ds.android`) that the project explicitly keeps synced with its GitHub releases. As of mid-August 2026, the stable Play Store build is version 2125.1.3-googleplay, dated June 29, 2026. A newer 2126.0 build, released in early-to-mid August 2026, is available as a direct APK from GitHub and brings multiplayer features to the Android version that were previously PC-only — but it hasn’t hit the Play Store yet, so most users should stick with the Play Store build unless they specifically need that feature.
“`
# Recommended: install from Google Play (kept synced with GitHub releases)
# Package: io.github.lime3ds.android
# Alternative: sideload the newer GitHub build for the latest features
adb install azahar-2126.0-android.apk
“`
Minimum specs Azahar’s own documentation lists for Android: OS 9.0+ (64-bit), a Snapdragon 835 SoC or better, GPU support for OpenGL ES 3.2 or Vulkan 1.1, and 2GB RAM minimum with 4GB recommended. In practice, Pokémon 3DS titles run best at 2x-3x internal resolution on Snapdragon 8 Gen 2/3-class chips, and flagship Snapdragon 8 Elite devices handle it without breaking a sweat. Our full Azahar setup guide for Pokémon covers desktop configuration in more detail if you want matching save states across platforms.
Step 7: Source BIOS and Firmware Files the Right Way
BIOS requirements vary by console generation, and getting this wrong is where a lot of first-time setups stall out.
– **GBA (My Boy!, John GBAC, mGBA core):** No separate BIOS needed. Both apps use an open-source boot ROM replacement built into the emulator, so a plain .gba file is all you need.
– **DS (melonDS):** Runs without firmware for basic gameplay, but a proper firmware.bin dump from your own DS or DSi unlocks a more accurate boot sequence and is required for a handful of edge-case features, like in-game clock-dependent Pokémon events.
– **3DS (Azahar):** Needs a decrypted system files dump from a physical 3DS console you own, obtained via the same dumping tools used on desktop (Godmode9, etc.), placed in the app’s `sysdata` folder. Azahar’s in-app System Files Installation guide walks through the exact folder structure.
Never download BIOS or firmware files from ROM sites — these are Nintendo’s proprietary system software, not the game data, and distributing them is one of the clearer-cut copyright violations in the emulation space. Dumping from hardware you own is the only approach that keeps you on solid legal ground.
Step 8: Dump or Legally Source Your Pokémon ROMs
For GBA and DS cartridges, a flashcart-style dumper connected to a PC (or, for DS, tools like the ones bundled with certain flashcarts) reads the cartridge and outputs a .gba or .nds file you then transfer to your phone’s ROMs folder over USB or cloud sync. For 3DS games, dumping typically happens on the console itself using homebrew tools, producing .3ds or .cia files depending on whether you’re dumping a cartridge or a digital purchase.
Once dumped, transfer files with a standard USB cable and your phone’s file manager, or through a cloud folder if you’d rather skip the cable. Keep file names simple and matching across your BIOS/save/ROM folders — “Pokemon Platinum.nds” paired with “Pokemon Platinum.sav” avoids the save-file-mismatch errors that show up when names don’t line up exactly.
Step 9: Configure Save States, Cheats, and Fast-Forward
Every emulator in this guide supports save states — instant snapshots that don’t rely on the game’s own save system — which is the single biggest quality-of-life upgrade over playing on original hardware. In My Boy! and John GBAC, save states live under a dedicated in-game menu icon; in melonDS and Azahar, they’re bound to hardware volume or menu buttons by default and remappable in Settings > Controls.
Fast-forward is worth binding to an easy-to-reach button too — grinding levels or hatching eggs in any Pokémon generation goes from tedious to trivial once you can hold a button and blow through 4x or 8x speed. All three emulator families support this natively; no extra plugins needed.
Cheat support (Action Replay/Gameshark-style codes) exists in all four apps too, accessed differently in each: RetroArch uses its Cheats menu with Libretro-format code databases, while My Boy!, John GBAC, melonDS, and Azahar each have their own cheat code import screens that accept standard code formats.
Step 10: Pair a Bluetooth Controller for Real Battles
Touchscreen controls work fine for casual play, but Pokémon battles with precise D-pad menu navigation are noticeably better with a physical controller. Any standard Bluetooth gamepad — Xbox, PlayStation DualSense, or a generic 8BitDo — pairs the same way: Settings > Bluetooth > pair the controller, then open your emulator’s control mapping screen and assign buttons manually if auto-detection doesn’t pick everything up correctly.
RetroArch has the most granular controller support of the four, with per-core button remapping and support for multiple simultaneous controllers (useful for local link-cable-style trades, though actual wireless trading between two phones requires each emulator’s own multiplayer implementation, which varies in reliability by app and version.
Step 11: Tune Graphics and Performance Settings by Chipset
GBA and DS games don’t need tuning — any phone from the last several years runs them at full native speed with headroom to spare. 3DS emulation via Azahar is where settings actually matter. The sweet spot for most modern Android chipsets (Snapdragon 8 Gen 2/3-class and up) is 2x to 3x internal resolution scaling; pushing higher looks sharper but starts eating into frame pacing on anything below flagship tier. On Snapdragon devices specifically, enabling Turnip driver support in Azahar’s graphics settings (where available) improves Vulkan rendering performance measurably over the stock GPU driver path.
If you’re on a mid-range chipset below Snapdragon 8-series, drop internal resolution to 1x and disable anisotropic filtering first — those two changes alone resolve most of the stutter reports in 3DS Pokémon emulation on Android.
Step 12: Back Up Saves and Sync Across Devices
Nothing ruins a 40-hour Pokédex run like a corrupted save with no backup. Set up a recurring habit — weekly is reasonable — of copying your `/ROMs/saves/` folder to a cloud drive or your PC. melonDS and Azahar both support cloud save sync natively through their settings menus; My Boy!, John GBAC, and RetroArch rely on manual file backup unless you’re syncing the whole ROMs directory through a service like Google Drive’s folder sync or Syncthing.
This step takes thirty seconds and it’s the one everyone skips until the first time it saves them.
What a Successful Setup Looks Like
It helps to know what “working correctly” actually looks like before you start troubleshooting a setup that might be fine. Here’s what each stage of a correct install produces.
**After Step 2 (My Boy!/John GBAC installed):** Launching the app shows a grid or list view with a thumbnail box for each ROM in your `/ROMs/gba/` folder. Tapping Pokémon Emerald.gba should boot straight to the intro cutscene within one to two seconds — no BIOS prompt, no error dialog. If you instead see a black screen that never progresses past the Nintendo logo, that’s a sign the ROM file itself is corrupted or incomplete, not a settings problem.
**After Step 4 (melonDS installed):** The app’s file browser, opened from Settings > File Browsing, should list your .nds files with correct box art thumbnails