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


Konami Rush’N Attack arcade pcb repair

This pcb was in clean shape but sprites were corrupt.  It’s not very clear on the picture but it seemed every second column on the screen was missing, so was more likely to be in the sprite processing area than the ROMs (if it were the ROMs the missing lines would move around).


I confirmed the 4 RAM chips on the top right of the board near the graphics chip involved sprites by temporarily shorting some data lines together and watching the corruption change.  I was reasonably sure one of these chips was the problem, but a logic probe showed no obvious errors, so I removed them one by one and replaced with RAM from a parts boards.

The second chip from the top was the problem – replacing fixed the error!

IMG_3147 IMG_3149 IMG_3150



SNK NeoGeo 4 slot arcade pcb repair #2

Another 4 slot – a previous owner had installed a new battery and replaced the palette RAM.  The board now reported a RAM error with the original BIOS, and the diagnostic ROM confirmed it as the upper WRAM chip (see my previous 4 slot repair).

IMG_3055 IMG_3059

If you don’t have a SMT desolder station then (if you dare) you can remove surface mount chips with a heat-gun and some tinfoil to protect the surrounding areas.  The chips are capable of taking quite a lot of heat so the only worry is warping the board rather than damaging a chip.  Because there’s very little solder holding the SMT chips on though, they come off quite easily.


With that one RAM chip replaced, everything worked!





SNK NeoGeo 2 slot arcade pcb repair #2

This Neo 2 slot was stuck constantly resetting, which means the 68000 CPU is not resetting the watchdog timer, so the board continually tries to reboot itself.  A previous owner had clearly changed out some faulty surface mount RAM previously so I spent some time verifying all data and address lines from RAM/ROM to the CPU were correct as some looked like they could be shorted.  Turned out fine however.  Without much more to go on I tried out the diagnostic ROM which surprised me by booting and showing a VRAM error.  In this case both of the 6116 fast vram type chips that often go bad.  Both chips desoldered, sockets added and replacements fitted.  Now the diagnostic ROM reported no faults, but the board kept on resetting with the original ROM installed.

IMG_3045 IMG_3023


I dumped the original ROM and found it to be corrupt – no wonder the CPU kept crashing – really I should have tested that first.  Some kind of internal addressing fault as in the dump you can see some ASCII text where the reset and stack vectors should be.  Unibios was burned to a replacement eprom and everything worked again!




SNK NeoGeo 2 slot arcade pcb repair

This NeoGeo 2 slot booted to a screen saying Z80 error.  That doesn’t necessarily mean the CPU is at fault – it could be the program ROM, the RAM or several intermediate chips that connect the Z80 to the main 68000 CPU that prints the error.  In this case though a logic probe seemed to show the Z80 was dead.  Desoldered, installed a socket and Z80 pulled from an Arkanoid, and everything worked!

IMG_2986 IMG_3013 IMG_3015 IMG_3016




Capcom Buster Bros / Pang arcade pcb repair

An original Capcom/Mitchell Buster Bros pcb booted to a solid blue-green screen.  This is one of the infamous suicide battery pcb’s, where a custom Z80 CPU contains a decryption table in volatile RAM powered by a battery.  When the battery dies the decryption table is lost and the program code cannot be run.  This pcb was an untouched original with a 29 year old battery, so safe to say the battery was stone dead.


Full info on restoring these dead CPU’s can be found here –

One of the original tricks of this encryption is that program opcodes (instructions) are treated differently from operands (data).  This means that even if you understand the decryption and have the key you can’t just burn a new ROM in place as each byte the ROM will have two values depending if the CPU accesses it as data or instruction.  The solution is to decrypt the ROM for both data & instruction separately and burn to a new double size ROM with data in top half, instructions in lower half.  The CPU pin that controls whether instructions or data is being fetched is then used to select the upper address line on the ROM.

So the desuicide process is fairly simple – use 27c020 and 27c512 eproms to replace the originals, and run a wire to control the top address bit.  I’m pleased to say it booted up first time when I tried it.


But..  pretty obvious there was no red color channel.  The palette RAM would be the first port of call in this situation, but a logic probe showed neither of the two chips had any stuck bits.  I probed down stream of the RAM and there are 3 LS367 chips.  One each for red, green and blue.  These are the last TTL chips before the signal is converted to the analog output and they control the blanking by cutting out the signal during h-blank and v-blank events.  Shorting pins 2 & 3 on the red channel chip fixed the problem and isolated the fault to that TTL chip (which is a strange type of failure but there you go).



Data East Hippodrome arcade pcb repair

This pcb was dirty with signs of corrosion, booted to garbage on-screen and didn’t play.  First problem was very obvious – two RAM chips had been removed from the game board and a lot of traces had been pulled up and ruined.  Hippodrome isn’t the greatest game, but it deserves better than that so I installed some sockets and repaired the traces via wires on the underside.  I have another working Hippodrome for reference so it wasn’t too hard to figure out what was what, but schematics are available anyway.  (The RAM pretty much goes directly to the custom tilemap ASIC on the game board).

IMG_2797 IMG_2812

I swapped the game board onto the working main-board and the game ran and played.  At first there was a problem with 1 layer of tilemap graphics – an address line fault that caused tiles to appear in the wrong places, but that was just a problem with my trace repair and easily fixed.


The main board continued to boot to garbage which is usually a sign the CPU program is not running.  A logic probe showing the CPU had activity on the data and address pins so was trying to execute something at least.  I removed and tested the main RAM (TMM2063 which are known for going bad).  One failed the test.  When replaced the game booted!

IMG_2875 IMG_2846

But not so fast.. although the title screen was correct no sprites or background graphics were visible, just the top text layer.  Usually bad RAM would be the first port of call for missing tilemaps and sprites, but one layer comes from the game-board and I’d just repaired and tested it with the working main-board so why wasn’t it showing up here?

I suspected the priority mixing circuit – this is how the game decides what pixels from the 3 tilemap layers and sprite layer are above or below each other and also how transparency between layers works.  A lookup PROM is the core of this system – for every pixel on screen each of the 4 layers signals whether it contains a non-transparent pixel.  The PROM then contains a set of fixed rules that determine which of the 4 layers ‘wins’.  A logic probe seemed to show the inputs to the PROM were all pulsing but the outputs were stuck low (which would mean only a single layer would ever be selected – in this case the text layer).

IMG_2850 IMG_2857

The PROM was removed and replaced with one from a parts board, and all graphics were working again.  It’s quite rare for these kinds of PROMs to fail, I assume it was physical corrosion.

IMG_2886 IMG_2885 IMG_2884 IMG_2879



Data East Bad Dudes arcade pcb repair

Quick & easy repair – the sewer level had moving ‘dots’ that looked to be every 16 pixels up & down across the screen.  In fact probably every level had these corrupt dots but the constant scrolling of the water layer in the sewer makes it more obvious.

The problem was a corrupt mask-rom for one of the tilemap layers.  The ‘transparent’ tile had a corrupt bit.  Burned a 27c512 eprom from the MAME data to fix it.  There was no corrosion or any physical problem visible on the corrupt ROM.

IMG_2821 IMG_2826


SNK Neo Geo 4 slot arcade pcb repair

This Neo Geo 4 slot motherboard reported ‘VRAM error’ on boot.  There is a useful diagnostic rom at so I burned this to board to see if it gave more info.  Well.. not really, still a VRAM error at location 0000.


Despite the popularity of these boards I couldn’t find a guide showing conclusively what each RAM chip is on the board, perhaps because they change about depending on the many different motherboard revisions.


Eventually I worked out it was one of the top two surface mounted chips.  The VRAM attaches to the graphics custom chip, rather than the 68K cpu directly.  The error is a stuck data bit which is quite a rare error for a RAM – often this means a bad trace so I examined all the traces from the RAM to the custom chip and didn’t find anything.  The worst case is that the custom chip itself is bad.  As I didn’t yet really know which of the two RAMs was the upper (top 8 bits) or lower (bottom 8 bits, of which one was stuck) I desoldered them and swapped them.  The error moved from the lower RAM to the upper RAM which pretty much confirms a bad RAM chip rather than traces or custom chip.


I removed a RAM chip from another broken NeoGeo and swapped it in.  All tests pass!

IMG_2426 IMG_2427

Added the 4 slot board back on top (the lower board can run on it’s own), all 4 slots and audio tested good.

IMG_2437 IMG_2435 IMG_2430



Data East Cobra Command arcade pcb repair

This turned out to be quite a complex fix…  Board booted to a black screen and made no sound, but a logic probe showed the data and address bus lines on the CPU and program ROM were all active, so the CPU was trying to do something at least.

There was obvious physical damage on the board in at least 3 places – a smashed custom resistor pack and gouged traces on the bottom of the board and on the top near the first program ROM.  I knew the resistor pack was used as the digital to analog convertor for one of the RGB channels, so although it would give bad colors, that shouldn’t stop the game running.  After checking and repairing the traces…  absolutely no change.

IMG_2445 IMG_2325


My next theory was that the program RAM was bad and this was causing the CPU to crash.  I checked the program in the MAME debugger and it clears all memory before branching to a subroutine (with bad RAM a subroutine will mean a crash when the CPU stack is popped as the CPU will be given a bad return address).  This seemed to match the board behavior at least as the palette RAM was being cleared to all black.  But what RAM is the main CPU RAM?  This board has 11 RAM chips and no published schematics.  Usually the RAM next to the tilemap customs are for tilemaps, the RAM next to the sprite customs are for sprites, and the RAM next to the program ROMs is for the CPU.  So I pulled the RAM nearest the ROMs (H15) and it tested ok.  I then pulled the other RAM sitting on it’s own (B10) – that tested ok too.

Rather than risk damaging the board more by pulling all the RAMs (not to mention it would take ages) I took a different approach and wrote a little test program to see if the CPU was actually capable of running code. I modified the program ROM to print a string straight away, rather than clear memory and branch.  It worked!  So this proved the CPU, program, graphics was working to some degree, but didn’t explain why the correct program led to a black screen.  I worked out a more complex test program and wrote values to various RAM areas and read them back and printed on screen (again, taking care never to use the stack or call any subroutines as none of the RAM could be trusted).



Note there is no green in the images – I expected that from the bust resistor pack.  So the memory tests revealed that for every second byte the D0 value was stuck low (so writing 01 returns 00, writing 45 returns 44).  I used a logic probe on each RAM chip until I found the stuck data pin – turns out the main CPU ram is the pair at C10 and C11.  Removed this RAM chip – it tested bad, put in a replacement.. and still black screen.  I examined the traces on the board again and found another tiny break – all that work just to find a break near the others I already repaired (the pic is after I scraped it back more to repair it).


Anyway…  game boots now!


Graphics are clearly messed up and of course there’s still no green channel.  The broken resistor pack is a custom Data East pack used on many other games from this period.  I wasn’t worried about this too much as the worst case was I could just put in separate resistors to mimic the pack. I had a different plan in mind though – each resistor pack supports two channels, so with 4 channels available, and only 3 channels needed (red, green and blue) there had to be a spare… I traced out the TTL around the packs to find the unused channel, and just bridged one pack onto the other. Worked first time!



(The resistors values are fairly common at 220 Ohms, 470, 1000, 2200 to turn the 4 bit digital palette into an analog signal. The resistor pack contains a 5th value – 4800 Ohms but that is not used in this game).

On the home straight now – some corruption on the title screen and in-game.  This was quickly narrowed down to the tilemap ROMs in the corner of the board.  Removing them caused the corruption to go away (along with correct graphics too of course).  One ROM had obvious corrosion (EL07) but the ROM next to it was also bad (EL06).  I cleaned up the legs but the problem remained so it seems the problem was internal.  I replaced both with 27c512 eproms burned from the MAME set.


And at last, game is perfect again!






Taito Rastan arcade pcb repair

After working on pcbs with no self-tests for a while it was quite refreshing for this one to say exactly what was wrong with it – ‘COLOR RAM ERROR’.  The two color RAMs are located next to the PC040DA customs which are the digital to analog convertors for each of the RGB channels.  A logic probe showed that the lower RAM had stuck outputs.  Replaced this chip and the board was perfect.

Note that although the board has 2018-35 silkscreened on it (35ns response time RAM) the RAM installed was actually 45ns which works fine.

IMG_2200 IMG_2203