Dec 232024
 

In for repair was Muchi Muchi Pork, a Cave shoot-em-up running on a CV1000-B board. The game had visual corruption showing on one of the enemies in the game:

Note that the art asset viewer is hidden in this game. Flip Switch S2 on the board to the left, and hold down the Shoot and Bomb buttons while powering on the board. Once the game boots, keep both buttons held and enter the Service Menu. Additional hidden options – including “TGA TEST” for the art asset viewer – should now appear in the Service Menu list.

Cave CV1000 boards used substandard flash storage and are rather notorious for issues with corrupt assets like this. There is further information on these failures at the CV1000 entry at the JAMMArcade.net PCB Encyclopedia.

Previously, repairing this kind of issue would require desoldering the affected flash chip from the PCB, dumping it, modifying the dump to work repaired data in around the failed block of flash, reprogramming the flash chip, and finally resoldering it back to board.

Thankfully, these days buffi has conducted extensive research and produced tools for reprogramming the CV1000 CPU and Art flash chips over JTAG – no soldering required. If the flash fault has occurred in the Art flash chip (U2), Alamone has also produced scripts that automate the difficult step of mapping good data in around the failed flash blocks. With all of these tools in hand, repairing this sort of fault without soldering over JTAG is fairly straightforward.

Note that with CV1000 the Art flash (U2) and CPU flash (U4) are accessible over JTAG while the Sound flash (U23 & U24) are not. Repairing faulty flash issues with the Sound flash thus still requires desoldering and resoldering.

There are two kinds of USB JTAG adapters that can be used for communicating with a CV1000 board – an Altera USB Blaster or a Tigard. I went with a Tigard because it communicates with the CV1000 substantially faster than the Altera.

I’ll break down the steps I used to access this CV1000 board over JTAG.

First, I setup a Raspberry Pi 3 (any Raspberry Pi model should do) with a standard install of Raspbian using the imager available on the Raspberry Pi website.

Next, I downloaded Buffi’s JTAG Python scripts and Alamone’s U2 Compare script to the R-Pi using the web browser on the Pi. I also downloaded a clean MAME ROM of the Muchi Muchi Pork game.

Next, as per Buffi’s instructions, I setup the JTAG libraries on the R-Pi using the Terminal commands. If you use the Tigard JTAG adapter, there is an additional step that’s missing from his documentation. Edit the K9F1G08U0M_JTAG.py file, and on Line 186, change the False to True.

sudo nano K9F1G08U0M_JTAG.py

Next, I connected the Tigard JTAG adpater to the CV1000 board, following Buffi’s pinouts in his instructions. The TRST pin should stay disconnected for now, but it will be connected after booting up the board.

As per Buffi’s instructions, the CV1000 needs to be started up in a special ASE reset hold mode. I flipped Switch S1 so the switch isn’t between the white lines. I connected a DuPont female-to-female jumper wire between Pin 14 (GND) and Pin 3 (TRST). I turned the power on and confirmed that the CV1000 turned on a green light and that the game did not boot up. Finally, I disconnected the Ground jumper wire and connected the TRST pin from the JTAG programmer.

Now, with the software environment ready, the JTAG USB connected and with the CV1000 booted up into the correct mode, I would issue the following commands on the R-Pi to check the JTAG connection to the flash chips:

sudo jtag
cable ft2232 vid=0x403 pid=0x6010 interface=1
detect
detectflash 0

Information about the U4 CPU flash chip was displayed, so the JTAG was communicating with the R-Pi properly.

This board didn’t have any obvious problems with the U4 CPU flash, but I went ahead and dumped it anyway so that I could check it for corruption.

readmem 0 0x200000 u4.bin

Note: if this was a CV1000-D, I would have typed 0x400000 instead of 0x200000.

After a few minutes, the U4 flash was dumped. Uploading it to Hamster’s Online ROM Identification site using the R-Pi’s browser confirmed that it was a 100% match for the MAME dump of the game.

Now it was time for the real culprit – dumping the U2 Art flash. Rather than the jtag prompt, type “quit” to exit, and then use this command:

sudo python3 K9F1G08U0M_JTAG.py read_all --filename=u2bad.bin

With the Tigard adapter, this operation took a few hours to complete. I understand that with the Altera adapter, it can take 3 days.

With a dump of the faulty Art flash now in hand, Alamone’s U2 Compare tool can compare it against a good dump of the art assets and generate patches around the faulty flash. I issued the following command:

sudo python3 u2compare.py u2 u2bad.bin u2fixed.bin

Here, “u2” is the filename of the good Art flash dump from MAME, “u2bad.bin” is the faulty Art flash dump from the board, and “u2fixed.bin” will be the repaired dump.

After a moment, U2 Compare finished its operations. Two bad blocks in the dump were detected, and four patch block files were generated to address them.

The next step is to write the four patch block files back to the Art flash on the CV1000. Buffi recommends backing up the factory Bad Block Table on the flash before any CV1000 flash writing operations, so I went ahead and did that for the Art flash with the following command:

sudo python3 K9F1G08U0M_JTAG.py read_page --page=0 --filename=u2_page0.dmp

And then I wrote the four patch files to the Art flash by issuing each of these commands one at a time:

sudo python3 K9F1G08U0M_JTAG.py write_block --block 0 --filename block-0.bin
sudo python3 K9F1G08U0M_JTAG.py write_block --block 500 --filename block-500.bin
sudo python3 K9F1G08U0M_JTAG.py write_block --block 501 --filename block-501.bin
sudo python3 K9F1G08U0M_JTAG.py write_block --block 502 --filename block-502.bin

Now it was time to disconnect JTAG and test the board. I powered down the CV1000, disconnected the JTAG wires, moved the S1 Switch back to the stock position and powered up. After the game booted, I entered the special service menu and confirmed that the corruption from before was now fixed.

For good measure, I also played through the entire game and confirmed that there was no asset corruption. The game is fixed!

SNK Neo Geo MVS Cartridge (Double Dragon)

 PCB Repair Logs, Repair Logs  Comments Off on SNK Neo Geo MVS Cartridge (Double Dragon)
Nov 182024
 

Hello everyone, this time I have a SNK Neo-Geo MVS game cartridge on my desk. It has glitches with some of the graphics.

MVS cartridges consist of 2 boards – the PROG board and the CHA Board.

This particular PROG Board holds 16-bit P ROMs and V ROMs.

P ROMs are Program ROMs. Some other Neo-Geo games use 8-bit parts instead for the P ROMs labeled either SP1/2 or EP1/2.

V ROMs are audio ROMs which holds ADPCM audio samples.

Since this game boots up and runs, and the sound is perfect, we don’t need to examine the PROG board at the moment.

Let’s take a look at CHA board. CHA Boards hold C ROMs, an S ROMs and a M ROM.

M ROM is a 8-bit ROM containing the Z80 Sound CPU program and data. Without it, you don’t get any sound.

S ROMs are Graphics ROMs containing tiles for the “fix” layer. The fix layer is a non-scrollable, tile-based layer with transparency which has the highest priority on the display (it always overlaps sprites). It is most often used to display text or HUDs like scores and health bars.

And finally we have C ROMs. C ROMs are 16 bit sprite graphics ROMs organized in pairs, each containing half of the bitplanes for sprite tiles.

Let’s see the fault with this particular cart before proceeding further. This white square is supposed to display a video:

Where’s the background???

There’s supposed to be two Dragons showing here instead of glitches.

Also you can see a video of the graphics corruption here:

Okay, since the graphics issues are with sprite tiles, we know the problem is with the CHA board, and we know that there’s something wrong with the C ROMs. But which ones?

For this situation, let’s consult the MAME ROMs. MAME’s dump of this game is “doubledr.zip”. Here are the contents – there’s one file for each ROM chip on both boards.

What I will do now is simulate the same error I’m seeing with my physical cart on MAME by corrupting each C ROM file one by one.

Normally, MAME does a hash check on each file when booting up a game – if the hashes don’t match for a file, it won’t start the game. But if you launch MAME from a command prompt, it only warns you and it will start the game.

I’ll start with corrupting the C8 ROM since it is 1MB in size, and thus equivalent to a 27C800 EPROM (of which I have plenty).

