Battle Bakraid

SquidDude

Newbie
Feedback
2 (100%)
Credits
127CR
This is going to be a long one, this was a pretty hard repair...
But first some preface is needed about the situation with this game:

This is quite a late game, released in 1999 as the final game on the so-called "Toaplan V2" hardware, and it makes use of programmable CPLDs to handle many functions of the board.
These chips have a finite data retention period (e.g. one of them states 20 years in its datasheet), so they'll eventually lose their configuration and stop working, or just fail through other means.
Now since the CPLDs are reprogrammable, they're theoretically replaceable, but since they're all read protected and thus data can't be dumped from them, they're essentially just customs.
That was up until a couple of years ago, when someone (who's also able to dump these chips) came across a Chinese version of the game, which just so happened to have unprotected CPLDs!
So the data on all of them is now dumped and preserved (see here: https://forum.arcadeotaku.com/viewtopic.php?t=44361 and here: https://github.com/sergiopolog/bbakraid-cplds)
Now the only thing that's not replaceable on the board is the GP9001 graphics processor, but luckily it seems to be very reliable.

Coming back to my board, I bought it broken, it was obviously missing the XC95144 "TVRMCTL" CPLD.
bakraid before repair.jpg
The board was caked in flux around all the SMD chips from a prior reflow attempt which is never good to see, but I could also see that the pads on the JTAG connector (CN011) were still intact, which likely meant nobody had tried replacing the CPLDs before (as external programmers for these chips are VERY expensive).

I installed a replacement XC95144:
95144.jpg
And then it took me a long, long time to figure out how to program it... There wasn't really any info online on how to do it, and the Xilinx software is probably the worst piece of software I've ever dealt with when it comes to troubleshooting issues, so it took a ton of trial and error.

I'll detail what ended up working for me on a Windows 10 system:

The three Xilinx CPLDs on this board can be programmed in-circuit, using a Xilinx Platform Cable USB I/II or clone, and the Xilinx Impact programming software.
You need to install Xilinx ISE 14.7, but NOT the Windows 10 version as it doesn't actually work on Windows 10 (don't ask), you need the Windows 7 version.
Follow this video, you need to screw about with a bunch of the program's files to actually get it to run
The software should install the programming cable's drivers automatically, if you run into issues with it not showing up in Impact, check this document https://docs.amd.com/v/u/en-US/ug344
You need to use a VERY short cable between your programmer and the JTAG connector on the board, I tried a 30cm one and it just errored out immediately, use one <10cm.

When you're ready to program, turn on the PCB and get everything connected up before opening Impact. Open it through the Windows search bar instead of through the main ISE program (it's easier that way). And make sure the PCB is running just under 5V, the programmer can apparently get damaged with higher voltages.
When Impact opens, it'll ask you if you want to create a new project automatically, just click yes, and then on the next screen with the 4 radio buttons, select "Configure devices using Boundary-Scan (JTAG)", and in the drop-down select "Automatically connect to a cable and identify Boundary-Scan chain".

programingxilinx.jpg
The three chips should show up like this, if they don't then you may need to mess around with your cable settings, then hit CTRL+I to re-initialise the chain.
In the Output -> Cable Setup menu, your cable should be auto-detected as "Platform Cable USB I/II". If it doesn't, your cable might not work (I had one clone that showed up as a different type, and nothing I did could get it to work, but another one worked perfectly first try)

You should be prompted at some point to load the configuration files, or you can right click on each chip and add them directly. Each of the .jed files from the github repo has a number at the start which corresponds to the order they show up in the JTAG chain, as you can see above.
Once they're loaded in, right click on the chip you need to program and select Erase, then Program, then Verify.

Now here's a couple of issues you may run into:
If the chips show up with "_unsupported" after their model name, they're either locked, or faulty. This confused me for a while and I thought it meant my programming setup didn't support the chips.
If one or two chips are missing from the scan, but others are showing up fine, then check the JTAG pins on each chip to make sure they're making good contact and aren't shorted or anything.

programming.jpg
Programming setup ^




So... after all that I managed to program the new XC95144, and powered the board up for the first time, but I just got a black screen with no audio (but with a sync signal).
The ROMs all read fine, so I got my logic probe out and found that the 68K CPU was completely idle, but it had a clock signal and wasn't being held in RESET or HALT.
There was no activity on any chips connected up to the 68K, the Z80 was attempting to communicate with the sound ROM but that was about it.
At this point, my theory was that something was stopping the CPU from reading from the PRG ROM, so I focused on the other Xilinx CPLDs as I think they also handle some bus management tasks.

