The models are in .ssf files.
SSF files have the following Big-Endian header (the rest of the file besides the first header and nested sec headers are Little-Endian though it is also
possible the files I have were from the XBox or Wii versions because XBox and Wii games support both types of Endian, though I think this game just decided to use Big-Endian headers in the PS2 version which could be programed in. A third idea is that since the game uses RenderWare for the graphics is that the PS2 and Wii and Xbox versions use exactly the same .ssf files)
The Type of subfiles can be:
00 00 00 01- Identification File
00 00 00 02-Type 1 Texture File
00 00 00 03-Type 2 Texture File
00 00 00 04-Mesh File
00 00 00 05-Ragdoll Mesh File Animations??
00 00 00 06-Nested SEC File
00 00 00 07-Animation information for Camera?? Also appears to be using Big-Endian
00 00 00 08-Nested SEC File
00 00 00 0A-Mesh Weight File
The Face Index is composed of a Tristrip (possibly multiple strips):{2ByteIntegerVertexes(#1,#2....)} The vertex section is composed of arrays that are 86Bytes in Length:{4ByteFloatVertexes(X,Y,Z),4ByteFloatTextureMaps#1(U,V),10ByteUnknown,4ByteFloatNormalMaps(X,Y,Z),4ByteFloatTextureMaps#2(U,V),20ByteUnknown}
Let "AX"= [0x20]+0x30
Let "BX"=["AX"]
Let "CX"=[0x20]+"BX"
Let "DX"=["CX"+0x44]*0x38+"CX"+0x48
Let "EX"=["DX"+0x2C]*0xC+"DX"+0x38
Let "FX"=["DX"-0x8]*0x24+"EX"+0x70
Let "GX"{1}=["FX"-0x4]+"DX"+0x4
Let "HX"=["FX"+0x4]="BodyListEnd#"
Let "GX"{2}=["GX"{1}+0x4]+"GX"{1}+0xC
Let "GX"{3}=["GX"{2}+0x4]+"GX"{2}+0xC
Let "GX"{4}=["GX"{3}+0x4]+"GX"{3}+0xC
........
Let "GX"{"BodyListEnd#"}=["GX"{"BodyListEnd#"-1}+0x4]+"GX"{"BodyListEnd#"-1}+0xC="GX"{END}
Let "JX"=["GX"{END}+10]+"GX"{END}+0x1C
The models are in .ssf files.
SSF files have the following Big-Endian header (the rest of the file besides the first header and nested sec headers are Little-Endian though it is also
possible the files I have were from the XBox or Wii versions because XBox and Wii games support both types of Endian, though I think this game just decided to use Big-Endian headers in the PS2 version which could be programed in. A third idea is that since the game uses RenderWare for the graphics is that the PS2 and Wii and Xbox versions use exactly the same .ssf files)
Big-Endian Header of .SSF files
53 45 43 20
4ByteUnknown
4ByteUnknown
4ByteUnknown
4Byte#NumberOfSubFiles
4ByteSizeofEntire SSF file
SubfileListings:
{4ByteIntegerTypeofSubFile, 4ByteIntegerOffsetToSubFile, 4ByteSizeofSubFile}
The Type of subfiles can be:
00 00 00 01- Identification File
00 00 00 02-Type 1 Texture File
00 00 00 03-Type 2 Texture File
00 00 00 04-Mesh File
00 00 00 05-Ragdoll Mesh File Animations??
00 00 00 06-Nested SEC File
00 00 00 07-Animation information for Camera?? Also appears to be using Big-Endian
00 00 00 08-Nested SEC File
00 00 00 0A-Mesh Weight File
The Face Index is composed of a Tristrip (possibly multiple strips):{2ByteIntegerVertexes(#1,#2....)} The vertex section is composed of arrays that are 86Bytes in Length:{4ByteFloatVertexes(X,Y,Z),4ByteFloatTextureMaps#1(U,V),10ByteUnknown,4ByteFloatNormalMaps(X,Y,Z),4ByteFloatTextureMaps#2(U,V),20ByteUnknown}
Let "AX"= [0x20]+0x30
Let "BX"=["AX"]
Let "CX"=[0x20]+"BX"
Let "DX"=["CX"+0x44]*0x38+"CX"+0x48
Let "EX"=["DX"+0x2C]*0xC+"DX"+0x38
Let "FX"=["DX"-0x8]*0x24+"EX"+0x70
Let "GX"{1}=["FX"-0x4]+"DX"+0x4
Let "HX"=["FX"+0x4]="BodyListEnd#"
Let "GX"{2}=["GX"{1}+0x4]+"GX"{1}+0xC
Let "GX"{3}=["GX"{2}+0x4]+"GX"{2}+0xC
Let "GX"{4}=["GX"{3}+0x4]+"GX"{3}+0xC
........
Let "GX"{"BodyListEnd#"}=["GX"{"BodyListEnd#"-1}+0x4]+"GX"{"BodyListEnd#"-1}+0xC="GX"{END}
Let "JX"=["GX"{END}+10]+"GX"{END}+0x1C