Thursday, 16 April 2015

Capcom CPS1 - Part 1

For most of the 80's, arcade titles were the product of intense hardware and software custom design work. With every new game title came a new board design and the full dedication of multiple specialized teams including experts in hardware, electronics, software, game design, graphics, sound... the list goes on and on.

Competition, faster release cycles, and the need for continued improved financial results, drove arcade manufacturers into operational optimization and standardization efforts with the ultimate goal of focusing into their true core business: producing successful video games, not hardware.

With the introduction in 1988 of the Capcom Play System 1 (CPS-1) by Capcom, the company signaled a new era in game design quality and hardware platform maturity.

An original CPS-1 Street Fighter II CE kit from my personal collection

The CPS-1 system was Capcom's bet in standardizing its own game release cycle, and the new system gave birth to 32 new game titles, about 137 if we count in game revisions and market specific localized versions. Its 16 bits and extended capabilities served as publishing vehicle for successful franchises such as Capcom's worldwide hit: Street Fighter II.

According to one release flyer from the UK distributor Electrocoin, the new system took 2 years to develop and a total investment of $5,000,000 USD ($10 million in 2015 money). But take this information just as a reference, the flyer happens to be full of marketing driven inaccuracies such as the claim about the system containing three 68000 cpu cores... (Thanks Haze for the finding).

Electrocoin UK CPS-1 advertisement. Source:

In production for a total of 12 years (1988-2000) and 6 known revisions, CPS-1 is probably one of the most successful hardware platforms in the history of the arcade industry and Capcom's first truly modular/reusable system. The reach of CPS-1 even includes a failed attempt to penetrate the home video game market.

CPS-1 the detail

The design consist of a number of interconnected pcbs known as A, B and the later added C board and Q-sound board. Here's a description of each layer:

  • A: the base board containing most of the system hardware. eg: cpu, memory, sound, etc...
  • B: the game rom board containing a combined number of mask roms and/or eproms.
  • C (later added): an small satellite board containing a video logic custom chip, and sometimes additional IO.
  • QSound (later added): a full size intermediate board providing new sound capabilities, the board is sandwiched in between A and B.

Note: C board was introduced right after the two initial game releases: Forgotten Worlds & Ghosts and Ghouls, and wasn't part of the original CPS-1 design. Instead, its contents were an integral part of the B board.

CPS-1 Technical specs: (source: Wikipedia)

  • CPU
    • Primary: Motorola 68000 @ 10 MHz (some later boards 12 MHz)
    • Secondary: Zilog Z-80 @ 3.579 MHz
  • Sound Chips:
    • Yamaha YM2151 @ 3.579 MHz
    • Oki OKI6295 @ 7.576 MHz, Stereo
  • Display
    • Resolution: Raster, 384x224 @ 59.6294 Hz
    • Color Depth: 12 bit RGB with a 4 bit brightness value
    • Colors available: 4096
    • Onscreen colors: 3072 (192 global palettes with 16 colors each)
  • Sprites:
    • Simultaneously displayable: 256 (per scanlines)
    • Sizes: 16x16, max. 16 colors (15 unique + 1 transparent)
    • Vertical and Horizontal Flipping capability
  • Tiles: Sizes 8x8, 16x16, 32x32 with 16 colors (15 unique + 1 transparent)
  • Tile Maps: 3 Maps, 512x512, 1024x1024, 2048x2048 pixel
  • 68K RAM: 64 KB WORK RAM + 192 KB VRAM (Shadow)
  • PPU: 192 KB VRAM + 16 KB CACHE RAM
  • Z80 RAM: 2 KB WORK RAM

CPS-1 evolution

The CPS-1 platform went through five clear differentiated evolutionary phases. The first release of the platform consisted only of a two layer design which missed what we know today as the C board.

1988 Forgotten Worlds 
A two layer design with QFP soldered mask roms.

CPS-1 launch title Forgotten Worlds. Photo by James Greenhalgh.

1989 Strider 
A three layer design introducing the top C satellite board. QFP mask roms are gone, uses standard DIP roms instead. This modern layout stays for most of the CPS-1 lifetime.

CPS-1 Strider. Photo taken from

1991/92 Street Fighter II Champion Edition 
The system gains a 20% speed bump by increasing the system frequency from 10Mhz to 12Mhz. With SF II the C board features additional IO for the extended game controls (6 buttons per player).

Street Fighter II Champion Edition board

