lego-legacy
- LEGO Rock Raiders playable
- Hot Wheels Stunt Track Driver playable
- LEGO Alpha Team playable
The original Windows releases of three late-90s games, running on any computer, from your own discs.
$ cargo run --release -p lego-legacy-launcher
Runs on the Mac today; Windows and Linux are next. Needs Rust and your own discs. Free and open source. No game data included.
Each game's own code, as it shipped
Not a remake of any game, and not a general PC emulator. lego-legacy runs each title's own retail executable: an x86 interpreter runs the game's code, and every Win32 and DirectX call it makes is answered in Rust.
-
Zero crates
The whole workspace uses zero external crates, by design. Window, sound and input are the operating system's own libraries, reached at run time behind one seam: one backend per OS.
-
A declared machine
Each title gets the machine declared for it: processor, clock, display, drives, install state. The game cannot see your computer.
-
A named wall
Ask for something the emulator does not have, and the run stops at a named wall instead of guessing, with a report of what was asked for and where.
Eight golden rules
lego-legacy is a preservation effort: anyone can play these games again from their own discs, unchanged, on any computer. Eight rules outrank everything else in the project.
-
Everything is deterministic
The machine is a state machine under complete control. Every input the game sees is declared, never read from your computer, so any run can be paused, stepped and replayed exactly.
-
The game runs exactly as it shipped
Its own code from its own disc, unchanged: nothing patched, replaced or faked.
-
Extras sit on top, never inside
Mods, cheats, editors and TAS tools are welcome as a separate layer, added or removed with no effort.
-
A per-title emulator, true to Windows
Each game gets only the Windows behaviour it uses, answered as real Windows answers, from public sources and never Microsoft's code.
-
Runs anywhere, depends on nothing
Zero external crates, and the operating system behind one seam, so the games outlive any one platform.
-
Bring your own disc
No game data is ever distributed, and copy protection is never bypassed. We do not condone piracy.
-
Nothing is released until it is proven three ways
The full test suite, a full headless run, and a person playing it and signing off, on the exact build that is tagged.
-
Everything is written down so anyone can pick it up
Every crate is versioned and tagged on its own, with notes verbose enough that a person or an agent can carry on without asking.
The full text is in GOLDEN-RULES.md.
Three games, all playable
-
LEGO Rock Raiders
A person has played the first mission through.
-
Hot Wheels Stunt Track Driver
A person has driven the first race to the finish.
-
LEGO Alpha Team
The first mission, the Training Area, plays to its end.
The maintainer signed each one off by playing it on 2026-10-18. LEGO Racers is next: on the roster, not started.
Frames from the emulator
Each one is the emulator's own, shot headless while it replays a route committed to the repository: what the game drew, pixel for pixel.
What you need
-
A Mac, for now
lego-legacy is OS-agnostic by design, and macOS has the first backend. Windows and Linux are next.
-
Rust
rust-toolchain.tomlpins the version, and rustup picks it up on its own. -
Your own discs
Each disc's data track ripped to a plain ISO (
dddoes it ). Only the game's executable is checked, by its SHA-256.
No game data is in the repository and none ever will be, and no copy protection is circumvented. Rock Raiders runs from the Masterpiece re-release: the original pressing is wrapped in SafeDisc, which is recognised and refused, never bypassed.
Up and running
- Clone the repository.
-
Put each disc's ISO under
game-data/, where the README's table says. -
From the repository's root,
cargo run --release -p lego-legacy-launcher. It lists the titles, says whether each one's image was found and is the right one, and asks which to play.
Sound stays off until you ask for it: start a title directly with
cargo run --release -p lego-rock-raiders -- --audio. Cmd-Q or Cmd-W ends a
run. If your computer can't keep up, the game runs in slow motion with its sound stretched to
match, rather than skipping.