Exclude the collision segmentation theories on the full population, and name the

unblock

Continuing on the verbatim payload with the grid known.

Cells are not zero-separated. Counting maximal runs of non-zero u16 across the
whole payload:

  level 0   363 cells     15,115 runs     mean run 25.3 u16
  level 1   384 cells     24,647 runs     mean run 51.5 u16
  level 2    53 cells     31,512 runs     mean run 30.3 u16

Two to three orders of magnitude apart, so a zero run is not a cell boundary.
Cells are not uniform blocks either: level 0 averages 2,488 bytes per cell and
level 2 averages 43,684, which cannot both be one fixed-size record.

The run lengths are not records. Their histogram has a long tail of
near-power-of-two values -- 2,140, 1,184, 840, 816, 628, 604, 562 -- which is
what you get when a run is bounded by a single zero byte inside otherwise dense
data, not by a delimiter. With the 18%-zeros finding, the payload reads as dense
data with sparse holes rather than a delimited sequence.

So all three segmentation theories are now excluded on the full population rather
than on a sample: not ascending u32 tables, not zero-run delimiters, not fixed
stride.

What would actually unblock this: overlay.bin IS the game's own code, and the
collision parser is in it. Camera_CollPrimTest WARNING! - grid out of bounds!
(RAR) was located in the debug string pool earlier, and that string is inside the
collision routine. So the format is recoverable -- but not by measuring bytes. It
needs disassembly of that routine, or an R&C2 reference for the collision cell
record.

Stating that plainly is worth more than another scan. The disc-side measurement
space for collision is exhausted: the bytes are available, verbatim, the grid is
known, and three independent segmentation theories have failed on the whole
population. Further probing without the loader's own logic will not converge.
This commit is contained in:
2026-10-13 04:46:10 +02:00
parent 338af9b7bd
commit d56b439502
+39
View File
@@ -1679,3 +1679,42 @@ alignment preference but a weak one.
can be read as they are, and that they are sparse and variable-length rather than
fixed-stride -- so the next attempt should look for a terminator-delimited walk
through the sparse region, not for a record size.
## Collision: the segmentation is not recoverable from zero structure
Continuing on the verbatim payload, with the grid known.
**Cells are not zero-separated.** Counting maximal runs of non-zero `u16` across
the whole payload:
level 0 363 cells 15,115 runs mean run 25.3 u16
level 1 384 cells 24,647 runs mean run 51.5 u16
level 2 53 cells 31,512 runs mean run 30.3 u16
Two to three orders of magnitude apart, so a zero run is not a cell boundary.
Cells are not uniform blocks either: level 0 averages 2,488 bytes per cell and
level 2 averages 43,684, which cannot both be one fixed-size record.
**The run lengths are not records.** Their histogram has a long tail of
near-power-of-two values -- 2,140, 1,184, 840, 816, 628, 604, 562 -- which is
what you get when a run is bounded by a single zero *byte* inside otherwise dense
data, not by a delimiter. Combined with the 18%-zeros finding, the payload reads
as dense data with sparse holes rather than as a delimited sequence.
**So: not ascending `u32` tables, not zero-run delimiters, not fixed stride.**
All three segmentation theories are now excluded on the full population rather
than on a sample.
### What would actually unblock this
`overlay.bin` **is the game's own code**, and the collision parser is in it --
`Camera_CollPrimTest WARNING! - grid out of bounds! (RAR)` was located in the
debug string pool earlier, and that string is inside the collision routine. The
format is therefore recoverable, but not by measuring bytes: it needs either
disassembly of that routine or a reference for R&C2's collision cell record.
Stating this plainly is worth more than another scan. The disc-side measurement
space for collision is now genuinely exhausted -- the bytes are available, they
are verbatim, the grid is known, and three independent segmentation theories have
failed on the whole population. Further probing without the loader's own logic is
not going to converge.