Feed on
Posts
Comments

GBCartRead is an Arduino based Gameboy Cartridge Reader which uses a Python script to interface with the Arduino. GBCartRead allows you to dump your ROM and 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.

Option 1 – Python program

1. Upload “GBCartRead_v1_5.ino” to the Arduino.
2. Download and install Python 3.2 (http://www.python.org/download/) and pySerial (http://pypi.python.org/pypi/pyserial)
3. Open up the “GBCartRead_v1_5_Python_Reader.py” script by right clicking it and selecting “Edit with IDLE”.
4. Change the ‘COM2′ serial port to the serial port that your Arduino is connected on. You can find this out from the Arduino software by going to Tools -> Serial port when the Arduino is plugged in
5. Press F5 to run the script.
6. A new window will appear, press 0 to Read the header, 1 to Dump the ROM, 2 to Backup your RAM or 3 to Load your RAM file. Hashes (#) will start printing every few seconds and a file called <gametitle>.gb or .sav will be created if you chose option 1 or 2. If you choose option 3, it will load the save from <gametitle>.sav.

Option 2 – C program

1. Upload “GBCartRead_v1_5.ino” to the Arduino.
2. Open config.ini and change the COM serial port number up the top to the serial port that your Arduino is connected on. You can find this out from the Arduino software by going to Tools -> Serial port when the Arduino is plugged in
3. Run “GBCartRead_v1_5_C_Reader” in Windows or re-compile the source for your OS
4. A new window will appear, press 0 to Read the header, 1 to Dump the ROM, 2 to Backup your RAM or 3 to Load your RAM file. Hashes (#) will start printing every few seconds and a file called <gametitle>.gb or .sav will be created if you chose option 1 or 2. If you choose option 3, it will load the save from <gametitle>.sav.

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.

 



Download

GBCartRead Github Repository

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

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
– 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:

Schematic

GBCartRead_Schematic_v1.4.2

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

Comments are closed.