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[modifier | modifier le code]

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[1].

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[2]. 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[3].

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[4],[5].

Nationalité des jeux[modifier | modifier le code]

Compatibilité entre jeu et carte mère CPS2
Carte mère

Cartouche
USA / Europe
Bleue
Japon
Vert
Asie
Gris
Amérique du Sud
Orange
Brésil
Rose
Location
Jaune
USA / Europe
Bleu
X X - - - X
Japon
Vert
X X - - - X
Asie
Gris
- - X - - -
Amérique du Sud
Orange
- - - X - -
Brésil
Rose
- - - - X -
Location
Jaune
X X - - - X

Les A-Board (cartes-mères) et les B-Board (jeux) ont des couleurs différentes selon leurs zones d'origine.

  • Bleu : États-Unis, Canada et Europe
  • Vert : Japon
  • Gris : Asie
  • Orange : Amérique du Sud
  • Rose : Brésil
  • Jaune : « Region 0 » (destiné à la location)
  • Noir : « 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[modifier | modifier le code]

Processeur principal[modifier | modifier le code]

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

Audio[modifier | modifier le code]

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

Affichage[modifier | modifier le code]

  • 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[modifier | modifier le code]

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[modifier | modifier le code]

CPS Suicide[modifier | modifier le code]

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[6].

Le , 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[7],[8]. Tout comme avec la protection Kabuki sur le CPS1, le projet d'ArcadeHacker[9] 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[modifier | modifier le code]

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[10] :

  • 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[modifier | modifier le code]

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/drivers/cps2.cpp

si beaucoup sont du style

cmpi.l  #$<date de naissance>,D1

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.

Références[modifier | modifier le code]

Annexes[modifier | modifier le code]

Article connexe[modifier | modifier le code]

Lien externe[modifier | modifier le code]