From f481ccbb5f99f5c4297e1c5f01931fbbc9d9fa23 Mon Sep 17 00:00:00 2001 From: Sylpheed RE agent Date: Wed, 26 Aug 2026 07:07:10 +0000 Subject: [PATCH] re: REGN sections 0/1/2 have strides, and section 2 is a plane list The three sections recorded as undecoded are fixed-stride arrays and counts[0..2] are their record counts: 12, 96 and 48 bytes. Section 1's remainder is exactly 0 in 11/11 objects and section 2's exactly 96 in 11/11, which is what makes these strides rather than a coincidence of division. Section 0 is a point list: 13467 of 13467 records lie inside their object's own header bounding box. Section 2 is a plane list, 12 f32: four zeros, a unit normal (|n|=1 in 133573/133573), a signed distance, a point inside the bbox (133573/133573), and a trailing 1.0 (133573/133573). The decisive check is algebraic -- n.p + d must vanish for a real plane, and over all 133573 records the relative residual has a median of 2.29e-08 and a maximum of 2.15e-07. That is float round-off, not a fit. So a REGN object carries a point list and a plane list beside its uniform grid, which fits collision or region-boundary geometry and sits next to MCOL. Still open: section 1 (96 B, 60631 records), what queries the planes, the zeros at [0..3], and the constant 96-byte tail. --- docs/re/BACKLOG.md | 6 +++ docs/re/structures/regn-map-grid.md | 58 +++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index 352f13b..469f503 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -349,6 +349,12 @@ search cannot find a *schedule*. file offsets. ๐Ÿ”ด **Two payload readings refuted** by generalising from the one object they were fitted to (a "bounding-sphere radius" float, and "leaf arrays of `count ร— 4` bytes"). The payload is float-dominated and otherwise โ”. + โœ… **2026-08-26: the other three sections have strides** โ€” 12 / 96 / 48 bytes, + with `counts[0..2]` as their record counts (section 1's remainder is exactly 0 + and section 2's exactly 96, in 11/11). **Section 0 is a point list** + (13 467/13 467 inside the bbox) and **section 2 is a plane list** โ€” unit normal, + signed distance, and a point, with `nยทp + d = 0` to float round-off in + **133 573/133 573**. Section 1 (96 B) still โ”. See [`structures/regn-map-grid.md`](structures/regn-map-grid.md). * ๐Ÿ”ด **`hidden/DefTables.pak` is NOT it** (checked 2026-08-24). The three unnamed schemas are more **model/render** tables in the same vocabulary as the diff --git a/docs/re/structures/regn-map-grid.md b/docs/re/structures/regn-map-grid.md index f44d453..ca41a5b 100644 --- a/docs/re/structures/regn-map-grid.md +++ b/docs/re/structures/regn-map-grid.md @@ -143,3 +143,61 @@ So `.rgn`/`REGN` is stage navigation/path data referenced by the stage record, and `.col`/`MCOL` is the stage collision mesh. This does not by itself validate either of the two refuted cell-payload readings recorded above, but it does explain why the payload looks like a grid of route data. + + +## โœ… Sections 0, 1 and 2 have record strides โ€” and section 2 is a PLANE list + +**2026-08-26.** The three sections the page called undecoded are fixed-stride +record arrays, and `counts[0..2]` are their record counts. Dividing each +section's byte span by its count over all 11 objects: + +| section | stride | evidence | +|---|---|---| +| 0 | **12 bytes** | `count ร— 12` fits with a remainder of 0โ€“12 in **11 / 11** | +| 1 | **96 bytes** | `count ร— 96` fits with a remainder of **exactly 0 in 11 / 11** | +| 2 | **48 bytes** | `count ร— 48` fits with a remainder of **exactly 96 in 11 / 11** | + +Section 1 landing on a zero remainder in every object, and section 2 on the same +96-byte tail in every object, is what makes these strides rather than a +coincidence of division. + +### โœ… Section 0 is a point list + +12 bytes is three `f32`. Over **13 467** records across all 11 objects, **every +one lies inside that object's own header bounding box โ€” 13 467 / 13 467 (100 %)**. +Values land on the box corners (`ยฑ250 000`) and inside. + +### โœ… Section 2 is a plane list โ€” 48 bytes, and the plane equation closes + +Read as twelve `f32`: + + [0..3] zero + [4..6] unit normal |n| = 1 ยฑ 0.02 in 133 573 / 133 573 (100 %) + [7] signed distance d + [8..10] a point on the plane, inside the bbox in 133 573 / 133 573 (100 %) + [11] 1.0 exactly in 133 573 / 133 573 (100 %) + +**The check that makes this a decode**: for a genuine plane, `nยทp + d` must be +zero. Over all **133 573** records: + + |nยทp + d| / scale : median 2.29e-08 p90 6.78e-08 max 2.15e-07 + +That is float round-off, not a fit โ€” the relation holds to the last bits of a +32-bit float in **every record on the disc**. Three independent 100 % properties +(unit normal, point in bbox, trailing 1.0) and an exact algebraic identity are +well past what a wrong reading survives. + +So a `REGN` object carries, alongside its uniform grid, a **point list** and a +**plane list** โ€” which is the shape of collision or region-boundary geometry, +and consistent with `MCOL` sitting beside it. + +### โ” Still open + +* **Section 1** (96 bytes/record, 60 631 records disc-wide) is untouched. Its + content is float-dominated with both large coordinates and mid-range values. + 96 bytes is 24 floats โ€” a plausible shape for a 4ร—4 matrix plus extras, or for + two 48-byte plane records, but nothing is measured. +* **What the planes are for.** "Collision or region boundary" is a reading of the + shape; nothing here shows what queries them. +* The **zeros at `[0..3]`** of every plane record, and the constant `96`-byte + tail after section 2, are unexplained.