Projeto de reverse engineering do jogo DOS F-15 Strike Eagle II recruta pilotos de teste em DOS
(neuviemeporte.github.io)- O projeto de fazer reverse engineering do binário original de F-15 Strike Eagle II, jogo de 1989, para reconstruir seu código-fonte em C entrou na fase de testes com gameplay real
- O código e os dados de todos os executáveis, incluindo
egameeend, foram migrados para C, e a maior parte do código exclusivo em assembly já conta com implementações substitutas em C - A versão mais recente,
v0.9.1, pode ser testada substituindo os executáveis originais na versão451.03do jogo original e na expansão Desert Storm - O novo executável não passa pela tela de configuração e assume MCGA/VGA, sem som e sem joystick, mas o briefing da missão, o voo e o debriefing devem funcionar
- Como o objetivo é uma reconstrução bug-for-bug que preserve até os mesmos bugs do original, comportamentos que também existam na versão original estão fora do escopo atual de relatórios de bug
Progresso do projeto de reconstrução em C
- A reconstrução de F-15 Strike Eagle II é um projeto hobby de reverse engineering do binário original para recriar o código-fonte em C do jogo de 1989
- Até pouco mais de um mês atrás, parecia que ainda levaria vários anos para portar para C o segundo executável,
egame, e ainda restava o terceiro executável,end - Agora o projeto chegou ao seguinte estágio
- Reconstrução do código em C concluída para todos os executáveis
- Todos os dados foram movidos de assembly para C
- A maior parte do código exclusivo em assembly recebeu implementações substitutas em C funcionalmente equivalentes
- A maioria das rotinas e estruturas de dados recebeu nomes significativos
- Está sendo avaliada em breve uma bifurcação do repositório para o projeto de port
- Ferramentas verificam se os opcodes reconstruídos permanecem fiéis ao original, mas isso não captura todos os bugs relacionados ao layout de dados
- Agora, além de verificar a correspondência de opcodes, é preciso manter o jogo realmente funcionando, então testes externos passaram a ser necessários
Como testar e que problemas relatar
- O alvo dos testes é a versão mais recente v0.9.1
- Basta colocar os novos executáveis na pasta do jogo que contém a versão
451.03do jogo original e a expansão Desert Storm, substituindo os executáveis originais- É necessário fazer backup antes da substituição
- Pode ser necessário remover o
f15.comoriginal para que ele não seja executado no lugar do novof15.exe
- O novo executável não entra na tela de configuração
- Assume display MCGA/VGA
- Sem som
- Sem joystick
- Se houver problemas durante o teste, eles podem ser reportados em issues do GitHub
- Travamentos
- Glitches gráficos
- Falha na entrada de teclas
- Se necessário, anexar screenshots tiradas no dosbox com
Ctrl+F5 - Descrever quais ações foram realizadas antes do problema ajuda na reprodução e na correção
- O objetivo deste projeto é uma reconstrução bug-for-bug, então comportamentos que também existam no jogo original devem ser mantidos
- O original já tem problemas como objetos 3D desaparecendo e o avião caindo em direção ao céu quando fica sem combustível enquanto está de cabeça para baixo
- Antes de reportar, é melhor verificar se o mesmo problema também acontece no original
1 comentários
Comentários no Hacker News
Há uma versão para DOS jogável
A primeira etapa foi fazer a engenharia reversa de tudo em assembly, e a segunda foi substituir o assembly por código C compilado de forma idêntica ao binário. Esse trabalho vai continuar no DOS até não sobrar mais código em assembly, e depois a ideia é começar os ports para Linux e Windows
Engenharia reversa tende a introduzir novos bugs, e não é fácil encontrar todos os bugs em código reverso tão antigo assim, mas até agora parece que tudo está funcionando
Se você tiver a versão F-15 451.03 e Dosbox ou DOS real, por favor procure bugs em aberto
A release mais recente para DOS pode ser baixada aqui: https://github.com/neuviemeporte/f15se2-re/releases
O arquivo
f15_se2-*.zipcontém um executável substituto para o jogo DOSA Air Force precisa de VOCÊ!
Só tenho uma implicância bem pequena e pessoal que vai dar munição para outras forças falarem do quanto eu amo cadeiras
Air Force são duas palavras
Acho que não precisa colocar tanta pressão no port para Linux. O suporte dos emuladores é tão bom e tão difundido que, se rodar neles, já dá para considerar um sucesso
Eu uso o Lutris(https://lutris.net/) pela praticidade
Mas você parece ser o tipo de pessoa que gosta da parte low-level, então isso em si pode ser uma missão, mais do que simplesmente jogar um ótimo jogo retrô
Mas fico preocupado se isso é legalmente aceitável de modo geral. Queria saber sua opinião sobre isso
Pergunta de iniciante. Espero que não soe negativa
É realmente ótimo dedicar tempo para fazer jogos antigos funcionarem, mas fico curioso por que descompilar jogos que já podem ser emulados com algo como DOSbox. Jogos tão antigos assim não rodam muito bem até em hardware bem fraco?
Com o código-fonte, você pode adicionar recursos inteiros, portar para Windows 10, implementar 4K HDR, texturas, novos modelos, novas missões. O limite praticamente deixa de existir
Também é muito difícil analisar um jogo olhando apenas instruções em assembly com offsets de dados hardcoded. Em C, dá para ler o comportamento diretamente ou inserir código de instrumentação e depuração para entender o que está acontecendo
Eu queria documentar o formato dos arquivos, vasculhar os dados em busca de mídia não utilizada, identificar e corrigir bugs sérios, criar ferramentas de modding e entender com que técnicas algo marcante da minha infância tinha sido feito
Também queria reduzir o atrito para rodar em sistemas modernos e permitir melhorias opcionais, como resoluções mais altas ou substituição de texturas
No fim, eu não tive persistência para terminar, mas hoje acho que talvez conseguisse
Esses jogos também costumavam ser feitos para rodar em vários tipos de hardware gráfico e de som, então, na prática, os drivers eram compilados dentro do próprio jogo
[0] https://github.com/keirf/greaseweazle
Joguei muito isso quando era criança. Também joguei F-19 Stealth Fighter e F-117A Nighthawk Stealth Fighter, e só hoje descobri que esses dois saíram antes e depois deste jogo. Também joguei um pouco de F-14 Tomcat
Se entendi direito, parece que para rodar isso você precisa dos arquivos originais do jogo. Então provavelmente vou mais ler o diário de desenvolvimento do que voltar a pilotar esse avião
Lembro de comprá-lo na Electronics Boutique no fim dos anos 1980 e jogar no Packard Bell 286 de casa. A proteção contra cópia consistia em localizar e identificar aeronaves no manual, e por causa disso acabei decorando todas as aeronaves do jogo
Também comprei um joystick Gravis Analog para jogar, e ainda tenho a sobreposição de teclado
Eu adoraria ver um reboot moderno desse jogo
Passei um tempão no telefone fixo com um amigo ajustando as configurações do modem, aí fazia ele ligar de novo, começávamos o jogo, caía tudo, ligávamos outra vez para entender o que tinha acontecido, e assim por diante
Quando finalmente funcionou, jogamos tanto sem parar que a mãe dele proibiu o jogo via modem porque estávamos ocupando a única linha telefônica por horas
Eu gostaria de encontrar multiplayer parecido em outros simuladores de voo ou espaciais, e também de fazer este jogo funcionar de novo para fisgar meu amigo pela nostalgia
Hoje em dia portar jogos ficou absurdamente fácil
https://robin.tooclever.org levou menos de um dia em tempo de API
Fico curioso se a IA é boa para inferir a estrutura de um projeto descompilado quando não há nomes de símbolos
Não é a minha área, mas fiquei impressionado ao ver a IA captar muito bem a intenção da estrutura de um JavaScript sem source maps
Em alguns casos, ela consegue entender diretamente até fluxo de controle fortemente ofuscado, sem ferramentas
Essa história agora está no YouTube: https://youtu.be/aIPKkOpIiF8
Tenho um amigo que pilotava F15, então mandei isso para ele
Essas comunidades de jogos antigos fazem coisas impressionantes para garantir as quatro liberdades em seus títulos favoritos, e isso é realmente inspirador
Nunca joguei este, mas joguei Jane's F/A-18, e era um excelente jogo
Passei muito tempo acumulando mapas Doppler durante o voo para usar no lançamento do SLAM
Era um excelente simulador, junto com Tornado da Digital Integrations, e Tornado realmente precisa de um reboot