How to Make a SNES Reproduction Cartridge

Disclaimer: This tutorial is for educational purposes. The instructions and products discussed are for the creation of homemade games only, or for repairing damaged cartridges for personal use, and should not be used for duplicating and distributing games protected by copyright.

I am not responsible for any damage to you or your property – attempt these projects at your own risk! There are a lot of steps, and nearly all of them are crucial to get a working product.

I’ve taken a lot of time to go through and learn all I can about how SNES games work, and I tried my hardest to make a comprehensive and easy-to-follow guide so you can learn a bit about them yourself. Luckily, SNES games aren’t actually too complicated, way less complicated than NES games. It is my hope that after reading this tutorial, you’ll have a good understanding on how to make your own SNES cartridges to use in your original SNES hardware. There are some minor soldering skills required, and it might be frustrating at times dealing with older technology, but stick with it and you’ll eventually get the hang of it.

Table of Contents

Step 1: Gather information on your game
Step 2: Determine the method of reproduction
Step 3: Choose your board
– Donor cartridge
– Custom PCB
Step 4: Determine which memory chips to use
Step 5: Fix the checksum and remove the header
Step 6: Finalize files for programming
– 27C801
– 27C160
– 27C322
– 29F033
Step 7: Burn your ROM
– 27C801
– 27C160
– 27C322
– 29F033
Step 8: Double check your chips, and prepare the board
Step 9: Install chips on the board
– 27C801 (donor)
– 27C160 (donor)
– 27C322 (donor)
– 27C322 (donor, ExHiROM)
– 29F033 (donor)
– 29F033 (donor, ExHiROM)
– Custom PCB
Step 10: Finish your game

Equipment you will need

You’ll need a few basic things:

1) Programmer. This is what you use to program the chips the game data is stored on. I got mine on eBay for about $50. It’s a TL866 MiniPro programmer. There’s an updated model, the TL866II Plus, and it seems to work just as well. The TL866 has worked flawlessly for me so far, even after 5 years, and it’s pretty easy to use. There are other more advanced programmers out there, but they run a lot more expensive. I recently purchased a GQ-4×4, which is a great higher-level programmer. If you have one of those other programmers, you’ll have to figure out how to use it yourself (though, if you’re reading this and you already own a programmer, you probably know what you’re doing anyway, nerd).

20180808_211933.jpg

2) EPROMs or EEPROMS. This is what holds your ROM. Functionally, EPROMs and EEPROMs are nearly identical, and either can be used, though I usually stick to EPROMs because of the price and ease of use for the ones available to use with the SNES. EEPROMs, though, can easily be reprogrammed compared to regular EPROMs. There are definitely benefits to either choice.

In this tutorial, I will go over multiple methods of making games using 8 Mbit, 16 Mbit, and 32 Mbit through-hole EPROMs, and also using 32 Mbit surface mount EEPROMs. The parts I most commonly use are the 32 Mbit through-hole EPROMs – the 27C322. Easy to work with, and can hold pretty much any game.

e_eproms.jpg

Note that once you’ve programmed an EPROM, you should tape over the window to prevent any data corruption.

2b) TL866 Programming adapters. If you want to use the 27C160 or 322, and you’re using the MiniPro, you’ll need programming adapters so that you can program these chips. They are not natively supported by the TL866, but we can easily add the functionality ourselves. Other programmers like the GQ-4X4, can handle all of these chips without adapters. I make these adapters, and can sell them to you over on my store page, or you can make your own, as I provide schematics for them. I’ll go over which one you might need for your project later on.

3) EPROM eraser. This is for… erasing your EPROMs. You do not need this if you plan on only using the surface mount EEPROMs. I use this thing a lot for trying out different games on my 27C322 EPROMs that I swap in and out of my prototyping boards so I don’t need to solder the chips in to try a game out. But you should get one regardless if you plan on using prototyping boards or not, because you’ll either need to fix something you programmed at some point, or you’ll have to clear the chips you order since they’ve probably got something written on them. Note that you should not leave chips in the eraser for too long – this may permanently damage your parts. I usually leave them in for 20 minutes at a time, and do a blank check to see if they’ve been erased. But do not be surprised if you get some bad parts, as these are all old stock. They haven’t been manufactured in decades.

38781033_540509953033852_8470017043511377920_n

4) A board. Probably the most important part! You can use either an existing game that you’ll repurpose (a “donor” board), or a custom designed board. Your game will determine which method is easiest, and which you can even use. I highly suggest using a custom board when possible, as they are custom-made to make the process as painless as possible, and save the endlessly dwindling supply of original SNES cartridges. I provide custom boards of my own design on my store page if you’re interested. I offer two versions – a “basic” version that can be used for making a single, smaller game; and one that uses the 27C322, capable of making the largest of SNES games, including multicarts! I’ll go into more detail of the differences later on.

4b) A prototyping board. I have a few boards designated to test EPROMs before I permanently solder the parts into a “clean” board. Basically, I took one of my custom boards and soldered in sockets to allow swapping of the chips without having solder them in place. When I want to make a game, I program my ROMs, put them in the sockets on the prototype board, then use that in my SNES to check and make sure they work. Once I verify the game is running normally, I know that everything is good to go, and I take them out of the sockets to solder them onto a permanent board. I highly recommend doing this, either with one of my custom boards, or with a donor board you convert yourself. It will save many headaches and prevent having to desolder anything – something I really hate doing, and is risky to do if you don’t have experience. It’s very easy to damage boards by desoldering parts. Here’s what one looks like compatible with 27C322 EPROMs:

322_multi_front_test

4c) 27C322 or 27C160 EPROM adapters (optional). These will only be applicable if you’re using a donor cartridge. They take a lot of the work out of making your donors work with these EPROMs, as they require rewiring to work on donor cartridges. You could wire the chips up yourself, but it makes the final product look quite messy, and adds a lot of room for error. Plus, I also offer one adapter for games that use the SA-1 processor!

The SA-1 adapter boards are on the left, and the 27C322 adapter boards are on the right. The ‘160 boards look similar to the ‘322s. I also offer a slimmer version of the 27C322 and ‘160 adapter boards that sit directly on top of the ROM socket, but the nice thing about the adapter boards that sit above the board is that you don’t need to remove the original ROM chip!

5) Miscellaneous hardware. You’ll need solder, and a soldering iron, at the very least. You might need some wire if you’re using a donor cartridge, I prefer using 28 gauge – flexible, and doesn’t stress the pins on the chips. You’ll also need a special screwdriver for opening SNES games, as they use specific screws. You’re gonna want the 3.8mm “Security Bit” screwdriver. The 4.5mm is used for opening Nintendo consoles and Sega games. Might as well buy both though, they usually come in bundles from what I’ve seen online.

20180808_212053.jpg

So for making games, if you want my personal recommendation, I’d go with using 27C322 or 27C160 EPROMs, with custom PCBs or a 27C322 or 27C160 adapter board on a donor cartridge. These larger EPROMs really make it easy to put your ROM on a cart, and using them with adapters or custom boards saves you the headache of adding extra wiring.

Items from my store for making SNES games

SNES Cartridge Circuit Board – Basic
SNES Cartridge Circuit Board – Advanced

27C322 adapters for donor cartridges
27C160 adapters for donor cartridges
27C322 adapters for SA-1 donor cartridges
27C160/322 programming adapter for TL866
29F032/33 programming adapter for TL866

Now that you’ve got a good overview, let’s dive in!

Back to top


Step 1: Gather information on your game

If you’re putting your homebrew game on a cartridge, you probably already know all this stuff about your game, but maybe you’ve found an open source game you want to make. Or you’re dumping a ROM from a game in your library, and you’re putting a copy on a clean new board. The first step you should take is to find out the crucial information of your desired game. To do this, all you need is your ROM file and a few extra pieces of software.

Run your ROM in an emulator

It’s important to run your ROM in an emulator to determine it’s the exact game you want to make, especially if you patched it. I’d recommend higan for emulation, as it tries to emulate the original SNES hardware as closely as possible, so you’re more likely to catch any errors. Read the User Guide on how to use it – it’s actually a helpful document!

So make sure that the game is the exact version that you want to use, and that it can run for a few minutes without freezing. Nothing worse than finishing a game up and finding out after five minutes at a specific screen there’s a glitch you missed.

uCon64

Once you’ve verified that your ROM is correct, you’ll need to download the most important program we will use, called uCon64. This is a command line utility that will give you all the information you ever wanted to know about your ROM. Using it is a bit tricky, though, so I’ll go through what you need to do here.

(I recommend making a folder where you can put all of your work materials to make it easier to navigate.)

Download and unzip uCon64. Now, open Command Prompt. Change the directory to the folder where uCon64 is located by using the cd command (it’s located on my D drive, shown below). If the cd command doesn’t work, try adding /d after it (for folders in different drives).

cd [path to folder]       OR       cd /d [path to folder]

Now, navigate to the place where your ROM is located. Hold the shift key and right click on the ROM, and click “Copy as path.” Go back to your Command Prompt screen and enter:

ucon64 [path to ROM]

Use CTRL+V to paste the path. Now hit enter, and you’ll get a lot of information in front of you.

cmd2

Let’s take some time to go over what each of these categories are.

Bank Type

There are two main types of “banks” known as HiROM and LoROM. In the command window, HiROM games will display as “HiROM: Yes” and LoROM games will display as “HiROM: No”. Pretty self explanatory.

Note that the ExHiROM format will show up as HiROM. As far as I know, there is only ONE true ExHiROM game – Tales of Phantasia. Nearly every other “ExHiROM” game, that is, a game that uses the HiROM mapping type with a ROM size larger than 32 Mbit, will not work on a traditional ExHiROM board. (They will however, work on my custom SNES Advanced boards.)

SRAM

Some games use SRAM, some do not. If yours uses SRAM, you should try to provide it with the exact amount it requires. The reason being is that some games check to see if the amount of SRAM available equals a specific amount. Worst case, give it more SRAM than it needs, and if it doesn’t work, you can always make some adjustments to the larger chip to make it look like smaller amounts of SRAM.

ROM Type (Chips)

This lists any specialty chips the game uses. This doesn’t include the chips that are default on all games, like the CIC region chip or the ROM chips. For example, Star Fox 2 uses the Super FX chip.

Another common thing that many games use are batteries. I’d recommend buying a handful of new batteries with battery holders if your game uses one, even if you’re converting an older cartridge to a different game. It’s been about 30 years since many of these games came out – their batteries are probably almost dead, if they aren’t already. I recommend getting the yellow ones that come pre-mounted. The original batteries are spot-welded to the holders so they don’t move – replacing just the batteries without removing the mountings is tricky and not worth the time.

20170903_155804.jpg

Region

You need to make sure the ROM you’re using is formatted for the correct region – PAL or NTSC – otherwise, they won’t run well (or at all) on your SNES/Super Famicom. Look up where you live and if it’s in the PAL region or the NTSC region if you’re unsure. Converting a game from one region to another is difficult or impossible, and it isn’t as easy as disabling the region lockout chip (CIC chip). Countries in the PAL region run on 50 Hz power, where countries in the NTSC region runs on 60 Hz power, and this causes some games to run faster or skip frames if you use them in the wrong region. Analog video encoding is a tricky thing.

Do not ask me how to change a game’s region.

ROM Size

This is how large your game is, obviously. The size only comes into play when you’re deciding which chips to use to program your game, because most cartridge boards are capable of handling pretty much any size game you can make.

Speed

This corresponds to the data access delay times of the ROM. You can pretty much ignore this, as most EPROMs and EEPROMs available anymore will be fast enough for both types of games. If you’re worried, make sure the datasheet of your chip specifies AT LEAST 120 ns access time (120 ns or less). I’ve never run into one that was slower than this though. If you’re curious about the differences between SlowROM and FastROM, check out my detailed write-up about the SNES cartridge inner workings.

Knowing all this information now, you should note the region, ROM size (specifically the number shown in Mb), SRAM size, bank type, and chips that this screen shows. With this information, we can determine exactly how we want to make this game.

Back to top of Step 1


Step 2: Determine the method of reproduction

There are two ways you can make a reproduction cartridge. You can use a donor cartridge – taking an older game (hopefully a cheap, very common one) and removing the ROMs and replacing them with your own. The other option is to use a brand new board to make the game. There are pros and cons to each. But before we get into the nitty gritty details, your decision might already be made for you. Here are two situations that will make your decision for you:

  1. If the “ROM Type” line (chips) in ucon64 says anything EXCEPT a combination of ROM, SRAM, and/or Battery, you must use a donor cartridge. This means games that use, for example, the SA-1 chip cannot be made with a custom board, outside of a flash cartridge. Some of these games with specialty chips will have easy through-hole parts to replace, but most will use surface mount parts that makes them trickier to replace. I do offer adapters to make SA-1 reproductions easier, but otherwise, I will not be covering other board types that use surface mount chips, like SuperFX for example.
  2. If your ROM size is larger than 32 Mbit, and is NOT Tales of Phantasia, you should probably use a custom PCB. You CAN use a donor, but the game will require more complex rewiring, and it’s just probably easier to use one of my custom PCBs to handle it. At any rate, I won’t be going over how to use donors for these games in this tutorial.

If your game uses “normal” chips and is 32 Mbit or smaller, then you’ve got a decision to make! Let’s go over the differences between donor cartridges and custom PCBs.

Using a donor cartridge

Using a donor cartridge involves removing or disabling the ROMs on the existing board and replacing them with chips you program yourself.

Pros to using a donor cartridge:

  1. You won’t have to supply your own plastic case.
  2. You can pick a game that comes with the necessary components, like RAM, so you don’t have to buy them yourself.
  3. Because of these two reasons, the price can be cheaper than using a custom PCB.

Cons to using a donor cartridge:

  1. You might have to remove or cut pins on the existing ROM (and possibly the battery), which can be a huge pain, and if done without caution, can easily damage the board.
  2. The assembly might look messy with a lot of extra wires, depending on the chips you use to program the game on.
  3. Because you’re modifying decades-old hardware, and in some cases you’re trying to make it do things it wasn’t originally designed to do, you might have a higher failure rate.
  4. You’re destroying an otherwise good SNES game. If you’re a proponent of video game preservation (as I am), this probably won’t appeal to you. Though, you’ll probably be destroying a crappy sports game, and I can’t tell you what to do with your money, so use your best judgement!
  5. Removing stickers from cartridges is my least favorite part of the entire process. It seriously sucks.

Using a custom PCB

There are a bunch of different sellers out there that will sell you brand new PC boards that you can use in your SNES as cartridges (including yours truly).

Pros to using a custom PCB:

  1. The final build will look a lot cleaner, since you won’t need to rewire anything.
  2. You don’t have to spend time figuring out a compatible game to use as a donor cartridge.
  3. It is much easier to make a fully-functional test board with sockets on a custom PCB than on a donor.
  4. You’ll be supporting the SNES reproduction community! And you won’t be destroying a perfectly good soon-to-be-endangered SNES cartridge in the process!

Cons to using a custom PCB:

  1. You need to buy the extra components (such as SRAM, capacitors, and a lockout chip), and the plastic case, making the final cost most likely a bit more expensive.
  2. Like I said before, you will only be able to make games that do not use specialty chips.

Now that you have a better idea of how you want to make your game, let’s get the proper board. Skip ahead if you’re using a custom-made board.

Back to top of Step 2


Step 3a: Choose your board (donor cartridge)

First, you’ll need to open up this Excel document I made. This document has information on most available ROMs for SNES/Super Famicom, including foreign games, and even some ROM hacks. You can download it and open in Excel, or Office Libre, or just use Google Sheets to organize the data. I got the information for this spreadsheet from the SNES ROM Header Database. I trimmed some of the fat off of the list, like games that have weird amounts of SRAM or customized things that didn’t filter well in the Excel document.

Go back to your notes on the bank type, SRAM amount, and extra chips that your game uses. You should filter the columns for those characteristics to find a good, cheap donor. Note that instead of filtering the region column, you should filter the video column instead depending on if you’re in the NTSC or the PAL region. 

To find a donor cartridge, go to each of the filtered column drop down menus. Deselect each value that your game DOESN’T have in the Bank, SRAM, Chips, and Video columns. I also sorted the list by the game column from A to Z to group all common games together – makes it easier to sort through the titles. You should now have a list of compatible games. This screenshot shows all the HiROM games with 64 Kbit of SRAM in the NTSC region.

chronodonor

Note that you should be sure that the game you pick for a donor isn’t a hack or mod itself, because that won’t be the actual cartridge you can buy! Make sure the game you pick has an entry in the sheet that either has [!] or no additional information past a version number and region code (NOT translation code). There are a few games that, for example, might use HiROM instead of LoROM if you have a certain translation or mod. You will be buying an original game so you MUST make sure the original is on your donor list!

Now, if you want, you can check out your selected donor cartridge over on SNES Central. Note that the original ROM socket can come in a 32-pin or a 36-pin variety. Unless you’re making a game that’s 8 Mbit or smaller, you’ll have a MUCH easier time with the reproduction if you get a board that has a 36-pin socket (and I won’t be going over how to use a 32-pin board for games larger than 8 Mbit). So in general, stick with 36-pin boards for games larger than 8 Mbit. Also, some games come with two or three ROM chips on them – I won’t be covering those types of boards in this tutorial either. Perhaps in the future I’ll put up guides for specific multi-ROM boards.

Another important note is that some games that use specialty chips will sometimes use surface mount parts on their boards instead of through-hole parts. This makes using them for reproductions a lot trickier. It’s still possible, but they’re not the easiest to work with. Other than the SA-1 games, I will not be covering those types of games in this tutorial.

Once you have your donor cartridge, you should DEFINITELY check to see if it works as is in your SNES. You don’t want to get to the end of the process only to find the game you bought is broken (which has happened to me). You might have to clean the cartridge edge to get it to work. Now, let’s decide the next most important aspect of your repro – what chips to load your ROM on. Head to Step 4.

Back to top of Step 3a


Step 3b: Choose your board (custom PCB)

I currently offer my own SNES reproduction boards – a basic version and an advanced version. Here’s a quick list of the features of each:

SNES Basic Board

  • Holds one game on a 27C801 (8 Mbit), 27C160 (16 Mbit), or 29F032/033 (32 Mbit, with adapter board).
  • Has a socket for original SNES ROM chips.
  • Can use the original CIC, or the SuperCIC clone.
  • Supports games that save, with SRAM sizes up to 1024 Kbit.

SNES Advanced Board

  • Uses the 27C160 (16 Mbit) or 27C322 (32 Mbit) EPROMs.
  • Can use two 27C322 EPROMs, or one 27C322 and one 27C160, to make ExHiROM or ExLoROM games up to ~64 Mbit large (including ROM hacks and translations)
  • Can use two 27C160 or 27C322 EPROMs to make a multicart for two games, switched by pressing the reset button on the console.
  • Supports games that save, with SRAM sizes up to 1024 Kbit (or separate saves for the games if making a multicart, up to 512 Kbit each)

The advanced board should cover any SNES game that doesn’t use specialty chips, or has some kind of unique mapping scheme (like the Star Ocean hack), but the basic board is a great option for games 16 Mbit or smaller.

If you elect to use someone else’s board, that’s fine, you’ll just have to rely on them for instructions where it isn’t clear what to do. I will provide (hopefully) easy-to-follow instructions later on for my own boards – it might look daunting, but trust me, it’s easier once you get into it!

Now let’s decide the next most important aspect of your repro – what chips to load your ROM on!

Back to top of Step 3b


Step 4: Determine which memory chips to use

There are four widely used memory chips to load your ROM into that I will go over in this section. Which you choose will be determined by a few factors, most notably your ROM size, and if using a custom PCB, the compatibility of your board.

  • 27C801 – a through-hole 8 Mbit EPROM
  • 27C160 – a through-hole 16 Mbit EPROM
  • 27C322 – a through-hole 32 Mbit EPROM
  • 29F033 – a surface mount 32 Mbit EEPROM

There are plenty of alternatives with the same pinouts that will work just as well as these four (such as the M27C080 for the 27C801, or the 29F032 for the 29F033). I’ll be using these numbers listed above when referencing these chips to make the tutorial easier to read.

There are a ton of different ways to make games with these chips. I’m only going to cover the most common and easiest to use cases here. For that reason I recommend you getting a chip that’s either as big or bigger than the ROM you want to put on a cartridge. The exception being ExHiROM, or HiROM games larger than 32 Mbits. For those games, you can use two 27C322’s or two 29F033’s, and do some extra wiring that I’ll go over later.

As far as my personal preference goes, I’ve been using 27C322’s (on my own boards) for most of my games for a while now. I recently got some 27C160s to use with my basic boards as well, for any simpler games I want to make. I stay away from 29F033’s because of the relative difficulty in soldering them, but if you can get them mounted properly they are quite handy. I have one that I use for testing.

Checking your ROM in the SNES ROM Utility

Before you continue, you should download the SNES ROM Utility program and load up your ROM. We’re going to be using this program pretty heavily. Most games should load up fine, but you might get some errors. In the cases where your ROM doesn’t load, you’ll have to do some research or possibly use another version of your ROM.

So now, I’ll give a rundown of the different chips you can use for your games, and some pictures as examples. (Note that the window on top of the EPROMs should be taped over to prevent data loss – in some of these pictures I neglected to show that. Oops.)

8 Mbit EPROMs

If your game is only 8 Mbit large, you can very easily and cleanly use just one of these EPROMs, like the 27C801. There are only two pins you’ll need to reroute on donor cartridges. These are getting a bit expensive from what I’ve seen, but they make for very clean installs of smaller games on donor cartridges, and even cleaner installs on my custom boards. Here are a few pictures.

16 Mbit EPROMs

16 Mbit EPROMs, like the 27C160, I’ve found to run cheaper than the 801’s. There are only two downsides to using these chips. For one, it’s going to look ugly, as it requires a bunch of wires similar to the picture above – unless you use an adapter board like this one, or this other version that’s extended above the donor PCB and requires no desoldering. Secondly, you’ll need a special programming adapter to program these in the MiniPro programmer.

Here’s a small gallery of examples of boards using 27C160s.

32 Mbit EPROMs

32 Mbit EPROMs are the largest through-hole parallel data EPROMs available. Luckily, most SNES games are 32 Mbit or smaller. I use the 27C322. Like the 27C160’s, they will look ugly if you’re using a donor board without an adapter – it has 42 pins, so you have to wire many of the pins individually to the socket correctly. In addition, you’ll need to provide two multiplexer ICs to change the 16-bit data bus of the 27C322 into an 8-bit data bus of the standard SNES cartridge. This is so ugly, in fact, I have never made one without an adapter board. Coincidentally, like the 27C160s, in order to remove all the manual wiring, I do sell these adapter boards that do the wiring for you! They’re extremely handy, and I don’t think I’d recommend using these chips on a donor cartridge without them. I also provide an extended one that’s a bit easier to use and doesn’t require any desoldering.

Also note that, like the 27C160’s, you’ll need a programming adapter to program them on the MiniPro which I can provide you with.

Here’s a gallery of pictures of different ways you can make a game with the 27C322: one with a slim adapter board, one extended adapter board, and one on a custom board (the example picture with my custom board specifically shows an ExHiROM game, which uses two 27C322s).

An important note – if you’re planning on making an SA-1 game with an SA-1 donor board, I recommend using one of these SA-1 EPROM adapter boards. This allows you to use a 27C322 on the board instead of the original surface mount ROM chip. Here’s what a game looks like completed.

sa1_7

32 Mbit EEPROMs

As for the 32 Mbit EEPROMs, I use 29F033 chips. These are surface mount parts, so an extra breakout board is necessary to program and insert into the SNES PCB. You can get these boards from various places, like buyicnow. Sometimes they come pre-mounted and tested, so that’s pretty nice.

The upside to using the 29F033 is that everything will look a lot cleaner and the process will be much quicker (once it’s mounted to a board), as you won’t need to do any rewiring. The downside besides the price is, well, it’s a lot harder to solder surface mount parts than it is through hole. If you don’t have any experience soldering surface mount, and you buy them separate from the board, this might be a harder option for you.

20170904_135252circle.jpg.png

The type of pins you’re gonna be soldering are circled in red in that picture above. So my advice, only if you are confident in your ability to solder extremely small pins and are willing to spend a bit of extra money to make your life marginally easier, is to only use the surface mount 32 Mbit EEPROMs with breakout board only for any game larger than 16 Mbits. But again – this is a difficult process, especially if you’re new to soldering. And you might kill a few of these chips if you don’t solder them properly by keeping heat on the pins for too long. If you haven’t had a lot of experience in soldering such tiny pins, or aren’t willing to potentially waste a bit of money in damaged chips, I would recommend just using the through-hole EPROMs.

But if you feel so bold, my tips if you’re wanting to try to solder this surface mount chip: get yourself a flux pen. Flux will make your solder flow much better, and is essential if you want to attempt this (trust me… I tried to do it without it). Just spread it on all the pins. And maybe invest in an adjustable magnifying glass stand. Make sure you have really good lighting. And lay off the coffee… you need steady hands for this one. But if you’re able to, you’ll get a pretty compact board.

Note that if you plan on going this route, and you want to use the TL866 programmer, you’ll need to either buy my adapter, or make your own to route the wires on the breakout board to the programmer. Or, use a programming adapter for the small TSOP packages to program them before soldering them to the adapter board.

Figured out which chips and what kind of board you want to use? Great! Let’s get your ROM file ready to program.

Back to top of Step 4


Step 5: Fix the checksum and remove the header

Now you’ve chosen what kind of board you’re going to use and your chips, let’s take a look at that command window again.

cmd2

Let’s start with the checksum. If the checksum areas say “OK” and are green, you’re good to go! Skip over this section.

Fixing the checksum – IpsAndSum

In the picture above, my checksums are bad (this usually only happens when games are translated or modded). If your checksums are bad, then you need to run your game through a program called IpsAndSum. This program is a bit glitchy, but it’s pretty easy to figure out.

ips.png

First, you’ll need to go to File > Open, and choose your ROM. Sometimes the numbers will change in the fields on the screen, sometimes they’ll stay at 0000. Like I said, glitchy. Either way, go back to File > Repair SNES CheckSum, and the fields should change. Click “Yes” to repair. Then, make sure you go to File > Save to save your fixed ROM.

You should run the ROM through uCon64 once again to make sure the checksums got fixed, and that you remembered to hit File > Save (this happens more often than you’d think).

cmd4

At this point, if your checksums are still bad, you might have to try another ROM if possible, or try going through the steps again in case you missed something along the way. If you still can’t get the checksum OK, then the ROM still might run ok in the console, but proceed at your own peril. Maybe you can try it out on a prototyping board like I mentioned earlier to avoid having to solder anything down onto the board.

Removing the header – SNES ROM Utility

Here’s what the screen looks like when you load a ROM into it.

snesromutilitycen

You’ll see some of the information of the ROM here that you already saw in uCon64.

We’ve got a crossroads here. The process for preparing the different memory chips is varied. So, click on the link of the chips you’ll be using.

Step 6a: Finalize files for programming (27C801)

Step 6b: Finalize files for programming (27C160)

Step 6c: Finalize files for programming (27C322)

Step 6d: Finalize files for programming (29F033)

Back to top of Step 5


Step 6a: Finalize files for programming (27C801)

