Virtual Boy Cartridge Programmer

Originally: April 8th, 2018
Last Updated: July 22nd, 2018

This has been a really interested project that evolved slightly over its development. Below is a linear progression of that involvement. I did the electrical, firmware, and mechanical design for this entire project and I’m quite proud of how it turned out. The main new skill I learned for this project was much more elaborate chassis design in TinkerCad. Read on for more details!

I originally built an adapter PCB to plug VB carts into an EETools ChipMax 2 reader/writer. That didn’t work out so well because the ChipMax 2 cannot tolerate much more line delay then its already has. I’ve since then also had additional problems programming the flash chips I use for VB cartridges using a newer ChipMax 2. There seems to be some compatibility issues with ChipMax 2 based on computer operating systems and the older flash chips I use. Shown below is my original ChipMax 2 VB cart adapter. I’ve used the ChipMax 2 for several years to program my 16Mbit chips but its now time to move on.

Rather than continue to struggle with Chipmax 2 issues, I decided to build my own VB specific programmer based on an Arduino Mega2560 R3 board. I’ve built my own EEPROM programmers in the past so I knew it wasn’t that difficult to do. That led to the build of a VB cartridge adapter PCB, or shield, that plugs into a Arduino Mega2560 R3 board to create a fully featured VB cart programmer.

VB Cart Programmer

The programmer shown in the picture above has been modified to support an SD card and an LCD so there are a few jumper wires now. It can dump any current VB game as well as program my 16Mbit custom VB cart. My 128Mbit custom VB cart is also now supported! This also gives me the ability to have the cart PCBs pre-assembled and then programmed after assembly with any file I choose. Now I don’t have to hand build carts which is super convenient!

My VB programmer has the ability to write both the flash space and SRAM space, as well as dump both of those to the SD card. Files that you want to program with are placed on the SD card and then can be selected to upload to the cart.

Erase, Blank Check, Read, Write, and Verify are all implemented for both Flash and RAM. This means save states for games can also be downloaded and saved offline. Below is a screenshot of an animated percent complete bar to show progress during any of the major operations.

VB programming complete

Just for fun I’ve also designed and implemented a very simple animation at boot-up of a Virtual Boy character walking across the screen. You can see the intro video below.

Here’s a close up GIF of the animation that’s easier to see. I originally had issues with display smear and animating the feet but have since fixed it. I’ll upload the animation with moving feet when I have time.

This same character appears at the end of some program operations as shown below.

The user interface to the programmer is currently an ASCII based interface through a terminal program like RealTerm. It’s fairly easy to use. Operations are performed by issuing ASCII readable messages to the programmer surrounded by brackets <>. Below is a picture of the bootup messages and the initial ID of one of my 16Mbit carts. Then I’ve issued a command, which is print menu. The menu shows all the current operations capable. Most are the standard programming commands like read, write, verify, blank check but some are for debugging. The programmer connects to the terminal program using a virtual COM port at 500,000 baud and settings of 8,N,1, and no parity.

I have my enclosure design v0 done as well. Going for a very unique mini Virtual Boy enclosure. My initial design is shown below. I’m working on a rev 1 version now.

Here’s a few images of the first test print. Came out better than I hoped in colored PLA material via a FDM 3D print.

And a back view.

The first fully working assembled unit is shown below. This is a REV3 print and build. I’m updating again just to make assembly a little bit easier. The vendor also switched to a new red filament which doesn’t print as detailed or nice so I’ll be switching back to the original material for this next batch. The next REV4 test print is being printed now.

I even made some themed labels for the reprogrammble carts that go with the programmer. These contain my 16/128/256 Mbit custom carts.

And a photo shoot with its older brother!

I’ll most likely build a hand full of them (10 or so) and even give a few to some of the VB homebrew game developers out there. Then its on to the next project! If you have any interest in this project, feel free to send me a message via my contact us page. Thanks!