Star Wars hoard repair

DaveAS

User
Credits
334CR
Yes, I did mean 'hoard', rather than 'board.
smiley1.gif


A long time ago in a ... oh, that joke's already been done once or twice.

Time for some Star Wars PCB repairs. Faced with fixing a minor fault on my working cab, I thought it was about time I dragged my other sets out of the attic and had a go at repairing them. In all there are 3 boardsets to fix.

Set 1

Symptoms: Intermittent sound problems. A mix of effects missed or incorrect sounds triggered.

Self-test sometimes showed a PIA RAM fault. Swapping the PIA with a known good part seemed to fix the problem for a while, then it came back. Suspected a dodgy socket and this was comfirmed by being able to vary the fault by pushing down on the chip.

Socket replaced. Fault gone.

Set 2

Symptoms: AVG output showing little more than a diagonal line. Sound is just noise.

AVG debug

Initially I worked on the AVG by swapping it into set 1. The output was just the same. Test mode beeps indicated no RAM/ROM faults, narrowing down the possible causes.

Star Wars isn't much fun when it looks like this:
sw_debug_set2_avg_out.jpg


Neither X nor Y output ever went positive and there seemed to only be 3 different levels on each.

DAC inputs were certainly not stuck and the digital values were not representative of what were more-or-less just square waves on the X/Y outputs. The DAC outputs are virtual earths, so you can't probe them directly to verify; however, the analogue output circuitry can be checked for consistency, i.e. does the same crap appear at each stage? Yes it did, which at least suggested the last 2 amplifier stages were okay. Invert X and Y were grounded to check the analogue switches used for display flip. There was a chance something funky was happening with the first stage amplifier and/or centering switch for each axis. As each shared a chip with a known-working stage, I figured this was unlikely.

As a final check the BIP waveforms were compared. Again, due to the virtual earths, you can't check the final output, just the stages leading to it. No differences between the good and bad boards.

It was time to pull those DACs! The AM6012 DACs can be replaced with DAC312s which are still available from Farnell and the other usual suspects.

Swapping out the X-axis DAC produced some encouraging results (grid test running):
sw_debug_set2_avg_xfix.jpg


Looks vaguely grid-like. After swapping the Y-axis, I had sane vectors.. yay!

sw_debug_set2_avg_yfixb.jpg


Everything looked good in-game, so I reintroduced the original CPU board.

CPU board debug

Alas, all was not well. There were no stars and the DIP switches were stuck in the 'off' state.

sw_debug_set2_cpu_nostars.jpg


Starting with the easy stuff, I checked the DIPs. The switches themselves were all faulty and showed a very high 'on' resistance. Kind of surprising they all went together, but I'll take an easy fix any day of the week. New switches added and problems solved.

The missing stars proved somewhat more difficult. Test mode reported a mathbox failure, code B0000. The majority of the mathbox tests are really well documented in the operator's manual except for, you guessed it, test B. The manual says the test uses the block index counter and indirect addressing.

A quick poke around in the ROMs gave a better idea what was going on:

- Set block index counter (BIC) to 4
- Increment BIC 4 times
- Put a signature value into the mathbox RAM at word address 0x20. Apart from values for the B and C registers in the mathbox, the rest of the RAM is zeroed.
- Use indirect mode to read from word address BIC*4 and copy it to address zero.
- Check that the correct signature appears at the bottom of the RAM.
- Repeat from step 2, doubling the increment value and word address each time, i.e. a "walking one" on the address.

On failure, the value read from memory is reported. This would have been useful information IF the test had bothered to fill the RAM with a predictable pattern. As it was, the odds of zero being reported for a failure was pretty high.

Checking the values at the BIC registers (counters @ 3D, 3E and 3F) showed 0x108 on failure. Not a nice, power of 2. How did that happen?

Each counter was monitored individually using a logic analyser and appeared to function correctly. What's more, the final value was 0x100, which would be correct (the BIC is 9-bit, so 0x100 is the last value for a walking one test). Cursing the lack of trigger counters on my analyser I backed off the sample rate and could indeed see a second event which messed up the counter. At this point, the penny dropped: the test was repeating and 0x108 was the value you'd end up with if the msb of the counter had not been reset.

Here's the BIC circuitry:
sw_debug_set2_bic.jpg


So, either MW1* wasn't being driven low to load the counter msb or the counter itself was faulty. A false 'high' wasn't being loaded, otherwise the test wouldn't have passed the first time around. I'd seen the carry into the msb working, so my money was on MW1* as it seemed unlikely the part would only fail to load and otherwise work properly. Wrong! Monitoring the counter activity showed MW1 going convincingly low and the output not changing.

