- Presenta un proyecto de código abierto que descompila completamente el ROM de Nintendo 64 de Duke Nukem: Zero Hour
- Este repositorio logró al 100% recuperar todo el código fuente del software original del juego
- El usuario debe poseer la ROM del juego, y mediante una ROM original de EE. UU. o de Francia se pueden realizar compilaciones y pruebas completas
- En comparación con los proyectos de descompilación existentes, destaca por su compatibilidad funcional completa y soporte de herramientas de depuración
- Este proyecto es un recurso muy valioso para la investigación del motor de juego, modding, portado y análisis del motor
Significado y ventaja competitiva del proyecto
- Duke Nukem: Zero Hour es un juego de acción muy conocido lanzado en exclusividad para la plataforma Nintendo 64
- Este proyecto de código abierto reconstruye completamente el ROM de ese juego mediante descompilación en C, Python y otros lenguajes, a nivel de código fuente
- A diferencia de otros proyectos de descompilación de N64, alcanza compatibilidad total, permitiendo compilar y ejecutar correctamente el ROM, depuración basada en código fuente y soporte para múltiples versiones
- Posee un alto valor como material para investigar la arquitectura de motores de juego y el know-how del desarrollo de videojuegos de consola de los años 90
- Varias herramientas automáticas de análisis/descompilación (asm-differ, mips2c, splat, decomp-permuter, etc.) se integran en el proyecto para maximizar la eficiencia del desarrollador
Principales funciones y estructura
Estructura general
- El proyecto está conformado por varios lenguajes y separa sus partes en C (más del 95 %), Python, Roff, C++, Makefile y Shell
- Directorios principales:
- .github/workflows: configuración de CI y automatización
- include, libs, src: gestión de código fuente y librerías del juego, administración de headers
- tools: herramientas de análisis, extracción y conversión
- versions: estructura para soportar simultáneamente múltiples versiones del juego, como US/FR
- Mantiene un mantenimiento activo con alrededor de 370 commits
Resumen de compilación y uso
- Soporte de entorno basado en Ubuntu 20.04 y Docker
- Extracción del ROM, comparación bit a bit y soporte de modo NON_MATCHING
- Soporta tanto la ROM en versión francesa como la de EE. UU., con opciones configurables según la necesidad del usuario
- Uso de Docker y la extensión Mutagen para brindar compatibilidad entre varios sistemas operativos (WIN/Mac/Linux)
Depuración y herramientas de desarrollo
- Soporte de depuración a nivel de código fuente basado en gdb y mupen64plus (actualmente con prioridad en Windows)
- Integración con Visual Studio Code y la extensión Native Debug
- Herramientas clave de automatización y análisis:
- asm-differ: comparación de objetivo/fuente a nivel de ensamblador
- decomp-permuter: reacomodo del código y puntuación automática
- mips2c: conversión de ensamblador MIPS a C
- splat: herramienta de análisis de estructura de ROM
Casos de uso
- Posibilidad de aprovechar el código en proyectos de ingeniería inversa de videojuegos, portados, análisis de motores y mejoras de juegos clásicos
- Muy adecuado también para fines de preservación histórica e investigación educativa
- El mantenimiento y la actualización están activos para distintas plataformas y versiones
Conclusión
- Este proyecto de código abierto es un caso poco común de divulgación completa del código fuente del software de videojuegos clásicos de consola de los años 90
- Es un recurso valioso para investigadores de ingeniería inversa de juegos y consolas, desarrolladores noveles, y creadores de ports y fan games
1 comentarios
Opiniones en Hacker News