NES SNROM to 512K cart?

A place that you can discuss reproduction of classic titles or "licensed-for-reproduction" homebrew for personal use.

Moderators: B00daW, Moderators

Forum rules
1. NO BLATANT PIRACY. This includes reproducing homebrew less than 10 years old, with the exception of free software.
2. No advertising your reproductions, with the exception of free software.
3. Be nice. See RFC 1855 if you aren't sure what this means.
3gengames
Formerly 65024U
Posts: 2269
Joined: Sat Mar 27, 2010 12:57 pm

NES SNROM to 512K cart?

Post by 3gengames » Thu Oct 14, 2010 8:37 pm

Okay...well....looking at this Zelda 1 cart, I am going to make the board a 512K cart. I see that there is space for a 32-Pin EPROM. Is that for 256K EPROMS? If so, does the wiring change since it is using a 128K 28 pin MROM at the moment?



Should I use the 256K pinout on the board with the 32-pin extension and wire up char line 16 up to the extra address pin to get a 512K ROM/cart?


And if I do, to get Char 16 high/low, what register do I write to in what CHR-ROM modes (Since it uses CHR-RAM it doesn't matter).....



I am kind of confused how this will work....I know it will but it seems like it shouldn't some how. :P It's magical.

tepples
Posts: 21748
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Fri Oct 15, 2010 4:28 am

See the SUROM article for a start.

3gengames
Formerly 65024U
Posts: 2269
Joined: Sat Mar 27, 2010 12:57 pm

Post by 3gengames » Fri Oct 15, 2010 8:22 am

But I don't have a SUROM cart :'(


I have a SNROM on my zelda game :P So it should be the same, but since it uses 128K PRG ROM, does that affect the 32-pin socket pinout? Or is it the same as the list says?



And if I DID have a dragon warrior 3 cart.....no way I'd kill it! XD

tepples
Posts: 21748
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Fri Oct 15, 2010 9:49 am

I too would recommend taking a cheap SNROM game (like the Ultima games) and converting it to SUROM behavior, as you mention, but I've never seen a step-by-step rewiring guide. If there were a homebrew game that used SUROM, someone would feel more incentive to write such a guide.

User avatar
Bregalad
Posts: 7766
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Post by Bregalad » Fri Oct 15, 2010 11:25 am

Oh my god why should there always need to be guides ? Can't people use their brain instead ? Just wire A18 to the proper MMC1 pin and you'll "magically" turn a cheap zelda cart into a SUROM cart. But there is 99% of chances this is used to recreate a fake Dragon Warrior cart as the real ones are expensive, and that might be sold later for a high price. So I don't know why I even bother explaining that.
I see that there is space for a 32-Pin EPROM. Is that for 256K EPROMS? If so, does the wiring change since it is using a 128K 28 pin MROM at the moment?
The extra pins are for Nintendo's 256k mask roms. The wiring is almost the same as Nintendo's 128k mask roms, just more pins. It is however different from 128k/256k EPROMs. (the same applies with 512k mask ROMs and EPROMs too).
Life is complex: it has both real and imaginary components.

3gengames
Formerly 65024U
Posts: 2269
Joined: Sat Mar 27, 2010 12:57 pm

Post by 3gengames » Fri Oct 15, 2010 12:01 pm

So basically use the 256K chip guide and thats how the pins should be? Okay that makes it easier to understand. I am not that good with electronics and just want to check before I start going in and hacking up my zelda game....And nah I'm not making a repro of any kind. Maybe to test to make sure it works, and thats a good idea for playing, but it's going to be a development cart.....I just have never needed to rewire a board and it will really be a bummer to kill a zelda, which I only have 2 of and this board is good for development of really cool stuff and I decided to develop on it.



So yeah, A16 through A19 on the CHR bank select pins on the MMC1 can tie to A19. I get that. I am just wondering, if it is in 2x 4K banks for MMC1, do both registers need to set A18 high? And also, since there is one register on the MMC1, if you set it so that one bank of 16K isn't movable, then I am guessing bank 0 will be put in that spot automatically? Is that correct?

User avatar
chykn
Posts: 108
Joined: Sun Feb 21, 2010 6:06 pm

Post by chykn » Fri Oct 15, 2010 1:17 pm

65024U wrote:So basically use the 256K chip guide and thats how the pins should be?
Pretty close with one minor addition. The other day I took an Ultima Exodus cart and rewired it with a 39SF040 burned with Dragon Warrior 4. The trace between MMC1 pin 11 and WRAM pin 20 must be cut. MMC1 pin 11 should then be tied to A18 (pin 1) on your 4Mb EEPROM chip. Tie WRAM pin 20 to GND. I'm not sure if simply tying EEPROM pin A18 to MMC1 pin 11 would work. If the game happens to be using the upper 256KB section of the chip, usage of the WRAM would be disabled since /CE would be high. I played it safe and cut the trace. Fired right up and played without issue.

User avatar
Bregalad
Posts: 7766
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Post by Bregalad » Fri Oct 15, 2010 2:10 pm

Ok since it's not for a repro, I'm going to tell more details.

I'm pretty sure the only difference between SNROM and SUROM is that PRG-A18 is connected to MMC1's CHR-A16 (it's A16, not A19 like you said). On SNROM, MMC1's CHR-A16 is just left unconnected, and I'm pretty sure the pin that would hold A18 on a Nintendo's mask ROM is just tied to +5V or something in the like.
I'm pretty sure all SNROM games would work just fine on a SUROM board without altering Nintendo's mask ROM (by disoldering them without damaging them and soldering them back on a SUROM board) - Nintendo just used SNROM because they didn't think about the A18 trick in 1987.

I don't know what is this think about the WRAM, but it's functionality is identical in both board so I doubt you'd need to touch the WRAM in any way.

And yes, you should set both CHR-registers to the same value. Or even better, set the CHR-switching mode to 8k, and then only use the first CHR-Register.
If you set both CHR-registers to different values, your PRG-ROM's A18 will be switched twice per scanline in the same fashion as MMC3's scanline counter (in the case of BG using table #0 and sprites using table #1, switching once per line, in the other case, switching about 36 times).

You COULD abuse this in a game to do a "software" MMC3 scanline counter but it's probably not the best method, and probably won't work in any emulator.

EDIT : in fact this method isn't that stupid... considering that the MMC1 has no scanline counter of any kind, and that doing it with DPCM is complex and annoying... why not abuse this behavior ?
Life is complex: it has both real and imaginary components.

User avatar
chykn
Posts: 108
Joined: Sun Feb 21, 2010 6:06 pm

Post by chykn » Fri Oct 15, 2010 6:04 pm

Bregalad wrote:I'm pretty sure the only difference between SNROM and SUROM is that PRG-A18 is connected to MMC1's CHR-A16 (it's A16, not A19 like you said). On SNROM, MMC1's CHR-A16 is just left unconnected, and I'm pretty sure the pin that would hold A18 on a Nintendo's mask ROM is just tied to +5V or something in the like.
You may have different versions of the SNROM board outside the US, but every SNROM board I've seen so far ties MMC1 CHR-A16 to WRAM /CE. The SUROM boards tie MMC1 CHR-A16 to PRG ROM A18 and WRAM /CE to GND. I opened up a total of 7 retail SxROM carts and found the following...
  • Dragon Warrior 3, Dragon Warrior 4
    NES-SUROM-01
    MMC1 Pin 11 (CHR16) -> PRG ROM A18
    WRAM Pin 20 (/CE) -> GND


    Dragon Warrior 2, Ultima: Exodus (1st copy)
    NES-SNROM-05
    MMC1 Pin 11 (CHR16) -> WRAM Pin 20 (/CE)

    Ultima: Exodus (2nd copy)
    NES-SNROM-04
    MMC1 Pin 11 (CHR16) -> WRAM Pin 20 (/CE)

    Ultima: Exodus (3rd copy)
    NES-SNROM-03
    MMC1 Pin 11 (CHR16) -> WRAM Pin 20 (/CE)

    Zelda
    NES-SNROM-02
    MMC1 Pin 11 (CHR16) -> WRAM Pin 20 (/CE)
That being said, the SNROM->SUROM conversion instructions I gave were correct with one exception. I left out step 3 as shown here.
  • 1. Follow the 256K chip guide to replace the mask ROM with a flash chip
    2. Cut the trace going from MMC1 pin 11 to WRAM pin 20
    3. Cut the trace going from MMC1 pin 4 to PRG ROM pin 1
    4. Connect WRAM pin 20 to GND
    5. Connect MMC1 pin 11 to PRG ROM pin 1
    (MMC1 pin 4 should already be connected to PRG ROM pin 2 according to the guide)
(I did this conversion on an SNROM-05 board, have not tested others)

I can see why you thought that the WRAM /CE was tied to ground. From what I've seen on the oscilloscope, the SNROM games I listed above never seem to set MMC1 CHR-A16 high. This means you could probably get away with converting the cart from SNROM->SUROM then using it to play both 256K and 512K ROMs.

3gengames
Formerly 65024U
Posts: 2269
Joined: Sat Mar 27, 2010 12:57 pm

Post by 3gengames » Fri Oct 15, 2010 9:43 pm

Yeah, okay I get it. I thought that the two registers would need to be set for 4K mode, because having two different banks from one chip requires SOME change on the pins, and that's not good for the PRG-ROM, right? :P



Ahh, I said 19 because 2^19 is 512K and 2^16 is 64K so yeah....I screwed up. :P


Ahh thanks. I'm going to get into hacking this up soon. My cart I am using is a Zelda 1 cart, gold, terrible condition. I want to start messing with MMC1 and doing bigger stuff, and seeing what CHR-RAM is like, and I don't want to have 8 MMC1 boards, so this seemed like the best board to do because it has everything I could ever want in one package....


As for the chip enable pin.....I take it it requires a low to enable the chip? If so then connecting it to ground would make sense.....right? Beause it's not going anywhere. Atleast not in this cart. :P And I am guessing that the other games used that CHR-16 line to disable/enable it so thats how they wired it up, but for the 512K carts they tied it to the ROM 256K bank bit?


I understand how electronics work but not really into it so this is another noobfest of questions from me. Sorry! XD

ibeenew2
Posts: 60
Joined: Sat May 01, 2010 9:58 am

Post by ibeenew2 » Fri Oct 15, 2010 9:48 pm

Or you get one board, put sockets on it, and have it handle everything - http://www.retrousb.com/product_info.ph ... ucts_id=43

3gengames
Formerly 65024U
Posts: 2269
Joined: Sat Mar 27, 2010 12:57 pm

Post by 3gengames » Fri Oct 15, 2010 10:15 pm

I don't have $15 to buy just a board when I have a crappy game cart with the same one needed. :P Plus....the learning is worth it so I don't have to look this dumb again....

User avatar
Bregalad
Posts: 7766
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Post by Bregalad » Sat Oct 16, 2010 2:05 am

Thanks for clarifying yourself, chykn.
So since WRAM /CE is connected to CHR-A16 on SNROM boards, this means it's possible to disable WRAM by writing $1x on the CHR-ROM select registers. This feature has never been documented anywhere - they said that writing $1x on the PRG-ROM select register will disable SRAM internally in the MMC1 (the MMC1 is only connected to the positive CE pin). So I guess in the very particular case of SNROM, you have both WRAM enable bits instead of just one like other MMC1 boards ?

And what about SOROM and SAROM ? Those have not all CHR-selct pins used and have SRAM too. I'm pretty sure the negative /CE pin on SOROM is used by the SRAM chip select circuitery (connected to CHR-A15 directly for one chip, and though a transistor-inverter for the second chip). I don't know on SAROM though. Anyone with a DW1 card could check this and upload the wiki ? Thanks.
Life is complex: it has both real and imaginary components.

3gengames
Formerly 65024U
Posts: 2269
Joined: Sat Mar 27, 2010 12:57 pm

Post by 3gengames » Sat Oct 16, 2010 8:50 am

I don't know what you mean but I have a DW1 cart, I'll take pics later and upload them for you guys to do your thing. Wow, still finding stuff out every day is pretty cool. I can't believe I guessed it right, chip select....I am getting smarter! :P

User avatar
Bregalad
Posts: 7766
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Post by Bregalad » Sat Oct 16, 2010 9:54 am

You should check where MMC1's CHR out pins are connected. I guess the low 4 should be connected to CHR-ROM (obviously), although DW1 only uses two of them (16k CHR-ROM), I'd assume the cart to support up to 64k CHR-ROM (using up 4 adress lines) because all other Nintendo boards does that (they only got custom pinout for mask ROMs of 128k or above).

So there is a free adress line (A16) which may be connected to WRAM /CE like on SNROM, or that might just be left unconnected.
Wow, still finding stuff out every day is pretty cool.
I agree. Some time ago we were running out of new stuff to discover about the NES, but not it has just started back again.
Life is complex: it has both real and imaginary components.

Post Reply