Please look at the main entry for more information on how to prepare the ROM file!
Here’s a guide on how to populate my custom designed NES reproduction PCB that can make MMC1 or MMC3 games. This board supports most MMC1 games with the SxROM board name, as well as most MMC3 games with the TxROM board name (where the lowercase ‘x’ is a stand-in for other board types). This means you can make games that use boards like SLROM, SNROM, TLROM, TGROM, etc. Check out the Nesdev wiki entry on SxROM games here and TxROM games here. The board utilizes the AX5904 to imitate the MMC1 mapper, or the AX5202 to imitate the MMC3 mapper.
Here is a table of the various SxROM and TxROM boards and their required hardware. Note that a few board types are not supported: SOROM, SXROM, SZROM, TQROM, TR1ROM, and TVROM. Fortunately, these board types are used by only a handful of games.

I’ll break down the different parts used for each kind of game here. Some ways you can find information about the game you want to make include using a tool like FamiROM, or possibly by looking it up on NesCartDB.
Front Side Components

PRG ROM
Needed for: All games
Part Number: EPROMs: 27C010, 27C020, 27C040, 27C080; Flash memory: 39SF010, 39SF020, 39SF040
Function: Holds the Program ROM file. This is placed in the socket marked PRG.
How to Program: Check the reproduction article for information (Steps 1, 3, and 4)
CHR ROM
Needed for: Many SxROM and TxROM games – check above table for board type list (or by using another tool)
Part Number: EPROMs: 27C010, 27C020, 27C040, 27C080; Flash memory: 39SF010, 39SF020, 39SF040
Function: Holds the Character ROM file (sprite data). This is placed in the socket marked CHR.
How to Program: Check the reproduction article for information (Steps 1, 3, and 4)
CHR SRAM
Needed for: Some SxROM and TxROM games – check above table for board type list (or by using another tool)
Part Number: 6264 series
Function: Holds the ROM’s sprite data. This is placed in the socket marked CHR.
PRG RAM (WRAM)
Needed for: Some SxROM and TxROM games (including all games that save data) – check above table for board type list (or by using another tool)
Part Number: 6264 series
Function: Used for normal operation of some games, and/or holds save data. This is placed in the socket marked WRAM. Note that some games use WRAM without utilizing save functionality.
CIC
Needed for: All games (unless using a top-loader NES, modded NES, or clone console)
Part Number: Original CIC, or programmed ATTiny13 (instructions for programming provided below)
Function: Completes the region check and allows the game to run on the console.
MMC1 – Mapper
Needed for: All SxROM games
Part Number: AX5904
Function: Used by the NES for memory management, allowing for increased memory size and features. Note that the AX5904 is not the original MMC1 chip, it is a clone chip that acts as a replacement for the MMC1 which is a proprietary chip designed by Nintendo. Many sources of AX5904 chips have been known to provide faulty parts from time to time, however any that I provide for purchase have been tested.
MMC3 – Mapper
Needed for: All TxROM games
Part Number: AX5202
Function: Used by the NES for memory management, allowing for increased memory size and features. Note that the AX5202 is not the original MMC3 chip, it is a clone chip that acts as a replacement for the MMC3 which is a proprietary chip designed by Nintendo. Many sources of AX5202 chips have been known to provide faulty parts from time to time, however any that I provide for purchase have been tested.
R1, R2, D1, D2 – Resistor and Diodes
Needed for: Games that save
Value: ~1kΩ for R1, ~10kΩ for R2, low reverse leakage diodes (1N4148 is suggested) for D1 and D2
Function: R1 acts as a current limiting resistor from the battery supply to the RAM chip that holds save data. R2 is a pull-down resistor for the +CE pin on the WRAM. Diodes combine the voltage from the NES and the voltage from the backup battery to power the RAM. To lengthen save data retention, it’s better to get diodes that have a low reverse leakage – the 1N4148 is rated for 50 nanoamps.
R3 or R4 – Resistor
Needed for: Games that save – R3 for MMC1, R4 for MMC3
Value: ~10kΩ
Function: R3 is a pull-down resistor for the CPU A14 pin on the MMC1. R4 is a pull-down resistor for the M2 pin on the MMC3. You only need one or the other, though adding both will not cause any issues.
C1 – Electrolytic Capacitor
Needed for: All games
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 games
Value: ~0.1 uF, at least 10 V rated
Function: Filters out high-frequency noise that can interrupt the EPROM/Flash chips, CHR RAM (if used), and most importantly, the CIC. There are two places for C2, depending on the CIC you are using – you only need to use the one closest to the chip you use. But the CIC normally requires it to operate.
C5 or C8 – Ceramic Capacitors
Needed for: All games – C8 for MMC1, C5 for MMC3
Value: ~0.1 uF, at least 10 V rated
Function: Filters out high-frequency noise that can interrupt the MMC1 or MMC3 mappers. You only need one capacitor for the mapper you are using, though adding both will not cause any issues.
C6 – Ceramic Capacitor
Needed for: Games that have PRG RAM (WRAM)
Value: ~0.1 uF, at least 10 V rated
Function: Filters out high-frequency noise that can interrupt the RAM chip.
C7 – Electrolytic Capacitor
Needed for: Games that save
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. This is a contingency for preventing loss of save data.
Battery
Needed for: Games that save
Value: CR2032
Function: Keeps the WRAM powered on after the NES is powered off to hold save data. Note: buying name brand batteries from reputable sellers will guarantee you rated battery life – unbranded ones might not last as long.
Front Side Solder Pads
There are three sets of solder pads on the front, above the MMC1 socket. You must bridge these solder pads on every game in the proper setting. To choose a setting, simply add solder across the middle pad to the top, or the bottom, depending on which board type you are using.
SNROM Enable
Solder the middle two pads to the top if you are making an SNROM game. If you are not, solder the two middle pads to the bottom setting, labeled “OTHERS.”

