The names live outside MiscBin: they are the MapPath / MapMesh / CollisionMeshes field values of the per-stage StageResource object (IDXD schema 3c9ae32e, in every GP_MAIN_GAME_<lang>.pak), and each hashes with the ordinary pak name_hash straight to a TOC entry. 40/40 resolve, no collisions -- the 11 REGN as <stem>.rgn, the 11 MCOL as <stem>.col, and the 18 remaining blobs as CollisionSet_S01..S16 / _Tutorial / _test.bin. The .pe string table at 651540 was the way in: MapMesh and MapPath sit adjacent there. This upgrades the pairing claim. The first section of mcol-collision.md could only say REGN and MCOL had matching *distributions* of bbox and cell size, and flagged that as not an object-to-object link. A phase record names one .rgn and one .col, and all 11/11 pairs share a stem and agree exactly on both. The names also check the format work from outside it: mapmesh_box_500km.col is the object decoded here as 8 vertices and 12 triangles spanning exactly +-250000, and its name says that cube is 500 km across -- so one world unit is one metre, and a wrong stride could not have produced a box that measures what its own filename claims. 70 of the 87 phases use it: most stages' only collision is the arena wall, and _AsteroidVolume_ names the rest. Still open: the 18 CollisionSet_*.bin are named but not decoded (all exactly 1675148 bytes), and CMapColliderBridge in the RTTI names the runtime consumer without following it into the code.
3.5 KiB
3.5 KiB