XModel, XModelSurfs, and XSurface
Asset format index · Function cross-reference · Runtime flow
Replay 1.20 layout scope
Layout and serialization statements on this page refer only to Replay 1.20 unless explicitly labeled as Game-Test cross-reference provenance. Source names help identify analogous functions; source UDT sizes, offsets, strides, and dispatch values are not Replay layout evidence.
Evidence status
Partial Replay parser observations only. Replay has named Load/Preload/Postload roots and selected child roles, but no full XModel or XModelSurfs schema has been reconstructed. Replay render submission from loaded surfaces to DObj remains unresolved. Game-Test names in the linked cross-reference reports identify candidates only; no source layout value is transferred here.
Observed format facts
| Replay item | Replay 1.20 observation | Limit |
|---|---|---|
| XModel root | Replay Load path uses dispatch case 0x09; the root stream route advances 0x2B0 bytes. |
This route observation is not a complete root schema or ABI declaration. |
| XModelSurfs route | Replay case 0x08 reaches Load_XModelSurfsPtr → Load_XModelSurfs; pointer route also reaches an asset helper. |
Pointer handling is not a full pointee schema. |
| XSurface scalar loop | Replay ID 20339 q_Load_XSurface is called in a count-controlled loop with 0xC0 steps. |
The increment does not prove serialized fields; Replay caller census remains incomplete. |
| Subdivision level array | Replay ID 20342 q_Load_XSurfaceSubdivLevelArray traverses count × 0x238; row size is 810 bytes across three PDATA fragments. |
Stride and function extent are separate measurements; neither is a transferable record size. |
| AlwaysloadedFlagSet | Replay reads 0x38 bytes and accesses pairs at +0x18/+0x20 and +0x30/+0x28. |
Per-build accesses, not a struct declaration. |
| XModel reference marking | Replay ID 20351 Mark_XModelPtrArray; caller sites at +0xAE, +0xC4, +0xF2. |
Mark reachability does not describe Load order or pointer-array serialization. |
Format boundary
No complete Replay XModel/XModelSurfs field map, texture/material dependency walk, or Replay DObj surface-consumer chain is established here. The decal-volume-info child remains a q-candidate, and its nested Replay MapEdgeListPtr wrapper does not resolve a decal-mask field meaning. Source measurements are retained only in the reports as cross-reference context; Replay values above must not be generalized to another executable.
Local evidence
- XModel root cross-reference and source member-offset leads
- XSurface scalar-loader review
- Subdivision-array report
- AlwaysloadedFlagSet report
- Mark_XModelPtrArray report
- Decal-volume info candidate report