Skip to the content
2 layers106.5 × 108.8 mmOpenkey cps2-panel, the printed circuit board in 3D

Openkey cps2-panel

jwestfall69/openkey-cps231

CPS2 Programmer

Size
106.5 × 108.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
303
Nets
135
Pads
573
Tracks, vias
1,152, 45
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
29 Dec 2022
Updated
20 May 2026

Overview

Openkey cps2-panel is an open-source printed circuit board by jwestfall69, from the jwestfall69/openkey-cps2 repository on GitHub, published under the Unlicense licence. It is a 2-layer board of 106.5 × 108.8 mm with 303 parts on 135 nets, routed with 1,152 tracks and 45 vias.

Its parts include 63 connectors, 9 capacitors and 9 ICs. It belongs with the AVR (ATmega, ATtiny) boards of this library.

README

README.md

openkey-cps2

Overview

This is an opensource/hardware implementation of an on the fly CPS2 key programmer that consists of a board thats soldered onto the CPS2 B board or the CPS2 all-in-one boards.

NOTE: There is a typo on the silkscreen on hardware revision 2022-12-17. The bypass cap is listed as being 100uf, when it should be 100nf. This typo was fixed in hardware revision 2023-01-03, however the pictures below are all from the typo'd 2022-12-17 revision.

Individual boards:
board

Panel:
pane

Details on how to program a CPS2 key data can be found in Eduardo Cruz's write up and associated firmware.

Details on what to program can be found in MAME's CPS2 driver (the *.key files).

Project Status

PCB: I would consider the design PCB done at this point. I'm open to any input on changes/improvements as this is my first PCB design.

Firmware: Should be fulling working but more testing would be nice. There are a lot of CPS2 games/keys.

Documentation: Work in progress

Supported Games

IMPORTANT: You will want to program the ATtiny before soldering your game jumpers. Specifically jumper #5 is also the programming pin on the ATtiny. Jumping it will tie the pin to ground which will make programming impossible.

Jumper
1234 5678
Program
ROM Labels
Mame
Rom Set
Game Names
0000 0000nffe19441944: The Loop Master (Euro 000620)
0000 0001nffj1944j1944: The Loop Master (Japan 000620)
0000 0010nffu1944u1944: The Loop Master (USA 000620)
0000 001119xe19xx19XX: The War Against Destiny (Euro 960104)
0000 010009xa
19xa
19xxa
19xxar1
19XX: The War Against Destiny (Asia 960104)
19XX: The War Against Destiny (Asia 951207)
0000 010119xb19xxb19XX: The War Against Destiny (Brazil 951218)
0000 011019xh19xxh19XX: The War Against Destiny (Hispanic 951218)
0000 011119xj-03b
19xj
19xj
19xxj
19xxjr1
19xxjr2
19XX: The War Against Destiny (Japan 960104, yellow case)
19XX: The War Against Destiny (Japan 951225)
19XX: The War Against Destiny (Japan 951207)
0000 100019xu19xxu19XX: The War Against Destiny (USA 951207)
0000 1001pwge
pwge
armwar
armwarr1
Armored Warriors (Euro 941024)
Armored Warriors (Euro 941011)
0000 1010pwga
pwga
armwara
armwarar1
Armored Warriors (Asia 941024)
Armored Warriors (Asia 940920)
0000 1011pwgbarmwarbArmored Warriors (Brazil 941024)
0000 1100pwgu
pwgu
armwaru
armwaru1
Armored Warriors (USA 941024)
Armored Warriors (USA 940920)
0000 1101avpeavspAlien vs. Predator (Euro 940520)
0000 1110avpaavspaAlien vs. Predator (Asia 940520)
0000 1111avphavsphAlien vs. Predator (Hispanic 940520)
0001 0000avpjavspjAlien vs. Predator (Japan 940520)
0001 0001avpuavspuAlien vs. Predator (USA 940520)
0001 0010btcebatcirBattle Circuit (Euro 970319)
0001 0011btcabatciraBattle Circuit (Asia 970319)
0001 0100btcjbatcirjBattle Circuit (Japan 970319)
0001 0101tkojchokoJanpai Puzzle Choukou (Japan 010820)
0001 0110csce
csce
csclub
csclub1
Capcom Sports Club (Euro 971017)
Capcom Sports Club (Euro 970722)
0001 0111cscacsclubaCapcom Sports Club (Asia 970722)
0001 1000cschcsclubhCapcom Sports Club (Hispanic 970722)
0001 1001cscj
cscj
csclubj
csclubjy
Capcom Sports Club (Japan 970722)
Capcom Sports Club (Japan 970722, yellow case)
0001 1010cybecybotsCyberbots: Fullmetal Madness (Euro 950424)
0001 1011cybjcybotsjCyberbots: Fullmetal Madness (Japan 950420)
0001 1100cybucybotsuCyberbots: Fullmetal Madness (USA 950424)
0001 1101dd2e
dd2e
dd2e
dd2e
ddsom
ddsomr1
ddsomr2
ddsomr3
Dungeons & Dragons: Shadow over Mystara (Euro 960619)
Dungeons & Dragons: Shadow over Mystara (Euro 960223)
Dungeons & Dragons: Shadow over Mystara (Euro 960209)
Dungeons & Dragons: Shadow over Mystara (Euro 960208)
0001 1110dd2a
dd2a
ddsoma
ddsomar1
Dungeons & Dragons: Shadow over Mystara (Asia 960619)
Dungeons & Dragons: Shadow over Mystara (Asia 960208)
0001 1111dd2bddsombDungeons & Dragons: Shadow over Mystara (Brazil 960223)
0010 0000dd2hddsomhDungeons & Dragons: Shadow over Mystara (Hispanic 960223)
0010 0001dd2j
dd2j
dd2j
ddsomj
ddsomjr1
ddsomjr2
Dungeons & Dragons: Shadow over Mystara (Japan 960619)
Dungeons & Dragons: Shadow over Mystara (Japan 960206)
Dungeons & Dragons: Shadow over Mystara (Japan 960223)
0010 0010dd2u
dd2u
ddsomu
ddsomur1
Dungeons & Dragons: Shadow over Mystara (USA 960619)
Dungeons & Dragons: Shadow over Mystara (USA 960209)
0010 0011dade
dade
ddtod
ddtodr1
Dungeons & Dragons: Tower of Doom (Euro 940412)
Dungeons & Dragons: Tower of Doom (Euro 940113)
0010 0100dada
dada
ddtoda
ddtodar1
Dungeons & Dragons: Tower of Doom (Asia 940412)
Dungeons & Dragons: Tower of Doom (Asia 940113)
0010 0101dadh
dadh
dadh
ddtodh
ddtodhr1
ddtodhr2
Dungeons & Dragons: Tower of Doom (Hispanic 940412)
Dungeons & Dragons: Tower of Doom (Hispanic 940125)
Dungeons & Dragons: Tower of Doom (Hispanic 940113)
0010 0110dadj
dadj
dadj
ddtodj
ddtodjr1
ddtodjr2
Dungeons & Dragons: Tower of Doom (Japan 940412)
Dungeons & Dragons: Tower of Doom (Japan 940125)
Dungeons & Dragons: Tower of Doom (Japan 940113)
0010 0111dadu
dadu
ddtodu
ddtodur1
Dungeons & Dragons: Tower of Doom (USA 940125)
Dungeons & Dragons: Tower of Doom (USA 940113)
0010 1000gmdedimahooDimahoo (Euro 000121)
0010 1001gmdudimahoouDimahoo (USA 000121)
0010 1010vamedstlkDarkstalkers: The Night Warriors (Euro 940705)
0010 1011vamadstlkaDarkstalkers: The Night Warriors (Asia 940705)
0010 1100vamhdstlkhDarkstalkers: The Night Warriors (Hispanic 940818)
0010 1101vamu
vamu
dstlku
dstlkur1
Darkstalkers: The Night Warriors (USA 940818)
Darkstalkers: The Night Warriors (USA 940705)
0010 1110ueceecofghtrEco Fighters (World 931203)
0010 1111uecaecofghtraEco Fighters (Asia 931203)
0011 0000uechecofghtrhEco Fighters (Hispanic 931203)
0011 0001uecu
uecu
ecofghtru
ecofghtru1
Eco Fighters (USA 940215)
Eco Fighters (USA 931203)
0011 0010ggwugigawingGiga Wing (USA 990222)
0011 0011ggwagigawingaGiga Wing (Asia 990222)
0011 0100ggwbgigawingbGiga Wing (Brazil 990222)
0011 0101ggwhgigawinghGiga Wing (Hispanic 990222)
0011 0110ggwjgigawingjGiga Wing (Japan 990223)
0011 0111gmdjgmahouGreat Mahou Daisakusen (Japan 000121)
0011 1000hs2uhsf2Hyper Street Fighter II: The Anniversary Edition (USA 040202)
0011 1001hs2ahsf2aHyper Street Fighter II: The Anniversary Edition (Asia 040202)
0011 1010hs2j
hs2j
hsf2j
hsf2j1
hsf2j2
Hyper Street Fighter II: The Anniversary Edition (Japan 040202)
Street Fighter II: The Anniversary Edition (Japan 040123)
Hyper Street Fighter II: The Anniversary Edition (Japan 031222)
0011 1011majjjyangokuJyangokushi: Haoh no Saihai (Japan 990527)
0011 1100rm2umegaman2Mega Man 2: The Power Fighters (USA 960708)
0011 1101rm2amegaman2aMega Man 2: The Power Fighters (Asia 960708)
0011 1110rm2hmegaman2hMega Man 2: The Power Fighters (Hispanic 960712)
0011 1111rcmu
rcmu
rcmu
mmancp2u
mmancp2ur1
mmancp2ur2
Mega Man: The Power Battle (CPS2, USA 951006, SAMPLE Version)
Mega Man: The Power Battle (CPS2, USA 950926, SAMPLE Version)
Mega Man: The Power Battle (CPS2, USA 950925, SAMPLE Version)
0100 0000sys_rom1mmatrixMars Matrix: Hyper Solid Shooting (USA 000412)
0100 0001mmxammatrixaMars Matrix: Hyper Solid Shooting (Asia 000412)
0100 0010mmxjmmatrixjMars Matrix: Hyper Solid Shooting (Japan 000412)
0100 0011mpne
mpn_03a
mpnj
mpne
mpnu
mpang
mpanga
mpangj
mpangr1
mpangu
Mighty! Pang (Euro 001010)
Mighty! Pang (Asia 001010)
Mighty! Pang (Japan 001011)
Mighty! Pang (Euro 000925)
Mighty! Pang (USA 001010)
0100 0100mshemshMarvel Super Heroes (Euro 951024)
0100 0101mshamshaMarvel Super Heroes (Asia 951024)
0100 0110mshb
mshb
mshb
mshbr1
Marvel Super Heroes (Brazil 951117)
Marvel Super Heroes (Brazil 951024)
0100 0111mshhmshhMarvel Super Heroes (Hispanic 951117)
0100 1000mshj
mshj
mshj
mshjr1
Marvel Super Heroes (Japan 951117)
Marvel Super Heroes (Japan 951024)
0100 1001mshumshuMarvel Super Heroes (USA 951024)
0100 1010mvsemshvsfMarvel Super Heroes Vs. Street Fighter (Euro 970625)
0100 1011mvsa
mvsa
mshvsfa
mshvsfa1
Marvel Super Heroes Vs. Street Fighter (Asia 970625)
Marvel Super Heroes Vs. Street Fighter (Asia 970620)
0100 1100mvsb
mvsb
mshvsfb
mshvsfb1
Marvel Super Heroes Vs. Street Fighter (Brazil 970827)
Marvel Super Heroes Vs. Street Fighter (Brazil 970625)
0100 1101mvshmshvsfhMarvel Super Heroes Vs. Street Fighter (Hispanic 970625)
0100 1110mvsj
mvsj
mvsj
mshvsfj
mshvsfj1
mshvsfj2
Marvel Super Heroes Vs. Street Fighter (Japan 970707)
Marvel Super Heroes Vs. Street Fighter (Japan 970702)
Marvel Super Heroes Vs. Street Fighter (Japan 970625)
0100 1111mvsu
mvsu
mshvsfu
mshvsfu1
Marvel Super Heroes Vs. Street Fighter (USA 970827)
Marvel Super Heroes Vs. Street Fighter (USA 970625)
0101 0000mvce
mvce
mvsc
mvscr1
Marvel Vs. Capcom: Clash of Super Heroes (Euro 980123)
Marvel Vs. Capcom: Clash of Super Heroes (Euro 980112)
0101 0001mvca
mvca
mvsca
mvscar1
Marvel Vs. Capcom: Clash of Super Heroes (Asia 980123)
Marvel Vs. Capcom: Clash of Super Heroes (Asia 980112)
0101 0010mvcbmvscbMarvel Vs. Capcom: Clash of Super Heroes (Brazil 980123)
0101 0011mvchmvschMarvel Vs. Capcom: Clash of Super Heroes (Hispanic 980123)
0101 0100mvcj
mvcj
mvc_ja
mvscj
mvscjr1
mvscjsing
Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123)
Marvel Vs. Capcom: Clash of Super Heroes (Japan 980112)
Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) (Single PCB)
0101 0101mvcu
mvcu
mvscu
mvscur1
Marvel Vs. Capcom: Clash of Super Heroes (USA 980123)
Marvel Vs. Capcom: Clash of Super Heroes (USA 971222)
0101 0110vphenwarrNight Warriors: Darkstalkers' Revenge (Euro 950316)
0101 0111vphanwarraNight Warriors: Darkstalkers' Revenge (Asia 950302)
0101 1000vphbnwarrbNight Warriors: Darkstalkers' Revenge (Brazil 950403)
0101 1001vphhnwarrhNight Warriors: Darkstalkers' Revenge (Hispanic 950403)
0101 1010vphunwarruNight Warriors: Darkstalkers' Revenge (USA 950406)
0101 1011pcfjpfghtjPocket Fighter (Japan 970904)
0101 1100pwgj
pwgj
pgear
pgearr1
Powered Gear: Strategic Variant Armor Equipment (Japan 941024)
Powered Gear: Strategic Variant Armor Equipment (Japan 940916)
0101 1101pgauprogearProgear (USA 010117)
0101 1110pgaaprogearaProgear (Asia 010117)
0101 1111pgajprogearjProgear no Arashi (Japan 010117)
0110 0000pl2e
pl2j
pl2j
pzloop2
pzloop2j
pzloop2jr1
Puzz Loop 2 (Euro 010302)
Puzz Loop 2 (Japan 010226)
Puzz Loop 2 (Japan 010205)
0110 0001tqzjqndreamQuiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 96086)
0110 0010smberingdestRing of Destruction: Slammasters II (Euro 940902)
0110 0011smbaringdestaRing of Destruction: Slammasters II (Asia 940831)
0110 0100smbb
smbh
ringdestb
ringdesth
Ring of Destruction: Slammasters II (Brazil 940902)
Ring of Destruction: Slammasters II (Hispanic 940902)
0110 0101rcmjrmancp2jRockman: The Power Battle (CPS2, Japan 950922)
0110 0110rm2jrockman2jRockman 2: The Power Fighters (Japan 960708)
0110 0111sfze
sfze
sfze
sfze
sfa
sfar1
sfar2
sfar3
Street Fighter Alpha: Warriors' Dreams (Euro 950727)
Street Fighter Alpha: Warriors' Dreams (Euro 950718)
Street Fighter Alpha: Warriors' Dreams (Euro 950627)
Street Fighter Alpha: Warriors' Dreams (Euro 950605)
0110 1000sz2esfa2Street Fighter Alpha 2 (Euro 960229)
0110 1001sz2u
sz2u
sfa2u
sfa2ur1
Street Fighter Alpha 2 (USA 960430)
Street Fighter Alpha 2 (USA 960306)
0110 1010sz3esfa3Street Fighter Alpha 3 (Euro 980904)
0110 1011sz3bsfa3bStreet Fighter Alpha 3 (Brazil 980629)
0110 1100sz3h
sz3h
sfa3h
sfa3hr1
Street Fighter Alpha 3 (Hispanic 980904)
Street Fighter Alpha 3 (Hispanic 980629)
0110 1101sz3u
sz3u
sz3-usam_03
sfa3u
sfa3ur1
sfa3us
Street Fighter Alpha 3 (USA 980904)
Street Fighter Alpha 3 (USA 980629)
Street Fighter Alpha 3 (USA 980616, SAMPLE Version)
0110 1110sfzusfauStreet Fighter Alpha: Warriors' Dreams (USA 950627)
0110 1111sz2asfz2aStreet Fighter Zero 2 (Asia 960227)
0111 0000szaa
szaa
sfz2al
sfz2alr1
Street Fighter Zero 2 Alpha (Asia 960826)
Street Fighter Zero 2 Alpha (Asia 960805)
0111 0001szabsfz2albStreet Fighter Zero 2 Alpha (Brazil 960813)
0111 0010szahsfz2alhStreet Fighter Zero 2 Alpha (Hispanic 960813)
0111 0011szajsfz2aljStreet Fighter Zero 2 Alpha (Japan 960805)
0111 0100sz2b
sz2b
sfz2b
sfz2br1
Street Fighter Zero 2 (Brazil 960531)
Street Fighter Zero 2 (Brazil 960304)
0111 0101sz2hsfz2hStreet Fighter Zero 2 (Hispanic 960304)
0111 0110sz2j
sz2j
sfz2j
sfz2jr1
Street Fighter Zero 2 (Japan 960430)
Street Fighter Zero 2 (Japan 960227)
0111 0111sz2nsfz2nStreet Fighter Zero 2 (Oceania 960229)
0111 1000sz3a
sz3a
sfz3a
sfz3ar1
Street Fighter Zero 3 (Asia 980904)
Street Fighter Zero 3 (Asia 980701)
0111 1001sz3j
sz3j
sz3j
sfz3j
sfz3jr1
sfz3jr2
Street Fighter Zero 3 (Japan 980904)
Street Fighter Zero 3 (Japan 980727)
Street Fighter Zero 3 (Japan 980629)
0111 1010sfza
sfza
sfza
sfzar1
Street Fighter Zero (Asia 950627)
Street Fighter Zero (Asia 950605)
0111 1011sfzb
sfzb
sfzb
sfzbr1
Street Fighter Zero (Brazil 951109)
Street Fighter Zero (Brazil 950727)
0111 1100sfzh
sfzh
sfzh
sfzhr1
Street Fighter Zero (Hispanic 950718)
Street Fighter Zero (Hispanic 950627)
0111 1101sfzj
sfzj
sfzj
sfzj
sfzjr1
sfzjr2
Street Fighter Zero (Japan 950727)
Street Fighter Zero (Japan 950627)
Street Fighter Zero (Japan 950605)
0111 1110pcfusgemfSuper Gem Fighter Mini Mix (USA 970904)
0111 1111pcfasgemfaSuper Gem Fighter: Mini Mix (Asia 970904)
1000 0000pcfhsgemfhSuper Gem Fighter: Mini Mix (Hispanic 970904)
1000 0001smbj
smbj
smbomb
smbombr1
Super Muscle Bomber: The International Blowout (Japan 940831)
Super Muscle Bomber: The International Blowout (Japan 940808)
1000 0010pzfespf2tSuper Puzzle Fighter II Turbo (Euro 960529)
1000 0011pzfaspf2taSuper Puzzle Fighter II Turbo (Asia 960529)
1000 0100pzfhspf2thSuper Puzzle Fighter II Turbo (Hispanic 960531)
1000 0101pzfuspf2tuSuper Puzzle Fighter II Turbo (USA 960620)
1000 0110pzfjspf2xjSuper Puzzle Fighter II X (Japan 960531)
1000 0111ssfe
ssfe
ssf2
ssf2r1
Super Street Fighter II: The New Challengers (World 931005)
Super Street Fighter II: The New Challengers (World 930911)
1000 1000ssfa
ssfa
ssf2a
ssf2ar1
Super Street Fighter II: The New Challengers (Asia 931005)
Super Street Fighter II: The New Challengers (Asia 930914)
1000 1001ssfhssf2hSuper Street Fighter II: The New Challengers (Hispanic 930911)
1000 1010ssfj
ssfj
ssfj
ssf2j
ssf2jr1
ssf2jr2
Super Street Fighter II: The New Challengers (Japan 931005)
Super Street Fighter II: The New Challengers (Japan 930911)
Super Street Fighter II: The New Challengers (Japan 930910)
1000 1011ssfhssf2tSuper Street Fighter II Turbo (World 940223)
1000 1100sfxassf2taSuper Street Fighter II Turbo (Asia 940223)
1000 1101ssfe
ssfe
ssf2tb
ssf2tbr1
Super Street Fighter II: The Tournament Battle (World 931119)
Super Street Fighter II: The Tournament Battle (World 930911)
1000 1110ssfassf2tbaSuper Street Fighter II: The Tournament Battle (Asia 931005)
1001 0000ssftj
ssfj
ssf2tbj
ssf2tbj1
Super Street Fighter II: The Tournament Battle (Japan 931005)
Super Street Fighter II: The Tournament Battle (Japan 930911)
1001 0001ssfussf2tbuSuper Street Fighter II: The Tournament Battle (USA 930911)
1001 0010sfxhssf2thSuper Street Fighter II Turbo (Hispanic 940223)
1001 0011sfxu
sfxu
ssf2tu
ssf2tur1
Super Street Fighter II Turbo (USA 940323)
Super Street Fighter II Turbo (USA 940223)
1001 0100ssfu
ssfu
ssf2u
ssf2us2
Super Street Fighter II: The New Challengers (USA 930911)
1001 0101sfxj
sfxj
ssf2xj
ssf2xjr1
Super Street Fighter II X: Grand Master Challenge (Japan 940311)
Super Street Fighter II X: Grand Master Challenge (Japan 940223)
1001 0110sfxossf2xjr1rSuper Street Fighter II X: Grand Master Challenge (Japan 940223 rent version)
1001 0111uecjuecologyUltimate Ecology (Japan 931203)
1001 1000vamj
vamj
vamj
vampj
vampja
vampjr1
Vampire: The Night Warriors (Japan 940705)
Vampire: The Night Warriors (Japan 940705 alt)
Vampire: The Night Warriors (Japan 940630)
1001 1001vh2j
vh2j
vhunt2
vhunt2r1
Vampire Hunter 2: Darkstalkers Revenge (Japan 970929)
Vampire Hunter 2: Darkstalkers Revenge (Japan 970913)
1001 1010vphj
vphj
vphjstop
vphj
vhuntj
vhuntjr1
vhuntjr1s
vhuntjr2
Vampire Hunter: Darkstalkers' Revenge (Japan 950316)
Vampire Hunter: Darkstalkers' Revenge (Japan 950307)
Vampire Hunter: Darkstalkers' Revenge (Japan 950307 stop version)
Vampire Hunter: Darkstalkers' Revenge (Japan 950302)
1001 1011vm3evsavVampire Savior: The Lord of Vampire (Euro 970519)
1001 1100vs2jvsav2Vampire Savior 2: The Lord of Vampire (Japan 970913)
1001 1101vm3avsavaVampire Savior: The Lord of Vampire (Asia 970519)
1001 1110vm3bvsavbVampire Savior: The Lord of Vampire (Brazil 970519)
1001 1111vm3hvsavhVampire Savior: The Lord of Vampire (Hispanic 970519)
1010 0000vm3jvsavjVampire Savior: The Lord of Vampire (Japan 970519)
1010 0001vm3uvsavuVampire Savior: The Lord of Vampire (USA 970519)
1010 0010xmne
xmne
xmcota
xmcotar1
X-Men: Children of the Atom (Euro 950331)
X-Men: Children of the Atom (Euro 950105)
1010 0011xmna
xmna
xmna
xmcotaa
xmcotaar1
xmcotaar2
X-Men: Children of the Atom (Asia 950105)
X-Men: Children of the Atom (Asia 941219)
X-Men: Children of the Atom (Asia 941217)
1010 0100xmnbxmcotabX-Men: Children of the Atom (Brazil 950331)
1010 0101xmnh
xmnh
xmcotah
xmcotahr1
X-Men: Children of the Atom (Hispanic 950331)
X-Men: Children of the Atom (Hispanic 950105)
1010 0110xmnj
xmnj
xmnj
xmnj
xmno
xmcotaj
xmcotaj1
xmcotaj2
xmcotaj3
xmcotajr
X-Men: Children of the Atom (Japan 950105)
X-Men: Children of the Atom (Japan 941222)
X-Men: Children of the Atom (Japan 941219)
X-Men: Children of the Atom (Japan 941217)
X-Men: Children of the Atom (Japan 941208 rent version)
1010 0111xmnuxmcotauX-Men: Children of the Atom (USA 950105)
1010 1000xvse
xvse
xmvsf
xmvsfr1
X-Men Vs. Street Fighter (Euro 961004)
X-Men Vs. Street Fighter (Euro 960910)
1010 1001xvsa
xvsa
xvsa
xvsa
xmvsfa
xmvsfar1
xmvsfar2
xmvsfar3
X-Men Vs. Street Fighter (Asia 961023)
X-Men Vs. Street Fighter (Asia 961004)
X-Men Vs. Street Fighter (Asia 960919)
X-Men Vs. Street Fighter (Asia 960910)
1010 1010xvsbxmvsfbX-Men Vs. Street Fighter (Brazil 961023)
1010 1011xvshxmvsfhX-Men Vs. Street Fighter (Hispanic 961004)
1010 1100xvsj
xvsj
xvsj
xvsj
xmvsfj
xmvsfjr1
xmvsfjr2
xmvsfjr3
xmvsfjr4
X-Men Vs. Street Fighter (Japan 970113)
X-Men Vs. Street Fighter (Japan 961023)
X-Men Vs. Street Fighter (Japan 961004)
X-Men Vs. Street Fighter (Japan 960910)
X-Men Vs. Street Fighter (Japan 960909)
1010 1101xvsu
xvsu
xvsu
xmvsfu
xmvsfur1
xmvsfur2
X-Men Vs. Street Fighter (USA 961023)
X-Men Vs. Street Fighter (USA 961004)
X-Men Vs. Street Fighter (USA 960910)
1010 1110Phoenix Key (0xff filled)

Hardware

PCB Manufacturing

For thickness I've been using 1mm, but standard 1.6mm will work fine too.

The board has 2 sets of castellated holes (through holes cut in half on the edge of the board). When ordering make sure you pick the option for castellated holes as they require special processing. If you don't pick the option, your castellated holes will likely be mangled and look like this

Mangled Castellated Holes
mangled castellated holes

I've been using jlcpcb for PCB manufacturing. For them, picking castellated holes adds around a $40 fee to the order. They also seem to have an unwritten limit of 30 PCBs per order that have castellated holes. If you go above this they may reject your order or ask you if its ok to remove the castellated holes option (don't do it!).

If you want more then 30 PCBs or want them assembled you will want to use the panel version of openkey-cps2. More detail regarding this can be found in PANEL.md.

BOM

DescriptionPart NumberDigiKeyMouserNotes
ATtiny404 20MhzATTINY404-SSNATTINY404-SSN-ND556-ATTINY404-SSNROther ATtiny tinyAVR 0/1/2-series models should be viable as well. The code compiles to a little over 3K in size, so any that have 4K or more of flash should work. Just note I have only tested with 404s
100nf / 0.1uf SMD Ceramic Capacitor 0805 Size

Assembly

Nothing special here just install the ATtiny and the bypass cap.