That’s looks like it – when MAME runs with a corrupt C8 then the same sprites look glitched as on my cart. The glitches look different glitches but the same sprites are affected.

Let’s desolder the C8 ROM from the board:

The MAME file for this part is 1MB in size. As mentioned above, the EPROM equivalent is a 27C800. Be careful when replacing a mask ROM part with an EPROM part – don’t always do this by size, because some ROMs like M1/S1 use different pinouts.

Here is the CHA board with a socket and programmed 27C800 installed:

Time to power up and give it a shot!

Well, the graphics are looking better than before, but they’re still bad. Here’s the video:

Next, I simulate a corrupt C7 ROM in MAME in the same manner and see that the same sprites glitch. So I go ahead and change out the C7 mask ROM for a 27C800 EPROM on the board too:

Now this is the result:

Everything fixed! Here’s the video:

It turns out that you cannot close up the cartridge shell when using sockets. Therefore, I desolder the sockets out and solder in the replacement EPROMs without sockets.

Best Regards

Oguz

[Editor Note: Check out the Neo-Geo Development Wiki for extensive technical information on the Neo-Geo platform]

 Posted by at 7:16 pm

Konami Asterix

 PCB Repair Logs, Repair Logs  Comments Off on Konami Asterix
Nov 152024
 

Hello everyone, this time I have a Konami Asterix board that I got from the Arcade Museum forums.
I bought it as non-working “error with 2 chips” at an affordable price.

This is the board:

I immediately attached it to my JAMMA Test Rig and powered it up.

Indeed, we see 2 defective chips on the board’s ROM Check screen – 2F and 5F.

When examining the board, we see that 2F is a RAM chip while 5F is a ROM chip.

The 5F EPROM (TMS27C512) is already socketed, so let’s dump it and compare it with MAME via the ROMIdent site.

The ROM looks fine and matches what it should be. For good measure though, I’ll rewrite the dump back to the EPROM.

Then, while I’m at it, I’ll write the MAME equivalent dump file 068_a05.5f to another EPROM (W27C512) that I’m sure is good, so that we can try both.

First, I’ll put the old ROM back in and try it out.

Let me give you some information if you try a similar experiment. With some Konami boards, if you change ROM chips, the system might not detect it. For example, when switching from a 2P ROM to 4P ROM, or switching to a different language ROM.

If this occurs, hold down the TEST SW button while powering on the board. You should see an EEPROM Initialization message.

After the EEPROM reinitializes, it goes into the normal boot routine. Let’s see if 5F is fixed.

Not yet! Let’s try the new EPROM I wrote in case the old part is faulty.

It’s still not fixed. For now, let’s leave all this aside and deal with the RAM. Maybe problematic RAM is also causing problems accessing the ROM.

I carefully remove the old RAM by desoldering it from the board.

I’m out of suitable sockets for that pinout, so I cut down a large socket. It’s not fantastic but it does work!

The part number of the RAM that came out of the board is MB8416A-15L-SK. I have a similar part that I can put in its place – MB8416A-12L-SK. The 12 means 12ns, i.e. shorter access time, i.e. faster RAM.

First, lets test the old RAM out of circuit with my EPROM programmer.

This RAM is a 6116 series equivalent. There are various cross reference sites to see equivalents. Or you can compare two datasheets and look; if you do this, pay attention to both the pinout and memory layout.

Test Result: Normal. The only time I regret that something is intact is when I’m repairing something and I suspect that the component is faulty. I wish it was faulty so I could just replace it and have it work!

Anyway, let’s install the new RAM into the socket and boot up the game board. Sometimes out of circuit test results can be inconsistent…

Hmmm, the 2F and 5F chips are still marked BAD so things are complicated. Apparently neither the ROM or the RAM is the problem. But somehow these two can’t be accessed correctly by the CPU. When examining the board for physical damage, I didn’t see any broken wires on the board. I didn’t see any cold solder.

Let’s keep digging. At this stage of the repair, I take out my Logic Probe and start checking signals.

I see a High (No Pulse) signal on the 18th pin of the RAM. This is the Chip Enable pin. The datasheet shows a line over the label for this pin, showing that its Active Low. Thus, the RAM is not being enabled.

