5

Desvendei o código do Elifoot 98 após 25 anos: Engenharia reversa em 16-bit com Ghidra no Linux

Quem cresceu nos anos 90 e 2000 certamente se lembra de passar horas na frente do PC jogando Elifoot 98. Por mais de duas décadas, circularam em fóruns de internet dezenas de mitos e teorias sobre o funcionamento do jogo: Será que zagueiro agressivo desarma melhor? Por que jogar sem meio-campo parecia tão roubado? Existe bônus por nacionalidade?

Resolvi investigar a fundo e decidi fazer engenharia reversa do executável original (ELIFOOT.EXE) no Debian 12, usando o Ghidra e o Cheat Engine sobre a camada winevdm.

Descobri que o binário original foi compilado em Borland Delphi 1.0 (16-bit) e consegui descompilar as funções responsáveis pela simulação de partidas, cálculo de força dos setores e evolução dos jogadores.

🔍 Principais Descobertas:

  1. O Mito da Nacionalidade era Real (+3 de Bônus): O código pré-jogo compara a sigla de país do clube com a do jogador (CompareStr) e adiciona +3+3 pontos fixos no setor para cada titular local (FUN_17fb_397d). Escalar 11 jogadores locais dá +33+33 pontos brutos de vantagem.
  2. A Assimetria do Mando de Campo: O mandante roda Random(6000) < Força, enquanto o visitante roda Random(7000) < Força. O time da casa tem cerca de +16,7%+16,7\% de vantagem matemática pura na criação de lances.
  3. Por que o 5-0-5 quebra o jogo: Médios diluem a força (50%50\% ataque / 50%50\% defesa). Como não há punição por falta de meio-campo no código, jogar com 5 Defesas e 5 Atacantes maximiza o poder ofensivo e defensivo simultaneamente.
  4. Comportamento não ajuda no desarme: No duelo de dividida (FUN_17fb_81ed), a vitória depende 100%100\% da força nominal. A agressividade serve unicamente como peso em uma roleta de faltas e cartões (FUN_17fb_100b).
  5. Goleiros demoram o dobro para evoluir: Na rotina de evolução (FUN_17fb_4a41), goleiros precisam passar por um teste extra de 50%50\% (Random(2) == 0) para ganhar força.

Documentei todas as structs de memória, as fórmulas descompiladas em C e os prints da análise no repositório do projeto:

🔗 Repositório no GitHub: https://github.com/trsthales/desvendando-elifoot-98

Feedbacks, dúvidas e contribuições são muito bem-vindos!

Carregando publicação patrocinada...
1
1

Muito obrigado pelas palavras e pelo apoio no GitHub com o star e fork! 🚀
Foi uma viagem nostálgica muito divertida depurar esse binário de 1998 no Ghidra. Espero que aproveite o código e mate a saudade dos velhos tempos de Elifoot.
Grande abraço, muita saúde e sucesso para você também! 🐧⚽