IMPORTANT: You will want to program the ATtiny before soldering your game jumpers. Specifically jumper #5 is also the programming pin on the ATtiny. Jumping it will tie the pin to ground which will make programming impossible.

Programming

Hardware

Programming is done with a UPDI programmer. I've been using this one:

Serial UPDI Programmer for ATmega 0-Series, or ATtiny 0-Series or 1-Series, or AVR DA or AVR DB

Note: This programmer (and likely others) has a switch for 3.3V and 5V. Set it to 5V.

The openkey-cps2 programming port consists of 3x pads (VCC, GND, UPDI) that will need to be connected to the programmer. I've been using a short 3 pin female to female IDC cable with pogo pins on one end to do this. Additionally you could probably use something like this if you are going to be programming a bunch.

programming gear

Of course be sure you properly orient the board so the labeled pads match up. vcc to vcc, gnd to gnd, and updi to updi.

Software

For software I've been using the Arduino IDE with megaTinyCore, which adds support for tinyAVR 0/1/2-Series MCUs.

NOTE: The makers of megaTinyCore currently recommend using Arduino IDE version 1.8.13 for best compatibility. 2.0 definitely does not work!

To install the megaTinyCore you, should just need to add http://drazzy.com/package_drazzy.com_index.json to "Addit ional Boards Manager URLs" in the settings for the Arduino IDE.

