- Uma análise de engenharia reversa do sistema de pouso no porta-aviões de Top Gun para NES revela as condições exatas para validar o pouso
- Para pousar com sucesso, é necessário altitude entre 100 e 299, velocidade entre 238 e 337 e mirar exatamente à frente do porta-aviões
- A indicação “Alt. 200 / Speed 288” no MFD do jogo na verdade apresenta os valores centrais da faixa permitida
- Velocidade e altitude são armazenadas na memória em BCD (decimal codificado em binário), e a função de validação é executada em endereços específicos
- Um caso de decodificação da lógica interna precisa de um jogo antigo, útil para análise e aprendizado de depuração de jogos retrô
Condições básicas da validação de pouso
- Para pousar com sucesso, é necessário altitude entre 100 e 299, velocidade entre 238 e 337 e direção exata em relação ao porta-aviões
- Essas três condições são verificadas todas no momento em que a sequência de pouso termina
- A indicação “Alt. 200 / Speed 288” na tela do jogo corresponde ao valor central da faixa realmente permitida, sendo um bom alvo para o jogador
- A altitude e a velocidade são ajustadas com entrada de throttle e ângulo de pitch, enquanto a direção não tem indicador separado e só recebe feedback pelo alerta “Right! Right!”
Estrutura de memória e variáveis internas
- Principais endereços de memória e conteúdos armazenados
- $40–$41: velocidade (formato BSD), faixa permitida de 238 a 337
- $3D–$3E: altitude (formato BSD), faixa permitida de 100 a 299
- $FD: direção (Heading), dentro da faixa de -32 ~ +32, valores de 0 a 7 permitem pouso
- $9E: armazena o resultado da validação de pouso; valor 0 significa sucesso
- Velocidade e altitude são armazenadas em BCD(Binary Coded Decimal) para simplificar a exibição na tela
- Ex.: 1234 é armazenado na forma 0x1234 (decimal 4660)
Rotina de validação de pouso
- A função no endereço $B6EA verifica o estado de pouso e grava o resultado em $9E
- A rotina compara altitude, velocidade e direção em sequência e, se alguma condição sair da faixa, retorna códigos diferentes
- Ex.: se estiver alto ou rápido demais, retorna código 8; se estiver baixo ou lento demais, retorna código 4
- Se todas as condições forem atendidas, define LDX #00 e trata como sucesso
Depuração e código de cheat
- Com o código Game Genie AEPETA, o pouso sempre é considerado bem-sucedido
- Esse código ignora a rotina real de validação e força o registro do resultado como sucesso
Conclusão
- O sistema de pouso em Top Gun de NES não é apenas uma mecânica simples, mas uma lógica de validação precisa baseada em valores numéricos
- A engenharia reversa permite confirmar com clareza a estrutura interna de memória e o modo de ramificação de condições em jogos retrô
- É um exemplo que mostra a precisão de projeto dos jogos clássicos e tem alto valor como referência para análise de lógica de jogo e pesquisa de restauração
1 comentários
Comentários do Hacker News
As informações para pousar o avião corretamente estavam todas no manual
A velocidade e a altitude necessárias não eram segredo, mas a maioria das crianças não lia o manual
A verdadeira dificuldade do jogo vinha do motor de física meio realista. Meu irmão mais velho, que fazia escola de aviação, pousou com facilidade e depois me ensinou como fazer
A velocidade e a altitude tinham que ser controladas com o throttle e o ângulo de pitch, então não adiantava simplesmente apertar o botão do motor ou do airbrake
A dica que ele me deu foi que, durante um mergulho acentuado, a velocidade não diminui, então era preciso levantar um pouco o nariz e abrir o airbrake para reduzir a velocidade, depois nivelar a aeronave. O jogo modelava isso com bastante precisão
Este blog está difícil de navegar como arquivo
Não há links para outros textos, e fora deste post o acesso parece bloqueado
blag/posts e blag retornam erro 403, e a página raiz tem só uma foto de montanha
Também não há feed RSS. Não é uma reclamação; se for um design intencional, respeito
Pousar no porta-aviões não era tão difícil, mas o reabastecimento em voo era realmente complicado. Só consegui algumas vezes
Vídeo do jogo
Essa fala icônica me vem à cabeça: “This business will get out of control…”
Este jogo também apareceu em um vídeo do Angry Video Game Nerd
Vídeo relacionado
Link do YouTube
Eu não joguei Top Gun, mas curtia muito Turn and Burn: No Fly Zone, do SNES
Mesmo vendo hoje, ainda impressiona o quanto os gráficos evoluíam de uma geração para outra
A transição de NES→SNES também foi parecida. De PS1→PS2→PS3, a era 3D foi se consolidando, então as mudanças ficaram cada vez mais graduais
Dizem que o pouso em Top Gun é difícil, mas o acoplamento ao satélite em Captain Skyhawk é muito mais complicado
Você precisa acoplar no meio dos efeitos de demoscene da RARE explodindo na tela
Para comparação, compartilho um exemplo de código em Python para a lógica de detecção de pouso
Dependendo da altitude, velocidade e direção, ele retorna TOO_SLOW_OR_TOO_LOW, TOO_FAST_OR_TOO_HIGH etc.
Eu adoro esse tipo de brincadeira com simulador
No X‑Plane, dá até para pousar um 737 em um porta-aviões. É só levar combustível para 30 minutos, baixar os flaps ao máximo e puxar o freio de estacionamento logo antes do toque
Claro que, oficialmente, o 737 precisaria de uma pista bem mais longa, mas se o porta-aviões navegar contra o vento, dá para obter mais de 40 nós de vento de proa
Joguei este jogo quando era criança, mas nunca consegui pousar no porta-aviões. Aquilo era tarefa dos irmãos mais velhos
Um dia, no after-school, um amigo disse que sabia pousar bem nesse jogo, então montamos uma operação em equipe
Eu cuidava do combate, ele fazia os pousos, e juntos zeramos Top Gun e The Second Mission em poucas horas
Continua sendo uma das poucas experiências em que terminei um jogo de NES com um amigo, sem cheat nem Game Genie, e até hoje guardo essa lembrança com carinho