CPS-1 converts¶
On CPS-1, conversion is more accessible than CPS-2 (no program encryption), but it all hinges on one custom: the CPS-B-21, which holds the per-game graphics configuration (144 registers, battery-backed on the affected boards). Converting = right ROMs + right CPS-B-21 config.
| Field | Value |
|---|---|
| Platform | Capcom CPS-1 (+ CPS-1.5 / Dash) |
| Type | EPROM reprogram + CPS-B-21 configuration |
| Difficulty | 🟡 (EPROM + custom config / possible C-board mod) |
| Suicide? | No on standard CPS-1; yes on Dash/Kabuki (encrypted sound Z80) |
The architecture¶
| Board | Role |
|---|---|
| A-board | common: 68000, Z80, JAMMA, sound |
| B-board | game program + graphics ROMs |
| C-board | carries the CPS-B-21 custom (and the battery on affected revisions) |
Changing game = reprogram the B-board ROMs and match the CPS-B-21 config (on the C-board).
The heart of it: the CPS-B-21¶
The CPS-B-21 handles layer priorities, palettes, starfield, sprite parameters via 144 registers (serially transferred). Two worlds:
| C-board type | CPS-B-21 config | Consequence |
|---|---|---|
| 90631C-5 (battery-backed) | programmed in internal memory backed by a battery | battery loss = config lost = dead game |
| 92631C-6 (battery-less) | hardwired default logic | "battery-less" games don't use custom registers |
→ To convert to a game that requires a custom config, you need either a correctly programmed battery-backed C-board, or to reprogram the CPS-B-21, or a replacement tool (see OpenKey below).
The modern solution: OpenKey-CPS1 (jwestfall69)¶
An open-source PCB that sits between the B-board and the C-board and reprograms the CPS-B-21 on the fly — replaces the battery and lets you pick the game without swapping the chip.
- Game selection via a 5-position switch (or solder jumpers to fix it).
- Each binary combination = a game / a B-XX variant. Real examples:
| Code (5 bits) | Game / config |
|---|---|
00000 |
Captain Commando |
00010 |
Knights of the Round |
00111 |
Cadillacs & Dinosaurs |
01100 |
B-01 chip variant |
→ Full OpenKey codes table per game / B-XX
C-board mod if the board was 'locked'
Some C-boards were modified to prevent reprogramming the CPS-B-21 (pins 45/46 tied to +5 V). To restore the programmable state: remove the 45/46→+5 V wire and bridge pins 45, 46 and 47 (GND) with a solder blob. On a typical battery-less conversion, you cut the ground trace to CPS-B-21 pins 42 and 44 and fit two 1 kΩ SMD resistors (R1/R2) — pins 45/46 already pulled high. (Hardware: ATtiny404 MCU, 2×20 connectors.)
The ROMs¶
- CPS-1 uses standard EPROMs for program, graphics and sound — reprogram to the target game's sizes, respecting the socket pinout (adapters if needed).
- Starting from a donor B-board with compatible sizes simplifies the job.
Program EPROM (B-board), game by game¶
The 68000 program lives on the B-board (with the CPS-B-21 and PALs). Classic EPROM
27C010 (128 KB), up to 8 positions; late / CPS-1.5 games move to 27C040 / 27C4096
(512 KB). The BPRG1 PAL on later B-boards enables the enlarged program ROM space.
16-bit program (68000) → loaded even/odd (words).
(Board architecture & faults: CPS-1 PCB. Source: MAME capcom/cps1.cpp.)
Mapping: 128 KB → 27C010 · 512 KB → 27C040 (or 27C4096, 16-bit mask pinout on the original B-board).
| Game | Program EPROM |
|---|---|
| Ghouls'n Ghosts | 4× 27C010 + 1× 27C040 |
| Strider | 4× 27C010 + 1× 27C040 |
| Final Fight | 4× 27C010 + 1× 27C040 |
| Magic Sword | 4× 27C010 + 1× 27C040 |
| Carrier Air Wing | 4× 27C010 + 1× 27C040 |
| Mercs | 4× 27C010 + 1× 27C040 |
| 1941 | 4× 27C010 + 1× 27C040 |
| Mega Twins | 4× 27C010 + 1× 27C040 |
| Street Fighter II | 8× 27C010 |
| Three Wonders | 8× 27C010 |
| The King of Dragons | 8× 27C010 |
| Varth | 8× 27C010 |
| Captain Commando | 2× 27C040 + 2× 27C010 |
| Knights of the Round | 2× 27C040 |
| Warriors of Fate | 2× 27C040 |
| SF2: Champion Edition | 3× 27C040 |
| SF2: Hyper Fighting | 3× 27C040 |
| Cadillacs & Dinosaurs | 3× 27C040 |
| The Punisher | 8× 27C010 + 1× 27C040 |
| Saturday Night Slam Masters | 3× 27C040 + 4× 27C010 |
What this tells you
To reburn a blown program or convert: identify the density per position (check the B-board silkscreen). The Q-Sound / CPS-1.5 games (Dinosaurs, Punisher, Slam Masters, Warriors of Fate) also carry the Kabuki layer — see below.
Dash / CPS-1.5 (Kabuki) case¶
Dash games (Cadillacs & Dinosaurs, Punisher, Slam Masters, Warriors of Fate…) have an encrypted "Kabuki" sound Z80 with a battery-backed key → suicide. For those:
- Phoenix ROM (decrypted) = frees you from the battery, or
- re-key / battery replacement.
See CPS-1.
Procedure (summary)¶
- Identify the donor B-board and the C-board (battery-backed vs battery-less).
- Program the EPROMs for the target game (your dumps), at the right sizes/pinout.
- Configure the CPS-B-21: correctly programmed C-board, or OpenKey set to the game code, or reprogramming.
- (Dash/Kabuki) handle the sound key (phoenix / re-key).
- Test colours, layer priorities, sprites, sound.
Settings (DIP)¶
CPS-1 is configured via three DIP banks on the A-board (physical config, not soft-dip):
| Bank | General function |
|---|---|
| DIPSW A | coinage |
| DIPSW B | difficulty, bonus/extend |
| DIPSW C | lives, demo sound, flip screen, free play, test/service |
After conversion, set per the target game (positions don't mean the same from one game to another) — cf. general DIP convention. Safe start: all OFF, enable test (DIPSW C) to check I/O and screen, then adjust.
Before / after¶
A common game's B-board becomes the target game (image + sound). If priorities/ colours are wrong → the CPS-B-21 config doesn't match (wrong code / wrong C-board).
Alternative: the multi¶
The CPS-1 multi (Darksoft) puts all CPS-1 games on one SD B-board and handles the config — see the multi page.
Tools archived with us
Open-source source archived in the repo (repos disappear):
openkey-cps1.tar.gz (firmware +
KiCad PCB design) · README.
Where to buy / read more¶
- OpenKey-CPS1 (open-source, jwestfall69) — https://github.com/jwestfall69/openkey-cps1
- Detailed guides & tables: Arcade-Projects — https://www.arcade-projects.com/
- CPS-B-21 background: ArcadeHacker (Eduardo Cruz) — http://arcadehacker.blogspot.com/2015/06/capcom-cps1-part-3.html
- EPROM / GAL / programmer: electronics distributors.
Sources & attribution¶
- jwestfall69 — openkey-cps1 (CPS-B-21 config, game codes, C-board mod) — https://github.com/jwestfall69/openkey-cps1
- ArcadeHacker — Capcom CPS1 Part 3 (144 registers, battery-backed) — http://arcadehacker.blogspot.com/2015/06/capcom-cps1-part-3.html
- Internal page: CPS-1
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.