Skip to content
LordBlacksun edited this page Sep 29, 2026 · 4 revisions

Starlancer (2000) — Engine Reference Wiki

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.

Where to go

  • 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.

What the engine is

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.

Pages

  • 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, .SHP loading, the stat .BIN record layout, shields/collision/explosions/AI.
  • Missions, AI & Scripting — the .DTE mission format (RefPack container fully decoded — dte_parse.py reads all 44 missions: directory, ships, triggers, script), the trigger VM and the TT_* condition set, mission lifecycle.
    • .DTE Scripting 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↔.dte numbering map, and where Foster's Last Stand / Dark Reign sit.
  • Networking & Save Formats — DirectPlay, IFF saved games, profile.bin, the radio's .fm8 face 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.

Game Reference

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).

Conventions

  • Addresses are VA/RVA for ImageBase 0x400000 in the analyzed build (decrypted image, 1,151,021 bytes, OEP 0x004D1210, 2,200 functions).
  • The binary is stripped: functions are FUN_<addr> and globals DAT_<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.

Clone this wiki locally