1992 Capcom World 2
Some CPS-1 releases are enclosed inside a partial soft case including a title marketing sticker. The system features the same three layer design.

Capcom World 2 enclosed in a soft case

1993 Warriors of Fate
Updated CPS-1 design known as CPS Dash (or CPS 1.5). Four layer design featuring a new intermediate QSound board. All enclosed inside a hard case that includes an internal fan. This is the final update to the CPS-1 platform.

CPS (1.5) Dash hard case with QSound for the game Warriors of Fate.

This last update also saw a failed attempt of marketing CPS Dash as a home videogame system. The system was known as Capcom Power System Changer. Below is an original mailer about the system and its accessories:

Capcom Power System Changer. Photo taken from

CPS-1 the customs

One of the many milestones of CPS-1 is probably the reduction in the dependency of TTL chips, a family of logic chips widely used in the arcade video game industry since its very beginnings. With the introduction of CPS-1, Capcom also introduced a number of custom ASIC chips bringing new system capabilities, as well as a significant reduction in board density and complexity.

An ASIC is basically a custom chip built on request to meet a certain specification. In basic terms think of it as a relative easy way (if you have the required upfront investment capital) of integrating many off the shelf logic parts into just one.

A couple of these custom chips found in CPS-1 are the video logic ASICs known as A-XX and B-XX.

Left: CPS custom B. Right: CPS custom A

Rather than being mission specific, these chips do combine several video functions (scrolling, layer controls, palettes, memory transfers, etc... ) and as you can see in the photos above both came in high IO density QFP chip packages.

The strange case of COMCO

One good story about these customs is the apparent existence of a full A-01 custom clone under the comical brand "COMCO". Did anyone back then leak, sold, or steal the designs of this chip from Capcom? Or perhaps someone in the 90s embarked into fully reversing it? Whichever the case, who did it was resourceful enough and had the investment capacity to successfully reproduce and manufacture working clone parts.

Left: COMCO A-01 clone. Right: CAPCOM A-01 original part. 

I find this particular story amusing and believe it deserves a future investigation. Thanks to Fabrizio (Caius) for exposing the existence of the clone.

CPS-1 security

The overall reason for the existence of the C board is copy protection. The B-XX custom was manufactured with a different unique internal configuration in almost every new game, preventing operators from simply changing roms from title to title. Eg: converting old dated games into new releases without the right.

With the release of the game "Three Wonders", custom B-XX underwent its last known revision (B-21) which saw the introduction of an on-chip internal memory backed by an external battery.

CPS-1 C board with custom revision B-21. Battery shown on the left.

This custom component gave Capcom the ability of having a dynamic internal configuration without the need to update and build new B-XX custom chips with every release, an operational optimization that most probably simplified Capcom's life and introduced long term savings on production cost.

The long term consequences of this practice? Lose the battery, lose the game. As discussed earlier this practice probably helped Capcom with stopping plain and simple piracy attempts. But did this stop professional bootleggers? Clearly not as we know today CPS-1 and its army of hit games have been cloned to infinity.

On the positive side the perceived survivability of the B-21 battery is strong. The custom is known to hold for an impressive number of years on its original battery, most have survived 20+ years and many even still go on today. In any case, for us collectors in the post arcade industry era, this battery backed chip represents a problem to overcome in order to keep working unmodified originals of our CPS-1 titles.

CPS-1 the challenge

With the idea of uncovering the CPS-1 B-XX custom secrets and providing the arcade community with complete control over their hardware, I teamed with the almighty Digshadow and went ahead on a quest to reverse engineer this mysterious chip.

What's inside CPS-1 B-21? Who manufactured it? Can it be desuicided and reprogramed? To our satisfaction all of these questions (and more) already have an answer. During the next coming days a series of articles will provide you the insights and full disclosure on all of the B-21 custom secrets. Ready to discover what Capcom didn't want you know?

Stay tuned.

