diff --git a/docs/plans/2026-08-22-visualmaster-campaign.md b/docs/plans/2026-08-22-visualmaster-campaign.md index 250215c5..ce2fc78a 100644 --- a/docs/plans/2026-08-22-visualmaster-campaign.md +++ b/docs/plans/2026-08-22-visualmaster-campaign.md @@ -46,6 +46,32 @@ AC-specific constants — a number without a decomp/DAT anchor gets a register row in the same commit — and the pack-off path is the oracle: any slice that moves a pack-off pixel outside its declared mask is a bug, not a tuning. +## Lesson carried into every slice — a branch that exists is not a branch that runs + +VM2 found that Campaign AR's #226 port, the 2026-08-21 findings doc it was +briefed from, and the AR review's "probably" were all describing the +**fallback** branch of retail's detail pass — the `stage == 0` framebuffer +blend that retail only takes when the adapter cannot advertise +`D3DTEXOPCAPS_PREMODULATE`. Real hardware (the owner's AMD, and anything +modern) takes the single-pass texture-stage branch, which computes a +different formula with the opposite sign of effect (darkens, not brightens). +The decomp was read correctly three times; what nobody did until VM2 was +spend two minutes reading the capability on a live client. + +Binding rule for this campaign and after: **when retail gates a mechanism +behind a capability, preference, or `trysinglepass`-style switch, the port +is not done until the gate's live value is recorded** — a cdb read on the +PDB-paired client, cited in the port's note with the binary GUID. "Grep +named → decompile → port" answers what the code *says*; only the live read +answers what it *does* on the hardware the game actually ran on. A guess +about driver caps ("rarely advertised") is not evidence and must not appear +in a review verdict. + +Corollary for brightness questions: the owner's live "too bright" (exposure +1.0 → 0.80) was the pack-on gamma-space tonemap (F4, VM3), not this. The +detail overlay's fallback brightening is +3 % on building shells only; the +single-pass path darkens by ~10 %. Neither explains a scene-wide level. + ## Slice ledger | Slice | Closes | Gate |