Skip to content

About

Open Source, 1:1 binary swappable recreation of the Lord of the Rings, Battle for Middle-Earth

Resources

Stars

164 stars

Watchers

6 watching

Forks

Repository files navigation

BFME 1 Source Code

image

Goal: rebuild BFME 1's retail executable byte for byte from source, and use that source to fix and improve the game.

Join our Discord to participate!

What?

  • We rewrite the game's code as C++, one small piece at a time.
  • Each piece must rebuild to the exact bytes of the original game exe (BFME 1, version 1.03).
  • When every piece matches and links, the whole game is open source, and we can fix bugs and make mods.

BFME 1 rebuild progress

rules-v2

What the bars measure

  • Rebuilt from source: code rebuilding to the original exe's exact bytes, partly generated code or prebuilt libraries.
  • Game code in C++: the game's own code (no libraries) in C++.
  • Linking: that code in files that link cleanly (link census).
Progress over time and code map

Interactive report

Progress chart

Code map

Status

Source: game/ and worldbuilder/, with their ledgers in targets/. Original binaries, toolchains and references: inputs/. Mods: mods/.

Roadmap

  • BFME 1 Source Code
  • Network delay fix
  • Memory fix
  • Better crash logs
  • 60/120 FPS
  • Multi CPU
  • AC fix (live-tested for the reported case; opt-in until other horde fights are tested)
  • World builder Source Code
  • 16 player maps

How You Can Help

Give your AI agent this exact prompt; in six measured sessions a vaguer one produced zero progress:

Read AGENTS.md and follow it. Loop: take the served candidate's whole file, convert bodies to byte-exact C++, bank each verified body as its own commit, and before stopping run python3 tools/progress.py origin/master — if C++ exact is +0 bytes, keep going. Make a PR when you have a few landed bodies.

Each commit in the PR is one verified function, and I will be able to merge it.

!! All such AI-generated PRs are appreciated !!

Build

The MSVC 7.1 toolchain and baseline executables are committed (no LFS), so git clone gets everything. Then:

./tools/setup_hooks.sh   # enable the pre-commit byte-check (git won't do this from a clone)
./build.sh               # verify every tracked function against retail   (.\build.cmd on Windows, same arguments)

On Linux, use WineHQ Wine 11 (winehq-stable), a 32-bit prefix (WINEARCH=win32 wineboot -i). Ubuntu 24.04's Wine 9.0 hangs cl.exe on some files. Optional link-only Wibo compatibility. Full gate: about 30 minutes on four cores.

To check one function in seconds, pass its file or name:

./build.sh game/Libraries/Source/WWVegas/WWMath/color.cpp

About

Open Source, 1:1 binary swappable recreation of the Lord of the Rings, Battle for Middle-Earth

Resources

Stars

164 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages