HUD colors corrected vs the binary ctor (validated by a period screenshot)
A period pod screenshot from players who know the game flagged the overlay. Stroke-by-stroke re-read of the ctor (@4546-4587) against it: - The range caret triangle is GREEN width 1 (ctor @4550-4551 sets SetLineWidth(1)+SetColor(0,0.75,0) AFTER the yellow bar's CallList) -- my transcription left it yellow/2. Same for the bottom bowtie carets (@4569-4570). Both fixed; the caret polylines also get the binary's explicit 4th closing point (@4558). - The screenshot otherwise CONFIRMS our layout (yellow range bar, green caret, colored pip dots, tick tape + green bowtie, rotating compass, mid-ladder range with no lock = the world-pick terrain range). - Its crosshair is ~2.5x taller with arrowhead arms -- NOT our binary's +-0.04..0.16 program: a different pod revision. Ours stays [T1] to BTL4OPT.EXE 4.10. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
2250b01c6b
commit
3430f87305
+10
-3
@@ -98,9 +98,16 @@ range caret binds to the live target range (`BTSetHudTargetRange`, fed by mech4'
|
||||
**The per-frame `Execute` @004cdcf0 is RECOVERED (task #37, capstone disasm via
|
||||
`tools/disas2.py` — the full annotated read: the task-37 commit + btl4vid.cpp comments) [T1],
|
||||
and every instrument is now live [T2]:**
|
||||
- **Right ladder** = range 0–1200 m: a BAR from ladder-top to the caret + the yellow caret
|
||||
translate (`-scaleY·frac`); pegs at 1200 with no target; the DISPLAYED range slides at
|
||||
**500 m/s** toward the true pick range (HudSimulation :5652 [T1]). **The weapon pips sit on
|
||||
- **Right ladder** = range 0–1200 m: a YELLOW width-2 BAR from ladder-top to the caret + a
|
||||
**GREEN width-1 caret triangle** (ctor @4550-4551 sets green/1 AFTER the yellow bar call —
|
||||
transcription color bug caught by a period reference screenshot, 2026-07-09; same for the
|
||||
bottom bowtie carets @4569-4570); pegs at 1200 with no target; the DISPLAYED range slides at
|
||||
**500 m/s** toward the true pick range (HudSimulation :5652 [T1]). ⚠ A period pod screenshot
|
||||
(`C:\git\image.webp`, likely a DIFFERENT pod revision — its crosshair is ~2.5× taller with
|
||||
arrowhead arms, NOT our binary's ±0.04..0.16 program) structurally CONFIRMS our layout: yellow
|
||||
bar + green caret + colored pip dots on the right ladder, bottom tape + green bowtie, rotating
|
||||
compass circle bottom-left, and a mid-ladder range reading with no lock (the world-pick
|
||||
terrain range). Our glyph constants remain [T1] from OUR 4.10 binary. **The weapon pips sit on
|
||||
this same ladder at each weapon's authored max-range mark** — caret below a pip = that weapon
|
||||
reaches the target. BLH authored data (live dump): 3× ER-M laser red @**500 m** (two stacked
|
||||
at one column; PipExtendedRange=1), 2× missile amber (0.6,0.4,0) @**800 m**, 2× PPC blue
|
||||
|
||||
@@ -1127,16 +1127,22 @@ BTReticleRenderable::BTReticleRenderable(Entity *entity, Scalar *range_attr)
|
||||
// the RIGHT range ladder (13 ticks up the right side, dir 3 = -y travel)
|
||||
BTReticleTickLadder(m, kRetTicksR, 1, kRetScaleY,
|
||||
kRetOriginX, kRetOriginY, 3, kRetTickMinor, kRetTickMajor);
|
||||
// the range CARET (yellow triangle; its called list holds the live
|
||||
// translate the Draw rebuilds each frame from the target range)
|
||||
// the range group (ctor @4546-4560 [T1], color-corrected vs the reference
|
||||
// screenshot which CONFIRMS the binary): the YELLOW width-2 state applies
|
||||
// to the CALLED live list (the range BAR + caret translate the Draw
|
||||
// rebuilds); the caret TRIANGLE itself is GREEN width 1 (@4550-4551 --
|
||||
// SetLineWidth(1) + SetColor(0,0.75,0) BEFORE the polyline).
|
||||
dpl2d_PushState(m);
|
||||
dpl2d_SetLineWidth(m, 2.0f);
|
||||
dpl2d_SetColor(m, 0.75f, 0.75f, 0.0f);
|
||||
dpl2d_SetColor(m, 0.75f, 0.75f, 0.0f); // yellow: the live bar
|
||||
dpl2d_CallList(m, rangeCaretR);
|
||||
dpl2d_SetLineWidth(m, 1.0f);
|
||||
dpl2d_SetColor(m, 0.0f, 0.75f, 0.0f); // green: the caret triangle
|
||||
dpl2d_OpenPolyline(m);
|
||||
dpl2d_AddPoint(m, kRetOriginX - kRetTickMajor, kRetOriginY);
|
||||
dpl2d_AddPoint(m, kRetOriginX - kRetCaret - kRetTickMajor, kRetOriginY + kRetCaret);
|
||||
dpl2d_AddPoint(m, kRetOriginX - kRetCaret - kRetTickMajor, kRetOriginY - kRetCaret);
|
||||
dpl2d_AddPoint(m, kRetOriginX - kRetTickMajor, kRetOriginY); // close @4558
|
||||
dpl2d_ClosePolyline(m);
|
||||
dpl2d_PopState(m);
|
||||
// the BOTTOM heading ladder (21 ticks across, dir 0 = +x travel)
|
||||
@@ -1144,21 +1150,29 @@ BTReticleRenderable::BTReticleRenderable(Entity *entity, Scalar *range_attr)
|
||||
kRetBotX, kRetBotY, 0, kRetTickMinor, kRetTickMajor);
|
||||
// the heading carets (over/under triangles at the ladder centre, shifted
|
||||
// by the called heading translate)
|
||||
// (ctor @4565-4587 [T1], color-corrected like the range caret: yellow
|
||||
// width 2 for the CALLED live twist-deflection list, then GREEN width 1
|
||||
// @4569-4570 for the bowtie triangles. The binary pops state between the
|
||||
// over- and under-caret (@4579) -- same green/1 either way.)
|
||||
{
|
||||
float cx = kRetBotX + kRetBotSpan * 0.5f; // _DAT_004cd7f8 = 0.5 [T1]
|
||||
dpl2d_PushState(m);
|
||||
dpl2d_SetLineWidth(m, 2.0f);
|
||||
dpl2d_SetColor(m, 0.75f, 0.75f, 0.0f);
|
||||
dpl2d_SetColor(m, 0.75f, 0.75f, 0.0f); // yellow: the live deflection line
|
||||
dpl2d_CallList(m, rangeCaretB);
|
||||
dpl2d_SetLineWidth(m, 1.0f);
|
||||
dpl2d_SetColor(m, 0.0f, 0.75f, 0.0f); // green: the bowtie carets
|
||||
dpl2d_OpenPolyline(m);
|
||||
dpl2d_AddPoint(m, cx, kRetBotY - kRetTickMajor);
|
||||
dpl2d_AddPoint(m, cx + kRetCaret, kRetBotY - kRetCaret - kRetTickMajor);
|
||||
dpl2d_AddPoint(m, cx - kRetCaret, kRetBotY - kRetCaret - kRetTickMajor);
|
||||
dpl2d_AddPoint(m, cx, kRetBotY - kRetTickMajor);
|
||||
dpl2d_ClosePolyline(m);
|
||||
dpl2d_OpenPolyline(m);
|
||||
dpl2d_AddPoint(m, cx, kRetBotY + kRetTickMajor);
|
||||
dpl2d_AddPoint(m, cx + kRetCaret, kRetBotY + kRetCaret + kRetTickMajor);
|
||||
dpl2d_AddPoint(m, cx - kRetCaret, kRetBotY + kRetCaret + kRetTickMajor);
|
||||
dpl2d_AddPoint(m, cx, kRetBotY + kRetTickMajor);
|
||||
dpl2d_ClosePolyline(m);
|
||||
dpl2d_PopState(m);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user