|
|
Line 1: |
Line 1: |
| The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et. | | The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et. |
− |
| |
− | {{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}
| |
| | | |
| __TOC__ | | __TOC__ |
Revision as of 00:20, 3 March 2017
The ANCS format defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the CHAR format. The extension stands for ANimation Character Set.
Root Structure
Data Type
|
Description
|
Notes
|
u16
|
Version
|
Always 1
|
CharacterSet
|
Character Set
|
Contains multiple CharacterInfo Entries
|
AnimationSet
|
Animation Set
|
Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association
|
CharacterSet
Data Type
|
Element Count
|
Description
|
Notes
|
u16
|
1
|
Version
|
Always 1
|
u32
|
1
|
CharacterInfoPair count
|
Number of characters in this set.
|
CharacterInfoPair
|
character_info_count
|
Character Info Pairs
|
|
CharacterInfoPair
CharacterInfo
Data Type
|
Element Count
|
Description
|
Notes
|
u16
|
1
|
Info Type Count
|
Informs the engine which info types are present within the CharacterSet
|
string
|
1
|
Character Name
|
Human readable name, useful for editors, the engine does not use this internally.
|
CMDL
|
1
|
Character Model
|
|
CSKR
|
1
|
Character Skin
|
|
CINF
|
1
|
Character Rig
|
|
u32
|
1
|
Animation Count
|
Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.
|
AnimationName
|
animation_count
|
Animation Names
|
Animations linked to this character by name and index.
|
PASDatabase
|
1
|
Parameterized Animation State Data
|
Not much is known about how this data is used.
|
ParticleResData
|
1
|
Particle systems used by this character
|
|
u32
|
1
|
Unknown
|
u32
|
1
|
Unknown
|
Not present when info_type_count <= 9
|
u32
|
1
|
Unknown
|
Not present when info_type_count <= 9
|
u32
|
1
|
Animation AABB count
|
Only present when info_type_count > 1
|
AnimationAABB
|
animation_aabb_count
|
Animation bounds
|
Only present when info_type_count > 1
|
u32
|
1
|
Effect Count
|
Only present when info_type_count > 1
|
Effect
|
effect_count
|
Effects used by this character, including which bones they're attached to
|
Only present when info_type_count > 1
|
CMDL
|
1
|
Overlay Model for status effects, such as ice when frozen
|
Only present when info_type_count > 3
|
CSKR
|
1
|
Overlay Skin for status effects, such as ice when frozen
|
Only present when info_type_count > 3
|
u32
|
1
|
Animation Index Count
|
The total number of animations used by this, only present when info_type_count > 4
|
u32
|
animation_index_count
|
Indices of each animation used by this character
|
Only present when info_type_count > 4
|
u32
|
1
|
Unknown
|
Only present when info_type_count > 9
|
u8
|
1
|
Unknown
|
Only present when info_type_count > 9
|
u32
|
1
|
Animation AABB Indexed Count
|
Only present when info_type_count > 9
|
AnimationAABB
|
animation_aabb_indexed_count
|
Animation bounds, referenced by index
|
Only present when info_type_count > 9
|
AnimationName
Data Type
|
Element Count
|
Description
|
Notes
|
u32
|
1
|
Index
|
The index into AnimationSet's MetaAnimation table.
|
string
|
1
|
Unknown
|
Not present when info_type_count >= 10
|
string
|
1
|
Animation Name
|
The name of the index ref'd Animation
|
ParticleResData
Data Type
|
Element Count
|
Description
|
Notes
|
u32
|
1
|
PART count
|
How many particle systems are used by this character
|
PART
|
part_count
|
The particle systems used by this character
|
u32
|
1
|
SWHC count
|
How many swooshes are used by this character
|
SWHC
|
swhc_count
|
The swooshes used by this character
|
u32
|
1
|
Unknown Count
|
How many unknown systems are used by this character
|
UniqueID32
|
unknown_count
|
The unknown systems used by this character
|
u32
|
1
|
ELSC count
|
How many electric systems are used by this character, only present if info_type_count > 5
|
ELSC
|
else_count
|
The electric systems used by this character
|
Only present if info_type_count > 5
|
AnimationAABB
Data Type
|
Description
|
string
|
Name
|
CAABox
|
Animation bounds
|
Effect
Data Type
|
Element Count
|
Description
|
string
|
1
|
Name
|
u32
|
1
|
Component Count
|
EffectComponent
|
component_count
|
Effect Components
|
EffectComponent
Data Type
|
Description
|
string
|
Name
|
FourCC
|
Type
|
UniqueID32
|
Resource as defined by Type
|
string
|
Bone to attach the effect to
|
float
|
Scale
|
u32
|
Parented Mode
|
u32
|
Flags
|
AnimationAABB Indexed
The only difference between this and the previous AnimationAABB is the fact that animations are referenced by index, rather than by name.
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
|