From there you need to configure the board/programming settings. I've been using these:

arduino ide settings

Testing

If you are selling or giving away the openkey-cps2's that you have assembled/programmed its nice to be able to test them first. This section explains how you can test the board without having to install it.

You will need to get your hands on a "1944: The Loop Master (Euro 000620)" in a 93646B-6 or 93646B-7 B board. For mine I just made a conversion using the 1944 mame romset. This specific game is needed because its game jumper 0000 0000.

Additionally you will need to create the following cable

Side A:
test cable side a

Side B:
test cable side b

I would advise making this cable about 24 inches long.

You will note that side "A" is 6 pin female connectors, which break out into a 5 pin female connector and 3 pin female connector "B" side. The "B" side then has pogo pins installed with super glue to keep them steady. Additionally on the 3 pin female connector "B" side, pins 2 and 3 are just connected to each other.

The red wire is +5V, black wire is GND, remaining are data lines.

The "A" side 6 pin connector should be plugged into CN9 on the B board, with +5V on pin 1, and GND on pin 6 as shown.

test cable cn9

IMPORTANT: The +5V on the 3 pin female/pogo pin connector will be live when you power on the board, so be extra careful you don't touch anything with it or it could cause a short/damage.

CPS2 boards will hold onto the programmed key data for a while after they have been powered off. So to properly test the openkey-cps2 its best to program the wrong key, verify it breaks the game, then program the correct key to verify it works.

