1 Mar 2017

Conversion SF2' to Ghouls'n'Ghosts (World, not resale) CPS1

1) Presentation

On CPS1 it's possible to convert any game to run with any B-board and with any C-board.

To use a different C-board:
- program ROMs have to be modified according to the tables of the C-board used

To use a different B-board:
- the graphic PAL has to be modified to handle graohic ROMs addressing
- ROMs have to be splitted/merged depending of the initial B-board and the conversion B-board

The conversion of SF2' to Daimakaimura is well know online, and there's a reason for it, it requires only ROM and PAL swap.
But I'm not happy with this conversion, as everyone outside of Japan I grew up on Ghouls'n'Ghosts not Daimakaimura (and I love the bat style title screen).
The conversion I propose is to convert a SF2' game using a 91634B-2 (EPROM) or 91635B-2 (mask ROM) B-board and a C-board with CPS-B-21 chip to the World (Export) version of Ghouls'n'Ghosts originally using a 88620B B-board with embedded CPS-B-01 chip (no C-board on this early CPS1 game).
The link to the files is available at the end of this post.

2) Material needed

2.1) If you use a 91634B-2 B-board (EPROM)
- 10 * 27C4096 ROM (8 for the graphics and 2 for the program)
- 1 * 27C010 ROM (audio)
- 1 * GAL16V8 (PAL)

2.2) If you use a 91635B-2 B-board (mask ROM)
- 8 * 27C400 ROM (graphics)
- 2 * 27C4096 ROM (program)
- 1 * 27C010 ROM (audio)
- 1 * GAL16V8 (PAL)

3) Technical explanation

3.1) C-board conversion
For the C-board there isn't any problem as the CPS-B-21 chip is a CPS-B-01 with volatile registers. If no suicide battery is used it's identical to the CPS-B-01 therefore no program modification is needed.

3.2) B-board conversion

3.2.1) Graphic PAL
For the B-board the job has already been done for the PAL: we can use the DAM63B file used for Daimakaimura to replace the S963B PAL present on the SF2' B-board.

3.2.2) ROM merging
Some files have to be merged other can be used as is.

Ghousl'b'Ghost (World) romset contains the following files:

The goal of the conversion is to obtain graphic ROMs at positions 01 to 08, audio ROM at position 09 and program ROMs at positions 22 & 23.

dm-05.3a corresponds to ROM at position 01.
dm-06.3c corresponds to ROM at position 02.
dm-07.3f corresponds to ROM at position 03.
dm-08.3g corresponds to ROM at position 04.

It's a bit more complicated for ROM at position 05: early CPS1 games use four 128kb * 8 bit ROMs instad of big 256kb * 16 bit ROMs.
Four files have to be merged: 09.4a (LSB LOW), 18.7a (MSB LOW), 10.4b (LSB HIGH) and 19.7b (MSB HIGH). The file we obtain is only 256kb so we can leave the other half of the ROM blanked (filled with $FF just like in the Daimakaimura resale version) or we can double the file which is what I did.

11.4c (LSB LOW), 20.7c (MSB LOW), 12.4d (LSB HIGH) and 21.7d (MSB HIGH) correspond to ROM at position 06.
13.4e (LSB LOW), 22.7e (MSB LOW), 14.4f (LSB HIGH) and 23.7f (MSB HIGH) correspond to ROM at position 07.
15.4g (LSB LOW), 24.7g (MSB LOW), 16.4h (LSB HIGH) and 25.7d (MSB HIGH) correspond to ROM at position 08.
dam-09.12a corresponds to ROM at position 09 and have to be doubled.
dm-17.7j corresponds to ROM at position 22. Warning a byteswap is needed.
dme_30.10j (LSB LOW), dme_29.10h (MSB LOW), dme_28.9j (LSB HIGH) and dme_27.9h (MSB HIGH) correspond to ROM at position 23.

4) ROMs and PAL burning

Now it's time to burn the files on the appropriated devices.

4.1) If you use a 91634B-2 B-board (EPROM)
- ROMs 01/02/03/04/05/06/07/08/22/23 => 27C4096
- ROM 09 => 27C010
- GNG_PAL_1A.jed => GAL16V8

4.2) If you use a 91635B-2 B-board (mask ROM)
- ROMs 01/02/03/04/05/06/07/08 => 27C400
- ROMs 22/23 => 27C4096
- ROM 09 => 27C010
- GNG_PAL_1A.jed => GAL16V8

5) ROMs installation

All SF2' ROMs must be removed from the B-board.
The PAL named S963B at position 1A has to be removed too.
Double check you've put the devices the right way (the silkscreen should help you)!

5.1) If you use a 91634B-2 B-board (EPROM)
- Install the ROMs in the corresponding socket (ROM 01 in socket 01, etc.)
- Install the GAL16V8 in position 1A (where the S963B was)

5.2) If you use a 91635B-2 B-board (mask ROM)
- Install the ROMs 01/04/05/08/09/22/23 in the corresponding socket (ROM 01 in socket 01, etc.)
- Install ROM 02 in socket 03
- Install ROM 03 in socket 02
- Install ROM 06 in socket 07
- Install ROM 07 in socket 06
- Install the GAL16V8 in position 1A (where the S963B was)

6) Test

Finally! It should work:
(Screenshots made with MAME but conversion has been tested on real hardware too)

I've done many more conversions on CPS1:
- Final Fight
- U.N. Squadron (World, not resale)
- Forgotten Worlds (with hacked controls to use buttons instead of spinners)
- etc.

So stay tuned!


  1. Do you think this is possible for a Pang 3 B Board?
    I want to try but am not sure I can combine all the gfx roms into the 2 16MBit 16bit chips that Pang has and if this would require different PAL data.

  2. Absolutely. However you must use the non encrypted set for program ROMs.

    1. Hi, what exactly do you mean by "encrypted"? From a quick google pang 3 doesn't seem to have a suicide battery.

    2. The original Pang 3! board by Mitchel uses encrypted ROMs and a big PAL chip (read protected) for decryption. Nothing to do with a suicide battery.

  3. Congratulations, excellent work. With your files and method, I tried to do this conversion on a B-board 91634B-2 and a board-C 92641C-1 (which used to have suicide battery and was removed following the instructions suggested at http://www.arcadecollecting.com/dead/). But I can not make it look right. I can only see half of the information interrupted by vertical lines on the screen. I tried to change the EPROMS of their place and noticed that if I remove some EPROMs (positions 1,2, 5 and 6) I get exactly the same screen(https://drive.google.com/file/d/0B2lmEZO-KSbpS1YxSXh2bHhNVTQ/view?usp=sharing). What can I do to make it work properly? Thank you in advance for your attention and comments. Greetings.

    1. Thanks.
      have you tried to swap EPROMs 2/3 and 6/7?
      Have you replaced the PAL?
      Are you sure the C-board is fully functional?
      From my experience at least half of the 'suicided' boards I bring back to life have faults. This is understandable: game developed a fault and was put aside. Then after few years battery died.

    2. I already made the suggested change and it did not work(swapping ROMS and PAL replaced). The vertical lines are still visible. Regarding the C card I think it works well, since the game I had previously worked fine. Or at least he did not have the problem of vertical lines. I thought the problem is in the circuit that enables the ROMS since half of them are not being selected and therefore the image is not seen correctly. I can mention that when removing half of the EPROMS the image still looks the same. So I think they are not being selected correctly. Any idea how to solve the problem? Greetings.

    3. Following what you said it may look likes improper PAL burning or a faulty B-board. TheDrakon (see posts below) did have success with the conversion.

    4. Half of his graphics chips aren't being read. With the cps1 every group of four graphics chips makes one every other row of graphics. When only half of your graphics chips are being read you'll over see every other row of graphics creating these "vertical lines" of missing graphics. You need to burn a compatible pal and/or move the graphics chips that aren't displaying into sockets that your existing pal chip reads from.

    5. From my experience the "circuit that enables the roms" is controlled by the pal chip in socket 1a. When I was converting king of dragons and I had the wrong pal chip in socket 1a I had the same thing happen, only half of the graphics chips were being read and only every other vertical row of graphics was being displayed.

  4. hello,
    i have a CPS-B-12 chip on the c - board.
    can i use this also?
    which code must be changed to get this working?

    1. Hi,
      you can't use a B-12 chip unless you modify the program ROMs (23 and possibly 22).

  5. Hi I recently converted my sf2ce boards into king of dragons. Since I have an over-abundance of 27c4096 chips, a shortage of 27c010s, and I like a good challenge, I want to combine the program roms into 512k chips that go into sockets 22 and 23.

    In my attempt I interleaved two sets of two 128k roms and then appended the second interleaved set after the first one to make a 512k file. After looking how roms in the past were combined and how mame loads the roms of this game I came up with the following order to interleave the roms: first half of rom 22: kde_37a.11f (odd number bytes such as 1, 3, 5 etc) kde_30a.11e (even number bytes). I did the same sort of combining for the 23 rom.

    The game runs this way, but incorrectly. The way my board is setup I can use a combination of four 128k chips and one 512k chip. When I use the original 128 chips for slot 23 and my combined rom for slot 22 the game runs, however, in the attract mode all of the characters walk in the wrong direction. When I use 128k chips for slot 22 and my combined rom in slot 23 the game runs but there's no bg graphics (only sprites), in the title screen when every letter finishes scrolling it plays a sfx, and after the title screen I just get a black screen.

    Is there a certain trick to combining the original 128k roms?

    1. To me you have to interleave 30 & 37 for the first half of the ROM and 31 & 38 for the second half.
      Are you sure you don't have to move any jumper?
      What C-board are you using?

    2. This comment has been removed by the author.

    3. I tried moving the program rom jumpers it didn't make work. I'm using cps-b-21. I really want to get strider working on this pcb too, but so far I've had no luck.

    4. The original King Of Dragons uses a suicide battery so the desuicided set must be used on a SF2CE board.
      Appart from that as long as you use a compatible C-board no modifications are needed in the code ROMs.
      However if you use a different B-board you may need to move jumpers or hand craft a new graphic PAL.

    5. I've done the Strider conversion (OG not resale) without any issue. No jumpers to move.

    6. This comment has been removed by the author.

    7. Thanks for letting me know that it's possible. My main board I'm using for conversions is a 91634B-2, the sf2CE jedec eprom type b board. My c board is a cps-b-21 since this was originally a Japanese sf2ce.

      The OG strider pal chips are in different locations, I think the OC prg pal goes in 11e instead of 11d. On this pcb revision I can use a prg pal dump from the original strider?

    8. I'm looking at the OG strider dump. I tried burning this a few times and it had no life on my pcb. I just burned the five program roms (one 512k chip and four 128k chips) and reprogrammed a gal16v8 in socket 1a with something that runs 8 maskroms for gfx. For the prg pal I tried bprg1, I can't recall if I tried lwio.11e but I don't see why I wouldn't have tried that.

      Doing this should give me garbled gfx but the location and animation of the gfx should match strider just to prove that the program roms are working before I spend time burning all of the graphics roms. I didn't get that though, I just got even tiles across the screen with no animation.

    9. For the conversion you must use the st24m1 file included in the MAME romset. It goes in position 1A.
      ROM at position 22 simply corresponds to ROM st-14.8h in the original romset.
      For ROM 23 you must interleave 35 & 30 for the first half and 36 & and 31 for the second half.
      All the other ROMs can be taken from the Japanese resale version.

    10. This comment has been removed by the author.

    11. This comment has been removed by the author.

    12. This comment has been removed by the author.

    13. This comment has been removed by the author.

  6. I will make an article for Final Fight when I'll have time. At the moment I just publish articles I wrote a while ago.

    1. This comment has been removed by the author.

  7. This comment has been removed by the author.

  8. So the only way I get any signs of life on this pcb with strider is by using sth63b.1a pal found with the japan resale version dump. With that pal I get the black outline of text on the ram test screen during bootup, followed by a black screen. I combined the roms of three different versions of strider and burned them all and they all do the same thing as the japan resale version 23 rom, black outline of the ram test screen followed by a black screen.

  9. This comment has been removed by the author.

  10. This comment has been removed by the author.

  11. I just recombined the king of dragons 128k de-suicided dump, the crc matches the 512k version so I must have done something wrong the first time.

  12. This comment has been removed by the author.

  13. I finally got strider to work. I had to set the dip switches. For some reason, there's a dip switch to freeze the game... I haven't set my dip switches in years so I completely forgot about them

  14. So it seems what was stopping me from getting some games running before was just the stupid dip switches. I completely forgot cps1 pcbs are so old that they use dip switches and I also forgot that there's a dip switch to freeze the game. Why they'd include a dip switch that freezes the game I'd really like to know, as that created a lot of confusion and made me think I did something else wrong. I'm too used to pcbs having their settings in a service menu and saving the setup to an eeprom or some form of battery backed memory.

    After all of this tinkering, I discovered that I love strider a lot more than I expected I would. I've decided that I enjoy strider so much that I'm going to hold onto one cps1 pcb just to play strider.

    I really want to thank you for the helpful input and taking the time to do this work which inspired me to do similar projects. If it wasn't for your posts, I probably would have sold this pcb off, but thanks to you I instead now have a strider pcb that I absolutely love playing.

    Since I'm holding onto one pcb, it looks as if some day I'll get my chance to try out final fight on the original hardware. Even if it turns out I don't enjoy the game (which is most likely what will happen), just getting the experience of credit feeding my way through this classic game on the original pcb once is totally worth the effort.

    I really look forward to seeing your work getting final fight to work. I'd love to see what's involved and maybe take a crack at converting other great games like 1941: counter attack to work with more common pcbs. Thanks again for all this highly inspiring work and replies.

  15. Thanks for the kind words.
    Actually I do like Final Fight but no as much as Cadillacs & Dinosaurs. The atmosphere of this beat-them-up is so unique and awesome in my opinion. Have a try (if you don't own a CPS dash system you can make a conversion for non Q-sound hardware, see article on my blog).

    1. I'm using a sf2ce pcb so that should be a dash board. I might just try it out first in an emulator to see how fun I find it before going through the trouble of converting my strider.

    2. I recently was handed a Varth pcb from a friend that had the sound roms burned improperly and the jumpers for the sound chips in the wrong spots (presumably in an attempt to make the sound chips work again). What was interesting about this board is it's running a world version of varth that runs on a cps-b-21 without the suicide circuit. Apparently only the Japanese version of varth runs on a suicide version of the cps-b-21, so maybe someone used the desuicided code from the Japanese dump to patch the world version of varth.

      I recently watched youtube videos on the reverse engineering of the cps-b-21. From my understanding, the information that the cps-b-21 suicide circuit contains basically turns the cps-b-21 into a different revision cpu.

      So my question is, are the "desuicide" patches on the dead battery society just patches that convert the game code from running on one ppu revision into a version of the game that runs on the cps-b-01?

    3. Yes exactly, desuicided code is patched to run with a B-01. Also when pins 44 and 45 are connected to +5V on a B-21 chip it makes it equivalent to the B-01.
      Some CPS1 games just need few bytes to be modified to change their region so maybe they used the Japanese desuicided set and did so.

    4. This comment has been removed by the author.

    5. Thanks to this amazing stuff I converted my two street fighter 2 champion edition pcbs into games I really enjoy (strider and varth). I was planning on selling these pcbs, but now I like these games so much I'm holding onto them. Thank you so much for inspiring me to give new life to my cps1 boards

  16. This worked great, thanks for the info and files. I'm curious if the game Pnickies could also be made to run on a 91635B-2. I would think the file merging is similar to what you did here, but the PAL isn't dumped for that game :( Any ideas? Cheers.

    1. Yes Pnickies can be run on a 91635B-2 (or 91634B-2) by just merging ROMS and handcrafting a new PAL (details of the mapper PKB10B are in MAME). Anyway any CPS1 game can be run with any C-board and on any B-board with the appropriate modifications (see Carrier Air Wing article for more information).

    2. Thanks. I could probably struggle through mergin the roms but crafting the PAL is above my skill level at this point. Regardless thanks for the info. Perhaps I'll send a donation your way.

    3. Any donation is appreciated. But donators are rare (on average 1 donation for more than 1000 downloads) so I'm thinking of selling my work for a small fee.