If you’re using the 8 Mbit EPROMs, there’s really only one option we’ll need to pick under the task list – SwapBin. This command does everything – it removes the header for us and performs a process that switches the data in the ROM around to make our modifications to the cartridge a bit easier.

27c801_snesromutil

Check the SwapBin button, choose 27C801 on the drop down menu and click OK. You’ll get this notification, and if you look in the folder where your ROM was located, you should see a new file created.

Note that if you load up a game larger than 8 Mbits, it’ll split the ROM into multiple files. You can do this like I mentioned, but you’ll need to wire up some extra hardware and chips, but really, it’s such a hassle so I don’t recommend doing it.

Explanation of SwapBin

This is really only if you’re curious why we do this step. If you’re not, carry on to Step 7a.

Compare the pinouts between the SNES ROM socket and the 27C801 EPROM we are going to use. Like the NES, the SNES games use a proprietary pinout for the ROMs, so we need to do some rewiring.

epromvsmaskrom.png

However, many of these pins line up to other data pins. For example, pin 1 on the 27C801 is A19, but on the SNES PCB, this pin is A17. So, instead of having to rewire A17 and A19 to different places, we can use software to digitally swap these two address pins by modifying the ROM. That way, we can emulate a different pinout for the EPROM.

SNES ROM Utility switches A19 with A17 and A16 with A18. Now there’s only two extra wires we’ll have to solder for this EPROM to swap /OE and A16 (since /OE can’t be changed).

Now that you know why we’re doing this SwapBin business, skip ahead to Step 7a.

Back to top of Step 6a


Step 6b: Finalize files for programming (27C160)

If you have a programmer that can natively program a 42-pin EPROM, then all you have to do is remove the header, if you have one (remember, uCon64 wells you if you have a header). Easy! Load up your ROM in the utility and select “Remove Header.” Then skip ahead to Step 7b.

If you have a TL866, you’ll need the 27C322/160 programming adapter. What the adapter board does is trick the TL866 into thinking we’re programming a different EPROM. The EPROM we’re going to tell it to program is only 4 Mbits large. Using this EPROM normally would only utilize address pins A0 through A17. The 27C160 goes up to A19. By manually controlling A18 and A19, we can program our ROM in 4 Mbit chunks. Four of these chunks makes a full 16 Mbit.

All you need to do is load your ROM into the utility, and check the “Split File” button. Then, on the drop down menu, pick the 512 kB option (512 kilobytes = 4 megabits). Luckily, if the ROM has a header, the Split File option will automatically remove it for us when it splits!

snesromutility_16mbitcen

Since this ROM is 16 Mbit, it will split into 4 separate files. Your folder should now contain multiple files that are 512 KB large. Now, skip ahead to Step 7b where we’ll program these chunks individually into our EPROM.

Back to top of Step 6b


Step 6c: Finalize files for programming (27C322)

If you have a programmer that can natively program a 42-pin EPROM, and your game is 32 Mbit or less, then all you have to do is remove the header, if you have one (remember, uCon64 wells you if you have a header). Load up your ROM in the utility and select “Remove Header.” Easy! Then, skip ahead to Step 7c.

If you’re making an ExHiROM game, or game larger than 32 Mbit, and your programmer can program a 27C322 without the adapter, you’ll still need to do a bit of extra work, so skip ahead to this section. If you need the adapter for your TL866 or other programmer without native 27C322 support, continue reading.

As I said, if you have a TL866, you’ll need the 27C322/160 programming adapter. What the adapter board does is trick the TL866 into thinking we’re programming a different EPROM. The EPROM we’re going to tell it to program is only 4 Mbits large. Using this EPROM normally would only utilize address pins A0 through A17. The 27C322 goes up to A20. By manually controlling A18, A19, and A20, we can program our ROM in 4 Mbit chunks.

All you need to do is load your ROM into the utility, and check the “Split File” button. Then, on the drop down menu, pick “512 kB”(512 kilobytes = 4 megabits). Luckily, if the ROM has a header, the Split File option will automatically remove it for us when it splits!

32mbitcen

Since this ROM is 32 Mbit, it will split into 8 separate files. Your folder should now contain multiple files that are 512 KB large. Now, skip ahead to Step 7c to learn how to program these chunks individually into our EPROM.

Using multiple 27C322s

If you’re using my programming adapter for the TL866, and you followed the instructions above, you should have split your ROM file already into 4 Mbit chunks. That’s all you’ll need, so go ahead and move on to Step 7c. If your programmer can handle the 27C322 without the programming adapter, then you’ll have to do a bit more work.

First, check the “Split File” option. Now, choose the “2048kB” option (2 Mbyte, or 16 Mbits) and click OK. In this example, the ROM is 6 Mbyte large (48 Mbits), so this will split it into 3 files, each 2 MByte large (16 Mbits).

exhicen

Now you should have 3 files in your folder that are 2 Mbyte large. That means we’ll have to stitch the first two together to get a full 4 Mbyte, or 32 Mbit, file for the first EPROM, and put the last 16 Mbit file on the second EPROM.

We need to stitch together the two files that end in 01 and 02 to make the file for the first EPROM. We can do this easily in the command prompt, but first we should rename the files to something short to make it easier for us to type – let’s do ROM_01 and ROM_02. Maybe name it something relating to your game.

Now, open a new command prompt window, and mount it to the folder your pieces of the ROM are in. Type in this command:

copy /B "ROM_01.sfc" + "ROM_02.sfc" ROM_A.sfc

This will create a new file, ROM_A.sfc, that will be a combination of both the files stitched together. MAKE SURE you have the order correct! This is what the command prompt should look like:

romcopy

Now, you should go ahead and rename the third file (the one that ends in _03) to ROM_B, for consistency. You should now have two files – ROM_A, which is 4 MByte (32 Mbit) large and will go on the first EPROM, and ROM_B, which is 2 Mbyte (16 Mbit) large and will go on the second EPROM. Note that the second EPROM won’t be filled completely – this is OK. I’ve tested it and it still works with the second half of the chip empty.

If you have a ROM hack or other game that is larger than 48 Mbit, you’ll still need two 32 Mbit EPROMs, but you’ll have to stitch the 03 and 04 files into one file using the same method. Now, skip ahead to Step 7c to find out how to program your EPROMs.

Back to top of Step 6c


Step 6d: Finalize files for programming (29F033)

This step is super easy if you’re only using one 29F033 EEPROM. If when you load your game into the Utility, and it shows that it has a header, just check the “Remove Header” option and click OK. If you don’t have a header, and your game is 32 Mbit or less, then you’re already done! Go to Step 7d.

Using multiple 29F033s

If you’re using multiple 32 Mbit EEPROMs because your game is larger than 32 Mbit, check the “Split File” option. Now, choose the “2048kB” option (2 Mbyte, or 16 Mbits) and click OK. The example ROM below is 6 Mbyte large (48 Mbits), so this will split it into 3 files, each 2 MByte large (16 Mbits).

exhicen

Now you should have 3 files in your folder that are 2 Mbyte large. That means we’ll have to stitch the first two together to get a full 4 Mbyte, or 32 Mbit, file for the first EEPROM, and put the last 16 Mbit file on the second EEPROM.

We need to stitch together the two files that end in 01 and 02 to make the file for the first EEPROM. We can do this easily in the command prompt, but first we should rename the files to something short to make it easier for us to type – let’s do ROM_01 and ROM_02.

Now, open a new command prompt window, and mount it to the folder your pieces of the ROM are in. Type in this command:

copy /B "ROM_01.sfc" + "ROM_02.sfc" ROM_A.sfc

This will create a new file, ROM_A.sfc, that will be a combination of both the files stitched together. MAKE SURE you have the order correct! This is what the command prompt should look like:

romcopy

Now, you should go ahead and rename the third file (the one that ends in _03) to ROM_B, for consistency. You should now have two files – ROM_A, which is 4 MByte (32 Mbit) large and will go on the first EEPROM, and ROM_B, which is 2 Mbyte (16 Mbit) large and will go on the second EEPROM. Note that the second EEPROM won’t be filled completely – this is OK. I’ve tested it and it still works with the second half of the chip empty.

If you have a ROM hack or other game that’s larger than 48 Mbit, you’ll still need two 32 Mbit EEPROMs, but you’ll have to stitch the 03 and 04 files into one file using the same method. Now, skip ahead to Step 7d to find out how to program your EEPROMs.

Back to top of Step 6d


Step 7a: Burn your ROM (27C801)

As usual, make sure you blank check your EPROMs before you program them and clear them if necessary. I think you’re smart enough to figure out how to program your EPROMs with your programmer, especially if its the TL866 – it’s super easy to figure out. I believe in you! You’ll also want to tape over the little window so the games don’t get randomly corrupted sitting out on your desk.

Now go ahead and skip ahead to Step 8, where we’ll get our board ready.

Back to top of Step 7a


Step 7b: Burn your ROM (27C160)

These instructions are for the TL866. If you’ve got a different programmer, go ahead and burn your ROM, then skip to Step 8.

Burning your 16 Mbit EPROM, as I mentioned before, requires you to trick the programmer. What we’re going to do is program the 4 Mbit chunks we just made, and manually change the A18 and A19 pins. You can do this yourself by making your own adapter, or you can buy mine.

The 27C160 is programmed through the data pins Q0 – Q15. This is a bit different than the 8 Mbit EPROMs and the 32 Mbit EEPROMs, which only use 8 data pins (Q0 – Q7). In its default state, the 160 is a 16-bit EPROM, though, we can make it output in 8-bit mode, which will be covered later. For now, we just need to know that we need to program our ROMs using all 16 bits.

As I said earlier, the TL866 doesn’t support the 160. However, it does support other, smaller 16-bit EPROMs, like the 27C4096. The 4096 is a 16-bit EPROM, however, it can only store 4 Mbit of data. That’s why we split the ROM into 4 Mbit chunks. We’re going to trick the TL866 into thinking we’re programming the 27C4096, when in reality, we’re going to be programming our 27C160 and manually switching the top two bits, A18 and A19, between 0 and 1. This will give us 4 sections of 4 Mbit chunks, for a total of 16 Mbits. A18 and A19 represent what’s known as “banks” of data.

Using the ready made adapter

Here’s what my adapter board looks like:

etsy_322programmer_minipro2

As you can use this adapter for the 27C322’s as well, make sure the switch is in the 27C160 position.

If you’re instead interested in making your own adapter, I provide the schematic and details of operation over on my documentation page.

Programming the 27C160

So now, you can get to programming. Load up the 27C4096 chip on the TL866 software, and load up the first file from your ROM (ending in _01). Change the VPP to 12.5 V, as this is dictated for programming voltage in the datasheet for the 160. Then, uncheck the “Check ID” option. If you have a TL866II, then you’ll also have to uncheck “Pin Detect”. Your window should look similar to this:

minipro160.png

Here’s a table of how data is programmed into the EPROM. If A18 or A19 is a “0”, that means tie it to GND, or if you’re using the adapter, put the switch in the “OFF” position. If it’s a “1”, that means tie it to VCC, or if you’re using the adapter, put the switch in the “ON” position. Program the 4 Mbit chunks that were made by SNES ROM Utility in sequential order in the banks.

banks.png

If you get an error while programming with the MiniPro – make sure your chips are in the correct orientation, each bank is blank, and that you’ve selected a 27C4096 EPROM from the Select IC list! Also, make sure you’ve got the switch on the adapter board on the 160 option (if you’re using the combination adapter board). Now, tape over the window on top of the EPROM to prevent data decay, and carry on to Step 8.

Back to top of Step 7b


Step 7c: Burn your ROM (27C322)

These instructions are for the TL866. If you’ve got a different programmer, go ahead and burn your ROM, then skip to Step 8. Be sure if it’s a game that uses two ‘322s to mark the two halves correctly so you don’t mix them up.

Burning your 32 Mbit EPROMs, as I mentioned before, requires you to trick the programmer. What we’re going to do is program the 4 Mbit chunks we just made, and manually change the A18, A19, and A20 pins. You can do this yourself by making your own adapter, or you can buy mine.

The 27C322 is programmed through the data pins Q0 – Q15. This is a bit different than the 8 Mbit EPROMs and the 32 Mbit EEPROMs, which only use 8 data pins (Q0 – Q7). We’ll have to add a bit of extra circuitry to use them in the SNES cartridge, but for now, we just need to know that we need to program our ROMs using all 16 bits.

As I said earlier, the TL866 doesn’t support the 322. However, it does support other, smaller 16-bit EPROMs, like the 27C4096. The 4096 is a 16-bit EPROM, however, it can only store 4 Mbit of data. That’s why we split the ROM into 4 Mbit chunks earlier. So we’re going to trick the TL866 into thinking we’re programming the 27C4096, when in reality, we’re going to be programming our 27C322 and manually switching the top three bits – A18, A19 and A20 – between 0 and 1. This will give us 8 sections of 4 Mbit chunks, for a total of 32 Mbits. A18, A19, and A20 represent what’s known as “banks” of data.

Using the ready made adapter

Here’s what my adapter board looks like:

etsy_322programmer_minipro2.jpg

As you can use this adapter for the 27C160’s as well, make sure the switch is in the 27C322 position (shown above).

If you’re instead interested in making your own adapter, I provide the schematic and details of operation over on my documentation page.

Programming the 27C322

So now, you can get to programming. Load up the 27C4096 chip on the TL866 software, and load up the first file from your ROM (ending in _01). Change the VPP to 12.5 V, as this is dictated for programming voltage in the datasheet for the 322. Then, uncheck the “Check ID” option. If you have a TL866II, then you’ll also have to uncheck “Pin Detect”. Your window should look similar to this:

minipro160.png

