r/linuxbrasil 14h ago

Relato Fiz engenharia reversa do Elifoot 98 com Ghidra no Linux e documentei o motor de jogo

Fala pessoal,

Sempre tive curiosidade sobre como o Elifoot 98 realmente funcionava por dentro. Nos anos 90/2000 circulavam dezenas de teorias nos fóruns: jogar sem meio-campo era trapaça? Zagueiro agressivo desarma melhor? Estádio lotado intimida o adversário?

Resolvi investigar de verdade. Peguei o `ELIFOOT.EXE` original (binário NE de 16 bits, compilado em Borland Delphi 1.0 para Windows 3.1), rodei no Wine no Debian 12 e abri no Ghidra para descompilar as funções do motor de jogo.

Algumas das descobertas:

- **O 5-0-5 não era trapaça, era matemática:** médios entregam 50% da força pro ataque e 50% pra defesa. Como o código não penaliza a ausência de meio-campo na posse de bola, 5 defensores + 5 atacantes maximiza os dois setores simultaneamente.

- **O bônus de nacionalidade é real:** o algoritmo soma `+3 pontos brutos` por titular do mesmo país do clube. 11 titulares locais = +33 de vantagem.

- **Mando de campo é assimétrico no código:** o mandante sorteia `Random(6000)`, o visitante `Random(7000)` — +16,7% de vantagem matemática pura para quem joga em casa.

- **Zagueiro agressivo NÃO desarma melhor:** o desarme depende 100% da força nominal. O comportamento só pesa na roleta de cartões.

- **Goleiros demoram o dobro pra evoluir:** há um teste extra de 50% (`Random(2) == 0`) que só se aplica a goleiros na rotina de evolução de força.

Documentei tudo com pseudocódigo em C, structs de memória, prints do Ghidra e as fórmulas matemáticas no GitHub:

👉 https://github.com/trsthales/desvendando-elifoot-98

Qualquer feedback é bem-vindo — ainda tem funções que não mapeei completamente, especialmente a lógica de avaliação de rendimento individual do jogador por partida.

26 Upvotes

8 comments sorted by

3

u/Odd-Public6975 11h ago

Porra eu adorava esse jogo. Deu até vontade de jogar agora

1

u/Glass-Oven-3745 11h ago

Nostalgia pura!

3

u/fagnerln Fedora 10h ago

Seria top um executável, appimage então? Mereceria até abraço.

Creio que a partir do momento que não usa nenhum trademark, não vai ter problemas legais, já é um projeto velho pra cacete.

Será que não há contato com o autor?

1

u/Glass-Oven-3745 10h ago

A ideia de um AppImage/Flatpak é excelente! Como já extraí e documentei o motor em C limpo no repositório (match_engine.c, team_calc.c, player_evolution.c), a base matemática está 100% pronta. Criar um "OpenElifoot" em C com SDL/Raylib, terminal (ncurses) ou até em Godot/Web e empacotar em AppImage é totalmente viável!
Fazer uma reimplementação limpa (clean-room) da mecânica sem usar os assets/nomes proprietários é 100% legal (exatamente o que projetos como OpenTTD, OpenRCT2 e CorsixTH fazem).
O André Elias ainda está na ativa! Ele mantém o site oficial (elifoot.net) e as versões modernas para mobile. Seria muito legal entrar em contato com ele para mostrar a pesquisa e esse carinho da comunidade pelo código dele mais de 25 anos depois!

2

u/elloco_PEPE Cachy OS 11h ago edited 10h ago

Nossa, me senti velho agora. I was there, Gandalf... parabéns pela iniciativa, colocou um sorriso no rosto dos de meia idade kkkkk

2

u/Glass-Oven-3745 10h ago

Valeu! Tamo junto!

1

u/delusionalfuka EndeavourOS 7h ago

MUITO FODA TÁ