CINF (File Format): Difference between revisions

From Retro Modding Wiki
Jump to navigation Jump to search
>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}}
|}
|}



Revision as of 11:32, 6 April 2016

The CINF format is for skeletons. Skeletons are associated with models and skins through ANCS files.


This file format is almost completely documented
What is the purpose of the bone ID section?


To do:
MP2/3/DKCR differences

Format

Type Count Name Notes
u32 1 Bone Count
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 Count Bone Name Array
End of file

Bone

Offset Type Count Name Notes
0x0 u32 1 Bone ID
0x4 u32 1 Parent Bone ID
0x8 float 3 Position The position is in the skeleton's local space, not in the parent's bone space.
0x14 u32 1 Linked Bone Count
0x18 u32 Linked Bone Count Linked Bone ID Array This array includes both the parent bone ID as well as all children.
End of bone

Bone Name

Type Count Name Notes
string 1 Bone Name
u32 1 Bone ID
End of bone name