The ANCS format defines character sets and animation sets in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the CHAR and SAND formats. The extension stands for ANimation Character Set.
Format
Type
|
Name
|
Notes
|
u16
|
Version
|
Always 1.
|
Character Set
|
Character Set
|
Set of characters that share animation data.
|
Animation Set
|
Animation Set
|
Set of animations used by the characters in the character set.
|
Character Set
Type
|
Count
|
Name
|
Notes
|
u16
|
1
|
Version
|
Always 1.
|
u32
|
1
|
Character Count
|
Count of characters in this set.
|
Character
|
Character Count
|
Characters Array
|
Array of characters.
|
Character
Type
|
Count
|
Name
|
Notes
|
V1
|
V2
|
V4
|
V5
|
V10
|
u32
|
1
|
Character ID
|
Typically begins at 0 and increments by 1 on each successive character in the set.
|
✔
|
✔
|
✔
|
✔
|
✔
|
u16
|
1
|
Version
|
This can vary between different files/characters. Usually 5 or 6 in MP1 and 10 in MP2.
|
✔
|
✔
|
✔
|
✔
|
✔
|
string
|
1
|
Name
|
Name of the character. Not used by the game; was likely included for debugging purposes.
|
✔
|
✔
|
✔
|
✔
|
✔
|
Asset ID (CMDL)
|
1
|
Model ID
|
ID of the model used by this character.
|
✔
|
✔
|
✔
|
✔
|
✔
|
Asset ID (CSKR)
|
1
|
Skin ID
|
ID of the skin used by this character.
|
✔
|
✔
|
✔
|
✔
|
✔
|
Asset ID (CINF)
|
1
|
Skeleton ID
|
ID of the skeleton used by this character.
|
✔
|
✔
|
✔
|
✔
|
✔
|
u32
|
1
|
Animation Name Count
|
Count of animation names in the next array.
|
✔
|
✔
|
✔
|
✔
|
✔
|
Animation Name
|
Animation Name Count
|
Animation Name Array
|
Array of names of animations used by this character.
|
✔
|
✔
|
✔
|
✔
|
✔
|
PAS Database
|
1
|
PAS Database
|
Not much is known about how this data is used.
|
✔
|
✔
|
✔
|
✔
|
✔
|
Particle Resource Data
|
1
|
Particle Resource Data
|
List of particle assets being used by this character. This includes particles being used by attached effects as well as by animation events.
|
✔
|
✔
|
✔
|
✔
|
✔
|
u32
|
1
|
Unknown
|
|
✔
|
✔
|
✔
|
✔
|
✔
|
u32
|
1
|
Unknown
|
|
✖
|
✖
|
✖
|
✖
|
✔
|
u32
|
1
|
Animation AABB Count
|
Count of animation bounding boxes.
|
✖
|
✔
|
✔
|
✔
|
✔
|
Animation AABB
|
Animation AABB Count
|
Animation AABB Array
|
Array of animation bounding boxes for this character.
|
✖
|
✔
|
✔
|
✔
|
✔
|
u32
|
1
|
Effect Count
|
Count of attached effects.
|
✖
|
✔
|
✔
|
✔
|
✔
|
Effect
|
Effect Count
|
Effect Array
|
Effects attached to this character.
|
✖
|
✔
|
✔
|
✔
|
✔
|
Asset ID (CMDL)
|
1
|
Frozen Model
|
Overlay model that appears when the character is frozen with the Ice/Dark Beam.
|
✖
|
✖
|
✔
|
✔
|
✔
|
Asset ID (CSKR)
|
1
|
Frozen Skin
|
Skin for rigging the Frozen Model to the character's skeleton.
|
✖
|
✖
|
✔
|
✔
|
✔
|
u32
|
1
|
Animation Count
|
Count of animations used by this character.
|
✖
|
✖
|
✖
|
✔
|
✔
|
u32
|
Animation Count
|
Animation ID Map
|
Array of animation IDs. Indexing this array with the character-relative animation ID returns the animset-relative animation ID.
|
✖
|
✖
|
✖
|
✔
|
✔
|
Asset ID (CSPP)
|
1
|
Spatial Primitives ID
|
ID of the spatial primitives used by this character.
|
✖
|
✖
|
✖
|
✖
|
✔
|
u8
|
1
|
Unknown
|
|
✖
|
✖
|
✖
|
✖
|
✔
|
u32
|
1
|
Indexed Animation AABB Count
|
Count of indexed animation bounding boxes.
|
✖
|
✖
|
✖
|
✖
|
✔
|
Indexed Animation AABB
|
Indexed Animation AABB Count
|
Indexed Animation AABB Array
|
Unknown purpose.
|
✖
|
✖
|
✖
|
✖
|
✔
|
Animation Name
Type
|
Name
|
Notes
|
V1
|
V10
|
u32
|
Animation ID
|
Character-relative animation ID. Must be remapped via the Animation ID Map to access the corresponding animation in the animset.
|
✔
|
✔
|
string
|
Unknown
|
Always empty.
|
✔
|
✖
|
string
|
Animation Name
|
The name of the animation.
|
✔
|
✔
|
Particle Resource Data
Type
|
Count
|
Name
|
Notes
|
V5
|
V6
|
V10
|
u32
|
1
|
Generic Particle Count
|
Count of generic particle systems.
|
✔
|
✔
|
✔
|
Asset ID (PART)
|
Generic Particle Count
|
Generic Particle List
|
List of generic particle systems used by this character.
|
✔
|
✔
|
✔
|
u32
|
1
|
Swoosh Particle Count
|
Count of swoosh particle systems.
|
✔
|
✔
|
✔
|
Asset ID (SWHC)
|
Swoosh Particle Count
|
Swoosh Particle List
|
List of swoosh particle systems used by this character.
|
✔
|
✔
|
✔
|
u32
|
1
|
Unknown
|
Always 0.
|
✖
|
✔
|
✔
|
u32
|
1
|
Electric Particle Count
|
Count of electric particle systems.
|
✔
|
✔
|
✔
|
Asset ID (ELSC)
|
Electric Particle Count
|
Electric Particle List
|
List of electric particle systems used by this character.
|
✔
|
✔
|
✔
|
u32
|
1
|
Spawn Particle Count
|
Count of spawn particle systems.
|
✖
|
✖
|
✔
|
Asset ID (SPSC)
|
Spawn Particle Count
|
Spawn Particle List
|
List of spawn particle systems used by this character.
|
✖
|
✖
|
✔
|
Animation AABB
Type
|
Name
|
Notes
|
string
|
Animation Name
|
|
AABox
|
Animation Bounding Box
|
|
Indexed Animation AABB
Similar to Animation AABB, but with animations referenced via ID instead of name.
Type
|
Name
|
Notes
|
u32
|
Animation ID
|
Confirm this is character-relative?
|
AABox
|
Animation Bounding Box
|
|
Effect
Type
|
Count
|
Name
|
Notes
|
string
|
1
|
Effect Name
|
Name of the effect.
|
u32
|
1
|
Effect Component Count
|
Count of effect components
|
Effect Component
|
Effect Component Count
|
Effect Components
|
Array of effect components used by this effect.
|
Effect Component
Type
|
Name
|
Notes
|
string
|
Component Name
|
Name of this effect component.
|
FourCC
|
Particle Asset Type
|
Type of the particle used by this effect.
|
Asset ID
|
Particle Asset ID
|
Particle resource used by this effect.
|
string
|
Bone Name
|
Bone that the component is attached to.
|
float
|
Scale
|
Scale of the component.
|
u32
|
Parented Mode
|
Needs documentation
|
u32
|
Flags
|
Needs documentation
|
AnimationSet
Data Type
|
Element Count
|
Description
|
Notes
|
u16
|
1
|
Info Count
|
Enumeration of the presence of certain sections
|
u32
|
1
|
Animation Count
|
How many animations there are in the set
|
Animation
|
animation_count
|
Animations that can be referenced by characters
|
|
u32
|
1
|
Transition Count
|
How many transitions there are in the set
|
Transition
|
transition_count
|
Transitions that can be referenced by characters
|
|
MetaTransition
|
1
|
Default Transition
|
|
u32
|
1
|
Additive Animation Count
|
How many additive animations there are
|
AdditiveAnimationPair
|
additive_animation_count
|
Additive animations that can be referenced in some fashion
|
Reference method is currently unknown, presumably PASDatabase.
|
AdditiveAnimation
|
1
|
Default additive
|
|
u32
|
1
|
Half Transition Count
|
How many half transitions there in the set, Only present if info_count > 2
|
HalfTransition
|
half_transition_Count
|
Half Transitions
|
Only present if info_count > 2
|
u32
|
1
|
Animation Resource Count
|
Only present if info_count > 3, and not present at all in MP2
|
AnimationResource
|
animation_resource_count
|
Animation Resources
|
Only present if info_count > 3, and not present at all in MP2
|
u32
|
1
|
Event Count
|
Only present in MP2
|
EVNT
|
event_count
|
Animation Events
|
Only present in MP2
|
Animation
Data Type
|
Description
|
string
|
Name
|
MetaAnimation
|
Animation configuration
|
MetaAnimation
MetaAnimations can be one of five types, and may contain children.
EMetaAnimationType
Name
|
Value
|
Play
|
0
|
Blend
|
1
|
PhaseBlend
|
2
|
Random
|
3
|
Sequence
|
4
|
Play
Data Type
|
Description
|
Notes
|
ANIM
|
Animation ID
|
The asset ID for this particular animation
|
u32
|
Index
|
The ID used by characters to reference this animation
|
string
|
Name
|
The animations name
|
float
|
Unknown
|
u32
|
Unknown
|
Blend
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.
Data Type
|
Description
|
Notes
|
MetaAnimation
|
Animation A
|
The animation to, presumably, blend from
|
MetaAnimation
|
Animation B
|
The animation to, presumably, blend to
|
float
|
Unknown
|
bool
|
Unknown
|
Random
Random may contain one or more children in an Animation -> Probability pair following this structure:
Data Type
|
Element Count
|
Description
|
Notes
|
u32
|
1
|
Animation Count
|
The number of child animations
|
AnimProbabilityPair
|
animation_count
|
The animations to select from
|
The exact manner these are used is currently unknown
|
AnimProbabilityPair
Data Type
|
Description
|
Notes
|
MetaAnimation
|
The animation use if the probability factor is met
|
|
u32
|
Probability
|
How probability is used is not currently known
|
Sequence
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes
Data Type
|
Element Count
|
Description
|
u32
|
1
|
Animation Count
|
MetaAnimation
|
animation_count
|
The animations to play in a sequence
|
Transition
Data Type
|
Description
|
Notes
|
u32
|
Unknown
|
u32
|
Animation Index A
|
The animation to transition from
|
u32
|
Animation Index B
|
The animation to transition to
|
MetaTransition
|
Transition configuration
|
Describes how the transition is performed
|
MetaTransition
Meta Transitions can be one of four types, and may contain animations.
EMetaTransitionType
Name
|
Value
|
TransAnimation
|
0
|
TransTransition
|
1
|
TransPhaseTransition
|
2
|
TransNoTransition
|
3
|
TransAnimation
Data Type
|
Description
|
MetaAnimation
|
The animation to use while transitioning
|
TransTransition
Data Type
|
Description
|
float
|
Time
|
u32
|
Unknown
|
bool
|
Unknown
|
bool
|
Unknown
|
u32
|
Unknown
|
AdditiveAnimationPair
Data Type
|
Description
|
u32
|
Animation Index
|
AdditiveAnimation
|
Additive Animation fade-in, fade-out values
|
AdditiveAnimation
Describes how animations are additively blended together.
Data Type
|
Description
|
float
|
Fade In Duration
|
float
|
Fade Out Duration
|
Half Transition
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown
Data Type
|
Description
|
u32
|
Animation Index
|
MetaTransition
|
Transition configuration.
|
AnimationResource
Data Type
|
Description
|
ANIM
|
Animation Asset ID
|
EVNT
|
Event Asset ID
|