
Joe DiPrimaandClaude Fable 5
c2193e2e80
#49 FIXED + OPERATOR-VERIFIED: the radar draws the static world again -- walls, buttes, hills, ridges, buildings, trees. Root cause (radar/map drift audit, 3-agent, receipts in scratchpad/night17/radar_audit_*.txt): the original filed every pip-bearing Terrain-GRAPH entity into the gauge staticEntities grid via the interest feed (@004cbfa0: pip gate, Mover->moving / Terrain->static; the derivation graph parents UnscalableTerrain 0x2A + CulturalIcon 0x5E + Landmark 0x56 onto Terrain [T0 TERRAIN.cpp:183]), and MapDisplay::DrawStatic (@004c25b4) drew each entity's AUTHORED vector-outline pip (110 type-0x12 GIMs ship: wall1-3, aw01-05 arena walls, buttea-e, hillg/dhillg, sr1e/n/s/w polar ridges, trees, buildings) world-rotated and metre-scaled. The port's RebuildEntityGrid (the shim replacing the dropped interest feed) iterated DYNAMIC entities only -- the 1008 statically-registered UnscalableTerrain instances never reached the grid, so the scope showed no world at all. Fix: a third pass files non-dynamic Terrain-graph entities from HostManager::AllEntityIterator; pipless entities (floors, sky, the wall10k outer fence -- authentically invisible on the shipped radar too) no-op at the pip lookup exactly as on the machine. Receipts: [map-grid] worldStatics census + a capped per-static [map] dump (cls/rid/pip/dsq) symmetric to DrawMoving's. Benched: grass files cls=42 hill rid=2190 pip=1 drawing at 466m beside 313 trees; arena1 files 126 world statics with the aw wall sections (rid 1918/1915) pip=1 drawing and the unpipped walkway/banner props correctly skipped (authored omissions preserved). Operator-verified live on arena1: 'muuuuch better'.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bw71WVsccjwW7uKRg4aWD
2026-08-14 16:21:44 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-24 08:51:50 -05:00
2026-07-05 21:03:40 -05:00
2026-07-30 11:22:47 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-08-13 19:54:34 -05:00
2026-07-16 08:36:28 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-16 15:11:17 -05:00
2026-07-16 15:11:17 -05:00
2026-08-13 19:54:50 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-16 08:36:28 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-29 19:22:01 -05:00
2026-07-05 21:03:40 -05:00
2026-08-13 01:56:36 -05:00
2026-08-01 20:04:14 -05:00
2026-07-15 23:52:06 -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-07-05 21:03:40 -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
#154 settled: the generator-out warning was authored on the WRONG EDGE in the shipped 1995 content -- BTL4.RES keys it (trigState=4, inverse=1, Start) = fire on LEAVING GeneratorOut, so a thermal trip was SILENT and the klaxon played at recovery/respawn (live-benched both ways; decode triple-verified: T0 read order, binary @0043e7d4/@0043eb40 semantics, independent byte parse; 144-row census = the game's ONLY inverse-Start fault trigger). DELIBERATE DEVIATION (user-approved, the port's only content override): AudioStateTrigger ctor flips it to enter-4 at stream time -- warning at the TRIP, silent at recovery + the respawn 4->0 edge; BT_GEN_WARN_SHIPPED=1 restores shipped. Threshold audit closes AUTHENTIC: recovery at heatAlarm NormalHeat = T<=1000 vs trip at 2000 = exactly the manual p23 half-cooled rule, and the heat bar's red fill maps to it to the tick. Era-witness reconciliation: BT 4.10 shipped NO speech samples (full AUDIO1/2.RES census) -- the remembered voice at trip is Firestorm's. Rig: BT_GEN_HEAT injection + BT_AUDIO_EDGE receipts, gen_edge_bench.sh PASS (4 fixups, trip FIRED, recovery 0). KB: decomp-reference generator section + no-speech note; manual p23 also answered #133 (X = crit-destroyed).
2026-08-11 07:39:42 -05:00
2026-07-16 15:11:17 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-18 16:10:29 -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-07-18 16:10:29 -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-07-05 21:03:40 -05:00
2026-07-16 15:11:17 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-11 15:32:24 -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-07-31 10:19:24 -05:00
2026-07-05 21:03:40 -05:00
2026-08-02 09:09:49 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-30 01:20:13 -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-07-05 21:03:40 -05:00
2026-07-09 12:09:50 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-23 08:51:14 -05:00
2026-07-22 20:41:36 -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-07-08 15:43:08 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-12 17:24:15 -05:00
2026-07-06 10:59:45 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
#49 FIXED + OPERATOR-VERIFIED: the radar draws the static world again -- walls, buttes, hills, ridges, buildings, trees. Root cause (radar/map drift audit, 3-agent, receipts in scratchpad/night17/radar_audit_*.txt): the original filed every pip-bearing Terrain-GRAPH entity into the gauge staticEntities grid via the interest feed (@004cbfa0: pip gate, Mover->moving / Terrain->static; the derivation graph parents UnscalableTerrain 0x2A + CulturalIcon 0x5E + Landmark 0x56 onto Terrain [T0 TERRAIN.cpp:183]), and MapDisplay::DrawStatic (@004c25b4) drew each entity's AUTHORED vector-outline pip (110 type-0x12 GIMs ship: wall1-3, aw01-05 arena walls, buttea-e, hillg/dhillg, sr1e/n/s/w polar ridges, trees, buildings) world-rotated and metre-scaled. The port's RebuildEntityGrid (the shim replacing the dropped interest feed) iterated DYNAMIC entities only -- the 1008 statically-registered UnscalableTerrain instances never reached the grid, so the scope showed no world at all. Fix: a third pass files non-dynamic Terrain-graph entities from HostManager::AllEntityIterator; pipless entities (floors, sky, the wall10k outer fence -- authentically invisible on the shipped radar too) no-op at the pip lookup exactly as on the machine. Receipts: [map-grid] worldStatics census + a capped per-static [map] dump (cls/rid/pip/dsq) symmetric to DrawMoving's. Benched: grass files cls=42 hill rid=2190 pip=1 drawing at 466m beside 313 trees; arena1 files 126 world statics with the aw wall sections (rid 1918/1915) pip=1 drawing and the unpipped walkway/banner props correctly skipped (authored omissions preserved). Operator-verified live on arena1: 'muuuuch better'.
2026-08-14 16:21:44 -05:00
2026-07-06 22:07:19 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-08-09 17:09:15 -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-11 17:08:48 -05:00
2026-08-11 17:08:48 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-15 10:08:45 -05:00
2026-07-15 10:08:45 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-09 12:09:50 -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-07-05 21:03:40 -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-12 01:43:14 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-25 10:05:57 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-08-02 11:25:49 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-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-07 10:21:15 -05:00
2026-08-02 17:12:48 -05:00
2026-07-05 21:03:40 -05:00
2026-08-02 08:26:53 -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-07-05 21:03:40 -05:00
2026-07-29 19:22:01 -05:00
2026-07-29 22:29:03 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-29 19:22:01 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-27 08:09:31 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -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-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
#154 settled: the generator-out warning was authored on the WRONG EDGE in the shipped 1995 content -- BTL4.RES keys it (trigState=4, inverse=1, Start) = fire on LEAVING GeneratorOut, so a thermal trip was SILENT and the klaxon played at recovery/respawn (live-benched both ways; decode triple-verified: T0 read order, binary @0043e7d4/@0043eb40 semantics, independent byte parse; 144-row census = the game's ONLY inverse-Start fault trigger). DELIBERATE DEVIATION (user-approved, the port's only content override): AudioStateTrigger ctor flips it to enter-4 at stream time -- warning at the TRIP, silent at recovery + the respawn 4->0 edge; BT_GEN_WARN_SHIPPED=1 restores shipped. Threshold audit closes AUTHENTIC: recovery at heatAlarm NormalHeat = T<=1000 vs trip at 2000 = exactly the manual p23 half-cooled rule, and the heat bar's red fill maps to it to the tick. Era-witness reconciliation: BT 4.10 shipped NO speech samples (full AUDIO1/2.RES census) -- the remembered voice at trip is Firestorm's. Rig: BT_GEN_HEAT injection + BT_AUDIO_EDGE receipts, gen_edge_bench.sh PASS (4 fixups, trip FIRED, recovery 0). KB: decomp-reference generator section + no-speech note; manual p23 also answered #133 (X = crit-destroyed).
2026-08-11 07:39:42 -05:00
2026-07-16 15:11:17 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00