Difference between revisions of "WDR"

From GTAMods Wiki
Jump to navigation Jump to search
Line 59: Line 59:
  
 
  --------------------------------------------------------------------
 
  --------------------------------------------------------------------
  Model (BlockSize 0x20
+
  Model (BlockSize 0x20)
 
  --------------------------------------------------------------------
 
  --------------------------------------------------------------------
 
  0x00 4b VTable 0x34026B00
 
  0x00 4b VTable 0x34026B00
Line 70: Line 70:
 
  0x1A 2b Short GeometryCount
 
  0x1A 2b Short GeometryCount
 
  0x1C Padding till 0x0F
 
  0x1C Padding till 0x0F
 +
 +
--------------------------------------------------------------------
 +
Geometry (BlockSize 0x50)
 +
--------------------------------------------------------------------
 +
0x00 4b 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 Padding till 0x0F
  
 
  --------------------------------------------------------------------
 
  --------------------------------------------------------------------

Revision as of 23:37, 7 August 2009

WDR Description

WDR is the format used for map models and weapons in GTA-IV.

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	Unknown	Flags			(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	20b	Unknown 			(Usually all zeros)
0x88	8b	Unassigned data			(0xCDCDCDCDCDCDCDCD)
0x90	4b	End of Header			(Usually 0x00000000)
--------------------------------------------------------------------
ModelCollection (BlockSize 0x08)
--------------------------------------------------------------------
0x00	4b	Offset	Pointer to Model
0x04	2b	Short	Number of Pointers
0x06	2b	Short
0x08	Padding till 0x0F
--------------------------------------------------------------------
Model (BlockSize 0x20)
--------------------------------------------------------------------
0x00	4b	VTable	0x34026B00
0x04	8b	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	Padding till 0x0F
--------------------------------------------------------------------
Geometry (BlockSize 0x50)
--------------------------------------------------------------------
0x00	4b	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	Padding till 0x0F
--------------------------------------------------------------------
Unknown structure (BlockSize 0xE0; i.e. Pointers[0x50] + Data[0x90])
--------------------------------------------------------------------
0x2A0	4b	Offset	Unknown (=> 4*FLOAT)	[0x2F0]
0x2A4	4b	Offset	Unknown			[0x560]
0x2A8	4b	Offset	Unknown	(=> 4*FLOAT)	[0x300]
0x2AC	4b	Offset	Unknown	(=> 16*FLOAT)	[0x310]
0x2B0	4b	Offset	Unknown	(=> 4*FLOAT)	[0x350]
0x2B4	4b	Offset	Unknown	(=> 4*FLOAT)	[0x360]
0x2B8	4b	Offset	Unknown	(=> 4*FLOAT)	[0x370]
0x2BC	4b	Zeros				(0x00000000)
0x2C0	16b	Unknown bytes
0x2D0	32b	8*Unknown FLOAT 
--------------------------------------------------------------------
ShaderGroupData (offset remarked in Header at 0x08) (BlockSize 0x50) 
--------------------------------------------------------------------
0x00	4b	VTable  [0x44166B00]
0x04	4b	Offset	TextureDictionairy (0 = no Embedded textures)
0x08	8b	PointerCollection to ShaderFX objects
0x10	48b	Zeros
0x40	8b	SimpleCollection VertexDeclarationUsageFlags
0x48	8b	SimpleCollection UnknownInts
--------------------------------------------------------------------
ShaderFX (offset remarked in ShaderGroupData in the PointerCollection ShaderFX 0x08) (BlockSize 0x50) 
--------------------------------------------------------------------
TODO: Don't edit yet
--------------------------------------------------------------------
PointerCollection (BlockSize 0x08) 
--------------------------------------------------------------------
0x00	4b	Offset	Offset to the Pointers
0x04	2b	Count   Number of pointers
0x06	2b	Size    Number of pointers
--------------------------------------------------------------------
SimpleCollection (BlockSize 0x08) 
--------------------------------------------------------------------
0x00	4b	Offset	Offset to the Data
0x04	2b	Count   Data count
0x06	2b	Size

GRAPHICS section (Size found from the flags @ 0x08 of RSC file header)

---------------------------------------------------------------------------------
Data description (BlockSize 0x24 or 0x34 when the Geometry is using a normal map)
---------------------------------------------------------------------------------
Offset	Size	Type	Data			Description
---------------------------------------------------------------------------------
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 x   // Only when there is a normal map applied to the Geometry
0x28	4b	FLOAT	Tangent y   // Only when there is a normal map applied to the Geometry
0x2C	4b	FLOAT	Tangent z   // Only when there is a normal map applied to the Geometry
0x30	4b	FLOAT	Tangent w   // Only when there is a normal map applied to the Geometry