Pokémon on Raspberry Pi 5: RetroPie Setup in 13 Steps [2026]

A Raspberry Pi 5 board costs about $175 for the 8GB version, yet it can carry every mainline Pokémon game from Red and Blue through HeartGold and SoulSilver in a box smaller than a paperback novel. That combination of price and range is why “pokemon raspberry pi” has become one of the steadiest search queries in retro gaming circles this year, outpacing more generic Raspberry Pi emulator terms by a wide margin, and it’s the same appeal that pushed PCBWay to publish its own Poké Pi project in September 2026, pairing a cheaper Raspberry Pi 4 with a 5-inch display for a build limited to Gen 1 titles. This tutorial goes further: building a Raspberry Pi 5 running RetroPie, tuned specifically for Game Boy, Game Boy Color, Game Boy Advance, and Nintendo DS Pokémon titles, with netplay for trading and a save-backup routine that won’t let you lose forty hours of progress to a bad microSD card.

Unlike a general-purpose RetroPie build guide, every configuration choice here is made with Pokémon specifically in mind: which cores actually run Platinum and SoulSilver at full speed, how to map the touch screen controls that Nintendo DS Pokémon games depend on, and how to set up netplay so two Pi units (or a Pi and a PC) can trade and battle. By the end you’ll have a complete, working project, not just a generic emulation box.

Google · Preferred Sources

Don't miss new tech stories on Google

Add Tech Insider once in the Google app and our stories appear in your news suggestions.

Add Now

Why Raspberry Pi Still Makes Sense for Pokémon Emulation in 2026

Phone and Android emulators have gotten good, and Steam Deck-class handhelds can brute-force almost anything. But the Raspberry Pi 5 occupies a spot none of those fill well: a dedicated, always-on, TV-connected Pokémon console that costs less than a single new first-party game and never asks you to close other apps to free up RAM. That affordability has mostly held: Raspberry Pi raised the 2GB Pi 5 by $12.50 to $77.50 on October 1, 2026, with Raspberry Pi attributing the increase to sharply higher memory costs, but confirmed that pricing on the 1GB Pi 4 and Pi 5 boards, along with the 2GB Compute Module 4 and 5, remains unchanged, so the budget math behind this build stays far below the cost of a new handheld. The Pi 5’s quad-core Arm Cortex-A76 CPU clocked at 2.4GHz handles Game Boy, Game Boy Color, and Game Boy Advance emulation with CPU cycles to spare, and it gets Nintendo DS titles like Pokémon Platinum and HeartGold close enough to full speed that the stutters are the exception, not the rule.

It’s also the board Raspberry Pi says it will keep making until at least January 2036, which matters for a project you don’t want to rebuild every two years. There’s no Raspberry Pi 6 on the market as of October 2026, so the Pi 5 remains the current flagship and the obvious pick for a new build. The newer Raspberry Pi OS 6.3 release (based on Debian 13 “Trixie” with a 6.18 kernel, released mid-September 2026) also means driver and Bluetooth support for the Pi 5 is more mature than it was at launch.

RetroPie is a Raspberry Pi-focused retro-gaming distribution rather than an official Raspberry Pi product listing, and Raspberry Pi itself introduced its own Raspberry Pi Guide to Retro Gaming on October 20, 2026. RetroPie remains a solid choice for this build because of its documentation depth and because EmulationStation plus RetroArch give you granular, per-core control over Pokémon-specific settings like save-state slots, rewind, and netplay. Batocera is worth mentioning as the simpler, more appliance-like alternative if you’d rather skip manual configuration entirely, but this guide documents RetroPie start to finish since it gives you the most control over exactly how each Pokémon generation runs.

