Read a 32K Game Boy cartridge
Posted: Sun Jul 11, 2021 12:19 am
I found a Tetris Game Boy cartridge PCB on the street. After some false starts (either due to a faulty GPIO or a faulty breadboard connection), it turns out to be super-easy to read a 32K cart with a black or blue pill. Cartridge pinout is here: https://dhole.github.io/post/gameboy_cartridge_emu_1/
For this cart, CLK, WR, RESET and AUDIO were not connected to anything, so I ignored them. Since it's only 32K, you can ground A15. Since you're not writing data or switching banks, you can ground RD. Ground GND. Then connect D0-D7 to some pins on the pill, ideally 5V-tolerant ones (so you can run at 5V if necessary). Connect VCC to 3.3V, but if that fails, go for 5V (3.3V worked fro me). Here is a little sketch that reads the data. I then just copied the data from the Arduino serial monitor into the input of a Python script that turned it into binary.
I didn't have any a cartridge connector, so I just stuffed jumpers into plated through holes on the PCB, and used test clips for two lines (VCC and RD) that didn't have through holes. It's a mess, but the checksum checks out and the game works in an emulator. This was quick and dirty. (If one really wanted to do a nice job, one could use the USB Composite library to emulate a small flash drive and make the cartridge appear ike a file on it.)

For this cart, CLK, WR, RESET and AUDIO were not connected to anything, so I ignored them. Since it's only 32K, you can ground A15. Since you're not writing data or switching banks, you can ground RD. Ground GND. Then connect D0-D7 to some pins on the pill, ideally 5V-tolerant ones (so you can run at 5V if necessary). Connect VCC to 3.3V, but if that fails, go for 5V (3.3V worked fro me). Here is a little sketch that reads the data. I then just copied the data from the Arduino serial monitor into the input of a Python script that turned it into binary.
I didn't have any a cartridge connector, so I just stuffed jumpers into plated through holes on the PCB, and used test clips for two lines (VCC and RD) that didn't have through holes. It's a mess, but the checksum checks out and the game works in an emulator. This was quick and dirty. (If one really wanted to do a nice job, one could use the USB Composite library to emulate a small flash drive and make the cartridge appear ike a file on it.)