Repository navigation
Home
Community reverse-engineering reference for Starlancer (Digital Anvil / Microsoft, 2000; developed by Warthog). This is original analysis — addresses, structure, and inferred purpose recovered by static reverse-engineering. It contains no game source code or assets.
Provenance & legal. Findings come from static analysis (Ghidra decompilation) of a legally owned copy of the game. We document behaviour, addresses, and formats; we do not redistribute the game's code, binaries, or assets. See Reverse-Engineering Notes.
- To play StarLancer on a modern PC, or to contribute code — engine work, fixes, mod tools — go to OpenReliant, the open-source reimplementation of the engine in Zig on SDL3. It installs from your retail discs, runs on Windows, Linux and macOS, and is where the scene's code now goes, ours included.
-
To understand the original engine or its file formats, stay here. This wiki and the
repository's
docs/are the scene's documentation commons, under CC BY 4.0 so that any project may use them. - To run your original CD copy on Windows 10/11, see the setup checklist and Starlancer Studio. That kit is complete and maintained for bug fixes only.
-
For every project in the scene and what each may legally take from the others, see
modding-scene.md§4.
Starlancer is a 32-bit Win32 space-combat sim built as a thin game layer over late-1990s middleware. The stack (all verified from imports + code):
| Layer | Middleware | How it's identified |
|---|---|---|
| 3D renderer |
Surrender (SR_*) |
srAPI.cpp/surrenderlib, srddraw.dll, srmemory.dll, SR_* calls |
| 2D / sprites / HUD overlay | WinVFX |
winvfx8.dll / winvfx16.dll, VFX_* entry points |
| Audio |
Miles Sound System (mss32) |
AIL_*; providers Miles/Aureal A3D/EAX/RSX |
| Video |
Bink (binkw32) |
BinkOpen/DoFrame/CopyToBuffer/… |
| Input | DirectInput 7 |
DirectInputCreateEx(…,0x700,…), force-feedback *.frc
|
| Multiplayer | DirectPlay |
DPInit, DPSYS_*, TCP/IP + MSN Zone |
| Backend | DirectDraw7 + Direct3D7 | dynamically loaded via srddraw.dll; DX≥7 enforced at startup |
The build retains verbose diagnostics that leak the source tree: lancer\game\*.cpp
(hud.cpp, interface.cpp, Create.cpp, gameobj.cpp, shield.cpp, shieldfx.cpp,
explode.cpp, wgate.cpp, deathmatch.cpp, gameflow.cpp, bigfile.cpp, DPBits.cpp,
DPSession.cpp), lancer\interface\loadout, and lancer\surrender\surrenderlib.
-
Renderer, Display & Widescreen — Surrender + WinVFX +
DirectDraw/D3D7, display-mode selection (
dmodes.bin), and the verified targets for a Hor+ widescreen patch. - Audio, Video & Input — Miles audio, Bink playback (incl. the boot-movie skip), DirectInput + force-feedback, and the engine's master millisecond clock.
-
Game Objects, Ships & Combat — the "GO" object model,
.SHPloading, the stat.BINrecord layout, shields/collision/explosions/AI. -
Missions, AI & Scripting — the
.DTEmission format (RefPack container fully decoded —dte_parse.pyreads all 44 missions: directory, ships, triggers, script), the trigger VM and theTT_*condition set, mission lifecycle.-
.DTEScripting Reference — the complete trigger / Executor command / AI-code / opcode tables (fused with Captain Foster / Starlancer ME's research). -
Campaign Mission Flow — the 24-mission progression rule, the
in-game↔
.dtenumbering map, and where Foster's Last Stand / Dark Reign sit.
-
-
Networking & Save Formats — DirectPlay, IFF saved games,
profile.bin, the radio's.fm8face films, key/joystick config. - Reverse-Engineering Notes — provenance, method, coverage, caveats.
Modern-Windows fixes — boot-video skip, DirectDraw/D3D7 wrappers, resolution/widescreen, DRM, audio and more (fused with this RE) are catalogued in the repo's
docs/modern-fixes.md.
Beyond the engine internals, this wiki also carries a Game Reference — the ships, characters, campaign, factions and weapons of Starlancer. Unlike the RE pages above, this is not original analysis: it is factual game data compiled from the community-run Starlancer Wiki on Fandom under CC BY-SA 3.0, reorganized here and cross-checked against our RE (those pages are offered under the same CC BY-SA 3.0 terms).
- Fighters · Capital Ships — stat tables and full rosters.
- Characters — the 53-name pilot / officer / ace roster.
- Sol War Campaign — the 24-mission story, fused with the engine-side Campaign Mission Flow (the wiki's mission order independently confirms our RE: Mission 15 = Foster's Last Stand, Mission 18 = Dark Reign).
- Factions, Squadrons & Locations · Weapons & Progression.
- Addresses are VA/RVA for ImageBase
0x400000in the analyzed build (decrypted image, 1,151,021 bytes, OEP0x004D1210, 2,200 functions). - The binary is stripped: functions are
FUN_<addr>and globalsDAT_<addr>; names here are Ghidra placeholders. Purposes are marked [verified] (read in code) or [inferred].
Licence — this page is licensed CC BY 4.0: use it in any project, whatever that project's own licence, with attribution. Code and tools in Starlancer-OSS remain GPL-3.0-only, and the Game Reference pages are CC BY-SA 3.0, as they derive from the Starlancer Fandom Wiki. StarLancer, its code and its assets belong to their owners; no licence here covers them.