goku3.jpg



The format is similar to but different then Budokai 2
Models are found in the amo files

Format of the amo files

Header Format:
4ByteOffset:ToFileIndex
4ByteUnknown
4ByteUnknown
4ByteInteger#NumberofConnections
4ByteOffset:ToConnections
4ByteInteger#NumberofAMGfiles
4ByteOffset:ToAMGFileIndex (repeated)
4ByteInteger#Unknown
4ByteOffset:ToNameIndexofMainMesh

AMGFileIndex Format:
{4ByteAbsoluteOffsetToAMGFile}

Connections Format:
Each entry is a 32ByteArray
{ConnectionCount (Starting from 0 going to #NumberofConnection minus one), AbsoluteOffsetTo SupplementaryArrayEntry, 4ByteConnection#1Pointer (00000000 if not used), 4ByteConnection#2Pointer (00000000 if not used), 4ByteConnection#3Pointer (00000000 if not used), 00 00 00 00 00 00 00 00 00 00 00 00}

SupplementaryArray Format:
This is nested, with each base connection having at least one entry starting at the AbsoluteOffsetTo SupplementaryArrayEntry
and ending at the next base connections's entry. The last base connection's entry ends at the start of the first AMGfile.

Format of each 16Byte Entry:
{4ByteIdentitfier(00000000 means use the raw base connections number, anything else means unknown), 4ByteEntryNumber, 4ByteAbsoluteOffsetToMatrix, 00 00 00 00} The Matrix is within AMG files so it will be discussed in that section of this page.

Format of the amg files

Header Format:
23 41 4D 47
4ByteIntegerRelativeOffsetToStartofFile
00 00 00 00
04 00 00 00
4Byte#NumberofMeshGroups
4ByteIntegerRelativeOffsetToStartofFile (repeated)
4ByteInteger#Unknown(bone animation releated??)
4ByteIntegerSizeofAMGfile
80ByteArrayPerEachMeshGroup:{48ByteFloatingPointMatrix, 32ByteUnknown}
00 00 00 00
4ByteRelativeOffsetToStartofMainSection
00 00 00 00
4ByteRelativeOffsetToEndofLastSubMesh
END of Header

Begin Start of Main amg Section:
4Byte#NumberOfSubMeshes
4ByteOffset(RelativeToMain)To:SubMeshList
00 00 00 00
00 00 00 00
{SubMeshOffsetStart(RelativeToMain)}

SubMesh Format

8ByteSubMeshType (All SubDivisions will share the same type within a given submesh)
8ByteUnknown
48ByteArrayofFloatingPointMatrix
96ByteUnknown

SubMesh SubDivision Format

12ByteUnknown
00 C0 'QQ' 6C
4ByteUnknown
4ByteInteger#NumberOfVertexesinSubDivsion
4ByteUnknown
4ByteUnknown
Followed By the Vertexes which will be in one of three types:

Type 'B5 01 00 00 BD 29 00 00' format:
{4ByteFloatingPointVertexes(X,Y,Z), 4ByteFloatWeight#1, 4ByteFloatingPointNormalMappings(X,Y,Z), 4ByteFloatWeight#2, 4ByteFloatingPointTextureUVMappings(U,V), 4ByteFloatWeight#3, 00 00 00 00}

Type 'B4 01 00 00 B4 01 00 00' format:
{4ByteFloatingPointVertexes(X,Y,Z), 4ByteFloatWeight#1, 4ByteFloatingPointTextureUVMappings(U,V), 4ByteFloatWeight#2, 00 00 00 00}

Type '90 01 00 00 90 01 00 00' format:
{4ByteFloatingPointVertexes(X,Y,Z), 4ByteFloatWeight#1}

SubDivisions occur in sequence until the end of the SubMesh.