Game Boy Camera Dumper

As previously mentioned, I finally got my Game Boy Camera up and running with the ability to transfer images to a computer. In this post I’ll outline the method I am now using to do that, which is an update from the first post.)

I put the code I am using on GitHub in a repository called Game Boy Camera Dumper. (I wasn’t sure if I should use the word “transfer” or “capture” instead of “dumper” but I’ve always been a fan of Perl’s Data::Dumper module, so that clinched it.)

You’ll need Python3 installed, along with the pySerial and argparse libraries. pip (The Python Package Installer) should get those installed easily enough.

Once you’re ready you type python3 /dev/tty.wchusbserialfa440 in the terminal (after you are in the right directory) and wait for the magic to happen… (And yeah, you don’t type /dev/tty.wchusbserialfa440 part unless that’s the USB port on your computer that your Arduino shows up as. On Windows it’ll be COM3 or something else, on Linux… if you use Linux you’ve probably got this part figured out already.)

The script will echo back the serial port you specified (yeah, I should add something more useful there in the way of feedback) and then wait for you to “print” the photo from the Game Boy.

You may also notice a new file appear. Our output file gbc-output.txt has been created, thought it’s still empty at this point.

So move over to your Game Boy Camera Unit and do the print thing! Send that data, and the Game Boy screen will show a “Transferring” image…

Here comes the data! You’ll see the data from the Game Boy/Arduino flowing into the terminal. It is also being saved to the gbc-output.txt file as well…

At some point the data will stop flowing. You can either end it here, or continue to “print” photos. The script will keep adding to the output file and easily hold all your images until you decide to stop. I usually transfer all of the photos on my Game Boy. (Though I don’t delete them all until I’m sure I’ve got them all safely on my computer.)

How do you end it? Hit Control-C to stop the script. It will end, the file is written to and closed, and you’re done. For now. (I should add that bit of instructions into the script.)

Here’s our output file. You’ll want to open it and copy the contents to the clipboard. (Or you can just cat gbc-output.txt | pbcopy on macOS.)

You can head over to the decoder (choose V1 or V2 depending on what firmware your Arduino is running) and then paste in the text you copied and translate all that text into beautiful low-resolution images! (And then save them.)

Because I try not to rely on anything that isn’t running on my own computers if I don’t have to, I run a copy of the decoder locally, and I’ve stripped it down a bit to just show me the essentials. (Big thanks to Brian for publishing and sharing his work.)

Oh, there is one more thing I do. I upscale the images to 1280 x 1152 using another Python script. I made it a drag ‘n drop application on macOS using Playtpus for ease of use. (The Python code is pretty simple, and you can see it here.)

That’s my process for now. In a discussion with another Game Boy Camera enthusiast I suggested that it might be possible to write a Processing application to dump the image data, display the image, and then save the image to disk, but I don’t know that it’s something I’ll take on anytime soon.


Game Boy Camera

I remember seeing people use a Game Boy Camera years ago, and with my interest in lo-fi tech (and probably spurred on by 8bitMKE) I ordered a Game Boy Camera for $11.97 on eBay almost two years ago (Hey, sometimes projects take a while.)

Last fall when my daughter moved out we found her old Game Boy Advance, and after a good five minutes of Tetris I popped the camera into it and took a few photos. But alas, with no way to transfer them out of the Game Boy, they were stuck there…

After some digging around I found some posts that mentioned using an Arduino to transfer the photos from the Game Boy to a computer. Arduino you say? That’s my jam! But even then it took some time before I did anything.

I finally got the cable I needed (a “Two Player Link Cable Cord for Nintendo Game Boy”) for $3.99 on eBay after first ordering the wrong cable, and I quickly grabbed an Arduino Nano, one of my breakout boards that was already soldered up, cut the cable in half, stripped the wires, grabbed a multimeter to figure out which was which, and got it all wired up.

The arduino-gameboy-printer-emulator repo on GitHub proved the most useful to me in getting this all set up.

The process to transfer involves connecting the Game Boy and “printing” the photo you want while the Arduino serial monitor is open and set 115200 baud. The data will flow into the serial monitor window, then you copy it and paste it into the decoder and you get your image.

While I’ve got a DSLR, a phone, a Raspberry Pi camera, and other ways to capture images, the Game Boy Camera is definitely one of the more esoteric methods of doing so. Stay tuned to see what I actually do with it.