Prototype Cart

Prototype Cart

The Overdrive Cart is a flash cart for running homebrew games with a bunch of extra features for expanding the capabilities of the Virtual Boy.

This is a work in progress.

Features

  • Flash cart with support for up to 128 megabit (16 megabyte) roms, which is the max supported by the Virtual Boy address space
  • Wireless internet connectivity
  • Built-in dashboard to manage, download and run games, provide matchmaking for supported games, and other such things typically found on a modern game console
  • Support for save game cloud syncing
  • Support for “Overdrive Games” — games that leverage the more powerful hardware hiding within the cartridge.
  • Support for “enhanced” games — games that run on the standard VB hardware but can take advantage of expanded capabilities if the overdrive cart is detected (such as internet play)
  • Debug tools for homebrew development, such as:
    • One-click ROM flashing
    • Streaming I/O for outputting debug data to the development machine (or injecting debug data the other way)
    • Profiling
    • Tracing
    • Trapping

Approach

PCB Diagram

PCB Diagram

At a high level, I am basically going to hide a Raspberry Pi Zero 2 W in the cartridge and have it behave like a VB cartridge whose contents is always changing. The concept is simple enough (some might even say boring), but actually getting there has been sufficiently challenging.

So, why use a Raspberry Pi Zero 2 W?

  • It fits in the VB cartridge (it’s tight, but it does fit)
  • It has Wifi
  • It has just enough GPIO pins to do what we need
  • It has a graphics accelerator (for “overdrive” games)
  • It is inexpensive (one of the least expensive parts required for the build, actually)
  • It is low-power enough that it can be powered by the cartridge pins without needing an external supply

Project Status

I have prototype hardware that can:

  • Flash ROMS using a command-line program
  • Stream data into and out of the ROM that is executing
  • Output profiling data
  • Run “overdrive” games, including passing controller input back to the overdrive program

What’s still missing:

  • Support for sound originating from the VB’s VSU (currently output from the SBC is supported though)
  • An “operating system” that allows you to do tasks using the VB’s controller, such as loading or finding new homebrew, managing saves, connecting to the internet, etc.
  • Server support for internet play and cloud game saves
  • Proper client libraries for internet play and other such enhancements so that games other than my own can make use of these capabilities
  • A housing for the cartridge (currently it’s just a PCB hanging out of the VB)

Gallery

Hardware

PCIE to VB Adapter. Prevents having to use a donor cart for every revision.

PCIE to VB Adapter. Prevents having to use a donor cart for every revision.

Raspberry Pi Zero 2 connection

Raspberry Pi Zero 2 connection

Demos

Command-line flashing

“Overdrive” application, using coprocessor rendering

   

Discussion