Programming the WRONG key

  1. Power on the CPS2 board
  2. Connect the 5 pogo pin connector to pins 2-6 of CN9 on the openkey-cps2
  3. Connect the 3 pogo pin connector to the UPDI header on openkey-cps2, with the red wire connected to VCC pad, and the pins 2-3 connected to GND and UPDI pads

test program wrong key

This should result is a solid color screen, mine is normally purple.

The UPDI pad on the UPDI header is shared with jumper #5 of the game select. By jumping the GND and UPDI pads together its cause the MCU to program game 0000 1000 or 19XX: The War Against Destiny (USA 951207), which is the wrong key for 1944: The Loop Master (Euro 000620)

Programming the CORRECT key

  1. Remove both the 5 pogo pin and 3 pogo pin connectors from the openkey-cps2 board
  2. Connect the 5 pogo pin connector to pins 2-6 of CN9 on the openkey-cps2
  3. Using the 3 pogo pin connector, only connect the red wire pogo pin to the VCC pad on the UPDI header. Do not connect anything to the GND and UPDI pads

test program correct key

By only applying +5V on the VCC pad on UPDI header and NOT jumping the GND/UPDI pads it will cause the MCU to program game 0000 0000.

The game should boot a few seconds later

You do not need to power off the CPS2 board in between programming the wrong/correct key or even between testing multiple openkey-cps2 board. Part of the programming process will reset the game.