Update: Part 2 now available


  1. Very good overview - and that COMCO clone chip is fascinating... I wish it were still available :)

  2. At last, this is the first time I see the actual tecnical specs of the CPS1 vdp, this proves what I always knew, that the CPS1 was indeed equal or even more powerful than the Neogeo.

  3. 3x 68000 and... 1x 280 for sound!

  4. Can anyone help me out,I recently bought a street fighter hyper fighting board and it turns out it's the slower version which has a 16 MHz and 10 MHz crystal instead of the 16 and 12 MHz crystal. I know the faster board has has a cps DASH sticker near the dip switches on the A board. Is there anything different component wise on the cps dash A board besides 12 MHz crystal? If not would it be possible to swap out the 10 for 12 MHz crystal?

    1. Eduardo, do you have any insight on this?

    2. The cpu part number probably ends in 10, meaning 10mhz.

  5. Hi Eduardo -- I loved your work on the Kabuki chips. I have a question about the hacked (Accelerator, Red Wave etc.) versions of Street Fighter II Champion Edition. How did bootleggers manage to produce and sell these famous hacked versions of SF2? Supposedly, Capcom couldn't produce enough SF2 kits to fulfil demand, so it seems to make no economic sense that the bootleg versions were modified from official SF2 boards. The custom chips meant that hackers couldn't manufacture their own SF2 boards, and the game-specific nature of the B-XX custom chips meant that they couldn't convert non-SF2 CPS-1 boards to run SF2. So, how were the hacked SF2 versions manufactured?

    Keep up the good work,


    1. Hi Ali, that's a very good question, I am no expert on SF2 bootlegs but from what I know there's several degrees of bootleg quality in terms of gameplay.

      Given the presence of the customs I suspect most bootleggers focus was to reverse engineer the software to make it play well in 68k hardware that used standard parts. This came at the expense of missing game detail (some of the bootlegs are just horrible), but this practice also saw gameplay improvements that forced Capcom to react and release new revisions (eg: Hyper).

      One good example of bootleg activity missing custom parts was Bubble Bobble. The original hardware features one custom mcu chip with internal code. Some bootlegers simply ignored the custom part and modified the code to reproduce a playable experience but missed exact gameplay behavior. More information:

  6. What happened to the Sega FD1094 work?

    1. Hi Jonathan, the work is on going and many exciting details about the system chip have been already documented, no publication timing is available yet.


  7. Hola
    Buscando info acerca de CPS1 me he topado con tu blog y he alucinado con el contenido. Me parece impresionante el trabajo que has hecho, te felicito.
    El caso es que iba a hacer un post sobre CPS1 en y querría pedirte permiso para utilizar la información que hay en tu blog, más que nada el apartado de historia, especificaciones y un poco por encima el tema de seguridad, sin abordarlo con tant profundidad.
    Por supuesto señalaría este blog como fuente de información.
    Un saludo y espero tu respuesta

    1. Hola Manuel gracias y no tengas reparo en aprovechar cualquier cosa que veas por aquí. Un saludo.

  8. wow, great write up. I've also heard that there is a speed difference between the US(faster) vs the Japanese versions? sounds like the 10mhz vs the 12mhz causes this but wanted to know if anyone had experience on this front?

  9. Hi Eduardo,

    Great information, thank you for all of this! Question about that Comco chip - what game or games was it used on? Or was it simply, to the best of your knowledge, a replacement part?

  10. do you know what the memory of the original street figter 2 arcade was / is ? 512kb ? more ?


    2. many thanks for the link, there is no specific indication of memory used in the cp_system. There is lots of technical info but i am looking for a specific memory size of the SF2 game. I am trying to compare it to the Amiga hich also has a 68000 CPU with the base model at 512kb. your help much appreciated :)

    3. 64kb CPU work ram + 192kb Video ram. Rom storage up to 4mb IIRC.

      This is the cpu memory map as defined in Mame:

      static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, cps_state )
      AM_RANGE(0x000000, 0x3fffff) AM_ROM
      AM_RANGE(0x800000, 0x800007) AM_READ_PORT("IN1") /* Player input ports */
      /* forgottn, willow, cawing, nemo, varth read from 800010. Probably debug input leftover from development */
      AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */
      AM_RANGE(0x800020, 0x800021) AM_READNOP /* ? Used by Rockman ? not mapped according to PAL */
      AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
      /* Forgotten Worlds has dial controls on B-board mapped at 800040-80005f. See DRIVER_INIT */
      AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
      /* CPS-B custom is mapped by the PAL IOB2 on the B-board. SF2 revision "E" World and USA 910228 has it at a different
      address, see DRIVER_INIT */
      AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs")
      AM_RANGE(0x800180, 0x800187) AM_WRITE(cps1_soundlatch_w) /* Sound command */
      AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
      AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram") /* SF2CE executes code from here */
      AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("mainram")