NES Reproduction Board Guide – Basic

Please look at the main entry for more information on how to prepare the ROM file!

Here’s a quick guide on how to populate my custom designed NES reproduction PCB. This is the “Basic” version that supports NROM, CNROM, AxROM, and UxROM games.

Front Side

PRG ROM Chip

Needed for: All game types
Part Number: EPROMs: 27C256, 27C512, 27C010, 27C020, 27C040, 27C080; Flash memory: 39SF010, 39SF020, 39SF040
Function: Holds the Program ROM file. This goes in the socket labelled “PRG”.
How to Program: Check the reproduction article for information (Steps 1, 3, and 4)

CHR ROM Chip

Needed for: NROM, CNROM
Part Number: EPROMs: 27C256, 27C512, 27C010, 27C020, 27C040, 27C080; Flash memory: 39SF010, 39SF020, 39SF040
Function: Holds the Character ROM file (sprite data). This goes in the socket labelled “CHR”.
How to Program: Check the reproduction article for information (Steps 1, 3, and 4)

CHR RAM Chip

Needed for: AxROM, UxROM
Part Number: 6264 series
Function: Holds the ROM’s sprite data. This goes in the socket labelled “CHR”.

74HC161 – Binary Counter

Needed for: AxROM, UxROM, CNROM
Part Number: 74HC161, 74HCT161, or 74LS161
Function: Used by some board types to expand ROM data access to higher banks.

74HC32 – Or Gates

Needed for: UxROM
Part Number: 74HC32, 74HCT32, 74LS32
Function: Used by UxROM to expand ROM data access to higher banks.

74HC02 – Inverters

Needed for: AxROM
Part Number: 74HC02, 74HCT02, 74LS02
Function: Used on some AxROM games to prevent bus conflicts.

CIC

Needed for: All game types (unless using a top-loader NES, CIC modded NES, or clone console)
Part Number: Original CIC, or programmed ATTiny13 (instructions for programming detailed below)
Function: Completes the region check and allows the game to run on the console.

C1 – Electrolytic Capacitor

Needed for: All game types
Value: ~22 uF, at least 10 V rated
Function: Smooths out supply voltage for the board due to transients on the power supply, prevents quick changes in supply voltage when power is turned off.

C2, C3, C4 – Ceramic Capacitors

Needed for: All game types
Value: ~0.1 uF, at least 10 V rated
Function: 
Filters out high-frequency noise that can interrupt the EPROMs, RAM, and CIC.

C5 – Ceramic Capacitor

Needed for: UxROM
Value: ~0.1 uF, at least 10 V rated
Function: 
Filters out high-frequency noise that can interrupt the 74HC32.

C6 – Ceramic Capacitor

Needed for: CNROM, AxROM, UxROM
Value: ~0.1 uF, at least 10 V rated
Function: 
Filters out high-frequency noise that can interrupt the 74HC161.

ROM/RAM Solder Pads

Solder the middle pads to either the left or right pads for either CHR ROM or CHR RAM. If you’re using NROM or CNROM, solder in the ROM direction. AxROM and UxROM require bridging pads in the RAM direction.

H/V Solder Pads

This is to set the mirroring mode for your game. Solder the middle pad to either H (horizontal) or V (vertical). This will vary from game to game. If you make a game, and the graphics are all screwed up, try soldering the other set of pads – this will often fix the problem.

Back Side

Solder Pads

Solder the pairs of pads together for your indicated board type. Make sure to solder all sets of pads, and make sure only one set is soldered at a time! Example of this can be seen below for a CNROM or NROM game type on an older revision of the board:

Note that version 2.4 and later have combined the NROM and CNROM pads to the same group. So you will be bridging the same pads for either NROM and CNROM games.

28-Pin Solder Pad

If you use a 28-pin EPROM (27C256, 27C512) for your PRG ROM, then bridge these solder pads to enable them for use.

Programming the CIC

The CIC clone by krikzz uses the ATtiny13 microcontroller. You need an AVR programmer to properly load the program into the chip. You can use the GQ-4×4 or the TL866.

In order to program the ATtiny13, first load up the chip in the programmer, and load the code found here (I could not find the original file uploaded on kirkzz’s website, but you should still check out his stuff). Make sure you load the .hex file, and load it in as a .hex file. The ASCII code on line 0x380 should read “krikzz was here!” – that’s how you know it loaded correctly.

If you’re using the GQ-4×4, first write the software to the chip, and then set the config bits – so program the chip first. If you’re using the TL866, you can write the code and the config bits at the same time. To set the config bits, hit “CFG” for the GQ-4×4, or the “Config” tab on the right of the screen for the TL866. Then, set the bits like this:

Hit “Write” for the GQ, or program the chip on the TL866, and then you should be good to go!

When you put it into a cartridge and load it on the NES, you will probably need to hit the reset button five to ten times to get it to recognize the region of the NES you’re using. If you happen to use the cart in another region NES, just do this reset process again to reset the region correctly.

Special Cases for v1.2

For 27C256, 27C512, or other 28-pin ROMs

There is an oversight on older boards when using 28-pin ROM devices. For the PRG ROM socket, you need to bridge socket pin 30 and 31 together. See the picture below for what this looks like.

For Select AOROM games

Some AOROM games have issues with bus conflicts. I have only found a small handful of games that exhibit this behavior – if you are unsure if that is a problem for you, contact me and I will help you out!

To get rid of this error, there is a very simple fix you can do. We need to invert the CPU_R/W line from the NES cartridge connector, and run that to the unused /OE pin on the PRG ROM. To do this, all you need is an NPN transistor (2N2222 series seems to work best), a 1 kΩ resistor, and a 10 kΩ resistor (in a pinch, you can use two 1 kΩ instead). Lift up pin 24 on the PRG ROM chip, so that it sticks out of the socket. Then, wire up the transistor as follows (RB = 10 kΩ, RC = 1 kΩ):

CPU_R/W in the diagram can be accessed by soldering to pin 9 on the 74HC161 chip. The /CPU_R/W net (the inverse of the CPU_R/W) should be connected to the lifted pin 24 on the PRG ROM. It should look something like this:

One thought on “NES Reproduction Board Guide – Basic

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s