Here’s a table of how data is programmed into the EPROM. If A18, A19, or A20 is a “0”, that means tie it to GND, or if you’re using the adapter, put the switch in the “OFF” position. If it’s a “1”, that means tie it to VCC, or if you’re using the adapter, put the switch in the “ON” position. Program the 4 Mbit chunks that were made by SNES ROM Utility in sequential order in the banks.

322_table.png

If you get an error while programming with the MiniPro – make sure your chips are in the correct orientation, each bank is blank, and that you’ve selected a 27C4096 EPROM from the Select IC list! Also, make sure you’ve got the switch on the adapter board on the 322 option.

If you have a second EPROM for larger games, then do this process again for your second 27C322 and your second set of ROM chunks. Make sure to mark your EPROMs so you know which is the first half and which is the second half.

After you program your eight chunks, tape over the window on top of the EPROM to prevent data decay, and carry on to Step 8.

Back to top of Step 7c


Step 7d: Burn your ROM (29F033)

If you’re using the surface mount EEPROM with the adapter board I mentioned earlier, you’ll need to do a bit of extra wiring to accommodate for the breakout board. Nothing extreme! The good news is your board will look much cleaner in the end compared to the boards you make using the DIP package EPROMs from above.

Preparing the DIP36-TSOP40 Board

On the DIP36-TSOP40 adapter board, you might have noticed a few extra pads on the top of the board. (The board I’m using for this example is from buyicnow.com, it’s version III. Other versions should work fine, but you’ll need to check for differences).

20170903_160404_markup

The pads we are going to worry about (R1 and R3) connect to the RESET and the /WE pins. These pins aren’t directly routed to any of the pins for the DIP package, as the SNES ROMs don’t use these pins. But, in order to program our 29F033, we need to do something about these pins. R1 connects the RESET pin to Vcc. This will ensure the chip is always on, which is obviously what we want. R3 connects the /WE (write enable) pin to pin 36 on the DIP package. This will be used by our programmer to enable writing the code to the chip, but when the adapter board is connected to the SNES PCB, this pin will be pulled to Vcc during operation, ensuring the chip never re-enters Write mode.

We need to short both R1 and R3. The easiest way to short these pads is to strip back a wire that covers both pins, solder both pads onto the wire, and then clip the remaining piece of wire. If you want, you could also spread some flux on the pads and short them that way, but be careful not to heat up the pads too much, because you don’t want them to fall off (which is something I’ve done…)

20170903_162959

You can completely ignore SJ1 and R2. Not necessary for our project.

Using the ready-made adapter

Normally, to program surface mount chips, you usually need to get some sort of adapter for your programmer. They look like this:

adapter

All you do is drop your surface mount chip in the little box and make sure the pins are lined up, and you can program it like a normal through-hole chip. Now, these things are stupid simple. They’re literally just traces that reroute the tiny little pins on the surface mount package to larger, DIP-sized pins that your programmer accepts. I get that it’s a niche product, but still. I don’t want to drop extra cash on one of these things. If you think you’ll be programming a ton of these little guys, you can go ahead and pick one up, but I don’t use EEPROMs all that much outside of these reproductions.

With our DIP36-TSOP40 adapter board, we kind of have an adapter already. It’s just attached to a single chip. The problem is, this adapter board we have adapts the pinout to the SNES Mask ROM pinout, which is (unsurprisingly) NOT the same pinout that our programmer uses. So we have to make an adapter for our adapter.

yodawg

That was hard to type. Anyway, here’s what my adapter adapter looks like.

If you want to learn how to make your own instead, head over to my documentation page. Once you have your adapter ready, place your chips in and blank check, clear if you need to, and program your game.

If your game is going on two separate EEPROMs because it’s larger than 32 Mbit, make sure you label the EEPROMs accordingly.

Back to top of Step 7d


Step 8: Double check your chips, and prepare the board

You should definitely check off all these boxes before you go any further. Once you’ve soldered your chips in, getting them out is a risky and very frustrating process! I’ve killed at least a few boards because I ripped the pads off from desoldering and soldering so much. Maybe you should make a prototype board to try them out before soldering? Anyway, ask yourself the following:

  • If using a donor board, is it compatible with my desired game (bank type, region, etc)?
  • Did the ROM run on an emulator correctly?
  • Did I remove the header from the ROM file?
  • Are there any broken traces on the board, specifically beneath where I will be placing the chips?
  • Is there any extra solder anywhere on the board that might be making unwanted connections?
  • Did I run ucon64 a final time to absolutely make sure the checksums are correct?
  • If I split the ROM into multiple chunks for multiple chips, did I label them correctly?
  • If I split the ROM into multiple chunks for the 160 or 322, did I program the banks in the correct order?

Making sure you’ve done these things will save you a lot of time and a lot of headaches, so make absolutely sure you’ve followed them.

Now, if you’re using a custom PCB, you can skip ahead all the way to Step 9g. As for you donor people, have you gotten all your materials from eBay in the time it took you to read through this wall of text yet?

SNES games can have a lot of different chips, but you’ll only need to worry about one at this point – the original ROM chips. You’ll want to keep all the other chips exactly where they are. Some games have two or three ROMs, but this is uncommon – I won’t be covering those cases in this tutorial, because if I did, this tutorial would be at least twice as long! The ROMs are denoted on the PCB in some way, it’ll say “MASK ROM” or some variant of it. If your game doesn’t have any RAM or specialty chips, the ROMs will be the only large chips on your board.

20170906_224423_2

You can see above that U1 is labelled as MASK ROM, which is the chip we need to remove. U2 is the SRAM, which we want to keep in the board.

Note that if you’re using one of my extended adapter boards, you don’t need to remove the original ROM! Very handy! Go ahead and skip ahead a few paragraphs.

Removing the mask ROM from their boards is kind of difficult, but you have a few options. The easiest way to remove these is to use a desoldering gun, that is, a soldering iron connected to a vacuum. These are pretty pricey, so I don’t necessarily recommend getting one for this. I use a vacuum pump desolder tool. I bought this model, and it works well enough.

Another easy option is to just take a Dremel or wire clippers and physically cut all the pins on the chip, then heat up each individual pin left in the hole with a soldering iron and use pliers to pull them all out. It’s not like you’re gonna need the original ROM when you’re done. Yet another option is to use copper wick to pull the solder off the pins. If you’re going to go this route, you should use some flux as well, to help the solder come off of the pins.

As for boards with surface mount ROMs, like the SA-1 boards, my best advice is to use a heat gun. This is a tool that blows hot air in order to melt solder, without having to use a soldering iron. My soldering station came with one attached. It’s not too useful for through-hole parts, but indispensable for surface mount parts. When you use it, just make sure you keep the gun moving, so you don’t overheat one area of the board more than another. It takes a bit to get the solder to melt, but when you do, the parts should pop off without any effort, just poke it with tweezers. I recommend looking up some tutorials on Youtube for how to use them properly. I am not responsible for any damage you do to your hardware!!

sa1_2

Whatever method you decide to do, make sure not to cut any other traces while you’re doing it! You’ll also want to get rid of all the extra solder left in the holes. Now, it’s time to put your chips onto your board.

Step 9a: Install a 27C801 EPROM on the donor board

Step 9b: Install a 27C160 EPROM on the donor board

Step 9c: Install a 27C322 EPROM on the donor board

Step 9d: Install multiple 27C322 EPROMs on the donor board (ExHiROM games)

Step 9e: Install a 29F033 EEPROM on the donor board

Step 9f: Install multiple 29F033 EEPROMs on the donor board (ExHiROM games)

Step 9g: Populate your custom PCB

Back to top of Step 8


Step 9a: Install 27C801 EPROMs on the donor board

It’s very important to note that usually, the Mask ROM socket on the original SNES PCBs have 36 holes. Like the NES, Nintendo made these boards usable for many different sized games. A 32-pin Mask ROM on a standard SNES game holds games up to 8 Mbit, and a 36-pin Mask ROM could (theoretically) hold up to a 64 Mbit game. Our 27C801 chips only have 32 pins, so we won’t be using the extra 4 holes . You should see a little marking on the board denoting which extra holes are used for the 36-pin chips, and which are used for the 32-pin chips.

3236pin.jpg

Make sure when you put your EPROM in a 36-pin board that pin 1 of your EPROM lines up with pin 1 of the 32-pin socket (or pin 3 of the 36-pin socket).

Now, bend up pins 24 and 31 on your EPROM. Bend the pins SLOWLY and carefully using pliers to make sure they do not snap. Also, solder wires onto the socket holes 24 and 31. These don’t have to be super long, but you’ll have an easier time if you have ample room. Also, try to use thinner wires if you can. This will prevent putting too much stress on your EPROM pins so they won’t snap off.

20170913_180505cen

Now, place your EPROM with bent pins into the socket. Solder the wire from hole 24 to EPROM pin 31, and solder the wire from hole 31 to EPROM pin 24.

20170913_181257_censored

Note that keeping the wires shorter (and using thinner wires) helps to make your game easier to fit back into the SNES cartridge. Skip ahead to Step 10 to test your game out.

Back to top of Step 9a


Step 9b: Install 27C160 EPROMs on the donor board

If you’re using one of the 27C160 adapters that I offer (either the compact or extended version), read the article linked there to see how to attach it to your board – luckily, it’s pretty easy to do. Then, skip ahead to Step 10. But if you want to wire the chip up yourself, read on.

The 27C160 is a 16 Mbit EPROM, but that data output can be organized as 8 bits long, or 16 bits long. If the chip is in 8-bit mode, you can store up to 2 Mbit address locations on the A pins. If it’s in 16-bit mode, you can store up to 1 Mbit address locations on the A pins. Since the SNES reads data in an 8-bit bus, we need to put the EPROM into 8-bit mode. This is done by setting the /BYTE pin to LOW logic, or connected to GND. Doing this causes pin 31, labelled as Q15A-1, to act as the new A0, and offset all the address pins by 1 location. So, essentially, A19 will become A20, A18 will become A19, and so on.

Wiring only one of these babies without an adapter board isn’t hard, just a bit tedious. Just follow this handy table down below. You need to wire the pins from the 27C160 to the corresponding socket number on the SNES cartridge. So, for example, pin 1 on the 27C160 goes to hole 32 on the SNES board.

160toSNES

If your cartridge only has a 32-pin slot, then you may be out of luck – your board may not support games larger than 8 Mbit. I recommend only making games that are 8 Mbit or smaller for PCBs with 32-pins. Because there are many variations of wiring on donor boards, I won’t be going into how to expand the ROM size past 8 Mbit on 32-pin SNES boards. You can still use a 27C160 with an 8 Mbit ROM, just be sure to wire the top address pin on the 27C160 (A19, pin 42) to GND. This will effectively cut the size of the 27C160 in half.

Anyway, follow the table, or use one of my adapter boards to do the rewiring for you.

Now, skip ahead to Step 10 to see if your hard work has paid off!

Back to top of Step 9b


Step 9c: Install one 27C322 EPROM on the donor board

If you’re using one of the 27C322 adapters that I offer (either the compact or extended version), read the article linked there to see how to use it in your board. If you’re using the SA-1 adapter board, then read the article there instead for details on how to use it. Then, come back here and skip ahead to Step 10. But if you want to wire the chip up yourself, read on.

If you look at the pinout of the 27C322, you’ll notice the data pins go from Q0 to Q15. As I mentioned earlier, that’s because this is a 16-bit EPROM, where each word is 16 bits instead of the 8 bits the SNES uses. When we programmed our 322 using our ROM that was meant for reading in 8 bits, we smashed two 8-bit words into one 16-bit word. So the first address of the 322 contains the first TWO addresses the SNES will use.

Compare the left window here, which is an 8-bit EPROM, with the 16-bit EPROM on the right. Again, these numbers are in hexadecimal, or four binary bits. So you’ll see on the 8-bit bus two-digit hex numbers, while on the 16-bit bus you’ll see four-digit hex numbers.

8bitvs16bit.png

Let’s use the first two addresses, which are 0x78 and 0x18, as an example. If on a 16-bit EPROM we read only D0 to D7 (0x78), we’re completely missing all the data on D8 to D15 (0x18) – with each increasing address request from the SNES, we’re skipping every other 8 bits segment. In effect, on a 16-bit EPROM, A0 from the SNES should point to the bottom half (A0 = 0) or top half (A0 = 1) of each word. And therefore, A1 from the SNES is acting like the 27C322’s A0 pin. So all we have to do is shift the address pins from the SNES one position – A1 on the SNES is connected to A0 on the 322, A2 on the SNES is connected to A1 on the 322, etc. Then, we use the A0 pin from the SNES to control which half of the 16-bit word we read from. We can do this using a multiplexer.

A multiplexer is a device that is essentially a digitally controlled selector switch. In our case, we need eight separate switches to change between two different data lines all at the same time. D0 on the SNES should either read D0 or D8 from the 322 EPROM, D1 on the SNES should either read D1 or D9 from the 322 EPROM, and so on. When A0 from the SNES is 0, the multiplexer will route D0 to D7 from the 322 to the SNES, and when A0 from the SNES is 1, the multiplexer will route D8 to D15 from the 322 to the SNES. Make sense?

mux

The 74HC257 is a quad-package two-line multiplexer. If we use two of them in parallel, we can control all eight data lines. So, you’ll want to follow this table to connect your cartridge, multiplexers and EPROM:

322_table_tosnes.png

If your cartridge only has a 32-pin slot, then you may be out of luck – your board may not support games larger than 8 Mbit. I recommend only making games that are 8 Mbit or smaller for PCBs with 32-pins. Because there are many variations of donor boards, I will not be going over how to expand the ROM space available past 8 Mbit on 32-pin SNES boards. If you still want to use a 27C322 to make an 8 Mbit or smaller game, though, just be sure to wire the top two address pins of the 27C322 (A19 and A20, pins 42 and 32, respectively) to GND. This will effectively cut the total space of the 27C322 down by a factor of 4.

