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:
@@ -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
|
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
|
fixed-stride -- so the next attempt should look for a terminator-delimited walk
|
||||||
through the sparse region, not for a record size.
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user