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
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)