Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LVL.ReadPTR
- 0x0: num_ptrs = ptrReader.ReadUInt32();
- 0x4: int file = ptrReader.ReadInt32();
- 0x8: uint ptr_ptr = ptrReader.ReadUInt32();
- 0xC: uint ptr = reader.ReadUInt32();
- 0x10: uint ptr_ptr = ptrReader.ReadUInt32(); // the address the pointer should be located at
- 0x14: int src_file = ptrReader.ReadInt32(); // the file the pointer should be located in
- 0x18: uint ptr = ptrReader.ReadUInt32();
- 0x1C: int target_file = ptrReader.ReadInt32();
- LocalizationStructure.ReadInternal
- 0x0: field0 = reader.ReadUInt32();
- 0x4: && Settings.s.game != Settings.Game.LargoWinch) field4 = reader.ReadUInt32();
- 0x8: num_languages = reader.ReadUInt16();
- 0xA: reader.ReadUInt16();
- 0xC: off_text_languages = Pointer.Read(reader);
- 0x10: off_text_misc = Pointer.Read(reader);
- LocalizationStructure.<ReadInternal>b__2
- 0x0: languages[i].off_textTable = Pointer.Read(reader);
- 0x4: languages[i].num_entries_max = reader.ReadUInt16();
- 0x6: languages[i].num_entries = reader.ReadUInt16();
- LocalizationStructure.<ReadInternal>b__6
- 0x0: Pointer off_text = Pointer.Read(reader);
- LocalizationStructure.<ReadInternal>b__7
- 0x0: languages[i].entries[j] = reader.ReadNullDelimitedString();
- LocalizationStructure.<ReadInternal>b__3
- 0x0: misc.off_textTable = Pointer.Read(reader);
- 0x4: misc.num_entries_max = reader.ReadUInt16();
- 0x6: misc.num_entries = reader.ReadUInt16();
- LocalizationStructure.<ReadInternal>b__8
- 0x0: Pointer off_text = Pointer.Read(reader);
- LocalizationStructure.<ReadInternal>b__9
- 0x0: misc.entries[j] = reader.ReadNullDelimitedString();
- MapLoader.ReadLevelNames
- 0x0: levels[i] = reader.ReadString(0x1E);
- MapLoader.ReadLanguages
- 0x0: languages[i] = reader.ReadString(0x14);
- 0x14: languages_loc[i] = reader.ReadString(0x14);
- TextureInfo.Read
- 0x0: tex.field0 = reader.ReadUInt32(); // 888 or 8888
- 0x4: tex.field4 = reader.ReadUInt16(); // 20
- 0x6: tex.field6 = reader.ReadUInt16();
- 0x8: tex.off_tempBuffer = Pointer.Read(reader); // always null because it's stored here dynamically
- 0xC: tex.fieldC = reader.ReadUInt32();
- 0x10: tex.field10 = reader.ReadUInt32();
- 0x14: tex.flags = reader.ReadUInt32();
- 0x18: tex.height_ = reader.ReadUInt16();
- 0x1A: tex.width_ = reader.ReadUInt16();
- 0x1C: tex.height = reader.ReadUInt16();
- 0x1E: tex.width = reader.ReadUInt16();
- 0x20: tex.currentScrollX = reader.ReadUInt32();
- 0x24: tex.currentScrollY = reader.ReadUInt32();
- 0x28: tex.textureScrollingEnabled = reader.ReadUInt32();
- 0x2C: tex.alphaMask = reader.ReadUInt32();
- 0x30: tex.field30 = reader.ReadUInt32();
- 0x34: if (Settings.s.engineVersion == Settings.EngineVersion.R3) tex.numMipmaps = reader.ReadUInt32();
- 0x38: tex.field38 = reader.ReadUInt32();
- 0x3C: tex.field3C = reader.ReadUInt32();
- 0x40: tex.field40 = reader.ReadUInt32();
- 0x44: tex.field44 = reader.ReadUInt32();
- 0x48: tex.field48 = reader.ReadByte();
- 0x49: tex.flagsByte = reader.ReadByte(); // contains stuff like tiling mode
- 0x4A: tex.name = reader.ReadNullDelimitedString();
- GF.ReadChannels
- 0x0: byte b1 = reader.ReadByte();
- 0x1: byte value = reader.ReadByte();
- 0x2: byte count = reader.ReadByte();
- InputStructure.Read
- 0x0: reader.ReadBytes(0x16BC);
- 0x16BC: input.num_entryActions = reader.ReadUInt32();
- 0x16C0: input.off_entryActions = Pointer.Read(reader);
- 0x16C4: reader.ReadBytes(0x418);
- EntryAction.Read
- 0x0: ea.num_keywords = reader.ReadUInt32();
- 0x4: ea.off_keywords = Pointer.Read(reader);
- 0x8: ea.off_name = Pointer.Read(reader);
- 0xC: if (Settings.s.hasExtraInputData || Settings.s.platform == Settings.Platform.DC || Settings.s.engineVersion == Settings.EngineVersion.R3) ea.off_name2 = Pointer.Read(reader);
- 0x10: reader.ReadInt32(); // -2
- 0x14: reader.ReadUInt32();
- 0x18: ea.active = reader.ReadByte();
- 0x19: reader.ReadBytes(3);
- KeyWord.Read
- 0x0: keyword.indexOrKeyCode = reader.ReadUInt16();
- 0x2: keyword.valueAsInt = reader.ReadInt32();
- 0x6: if (Settings.s.engineVersion == Settings.EngineVersion.R3 && Settings.s.game != Settings.Game.LargoWinch) reader.ReadInt32();
- 0xA: if(Settings.s.game != Settings.Game.R2Revolution) reader.ReadInt32();
- EntryAction.<Read>b__2
- 0x0: ea.name = reader.ReadNullDelimitedString();
- EntryAction.<Read>b__3
- 0x0: ea.name2 = reader.ReadNullDelimitedString();
- MapLoader.<ReadKeypadDefine>b__0
- 0x0: entry.keycode = reader.ReadInt16();
- 0x2: entry.unk2 = reader.ReadInt16();
- 0x4: reader.ReadUInt32();
- 0x8: reader.ReadUInt32();
- MapLoader.<ReadKeypadDefine>b__1
- 0x0: entry.name = reader.ReadNullDelimitedString();
- MapLoader.<ReadKeypadDefine>b__2
- 0x0: entry.name2 = reader.ReadNullDelimitedString();
- FontStructure.ReadInternal
- 0x0: num_fontsBitmap = reader.ReadByte();
- 0x1: num_fonts = reader.ReadByte();
- 0x2: reader.Align(4); // Align position
- 0x4: fontsBitmap[i] = Pointer.Read(reader);
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- MapLoader.ReadObjectNamesTable
- 0x0: Pointer off_names_next = Pointer.Read(reader);
- 0x4: Pointer off_names_prev = Pointer.Read(reader);
- 0x8: Pointer off_header = Pointer.Read(reader);
- 0xC: Pointer off_name = Pointer.Read(reader);
- 0x10: objectTypes[index][j].unk1 = reader.ReadByte();
- 0x11: objectTypes[index][j].id = reader.ReadByte();
- 0x12: objectTypes[index][j].unk2 = reader.ReadUInt16();
- 0x14: objectTypes[index][j].name = reader.ReadNullDelimitedString();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- VisualMaterial.Read
- 0x0: m.flags = reader.ReadUInt32(); // After this: 0x4
- 0x4: m.ambientCoef = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x8: m.diffuseCoef = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0xC: m.specularCoef = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x10: m.color = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); // 0x44
- 0x14: reader.ReadUInt32(); // current refresh number for scrolling/animated textures, 0x48
- 0x18: m.off_animTextures_first = Pointer.Read(reader);
- 0x1C: m.off_animTextures_current = Pointer.Read(reader);
- 0x20: m.num_animTextures = reader.ReadUInt16();
- 0x22: reader.ReadUInt16();
- 0x24: reader.ReadUInt32();
- 0x28: reader.ReadByte();
- 0x29: reader.ReadByte();
- 0x2A: m.properties = reader.ReadByte();
- 0x2B: reader.ReadByte();
- 0x2C: reader.ReadUInt32();
- 0x30: reader.ReadUInt32();
- 0x34: m.num_textures_in_material = reader.ReadUInt32();
- 0x38: t.off_texture = Pointer.Read(reader);
- 0x3C: t.textureOp = reader.ReadByte();
- 0x3D: t.shadingMode = reader.ReadByte();
- 0x3E: t.uvFunction = reader.ReadByte();
- 0x3F: t.scrollByte = reader.ReadByte();
- 0x40: t.properties = reader.ReadInt32();
- 0x44: reader.ReadInt32();
- 0x48: reader.ReadInt32();
- 0x4C: t.scrollX = reader.ReadSingle();
- 0x50: t.scrollY = reader.ReadSingle();
- 0x54: t.rotateSpeed = reader.ReadSingle();
- 0x58: t.rotateDirection = reader.ReadSingle();
- 0x5C: reader.ReadInt32();
- 0x60: reader.ReadInt32();
- 0x64: t.currentScrollX = reader.ReadSingle();
- 0x68: t.currentScrollY = reader.ReadSingle();
- 0x6C: reader.ReadInt32();
- 0x70: reader.ReadInt32();
- 0x74: reader.ReadInt32();
- 0x78: reader.ReadInt32();
- 0x7C: t.blendIndex = reader.ReadUInt32();
- 0x80: Pointer off_animTexture = Pointer.Read(reader);
- 0x84: float time = reader.ReadSingle();
- 0x88: Pointer off_nextAnimTexture = Pointer.Read(reader);
- Family.Read
- 0x0: f.off_family_next = Pointer.Read(reader);
- 0x4: f.off_family_prev = Pointer.Read(reader);
- 0x8: f.off_family_hdr = Pointer.Read(reader); // at this offset, start and end pointers appear again
- 0xC: f.family_index = reader.ReadUInt32();
- 0x10: f.off_physical_list_default = Pointer.Read(reader); // Default objects table
- 0x14: f.off_bounding_volume = Pointer.Read(reader);
- 0x18: f.off_vector4s = Pointer.Read(reader);
- 0x1C: f.num_vector4s = reader.ReadUInt32();
- 0x20: reader.ReadUInt32();
- 0x24: reader.ReadUInt32();
- 0x28: reader.ReadByte();
- 0x29: reader.ReadByte();
- 0x2A: f.animBank = reader.ReadByte();
- 0x2B: f.properties = reader.ReadByte();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- State.Read
- 0x0: if (Settings.s.linkedListType != LinkedList.Type.Minimize) s.off_entry_next = Pointer.Read(reader);
- 0x4: s.off_anim_ref = Pointer.Read(reader);
- 0x8: s.off_nextState = Pointer.Read(reader, allowMinusOne: true);
- 0xC: s.off_mechanicsIDCard = Pointer.Read(reader);
- 0x10: s.off_cine_mapname = Pointer.Read(reader);
- 0x14: s.off_cine_name = Pointer.Read(reader);
- 0x18: reader.ReadByte();
- 0x19: s.speed = reader.ReadByte();
- 0x1A: reader.ReadByte();
- 0x1B: s.customStateBits = reader.ReadByte();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- State.ReadInternal
- 0x0: off_entry_next = Pointer.Read(reader);
- 0x4: off_targetState = Pointer.Read(reader);
- 0x8: off_stateToGo = Pointer.Read(reader);
- 0xC: linkingType = reader.ReadByte();
- 0xD: reader.ReadByte();
- 0xE: reader.ReadByte();
- 0xF: reader.ReadByte();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- MechanicsIDCard.Read
- 0x0: c.type = reader.ReadUInt32(); // 0x0
- 0x4: c.flags = reader.ReadUInt32(); // 0x4
- 0x8: c.gravity = reader.ReadSingle();
- 0xC: c.maxRebound = reader.ReadSingle();
- 0x10: reader.ReadUInt32();
- 0x14: c.slopeLimit = reader.ReadSingle();
- 0x18: float x = reader.ReadSingle();
- 0x1C: float z = reader.ReadSingle();
- 0x20: float y = reader.ReadSingle();
- 0x24: c.tiltIntensity = reader.ReadSingle();
- 0x28: c.tiltInertia = reader.ReadSingle();
- 0x2C: c.tiltOrigin = reader.ReadSingle();
- 0x30: x = reader.ReadSingle();
- 0x34: z = reader.ReadSingle();
- 0x38: y = reader.ReadSingle();
- AnimationReference.ReadInternal
- 0x0: num_onlyFrames = reader.ReadUInt16();
- 0x2: speed = reader.ReadByte();
- 0x3: num_channels = reader.ReadByte();
- 0x4: off_events = Pointer.Read(reader);
- 0x8: off_morphData = Pointer.Read(reader); // Runtime only?
- 0xC: anim_index = reader.ReadUInt16();
- 0xE: num_events = reader.ReadByte();
- 0xF: transition = reader.ReadByte();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- ObjectList.Read
- 0x0: if(Settings.s.linkedListType != LinkedList.Type.Minimize) ol.off_objList_next = Pointer.Read(reader);
- 0x4: ol.off_objList_start = Pointer.Read(reader);
- 0x8: ol.off_objList_2 = Pointer.Read(reader); // is this a copy of the list or something?
- 0xC: ol.num_entries = reader.ReadUInt16();
- 0xE: reader.ReadUInt16();
- 0x10: ol.entries[i].off_scale = Pointer.Read(reader);
- 0x14: ol.entries[i].off_po = Pointer.Read(reader);
- 0x18: ol.entries[i].thirdvalue = reader.ReadUInt32();
- 0x1C: ol.entries[i].unk0 = reader.ReadUInt16();
- 0x1E: ol.entries[i].unk1 = reader.ReadUInt16();
- 0x20: ol.entries[i].lastvalue = reader.ReadUInt32();
- PhysicalObject.Read
- 0x0: po.off_visualSet = Pointer.Read(reader);
- 0x4: po.off_collideSet = Pointer.Read(reader);
- 0x8: po.off_visualBoundingVolume = Pointer.Read(reader);
- 0xC: po.off_collideBoundingVolume = Pointer.Read(reader);
- PhysicalObject.<Read>b__0
- 0x0: reader.ReadUInt32(); // 0
- 0x4: numberOfLOD = reader.ReadUInt16();
- 0x6: po.visualSetType = reader.ReadUInt16();
- 0x8: Pointer off_LODDistances = Pointer.Read(reader);
- 0xC: Pointer off_LODDataOffsets = Pointer.Read(reader);
- 0x10: reader.ReadUInt32(); // always 0? RLI table offset
- 0x14: if (Settings.s.engineVersion > Settings.EngineVersion.Montreal) reader.ReadUInt32(); // always 0? number of RLI
- PhysicalObject.<Read>b__3
- 0x0: po.visualSet[i].LODdistance = reader.ReadSingle();
- PhysicalObject.<Read>b__4
- 0x0: po.visualSet[i].off_data = Pointer.Read(reader);
- GeometricObject.Read
- 0x0: m.off_vertices = Pointer.Read(reader);
- 0x4: m.off_normals = Pointer.Read(reader);
- 0x8: m.off_blendWeights = Pointer.Read(reader);
- 0xC: reader.ReadInt32();
- 0x10: m.off_element_types = Pointer.Read(reader);
- 0x14: m.off_elements = Pointer.Read(reader);
- 0x18: reader.ReadInt32();
- 0x1C: m.off_parallelBoxes = Pointer.Read(reader);
- 0x20: m.lookAtMode = reader.ReadUInt32();
- 0x24: m.num_vertices = reader.ReadUInt16();
- 0x26: m.num_elements = reader.ReadUInt16();
- 0x28: reader.ReadUInt16();
- 0x2A: m.num_parallelBoxes = reader.ReadUInt16();
- 0x2C: m.sphereRadius = reader.ReadSingle(); // bounding volume radius
- 0x30: float sphereX = reader.ReadSingle(); // x
- 0x34: float sphereZ = reader.ReadSingle(); // z
- 0x38: float sphereY = reader.ReadSingle(); // y
- 0x3C: reader.ReadInt32();
- 0x40: reader.ReadInt32();
- 0x44: reader.ReadInt16();
- 0x46: m.element_types[i] = reader.ReadUInt16();
- 0x48: Pointer block_offset = Pointer.Read(reader);
- GeometricObject.<Read>b__0
- 0x0: float x = reader.ReadSingle();
- 0x4: float z = reader.ReadSingle();
- 0x8: float y = reader.ReadSingle();
- GeometricObject.<Read>b__1
- 0x0: float x = reader.ReadSingle();
- 0x4: float z = reader.ReadSingle();
- 0x8: float y = reader.ReadSingle();
- GeometricObjectElementTriangles.Read
- 0x0: sm.off_material = Pointer.Read(reader);
- 0x4: sm.num_triangles = reader.ReadUInt16();
- 0x6: sm.num_uvs = reader.ReadUInt16();
- 0x8: sm.num_uvMaps = reader.ReadUInt16();
- 0xA: sm.lightmap_index = reader.ReadInt16();
- 0xC: sm.off_triangles = Pointer.Read(reader); // 1 entry = 3 shorts. Max: num_vertices
- 0x10: sm.off_mapping_uvs = Pointer.Read(reader); // 1 entry = 3 shorts. Max: num_weights
- 0x14: sm.off_normals = Pointer.Read(reader); // 1 entry = 3 floats
- 0x18: sm.off_uvs = Pointer.Read(reader); // 1 entry = 2 floats
- 0x1C: reader.ReadUInt32();
- 0x20: reader.ReadUInt32();
- 0x24: sm.off_vertex_indices = Pointer.Read(reader);
- 0x28: sm.num_vertex_indices = reader.ReadUInt16();
- 0x2A: sm.parallelBox = reader.ReadUInt16();
- 0x2C: reader.ReadUInt32();
- 0x30: sm.isVisibleInPortal = reader.ReadByte();
- 0x31: reader.ReadByte();
- 0x32: sm.OPT_num_mapping_entries = reader.ReadUInt16(); // num_shorts
- 0x34: sm.OPT_off_mapping_vertices = Pointer.Read(reader); // shorts_offset1 (1st array of size num_shorts, max_num_vertices)
- 0x38: sm.OPT_off_mapping_uvs = Pointer.Read(reader); // shorts_offset2 (2nd array of size num_shorts, max: num_weights)
- 0x3C: sm.OPT_num_triangleStrip = reader.ReadUInt16(); // num_shorts2
- 0x3E: sm.OPT_num_disconnectedTriangles = reader.ReadUInt16();
- 0x40: sm.OPT_off_triangleStrip = Pointer.Read(reader); // shorts2_offset (array of size num_shorts2)
- 0x44: sm.OPT_off_disconnectedTriangles = Pointer.Read(reader);
- GeometricObjectElementTriangles.<Read>b__3
- 0x0: sm.mapping_uvs[um][j] = reader.ReadInt16();
- GeometricObjectElementTriangles.<Read>b__4
- 0x0: sm.uvs[j] = new Vector2(reader.ReadSingle(), reader.ReadSingle());
- GeometricObjectElementTriangles.<Read>b__7
- 0x0: sm.triangles[(j * 3) + 0] = reader.ReadInt16();
- 0x2: sm.triangles[(j * 3) + 1] = reader.ReadInt16();
- 0x4: sm.triangles[(j * 3) + 2] = reader.ReadInt16();
- GeometricObjectElementTriangles.<Read>b__8
- 0x0: float x = reader.ReadSingle();
- 0x4: float z = reader.ReadSingle();
- 0x8: float y = reader.ReadSingle();
- DeformSet.Read
- 0x0: d.off_weights = Pointer.Read(reader);
- 0x4: d.off_bones = Pointer.Read(reader);
- 0x8: d.num_weights = reader.ReadUInt16();
- 0xA: d.num_bones = reader.ReadByte();
- 0xB: Pointer off_weightsForVertex = Pointer.Read(reader);
- 0xF: ushort vertex_index = reader.ReadUInt16();
- 0x11: byte num_weightsForVertex = reader.ReadByte();
- 0x12: reader.ReadByte(); // 0, padding
- 0x13: ushort weight = reader.ReadUInt16();
- 0x15: byte boneIndex = reader.ReadByte();
- 0x16: reader.ReadByte(); // 0, padding
- 0x17: float x = reader.ReadSingle();
- 0x1B: float y = reader.ReadSingle();
- 0x1F: float z = reader.ReadSingle();
- 0x23: mat.SetColumn(j, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), 1f));
- 0x27: d.r3bones[i].unknown1 = reader.ReadSingle();
- 0x2B: d.r3bones[i].invert = reader.ReadUInt16();
- 0x2D: d.r3bones[i].index = reader.ReadByte();
- 0x2E: reader.ReadByte(); // 0, padding
- PhysicalObject.<Read>b__1
- 0x0: uint u1 = reader.ReadUInt32(); // 0, zdm
- 0x4: uint u2 = reader.ReadUInt32(); // 0, zdd
- 0x8: uint u3 = reader.ReadUInt32(); // 0, zde
- 0xC: Pointer off_zdr = Pointer.Read(reader);
- MeshModificationObject.Read
- 0x0: mod.off_model = Pointer.Read(reader);
- 0x4: mod.num_properties = reader.ReadUInt32();
- 0x8: mod.off_properties = Pointer.Read(reader);
- MeshModificationObject.<Read>b__0
- 0x0: mod.properties[i].id = reader.ReadUInt16();
- 0x2: mod.properties[i].unk = reader.ReadUInt16();
- 0x4: float x = reader.ReadSingle();
- 0x8: float z = reader.ReadSingle();
- 0xC: float y = reader.ReadSingle();
- ObjectList.<Read>b__0
- 0x0: float x = reader.ReadSingle();
- 0x4: float z = reader.ReadSingle();
- 0x8: float y = reader.ReadSingle();
- State.<Read>b__2
- 0x0: s.cine_mapname = reader.ReadNullDelimitedString();
- State.<Read>b__3
- 0x0: s.cine_name = reader.ReadNullDelimitedString();
- SuperObject.Read
- 0x0: so.typeCode = reader.ReadUInt32(); // 0 - 4
- 0x4: so.off_data = Pointer.Read(reader); // 4 - 8
- 0x8: so.off_brother_next = Pointer.Read(reader); // 14 - 18
- 0xC: so.off_brother_prev = Pointer.Read(reader); // 18 - 1C
- 0x10: so.off_parent = Pointer.Read(reader); // 1C - 20
- 0x14: so.off_matrix = Pointer.Read(reader); // 0x20->0x24
- 0x18: so.off_staticMatrix = Pointer.Read(reader); // other matrix
- 0x1C: so.globalMatrix = reader.ReadInt32(); // 0x28 -> 0x2C
- 0x20: if (Settings.s.engineVersion == Settings.EngineVersion.R3) reader.ReadUInt32();
- 0x24: Pointer off_boundingVolume = Pointer.Read(reader);
- SuperObjectDrawFlags.Read
- 0x0: soFlags.flags = (Flags)(reader.ReadUInt32() ^ 0xFFFFFFFF);
- SuperObjectFlags.Read
- 0x0: soFlags.flags = (Flags)reader.ReadUInt32();
- Matrix.Read
- 0x0: UInt32 type = Settings.s.game != Settings.Game.R2Revolution ? reader.ReadUInt32() : 0; // 0x02: always at the start of a transformation matrix
- 0x4: mat.m.SetColumn(0, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()));
- 0x8: mat.m.SetColumn(1, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()));
- 0xC: mat.m.SetColumn(2, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()));
- 0x10: mat.m.SetColumn(3, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()));
- 0x14: mat.v = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- Perso.Read
- 0x0: p.off_3dData = Pointer.Read(reader); // 0x0
- 0x4: p.off_stdGame = Pointer.Read(reader); // 4 Standard Game info
- 0x8: p.off_dynam = Pointer.Read(reader); // 0x8 Dynam
- 0xC: p.off_brain = Pointer.Read(reader); // 0xC
- 0x10: p.off_camera = Pointer.Read(reader); // 0x10 is Camera in Rayman 2
- 0x14: p.off_collSet = Pointer.Read(reader); // 0x14 collset
- 0x18: p.off_msWay = Pointer.Read(reader); // 0x18
- 0x1C: p.off_msLight = Pointer.Read(reader); // 0x1C - MSLight
- 0x20: p.off_sectInfo = Pointer.Read(reader); // 0x20 // Pointer to struct that points to active sector
- 0x24: reader.ReadUInt32(); // 0x24
- 0x28: reader.ReadUInt32();
- Perso3dData.Read
- 0x0: d.off_stateInitial = Pointer.Read(reader);
- 0x4: d.off_stateCurrent = Pointer.Read(reader);
- 0x8: d.off_state2 = Pointer.Read(reader);
- 0xC: d.off_objectList = Pointer.Read(reader);
- 0x10: d.off_objectListInitial = Pointer.Read(reader);
- 0x14: d.off_family = Pointer.Read(reader);
- StandardGame.Read
- 0x0: stdGame.objectTypes[0] = reader.ReadUInt32();
- 0x4: stdGame.objectTypes[1] = reader.ReadUInt32();
- 0x8: stdGame.objectTypes[2] = reader.ReadUInt32();
- 0xC: stdGame.off_superobject = Pointer.Read(reader); // 0xC SuperObject from Perso probably
- 0x10: reader.ReadBytes(0x10); // 0x10 - 0x1F
- 0x20: stdGame.customBits = reader.ReadUInt32(); // 0x20 custom bits
- 0x24: stdGame.aiCustomBits = reader.ReadUInt32(); // 0x24 AI custom bits
- 0x28: stdGame.isAPlatform = reader.ReadByte();
- 0x29: stdGame.updateCheckByte = reader.ReadByte();
- 0x2A: stdGame.transparencyZoneMin = reader.ReadByte();
- 0x2B: stdGame.transparencyZoneMax = reader.ReadByte();
- 0x2C: stdGame.customBitsInitial = reader.ReadUInt32();
- 0x30: stdGame.aiCustomBitsInitial = reader.ReadUInt32();
- Dynam.Read
- 0x0: dynam.off_dynamics = Pointer.Read(reader);
- Dynamics.Read
- 0x0: dynamics.field_0 = reader.ReadUInt32();
- 0x4: dynamics.field_4 = reader.ReadUInt32();
- 0x8: dynamics.field_8 = reader.ReadUInt32();
- 0xC: dynamics.field_C = reader.ReadUInt32();
- 0x10: dynamics.off_speedVector = Pointer.Read(reader);
- 0x14: dynamics.speedVector = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- Brain.Read
- 0x0: b.off_mind = Pointer.Read(reader);
- 0x4: if (Settings.s.game != Settings.Game.R2Revolution) b.unknown1 = reader.ReadUInt32(); // init at 0xCDCDCDCD
- 0x8: b.unknown2 = reader.ReadUInt32(); // 0
- Mind.ReadInternal
- 0x0: off_AI_model = Pointer.Read(reader);
- 0x4: off_intelligence_normal = Pointer.Read(reader);
- 0x8: off_intelligence_reflex = Pointer.Read(reader);
- 0xC: off_dsgMem = Pointer.Read(reader);
- 0x10: byte0 = reader.ReadByte();
- 0x11: byte1 = reader.ReadByte();
- 0x12: byte2 = reader.ReadByte();
- 0x13: byte3 = reader.ReadByte();
- AIModel.ReadInternal
- 0x0: off_behaviors_normal = Pointer.Read(reader);
- 0x4: off_behaviors_reflex = Pointer.Read(reader);
- 0x8: off_dsgVar = Pointer.Read(reader);
- 0xC: off_macros = Pointer.Read(reader);
- 0x10: flags = reader.ReadUInt32();
- AIModel.<ReadInternal>b__0
- 0x0: Pointer off_entries = Pointer.Read(reader);
- 0x4: uint num_entries = reader.ReadUInt32();
- Behavior.ReadInternal
- 0x0: off_scripts = Pointer.Read(reader);
- 0x4: off_firstScript = Pointer.Read(reader);
- 0x8: num_scripts = reader.ReadByte();
- 0x9: reader.ReadByte();
- 0xA: reader.ReadByte();
- 0xB: reader.ReadByte();
- Script.Read
- 0x0: s.off_script = Pointer.Read(reader);
- ScriptNode.Read
- 0x0: sn.param = reader.ReadUInt32();
- 0x4: reader.ReadByte();
- 0x5: reader.ReadByte();
- 0x6: sn.indent = reader.ReadByte();
- 0x7: sn.type = reader.ReadByte();
- DsgVar.ReadInternal
- 0x0: off_dsgMemBuffer = Pointer.Read(reader);
- 0x4: off_dsgVarInfo = Pointer.Read(reader);
- 0x8: dsgMemBufferLength = reader.ReadUInt32();
- 0xC: amountOfInfos = reader.ReadByte();
- 0xD: reader.ReadBytes(3);
- DsgVarInfoEntry.Read
- 0x0: d.offsetInBuffer = reader.ReadUInt32();
- 0x4: d.typeNumber = reader.ReadUInt32();
- 0x8: d.saveType = reader.ReadUInt32();
- 0xC: d.initType = reader.ReadUInt32();
- DsgVarValue.Read
- 0x0: valuePointer = Pointer.Read(reader);
- 0x4: valuePointer = Pointer.Read(reader);
- 0x8: valuePointer = Pointer.Read(reader);
- 0xC: valueSoundEvent = reader.ReadUInt32(); break;
- DsgMem.ReadInternal
- 0x0: Pointer dsgVarPointer = Pointer.Read(reader);
- 0x4: memBufferInitial = Pointer.Read(reader);
- 0x8: memBuffer = Pointer.Read(reader);
- DsgMem.<ReadInternal>b__0
- 0x0: off_dsgVar = Pointer.Read(reader);
- Intelligence.ReadInternal
- 0x0: off_aiModel = Pointer.Read(reader); // 0x0
- 0x4: off_actionTree = Pointer.Read(reader); //0x4
- 0x8: off_comport = Pointer.Read(reader); //0x8
- 0xC: off_lastComport = Pointer.Read(reader);
- 0x10: off_actionTable = Pointer.Read(reader);
- PersoSectorInfo.Read
- 0x0: si.off_sector = Pointer.Read(reader);
- DsgVarValue.ReadArray
- 0x0: arrayTypeNumber = reader.ReadUInt32();
- 0x4: arrayLength = reader.ReadByte();
- 0x5: reader.ReadBytes(3); // padding
- BoundingVolume.Read
- 0x0: float float_1 = reader.ReadSingle();
- 0x4: float float_2 = reader.ReadSingle();
- 0x8: float float_3 = reader.ReadSingle();
- 0xC: float float_4 = reader.ReadSingle();
- 0x10: float float_5 = reader.ReadSingle();
- 0x14: float float_6 = reader.ReadSingle();
- AIModel.<ReadInternal>b__2
- 0x0: Pointer off_entries = Pointer.Read(reader);
- 0x4: byte num_entries = reader.ReadByte();
- 0x5: reader.ReadByte();
- 0x6: reader.ReadByte();
- 0x7: reader.ReadByte();
- Macro.ReadInternal
- 0x0: off_script = Pointer.Read(reader);
- 0x4: off_script2 = Pointer.Read(reader);
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- GraphNode.Read
- 0x0: node.off_nextNode = Pointer.Read(reader);
- 0x4: node.off_prevNode = Pointer.Read(reader);
- 0x8: node.off_graph = Pointer.Read(reader);
- 0xC: node.off_wayPoint = Pointer.Read(reader);
- 0x10: reader.ReadUInt32();
- 0x14: reader.ReadUInt32();
- 0x18: node.off_arcList = Pointer.Read(reader);
- WayPoint.Read
- 0x0: float x = reader.ReadSingle();
- 0x4: float y = reader.ReadSingle();
- 0x8: float z = reader.ReadSingle();
- 0xC: radius = reader.ReadSingle();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- LinkedList.ReadEntries
- 0x0: off_next = Pointer.Read(reader);
- 0x4: if (type == Type.Double && !noPreviousPointers) Pointer.Read(reader); // previous element pointer
- 0x8: if (hasHeaderPointers) Pointer.Read(reader); // header struct pointer
- Arc.Read
- 0x0: arc.off_node = Pointer.Read(reader);
- 0x4: arc.capabilities = reader.ReadUInt32();
- 0x8: arc.field_0x14 = reader.ReadUInt32();
- 0xC: arc.weight = reader.ReadInt32();
- 0x10: arc.field_0x1C = reader.ReadInt32();
- CollSet.Read
- 0x0: c.off_zdxList[CollideType.ZDD] = Pointer.Read(reader);
- 0x4: c.off_zdxList[CollideType.ZDE] = Pointer.Read(reader);
- 0x8: c.off_zdxList[CollideType.ZDM] = Pointer.Read(reader);
- 0xC: c.off_zdxList[CollideType.ZDR] = Pointer.Read(reader);
- 0x10: c.off_activationList[CollideType.ZDD] = Pointer.Read(reader);
- 0x14: c.off_activationList[CollideType.ZDE] = Pointer.Read(reader);
- 0x18: c.off_activationList[CollideType.ZDM] = Pointer.Read(reader);
- 0x1C: c.off_activationList[CollideType.ZDR] = Pointer.Read(reader);
- 0x20: c.off_zones[CollideType.ZDD] = Pointer.Read(reader);
- 0x24: c.off_zones[CollideType.ZDE] = Pointer.Read(reader);
- 0x28: c.off_zones[CollideType.ZDM] = Pointer.Read(reader);
- 0x2C: c.off_zones[CollideType.ZDR] = Pointer.Read(reader);
- 0x30: c.privilegedActivations[CollideType.ZDD] = reader.ReadInt32();
- 0x34: c.privilegedActivations[CollideType.ZDE] = reader.ReadInt32();
- 0x38: c.privilegedActivations[CollideType.ZDM] = reader.ReadInt32();
- 0x3C: c.privilegedActivations[CollideType.ZDR] = reader.ReadInt32();
- ScriptNode.<Read>b__0
- 0x0: string str = reader.ReadNullDelimitedString();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- LinkedList.ReadEntries
- 0x0: off_next = Pointer.Read(reader);
- 0x4: if (readAtPointer && !elementPointerFirst) off_element = Pointer.Read(reader);
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- CollideActivationZone.Read
- 0x0: z.off_next = Pointer.Read(reader);
- 0x4: z.zdxIndex = reader.ReadUInt16();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- CollideActivation.Read
- 0x0: a.off_next = Pointer.Read(reader);
- 0x4: a.off_activationZone = Pointer.Read(reader);
- 0x8: a.index = reader.ReadUInt16();
- 0xA: reader.ReadUInt16();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- LinkedList.ReadEntries
- 0x0: if (elementPointerFirst) off_element = Pointer.Read(reader);
- 0x4: off_next = Pointer.Read(reader);
- LightInfo.ReadInternal
- 0x0: turnedOn = reader.ReadByte();
- 0x1: castShadows = reader.ReadByte();
- 0x2: giroPhare = reader.ReadByte();
- 0x3: pulse = reader.ReadByte();
- 0x4: if (Settings.s.platform != Settings.Platform.DC) reader.ReadUInt32();
- 0x8: type = reader.ReadUInt16();
- 0xA: reader.ReadUInt16();
- 0xC: far = reader.ReadSingle();
- 0x10: near = reader.ReadSingle();
- 0x14: littleAlpha_fogInfinite = reader.ReadSingle();
- 0x18: bigAlpha_fogBlendNear = reader.ReadSingle();
- 0x1C: giroStep = reader.ReadSingle();
- 0x20: pulseStep = reader.ReadSingle();
- 0x24: pulseMaxRange = reader.ReadSingle();
- 0x28: giroAngle = reader.ReadSingle();
- 0x2C: reader.ReadSingle();
- 0x30: reader.ReadUInt32(); // 0
- 0x34: reader.ReadUInt32(); // 0
- 0x38: reader.ReadUInt32(); // 0
- 0x3C: reader.ReadUInt32(); // 0
- 0x40: reader.ReadUInt32(); // 0
- 0x44: reader.ReadUInt32(); // 0
- 0x48: color = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x4C: shadowIntensity = reader.ReadSingle(); // 0
- 0x50: sendLightFlag = reader.ReadByte(); // Non-zero: light enabled
- 0x51: objectLightedFlag = reader.ReadByte(); // & 1: Affect IPOs. & 2: Affect Persos. So 3 = affect all
- 0x52: paintingLightFlag = reader.ReadByte();
- 0x53: alphaLightFlag = reader.ReadByte();
- 0x54: interMinPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x58: exterMinPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x5C: interMaxPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x60: exterMaxPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x64: exterCenterPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x68: attFactor3 = reader.ReadSingle();
- 0x6C: intensityMin_fogBlendFar = reader.ReadSingle();
- 0x70: intensityMax = reader.ReadSingle();
- 0x74: background_color = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x78: createsShadowsOrNot = reader.ReadUInt32();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- Sector.Read
- 0x0: reader.ReadUInt32();
- 0x4: s.isSectorVirtual = reader.ReadByte();
- 0x5: reader.ReadByte();
- 0x6: reader.ReadByte();
- 0x7: s.sectorPriority = reader.ReadByte();
- 0x8: reader.ReadUInt32();
- 0xC: reader.ReadByte();
- IPO.Read
- 0x0: ipo.off_data = Pointer.Read(reader);
- 0x4: ipo.off_radiosity = Pointer.Read(reader);
- 0x8: reader.ReadUInt32();
- 0xC: ipo.off_portalCamera = Pointer.Read(reader);
- 0x10: reader.ReadUInt32();
- 0x14: reader.ReadUInt32();
- 0x18: reader.ReadUInt32();
- GeometricObjectElementTriangles.<Read>b__1
- 0x0: sm.OPT_mapping_vertices[j] = reader.ReadInt16();
- GeometricObjectElementTriangles.<Read>b__2
- 0x0: sm.OPT_mapping_uvs[um][j] = reader.ReadInt16();
- GeometricObjectElementTriangles.<Read>b__5
- 0x0: sm.OPT_triangleStrip[j] = reader.ReadInt16();
- GeometricObjectElementTriangles.<Read>b__6
- 0x0: sm.OPT_disconnectedTriangles[(j * 3) + 0] = reader.ReadInt16();
- 0x2: sm.OPT_disconnectedTriangles[(j * 3) + 1] = reader.ReadInt16();
- 0x4: sm.OPT_disconnectedTriangles[(j * 3) + 2] = reader.ReadInt16();
- GeometricObjectCollide.Read
- 0x0: m.num_vertices = reader.ReadUInt16();
- 0x2: m.num_elements = reader.ReadUInt16();
- 0x4: reader.ReadUInt32();
- 0x8: m.off_vertices = Pointer.Read(reader);
- 0xC: m.off_element_types = Pointer.Read(reader);
- 0x10: m.off_elements = Pointer.Read(reader);
- 0x14: Pointer.Read(reader);
- 0x18: m.off_parallelBoxes = Pointer.Read(reader);
- 0x1C: m.sphereRadius = reader.ReadSingle(); // bounding volume radius
- 0x20: float sphereX = reader.ReadSingle(); // x
- 0x24: float sphereZ = reader.ReadSingle(); // z
- 0x28: float sphereY = reader.ReadSingle(); // y
- 0x2C: float x = reader.ReadSingle();
- 0x30: float z = reader.ReadSingle();
- 0x34: float y = reader.ReadSingle();
- 0x38: m.element_types[i] = reader.ReadUInt16();
- 0x3A: Pointer block_offset = Pointer.Read(reader);
- GeometricObjectElementCollideTriangles.Read
- 0x0: sm.off_material = Pointer.Read(reader);
- 0x4: sm.off_triangles = Pointer.Read(reader);
- 0x8: sm.off_normals = Pointer.Read(reader);
- 0xC: sm.num_triangles = reader.ReadUInt16();
- 0xE: sm.ind_parallelBox = reader.ReadInt16();
- 0x10: reader.ReadUInt32();
- 0x14: sm.off_mapping = Pointer.Read(reader);
- 0x18: sm.off_unk = Pointer.Read(reader); // num_mapping_entries * 3 floats
- 0x1C: sm.off_unk2 = Pointer.Read(reader); // num_mapping_entries * 1 float
- 0x20: sm.num_mapping = reader.ReadUInt16();
- 0x22: reader.ReadUInt16();
- 0x24: sm.triangles[(j * 3) + 0] = reader.ReadInt16();
- 0x26: sm.triangles[(j * 3) + 1] = reader.ReadInt16();
- 0x28: sm.triangles[(j * 3) + 2] = reader.ReadInt16();
- 0x2A: sm.mapping[(i * 3) + 0] = reader.ReadInt16();
- 0x2C: sm.mapping[(i * 3) + 1] = reader.ReadInt16();
- 0x2E: sm.mapping[(i * 3) + 2] = reader.ReadInt16();
- GameMaterial.Read
- 0x0: gm.soundMaterial = reader.ReadUInt32();
- 0x4: gm.off_collideMaterial = Pointer.Read(reader, allowMinusOne: true);
- GeometricObjectElementCollideTriangles.<Read>b__0
- 0x0: float x = reader.ReadSingle();
- 0x4: float z = reader.ReadSingle();
- 0x8: float y = reader.ReadSingle();
- GeometricObject.<Read>b__2
- 0x0: Pointer off_blendWeights = Pointer.Read(reader);
- 0x4: reader.ReadUInt32();
- 0x8: reader.ReadUInt32();
- 0xC: reader.ReadUInt32();
- 0x10: reader.ReadUInt32();
- GeometricObject.<Read>b__5
- 0x0: m.blendWeights[i][j] = reader.ReadSingle();
- AIModel.<ReadInternal>b__1
- 0x0: Pointer off_entries = Pointer.Read(reader);
- 0x4: uint num_entries = reader.ReadUInt32();
- GeometricObjectElementCollideSpheres.Read
- 0x0: s.off_spheres = Pointer.Read(reader);
- 0x4: s.num_spheres = reader.ReadUInt16();
- 0x6: s.ind_parallelBox = reader.ReadInt16(); // -1
- 0x8: s.spheres[i].radius = reader.ReadSingle();
- 0xC: s.spheres[i].off_material = Pointer.Read(reader);
- 0x10: s.spheres[i].centerPoint = reader.ReadUInt16();
- 0x12: reader.ReadUInt16();
- CollideMaterial.Read
- 0x0: cm.type = reader.ReadUInt16();
- 0x2: cm.identifier = reader.ReadUInt16();
- 0x4: cm.direction = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
- 0x8: cm.coef = reader.ReadSingle();
- 0xC: cm.typeForAI = reader.ReadUInt32();
- LinkedList.ReadEntries
- 0x0: off_next = Pointer.Read(reader);
- 0x4: if (type == Type.Double && !noPreviousPointers) Pointer.Read(reader); // previous element pointer
- 0x8: if (hasHeaderPointers) Pointer.Read(reader); // header struct pointer
- MapLoader.<ReadAlways>b__0
- 0x0: index = reader.ReadUInt32();
- 0x4: off_spawnable_perso = Pointer.Read(reader);
- LinkedList.ReadHeader
- 0x0: li.off_head = Pointer.Read(reader);
- 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
- 0x8: li.num_elements = reader.ReadUInt32();
- CinematicsManager.Read
- 0x0: cm.unk = reader.ReadUInt32();
- AnimationStack.Read
- 0x0: reader.ReadUInt32();
- 0x4: stack.count = reader.ReadUInt32();
- 0x8: stack.reservedMemory = reader.ReadUInt32();
- 0xC: && Settings.s.game != Settings.Game.Dinosaur) reader.ReadUInt32();
- 0x10: stack.countInFix = reader.ReadUInt32();
- AnimationBank.Read
- 0x0: if (banks[i].a3d_general.reservedMemory > 0) banks[i].a3d_general.off_data = Pointer.Read(reader);
- 0x4: if (banks[i].vectors.reservedMemory > 0) banks[i].vectors.off_data = Pointer.Read(reader);
- 0x8: if (banks[i].quaternions.reservedMemory > 0) banks[i].quaternions.off_data = Pointer.Read(reader);
- 0xC: if (banks[i].hierarchies.reservedMemory > 0) banks[i].hierarchies.off_data = Pointer.Read(reader);
- 0x10: if (banks[i].NTTO.reservedMemory > 0) banks[i].NTTO.off_data = Pointer.Read(reader);
- 0x14: if (banks[i].onlyFrames.reservedMemory > 0) banks[i].onlyFrames.off_data = Pointer.Read(reader);
- 0x18: if (banks[i].channels.reservedMemory > 0) banks[i].channels.off_data = Pointer.Read(reader);
- 0x1C: if (banks[i].framesNumOfNTTO.reservedMemory > 0) banks[i].framesNumOfNTTO.off_data = Pointer.Read(reader);
- 0x20: if (banks[i].framesKFIndex.reservedMemory > 0) banks[i].framesKFIndex.off_data = Pointer.Read(reader);
- 0x24: if (banks[i].keyframes.reservedMemory > 0) banks[i].keyframes.off_data = Pointer.Read(reader);
- 0x28: if (banks[i].events.reservedMemory > 0) banks[i].events.off_data = Pointer.Read(reader);
- 0x2C: if (banks[i].morphData.reservedMemory > 0) banks[i].morphData.off_data = Pointer.Read(reader);
- 0x30: if (Settings.s.hasDeformations && banks[i].deformations.reservedMemory > 0) banks[i].deformations.off_data = Pointer.Read(reader);
- AnimA3DGeneral.ReadInternal
- 0x0: speed = reader.ReadUInt16();
- 0x2: num_vectors = reader.ReadUInt16();
- 0x4: num_quaternions = reader.ReadUInt16();
- 0x6: num_hierarchies = reader.ReadUInt16();
- 0x8: num_NTTO = reader.ReadUInt16();
- 0xA: num_numNTTO = reader.ReadUInt16();
- 0xC: num_deformations = reader.ReadUInt16();
- 0xE: num_channels = reader.ReadUInt16();
- 0x10: num_onlyFrames = reader.ReadUInt16();
- 0x12: unk_12 = reader.ReadUInt16();
- 0x14: unk_14 = reader.ReadUInt16();
- 0x16: num_keyframes = reader.ReadUInt16();
- 0x18: num_events = reader.ReadUInt16();
- 0x1A: unk_1A = reader.ReadUInt16();
- 0x1C: subtractFramesForSpeed = reader.ReadUInt16();
- 0x1E: unk_1E = reader.ReadUInt16();
- 0x20: speed2 = reader.ReadUInt16();
- 0x22: unk_22_morphs = reader.ReadUInt16();
- 0x24: start_vectors2 = reader.ReadUInt16();
- 0x26: start_quaternions2 = reader.ReadUInt16();
- 0x28: num_morphData = reader.ReadUInt16();
- 0x2A: start_vectors = reader.ReadUInt16();
- 0x2C: start_quaternions = reader.ReadUInt16();
- 0x2E: start_hierarchies = reader.ReadUInt16();
- 0x30: start_NTTO = reader.ReadUInt16();
- 0x32: start_deformations = reader.ReadUInt16();
- 0x34: start_onlyFrames = reader.ReadUInt16();
- 0x36: start_channels = reader.ReadUInt16();
- 0x38: start_events = reader.ReadUInt16();
- 0x3A: start_morphData = reader.ReadUInt16();
- AnimVector.ReadInternal
- 0x0: float x = reader.ReadSingle();
- 0x4: float z = reader.ReadSingle();
- 0x8: float y = reader.ReadSingle();
- AnimQuaternion.ReadInternal
- 0x0: float x = (float)reader.ReadInt16() / (float)Int16.MaxValue;
- 0x2: float y = (float)reader.ReadInt16() / (float)Int16.MaxValue;
- 0x4: float z = (float)reader.ReadInt16() / (float)Int16.MaxValue;
- 0x6: float w = (float)reader.ReadInt16() / (float)Int16.MaxValue;
- AnimHierarchy.ReadInternal
- 0x0: childChannelID = reader.ReadInt16();
- 0x2: parentChannelID = reader.ReadInt16();
- AnimNTTO.ReadInternal
- 0x0: flags = reader.ReadUInt16();
- 0x2: object_index = reader.ReadUInt16();
- 0x4: unk4 = reader.ReadByte();
- 0x5: unk5 = reader.ReadByte();
- AnimOnlyFrame.ReadInternal
- 0x0: quaternion = reader.ReadUInt16();
- 0x2: vector = reader.ReadUInt16();
- 0x4: num_hierarchies_for_frame = reader.ReadUInt16();
- 0x6: start_hierarchies_for_frame = reader.ReadUInt16();
- 0x8: unk8 = reader.ReadUInt16();
- 0xA: deformation = reader.ReadUInt16();
- 0xC: numOfNTTO = reader.ReadUInt16();
- AnimChannel.ReadInternal
- 0x0: unk0 = reader.ReadUInt16();
- 0x2: id = reader.ReadInt16();
- 0x4: vector = reader.ReadUInt16();
- 0x6: numOfNTTO = reader.ReadUInt16();
- 0x8: framesKF = reader.ReadUInt32();
- 0xC: keyframe = reader.ReadUInt32();
- AnimNumOfNTTO.ReadInternal
- 0x0: numOfNTTO = reader.ReadUInt16();
- AnimFramesKFIndex.ReadInternal
- 0x0: kf = reader.ReadUInt32();
- AnimKeyframe.ReadInternal
- 0x0: frame = reader.ReadUInt16();
- 0x2: flags = reader.ReadUInt16();
- 0x4: quaternion = reader.ReadUInt16();
- 0x6: quaternion2 = reader.ReadUInt16();
- 0x8: scaleVector = reader.ReadUInt16();
- 0xA: positionVector = reader.ReadUInt16();
- 0xC: interpolationFactor = (double)reader.ReadUInt16() * 0.00012207031;
- AnimEvent.ReadInternal
- 0x0: unk0 = reader.ReadUInt32();
- 0x4: unk4 = reader.ReadUInt16();
- 0x6: unk6 = reader.ReadUInt16();
- 0x8: unk8 = reader.ReadUInt16();
- 0xA: unkA = reader.ReadUInt16();
- AnimMorphData.ReadInternal
- 0x0: channel = reader.ReadInt16(); // the channel for which this morph data is relevant
- 0x2: frame = reader.ReadUInt16(); // the frame for which this morph data is relevant
- 0x4: reader.ReadByte();
- 0x5: reader.ReadByte();
- 0x6: reader.ReadByte();
- 0x7: reader.ReadByte();
- 0x8: objectIndexTo = reader.ReadUInt16(); // 5
- 0xA: reader.ReadUInt16();
- 0xC: reader.ReadBytes(0x10); // Haven't deciphered this yet
- 0x1C: morphProgress = reader.ReadByte();
- 0x1D: reader.ReadBytes(0x9);
- AnimDeformation.ReadInternal
- 0x0: channel = reader.ReadInt16();
- 0x2: bone = reader.ReadUInt16();
- 0x4: linkChannel = reader.ReadInt16();
- 0x6: linkBone = reader.ReadUInt16();
- LinkedList.ReadEntries
- 0x0: if (elementPointerFirst) off_element = Pointer.Read(reader);
- 0x4: off_next = Pointer.Read(reader);
Add Comment
Please, Sign In to add comment