Installation

Below are pictures for installing openkey-cps2 on the different cps2 board revisions.

You will notice there are 3 boxes on the board, 2 with solder pads (+5V and GND), and 1 jumper. Within the box is a short hand version of which board revisions need which of them.

  • +5V has B-345 which means its needed for revisions 93646B-3, 93646B-4, and 93646B-5
  • JUMP has B-67 and A-34 which means it needs to be jumped for revisions 93646B-6, 93646B-7, 97691A-3 and 97691A-4
  • GND has B-34 which means its needed for revisions 93646B-3 and 93646B-4

93646B-3

93646B-4


93646B-3 and 93646B-4 have the same install process.

Identify CN2 on the top side of the CPS2 B Board PCB. This is where openkey-cps2 will be installed.

Your board will likely have the resistor shown in the below picture. b-34-top

Temporarily desolder the top connection of the resistor, move it out of the way and install openkey-cps2 as shown below. Additionally make note of the red and green arrows/lines as these will be the locations we wire up for +5V and GND.

b-34-install1

Re-solder the resistor and wire up the +5V and GND wires as shown below. Then jumper 1 to 8 based on which game you need.

b-34-install2

93646B-5


NOTE: I don't have a 93646B-5, but this is what should be required for the installation.

Identify CN9 on the top side of the CPS2 B Board PCB. The underside of CN9 is what we will be installing openkey-cps2 to.

Top: b-5 top

Bottom: b-5 bottom

Solder the castellated holes on CN9 of openkey-cps2 to the underside pins for CN9 on the CPS2 PCB. Additionally solder a wire going from the +5V pad on the openkey-cps2 to RA2 pin 1 as seen below. Then jumper 1 to 8 based on which game you need.

Installed: b-5 installed

93646B-6

93646B-7


93646B-6 and 93646B-7 have the same install process.

Identify CN9 on the top side of the CPS2 B Board PCB. The underside of CN9 is what we will be installing openkey-cps2 to.

Top: b-67 top

Bottom: b-67 bottom

Solder the castellated holes on CN9 of openkey-cps2 to the underside pins for CN9 on the CPS2 PCB. Additionally jumper the JUMP pad as pointed out by the green arrow in the picture below. Then jumper 1 to 8 based on which game you need.

Installedb-67 installed

97691A-3 (all in one)

97691A-4 (all in one)


97691A-3 and 97691A-4 have the same install process.

Identify CN1 on the top side of the CPS2 PCB. It should be next to the memory socket in the corner. The underside of CN1 is what we will be installing openkey-cps2 to.

Top: a-34 top

Bottom: a-34 bottom

