Advanced SNES Reproduction Board Guide

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

Here I will detail to you a guide to making SNES games using my custom boards. These boards differ from other designs, including my basic board, in that there are TWO EPROM sockets, and they support the 27C322 and 27C160 EPROMs. That gives you the ability to:

  1. Make a normal game up to 2 MB (16 Mbit) with one 27C160 EPROM
  2. Make a normal game up to 4 MB (32 Mbit) with one 27C322 EPROM
  3. Make an ExHiROM or ExLoROM game up to ~8 MB (64 Mbit) split across two 27C322 EPROMs (or a 6 MB game with one 27C322 and one 27C160)
  4. Make a multi-cart with two games up to 4 MB (32 Mbit) each, with up to 512K SRAM available for each game

I will discuss the hardware needed for the board – I will not be going over how to prepare the ROM file. Check out the main tutorial to determine those details. And it is important to note, these boards cannot be used to replicate games that used specialty chips on their boards – this means you cannot make games that require: SuperFX, SuperFX2, DSP chips, SA-1, C4, S-DD1, or SPC7110.

All the details for the parts you will need to make a board are shown below, including where to buy the parts and part numbers. I also made a video to go along with this board where I make an ExHiROM game, as an example. Check it out if you’d like!

Parts Needed (topside)

Here’s a breakdown of what parts you need based on what kind of game you’re making. All parts are located on the front of the board (but you can generally put the discrete parts on the back of the board as well). For the discrete parts, other than capacitors (includes resistors, diodes, and the transistor) there are both surface mount pads and through-hole sockets available. Each part will include the value or part number, and examples of where to buy them. All the parts I suggest below will be through-hole, but for some parts there are surface mount pads available if you’d rather use those.

Note: especially for discrete parts (resistors/caps/diodes) you can safely buy most or all of these parts on eBay or AliExpress for generally lower prices (with usually longer shipping times). The highest quality parts, though, will come from distributors or manufacturers. Therefore, I will generally be providing links to the parts from Digikey and Mouser, as that is where I buy most of my parts.

U3, U4 – ROM1, ROM2 (EPROM)

Needed for: Every game
Part Number: 27C160 or 27C322
Example Part: Search for them on eBay or AliExpress – these are older parts, they are not made new anymore. Because they are old parts, you run a slight risk of getting some defective ones. It’s not generally possible to find “reputable” sellers of them, so if you find that you have some defective parts, you just have to ask for a refund for the non-working ones.
Function: Holds the ROM file(s); use the #1 slot for games that only use one EPROM, additionally use the #2 slot for ExHiROM/ExLoROM games and multicarts.
How to Program: Check the reproduction article for more information (Steps 1, 5, 6, and 7)

C1 – Electrolytic Capacitor

Needed for: Every game
Value: ~22 uF, at least 10 V rated
Example Part: Here is an example part from Digikey. Just make sure to get the right value and rating – note that if it is too tall, you might have to bend it down to sit flat on the board so it fits inside the cartridge.
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.

CB – Electrolytic Capacitor

Needed for: Games that save
Value: ~22 uF, at least 10 V rated
Example Part: Same as C1.
Function: Prevents transient voltage drops on the SRAM during power-down.

C2, C3, C4, C6, C7, C9 – Ceramic Capacitors

Needed for: Every game (C4 only required if you use second EPROM)
Value: ~0.1 uF, at least 10 V rated
Example Part: Here is an example part from Digikey.
Function: Filters out high-frequency noise that can interrupt the function of the chips on the board.

C5, C8 – Ceramic Capacitors

Needed for: Games that save
Value: ~0.1 uF, at least 10 V rated
Example Part: Same as previous ceramic capacitors.
Function: Filters out high-frequency noise that can interrupt the function of the chips on the board.

C10 – Ceramic Capacitor

Needed for: Multicarts
Value: ~0.1 uF, at least 10 V rated
Example Part: Same as previous ceramic capacitors.
Function: Filters out high-frequency noise that can interrupt the function of the chips on the board.

CIC – Region Lock-out Chip