The reason Pokémon specifically is worth a dedicated build, rather than just following a generic RetroPie tutorial, comes down to how differently each generation behaves. Game Boy and Game Boy Advance titles are essentially solved problems on this hardware – any reasonably configured core clears them without a second thought. Nintendo DS titles are the opposite: they’re the one spot in the entire Pokémon catalog where core choice, BIOS accuracy, renderer settings, and cooling all genuinely matter to the outcome. A tutorial that treats every Pokémon generation the same way will either over-explain the easy parts or under-explain the one part that actually needs it, which is exactly the gap this guide is built to close.

Prerequisites: What You’ll Need Before You Start

Gather these parts and tools before you begin. This list is specific to a Pokémon-focused build, not a generic RetroPie setup, so the microSD card size and controller recommendations reflect what GB through NDS emulation actually requires.

ItemRecommended SpecApprox. Price (Oct. 2026)
Raspberry Pi 5 board4GB or 8GB RAM$110-$175
Power supplyOfficial or equivalent 27W USB-C$12-$20
CoolingActive Cooler or case with fan$10-$25
microSD card128GB, A1/A2 rating, UHS-I, Class 10/U3$15-$25
ControllerUSB or Bluetooth gamepad with d-pad$15-$40
HDMI cable + displayMicro-HDMI to HDMI$8-$15
Software: OS imageRetroPie (current Pi 5-compatible build) or Raspberry Pi OS 6.3Free
Software: flashing toolRaspberry Pi Imager (latest)Free

A complete Raspberry Pi 5 8GB kit with cooling, power supply, and a 128GB card runs approximately $215-$285 before a controller, and roughly $230-$285 once you add one basic gamepad. Raspberry Pi reaffirmed in October 2026 that it isn’t raising prices on the entry-level 1GB Pi 4 and Pi 5 boards or the 2GB Compute Module 4 and 5, so those totals should hold rather than drift upward the way most electronics pricing tends to. That’s still less than most new handhelds, and the Pi doubles as a general Linux box when you’re not catching Pokémon.

You’ll also need legally obtained Pokémon ROM files and, for Nintendo DS emulation, a legally dumped DS BIOS and firmware. Step 5 below covers exactly how to source and organize these without touching a piracy site. Nothing in this tutorial links to or recommends ROM download sites.

Step 1: Pick Your Raspberry Pi 5 Configuration and Accessories

Raspberry Pi 5 ships in 1GB, 2GB, 4GB, 8GB, and 16GB RAM configurations, all using LPDDR4X-4267 SDRAM. For a Pokémon-focused emulation box, the 4GB model is already enough headroom for every GB, GBC, GBA, and NDS core running through RetroArch. The 8GB board is worth the extra cost only if you plan to also run EmulationStation’s scraper, a web server for remote ROM management, or multiple RetroArch instances at once for netplay testing. Skip the 16GB model: at $305 (the price Raspberry Pi lists for it), its price premium targets memory-heavy computing workloads, not emulation, and it buys you nothing in frame rate. If your ambitions are narrower, PCBWay’s September 2026 Poké Pi project shows the other end of that spectrum: a Raspberry Pi 4 paired with a 5-inch display and a UPS module for portable play, built specifically to run Gen 1 Pokémon titles rather than the full NDS-spanning catalog this guide covers.

Cooling is not optional on a Pi 5. The board runs hot enough under sustained 3D load (which Nintendo DS emulation produces constantly) that an uncooled board will throttle within minutes. Use the official Active Cooler or a case that includes a fan – a bare heatsink alone is not enough for extended DS emulation sessions, and throttling is one of the most common causes of inconsistent Pokémon Platinum or HeartGold frame pacing.

For the power supply, use a genuine 27W USB-C adapter rated for the Pi 5 specifically. The Pi 5 draws more current than previous boards and is noticeably more sensitive to undervoltage – a phone charger or a long, thin USB-C cable is a common, hard-to-diagnose cause of random crashes and corrupted saves later in this guide.

Step 2: Flash RetroPie to Your microSD Card

