sots-re/campaign/board.md

5.7 KiB

Campaign board

Status flow: backlog → in-progress → mapped → verified (or blocked). verified requires re-verifier evidence. Maintained by re-quartermaster.

Target Type Status Conf Coverage Updated Notes
RTTI class inventory meta mapped high 100% 2026-09-07 findings/objects/00-inventory.md — 1924 types, engine=Mars
.gob format subsystem mapped high 100% 2026-09-07 renamed uncompressed ZIP (community-known)
Mars::AppStartup (entry) control-flow mapped high 100% 2026-09-07 entry 0x00925794 -> WinMain 0x0089dd30 -> DemoApp ctor 0x0089c950 -> Mars::Application::Initialize 0x008a0e50 (config/affinity, D3D9, window, sound thread, OnStartup -> net thread). findings/control-flow/turn-spine.md
main loop / tick dispatch control-flow mapped high 90% 2026-09-07 Application::Run 0x0089f5b0: FrameTimer, PanelManager, DemoApp::OnUpdate 0x00898800 / OnTick 0x0089a640 / OnRender 0x00899210. Turn pipeline: EndTurn 0x00783be0 -> BeginProcessTurn 0x007d98e0 -> StrategyServer::ProcessTurn 0x007dc6c0 -> RunCombatRound 0x007cbe80 -> SETurnResults -> ResumePlaying 0x007ddc90. Lockstep on every machine
Game::ClientPlayer / AIPlayer object mapped high 80% 2026-09-07 empire STATE = Game::ServerPlayer (~110 members, abs 0x28..0x3dc; IStreamable +0x3a0; read FUN_008804d0 / write FUN_008563e0). ClientPlayer = client view. findings/objects/struct-recovery.md. Verify vs real save pending
Game::StarSystem object mapped high 80% 2026-09-07 Game::ServerSystem = star system + colony (~90 members, abs 0x18..0x2d4; read FUN_0075d4b0 / write FUN_00749630). PlayerView per-player fog view. Verify vs real save pending
Game::Planet / DOPlanet object mapped high 100% 2026-09-07 Planet : Actor is a RENDER actor, not streamed; all colony state is in ServerSystem (+PlayerView in NVs map)
Game::ShipDesignDef / DesignList object in-progress low 30% 2026-09-07 vft@0x009fef64 (3), leaf (0 bases); mostly data-defined via .shipsection. fields TBD
Game::FleetLayout object mapped high 80% 2026-09-07 StarFleet (read FUN_00702470/write FUN_00701070) + StarShip (FUN_00853fa0/FUN_008291f0) layouts recovered incl. FlightPlan/Waypoint/NodeRoute; FleetLayout = UI. Verify vs real save pending
Mars entity chain object mapped high 100% 2026-09-07 EntityBase@0x00a36fd0 (10) -> PhysicalEntity@0x00a3710c (12) -> TargetableEntity -> Actor@0x009e2114 (36); mixins RigidBody/Body/NetworkObject/HandleObject/IScriptable
Game::GameCombatSim + CombatCommand* subsystem backlog — 0% 2026-09-07 tactical combat (~40 command types)
D3D9 device init subsystem backlog — 0% 2026-09-07 Mars::DrawDevice/Camera → Direct3DCreate9/CreateDevice
Mars::Buffer::gobio subsystem in-progress — 0% 2026-09-07 .gob I/O; anchors the verify/ parser
serializable-types vs save structs verify mapped high 100% 2026-09-07 findings/objects/save-editor-structs.md (~130 structs, exact order); verifier: cross-check vs binary next
battle-load path subsystem mapped med 60% 2026-09-07 mitigation = blunt affinity pin FUN_0089ee70 (SetProcessAffinityMask); NO topology detection -> no adaptive branch; cause = emergent multi-core contention
class hierarchy + key vftables meta mapped high 100% 2026-09-07 findings/objects/ghidra-recon.md - RTTI Base_Class_Array read directly; vftables for 8 core classes
data-model (.gob data files) subsystem mapped high 100% 2026-09-07 findings/subsystems/data-model.md - tech/weapons/sections/races/AI all data-driven
string / config intel meta mapped high 100% 2026-09-07 findings/subsystems/strings-and-config.md
Mars brace-block parser subsystem verified high 100% 2026-09-07 verify/parsers/ (mars_data, flat_kv, manifest, effect_txt, verify.py): 1595/1595 files parse, 0 dangling cross-links; catalogs in verify/results/data-catalogs/
networking (SNM/FNM + GameSpy) subsystem backlog — 0% 2026-09-07 ~60 SNM strategy msgs, FNM file-xfer/host-migration; lockstep sim
battle-load: thread contention subsystem mapped med 50% 2026-09-07 3 CreateThread sites CLEARED (net watchdog 0x00901f40, TIME_CRITICAL audio streaming 0x008ef1d0, starmap blob mesh 0x00735bb0). Sim+combat load are on the MAIN thread -> candidates: audio thread CS (g_musicCS) or D3D9 driver threads. Next: dynamic profile under x32dbg once the game runs
UI screen & flow map meta mapped high 100% 2026-09-07 findings/subsystems/ui-screen-map.md - 36 screens; screens are C++ on Mars controls (NOT data); turn state machine recovered
Game::StrategyServer (sim block) object mapped high 80% 2026-09-07 top-level sim state; read FUN_007d27a0 / write FUN_0079fa70; IStreamable +0
stream primitive API subsystem mapped high 100% 2026-09-07 IStreamable vft: +0x18 string, +0x1c bool, +0x20 float, +0x24 int, +0x28 nested, +0x30 raw; FUN_00816490 = NetworkObject handle id
real save for verification verify in-progress — 0% 2026-09-07 need the game running (DXVK+lavapipe on VM140) -> autosave -> parse with recovered layouts
save_reader.py verify mapped high 90% 2026-09-07 verify/save-reader/: walker+schema, 26 tests pass on synthetic fixtures (both padding modes); SAVE_FORMAT.md. 'verified' only after a real save parses --strict
Ghidra type write-back meta verified high 100% 2026-09-07 structs saved in project (ServerSystem 87f, ServerPlayer 110f, StarFleet, StarShip, StrategyServer partial, 22 nested); 52 serializers + primitives + ~60 spine fns renamed; decompile shows field names