One last place to post this.
Here is what I have after taking a rough glance.
Model:
header:
19 bytes - Unknown
4 bytes - File Size minus 4 bytes?
0X25 4 bytes - Number of bones
[Skeleton Data]
4 bytes - String Length+1
x bytes - bone name
4 bytes - x coord?
4 bytes - y coord?
4 bytes - z coord?
[/skeleton] - Repeat # Bone Times
4bytes - padding/end of skeleton - 01 00 00 00
4bytes - Number of Surfaces
[Surfaces]
4bytes - String length+1
xbytes - surface name
1bytes - subheader length?
xbytes - subheader/special flags?
4bytes - Number of Verts?
4bytes - padding
xbytes - mesh data
4bytes - number of morph targets
[morph target]
4bytes - String Length+1
xbytes - Morph targer name
4bytes - number of verts
xbytes - morph data
[/morph target] - repeat # morph target times (always include unused morph targets despite # of morph targets?)
[/Sufaces] - repeat # surface times
Thats condensed. "Mesh data" contains what looks like 3 sections (probably - vert, poly/normal, uvw)
Animation:
4 bytes - File Size
referenceSkeleton.bpc - Listing of various skeleton packages? Related to 19 byte model unknown?
scriptMotionContents.smc - Move naming conventions?
And what do the various montionPak#.pak do?
ongoing discussion here:
Soul X-plorer hacking boards (registration required)