Inside the Super Nintendo cartridges

zdw | 548 points

I do really like how cartridges on the old systems were essentially equivalent to a PCI Expansion Card in a PC. It was directly connected to the Bus and could do essentially anything. Sadly, that practice ended after the GameBoy Advance, and everything since the Nintendo DS has been purely data storage.

This leads to crazy modern enhancements like a Raytracing chip[1], or the MSU1 enhancement chip that is AFAIK not available as an actual physical chip, but only in software emulators. But it would be theoretically possible to manufacture, so you could have an actual physical SNES Cartridge of Road Blaster[2].

On the article itself, I noticed that his list has "Street Fighter Zero 2" as a USA ROM - that should be incorrect, since Street Fighter Zero is what Street Fighter Alpha was called in Japan. So Zero 2 should just be the Japanese version of Alpha 2. (Also, thanks for linking to the MVG video that debunks the myth that the delay before each round is caused by decompression)

[1] https://www.youtube.com/watch?v=2jee4tlakqo

[2] https://www.youtube.com/watch?v=BvIXUOr4yxU

MenhirMike | 12 days ago

Another detail not mentioned here is that even carts which didn't contain enhancement chips had different levels of performance - the SNES CPU nominally ran at 3.58mhz, but it would only actually run at that speed with a "FastROM" cart inserted. Nintendo also offered publishers a "SlowROM" cart format, which was cheaper, but would downclock the CPU to just 2.68mhz.

There is a community of modders developing patches to turn SlowROM games into FastROM games to alleviate slowdown. I read somewhere that some SlowROM games appear to have been developed for FastROM in the first place, but were converted to SlowROM at the last minute due to penny-pinching demands by the publisher.

jsheard | 12 days ago

I hope developers still love to blog details with article mode like this, rather than vlogging it on YouTube. A lot of detail packed into a few kilobytes only.

"Super Mario World" is still the masterpiece game ever. It has amazing characters, sprites, and stages packed into only 360 KB.

solarized | 12 days ago

I wonder what you could do with modern tech, exploiting that ability of having "enhancement chips" in the cartridge.

The SuperFX is mentioned to have it's own framebuffer and copy the whole thing over to VRAM.

Does that mean, it would technically be possible to put some ridiculously overpowered SoC into an cartridge, and use that to render modern graphics (at SNES resolutions), copying the resulting frames back into the SNES VRAM?

What are the limitations there?

hooby | 12 days ago

> The author of DOOM for SNES, Randy Linden, did not have access to any documentation about the GSU chip or even DOOM source code. He reverse engineered all of it

Technically this is impressive, but why was it necessary?

plugin-baby | 12 days ago

Where do the byte counts for the various games come from? The games came on ROM chips that were, as ROM chip are wont to, sized to powers-of-two. For instance, Super Mario World was shipped on a 512kb ROM - where does 346,330 bytes come from? Are these compressed sizes?

wk_end | 12 days ago

> Even Super Mario World[10] got the treatment (I can't remember slowdowns but I was only twelve can then).

Yoshi’s Island 4 has a slowdown in some circumstances (have Yoshi, get Starman and hit P-Switch), as does another level I can’t recall, exactly… it has a bunch of Monty Moles that explode all at once. I think it’s on Chocolate Island. I think there might be a third with two Sumo Bros. and an Amazing Flying Hammer Bro. onscreen.

icodestuff | 12 days ago

Something I've never been able to wrap my head around is how ROMs are dumped for emulators from cartridges? Dumping instructions and assets makes total sense to me, and packaging that up in a data file that can be interpreted by an emulator too, but how does an emulator model the hardware of every 'expansion' chip in a cartridge? How is that dumped from an original cartridge?

r0bbbo | 12 days ago

> The copy-protection mechanism of the SNES is something I already dig into in my 10NES article. It works by having two chips talking in lockstep. One chip is in the console, the other in the cart. If the console CIC sees something it does not like, it resets every processor.

It was easily defeated for consumers though (but probably not for game producers/editors)...

Back then we all had a "backup device" for our SNES: a device you'd plug into the SNES and which had a floppy drive. So we'd "backup" all our games on very cheap 3"1/2 floppies. All that was needed for the system to work was to have one original cartdridge, which you'd plug into the copier, and the device would reuse that cartdridge's CIC chip.

https://en.wikipedia.org/wiki/Game_backup_device

TacticalCoder | 11 days ago

> There were three versions of the DSP-1 named DSP-1, DSP-1a, and DSP-1b. While introducing bug fixing and improving the process, the chip behavior was slightly altered which resulted in planes in Pilot Wings demo crashing into the ground

OK, I will use that excuse if someone asks me why I am so bad at it.

a1o | 12 days ago

I'm wondering why the console CPU wasn't running at 4x the clock rate to begin with, if the cartridges could easily and cheaply include one so much better. I guess that's just how fast CPUs were improving back then. A CPU from just a few years prior was that obsolete. Crazy!

modeless | 12 days ago

When I first learned about how complicated cartridges were it blew my mind. Each cartridge cost $10-25 to make, and N64 was even more expensive. For years now though the cost of delivering the game itself has been essentially 0. It's just wild to me that a huge percentage of the price of a game went to 'nobody' in a way, and just to buying the chips it took to make the cartridge. It likely made up a bigger cut then actually went to the developer of the game.

ApolloFortyNine | 11 days ago

It’s impressive that developers could afford to make custom ICs for only one or two games. I wouldn’t have thought the revenue would be enough to justify that.

AdamH12113 | 12 days ago

Really specific question, but can anybody explain what looks like a bodge resistor on the Star Fox cart (on the missing 74HCT04 chip in the bottom right)? Everything else is SMD, so it looks to me like they realized some mistake after production and had to manually fix every cart. Or maybe this is just a scan of a hacked/prototype cart.

Mizza | 12 days ago

> One of the exceptional characteristics of the Super Nintendo was the ability for game cartridges (cart) to pack more than instructions and assets into ROM chips

Wasn't this true even on other Nintendo consoles? Gameboy and Gameboy Color cartridges did similar if not even more outlandish things, like the GameBoy Camera

qalmakka | 12 days ago

I love any and all research on these systems. It completely blows my mind that something as complex and fun as Mario Kart was only 350KB in size. You can't even get a 'hello world' binary that small for most languages today.

Yeah, it's custom and tuned, but that's a lot of fun packed with at the time 'good graphics' in the size of a single low quality jpeg of today.

silisili | 12 days ago

Since these carts pull out the CPU bus I would like to know if anyone ever did anything unusual with a classic gaming console. Like controlling motors for a robot or wiring in an FPGA to add functionality like Ethernet/USB, running a terminal emulator, trying to write an OS, etc.

MisterTea | 12 days ago

Coin cell powered SRAM as an alternative to proper non volatile memory. I find it funny but probably any other solutions were plenty more expensive.

nuancebydefault | 11 days ago

There's not a lot of physical space for it, but I have wondered aloud before if the Switch cartridge slot could be used for enhancements?

donatj | 12 days ago

[flagged]

fmy105 | 12 days ago

[dead]

SEXMCNIGGA47700 | 11 days ago

[dead]

SEXMCNIGGA42584 | 11 days ago

[dead]

SEXMCNIGGA8128 | 11 days ago

[dead]

SEXMCNIGGA8629 | 11 days ago

[dead]

SEXMCNIGGA49859 | 11 days ago

[dead]

SEXMCNIGGA8425 | 11 days ago

[dead]

SEXMCNIGGA28119 | 11 days ago

[dead]

SEXMCNIGGA18548 | 11 days ago

[dead]

SEXMCNIGGA11334 | 11 days ago

[dead]

SEXMCNIGGA48517 | 11 days ago

[dead]

SEXMCNIGGA44946 | 11 days ago

[dead]

SEXMCNIGGA38139 | 11 days ago

[dead]

2genders21470 | 11 days ago

[dead]

2genders30551 | 11 days ago

[dead]

SEXMCNIGGA12879 | 11 days ago

[dead]

SEXMCNIGGA47246 | 11 days ago

[dead]

SEXMCNIGGA37939 | 11 days ago

[dead]

SEXMCNIGGA20090 | 11 days ago

[dead]

SEXMCNIGGA11411 | 11 days ago

[dead]

SEXMCNIGGA36471 | 11 days ago

[dead]

SEXMCNIGGA48766 | 11 days ago

[dead]

SEXMCNIGGA24579 | 11 days ago

[dead]

SEXMCNIGGA23367 | 11 days ago

[dead]

SEXMCNIGGA36294 | 11 days ago

[dead]

SEXMCNIGGA19398 | 11 days ago

[dead]

SEXMCNIGGA30937 | 11 days ago

[dead]

SEXMCNIGGA28175 | 11 days ago

[dead]

2genders31406 | 11 days ago

[dead]

SEXMCNIGGA13134 | 11 days ago

[dead]

SEXMCNIGGA38002 | 11 days ago

[dead]

SEXMCNIGGA1806 | 11 days ago

[dead]

SEXMCNIGGA19833 | 11 days ago

[dead]

SEXMCNIGGA47685 | 11 days ago

[dead]

2genders3799 | 11 days ago

[dead]

2genders41257 | 11 days ago

[dead]

SEXMCNIGGA32629 | 11 days ago

[dead]

SEXMCNIGGA24960 | 11 days ago

[dead]

SEXMCNIGGA27575 | 11 days ago

[dead]

SEXMCNIGGA41250 | 11 days ago

[dead]

SEXMCNIGGA42549 | 11 days ago

[dead]

SEXMCNIGGA17692 | 11 days ago

[dead]

SEXMCNIGGA31756 | 11 days ago

[dead]

SEXMCNIGGA43966 | 11 days ago

[dead]

2genders7097 | 11 days ago

[dead]

2genders30488 | 11 days ago

[dead]

2genders23174 | 11 days ago

[dead]

SEXMCNIGGA31696 | 11 days ago

[dead]

2genders19192 | 11 days ago

[dead]

SEXMCNIGGA47158 | 11 days ago

[dead]

SEXMCNIGGA17039 | 11 days ago

[dead]

indianmilf2543 | 11 days ago

[dead]

2genders47493 | 11 days ago

[dead]

indianmilf12812 | 11 days ago

[dead]

indianmilf36932 | 11 days ago

[dead]

indianmilf9732 | 11 days ago

[dead]

2genders46095 | 11 days ago

[dead]

2genders27281 | 11 days ago

[flagged]

indianmilf24902 | 11 days ago

[flagged]

sexmc9884 | 11 days ago

[flagged]

sexmc30431 | 11 days ago

[flagged]

2genders15781 | 11 days ago

[flagged]

2genders39950 | 11 days ago

[flagged]

2genders47148 | 11 days ago

[flagged]

2genders35499 | 11 days ago

[flagged]

2genders38654 | 11 days ago

[flagged]

sexmc25061 | 11 days ago

[flagged]

sexmc45161 | 11 days ago

[flagged]

SEXMCNIGGA6120 | 11 days ago

[flagged]

sexmc28373 | 11 days ago

[flagged]

sexmc12896 | 11 days ago

[flagged]

sexmc11078 | 11 days ago

[flagged]

2genders25899 | 11 days ago

[flagged]

2genders26746 | 11 days ago

[flagged]

2genders20299 | 11 days ago

[flagged]

2genders48344 | 11 days ago

[flagged]

2genders14192 | 11 days ago

[flagged]

SEXMCNIGGA35084 | 11 days ago

[flagged]

2genders21396 | 11 days ago

[flagged]

2genders9299 | 11 days ago

[flagged]

2genders17397 | 11 days ago

[flagged]

2genders31285 | 11 days ago

[flagged]

2genders24716 | 11 days ago

[flagged]

2genders28563 | 11 days ago

[flagged]

2genders12597 | 11 days ago

[flagged]

SEXMCNIGGA16327 | 11 days ago

[flagged]

SEXMCNIGGA12759 | 11 days ago

[flagged]

SEXMCNIGGA19934 | 11 days ago

[flagged]

SEXMCNIGGA21933 | 11 days ago

[flagged]

SEXMCNIGGA2049 | 11 days ago

[flagged]

SEXMCNIGGA10407 | 11 days ago

[flagged]

SEXMCNIGGA41352 | 11 days ago

[flagged]

SEXMCNIGGA35334 | 11 days ago

[flagged]

SEXMCNIGGA7830 | 11 days ago

[flagged]

SEXMCNIGGA18538 | 11 days ago

[flagged]

SEXMCNIGGA37477 | 11 days ago

[flagged]

SEXMCNIGGA36328 | 11 days ago

[flagged]

SEXMCNIGGA20803 | 11 days ago

[flagged]

SEXMCNIGGA6721 | 11 days ago

[flagged]

SEXMCNIGGA29847 | 11 days ago

[flagged]

SEXMCNIGGA34036 | 11 days ago

[flagged]

SEXMCNIGGA42966 | 11 days ago

[flagged]

SEXMCNIGGA42692 | 11 days ago

[flagged]

SEXMCNIGGA22619 | 11 days ago

[flagged]

SEXMCNIGGA16188 | 11 days ago

[flagged]

SEXMCNIGGA37282 | 11 days ago

[flagged]

2genders1206 | 11 days ago

[flagged]

2genders5690 | 11 days ago

[flagged]

2genders48393 | 11 days ago

[flagged]

SEXMCNIGGA7832 | 11 days ago

[flagged]

2genders4161 | 11 days ago

[flagged]

2genders48014 | 11 days ago

[flagged]

2genders12521 | 11 days ago

[flagged]

2genders6 | 11 days ago

[flagged]

SEXMCNIGGA44355 | 11 days ago

[flagged]

SEXMCNIGGA2800 | 11 days ago

[flagged]

SEXMCNIGGA10770 | 11 days ago

[flagged]

SEXMCNIGGA49193 | 11 days ago

[flagged]

SEXMCNIGGA30049 | 11 days ago