Skip to content

Resource headers and references

AnvilData modelApplies toRRGRBSWS

A resource has a type hash and a 64-bit ClassID. The outer type id and extension word after ClassID agree on the checked resources; type ids are CRC-32 hashes of class-name bytes, for example Mesh → 0x415D9568. A type hash identifies a class, not an individual resource. Observed · RR

Breakpoint also resolves resource identity by ClassID. An AnvilToolkit extraction filename’s leading number is a positional label, and a decoded data container can hold several resource records. Sourced · GRB · Breakpoint format reference

Resource recordvariableRR100% known

Little-endian. Offsets are relative to this structure.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x04u32type idObserved
0x44u32payload length PObserved
0x84u32name length NObserved
0xCNchar[]nameObserved
12+NHbytesfile headerObservedH = 1 for tag 0; H = 8 + 12R for tag 1.
12+N+H8u64ClassIDObserved
20+N+H4u32extensionObservedEquals the type id on checked resources.
24+N+HP-12bytesbodyObserved

Payload length includes ClassID, extension and body but excludes the file header. Missing that header shifts every subsequent record in a multi-resource container. Observed · RR Sourced · GRB · Breakpoint format reference

Extended file header8 + 12R bytesRR63% known

Little-endian. Offsets are relative to this structure.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x01u8 = 1tagObserved
0x13bytesunknownUnknown02 00 00.
0x44u32row count RObserved
0x812RbytesrowsUnknownTwelve-byte rows; meanings not established.

The extended header occurs on all 9,087 clips in the five-archive Animation enumeration (WhiteRoom patch excluded), the AnimTrackBuiltinTracksTable (0x46A37798) and three ProxyTextures resources: 9,091 resources of the 1.3 million entries. The one stored AnimTrackBuiltinTracksTable is empty, so a table mapping track tags to classes is not stored in the data. Observed · RR

The ordinary resource envelope (payload length, name, ClassID and extension) is validated as an exact-end record for all 147,289 Mesh and 25,162 MeshShape entries across all six installed forges, with no refusals in those populations. Extended-header rows and their Animation population remain separately scoped above. Proven · ordinary envelope

Reference10 bytesRR90% known

Little-endian. All 48,862 LODSelector, 13,579 Material and 10,027 TextureSet resources across the six installed forges read without refusals; resource-reference tag/id framing is covered. Mode semantics remain unknown.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x01u8 = 01tagProven03 and nine zero bytes: refers to nothing
0x11u8modeUnknown1 on every entry read
0x28u64class idProventhe resource referred to

Ten-byte references are measured across LODSelector, Material and TextureSet resources: 01, mode, u64 ClassID; or 03 and nine zero bytes for null. This is not a universal pointer grammar: an instance’s 03 01 + id combines a null pointer and separate link. Observed · RR

Owned and embedded objects generally store u64 object id + u32 type + body. Pointers add a tag: 03 null, 00 or 04 present object, 02 + u64 back-reference. These forms are measured in entity and skeleton bodies. Observed · RR

What does the reference mode select?

Modes 1 and 4 occur, but their complete runtime meaning is not established. Unknown · RR

only in SWS

An entry of Shaun White Skateboarding does not hold one resource with a type, name and 64-bit ClassID header. In a level cell the first data block is an object directory and the second holds that many objects back to back. Object ids are 32 bits. Observed · SWS[all 1,624 cell entries]

Object directory (first block)2 + 8·NSWS100% known

Little-endian. Exact for 45,032 of 45,032 objects of the 253 cells of level 01 and for the 194,062 objects of all 1,624 cell entries; the objects of the second block add up to its length.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x02u16object count NObserved
0x28·Nu32[2][N]objectsObservedper object: its id, then the byte size of its header and body together
Object header13 + name lengthSWS100% known

Little-endian. Header plus declared body size equals the directory size for every class except the two block-allocator classes below.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x04u32classObservedCRC-32 of the class name
0x44u32declared body sizeObserved
0x84u32name length LObserved
0xCLchar[]nameObservedthe object's name, for example a mesh or entity name
12+L1u8NULObservedabsent on Animation and NavMeshManager

The first object of a cell is its GridCellDataBlock, and its id is the entry’s index id. Observed

Animation (0x0FA3067F) and NavMeshManager (0x0B4CE0E0) are block-allocator classes: the byte after the name is 1 instead of the NUL, and the bytes after it begin 02 00 00 and a u32 row count k (read with the 1 as one word, 0x201, then k). Observed

On an Animation the table comes first: the 02 00 00, the u32 k and k rows of 12 bytes, then the managed object. The declared body size counts from the byte after the 1 but omits the table, so the object runs exactly 7 + 12·k bytes past the declared body, to the end of its directory size. This holds on all 80,466 Animation objects of the install; the Animation layout reads from the table’s first byte. Proven · SWS[every Animation of the install] The same arrangement on NavMeshManager is not checked. Unknown

The body of a class derived from ManagedObject begins [managed u8][id u32][class u32] and then the fields. The id equals the directory id and the class equals the header class on every top-level object; the managed byte is 0 or 1 (1 on 5,581 and 0 on 1,562 decoded components). Classes that are not managed objects start [id][class]. Observed · level 01

The same id repeats across cells of one forge: the 45,032 objects of level 01 carry 23,961 distinct ids. Repeats are byte-identical for SoundBao, TextureMap, TextureMapSpec, Animation and MeshShape objects and for the material class, but not for Mesh, where 1,445 repeats differ. Observed · level 01

Field kind Stored form Confidence
Handle or reference One bare u32 id Observed
Object pointer u8 tag: 0 object inline, 1 external with u32 id, 2 link with u32 id, 3 null Observed
Array u32 count then the elements; byte arrays are raw Observed
String u32 length, the bytes, a NUL Observed
Matrix 16 f32 Observed

Riders Republic uses ten-byte references with 64-bit ids instead. Observed

Every component starts with an inline non-managed object of class 0x3C6C77C8: id, class, a kind byte (0xFF on 5,880 Visuals of level 01, 0xFE on 1,296) and a target id. The meaning of 0xFE is unknown. Observed

An entry named *_DataBlock is a level cell (253 in DataPC_01, 1,624 in all forges). Of the 17,905 ids the cells of level 01 list, 12,585 are objects of the same cell and 5,320 belong to other entries; all resolve. Materials, textures, sounds, the per-instance lighting objects and most meshes are reached only by reference. Observed · level 01