Cyd and Claude Opus 4.8
ca988db9ed
radar: draw the MAP GEOMETRY -- staticEntities was empty on two stacked gates
...
Playtester DOS-binary comparison: our radar showed blips + wedge but NO map
outlines (the DOS reference draws the whole arena). MapDisplay::DrawStatic
was always a faithful, working drawer of the rtype-18 GaugeImage outlines
(the same records docs/MAPS.html renders) -- it drew nothing because
staticEntityList was empty, from TWO stacked port regressions; fixing either
alone is insufficient:
1. GaugeRenderer::RebuildEntityGrid (per frame) Clear()ed BOTH grids and
refilled from the DYNAMIC host iterators only -- the 528 static-flagged
(0x20C) UnscalableTerrain map placements, which carry most arena outlines
(arenall: 59 static vs 3 dynamic), were structurally excluded, and the
wipe also destroyed anything the interest feed contributed.
2. The notify feed's static gate was transcribed as
Terrain::GetClassDerivations() -- but the shipped content has ZERO Terrain
records (census: 1008x UnscalableTerrain + 789x CulturalIcon, both
deriving from Entity in our headers), so the predicate was dead code and
rejected 100% of map geometry. @0x4e6ef8 was almost certainly
UnscalableTerrain's derivation (or the shipped machine's MUNGA derived
UnscalableTerrain from Terrain). [T3 on which; the corrected gate is
what the content requires.]
FIX:
- staticEntities is now PERSISTENT: filled ONCE per mission inside
RebuildEntityGrid (AllEntityIterator; keep UnscalableTerrain-derived
entities carrying a rtype-18 GaugeImage -- covers the static walls AND
the dynamic CulturalIcon props the 2026-07-12 phantom-red-pip fix routed
here). Deterministic whether or not the interest feed delivers.
- Per-frame RebuildEntityGrid now rebuilds only the MOVING grid (Mover
filter + dead-mech skip unchanged).
- Lifecycle: cleared + refill-armed at LinkToEntity (the pod process hosts
many missions); the gate-corrected remove-notify prunes destroyed
statics; the gate-corrected add-notify is guarded pre-fill so nothing
double-adds.
- BT_RADAR_LOG=1 prints '[radar] static grid filled: N'.
Verified live (glass, DEV.EGG): fill reports 326 map entities; structure
outlines now draw on the radar at the correct zoom; blips + sweep wedge
unregressed. KB: GAUGE_COMPOSITE row 24 + the Phase-4 staticEntities
deferral resolved.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-13 07:26:15 -05:00
..
2026-07-31 10:41:39 -05:00
2026-07-31 10:41:39 -05:00
2026-07-16 11:04:34 -05:00
2026-07-05 21:03:40 -05:00
2026-07-18 16:10:29 -05:00
2026-07-05 21:03:40 -05:00
2026-08-02 16:45:54 -05:00
2026-08-02 16:45:54 -05:00
2026-07-19 23:30:43 -05:00
2026-07-06 10:59:45 -05:00
2026-08-11 17:08:48 -05:00
2026-07-05 21:03:40 -05:00
2026-08-03 23:56:53 -05:00
2026-07-21 08:49:58 -05:00
2026-07-30 10:10:29 -05:00
2026-07-07 21:39:47 -05:00
2026-08-07 23:35:37 -05:00
2026-08-03 17:53:33 -05:00
2026-08-13 07:26:15 -05:00
2026-07-25 17:20:19 -05:00
2026-08-03 13:53:09 -05:00
2026-08-03 17:31:16 -05:00
2026-07-11 06:46:54 -05:00
2026-07-05 21:03:40 -05:00
2026-08-03 13:53:09 -05:00
2026-07-05 21:03:40 -05:00
2026-07-17 15:24:52 -05:00
2026-07-05 21:03:40 -05:00
2026-08-11 18:54:12 -05:00
2026-08-05 19:44:23 -05:00
2026-08-11 00:21:46 -05:00
2026-08-07 11:43:54 -05:00
2026-07-05 21:03:40 -05:00
2026-08-11 18:54:12 -05:00
2026-07-20 14:51:54 -05:00
#168 settled from the binary: projectiles are TIME-capped, never range-capped -- plain shell 5.0s (@4bddec), missile burnTime+10s + y<-1 kill-plane (@4bef78), WeaponRange is fire-control only (FireWeapon @4bcc60 has no range gate), so AFC50 hits at 2000+u are authentic. Two port defects killed: the invented len*1.3+60 flight cap (replaced by the authentic clocks) and the stale-point auto-hit (unguided contact tested the fire-time pick, so a locked AC could not miss a moving target -- the pool now tracks the live target). KB: decomp-reference gains the flight/expiry section, CLASSMAP's swapped authoritative/ghost Performance labels corrected (ReplicantInstance=4 [T0]), missile.cpp's misdecoded @4bf594 constant pool re-annotated, Missile proximity fuse 4.0u recorded. Bench: proj_ttl_bench.sh (probe fizzles 5.012/12.012 vs caps 5.0/12.0; 86 field launches, 0 early, 0 phantoms). Rides along: the #163 BTSteamNet_ShutdownAll header decl that missed d3f4b9a.
2026-08-11 04:39:37 -05:00
2026-08-04 15:49:14 -05:00
2026-08-01 19:47:30 -05:00
2026-07-25 01:50:07 -05:00
2026-07-05 21:03:40 -05:00
2026-08-11 16:13:39 -05:00
2026-08-12 02:14:34 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-30 17:04:24 -05:00
2026-07-27 08:09:31 -05:00
2026-08-11 02:33:14 -05:00
2026-08-02 20:05:06 -05:00
2026-08-02 20:05:06 -05:00
2026-07-19 15:15:44 -05:00
2026-08-08 10:36:36 -05:00
2026-08-08 10:36:36 -05:00
2026-07-22 13:22:10 -05:00
2026-07-22 13:22:10 -05:00
2026-08-07 00:50:54 -05:00
2026-07-30 16:18:28 -05:00
2026-08-13 02:42:07 -05:00
2026-08-13 02:42:07 -05:00
2026-08-07 23:35:37 -05:00
2026-08-07 07:48:04 -05:00
2026-08-05 12:41:55 -05:00
2026-08-09 17:26:27 -05:00
2026-07-19 16:28:38 -05:00
2026-07-27 07:42:37 -05:00
#165 ROOT-CAUSED after three failed fixes -- the binary keeps ONE destroyed cell per subsystem (+0x40: fire gate, dial X, wire header, every writer) and the port split it into FOUR stores; the everyday CRIT-LOTTERY kill (MechWeapon::TakeDamage) bypassed the reconstructed base and wrote only the X store, so X'd weapons kept firing while every prior fix aimed at a gate that was never broken (the 4,213-refusal bench drove BT_KILL_SUBSYS, which writes all cells -- it validated readers, not writers). FIX: MechWeapon::TakeDamage chains to MechSubsystem::TakeDamage (@0x4ac0bc semantics); the port-authored FSM-from-damage tail is DELETED (it parked partial-crit weapons at level 1 -- no FSM case, the silent freeze, and with beamFlag armed the 883 hanging beam: #164 's upstream writer, caught red-handed by berserker's 20x STUCK-ON receipts); the phantom uninitialized simulationState int is ctor-initialized and kept in lockstep at every destroyed write; always-on [crit] DESTROYED receipt makes crit kills field-visible. BT_CRIT_SUBSYS bench hook drives the REAL writer path; weaponx_bench PASS: kill phase 0 FIRED post / 5,664 refusals / X+gate agree, partial phase keeps firing. Gotcha 30; #174 filed (cascade re-descend)
2026-08-13 00:35:33 -05:00
2026-08-02 16:45:54 -05:00
2026-08-04 09:44:42 -05:00
2026-07-05 21:03:40 -05:00
#165 ROOT-CAUSED after three failed fixes -- the binary keeps ONE destroyed cell per subsystem (+0x40: fire gate, dial X, wire header, every writer) and the port split it into FOUR stores; the everyday CRIT-LOTTERY kill (MechWeapon::TakeDamage) bypassed the reconstructed base and wrote only the X store, so X'd weapons kept firing while every prior fix aimed at a gate that was never broken (the 4,213-refusal bench drove BT_KILL_SUBSYS, which writes all cells -- it validated readers, not writers). FIX: MechWeapon::TakeDamage chains to MechSubsystem::TakeDamage (@0x4ac0bc semantics); the port-authored FSM-from-damage tail is DELETED (it parked partial-crit weapons at level 1 -- no FSM case, the silent freeze, and with beamFlag armed the 883 hanging beam: #164 's upstream writer, caught red-handed by berserker's 20x STUCK-ON receipts); the phantom uninitialized simulationState int is ctor-initialized and kept in lockstep at every destroyed write; always-on [crit] DESTROYED receipt makes crit kills field-visible. BT_CRIT_SUBSYS bench hook drives the REAL writer path; weaponx_bench PASS: kill phase 0 FIRED post / 5,664 refusals / X+gate agree, partial phase keeps firing. Gotcha 30; #174 filed (cascade re-descend)
2026-08-13 00:35:33 -05:00
2026-08-02 16:45:54 -05:00
2026-08-01 04:42:15 -05:00
2026-08-01 04:42:15 -05:00
2026-08-02 13:31:36 -05:00
2026-08-02 02:29:58 -05:00
#168 settled from the binary: projectiles are TIME-capped, never range-capped -- plain shell 5.0s (@4bddec), missile burnTime+10s + y<-1 kill-plane (@4bef78), WeaponRange is fire-control only (FireWeapon @4bcc60 has no range gate), so AFC50 hits at 2000+u are authentic. Two port defects killed: the invented len*1.3+60 flight cap (replaced by the authentic clocks) and the stale-point auto-hit (unguided contact tested the fire-time pick, so a locked AC could not miss a moving target -- the pool now tracks the live target). KB: decomp-reference gains the flight/expiry section, CLASSMAP's swapped authoritative/ghost Performance labels corrected (ReplicantInstance=4 [T0]), missile.cpp's misdecoded @4bf594 constant pool re-annotated, Missile proximity fuse 4.0u recorded. Bench: proj_ttl_bench.sh (probe fizzles 5.012/12.012 vs caps 5.0/12.0; 86 field launches, 0 early, 0 phantoms). Rides along: the #163 BTSteamNet_ShutdownAll header decl that missed d3f4b9a.
2026-08-11 04:39:37 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-08-09 16:19:36 -05:00
2026-07-31 09:17:31 -05:00
2026-07-05 21:03:40 -05:00
2026-08-11 17:08:48 -05:00
2026-08-04 03:18:50 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-08-11 16:45:12 -05:00
2026-08-03 17:53:33 -05:00
2026-08-05 19:44:23 -05:00
2026-08-05 19:44:23 -05:00
2026-07-27 08:09:31 -05:00
2026-07-27 08:09:31 -05:00
2026-07-25 10:05:57 -05:00
2026-07-25 10:05:57 -05:00
2026-07-16 14:16:14 -05:00
2026-07-25 10:46:59 -05:00
2026-07-25 10:46:59 -05:00
2026-08-08 13:59:39 -05:00
2026-08-08 10:36:36 -05:00