Needed for: Every game (on un-modded SNES systems)
Part Number: PIC12F629
Example Part: Here’s a page from Digikey and Mouser. Sometimes this part is out of stock here, and you have to resort to eBay, but beware that you might get a few defective parts.
Function: Replaces the region lock-out chip used in the SNES to let you play the game.
Click here to jump to Step 9g of the main SNES tutorial to find out how to program the CIC, if yours isn’t pre-programmed

R1, D1, D2 – Resistor and Diodes

Needed for: Games that save
Value: 1 kΩ for R1, low reverse leakage diodes (BAT85 or 1N4148) for D1 and D2
Example Part: Here’s an example resistor and diode from Digikey, and a diode from Mouser.
Function: Combines the battery and SNES voltage rails to power the SRAM and keep it working after the SNES power is turned off. To lengthen save data retention, it’s better to get diodes that have a low reverse leakage.

R3, R4, Q1 – Resistors and NPN Transistor

Needed for: Games that save
Value: 1 kΩ for R4, 10 kΩ for R3, 2N3904 for Q1
Example Part: Here’s a transistor from Digikey.
Function: Puts the SRAM into a low-power state during power-off.

R2, R5, D3 – Resistors and Diode

Needed for: Games that save
Value: 100 kΩ for R2, 10 kΩ for R5, same diodes as D1 and D2 for D3
Example Part: Same as earlier parts.
Function: Adds save glitch protection. D3 keeps /RESET from staying high while the supply voltage drops. R2 is a pull-down resistor on the /RESET line. R5 stops erroneous operation of Q1 from leakage current out of U8 decoder.

R6, R7, Q2 – Resistors and NPN Transistor

Needed for: Games that utilize an AS6C1008 SRAM chip (U5)
Value: 100 kΩ for R6, 10 kΩ for R7, 2N3904 for Q2
Example Part: Same as earlier parts.
Function: Adds a load to the SRAM supply pin. There are protection diodes internal to the AS6C1008 (not present on other AS6C SRAM models) that causes noise to rectify onto the supply line. Because the load is too light, this voltage can float above the recommended operating limits for the chip. The circuit made by these three parts adds a small load to the supply to discharge the rectified noise. You do not need these parts if you are using an SRAM chip other than the AS6C1008.

B1 – Battery

Needed for: Games that save
Part Number: CR2032
Example Part: I commonly buy these pre-tabbed from eBay, but buying from Digikey or Mouser will probably give you higher quality longer-lasting batteries (be sure if you buy non-tabbed batteries to also get a battery holder – do not try soldering tabs onto batteries yourself).
Function: Keeps the SRAM on to retain data while power is off.

U5 – SRAM

Needed for: Games that save
Part Number: 6264 (64K), 62256 (256K), or 1008 (1024K) series SRAM (be sure to get low standby current model)
Example Part: If you have a choice, I recommend getting an SRAM chip as close to the amount you need. The AS6C1008 will be large enough for any game, but the AS6C62256 covers nearly all of them as well. The AS6C6264 works for games that have 64Kbit of SRAM, but they don’t work for multicarts (on my board). These SRAM chips also have a low data retention current, which is good for longer save battery life, but my tests show that generally the AS6C1008 has a higher data retention current than the AS6C62256 or the AS6C6264. A higher data retention current means your save data will be erased sooner (but should be safe for many years regardless). Also, as mentioned earlier, the AS6C1008 requires R6, R7, and Q2 to be included on the board. So you should stick to the 6264 or 62256 if possible.
Function: Holds save game data.
How to Determine Data Retention Current: If you have a multimeter, put it into DC millivolt mode and carefully measure across the terminals of R1. You should read a voltage somewhere in the single to fraction of a mV. Testing the chips I have in my stock, I usually read about 0.4 mV for 62256 SRAM chips and 1.6 mV for 1008 SRAM chips. You can calculate data retention current from this measurement with Ohm’s Law – V=IR. V (voltage) is this measurement on the multimeter, R is the resistance of R1 (1 kΩ) and I is the data retention current. So for the 62256 SRAM, I get a data retention current of 0.0000004 A, or 0.4 uA (microamps). For 1008 SRAM, I get 1.6 uA.

U6, U7 – Multiplexers

