Skip to content

CPS-2 converts

Converting a CPS-2 B-board to another game = reprogram every EPROM, replace the mask ROMs with EPROMs, set ~24 jumpers for the target game, use the right PAL (or a universal PAL + a wire on revisions 3/4), and inject the game's keys (or it stays on a suicide screen). Here is the real procedure.

Field Value
Platform Capcom CPS-2
Type B-board EPROM reprog + jumpers + PAL + keys
Difficulty 🟠 (EPROMs, PAL, jumpers, key handling)
Suicide? Yes — decryption keys in battery-backed SRAM

Warning

A conversion is done from your own dumps. The decryption and keys are game-specific: without a valid key, the board stays on a suicide screen. Work methodically — one jumper mistake = dead game.

1. Understand the B-board ROM map

The B-board has sockets numbered by function:

Sockets Contents EPROM to use
ROM 1–2 QSound program (Z80) 27C010 / 27C1001 (1 Mbit)
ROM 3–10 main program (68000, encrypted) 27C4096 (4 Mbit) — all games
ROM 11–12 sound samples (QSound) 27C160 (16 Mbit) / 27C322 (32 Mbit)
ROM 13–20 graphics (original mask ROMs) 27C400/800 (mask pinout) or 27C160/322

Key points:

  • The main program is always in 27C4096 (max 4 Mbit) — it cannot be merged. Same for the QSound program (max 1 Mbit).
  • The CPS-2 bank-switches between 2 ROMs: you can merge two banks into a single larger EPROM (see the PAL G method below).
  • A converted B-board is recognisable by its graphics mask ROMs replaced with EPROMs (windowed packages / with a label).

2. Two strategies

A. Universal "G" PAL + 32 Mbit EPROM (the simplest)

You merge the banks into a 27C322 (32 Mbit) EPROM and use a universal "G" PAL (burned onto a GAL16V8). Since the 32 Mbit mask ROMs have the same pinout as the EPROMs, there's no more pinout headache.

File size → density → EPROM to use table:

File Density EPROM (EPROM pinout) EPROM (mask pinout)
128 KB 1 Mbit 27C010 / 27C1001
256 KB 2 Mbit 27C020 / 27C2001
512 KB 4 Mbit 27C040 / 27C4096 27C400
1 MB 8 Mbit 27C080 / 27C801 27C800
2 MB 16 Mbit 27C160 27C160 (same pinout)
4 MB 32 Mbit 27C322 27C322 (same pinout)

Main program = always 27C4096 (4 Mbit). QSound program = 27C010/27C1001 (1 Mbit). For graphics/sound, pick the model by the pinout the socket expects (EPROM vs mask column above).

Example — D&D: Tower of Doom:

  • Sound ROM 11 (2 MB) + ROM 12 (2 MB) → merged into a 32 Mbit in socket 11 (socket 12 left empty).
  • Graphics: ROM 13 (2 MB) + ROM 14 (1 MB) are bank-switched together → you must first double ROM 14 (ROM14+ROM14), then merge ROM13 + the doubled ROM14 → one 32 Mbit mask ROM in socket 13. (13/14 go together, 15/16 together, etc. — not 14+15.)

Rev 3/4 + PAL G: the mandatory wire

With a PAL G on a revision 3 or 4 B-board, you must add a jumper wire (otherwise broken sound). This is the classic omission.

B. Original PAL + exact-size EPROMs

You keep the target game's original PAL (to burn) and fit the EPROMs at their exact sizes. You then must respect the mask ROM vs EPROM pinout:

  • 4/8 Mbit exist in mask pinout (27C400 / 27C800) or EPROM pinout (27C040 / 27C080 / 27C801) — don't confuse them, the pinout jumper must match.

3. Setting the jumpers (the critical point)

There are ~24 jumpers: they tell the board, for each socket, the size and pinout of the expected ROM.

  • Sockets 1–10 (program + QSound): the only possible jumpers set the JEDEC / non-JEDEC pinout (EPROM type), not the size.
  • Graphics/sound sockets: the jumpers encode the density and the mask vs EPROM pinout.

Jumper logic table (transcribed)

A jumper is noted C (Closed, bridged) or O (Open). The jumpers are grouped per socket; they change two things: the function of the high address pins (hence the size) and the pinout (mask vs EPROM, JEDEC vs non-JEDEC).

