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:
- 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 pontos fixos no setor para cada titular local (FUN_17fb_397d). Escalar 11 jogadores locais dá pontos brutos de vantagem. - A Assimetria do Mando de Campo: O mandante roda
Random(6000) < Força, enquanto o visitante rodaRandom(7000) < Força. O time da casa tem cerca de de vantagem matemática pura na criação de lances. - Por que o 5-0-5 quebra o jogo: Médios diluem a força ( ataque / 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.
- Comportamento não ajuda no desarme: No duelo de dividida (
FUN_17fb_81ed), a vitória depende da força nominal. A agressividade serve unicamente como peso em uma roleta de faltas e cartões (FUN_17fb_100b). - Goleiros demoram o dobro para evoluir: Na rotina de evolução (
FUN_17fb_4a41), goleiros precisam passar por um teste extra de (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!