Forum Conception

Pokémon Spaceworld & Reverse Engineering

Posté à 11h24 le 16/03/19

En mai 2018 nous avons pu découvrir une version beta de Pokémon version Or du Spaceworld de 1997. Elle contenait des Pokémon qui ont été re-designé, enlevé du jeu ou retardé pour les versions suivantes. Elle a été transmise par un donateur anonyme à une team d'ingénierie inversée.
Je vais revenir dans ce topic sur tout le processus qui permet de récupérer des données d’un jeu en essayant d’expliquer ce que sont les ROM, les émulateur et l’ingénierie inversée.
Ce ne sera pas trop explicatif mais plus une ouverture vers d’autre sources pour les curieux.

Vous avez forcément déjà jouer à un ancien jeu sur un émulateur avec une ROM. Mais qu’est-ce qu’une ROM et comment fonctionne un émulateur ?
Une ROM (Read Only Memory) est une mémoire qui ne s'efface pas d’un appareil, même si celui ci n’est pas alimenté. Ce sont toutes les données qui sont fixées par le constructeur et qui ne pas voué à être modifier par l’utilisateur. Dans le cas d’un jeu ce sont toutes les données qui sont sur la cartouche avant son utilisation.
Les cartouches de jeu sont conçus comme une extension de la console qui va être lu au branchement, au contact entre la carte et le lecteur. La console va alors interpréter le code de la cartouche pour exécuter le jeu.
Un fichier ROM qui sera lu par un émulateur est en partie une copie de cette mémoire. L’émulateur de son coté est une virtualisation de la partie matériel de la console pour imiter au mieux son comportement pour l’exécution des jeux. Les jeux sont écrit en assembleur, un langage bas niveau. La console va interpréter ces commandes pour exécuter le jeu.
Les fichier ROM sont récupérable d’une cartouche à l’aide d’un boîtier dédié.

Comment programmer sur Gameboy

L’équipe PRET (Pokémon Reverse Engineering Team) ont mené quelques initiatives pour comprendre aux mieux les jeux voir même trouver des secrets cachés. Ce sont un peu des archéologues du code. Ils ont rassemblé dans ce dépôt plusieurs outils leur permettant de décompiler ou analyser les jeux.

L’ingénierie inversée est un ensemble de procédé permettant de comprendre un objet en étudiant son origine. Dans le cas d’un logiciel compilé le but est de parvenir à aboutir au plus près du code source. Pour passer d’un binaire incompréhensible à la lecture vers un langage lisible par une personne.
how does decompiling work

Ils ont pu donc trouver des sprites de Pokémon inutilisés ou changés.



Si tout cela vous intéresse je vous conseille de visiter les pages Twitter et GitHub des team de d’ingénierie inversé qui ont travaillé sur ce projet.

Autres liens :
How Hackers Are Preserving Gaming History

List of Pokémon disassembly projects