Here’s a schematic of how you’ll want to connect the multiplexers, if it’s easier for you to follow. I won’t include a schematic of where the EPROM pins go, since it’s a lot easier to just follow the left side of the table above.

322_mux_schem

When I went to wire this, I only had surface mount multiplexers lying around, but you can use through-hole for easier soldering. As I mentioned, I’ve only made reproductions with 27C322’s with my adapter boards, so I only have a picture of that here for reference.

20190903_234437-1.jpg

Now, head to Step 10 and we’ll finish up the game.

Back to top of Step 9c


Step 9d: Install multiple 27C322 EPROMs on the donor board (ExHiROM)

If you’re going to make a true ExHiROM game with 27C322’s, I’m going to recommend you use my 27C322 extended adapter. This will allow you to stack both of the EPROMs on top of each other and save a lot of extra wiring. But, if you really wanted to, you can just wire up the chips by themselves using the wiring specified on the product page.

Again, this process is not guaranteed to work with every game larger than 32 Mbits, only true ExHiROM games. ROM hacks and translations likely do not use true ExHiROM mapping, and should be made with a custom board.

Another disclaimer here is that I’m going to only give instructions on how to make this with HiROM boards that have one 36-pin ROM socket and a MAD-1 decoder. If you have a ‘139 decoder, or a HiROM board with multiple ROMs on it, I’m not going to cover it here, as they are less common or characteristic of more expensive games you shouldn’t be using as a donor! Remember, you can check your donor game out on SNES Central to see what kind of board it comes with.

There are a few pins you gotta take care of. Carefully bend up pin 13 on your two EPROMs, making sure not to flex them too much – they can be easy to break off if you’re not careful. I also recommend cutting off the thinner section of the pin to make it fit inside the cartridge better. Pin 13 is the /CE or chip enable pin. When this pin is driven to GND, the EPROM is allowed to make output. So what we’re gonna do with these two pins is alternate which EPROM is enabled using the MAD-1 decoder chip.

IMG_20200517_205850_edit

On the MAD-1, take it out of the socket and bend up pin 13, or carefully clip pin 13 and bend it up without taking the chip out. This pin is partially responsible for the output of pins 1 and 16. This is just one function of the MAD-1 decoder, and on boards with two ROM chips, pins 1 and 16 are normally tied to the /CE pins of each ROM to switch between the lower or upper ROM. Since our ExHiROM game is larger than 32 Mbit, the max size expected on normal HiROM boards, we need to change when pins 1 and 16 switch, so that the MAD-1 selects the lower or upper 32 Mbits.

20170928_213533

Now, we should also disable the original ROM on the board, as is necessary with using the extended adapter boards. Cut pin 33, and solder the remaining pin connected to the original ROM to pin 34, like as seen here.

83726092_790083854836942_4946097665357119488_n

Ok, so now solder the extender adapter onto the board using the 36-pin ROM pins on the bottom of the board. You don’t have to worry about getting it perfectly flush against the donor board, because leaving a bit of extra room on the back might help the board fit nicer.

84143959_347153259503977_6449461889700200448_n - Copy

So now you should have your extender board in, with space above your donor board to fit the 27C322’s. How will we fit two, you ask? All we have to do is stack them on top of each other, making sure pin 13 on each do not touch. First, install your first EPROM in the 42-pin socket and solder it down. Then, stack your second EPROM on top of the first one and make sure it sits as close as possible to the first EPROM – this shouldn’t be hard as long as you don’t have too much solder on your pins. Then, solder the second one down on top of the first. Here’s what it should look like.

IMG_20200517_210005

So, as the picture implies, you’ll be soldering wires now! Solder wires as follows:

  • EPROM #1 pin 13 to MAD-1 pin 1
  • EPROM #2 pin 13 to MAD-1 pin 16
  • MAD-1 pin 13 to Mask ROM pin 35

Make sure your wires don’t sit on top of the double-stacked EPROMs, otherwise your cartridge won’t close. Route the wires around the EPROMs.

IMG_20200517_205921

Now, it should fit in the cartridge ok. You might have to cut off a bit of plastic inside the cart, depending on how far your bent pins stick out, but the one I made fit alright.

IMG_20200516_232228

The double stacked EPROMs sit directly on top of the plastic, as you can see, so that’s why we don’t want any extra wires on top of them. The cartridge edge sits nicely in the slot, but you can see a very slight tilt to the whole thing. This doesn’t actually make anything more difficult to fit in the cartridge slot though, it still fits just fine. That’s why I had mentioned having the adapter board sit farther up on the original ROM pins, to space it out away from the donor board, since there is a bit more room on the opposite side of the cartridge.

Great! Now, go ahead and skip to Step 10.

Back to top of Step 9d


Step 9e: Install one 29F033 EEPROM on the donor board

If you are using the one 29F033 chip, assuming the game programmed correctly your life is comparatively easier at this step. Just plop your little adapter board into the place where the other ROM was. Make sure you’re putting in the chip in the correct orientation!

20170903_162933-e1504750339546.jpg

You need to make absolutely sure your game is programmed correctly before you solder it into the socket. You don’t want to spend all that extra time desoldering a chip you found out was programmed incorrectly! Once you’re sure, go ahead and secure the header pins with solder and trim the bottoms off. In the picture below, the top row is uncut, and the bottom row is cut.

20170903_163225.jpg

You can see the difference! Be careful when you’re clipping these – you don’t want one to fly into your eyeball. This has happened to me. It is not pleasant. Clip them into a trash can or something.

If your game only has 32 pins for the socket, then you may be out of luck – your board may not support games larger than 8 Mbit. I recommend only making games that are 8 Mbit or smaller for PCBs with 32-pins. Because there are many variations of donor boards, I will not be going over how to expand the ROM space available past 8 Mbit on 32-pin SNES boards. If you still want to use a 29F033 to make an 8 Mbit or smaller game, though, just be sure to wire the top two address pins of the adapter board (A20 and A21, pins 1 and 2, respectively) to GND. This will effectively cut the total space of the EEPROM down by a factor of 4.

Now, go ahead and skip to Step 10.

Back to top of Step 9e


Step 9f: Install multiple 29F033 EEPROMs on the donor board (ExHiROM)

A short disclaimer here: I’m going to only give instructions on how to make this with HiROM boards that have one 36-pin ROM socket and a MAD-1 decoder. If you have a ‘139 decoder, or a HiROM board with multiple ROMs on it, I’m not going to cover it here, as they are less common or characteristic of more expensive games you shouldn’t be using as a donor! Remember, you can check your donor game out on SNES Central to see what kind of board it comes with.

Again, this process is not guaranteed to work with every game larger than 32 Mbits, only true ExHiROM games. ROM hacks and translations likely do not use true ExHiROM mapping, and should be made with a custom board.

The first thing you’ll need to do is remove your MAD-1 decoder from the PCB. Here’s what your board should now look like, and the components you’ll be using.

20170927_221729.jpg

Bend up pin 13 on the MAD chip, and place it back into the board. If it’s easier for you, you can try just cutting the pin without removing the chip, but make sure you can still access pin 13 coming from the MAD-1 chip.

20170928_213533.jpg

Now, remove pin 33 from the header on the FIRST EEPROM. This is the /OE (output enable) pin, which will be controlled by the MAD-1 chip. Put the EEPROM in the socket, making sure it’s in the correct orientation, and solder it in. Remember, you’ll be missing pin 33, so don’t solder anything on that. Do NOT trim the header pins on the back yet!

Now, you have one of two choices. If you want a cleaner looking assembly, remove the header pins on the SECOND EEPROM adapter board. Make sure all the solder is out of the holes, and place it on the back of the board on the header pins from the FIRST EEPROM, like a sandwich. Make ABSOLUTELY SURE the board is facing the exact same orientation as the first board so that pin 1 on “A” is connected to pin 1 on “B” and so on. You don’t want to put it in backwards or upside-down!!

20170928_223905_edit.jpg

If removing the header pins is too much of a pain for you (completely understandable), then you can connect each pin from EEPROMs “A” and “B” together with wires. But, make sure you do NOT wire the pin 33’s together!

Now, you should have a board with two TSOP adapter boards connected in parallel, either through wires or the sandwich method, with pin 33 disconnected to everything on both boards. You should also have a MAD-1 chip with a floating pin 13.

Connect pin 13 on the MAD-1 board to pin 35 on the TSOP adapter boards. Make sure both pin 35’s are connected! Then, run a wire from the “A” EEPROM pin 33 to pin 1 on the MAD-1 chip. Finally, run a wire from the “B” EEPROM pin 33 to pin 16 on the MAD-1 chip. Note that pin 1 and 16 on the MAD-1 chip are still in the board – this is because they’re not connected to anything on the board anyway, so we don’t have to pull them out. You can access them from the top of the board, or the back of the board. Here’s what it should look like afterwards (I used the sandwich method):

20171005_201000.jpg

20171005_201006.jpg

Now, you’re nearly done! Skip over to Step 10!

Back to top of Step 9f


Step 9g: Populate your custom PCB

Using my custom SNES boards gives you a TON of options. The boards may look daunting, but it’s not too bad. I’ll try to split it up into discrete sections to make it easy to follow. Let me know if these explanations are confusing, and I’ll do my best to make it a bit easier to follow. Alternatively, you can view the pages on the Basic Board or Advanced Board separately.

If you’re using the Advanced Board, skip ahead to that section.

Basic Board

As mentioned previously, this board is good for affordable smaller games, or for replacing original SNES PCBs. There are two main modes you can use this board in, which I’ll be denoting with differently colored boxes.

Topside

Note that for every non-discrete part you use, there should be a corresponding ceramic capacitor. So, each of the red and purple boxes (except the battery, resistors, diodes, and transistor) should be accompanied by a 100 nF ceramic decoupling capacitor. This is ESPECIALLY important for the CIC. Furthermore, C1 is a 22 uF electrolytic capacitor that is needed for every game.

In general, for the logic chips (the 74 series parts) you can use either the 74HC, 74HCT, or 74LS versions of the parts. I have heard mixed things about using 74AC or 74ACT parts on old tech, so I avoid using these.

Parts required for every game (red boxes)

ROM: There are two sets of ROM sockets – the bottom set mimics the original SNES Mask ROM pinout and can also house the 27C801s (through the use of pads on the back, which will be explained in a bit), and the top set can use 27C160s for games up to 16 Mbit. ONLY use one set of these, not both. For whichever set you have parts for, use the bottom rows for LoROM games, and the top rows for HiROM games.

CIC/12F629: On the Basic board, there are sockets for either the original CIC, or the clone region lock-out chip, or SuperCIC. Only use one of these chips, not both! This will be required for the game to run on all un-modded SNESes. And be sure the decoupling capacitor is installed! If you’re using a 12F629 as a SuperCIC, and you didn’t get one pre-programmed, I’ll go over how to set one up at the bottom of this step. You can program these on the TL866.

Parts required for games that use SRAM (purple boxes)

Use all the parts boxed in red, as they are required for every game.

74xx139: Switches between data access on the ROM and the RAM. Pick one for either HiROM or LoROM. If you put both in, it’ll still work ok, but you only need to use one of them.

SRAM: Stores save data, as well as other useful information during gameplay. The 6264, 62256, and 1008 series of SRAM are supported – be sure to use low standby current versions to make your save games last as long as possible. You can lower the total amount of the SRAM the game sees by using pads on the back (detailed later) so just pick a chip that’s at least as large as your space requirements.

Resistors: Use the values marked next to the resistors. These are used mostly as part of the SRAM data retention circuit. There are pads for either through-hole or surface mount parts.

Diodes: Use pretty much any Schottky diode you’d like for D1 and D2 – I’ve been using BAT85s recently. Note that the black stripe should point to the right of the board. Polarity matters! Also, like the resistors, both through-hole and surface mount parts are supported.

Transistor: A 2N3904, 2N2222, or other equivalent NPN series of transistor. This is also part of the SRAM data retention circuit. Note that you only need to use one transistor, either a through-hole or a surface mount version.

CR2032: This is the coin cell battery that will retain your save data on the SRAM. I added holes for a lot of different battery holders.

Front solder pads (orange box)

For the topside, there is only one set of solder pads to worry about.

Decoder Bypass: Solder these only if you are making a game that does not utilize a 74xx139 in the purple boxes.

Now, to explain the backside.

Backside

Here’s how to configure the sets of solder pads on the back (though they are quite self-explanatory, in my opinion).

Pads required for every game (red boxes)

If you’re making a LoROM game, then solder the middle and lower pads together; if you’re making a HiROM game, then solder the middle and upper pads together.

If you’re using the bottom set of sockets for the ROM chip, then solder the two middle pads to the left to mimic the original SNES Mask ROM pinout; solder the two middle pads to the right to use a 27C801 instead. If you’re using a 27C160, you can ignore these pads.

Pads required for games that use SRAM (purple box)

The LoROM/HiROM pads are the same as the other groups of bank selection pads boxed in red, but the other SRAM pads need a bit of explanation.

SRAM Enable: The very left-most solder pads are marked “SRAM ENABLE”. If you are using SRAM, you must bridge this with solder. If you temporarily remove the solder while the SRAM is attached, the save data will be erased. You should do this if you change games on the same board. Don’t want garbage information coming from the SRAM to the new game.

SRAM Size Selection: Solder the pads accordingly to get the amount of SRAM your game uses. Follow the table to know which way to solder the pads. Here’s a reference table:

sramselect

That should be all the parts and pads you need to take care of. Skip ahead to find out how to program the SuperCIC if you have a blank 12F629, or skip to Step 10 if you don’t.

Advanced Board