Part 3D was swapped out and..
sw_debug_set2_cpu_mathbox_fixed.jpg


..even better, I flipped over to game mode and the sky was full of stars!
sw_debug_set2_cpu_stars.jpg


Next up is the soundboard for set 2, then it's the complete basket case that is set 3.
DaveSpicer2016-03-12 11:18:43
 

DaveAS

User
Credits
334CR
muddymusic said:
Nice one, you'd better get 3 more cabs to house them now
smiley4.gif

Ha, I'm not that much of a hoarder. There are 3 boardsets for 2 cabs. Set 1 was from my worker and had been showing intermittent sound problems for months.
 

DaveAS

User
Credits
334CR
Set 2 sound board

Just noise in game mode, with occasional watchdog resets. Diagnostic mode gave 4 beeps with the pitch way off and also ocasionally reset. The beeps seemed to indicate both ROM banks failing, although with the pitches being wrong, all I could really say for sure was that half the tests were failing.

The 6809 was pulled and the pins driven from a tester. I use a poor-man's version of the excellent-looking Arduino-based setup being talked about over in another thread. Mine's just a straight wiring job from the i/o of a Mega2560 to a 40-pin transition header. It's a bit hacky, but does the job.

Repeat reads from the ROM area showed inconsistent values for some bits. Removing the ROMs and pulling up the data bus showed data bits being pulled low. Checked the chip selects while holding a read from the base of the ROM and saw Pokey # 0 selected. The high level address decoding was working correctly, with 2J doing its job and driving CI/O* high. The LS139 at 3J had to be bad or shorted. There were no obvious signs of shorts, CI/O* was reaching the gate pin and cycling addresses showed each Pokey selected in turn.

3J was swapped out and all ROM locations then returned 0xFF. Replaced ROMs/6809 and ran diagnostics. All Pokeys and speech were working correctly. Fired up the game and enjoyed a crap game of Star Wars by hitting edge connector pin 10 with a ground wire.
smiley36.gif

DaveSpicer2016-03-14 12:24:41
 

DaveAS

User
Credits
334CR
Set 3 recce

This set has a bit of a rust plague. There are 21 rusty LS parts on the CPU board and 1 on the AVG.

sw_debug_set3_rust.jpg


The LS299s and LS191s took the brunt of the corrosion and must have all been poorly-made. It's funny how there are pristine parts sitting right next to ones that look like they were stored underwater.

A quick fag-packet calculation says £35 from Farnell to replace all of the corroded parts. LS299s are expensive! Mouser shaved a tenner off of that figure, so that'll do me.

The edge connectors had been soldered at some point to "repair" them. I'll come back to those later. The connectors in the cab are also likely to be well and truely f**ked as a result and I made a mental note to replace those when the time comes.

I'll swap out the rusty parts before starting any serious debug. In the meantime, I'll run up the sound board on one of the working boardsets and see what it does.
 

RGP

Meeter & Greeter
Feedback
5 (100%)
Credits
2,039CR
Rust plague is always a killer, ask Equites - he sorted out my set for me from the cockpit I got in 2011. There were tons of corroded parts in there.

I must dig out my spare set and sort out MATH BOX RUN LINE ERROR
 

DaveAS

User
Credits
334CR
Set 3 sound board

Symptoms were a really loud, buzzy racket coming from the speakers.

Game mode: constant resets, test mode: just buzzing, sound board self test: just buzzing, sound PCB comms test: no LEDs lit, so no comms. Deader than a dead thing.

The clocks were running and there was activity around the CPU, ROM and RAM. The PIA got my attention by being hot enough to nearly take the skin off my fingers. Ouch. Swapped for a known working part. Still no life, including the comms test.

Probing the sound buffers at 3C/4C showed the buzzing coming from Pokeys 0 and 3. The chip selects weren't firing. Not sure if a Pokey could come up noisy if not initialised. Something to come back to once the comms problems are sorted.

The CPU tester was plugged in and was able to dump the ROM contents without issue. There was no real excuse for the CPU not to run and I suspected it was a goner and just generating bus activity as part of its death throes. Swapped for a working part and the comms test started flashing an LED.

Sound board diagnostic and standard test mode still just buzzed, with no status beeps. However, I could hear, "May the Force be with you", in game mode, so possibly just had some dead Pokeys. Running the "music and sound effects generators test" from the manual showed that Pokeys 0 and 3 were dead, i.e. the same ones the buzzing was coming from. Swapped both out for spares and the board sprung into life.
 
Top