board: round five breadth; battle-load to be filed and dropped

This commit is contained in:
alex 2026-09-07 16:26:24 -04:00
parent a1852bbf5b
commit 570bb38659
2 changed files with 11 additions and 1 deletions

View file

@ -21,3 +21,12 @@ most other work. Groomed by **re-quartermaster**.
## Later
7. battle-load path (primary bug) — needs the object model + main loop mapped first.
8. .gob/DDS/model asset parsers (interop tools).
## Breadth queue (next rounds, one Ghidra user at a time; non-Ghidra items can run in parallel)
- Combat sim: `GameCombatSim`/`Mars::CombatSim` tick, `CombatCommand*` dispatch (31 types), weapon flight per `weaponclass` (Ghidra)
- Renderer: D3D9 init → `Mars::DrawDevice`/`Camera` → present loop; `.fx` shader usage (Ghidra)
- Networking: `SNM*`/`FNM*` protocol from the 82 `NetMsgReg_*` factories; lockstep sync + host migration (Ghidra)
- AI: `AIPlayer`, fuzzy `IAIRule`, `TacAISquad*`; how the AI CSV tables are consumed (Ghidra)
- `Mars::Buffer::gobio` VFS + NativeFileSystem override order (Ghidra, small)
- Ship design rules: section sockets/banks → `ShipDesignDef` validation (data + small Ghidra)
- Reader/verify: fold strategic-internals formulas into harness checks against the 3 real saves (Python)

View file

@ -25,10 +25,11 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
| 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 | in-progress | med | 50% | 2026-09-07 | game now runs on VM140 -> dynamic profiling unblocked (round 4) |
| battle-load: thread contention | subsystem | in-progress | med | 50% | 2026-09-07 | time-boxed profile running; on landing: record verdict as a finding and DROP from active backlog (not on the reimpl critical path) |
| 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 | 95% | 2026-09-07 | member table complete (47 rows) incl. ID-list sub-writer FUN_00794cd0, GOWinPly/sprjs/RNG/creps/turnstats/invasions; PlayerTurnStats + Invasion structs in Ghidra. Verify: strict pass pending reader patch |
| 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 | verified | high | 100% | 2026-09-07 | 6 saves, 3 distinct turn states in verify/results/saves/ (byte-deterministic per state). Game runs on VM140 via DXVK 3.1 + lavapipe; recipe findings/subsystems/running-the-game.md |
| save_reader.py | verify | verified | high | 90% | 2026-09-07 | parses all 3 real saves end-to-end (padding=joint confirmed); --strict exit 2 with a precise gap list: verify/results/saves/turn2-strict-issues.txt |
| 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 |
| strategic turn internals (economy/research/colony/movement/diplomacy) | subsystem | in-progress | — | 0% | 2026-09-07 | R5 breadth: formulas + constant->code map from ServerPlayer/ServerSystem::ProcessTurn, TechTree::ProcessResearch, MoveFleet |