When I check the ROM, I see a LOW signal (No Pulse) on the Pin 20. This pin is also the Chip Enable pin for the ROM. Just like the RAM, the pin is labeled Active Low on the datasheet so the ROM is being enabled.

When I measure with a multimeter set to Continuity Test where the Chip Enable line of the RAM goes, I see that it goes to a PAL chip.

PALs are custom chips. If this PAL is faulty and has no dump, the only solution is to source a PAL from a donor board. If it has a dump (this one does), write the dump to a compatible GAL chip and use it.
[Editor Note: The PLD Archive website is an excellent source for PAL dumps.]

I don’t have a GAL but I have a better option – a working Asterix board! Having a working board to compare against is very useful when working on boards without schematics like Asterix.

With the Logic Probe, I test the pins of the working and non-working board and compare the results. I do this test by powering each board off and on repeatedly through the startup diagnostic checks.

PAL TEST

H -> High
L -> Low
P -> Pulse

Quite different. There is no pulse on several lines on the non-functional board.

I’m confident that this PAL is the problem, and since I don’t have any GAL, I removed the PAL from the working board. You know the rule that if it works, don’t touch it? Arcade boards don’t have this rule 😀

Here is the functional PAL, transferred from the working board to the non-worked board and socketed:

Time to power up!

PFFFFFFFFF. Just when I’m about to give up, something catches my eye. Did you see it? Look a little closer..

Yeah, right there… The IC with the F emblem. It’s a flip-flop circuit. But the important thing here is the brand. Fujitsu ICs are the most prone to failure. I take my Logic Probe in my hand and start probing from the top right pin on the chip (VCC). Let’s power up the board again…

Whoa! Before I can understand what the probe is saying, I hear horse footsteps…

I don’t know what happened, but the board works now. I set the board aside for two days, and when I tried it again, it works fine. I have no idea if probing the VCC pin of that Fujitsu IC triggered something, but it works. I did not change out that part yet because it is working for now.

Best Regards

Oguz

 Posted by at 11:14 pm
Nov 152024
 

Hello everyone, this won’t be much of a repair article but stay with me. This game is Konami’s Boot Camp. Actually this name is the name published in America – in Europe we know this game as Combat School. It is one of my favorite games. I thought it was the same between regions and bought the USA version, but there was a difference – the American version is played with a trackball, not a joystick. I will convert my board to play with a joystick at some point.

Here is the board I received:

The board was sold to me in “working” condition, but when it arrived I encountered a problem. At first, the RAM & ROM Startup Tests pass successfully: and the title screen appears as it should:

But along the top edges of the title logo and inside the game itself, there is random pixel corruption everywhere. The circled pixels on the flagpole shouldn’t be there.

Then, when positioning the board to start investigating the problem, I realized that a part of the board is very fragile because when I touched it, it fell off!

If you ask what this IC “UPA1452H” is for, I will quote you directly from the datasheet:

[i]“µPA1453 is a PNP silicon epitaxial Power Transistor Array built
in 4 circuits designed to drive solenoids, relays, lamps and the
like.”[/i]

I think this must be a component on this board that drives the trackball. Obviously this is a problem and I wanted to solder the IC back onto the board, but since the legs of the IC snapped off they cannot be soldered properly. So I used a header pin as a dirty and quick solution.

NOTE: Of course it won’t stay ugly like this. As I said at the beginning of the article, I will convert this board to a joystick version later on – when I do, this component will be removed in the conversion process.

After reinstalling that IC, now everything functions normally.

Best Regards

Oguz

 Posted by at 7:06 pm
Nov 122024
 

Hello everyone, today I have another board on my desk which I purchased as “working” but while my board boots up, it has issues.

Irem produced several models of motherboards, and this motherboard is M92. It is a 2-stack board, consisting of a motherboard and a ROM board. M92 does not have any schematics.
[Editor Note: wickerwacka produced some partial schematics of the M92 when implementing his FPGA core. Also take a look at our Irem M92 entry in PCB Encyclopedia]

First let’s take a look at our board.
Main board:

ROM Board

