Since I had already restored a variant Super Cobra the plan was to use a second Super Cobra cabinet that was the same base cabinet for Scorpion to create and apply a Scorpion kit starting with the game PCB.
I had two game PCB sets to use as a main and spare. The initial assessment for each
was:
PA20210405
One of the game PCBs had leaking capacitor damage to remediate and I decided to replace all the capacitors in that section on both PCBs, making up a couple of ad-hoc cap kits. The PCB under the leaking capacitor was discoloured but the tracking was still intact.
After the cap kits were fitted a retest confirmed the sound was still good.
Location | Value |
---|---|
C104 | 1000uF/16V |
C105 | 100uF/16V |
C108 | 220uF/16V |
C109 | 220uF/16V |
One of the game PCBs had developed a graphics fault, missing sprites. The scope
confirmed IC 3M/3L (2114) object RAM data bus looked active OK. Mapping out IC 4J (LS273)
found everything active OK:
Pin | Signal | Pin | Signal |
---|---|---|---|
1 | Hi | 20 | Hi pulse |
2 | Hi pulse | 19 | Hi pulse |
3 | Hi pulse | 18 | Hi pulse |
4 | Hi pulse | 17 | Hi pulse |
5 | Hi pulse | 16 | Hi pulse |
6 | Hi pulse | 15 | Hi pulse |
7 | Hi pulse | 14 | Hi pulse |
8 | Hi pulse | 13 | Hi pulse |
9 | Hi pulse | 12 | Hi pulse |
10 | Lo | 11 | Clk |
To make it easier to isolate the sprite display I wanted to clear the background and leave only the sprites in a fixed display to trace. Support for Scorpion was easily added to the Arduino ICT based on the existing Scramble platform and I also added a custom function to clear the background characters.
With video quiet (a "RAM Write All AD" followed by a "Clear Bk") the video probe didn't see any sprite data at IC 6D (LS273). IC 8E (LS157) pins 4 and 12 showed sprite data off picture that confirmed sprite data was going into the line buffer logic but not coming out. IC 9F (LS32) pins 1,2,3 all showed sprite data. IC 8A (LS00) pin 4 showed sprite data but input pin 5 and output pin 6 didn't. IC 9C (LS20) output pins 8,6 were idle high and only IC 9D output pin 8 was active with low pulses. IC 8A (LS00) pins 4,5,6 and 11,12,13 were all active. IC 8B (LS08) pins 3,8 were active as was IC 8D (LS08) pins 6,11,8. The mixing appeared to be based off the inactive state of the ~GR0,1 & ~GC0,1,2 signals. If that theory was true then something in the circuit would need to clear the RAM state back to inactive. There was a collection of gates (IC 9E/9F) taking in a portion of the sprite RAM address plus a couple of display timing signals and outputting a signal that gated off the sprite RAM data inputs as the very last mix stage. This looked like it could perform that clear function.
Mapping out IC 9G & 10G (LS86) and found IC 9G pins 11 & 8 always low:
Pin | Signal | Pin | Signal |
---|---|---|---|
1 | Active | 14 | Hi |
2 | Lo | 13 | Lo |
3 | Active | 12 | Lo |
4 | Active | 11 | Lo |
5 | Lo | 10 | Lo |
6 | Active | 9 | Lo |
7 | Lo | 8 | Lo |
Replacing IC 10H (LS161) fixed the sprites and the game was running OK.
The Arduino ICT identified the ROM set as MAME "scorpiona" except for the hand
written "SCO C2A" EPROM at IC 2A that was unknown. This ROM was dumped:
Scorpion SCO C2A ROM Dump
There were some challenges figuring out the DIP switch settings for this game. The
table below captures my notes for how MAME and the physical switches map.
DIP No. | 8255 Loc. | 8255 Pin | 8255 Port | MAME Function |
---|---|---|---|---|
1 | IC 44 | 19 | PB 1 | Lives |
2 | IC 44 | 18 | PB 0 | Lives |
3 | IC 44 | 17 | PC 3 | Coinage |
4 | IC 44 | 16 | PC 2 | Cabinet/Cocktail |
5 | IC 44 | 15 | PC 1 | (unknown) |
6 | IC 44 | 12 | PC 5 | Difficulty |
7 | IC 44 | 10 | PC 7 | Difficulty |
8 | IC 38 | 16 | PC 2 | (unknown) |
Jumper | IC 38 | 15 | PC 1 | (unknown) |
During a 12hr burn in test the game PCB developed a fault and no longer booted.
The game PCB was removed, disassembled and connected to the Arduino ICT. On the bench no graphics were displayed. An ICT "ROM Check All" passed OK but a "RAM Check All" resulted in a hang that typically indicates missing VBLANK or similar video timing problem that hangs the Z80 bus. This was confirmed with an "Interrupt Check" that also failed, indicating no VBLANK interrupt was being generated.
Since the bottom game PCB was almost identical to Scramble I used Scramble schematics as a reference. Probing with an oscilloscope found IC 9M (LS74) input pin 9 VBLANK idle low. IC 9M inout pin 12 'D' was idle low and pin 11 'C', the 16V count signal, idle high. Moving back to the video counters IC 6M (LS161) output pins 11 to 14 were all active. IC 6L (LS161) output pins 11 to 14 were all active. IC 7L (LS161) output pin 11-12 were floating, 13 floating with a weak signal and 14 active. I suspected IC 7L was bad and replacing it fixed the graphics. All Arduino ICT tests passed OK and with CPU the game ran and played OK but the sounds weren't quite right.
A quick "AY Check" with the Arduino ICT using the Scramble sound configuration failed with "AY3 0004 04 00". Scorpion has a different sound PCB than Scramble but appears to be a superset - Scramble sound + 3rd AY-3-8910 + speech. Support for Scorpion sound was added to the Arduino ICT and the mapping of the 3 x 8910 documented. This configuration confirmed that it was IC 37 (8910) reporting failure on the ICT. ICT sound tests were also revealing that IC 37 audio output was very low at ~200mV p-p versus 1V p-p for IC 36. I suspected IC 37 was bad with a stuck data bit D2 and replacing it fixed the ICT AY check and audio output. In the game all sounds appeared to be working again. The PCB set was reassembled and returned back to the cabinet.