Documentation¶
Reference notes on StarLancer (Digital Anvil / Microsoft, 2000; developed by Warthog), on how OpenReliant reimplements its engine, and on the repository's tooling, derived from static analysis of a legally owned copy. The repository holds none of the game's files.
User guide¶
The user guide covers installing, configuring and playing OpenReliant.
Reference documentation¶
| Path | Contents |
|---|---|
toolchain.md |
What make setup installs, and the Ghidra workflow. |
binary/executables.md |
The shipped binaries and the middleware they are built on. |
binary/runtime.md |
The C runtime linked into the game: Visual C++ 6.0's LIBCMT. |
binary/sources.md |
The game's source files, their link order, and which code each holds. |
formats/disc-images.md |
Raw CD images and the discs' ISO 9660 filesystem. |
formats/hog.md |
.HOG archives: EA's BIGF container. |
formats/refpack.md |
RefPack, the compression inside them. |
formats/shp.md |
.SHP models: chunks, parts, levels of detail, geometry, coordinate frame. |
formats/spr.md |
.SPR sprites: the WinVFX interface imagery. |
formats/tcache.md |
Texture caches: every model and effect texture, their palettes and colour cubes. |
formats/fat.md |
.fat sound banks. |
formats/speech.md |
Speech files: the radio's lines, their scrambling and their codec. |
formats/mp3.md |
MP3 files: the crew's lines in the rooms, and the frames OpenReliant reads of them. |
formats/fm8.md |
Face films: the pilots' faces the radio's window plays, their chunks and their codec. |
formats/fnt.md |
.fnt bitmap fonts. |
formats/bink.md |
.bik movies: the Bink container. |
formats/frc.md |
.frc force-feedback effects. |
formats/dte.md |
.DTE missions: directory, ships, triggers, and the script VM. |
formats/stats.md |
Ship, gun, missile and pilot stat tables. |
formats/save.md |
Saved games: the IFF files of the campaign, the autosave and the restart point. |
engine/missions.md |
Missions: how a mission's start finds its file, reads it and binds it. |
engine/script-vm.md |
The script VM at run time: threads, calls, commands, timers, events. |
engine/camera.md |
The camera: the projection, the views, and where each puts the camera. |
engine/backdrop.md |
The backdrop: sky dome, nebula, stars, dust, sun, lens flares and the default lights. |
engine/rendering.md |
Rendering: layers, depth, shading modes as materials, lighting, blending, highlights. |
engine/objects.md |
Live objects: the object array, model hierarchies, components, the flight model. |
engine/guns.md |
Guns: the guns a model holds, their groups, the trigger and the step that fires them. |
engine/cloak.md |
The cloak: which objects cloak, how it comes on and goes, what it draws and what shows through it. |
engine/ejection.md |
The ejection: the pod, the ship left behind, the pickup by tractor, and the mission's end. |
engine/effects.md |
Effects: the particles explosions send out. |
engine/sound.md |
Sound: the banks' sounds on their voices, the 3D effects, the player's engine, the music and the speech. |
engine/loop.md |
The game loop: the 100 Hz tick, the 25 Hz simulation step, collisions. |
engine/front-end.md |
The front end: its screens, the main menu, GAME OPTIONS, the settings screen and its controls, the pilot roster, the dialogs and the backgrounds. |
engine/rooms.md |
The Reliant's rooms: their views and movies, the pointer, the fish tank, the news report, a new pilot's induction and the in-game options. |
engine/itac.md |
The ITAC: its sections, their movies and pictures, the fades, the panes, and the debriefings. |
engine/simulator-pod.md |
The simulator pod: its screens and choices, and the training missions and Instant Action it flies. |
engine/locker.md |
The locker: the lid's movies, and the medals and ribbons that come into view with it. |
engine/cd-player.md |
The CD player: its screen and buttons, each carrier's list of the game's music, and how it plays. |
engine/briefing.md |
The briefing: the door, the way into the briefing room, Enriquez with the mission's movie, her last word, and the campaign's end. |
engine/loadout.md |
The loadout: its hologram, GenILib's 3D interface, the ship page, choosing a ship, the missile page and the racks, the internal guns view, the exit, its panels and figures, and the ship and racks it leaves the mission. |
engine/movies.md |
Movies: how the game plays them, the discs' archives, the intro, the transitions, the hangar's, the landing and the chapters' ends, and the stand-in for Bink. |
engine/controls.md |
Player input: devices, bindings, settings, steering and throttle. |
engine/screenshots.md |
Screenshots: the keys that save the screen, and where the pictures go. |
engine/hud.md |
The head-up display: how it is reached, where an element stands, its text and its art. |
engine/radio.md |
The radio: the lines the pilots say, their queue, the window with the speaker's face, and the speech. |
engine/orders.md |
Orders: the table of what objects can be told to do, each object's stack, and how orders run. |
engine/launch.md |
Launches: the Launch order, its styles, the Reliant's launch and its cutaways, the torpedoes'. |
engine/jump.md |
Jumps: Jump Out and Jump In, the player's formation, their motions and views, and the JumpedIn event. |
engine/gates.md |
Gates: the tunnels ships jump through, the worm, and the orders that open, close and collapse them. |
engine/director.md |
The director's camera: the script's shots, the mission's curves they fly along, and the ships they hold. |
engine/maneuvers.md |
Combat maneuvers: the scripts Fight runs, their language, and how it chooses them. |
port/platform.md |
The platform: the openreliant executable on SDL3, how to build and run it on each system, the installer, and joysticks and gamepads. |
port/renderer.md |
The renderer: Surrender's pipeline and Direct3D driver as ported, the software reference device, improvements and what is not yet ported. |
port/scripting.md |
Scripting: mod scripts in Luau, the Luau state, the sandbox and limits, how scripts read and change the engine's values, and the records load scripts can change. |
port/sound.md |
Sound: the stand-in for the Miles Sound System, and its output through SDL3. |
Conventions¶
Addresses are virtual addresses for the payload executable's image base of 0x400000 unless stated otherwise. The shipped binaries carry no symbols. Function and data names are those make ghidra-annotate gives the Ghidra project; names of the form FUN_<address> are Ghidra's placeholders.
Fixed layouts, in the game's files and in its executable's data, are extern structs in the code, their fields the layout's own: enums for codes, packed structs for flag words, arrays for runs, with comptime asserts on the offsets. The readers view the bytes as those structs in place (formats/layout.zig), which needs a little-endian host; the few big-endian fields, the hog archive's and the mission script's jumps, are layout.Big.
Claims are marked where they are not directly verified:
- Unknown: not yet determined.
- Unverified: inferred from surrounding evidence but not confirmed.