27C322, 27C160 to SNES Mask ROM Extended Adapter Board

Buy the 27C322 to SNES Mask ROM Extended Adapter Board on my store page!

Here’s a version without the multiplexers for use with 27C160s!

These boards adapt the 32 Mbit 27C322 EPROM or the 16 Mbit 27C160 EPROM to fit in donor SNES boards or custom SNES PCBs. This will save you a TON of time adding wires to your board, and comes with the added benefit of not having to remove the original EPROM from your donor board!

NOTE:When put into the board properly, it fits nicely inside the cartridge. Note that it will not fit inside the cartridge with every existing SNES boards, but it will for most. There must be at least approximately 2 centimeters clearance to the top of the cartridge. In general, if your board only has one EPROM and SRAM chips, or two EPROMs and no SRAM, it should fit ok.

IMG_20200313_204744 (2)   IMG_20200313_204701 (2)

Here’s a better picture showing the clearance you need between the top of the board and the top of the cartridge.

extended_clearance

How to Use the Boards (36-pin Socket)

The first thing you should do is check out your donor cartridge. You’ll be putting the adapter board on the existing Mask ROM pins on the back of the board, but you might have some other chip, like SRAM, that the adapter might interfere with. Trim down any of those pins on the back to make sure the adapter board is as flush with the donor board as possible.

83369764_665372620949579_1752791074213986304_n

Also, there might be some little tabs on top of the PCB – these are called “mousebites”. They’re a left-over of the original board manufacturing, basically this board would be attached to another board at this point, and you would snap them apart (multiple boards connected to each other in this manner make up a “panel”). You might have to clip these back to fit the EPROM into the socket.

83000484_2585250761703931_312065821146873856_n

Now, you’ll want to solder the board onto the pins of the Mask ROM. Make sure you add enough solder so that it goes down into the holes and attaches to the pins, if they don’t stick up very high.

83604994_187062472412347_3999454390481059840_n

Now, flip the board back over, and cut pin 33 on the original Mask ROM as close to the PCB as possible. Carefully bend it out a bit to make sure it’s not connected to the socket anymore. Bridge the pin to pin 34 next to it using solder or a wire. Make sure it’s not connected to the original socket anymore! This is the /OE pin (output enable), and we’re connecting it to VCC. This disables the output of the original ROM, and therefore allows the other EPROM that you connect on the board to operate without creating bus conflicts with the original ROM.

83726092_790083854836942_4946097665357119488_n

If your original board had a 36-pin socket, but only a 32-pin EPROM in it, you’ll have to add some wires that go down through the donor PCB and into the adapter board. It’ll still work just fine. I find it easier to cut a longer piece of wire to fish through the (usually solder-filled) extra holes. Just cut off the wire you don’t use after you solder the wires in. Note that the board in this picture is an old version – everything on this post still applies to the new boards as well, so don’t sweat it.

82466152_2616105265105299_7815791231094489088_o

Now, solder in your EPROM in the socket on the adapter board! Throw it into your cartridge, and power it up!

84328668_2464594956985614_6550926325949923328_n

How to Use the Boards (32-pin Socket)

The process for doing this is the same as for the 36-pin socket, however, you will need to add a few extra wires. Just follow all the instructions above, leaving the extra four holes on the adapter board (1, 2, 35, and 36) empty.

Now, you’ll need to locate one or two spots to solder to on the board. Try to find a spot connected to A20 (on the cartridge connector – pin 45 for HiROM, pin 46 for LoROM). If you’re using the 27C322, also find a spot connected to A21 (on the cartridge connector – pin 46 for HiROM, pin 47 for LoROM). If there aren’t any other chips on the board to solder to, like a decoder, you’ll have to solder directly to these pads – try shaving off some of the green portion of the board to expose more copper on the trace (this is called the “solder mask”).

For 27C160:

Add a wire from pin 42 on the 27C160 to A20.

For 27C322:

Add a wire from pin 42 on the 27C322 to A20.
Add a wire from pin 32 on the 27C322 to A21.

Then, you should be good to go!

How the Adapters Work

The 27C160 boards are pretty straightforward, so I won’t spend too much time explaining them here. It’s simply rerouting the pins from the SNES socket to the appropriate pin on the EPROM.

160toSNES_multi

If you look at the table, you’ll notice the address pins are offset by one. This is because the 160 is a 16-bit device by default, but the SNES operates on an 8-bit data bus. If we put the EPROM into an 8-bit operating mode by typing the /BYTEVpp pin to GND, then the Q15 pin becomes the A0 pin for the 8-bit data bus. We can ignore the data pins between Q8 to Q14.

As for the 27C322, this needs a bit more explaining. If you look at the pinout of the 27C322, you’ll notice the data pins go from Q0 to Q15. That’s because this is a 16-bit EPROM, where each word is 16 bits instead of the 8 bits the SNES uses, like the 27C160 I just described. So the first address of the 322 contains the first TWO addresses the SNES will use, the first from Q0 to Q7 and the second from Q8 to Q15.

The problem with the 27C322 is that we cannot force it into an 8-bit operating mode, like we can for the 27C160. So we need to be a bit creative.

Let’s look at the TL866 programming window to see what I’m talking about. Compare the left window here, which is an 8-bit EPROM, with the 16-bit EPROM on the right. 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 74HCT257 is a quad-package two-line multiplexer. If we use two of them in parallel, we can control all eight data lines. So, here’s how the EPROM connects to the multiplexers and the SNES Mask ROM pinout.

322_table_tosnes

Finally, here’s the resulting schematic of the multiplexers. The rest of the pins on the EPROM go to the matching cartridge connector pin, but offset by one (A0 of the EPROM goes to A1 of the SNES cartridge connector, etc).

322_mux_schem.png

One thought on “27C322, 27C160 to SNES Mask ROM Extended Adapter Board

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