diff --git a/context/gauges-hud.md b/context/gauges-hud.md index 4984222..19743b2 100644 --- a/context/gauges-hud.md +++ b/context/gauges-hud.md @@ -192,6 +192,24 @@ the base non-virtual `DrawWarningLamp` existed, so the count stayed green-on-bla dark box in the green dot. Fix: made `DrawWarningLamp` virtual + added the ballistic override. Energy weapons (`EnergyWeaponCluster`, no ammo count) use the base only — unaffected. +## TEMP/STATUS bar (HorizTwoPartBar) tiles a striped pattern from x=0 (2026-07-21) [T1 decomp + render-verified] +The per-weapon TEMP/STATUS bar is a `HorizTwoPartBar` (@004c4170, Execute @004c4340). It renders +**three zones along X** from the interned `tileImage` + two colours (`fillColor`, `backgroundColor`): +- `[0, warnPix)` — `DrawTiledBitmap(tileImage)` (@004c2ff8): the striped/dotted TILE pattern. The + `color` arg is ignored — the tile is blitted with its own pixels (vtbl+0x58) tiled across the zone. +- `[warnPix, valPix)` — `backgroundColor` solid (only when `value > low`; binary keeps the current + colour, still `backgroundColor` from zone 1 — no SetColor). +- `[valPix, width)` — `fillColor` solid. +`warnPix = round(width*low/high)`, `valPix = round(width*value/high)` (value=CurrentTemperature, +low=DegradationTemperature, high=FailureTemperature). **Port bug (fixed):** the Execute had been +rewritten with `DrawFilledRectangle` starting at `warnPix` and NEVER used `tileImage` — so the bar +read as a solid block "starting in the middle", not striped. The sibling `VertTwoPartBar` +(@004c4724, eng-page vertical temp bars) was already correct (uses `DrawTiledBitmap`). Fix mirrored +the tiled three-zone render into `HorizTwoPartBar::Execute`; matches the DOSBox reference (hatched +fill block on the left + dotted tick scale). NOTE the horizontal/vertical bars use DIFFERENT zone +colours (Horiz: zone2=bg, zone3=fill, 2 colours; Vert: zone2=fill, zone3=extra, 3 colours) — do not +assume they are pure mirrors. + ## The secondary screen's THREE views (Damage / Critical / Heat) — mode-gated [T0/T1/T2] The `sec` port stacks three mode-gated mech-schematic layers at offset (50,0) over the always-on radar/heading/speed/messageBoard (`Secondary1`): **Damage** (`ModeSecondaryDamage`,