CINF (File Format): Difference between revisions

no edit summary
>Embyr 75
m ({{research}})
>Aruki
No edit summary
Line 1: Line 1:
The '''CINF format''' is for skeletons. Skeletons are associated with models and skins through [[ANCS (File Format)|ANCS]] files.
The '''CINF format''' is for skeletons. Skeletons are associated with models and skins through [[ANCS (File Format)|ANCS]] files.


{{research|1|What is the point of the bone ID section?}}
{{research|1|What is the purpose of the bone ID section?}}
{{todo|MP2/3/DKCR differences}}
{{todo|MP2/3/DKCR differences}}


== Format ==
== Format ==


The file starts with a list of all the bones in the skeleton. The first value is a 32-bit count, then the following structure loops.
{| class="wikitable"
! Type
! Count
! Name
! Notes
|-
| u32
| 1
| '''Bone Count'''
|
|-
| [[#Bone|Bone]]
| ''Bone Count''
| '''Bone Array'''
|
|-
| u32
| 1
| '''Bone ID Count'''
|
|-
| u32
| ''Bone ID Count''
| '''Bone ID Array'''
| The first element of the ID array is the root bone, followed by the rest of the bone IDs in reverse numerical order.
|-
| u32
| 1
| '''Bone Name Count'''
|
|-
| [[#Bone Name|Bone Name]]
| ''Bone Name Count''
| '''Bone Name Array'''
|
|-
| colspan=4 {{unknown|End of file}}
|}
 
=== Bone ===


{| class="wikitable"
{| class="wikitable"
! Offset
! Offset
! Type
! Type
! Size
! Count
! Description
! Name
! Notes
|-
|-
| 0x0
| 0x0
| u32
| u32
| 4
| 1
| '''Bone ID'''
| '''Bone ID'''
|
|-
|-
| 0x4
| 0x4
| u32
| u32
| 4
| 1
| '''Parent Bone ID'''
| '''Parent Bone ID'''
|
|-
|-
| 0x8
| 0x8
| float[3]
| float
| 0xC
| 3
| '''Position'''
| '''Position'''
| The position is in the skeleton's local space, not in the parent's bone space.
|-
|-
| 0x14
| 0x14
| u32
| u32
| 4
| 1
| '''Linked bone count''' (LC); includes parent + children
| '''Linked Bone Count'''
|
|-
|-
| 0x18
| 0x18
| u32[]
| 4 × LC
| '''Linked bone ID array'''
|}
After this is an array listing every bone ID in the skeleton. The first bone is the root bone, then the rest are listed in reverse numerical order.
{| class="wikitable"
! Type
! Count
! Description
|-
| u32
| u32
| 1
| ''Linked Bone Count''
| '''Bone ID count''' (BC)
| '''Linked Bone ID Array'''
| This array includes both the parent bone ID as well as all children.
|-
|-
| u32
| colspan=5 {{unknown|End of bone}}
| BC
| '''Bone ID array'''
|}
|}


Finally, the end of the file sets bone names. After the traditional count value, this short structure loops:
=== Bone Name ===


{| class="wikitable"
{| class="wikitable"
! Type
! Type
! Count
! Count
! Description
! Name
! Notes
|-
|-
| string
| string
| 1
| 1
| '''Bone name'''
| '''Bone Name'''
|
|-
|-
| u32
| u32
| 1
| 1
| '''Bone ID'''
| '''Bone ID'''
|
|-
| colspan=4 {{unknown|End of bone name}}
|}
|}


Anonymous user