Sega Genesis
Dead Hard Drivin' Cartridge

October 19, 2023

Box shot of Sega Genesis Hard Drivin' showing the title logo.

There are a number of reasons for why cartridges may not work on a console, but I think that the go-to first thing to check is to ensure that the cartridge contacts are clean, and that the cartridge slot itself is in good shape and free of dirt, debris or oxidation.  When my copy of Tengen's Hard Drivin' for the Sega Genesis powered on to a licensing screen following by blackness, cleaning the contacts was the first order of business.  But when that failed, it was time to dig deeper!

Since the cartridge connector didn't seem to be the problem I decided next to open the cartridge shell and look around.  After removing the PCB from the shell, I could see that there was one electrolytic capacitor on the board but it passed the visual check, there was no bulging to leakage that I could see.  Next I checked the solder joints for the mask ROM to ensure that there were no cracked joints, everything there checked out.  A further visual inspection for broken traces also turned up empty.

I had previously came across a few people who had broken Sega cartridges which were caused by failed diode junctions on the mask ROM which was corrected by soldering in a 1K resistor between the failed line and ground.  You can see Retro Repairs work through one such example here.  I methodically worked through the lines on the Hard Drivin' cartridge and I did find one line which seemed to have a failed junction, so I soldered in a resistor and then tested the cartridge.

Still no change.  The licensing screen would show up, but then blackness.

Without any further ideas at the moment I replaced both the electrolytic capacitor and the ceramic capacitor on the PCB and tried the game again.  Still no luck.

My next thought was to see if I could compare the contents of the mask ROM with a working dump to see if there were any differences.  First I used consulted the Mega Drive Database to determine what the size of the mask ROM was likely to be.  It appeared that the ROM image was 0.25MB, which would mean the mask ROM would be at least a 2Mbit IC.  Markings on the ROM suggested it was a Macronix product, and although searching for datasheets wasn't easy, I did fine a Macronix catalog from the early 1990s that showed some of the mask ROM solutions they were offering.  Unfortunately none of the pinouts seemed to correspond with what I expected based upon how the pins on the PCB were mapped to the cartridge edge connector.  

Sega Genesis cartridge pinout diagram.

Sega Genesis cartridge pinout, from https://plutiedev.com/cartridge-slot

After quite a while of tracing, searching and more tracing, I found that the mask ROM on the PCB was likely a 4Mbit IC, and it appeared to be pin compatible with the 27C400.  Keep in mind that the cartridge slot diagram above, and the pinout below have labels that are off by one because the pinout starts at A0 rather than VA1.  The problem was the TL866II programmer I have doesn't support the 27C400 and I couldn't find any way to setup a custom chip in the library.  Was I doomed to be unable to read the contents?

M27C400 pinout diagram

Mouse Bite Labs to the rescue!

Nick from Mouse Bite Labs has put together some really neat projects that address a number of challenges with some retro consoles.  Amazingly, he has designed an adapter for the TL866 which allows you to program a number of EEPROM chips that are helpful for retro systems.  Essentially it allows a number of different ROMs to be placed in the adapter with some bank switching to allow the TL866 to present it as a 27C4096.  It seemed like a great solution to expand my capabilities, so I ordered one (and also one of Nick's Sega Genesis cartridge boards).  The solution from Nick was a board with the SMD components mounted, but I needed to place a Digikey order for the remaining components to populate the board.

Some weeks later everything arrived for the adapter, and I soldering the through hole components on, and inserted the mask ROM.

Tl866II Programmer with an adapter installed for reading ICs.

Firing up the TL866 programming software and dumping the contents of the mask ROM chip worked perfectly with the adapter.  But the dump didn't match a known good copy of the ROM.  There were similarities, and I could read a somewhat scrambled 'SEGA' from the title screen but they were not the same.  What's going on?

HEX dump of two ROM images highlighting the differences.

It turns out that the mask ROM dump needed to be put through a byte swap process before it could be compared against the ROM dump that I'd found.  There is a great tool, AFS ROM Suite MD which handles this task and many others.  Unfortunately the original author has shutdown their site, but I was able to find a copy of the software after some online searching.

Screenshot of AFS Mega Drive ROM Suite, showing the byte swap feature.

 Once the bytes were swapped the dump image from my mask ROM, and the known good copy were an exact match.  So, it would seem likely that the mask ROM itself was fine.  So the problem must be somewhere else on the PCB.

More online searching and I came across this Reddit link by termites2 who suggested that in their case, corroded vias were to blame for their cartridge issues.  See the original thread posted to r/Megadrive here: I found a possible easier fix for broken Tengen cartridges.  I also saw some more information on consolemods.org posted under Repair High Failure Rate Tengen Games.  The article suggests that the 800068-01 REV A PCB was reported as being prone to the issues, and it further lists a number of revisions and correlates those to known good/bad PCBs.  In my case the board was actually a model 800057-02 board with a revision of 9325 which seemed to be outside the known bad boards.  Regardless, I went about testing between the mask ROM pins and the vias closest to the IC pins and they all seemed to come back with reasonable resistances but as I further tested the board to chain through the multiple vias which may be on each line it became apparent that some lines had very high resistance, in some cases kilo-ohms.  The suggestion from the original poster who discovered the problem suggested to clean out the vias.  I tried this approach but found that while it reduced the resistances in some cases, it was just as likely to highly increase the resistances.

I decided to try a different approach, and I went about soldering in 30AWG 'tunnel' wires that linked the top and bottom of each affected via.  In the end I tunneled each via on the PCB this way as nearly all of them needed it, and the few that didn't were likely to fail at some point.

With all of the vias now showing low resistances thanks to the installed tunnel wiring, I inserted the cartridge into my test system and I was greeted with the Hard Drivin' start screen.  A very long process to finally come to a conclusion on this one, but an interesting journey and I now have some additional knowledge and tools which will likely help me out in the future.

Title screen for Hard Drivin' for the Sega Genesis