Download Raspberry Pi Imager on your main computer, and grab the current RetroPie image built for Raspberry Pi 5, or build RetroPie on top of a 64-bit Raspberry Pi OS 6.3 install if you want the newest kernel and driver support underneath it. Check the RetroPie GitHub release page the same day you flash the card – RetroPie’s Pi 5 support has matured steadily through 2026, but image builds are not released on the same schedule as Raspberry Pi OS, so always confirm you’re grabbing a build that explicitly lists Pi 5 compatibility.

# On Linux/macOS, flash via command line instead of the GUI if you prefer:
# 1. Identify your SD card device (be certain before running dd - it is destructive)
diskutil list # macOS
lsblk # Linux

# 2. Unmount the card (macOS example, replace diskN with your card's identifier)
diskutil unmountDisk /dev/diskN

# 3. Write the image (replace paths with your actual files)
sudo dd if=retropie-pi5-buster.img of=/dev/rdiskN bs=4m status=progress conv=sync

# 4. Verify the write completed without errors, then eject
diskutil eject /dev/diskN

Most readers will prefer the Raspberry Pi Imager GUI: select “Use custom” to point it at your downloaded RetroPie image, choose your microSD card as the target, and click write. Imager will verify the write automatically. Either way, use a 128GB A1/A2-rated card as a baseline – GB, GBC, GBA, and NDS ROM files are individually tiny, but you want the overhead for EmulationStation’s scraped box art, save states, and a second system or two down the line.

Step 3: First Boot, Wi-Fi, and Base Configuration

Insert the card, connect your controller, and power on the Pi. RetroPie boots into EmulationStation and, on first run, prompts you to configure a controller – do this for at least one gamepad before anything else, since EmulationStation itself needs d-pad and confirm/cancel input to navigate its menus. Hold any button for roughly 2 seconds on an unrecognized controller to force RetroPie into its configuration flow if it doesn’t appear automatically.

From the RetroPie menu (accessible from EmulationStation’s main menu), connect to Wi-Fi so you can pull updates and, later, enable netplay. Set your region, time zone, and a new password for the default user if the image prompts you to – leaving default credentials on a networked device is an unnecessary risk even on a home LAN.

Expected output after a clean first boot looks roughly like this in the RetroPie-Setup script log:

RetroPie-Setup v4.x
Raspberry Pi 5 Model B Rev 1.0 detected
Available disk space: 118.4G / 128G
Wi-Fi: connected (192.168.1.x)
EmulationStation: installed
RetroArch: installed (core: n/a - no cores installed yet)
Update available: 14 packages

Step 4: Update RetroPie and Install the Emulator Cores You Need

From EmulationStation, open the RetroPie menu and launch RetroPie-Setup. Run the “Update all installed packages” option first, then go into the “Manage packages” > “Manage main packages” / “Manage optional packages” menus and specifically install or update:

  • Gambatte or SameBoy (Game Boy / Game Boy Color core)
  • mGBA (Game Boy Advance core – also usable for GB/GBC if you prefer one core for everything)
  • melonDS and/or DeSmuME (Nintendo DS cores)
  • RetroArch itself, kept current for netplay compatibility

Installing both melonDS and DeSmuME is worth the extra storage. They have different strengths on Pi 5 hardware, and you’ll want to A/B test both against specific Pokémon DS titles rather than assuming one is strictly better. On a Raspberry Pi 5, Gambatte and SameBoy both run Pokémon Red, Blue, Yellow, Gold, Silver, and Crystal at full speed with essentially zero CPU headroom used; the GB/GBC generation is not a meaningful performance test on this hardware.

Step 5: Source and Organize Your Pokémon ROMs and BIOS Files Legally

This is the step most tutorials skip past, and it’s the one that actually determines whether your build is legal to run. Emulator software itself is not illegal – writing and distributing an emulator is protected, and that principle has held up in US courts repeatedly. What is not protected is downloading copyrighted ROM files or BIOS firmware from the internet, even for games you already own on cartridge. Nintendo’s 2024 lawsuit against the Yuzu emulator project is the clearest recent signal of how aggressively the company pursues projects it believes facilitate piracy or circumvent copy protection – and while that case targeted a Switch emulator rather than anything covered in this guide, it set a practical precedent for how far Nintendo will go when it sees distribution-related harm.

