1 pontos por GN⁺ 4 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • 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 egame e end, 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ão 451.03 do 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.03 do 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.com original para que ele não seja executado no lugar do novo f15.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

 
GN⁺ 4 시간 전
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-*.zip contém um executável substituto para o jogo DOS
    A Air Force precisa de VOCÊ!

    • Sou veterano da USAF. Cresci jogando F-15 Strike Eagle II e, infelizmente, minha cópia parou de funcionar há muito tempo. Fico realmente feliz de ver este projeto
      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
    • Ficou muito bom
      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ô
    • Eu também estou fazendo engenharia reversa de alguns jogos agora. Hoje em dia isso ficou bem mais fácil por causa da IA
      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?

    • A questão principal não é executar o jogo, e sim abri-lo para modificação. Aplicar patches em um jogo em formato binário é absurdamente difícil, e qualquer coisa além de correções simples de bugs fica quase impossível
      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
    • Quando tentei fazer engenharia reversa de um jogo da era DOS alguns anos atrás, havia vários motivos
      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
    • Muitos jogos em disquete têm padrões de proteção contra cópia em disco que exploravam comportamentos não documentados dos drives da época. Por isso ferramentas como Greaseweazle são necessárias para montar um mapa completo do fluxo magnético de disquetes arquivados
      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

    • F-19 é um jogo excelente e um dos meus títulos favoritos do Sid Meier
      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
    • Era esse o jogo em que dava para jogar em coop com um amigo, um no assento da frente e outro no de trás, ou era o III?
      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
    • O blog de desenvolvimento está entre os melhores diários de engenharia reversa retrô que já vi. É uma leitura muito divertida
    • Esses nomes não são marcas registradas? A Lockheed talvez pudesse vender os direitos como renda extra
  • Hoje em dia portar jogos ficou absurdamente fácil
    https://robin.tooclever.org levou menos de um dia em tempo de API

    • Legal. Existe algum índice de jogos portados desse jeito ou de ports open source?
  • 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

    • A IA tem capacidade sobre-humana para ler e entender assembly. Não se importa muito se ele foi descompilado ou se há símbolos; sem eles só fica um pouco mais lenta
      Em alguns casos, ela consegue entender diretamente até fluxo de controle fortemente ofuscado, sem ferramentas
    • Sim, ajuda bastante
  • Essa história agora está no YouTube: https://youtu.be/aIPKkOpIiF8

    • O vídeo é legal, mas a narração por IA incomoda
  • 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

    • E também teve Jane's USAF!
  • 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