This board is useful for larger games and multicarts. There are three main modes you can use this board in, which I’ll denote with differently colored boxes. Note that the pictures below show an older version of the board, but any newer versions I offer aren’t going to be appreciably different, so the pictures will still be accurate.

Topside

coloredboxes

Note that for every non-discrete part you use, there should be a corresponding ceramic capacitor. So, each of the red, purple, and yellow boxes (except the battery, resistors, diodes, and transistor) should be accompanied by a 100 nF ceramic decoupling capacitor. This is ESPECIALLY important for the CIC. Furthermore, C1 is a 22 uF electrolytic capacitor that is needed for every game.

In general, for the logic chips (the 74 series parts) you can use either the 74HC, 74HCT, or 74LS versions of the parts. I have heard mixed things about using 74AC or 74ACT parts on old tech, so I avoid using these.

Parts required for every game (red boxes)

ROM1: The 27C160 or 27C322 EPROM that holds your ROM data that you prepared earlier. Use the bottom rows for LoROM games, and the top rows for HiROM games.

74xx257: Multiplexers that convert the 16-bit databus of the EPROM to the 8-bit bus of the SNES. This is the only part I really recommend using the HCT or LS version over the HC, but I’ve still had success with all of them.

74xx139: Enables the output of the multiplexers (also helps switch between ROM1 and ROM2, but that feature is only used in Ex-mode or multicart mode). Note that this is the ‘139 located directly left of the bottom ‘257.

12F629: The clone region lock-out chip, or SuperCIC. This will be required for the game to run on all un-modded SNESes. Be sure the decoupling capacitor is installed! I’ll go over how to set one up at the bottom of this section, if you didn’t buy a pre-programmed one. You can program these on the TL866. Newer versions of the board also support surface mount versions of the part as well.

Parts required for games that use SRAM (purple boxes)

Use all the parts boxed in red, as they are required for every game.

74xx139: Switches between data access on the ROM and the RAM. Pick one for either HiROM or LoROM. If you put both in, it’ll still work ok, but you only need to use one of them. Note that this part is one of the ‘139s located directly left of the top ‘257, directly underneath the battery slot.

SRAM: Stores save data, as well as other useful information during gameplay. The 6264, 62256, and 1008 series of SRAM are supported – be sure to use low standby current versions to make your save games last as long as possible. You can lower the total amount of the SRAM the game sees by using pads on the back (detailed later) so just pick a chip that’s at least as large as your space requirements.
Note that if you are making a multicart, only 62256 and 1008 series of SRAM are supported, and you’ll need to kink out one of the legs of the SRAM chip to solder into the corresponding hole on the top of the board – pin 1 for 62256s, or pin 2 for 1008s.

Resistors: Use the values marked next to the resistors. These are used mostly as part of the SRAM data retention circuit. There are pads for either through-hole or surface mount parts.

Diodes: Use pretty much any Schottky diode you’d like for D1 and D2 – I’ve been using BAT85s recently. Note that the black stripe should point to the right of the board. Polarity matters! Also, like the resistors, both through-hole and surface mount parts are supported.

Transistor: A 2N3904, 2N2222, or other equivalent NPN series of transistor. This is also part of the SRAM data retention circuit. Note that you only need to use one transistor, either a through-hole or a surface mount version.

CR2032: This is the coin cell battery that will retain your save data on the SRAM. I added holes for a lot of different battery holders.

Parts required for games that use two ROM chips (yellow boxes)

Use all the parts boxed in purple and in red. This configuration is for Ex-mode games, or for multicarts (up to 32 Mbit ROMs on each slot).

ROM2: Holds either the second half of your larger-than-32-Mbit game, or the second ROM in the multicart. Program the same way you programmed ROM1 from earlier in the tutorial. And, like ROM1, use the bottom rows of sockets for LoROM games, and the top rows of sockets for HiROM games. Note that you must use the same mapping type on both sockets – you can’t use one LoROM and one HiROM ROM.

74xx74: Flip-flop that flips (or flops) between each ROM chip every time the reset button is pressed. Used for multi-carts (you don’t need it for Ex-mode games).

Front solder pads (orange box)

For the topside, there is only one set of solder pads to worry about.

Decoder Bypass: Solder these only if you are making a game that does not utilize a 74xx139 in the purple boxes.

Now, to explain the backside.

Backside

coloredboxes2

There are a lot fewer solder pads on the back than there were on the old board. Here’s how to configure them (though they are quite self-explanatory, in my opinion).

Pads required for every game (red boxes)

Choose the pads accordingly for your game. Note that you can only have one Ex-mode game on a cartridge, since you’ll be using both ROM slots for that.

Also, if you are using a 27C322, you must choose either the HiROM or LoROM pads depending on the game you are making. The 27C160 pad covers both HiROM and LoROM.

Pads required for games that use SRAM (purple box)

The single game/multicart and HiROM/LoROM pads are self explanatory, but here’s a bit more background for the other sets.

SRAM Enable: The very left-most solder pads are marked “SRAM ENABLE”. If you are using SRAM, you must bridge this with solder. If you temporarily remove the solder while the SRAM is attached, the save data will be erased. You should do this if you change games on the same board. Don’t want garbage information coming from the SRAM to the new game.

SRAM Size Selection: Solder the pads accordingly to get the amount of SRAM your game uses. Follow the table to know which way to solder the pads. Here’s a reference table:

sramselect

Pads required for games that use two ROM chips (yellow box)

Like the one for ROM1, solder the pads that correspond to the ROM option you have chosen.

That should be all the parts and pads you need to take care of. But for reference, here is a short explanation about how to program the SuperCIC. If you don’t need this, skip ahead to Step 10.

Programming the SuperCIC

Every SNES cartridge has a CIC chip to “unlock” the SNES to run the software on the cartridge. It interfaces with a CIC chip on the SNES console to check and make sure the region is correct. So any game we make is gonna need one itself. If you’ve got an extra one from an old game lying around, you can use that, but there’s a way to make one from a microcontroller. All we have to do is program a PIC12F629 with the “SuperCIC” code from the SD2SNES blog (based on the work from Segher at HackMii). Luckily, the MiniPro programmer we have has the capability to program the PIC. Follow the instructions on the site if you’re not sure how to program this correctly.

20180624_153654-e1532906003838.jpg

supercic.png

You shouldn’t run into too many problems, it’s a pretty simple process. If your game doesn’t immediately boot up, try pressing the reset button a few times to kick it to the correct region.

So now, you should have all the information you need to populate your board to get the results you want. Just finish putting your parts into their sockets, and you’re good to go!

Back to top of Step 9g


Step 10: Finish your game

When you put your board back in the cartridge, you might have to clip the little plastic stand-off on the back of the cartridge, especially if you used the TSOP adapter board because that’s gonna get in the way. Also, some plastic tabs around the top might need cutting as well, if you’re using an extended adapter board.

20170903_163910.jpg

Now close your game back up nice and tight. If you did everything right, you should be playing your game just fine! If not…. well here’s a few things you can try to fix it.

Troubleshooting tips

If you’re reading this section to fix a game, you should heed my earlier advice if you haven’t already, and invest in making a dedicated prototyping board with proper sockets for things like your EPROM. I have a few special boards set aside with these sockets so I can swap these chips in and out to test games before I solder them directly to the board. They are extremely handy. It’s pretty easy to make some test boards using my custom PCBs, so check them out if that sounds like something you’d like to try.

Here’s some tips you should follow before you give up (or ask me). This is the order I would try them in – it’s listed from shortest to longest amount of time to check. Please do these things before you message me or leave a comment, cause I’m gonna ask you if you did before anything else!!

  • Check for any cold solder joints. They’ll be recognizable by their “misty” or “crumbly” appearance. To fix them, just heat them up (and make sure they’re heated sufficiently) and put some new solder on them.

cold

  • Also, make sure you didn’t miss any pins or wires. You’ll have a lot to solder, after all. It only takes a single pin to be disconnected to screw up the whole thing.
  • Make sure your SNES works with other normal games. I know this sounds silly, but you never know if your SNES just kicked the bucket or not between games. I once bought Super Mario RPG and the sound didn’t work – but it wasn’t the game, it turns out my SNES audio fried since I last played!
  • Check to make sure all your chips are in the correct orientation – especially for custom PCBs, where you have to provide many chips yourself.
  • Check to make sure you didn’t cut any traces on the board accidentally – if you did, you’ll have to add a replacement wire.
  • If you’re using a SuperCIC chip, try pressing the reset button five to ten times, and try power cycling the console as well. This will reset the region detection on it – your chip might be set to NTSC but it needs to be PAL, for example. (Also make sure the proper capacitors are present on the board around these chips).
  • If you’re using a donor, did you remember to test the original game before you took the EPROM out? Maybe something else is damaged on the board, and it’s not your fault. Try replacing the capacitors (smaller ones are 0.1 uF, the large electrolytic is 22 uF). Clean the contacts that go into the SNES on the cartridge. Use like rubbing alcohol or something, look online for resources, I’m not good at housekeeping stuff.
  • Finally, even if you THINK everything is connected correctly, use a multimeter and check the continuity of each pin on your EPROM or other chips to its destination. This means testing the cartridge connector in some cases. Follow the pin tables and/or schematics for the type of memory chip you chose up in Step 9. This is arduous – but any time I was stumped, I usually found that just one of the pins I thought was connected wasn’t in reality. Refer to this table below for the pinout of the cartridge – you only really have to test the address pins (A0 – A23), data pins (D0 – D7), GND and Vcc pins. Everything else should have been left alone.

cartconnector.png

If all else fails, you might have to desolder your chip, blank it, reprogram, and try again. Unfortunately, it’s hard to troubleshoot these boards sometimes.

Make a label

First things first, if you’re using an existing cartridge, you gotta get that old pesky label off of your game. You’re gonna want to just focus on the front cover, obviously. You can try to take the label off by hand, but I’ve never been able to get it completely off. Always get a ton of extra residue and paper.

I found a solution that works pretty well, though. All you have to do is mix equal amounts of baking soda and vegetable oil – you only need about a tablespoon. Rub it on all the leftover sticker and let it sit for half an hour. Afterwards, remove the rest of the sticky crap with something like isopropyl alcohol. Wash it off and you should have a blank canvas on which to work. I’ve also seen that soaking the cartridge in water for an hour or two will make the paper soft, and you can rub it off with your fingers.

20170903_172833.jpg

Now, you need to get a new sticker for the front! You can either buy them online at various shops for $5 or $6, which might be the most convenient. That’s certainly the case for me. One shop I’ve bought labels from is Hondrus Label Shop (click the link for 10% off your order!). Here’s a picture of a Tales of Phantasia cart I made with labels from this store. It’s kind of a semi-gloss finish, but they’re very good quality and have a lot of cool alternate cover art.

toplabel

Or, you can print them yourself if you have a good enough printer (or if your game doesn’t actually have a label). It might be cheaper to just buy them individually if you’re not planning on making a whole lot of games. Maybe see if your local office supply stores sell these in single sheets or will print them on the paper for you?

If you want to make your own label, use this template. I found it on DeviantArt.

snes_label_template__usa__by_michaelmannucci-d7smne9

Then, you can use your favorite photo editing software (I prefer GIMP, which is a free Photoshop-esque program) to place your own picture and name. Search for pictures of your game on Google or something as a reference.

Now, you’ll want to make sure the size matches up for when you print them out. The SNES labels need to be approx. 1.77” x 3.25” when cut. I’m not a wizard at getting this to line up correctly, so you’re on your own for this.

You can use full page sticker sheets and cover them with lamination paper. It’s more economical to fill up a whole sticker sheet with labels, then cover it with a full sheet of lamination. Buying a full package of these sticker and lamination sheets can get a bit pricey, though. A suggestion from mrTentacle is to print the label on vinyl sticker sheets, then spray them with a fixative. The sticker sheets he uses are similar to these and the finish material is similar to this.

Back to top of Step 10

Conclusion

It’s been a long time coming, but finally, you’ve completed your first SNES game!

Remember that selling reproductions of licensed games is illegal! I do not condone this! And don’t go to conventions trying to sell them, passing them off as legitimate! That’s called being a jerk. Don’t rip off genuine game collectors, we’re nice people. I can’t tell you how many times I’ve bought games on eBay or in a store that I thought was genuine, and it turned out to be a reproduction. It shouldn’t happen!

Hopefully this guide was comprehensive and detailed enough to give you a good understanding of what to do and why we did it. If any part is unclear, if I have any mistakes, or you need help figuring out your board, feel free to email me, and I will do my best to clarify or fix the problem! I still plan on continuously updating this tutorial but let me know what you wanna see most, and I’ll try to focus on that if there’s enough of a demand!

Until then, tinker on my fellow hobbyists!

I got a lot of my information from the NesDev forums (RIP NintendoAge). Check them out – they’re amazing! Also, special thanks to Michael at AmpereSandRepros for his board donations, and Martin Samuelsson (mrTentacle) for his board and chip donations and for helping myself and others in the comments section.

And if you’d like to purchase any of my materials, head over to the store page and I’ll be happy to hook you up!

Back to top

