Skip to content

Runtime class registry

AnvilData modelApplies toRRSWS

The inspected runtime image contains class-registration strings and field metadata absent from the packed executable’s disk image. A registration string whose CRC-32 matches the id corroborates a class name; an arbitrary matching word does not. Observed · RR

The registration table is built while the game starts. A guest-memory snapshot taken at the main menu holds the plaintext class names, and their CRC-32 values name 604 of the 607 forge type ids that no tool or dictionary had named; a snapshot about 50 seconds after process start, at the splash screen, holds none of them. Observed

A dictionary word with a matching CRC-32 can be an accidental collision: 25 of 298 ids previously named from word lists had a different registered class, for example 0x7AAB07A6 is CameraManager rather than unexaminable, and 0x18A4E465 is DBAIEquipmentSet rather than clip_max_yremainders. Observed

Name evidence What it establishes Confidence
Runtime class-registration string, matching CRC-32 Class name in the inspected image Observed
AnvilToolkit, ACExplorer, ReForger or Blacksmith list A tool’s name for a hash in its supported game Sourced · ACExplorer, ReForger, Blacksmith
Wordlist or generated string CRC match Candidate; accidental 32-bit collisions remain possible Inferred
RRAssetStudio Selector, MATERIAL_SET Display labels for BuildTable 0x22ECBE63 Sourced · RRAssetStudio
RRAssetStudio LODMultiMesh Label for LODSelector 0x51DC6B80 Sourced · RRAssetStudio
RRAssetStudio MipMap Label for CompiledMip 0x1D4B87A3 Sourced · RRAssetStudio

Stored fields normally serialize base-class-first and in descriptor order; flag 0x02000000 marks stored fields. Animation, Bone and Visual have custom serialization behavior. ManagedObject-derived bodies carry an extra leading byte. These relationships are checked against real bodies. Observed

Runtime class descriptor prefix40 bytesRR60% known

Little-endian. Offsets are relative to this structure.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x08pointerfield recordsObserved
0x816bytesunknownUnknownStored bytes; meaning is not established.
0x188pointername stringObserved
0x204u32base type idObserved
0x244u32own type idObserved
Runtime field record56 bytesRR32% known

Little-endian. Offsets are relative to this structure.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x04u32flagsObserved
0x44u32field-name CRC-32Observed
0x84u32target class idObserved
0xC2u16fixed-array countObserved
0xE2u16kindObserved
0x102u16element kindObserved
0x1238bytesunknownUnknownStored bytes; meaning is not established.

Field arrays end at the next array or descriptor, not at the first apparently invalid record. A nonzero fixed-array count at offset 12 is valid. Observed

Kind Checked serialized representation Confidence
0x0A f32 Observed
0x11, 0x1F Eight bytes Observed
0x12 Nine-byte link: tag + u64 Observed
0x13, 0x16 Owned / embedded object: u64 + type + body Observed
0x14 Tagged pointer Observed
0x17 Fixed array; descriptor count, no serialized count Observed
0x18 Buffer: u32 count + elements, including object buffers Observed
0x19 Enum u32 Observed
0x1A u32 byte count + chars + NUL; empty string is only the count Observed
0x1B UTF-16 count + units + NUL unit; empty string is only the count Observed
0x1C Ten-byte resource reference Observed
0x1D u32 count + descriptor-selected elements Observed
0x00C0 Pure-bool group after the class’s other fields Observed

Enum descriptors are 16 bytes: pointer, enum-name CRC-32, count. Each target entry is eight bytes: value u32 and enumerator-name CRC-32 u32. An integer and hash remain readable when the spelling is unknown. Observed

Which serializers depart from registry order?

The metadata is not a complete serialization program. Custom orders and shader-constant blocks require class-specific evidence; an unknown class cannot safely be decoded solely from field names. Unknown

only in SWS

The class of an object is the CRC-32 of its class name, and the forge’s name records do not carry it (see forge archives). Level 01 holds 59 classes; 41 of them have a name in the Assassin’s Creed II schema of a community tool, the rest are known only by id unless a name below matches. Observed · level 01

The names below were checked by computing the CRC-32 of each name and comparing it with the stored id. Proven · the CRC-32 equals the id for every name listed

Class Id Role Id equals CRC-32 of the name
GridCellDataBlock 0xAC2BBF68 First object of a level cell; lists the cell’s objects Proven
Entity 0x0984415E Placement and component list Proven
CompiledMesh 0xFC9E1595 Vertex and index data of a mesh Proven
SKGenericMaterial 0xB71F6261 The material class of every drawn surface Proven
TextureMap 0xA2B7E917 A texture with its pixels Proven
CompiledTextureMap 0x13237FE9 The pixel part of a texture, embedded in a TextureMap Proven
TextureMapSpec 0x989DC6B2 A material’s reference to a TextureMap Proven
MeshShape 0xB22B3E61 Triangle collision shape Proven
InertComponent 0x0E5A450A Rigid body of a static prop Proven
RigidBody 0x228F402A Embedded in an InertComponent Proven
CollisionFilterInfo 0x43EF99C2 Collision layer box Proven
SWCollisionMaterial 0xEF0C7E58 Surface type of a collision triangle Proven
SkyLight 0x77EEEBB4 The level’s sun and ambient colour Proven
SWSkateGuidanceSystem 0x5CDCA222 Grind edges of an entity Proven
SWSkateFreeFormGuidanceSystem 0x359BE54E Free-form grind edges Proven
Animation 0x0FA3067F Block-allocator class Proven
NavMeshManager 0x0B4CE0E0 Block-allocator class Proven
RealTreeComponent 0x7338CDF5 A procedural tree on an entity Proven
ActivateRealTreeGrowthEvent 0xCB394D43 Event that grows the trees Proven
LightMapData 0xAA9C9CB4 Baked light map reference Proven
VertexLightData 0x37542FA0 Per-instance baked vertex colours Proven
CompositeLightingStaticComponent 0x95DC9CD6 Baked spherical-harmonic lighting Proven

The executable is not packed (its .text section is stored whole on disk), and its disk image carries the class names as plain strings. Of the 244 classes of the objects the game loads from start-up into level 02 (see start-up), 242 have an id equal to the CRC-32 of a string of three or more characters in the executable; 0xE4365B9B and 0x824A23BA match none. Observed · the strings of the recorded executable against the classes of one run into level 02

The executable’s strings also include field and property names, so a string match names a class less surely than the class’s registration does. By such matches 0x3C6C77C8 (the box that begins every component) is ActiveSlots, 0x9C878790 is TransformationShape and 0x4497D578 is MeshShapeScalable. Inferred · one matching string each The surface-object classes other than SWCollisionMaterial are not known. Unknown

The material class name is present in the game executable; the CRC-32 of the name does not match the property hashes the material’s fields use, which are separate hashes of qualified names such as the InfluenceHidePixelMode property (0x7DACF81C). Observed The role of each class is read from the contents of its objects in the cells. Observed