projects/2025

EVMU Watch

A Sega Dreamcast VMU emulator running on an Apple Watch.

  • Swift
  • watchOS
  • SpriteKit
  • C
A Dreamcast VMU game running on an Apple Watch

The VMU was the Dreamcast's memory card: a tiny device with its own CPU, a 48×32 LCD and a handful of buttons, which could run small games on its own. EVMU Watch wraps the C-based EVMU emulation core in a native watchOS app written in Swift, so those games run on your wrist.

Highlights

  • Rendering: each VMU pixel is a SpriteKit node at 3× scale, with an LCD ghosting effect. The scene only redraws when the display actually changes, which matters on a watch’s thermal budget.
  • Input: tap regions for the D-pad and face buttons, and velocity-thresholded pans for sleep and mode, all feeding an input queue that’s drained on the emulator’s clock rather than the UI’s.
  • C/Swift bridge: the emulator core stays in C, and memory is managed carefully around objects that ARC doesn’t know about.
  • Features: ROM selection, colour palettes and save-state management.

ROM selection

Next up is a rewrite on Gimbalsaurus, my Objective-C bindings for libgimbal.