Mortal+Kombat+Armageddon

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}

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