# CP System II

Le CP System II (Capcom Play System 2), plus communément appelé CPS2 ou CPS-2, est un système de jeux vidéo à cartouche pour borne d'arcade compatible JAMMA destiné aux salles d'arcade, créé par la société japonaise Capcom afin de succéder au CP System.

## Description

Le CP System II est sorti en 1993 et a eu une durée de vie assez longue : 11 ans d'exploitation. Le premier jeu édité pour ce support est Super Street Fighter II: The New Challengers, suivi de nombreux jeux à succès, principalement des shoot 'em up (GigaWing, Mars Matrix: Hyper Solid Shooting…) et des jeux de combat majoritairement développés par Capcom : Pocket Fighter, les sagas Darkstalkers, Street Fighter Alpha et cinq jeux utilisant la licence Marvel. La production software connait un arrêt en 2001 mais elle est prolongée de 3 ans par le tardif Hyper Street Fighter II: The Anniversary Edition sorti en 2004.
Les jeux CPS2 se présentent presque toujours sous la forme de deux cartouches : celles contenant le jeu (comme sur console) sont communément appelées B-Board et s'emboîtent sur une autre cartouche qui est une sorte de carte mère appelée A-Board ; cette dernière dispose d'un connecteur JAMMA permettant de relier le tout à une borne d'arcade. Ce système permet de changer de jeux au format CPS2 très facilement et diminue les risques de détériorations. Cependant certains jeux se présentent également sous une autre forme, où carte de jeu et carte mère sont dans la même cartouche de couleur noire. Les cartouches CPS2 se distinguent par leur poids et leur taille relativement imposants pour un système d'arcade. Certains jeux nécessitent un Kick harness afin de faire fonctionner tous les boutons.
Le son stéréo est disponible pour la totalité des jeux avec la puce Capcom Qsound sur toutes les cartes. Il est à noter, que les spécifications techniques du CPS2 par rapport au CPS, sont presque identiques. En fait, Capcom a fait évoluer son ancien système vers un hardware plus simple d'utilisation et légèrement plus performant. Les puces et processeurs sont, en effet, les mêmes, un Motorola M68000, un Zilog Z80 et une QSound.
Le jeu CPS2 le plus volumineux est Vampire Savior 2: The Lord of Vampire, qui contient 362 Mbits de données.
Le dernier jeu sur CPS2 aurait dû être le shoot'em up Progear sorti en 2001, mais pour fêter les 15 ans de Street Fighter, Capcom a sorti en 2004 sur CPS2 le jeu Hyper Street Fighter II: The Anniversary Edition.
Capcom avait pour habitude de récupérer d'anciennes cartouches de jeux CPS-2 pour en fabriquer de nouvelles. Souvent sur la cartouche, le sticker du jeu est collé sur le sticker d'un jeu contenu précédemment$^,$.

## Nationalité des jeux

Compatibilité entre jeu et carte mère CPS2 :
| Cartouche | Cartouche | Carte mère | Carte mère | Carte mère | Carte mère | Carte mère | Carte mère |
| Cartouche | Cartouche | USA, Europe | Japon | Asie | Amérique du Sud | Brésil | Location |
| | USA, Europe | | | — | — | — | |
| | Japon | | | — | — | — | |
| | Asie | — | — | | — | — | — |
| | Amérique d.S | — | — | — | | — | — |
| | Brésil | — | — | — | — | | — |
| | Location | | | — | — | — | |
Les A-Board (cartes-mères) et les B-Board (jeux) ont des couleurs différentes selon leurs zones d'origine.

### Légende

* États-Unis, Canada et Europe
* Japon
* Asie
* Amérique du Sud
* Brésil
* Region 0 (destiné à la location)
* Region 0 (A-Board et B-Board intégrées sur la même carte)
Une A-Board et une B-Board ne peuvent fonctionner ensemble uniquement si leurs couleurs sont compatibles. Par exemple, une B-Board grise ne peut pas tourner sur une A-Board bleue (voir le tableau ci-contre).
Les seules différences entre les jeux de couleurs différents se situent principalement au niveau de la langue utilisée dans les textes. Les jeux japonais de couleur verte sont intégralement en japonais. Par contre les jeux bleu et gris sont en anglais. Plus rarement, certains jeux se voient amputés de quelques éléments d'une version à l'autre, comme les voix digitalisées présentes dans la cartouche du jeu Progear de couleur verte, et qui n'existent pas dans la cartouche de couleur bleue.

