Two dead boards, 250 chips, and one mystery I still have not solved
I bought two Commando board sets on the theory that between two broken machines there might be one working one. That turned out to be optimistic. Neither did anything at all when I first powered them up, and one of the two was in a properly sorry state before I had even plugged it in.
What follows is roughly how they came back. Every chip named below is one I actually pulled, tested and replaced, and every screenshot is my own bench monitor on the day. The order is the order it happened in, which is not always the order that makes me look clever ;)
This is the sprite board of the rough set, and you can see exactly what it has been through. Discoloured laminate, corroded legs, and sockets that had gone green. Its CPU board was no better: the Z80 at 11M was not merely dead but had clearly been dead a long time, and the socket underneath it was in such a state that I desoldered the whole thing and fitted a fresh one before the new CPU went anywhere near it.
Commando is three boards bolted together: the CPU and sound board in the middle, the scrolling background board on top, the sprite board underneath. Which means that when nothing happens on power-up, you get to guess which of the three is lying to you.
Here is the part I did not expect. Both of my boards are bootlegs, but they are not the same bootleg. Capcom protected Commando with a 48 pin custom chip at 10M that unscrambles the program, and only while the CPU is fetching instructions. Copy the ROMs without it and the machine reads noise.
The dirty board gets around that with a little green daughter board plugged into the empty custom socket, carrying a PAL16L8 and a couple of buffers. The clean board does not have the socket at all. Somebody redrew the whole PCB with the fix designed in, so the silkscreen itself reads PAL16L8 and the chip sits next to the Z80 as if it had always belonged there.
You can tell the two lineages apart from a single byte. The first instruction of the program is stored decrypted on one board and encrypted on the other, depending on whether that board's decryptor passes the very first fetch through. I dumped both ROMs and checked ;)
Getting as far as this picture took four separate faults. There was no clock at all to begin with, which was a bad capacitor at C32 and then a broken gate inside the 74LS04 at 2M, the chip that divides the 12MHz crystal down for the rest of the machine. With a clock finally propagating, the dead Z80 came out. Then sync was still wonky and there was no stable picture, which turned out to be a failed 74LS161 at 1L, one of the counters that times the vertical part of the raster.
That got me a screen full of random characters. The program ROM at 9M was flaky too, so out it came, in went a fresh burn, and the game booted.
And then this. Look closely: the text is perfectly readable, so the character hardware is fine. Behind it, a blizzard. Commando keeps its scrolling landscape in six tile ROMs on the top board, positions 11 to 16, and every single one of them was on the way out. All six replaced, and the jungle appeared.
Look at the middle of that ranking screen. The background tiles are right, the high score table is right, the colours are right, and where the COMMANDO logo belongs there is a black silhouette shaped exactly like the logo. So the machine knows the shape perfectly well. It just cannot colour it in.
The logo is built from characters, so I started at 1F, the latch that carries the character colour bits down to the mixer. Pin 2 was stuck high, and forcing it low brought the colour back while wrecking everything else, which is exactly the confirmation you want. So the fault was further upstream. Pin 2 follows CHARZ, CHARZ comes out of 3H which handles character flipping, and behind that sits 4F.
4F is a 74LS194A, a shift register, and its entire job is to take a row of pixels out of the character ROM and clock them out one at a time. Two of its outputs were stuck high no matter what data went in. Desoldered, tested, dead. New one in a socket, and the logo got its shadow back.
Different board, different flavour of wrong. This one came up with a logo in radioactive green and a washed out background. Commando looks up every colour in a set of small PROMs, and the logo shadow lives at address $E1. When I probed what the hardware was actually reading back, it was fetching $E9. One bit, bit 3, stuck high.
Holding that bit low fixed the logo and broke every other colour on screen, which told me I had the right wire. Following it back landed on CC1, one of the colour code lines, generated on pin 2 of the 74LS174 at 7D. Out it came, and the very first flip-flop inside it was faulty.
I am fond of this one because the symptom is so absurdly specific. A single stuck bit, in a single entry of a lookup table, and the result is that one word on the title screen is the wrong colour.
Same board, same screen, one 74LS174 later. Clean white letters, the drop shadow sitting behind them where it should, and the copyright line down the side in the right shade of blue.
This is the moment a repair stops being a guess and turns into a diagnosis. No shotgunning chips at the board. The PROM said $E1, the bus said $E9, the difference was one bit, and that bit had a name and a location.
This is what it looks like when a board stops cooperating. Breadboard piggybacked on top, clips on half the chips, and enough jumper wire to knit a jumper. It had been running happily, then it simply stopped, with a scrambled data bus and no picture.
Two faults at once, which is always the cruel kind. A broken gate in the 74LS08 at 9L was holding a chip enable in the wrong state and making the entire bus look like garbage. Sorting that got the CPU running cleanly again, and left me with a perfectly healthy machine displaying a completely blank screen.
Watching the address bus showed code executing normally, so it was alive, just not drawing. Commando puts its text on screen from an interrupt routine, and that interrupt has a little chain of its own: a PROM addressed by the vertical counter, a latch, and a flip-flop that finally pulls the CPU's interrupt line low. The clock for that chain never arrived. The 74LS174 at 7L had good inputs, a good clock, and absolutely nothing on its outputs. Replaced, and the text came back.
Sprites were the long one. Having two boards helped enormously here, because one of them drew sprites correctly. I could put a probe on the same pin of the same chip on both and simply look for the one that disagreed. That is how I found a flaky pin 6 on the 74LS139 at 6H. Sprites appeared, and every one of them was striped.
The stripes pointed straight at line buffer 1. Commando assembles each row of sprites into a small buffer before it draws it, and that buffer is addressed by a counter walking across the line. Pin 3 of the 74LS86 at 4L was stuck low despite a healthy input, and that chip is the XOR that mirrors a sprite left to right. Replaced, and the main Commando sprite looked almost right. Except for his head.
Almost right is worse than broken. The address counter is three 74LS163 chips chained together, at 5M, 5L and 5K, and I ended up replacing all three, one at a time, each one making the sprites slightly more correct than the last. When the third one went in, the whole thing snapped into place.
Scrolling landscape, trees, vehicles, soldiers, all of it moving. Both sets now run the game from cold, which after everything above still feels faintly unreasonable.
There is one thing I have not cracked. Commando has a FLIP signal for cocktail cabinets, where the whole image mirrors so player two can sit on the other side of the table, and it works by XORing the screen counters against that single line. There is a character bug hiding in that chain which only shows itself in one of the two orientations. It is on the list ;)
That mystery is a good part of why I ended up drawing the entire machine out, chip by chip, which turned into a project of its own.
Four to six weeks of evenings, and by the end I had replaced 41 chips and a capacitor across the two sets, plus two CPU sockets that were too far gone to trust. For anybody who ends up here with the same game and the same symptoms, this is the full list.
The dirty set. Scroll board: 74LS175 at 8D, 74LS174 at 3B, 74LS283 at 4E, and all six tile ROMs at 11 to 16. CPU board: capacitor C32, 74LS04 at 2M, the Z80 at 11M and its socket, 74LS161 at 1L, the program ROM at 9M, 74LS174 at 7D, the sound Z80 at 11F and its socket, the YM2203 at 9C, then later 74LS08 at 9L and 74LS174 at 7L when it died mid test. Sprite board: one of the six 2114s.
The clean set. Scroll board: all six tile ROMs again, plus the RAM at 2B and the RAM at 4B. CPU board: ROM 1 at D5, 74LS194A at 4F, and the upper half of the stacked ROM pair at 9M. Sprite board: ROMs 5 to 10 reburned, 74LS139 at 6H, 74LS86 at 4L, and then all three 74LS163 counters at 5M, 5L and 5K.
Twelve of those are plain 74 series logic, which is the part that surprised me. Going in I assumed the ROMs and the two Z80s would be the story. In the end the interesting faults were nearly all single broken gates and single dead flip-flops inside chips that cost pennies, each one producing a symptom that looked nothing like a broken gate until you traced it ;)
All 250 chips and every wire between them, rebuilt from the original 1985 Capcom drawings into an interactive schematic. Browse all three boards, click any net to trace it across the machine, compare against the manual scans, and find exactly where each chip in this story lives.
Coin up, and there it is, running on real 1985 hardware after a few weeks of picking dead chips out of it. I played a lot of Commando in the arcades as a kid, just never as much as I wanted to, because every go cost another coin and the pocket money always ran out long before the enthusiasm did. That is where the Commodore 64 came in. Elite's conversion is the one sitting in the thumbnail, and it got absolutely hammered in a way the cabinet never could be: one cassette, a very patient datasette, and Rob Hubbard's title tune, still one of the finest things anybody ever squeezed out of a SID chip. I would happily sit through the entire load again just to hear it. Going from counting coins in an arcade to having the actual arcade board working on my own bench, one chip at a time, closes a rather long loop ;)