Part 2 below:
 

SquidDude

Newbie
Feedback
2 (100%)
Credits
127CR
This is where I ran into the issue of them showing up as "unsupported" in Impact, and I spent a while chasing a non-existent issue with my setup, just to eventually notice that if I loaded the .jed files into Impact without running a boundary scan, they showed up as supported.
That's when I knew the issue was with the chips either being locked or faulty, and whilst I thought it would be unlikely that both had failed, I replaced them just to rule them out.
chipremoved.jpg
Here's one of them post-removal, I used Chipquik low melt solder as I think it's the safest (and cheapest) way to remove these SMD chips.
It tends to wick to the chip after you've removed it, but it's pretty easy to knock it off the pins and recycle it.

Nothing improved, so I went around meticulously checking my solder joints on all 3 Xilinx chips for shorts or lack of contuinity to pads, but ended up finding nothing wrong.
I also lost the video sync signal halfway through this, so I went back and checked all my joints again thinking I'd messed something up (which is a real pain to do with big ol' multimeter probes), but again found nothing.
I even replaced the CPU at this point but that did nothing either.
I went around and logic probed some of the CPLDs' pins and test points, and whilst a couple of the readings looked odd at first, I luckily had a working Bakraid board to compare against and saw that they were all fine, so at least that ruled out the Xilinx chips as being faulty.


I left the board for a few weeks at this point since I was completely stuck, and I eventually decided to read through all the repair logs I could find for the other "Toaplan V2" boards (I don't know where that name came from, as I don't think any of these boards are directly compatible with one another, but hey).
I noticed a pattern throughout these, that being the GP9001 custom often seems to suffer from cold/lifted pins.
This specific log also mentions how this hardware will completely halt if a device in the CPU address space isn't reachable, which is exactly what I was experiencing https://jammarcade.net/dogyuun-repair-log/

I'd done a visual inspection early on for things like this, but went back anyway and tried wiggling each pin on the GP9001 with some tweezers, and I found multiple loose pins!
gp9001.jpg
They didn't look lifted or badly soldered at all, but I looked up the GP9001's pinout, and those pins around #208 deal with video sync, and the pins around #1 are part of the graphics data bus, so it sounded like I'd found my issue.
Reflowing these brought back video sync, and also main CPU activity!
The game was now booting to static garbage like this:
vlcsnap-2026-05-19-21h16m04s821.png

I went back to probe the CPU, and noticed that D10 was floating if I set my logic probe to TTL mode, and stuck low in CMOS mode.
Its resistance to 5V and GND was very different compared to the other data lines around it, so I was confident that something had failed and was pulling it low.
I went around the board with my multimeter in continuity mode to trace it, here's all the points I found it connected to.
d10.jpg
Every point had roughly the same resistance values to 5V and GND, so my only option to find the culprit was to remove every chip connected to it, one by one.
Luckily this board is pretty easy to desolder from, I'd already removed the CPU and even that came out painlessly (a stark contrast to that K Tiger board I was working on recently).
I started with the pull-up resistor array RA015, that was fine, so next I moved onto the two DIPs near the jamma edge, those were also fine, which left me with the two SOJ work RAMs on the right.
The resistance readings were still the same after removing the first one, but after removing the other one, they went back to normal!
I was pretty confident that the game would work now, or be improved at the very least.

I installed replacement ones, and the board booted through the self test, but then crashed as soon as it got to the title screen, which was odd.
I thought one of the new chips might've been a dud as I'd already checked all my joints for shorts, but in my excitement to test the game, I'd forgotten to test for contuinity from pin to pad.
One pin wasn't making contact (all its solder got wicked up by the pins next to it), and it was the CE pin of the connected RAM chip, which explains the fault.
Reflowed the pin, and finally, the game worked!!
works.jpg
This game has a very extensive self-test and service menu, so I went through that and everything seems to be in order, and it's also survived a couple hours of soak testing, so I can definitely call this fixed.
Very happy to have this working!
 

cools

I joined ages ago honest
Feedback
18 (95%)
Credits
722CR
Nice job. I needed to use that same Xilinx software a few years back, it took me all manner of attempts to get it going - eventually ended up installing a 32-bit version of Win 7 on bare hardware if I remember correctly.
 
Top