Needed for: Every game
Part Number: 74HCT257 or 74LS257 are recommended (74HC257 should be fine as well)
Example Part: Digikey has all of the 74 series logic, but you might also be able to get them from TI directly.
Function: Maps the data from the 27C160 or 27C322 (which uses a 16-bit bus) to the SNES cartridge (which uses an 8-bit bus).

U9 Decoder (bottom-most)

Needed for: Every game
Part Number: 74HC139 (or equivalent)
Example Part: Digikey has all of the 74 series logic, but you might also be able to get them from TI directly.
Function: Tells the multiplexers when to output data; switches between EPROM #1 and #2 for either Ex-mode games, or for multicart functionality.

U8 – SRAM Decoder (middle of board, choose only one for LoROM or HiROM)

Needed for: Games that save
Part Number: 74HC139 (or equivalent)
Example Part: Same as U9.
Function: Activates the ROM or RAM, depending on the memory address being accessed. U8L is populated for LoROM games, U8H is populated for HiROM games. You can put parts in both sockets if you want, the board will still work.

U10 – Flip-Flop

Needed for: Multicart boards
Part Number: 74HC74 (or equivalent)
Example Part: Like U6-U9, Digikey carries them.
Function: Switches between EPROM #1 and #2 when the reset button is pressed on the console.

Multicart Socket

If you plan on making a multicart with games that require SRAM, then you need to kink one of the legs out and solder to the proper socket, as indicated on the board. If using a 62256 SRAM chip, bend out pin 1. If using a 1008 SRAM chip, bend out pin 2.

Solder Pad (frontside)

There is only one set of solder pads on the front of the board.

Decoder Bypass

Shorted: Enables output on boards without SRAM or the SRAM decoder
Open: Does nothing (do not short unless you do not have an SRAM decoder)

Solder Pads (backside)

There are a handful of solder pads you’ll need to bridge on the back of the board in order to make your game work.

HiROM/LoROM Selection

There are a few sets of three-way solder pads located in various locations on the board. You need to bridge two of the three depending on what bank type your game(s) is/are. Note that this bank selection will apply to both EPROM #1 and EPROM #2, if you’re using both (can’t make a multi-cart with one LoROM and one HiROM game).

27C322 or 27C160 EPROM Selection

For each EPROM #1 and #2, you can use either a 27C322 or 27C160. You must bridge the solder pad pair of the type you are using for each socket. If you’re using a ‘322, you must also choose either Lo or HiROM as well.

If you’re not making an Ex-mode game, or a multicart, then you only need to solder pads behind the ROM1 socket.

SRAM Enable

If you’re using SRAM, in the top left corner of the board bridge these pads together. If you reprogram your EPROM with a new game, you should disconnect these pads by desoldering them to reset the SRAM (they only need to be disconnected for a second). Then, resolder them together for your new game.

SRAM SIZE (SRAM selection pads)

These are another set of three-way solder pads, located in the top middle of the board. You need to bridge the set of pads (the middle and one to the top or bottom) depending on the size of the SRAM your game uses. Similar to the pads above, solder the two in the direction of the size of SRAM your game uses.

NOTE: If you make a multi-cart game, your SRAM size will be at most half of the full size of the SRAM chip. So for a 256 Kbit SRAM chip in multicart mode, the max available SRAM size will be 128 Kbit. Both games will have the same amount of SRAM – you can’t make one game have 16 Kbit SRAM and the other 256 Kbit, for example.

Mode Selection

There are three “mode selection” solder pads. These are for selecting between a normal game layout, EX mode (or expanded mode), or multicart mode.

“EX mode” on my board just means any game that requires more than one 27C322. So ExHiROM and ExLoROM games, or just HiROM/LoROM games that take up more space than 32 Mbits. This is a not-so-important distinction, but many ROM hacks (and official re-releases) that expand the memory used of the usually HiROM game don’t actually count as ExHiROM, or Mode 25. They still operate in Mode 21, and you cannot simply use a true ExHiROM configuration for these larger HiROM games. Luckily, my board supports both types if you set it to EX mode!

Note that you cannot have EX mode and multicart mode enabled, because multicart mode switches between two games that use one ROM socket each.

Furthermore, if you are making a multicart, you must use the same mapper type for both (LoROM or HiROM). You cannot mix bank types between games.