377 thoughts on “How to Make a SNES Reproduction Cartridge

  1. Anyboudy already try the tindie adapter 27c322 for original mask rom? https://www.tindie.com/products/mrTentacle/27c322-to-snes-rom-adapter/
    I already read the instruction but i have one doubt, in the instruction is written to tack down one leg of each 74hc254s and solder the rest of the legs, but is not written in the instructions what leg is need to tack down… can it be any leg? and if i tack down one leg in one 74hc254s is necessary to tack down the same leg in another 74hc254s? Thanks

    Like

    • Look out kids, it’s time for another one of illuminerdi’s novels! Wheee! (Long post ahead):

      I’ve tried Martin Samuelsson’s 27c322 adapters from tindie and I have some thoughts on them, both good and bad.

      First up, as poorstudent said, tacking down a leg just means to solder a single leg of the chip to hold it in place before you solder the rest of the chip. They are pretty small chips, not as bad as the 29F033C chips which have positively TINY legs, but the 74hc254 chips are definitely a moderate challenge if you aren’t an experienced solderer. My preferred method to solder the 74hc254 chips is as follows:

      Tack down one of the 4 corner legs, then reheat that same solder point and using tweezers or my fingers, then quickly (while the iron is still on the leg and keeping the solder molten) reposition the chip to be aligned onto all the pads, remove the iron, let the leg cool, THEN remove the tweezers or my fingers. The chips are so small and light that even if you position the chip perfectly before soldering anything, you’ll probably nudge the chip with your iron or even just a slight hand tremor. Tacking down a leg like this helps you keep the chip in position while you solder the rest.

      Once I have a leg or two tacked down, I then tack down the opposite (diagonal) corner leg to cement the chip in place from all 4 angles. Once complete, I then add solder to the rest of the legs. THEN I apply a generous helping of liquid flux and reflow ALL the legs to eliminate any cold joints or solder bridges. Some people might be able to avoid this step, but I am not one of those people, the solder I use is thin and just doesn’t have enough flux in it to where I trust it to flow well enough on the first pass for legs this small. I always wind up putting too much heat on for too long, so reflowing with a generous helping of liquid flux is the way to go for me.

      Also, if you aren’t already using a chisel tip, I heartily encourage you to give one a try. I’ve found that my soldering improved by leaps and bounds after switching from a point tip to a chisel tip. The extra surface area of the tip has really helped me to apply heat to larger areas and more quickly heat up pads to achieve better solder flow. I know it sounds crazy, but the increased surface area of a chisel tip actually allows you to work more quickly AND more precisely because you’ll find yourself more easily able to heat the pads on PCBs and I’ve found that my solder flows MUCH better as a result of using a chisel tip. So again, while it seems counterintuitive, I have MORE precision with a chisel tip than I ever had with a “pencil” (pointed) tip.

      Also, no offense, but asking what it means to “tack down a leg” makes me think that you’re maybe new to soldering? That’s ok! We all were new at one point – everyone is here to help, and we were all new at one point, so don’t be afraid to ask! 🙂 If you are new at soldering, I suggest maybe do some practice on spare parts to get a feel for using a chisel tip and learning the temperature your iron operates at, and watch some youtube videos on the subject. There are a lot of great youtube videos on soldering, identifying cold joints, techniques, etc. I owe a lot of my skills today to youtubers like EEVBlog.

      Ok, next post will be about the tindie 27c322 adapters. I figured this post was long enough as is. Also: good luck to you! Don’t be afraid to ask more questions, this is a community for learning and helping 🙂 🙂

      Like

      • Ok so here are my thoughts on @Martin Samuelsson’s tindie adapters:

        These things are a challenge to use and they are fragile. I have lifted more pads off of them then I have any other PCB in the 10+ years I’ve been soldering as a hobby. Granted I haven’t done a TON of hobby soldering, so that statement is not as loaded as it sounds. I’m not faulting Marcus for the fragility of these boards, but I do feel it is important to point it out to anyone interested. These boards are NOT for the faint of heart. I went through FIVE boards before I figured out the proper technique for doing everything. Some of that comes from ignoring Marcus’s (detailed) directions, so at least part of the problems with these boards IS my own hubris. To his credit he does also indicate that these boards are tricky right there on the order page, I just failed to heed said warning…

        The biggest challenges in using these boards are twofold. First, the space requirements to fit them in NTSC-style cart shells. You have to get everything PERFECT in order to fit them in a cart shell and have it close without putting stress on anything. There is NO wiggle room here. I’ll detail this later on. The second major challenge was pinning the 36-pin holes properly and removing the black spacers from the pins in such a way as to not lift traces off the tindie boards. I thought this step would be easier than it turned out to be. Again, following the instructions was a challenge here.

        I cannot recommend enough how important it is to have a piece (or two) of BLANK perfboard on hand for the pinning. I ordered some cheap perfboard from Amazon but it was thin and fragile and had copper traces on one side, so I wound up using two of them stacked together. This gave my pins the perfect height using the short side of the pins and allowed me to solder the pins so that they sat FLUSH with the PCB. THIS IS CRUCIAL. If your perfboard doesn’t do this, make sure you trim your pins to be COMPLETELY flush with the PCB before you solder them in place.

        The downside of soldering the pins flush with the PCB is that it gives very little tensile strength to the solder joints, meaning that it’s easy to put excess mechanical stress on the PCB when attempting to remove the pin spacers (the black plastic bits) and thus wind up lifting traces from the PCB. You pretty much MUST use the method in the directions of setting the pins down on your desk (or a piece of wood or other scrap hard surface) and then pressing DOWN on the sides and edges of your perfboard to lever the spacers off the pins. This will keep mechanical stress off the fragile tindie PCB.

        So to recap: make sure your header pins are flush with the top side of the PCB, and solder them as “flat” as possible, try to minimize any and all excess solder.

        The second issue with the PCBs is fitting them in cart shells. In order to effectively fit them you need to ensure that your mask ROM chip (the 27C322) also sits as close to the tindie PCB as possible. Once you have your header pins in place, the best method I’ve found of doing this is to place the ROM chip in and again trim the pins on it as flush as you possibly can with the underside of the PCB BEFORE you apply solder. While Martin’s instructions did include a note about this, I do feel it wasn’t made as clear as it could have been just how essential it is to trim these to be absolutely flush before soldering, not after. This is crucial because if the pins are flush before solder, then you can solder them very flat.

        Once trimmed, ensure that your ROM is smashed as tightly against the PCB as possible when you solder it in place and try to solder the all the pads as flat as possible, much like you did with the header pins (but on the opposite side, obviously, so that there is no excess solder creating even the smallest lump on the underside of the PCB. I believe you can solder the chip in from the top since there are pads on both sides, but I found this difficult to do since the ROM’s pins sit so close to the previously installed header pins. Either way it’s difficult, I opted to solder to the underside as I could go in from a nearly vertical angle and thus avoid touching my installed header pins.

        If you can do the above steps successfully, you will then be able to put the PCB onto a donor board and it will sit perfectly flush on the “top” of the donor PCB, but I strongly advise that you buy extra boards (and lots of extra header pins) as if you’re as reckless as I was you’ll probably end up going through a few before you get it just right. And maybe you don’t care as much about the cart closing perfectly or putting stress on the PCB. I’m very finicky about this, so for me nothing less than perfection was acceptable.

        My other chief argument against Martin’s boards is mostly one of cost. The boards are about $2.50USD with the 74hc254 chips. It’s about $2.50 apiece for 27C322 EEPROMs on ebay as well. So your per-game cost is around at least $5USD, not factoring in any other external costs.

        I certainly think the cost of Martin’s boards are quite reasonable, the trouble for me is that it costs about $7.50-$8.50 per game to use a 29F033 with a TSOP to DIP36 adapter instead, as detailed in poorstudent’s guide. Personally, I’m willing to shell out the extra $2-$4 per game for the ease of using EEPROMs that can be quickly programmed by my TL866 in a single pass, rather than needing to do 8 separate programs using a ($30) 27C322 adapter and it taking drastically longer to program each chip.

        So the bottom line is this – Martin’s boards are the most economical way to use 27C322 ROMs in donor carts, and when you learn the proper method for using them they can be fairly reliably installed. So far I’ve successfully managed to install 3 after (probably) killing 5 boards while learning how. If I knew then what I know now, I might have just opted for 29F033 chips and skipped the 27C322s entirely.

        But this has been a learning process for me and I’m sitting next to a stack of about 25 still-blank 27C322 chips, so I’m probably going to order another set of boards from Martin and be more careful this time – again they’re great boards and they DO work quite well. I also think his boards are very well designed and a most elegant solution for using 27C322 chips currently on the market, but I definitely suggest being aware ahead of time of how fragile they are, and knowing what you’re getting into BEFORE you dive in. These boards require a LOT more precision than I’d initially assumed they did, so definitely make sure you know what you’re getting into.

        @Martin – if you happen to get through this novel, I actually have some ideas for ways these boards could possibly be improved to be easier to use or more durable in future revisions – if you’d be interested in discussing this further? I understand if not, they’re your design so it’s possible you’ve already tried these same ideas and they didn’t work, but I’d love to discuss them if you’re looking for suggestions or ideas?

        Thanks to everyone for reading. I do tend to ramble on don’t I?

        Like

        • Haha wow that was really detailed! I’m going to add a section about Martin’s boards at some point in the future, so I might lift a bit of your review into it.

          There are so many options to go with to make these games… this post is getting quite lengthy haha

          Like

        • Yes, all true, I tried to warn you! 🙂
          I enjoyed your long post, to be honest I very seldom hear anything from anyone that have used my boards, suggestions and ideas are always appreciated!

          Like

      • @Martin Samuelsson – the more I look the more I think my ideas for improvements probably don’t really work that feasibly, but I do have one idea that is still possible, though maybe too expensive to be realistic.
        What if you reversed the 36 pin holes on your board and made it so that the 36 pin portion of the PCB was meant to be soldered to the underside (aka the side that faces the front of the SNES) of a donor board? This would allow for your board to just be laid flat on the PCB and then instead of having to use header pins, trim them, etc, you could just use some flux and flow the solder directly through each hole until it touches the pads of the donor PCB underneath.
        This would allow for quicker, easier, and slightly cheaper installation. Unfortunately the downside of this approach is that NTSC style shells don’t have much room on that side of the board, so you’d also have to massively expand the size of your PCB and move the 42 holes for the mask rom to be located somewhere above the donor PCB at the “top” of the cart where there is leftover space.
        See this picture for a rough idea of what I’m talking about if that description doesn’t make a ton of sense:
        https://imgur.com/a/oD7iZ
        Yes, this would approximately triple the size of the PCB, so it might become too expensive. But it would be DRASTICALLY easier to install.
        First, you remove the donor cart’s mask ROM using flush cutters or a dremel. I did it with flush cutters in about 1 minute. Then you trim the leftover legs from the old mask rom to be flush with the “top” side of the donor PCB (the side that faces the rear of the SNES), making sure that none of the cut legs are touching each other. Maybe apply some electrical or kapton tape to help keep them in place for the next steps.
        Second, you would then lay the new red PCB onto the back of the cart and make sure it lines up correctly. The leftover solder points from the old mask rom’s legs makes this process incredibly simple and you basically already have a bunch of solder joints to piggyback onto.
        Flux the holes of the 36-pin portion, heat and solder. The still-present legs from the cut mask rom will help you bridge the PCBs together quickly and easily! This is why taping down the underside of the holes would be a good idea – it would keep the legs from slipping or moving during the soldering process
        Flip the board over and solder your 27C322 (or 27C160) to the top side of the red PCB. You probably wouldn’t even need to cut the legs or anything – the EPROM chip would sit lower due to being attached to the bottom of the donor PCB, so you have more room overall to work with.
        Install the 74HC decoder chips and you’re done!
        Voila! 27C322 EPROM installed in a fraction of the time it took to install the previous boards.
        Again though, this might be too expensive since it triples the size of the board and I believe the cost of board manufacture is based largely on board dimensions 😦
        Still, I would gladly pay around $3-$4 USD for a board like this. It would make 27C322 installation much easier and quicker and STILL cheaper than using 29F033 chips with TSOP40 to DIP36 adapters…

        Liked by 1 person

        • You know, I’ve actually thought about making an extension like this, it’s been in the back of my head for about half a year now. I need to look into it when I get the other things on my to-do list done.

          Like

    • wow, those responses where fast!
      Definitely look into getting a small chisel tip, for tsop I use a hoof tip, also flux really helps 🙂

      If you can get some scrap electronics to practice on without pressure, I used to do a few runs to the trash room every week.

      Good luck!

      Like

  2. My novel now kkk

    First of all I thank everyone for the help, I have some factors that complicate things a little for me. One of them is yes I am learning how to do this and English is not my native language (my first language is Portuguese because i am from Brazil). I can read it myself (writing is harder) but I get along well but the translator can not translate everything very well so sometimes I get confused by the terms used and I got confused by that term “tack down one leg” I had understood that it was to take off one leg of each kkk chip. I started to get interested in the repros recently and bought some cheap Japanese games about 27c801 and a tl866, the first two I made yesterday was a disaster I broke the tracks and the game did not work (but I did not give up), I discovered that the welding sucker that I was using it was very bad (I bought the cheapest because I wanted to save money), I discovered that it is no use saving and I changed the material for a better use a common 27W iron and my welding sucker now works really took off the eprom of the plate and did not break any tracks recorded in the eprom final fight guy, which at first did not work I was scared then I cleaned the contacts with isopropyl alcohol and worked perfectly, but soon I want to record chrono trigger and donkey kong so I already bought an adapter for my tl866 to work in 42 pins, I’m going to buy the adapter cards in Tindie but I’m already seeing that I’m going to have difficulties with the 74HC257 (in my opinion they could already send this soldier on the board) it would make my life a lot easier kkk, but anyway I appreciate the tips, I liked the idea to train in garbage pieces, I’ll go in some technique that has plates in smd rubbish to ask some I can fuck what I do not have is flow welding this really is necessar?, because I do not know how to use, because to solder the 27c801 I do not think … but it should be that for eproms that use other type of encapsulation type tsop and other thin legs may need it … I will have to search for it. Thank you all again for your help. (iluminerdi you are very funny and help a lot / poor student always willing to help.) This forum really is very good.

    Like

    • We were all beginners at some point!

      I would say to definitely steer clear of any of the TSOPs for the larger games, since you are just starting out. You could manually wire up the 27C322s without the Tindie adapter board, but you’ll need through-hole versions of the 74HC257s. It’ll also be messy with the extra wires.

      You could also look into the 27C160s and check out the section in the tutorial about wiring two of them to make 32Mbit games. Your TL866 adapter should be able to handle programming them. The only downside is the extra wiring you’ll have to do won’t look really pretty. But it’ll be a lot easier to solder than the surface mount chips.

      Like

    • If by “flow welding” you mean solder flux: YES, GET IT! This stuff is absolutely essential, especially for when still learning to solder. Experts may be able to skip using it, but as a beginner I relied heavily on solder flux to help reflow poorly done joints, etc. I can’t imagine trying to solder the 74HC or 29F033 chips without it!

      I recommend either a flux pen or liquid flux and an ESD-safe dropper / needle tip bottle.

      Flux pens are probably easier to use but more expensive overall. A bottle of liquid flux runs like $10USD for a quantity that will last years or more. I’m still using the same bottle of liquid flux that I bought about 4 years ago.

      Like

  3. and how do I use liquid flow? I imagine that I first have to clean the region with isopropyl alcohol and then I wet a swab with the fluid flow in the region that I will apply the solder? the function of fluid flow is to make the soldering fix better is not it?

    Like

    • Using liquid flux is very simple!
      First: you do NOT need to clean the area beforehand unless it is already dirty (spilled soda, other forms of corrosion, etc).
      Second: to use liquid flux, I suggest getting a dropper bottle like this (https://www.amazon.com/Lotion-FD-1-ESD-Antistatic-Dissipative-Dispenser/dp/B00CIB9TM4/ref=sr_1_5?ie=UTF8&qid=1522863483&sr=8-5&keywords=flux+bottle) – this one is listed as ESD-safe, but that makes it potentially more expensive. Similar cheaper dropper bottles can be found for around $3-$5 USD. You could even use an eyedropper or a plastic syringe that comes with children’s medicine. Just be aware that liquid flux is sticky and can dry over time. It cleans up easily with isopropyl alcohol, and you can also thin it with a bit of isopropyl mixed in if you find it’s jamming your dropper bottle often.
      To use it, just apply a drop or two directly to the area you’re about to solder either before or after applying the solder. Then heat the solder with your iron until it becomes liquid and remove your soldering iron.
      Flux will do 2 things – it will help your solder “flow” into tight spots and onto all nearby appropriate metal surfaces, and it will help prevent oxidation during the heating and cooling process.
      Flowing your solder is vital as it helps your solder reach all the intended areas and ensures an even, solid bond between the pads on your PCB and whatever you’re joining to that pad such as a wire, a pin, leg, etc.
      Oxidation happens when solder is exposed to too much air during the heating and cooling process. This is what causes “cold” joints as detailed in poorstudent’s post. A “cold” joint looks dull (NOT shiny) and is brittle or crumbly and thus can break easily. Additionally, cold joints have poor bondage between parts and poor electrical conductivity, so a cold joint may not function properly and may prevent electricity to properly move along your circuit.
      A general rule of thumb after soldering anything is when you are finished to visually inspect every solder point for “shininess”. If any of the joints look “dull” and “grey” instead of “shiny” and “silver”, you should apply flux and reheat the solder, let it cool again, clean it off with isopropyl, and see if it looks shiny once dried.
      Unfortunately learning how to spot a “cold” joint does take some skill and practice. Over time you’ll learn to recognize the difference between a proper solder and a cold joint, but at first they can look quite similar, so don’t be discouraged.
      A good rule is that the less time you apply heat to the solder and the PCB, the better. So just drop on some flux, heat the solder and remove your iron AS SOON as the solder has fully liquified. This is why it can be important to have a good, high quality soldering iron that allows you to set your heat level. I tend to set my soldering iron around 285 – 305 degrees Celsius and I’m able to very quickly heat a solder joint without having to set my iron on the joint or the solder for very long, but also without much risk to the PCB or the trace since my iron is not OVERheated, which can burn your PCB or cause traces to detach from the board.
      You can get a good quality soldering station with temperature control for around $50 USD. A basic iron will work if you don’t intend to do a lot of soldering, but even those still run $20-$30 USD so stepping up to a temperature controlled solder station is just a very wise investment from the start!
      Also it’s good to point out that liquid solder flux is NOT conductive, so even if it spills or runs or if there is some leftover in hard-to-clean places, you don’t need to worry about cleaning it up. Even the best of us sometimes wind up with leftover flux under our chips or various other places.
      If you do need to clean it up, just use isopropyl alcohol and qtips or an old toothbrush if you really need to scrub away a LOT of flux (and yeah, even I have to do this often, so I guess I’m not an expert yet…)
      Here’s a great youtube video from the EEVblog about how to spot cold solder joints, perhaps it will help:

      This is an EXCELLENT video for learning good soldering technique and how to spot a cold joint. Even the cold joint that he demonstrates around 5:30 in the video isn’t too bad looking and does look quite similar in the video to the other joints, but after you’ve soldered enough you learn to spot the imperfections – the cold joint that he demonstrates didn’t “flow” when the solder was applied to the PCB, and it is misshapen and uneven. This is a dead giveaway for a cold joint. A good solder joint will be very even and smooth because the solder flux (most solder has flux inside of it) allowed it to flow evenly and smoothly, so even if the solder joint is shiny, being misshapen is a good sign that you should apply some liquid flux and reflow the joint.
      And once again – liquid flux is not conductive, so you can go pretty nuts with the stuff, yeah it’ll make your board sticky once it dries, and it’ll look a bit ugly since you’ll have brown liquid smeared all over the place, but a functional board with clean solder joints is much more important than a clean and pretty board that doesn’t work! If you do go completely nuts with flux and need to clean up your board after the fact, I recommend immersing the board in a mixture of Isopropyl AND Methyl alcohol for 10 – 15 minutes, then pull it out and scrub away with an old toothbrush, dip it back in the alcohol a few times or re-wet your toothbrush and repeat. Cleaning excess flux off is 100x easier (and cheaper!) than diagnosing a short circuit, or replacing blown or dead parts!
      So don’t be afraid to go a bit overkill with liquid flux at first, and eventually you’ll learn how to use less and solder better. It all just takes practice and time!
      Good luck!

      Like

  4. I bought a few of Martin’s 27C322 adapter boards, and while they were a little tricky, i was able to put them together okay, but I’ve made two cartridges now that don’t boot. At first i thought i just messed up soldering somewhere, but my second board looks pretty pristine, so I think i may be missing something in the programming process. I’m using the tl866 minipro with the digicool things 27C322 adapter. I expanded a 24Mbit game to 32Mbit. Fixed the checksum, and the header was previously removed. I cut it into 8 512Kbit chunks with the SNES ROM utility, and burn them one at a time to the (blankchecked) 27C322 in order. Verified everything burned well. Is there any other tricks to it? Sega genesis games using these chips need to be byteswapped, is that the case here too? Any assistance would be appreciated, I don’t think any other community is working with these adapters!

    Like

    • I’ve found that expanding games is both unnecessary and problematic if the game is already a multiple of 8Mbit.

      Try NOT expanding the game and just programming the first 6 parts, you can leave the last 2 banks of the chip blank or not programmed. It shouldn’t matter because the game’s code should never try to address beyond 24Mbit anyway.

      So I would just remove the header if present and fix checksum after the header remove.

      These games do NOT need to be byteswapped if using Martin’s adapter boards. The boards handle all the pin rearrangements already.

      Like

      • Thanks for the feedback, going to try that right now. Out of curiosity, If the game is not a multiple of 8Mbit, is it beneficial to expand it? If so, should it be expanded to the next closest multiple, or just to fill the chip?

        Like

        • None of my roms have not been multies of 8Mbit but I haven’t made repros of any headered romhacks yet I use the No-Intro romset which is a very clean romset that was properly dumped and has no headers.

          As far as I know the rom does have to be a multiple of 8Mbit, though I don’t know why, again because the game shouldn’t try to address unused memory so I don’t know why this is the case, perhaps poorstudent could clarify this point?

          Like

        • Some games (but apparently, very few) use the ROM size and/or mirroring the code as a form of copy protection. Similar to this, which is mentioned in the tutorial, is the copy protection that some games have based on the amount of SRAM on the cartridge. For example, Donkey Kong Country won’t work unless there’s EXACTLY 16Kb of SRAM.

          Here’s a forum post from NintendoAge: http://nintendoage.com/forum/messageview.cfm?catid=22&threadid=178215

          “For using the 29F033 chips with smaller ROMs some games will work without padding but some will require it, I think FF5 needs to be padded from 24mbit to 32mbit or else you get a black screen with music after you press start at the beginning.”

          Also, check out this forum post: https://assemblergames.com/threads/rom-mirroring-snes.68940/

          One of the posters mentions Mega Man X as a game that has copy protection by checking to see if the unused area of the ROM is mirrored data (so expanding wouldn’t actually help you here).

          From this website, The Cutting Room Floor (if you have never been to this website, I am sorry for referring you to it because I’ve wasted probably literal days reading it oh my god I just spent the last 2 hours browsing it again help me): https://tcrf.net/Mega_Man_X#Copy_Protection

          “Most of these checks involve attempting to write to an area of memory typically reserved for SRAM, which real copies of the game don’t have, by writing a value to a specific address and seeing if the same value is present at the same address afterward. Normally, on a real cartridge, these addresses point to ROM due to address mirroring, causing the writes to fail. However, the original Japanese 1.0 release suffered from frequent false positives due to the ROM inadvertently having the “expected” values already present at the right addresses in ROM for the copy protection to falsely think that the writes were successful.

          Initially, Capcom solved this by physically rewiring Rockman X cartridges to partially disable ROM mirroring at the affected addresses. Later on, the 1.1 ROM was released, with the SRAM detection fixed to prevent similar false positives from occurring.”

          So yeah. Not always necessary, but why not do it since it’s so easy? I’m not sure if padding the ROM would make it NOT work, perhaps that’s another form of copy protection I’m unaware of. Like I mention in my tutorial – the only time I suspected that padding the ROM screwed me up was with my Tales of Phantasia cartridge, but I’m unsure if that was actually due to another problem I was having.

          Like

      • This did the trick! I left the game at 24Mbits, just removed the header, fixed the checksum, and split into 6. Sure enough the game booted! Many thanks guys! I will stick around and attempt to pay it forward with my limited knowledge!

        Like

      • I used a new EPROM. You need to trim the pins of the EPROM to get Martin’s board as flush as possible, or it will not fit in a US cartridge. There might still be enough pin left to get the chip in the zif socket on my programmer, but I was too lazy to desolder it to find out. I’ll probably give it a try when i run out of EPROMs or if i get a nicer desoldering gun. Will need to UV bake it again too.

        Like

        • Ok, I ask because it’s still possible it was the chip or something else, not necessarily the expansion. I’m gonna try doing more research/thinking about this. What game were you making if you don’t mind me asking? Maybe I’ll take a crack at it and see what happens for me.

          Like

      • FYI you can use ucon64 with the -k flag to remove the copy protection from any games that have it, and this is the recommended method rather than trying to mirror the rom. Personally I try to avoid padding the rom whenever possible, since this also messes up the checksum and thus causes that to need to be repaired. Also padding will not bypass mirroring copy protection, since the padded bits will have incorrect values and will fail copy protection checks.

        I did only try padding a ROM once, no ROM since has needed padding so I can’t say for certain whether or not it’s actually problematic or not. Clearly it works for you, so for all I know I just did it wrong, it was early in my repro making days…

        So yeah, before burning just check if your game is copy protected or not, and make sure you either strip out the protection or properly burn the rom 🙂

        Like

        • I know padding doesn’t fix mirror protection, I just thought it was interesting 😛

          I’m just wary to say that padding is what’s causing the problem. I mean, I can’t think of a reason why padding would make a difference, unless it is as that forum post said that some games require the ROM to be filled to pass some kind of copy protection, but I don’t really understand the mechanism behind it.

          I just haven’t really had a problem with it in the past, and it isn’t difficult to do, so I figure putting it in doesn’t hurt. Though, maybe it does! I’m going to be making a test cartridge with a ZIF socket on it to easily swap EPROMs in and out at some point (probably in the summer), so I can try different games padded and unpadded and see if it makes a difference.

          Like

      • The game I was working on was Super Metroid, the Japan+USA release. This game DOES have piracy prevention similar to earthbound, where it checks how much SRAM is available. If it’s more than what it’s supposed to be (64kbit) , you get an anti-piracy screen and your saves get deleted.

        I used a SHVC-1A3M-30 donor cartridge with the 27C322 adapter. Frank Thomas Big Hurt Baseball was the cheapest I could find.

        Like

    • What illuminerdi said! (Thanks again for answering!)

      I’ve heard mixed things on expanding the ROM and not, and I can’t find a good reason to why you need to or not. Logically, that part of the memory should never be accessed, but I’m not sure if it has something to do with making a good checksum or not? It’s hard to find a straight answer, but it’s never hurt me to expand them first (except for the Tales of Phantasia cartridge I made, maybe, I never really knew what was going on with my first attempt on that one).

      See if you can do it again like Illuminerdi said, without expanding the game. Maybe try using a different EPROM? These things are really hard to troubleshoot, especially online!

      I am planning on making my own 322 programmer and a test board in the future, hopefully sometime in the summer (life is *really* chaotic right now for me). But I’m glad you’re finding some help here!

      Like

  5. hy guys, i was looking at tindie website a pcb for snes games and i like some boards, but they need this 12F629 SOIC,to unlock the game to work in consoles unmodified, there also has the code to program this 12F629 SOIC, but do not explain how i do this, is possible to program 12F629 SOIC with tl866? anybody knows how to program 12F629 SOIC?

    Like

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