Using A Logic Analyzer To Generate Screenshots From A Game Boy

Wouldn’t you like to go back to a dead handheld and extract the proof of your 90s-era high scores? Of course you would.

[svendahlstrand] bought his first logic analyzer, a Logic 8 from Saleae and decided to play around with an old Game Boy. He opened up the handheld with a tri-point screwdriver and hooked six wires up to the LCD data bus, generating screen shots from the logged data. He got screens from Solomon’s Club, Mole Mania, Kid Dracula, and more.

The first few attempts were fraught with mishap as [sven] worked to figure out the settings of his new analyzer. In one instance he had the DATA 0 and DATA 1 signals reversed, also reversing two of the gray values. After figuring it out he posted his LCD sniffing tutorial to GitHub, where he also has a C program for manually piecing together the screen shots, pixel by pixel.

Thanks to [sven] for posting this project to our recent Everything You Need to Know About Logic Probes post.



9 thoughts on “Using A Logic Analyzer To Generate Screenshots From A Game Boy

  1. @svendahlstrand – Thanks for the well written article. A very practical example written in an easy to understand way, looking forward to you next doing this real-time and outputting via HDMI (FPGA maybe?)

    1. Or mono composite (maybe customization output color including original pea soup green) so one could take a working GB with bad screen and/or bad body and rebuild it into a new portable GB system with bigger screen. Old GB LCD was nice back in the day but they do suffer serious motion blur and are dependent on external light while modern $5 LCD from China doesn’t show motion blur and has built in backlight.

      1. Certainly doable, I did this myself a year or two ago for the Arduino-based “Gamebuino” handheld console so I could play the games on a regular TV. The Gamebuino communicates with its PCD8544 over the SPI bus, which also happens to be conveniently exposed externally so that the ATMEGA328P can be programmed with a hardware programmer. All I needed to do was sniff the raw LCD packets on this port and generate a composite video signal from them. Timing was extremely tight on that particular implementation because I was using an Arduino Uno (ergo the port had to be polled simultaneously to the PAL signal generation), but even a very low-level FPGA would have made the whole task much easier.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.