Skip to content
 
 

Repository files navigation

BFME 1 Source Code

image

Reverse engineered with AI.

Goal: source code that rebuilds BFME 1's executable byte-for-byte.

What?

  • If you take a part of the BFME binary, recreate the exact source code that would make that part of the binary, then compile the source code and inject it into the binary, you get the same binary
  • Doing this piece by piece will eventually give you a full, open source recreation of BFME, and enable some (insane) mods
  • The goal of this project is not to mod the game. The point of the project is to get source code that can be compiled into a 1:1, bit by bit replica of BFME 1's binary. This ensures 100% accuracy and will enable future (insane) modifications

Status

We currently have C++ functions in Code/ and a patcher which can patch same-size custom functions into lotrbfme.exe. This is useful for modding.

On July 13th 2026, we crossed 10% of the way there (by reversed engineered function count)

Roadmap

  • BFME 1 Source Code (10% done)
  • Network delay fix
  • Memory fix
  • Better crash logs
  • 60/120 FPS
  • Multi CPU
  • AC fix
  • World builder Source Code
  • 16 player maps

ping redbracket on Discord if there's something else you want to change this roadmap

How You Can Help

Just tell your favorite AI agent to make a PR in this repo, where each commit in the PR is an individual contribution. Your agent will know what to do from there (just make sure it keeps looping and making more commits), and I will be able to merge your PR.

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

Build

Baseline executables and the MSVC 7.1 toolchain are stored with Git LFS. After cloning, run:

git lfs pull
./tools/setup_hooks.sh

Git does not auto-enable versioned hooks from a clone. setup_hooks.sh points this checkout at the tracked pre-commit hook, which rejects new source functions unless they are listed in reverse/functions.csv and pass the byte comparison.

./build.sh
# (or on Windows)
# .\build.ps1

The build verifies the baseline, byte-compares tracked source against the original executable, and checks that a no-op patched copy hashes identically. While iterating on one function, verify just its source in a few seconds by passing in the path:

./build.sh src/math/color.cpp   # or a function name

About

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

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages