Bussing carts together - how to isolate? (NSS project)

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Bussing carts together - how to isolate? (NSS project)
by on (#139689)
Hey, I'm working on a Super System (arcade version SNES) and my question is: what is the best method to isolate Xnumber of carts that are bussed together.....
On the super system, all the data, address, and control lines are bussed together. There is a cart enable line that in effect "turns on" one cart and disables the others. Using that same control line, is it sufficient to deactivate the carts by taking the /CE line (edge pin #23) high?
I'm messing with the SNES carts, not the super system cartridges. So I am wanting to put a normal snes console cartridge into the NSS. In doing so, I will need to be able to activate 1 cartridge and deactivate the other 2 (the NSS is a 3 cartridge system). I know how the NSS handles the NSS cartridges but I'm unsure on how to handle the snes cartridges to fully deactivate them. It seems that the /CE line deactivates the ROMS and the SRAM in the SNES carts -- which should allow a "bussing" of the carts so I guess I'm wanting to get confirmation if this is true or am I missing something.....
I assume that the console does need to control the CE line so I can't just pull it out of the system buss -- or can I?

Thanks for any input!
Re: Bussing carts together - how to isolate? (NSS project)
by on (#139691)
The /CART signal (pin 49 on the cart edge) should be connected to /CS (or /OE, Nintendo liked to swap them on a whim) on each of the ROM/SRAM chips in the cart, which should tri-state the output buffers. The only issue is if they also switched /CS and /OE on the SRAM, which they shouldn't have because it would break things... so check the SRAM datasheets and continuity test to confirm that the SRAM /CS is connected to the address decoder and /OE is connected to the cart edge, and then you should be fine.
Re: Bussing carts together - how to isolate? (NSS project)
by on (#139696)
qwertymodo wrote:
The /CART signal (pin 49 on the cart edge) should be connected to /CS (or /OE, Nintendo liked to swap them on a whim) on each of the ROM/SRAM chips in the cart, which should tri-state the output buffers. The only issue is if they also switched /CS and /OE on the SRAM, which they shouldn't have because it would break things... so check the SRAM datasheets and continuity test to confirm that the SRAM /CS is connected to the address decoder and /OE is connected to the cart edge, and then you should be fine.


So taking /CART (pin 49) high would prevent the ROM and SRAM from outputting or being written to? And the sram wouldn't be written to -- from another cart in the buss? Would taking the /CE (cart pin 23) line high do the same thing? The sram was the aspect I was really unsure of....Hypo example -- If game A when writing to it's sram would also write to another game's sram on the buss (game B).

I've heard of Nintendo swapping the /CS and /OE but have never seen any examples. I'd be interest to know which games they did that on..... or maybe it was the outside manufactures that did it??


THANK YOU! I really appreciate your insights :)
Re: Bussing carts together - how to isolate? (NSS project)
by on (#139699)
Markfrizb wrote:
So taking /CART (pin 49) high would prevent the ROM and SRAM from outputting or being written to? And the sram wouldn't be written to -- from another cart in the buss?

/CART should select (or deselect) the entire cart in the same way that /CS selects the particular chip on the cart. So setting /CART high should have the same effect that setting /CS high on the chips does (in fact, setting /CART high should cause the address decoder to set all of the chip /CE pins high). The chips all share the same bus on the cart, after all. You're just taking the same principle up one extra layer.

Quote:
Would taking the /CE (cart pin 23) line high do the same thing?

Pin 23 is /OE, not /CE. /CART = /CE Pin 54 is /WE.

Quote:
The sram was the aspect I was really unsure of....Hypo example -- If game A when writing to it's sram would also write to another game's sram on the buss (game B).

That's what I was referring to. Just be sure that the SRAM /OE connects to pin 23 on the cart and that /CS connects to the address decoder and you'll be fine. It's probably right. For the ROM it doesn't matter so it wasn't a big deal that they swapped it... SRAM almost certainly would have caused issues under normal usage if they'd swapped it.

Quote:
I've heard of Nintendo swapping the /CS and /OE but have never seen any examples. I'd be interest to know which games they did that on..... or maybe it was the outside manufactures that did it??

Off the top of my head, MMX3 did it, which was why I was having these issues

Other than that I don't know any specific examples but I know many of the standard carts did it, which is why you see some documents online list the pinout one way and others will have them swapped. The RIGHT way to do it would be to have pin 23 on the cart edge connected directly to /OE on all of the chips on the cart, and pin 54 connected directly to /WE. Then, you would connect each chip's /CE to the address decoder. However, on a true mask ROM (or even an EEPROM that you never intend to program in-system), most will disable the output drivers if /CE is high. If that's true, then you can just ground /CE or /OE (not both) and connect the other one up to the address decoder, and it doesn't matter which is which.
Re: Bussing carts together - how to isolate? (NSS project)
by on (#139708)
Is /CART high or low when accessing SRAM at $306000 in a HiROM game?


If "yes", smartdonkey, then which?
Re: Bussing carts together - how to isolate? (NSS project)
by on (#139781)
I'm not sure on the '139 mapper boards, but according to the MAD-1 truth table thread, the only time the SRAM /CS is asserted low with /CART high is under the single following input combination:

Mode = HiROM (MAD-1 pin 10 = 1)
A15 = 1
A20 = 1
A21 = 1
A22 = 0

So, that could be problematic...