The safe, legal path is to dump your own cartridges and your own DS hardware. If you own the original Pokémon cartridges, cartridge dumping devices exist for GB/GBC/GBA carts, and your original DS or DS Lite console can be used to dump BIOS and firmware files following established, well-documented homebrew procedures. Keep those dumps private – don’t upload or redistribute them, and don’t bundle them into any image or repository you share with others.

Once you have legally obtained files, organize them into RetroPie’s expected directory structure under /home/pi/RetroPie/roms/:

/home/pi/RetroPie/roms/gb/ # Pokemon Red.gb, Pokemon Blue.gb
/home/pi/RetroPie/roms/gbc/ # Pokemon Gold.gbc, Pokemon Crystal.gbc
/home/pi/RetroPie/roms/gba/ # Pokemon Emerald.gba, Pokemon FireRed.gba
/home/pi/RetroPie/roms/nds/ # Pokemon Platinum.nds, Pokemon HeartGold.nds
/home/pi/RetroPie/BIOS/ # bios7.bin, bios9.bin, firmware.bin (NDS only)

File naming matters more than people expect: avoid special characters, keep extensions lowercase and correct for the system, and don’t rename BIOS files from their expected filenames – cores look for specific filenames in the BIOS folder and will silently fail to find firmware if you’ve renamed it.

Step 6: Configure Gambatte or SameBoy for Game Boy and Game Boy Color Pokémon Games

From EmulationStation, navigate to your GB or GBC ROM list, press a button to bring up the game options menu, and set “default core” to Gambatte or SameBoy. SameBoy is generally considered the more accuracy-focused of the two and is a good default if you care about pixel-perfect color palettes on Pokémon Gold, Silver, and Crystal; Gambatte is the safer, broadly compatible choice if you run into any oddities with a specific ROM revision.

Both cores run this generation at full speed on Pi 5 hardware without any tuning, so there’s little reason to touch advanced settings here beyond enabling the Game Boy Color palette options if you’re playing the original Game Boy Pokémon Red/Blue/Yellow and want the GBC color enhancement.

Step 7: Configure the mGBA Core for GBA Pokémon Games

Set mGBA as the default core for your GBA ROM folder the same way. mGBA is the clear standard choice for Pokémon Ruby, Sapphire, Emerald, FireRed, and LeafGreen – it’s actively maintained, highly accurate, and runs this generation at a steady 59.7 FPS (the GBA’s native refresh rate) on Pi 5 hardware with essentially no frame drops under normal play.

Open RetroArch’s quick menu while in-game (typically Select+X or your configured hotkey) and check these settings specifically for a Pokémon GBA session:

# retroarch.cfg entries worth checking for GBA Pokemon play
video_threaded = "true"
audio_sync = "true"
video_vsync = "true"
rewind_enable = "true" # handy for Pokemon's RNG-based encounters
savestate_auto_save = "true"
savestate_auto_load = "true"

Leave shaders off or minimal for GBA content. The GBA’s native resolution is low enough that aggressive upscaling filters add visible blur without meaningfully improving clarity on a modern TV, and they cost CPU cycles that matter more on the DS step coming up.

Step 8: Configure melonDS or DeSmuME for Nintendo DS Pokémon Games

This is where a Pi 5 Pokémon build earns its complexity. Pokémon Diamond, Pearl, Platinum, HeartGold, SoulSilver, Black, and White are Nintendo DS titles, and DS emulation is meaningfully less predictable than anything covered so far. Set the default core for your nds ROM folder to melonDS first – it’s generally the better-integrated modern option where a current Pi 5 build is available – and keep DeSmuME installed as a fallback for any specific title that runs poorly on melonDS.

