Feed on

GBCartRead is an Arduino based Gameboy Cartridge Reader which uses a C program or python script to interface with the Arduino. GBCartRead allows you to dump your ROM, save the RAM and write to the RAM.

How to use

Note: It is important to insert your Gameboy Cartridge before you plug in your Arduino as you may experience RAM data loss if you insert when the Arduino is on.

In brief:
– Upload GBCartRead to the Arduino, take note of the COM port
– Edit the COM port of the Python or C interface program and run the program

We recommended verifying your Gameboy ROM using “xgbfix.exe -v -d <your_rom.rom>” found in the project called “ASMotor” (we’ve included it). We also recommend verifying your save files too.


GBCartRead Github Repository

For Gameboy Cart Shield v1.3 only

v1.8 Rev 1 (28 May 2016) – GBCartRead_v1.8_Rev1
– Re-add checking for non-printable ASCII characters code that was removed when cleaning up code, changed to not print underscores but just leave those characters out
– Added custom cartridge files for Wisdom Tree games (thanks Benjamin E)

v1.8 (21 March 2016) – GBCartRead_v1.8
– Added Nintendo Logo check and compare so you can tell if the cartridge is being read correctly (sometimes the title was read ok but the ROM dump wasn’t correct)
– Added missing cartridge RAM support
– Cleaned up code

v1.7 Rev 2 (10 February 2016) – GBCartRead_v1.7_Rev2
– Added checking for non-printable ASCII characters in Gameboy header and replaced them with underscores

v1.7 Rev 1 (17 February 2015) – GBCartRead_v1.7_Rev1
– Fixed clockPin to change correct port – PB5 (thanks Anna)

See more revisions

v1.7 (7 February 2015) – GBCartRead_v1.7
– Added interrupt for button on A1 to switch P mosfet on A0 that powers the cartridge
– Changed at startup of the interfaces to not display the cartridge header information

v1.6 Rev 1 (17 February 2015) – GBCartRead_v1.6_Rev1
– Fixed clockPin to change correct port – PB5 (thanks Anna)

v1.6 (3 January 2015) – GBCartRead_v1.6
– Speed increase by using a higher baud rate (400Kbit from 57.6Kbit) and using hardware SPI (thanks David R)
– Changed SCK from pin 12 to pin 13 for SPI
– RAM writing speed increase by continually sending 64bytes data from PC and pausing for 5 ms in-between
(Compatible with GB Cart Shield v1.2 if you connect pins 12 and 13 together)

Normal version – for GBCartShield v1.2 or without GBCartShield

v1.5 (15 November 2014) – GBCartRead_v1.5
– Speed increases by using direct PORT writing/reading and sending 64bytes at a time (thanks Frode vdM. fvdm1992@yahoo.no)
– Compacting functions (thanks Frode vdM. fvdm1992@yahoo.no)
– Delays when pulsing WR/RD/MREQ pins reduced to a few NOP cycles

See more revisions

v1.4.2 (14 November 2014) – GBCartRead_v1.4.2
– Fixed gameTitle array length issue (thanks Frode vdM and David R)
– Added Gameboy Camera support (thanks Frode vdM)

v1.4.1 (3 January 2014) – GBCartRead_v1.4.1 / GBCartRead_v1.4.1_GUI
– Changed wrPin from pin 13 to A3 to suit Gameboy Cart Shield v1.2

v1.4 (30 August 2013) – GBCartRead_v1.4
– Added gbcartread.exe program for Windows (with source) which can be used instead of using the Python script and is a bit faster

v1.3.1 (2 May 2011) – GBCartRead_v1.3.1
– Updated schematic as R19, R20 and R31 were actually acting as voltage dividers

v1.3 (9 April 2011) – GBCartRead_v1.3
– Added RAM writing ability
– Fixed MBC2 reading RAM overflow relating to the first 4 bits not being ignored properly
– Cleaned up bank select code to use BitRead instead of checking each bit ourselves
– Fixed selecting wrong RAM size when reading
– Fixed incorrect check if RAM was present before reading
– Removed unnecessary changing of data pins to inputs after MBC was initialised when reading RAM

v1.2 (2 April 2011) – GBCartRead_v1.2
– Added RAM saving ability
– Now prints the amount of data read in 64K increments (i.e ###64K###128K###192K)
– Changed <gametitle>.rom to <gametitle>.gb

v1.1 (21 March 2011) – GBCartRead_v1.1
– ROM reading is now fully automated.
– The Game Title, MBC type, ROM size and RAM size are presented in the Python script.

v1.0 (19 March 2011) – GBCartRead_v1.0
– Reading ROM only, user to change the maximum ROM bank to read

Build your own

Option 1Build the Gameboy Cart Shield

Option 2 – Parts Required:



Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.

Comments are closed.