When I power up the board, it passes the RAM and ROM test successfully.

However, in the warning text, you will see a line at the bottom of the screen. That’s one of our problems.

Here you can see another problem, there is a vertical line on the left and right of the screen.

These are the most obvious problems. It is difficult to show the real problem with a photo. Take a look at this video of the problem:

As you can see, as our character moves forward and the background changes, there are flashes and/or color changes on the screen. This is our biggest problem.

Let’s do a physical inspection. The ROM board seems clean and problem-free enough. I move on to the motherboard.

The mainboard has been worked on before – one of the chips has been changed or reflowed.

When I look closer, I see a solder bridge. This bridge belongs to 74LS74AN part.

I separate the bridge with a tiny touch of a soldering iron.

But removing this bridge causes no change with the game.

Next, I keep the game on for about half an hour, then I check the chips one by one to see if any of them are overheating. It seems that three of the ICs on the ROM board, which I have highlighted in blue, are overheating.

One by one, I remove the parts and test them out of circuit with my EPROM programmer. One of the SN74S373N parts fails the test.

I install socket and replace all three parts.

IC18

IC30 and IC31

Unfortunately, there’s no change in the game – but there’s no more overheating chips now either.

The next task is to check the ROMs by dumping them and comparing the dumps with MAME. I remove everything from the ROM board (both for cleaning and to check the ROMs)

I set the chips down on a notebook in the same order so I don’t forget their places.

When dumping the ROMs, if it is not written on the chip you are reading what type of part it is, we either check MAME or we look for solutions in forums.
[Editor Note: the part numbers for ROMs with Irem M92 boards are in our PCB Encyclopedia]

There were 3 types of ROMs on this board. Let me specify how to read them:

532 –> 27C020

534 –> 27C040

538 –> 27C080

After dumping the ROMs and comparing them, it seems that most of them are okay.

L0

Then I had problems with 2 ROMs – both audio ROMs.

SLO-A and SHO-A

The ROMs are responsible for the playback of all sounds. These ROM comparison sites do not list results if the ROM dump I provide is not 100% identical.

The sound works on this board, so obviously our problems have nothing to do with the audio ROM. I won’t dwell on it, but I’d still like to check how close the files are. Here’s what the “romcmp” command in MAME says about my dumps compared with the correct MAME ROMs:

Next, I am inspecting these two large GA (Gate Array) chips. These are custom chips – when they fail, it is a nightmare to source replacements. Sometimes reproduction parts are created by the community but otherwise you have to source parts from a donor.

GA21 and GA22

I check the connections of the legs with the boards by gently poking them with an X-Acto knife. I also perform a continuity check with a multimeter to see if there are any bridged paths.

I don’t detect any non-contact legs, but I detect continuity in legs 35 and 36 in GA21.

Up close, I don’t see a soldering bridge.

Later on, I asked a friend who has the same board to check on his board, and he gets the same measurement, so there is no problem with these pins. On my board, I reflowed the solder on them just in case.

I went ahead and reflowed the other GAs too.

When testing the game again afterwards … the result is the same. I still haven’t found the culprit…

I’m growing weary with this board, but I wanted to get one more thing out of the way. There are 14 brown ELNA capacitors on the motherboard. These capacitors are very prone to leaking so I thought I would replace them.

Here is the list:

Irem ‘M92-A-B’ Motherboard Electrolyte Capacitor List
C201 1uF 50V
C202 470 uF 25V
C203 220uF 10V
C204 22uF 25V
C209 100uF 25V
C210 1uF 50V
C213 47uF 16V
C215 1uF 50V
C216 1uF 50V
C217 1uF 50V
C218 1uF 50V
C219 1uF 50V
C236 100uF 25V

Here’s all of the old capacitors removed:

And here’s the board after installing the replacement caps.

If you’re using a hot air gun, be VERY, VERY careful! This area highlighted in blue swelled on my board-fortunately I didn’t damage anything. I dodged a bullet.

After recapping, the previously almost inaudible game sound now sounds great!

Now back to the main problem with the horizontal lines at the bottom of the screen, the vertical lines on the right and left of the screen, and the color distortions when the background scrolls.

