R-Type Repair Logs

From Arcade Otaku Wiki
Jump to: navigation, search

Repairer: Paul Swan

BOARD NO: 0016
GAME: R-Type
DATE: 1987

SYMPTOM (12/05/96)

The game crashed at power on with a "RAM NG 7" error.


Diagnosis of this board was hampered by the large number of custom devices and the piggyback ROM board which blocked access to some of the devices. Sheen differences on the pins of an empty jumper site on the ROM board suggested a jumper link was missing. Replacing the link had no effect on the fault. There seemed no visual indication on the PCB as to which RAM was number 7. Ataching a pulse injector to a data pin on each identifiable RAM device in turn gave the following results:-

2x4364's on ROM piggyback -> Prevented the game from booting.
IC70, IC71 (Top) -> Caused a "RAM NG 5" error.
IC35, IC36 (Bottom) -> Caused a "RAM NG 4" error.
IC33, IC34 (Bottom) -> Caused a "RAM NG 3" error.
IC39, IC38, IC37, IC36 (Top) -> No change. Visual effect on video.
IC21, IC22, IC23, IC24 (Top) -> No change. Affected objects when they were present on screen.

The above results suggested that the fault was related to one of the "No change" RAMS on the CPU board. Spurious objects filckered on and off suggesting possible object RAM problems (IC21, IC22, IC23 ,IC24). Unfortunatly, these devices were underneath the ROM biggyback board making diagnosis difficult. Using an oscilloscope to examine the signals present on all the devices (without the ROM board) seemed to indicate sub-standard pulses on one of the data pins on IC22. Changing IC22 cured the sub-standard pulse but had no effect on the game other than to partially alleviate the crash - the game started. The game ran very shakely and kept "freezing" and resuming at random. The attract mode sound ran O.K. but the video was missing objects most of the time with corrupted objects flickering around the screen occaisionally. Deeper examination of the circuit suggested that the CPU could write to IC21 and IC22, but was not able to read from them since the data from the these RAMS were fed from an LS244 (hence, the CPU can't test them). Their data bus also went into a couple of the custom chips. IC23 and IC24 were fed from an LS245, suggesting that the CPU could read and write these devices (hence the CPU can test them). There appeared to be no other connection to the data bus of these RAMS other than the LS245 buffers connecting them to the CPU bus. The address bus of the two pairs of RAMS were fed from IC35 ("the chip with no name"). IC35 seemed to be some kind of address multiplexor. IC23 and IC24 were both inactive without the ROM piggyback board present preventing any further diagnosis and I elected to change them both anyway. This had no effect on the game. Examining the inactive data bus on IC23 revealed an half-height square wave on one of the data bus signals whilst all the rest were floating. The only place other than the RAM itself that this could come from seemed to be the LS245 buffer, which was disabled. I elected to change the LS245 but it had no effect on the game. Tracing the two address buses back from the RAMS to IC35 allowed further diagnosis whilst the game was running. The oscilloscope indicated that all the address and control lines feeding the RAMS were running, and I abandoned persuing the RAM fault (IC35 suspected). Instead, I went after the cause of the game stalling. During a stall, the CPU was running and not halted and interrupt pulses were present on CPU INTR pin. The INTR pin was fed from an 8259 PIC taking in up to eight interrupt sources. Four of the inputs were tied low. Of the remaining four sources, one was pulsing, one was low, one was high and one was sat at 1V. Checking this signal with a multimeter gave a DC resistance of 20 ohms to both supplies. Attaching a pulse injector set at 400pps to the signal eliminated the freezing. This signal was sourced from pin 44 of... you guessed it... IC35. Changing the 8259 had no effect on the game and did not remove the DC resistance.
99% sure that the faulty interrupt signal is due to a fault in IC35.
75% sure that IC35 is causing the RAM fault either by directly corrupting the RAM address bus or by mis-timing the CPU causing an access collision between the video circuitry and the CPU resulting in RAM corruption.