Show HN: Pokémon Emerald Ported to Raspberry Pi Pico 2
Get the Tech newsletter
Daily tech — startups, AI labs, chips, the launches that shape the next decade. Free.
- Pokémon Emerald runs natively on a WeAct Studio Core2350B (RP2350B, 16 MB QSPI flash) at a locked 60 fps — no emulator, just the pret decompilation recompiled from ARMv4T to Cortex-M33 with the GBA's video hardware reimplemented in software.
- The complete game (code, graphics, maps, music) fits in an 11.7 MB image executed in place from flash, using ~378 KB of the RP2350's 520 KB of RAM; GBA memory-mapped registers (DISPCNT, VRAM, OAM, palette RAM) survive as plain SRAM.
- The software PPU on core 1 went from 909 ms/frame to ~12 ms/frame through per-frame palette LUTs, per-scanline window masks, 8-pixel tile spans, and incremental affine stepping — a roughly 45× speedup validated byte-exact against the WASM port's JavaScript rasterizer.
- Scanout uses a DMA control-block ring feeding the HSTX serializer a full 525-line frame with the CPU never touching the re-arm path, killing an ~0.8-blink-per-minute HDMI dropout caused by flash-write stalls during saves.
- The port piggybacks on tripplyons/pokeemerald-wasm, whose #if WASM hardware-abstraction seams were extended to #if WASM || RP2350, so the de-hardwaring work was already done and this project only adds the MCU-specific half.
- Limitations are listed honestly: audio is incomplete (DPCM and reverse-playback instruments are silent stubs, mixing coupled to frame rate), the link cable / wireless / Mystery Gift paths are stubbed, the RTC reads zero, and the OBJ-window intro cinematic runs at 20–25 ms/frame.
- The rp2350/ directory is original work released under MIT; the rest is the pret decompilation carrying no license from this project, and no ROM is required or included.
Why it matters: This demonstrates that modern $6 microcontrollers can natively execute a full commercial GBA game — recompiled from clean-room decompilation, not emulated — at locked 60 fps with custom HDMI output, a software-rasterized PPU on a second core, and DMA-driven scanout that survives flash-write stalls during saves. For hobbyists, it shows the RP2350B's dual-core ARM Cortex-M33 and HSTX peripheral can shoulder a real retro workload; for the pret ecosystem, it proves the decompilation's hardware-abstraction seams generalize to bare-metal MCU targets, not just WASM.

