Sunday, 7 February 2016

Atari Asteroids Repairs.Part One: Sparks, Smoke & Exploding IC's

Recently I pick up a complete set of Atari Asteroids parts that will eventually get put in a cabinet of some sorts. All the parts were in an untested condition and expected to have faults that would need attention.

This weekend I laid all the parts on my work table a fired them up!

The power brick was missing a couple of fuses which I replaced, the screws holding the 'Big Blue' capacitor in place were also missing, luckily I had some that fitted in my box of odds and ends. The power brick was from a Missile Command cab originally, this is fine for using on Black and White vector games. The only item I had to change was the gender of one of the pins in the connector from the main connector that connects to the wiring loom.

At this point I looked on-line and checked what the output voltages should be coming out out of the brick. All checked OK. So I connected the ARII I was given. I think Asteroids originally came with an ARI but the ARII can be wired up, it just doesn't utilise one half of the AR board and only used one of the amplified audio outputs. I had to tweak the adjuster to get the 5Vdc correctly set, and hoped the audio amplifier would be working when the game was running.

The game PCB appeared to be in very good condition, the X-Gain variable resistor had been broken off so I swapped it for a new one and changed the Y-Gain adjuster at the same time. I spent a few minutes looking over the solder side of the PCB and straightened a few IC legs that had been bent over.

The photo below shows the kit laid out nearly ready to be powered on. You can see the game PCB has a small circuit and some wires attached, at a guess this is some sort of speed up hack, I removed the wires and board before powering up.

I didn't think it wise to power the monitor as I'm sure it needs some TLC and will be a whole job in itself to check it over and plug it up so I got my scope out and wired the X & Y Outputs from the game PCB and powered the game on...

I couldn't see anything on the scope and the player 1 & 2 led's were flashing away very fast. At this point I checked all the voltages over on the game PCB, going by the schematics all seemed good. I flicked the game into test mode and was pleasantly surprised.

The test grid showed and pressing the game buttons I heard a short beep which is what's expected. flicking back to gameplay mode I was met with the same blank screen and flashing LED's. The top left of the grid image had what looked like number in, referring to the manual these indicate ROM errors.

After reading the ROMs in my programmer I found two that wouldn't verify so I burnt a couple of 2716 ROMs with the correct files. This fixed the bad ROM message in the test screen but unfortunately the game still exhibited the fault when not in test mode. :(

After browsing the schematics I looked back at the scope to fine the grid was no longer being displayed but there did appear to be some sot of text and a few lines still showing, at this point I decided to check over the voltages again in case something voltage wise had failed.

Using my multimeter I was checking over the voltage regulators on the board and slipped.....

I accidentally shorted the 22Vdc input voltage to the 7812 regulator to the ground pin. There was a big spark and I quickly reached for the power switch! Back to the wiring diagram, the 22Vdc supply is derived from an AC feed of the power brick. One of the brick fuses had blown so I replaced it and turned everything back on, after a few seconds there was a small explosion from somewhere on the board followed by smoke and the lovely smell of silicon burning. Again I quickly turned the mains supply off.

So the same fuse had blown again on the power brick and clear something else had gone badly wrong. After checking thing over I found two diodes on the gameboard that had gone short circuit, (CR11 & CR12 for reference) they rectify the incoming AC and turn it into DC. With three voltage regulators sitting on the DC side of these diodes they obviously weren't happy being pumped with AC, the smoke came from a 7805 and a 7812. Both of these had signs of meltdown so I changed them when I replaced the diodes.

The IC that exploded was an LM324 Op amp that is part of the audio circuit, I replaced this with a socket and new IC.

Photo below shows the sum of faulty parts due to my little 'slip' whilst checking voltages.

Cautiously I fired the board up again and was relatively happy to see the same screen presented that was there before my small mishap. 

This is where part One ends and will continue as I progress through hopefully getting the game running and checking over the monitor.


Monday, 1 February 2016

Atari Jet Fighter. No computer AI in one player games

So at my meet a few weeks back Jet fighter decided to play up... When in one player mode, the black Jet wasn't chasing or shooting at the white (player 1) Jet. Looking at the schematics and reading the circuit information in the manual, I could see that the position data from the white Jet (player 1) is used to make the black Jet move and fire. This AI had stopped working. In two player the game played fine with no issues.

The schematic below is from the area which deals with the one player games and the AI of the black Jet. The 74175 at P5 takes position data from Jet 1, these are passed into the address lines of a Prom at R5 which is programmed to output certain values at the 74153 at R6. It's these values which determine the way the AI moves the black Jet. There are four combinations of movement the black Jet can take as shown below:

R6 Pin 7 | R6 pin 9
   1                 0       Jet turns left
   0                 1       Jet turns right
   1                 1       Jet flies straight
   0                 0       Jet slows and fires

Using my trusty logic probe I honed in on the prom at R5 being the potential issue, Initially I thought the 7420 at C5 was a problem but after removing it from circuit it tested OK. The prom appeared to be getting pulsing data on its input address lines but the output pins were behaving in a strange manner. At times the would read as having low outputs and at other time my probe was reading that the pins were dead, these were reading .4v using my multimeter.

I needed to check the prom data to try and confirm if it was still good. From my repair of Tempest a while back I had to make an adapter to read the same type of prom, my programmer cannot read them as a native device but will read them as a 2716 as long as the pins are adapted, so I got out my adapter and tried reading it to compare with the known dump of the R5 file.

82S123 prom to 2716 pinout to read the data off the prom

Well it read the prom but the data was just garbage and didn't look anything like what it should have been. Looking for a solution (especially as my programmer wont program these proms) I found an old webpage by  Mark from Retroclinic whick describes using a reprogrammable Gal logic IC to replicate a prom.

With some help from Phil Murry to make the code file, I knocked up another adapter, this time to convert the Gal16V8 pinout into the prom pinouts. The pinouts below show the pin order we would need to use to hopefully make a replacement for the suspected bad prom.

82S123N Prom 32x8 Dip 16

 D0    | 1  16|  Vcc (5V)
 D1    | 2  15|  /CS (GND for R5)
 D2    | 3  14|  A4
 D3    | 4  13|  A3
 D4    | 5  12|  A2
 D5    | 6  11|  A1
 D6    | 7  10|  A0
GND | 8   9 |  D7

GAL 16V8

          | 01   20| Vcc (5V)
          | 02   19| D0
          | 03   18| D1
 A4    | 04   17| D2
 A3    | 05   16| D3
 A2    | 06   15| D4
 A1    | 07   14| D5
 A0    | 08   13| D6
          | 09   12| D7
GND | 10   11| /CS (GND for R5)

With the Jet Fighter R5 Prom code entered, this compiles to a .jed file which is loaded onto the Gal16V8 via my programmer. .PLD code shown below.

Name JetFighter_R5;
Partno 32x8prom;
Date 31/01/16;
Revision 03;
Designer Mark Haysman original;
Company Leopardcats original;
Assembly None;
Location None;
Device g16v8a; /** changed gal type **/

/** Example of 82s123 simulation **/
/** Uses Jet Fighter Prom R5 Data **/

/** Inputs **/
Pin 8 = d0;
Pin 7 = d1;
Pin 6 = d2;
Pin 5 = d3;
Pin 4 = d4;
/** Pin 3 = tristate; **/

/** Outputs **/

Pin [12..19] = [Q7..0];

/** Declarations and Intermediate Variable Definitions **/

field byte = [Q7..0];
field address = [d4..0];

/** byte.oe = !tristate; **/

table address => byte {
0 => 30;
1 => 87;
2 => 38;
3 => a7;
4 => e5;
5 => 1c;
6 => f1;
7 => 0c;
8 => 71;
9 => 87;
a => 71;
b => a7;
c => c3;
d => 9c;
e => e1;
f => 8e;
10 => 8e;
11 => e1;
12 => 9c;
13 => e5;
14 => a7;
15 => 71;
16 => 87;
17 => 71;
18 => 0c;
19 => e1;
1a => 1c;
1b => e5;
1c => 2f;
1d => 38;
1e => 87;
1f => 30;

After programming the prom and plugging in the adapter the game now works as it should :)

I will source a prom and get it programmed, but this was a good exercise in using a current reprogrammable device to replace some old technology.