- Apresenta um projeto open source que decompila perfeitamente o ROM do Nintendo 64 de Duke Nukem: Zero Hour
- Este repositório alcançou 100% na tarefa de recuperar todo o código-fonte do software do jogo original
- O usuário precisa possuir a ROM do jogo, e é possível compilar e testar tudo por meio da ROM original dos EUA ou da versão francesa
- Em comparação com projetos de decompilação já existentes, se destaca pela compatibilidade funcional completa e suporte a ferramentas de depuração
- Este projeto é uma fonte extremamente valiosa para pesquisa de engine, modificação, porting e análise de engine de jogos
Relevância e competitividade do projeto
- Duke Nukem: Zero Hour é um famoso jogo de ação lançado exclusivamente na plataforma Nintendo 64
- Este projeto open source recompõe totalmente a ROM completa desse jogo a partir de decompilação em C, Python, entre outras linguagens, reconstruindo tudo em nível de código-fonte
- Diferente de outros projetos de decompilação de N64, ele garante compatibilidade total, oferecendo build e execução normais de ROM, depuração baseada em código-fonte e suporte a múltiplas versões
- Possui valor de referência excepcional para pesquisar a estrutura da engine de jogos e o know-how de desenvolvimento de jogos de console dos anos 1990
- Várias ferramentas automáticas de análise/decompilação (asm-differ, mips2c, splat, decomp-permuter etc.) estão integradas ao projeto, maximizando a eficiência do desenvolvedor
Recursos e estrutura principais
Estrutura geral
- O projeto é composto por múltiplos idiomas, com partes separadas em C (acima de 95%), Python, Roff, C++, Makefile e Shell
- Diretórios principais:
- .github/workflows: configurações de CI e automação
- include, libs, src: gerenciamento de código-fonte e bibliotecas do jogo, cabeçalhos
- tools: ferramentas de análise, extração e conversão
- versions: estrutura de suporte a múltiplas versões do jogo, como US/FR
- O projeto é mantido ativamente, com perto de 370 commits
Resumo de build e uso
- Ambiente baseado em Ubuntu 20.04 com suporte a Docker
- Suporte para extração de ROM, comparação bit a bit e modo NON_MATCHING para não correspondência
- Suporte para ROM da versão francesa e versão americana, com opções configuráveis conforme a necessidade do usuário
- Compatibilidade com vários sistemas operacionais (Windows/Mac/Linux) por meio de ambiente Docker e Mutagen Extension
Ferramentas de depuração e desenvolvimento
- Depuração em nível de código-fonte com base em gdb e mupen64plus (atualmente com foco em Windows)
- Suporte de integração com Visual Studio Code e Native Debug Extension
- Ferramentas centrais de automação e análise:
- asm-differ: comparação de origem e destino em nível de assembly
- decomp-permuter: reajuste de código e pontuação automática
- mips2c: conversão de assembly MIPS para C
- splat: ferramenta de análise da estrutura da ROM
Casos de uso
- Possibilidade de uso do código em engenharia reversa de jogos, porting, análise de engine e projetos de melhoria de jogos clássicos
- Também muito adequado para preservação histórica e pesquisa educacional
- Manutenção e atualizações ativas seguem em andamento para diversas plataformas e versões
Conclusão
- Este projeto open source é um caso raro que realiza a liberação completa do código-fonte de software de jogos clássicos de console dos anos 1990
- Um recurso valioso para pesquisadores de engenharia reversa de jogos e consoles, desenvolvedores iniciantes, e criadores de ports e fan games
1 comentários
Opiniões no Hacker News