Both cores require legally dumped DS BIOS and firmware files (bios7.bin, bios9.bin, firmware.bin) placed in the BIOS folder from Step 5. Without them, you’ll either get a black screen on boot or be limited to a direct-boot mode that skips firmware initialization – usable, but not the full experience.

Tune these settings specifically to get Pokémon Platinum and HeartGold as close to full speed as the Pi 5 allows:

# Core-specific options (accessed via RetroArch quick menu > Options, in-game)
Renderer: OpenGL (or Vulkan, if your build/core exposes it reliably)
Internal resolution: 1x native # raise only if performance allows headroom
Threaded rendering: enabled
Audio bitrate: default (do not force high-quality resampling)
Frameskip: disabled first; enable only if you see consistent slowdown

Realistically, expect GB, GBC, and GBA Pokémon games to be effortless on a Pi 5, and expect DS Pokémon games to be playable to near-full-speed rather than flawless. Busy 3D areas, battle transitions, and double-screen UI moments are the most likely spots for a dip. If you see consistent slowdown specifically in those situations rather than throughout the whole game, that’s a renderer or resolution setting to back off, not a sign the Pi can’t handle DS emulation at all.

Pokémon Black and White are worth calling out separately, since they push the DS’s 3D hardware harder than Diamond, Pearl, or Platinum did – the overworld’s full 3D rendering and the Join Avenue/Entralink areas are the parts most likely to test your configuration. If those two titles run noticeably worse than HeartGold or SoulSilver on identical settings, that’s expected rather than a sign something is misconfigured; drop the internal resolution back to native before touching anything else.

Pokémon GenerationPlatformRecommended CorePi 5 Performance
Red / Blue / YellowGame BoyGambatte or SameBoyFull speed, no tuning needed
Gold / Silver / CrystalGame Boy ColorGambatte or SameBoyFull speed, no tuning needed
Ruby / Sapphire / Emerald / FireRed / LeafGreenGame Boy AdvancemGBAFull speed, ~59.7 FPS
Diamond / Pearl / PlatinumNintendo DSmelonDS (primary), DeSmuME (fallback)Near-full speed, occasional dips in 3D-heavy scenes
HeartGold / SoulSilverNintendo DSmelonDS (primary), DeSmuME (fallback)Near-full speed, config-dependent
Black / WhiteNintendo DSmelonDS (primary), DeSmuME (fallback)Near-full speed, more demanding than Gen 4

Step 9: Map and Calibrate Your Controller for Dual-Screen Play

Nintendo DS Pokémon games lean on the touch screen for menus, Pokétch functions, and some minigames, which a standard gamepad can’t replicate directly. Inside the DS core’s options, map the bottom screen to your right analog stick or to a dedicated button combination, and check whether your specific core build supports a “tap” button you can bind separately from movement. Test this before you start a save file – discovering mid-game that you can’t access the Pokétch is a frustrating way to learn this lesson.

RetroArch has four separate input layers that can each hold a different mapping: EmulationStation navigation, RetroArch’s global hotkeys, per-core defaults, and per-game overrides. A controller that works perfectly in the menu but does nothing in a game almost always means the per-core mapping wasn’t saved. After mapping a controller, always use the “Save Core Remap File” or “Save Game Remap File” option explicitly – RetroArch does not always persist mappings automatically between sessions.

Step 10: Overclock and Cool the Pi 5 for More Consistent DS Emulation

If you installed active cooling in Step 1, a modest overclock is reasonably safe on most Pi 5 boards and can smooth out the specific scenes where DS emulation dips. Edit /boot/firmware/config.txt (or /boot/config.txt depending on your image) and add conservative overclock values – push incrementally and test stability rather than jumping straight to aggressive numbers:

# /boot/firmware/config.txt - conservative starting point, test before increasing
over_voltage=2
arm_freq=2600
gpu_freq=900

# Reboot and check for throttling after any change:
vcgencmd get_throttled
# 0x0 = no throttling detected since boot. Any other value means
# undervoltage or thermal throttling occurred - back off the overclock
# or improve cooling before continuing.

