← 1.20 ReplayEntropic Dev

REPLAY 1.20 · RESEARCH NOTES

The asset brain

A linked map of loading, rendering, and collision evidence.

34 notes · Latest source update
SOURCE NOTE · Updated 2026-09-28 17:14:39 UTC
On this page

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 case 0x1B is provenance only; dispatch values do not transfer.
  • Replay Load_GfxWorld reaches GfxWorldDraw and a 0x600-entry transient-zone pointer route using eight-byte entries. Replay transient-zone pool metadata separately names type 0x20 gfx_map_trzone, with 0x148 pool element size. These are registration/pool facts, not full root layout.
  • Replay ID 20398 Load_GfxWorldDrawVerts at RVA 0xE303E0 is a complete standalone Load body (SQLite size and PDATA extent 486 bytes). Its parent Load_GfxWorldTransientZone calls it at the same parent-relative offset as the paired source route. The body loads a 0xC8 root 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 0x5D45310 is now named varGfxWorldDrawVerts. The paired child loader reads it as its current-object pointer; the Load_GfxWorldTransientZone parent 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_GfxIndexBuffer is followed by ID 50660 Load_IndexBuffer at RVA 0x18D9F10. 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_GfxWorldSurfaces parents 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_GfxLightAABB parses 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 +8 and +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_XModelPtr from its current-object displacement +0x150. The Mark chain separately runs Mark_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