diff --git a/docs/formats/core-data-regions.md b/docs/formats/core-data-regions.md index a1ccb48..3a8c5d2 100644 --- a/docs/formats/core-data-regions.md +++ b/docs/formats/core-data-regions.md @@ -150,3 +150,21 @@ range and was about to conclude the body had zero length, which would have been wrong. The last shrub class is a real class with real data, and the NaN filler only appears in degenerate ones. Checking the actual byte pattern rather than concluding from a failed heuristic is what caught it. + +### First structure in the region after shrub + +**Range measured:** level 0, `16047040 .. 16737344` (690,304 bytes), starting +at the first byte after the last shrub class's 240-byte body. Nothing outside +that range is read. + +**Method:** reading the bytes at `+0x20` as `u32` shows ten consecutive +entries whose low halves increase by a constant **0x94 (148)**, followed by a +zero. Read as u32 the high half is `0xf000` for the first nine and `0x0a40` +for the tenth, so the table is ten entries long and ends at `+0x48` +(absolute `16047112`). + +**Result, stated plainly:** a ten-entry table on a 148-byte stride. What the +entries mean, what 148 refers to, and why there are ten, are all unestablished. +Ten does not match any count already known for this level -- 238 moby +classes, 74 tie, 7 shrub, 93 tfrag textures -- so this is not yet tied to any +structure elsewhere in the lump.