sobinist

Raymap Read export r3_pc

Jul 5th, 2020
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.38 KB | None | 0 0
  1. LVL.ReadPTR
  2. 0x0: num_ptrs = ptrReader.ReadUInt32();
  3. 0x4: int file = ptrReader.ReadInt32();
  4. 0x8: uint ptr_ptr = ptrReader.ReadUInt32();
  5. 0xC: uint ptr = reader.ReadUInt32();
  6. 0x10: uint ptr_ptr = ptrReader.ReadUInt32(); // the address the pointer should be located at
  7. 0x14: int src_file = ptrReader.ReadInt32(); // the file the pointer should be located in
  8. 0x18: uint ptr = ptrReader.ReadUInt32();
  9. 0x1C: int target_file = ptrReader.ReadInt32();
  10.  
  11. LocalizationStructure.ReadInternal
  12. 0x0: field0 = reader.ReadUInt32();
  13. 0x4: && Settings.s.game != Settings.Game.LargoWinch) field4 = reader.ReadUInt32();
  14. 0x8: num_languages = reader.ReadUInt16();
  15. 0xA: reader.ReadUInt16();
  16. 0xC: off_text_languages = Pointer.Read(reader);
  17. 0x10: off_text_misc = Pointer.Read(reader);
  18.  
  19. LocalizationStructure.<ReadInternal>b__2
  20. 0x0: languages[i].off_textTable = Pointer.Read(reader);
  21. 0x4: languages[i].num_entries_max = reader.ReadUInt16();
  22. 0x6: languages[i].num_entries = reader.ReadUInt16();
  23.  
  24. LocalizationStructure.<ReadInternal>b__6
  25. 0x0: Pointer off_text = Pointer.Read(reader);
  26.  
  27. LocalizationStructure.<ReadInternal>b__7
  28. 0x0: languages[i].entries[j] = reader.ReadNullDelimitedString();
  29.  
  30. LocalizationStructure.<ReadInternal>b__3
  31. 0x0: misc.off_textTable = Pointer.Read(reader);
  32. 0x4: misc.num_entries_max = reader.ReadUInt16();
  33. 0x6: misc.num_entries = reader.ReadUInt16();
  34.  
  35. LocalizationStructure.<ReadInternal>b__8
  36. 0x0: Pointer off_text = Pointer.Read(reader);
  37.  
  38. LocalizationStructure.<ReadInternal>b__9
  39. 0x0: misc.entries[j] = reader.ReadNullDelimitedString();
  40.  
  41. MapLoader.ReadLevelNames
  42. 0x0: levels[i] = reader.ReadString(0x1E);
  43.  
  44. MapLoader.ReadLanguages
  45. 0x0: languages[i] = reader.ReadString(0x14);
  46. 0x14: languages_loc[i] = reader.ReadString(0x14);
  47.  
  48. TextureInfo.Read
  49. 0x0: tex.field0 = reader.ReadUInt32(); // 888 or 8888
  50. 0x4: tex.field4 = reader.ReadUInt16(); // 20
  51. 0x6: tex.field6 = reader.ReadUInt16();
  52. 0x8: tex.off_tempBuffer = Pointer.Read(reader); // always null because it's stored here dynamically
  53. 0xC: tex.fieldC = reader.ReadUInt32();
  54. 0x10: tex.field10 = reader.ReadUInt32();
  55. 0x14: tex.flags = reader.ReadUInt32();
  56. 0x18: tex.height_ = reader.ReadUInt16();
  57. 0x1A: tex.width_ = reader.ReadUInt16();
  58. 0x1C: tex.height = reader.ReadUInt16();
  59. 0x1E: tex.width = reader.ReadUInt16();
  60. 0x20: tex.currentScrollX = reader.ReadUInt32();
  61. 0x24: tex.currentScrollY = reader.ReadUInt32();
  62. 0x28: tex.textureScrollingEnabled = reader.ReadUInt32();
  63. 0x2C: tex.alphaMask = reader.ReadUInt32();
  64. 0x30: tex.field30 = reader.ReadUInt32();
  65. 0x34: if (Settings.s.engineVersion == Settings.EngineVersion.R3) tex.numMipmaps = reader.ReadUInt32();
  66. 0x38: tex.field38 = reader.ReadUInt32();
  67. 0x3C: tex.field3C = reader.ReadUInt32();
  68. 0x40: tex.field40 = reader.ReadUInt32();
  69. 0x44: tex.field44 = reader.ReadUInt32();
  70. 0x48: tex.field48 = reader.ReadByte();
  71. 0x49: tex.flagsByte = reader.ReadByte(); // contains stuff like tiling mode
  72. 0x4A: tex.name = reader.ReadNullDelimitedString();
  73.  
  74. GF.ReadChannels
  75. 0x0: byte b1 = reader.ReadByte();
  76. 0x1: byte value = reader.ReadByte();
  77. 0x2: byte count = reader.ReadByte();
  78.  
  79. InputStructure.Read
  80. 0x0: reader.ReadBytes(0x16BC);
  81. 0x16BC: input.num_entryActions = reader.ReadUInt32();
  82. 0x16C0: input.off_entryActions = Pointer.Read(reader);
  83. 0x16C4: reader.ReadBytes(0x418);
  84.  
  85. EntryAction.Read
  86. 0x0: ea.num_keywords = reader.ReadUInt32();
  87. 0x4: ea.off_keywords = Pointer.Read(reader);
  88. 0x8: ea.off_name = Pointer.Read(reader);
  89. 0xC: if (Settings.s.hasExtraInputData || Settings.s.platform == Settings.Platform.DC || Settings.s.engineVersion == Settings.EngineVersion.R3) ea.off_name2 = Pointer.Read(reader);
  90. 0x10: reader.ReadInt32(); // -2
  91. 0x14: reader.ReadUInt32();
  92. 0x18: ea.active = reader.ReadByte();
  93. 0x19: reader.ReadBytes(3);
  94.  
  95. KeyWord.Read
  96. 0x0: keyword.indexOrKeyCode = reader.ReadUInt16();
  97. 0x2: keyword.valueAsInt = reader.ReadInt32();
  98. 0x6: if (Settings.s.engineVersion == Settings.EngineVersion.R3 && Settings.s.game != Settings.Game.LargoWinch) reader.ReadInt32();
  99. 0xA: if(Settings.s.game != Settings.Game.R2Revolution) reader.ReadInt32();
  100.  
  101. EntryAction.<Read>b__2
  102. 0x0: ea.name = reader.ReadNullDelimitedString();
  103.  
  104. EntryAction.<Read>b__3
  105. 0x0: ea.name2 = reader.ReadNullDelimitedString();
  106.  
  107. MapLoader.<ReadKeypadDefine>b__0
  108. 0x0: entry.keycode = reader.ReadInt16();
  109. 0x2: entry.unk2 = reader.ReadInt16();
  110. 0x4: reader.ReadUInt32();
  111. 0x8: reader.ReadUInt32();
  112.  
  113. MapLoader.<ReadKeypadDefine>b__1
  114. 0x0: entry.name = reader.ReadNullDelimitedString();
  115.  
  116. MapLoader.<ReadKeypadDefine>b__2
  117. 0x0: entry.name2 = reader.ReadNullDelimitedString();
  118.  
  119. FontStructure.ReadInternal
  120. 0x0: num_fontsBitmap = reader.ReadByte();
  121. 0x1: num_fonts = reader.ReadByte();
  122. 0x2: reader.Align(4); // Align position
  123. 0x4: fontsBitmap[i] = Pointer.Read(reader);
  124.  
  125. LinkedList.ReadHeader
  126. 0x0: li.off_head = Pointer.Read(reader);
  127. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  128. 0x8: li.num_elements = reader.ReadUInt32();
  129.  
  130. MapLoader.ReadObjectNamesTable
  131. 0x0: Pointer off_names_next = Pointer.Read(reader);
  132. 0x4: Pointer off_names_prev = Pointer.Read(reader);
  133. 0x8: Pointer off_header = Pointer.Read(reader);
  134. 0xC: Pointer off_name = Pointer.Read(reader);
  135. 0x10: objectTypes[index][j].unk1 = reader.ReadByte();
  136. 0x11: objectTypes[index][j].id = reader.ReadByte();
  137. 0x12: objectTypes[index][j].unk2 = reader.ReadUInt16();
  138. 0x14: objectTypes[index][j].name = reader.ReadNullDelimitedString();
  139.  
  140. LinkedList.ReadHeader
  141. 0x0: li.off_head = Pointer.Read(reader);
  142. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  143. 0x8: li.num_elements = reader.ReadUInt32();
  144.  
  145. LinkedList.ReadHeader
  146. 0x0: li.off_head = Pointer.Read(reader);
  147. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  148. 0x8: li.num_elements = reader.ReadUInt32();
  149.  
  150. LinkedList.ReadHeader
  151. 0x0: li.off_head = Pointer.Read(reader);
  152. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  153. 0x8: li.num_elements = reader.ReadUInt32();
  154.  
  155. VisualMaterial.Read
  156. 0x0: m.flags = reader.ReadUInt32(); // After this: 0x4
  157. 0x4: m.ambientCoef = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  158. 0x8: m.diffuseCoef = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  159. 0xC: m.specularCoef = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  160. 0x10: m.color = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); // 0x44
  161. 0x14: reader.ReadUInt32(); // current refresh number for scrolling/animated textures, 0x48
  162. 0x18: m.off_animTextures_first = Pointer.Read(reader);
  163. 0x1C: m.off_animTextures_current = Pointer.Read(reader);
  164. 0x20: m.num_animTextures = reader.ReadUInt16();
  165. 0x22: reader.ReadUInt16();
  166. 0x24: reader.ReadUInt32();
  167. 0x28: reader.ReadByte();
  168. 0x29: reader.ReadByte();
  169. 0x2A: m.properties = reader.ReadByte();
  170. 0x2B: reader.ReadByte();
  171. 0x2C: reader.ReadUInt32();
  172. 0x30: reader.ReadUInt32();
  173. 0x34: m.num_textures_in_material = reader.ReadUInt32();
  174. 0x38: t.off_texture = Pointer.Read(reader);
  175. 0x3C: t.textureOp = reader.ReadByte();
  176. 0x3D: t.shadingMode = reader.ReadByte();
  177. 0x3E: t.uvFunction = reader.ReadByte();
  178. 0x3F: t.scrollByte = reader.ReadByte();
  179. 0x40: t.properties = reader.ReadInt32();
  180. 0x44: reader.ReadInt32();
  181. 0x48: reader.ReadInt32();
  182. 0x4C: t.scrollX = reader.ReadSingle();
  183. 0x50: t.scrollY = reader.ReadSingle();
  184. 0x54: t.rotateSpeed = reader.ReadSingle();
  185. 0x58: t.rotateDirection = reader.ReadSingle();
  186. 0x5C: reader.ReadInt32();
  187. 0x60: reader.ReadInt32();
  188. 0x64: t.currentScrollX = reader.ReadSingle();
  189. 0x68: t.currentScrollY = reader.ReadSingle();
  190. 0x6C: reader.ReadInt32();
  191. 0x70: reader.ReadInt32();
  192. 0x74: reader.ReadInt32();
  193. 0x78: reader.ReadInt32();
  194. 0x7C: t.blendIndex = reader.ReadUInt32();
  195. 0x80: Pointer off_animTexture = Pointer.Read(reader);
  196. 0x84: float time = reader.ReadSingle();
  197. 0x88: Pointer off_nextAnimTexture = Pointer.Read(reader);
  198.  
  199. Family.Read
  200. 0x0: f.off_family_next = Pointer.Read(reader);
  201. 0x4: f.off_family_prev = Pointer.Read(reader);
  202. 0x8: f.off_family_hdr = Pointer.Read(reader); // at this offset, start and end pointers appear again
  203. 0xC: f.family_index = reader.ReadUInt32();
  204. 0x10: f.off_physical_list_default = Pointer.Read(reader); // Default objects table
  205. 0x14: f.off_bounding_volume = Pointer.Read(reader);
  206. 0x18: f.off_vector4s = Pointer.Read(reader);
  207. 0x1C: f.num_vector4s = reader.ReadUInt32();
  208. 0x20: reader.ReadUInt32();
  209. 0x24: reader.ReadUInt32();
  210. 0x28: reader.ReadByte();
  211. 0x29: reader.ReadByte();
  212. 0x2A: f.animBank = reader.ReadByte();
  213. 0x2B: f.properties = reader.ReadByte();
  214.  
  215. LinkedList.ReadHeader
  216. 0x0: li.off_head = Pointer.Read(reader);
  217. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  218. 0x8: li.num_elements = reader.ReadUInt32();
  219.  
  220. State.Read
  221. 0x0: if (Settings.s.linkedListType != LinkedList.Type.Minimize) s.off_entry_next = Pointer.Read(reader);
  222. 0x4: s.off_anim_ref = Pointer.Read(reader);
  223. 0x8: s.off_nextState = Pointer.Read(reader, allowMinusOne: true);
  224. 0xC: s.off_mechanicsIDCard = Pointer.Read(reader);
  225. 0x10: s.off_cine_mapname = Pointer.Read(reader);
  226. 0x14: s.off_cine_name = Pointer.Read(reader);
  227. 0x18: reader.ReadByte();
  228. 0x19: s.speed = reader.ReadByte();
  229. 0x1A: reader.ReadByte();
  230. 0x1B: s.customStateBits = reader.ReadByte();
  231.  
  232. LinkedList.ReadHeader
  233. 0x0: li.off_head = Pointer.Read(reader);
  234. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  235. 0x8: li.num_elements = reader.ReadUInt32();
  236.  
  237. State.ReadInternal
  238. 0x0: off_entry_next = Pointer.Read(reader);
  239. 0x4: off_targetState = Pointer.Read(reader);
  240. 0x8: off_stateToGo = Pointer.Read(reader);
  241. 0xC: linkingType = reader.ReadByte();
  242. 0xD: reader.ReadByte();
  243. 0xE: reader.ReadByte();
  244. 0xF: reader.ReadByte();
  245.  
  246. LinkedList.ReadHeader
  247. 0x0: li.off_head = Pointer.Read(reader);
  248. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  249. 0x8: li.num_elements = reader.ReadUInt32();
  250.  
  251. MechanicsIDCard.Read
  252. 0x0: c.type = reader.ReadUInt32(); // 0x0
  253. 0x4: c.flags = reader.ReadUInt32(); // 0x4
  254. 0x8: c.gravity = reader.ReadSingle();
  255. 0xC: c.maxRebound = reader.ReadSingle();
  256. 0x10: reader.ReadUInt32();
  257. 0x14: c.slopeLimit = reader.ReadSingle();
  258. 0x18: float x = reader.ReadSingle();
  259. 0x1C: float z = reader.ReadSingle();
  260. 0x20: float y = reader.ReadSingle();
  261. 0x24: c.tiltIntensity = reader.ReadSingle();
  262. 0x28: c.tiltInertia = reader.ReadSingle();
  263. 0x2C: c.tiltOrigin = reader.ReadSingle();
  264. 0x30: x = reader.ReadSingle();
  265. 0x34: z = reader.ReadSingle();
  266. 0x38: y = reader.ReadSingle();
  267.  
  268. AnimationReference.ReadInternal
  269. 0x0: num_onlyFrames = reader.ReadUInt16();
  270. 0x2: speed = reader.ReadByte();
  271. 0x3: num_channels = reader.ReadByte();
  272. 0x4: off_events = Pointer.Read(reader);
  273. 0x8: off_morphData = Pointer.Read(reader); // Runtime only?
  274. 0xC: anim_index = reader.ReadUInt16();
  275. 0xE: num_events = reader.ReadByte();
  276. 0xF: transition = reader.ReadByte();
  277.  
  278. LinkedList.ReadHeader
  279. 0x0: li.off_head = Pointer.Read(reader);
  280. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  281. 0x8: li.num_elements = reader.ReadUInt32();
  282.  
  283. ObjectList.Read
  284. 0x0: if(Settings.s.linkedListType != LinkedList.Type.Minimize) ol.off_objList_next = Pointer.Read(reader);
  285. 0x4: ol.off_objList_start = Pointer.Read(reader);
  286. 0x8: ol.off_objList_2 = Pointer.Read(reader); // is this a copy of the list or something?
  287. 0xC: ol.num_entries = reader.ReadUInt16();
  288. 0xE: reader.ReadUInt16();
  289. 0x10: ol.entries[i].off_scale = Pointer.Read(reader);
  290. 0x14: ol.entries[i].off_po = Pointer.Read(reader);
  291. 0x18: ol.entries[i].thirdvalue = reader.ReadUInt32();
  292. 0x1C: ol.entries[i].unk0 = reader.ReadUInt16();
  293. 0x1E: ol.entries[i].unk1 = reader.ReadUInt16();
  294. 0x20: ol.entries[i].lastvalue = reader.ReadUInt32();
  295.  
  296. PhysicalObject.Read
  297. 0x0: po.off_visualSet = Pointer.Read(reader);
  298. 0x4: po.off_collideSet = Pointer.Read(reader);
  299. 0x8: po.off_visualBoundingVolume = Pointer.Read(reader);
  300. 0xC: po.off_collideBoundingVolume = Pointer.Read(reader);
  301.  
  302. PhysicalObject.<Read>b__0
  303. 0x0: reader.ReadUInt32(); // 0
  304. 0x4: numberOfLOD = reader.ReadUInt16();
  305. 0x6: po.visualSetType = reader.ReadUInt16();
  306. 0x8: Pointer off_LODDistances = Pointer.Read(reader);
  307. 0xC: Pointer off_LODDataOffsets = Pointer.Read(reader);
  308. 0x10: reader.ReadUInt32(); // always 0? RLI table offset
  309. 0x14: if (Settings.s.engineVersion > Settings.EngineVersion.Montreal) reader.ReadUInt32(); // always 0? number of RLI
  310.  
  311. PhysicalObject.<Read>b__3
  312. 0x0: po.visualSet[i].LODdistance = reader.ReadSingle();
  313.  
  314. PhysicalObject.<Read>b__4
  315. 0x0: po.visualSet[i].off_data = Pointer.Read(reader);
  316.  
  317. GeometricObject.Read
  318. 0x0: m.off_vertices = Pointer.Read(reader);
  319. 0x4: m.off_normals = Pointer.Read(reader);
  320. 0x8: m.off_blendWeights = Pointer.Read(reader);
  321. 0xC: reader.ReadInt32();
  322. 0x10: m.off_element_types = Pointer.Read(reader);
  323. 0x14: m.off_elements = Pointer.Read(reader);
  324. 0x18: reader.ReadInt32();
  325. 0x1C: m.off_parallelBoxes = Pointer.Read(reader);
  326. 0x20: m.lookAtMode = reader.ReadUInt32();
  327. 0x24: m.num_vertices = reader.ReadUInt16();
  328. 0x26: m.num_elements = reader.ReadUInt16();
  329. 0x28: reader.ReadUInt16();
  330. 0x2A: m.num_parallelBoxes = reader.ReadUInt16();
  331. 0x2C: m.sphereRadius = reader.ReadSingle(); // bounding volume radius
  332. 0x30: float sphereX = reader.ReadSingle(); // x
  333. 0x34: float sphereZ = reader.ReadSingle(); // z
  334. 0x38: float sphereY = reader.ReadSingle(); // y
  335. 0x3C: reader.ReadInt32();
  336. 0x40: reader.ReadInt32();
  337. 0x44: reader.ReadInt16();
  338. 0x46: m.element_types[i] = reader.ReadUInt16();
  339. 0x48: Pointer block_offset = Pointer.Read(reader);
  340.  
  341. GeometricObject.<Read>b__0
  342. 0x0: float x = reader.ReadSingle();
  343. 0x4: float z = reader.ReadSingle();
  344. 0x8: float y = reader.ReadSingle();
  345.  
  346. GeometricObject.<Read>b__1
  347. 0x0: float x = reader.ReadSingle();
  348. 0x4: float z = reader.ReadSingle();
  349. 0x8: float y = reader.ReadSingle();
  350.  
  351. GeometricObjectElementTriangles.Read
  352. 0x0: sm.off_material = Pointer.Read(reader);
  353. 0x4: sm.num_triangles = reader.ReadUInt16();
  354. 0x6: sm.num_uvs = reader.ReadUInt16();
  355. 0x8: sm.num_uvMaps = reader.ReadUInt16();
  356. 0xA: sm.lightmap_index = reader.ReadInt16();
  357. 0xC: sm.off_triangles = Pointer.Read(reader); // 1 entry = 3 shorts. Max: num_vertices
  358. 0x10: sm.off_mapping_uvs = Pointer.Read(reader); // 1 entry = 3 shorts. Max: num_weights
  359. 0x14: sm.off_normals = Pointer.Read(reader); // 1 entry = 3 floats
  360. 0x18: sm.off_uvs = Pointer.Read(reader); // 1 entry = 2 floats
  361. 0x1C: reader.ReadUInt32();
  362. 0x20: reader.ReadUInt32();
  363. 0x24: sm.off_vertex_indices = Pointer.Read(reader);
  364. 0x28: sm.num_vertex_indices = reader.ReadUInt16();
  365. 0x2A: sm.parallelBox = reader.ReadUInt16();
  366. 0x2C: reader.ReadUInt32();
  367. 0x30: sm.isVisibleInPortal = reader.ReadByte();
  368. 0x31: reader.ReadByte();
  369. 0x32: sm.OPT_num_mapping_entries = reader.ReadUInt16(); // num_shorts
  370. 0x34: sm.OPT_off_mapping_vertices = Pointer.Read(reader); // shorts_offset1 (1st array of size num_shorts, max_num_vertices)
  371. 0x38: sm.OPT_off_mapping_uvs = Pointer.Read(reader); // shorts_offset2 (2nd array of size num_shorts, max: num_weights)
  372. 0x3C: sm.OPT_num_triangleStrip = reader.ReadUInt16(); // num_shorts2
  373. 0x3E: sm.OPT_num_disconnectedTriangles = reader.ReadUInt16();
  374. 0x40: sm.OPT_off_triangleStrip = Pointer.Read(reader); // shorts2_offset (array of size num_shorts2)
  375. 0x44: sm.OPT_off_disconnectedTriangles = Pointer.Read(reader);
  376.  
  377. GeometricObjectElementTriangles.<Read>b__3
  378. 0x0: sm.mapping_uvs[um][j] = reader.ReadInt16();
  379.  
  380. GeometricObjectElementTriangles.<Read>b__4
  381. 0x0: sm.uvs[j] = new Vector2(reader.ReadSingle(), reader.ReadSingle());
  382.  
  383. GeometricObjectElementTriangles.<Read>b__7
  384. 0x0: sm.triangles[(j * 3) + 0] = reader.ReadInt16();
  385. 0x2: sm.triangles[(j * 3) + 1] = reader.ReadInt16();
  386. 0x4: sm.triangles[(j * 3) + 2] = reader.ReadInt16();
  387.  
  388. GeometricObjectElementTriangles.<Read>b__8
  389. 0x0: float x = reader.ReadSingle();
  390. 0x4: float z = reader.ReadSingle();
  391. 0x8: float y = reader.ReadSingle();
  392.  
  393. DeformSet.Read
  394. 0x0: d.off_weights = Pointer.Read(reader);
  395. 0x4: d.off_bones = Pointer.Read(reader);
  396. 0x8: d.num_weights = reader.ReadUInt16();
  397. 0xA: d.num_bones = reader.ReadByte();
  398. 0xB: Pointer off_weightsForVertex = Pointer.Read(reader);
  399. 0xF: ushort vertex_index = reader.ReadUInt16();
  400. 0x11: byte num_weightsForVertex = reader.ReadByte();
  401. 0x12: reader.ReadByte(); // 0, padding
  402. 0x13: ushort weight = reader.ReadUInt16();
  403. 0x15: byte boneIndex = reader.ReadByte();
  404. 0x16: reader.ReadByte(); // 0, padding
  405. 0x17: float x = reader.ReadSingle();
  406. 0x1B: float y = reader.ReadSingle();
  407. 0x1F: float z = reader.ReadSingle();
  408. 0x23: mat.SetColumn(j, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), 1f));
  409. 0x27: d.r3bones[i].unknown1 = reader.ReadSingle();
  410. 0x2B: d.r3bones[i].invert = reader.ReadUInt16();
  411. 0x2D: d.r3bones[i].index = reader.ReadByte();
  412. 0x2E: reader.ReadByte(); // 0, padding
  413.  
  414. PhysicalObject.<Read>b__1
  415. 0x0: uint u1 = reader.ReadUInt32(); // 0, zdm
  416. 0x4: uint u2 = reader.ReadUInt32(); // 0, zdd
  417. 0x8: uint u3 = reader.ReadUInt32(); // 0, zde
  418. 0xC: Pointer off_zdr = Pointer.Read(reader);
  419.  
  420. MeshModificationObject.Read
  421. 0x0: mod.off_model = Pointer.Read(reader);
  422. 0x4: mod.num_properties = reader.ReadUInt32();
  423. 0x8: mod.off_properties = Pointer.Read(reader);
  424.  
  425. MeshModificationObject.<Read>b__0
  426. 0x0: mod.properties[i].id = reader.ReadUInt16();
  427. 0x2: mod.properties[i].unk = reader.ReadUInt16();
  428. 0x4: float x = reader.ReadSingle();
  429. 0x8: float z = reader.ReadSingle();
  430. 0xC: float y = reader.ReadSingle();
  431.  
  432. ObjectList.<Read>b__0
  433. 0x0: float x = reader.ReadSingle();
  434. 0x4: float z = reader.ReadSingle();
  435. 0x8: float y = reader.ReadSingle();
  436.  
  437. State.<Read>b__2
  438. 0x0: s.cine_mapname = reader.ReadNullDelimitedString();
  439.  
  440. State.<Read>b__3
  441. 0x0: s.cine_name = reader.ReadNullDelimitedString();
  442.  
  443. SuperObject.Read
  444. 0x0: so.typeCode = reader.ReadUInt32(); // 0 - 4
  445. 0x4: so.off_data = Pointer.Read(reader); // 4 - 8
  446. 0x8: so.off_brother_next = Pointer.Read(reader); // 14 - 18
  447. 0xC: so.off_brother_prev = Pointer.Read(reader); // 18 - 1C
  448. 0x10: so.off_parent = Pointer.Read(reader); // 1C - 20
  449. 0x14: so.off_matrix = Pointer.Read(reader); // 0x20->0x24
  450. 0x18: so.off_staticMatrix = Pointer.Read(reader); // other matrix
  451. 0x1C: so.globalMatrix = reader.ReadInt32(); // 0x28 -> 0x2C
  452. 0x20: if (Settings.s.engineVersion == Settings.EngineVersion.R3) reader.ReadUInt32();
  453. 0x24: Pointer off_boundingVolume = Pointer.Read(reader);
  454.  
  455. SuperObjectDrawFlags.Read
  456. 0x0: soFlags.flags = (Flags)(reader.ReadUInt32() ^ 0xFFFFFFFF);
  457.  
  458. SuperObjectFlags.Read
  459. 0x0: soFlags.flags = (Flags)reader.ReadUInt32();
  460.  
  461. Matrix.Read
  462. 0x0: UInt32 type = Settings.s.game != Settings.Game.R2Revolution ? reader.ReadUInt32() : 0; // 0x02: always at the start of a transformation matrix
  463. 0x4: mat.m.SetColumn(0, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()));
  464. 0x8: mat.m.SetColumn(1, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()));
  465. 0xC: mat.m.SetColumn(2, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()));
  466. 0x10: mat.m.SetColumn(3, new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()));
  467. 0x14: mat.v = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  468.  
  469. Perso.Read
  470. 0x0: p.off_3dData = Pointer.Read(reader); // 0x0
  471. 0x4: p.off_stdGame = Pointer.Read(reader); // 4 Standard Game info
  472. 0x8: p.off_dynam = Pointer.Read(reader); // 0x8 Dynam
  473. 0xC: p.off_brain = Pointer.Read(reader); // 0xC
  474. 0x10: p.off_camera = Pointer.Read(reader); // 0x10 is Camera in Rayman 2
  475. 0x14: p.off_collSet = Pointer.Read(reader); // 0x14 collset
  476. 0x18: p.off_msWay = Pointer.Read(reader); // 0x18
  477. 0x1C: p.off_msLight = Pointer.Read(reader); // 0x1C - MSLight
  478. 0x20: p.off_sectInfo = Pointer.Read(reader); // 0x20 // Pointer to struct that points to active sector
  479. 0x24: reader.ReadUInt32(); // 0x24
  480. 0x28: reader.ReadUInt32();
  481.  
  482. Perso3dData.Read
  483. 0x0: d.off_stateInitial = Pointer.Read(reader);
  484. 0x4: d.off_stateCurrent = Pointer.Read(reader);
  485. 0x8: d.off_state2 = Pointer.Read(reader);
  486. 0xC: d.off_objectList = Pointer.Read(reader);
  487. 0x10: d.off_objectListInitial = Pointer.Read(reader);
  488. 0x14: d.off_family = Pointer.Read(reader);
  489.  
  490. StandardGame.Read
  491. 0x0: stdGame.objectTypes[0] = reader.ReadUInt32();
  492. 0x4: stdGame.objectTypes[1] = reader.ReadUInt32();
  493. 0x8: stdGame.objectTypes[2] = reader.ReadUInt32();
  494. 0xC: stdGame.off_superobject = Pointer.Read(reader); // 0xC SuperObject from Perso probably
  495. 0x10: reader.ReadBytes(0x10); // 0x10 - 0x1F
  496. 0x20: stdGame.customBits = reader.ReadUInt32(); // 0x20 custom bits
  497. 0x24: stdGame.aiCustomBits = reader.ReadUInt32(); // 0x24 AI custom bits
  498. 0x28: stdGame.isAPlatform = reader.ReadByte();
  499. 0x29: stdGame.updateCheckByte = reader.ReadByte();
  500. 0x2A: stdGame.transparencyZoneMin = reader.ReadByte();
  501. 0x2B: stdGame.transparencyZoneMax = reader.ReadByte();
  502. 0x2C: stdGame.customBitsInitial = reader.ReadUInt32();
  503. 0x30: stdGame.aiCustomBitsInitial = reader.ReadUInt32();
  504.  
  505. Dynam.Read
  506. 0x0: dynam.off_dynamics = Pointer.Read(reader);
  507.  
  508. Dynamics.Read
  509. 0x0: dynamics.field_0 = reader.ReadUInt32();
  510. 0x4: dynamics.field_4 = reader.ReadUInt32();
  511. 0x8: dynamics.field_8 = reader.ReadUInt32();
  512. 0xC: dynamics.field_C = reader.ReadUInt32();
  513. 0x10: dynamics.off_speedVector = Pointer.Read(reader);
  514. 0x14: dynamics.speedVector = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  515.  
  516. Brain.Read
  517. 0x0: b.off_mind = Pointer.Read(reader);
  518. 0x4: if (Settings.s.game != Settings.Game.R2Revolution) b.unknown1 = reader.ReadUInt32(); // init at 0xCDCDCDCD
  519. 0x8: b.unknown2 = reader.ReadUInt32(); // 0
  520.  
  521. Mind.ReadInternal
  522. 0x0: off_AI_model = Pointer.Read(reader);
  523. 0x4: off_intelligence_normal = Pointer.Read(reader);
  524. 0x8: off_intelligence_reflex = Pointer.Read(reader);
  525. 0xC: off_dsgMem = Pointer.Read(reader);
  526. 0x10: byte0 = reader.ReadByte();
  527. 0x11: byte1 = reader.ReadByte();
  528. 0x12: byte2 = reader.ReadByte();
  529. 0x13: byte3 = reader.ReadByte();
  530.  
  531. AIModel.ReadInternal
  532. 0x0: off_behaviors_normal = Pointer.Read(reader);
  533. 0x4: off_behaviors_reflex = Pointer.Read(reader);
  534. 0x8: off_dsgVar = Pointer.Read(reader);
  535. 0xC: off_macros = Pointer.Read(reader);
  536. 0x10: flags = reader.ReadUInt32();
  537.  
  538. AIModel.<ReadInternal>b__0
  539. 0x0: Pointer off_entries = Pointer.Read(reader);
  540. 0x4: uint num_entries = reader.ReadUInt32();
  541.  
  542. Behavior.ReadInternal
  543. 0x0: off_scripts = Pointer.Read(reader);
  544. 0x4: off_firstScript = Pointer.Read(reader);
  545. 0x8: num_scripts = reader.ReadByte();
  546. 0x9: reader.ReadByte();
  547. 0xA: reader.ReadByte();
  548. 0xB: reader.ReadByte();
  549.  
  550. Script.Read
  551. 0x0: s.off_script = Pointer.Read(reader);
  552.  
  553. ScriptNode.Read
  554. 0x0: sn.param = reader.ReadUInt32();
  555. 0x4: reader.ReadByte();
  556. 0x5: reader.ReadByte();
  557. 0x6: sn.indent = reader.ReadByte();
  558. 0x7: sn.type = reader.ReadByte();
  559.  
  560. DsgVar.ReadInternal
  561. 0x0: off_dsgMemBuffer = Pointer.Read(reader);
  562. 0x4: off_dsgVarInfo = Pointer.Read(reader);
  563. 0x8: dsgMemBufferLength = reader.ReadUInt32();
  564. 0xC: amountOfInfos = reader.ReadByte();
  565. 0xD: reader.ReadBytes(3);
  566.  
  567. DsgVarInfoEntry.Read
  568. 0x0: d.offsetInBuffer = reader.ReadUInt32();
  569. 0x4: d.typeNumber = reader.ReadUInt32();
  570. 0x8: d.saveType = reader.ReadUInt32();
  571. 0xC: d.initType = reader.ReadUInt32();
  572.  
  573. DsgVarValue.Read
  574. 0x0: valuePointer = Pointer.Read(reader);
  575. 0x4: valuePointer = Pointer.Read(reader);
  576. 0x8: valuePointer = Pointer.Read(reader);
  577. 0xC: valueSoundEvent = reader.ReadUInt32(); break;
  578.  
  579. DsgMem.ReadInternal
  580. 0x0: Pointer dsgVarPointer = Pointer.Read(reader);
  581. 0x4: memBufferInitial = Pointer.Read(reader);
  582. 0x8: memBuffer = Pointer.Read(reader);
  583.  
  584. DsgMem.<ReadInternal>b__0
  585. 0x0: off_dsgVar = Pointer.Read(reader);
  586.  
  587. Intelligence.ReadInternal
  588. 0x0: off_aiModel = Pointer.Read(reader); // 0x0
  589. 0x4: off_actionTree = Pointer.Read(reader); //0x4
  590. 0x8: off_comport = Pointer.Read(reader); //0x8
  591. 0xC: off_lastComport = Pointer.Read(reader);
  592. 0x10: off_actionTable = Pointer.Read(reader);
  593.  
  594. PersoSectorInfo.Read
  595. 0x0: si.off_sector = Pointer.Read(reader);
  596.  
  597. DsgVarValue.ReadArray
  598. 0x0: arrayTypeNumber = reader.ReadUInt32();
  599. 0x4: arrayLength = reader.ReadByte();
  600. 0x5: reader.ReadBytes(3); // padding
  601.  
  602. BoundingVolume.Read
  603. 0x0: float float_1 = reader.ReadSingle();
  604. 0x4: float float_2 = reader.ReadSingle();
  605. 0x8: float float_3 = reader.ReadSingle();
  606. 0xC: float float_4 = reader.ReadSingle();
  607. 0x10: float float_5 = reader.ReadSingle();
  608. 0x14: float float_6 = reader.ReadSingle();
  609.  
  610. AIModel.<ReadInternal>b__2
  611. 0x0: Pointer off_entries = Pointer.Read(reader);
  612. 0x4: byte num_entries = reader.ReadByte();
  613. 0x5: reader.ReadByte();
  614. 0x6: reader.ReadByte();
  615. 0x7: reader.ReadByte();
  616.  
  617. Macro.ReadInternal
  618. 0x0: off_script = Pointer.Read(reader);
  619. 0x4: off_script2 = Pointer.Read(reader);
  620.  
  621. LinkedList.ReadHeader
  622. 0x0: li.off_head = Pointer.Read(reader);
  623. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  624. 0x8: li.num_elements = reader.ReadUInt32();
  625.  
  626. GraphNode.Read
  627. 0x0: node.off_nextNode = Pointer.Read(reader);
  628. 0x4: node.off_prevNode = Pointer.Read(reader);
  629. 0x8: node.off_graph = Pointer.Read(reader);
  630. 0xC: node.off_wayPoint = Pointer.Read(reader);
  631. 0x10: reader.ReadUInt32();
  632. 0x14: reader.ReadUInt32();
  633. 0x18: node.off_arcList = Pointer.Read(reader);
  634.  
  635. WayPoint.Read
  636. 0x0: float x = reader.ReadSingle();
  637. 0x4: float y = reader.ReadSingle();
  638. 0x8: float z = reader.ReadSingle();
  639. 0xC: radius = reader.ReadSingle();
  640.  
  641. LinkedList.ReadHeader
  642. 0x0: li.off_head = Pointer.Read(reader);
  643. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  644. 0x8: li.num_elements = reader.ReadUInt32();
  645.  
  646. LinkedList.ReadEntries
  647. 0x0: off_next = Pointer.Read(reader);
  648. 0x4: if (type == Type.Double && !noPreviousPointers) Pointer.Read(reader); // previous element pointer
  649. 0x8: if (hasHeaderPointers) Pointer.Read(reader); // header struct pointer
  650.  
  651. Arc.Read
  652. 0x0: arc.off_node = Pointer.Read(reader);
  653. 0x4: arc.capabilities = reader.ReadUInt32();
  654. 0x8: arc.field_0x14 = reader.ReadUInt32();
  655. 0xC: arc.weight = reader.ReadInt32();
  656. 0x10: arc.field_0x1C = reader.ReadInt32();
  657.  
  658. CollSet.Read
  659. 0x0: c.off_zdxList[CollideType.ZDD] = Pointer.Read(reader);
  660. 0x4: c.off_zdxList[CollideType.ZDE] = Pointer.Read(reader);
  661. 0x8: c.off_zdxList[CollideType.ZDM] = Pointer.Read(reader);
  662. 0xC: c.off_zdxList[CollideType.ZDR] = Pointer.Read(reader);
  663. 0x10: c.off_activationList[CollideType.ZDD] = Pointer.Read(reader);
  664. 0x14: c.off_activationList[CollideType.ZDE] = Pointer.Read(reader);
  665. 0x18: c.off_activationList[CollideType.ZDM] = Pointer.Read(reader);
  666. 0x1C: c.off_activationList[CollideType.ZDR] = Pointer.Read(reader);
  667. 0x20: c.off_zones[CollideType.ZDD] = Pointer.Read(reader);
  668. 0x24: c.off_zones[CollideType.ZDE] = Pointer.Read(reader);
  669. 0x28: c.off_zones[CollideType.ZDM] = Pointer.Read(reader);
  670. 0x2C: c.off_zones[CollideType.ZDR] = Pointer.Read(reader);
  671. 0x30: c.privilegedActivations[CollideType.ZDD] = reader.ReadInt32();
  672. 0x34: c.privilegedActivations[CollideType.ZDE] = reader.ReadInt32();
  673. 0x38: c.privilegedActivations[CollideType.ZDM] = reader.ReadInt32();
  674. 0x3C: c.privilegedActivations[CollideType.ZDR] = reader.ReadInt32();
  675.  
  676. ScriptNode.<Read>b__0
  677. 0x0: string str = reader.ReadNullDelimitedString();
  678.  
  679. LinkedList.ReadHeader
  680. 0x0: li.off_head = Pointer.Read(reader);
  681. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  682. 0x8: li.num_elements = reader.ReadUInt32();
  683.  
  684. LinkedList.ReadEntries
  685. 0x0: off_next = Pointer.Read(reader);
  686. 0x4: if (readAtPointer && !elementPointerFirst) off_element = Pointer.Read(reader);
  687.  
  688. LinkedList.ReadHeader
  689. 0x0: li.off_head = Pointer.Read(reader);
  690. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  691. 0x8: li.num_elements = reader.ReadUInt32();
  692.  
  693. CollideActivationZone.Read
  694. 0x0: z.off_next = Pointer.Read(reader);
  695. 0x4: z.zdxIndex = reader.ReadUInt16();
  696.  
  697. LinkedList.ReadHeader
  698. 0x0: li.off_head = Pointer.Read(reader);
  699. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  700. 0x8: li.num_elements = reader.ReadUInt32();
  701.  
  702. CollideActivation.Read
  703. 0x0: a.off_next = Pointer.Read(reader);
  704. 0x4: a.off_activationZone = Pointer.Read(reader);
  705. 0x8: a.index = reader.ReadUInt16();
  706. 0xA: reader.ReadUInt16();
  707.  
  708. LinkedList.ReadHeader
  709. 0x0: li.off_head = Pointer.Read(reader);
  710. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  711. 0x8: li.num_elements = reader.ReadUInt32();
  712.  
  713. LinkedList.ReadEntries
  714. 0x0: if (elementPointerFirst) off_element = Pointer.Read(reader);
  715. 0x4: off_next = Pointer.Read(reader);
  716.  
  717. LightInfo.ReadInternal
  718. 0x0: turnedOn = reader.ReadByte();
  719. 0x1: castShadows = reader.ReadByte();
  720. 0x2: giroPhare = reader.ReadByte();
  721. 0x3: pulse = reader.ReadByte();
  722. 0x4: if (Settings.s.platform != Settings.Platform.DC) reader.ReadUInt32();
  723. 0x8: type = reader.ReadUInt16();
  724. 0xA: reader.ReadUInt16();
  725. 0xC: far = reader.ReadSingle();
  726. 0x10: near = reader.ReadSingle();
  727. 0x14: littleAlpha_fogInfinite = reader.ReadSingle();
  728. 0x18: bigAlpha_fogBlendNear = reader.ReadSingle();
  729. 0x1C: giroStep = reader.ReadSingle();
  730. 0x20: pulseStep = reader.ReadSingle();
  731. 0x24: pulseMaxRange = reader.ReadSingle();
  732. 0x28: giroAngle = reader.ReadSingle();
  733. 0x2C: reader.ReadSingle();
  734. 0x30: reader.ReadUInt32(); // 0
  735. 0x34: reader.ReadUInt32(); // 0
  736. 0x38: reader.ReadUInt32(); // 0
  737. 0x3C: reader.ReadUInt32(); // 0
  738. 0x40: reader.ReadUInt32(); // 0
  739. 0x44: reader.ReadUInt32(); // 0
  740. 0x48: color = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  741. 0x4C: shadowIntensity = reader.ReadSingle(); // 0
  742. 0x50: sendLightFlag = reader.ReadByte(); // Non-zero: light enabled
  743. 0x51: objectLightedFlag = reader.ReadByte(); // & 1: Affect IPOs. & 2: Affect Persos. So 3 = affect all
  744. 0x52: paintingLightFlag = reader.ReadByte();
  745. 0x53: alphaLightFlag = reader.ReadByte();
  746. 0x54: interMinPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  747. 0x58: exterMinPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  748. 0x5C: interMaxPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  749. 0x60: exterMaxPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  750. 0x64: exterCenterPos = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  751. 0x68: attFactor3 = reader.ReadSingle();
  752. 0x6C: intensityMin_fogBlendFar = reader.ReadSingle();
  753. 0x70: intensityMax = reader.ReadSingle();
  754. 0x74: background_color = new Vector4(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  755. 0x78: createsShadowsOrNot = reader.ReadUInt32();
  756.  
  757. LinkedList.ReadHeader
  758. 0x0: li.off_head = Pointer.Read(reader);
  759. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  760. 0x8: li.num_elements = reader.ReadUInt32();
  761.  
  762. LinkedList.ReadHeader
  763. 0x0: li.off_head = Pointer.Read(reader);
  764. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  765. 0x8: li.num_elements = reader.ReadUInt32();
  766.  
  767. Sector.Read
  768. 0x0: reader.ReadUInt32();
  769. 0x4: s.isSectorVirtual = reader.ReadByte();
  770. 0x5: reader.ReadByte();
  771. 0x6: reader.ReadByte();
  772. 0x7: s.sectorPriority = reader.ReadByte();
  773. 0x8: reader.ReadUInt32();
  774. 0xC: reader.ReadByte();
  775.  
  776. IPO.Read
  777. 0x0: ipo.off_data = Pointer.Read(reader);
  778. 0x4: ipo.off_radiosity = Pointer.Read(reader);
  779. 0x8: reader.ReadUInt32();
  780. 0xC: ipo.off_portalCamera = Pointer.Read(reader);
  781. 0x10: reader.ReadUInt32();
  782. 0x14: reader.ReadUInt32();
  783. 0x18: reader.ReadUInt32();
  784.  
  785. GeometricObjectElementTriangles.<Read>b__1
  786. 0x0: sm.OPT_mapping_vertices[j] = reader.ReadInt16();
  787.  
  788. GeometricObjectElementTriangles.<Read>b__2
  789. 0x0: sm.OPT_mapping_uvs[um][j] = reader.ReadInt16();
  790.  
  791. GeometricObjectElementTriangles.<Read>b__5
  792. 0x0: sm.OPT_triangleStrip[j] = reader.ReadInt16();
  793.  
  794. GeometricObjectElementTriangles.<Read>b__6
  795. 0x0: sm.OPT_disconnectedTriangles[(j * 3) + 0] = reader.ReadInt16();
  796. 0x2: sm.OPT_disconnectedTriangles[(j * 3) + 1] = reader.ReadInt16();
  797. 0x4: sm.OPT_disconnectedTriangles[(j * 3) + 2] = reader.ReadInt16();
  798.  
  799. GeometricObjectCollide.Read
  800. 0x0: m.num_vertices = reader.ReadUInt16();
  801. 0x2: m.num_elements = reader.ReadUInt16();
  802. 0x4: reader.ReadUInt32();
  803. 0x8: m.off_vertices = Pointer.Read(reader);
  804. 0xC: m.off_element_types = Pointer.Read(reader);
  805. 0x10: m.off_elements = Pointer.Read(reader);
  806. 0x14: Pointer.Read(reader);
  807. 0x18: m.off_parallelBoxes = Pointer.Read(reader);
  808. 0x1C: m.sphereRadius = reader.ReadSingle(); // bounding volume radius
  809. 0x20: float sphereX = reader.ReadSingle(); // x
  810. 0x24: float sphereZ = reader.ReadSingle(); // z
  811. 0x28: float sphereY = reader.ReadSingle(); // y
  812. 0x2C: float x = reader.ReadSingle();
  813. 0x30: float z = reader.ReadSingle();
  814. 0x34: float y = reader.ReadSingle();
  815. 0x38: m.element_types[i] = reader.ReadUInt16();
  816. 0x3A: Pointer block_offset = Pointer.Read(reader);
  817.  
  818. GeometricObjectElementCollideTriangles.Read
  819. 0x0: sm.off_material = Pointer.Read(reader);
  820. 0x4: sm.off_triangles = Pointer.Read(reader);
  821. 0x8: sm.off_normals = Pointer.Read(reader);
  822. 0xC: sm.num_triangles = reader.ReadUInt16();
  823. 0xE: sm.ind_parallelBox = reader.ReadInt16();
  824. 0x10: reader.ReadUInt32();
  825. 0x14: sm.off_mapping = Pointer.Read(reader);
  826. 0x18: sm.off_unk = Pointer.Read(reader); // num_mapping_entries * 3 floats
  827. 0x1C: sm.off_unk2 = Pointer.Read(reader); // num_mapping_entries * 1 float
  828. 0x20: sm.num_mapping = reader.ReadUInt16();
  829. 0x22: reader.ReadUInt16();
  830. 0x24: sm.triangles[(j * 3) + 0] = reader.ReadInt16();
  831. 0x26: sm.triangles[(j * 3) + 1] = reader.ReadInt16();
  832. 0x28: sm.triangles[(j * 3) + 2] = reader.ReadInt16();
  833. 0x2A: sm.mapping[(i * 3) + 0] = reader.ReadInt16();
  834. 0x2C: sm.mapping[(i * 3) + 1] = reader.ReadInt16();
  835. 0x2E: sm.mapping[(i * 3) + 2] = reader.ReadInt16();
  836.  
  837. GameMaterial.Read
  838. 0x0: gm.soundMaterial = reader.ReadUInt32();
  839. 0x4: gm.off_collideMaterial = Pointer.Read(reader, allowMinusOne: true);
  840.  
  841. GeometricObjectElementCollideTriangles.<Read>b__0
  842. 0x0: float x = reader.ReadSingle();
  843. 0x4: float z = reader.ReadSingle();
  844. 0x8: float y = reader.ReadSingle();
  845.  
  846. GeometricObject.<Read>b__2
  847. 0x0: Pointer off_blendWeights = Pointer.Read(reader);
  848. 0x4: reader.ReadUInt32();
  849. 0x8: reader.ReadUInt32();
  850. 0xC: reader.ReadUInt32();
  851. 0x10: reader.ReadUInt32();
  852.  
  853. GeometricObject.<Read>b__5
  854. 0x0: m.blendWeights[i][j] = reader.ReadSingle();
  855.  
  856. AIModel.<ReadInternal>b__1
  857. 0x0: Pointer off_entries = Pointer.Read(reader);
  858. 0x4: uint num_entries = reader.ReadUInt32();
  859.  
  860. GeometricObjectElementCollideSpheres.Read
  861. 0x0: s.off_spheres = Pointer.Read(reader);
  862. 0x4: s.num_spheres = reader.ReadUInt16();
  863. 0x6: s.ind_parallelBox = reader.ReadInt16(); // -1
  864. 0x8: s.spheres[i].radius = reader.ReadSingle();
  865. 0xC: s.spheres[i].off_material = Pointer.Read(reader);
  866. 0x10: s.spheres[i].centerPoint = reader.ReadUInt16();
  867. 0x12: reader.ReadUInt16();
  868.  
  869. CollideMaterial.Read
  870. 0x0: cm.type = reader.ReadUInt16();
  871. 0x2: cm.identifier = reader.ReadUInt16();
  872. 0x4: cm.direction = new Vector3(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
  873. 0x8: cm.coef = reader.ReadSingle();
  874. 0xC: cm.typeForAI = reader.ReadUInt32();
  875.  
  876. LinkedList.ReadEntries
  877. 0x0: off_next = Pointer.Read(reader);
  878. 0x4: if (type == Type.Double && !noPreviousPointers) Pointer.Read(reader); // previous element pointer
  879. 0x8: if (hasHeaderPointers) Pointer.Read(reader); // header struct pointer
  880.  
  881. MapLoader.<ReadAlways>b__0
  882. 0x0: index = reader.ReadUInt32();
  883. 0x4: off_spawnable_perso = Pointer.Read(reader);
  884.  
  885. LinkedList.ReadHeader
  886. 0x0: li.off_head = Pointer.Read(reader);
  887. 0x4: if (li.type == Type.Double || li.type == Type.DoubleNoElementPointers) li.off_tail = Pointer.Read(reader);
  888. 0x8: li.num_elements = reader.ReadUInt32();
  889.  
  890. CinematicsManager.Read
  891. 0x0: cm.unk = reader.ReadUInt32();
  892.  
  893. AnimationStack.Read
  894. 0x0: reader.ReadUInt32();
  895. 0x4: stack.count = reader.ReadUInt32();
  896. 0x8: stack.reservedMemory = reader.ReadUInt32();
  897. 0xC: && Settings.s.game != Settings.Game.Dinosaur) reader.ReadUInt32();
  898. 0x10: stack.countInFix = reader.ReadUInt32();
  899.  
  900. AnimationBank.Read
  901. 0x0: if (banks[i].a3d_general.reservedMemory > 0) banks[i].a3d_general.off_data = Pointer.Read(reader);
  902. 0x4: if (banks[i].vectors.reservedMemory > 0) banks[i].vectors.off_data = Pointer.Read(reader);
  903. 0x8: if (banks[i].quaternions.reservedMemory > 0) banks[i].quaternions.off_data = Pointer.Read(reader);
  904. 0xC: if (banks[i].hierarchies.reservedMemory > 0) banks[i].hierarchies.off_data = Pointer.Read(reader);
  905. 0x10: if (banks[i].NTTO.reservedMemory > 0) banks[i].NTTO.off_data = Pointer.Read(reader);
  906. 0x14: if (banks[i].onlyFrames.reservedMemory > 0) banks[i].onlyFrames.off_data = Pointer.Read(reader);
  907. 0x18: if (banks[i].channels.reservedMemory > 0) banks[i].channels.off_data = Pointer.Read(reader);
  908. 0x1C: if (banks[i].framesNumOfNTTO.reservedMemory > 0) banks[i].framesNumOfNTTO.off_data = Pointer.Read(reader);
  909. 0x20: if (banks[i].framesKFIndex.reservedMemory > 0) banks[i].framesKFIndex.off_data = Pointer.Read(reader);
  910. 0x24: if (banks[i].keyframes.reservedMemory > 0) banks[i].keyframes.off_data = Pointer.Read(reader);
  911. 0x28: if (banks[i].events.reservedMemory > 0) banks[i].events.off_data = Pointer.Read(reader);
  912. 0x2C: if (banks[i].morphData.reservedMemory > 0) banks[i].morphData.off_data = Pointer.Read(reader);
  913. 0x30: if (Settings.s.hasDeformations && banks[i].deformations.reservedMemory > 0) banks[i].deformations.off_data = Pointer.Read(reader);
  914.  
  915. AnimA3DGeneral.ReadInternal
  916. 0x0: speed = reader.ReadUInt16();
  917. 0x2: num_vectors = reader.ReadUInt16();
  918. 0x4: num_quaternions = reader.ReadUInt16();
  919. 0x6: num_hierarchies = reader.ReadUInt16();
  920. 0x8: num_NTTO = reader.ReadUInt16();
  921. 0xA: num_numNTTO = reader.ReadUInt16();
  922. 0xC: num_deformations = reader.ReadUInt16();
  923. 0xE: num_channels = reader.ReadUInt16();
  924. 0x10: num_onlyFrames = reader.ReadUInt16();
  925. 0x12: unk_12 = reader.ReadUInt16();
  926. 0x14: unk_14 = reader.ReadUInt16();
  927. 0x16: num_keyframes = reader.ReadUInt16();
  928. 0x18: num_events = reader.ReadUInt16();
  929. 0x1A: unk_1A = reader.ReadUInt16();
  930. 0x1C: subtractFramesForSpeed = reader.ReadUInt16();
  931. 0x1E: unk_1E = reader.ReadUInt16();
  932. 0x20: speed2 = reader.ReadUInt16();
  933. 0x22: unk_22_morphs = reader.ReadUInt16();
  934. 0x24: start_vectors2 = reader.ReadUInt16();
  935. 0x26: start_quaternions2 = reader.ReadUInt16();
  936. 0x28: num_morphData = reader.ReadUInt16();
  937. 0x2A: start_vectors = reader.ReadUInt16();
  938. 0x2C: start_quaternions = reader.ReadUInt16();
  939. 0x2E: start_hierarchies = reader.ReadUInt16();
  940. 0x30: start_NTTO = reader.ReadUInt16();
  941. 0x32: start_deformations = reader.ReadUInt16();
  942. 0x34: start_onlyFrames = reader.ReadUInt16();
  943. 0x36: start_channels = reader.ReadUInt16();
  944. 0x38: start_events = reader.ReadUInt16();
  945. 0x3A: start_morphData = reader.ReadUInt16();
  946.  
  947. AnimVector.ReadInternal
  948. 0x0: float x = reader.ReadSingle();
  949. 0x4: float z = reader.ReadSingle();
  950. 0x8: float y = reader.ReadSingle();
  951.  
  952. AnimQuaternion.ReadInternal
  953. 0x0: float x = (float)reader.ReadInt16() / (float)Int16.MaxValue;
  954. 0x2: float y = (float)reader.ReadInt16() / (float)Int16.MaxValue;
  955. 0x4: float z = (float)reader.ReadInt16() / (float)Int16.MaxValue;
  956. 0x6: float w = (float)reader.ReadInt16() / (float)Int16.MaxValue;
  957.  
  958. AnimHierarchy.ReadInternal
  959. 0x0: childChannelID = reader.ReadInt16();
  960. 0x2: parentChannelID = reader.ReadInt16();
  961.  
  962. AnimNTTO.ReadInternal
  963. 0x0: flags = reader.ReadUInt16();
  964. 0x2: object_index = reader.ReadUInt16();
  965. 0x4: unk4 = reader.ReadByte();
  966. 0x5: unk5 = reader.ReadByte();
  967.  
  968. AnimOnlyFrame.ReadInternal
  969. 0x0: quaternion = reader.ReadUInt16();
  970. 0x2: vector = reader.ReadUInt16();
  971. 0x4: num_hierarchies_for_frame = reader.ReadUInt16();
  972. 0x6: start_hierarchies_for_frame = reader.ReadUInt16();
  973. 0x8: unk8 = reader.ReadUInt16();
  974. 0xA: deformation = reader.ReadUInt16();
  975. 0xC: numOfNTTO = reader.ReadUInt16();
  976.  
  977. AnimChannel.ReadInternal
  978. 0x0: unk0 = reader.ReadUInt16();
  979. 0x2: id = reader.ReadInt16();
  980. 0x4: vector = reader.ReadUInt16();
  981. 0x6: numOfNTTO = reader.ReadUInt16();
  982. 0x8: framesKF = reader.ReadUInt32();
  983. 0xC: keyframe = reader.ReadUInt32();
  984.  
  985. AnimNumOfNTTO.ReadInternal
  986. 0x0: numOfNTTO = reader.ReadUInt16();
  987.  
  988. AnimFramesKFIndex.ReadInternal
  989. 0x0: kf = reader.ReadUInt32();
  990.  
  991. AnimKeyframe.ReadInternal
  992. 0x0: frame = reader.ReadUInt16();
  993. 0x2: flags = reader.ReadUInt16();
  994. 0x4: quaternion = reader.ReadUInt16();
  995. 0x6: quaternion2 = reader.ReadUInt16();
  996. 0x8: scaleVector = reader.ReadUInt16();
  997. 0xA: positionVector = reader.ReadUInt16();
  998. 0xC: interpolationFactor = (double)reader.ReadUInt16() * 0.00012207031;
  999.  
  1000. AnimEvent.ReadInternal
  1001. 0x0: unk0 = reader.ReadUInt32();
  1002. 0x4: unk4 = reader.ReadUInt16();
  1003. 0x6: unk6 = reader.ReadUInt16();
  1004. 0x8: unk8 = reader.ReadUInt16();
  1005. 0xA: unkA = reader.ReadUInt16();
  1006.  
  1007. AnimMorphData.ReadInternal
  1008. 0x0: channel = reader.ReadInt16(); // the channel for which this morph data is relevant
  1009. 0x2: frame = reader.ReadUInt16(); // the frame for which this morph data is relevant
  1010. 0x4: reader.ReadByte();
  1011. 0x5: reader.ReadByte();
  1012. 0x6: reader.ReadByte();
  1013. 0x7: reader.ReadByte();
  1014. 0x8: objectIndexTo = reader.ReadUInt16(); // 5
  1015. 0xA: reader.ReadUInt16();
  1016. 0xC: reader.ReadBytes(0x10); // Haven't deciphered this yet
  1017. 0x1C: morphProgress = reader.ReadByte();
  1018. 0x1D: reader.ReadBytes(0x9);
  1019.  
  1020. AnimDeformation.ReadInternal
  1021. 0x0: channel = reader.ReadInt16();
  1022. 0x2: bone = reader.ReadUInt16();
  1023. 0x4: linkChannel = reader.ReadInt16();
  1024. 0x6: linkBone = reader.ReadUInt16();
  1025.  
  1026. LinkedList.ReadEntries
  1027. 0x0: if (elementPointerFirst) off_element = Pointer.Read(reader);
  1028. 0x4: off_next = Pointer.Read(reader);
Add Comment
Please, Sign In to add comment