Selected Work
EmbeddedGraphicsHardware

The M0+rix: Segfaulted - Fullstack Embedded Game Console

20 FPS bare-metal 3D game engine on a custom PCB with 128 KB flash and 32 KB RAM

CARM M0+ AssemblyKiCadSPIUARTBare MetalTM4C123 (ARM Cortex-M4)Custom PCBST7735 displayCustom enclosure
The M0+rix: Segfaulted - Fullstack Embedded Game Console
Role
graphics engine · PCB design · asset pipeline
Timeline
Mar 2025 - May 2025
Context
Course project · with Elijah Silguero
Stack
C · ARM M0+ Assembly · KiCad · SPI

Overview

A fully bare-metal real-time game console, hardware and software, built with Elijah Silguero. We designed the custom PCB and enclosure, then wrote a 3D game engine that renders at 20 FPS using interrupts and SPI, all within the tight constraints of 128 KB flash and 32 KB RAM.

The Problem

A game console is a full stack in miniature: a board to design and fab, a display and inputs to drive, and a renderer fast enough to feel like a game, all on a microcontroller with kilobytes of memory and no operating system underneath. Rather than target a dev board, we designed our own hardware from the schematic up and wrote every layer of the engine bare metal against it.

What We Did

Custom PCB & enclosure

Designed a custom PCB in KiCad integrating graphics, audio, communication, and user input, plus a custom 3D-printed enclosure to house it.

Bare-metal 3D graphics engine

A 20 FPS 3D graphics engine in C, driving an ST7735 display over SPI with interrupt-driven rendering, no OS, no framework.

Dual-board communication

UART-based inter-board communication links a second board so additional peripherals run without starving the render loop.

Asset pipeline

Built an asset-processing pipeline that converts image and audio data into formats fitting within 128 KB flash and 32 KB RAM.

Demo

The full console running, from boot to gameplay.

Gallery

Both finished consoles.
Both finished consoles.
The custom PCB laid out in KiCad.
The custom PCB laid out in KiCad.
Running with the case off, PCB exposed.
Running with the case off, PCB exposed.
Enclosure CAD design.
Enclosure CAD design.
Enclosure CAD, alternate view.
Enclosure CAD, alternate view.

Results

  • A 20 FPS 3D game engine running fully bare metal on a self-designed PCB, within 128 KB flash and 32 KB RAM.
  • End-to-end ownership of the stack: schematic and board layout, enclosure, engine, and asset pipeline.
  • Built with Elijah Silguero.