Classified · For preservation purposes

The LithTech games, rebuilt from source.

We reconstruct Monolith’s early-2000s games and their engine so that every executable and DLL compiles back to the exact bytes that shipped, with the original compilers. Then we build a modern edition on top: widescreen, controllers, restored multiplayer, open-source middleware, and the retail bugs fixed.

The approach

Byte for byte

Each function is written so the period compiler — Visual C++ 6, .NET 2003, Intel C/C++ — turns it into exactly the retail machine code. A scoreboard checks every one, and the build fails if a matching function ever stops matching.

Two builds

Legacy is the game as it shipped, bugs and all — a faithful record. Modern is the same source with fixes and new features, kept behind a define so the legacy build keeps matching.

No game data

The repositories contain source only. Public releases come with install scripts that copy the data out of your own disc images, checking every file against verified redump.org checksums.

Plays today

Builds run under Wine and Proton on Linux and the Steam Deck, on macOS through CrossOver, and natively on Windows.

File 01

No One Lives Forever

The Operative · Game of the Year Edition · 2000/2001 · nolffan/nolfsrc

The modern build at 1920×1080: Direct3D 9 with antialiasing, model shadows, 32-bit textures and 16× anisotropic filtering.

Every binary of the game — the LithTech engine (lithtech.exe, server.dll, the d3d.ren renderer), the launcher, the dedicated server and the three game DLLs — compiled from source with the original 2000-era compilers.

Monolith never released the engine source, so src/engine/ is a reconstruction written to recompile to the retail machine code. The game code is Monolith’s own v1.003 source release, with the Game of the Year changes reconstructed from the retail DLLs.

Modern build

  • Direct3D 9 renderer, widescreen, AA and anisotropic filtering
  • XInput controller support
  • High frame rates that play correctly
  • Open-source audio and video, with OpenMiles and FFmpeg
  • Fixes and features from the NOLF Modernizer, reimplemented in source
  • Bundled DirectMusic, so the music plays under Wine and Proton
  • Multiplayer backed by OpenSpy

Byte-identical code

84.9%

17,946 of 19,855 functions · retail GOTY 1.004

  • NolfServ.exe99.2
  • Object.lto98.9
  • CShell.dll98.8
  • NOLF.exe98.0
  • libraries97.7
  • server.dll85.5
  • lithtech.exe77.8
  • d3d.ren28.3
View nolfsrc → Releases
File 02

No One Lives Forever 2

A Spy in H.A.R.M.'s Way · version 1.3 · 2002 · nolffan/nolf2src

The game code is Monolith’s public source release of 1.3, the game’s last update, compiled with Visual C++ 6 SP5 as retail was. Where the release differs from what actually shipped, the retail code is reconstructed in place and marked RETAIL:.

The engine — Lithtech.exe and server.dll — is built from the 2006 LithTech Jupiter source, back-ported to 2002. The sound driver and message DLL are reconstructed from the retail binaries, and the server directory from Monolith’s Titan code. Nothing of the retail engine remains in the game directory.

Modern build

  • Widescreen and FOV, up to 8× AA and 16× AF
  • XInput controller support
  • High frame rates that play correctly
  • Our own Bink player on FFmpeg — no RAD binaries
  • NOLF 2 Modernizer fixes, reimplemented in source

Byte-identical code

98.1%

29,261 of 32,894 functions · retail 1.3, engine included

  • ClientFx.fxd100
  • ServerDir.dll99.5
  • CShell.dll99.0
  • snddrv.dll98.8
  • NOLF2Srv.exe98.8
  • NOLF2.exe98.7
  • Object.lto98.7
  • server.dll97.5
  • Lithtech.exe95.9
View nolf2src → Releases
File 03

Contract J.A.C.K.

A prequel to NOLF 2 · version 1.1 (Europe) · 2003 · nolffan/cjacksrc

Monolith never released Contract J.A.C.K.’s source. But its binaries show it was built from the same tree as NOLF 2 — so this project starts from NOLF 2’s game source and the LithTech Jupiter engine, and brings each function to what the retail binaries are, compiled with Visual C++ .NET 2003 under Wine.

The newest of the three, and already well along: the launcher, dedicated server, sound driver and client effects are all above 99%.

Modern build

  • Widescreen and FOV
  • XInput controller support
  • High frame rates that play correctly
  • Intro movies through our FFmpeg-based Bink player
  • Speech plays with no codec to install
  • NOLF 2 Modernizer fixes, carried over

Byte-identical code

96.4%

27,763 of 29,566 functions · retail 1.1

  • ClientFx.fxd99.9
  • SndDrv.dll99.7
  • ContractJack.exe99.2
  • ContractJackServer.exe99.0
  • server.dll97.2
  • Object.lto96.9
  • Lithtech.exe96.7
  • GameSpy.dll95.3
  • CShell.dll94.4
View cjacksrc → Releases
File 04

lithtools

Tools for the LithTech games and their files · nolffan/lithtools

For NOLF, Aliens versus Predator 2, NOLF 2, Contract J.A.C.K., Tron 2.0 and the rest of that era: modern, cross-platform tools for the files these games ship — and the original development tools, archived and reconstructed for research.

lithrez & LithRez Studio

A command-line tool whose classic commands behave like Monolith’s LITHREZ and write byte-identical .rez archives; and a Qt 6 successor to WinRez LT Studio with texture, model and sound previews and a string-table editor. Linux, macOS and Windows.

B

Blender extension

Imports and exports LithTech models — .abc, .ltb and the PS2’s .ltb — and DTX textures.

T

Talon tools, decompiled

DEdit, ModelEdit, the world processors and the 3ds Max and Maya plug-ins from NOLF and AvP2, reconstructed as C++ that compiles to the shipped binaries. 56.9% byte-identical so far.

J

Jupiter tools

The tools of NOLF 2, Contract J.A.C.K. and Tron 2.0 — DEdit, ModelEdit, FxED, the packers — built from Jupiter Build 69’s source.

Plus an inventory of every public LithTech tools release, and a map of which format versions each game and tool reads and writes.

View lithtools → Releases

With thanks

  1. Monolith Productions, for the games, and for releasing their source.
  2. LithTech, Inc. (later Touchdown Entertainment), for the Jupiter engine.
  3. StenApp, for an in-depth knowledge of all things NOLF and LithTech.
  4. HeyThereCoffeee (haekb), for the NOLF and NOLF 2 Modernizers.
  5. ChthonVII and Daniel Gibson, for their Modernizer fixes.
  6. OpenSpy, whose master server brings the internet server lists back to life.
  7. OpenMiles, the open reimplementation of the Miles Sound System.
  8. FFmpeg, which our Bink player is built on.
  9. Wine, Proton and DXVK, which run the games on Linux and the Steam Deck.
  10. redump.org and archive.org, for verifying and keeping the discs.