Lucky Moron PCB Repair
Episode 1: Double Dragon
(or: how you would fix this pcb since you aren't @caius either)
A local collector recently listed multiple boards for sale, and the combination of both a) geographically-nearby and b) reasonable-prices put me into a buying mood, even though several were listed with problems. Fresh off a few conversions, I thought it was time to bust out my logic probe and poke something metal. Maybe piggyback something.
First up, Double Dragon!
The seller kindly warned me "it has some RAM error, you'll see" and replied "OK man, no sweat" though really my brain is firing "oh man I really hope he means **ROM** error". While 'broken' is 'broken', I do love a simple ROM swap 'repair' when it happens. RAM errors, to the uninformed like me, smell like way more work. Luckily, I was blessed with this informative and serendipidous boot-up screen:
Niiiiice, ROM-swappin' time!
I'll just check out the pcb and find ROM3 and ROM4 and burn some new ones.
Goddamnit. What the hell is this shit.
WHO labels chips differently than what's on the diagnostic??
C'mon Tecmo get your shit together. Ok fine. MAME KNOWS ALL so let's just go to the driver and see what's up.
This looked my revision based on the labels: MAME IS THE BOMB
Program ROMs look like this bank here, so just guessing 1,2,3,4 are probably those. Though unlikely it's in that order. So I'll just toss each one in the good old programmer and check them. Two are gonna be bad and I'm gonna be done.
Verified? VERIFIED!?
WTF, honestly.
At this point I park my ego and google furiously for aid.
This guy knows his shit and fixes like 5 double dragons on video, but doesn't ever hit a program ROM error.
Jammarcade has a metric ton of double dragon repairs, nice. No program ROM errors though, damnit.
KLOV, oh lawwwd there's so many posts and I have such a small attention span!
OK well how hard could this be? Jammarcade has a schematic (!!) so I can just read that right?
Yeah I have no idea how to read this schematic.
Let's at least figure out which ROMs are the bad ones. I open up the MAME ROM data and forge myself some bad ROM checksums by changing one byte on each file, one at a time. Then I force it to run in MAME by running it from the command line.
One by one I see which chip fails the test, and make the map:
ddragonub
21a-2_4 = ROM1
21a-3 = ROM2*** first naughty chip right here
21a-4_2 = ROM3*** also a mr poopy head
21a-1_6 = ROM4
So now I know which 2 physical ROMs are having issues. My guess is that the sockets are bad, or they share some common chip that's bad (show me a fujitsu so I can bust out my shotgun). Looking at the schematic again I notice that I have no idea why all four chips are in one block together, but also that a lot of the data lines just go right into the CPU. I'm just gonna steal an image from @ShootTheCore, so that someone skimming this article thinks I'm a boss with probes:
Actually all I do at this point is start looking for broken traces. I'm not entirely sure how this works but it looks like all four program ROMs share all the same data lines.
I flip over the board and test my theory. All the pins look like they have continuity, well at least all the ones that are numbered on the schematic. EXCEPT for the one-single-pin on 21a-4_2, which has continuity to 21a-1_6 but neither connect to the other bank. The other bank's pins share continuity though. So I assume that's a broken trace or something, and drop in a jumper wire so they're all joined again. I mean, even if I'm wrong, this won't make it worse right?
VOILA!
The program ROM test passes!
I do a little dance. No animated gif for that, sorry.
Sadly though my work is not done. While the boot screen looks good, as soon as I boot the game up some asshole punches my GF in the gut and steals her away. Then, and even worse, my ride looks like ass.
Sprites (or what I assume are sprites, they're the objects that move) look good, and the tiles (background?) seem like the awfulness I aim to fix. MAME comes to the rescue again and I start verifying tile ROMs in my programmer. First one fails verification, and I replace it with a freshy fresh 27c512.
Nice, jailbars are gone on my sweet ride. Game playable.
But there's still some trash left. And I don't mean the bad guys.
Second tile chip fails too, I replace that. FINALLY THE GAME WORKS!
Phew, turned out pretty easy. Close call, I might have had to actually touch a logic chip or something. I'll just save those skills for next log. Only thing left to do is replace the ceramic ROMs with some plastic ones to give it that mask-ROM feel, maybe swap over the labels. But that's another day.
Now it's ELBOW TIME!!!
Episode 1: Double Dragon
(or: how you would fix this pcb since you aren't @caius either)
A local collector recently listed multiple boards for sale, and the combination of both a) geographically-nearby and b) reasonable-prices put me into a buying mood, even though several were listed with problems. Fresh off a few conversions, I thought it was time to bust out my logic probe and poke something metal. Maybe piggyback something.
First up, Double Dragon!
The seller kindly warned me "it has some RAM error, you'll see" and replied "OK man, no sweat" though really my brain is firing "oh man I really hope he means **ROM** error". While 'broken' is 'broken', I do love a simple ROM swap 'repair' when it happens. RAM errors, to the uninformed like me, smell like way more work. Luckily, I was blessed with this informative and serendipidous boot-up screen:
Niiiiice, ROM-swappin' time!
I'll just check out the pcb and find ROM3 and ROM4 and burn some new ones.
Goddamnit. What the hell is this shit.
WHO labels chips differently than what's on the diagnostic??
C'mon Tecmo get your shit together. Ok fine. MAME KNOWS ALL so let's just go to the driver and see what's up.
This looked my revision based on the labels: MAME IS THE BOMB
Code:
ROM_START( ddragonub )
ROM_REGION( 0x30000, "maincpu", 0 ) /* 64k for code + bankswitched memory */
ROM_LOAD( "21a-1_6.bin",0x08000,0x08000, CRC(f354b0e1) ...
ROM_LOAD( "21a-2_4", 0x10000, 0x08000, CRC(5cd67657) ...
ROM_LOAD( "21a-3", 0x18000, 0x08000, CRC(dbf24897) ...
ROM_LOAD( "21a-4_2", 0x20000, 0x08000, CRC(9b019598) ...
Verified? VERIFIED!?
WTF, honestly.
At this point I park my ego and google furiously for aid.
This guy knows his shit and fixes like 5 double dragons on video, but doesn't ever hit a program ROM error.
Jammarcade has a metric ton of double dragon repairs, nice. No program ROM errors though, damnit.
KLOV, oh lawwwd there's so many posts and I have such a small attention span!
OK well how hard could this be? Jammarcade has a schematic (!!) so I can just read that right?
Yeah I have no idea how to read this schematic.
Let's at least figure out which ROMs are the bad ones. I open up the MAME ROM data and forge myself some bad ROM checksums by changing one byte on each file, one at a time. Then I force it to run in MAME by running it from the command line.
One by one I see which chip fails the test, and make the map:
ddragonub
21a-2_4 = ROM1
21a-3 = ROM2*** first naughty chip right here
21a-4_2 = ROM3*** also a mr poopy head
21a-1_6 = ROM4
So now I know which 2 physical ROMs are having issues. My guess is that the sockets are bad, or they share some common chip that's bad (show me a fujitsu so I can bust out my shotgun). Looking at the schematic again I notice that I have no idea why all four chips are in one block together, but also that a lot of the data lines just go right into the CPU. I'm just gonna steal an image from @ShootTheCore, so that someone skimming this article thinks I'm a boss with probes:
Actually all I do at this point is start looking for broken traces. I'm not entirely sure how this works but it looks like all four program ROMs share all the same data lines.
I flip over the board and test my theory. All the pins look like they have continuity, well at least all the ones that are numbered on the schematic. EXCEPT for the one-single-pin on 21a-4_2, which has continuity to 21a-1_6 but neither connect to the other bank. The other bank's pins share continuity though. So I assume that's a broken trace or something, and drop in a jumper wire so they're all joined again. I mean, even if I'm wrong, this won't make it worse right?
VOILA!
The program ROM test passes!
I do a little dance. No animated gif for that, sorry.
Sadly though my work is not done. While the boot screen looks good, as soon as I boot the game up some asshole punches my GF in the gut and steals her away. Then, and even worse, my ride looks like ass.
Sprites (or what I assume are sprites, they're the objects that move) look good, and the tiles (background?) seem like the awfulness I aim to fix. MAME comes to the rescue again and I start verifying tile ROMs in my programmer. First one fails verification, and I replace it with a freshy fresh 27c512.
Nice, jailbars are gone on my sweet ride. Game playable.
But there's still some trash left. And I don't mean the bad guys.
Second tile chip fails too, I replace that. FINALLY THE GAME WORKS!
Phew, turned out pretty easy. Close call, I might have had to actually touch a logic chip or something. I'll just save those skills for next log. Only thing left to do is replace the ceramic ROMs with some plastic ones to give it that mask-ROM feel, maybe swap over the labels. But that's another day.
Now it's ELBOW TIME!!!
Last edited: