Ces dernières années, nous avons fait état de multiples efforts visant à rétro-ingénierie des jeux Nintendo 64 dans Code C entièrement décompilé et lisible par l’homme qui peut alors devenir la base de ports PC à part entière. Bien que les résultats puissent être impressionnants, le processus de décompilation peut prendre des années d’efforts manuels minutieux, ce qui signifie que seuls les jeux N64 les plus populaires sont susceptibles de recevoir l’attention requise de la part des ingénieurs inverseurs.
Désormais, un outil récemment publié promet de réduire considérablement la quantité d’efforts humains nécessaires pour obtenir les ports PC de base de la plupart (sinon la totalité) des jeux N64. Le Projet N64 recompilé utilise un processus appelé recompilation statique pour automatiser d’énormes pans du processus à forte intensité de main-d’œuvre consistant à extraire du code C à partir des binaires N64.
Bien qu’un travail de codage humain soit encore nécessaire pour adoucir les contours, le chef du projet, M. Wiseguy, a déclaré à Ars que son outil de recompilation est « la différence entre des semaines et des années de travail » lorsqu’il s’agit de créer une version PC d’un titre N64 classique. . Et le travail parallèle sur un puissant moteur de rendu graphique N64 signifie que des mises à niveau compatibles PC telles que des fréquences d’images plus fluides, une mise à l’échelle de la résolution et des formats d’écran larges peuvent être ajoutées avec peu d’effort.
L’inspiration frappe
M.-Wiseguy a déclaré à Ars qu’il avait fait ses débuts dans l’espace de codage N64 en travaillant sur divers projets de mods vers 2020. En 2022, il a commencé à contribuer au nouveau projet. Moteur de rendu RT64 projet, né de travailler sur un lancer de rayons Super Mario 64 port dans un effort plus généralisé visant à nettoyer le processus notoirement délicat de recréation précise des graphiques N64. En travaillant sur ce projet, M.-Wiseguy a déclaré qu’il était tombé sur un projet existant qui automatise le démontage des jeux NES et un autre qui émule un vieux compilateur SGI pour aider à la décompilation des titres N64.
« J’ai réalisé qu’il serait très facile de connecter le moteur de rendu RT64 à un jeu s’il pouvait être exécuté via un processus de recompilation statique similaire », a déclaré M.-Wiseguy à Ars. « J’ai donc mis en place une preuve de concept pour exécuter un jeu très simple, puis le projet s’est développé à partir de là jusqu’à pouvoir exécuter certains des jeux les plus complexes. »
Une preuve de concept de base pour l’idée de M. Wiseguy n’a pris que « quelques semaines tout au plus » pour être opérationnelle, a-t-il déclaré, et était prête dès novembre 2022. Depuis lors, des mois de travail intermittent des travaux ont été déployés pour compléter le code de conversion et obtenir une version recompilée de La Légende de Zelda : Le Masque de Majora prêt à être consommé par le public.
Faites confiance au processus
À son niveau le plus élémentaire, l’outil de recompilation N64 prend un binaire de jeu brut (fourni par l’utilisateur) et retraite chaque instruction directement et littéralement dans le code C correspondant. Le jeu d’instructions MIPS du N64 a été assez bien documenté au fil des années de travail d’émulationdonc comprendre comment traduire chaque opcode individuel en son équivalent C n’est pas trop compliqué.
La principale difficulté, a déclaré M. Wiseguy, peut être de savoir où pointer l’outil. « Le contenu du [N64] La ROM peut être disposée comme le développeur l’a choisi, ce qui signifie que vous devez trouver où se trouve le code dans la ROM avant même de pouvoir démarrer le processus de recompilation statique », a-t-il expliqué. Et tandis que les émulateurs N64 gèrent automatiquement les jeux qui se chargent et se déchargent code dans toute la mémoire au moment de l’exécution, la gestion de ces cas dans un binaire précompilé peut ajouter des couches supplémentaires de complexité.