Difference between revisions of "WDR"
Jump to navigation
Jump to search
(→File Format) |
|||
(69 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{File-stub}} | |
− | WDR is the format used for map models and weapons in GTA | + | '''WDR''' is the format used for map models and weapons in [[GTA4|GTA IV]]. It is also used for player model parts which can be found in playerped.rpf. |
+ | |||
+ | This file is compressed with the ZLib compression method. | ||
+ | |||
+ | == File Format == | ||
+ | |||
+ | RSC CPU section (Size found from the flags @ 0x08 of RSC file header) | ||
+ | |||
+ | -Note on RSC (24 + 8) pointer structure: | ||
+ | |||
+ | * CPU Offsets are of form [xx xx xx 50] | ||
+ | * Data Offsets are of form [xx xx xx 60] | ||
− | |||
− | |||
'''WDR''' Header (BlockSize 0x2A0) | '''WDR''' Header (BlockSize 0x2A0) | ||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
Offset Size Type Data Description | Offset Size Type Data Description | ||
------------------------------------------------------------------- | ------------------------------------------------------------------- | ||
− | 0x00 4b | + | 0x00 4b LONG [[VTable]] (Usually 0x00695254) |
0x04 4b Offset HeaderLength (Usually 0x90) | 0x04 4b Offset HeaderLength (Usually 0x90) | ||
0x08 4b Offset ShaderGroup (0 = no Shaders) | 0x08 4b Offset ShaderGroup (0 = no Shaders) | ||
Line 25: | Line 34: | ||
0x38 4b FLOAT BoundsMax z | 0x38 4b FLOAT BoundsMax z | ||
0x3C 4b FLOAT BoundsMax w | 0x3C 4b FLOAT BoundsMax w | ||
− | 0x40 4b Offset Pointer | + | 0x40 4b Offset Pointer ModelCollection (0=Non existing) |
0x44 4b Offset Pointer LOD models (0=Non existing) | 0x44 4b Offset Pointer LOD models (0=Non existing) | ||
0x48 4b Offset Pointer LOD models (0=Non existing) | 0x48 4b Offset Pointer LOD models (0=Non existing) | ||
Line 38: | Line 47: | ||
0x6C 4b LONG Unknown (Usually 0xFFFFFFFF) | 0x6C 4b LONG Unknown (Usually 0xFFFFFFFF) | ||
0x70 4b FLOAT Unknown | 0x70 4b FLOAT Unknown | ||
− | 0x74 | + | 0x74 12b LONG Unknown (Usually all zeros) |
− | 0x88 8b Unassigned data | + | 0x80 4b Offset 2DFX Array offset (Zero if no 2dfx section) |
− | 0x90 4b End of Header | + | 0x84 2b Short 2DFX Count |
+ | 0x86 2b Short 2DFX Size | ||
+ | 0x88 8b LONG Unassigned data (0xCDCDCDCDCDCDCDCD) | ||
+ | 0x90 4b LONG End of Header (Usually 0x00000000) | ||
+ | |||
+ | -------------------------------------------------------------------- | ||
+ | ModelCollection (BlockSize 0x08) | ||
+ | -------------------------------------------------------------------- | ||
+ | 0x00 4b Offset Pointer to Model Pointer | ||
+ | 0x04 2b Short Number of Pointers | ||
+ | 0x06 2b Short Number of Pointers | ||
+ | 0x08 4b LONG Padding (0xCDCDCDCD) | ||
+ | 0x0C 4b LONG Padding (0xCDCDCDCD) | ||
+ | |||
+ | -------------------------------------------------------------------- | ||
+ | Model (BlockSize 0x20) | ||
+ | -------------------------------------------------------------------- | ||
+ | 0x00 4b LONG [[VTable]] (0x34026B00) | ||
+ | 0x04 8b Offset PointerCollection<Geometrys> | ||
+ | 0x0C 4b Offset SimpleArray<Vector4> (Unknown Vectors) | ||
+ | 0x10 4b Offset SimpleArray<Integer> (Material Mappings) | ||
+ | 0x14 2b Short Unknown1 (Usually 0) | ||
+ | 0x16 2b Short Unknown2 | ||
+ | 0x18 2b Short Unknown3 | ||
+ | 0x1A 2b Short GeometryCount | ||
+ | 0x1C 4b LONG Padding (0xCDCDCDCD) | ||
+ | |||
+ | -------------------------------------------------------------------- | ||
+ | Geometry (BlockSize 0x50) | ||
+ | -------------------------------------------------------------------- | ||
+ | 0x00 4b LONG [[VTable]] (0xF4486B00) | ||
+ | 0x04 4b LONG Unknown 1 (Usually 0) | ||
+ | 0x08 4b LONG Unknown 2 (Usually 0) | ||
+ | 0x0C 4b Offset VertexBuffer | ||
+ | 0x10 4b LONG Unknown 3 (Usually 0) | ||
+ | 0x14 4b LONG Unknown 4 (Usually 0) | ||
+ | 0x18 4b LONG Unknown 5 (Usually 0) | ||
+ | 0x1C 4b Offset IndexBuffer | ||
+ | 0x20 4b LONG Unknown 6 (Usually 0) | ||
+ | 0x24 4b LONG Unknown 7 (Usually 0) | ||
+ | 0x28 4b LONG Unknown 8 (Usually 0) | ||
+ | 0x2C 4b LONG IndexCount | ||
+ | 0x30 4b LONG FaceCount | ||
+ | 0x34 2b Short VertexCount | ||
+ | 0x36 2b Short PrimitiveType | ||
+ | 0x38 4b LONG Unknown 9 (Usually 0) | ||
+ | 0x3C 2b Short VertexStride (36 without normal map, 52 with normal map) | ||
+ | 0x3E 2b Short Unknown 10 (Usually 0) | ||
+ | 0x40 4b LONG Unknown 11 (Usually 0) | ||
+ | 0x44 4b LONG Unknown 12 (Usually 0) | ||
+ | 0x48 4b LONG Unknown 13 (Usually 0) | ||
+ | 0x4C 4b LONG Padding (0xCDCDCDCD) | ||
+ | |||
+ | -------------------------------------------------------------------- | ||
+ | VertexBuffer (BlockSize 0x64) | ||
+ | -------------------------------------------------------------------- | ||
+ | 0x00 4b LONG [[VTable]] (0xD8BA6B00) | ||
+ | 0x04 2b Short VertexCount | ||
+ | 0x06 2b Short Unknown 1 (Usually 0) | ||
+ | 0x08 4b Offset DataOffset to VertexData | ||
+ | 0x1C 4b LONG VertexStride (36 without normal map, 52 with normal map) | ||
+ | 0x20 4b Offset VertexDeclarationOffset | ||
+ | 0x24 4b LONG Unknown 2 (Usually 0) | ||
+ | 0x28 4b Offset DataOffset to VertexData (Again) | ||
+ | 0x2C 4b LONG Unknown 3 (Usually 0) | ||
+ | 0x30 32b LONG Padding (0xCD) | ||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
− | + | IndexBuffer (BlockSize 0x40) | |
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
− | + | 0x00 4b LONG [[VTable]] (0x70B86B00) | |
− | + | 0x04 4b LONG IndexCount | |
− | + | 0x08 4b Offset DataOffset to IndexData | |
− | + | 0x0C 4b LONG Unknown 1 (Usually 0) | |
− | + | 0x10 32b LONG Padding (0xCD) | |
− | |||
− | |||
− | |||
− | |||
− | |||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
ShaderGroupData (offset remarked in Header at 0x08) (BlockSize 0x50) | ShaderGroupData (offset remarked in Header at 0x08) (BlockSize 0x50) | ||
-------------------------------------------------------------------- | -------------------------------------------------------------------- | ||
− | 0x00 4b Offset | + | 0x00 4b LONG [[VTable]] (0x44166B00) |
− | + | 0x04 4b Offset TextureDictionary (0 = no Embedded textures) | |
− | 0x08 | + | 0x08 4b Offset Pointer to a Pointer for ShaderFX PointerCollection |
− | + | 0x0C 2b Short Number of Pointers at Pointer for ShaderFX PointerCollection | |
+ | 0x0E 2b Short Number of Pointers at Pointer for ShaderFX PointerCollection | ||
+ | 0x10 48b Zeros | ||
+ | 0x40 4b Offset Pointer to SimpleCollection VertexDeclarationUsageFlags | ||
+ | 0x44 2b Short Number of SimpleCollection VertexDeclarationUsageFlag entries | ||
+ | 0x46 2b Short Number of SimpleCollection VertexDeclarationUsageFlag entries | ||
+ | 0x48 4b Offset Pointer to SimpleCollection UnknownInts | ||
+ | 0x4C 2b Short Number of SimpleCollection UnknownInt entries | ||
+ | 0x4E 2b Short Number of SimpleCollection UnknownInt entries | ||
+ | |||
+ | ----------------------------------------------------------------------------------------------------- | ||
+ | ShaderFX (offset remarked in ShaderGroupData in the Pointer to ShaderFX PointerCollection 0x08) (BlockSize 0x50) | ||
+ | ----------------------------------------------------------------------------------------------------- | ||
+ | 0x00 4b LONG [[VTable]] (0x3C226B00) | ||
+ | 0x04 4b LONG BlockMapAdress | ||
+ | 0x08 2b Short Unknown 1 | ||
+ | 0x0A 1b Byte Unknown 2 | ||
+ | 0x0B 1b Byte Unknown 3 | ||
+ | 0x0C 2b Short Unknown 4 | ||
+ | 0x0E 2b Short Unknown 4_1 | ||
+ | 0x10 4b LONG Unknown 5 | ||
+ | 0x14 4b Offset ShaderParamsOffsetsOffset | ||
+ | 0x18 4b LONG Unknown 6 | ||
+ | 0x1C 4b LONG ShaderParamCount | ||
+ | 0x20 4b LONG Unknown 8 | ||
+ | 0x24 4b Offset ShaderParamTypesOffset | ||
+ | 0x28 4b Hash Unknown Hash | ||
+ | 0x2C 4b LONG Unknown 9 | ||
+ | 0x30 4b LONG Unknown 10 | ||
+ | 0x34 4b Offset ShaderParamNameOffset | ||
+ | 0x38 4b LONG Unknown 11 | ||
+ | 0x3C 4b LONG Unknown 12 | ||
+ | 0x40 4b LONG Unknown 13 | ||
+ | 0x44 4b Offset ShaderName Pointer (Pointer to null terminated String) | ||
+ | 0x48 4b Offset ShaderSPS Pointer (Pointer to null terminated String) | ||
+ | 0x4C 4b LONG Unknown 14 | ||
+ | 0x50 4b LONG Unknown 15 | ||
+ | 0x54 4b LONG Unknown 16 | ||
+ | 0x58 4b LONG Unknown 17 | ||
+ | 0x5C 4b LONG Padding (0xCDCDCDCD) | ||
+ | |||
+ | -------------------------------------------------------------------- | ||
+ | Null Terminated String (BlockSize 0x10) | ||
+ | Note: If String is bigger then 0x10 it will be padded till 0x20 etc. | ||
+ | -------------------------------------------------------------------- | ||
+ | 0x00 String | ||
+ | 0x?? 1b 0x00 (End of String) | ||
+ | 0x?? 0xCD Padding till 0x0F | ||
+ | |||
+ | -------------------------------------------------------------------- | ||
+ | PointerCollection (BlockSize 0x08) | ||
+ | Contains pointers to the data of the given type | ||
+ | -------------------------------------------------------------------- | ||
+ | 0x00 4b Offset Offset to the Pointers | ||
+ | 0x04 2b Short Number of Pointers | ||
+ | 0x06 2b Short | ||
+ | |||
+ | -------------------------------------------------------------------- | ||
+ | SimpleCollection (BlockSize 0x08) | ||
+ | Contains data of the given type | ||
+ | -------------------------------------------------------------------- | ||
+ | 0x00 4b Offset Offset to the Data | ||
+ | 0x04 2b Short Data Count | ||
+ | 0x06 2b Short Data Size | ||
GRAPHICS section (Size found from the flags @ 0x08 of RSC file header) | GRAPHICS section (Size found from the flags @ 0x08 of RSC file header) | ||
− | ------------------------------------------------------- | + | --------------------------------------------------------------------------------------- |
− | + | VertexData (BlockSize VertexCount*0x24 or 0x34 when the Geometry is using a normal map) | |
− | + | --------------------------------------------------------------------------------------- | |
− | |||
− | |||
0x00 4b FLOAT Position x | 0x00 4b FLOAT Position x | ||
0x04 4b FLOAT Position y | 0x04 4b FLOAT Position y | ||
Line 80: | Line 210: | ||
0x1C 4b FLOAT Texcoord u | 0x1C 4b FLOAT Texcoord u | ||
0x20 4b FLOAT Texcoord v | 0x20 4b FLOAT Texcoord v | ||
− | 0x24 4b FLOAT Tangent x | + | 0x24 4b FLOAT Tangent/Bi-Normal x // Only when there is a normal map applied to the Geometry |
− | 0x28 4b FLOAT Tangent y | + | 0x28 4b FLOAT Tangent/Bi-Normal y // Only when there is a normal map applied to the Geometry |
− | 0x2C 4b FLOAT Tangent z | + | 0x2C 4b FLOAT Tangent/Bi-Normal z // Only when there is a normal map applied to the Geometry |
− | 0x30 4b FLOAT Tangent w | + | 0x30 4b FLOAT Tangent/Bi-Normal w // Only when there is a normal map applied to the Geometry |
+ | --------------------------------------------------------------------------------- | ||
+ | IndexData (BlockSize IndexCount*0x06) | ||
+ | --------------------------------------------------------------------------------- | ||
+ | 0x00 2b Short Vertex A | ||
+ | 0x02 2b Short Vertex B | ||
+ | 0x04 2b Short Vertex C | ||
+ | ------------------------------------------------------------------- | ||
+ | SkeletonData (BlockSize 64 bytes) | ||
+ | ------------------------------------------------------------------- | ||
+ | 0x00 4b Offset Pointer to a Pointer for Model Name | ||
+ | 0x04 4b Offset Pointer to a Pointer for VertexData | ||
+ | 0x08 4b Offset Pointer to unknown 64b data block (not always used, 0 if not used) | ||
+ | 0x0C 4b Offset Pointer to unknown 64b data block (not always used, 0 if not used) | ||
+ | 0x10 4b Offset Pointer to unknown 64b data block (not always used, 0 if not used) | ||
+ | 0x14 4b Long Geometry Count ? | ||
+ | 0x18 4b Long (Usually 0) | ||
+ | 0x1C 4b Long Unknown Integer | ||
+ | 0x20 4b Long (Usually 0) | ||
+ | 0x24 4b Long (Usually 0) | ||
+ | 0x28 4b Long Geometry Count ? | ||
+ | 0x2C 4b Long Uint32 (Usually 2305907972) | ||
+ | 0x30 4b Long (Usually 0) | ||
+ | 0x34 4b Long (0x6B2778) [[VTable]] ? | ||
+ | 0x38 4b Long (Usually 0) | ||
+ | 0x3C 4b Long (Usually 0) | ||
+ | -------------------------------------------------------------------- | ||
+ | Texture definition (for externally defined textures)(BlockSize 0x1C) | ||
+ | -------------------------------------------------------------------- | ||
+ | 0x00 4b LONG [[VTable]] (0x5C676B) | ||
+ | 0x04 4b LONG Unknown1 | ||
+ | 0x08 4b LONG Unknown2 | ||
+ | 0x0C 4b LONG Unknown3 | ||
+ | 0x10 4b LONG Unknown4 | ||
+ | 0x14 4b Offset Offset Pointer to Texture name | ||
+ | 0x18 4b LONG Unknown5 | ||
+ | 0x1C 4b LONG Padding (0xCDCDCDCD) | ||
+ | |||
+ | ==Tools and Scripts== | ||
+ | The following tools and scripts can be used to import & export (edit) these model files. | ||
+ | |||
+ | * {{GTAF|418034|DFF2WDR}} | ||
+ | * {{GTAG|7290|WDR Analyze}} | ||
+ | * {{GTAF|384933|SparkIV}} | ||
+ | * {{GTAF|388289|OpenIV}} | ||
+ | * {{GTAF|474215|GIMS}} | ||
+ | * {{GTAF|382615|Model format discussion topic}} | ||
{{GTA4-navi}} | {{GTA4-navi}} | ||
− | + | [[Category:3D_File_Formats]][[Category:Map_Formats]] | |
− | [[Category: |
Latest revision as of 08:34, 2 September 2011
WDR is the format used for map models and weapons in GTA IV. It is also used for player model parts which can be found in playerped.rpf.
This file is compressed with the ZLib compression method.
File Format
RSC CPU section (Size found from the flags @ 0x08 of RSC file header)
-Note on RSC (24 + 8) pointer structure:
* CPU Offsets are of form [xx xx xx 50] * Data Offsets are of form [xx xx xx 60]
WDR Header (BlockSize 0x2A0) ------------------------------------------------------------------- Offset Size Type Data Description ------------------------------------------------------------------- 0x00 4b LONG VTable (Usually 0x00695254) 0x04 4b Offset HeaderLength (Usually 0x90) 0x08 4b Offset ShaderGroup (0 = no Shaders) 0x0C 4b Offset SkeletonData (0 = no Skeleton) 0x10 4b FLOAT Center x 0x14 4b FLOAT Center y 0x18 4b FLOAT Center z 0x1C 4b FLOAT Center w 0x20 4b FLOAT BoundsMin x 0x24 4b FLOAT BoundsMin y 0x28 4b FLOAT BoundsMin z 0x2C 4b FLOAT BoundsMin w 0x30 4b FLOAT BoundsMax x 0x34 4b FLOAT BoundsMax y 0x38 4b FLOAT BoundsMax z 0x3C 4b FLOAT BoundsMax w 0x40 4b Offset Pointer ModelCollection (0=Non existing) 0x44 4b Offset Pointer LOD models (0=Non existing) 0x48 4b Offset Pointer LOD models (0=Non existing) 0x4C 4b Offset Pointer LOD models (0=Non existing) 0x50 4b FLOAT Max Vectorx (Usually 9999.0) 0x54 4b FLOAT Max Vectory (Usually 9999.0) 0x58 4b FLOAT Max Vectorz (Usually 9999.0) 0x5C 4b FLOAT Max Vectorw (Usually 9999.0) 0x60 4b LONG ObjectCount 0x64 4b LONG Unknown (Usually 0xFFFFFFFF) 0x68 4b LONG Unknown (Usually 0xFFFFFFFF) 0x6C 4b LONG Unknown (Usually 0xFFFFFFFF) 0x70 4b FLOAT Unknown 0x74 12b LONG Unknown (Usually all zeros) 0x80 4b Offset 2DFX Array offset (Zero if no 2dfx section) 0x84 2b Short 2DFX Count 0x86 2b Short 2DFX Size 0x88 8b LONG Unassigned data (0xCDCDCDCDCDCDCDCD) 0x90 4b LONG End of Header (Usually 0x00000000)
-------------------------------------------------------------------- ModelCollection (BlockSize 0x08) -------------------------------------------------------------------- 0x00 4b Offset Pointer to Model Pointer 0x04 2b Short Number of Pointers 0x06 2b Short Number of Pointers 0x08 4b LONG Padding (0xCDCDCDCD) 0x0C 4b LONG Padding (0xCDCDCDCD)
-------------------------------------------------------------------- Model (BlockSize 0x20) -------------------------------------------------------------------- 0x00 4b LONG VTable (0x34026B00) 0x04 8b Offset PointerCollection<Geometrys> 0x0C 4b Offset SimpleArray<Vector4> (Unknown Vectors) 0x10 4b Offset SimpleArray<Integer> (Material Mappings) 0x14 2b Short Unknown1 (Usually 0) 0x16 2b Short Unknown2 0x18 2b Short Unknown3 0x1A 2b Short GeometryCount 0x1C 4b LONG Padding (0xCDCDCDCD)
-------------------------------------------------------------------- Geometry (BlockSize 0x50) -------------------------------------------------------------------- 0x00 4b LONG VTable (0xF4486B00) 0x04 4b LONG Unknown 1 (Usually 0) 0x08 4b LONG Unknown 2 (Usually 0) 0x0C 4b Offset VertexBuffer 0x10 4b LONG Unknown 3 (Usually 0) 0x14 4b LONG Unknown 4 (Usually 0) 0x18 4b LONG Unknown 5 (Usually 0) 0x1C 4b Offset IndexBuffer 0x20 4b LONG Unknown 6 (Usually 0) 0x24 4b LONG Unknown 7 (Usually 0) 0x28 4b LONG Unknown 8 (Usually 0) 0x2C 4b LONG IndexCount 0x30 4b LONG FaceCount 0x34 2b Short VertexCount 0x36 2b Short PrimitiveType 0x38 4b LONG Unknown 9 (Usually 0) 0x3C 2b Short VertexStride (36 without normal map, 52 with normal map) 0x3E 2b Short Unknown 10 (Usually 0) 0x40 4b LONG Unknown 11 (Usually 0) 0x44 4b LONG Unknown 12 (Usually 0) 0x48 4b LONG Unknown 13 (Usually 0) 0x4C 4b LONG Padding (0xCDCDCDCD)
-------------------------------------------------------------------- VertexBuffer (BlockSize 0x64) -------------------------------------------------------------------- 0x00 4b LONG VTable (0xD8BA6B00) 0x04 2b Short VertexCount 0x06 2b Short Unknown 1 (Usually 0) 0x08 4b Offset DataOffset to VertexData 0x1C 4b LONG VertexStride (36 without normal map, 52 with normal map) 0x20 4b Offset VertexDeclarationOffset 0x24 4b LONG Unknown 2 (Usually 0) 0x28 4b Offset DataOffset to VertexData (Again) 0x2C 4b LONG Unknown 3 (Usually 0) 0x30 32b LONG Padding (0xCD)
-------------------------------------------------------------------- IndexBuffer (BlockSize 0x40) -------------------------------------------------------------------- 0x00 4b LONG VTable (0x70B86B00) 0x04 4b LONG IndexCount 0x08 4b Offset DataOffset to IndexData 0x0C 4b LONG Unknown 1 (Usually 0) 0x10 32b LONG Padding (0xCD)
-------------------------------------------------------------------- ShaderGroupData (offset remarked in Header at 0x08) (BlockSize 0x50) -------------------------------------------------------------------- 0x00 4b LONG VTable (0x44166B00) 0x04 4b Offset TextureDictionary (0 = no Embedded textures) 0x08 4b Offset Pointer to a Pointer for ShaderFX PointerCollection 0x0C 2b Short Number of Pointers at Pointer for ShaderFX PointerCollection 0x0E 2b Short Number of Pointers at Pointer for ShaderFX PointerCollection 0x10 48b Zeros 0x40 4b Offset Pointer to SimpleCollection VertexDeclarationUsageFlags 0x44 2b Short Number of SimpleCollection VertexDeclarationUsageFlag entries 0x46 2b Short Number of SimpleCollection VertexDeclarationUsageFlag entries 0x48 4b Offset Pointer to SimpleCollection UnknownInts 0x4C 2b Short Number of SimpleCollection UnknownInt entries 0x4E 2b Short Number of SimpleCollection UnknownInt entries
----------------------------------------------------------------------------------------------------- ShaderFX (offset remarked in ShaderGroupData in the Pointer to ShaderFX PointerCollection 0x08) (BlockSize 0x50) ----------------------------------------------------------------------------------------------------- 0x00 4b LONG VTable (0x3C226B00) 0x04 4b LONG BlockMapAdress 0x08 2b Short Unknown 1 0x0A 1b Byte Unknown 2 0x0B 1b Byte Unknown 3 0x0C 2b Short Unknown 4 0x0E 2b Short Unknown 4_1 0x10 4b LONG Unknown 5 0x14 4b Offset ShaderParamsOffsetsOffset 0x18 4b LONG Unknown 6 0x1C 4b LONG ShaderParamCount 0x20 4b LONG Unknown 8 0x24 4b Offset ShaderParamTypesOffset 0x28 4b Hash Unknown Hash 0x2C 4b LONG Unknown 9 0x30 4b LONG Unknown 10 0x34 4b Offset ShaderParamNameOffset 0x38 4b LONG Unknown 11 0x3C 4b LONG Unknown 12 0x40 4b LONG Unknown 13 0x44 4b Offset ShaderName Pointer (Pointer to null terminated String) 0x48 4b Offset ShaderSPS Pointer (Pointer to null terminated String) 0x4C 4b LONG Unknown 14 0x50 4b LONG Unknown 15 0x54 4b LONG Unknown 16 0x58 4b LONG Unknown 17 0x5C 4b LONG Padding (0xCDCDCDCD)
-------------------------------------------------------------------- Null Terminated String (BlockSize 0x10) Note: If String is bigger then 0x10 it will be padded till 0x20 etc. -------------------------------------------------------------------- 0x00 String 0x?? 1b 0x00 (End of String) 0x?? 0xCD Padding till 0x0F
-------------------------------------------------------------------- PointerCollection (BlockSize 0x08) Contains pointers to the data of the given type -------------------------------------------------------------------- 0x00 4b Offset Offset to the Pointers 0x04 2b Short Number of Pointers 0x06 2b Short
-------------------------------------------------------------------- SimpleCollection (BlockSize 0x08) Contains data of the given type -------------------------------------------------------------------- 0x00 4b Offset Offset to the Data 0x04 2b Short Data Count 0x06 2b Short Data Size
GRAPHICS section (Size found from the flags @ 0x08 of RSC file header)
--------------------------------------------------------------------------------------- VertexData (BlockSize VertexCount*0x24 or 0x34 when the Geometry is using a normal map) --------------------------------------------------------------------------------------- 0x00 4b FLOAT Position x 0x04 4b FLOAT Position y 0x08 4b FLOAT Position z 0x0C 4b FLOAT Normal x 0x10 4b FLOAT Normal y 0x14 4b FLOAT Normal z 0x18 4b DWORD Color (RGBA) 0x1C 4b FLOAT Texcoord u 0x20 4b FLOAT Texcoord v 0x24 4b FLOAT Tangent/Bi-Normal x // Only when there is a normal map applied to the Geometry 0x28 4b FLOAT Tangent/Bi-Normal y // Only when there is a normal map applied to the Geometry 0x2C 4b FLOAT Tangent/Bi-Normal z // Only when there is a normal map applied to the Geometry 0x30 4b FLOAT Tangent/Bi-Normal w // Only when there is a normal map applied to the Geometry
--------------------------------------------------------------------------------- IndexData (BlockSize IndexCount*0x06) --------------------------------------------------------------------------------- 0x00 2b Short Vertex A 0x02 2b Short Vertex B 0x04 2b Short Vertex C
------------------------------------------------------------------- SkeletonData (BlockSize 64 bytes) ------------------------------------------------------------------- 0x00 4b Offset Pointer to a Pointer for Model Name 0x04 4b Offset Pointer to a Pointer for VertexData 0x08 4b Offset Pointer to unknown 64b data block (not always used, 0 if not used) 0x0C 4b Offset Pointer to unknown 64b data block (not always used, 0 if not used) 0x10 4b Offset Pointer to unknown 64b data block (not always used, 0 if not used) 0x14 4b Long Geometry Count ? 0x18 4b Long (Usually 0) 0x1C 4b Long Unknown Integer 0x20 4b Long (Usually 0) 0x24 4b Long (Usually 0) 0x28 4b Long Geometry Count ? 0x2C 4b Long Uint32 (Usually 2305907972) 0x30 4b Long (Usually 0) 0x34 4b Long (0x6B2778) VTable ? 0x38 4b Long (Usually 0) 0x3C 4b Long (Usually 0)
-------------------------------------------------------------------- Texture definition (for externally defined textures)(BlockSize 0x1C) -------------------------------------------------------------------- 0x00 4b LONG VTable (0x5C676B) 0x04 4b LONG Unknown1 0x08 4b LONG Unknown2 0x0C 4b LONG Unknown3 0x10 4b LONG Unknown4 0x14 4b Offset Offset Pointer to Texture name 0x18 4b LONG Unknown5 0x1C 4b LONG Padding (0xCDCDCDCD)
Tools and Scripts
The following tools and scripts can be used to import & export (edit) these model files.
- GTAForums: DFF2WDR
- GTAGarage: WDR Analyze
- GTAForums: SparkIV
- GTAForums: OpenIV
- GTAForums: GIMS
- GTAForums: Model format discussion topic
Grand Theft Auto IV | |
---|---|
File Formats | .dat • .gxt • .ide • .img • .ipl • .nod • .sco • .rpf • .rrr • .wad • .wbd/.wbn • .wdd • .wdr • .wft • .whm • .wpl • .wtd |
Documentation | Audio • Bink Video • Cryptography • Cutscenes • GXT Text • Image listing • Keycodes • Map Listing • Native functions • Paths • Radar Blips • Radio Stations • Saves • Scenarios • VTable • Weapons |
Tools | ASI Loader • ENBSeries • G-Texture • GIMS IV • Ingame WPL Editor • IV Needle • OpenIV • SparkIV • XLiveLess • WPL Manager • X Mod Installer Alice • C++ Script Hook • .NET Script Hook • Scocl |
Tutorials | Importing Textures with OpenIV • Importing Textures with SparkIV |
Modifications | GTA Connected • Gostown IV • Four Multiplayer • IV Multiplayer • CitizenMP:IV Reloaded |
Useful links | Community portal • Discussion forums • Modding forums • Mods on GTAGarage.com |