Skip to content

About

Mashed Fully Loaded Recompilation Project

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MFL-recomp

Reverse engineering and recompilation of Mashed: Fully Loaded (MFL.exe, PC, 2004).

The goal is a playable recompilation with readable, maintainable source code that can later take bug fixes and enhancements. Machine-code matching (byte-identical output from the original compiler, MSVC 13.00.9466 = Visual C++ .NET 2002) is used as the safety net while the source is made readable.

No game files are included. You need your own copy of the game; see docs/LEGAL.md. Supported executable: MFL.exe of Mashed: Fully Loaded, SHA-1 d52ca4a5995875b6d052707188e2c6d065f41766 (python3 tools/check_exe.py path/to/MFL.exe).

Progress

2,557 application functions (VA < 0x4B0000, the rest is linked library code)

Stage Functions Progress
Named 2,459 ███████████████████░ 96%
Replaced by recompiled C (all tiers) 1,733 ██████████████░░░░░░ 68%
...verified byte identical 877 ███████░░░░░░░░░░░░░ 34%
...share of the code bytes 176,318 B ██████░░░░░░░░░░░░░░ 28%
Published in src/ 381 ███░░░░░░░░░░░░░░░░░ 15%
...byte identical (MATCH) 343 ███░░░░░░░░░░░░░░░░░ 13%
By tier (whole pipeline)
Tier Functions Code bytes Verified byte identical
agent 135 8,703 135
bridge 92 11,292 0
hand 381 14,744 344
tier1 398 17,690 398
tier2 727 123,889 0

Contents

Path What
names/ Function, global and struct names for MFL.exe as CSV / struct files, applied to a Ghidra project by the scripts below.
scripts/ Ghidra headless scripts (RenameFns.java, ApplyStructs.java, RenameVars.java, ...).
tools/ Compile / compare / hybrid-exe / regression tooling (Python, shell, Docker + Wine). See docs/TOOLCHAIN.md.
src/ Recompiled game code in C: one file per module, manifest.txt lists every function with its address and verification status. 42 of 49 files pass gcc -m32 -fsyntax-only; the others use MSVC inline __asm.
data/ Small address tables the tools read (function sizes, library symbol tables).
docs/ Building, naming workflow, toolchain, legal note.

Naming data

Apply with Ghidra 12.1.4 (headless) in this order: RenameFns.java, ApplyStructs.java, RenameVars.java. Details: docs/NAMING.md.

About

Mashed Fully Loaded Recompilation Project

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages