re: EnumAsteroid counts the rocks, and the hash join was mine to fix
EnumAsteroid is the frame record's FrameCount - 57/57, zero mismatches. Each
AsteroidFrameName is itself an IDXD record name; those records carry one named
field, FrameCount, plus a run of anonymous ones, and the anonymous fields
number exactly 8 x FrameCount on all 384 occurrences (ratio histogram
{8.0: 384}). The frame record is the placement table, 8 values per asteroid,
and EnumAsteroid counts the rocks. The frame-name -> EnumAsteroid map is
single-valued for all 64 names.
mission-wave-arrivals already met these records - they were the outliers that
broke its route-speed measurement, filtered out by name. regn-map-grid already
guessed the link and said so honestly ("a reading, not a measurement; nothing
here counts objects"). Neither says the count is exact.
The abandoned table lost its placement data too: exactly 7 of 64 frame names
have no record, and they are exactly the seven groups of the unreferenced
tenth object (Frame_Alpha_S01_Asteroid_{01,02,04}, Frame_Alpha_S01_Haze_
{01,02,03}, Frame_TAlpha_S01_Asteroid_03). 57 + 7 = 64, zero partials.
Withdrawing the previous commit's red flag: the hash join works and my call
was wrong. AsteroidDefinition values resolve to their objects' pak entry keys
as name_hash("stage\" + name), 9 of 9, each landing on the object the
frame-prefix join independently predicted. I had hashed the bare file name;
archive_naming.py hashes prefix + name over a path-prefix list. Two
independent joins, 9/9 agreement, both leaving the same tenth object
unreferenced.
Not settled: what the 8 values per asteroid are; why S28_p1 has a volume and
no definition.
All fifteen artefacts byte-identical.
This commit is contained in:
@@ -5752,3 +5752,44 @@ map to their objects' pak entry keys under `name_hash`, nor under that key
|
||||
reduced `mod 0x00FFF9D7` or masked to 24 bits. The join above is by frame prefix,
|
||||
which is direct evidence; either those keys are not name hashes or
|
||||
[[archive-naming]]'s resolver differs from `unitgroup.name_hash`. Not chased.
|
||||
|
||||
---
|
||||
|
||||
## ✅✅ 2026-08-28 — `EnumAsteroid` counts the rocks, and the hash join was mine to fix
|
||||
|
||||
Item (a), both open questions from the asteroid write-up, settled.
|
||||
|
||||
✅ **`EnumAsteroid` is the frame record's `FrameCount` — 57 / 57, zero
|
||||
mismatches.** Each `AsteroidFrameName` is itself an IDXD **record name**; those
|
||||
records carry one named field, `FrameCount`, plus a run of anonymous ones, and
|
||||
the anonymous fields number **exactly 8 × `FrameCount` on all 384 occurrences**
|
||||
(ratio histogram `{8.0: 384}`). The frame record is the **placement table — 8
|
||||
values per asteroid** — and `EnumAsteroid` counts the rocks in it. The
|
||||
frame-name → `EnumAsteroid` map is single-valued for all 64 names.
|
||||
|
||||
[[mission-wave-arrivals]] already met these records — they were the outliers that
|
||||
broke its route-speed measurement, filtered out by name, with "the corpus already
|
||||
records that the 8-value frame is not universal". [[regn-map-grid]] already
|
||||
guessed the link and said so honestly: "stated as a reading, not a measurement;
|
||||
nothing here counts objects." **What neither says is that the count is exact.**
|
||||
|
||||
🔑 **The abandoned table lost its placement data too.** Exactly **7 of 64** frame
|
||||
names have no record, and they are exactly the seven groups of the unreferenced
|
||||
tenth object — `Frame_Alpha_S01_Asteroid_{01,02,04}`,
|
||||
`Frame_Alpha_S01_Haze_{01,02,03}`, `Frame_TAlpha_S01_Asteroid_03`. `57 + 7 = 64`,
|
||||
zero partials either way.
|
||||
|
||||
✅ **Withdrawing yesterday's 🔴: the hash join works, my call was wrong.**
|
||||
`AsteroidDefinition` values resolve to their objects' pak entry keys as
|
||||
**`name_hash("stage\" + name)` — 9 of 9**, each landing on the object the
|
||||
frame-prefix join independently predicted. I had hashed the **bare file name**;
|
||||
[[archive-naming]]'s resolver hashes `prefix + name` over a list of path
|
||||
prefixes, and `stage\` is the one that works here (`Stage\` scores identically —
|
||||
the hash lower-cases). **Two independent joins, 9/9 agreement**, both leaving the
|
||||
same tenth object unreferenced. Lesson: before calling a corpus routine's result
|
||||
a discrepancy, **read how the corpus routine calls it** — the prefix list was in
|
||||
`archive_naming.py` the whole time.
|
||||
|
||||
🟡 Not settled: what the 8 values per asteroid are (position/rotation/scale is the
|
||||
obvious reading, untested — [[regn-map-grid]] has the neighbouring work); why
|
||||
`S28_p1` has an asteroid volume and no definition.
|
||||
|
||||
Reference in New Issue
Block a user