Analysis

Rust-Powered Handheld Game Console Runs on Tiny CH32V003 Chip

A nine-cent CH32V003 ran a Rust side-scroller at about 25 FPS, showing embedded Rust can work on hardware with just 2 KiB of RAM. Chris Dell got there by swapping floating-point math for fixed-point code.

Jamie Taylor··2 min read
Published
Listen to this article0:00 min
Share this article:
Rust-Powered Handheld Game Console Runs on Tiny CH32V003 Chip
AI-generated illustration
This article contains affiliate links, marked with a blue dot. We may earn a small commission at no extra cost to you.

A Rust side-scrolling game ran on a microcontroller that costs about nine cents in bulk, and it did so at a playable frame rate. Chris Dell’s handheld console is built around the WCH CH32V003, a tiny 32-bit RISC-V chip with just 2 KiB of RAM and 16 KiB of flash, yet the finished prototype delivered roughly 25 FPS on an SSD1306 OLED display.

Dell’s path to that result started on the desktop, not the bench. He first built the game engine with minifb, where he could tune gameplay logic without constantly flashing hardware. Once the core loop was stable, he moved the rendering layer to the microcontroller and found the first hard limit fast: the CH32V003 has no floating-point hardware. The original physics code crawled at about one frame per second, which made the problem obvious. Switching to fixed-point arithmetic turned the project from a proof of pain into a working handheld, lifting the improved prototype to around 30 FPS before map logic pulled it back to about 25 FPS.

That engineering choice matters because the chip itself is brutally constrained. WCH describes the CH32V003 as an industrial-grade general-purpose MCU based on the QingKe RISC-V2A core with a 48 MHz system clock, and its peripheral set includes DMA, ADC, timers, USART, I2C, and SPI. For a hobby project, that is a tiny canvas. Dell’s build shows how much can still fit when the software is disciplined, the graphics are simple, and the display, in this case an SSD1306 OLED, does some of the heavy lifting by preserving pixels instead of forcing a full framebuffer approach.

Prototype FPS
Data visualization chart

The project also lands at an important moment for the Rust ecosystem. Dell had already been experimenting with Embedded Rust on the ESP32 using Embassy and esp-hal before he turned to the CH32V003, and the rise of ch32-hal made the chip look reachable in Rust rather than exotic. The ch32-rs ecosystem now lists ch32-hal as a unified HAL with Embassy framework support, while ch32v00x-hal is an early-stage path for the CH32V003 family that requires nightly Rust for RV32EC support.

Dell’s repository makes the build practical, not just impressive. It identifies the project as a small side-scrolling game for the CH32V003 and SSD1306 OLED, and it includes simulator run instructions plus flashing steps for real hardware. That combination, cheap silicon, a modern language, and reproducible tooling, is the real takeaway: embedded Rust is no longer confined to expensive dev boards or lab setups.

Know something we missed? Have a correction or additional information?

Submit a Tip

Never miss a story.

Get Rust Programming updates weekly. The top stories delivered to your inbox.

Free forever · Unsubscribe anytime

Discussion

More Rust Programming News