I take out my Logic Probe and start probing. There are two palette RAM chips located at IC15 and IC16 on the motherboard. These parts are Fuji brand – the most susceptible brand prone to fault. The part is MB81C78A, which is 8K x 8 = 64KB of RAM.

I documented the logic activity of the pins on the two chips by making a table:

According to the data sheet for these memory parts, Pin 19 on these parts is the “I/O 8” data line. When probing this pin, I see a difference between IC15 and IC16.

IC 15 –> Pin 19 –> shows PULSE activity between HI and LOW. So there is a data flow.

IC 16 –> Pin 19 –> LOW only and no PULSE. So no data is flowing.

Two things could be happening here:

1) This RAM chip is bad
2) Or one or more ICs connected to this pin are bad.

I trace Pin 16 of IC19 with a multimeter and see that it goes to Pin 31 of IC2.

IC2 is a SN74LS374N part. According to it’s data sheet, Pin 2 –> 1Q (Output)

I also find that IC31 Pin 2 also connects to Pin 2 of IC23.

IC23 is a SN74LS245N part. According to its data sheet, Pin 2 –> A1 (I/O)

I remove these parts with the suspicion that they are causing at least part of the problems.

Testing the parts out of circuit in my EPROM programmer, the SN74LS374N chip passes the test.

The SN74LS245N part also passes the test.

Nevertheless, I install sockets and change them out anyway.

Testing the game afterwards, the result is the same.

Next, I decide to replace the Fujitsu Palette RAM parts as well. I have the following equivalent RAM parts available:

I remove the old RAM and install sockets.

Now, when testing the old RAM out of circuit … they test as faulty.

I install a new RAM part that passes the out of circuit test in the socket to replace this faulty part, while leaving the other old Fujitsu part installed in the other Palette RAM socket.

Now when testing the board … everything is worse. Now, in addition to the old problems, there is now a problem with the color Red. As you can see in this video, all of the colors appear in the narrow columns on the left and right, but there is no Red on the main screen in the middle.

I decide to put the board into TEST mode to test the red color. For this, press 1P A+B on the RAM ROM TEST screen. Then, on the menu, select Screen test.

As you can see in the Screen Test, there is no trace of Red.

In case I missed something, I check around further with the Logic Probe, and I find another IC on the same line.

Pin 18 of IC10 is connected to the same pin as the others – I missed it before.

There are 3 resistor packs in this area. I measure the resistance of their feet with my multimeter – they should be equal to each other.

The results are good.

IC10 is a SN74ALS273N. According to the data sheet for this part, Pin 18 –> D7 (Input)

Here is my drawing of the connections between these chips:

I’m thinking of replacing IC10, and then something strange catches my eye. On the chip it says SN74ALS273N but on the motherboard, HC374 is printed as the part for this chip. At first, I think that the wrong chip was installed in this board, but then I look at other photos of this board on the PLD Archive site and they are the same.

I do some research on the subject and the information I can get is that 74HC374 was used here because 74LS273 was too slow. Later, when faster 74ALS273 parts came out, they switched to them since they were cheaper.

I proceed with replacing this IC. Since I don’t have another 74ALS273 on hand, I will replace it with a 74HC374.

After removing the old part, I test it out of circuit in my EPROM programmer and I see that its problematic.

When the game now, it seems that there is a big improvement. The colors that were flickering in the background as the character walks have been fixed.

But we still don’t have red…there is only red on the far right of the screen.

You can see it better in this video:

Let’s keep on trying. When checking the data sheets further, it seems that the pinout of this new 74HC374 IC is slightly different than the 74ALS273 it replaced.

SN74HC374N –> Pin 18 –> 8D (Input)

It turns out that on the 74ALS273 datasheet, the channels are numbered from 0 to 7. On the 74HC374 datasheet, the channels are numbered 1 through 8. However, the functionality between the two is the same.

I decide to remove the other 74ALS273 IC above the one I just replaced – IC9 – and test it.

No problems in the test, but I proceed to replace it with a SN74HC374N to match IC10.

Now when powering up the board … everything works correctly. The board is saved!!!

Best Regards

Oguz

 Posted by at 11:06 pm