Console32 is an open-source retro gaming handheld — a Game Boy Advance-shaped device running original games written in Rust or C.

There's no operating system. No heap allocation. No runtime. Your game compiles to a .c32 binary, gets loaded onto the device via USB, and runs directly on the metal. The same code also compiles to WebAssembly, so you can test and share your game in a browser without touching hardware.

Why build a games console?

The short answer: because the platforms I admired — Playdate, Arduboy, PICO-8 — showed me that constrained hardware is a feature, not a limitation. When you can't brute-force your way to a solution, the games that emerge are more creative, more focused, and more personal.

The longer answer involves an MEng in integrated mechanical and electrical engineering, 8 years of writing C professionally, a growing conviction that Rust is the right language for this kind of work, and a stubborn desire to see whether one person can ship a real product.

What's working so far

  • Hardware platform chosen: RP2350B (dual-core Cortex-M33), ST7789V IPS LCD at 320×240, 12-button layout, USB-C
  • SDK architecture designed: A Game trait with init/update/render callbacks, runtime API injection (inspired by Playdate), and a macro that contains all unsafe so game developers never touch it
  • WASM emulator running: Snake is playable in the browser right now, compiled from the same source as the hardware target
  • Stable ABI from day one: Indexed vtable design means games compiled today will work on future firmware updates

What's next

Hardware validation on real silicon, a second playable game, and this blog — where I'll be documenting the technical decisions, dead ends, and everything in between.

If any of this interests you, sign up for updates. Low-frequency emails, no spam.