﻿﻿{"id":1909,"date":"2025-12-27T09:20:59","date_gmt":"2025-12-27T08:20:59","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/robocop-arcade-il-a-cracke-la-protection-anti-copie-pour-sauver-les-bornes-darcade-de-1988\/"},"modified":"2025-12-27T09:20:59","modified_gmt":"2025-12-27T08:20:59","slug":"robocop-arcade-il-a-cracke-la-protection-anti-copie-pour-sauver-les-bornes-darcade-de-1988","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/robocop-arcade-il-a-cracke-la-protection-anti-copie-pour-sauver-les-bornes-darcade-de-1988\/","title":{"rendered":"RoboCop Arcade &#8211; Il a crack\u00e9 la protection anti-copie pour sauver les bornes d&#8217;arcade de 1988"},"content":{"rendered":"<p>\u00c0 l&#8217;\u00e9poque de ma glorieuse jeunesse, je jouais \u00e0 RoboCop sur NES et c&#8217;est vrai que je trouvais \u00e7a tr\u00e8s cool ! Mais ce que je ne savais pas, c&#8217;est que la version arcade de Data East cachait un secret bien vicieux dans ses entrailles \u00e9lectroniques.<\/p>\n<p>En 1988, Data East sort donc RoboCop en version arcade et comme tous les \u00e9diteurs de l&#8217;\u00e9poque, ils avaient une peur bleue des bootleggers asiatiques qui clonaient les bornes \u00e0 tour de bras. Du coup, ils ont eu une id\u00e9e de g\u00e9nie : <strong>planquer une puce HuC6280 dans le hardware<\/strong>. Pour ceux qui ne connaissent pas, c&#8217;est le processeur du PC Engine, le cousin japonais de la TurboGrafx-16, sauf que l\u00e0, elle ne sert absolument pas \u00e0 faire tourner le jeu.<\/p>\n<p>Non non, cette puce est l\u00e0 uniquement pour emmerder le monde.<\/p>\n<p>Le truc pas con (enfin, pas con pour l&#8217;\u00e9poque), c&#8217;est que Data East a externalis\u00e9 une partie des calculs de collision sur ce processeur secondaire. Du coup, sans la puce HuC6280, le jeu d\u00e9marre mais les hitboxes sont compl\u00e8tement p\u00e9t\u00e9es et les ennemis deviennent invincibles. Faut s&#8217;imaginer RoboCop qui tire dans le vide pendant que les m\u00e9chants lui marchent dessus tranquillement&#8230; C&#8217;est pas m\u00e9ga vendeur pour une borne \u00e0 3000 dollars.<\/p>\n<p>Le probl\u00e8me, c&#8217;est qu&#8217;en 2025, ces puces HuC6280 commencent \u00e0 l\u00e2cher et quand \u00e7a arrive, votre borne RoboCop devient un tr\u00e8s joli meuble de 150 kilos.<\/p>\n<p>Et c&#8217;est l\u00e0 qu&#8217;un d\u00e9veloppeur du nom de djh0ffman entre en sc\u00e8ne. Le bougre s&#8217;est dit qu&#8217;au lieu de chercher des puces de remplacement introuvables, il allait tout simplement virer cette protection. Mais pour \u00e7a, il fallait d&#8217;abord comprendre ce que faisait exactement cette fichue puce.<\/p>\n<div class=\"youtube-container\">\n<div>\n<p>D\u00e9j\u00e0, il fallait dumper le code du HuC6280. Pas si simple parce que Data East avait aussi obfusqu\u00e9 les tables de jump pour que personne ne puisse facilement lire le code. Du reverse engineering dans le reverse engineering, en quelque sorte.<\/p>\n<p>Une fois le code extrait et d\u00e9sobfusqu\u00e9, djh0ffman a alors d\u00e9couvert que la puce g\u00e9rait principalement deux choses : les collisions entre les sprites et la gestion des d\u00e9g\u00e2ts. Le reste du jeu tournant sur le processeur principal, un Motorola 68000.<\/p>\n<p>Du coup, la solution \u00e9tait claire. Il fallait porter tout ce code du HuC6280 vers le 68000. Facile \u00e0 dire bien s\u00fbr, mais moins facile \u00e0 faire quand on parle de deux architectures compl\u00e8tement diff\u00e9rentes. Le HuC6280 est certes un d\u00e9riv\u00e9 du 6502, mais le 68000 c&#8217;est carr\u00e9ment une autre plan\u00e8te.<\/p>\n<p>Mais apr\u00e8s des heures de travail, djh0ffman a r\u00e9ussi \u00e0 recr\u00e9er toutes les routines de collision en assembleur 68000 et \u00e0 les injecter dans la ROM originale. Le patch fait environ 2 Ko !! Et \u00e7a transforme n&#8217;importe quelle borne RoboCop avec une puce morte en machine parfaitement fonctionnelle.<\/p>\n<div class=\"youtube-container\">\n<div>\n<p>Et le truc cool, c&#8217;est que son patch ne contourne pas vraiment la protection, mais la remplace. Le jeu fonctionne donc exactement comme l&#8217;original, avec les m\u00eames collisions, les m\u00eames d\u00e9g\u00e2ts, les m\u00eames hitboxes. C&#8217;est juste que maintenant, tout \u00e7a tourne sur le 68000 au lieu du HuC6280.<\/p>\n<p>Et le plus marrant c&#8217;est que cette protection \u00e9tait consid\u00e9r\u00e9e comme inviolable \u00e0 l&#8217;\u00e9poque. En effet, les bootleggers n&#8217;avaient jamais r\u00e9ussi \u00e0 la craquer proprement, alors ils vendaient des copies avec des collisions approximatives bidouill\u00e9es \u00e0 l&#8217;arrache. C&#8217;est fou ^^ Il peut flex le gar\u00e7on !<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/robocop-arcade-reverse-engineering-protection-huc6\/robocop-arcade-reverse-engineering-protection-huc6-2.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Bref, si vous avez une borne RoboCop arcade qui prend la poussi\u00e8re parce que la puce de protection a rendu l&#8217;\u00e2me, y&#8217;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\u00e9es 80,<br \/>\n<a href=\"https:\/\/hoffman.home.blog\/2025\/12\/26\/robocop-breaking-the-law\/\">le write-up de djh0ffman<\/a><br \/>\nest une mine d&#8217;or.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u00c0 l&#8217;\u00e9poque de ma glorieuse jeunesse, je jouais \u00e0 RoboCop sur NES et c&#8217;est vrai que je trouvais \u00e7a tr\u00e8s cool ! Mais ce que je ne savais pas, c&#8217;est que la version arcade de Data East cachait un secret bien vicieux dans ses entrailles \u00e9lectroniques. En 1988, Data East sort donc RoboCop en version arcade et comme tous les \u00e9diteurs de l&#8217;\u00e9poque, ils avaient une peur bleue des bootleggers asiatiques qui clonaient les bornes \u00e0 tour de bras. Du coup, ils ont eu une id\u00e9e de g\u00e9nie : planquer une puce HuC6280 dans le hardware. Pour ceux qui ne connaissent pas, c&#8217;est le processeur du PC Engine, le cousin japonais de la TurboGrafx-16, sauf que l\u00e0, elle ne sert absolument pas \u00e0 faire tourner le jeu. Non non, cette puce est l\u00e0 uniquement pour emmerder le monde. Le truc pas con (enfin, pas con pour l&#8217;\u00e9poque), c&#8217;est que Data East a externalis\u00e9 une partie des calculs de collision sur ce processeur secondaire. Du coup, sans la puce HuC6280, le jeu d\u00e9marre mais les hitboxes sont compl\u00e8tement p\u00e9t\u00e9es et les ennemis deviennent invincibles. Faut s&#8217;imaginer RoboCop qui tire dans le vide pendant que les m\u00e9chants lui marchent dessus tranquillement&#8230; C&#8217;est pas m\u00e9ga vendeur pour une borne \u00e0 3000 dollars. Le probl\u00e8me, c&#8217;est qu&#8217;en 2025, ces puces HuC6280 commencent \u00e0 l\u00e2cher et quand \u00e7a arrive, votre borne RoboCop devient un tr\u00e8s joli meuble de 150 kilos. Et c&#8217;est l\u00e0 qu&#8217;un d\u00e9veloppeur du nom de djh0ffman entre en sc\u00e8ne. Le bougre s&#8217;est dit qu&#8217;au lieu de chercher des puces de remplacement introuvables, il allait tout simplement virer cette protection. Mais pour \u00e7a, il fallait d&#8217;abord comprendre ce que faisait exactement cette fichue puce. D\u00e9j\u00e0, il fallait dumper le code du HuC6280. Pas si simple parce que Data East avait aussi obfusqu\u00e9 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\u00e9sobfusqu\u00e9, djh0ffman a alors d\u00e9couvert que la puce g\u00e9rait principalement deux choses : les collisions entre les sprites et la gestion des d\u00e9g\u00e2ts. Le reste du jeu tournant sur le processeur principal, un Motorola 68000. Du coup, la solution \u00e9tait claire. Il fallait porter tout ce code du HuC6280 vers le 68000. Facile \u00e0 dire bien s\u00fbr, mais moins facile \u00e0 faire quand on parle de deux architectures compl\u00e8tement diff\u00e9rentes. Le HuC6280 est certes un d\u00e9riv\u00e9 du 6502, mais le 68000 c&#8217;est carr\u00e9ment une autre plan\u00e8te. Mais apr\u00e8s des heures de travail, djh0ffman a r\u00e9ussi \u00e0 recr\u00e9er toutes les routines de collision en assembleur 68000 et \u00e0 les injecter dans la ROM originale. Le patch fait environ 2 Ko !! Et \u00e7a transforme n&#8217;importe quelle borne RoboCop avec une puce morte en machine parfaitement fonctionnelle. Et le truc cool, c&#8217;est que son patch ne contourne pas vraiment la protection, mais la remplace. Le jeu fonctionne donc exactement comme l&#8217;original, avec les m\u00eames collisions, les m\u00eames d\u00e9g\u00e2ts, les m\u00eames hitboxes. C&#8217;est juste que maintenant, tout \u00e7a tourne sur le 68000 au lieu du HuC6280. Et le plus marrant c&#8217;est que cette protection \u00e9tait consid\u00e9r\u00e9e comme inviolable \u00e0 l&#8217;\u00e9poque. En effet, les bootleggers n&#8217;avaient jamais r\u00e9ussi \u00e0 la craquer proprement, alors ils vendaient des copies avec des collisions approximatives bidouill\u00e9es \u00e0 l&#8217;arrache. C&#8217;est fou ^^ Il peut flex le gar\u00e7on ! Bref, si vous avez une borne RoboCop arcade qui prend la poussi\u00e8re parce que la puce de protection a rendu l&#8217;\u00e2me, y&#8217;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\u00e9es 80, le write-up de djh0ffman est une mine d&#8217;or.<\/p>\n","protected":false},"author":1,"featured_media":1910,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-1909","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1909","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=1909"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1909\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/1910"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}