Ghouls'n Ghosts Repair Logs
I built a boot rom to make some diagnostics (crc checksums of some ranges of the memory) and a memory viewer.
It appeared that the mask rom used for code from 0x80000 was dead (always returned 0). To be sure, I disabled it by VCCing the /CE pin. In the memory viewer, the mask rom memory area returned 0xff after that, proof that the mask rom was dead.
I managed to replace the mask rom by two 27C040 in place of the two lower 27C301G (0x00000-0x3ffff). I had to combine data of the two 27C301G and the mask rom. Basically, the upper part of the 27C040 contains the data from the mask rom and the lower part, the data from the 27C301G duplicated.
Also, I had to do some additional wiring since the 27C301G and 27C010 have two inverted pins.
Also, I had to add a 74LS08 to compute the chip enable signal for the two 27C040.
After this repair, the board booted flawlessly.
however, they were lines in the graphics.
All 27C512 graphic mask roms tested ok. So at least one HN62404FP was buggy.
I removed all socketed 27C512 and tested each data pin with the scope. Found two data lines stuck low. Traced them to DM-08 mask rom. Q4 and Q12.
I applied the same principle than for the code mask rom and replaced the mask rom (after disabling it) by two 27C4001 (=27C040). I of course had to make some wiring and compute the /CE signal (/CE of 27C040 = /CE of mask rom AND /CE of original chips replaced). Also, same for code eproms, low part dedicated to original 27C512 eproms and higher part to mask rom).
There are a lot of wires on the board now, but the game is working perfectly. Too bad there is no replacement for this kind of mask roms...
If you need more details of the implementation of the repair, feel free to ask. It is not difficult but a bit tricky.
Repair Logs converted to wiki format by Brad from Aussie Arcade.