RoboCop Arcade - Il a cracké la protection anti-copie pour sauver les bornes d'arcade de 1988
À l'époque de ma glorieuse jeunesse, je jouais à RoboCop sur NES et c'est vrai que je trouvais ça très cool ! Mais ce que je ne savais pas, c'est que la version arcade de Data East cachait un secret bien vicieux dans ses entrailles électroniques.
En 1988, Data East sort donc RoboCop en versio arcade et comme tous les éditeurs de l'époque, ils avaient une peur bleue des bootleggers asiatiques qui clonaient les bornes à tour de bras. Du coup, ils ont eu une idée de génie : planquer une puce HuC6280 dans le hardware. Pour ceux qui ne connaissent pas, c'est le processeur du PC Engine, le cousin japonais de la TurboGrafx-16, sauf que là, elle ne sert absolument pas à faire tourner le jeu.
Non non, cette puce est là uniquement pour emmerder le monde.
Le truc pas con (enfin, pas con pour l'époque), c'est que Data East a externalisé une partie des calculs de collision sur ce processeur secondaire. Du coup, sans la puce HuC6280, le jeu démarre mais les hitboxes sont complètement pétées et les ennemis deviennent invincibles. Faut s'imaginer RoboCop qui tire dans le vide pendant que les méchants lui marchent dessus tranquillement... C'est pas méga vendeur pour une borne à 3000 dollars.
Le problème, c'est qu'en 2025, ces puces HuC6280 commencent à lâcher et quand ça arrive, votre borne RoboCop devient un très joli meuble de 150 kilos.
Et c'est là qu'un développeur du nom de djh0ffman entre en scène. Le bougre s'est dit qu'au lieu de chercher des puces de remplacement introuvables, il allait tout simplement virer cette protection. Mais pour ça, il fallait d'abord comprendre ce que faisait exactement cette fichue puce.
Déjà, il fallait dumper le code du HuC6280. Pas si simple parce que Data East avait aussi obfusqué les tables de jump pour que personne ne puisse facilement lire le code. Du reverse engineering dans le reverse engineering, en quelque sorte.
Une fois le code extrait et désobfusqué, djh0ffman a alors découvert que la puce gérait principalement deux choses : les collisions entre les sprites et la gestion des dégâts. Le reste du jeu tournant sur le processeur principal, un Motorola 68000.
Du coup, la solution était claire. Il fallait porter tout ce code du HuC6280 vers le 68000. Facile à dire bien sûr, mais moins facile à faire quand on parle de deux architectures complètement différentes. Le HuC6280 est certes un dérivé du 6502, mais le 68000 c'est carrément une autre planète.
Mais après des heures de travail, djh0ffman a réussi à recréer toutes les routines de collision en assembleur 68000 et à les injecter dans la ROM originale. Le patch fait environ 2 Ko !! Et ça transforme n'importe quelle borne RoboCop avec une puce morte en machine parfaitement fonctionnelle.
Et le truc cool, c'est que son patch ne contourne pas vraiment la protection, mais la remplace. Le jeu fonctionne donc exactement comme l'original, avec les mêmes collisions, les mêmes dégâts, les mêmes hitboxes. C'est juste que maintenant, tout ça tourne sur le 68000 au lieu du HuC6280.
Et le plus marrant c'est que cette protection était considérée comme inviolable à l'époque. En effet, les bootleggers n'avaient jamais réussi à la craquer proprement, alors ils vendaient des copies avec des collisions approximatives bidouillées à l'arrache. C'est fou ^^ Il peut flex le garçon !
Bref, si vous avez une borne RoboCop arcade qui prend la poussière parce que la puce de protection a rendu l'âme, y'a maintenant un patch IPS disponible qui lui redonne vie. Et pour les curieux qui veulent comprendre comment fonctionnaient ces protections anti-copie des années 80, le write-up de djh0ffman est une mine d'or.



