## Spécifications techniques
### Processeur principal

* Motorola 68000 cadencé à 16 MHz
* Bus d'adressage : 24 bit
* Bus de données : 16 bit

### Audio

* Zilog Z80 cadencé à 8 MHz
* Puce QSound cadencé à 4 MHz
* Zilog Z80 cadencé à 8 MHz
* Stéréo
* 16 canaux PCM

### Affichage

* Palette couleurs : 32 bit
* Couleurs affichables simultanément : 3072
* Nombre de couleurs par objet : 16 (4 bits par pixel)
* Nombre d'objets : 900 (16 x 16 pixels)
* Plan de scrolling : 3
* Résolution : 384 x 224

## Liste des jeux

| Titre | Développeur | Éditeur | Orientation | Genre | Date |
| 1944: The Loop Master | Eighting/Raizing | Capcom | H | Shoot them up | 2000 |
| 19XX: The War Against Destiny | Capcom | Capcom | V | Shoot them up | 1996 |
| Alien vs. Predator | Capcom | Capcom | H | Beat them all | 1994 |
| Armored Warriors | Capcom | Capcom | H | Beat them all | 1994 |
| Battle Circuit | Capcom | Capcom | H | Beat them all | 1997 |
| Capcom Sports Club | Capcom | Capcom | H | Sport | 1997 |
| Cyberbots: Fullmetal Madness | Capcom | Capcom | H | Combat | 1995 |
| Darkstalkers: The Night Warriors | Capcom | Capcom | H | Combat | 1994 |
| Dimahoo | Eighting/Raizing | Capcom | V | Shoot them up | 2000 |
| Dungeons and Dragons: Shadow over Mystara | Capcom | Capcom | H | Beat them all / rôle | 1996 |
| Dungeons and Dragons: Tower of Doom | Capcom | Capcom | H | Beat them all / rôle | 1993 |
| Eco Fighters | Capcom | Capcom | H | Shoot them up | 1994 |
| GigaWing | Capcom / Takumi | Capcom | H | Shoot them up | 1999 |
| Hyper Street Fighter II: The Anniversary Edition | Capcom | Capcom | H | Combat | 2004 |
| Janpai Puzzle Chōkō | Mitchell | Capcom | H | Mah-jong | 2001 |
| Jyangokushi: Haoh no Saihai | Capcom | Capcom | H | Puzzle | 1999 |
| Mars Matrix: Hyper Solid Shooting | Takumi | Capcom | H | Shoot them up | 2000 |
| Marvel Super Heroes | Capcom | Capcom | H | Combat | 1995 |
| Marvel Super Heroes vs. Street Fighter | Capcom | Capcom | H | Combat | 1997 |
| Marvel vs. Capcom: Clash of Super Heroes | Capcom | Capcom | H | Combat | 1998 |
| Mega Man 2: The Power Fighters | Capcom | Capcom | H | Combat | 1996 |
| Mega Man: The Power Battle | Capcom | Capcom | H | Combat | 1995 |
| Mighty! Pang | Mitchell | Mitchell | H | Action-réflexion | 2000 |
| Night Warriors: Darkstalkers' Revenge | Capcom | Capcom | H | Combat | 1995 |
| Pnickies | Capcom / Compile | Capcom | H | Puzzle | |
| Progear | Capcom / Cave | Capcom | H | Shoot them up | 2001 |
| Puzz Loop 2 | Mitchell | Capcom | H | Réflexion | 2000 |
| Quiz Nanairo Dreams: Miracle of the Rainbow-Colored Town | Capcom | Capcom | H | Quiz | 1996 |
| Ring of Destruction: Slammasters II | Capcom | Capcom | H | Combat | 1994 |
| Street Fighter Alpha 2 | Capcom | Capcom | H | Combat | 1996 |
| Street Fighter Alpha 3 | Capcom | Capcom | H | Combat | 1998 |
| Street Fighter Alpha: Warriors' Dreams | Capcom | Capcom | H | Combat | 1995 |
| Street Fighter Zero 2 Alpha | Capcom | Capcom | H | Combat | 1996 |
| Super Gem Fighter: Mini Mix | Capcom | Capcom | H | Combat | 1997 |
| Super Puzzle Fighter II Turbo | Capcom | Capcom | H | Puzzle | 1996 |
| Super Street Fighter II Turbo | Capcom | Capcom | H | Combat | 1994 |
| Super Street Fighter II: The New Challengers | Capcom | Capcom | H | Combat | 1993 |
| Super Street Fighter II: The Tournament Battle | Capcom | Capcom | H | Combat | 1993 |
| Vampire Hunter 2: Darkstalkers' Revenge | Capcom | Capcom | H | Combat | 1997 |
| Vampire Savior 2: The Lord of Vampire | Capcom | Capcom | H | Combat | 1997 |
| Vampire Savior: The Lord of Vampire | Capcom | Capcom | H | Combat | 1997 |
| X-Men vs. Street Fighter | Capcom | Capcom | H | Combat | 1996 |
| X-Men: Children of the Atom | Capcom | Capcom | H | Combat | 1994 |

