← 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:16:36 UTC
On this page

XAnim dynamic-bone properties

Asset format index · Animation function evidence

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

The dynamic-bone property loader and the XAnimCurve pointer-loader role are cross-referenced; animation data layout remains unknown. Runtime suit-animation functions are separate from the fastfile parser.

Observed format facts

Replay ID 18947 is q_Load_XAnimDynamicBoneNoiseProperties at RVA 0xDD2B20; its Replay caller role/body ordering supports a dynamic-bone property loader child. Replay SQLite size is 190 while Replay .pdata spans 197 bytes, with the final tail instruction outside the stored size. The q_ prefix remains because caller consensus and target extent differ. The Game-Test PDB symbol is cited by the report for function-name cross-reference only; source extent is not a Replay format fact.

The Replay entry observes DBStreamStart in RCX and passes it to the first stream helper. This is a call ABI observation for that build, not a copied source prototype. No child record widths or alignment recipe are established by the linked report.

Replay ID 19197 q_Load_XAnimCurvePtr at RVA 0xDD9F60 and ID 19756 q_Load_ClothAssetPtr at RVA 0xDFEEE0 have near-identical generated pointer-loader bodies. The paired Load_XAssetHeader routes separate them: case 0x53 calls ID 19197, which reaches the named Load_XAnimCurveAsset root; case 0x57 calls ID 19756, which reaches the named Load_ClothAssetAsset root. Keep both q-prefixed names because their caller census is incomplete and a mapped dynamic-bone-noise parent has a conflicting child edge: source calls Load_XAnimCurvePtr, while Replay ID 18947 calls ID 19756. That exception does not override the independent dispatch/root evidence. The two Replay rows each have SQLite size 239 bytes and a matching 239-byte chained PDATA span; source pointer loaders are 246 bytes. These are code extents, not animation record sizes.

Format boundary

There is no complete XAnim dynamic-bone record schema, serialized member map, or runtime animation consumer path here. Do not infer it from function names or suit-animation helper signatures. Preserve the size/PDATA discrepancy when using this function as a parser anchor.

Local evidence

  • XAnim dynamic-bone noise loader report
  • instruction crosswalk
  • applied name manifest
  • XAnimCurvePtr versus Cloth pointer-loader clone review