SKEL (File Format)

From Retro Modding Wiki
Jump to navigation Jump to search

The SKEL format is used to store animation skeletons in Tropical Freeze.


To do:
This format is near identical to DKCR's CINF format, so the article should be renamed + DKCR differences should be noted
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 Quaternion 1 Unknown Likely bone orientation
0x10 Vector3f 1 Unknown Likely bone scale (it's usually 1,1,1)
0x1C Vector3f 1 Unknown 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