GoldenEye 007 acabou de alcançar 100% de decompilação, e isso muda o que as pessoas podem fazer com o jogo: modificações que eram impossíveis em um emulador, portas de PC nativas com suporte adequado a tela panorâmica e desbloqueios de taxa de quadros, e implementações de referência para futuros projetos de engenharia reversa do N64. As ferramentas que tornaram isso possível são de código aberto, e se você alguma vez desejou ver dentro de um jogo N64, usaria as mesmas.
Revisamos 8 aplicações de desktop que tornam possíveis os fluxos de trabalho de decompilação e portabilidade do N64 hoje. Cada escolha é gratuita, de código aberto e ativamente mantida no GitHub.
O que procurar em um aplicativo de decompilação N64
A engenharia reversa do N64 é incomum porque o console se destina ao MIPS III, e os compiladores da época (IDO, EGCS) deixaram impressões digitais específicas. As ferramentas modernas levam isso em conta.
- Suporte MIPS III. Disassembladores x86 ou ARM sozinhos não são suficientes.
- Trata idiomas de compilador conhecidos. IDO e EGCS produzem uma saída característica que a ferramenta precisa reconhecer.
- Gerenciamento de símbolos e divisão. Um projeto de trabalho requer extração de ativos, não apenas decompilação de código.
- Pipeline de teste de correspondência. Cada função requer uma verificação de correspondência byte a byte contra a ROM.
- Comunidade ao redor da ferramenta. A decompilação N64 é pequena o suficiente para que uma ferramenta de único mantenedor ficar obsoleta importe.
Tabela de comparação rápida
| Aplicação | Melhor para | Plataformas | Plano gratuito | Preço de início/mês | Classificação |
|---|---|---|---|---|---|
| N64Recomp | Recompilação estática para binário nativo | Windows, Linux, macOS | Totalmente gratuito | Gratuito | Comunidade em rápido crescimento |
| splat | Divisão binária e extração de ativos | Windows, Linux, macOS | Totalmente gratuito | Gratuito | Padrão em decompilações N64 modernas |
| decomp.me | Playground de teste de correspondência baseado em web | Web | Totalmente gratuito | Gratuito | Plataforma comunitária amplamente usada |
| mips_to_c | Conversão de assembly para C | Windows, Linux, macOS | Totalmente gratuito | Gratuito | Ferramenta de decompilação de longa data |
| IDO recomp | Recompilação do compilador IDO original | Windows, Linux, macOS | Totalmente gratuito | Gratuito | Permite fluxos de trabalho orientados ao primeiro match |
| ares | Emulador N64 preciso em ciclos para testes | Windows, macOS, Linux | Totalmente gratuito | Gratuito | Emulador de alta precisão |
| GloverN64 | Projeto de referência de porta N64 | Windows, macOS, Linux | Totalmente gratuito | Gratuito | Projeto comunitário |
| PermuterPy | Busca de correspondência automatizada via mutação | Windows, Linux, macOS | Totalmente gratuito | Gratuito | Padrão em decompilações modernas |
Os aplicativos
1. N64Recomp – Melhor para recompilação estática para binário nativo
N64Recomp pega o código MIPS de uma ROM N64 e o reescreve em LLVM IR, que então compila para um binário x86 ou ARM nativo. Isso é o que permite que projetos como Zelda 64 Recompiled e a porta recente do GoldenEye rodem a centenas de frames por segundo com renderização de alta resolução, sem necessidade de emulador.
Onde é fraco: Requer um jogo totalmente decompilado para produzir uma porta bem integrada. Recompilação ROM-em-saída direta funciona para muitos jogos, mas não todos.
Preço:
- Gratuito: Tudo
- Pago: Não se aplica
Plataformas: Windows, Linux, macOS
Baixar: GitHub
Conclusão: A ferramenta responsável pela onda atual de portas N64 nativas.
2. splat – Melhor para divisão binária e extração de ativos
splat pega uma ROM N64 e produz o layout estruturado do projeto que toda decompilação moderna usa: arquivos de assembly divididos por símbolo, ativos extraídos (texturas, música, dados de nível) e um sistema de construção que monta tudo de volta em uma ROM correspondente. Todo projeto sério de decompilação N64 começa aqui.
Onde é fraco: Requer configuração por jogo; espere gastar a primeira semana criando o arquivo de divisão.
Preço:
- Gratuito: Tudo
- Pago: Não se aplica
Plataformas: Windows, Linux, macOS (Python)
Baixar: GitHub
Conclusão: A primeira ferramenta que você instala ao iniciar um projeto de decompilação N64.
3. decomp.me – Melhor para testar uma correspondência de função C candidata
decomp.me é um IDE baseado em web para teste de correspondência de decompilação. Cole em uma função de assembly alvo, escreva C candidato, pressione compilar e veja instantaneamente se o compilador produz saída idêntica de byte. Ele suporta alvos N64, GameCube, PS2 e DS, e o fluxo de trabalho de bloco de notas compartilhado torna a colaboração indolor.
Onde é fraco: Apenas web; sem modo offline. Taxa limitada sob carga pesada.
Preço:
- Gratuito: Tudo
- Pago: Não se aplica
Plataformas: Web (baseado em navegador)
Baixar: Site oficial · GitHub
Conclusão: A ferramenta mais usada por colaboradores ativos de decompilação N64.
4. mips_to_c – Melhor para converter assembly MIPS em rascunho C
mips_to_c produz um rascunho C legível de uma função MIPS. Não é um gerador de correspondência; a saída é um ponto de partida que você edita e refina até que decomp.me reporte uma correspondência. Economiza horas por função na primeira passagem.
Onde é fraco: A saída é um rascunho. Compilação direta quase nunca corresponde sem edição humana.
Preço:
- Gratuito: Tudo
- Pago: Não se aplica
Plataformas: Windows, Linux, macOS (Python)
Baixar: GitHub
Conclusão: Reduz o tempo de primeira passagem em qualquer função que seja mais que trivial.
5. IDO recomp – Melhor para reproduzir o compilador N64 original
IDO recomp é uma recompilação estática do compilador IDO da SGI, aquele que a Nintendo usou para a maioria de seus títulos N64 de primeira parte. Executar o compilador original em sistemas operacionais modernos é o que torna a correspondência perfeita de bytes possível; sem ele, o decompilador apenas produziria aproximações do original.
Onde é fraco: Apenas útil se o jogo alvo foi compilado com IDO. Jogos GCC/EGCS (saída da Rare, incluindo GoldenEye) precisam de diferentes compilações de compilador.
Preço:
- Gratuito: Tudo
- Pago: Não se aplica
Plataformas: Windows, Linux, macOS
Baixar: GitHub
Conclusão: Não é um decompilador em si, mas a peça que torna a decompilação determinística.
6. ares – Melhor para verificação N64 precisa em ciclos
ares é um emulador multissistema com emulação N64 precisa em ciclos. Para trabalho de decompilação, essa precisão importa: quando uma reconstrução candidata produz uma ROM que roda no ares identicamente ao original, você tem confiança real na correspondência.
Onde é fraco: Requisitos de CPU mais altos que emuladores casuais como Project64. Não é a escolha para gameplay puro.
Preço:
- Gratuito: Tudo
- Pago: Não se aplica
Plataformas: Windows, macOS, Linux
Baixar: Site oficial · GitHub
Conclusão: O emulador de qualidade de verificação para testar reconstruções.
7. GloverN64 – Melhor projeto de exemplo para aprender
GloverN64 é um da crescente biblioteca de projetos de decompilação N64 orientados pela comunidade, e seu repositório é suficientemente bem organizado para servir como referência de como splat, mips_to_c e IDO recomp se encaixam juntos em um build real. Ler o arquivo de divisão de outra pessoa é a forma mais rápida de entender o seu.
Onde é fraco: Em progresso; nem toda função está decompilada.
Preço:
- Gratuito: Tudo
- Pago: Não se aplica
Plataformas: Windows, macOS, Linux
Baixar: GitHub
Conclusão: A melhor referência para um iniciante configurando um primeiro projeto de decompilação N64.
8. PermuterPy – Melhor para automatizar a busca de correspondência
PermuterPy muta código C candidato e recompila milhares de vezes para encontrar variantes que produzem saída idêntica de byte. Quando decomp.me diz “perto mas sem correspondência”, PermuterPy é o que encontra a ordem exata da declaração ou parênteses que o compilador quer.
Onde é fraco: Computacionalmente caro; um run de permutador pode consumir o CPU de um laptop por horas.
Preço:
- Gratuito: Tudo
- Pago: Não se aplica
Plataformas: Windows, Linux, macOS (Python)
Baixar: GitHub
Conclusão: A ferramenta de último recurso em uma função teimosa, e a razão pela qual os percentuais de conclusão continuam aumentando.
Como escolher a correta
- Se o objetivo é uma porta PC nativa de uma ROM existente: N64Recomp.
- Se você está iniciando um novo projeto de decompilação: splat, depois IDO recomp (ou o compilador apropriado), depois decomp.me e mips_to_c para trabalho diário.
- Se você está tentando corresponder a uma única função: decomp.me para iteração, PermuterPy quando uma correspondência está próxima.
- Se você precisa verificar que uma reconstrução corresponde perfeitamente a um N64 real: ares para verificação em tempo de execução.
- Se você está aprendendo o pipeline do zero: leia o repo da GloverN64 antes de tocar em seu próprio arquivo de divisão.
- Não pule splat. Editar manualmente um despejo de assembly monolítico é uma batalha perdida em escala N64.
Perguntas frequentes
O que significa um jogo estar “100% decompilado”? Cada função no binário do jogo foi reescrita em C de modo que a saída recompilada corresponda à ROM original byte a byte. A partir daí, a base de código pode ser modificada livremente.
É legal decompilador uma ROM N64? A engenharia reversa para interoperabilidade é geralmente protegida em muitas jurisdições. Distribuir o binário resultante (que ainda contém os ativos do jogo original) geralmente não é. O tratamento legal varia por país; os projetos de decompilação geralmente enviam apenas código, esperando que o usuário forneça sua própria ROM.
Quanto tempo leva um projeto de decompilação N64? Esforços de vários anos por equipes de voluntários. Zelda: Ocarina of Time levou anos; o projeto GoldenEye 007 durou cerca de seis anos.
O que é decomp.me e por que é tão central? decomp.me é um IDE web que compila código C candidato e relata se a saída corresponde exatamente a uma função de assembly alvo. Substituiu muitos scripts bash ad-hoc e tornou a colaboração em testes de correspondência fácil.
Posso executar o jogo decompilado no meu PC sem um emulador? Sim, uma vez que uma decompilação é concluída e uma porta é construída com N64Recomp ou uma estrutura similar. Zelda 64 Recompiled e a porta GoldenEye são os exemplos atuais.
Preciso saber assembly MIPS para contribuir? Ajuda enormemente. mips_to_c e decomp.me reduzem a barra, mas até mesmo uma compreensão básica de convenções de registro e padrões de chamada é necessária para fazer progresso em uma função real.