GfxWorld
Asset format index · Loader cross-reference · Map integration
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
Selected root/child parser routes and visibility accesses are cross-referenced; the complete GfxWorld serialized layout is unknown. Keep Load, Preload, Postload, and Mark graphs separate.
Observed format facts
- Replay XAssetHeader GfxWorld route uses case
0x1F; its Load pointer/root/callback path is cross-referenced to the Game-Test symbol family. The source case0x1Bis provenance only; dispatch values do not transfer. - Replay
Load_GfxWorldreaches GfxWorldDraw and a0x600-entry transient-zone pointer route using eight-byte entries. Replay transient-zone pool metadata separately names type0x20gfx_map_trzone, with0x148pool element size. These are registration/pool facts, not full root layout. - Replay ID 20398
Load_GfxWorldDrawVertsat RVA0xE303E0is a complete standalone Load body (SQLite size and PDATA extent 486 bytes). Its parentLoad_GfxWorldTransientZonecalls it at the same parent-relative offset as the paired source route. The body loads a0xC8root and then processes world position/auxiliary data buffers and BSP index-buffer data. Source extent is 600 bytes; that source value is name-cross-reference provenance only. - Replay global RVA
0x5D45310is now namedvarGfxWorldDrawVerts. The paired child loader reads it as its current-object pointer; theLoad_GfxWorldTransientZoneparent saves it, assigns the draw-verts child pointer, calls the loader, then restores the prior value. The source Atlas address has 142 indexed refs across 17 owners; Replay has 44 across six indexed owners, including four unnamed alternatives. The source has no standalone global PDB type row, so the name records the paired loader role only; it does not establish a shared type, root layout, or offset. - In that Replay sequence, ID 18924
Load_GfxIndexBufferis followed by ID 50660Load_IndexBufferat RVA0x18D9F10. The latter is a separate index-buffer resource operation. Its SQLite size is 91 bytes while complete PDATA is 132 bytes; the indexed Replay prototype shows two parameters although the body consumes four argument registers. This does not establish a shared resource-record or serialized layout. - Paired
Load_GfxWorldSurfacesparents call GfxDrawSurf allocation and array helpers. The Replay array wrapper scales the count by 16; source and Replay parent/callee order supports role, but the helper is generated and widespread. Do not equate GfxDrawSurf buffers with XModel XSurface geometry. - Replay GfxWorld brush-model array parsing is reached through its GfxWorld and AddonMapEnts parent routes and uses an observed 96-byte stride. That increment alone does not establish a serialized C struct.
- Replay
Load_GfxLightAABBparses a 24-byte root, an optional aligned node array with a 28-byte per-node operation, then an optional ushort array. Its Replay function extent is 185 bytes; observed member accesses are at+8and+0x10. The source measurements remain in the evidence report for name cross-reference only. - Replay DPVS static/dynamic loaders have paired access observations. Selected fields such as SModel visibility count/pointers and sorted indices are recorded separately in Replay access artifacts. Source UDT sizes/types are cross-reference context only and are not Replay layout facts.
- Replay Postload StaticModels calls
Postload_XModelPtrfrom its current-object displacement+0x150. The Mark chain separately runsMark_GfxWorldPtr→Mark_GfxWorld→ selected child/asset helpers; unresolved root children remain. The source displacement comparison is available in the linked report but is not a Replay format value.
Format boundary
These byte counts, cases, strides, PDATA extents, and offsets are Replay-specific observations. There is no complete GfxWorld field map, complete asset serialization stream recipe, or established root size here. The Mark child map is also incomplete. Compare each field with Replay reads before using it in a serializer; source data remains name/cross-reference provenance only.
Local evidence
- DPVS and lighting detail
- Brush-model array review
- GfxWorld draw-surface array report
- GfxWorldDrawVerts promotion review, applied manifest, and applied CSV
- Paired GfxWorldDrawVerts global review and global-name manifest
- Load_IndexBuffer report, applied manifest, and applied CSV
- GfxLightAABB report
- DPVS member/access manifest
- GfxWorld StaticModels Postload report
- GfxWorld Mark root/child report