Jumper group Sockets involved What they set
JP1–JP9 1–2 (QSound Z80 program) EPROM type: 27C1000 (non-JEDEC) vs 27C1001/27C010 (JEDEC)
pinout jumpers 3–10 (main program) only JEDEC / non-JEDEC (size fixed = 4 Mbit, 27C4096)
density + pinout jumpers 11–12 (sound) density (16/32 Mbit) + mask vs EPROM
density + pinout jumpers 13–20 (graphics) density (4/8/16/32 Mbit) + mask (27C400/800) vs EPROM (27C040/080/801)

Concrete case, sockets 1–2 (QSound): the function of pins 2 and 26 is A16 or GND. For a 27C1001 / 27C010 (JEDEC): A16 → pin 2, GND → pin 26, which gives the C-O-O-C pattern on JP1,2,3,4 and JP5,6,8,9. For a 27C1000 (non-JEDEC), invert this pattern.

Size rule (high address pin = last active line):

EPROM Density High address pin
27C010/1001 1 Mbit A16
27C4096 4 Mbit A18
27C160 16 Mbit A19
27C322 32 Mbit A20

→ The bigger the EPROM, the more address lines to enable (jumper on the "address" side rather than "GND") on the corresponding socket.

Per-game table traps

  • The settings assume 27C1001 (1 Mbit) in sockets 1–2 → invert for 27C1000.
  • Some online tables are wrong: the jumper order is sometimes inverted relative to the mask ROM banks. Cross-check.

  • Don't confuse mask pinout (27C400/800) and EPROM pinout (27C040/080/801) at the same density → the pinout jumper must match the fitted EPROM.

  • With the PAL G + 27C322 method (see §2A), the mask/EPROM pinout is no longer an issue (same pinout).

Exact per-game values: see the full per-game jumper table — hard-transcribed from jumper_data_settings.xls (a reference file recovered and archived in the repo, the original source being dead).

Example: Street Fighter Alpha → Super Street Fighter II

A typical real conversion. You need to gather: the correct EPROMs, the daughterboard (if the target game has one), the right PAL in PAL3, then set the jumpers for SSF2's ROM sizes, and finally flash/inject SSF2's keys (see §4). Without the right EPROM + PAL3 + jumpers + keys combination, the board stays on a suicide screen or shows glitches (see §6).

4. The keys / suicide

The main program is encrypted; the CPS-2 custom decrypts it with the game's key. After a conversion you must supply the target game's key:

  • Flash the keys into the B-board's SRAM, or
  • install an InfiniKey-CPS2 (replaces battery + keys, no more suicide).
  • If the board previously ran on another key (battery/InfiniKey), short EXC5 to purge the old key.

See also de-suicide/phoenix on CPS-2.

5. Verification checklist

  • EPROMs the right way round and in the right socket
  • Right PAL in PAL3 (or PAL G)
  • Jumper wire fitted if PAL G on rev 3/4
  • Jumpers set + continuity/open checked with a multimeter
  • Keys flashed / InfiniKey configured for the new game

6. Troubleshooting by screen colour

Screen Cause Fix
Solid colour suicide screen flash keys / InfiniKey; short EXC5 if the old game used battery/InfiniKey
White main program not read check program ROMs, reseat B-board
Grey / dark blue invalid keys reflash the correct game keys
Jailbars / missing sprites contacts / graphics ROMs reseat, recheck ROM 13–20
Broken sound PAL G without the wire on rev 3/4 fit the jumper wire

Required hardware

  • An EPROM programmer handling up to 32 Mbit (TL866II+ is limited to 16 Mbit natively → adapters for 27C322; otherwise a high-end programmer).
  • GAL16V8 (to burn the PAL G or the game's PAL).
  • EPROMs: 27C010/1001, 27C4096, 27C400/800, 27C160, 27C322.
  • Soldering iron, braid, knife (to cut/restore the jumpers).

Alternative: the multi

To "have everything" without reprogramming, the CPS-2 multi (Darksoft) replaces the B-board with an SD kit — see the multi page for installation.

Tool archived here

Source of ArcadeHacker_CPS2.tar.gz (Arduino sketch for CPS-2 de-suicide/re-key) · README. (The PDF guide is not archived — its content is transcribed above.)

Sources & attribution

Review & corrections

How this space is used

Spotted a wrong value, an outdated procedure, a chip reference that does not match your board? Say so here, with what you observed (model, board revision, serial number, measurement). Every report is cross-checked against a source before anything changes — an unverifiable correction is published as “reported by …, not cross-checked” rather than silently applied.

Reading is open to everyone; posting requires signing in with Discord. Reports from the wiki's declared reviewers are handled first; anyone else's are read too, but go through a human before anything is changed.