37 thoughts on “Advanced SNES Reproduction Board Guide

  1. Thanks for the awesome work, I just used one of your boards to make a cartridge for the project exile translation of fire emblem thracia 776. You might want to update the excel sheet for that since the translation is a unique setup. The project exile translation is a 48Mb LoROM game with 256k of sram. In case anyone is wondering on how to set the jumpers, I set all the bank select jumpers to LoRom and the board mode to EX-HiROM even though the game is LoROM and I am able to boot the game and start a level. I will test some more once I get the UVEPROMs soldered in place (I’m currently using the sockets for prototyping)

    Like

      • Since I made the comment I soldered everything into place, my 27C322s were a pain to get good joints on and I had to re-flow a few times (I think the problem was insufficient heat, the body of the chips was getting hot very quick, I think it was acting as a heatsink, if anyone is having trouble soldering them just be aware you might need to let the iron heat it for a while), but since then I have re-assembled the cartridge and further tested it, I was able to clear the first map and the saves seem to have persisted after a few hours with the cart out of the system.

        I do have one minor suggestion for a potential future board revision though, the through holes for the battery aren’t very flexible in terms of compatibility, the pinhole sized through holes won’t fit many tabbed batteries (including the original ones from nes/sfc carts) but it looks to me (although I am far from an expert on designing pcbs, i’m just a programmer who took one or two classes in basic circuit design) that there might be enough space for holes designed to fit the original SNES battery style tabs and the larger holes would still support the pin style tabs. It isn’t much of a problem since anyone competent enough at soldering to be using these boards can probably trim their tabs or figure out a workaround but the batteries I keep on hand fit the standard SNES holes.

        Like

        • Thanks for letting me know about the batteries, I’ll look into it for the next revision; I had thought about it a long time ago but it got lost in the back of my mind haha. If there’s room (I think there is, I doubt any particular traces are needed under the battery) I’ll try adding the other holes.

          Like

  2. I purchased some things from you about a year ago and decided to re-visit the SNES ROM hobby since winter is here and I see this new board and I just want to say, congratulations on a fantastic board and also for the support in the past and supplying us with easy to use tools. Thank you!

    Like

  3. Hi there! I’m really enjoying these boards. I’ve run into a bit of a problem with my first SRAM game, though. It’s an English translation of Laplace No Ma, which according to superfamicom.org has 64kb of SRAM. The game works great in both a SNES and a Super NT, but I can’t get it to save on either. The game acts as though it has saved, but on reset there’s no save file present. I tested the same use case on an emulator with the same ROM and it worked as expected.
    Any ideas where I should start troubleshooting? I’ll link a photo of the board in case there’s some kind of obvious boneheaded mistake that’s easily visible.
    https://indridcoldsore.files.wordpress.com/2021/05/pxl_20210522_202555855.jpg

    Like

      • Thanks for the suggestion! I double checked my UCON64 results and it says 8 kilobytes, which if I understand, is 64kilobits. Looking back at the board and the reference table, it appears as though I have the jumpers set for 64 kilobits. So, I don’t think that’s the problem, unless there’s something I’m overlooking.

        Like

        • Are you checking the patched ROM, or the original ROM with uCon64? You should check the patched version. Sometimes translations will use more RAM than the original game did. I imagine it has something to do with how Japanese text is much more condensed than English text.
          Can you send a picture of the front of the board as well?

          Something you can measure with a voltmeter: the SRAM pin 20 (+) to pin 14 (-). This should be about 3V.

          Liked by 1 person

        • I got the board back out to take a picture of the front and finally saw the boneheaded move. I wired the diodes in backwards. I flipped them around and it works great. Thanks for the help!

          Like

  4. I’m looking to make an SA-1 test board. Already have one of your adapters, but I want to solder a socket to it rather than directly soldering the chip so I can test out some of the Vitor Vilela SA-1 hacks. I’ve already built a few of your test boards, can you recommend a 42 pin socket that works best? Obviously I’d have to modify one row of the pins to surface mount to the adapter but I think that should be doable?

    Like

Leave a Reply to Edward Grudzinski Cancel 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 )

Facebook photo

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

Connecting to %s