Jun 072016
 

I got this faulty Pyros (US version of Wardner) PCB from Ebay :

DSCN3385

It was not really cheap but it was worth the buy since, on the basis of the seller description, I was confident it could be an easy fix.Board showed an ‘I/O ERROR’ upon boot:

DSCN3384

I knew from my experience that this board produces the mentioned error when, indeed, there is some troubles with the inputs during the startup sequence (also a simple buttom pressure would cause it).So for first I went to check with my logic probe all the inputs probing pins on the JAMMA edge connector.All of them were high except the ‘COIN 2’ (pin 16 solder side) which was stuck low.I could trace it back to pin 17 of a 74SL240 @20N :

74LS240@20N

I could measure only few Ohms of resistance between this pin and ground, this meant internal junction was nearly shorted to GND:

DSCN3387

Once desoldered the chip, it obviously failed the test:

74LS240@20N_testing

With a good chip, the board entered in game with no further issue.

DSCN3392

 Posted by at 11:08 pm

Teenage Mutant Hero Turtles repair log #4

 PCB Repair Logs, Repair Logs  Comments Off on Teenage Mutant Hero Turtles repair log #4
Jun 062016
 

tmnt0

1) It was stuck on a white screen on boot.

After looking for a suspect chip, piggybacking, etc… with no luck, I finally found out that the reset signal was going to high level too quick to let enough time to the 68000 for proper initializing.

Thanks to the schematics, I could see that the reset was generated by a custom Konami chip labeled 051550 located at B19. Like many boards of that era, a capacitor is used to create a temporization when you power up the board and let the 68000 initialize after everything else is ready.

The capacitor takes one or two seconds to fully charges then the chip responsible for generating the reset switches to high level. You can see when powering up the board and looking at the signal on the + pin of the cap with a scope the voltage slowly raising before stabilizing. Here, the ceramic capacitor located just below the 051550 chip didn’t seem to charge slowly and got suddenly to high level when powered up. The cap was a bit hidden under the 051550 chip that was bended over it so I softly pushed it and it went like that:

tmnt1

This chip is a small ceramic board populated with SMC chips recovered by a black material. It was cracked but that was almost unnoticeable before pushing on it. It is used on many Konami boards of that era and luckily I could find a good one on a spare board. Here is a closer look at both desoldered:

tmnt2

After replacing the chip, it booted, got the RAM/ROM test with everything OK:

Then the white pattern:

tmnt4

Then it rebooted and repeated that again and again…

2) I inspected the signals near the CPU part, RAMs, TTLs, but everything looked fine… Retried piggybacking the RAMs with no changes…

Sometimes it may happen that a minor error in the data or address lines cannot be clearly visible with the scope so I desoldered the two CPU RAMs, a pair of Fujitsu MB8464 (64kb) at J13 and L13 and tested them on my programmer. And the one at L13 didn’t pass the test:

tmnt6

I replaced it with a new one and the game launched. Everything else works perfectly.

tmnt5

 Posted by at 10:45 am

Thunder Fox repair log

 PCB Repair Logs, Repair Logs  Comments Off on Thunder Fox repair log
Jun 032016
 

Got this Thunder Fox PCB from a friend to repair.

thunderfox1b

It had 2 issues:

  • Vertical lines on some sprites.
  • No sound.

thunderfox2