openkey-cps2 will sit on top of those 4 resistors seen in the above picture. Solder the castellated holes on CN9 of openkey-cps2 to the underside pins for CN1 on the CPS2 PCB. Additionally jumper the JUMP pad as pointed out by the green arrow in the picture below. Then jumper 1 to 8 based on which game you need.

Installed: a-34 installed

Parts

303
QtyValueFootprintReferences
126NPTHNPTHKiKit_MB_10_1, KiKit_MB_10_2, KiKit_MB_10_3, KiKit_MB_10_4, KiKit_MB_10_5, KiKit_MB_10_6, KiKit_MB_10_7, KiKit_MB_11_1, KiKit_MB_11_2, KiKit_MB_11_3, KiKit_MB_11_4, KiKit_MB_11_5, KiKit_MB_11_6, KiKit_MB_11_7, KiKit_MB_12_1, KiKit_MB_12_2 +110
72SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP1, JP1, JP1, JP1, JP1, JP1, JP1, JP1, JP1, JP2, JP2, JP2, JP2, JP2, JP2, JP2 +56
9100nfopenkey:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C1, C1, C1, C1, C1, C1, C1, C1
9ATtinyxx4openkey:SOIC-14_3.9x8.7mm_P1.27mmU1, U1, U1, U1, U1, U1, U1, U1, U1
9CN2Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2, J2, J2, J2, J2, J2, J2, J2, J2
9CN9 VCC JumperJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP9, JP9, JP9, JP9, JP9, JP9, JP9, JP9, JP9
9Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalCN9, CN9, CN9, CN9, CN9, CN9, CN9, CN9, CN9
9GNDTestPoint:TestPoint_Pad_D1.5mmJ5, J5, J5, J5, J5, J5, J5, J5, J5
9GND PadTestPoint:TestPoint_Pad_D2.5mmJ3, J3, J3, J3, J3, J3, J3, J3, J3
9J5 / UDPITestPoint:TestPoint_Pad_D1.5mmJ6, J6, J6, J6, J6, J6, J6, J6, J6
9VCCTestPoint:TestPoint_Pad_D1.5mmJ4, J4, J4, J4, J4, J4, J4, J4, J4
9VCC PadTestPoint:TestPoint_Pad_D2.5mmJ1, J1, J1, J1, J1, J1, J1, J1, J1
6FiducialFiducialKiKit_FID_B_1, KiKit_FID_B_2, KiKit_FID_B_3, KiKit_FID_T_1, KiKit_FID_T_2, KiKit_FID_T_3

The 294 most common of 303 parts.

More from jwestfall69/openkey-cps2

1
  • 2 layers27.5 × 28.3 mmOpenkey cps2, the printed circuit board in 3D

    Openkey cps2

    jwestfall69/openkey-cps2

    CPS2 Programmer

    21 parts31Unlicense

Similar boards

  • 2 layers285 × 95.1 mmNora, the printed circuit board in 3D

    Nora

    jpskenn/Nora

    Narrow pitch keyboard with Choc switches and keycaps. GH60 compatible.

    303 parts12MIT
  • 2 layers325.5 × 243 mmClarinoid devboard, the printed circuit board in 3D

    Clarinoid devboard

    thenfour/Clarinoid

    an electronic wind instrument / clarinet / flute / not sure

    303 parts4
  • 2 layers200.7 × 279.4 mmMotorteiber002, the printed circuit board in 3D

    Motorteiber002

    Toberfra/Getraenkeautomat002

    Ein Cocktailmixer

    303 parts1GPL-3.0
  • 2 layers260 × 270 mmSalt, the printed circuit board in 3D

    Salt

    martinanus/salt

    Proyecto SALT

    303 parts
  • 2 layers359.6 × 126.2 mmRKD06 Base, the printed circuit board in 3D

    RKD06 Base

    rikkodo/Rikkodo_PCB

    This project is licensed under the CERN OHL-P v2. You may use, distribute, and modify this design under the terms of the CERN OHL-P v2. Original design by snize.

    303 parts
  • 2 layers216 × 89 mmPcb ledmatrix, the printed circuit board in 3D

    Pcb ledmatrix

    stebit/pcb-ledmatrix

    302 parts
  • 2 layers308.8 × 99.3 mmHem, the printed circuit board in 3D

    Hem

    marcocampione/Hem-keyboard

    A 65% ANSI keyboard PCB with an RP2040 on the board

    302 partsMIT
  • 2 layers344 × 124 mmSolderCurved, the printed circuit board in 3D

    SolderCurved

    MaiTheSan/PCB-Design

    All PCB Projects of SawnsProjects & Salane

    302 parts

Questions

How big is the Openkey cps2-panel PCB?

It measures 106.5 × 108.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Openkey cps2-panel use?

303 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Openkey cps2-panel KiCad files?

From the jwestfall69/openkey-cps2 repository on GitHub, at the commit this page was made from: the board is hardware/panel/openkey-cps2-panel.kicad_pcb and its schematic hardware/openkey-cps2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Openkey cps2-panel design in my own project?

Its repository publishes it under the Unlicense licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).