Run vcgencmd measure_temp periodically during a long DS play session. If you’re consistently above roughly 80°C, your cooling solution isn’t adequate for the overclock you’ve set – dial the clock speeds back down rather than letting the board throttle unpredictably, since throttling produces exactly the inconsistent frame pacing this step is trying to eliminate.

Step 11: Set Up Netplay for Trading and Battling

RetroArch’s built-in netplay feature lets two devices synchronize a running emulator session over a network, and it’s the mechanism you’d use to attempt Pokémon trading or battling between two Pi units, or between a Pi and a PC running RetroArch. It’s important to set expectations correctly here: netplay is a general multiplayer-synchronization feature, not a purpose-built recreation of the DS’s local wireless trading system, and support for Pokémon-specific link features varies by core and isn’t guaranteed to work identically across every title.

To attempt it, both systems need the exact same ROM revision, the same core and core version, matching BIOS files, and compatible network settings. From RetroArch’s Netplay menu, one device hosts a session and the other connects as a client:

# On the hosting device (RetroArch > Netplay > Host)
# Enable "Start Netplay as Host" before loading the ROM, then load your game

# On the connecting device (RetroArch > Netplay > Connect to Netplay Host)
# Enter the host's local IP address, e.g.:
Host IP: 192.168.1.42
Host Port: 55435 # RetroArch's default netplay port

# Both sides must be running the identical core version and ROM revision,
# or the session will desync almost immediately.

Treat netplay as something to test thoroughly with a throwaway save file before relying on it for an important trade. Firewalls, NAT configuration, and mismatched core versions are the most common reasons a connection fails outright, and DS wireless-dependent features in particular are inconsistent across different cores and front ends – confirm the specific behavior you need works before building a trading session around it.

Step 12: Back Up Your Save Files and Clone Your SD Card

microSD cards are the single most common point of failure in any Raspberry Pi build, and a corrupted card after forty hours of Pokémon Platinum progress is exactly the kind of thing this step exists to prevent. Your in-game saves live in /home/pi/RetroPie/roms/[system]/ as .sav files alongside the ROMs, and save states live in RetroPie’s dedicated states directory.

