Dragon+Ball+Z+Budokai+3



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.