Phase map for both turn drivers, byte-for-byte from objdump rather than the decompiler. Corrections that matter: - the end-of-turn tail is UNCONDITIONAL. turn-spine.md 2.4 step 11 said it is deferred when encounters are pending; that came from reading an inlined std::vector destructor as a branch (both arms converge at 0x007dcb38). There is no branch on the encounter snapshot in the function, and 0x00794ad0 does not build an encounter list -- it builds the 15 ship-action type ids. - ServerPlayer::ProcessTurn takes one float argument and never reads it. - the ResearchRollPending site runs AFTER ProcessResearch, not before, and clears the flag only when the roll actually fires. Threshold is a strict 0.5f < progress/Cost. Both consumers located by a full displacement scan. - EVENT_NO_RESEARCH's gate is 'completed nothing this turn', not 'nothing available' -- 0x00584e50 collects RESEARCHED techs, not available ones. - a fired research roll costs one or two RNG words, not one: the plague branch draws a second NextInt and posts EVENT_PLAGUE_OUTBREAK. - two StrategyServer bases four bytes apart, and two per-turn counters. - new: the research refund at 0x008914aa, previously unmodelled. 45 addresses in ghidra/addresses.d/lane-t.json (669 -> 722 entries, no dupes). |
||
|---|---|---|
| .. | ||
| control-flow | ||
| objects | ||
| subsystems | ||
| .keep.md | ||
| 00-strategy.md | ||
| 01-fingerprint.md | ||
| _template.md | ||