ROM Dumper

Content is old and unmaintained.

Making a ROM Dumper for the NES:

For my first project I am going to try and dump the cartridge
‘Duck Hunt’ for the reason that it has no MMC’s and has no security
screws on the back. The first step in making a dumper is to look at
the pinout of the cartridges:

Cart Pinout:

------------

                             Top           Bottom

                         ----------------------------                                  +-------+

                              GND |01   37| CLK 21.47727Mhz (NTSC)
                          PRG A11 |02   38| M2
                          PRG A10 |03   39| PRG A12
                           PRG A9 |04   40| PRG A13
                           PRG A8 |05   41| PRG A14
                           PRG A7 |06   42| PRG D7
                           PRG A6 |07   43| PRG D6
                           PRG A5 |08   44| PRG D5
                           PRG A4 |09   45| PRG D4
                           PRG A3 |10   46| PRG D3
                           PRG A2 |11   47| PRG D2
                           PRG A1 |12   48| PRG D1
                           PRG A0 |13   49| PRG D0
                          PRG R/W |14   50| PRG /CE (/A15 & /M2)
                             /IRQ |15   51| EXP 9
                            EXP 0 |16   52| EXP 8
                            EXP 1 |17   53| EXP 7
                            EXP 2 |18   54| EXP 6
                            EXP 3 |19   55| EXP 5
                            EXP 4 |20   56| CHR /WR
                          CHR /RD |21   57| CIRAM /CE
                        CIRAM A10 |22   58| CHR A13
                           CHR A6 |23   59| CHR A7
                           CHR A5 |24   60| CHR A8
                           CHR A4 |25   61| CHR A9
                           CHR A3 |26   62| CHR A11
                           CHR A2 |27   63| CHR A10
                           CHR A1 |28   64| CHR A12
                           CHR A0 |29   65| CHR /A13
                           CHR D0 |30   66| CHR D7
                           CHR D1 |31   67| CHR D6
                           CHR D2 |32   68| CHR D5
                           CHR D3 |33   69| CHR D4
                         SECURITY |34   70| SECURITY
                         SECURITY |35   71| SECURITY
                              +5V |36   72| GND
                                  +-------+
                             Cartridge Connector

There are 2 chips on the cartridge which contain information that we want to dump from, the CHR and the PRG. The CHR being the character ROM and the PRG being the program ROM. Now lets take a closer look the CHR and the PRG ROM:

CHR ROM:

On the cartridge pinout we can see that there are 13 address lines, CHR A0-A12, meaning it can address upto 8K of memory, (2^13).
There are also 8 data out lines, CHR D0-D7. This is where we would receive the data from and dump it to a binary file.

PRG ROM:

The PRG has 15 address lines, PRG A0-A14, meaning that it can address upto 32k of memory, (2^15).
There are also 8 data out lines, PRG D0-D7. This is where we would receive the data from and dump it to a binary file.

Only 32k + 8k addressable?

The NES cartridge uses MMC’s to get around this hardware limit, memory mappers, these address different pages of memory when required. I am not going to look into this yet. Maybe later.

A closer look at the duck hunt Cartridge

Cart.jpg

 

The Duck Hunt Cartridge itself, now to
open it!

Openedcart.jpg

The opened cartridge, lots of free space!

closeupcart.jpg

Close up of the chips…From the left, Security chip, CHR Chip, PRG chip

Making the Schematic

I believe that the only lines we are going to need are the following:

  • CHR ROM, A0-A12, D0-D7 – 21 Lines

  • PRG ROM, A0-A14, D0-D7 – 23 Lines

  • +5v

  • Ground

Ok, to dump the CHR ROM or the PRG ROM, i will need to request a memory address, read the value off the data out lines and put it in a file, then read the next address and do the same until I get to the end of the addresses. I intend to use a serial port to communicate with the computer as it is a lot simpler to design. I now need to sort out the demultiplexors for the circuit.

Leave a Reply