Revision as of 09:51, 8 November 2016
The SKEL format is used to store animation skeletons in Tropical Freeze.
|
This file format needs a lot of research Structure is known, but most data is unknown.
|
Format
Type
|
Count
|
Name
|
Notes
|
Form Descriptor
|
1
|
SKEL Form Descriptor
|
Data type is SKEL
|
u16
|
1
|
Magic
|
Always 0x9E22
|
u16
|
1
|
Version
|
Always 0x13
|
Joint Name Array
|
1
|
Joint Name Array
|
Array containing the name of every joint in the skeleton.
|
u16
|
1
|
Unknown Count A
|
Matches the joint name count
|
u16
|
1
|
Unknown Count B
|
Matches the Skel Map size
|
u16
|
1
|
Unknown Count C
|
|
u16
|
1
|
Unknown Count D
|
|
u16
|
1
|
Unknown Count E
|
|
bool
|
1
|
Has Skeleton Map?
|
If false, the Skeleton Map is not present.
|
Skeleton Map
|
1
|
Skeleton Map
|
Only present if Has Skeleton Map? is true.
|
bool
|
1
|
Has Animation Attribute Data?
|
If false, the Animation Attribute Data is not present.
|
Animation Attribute Data
|
1
|
Animation Attribute Data
|
Only present if Has Animation Attribute Data? is true.
|
u8
|
Unknown Count B
|
Unknown
|
|
u8
|
Unknown Count C
|
Unknown
|
|
u8
|
Unknown Count A
|
Unknown
|
|
u8
|
Unknown Count E
|
Unknown
|
|
u32
|
Unknown Count D
|
Unknown
|
|
Coords
|
Unknown Count B
|
Unknown
|
Coordinates array (likely initial bone transforms)
|
Skeleton Joint Set
|
Unknown Count D
|
Skeleton Joint Set
|
|
Skeleton Set Fragment Data
|
1
|
Skeleton Set Fragment Data
|
|
Joint Name Array
Type
|
Count
|
Name
|
Notes
|
u32
|
1
|
Unknown
|
If non-zero, no names are present.
|
u32
|
1
|
Joint Name Count
|
Count of joint names in the array.
|
Joint Name
|
Joint Name Count
|
Joint Name Array
|
Array of joint names.
|
u32
|
1
|
Unknown
|
|
Joint Name
Type
|
Count
|
Name
|
Notes
|
u32
|
1
|
Name Size
|
|
char
|
Name Size
|
Name
|
Zero-terminated
|
Skeleton Map
Type
|
Count
|
Name
|
Notes
|
u16
|
1
|
Unknown Count A
|
|
u8
|
1
|
Unknown Count B
|
|
u8
|
1
|
Unknown Count C
|
|
u8
|
Unknown Count A
|
Unknown
|
|
u16
|
Unknown Count A × 2
|
Unknown
|
|
u32
|
Unknown Count B
|
Unknown
|
|
u16
|
Unknown Count C
|
Unknown
|
|
u32
|
1
|
Unknown
|
|
Animation Attribute Data
Type
|
Count
|
Name
|
Notes
|
bool
|
1
|
Has Visibility Group Name Array?
|
Indicates whether the Visibility Group Name Array is present.
|
Joint Name Array
|
1
|
Visibility Group Name Array
|
Only present if Has Visibility Group Name Array? is true.
|
bool
|
1
|
Has Animation Attribute Info Data?
|
Indicates whether the Animation Attribute Info Data is present.
|
Animation Attribute Info Data
|
1
|
Animation Attribute Info Data
|
Only present if Has Animation Attribute Info Data? is true.
|
Animation Attribute Info Data
Type
|
Count
|
Name
|
Notes
|
Joint Name Array
|
1
|
Unknown Name Array
|
|
u32
|
1
|
Animation Attribute Info Count
|
Count of Animation Attribute Info elements in the next array.
|
Animation Attribute Info
|
Animation Attribute Info Count
|
Animation Attribute Info Array
|
|
Animation Attribute Info
Offset
|
Type
|
Count
|
Name
|
Notes
|
0x0
|
u32
|
1
|
Unknown
|
Must be 1, otherwise the following floats aren't present
|
0x4
|
float
|
1
|
Unknown
|
|
0x8
|
float
|
1
|
Unknown
|
|
0xC
|
End of Animation Attribute Info
|
Coords
Offset
|
Type
|
Count
|
Name
|
Notes
|
0x00
|
float
|
4
|
Unknown
|
Quaternion; likely bone rotation
|
0x10
|
float
|
3
|
Unknown
|
Vector; likely bone scale
|
0x1C
|
float
|
3
|
Unknown
|
Vector; likely bone position
|
0x28
|
End of Coords
|
Skeleton Joint Set
Type
|
Count
|
Name
|
Notes
|
u32
|
1
|
Unknown
|
|
u32
|
1
|
Unknown Count
|
|
u32
|
8
|
Unknown
|
|
u8
|
Unknown Count
|
Unknown
|
|
Skeleton Set Fragment Data
Type
|
Count
|
Name
|
Notes
|
u32
|
1
|
Unknown Count
|
|
u8
|
Unknown Count B
|
Unknown
|
This uses the count value from the base skeleton data
|
Unknown Struct
|
Unknown Count
|
Unknown
|
|
Unknown Struct
Offset
|
Type
|
Count
|
Name
|
Notes
|
0x00
|
u32
|
1
|
Unknown
|
|
0x04
|
u32
|
8
|
Unknown
|
|
0x24
|
End of Unknown Struct
|