BACCYFLAP.COM

"digitising" game boy
camera photographs

with the Somagic EasyCapture
for *buntu Linux
The Game Boy Camera was sold from 1998 to 2002. It's inserted into a Game Boy and it takes monochrome pictures in the four-shade palette of the original Game Boy. The pictures are 128 by 112 pixels. Lo-fi goodness for those who are into that sort of thing!

The camera holds only 30 pictures, so you get about a 35mm film roll's worth of tiny pictures before they have to be offloaded somewhere... which is no mean feat. You can't just use a link cable and save them somewhere, you can't insert SD cards... so what do?

There are several very good solutions out there, the best perhaps being the BitBoy, which allows the user to save images pixel-for-pixel to an SD card by using the print function originally intended for the Game Boy Printer accessory. But as that device is a bit too pricey for lowlifes such as ourselves, we use a more complicated and imperfect pipeline to capture images:

hardware

If you're a combination of patient and lucky, those various physical parts will set you back only a modest amount of money - eBay is a good place to get all of this stuff. You can be all set for less than 40 US dollars.

Here's how it's going to work: you'll insert the GBC into the SGB and the SGB into the SNES. You'll then attach the SNES to the capture card and the capture card to your PC.

schematic of Game Boy Camera going into Super Game Boy, Super Game Boy going into SNES, SNES being attached to capture card and capture card being plugged into PC

Like this (it'll look a bit different for North America, where a redesigned SNES and SGB were sold). Keep in mind you'll need a SNES controller to use the camera and open the pictures in it.

software

To make things super easy for you, I've made a cheeky little zip file that you can unpack, and after running a few lines of codes, you'll be good to go.

download software

for Ubuntu, 846 kB
Download that or download the required files from the links above and then do this:

  1. unpack the zip file.
  2. open a terminal and navigate to the unpacked directory:
    cd Easycap-master
  3. install firmware:
    sudo cp ./somagic_firmware.bin /lib/firmware/somagic_firmware.bin
  4. install dependencies as follows:
    sudo apt install gcc make libgcrypt20* libusb-1.0-0 libusb-1.0-0-dev debhelper devscripts
  5. install more dependencies from included DEB files:
    sudo dpkg -i multiarch-support_2.29-0ubuntu2_i386.deb
    sudo dpkg -i libgcrypt11_1.5.3-2ubuntu4_i386.deb
    sudo dpkg -i libgcrypt11-dev_1.5.4-3+really1.8.4-3ubuntu1_i386.deb
  6. now install the capture software:
    cd somagic-easycap_1.1
    make && sudo make install
    it may complain about some stuff; pay it no mind.

capturing

First attach your SNES with SGB and GBC to a television to make sure it all works. It may take some blowing into cartridges and contact cleaning to get it all running. Once you're sure it does all work, hook up the SNES to your capture card and your capture card to the PC, turn on the SNES and then run:
somagic-init
It should return nothing if it works. If it tells you the device isn't hooked up, try reconnecting, try different USB ports, et cetera.

Now you can view the video stream in VLC Media Player:

sudo somagic-capture --cvbs-input=1 --pal | vlc --demux rawvid --rawvid-fps 30 --rawvid-width 720 --rawvid-height 576 --rawvid-chroma=UYVY -
Change --pal to --ntsc or --secam depending on the colour system used in your region. Look at that, you're playing Nintendo on your computer! If it doesn't work, try turning the SNES off and on, or re-initialising the stream.

Once the GBC has booted up, use the controller to select 'SHOOT' and then 'CHECK'. This allows you to view your photos.

screenshot of direct feed from Super Nintendo, showing a picture of someone playing a guitar

As these pictures are monochrome and the SGB has some colour emulation settings, if your pictures appear in colour, press START+SELECT simultaneously and repeat until the display is black and white. Look here for a complete guide to the SGB.

Select a photo, wait a second for the little cursor at the bottom to disappear, and then hit Shift+S on your keyboard to take a screenshot. Go to the next picture, wait, hit Shift+S. Keep doing this until you've screenshotted all of your pictures. VLC usually saves them to your home directory.

fixing your photos

The pictures look bad and they need cropping. If we were dumb, we'd now take every individual image and edit it in GIMP to crop, stretch and level them - but we're not dumb, we're smart. So we place all of the images in a folder, open up a terminal, navigate to the directory with cd, and run this:
ls | cat -n | while read n f; do mv "$f" `printf "%03d.png" $n`; done
Which changes the filenames to a numbered list. No real reason for this other than neatness. Now for the real magic:

mkdir out | for f in *.png; do convert $f -crop 325x225+192+167 +repage -grayscale rec709luma -resize 325x281\! -level 15%,97%,1.6 -unsharp 0x2.75x0.5x0.0015686 out/$f; done
Look, a folder called out has appeared! And what's more, it contains beautiful, sharp, correctly proportioned Game Boy Camera images! A wonder of computing.

cropped, stretched and leveled game boy camera picture of someone playing a guitarcropped, stretched and leveled game boy camera picture of the author's facecropped, stretched and leveled game boy camera picture of a human face

And that's it, friend. It isn't pixel perfect and the process is a bit messy what with analog signals and dodgy capture cards, but it gets the job done. Enjoy!