Pokémon Emerald ported to the RP2350 microcontroller. No emulator, 60 fps HDMI output. Recompiled from ARMv4T to Cortex-M33 and the Game Boy Advance's video hardware is reimplement…

Pokémon Emerald running natively on a $6 microcontroller — full game, 60 fps, HDMI out, real buttons, saves that survive a power cycle. No emulator: the pret decompilation is recompiled from ARMv4T to Cortex-M33 and the Game Boy Advance's video hardware is reimplemented in software on the second core. Target board is a WeAct Studio Core2350B (RP2350B, 16 MB QSPI flash). The whole game — code, graphics, maps, music — is an 11.7 MB image executed in place from flash. Playable start to finish as far as it has been tested — boots, plays the intro, starts a new game, walks the overworld, battles, and saves. Every scene holds a locked 60 fps except the OBJ-window intro cinematic. It is not a finished product; see Limitations. See docs/HARDWARE.md for the full pinout, bill of materials, and wiring notes. In brief: an RP2350B board, an HSTX-to-HDMI breakout wired in the Pico DVI Sock pin order, ten buttons to ground, and optionally a PCM5102A I²S DAC for sound. See docs/BUILD.md for prerequisites and the full procedure. The short version, from the repo root: rp2350/hw/CMakeLists.txt also builds standalone bring-up targets that were used to validate each subsystem on silicon before integration, and which are the fastest way to debug a new board: hstx_test (colour bars), psram_test, i2s_test (440 Hz sine), display_test, ppu_display_test, emerald_hwtest. The full engineering log — every phase, the measurements that made the go/no-go call, and the bugs that cost the most time — is in docs/PORTING.md. The short story: It piggybacks on a WASM port. tripplyons/pokeemerald-wasm had already fenced every dependency on real GBA hardware behind #if WASM. Reusing those seams as #if WASM || RP2350 meant the de-hardwaring work was already done; this port only had to add the MCU-specific half.