## Système de protection et décryptage
### CPS Suicide

Les cartouches CPS2 sont équipées d'une pile électrique au lithium servant à alimenter de la mémoire RAM (mémoire volatile) contenant un code de décryptage. Une fois la pile hors service, le code est perdu et le jeu n'est plus utilisable, c'est ce qu'on appelle le CPS suicide. Pour éviter cela, les possesseurs de ce système d'arcade doivent donc remplacer régulièrement les piles au lithium contenues dans leurs cartouches CPS2 en suivant une procédure spécifique.
Le 29 avril 2003, Razoola découvre un moyen de faire revivre les cartes d'arcade CPS2 grâce à l'un de ses programmes. Les roms de programmes de chaque jeu vont être modifiés et plus aucune pile ne sera nécessaire pour faire fonctionner le jeu. Les jeux qui ont subi cette modification sont appelés jeux « phoenixés » ; ainsi, les roms modifiés sont appelés « Phoenix ». Il est d'ailleurs à noter qu'au lancement des jeux « phoenixés », l'apparition au boot du logo « Phoenix Edition » permet au puriste des jeux d'arcade non modifiés de faire la distinction entre un jeu 100 % original et un jeu original Phoenixé (99 % original).
En 2016, ArcadeHacker (Eduardo Cruz) travaille et trouve une méthode permettant de percer les mystères de la sécurité du CPS2 de Capcom$^,$. Tout comme avec la protection Kabuki sur le CPS1, le projet d'ArcadeHacker visait à comprendre le fonctionnement interne des fonctions de sécurité du système CPS2. L'objectif était d'aider la communauté arcade à préserver les jeux dans le temps sans en altérer le matériel, c'est-à-dire que contrairement au remplacement de ROMs, aux ROMs dites « phoenixées » ou autres hacks de matériels en tout genre, cela permet de garder un matériel parfaitement conforme à l'original mais dont la durée de vie peut être augmentée. Les publications d'Eduardo Cruz permettront, en 2019, à un certain nombre de développeurs de créer et/ou de vendre des solutions matériels pour restaurer les jeux CPS-2 morts (à l'aide de kit Darksoft CPS-2 ou de diverses solutions personnalisées), bien qu'il s'agisse d'une opération relativement complexe. Sur la base de cette même recherche de nouvelles mesures préventives, empêchant un jeu CPS-2 de rendre l'âme, ont commencé à apparaître. La plus connue se nomme "Infinikey-CPS2", il s'agit d'une simple carte qui se fixe à une B-Board CPS-2 et qui écrit une clé de déchiffrement au démarrage. Cela contourne la clé sauvegardée par batterie et protège les cartes pour toujours contre la perte de données due à une batterie faible ou morte.

### Décryptage

Le système de protection anti-copie par chiffrement a tenu bon pendant sept années avant d'être détourné en 2000 par Razoola (un Finlandais) et CrashTest (un Français), ce qui a permis son émulation. Cependant, cette protection n'était pas comprise mais seulement contournée, ce qui demandait l'utilisation de fichiers Xor (ou exclusif). Les fichiers Xor permettaient l'auto-décryptage du système mais n'étaient pas un vrai décryptage. Cela permettait toutefois d'y jouer en émulation.
Fin 2006, une réelle avancée a été faite grâce à Andreas Naive qui est le premier à avoir trouvé l'algorithme de chiffrement du CPS2, Nicola Salmoria (le créateur de MAME) a quant à lui codé le pilote (cps2crypt.cpp) pour l'émulateur MAME.
Dans leur recherche, Nicola et Andreas ont découvert que la protection du CPS2 était basée sur deux réseaux de Feistel et que les clés nécessaires au déchiffrement de chaque jeu étaient de 64 bits. La protection a donc enfin été cassée.
Il est important de préciser que tout ce travail découle d'une chaîne de compétence :
* Razoola & CrashTest pour avoir trouvé une faille et l'avoir exploitée. Sans eux, le système d'arcade serait peut-être toujours inviolable ;
* Charles Mac Donald, qui grâce à ses connaissances en électronique notamment, a permis d'extraire les tables de chiffrement complètes concernant le CPS2 (soit 4 Go de données incompressibles par jeux et qui prenaient la forme de CHD. À noter qu'au départ il s'agissait de table de 8 Go mais Nicola Salmoria trouva un moyen de les réduire de moitiés) à l'aide de son programme rendu public, CPSTool (bien sûr, il faut aussi un câble PC vers CPS2 fait maison) ;
* Andreas Naive et Nicola Salmoria pour avoir réalisé le premier décryptage réel du CPS2.

### Forces et faiblesses

Comme indiqué précédemment, le CPS2 a été créé après le CPS1. Le jeu Mega Man: The Power Battle a été créé sur les deux supports (la version CPS2 est rarissime). D'autre part, Capcom a créé une "console" basée directement sur le CPS1, le CPS Changer. Capcom a également converti le jeu Street Fighter Alpha sur ce système. Ces 2 jeux ont eu une importance cruciale sur le décryptage.
Tout d'abord, l'encodage lui-même :
* Pour éviter toute attaque cryptographique sur du texte connu (comme les noms des personnages de Street Fighter), seul le code à exécuter était chiffré: tout le reste (texte, graphismes, musique) était en clair.
* Pour empêcher qu'on puisse faire des attaques en continu, il y avait un 'watchdog': si une instruction spécifique n'était pas régulièrement exécutée par le processeur, celui-ci se remet à zéro au bout de quelques secondes. Ce code étant chiffré, il était a priori impossible à deviner.
Les erreurs de Capcom :
* Quand la version de SFA pour CPS Changer a été dumpée, Capcom a rendu disponible 2 versions, cryptée (cps2) et non cryptée (cps changer) d'un même jeu - hormis le 'insert coin' remplacé par 'push start' et le son de qualité supérieure. C'est en observant la rom de SFAch que Razoola s'est lancé dans le projet. Les projets précédents de cassage du cps2 n'avaient pas cette information.
* Mega Man: The Power Battle a donc été programmé pour le CPS1 et le CPS2, à une époque où le CPS2 existait déjà. Capcom a donc commis l'erreur de laisser - en clair - le code de watchdog. C'est donc en observant le code de Mega Man: The Power Battle que Razoola a remarqué cette instruction inutile, présente régulièrement dans le code. Il lui est donc venu l'idée d'essayer une multitude de variantes, pour empêcher le processeur du CPS2 de se mettre à zéro. Cette opération de bruteforcing à donc été nécessaire à chaque jeu, avant de pouvoir les analyser (plus de 3 secondes).
Ces instructions de watchdogs sont disponibles dans https://github.com/mamedev/mame/blob/master/src/mame/capcom/cps2.cpp
si beaucoup sont du style
certaines sont bien différentes, ce qui a nécessité un cassage plus long (anecdote : Mars Matrix a pris longtemps à cause de ça, vu que l'instruction n'avait jamais été utilisée auparavant - CT)
D'autre part, même une fois que Charles MacDonald avait son dumpeur USB (capturant toutes les combinaisons de cryptage/décryptage en quelques heures) et qu'Andreas Naive avait identifié l'algorithme, il fallait quand même avoir physiquement accès à la cartouche (y compris, chaque révision, etc. impossible sachant que certaines étaient rares, comme Eco Fighter Jap) pour pouvoir en extraire les clefs de 'decryptage' - il n'y avait en effet pas d'attaque. Heureusement, David Haze Haywood a eu la bonne idée d'essayer de trouver des bouts de codes communs entre chaque jeu - par exemple les bibliothèques graphiques utilisées chez Capcom. Heureusement, ces morceaux de codes se sont retrouvés (sous forme cryptées) présent à l'identique dans chaque jeu, ce qui a permis de forcer les clefs de tous les jeux restants, sans pour autant devoir trouver chaque cartouche.