This is the last Mortal Kombat game released for the PS2


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}smoke.jpg




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