SKEL (File Format)
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 | 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 | |||