I'm currently in the (long) process of trying to make sense of the model fileformats for the Ni No Kuni PS3 game. But I'm not getting any further.
What I've gotten so far:
FILE FORMATS
UNKNOWN
p3mmg - ?model data?
p3mms - ?model, material, shader?
p3msh - ?Model SHader? (looks hierarchical)
p3amt - ?animation model type?
p3atm
ALMOST KNOWN
p3msk - Model SKeleton
p3ask - Animation SKeleton / animation,skeleton,keyframes
actcfgbin - action config binary
adtcfgbin - animation config binary
mevcfgbin - event config binary
mdtcfgbin - model config binary
procfgbin - prop config binary
hitcfgbin - ?hit box?
lcscfgbin - locus config binary
prtcfgbin - part config bin
laicfg - look at info config
SKELETON FORMAT DEFINITION .p3msk
(REF c001100.p3msk)
Code: Select all
0x0000 180b - HEADER
0x0000: 4b - header
0x0004: 4b - unknown
0x0008: 4b - 12304 - A - filesize
0x0012: 4b - bool or int
0x0016: 4b - 176 - B (<A)
0x0020: 4b - 12128 - C (A-B)
0x0024: 24b - unknown
0x0048: 2b - unknown
0x0050: 2b - 93 - AMOUNT OF BONES
0x0052: 4b - unknown
0x0056: 4b - 752 - SIZE IN BYTES OF NAME BLOCK
0x0060: 4b - 2240 (+ headersize = bone hierarchy offset)
0x0064: 4b - 2816 (+ headersize = IDs offset)
0x0068: 4b - 2432 (+ headersize = post hierarchy offset)
0x0072: 4b - 3200 (+ headersize = z offset) // pose 1?
0x0076: 4b - 7664 (+ headersize = u offset) // pose 2?
0x0080: 100b - unknown
0x0176: BLOCK - BONE NAMES
list of null terminated strings
0x0176: 4b - null
{
0x0180: 8b - null terminated string
AMOUNT OF BONES times 8b
}
0x0924: 4b - null
0x0928: BLOCK - UNKNOWN DATA
{
0x0928: 32b - matrix, translation?
AMOUNT OF BONES times 32b
}
0x2416: BLOCK - BONE HIERARCHY
0x2416: 2b - Start of hierarchy 0xFFFF
{
0x2418: 2b - index of parent bone
0x2420: 2b - index of child bone
AMOUNT OF BONES times 4b
}
0x2604: 4b - padding NULL
0x2608: BLOCK - auto incrementing values
{
0x2608: 4b - value = (i * 8) + 4
}
0x2980: 12b - padding NULL
0x2992: BLOCK - UNKNOWN (0x2992)
{
0x2992: 4b UNKNOWN
AMOUNT OF BONES times 4b
}
0x3364: 12b PADDING
0x3376: BLOCK - UNKNOWN
{
0x3376: 48b per bone (3x4 matrix)
}
0x7840: BLOCK - UNKNOWN
{
0x7840: 48b per bone (3x4 matrix)
}
0x12304: EOFThe vertex format is what is breaking my brain. Either the floats are stored in a weird format (mantissa kept separate from exponent...) or i'm totally not seeing what i'm missing now.
I will continue to post in this thread to keep showing my progress (and keep my sanity), if you have any input or comments i'd love to hear them!
How i got the assets from the game:
viewtopic.php?f=18&t=11104
viewtopic.php?f=18&t=10103
viewtopic.php?f=10&t=7932