SHROM/SEROM Enable
Solder the middle two pads to the top if you are making an SHROM or SEROM game. If you are not, solder the two middle pads to the bottom setting, labeled “OTHERS.”

TxSROM Enable
Solder the middle two pads to the top if you are making a TKSROM or TLSROM game. If you are not, solder the two middle pads to the bottom setting, labeled “OTHERS.”

Back Side Solder Pads
There are four sets of solder pads on the back of the board. Except for the battery bypass solder pads, you must bridge these solder pads on every game in the proper setting. To choose a setting, simply add solder across the middle pad to the left/right or top/bottom depending on the pads, and depending on the setting you require.

CHR ROM/RAM Solder Pads
Solder the middle three pads to the top if you are making a game that uses CHR ROM, or to the bottom if you are making a game that uses CHR RAM.

Battery Bypass Solder Pad
This solder pad bypasses D2 for games that don’t hold save data, but use PRG RAM (WRAM). Only solder this if you are using WRAM without a back-up battery. If you solder this with a battery on the board, it will drain the battery power quickly. You do not need to solder this if your game does not use WRAM, but soldering it won’t cause any problems.

TxROM/SxROM Solder Pads
Solder all the middle pads to the top if you are using the MMC3 mapper to make a TxROM game. Solder the middle pads to the bottom if you are using the MMC1 mapper to make an SxROM game.

Flash/EPROM Solder Pads
Solder the middle pads to the left if using Flash memory (39SF series) for the PRG ROM chip. Solder to the right if using UV EPROMs (27C series) instead.

Backside Components
In rare cases, you might encounter some sprite glitching even if everything is configured properly. This usually only happens when you have things like a Famicom-NES adapter or Game Genie in your system. What sets this aside from other graphical glitches is that it affects the sprites, not the entire screen. So if you’re getting strange palettes, missing backgrounds, or weird tiles, your problem is something else, probably a bad cartridge connector or dirty cartridge edge. What you’ll see if you’re getting this kind of error, known as OAM corruption, looks something like this:
Fixing this error involves adding ~100 ohm resistors in series with the PRG D0 to D7 lines. This can be done by cutting the exposed traces in the middle of RD0 to RD7 with a blade, and soldering resistors in place (surface mount size 0603). Be careful not to cut other parts of the board (or yourself).



Again, this is quite rare, so chances are you will be leaving these alone.
PRG RAM Fix for MMC3 Games
In some cases, if you’re using the board for an MMC3 game that uses SRAM (TKROM, TKSROM, TSROM, TNROM), you may notice some glitchy behavior. For example, sometimes on Super Mario Bros. 3, you might get a mystery block that spawns in the middle of the map. Or some games that use the PRG RAM for saving, you might find the game freezes when trying to access save files. If this is the case, you can add a 1 nF capacitor across the RAM pins 20 and 22.

Programming the CIC
Th he 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.
Then, write the software to the chip. Afterwards, you need to set the configuration bits. If you’re using the GQ-4×4, hit t 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.