BryanMcPhail.com

Professional software development, amateur BMW tinkering, old arcade game stuff

By

Technos Double Dragon 2 arcade repair log #2

Owner of this board reported it would crash going into attract mode or when you inserted a coin. However when first wired up I couldn’t get past a screen full of garbage tiles. Logic probe didn’t show any problems, but piggy backing known good RAM onto the 6264 main RAM chip @ IC20 made the game boot to the title screen. However it did indeed still crash on coin up or attract mode giving a static corrupt screen.

IMG_6816

IMG_6821 IMG_6832

As the CPU was obviously running to get that far and nothing seemed wrong this was a head-scratcher for a while… I used MAME to try some things out – when I disabled the second CPU in the emulation I could mimic the board problems exactly. (DD2 is a 3 CPU game – master CPU, sub CPU and audio CPU). It turned out the sub CPU RAM @ IC24 was bad as well – when replaced the game ran and played fine but sound effects were very quiet and music very loud.

Audio

There’s not much to the sound section on this board – music comes from the YM2151 synth chip through a DAC, and sound effects come the Oki sampler player. Both go through some pre-amp stages before being combined and hitting the main amplifier. To debug things I used the trick of connecting some powered speakers to each of the preamp input pins. The two MB3615 preamps have four channels each – but it’s not split between music and sfx – for whatever reason the music uses 6 preamp stages, but SFX only two. Listening to the individual channels through the speakers confirmed the SFX were clear and correct but the music was distorted and corrupt at every stage. So I replaced the DAC – but no change, replaced the capacitors used – no change, then eventually the preamps themselves with replacements from a Wrestlefest board. The preamp at IC87 was indeed bad – sound & music were now perfect.

IMG_6838

Sprites

But this became the repair from hell as now sprites were corrupt. Very weird as all the other work I done was on the top board and this was a new fault on the bottom board that I had barely touched.

IMG_6893 IMG_6935

Every 16 pixels or so across the screen there were corrupt lines – but only on alternate scanlines. Like many other games Double Dragon 2 uses a double scanline buffer system where sprites are written to a pair of RAM chips which alternate every line (one is written to by the video system, as one is read out to the screen). Because the fault was consistently every 16 pixels I suspected a horizontal counter had gone wrong somewhere. But because it only affected one of the scanline buffers it had to be after the chunk of logic that decodes the sprite list and reads the ROM data.

The Double Dragon schematics show the scanline buffer area – there are really two copies of this circuit on the board. A bunch of LS163 counter chips are used to count the horizontal pixels – these go through a further buffer before going to the line buffer RAM chip.  If I used a logic probe to short out the LS163 timing chips in one area then I could get a perfect sprite display on even scanlines, if shorted out in the other I get a garbage display on odd scanlines.

schem

However, having narrowed the fault down this far there wasn’t much progress – logic probe showed everything working ok, digital oscilloscope didn’t show any ‘noisy lines’, shorting pins together didn’t reveal any clues and piggy backing known good IC’s for every chip in this page made no difference.

After many hours I had to resort to using a heat gun to remove all the IC’s in this area to test them off the board – and… bad RAM :( Not bad enough that it was fully dead, just bad enough that one of the address input pins clearly wasn’t working properly and data was being randomly diverted to weird addresses every 16 pixels or so.

New 6116 RAM installed and finally the game perfect again.

IMG_6953 IMG_6956

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>