- Présentation d’un projet open source ayant réalisé la décompilation complète du ROM Nintendo 64 de Duke Nukem: Zero Hour
- Ce dépôt a atteint à 100 % la restauration de l’ensemble du code source du logiciel du jeu original
- Les utilisateurs doivent posséder eux-mêmes le ROM ; une compilation et des tests complets sont possibles via la ROM US ou française d’origine
- Par rapport aux projets de décompilation existants, il se distingue par une compatibilité fonctionnelle parfaite et une prise en charge des outils de débogage
- Ce projet est une ressource très précieuse pour la recherche sur le moteur de jeu, le modding, le portage et l’analyse de moteur
Importance et atouts du projet
- Duke Nukem: Zero Hour est un jeu d’action célèbre, sorti en exclusivité sur la plateforme Nintendo 64
- Ce projet open source a décompilé intégralement l’ensemble du ROM du jeu en C, Python, etc. et l’a reconstruit au niveau du code source
- Contrairement aux autres projets de décompilation sur N64, il garantit une compatibilité parfaite, offrant un build et une exécution normalisés du ROM, un débogage basé sur le code source, ainsi qu’un support multi-versions
- Il offre une excellente valeur documentaire pour l’étude de l’architecture des moteurs de jeu et du savoir-faire du développement de jeux de console des années 1990
- Plusieurs outils d’analyse/décompilation automatisée (asm-differ, mips2c, splat, decomp-permuter, etc.) sont intégrés, maximisant l’efficacité des développeurs
Principales fonctionnalités et architecture
Architecture globale
- Le projet est multilingue, avec des parties en C (plus de 95 %), Python, Roff, C++, Makefile et Shell
- Principaux répertoires :
- .github/workflows : configuration CI et automatisation
- include, libs, src : gestion des sources de jeu, des bibliothèques et des en-têtes
- tools : outils d’analyse, d’extraction et de conversion
- versions : structure de support de plusieurs versions du jeu, dont US/FR
- Il est activement maintenu, avec près de 370 commits
Résumé de la compilation et de l’utilisation
- Environnement basé sur Ubuntu 20.04 et prise en charge de Docker
- Extraction du ROM, comparaison bit à bit, mode NON_MATCHING pris en charge
- ROM française et ROM américaine supportées, avec choix d’options selon les besoins de l’utilisateur
- Compatibilité avec plusieurs OS (WIN/Mac/Linux) via un environnement Docker et l’extension Mutagen
Débogage et outils de développement
- Support du débogage au niveau du code source basé sur gdb et mupen64plus (sous Windows en priorité pour l’instant)
- Intégration avec Visual Studio Code et l’extension Native Debug
- Outils d’automatisation et d’analyse clés :
- asm-differ : comparaison source/cible au niveau assembleur
- decomp-permuter : réagencement de code et notation automatique
- mips2c : conversion de l’assembleur MIPS vers le C
- splat : outil d’analyse de la structure ROM
Cas d’usage
- Potentiel de réutilisation du code pour le reverse engineering de jeux, le portage, l’analyse de moteurs et les projets d’amélioration de jeux classiques
- Très adapté à la conservation historique et à la recherche éducative
- La maintenance et les mises à jour pour différentes plateformes et versions sont menées activement
Conclusion
- Ce projet open source constitue un cas rare de publication complète du code source d’un logiciel de jeu de console classique des années 1990
- Il s’agit d’une ressource précieuse pour les chercheurs en reverse engineering de jeux et de consoles, les développeurs débutants, ainsi que pour les porteurs et créateurs de fan games
1 commentaires
Avis Hacker News