I had a working Thunder Fox PCB with me so I started the easy way to swap sprites ROMs between the boards and got the sprites working again with replacing the one labeled c28-03 at location IC29 (#1 on the PCB picture above). I reburned a 27C400 EPROM as a replacement.

thunderfox3

For the sound part, I could notice there was no analog output signal at pin 27 on the YM2610 sound chip but all its data inputs and data lines on the sounds ROMs were pulsing. I also noticed the signal on the IRQ (pin 56) was stuck low (it was pulsing on my working board). The IRQ signal is an output so it made me think the YM2610 was clearly the faulty one so I replaced it but with no change…

The IRQ pin was still stuck low so I traced it to pin 16 of the Z80. Strange because it is an input pin on it but sometimes if a pin is dead it takes over and pushes down the data that comes from an other chip. So I tried replacing the Z80 (#2 on the PCB picture above) and finally got the sound working. That was it !

 Posted by at 8:50 am
Jun 012016
 

Initial Symptoms

  • Static junk on screen, which changes between reboots.
  • No sound or evidence that game is running in background.

Sony PVM monitor wouldn’t sync in RGB mode, but would (for some reason) in Y/R-Y/B-Y mode.

Random junk when powered on

Random junk when powered. (purple image is due to monitor problem)

CPU Boot Problem

Probing CPU interrupts showed that sometimes V-Blank interrupts were active, sometimes not. Initial check of EPROMs showed that one was dead, but replacing did not solve the problem. Probing with a logic analyser showed that the data/address bus of the main CPU was pulsing, and the game wasn’t watchdogging so deeper investigation was required.

Tracing with a Saleae logic-8 showed that the first v-sync interrupt was getting acknowledged by the CPU, but subsequent interrupts were ignored. Digging futher I generated a partially complete address/data trace by the (shared) data+address bus and the bus status lines (BS0-2). Since my analyser is only 8-bits, I could only trace 5 data+address lines at once. I wrote a script to combine multiple traces using the bus status lines to synchronise the data. Luckily the behaviour was deterministic, and I could extract enough trace data (12-bits of both data and address) to work out a full trace by correlating the data with a mapped ROM dump from Mame. Doing this I found that one of the RAMs was faulty; The stack was getting corrupted, causing a ret instruction to jump to an unexpected program address. Swapping the program RAM resulted in the game booting.

Bad SRAM of main CPU. Socketed and replaced.

Bad SRAM of main CPU. Socketed and replaced.

New Symptoms:

  • Some tiles have flickering horizontal bars
  • Some tiles seem to not change from top to bottom (in horizonal screen)
  • Sound crackly and missing music
Background tiles are corrupted

Background tiles are corrupted

Tile Corruption Problem

Probing the tile ROMs shows that ROM U105 address lines 1-4 were floating. These were driven by the SEI0020BU custom chip at U102. Pulling the SEI0020BU and swapping it with it’s neighbour switched the tile corruption. Clearly the SEI0020BU was the cause of the problem. Annoyingly these aren’t easy to come by.

Reverse Engineering the SEI0020BU

I guessed that the main function of the SEI0020BU was to drive the addresses of the ROM chip in the direction of the raster. I checked the connections of the SEI0020BU with a multimeter and worked out the function of each pin (see schematic below for more details).

Checking the Mame source confirmed that the address mapping for this chip corresponded with the x-axis scroll register. I guessed the purpose of the chip was to store an x-axis scroll offset and add that result to the raster x-position. I guessed that only 8 bits of shift were actually needed, and I knocked up a prototype on a breadboard, which seemed to work well.

SEI0020BU breadboard prototype

SEI0020BU breadboard prototype

With a working prototype, I got to work using CadSoft EAGLE (PCB CAD tool) to design a PCB daughterboard for a more permanent solution. The PCB was printed by Seeed, and delivered in a few weeks.

First SEI0020BU daughter board

First SEI0020BU daughter board

Once the printed PCBs were delivered, they seemd to work well, but I’d made a few mistakes. Firstly, the output from the LS156 should have been pulled high. Secondly, only 8 bits for the shift offset was insufficient – I actually needed 9 bits. This was a stupid mistake – I’d been unable to test the full shift range properly on my test rig because of a faulty joystick adaptor! Once I tested the board in a cabinet, it was clear that scrolling too far to the left (offset register wraps) causes the tiles to distort (-1 wrapped to 255 instead of 511).

I managed to hack a fix onto the PCB by piggy backing an extra 8-bit buffer and a 4-bit adder onto the PCB, cutting a trace and wiring up with patch wires. The modified PCB finally worked properly, and the graphics were fixed. I wasn’t happy with it though – I’d printed a PCB, so I thought I may as well finish the job!

Patched SEI0020BU Replacement Daughterboard

Patched SEI0020BU replacement daughterboard

I modified my design in Eagle (see schematic below), and ordered a new set of PCBs to be printed.

SEI0020BU Schematic

Schematic for Raiden SEI0020BU replacement

The new PCBs arrived, and worked perfectly – phew!

Final working SEI0020BU replacement daughterboard

Final working SEI0020BU replacement daughterboard

Sound Fix

Sound was working, but distorted and noisy. Probing the sound input to the amplifier with an oscillioscope showed that the signal was weak. This was driven by the HB-41 SIL package. The inputs to the HB-41 looked clean, so it looked like it was bad.

Faulty HB-41 SIL package

Faulty HB-41 SIL package

Luckily I had a spare on a Seibu Soccer donor board. Hooking it up solved the sound problem. Job done!

Image is clean, and game now functions correctly.

Image is clean, and game now functions correctly. Colour correct in arcade cabinet.

Splatterhouse repair log #4

 PCB Repair Logs  Comments Off on Splatterhouse repair log #4
May 262016
 

I got from New Zealand this genuine Splatterhouse PCB for a repair:

Splatterhouse_PCB

Upon boot the board was stuck on a “ROM TEST START !! PLEASE WAIT…” message displayed upside down :

issue

From my past experience I know for sure this issue is caused by a bad ’64A1′ custom replaceable with a programmed Hitachi HD63701 MCU (plus a patched ‘VOICE0′ ROM in order to handle two custom opcodes of the ’64A1’)  following this procedure:

Namco System 1 custom ’64A1′ replacement

But in this case, as you can see from the above picture of the board,  the owner already replaced the ’64A1′ (and at same time  patched the ‘VOICE0′ ROMs using an hacked 1Mbit JEDEC EPROM in place of a non-JEDEC one ) and this didn’t fix the issue.For first I reverted the modification the and reinstalled the original custom ’64A1’.With this configuration the board successfully booted into game although some sound samples were bad.This lead me to think that there could be some problem is the data bus of the VOICE ROMs which prevented the HD63701 MCU to correctly read the patched data causing the missing boot. :

VOICE_ROMS

So, assisted by schematics, I went to check the involved circuit and found that pin 20 (data line D6) of the VOICE ROMs (Splatterhouse use only four of them to store samples) was not daisy-chained as it should have been:

VOICE_ROM_DATA_BUS

In the above snippet of schematics you can see (red mark) where extactly trace was interrupted.I simply used a bit of AWG30 wire to restore comnection:

patched_PIN20_VOICE_ROMS

This fixed completely the game using both the original ’64A1′ custom and the HD63701 MCU.End of job.

 Posted by at 8:19 pm