Low-level systems
Plants vs. Zombies — Bare-Metal ARM Engine
2023A full PvZ game rendered straight to a raw framebuffer — no graphics library, on an ARM SoC.
- C++
- ARM
- raw framebuffer
- software rasterizer
- collision detection
- graphics stack
- zero libraries
- target
- bare-metal ARM
/ the problem
Build a real-time game with nothing underneath you — no OS graphics stack, no SDL, no OpenGL. On a bare-metal ARM target you own everything from the pixel buffer up: drawing, sprites, collision, and frame timing.
/ approach
- Rendered the entire game to a raw memory-mapped framebuffer — every sprite blitted pixel-by-pixel with a hand-written software rasterizer
- Tile grid, plants, projectiles, and zombies drawn with transparency/masking, no graphics library involved
- Collision detection between plants, projectiles, and zombies driving the game state
- Input handling and a game loop with manual frame pacing on the ARM SoC
/ results
- A playable Plants vs. Zombies clone running on bare-metal ARM, rendered straight to the framebuffer
- Full plant / projectile / zombie systems with win-and-lose game states
/ architecture
Input
game loop (state machine, collision)
software rasterizer
memory-mapped framebuffer
display.