diff --git a/docs/data/live-entities-2026-08-26.txt b/docs/data/live-entities-2026-08-26.txt new file mode 100644 index 0000000..52dee9a --- /dev/null +++ b/docs/data/live-entities-2026-08-26.txt @@ -0,0 +1,60 @@ +# 14 unit definitions +# 13448 moving triples +# 101 typed live entities (delta +0x130) + 82 UN_e007_ADAN_Turret + 12 UN_e010_ADAN_Attacker_S + 7 UN_f001_TCAF_DeltaSaber_T + 0xbdbd4d80 UN_e007_ADAN_Turret ( -605.1, -2016.4, -775.8) 299.3/s + 0xbdbe2d80 UN_e007_ADAN_Turret ( +8818.7, +1982.0, -4660.9) 168.1/s + 0xbdbe4d80 UN_e007_ADAN_Turret ( +4682.1, +3982.3, -7616.4) 375.0/s + 0xbdbe6d80 UN_e007_ADAN_Turret ( +4171.4, -2063.5, +8598.7) 375.0/s + 0xbdbe8d80 UN_e007_ADAN_Turret ( -1138.1, +3241.2, -7444.5) 375.0/s + 0xbdbead80 UN_e007_ADAN_Turret ( +1751.2, +1308.4, -2255.7) 375.0/s + 0xbdbecd80 UN_e007_ADAN_Turret ( -3669.7, +2318.9, -6596.7) 375.0/s + 0xbdbeed80 UN_e007_ADAN_Turret ( +3197.8, -1249.1, +1957.7) 375.0/s + 0xbdbf0d80 UN_e007_ADAN_Turret ( -1532.0, -3657.4, +290.2) 347.1/s + 0xbdbf2d80 UN_e007_ADAN_Turret ( +4686.9, +5035.6, -2863.0) 375.0/s + 0xbdbf4d80 UN_e007_ADAN_Turret ( -1024.5, -1406.1, -1883.5) 328.2/s + 0xbdbf6d80 UN_e007_ADAN_Turret ( -236.1, -3491.9, -1077.0) 278.8/s + 0xbdbf8d80 UN_e007_ADAN_Turret ( -960.5, -2582.1, -2389.4) 316.2/s + 0xbdbfad80 UN_e007_ADAN_Turret ( +287.3, -2096.9, -2341.1) 245.6/s + 0xbdbfcd80 UN_e007_ADAN_Turret ( -1248.2, -1280.8, -758.2) 299.9/s + 0xbdbfed80 UN_e007_ADAN_Turret ( +1062.3, -3333.9, -730.9) 342.4/s + 0xbdc00d80 UN_e007_ADAN_Turret ( -338.6, -3061.5, -2715.1) 348.0/s + 0xbdc02d80 UN_e007_ADAN_Turret ( +27.6, -3003.5, -809.7) 321.9/s + 0xbdc04d80 UN_e007_ADAN_Turret ( -1045.8, -1654.2, -930.4) 299.3/s + 0xbdc06d80 UN_e007_ADAN_Turret ( +4054.3, +486.8, +5380.5) 373.6/s + 0xbdc08d80 UN_e007_ADAN_Turret ( -5261.1, -2998.9, -5941.8) 327.2/s + 0xbdc0ad80 UN_e007_ADAN_Turret ( +6785.0, -1521.2, +2765.6) 374.7/s + 0xbdc0cd80 UN_e007_ADAN_Turret ( +9635.8, +1875.9, -3655.4) 220.1/s + 0xbdc0ed80 UN_e007_ADAN_Turret ( +6063.5, -7579.2, +2960.0) 364.3/s + 0xbdc10d80 UN_e007_ADAN_Turret ( -5245.4, -3028.1, -3107.8) 374.4/s + 0xbdc12d80 UN_e007_ADAN_Turret ( +6466.4, -3998.9, -1019.7) 373.8/s + 0xbdc14d80 UN_e007_ADAN_Turret ( +8835.2, +175.4, +1871.9) 367.2/s + 0xbdc16d80 UN_e007_ADAN_Turret ( +3185.0, -7015.6, -4185.3) 364.7/s + 0xbdc18d80 UN_e007_ADAN_Turret ( +12196.1, +555.9, +6471.6) 300.0/s + 0xbdc1ad80 UN_e007_ADAN_Turret ( +12058.9, +665.9, +6394.6) 300.0/s + 0xbdc1cd80 UN_e007_ADAN_Turret ( +12099.5, +669.0, +6590.4) 300.0/s + 0xbdc1ed80 UN_e007_ADAN_Turret ( +9985.9, +2220.1, +5345.4) 300.0/s + 0xbdc20d80 UN_e007_ADAN_Turret ( +9885.2, +2326.6, +5261.3) 300.0/s + 0xbdc22d80 UN_e007_ADAN_Turret ( +10205.0, +2303.1, +5403.2) 300.0/s + 0xbdc24d80 UN_e007_ADAN_Turret ( +9599.2, +2361.0, +8476.8) 300.0/s + 0xbdc26d80 UN_e007_ADAN_Turret ( +9433.6, +2480.4, +8610.1) 300.0/s + 0xbdc28d80 UN_e007_ADAN_Turret ( +9406.3, +2475.7, +8412.1) 300.0/s + 0xbdc32d80 UN_e007_ADAN_Turret ( -5666.9, -5665.0, +9063.5) 298.3/s + 0xbdc34d80 UN_e007_ADAN_Turret ( -5422.2, -4971.4, +9487.5) 300.0/s + 0xbdc36d80 UN_e007_ADAN_Turret ( -5651.5, -5393.7, +10621.7) 300.0/s + 0xbdc38d80 UN_e007_ADAN_Turret ( -8119.5, -4529.7, +10533.8) 298.2/s + 0xbdc3ad80 UN_e007_ADAN_Turret ( -7652.0, -4195.3, +11353.5) 300.0/s + 0xbdc3cd80 UN_e007_ADAN_Turret ( -7303.3, -4020.6, +10925.0) 300.0/s + 0xbdc3ed80 UN_e007_ADAN_Turret ( -4539.1, -4088.6, +11803.4) 300.0/s + 0xbdc40d80 UN_e007_ADAN_Turret ( -4438.1, -3976.8, +11817.8) 300.0/s + 0xbdc42d80 UN_e007_ADAN_Turret ( -4656.3, -4005.1, +11835.4) 300.0/s + 0xbdc44d80 UN_e007_ADAN_Turret ( -495.8, -5629.6, -6268.1) 300.0/s + 0xbdc46d80 UN_e007_ADAN_Turret ( -521.1, -5533.7, -6370.2) 300.0/s + 0xbdc48d80 UN_e007_ADAN_Turret ( -431.5, -5516.7, -6164.9) 300.0/s + 0xbdc4ad80 UN_e007_ADAN_Turret ( -1704.3, -4324.1, -7845.7) 300.0/s + 0xbdc4cd80 UN_e007_ADAN_Turret ( -2149.5, -4295.1, -7971.3) 300.0/s + 0xbdc4ed80 UN_e007_ADAN_Turret ( -3408.0, -4492.4, -7841.5) 300.0/s + 0xbdc50d80 UN_e007_ADAN_Turret ( -2291.3, -4375.4, -4873.9) 300.0/s + 0xbdc52d80 UN_e007_ADAN_Turret ( -3566.3, -4475.6, -4845.7) 300.0/s diff --git a/docs/re/captures/entities-live-working.png b/docs/re/captures/entities-live-working.png new file mode 100644 index 0000000..f3010f4 Binary files /dev/null and b/docs/re/captures/entities-live-working.png differ diff --git a/docs/re/entity-readout-working.md b/docs/re/entity-readout-working.md new file mode 100644 index 0000000..d354edc --- /dev/null +++ b/docs/re/entity-readout-working.md @@ -0,0 +1,70 @@ +# ✅ The live entity readout works end-to-end — and "0 movers" was a state, not a defect + +Measured 2026-08-26, fresh boot, save slot 01, Stage 01, live HUD. +Artifact: [`../data/live-entities-2026-08-26.txt`](../data/live-entities-2026-08-26.txt). + +## The readout + +`entities2.py self 0x130`, unmodified, with its committed VA window: + +``` +# 14 unit definitions +# 9142 moving triples +# 74 typed live entities (delta +0x130) +# player entity: pos va 0xbdb3bd80 UN_f001_TCAF_DeltaSaber_T +# pos (-2012.3,-2267.7,-1968.4) speed 51.6/s +# orthonormal 3x3 blocks inside the player object: 4 + pos-0x0070 stride 16: (-0.013,-0.202,+0.979) (-0.149,+0.969,+0.198) (-0.989,-0.143,-0.043) +``` + +Position, speed, and the orientation matrix at **`pos − 0x70` with 16-byte +stride** — exactly what [`autopilot-memory-driven.md`](autopilot-memory-driven.md) +documents. Nothing needed fixing. + +## ✅ "0 movers" is a STATE, not a tool defect + +[Last iteration](entity-position-anchor-refuted.md) recorded zero moving triples +across the whole 357 MB mapping, repeatedly, while the mission visibly ran. Same +mission, same tools, same window, fresh run — sampled seven times, 4 s apart: + +| round | movers, whole map | movers in `0xBD00_0000–0xBE00_0000` | +|---|---|---| +| 0 | 111 105 | 16 396 | +| 1 | 122 919 | 10 266 | +| 3 | 75 268 | 10 627 | +| 6 | 47 206 | 10 406 | + +So the committed window is populated and the tooling is sound. **What differed +between the two runs is not determined** — the earlier session's zero persisted +for minutes across several commands, so it was not a sampling artifact either. +Recorded as an open question rather than explained away: something about that +session's state held the simulation while the renderer kept drawing. + +**Practical rule:** before concluding anything from a memory probe here, check +that movers are non-zero. It is a one-line precondition and it would have saved +this corpus two iterations. + +## ❔ The two enumerations disagree, and the difference is not noise + +| method | total | `e007_Turret` | `DeltaSaber_T` | +|---|---|---|---| +| `INST_VTABLE` scan ([roster](entities-live-roster.md)) | 42 | 20 | 6 | +| moving triple + def ptr at `+0x130` | **101** | **82** | 7 | + +Most of the excess is "turrets" moving at **~375/s** — several of them at exactly +`375.0/s`, and a turret is a fixed emplacement. 🟡 The likely reading is that +these are **projectiles**, carrying the definition pointer of whatever fired +them, so the `+0x130` method types a shot as its shooter. That is consistent with +the note in `autopilot-memory-driven.md` about separating "20-odd real combatants +from ~30 000 moving particles" — the same hazard, one layer up. + +❌ Not asserted as fact: no test here distinguishes a projectile from a fast-moving +craft. The clean check is whether these objects have a hull value at `+0x154` and +whether they persist for more than a few seconds. + +## Withdrawn claims, now positively disproved + +Both "tool defects" reported two iterations ago are dead, and this run is the +positive evidence rather than merely the absence of the negative: +`entities2.py`'s window returns 10 000–20 000 movers in it, and the unmodified +tool produces a typed, positioned, oriented entity list.