Tony Hawk's Pro Skater 4, has a "table of contents" file (SKATE4.HED) that lists all the file addresses for SKATE4.WAD followed by their English Name. The start of the file location is denoted by "00" (hex) followed by 4 bytes for the address, 4 bytes for the file size then the ASCII Text of the file name with path info.
Example: "00 00 30 07 04 60 BF 00 00" \Models\Animals\Anl_Lion\Anl_Lion.geom.ps2
Would mean the file begins at 04073000 and is BF60 in length (about 48 kilobytes)
Files that end in the ".SKIN.ps2" are the files that contain the actual 3d mesh.
.skin.ps2 animated mesh format:
32ByteArray:
{4ByteFloatTexMappings(U,V) 1ByteColorMappings(Red,Green,Blue)+80 Unknown4Byte 4ByteFloatNormalMappings(X,Y,Z) 00 1ByteCONN 00 00}
The format of non-animated objects such as buildings and skate ramps is as follows:
64ByteArray:
{4ByteFloatTexMappings(U,V) 1ByteColorMappings(Red,Green,Blue)+80 4ByteFloatNormalMappings(X,Y,Z) 4ByteFloatWeight
00 00 00 00 00 00 00 00 1ByteBone 00 00 00 00 00 00 00 00 00 00 00 4ByteFloatVertexes(X,Y,Z) 00 1ByteCONN 00 00}
List of file extensions of subfiles of SKATE4.HED:
.txt Text files
.bmp A small number of textures use this format
.prk Skate Park data (??)
.qb Compiled Scripts
.ms Particle effects (??)
.ske Skeleton joints for meshes
.vag Audio files
.bin
.pre
.ICN Icons
The Collision Detection model for Campbell's Hat
.col.xbx-- Collision Detection Mesh Format:
At Byte 0h26 there is the 2ByteInteger stating the number of Vertexes in the file.
At Byte 0h28 there is the 2ByteInteger stating the number of Faces in the file.
Vertexes are stored as follows:
{4ByteFloatVertex(X,Y,Z)+FF FF FF FF}
Faces for meshes with less than or exactly 0hFF (255 in decimal) Vertexes are stored as follows:
{00 20 00 00 2ByteVertex#1 2ByteVertex#2 2ByteVertex#3 00 00}
Faces for meshes with more than 0hFF (255 in decimal) Vertexes are stored as follows:
{00 20 00 00 1ByteVertex#1 1ByteVertex#2 1ByteVertex#3 00}
Meshes .skin.xbx
The format for meshes is as follows:
......
4ByteInteger#NUMVertexes
4ByteIntegerUnknown
4ByteFloatVertexes(X,Y,Z)
4ByteFloatNormalMappings(X,Y,Z)
{4ByteFloatWeight#1 4ByteFloatWeight#2 4ByteFloatWeight#3 4ByteFloatWeight#4}
{2ByteIntegerBoneMapping#1 2ByteIntegerBoneMapping#2 4ByteIntegerUnknown}
4ByteFloatTextureMappings(U,V)
{1ByteColorMappings(Red,Green,Blue)+80}
00 00 00 00
4ByteIntegerUnknown
4ByteInteger#NUMFacesSection1
{2ByteIntegerVertexTriStrips}
(4BytePlaceHolder Begin Section 2)
A lion model from the zoo level.
Eddie's (a secret skater) model
Script for the PC version:
Tony Hawk's Pro Skater 4, has a "table of contents" file (SKATE4.HED) that lists all the file addresses for SKATE4.WAD followed by their English Name. The start of the file location is denoted by "00" (hex) followed by 4 bytes for the address, 4 bytes for the file size then the ASCII Text of the file name with path info.
Example: "00 00 30 07 04 60 BF 00 00" \Models\Animals\Anl_Lion\Anl_Lion.geom.ps2
Would mean the file begins at 04073000 and is BF60 in length (about 48 kilobytes)
Files that end in the ".SKIN.ps2" are the files that contain the actual 3d mesh.
.skin.ps2 animated mesh format:
32ByteArray:
{4ByteFloatTexMappings(U,V) 1ByteColorMappings(Red,Green,Blue)+80 Unknown4Byte 4ByteFloatNormalMappings(X,Y,Z) 00 1ByteCONN 00 00}
The format of non-animated objects such as buildings and skate ramps is as follows:
64ByteArray:
{4ByteFloatTexMappings(U,V) 1ByteColorMappings(Red,Green,Blue)+80 4ByteFloatNormalMappings(X,Y,Z) 4ByteFloatWeight
00 00 00 00 00 00 00 00 1ByteBone 00 00 00 00 00 00 00 00 00 00 00 4ByteFloatVertexes(X,Y,Z) 00 1ByteCONN 00 00}
List of file extensions of subfiles of SKATE4.HED:
.txt Text files
.bmp A small number of textures use this format
.prk Skate Park data (??)
.qb Compiled Scripts
.ms Particle effects (??)
.ske Skeleton joints for meshes
.vag Audio files
.bin
.pre
.ICN Icons
.ps2 files have sub-extensions (eg: Boot02.img.ps2)
.fnt Fonts
.img
.tex Texture files
.usg
.cas
.col Collision models
.geom
.skin 3D meshes
.mdl
PC Version:
Collision detection Models: .col.xbx
The Collision Detection model for Campbell's Hat
.col.xbx-- Collision Detection Mesh Format:
At Byte 0h26 there is the 2ByteInteger stating the number of Vertexes in the file.
At Byte 0h28 there is the 2ByteInteger stating the number of Faces in the file.
Vertexes are stored as follows:
{4ByteFloatVertex(X,Y,Z)+FF FF FF FF}
Faces for meshes with less than or exactly 0hFF (255 in decimal) Vertexes are stored as follows:
{00 20 00 00 2ByteVertex#1 2ByteVertex#2 2ByteVertex#3 00 00}
Faces for meshes with more than 0hFF (255 in decimal) Vertexes are stored as follows:
{00 20 00 00 1ByteVertex#1 1ByteVertex#2 1ByteVertex#3 00}
Meshes .skin.xbx
The format for meshes is as follows:
......
4ByteInteger#NUMVertexes
4ByteIntegerUnknown
4ByteFloatVertexes(X,Y,Z)
4ByteFloatNormalMappings(X,Y,Z)
{4ByteFloatWeight#1 4ByteFloatWeight#2 4ByteFloatWeight#3 4ByteFloatWeight#4}
{2ByteIntegerBoneMapping#1 2ByteIntegerBoneMapping#2 4ByteIntegerUnknown}
4ByteFloatTextureMappings(U,V)
{1ByteColorMappings(Red,Green,Blue)+80}
00 00 00 00
4ByteIntegerUnknown
4ByteInteger#NUMFacesSection1
{2ByteIntegerVertexTriStrips}
(4BytePlaceHolder Begin Section 2)