thegian7 ~/catalog/…/badge-platformer$

Rust · RISC-V · Xous

Badge Platformer

A side-scrolling platformer that runs native on the DEF CON 34 badge — five levels, coins, patrolling enemies, lives, score, and a reactive light show on the onboard LEDs. Built in a day, at the con.

No emulator. No interpreter. No ROM. No VM.

What it actually is

An ordinary Xous process, not a cartridge.

Rust compiled to riscv32imac-unknown-xous-elf, running as a normal process out of the badge's swap region under the Xous microkernel. The badge is a bunnie Baochip-1x — RISC-V RV32IMAC, a 128×128 one-bit OLED, six buttons, ten addressable LEDs, and no sound hardware at all.

Every constraint became a decision

The hardware wrote most of the design document.

The badge gives youSo the game is
128×128 display, 1 bithand-drawn 8×8 mono sprites
no FPUfixed-point i32, 1/16 px
128px tall = 16 tilesno vertical scrolling at all
6 buttons, key-DOWN onlyheld keys via SetRepeat
10 LEDs on a coprocessorlight show, free of the CPU
no audio hardwaresilence
The interesting one is the third row. A 128px-tall screen is exactly 16 tiles, so there is no headroom for a camera to move vertically. Rather than fight it, every level is designed to be legible in a single vertical frame — the constraint became the level-design rule.

Why "no FPU" matters

Physics without floats.

Platformer movement is normally written in floating point — gravity, velocity, sub-pixel positioning. The RV32IMAC core has no floating-point unit, so all of it runs in fixed-point i32 at 1/16-pixel resolution. That gives sub-pixel motion precise enough for jump arcs and collision without ever touching a float, and it stays fast enough to hold frame rate on a microkernel process sharing the CPU.

← the catalog·thegian7