# Back up save files over SSH or network share to another machine
rsync -avz [email protected]:/home/pi/RetroPie/roms/nds/*.sav ./pokemon-backups/

# Full card image backup (run from your main computer with the SD card inserted,
# Pi powered off - replace diskN with your card's actual device identifier)
sudo dd if=/dev/rdiskN of=retropie-pokemon-backup.img bs=4m status=progress

Never pull the power cable while the Pi’s activity LED is flashing, and always shut down through EmulationStation’s power menu rather than cutting power directly – abrupt power loss during a write is the most common cause of save corruption and filesystem errors on this platform. If you’re running this build long-term, schedule the rsync backup as a weekly cron job so you’re never more than a week from your most recent save state.

Step 13: Add Scraped Artwork, Bezels, and Shaders for Final Polish

With every Pokémon generation running, the last step is cosmetic but makes the build feel finished. EmulationStation’s built-in scraper (RetroPie menu > “Configuration Editor” or the dedicated Scraper tool) pulls box art, game descriptions, and metadata automatically once you’ve named your ROM files reasonably close to their official titles. Run it per-system rather than all at once the first time, so you can catch and manually fix any mismatches before they clutter your whole library.

Bezels (decorative borders that frame GB/GBC/GBA’s small native resolution inside a full HDMI frame) and light shaders can make older Pokémon games look considerably better on a modern TV without the performance cost of DS emulation’s 3D rendering. Keep shader use minimal on DS content specifically – this is the one place where a shader’s GPU overhead can tip a borderline scene into a visible slowdown.

5 Common Pitfalls When Building a Pokémon Raspberry Pi

1. Using a cheap or counterfeit microSD card. This is the single most frequent cause of corrupted ROMs, failed boots, and lost saves in the entire RetroPie community. Buy from a major manufacturer and a reputable retailer – counterfeit high-capacity cards that silently fail are common enough on marketplace sites that it’s worth the few extra dollars to buy direct or from an authorized seller.

2. Skipping active cooling to save $15. An uncooled Pi 5 throttles under sustained DS emulation load within minutes, and the resulting frame-pacing issues look identical to “melonDS just can’t run this game,” leading people to blame the emulator for a cooling problem.

3. Mixing BIOS files between emulator cores or renaming them. melonDS and DeSmuME both expect specific filenames in the BIOS directory. A file that works perfectly in one core will produce a black screen in the other if it’s been renamed or if you’ve substituted a DSi-specific firmware file for a standard DS one.

4. Assuming netplay equals DS wireless trading. RetroArch netplay synchronizes an emulation session; it does not automatically reproduce the DS’s original local wireless protocol. Treat any Pokémon trade or battle over netplay as something to test with a disposable save first.

5. Never backing up saves until after losing one. A single rsync command takes thirty seconds. Running it weekly costs you nothing and is the only real insurance against the microSD failure that eventually happens to nearly every long-running RetroPie build.

Troubleshooting: 8 Common Issues and Fixes

1. Black screen when launching a Nintendo DS game. Check that bios7.bin, bios9.bin, and firmware.bin are present, correctly named, and placed in the BIOS folder the active core expects. Try direct-boot mode temporarily to confirm whether the problem is specifically firmware-related.

2. “Undervoltage detected” warning on screen or in logs. Replace your USB-C cable and power supply with a genuine 27W-rated unit. Long or thin third-party cables are a frequent, easy-to-overlook cause.

3. No audio, or audio that crackles under DS emulation. Explicitly select HDMI audio output in Raspberry Pi OS’s audio settings rather than letting it auto-detect, and confirm the setting didn’t revert after a core update. If video is smooth but audio crackles, that’s usually a sync setting, not a hardware fault – try toggling audio_sync in retroarch.cfg.

4. Controller works in EmulationStation but not in-game. The per-core input mapping wasn’t saved. Re-map inside the specific core’s quick menu and explicitly choose “Save Core Remap File,” not just the global RetroArch binding.

5. Consistent slowdown specifically in 3D-heavy DS areas. Lower the internal resolution to native (1x), disable any shader, and confirm OpenGL/Vulkan driver support is current. This is expected behavior on borderline scenes, not a sign of a broken install – back off the settings rather than assuming the hardware can’t do it at all.

6. Save file appears corrupted or reverts to an old state. Check whether two emulator instances wrote to the same .sav file, whether the Pi lost power mid-write, or whether a save state was loaded from a different ROM revision than the one currently running. Restore from your rsync backup and avoid running two sessions against one save going forward.

7. Netplay session desyncs within seconds of connecting. Confirm both devices are running the exact same core version and the exact same ROM revision/region. A mismatch here is the most common cause of an immediate desync, more so than network latency itself.

8. RetroPie-Setup update fails or hangs. Confirm Wi-Fi is actually connected (check with ping -c 3 8.8.8.8 over SSH), then retry. Intermittent package-mirror issues are common; waiting and retrying resolves most hung updates without any configuration change.

Advanced Tips for a Faster, More Reliable Build

If you plan to use this Pi heavily, consider booting from a USB 3 SSD instead of the microSD card entirely. The Pi 5 supports USB boot, and an SSD eliminates the single biggest reliability weak point in the whole build while also speeding up load times noticeably on larger ROM libraries.

Keep a disk image backup of your fully configured card (the same dd command from Step 12, run against the whole card rather than just the save files) after you’ve finished setup but before you’ve played extensively. That snapshot lets you recover a fully working, pre-configured system in minutes rather than repeating every step in this guide from scratch.

If you install both melonDS and DeSmuME, create a simple per-game note of which core you settled on for each DS title. Performance and compatibility between the two cores can differ title by title, and there’s no universal answer – Platinum might run best on melonDS while a different title performs more consistently on DeSmuME, and six months later you won’t remember which was which without a note.

Finally, if you outgrow RetroPie’s manual configuration model, Batocera is a legitimate migration path rather than a step backward – it trades some of the granular control documented in this guide for a more appliance-like experience, and it’s worth evaluating once you know exactly which settings matter to your specific Pokémon library.

Complete Project Recap

ComponentWhat It Does in This Build
Raspberry Pi 5 (4GB or 8GB)Runs RetroPie and all four emulator cores
RetroPie + EmulationStationFront end, ROM organization, scraping
Gambatte / SameBoyGame Boy and Game Boy Color Pokémon generations
mGBAGame Boy Advance Pokémon generation
melonDS / DeSmuMENintendo DS Pokémon generations
RetroArch NetplayPokémon trading/battling between two systems
rsync + dd backupsSave file and full card protection

That’s a complete, working Pokémon emulation system: every mainline generation through Black and White, trading and battling support, and a backup routine that protects the save data you’ll actually care about keeping.

Frequently Asked Questions

Can a Raspberry Pi 5 run Pokémon Platinum and HeartGold at full speed?
Usually close to full speed with a properly cooled, configured setup, but not with a universal guarantee. Game Boy, Game Boy Color, and Game Boy Advance Pokémon titles run at full speed easily; Nintendo DS titles are playable to near-full speed, with occasional dips in 3D-heavy scenes depending on the core, resolution, and cooling.

Is RetroPie still worth using in 2026, or should I use Batocera instead?
RetroPie remains a solid, well-documented choice, especially if you want granular control over individual core settings as this guide covers. Batocera is a legitimate, simpler alternative if you’d rather have an appliance-like experience out of the box with less manual configuration.

Do I need both melonDS and DeSmuME installed?
Not strictly, but it’s recommended. DS emulation performance and compatibility vary by title, and having both installed lets you A/B test a specific Pokémon game against both cores rather than assuming either one is universally better.

What size microSD card do I actually need for a Pokémon-only library?
64GB is technically enough since GB, GBC, GBA, and NDS ROM files are small individually. 128GB is the more practical default once you account for scraped artwork, save states, backups, and the operating system overhead itself.

Can I trade and battle Pokémon between two Raspberry Pi units?
It’s possible using RetroArch’s netplay feature, but it requires matching ROM revisions, matching core versions, and compatible BIOS files on both systems. It’s a general multiplayer-synchronization feature rather than a purpose-built recreation of the DS’s original wireless trading system, so test thoroughly with a disposable save before relying on it.

Is it legal to download Pokémon ROMs for this build?
Downloading ROM files you don’t own a legal right to from the internet is generally copyright infringement, regardless of whether you own the original cartridge. The legal path is dumping ROMs and BIOS files from hardware and cartridges you personally own.

Why does my Pi show undervoltage warnings even with a “powerful enough” charger?
The Raspberry Pi 5 is more sensitive to power delivery than earlier boards. Many phone chargers and generic USB-C cables don’t deliver clean, stable power at the current the Pi 5 draws under load – use a cable and supply specifically rated for the Pi 5’s 27W requirement.

Should I overclock my Raspberry Pi 5 for this build?
A modest overclock with proper active cooling can smooth out borderline DS emulation scenes, but it’s optional. Increase clock speeds incrementally, check vcgencmd get_throttled after each change, and back off immediately if you see thermal throttling rather than pushing further.

Nadia Dubois

Nadia Dubois

AI & Innovation Editor

Nadia Dubois is the AI & Innovation Editor at Tech Insider, where she tracks the rapid evolution of artificial intelligence, from foundation models to real-world enterprise deployment. She previously covered AI and startups for La Tribune and contributed to MIT Technology Review's European coverage. Nadia specializes in generative AI, AI regulation, and the intersection of technology and European industrial policy. She holds a dual degree in Computational Linguistics and Journalism from Sciences Po Paris.

View all articles