Difference between revisions of "ANCS (File Format)"
From Retro Modding Wiki
m (Parax0 moved page User:Parax0/ANCS (File Format) to ANCS (File Format) without leaving a redirect: how the fuck did that happen) |
(→Animation Set) |
||
| (29 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
| − | The '''ANCS format''' defines | + | 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 (File Format)|CHAR]] and [[SAND (File Format)|SAND]] formats. The extension stands for '''AN'''imation '''C'''haracter '''S'''et. |
| − | + | ||
| − | + | ||
| − | + | ||
__TOC__ | __TOC__ | ||
| − | == | + | == Format == |
| − | + | {| class="wikitable" | |
| + | ! Type | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | u16 | ||
| + | | '''Version''' | ||
| + | | Always 1. | ||
| + | |- | ||
| + | | [[#Character Set|Character Set]] | ||
| + | | '''Character Set''' | ||
| + | | Set of characters that share animation data. | ||
| + | |- | ||
| + | | [[#Animation Set|Animation Set]] | ||
| + | | '''Animation Set''' | ||
| + | | Set of animations used by the characters in the character set. | ||
| + | |} | ||
| − | + | === Character Set === | |
{| class="wikitable" | {| class="wikitable" | ||
| − | ! | + | ! Type |
| − | ! | + | ! Count |
| − | ! | + | ! Name |
| + | ! Notes | ||
|- | |- | ||
| − | | | + | | u16 |
| − | | | + | | 1 |
| − | + | | '''Version''' | |
| + | | Always 1. | ||
|- | |- | ||
| − | | | + | | u32 |
| − | | | + | | 1 |
| − | + | | '''Character Count''' | |
| − | | | + | | Count of characters in this set. |
| − | + | ||
| − | + | ||
| − | + | ||
|- | |- | ||
| − | | | + | | [[#Character|Character]] |
| − | | | + | | ''Character Count'' |
| + | | '''Characters Array''' | ||
| + | | Array of characters. | ||
|} | |} | ||
| − | == | + | ==== Character ==== |
{| class="wikitable" | {| class="wikitable" | ||
! Type | ! Type | ||
! Count | ! Count | ||
| − | ! | + | ! Name |
| + | ! Notes | ||
| + | ! V1 | ||
| + | ! V2 | ||
| + | ! V4 | ||
| + | ! V5 | ||
| + | ! V10 | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | ''' | + | | '''Character ID''' |
| + | | Typically begins at 0 and increments by 1 on each successive character in the set. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u16 | | u16 | ||
| 1 | | 1 | ||
| − | | | + | | '''Version''' |
| + | | This can vary between different files/characters. Usually 5 or 6 in MP1 and 10 in MP2. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| string | | string | ||
| 1 | | 1 | ||
| − | | ''' | + | | '''Name''' |
| + | | Name of the character. Not used by the game; was likely included for debugging purposes. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| − | | [[CMDL (Metroid Prime)|CMDL]] | + | | Asset ID ([[CMDL (Metroid Prime)|CMDL]]) |
| 1 | | 1 | ||
| − | | '''Model''' | + | | '''Model ID''' |
| + | | ID of the model used by this character. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| − | | [[ | + | | Asset ID ([[CSKR_(File_Format)|CSKR]]) |
| 1 | | 1 | ||
| − | | '''Skin''' | + | | '''Skin ID''' |
| + | | ID of the skin used by this character. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| − | | [[ | + | | Asset ID ([[CINF_(File_Format)|CINF]]) |
| 1 | | 1 | ||
| − | | '''Skeleton''' | + | | '''Skeleton ID''' |
| + | | ID of the skeleton used by this character. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | '''Animation | + | | '''Animation Name Count''' |
| − | |} | + | | Count of animation names in the next array. |
| − | + | | {{check}} | |
| − | + | | {{check}} | |
| − | + | | {{check}} | |
| − | {| | + | | {{check}} |
| − | + | | {{check}} | |
| − | + | |- | |
| − | + | | [[#Animation Name|Animation Name]] | |
| + | | ''Animation Name Count'' | ||
| + | | '''Animation Name Array''' | ||
| + | | Array of names of animations used by this character. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | [[PAS Database]] | ||
| + | | 1 | ||
| + | | '''PAS Database''' | ||
| + | | Not much is known about how this data is used. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | [[#Particle Resource Data|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 [[EVNT (File Format)|animation events]]. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | '''Animation | + | | {{unknown}} |
| + | | | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Animation AABB Count''' | ||
| + | | Count of animation bounding boxes. | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | [[#Animation AABB|Animation AABB]] | ||
| + | | ''Animation AABB Count'' | ||
| + | | '''Animation AABB Array''' | ||
| + | | Array of animation bounding boxes for this character. | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Effect Count''' | ||
| + | | Count of attached effects. | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | [[#Effect|Effect]] | ||
| + | | ''Effect Count'' | ||
| + | | '''Effect Array''' | ||
| + | | Effects attached to this character. | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | Asset ID ([[CMDL_(Metroid_Prime)|CMDL]]) | ||
| + | | 1 | ||
| + | | '''Frozen Model''' | ||
| + | | Overlay model that appears when the character is frozen with the Ice/Dark Beam. | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | Asset ID ([[CSKR_(File_Format)|CSKR]]) | ||
| + | | 1 | ||
| + | | '''Frozen Skin''' | ||
| + | | Skin for rigging the ''Frozen Model'' to the character's skeleton. | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Animation Count''' | ||
| + | | Count of animations used by this character. | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | 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. | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | Asset ID ([[CSPP (File Format)|CSPP]]) | ||
| + | | 1 | ||
| + | | '''Spatial Primitives ID''' | ||
| + | | ID of the spatial primitives used by this character. | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u8 | | u8 | ||
| 1 | | 1 | ||
| − | | {{unknown| | + | | {{unknown}} |
| + | | | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
|- | |- | ||
| − | | | + | | u32 |
| 1 | | 1 | ||
| − | | '''Animation | + | | '''Indexed Animation AABB Count''' |
| + | | Count of indexed animation bounding boxes. | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | [[#Indexed Animation AABB|Indexed Animation AABB]] | ||
| + | | ''Indexed Animation AABB Count'' | ||
| + | | '''Indexed Animation AABB Array''' | ||
| + | | Unknown purpose. | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
|} | |} | ||
| − | === | + | ===== Animation Name ===== |
| − | + | ||
| − | + | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | ! | + | ! 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. |
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| − | | | + | | string |
| − | | | + | | {{unknown|'''Unknown'''}} |
| − | | ''' | + | | Always empty. |
| + | | {{check}} | ||
| + | | {{nocheck}} | ||
|- | |- | ||
| − | | | + | | string |
| − | + | | '''Animation Name''' | |
| − | | ''' | + | | The name of the animation. |
| + | | {{check}} | ||
| + | | {{check}} | ||
|} | |} | ||
| − | ==== | + | ===== Particle Resource Data ===== |
{| class="wikitable" | {| class="wikitable" | ||
! Type | ! Type | ||
! Count | ! Count | ||
| − | ! | + | ! Name |
| + | ! Notes | ||
| + | ! V5 | ||
| + | ! V6 | ||
| + | ! V10 | ||
|- | |- | ||
| − | | u32 | + | | u32 |
| 1 | | 1 | ||
| − | | {{ | + | | '''Generic Particle Count''' |
| + | | Count of generic particle systems. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | Asset ID ([[PART (File Format)|PART]]) | ||
| + | | ''Generic Particle Count'' | ||
| + | | '''Generic Particle List''' | ||
| + | | List of generic particle systems used by this character. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | ''' | + | | '''Swoosh Particle Count''' |
| + | | Count of swoosh particle systems. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | Asset ID ([[SWHC (File Format)|SWHC]]) | ||
| + | | ''Swoosh Particle Count'' | ||
| + | | '''Swoosh Particle List''' | ||
| + | | List of swoosh particle systems used by this character. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | {{unknown}} | ||
| + | | Always 0. | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Electric Particle Count''' | ||
| + | | Count of electric particle systems. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | Asset ID ([[ELSC_(File_Format)|ELSC]]) | ||
| + | | ''Electric Particle Count'' | ||
| + | | '''Electric Particle List''' | ||
| + | | List of electric particle systems used by this character. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | ''' | + | | '''Spawn Particle Count''' |
| + | | Count of spawn particle systems. | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
|- | |- | ||
| − | | [[ | + | | Asset ID ([[SPSC (File Format)|SPSC]]) |
| − | | | + | | ''Spawn Particle Count'' |
| − | | ''' | + | | '''Spawn Particle List''' |
| + | | List of spawn particle systems used by this character. | ||
| + | | {{nocheck}} | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | |} | ||
| + | |||
| + | ===== Animation AABB ===== | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | string | ||
| + | | '''Animation Name''' | ||
| + | | | ||
|- | |- | ||
| − | | | + | | {{AABox}} |
| − | + | | '''Animation Bounding Box''' | |
| − | | ''' | + | | |
|} | |} | ||
| − | ===== | + | ===== Indexed Animation AABB ===== |
| + | |||
| + | Similar to [[#Animation AABB|Animation AABB]], but with animations referenced via ID instead of name. | ||
{| class="wikitable" | {| class="wikitable" | ||
! Type | ! Type | ||
| − | ! | + | ! Name |
| − | ! | + | ! Notes |
|- | |- | ||
| u32 | | u32 | ||
| + | | '''Animation ID''' | ||
| + | | Confirm this is character-relative? | ||
| + | |- | ||
| + | | {{AABox}} | ||
| + | | '''Animation Bounding Box''' | ||
| + | | | ||
| + | |} | ||
| + | |||
| + | ===== Effect ===== | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Count | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | string | ||
| 1 | | 1 | ||
| − | | ''' | + | | '''Effect Name''' |
| + | | Name of the effect. | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | + | | '''Effect Component Count''' | |
| − | | | + | | Count of effect components |
| − | + | ||
| − | + | ||
| − | + | ||
|- | |- | ||
| − | | | + | | [[#Effect Component|Effect Component]] |
| − | | | + | | ''Effect Component Count'' |
| − | | ''' | + | | '''Effect Components''' |
| + | | Array of effect components used by this effect. | ||
|} | |} | ||
| − | + | ====== Effect Component ====== | |
{| class="wikitable" | {| class="wikitable" | ||
| − | |||
| − | |||
! Type | ! 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 | | float | ||
| + | | '''Scale''' | ||
| + | | Scale of the component. | ||
|- | |- | ||
| − | | | + | | u32 |
| − | | | + | | '''Parented Mode''' |
| − | | | + | | Needs documentation |
|- | |- | ||
| − | | | + | | u32 |
| − | | | + | | '''Flags''' |
| − | | | + | | Needs documentation |
|} | |} | ||
| − | ===== | + | === Animation Set === |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
{| class="wikitable" | {| class="wikitable" | ||
! Type | ! Type | ||
! Count | ! Count | ||
| − | ! | + | ! Name |
| + | ! Notes | ||
| + | ! MP1 | ||
| + | ! MP2 | ||
| + | |- | ||
| + | | u16 | ||
| + | | 1 | ||
| + | | '''Version''' | ||
| + | | Always 4. Note there are format differences between MP1 and MP2 despite them both being version 4. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | ''' | + | | '''Animation Count''' |
| + | | Count of animations contained by the set. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| − | | [[ | + | | [[#Animation|Animation]] |
| − | | | + | | ''Animation Count'' |
| − | | ''' | + | | '''Animation Array''' |
| + | | Array of animations. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | ''' | + | | '''Transition Count''' |
| + | | Count of transitions contained by the set. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| − | | [[ | + | | [[#Transition|Transition]] |
| − | | | + | | ''Transition Count'' |
| − | | ''' | + | | '''Transition Array''' |
| + | | Array of transitions. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | [[Meta-Transition]] | ||
| + | | 1 | ||
| + | | '''Default Transition''' | ||
| + | | | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | {{ | + | | '''Additive Animation Count''' |
| + | | Count of additive animations contained by the set. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | [[#Additive Animation|Additive Animation]] | ||
| + | | ''Additive Animation Count'' | ||
| + | | '''Additive Animation Array''' | ||
| + | | Array of additive animations. Although any animation can be used as additive, this array allows for customizing the fade in/out time for each animation. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | float | ||
| + | | 1 | ||
| + | | '''Default Additive Fade-In Time''' | ||
| + | | Fade-in time used for additive animations not listed in the above array. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | float | ||
| + | | 1 | ||
| + | | '''Default Additive Fade-Out Time''' | ||
| + | | Fade-out time used for additive animations not listed in the above array. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | ''' | + | | '''Half Transition Count''' |
| + | | Count of half transitions contained by the set. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| − | | [[ | + | | [[#Half Transition|Half Transition]] |
| − | | | + | | ''Half Transition Count'' |
| − | | ''' | + | | '''Half Transition Array''' |
| + | | Array of half transitions. | ||
| + | | {{check}} | ||
| + | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| − | | {{ | + | | '''Animation Resource Count''' |
| + | | Count of animation assets used by this set. | ||
| + | | {{check}} | ||
| + | | {{nocheck}} | ||
| + | |- | ||
| + | | [[#Animation Resource Pair|Animation Resource Pair]] | ||
| + | | ''Animation Resource Count'' | ||
| + | | '''Animation Resource List''' | ||
| + | | List of animation assets used by this set. | ||
| + | | {{check}} | ||
| + | | {{nocheck}} | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Event Set Count''' | ||
| + | | Count of event sets. Matches the animation count. | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
| + | |- | ||
| + | | [[EVNT_(File_Format)|Event Set]] | ||
| + | | ''Event Set Count'' | ||
| + | | '''Event Set Array''' | ||
| + | | Array of animation events. Each event set maps to the animation at the same index. Note this is basically MP1's [[EVNT (File Format)|EVNT]] file format, but embedded in ANCS. | ||
| + | | {{nocheck}} | ||
| + | | {{check}} | ||
|} | |} | ||
| − | === | + | ==== Animation ==== |
| − | + | ||
| − | + | ||
{| class="wikitable" | {| class="wikitable" | ||
! Type | ! Type | ||
| − | ! | + | ! Name |
| − | ! | + | ! Notes |
|- | |- | ||
| string | | string | ||
| − | + | | '''Name''' | |
| − | | ''' | + | | Animation name. |
|- | |- | ||
| − | | | + | | [[Meta-Animation]] |
| − | + | | '''Animation''' | |
| − | + | | Meta-animation data. | |
|} | |} | ||
| − | === | + | ==== Transition ==== |
| − | + | ||
| − | + | ||
{| class="wikitable" | {| class="wikitable" | ||
! Type | ! Type | ||
| − | ! | + | ! Name |
| − | ! | + | ! Notes |
|- | |- | ||
| − | | | + | | u32 |
| − | | | + | | {{unknown}} |
| − | | | + | | |
|- | |- | ||
| u32 | | u32 | ||
| − | + | | '''Animation ID A''' | |
| − | + | | The animation being transitioned from. | |
|- | |- | ||
| − | | | + | | u32 |
| − | + | | '''Animation ID B''' | |
| − | | ''' | + | | The animation being transitioned to. |
|- | |- | ||
| − | | | + | | [[Meta-Transition]] |
| − | + | | '''Transition''' | |
| − | | ''' | + | | Meta-transition data. |
| + | |} | ||
| + | |||
| + | ==== Additive Animation ==== | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Name | ||
| + | ! Notes | ||
|- | |- | ||
| − | | | + | | u32 |
| − | + | | '''Animation ID''' | |
| − | | ''' | + | | |
|- | |- | ||
| − | | | + | | float |
| − | + | | '''Fade-In Time''' | |
| − | | ''' | + | | Fade-in duration. |
|- | |- | ||
| float | | float | ||
| − | + | | '''Fade-Out Time''' | |
| − | + | | Fade-out duration. | |
| + | |} | ||
| + | |||
| + | ==== Half Transition ==== | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Name | ||
| + | ! Notes | ||
|- | |- | ||
| u32 | | u32 | ||
| − | + | | '''Animation ID''' | |
| − | + | | The animation being transitioned from. | |
|- | |- | ||
| − | | | + | | [[Meta-Transition]] |
| − | + | | '''Transition''' | |
| − | + | | Meta-transition data. | |
|} | |} | ||
| − | === | + | ==== Animation Resource Pair ==== |
| − | + | ||
| − | + | ||
{| class="wikitable" | {| class="wikitable" | ||
! Type | ! Type | ||
| − | ! | + | ! Name |
| − | + | ||
|- | |- | ||
| − | | [[ | + | | Asset ID ([[ANIM_(File_Format)|ANIM]]) |
| − | + | | '''ANIM ID''' | |
| − | + | ||
|- | |- | ||
| − | | [[ | + | | Asset ID ([[EVNT_(File_Format)|EVNT]]) |
| − | + | | '''EVNT ID''' | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
|} | |} | ||
Latest revision as of 02:04, 3 March 2017
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.
Contents
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 |
Animation Set
| Type | Count | Name | Notes | MP1 | MP2 |
|---|---|---|---|---|---|
| u16 | 1 | Version | Always 4. Note there are format differences between MP1 and MP2 despite them both being version 4. | ✔ | ✔ |
| u32 | 1 | Animation Count | Count of animations contained by the set. | ✔ | ✔ |
| Animation | Animation Count | Animation Array | Array of animations. | ✔ | ✔ |
| u32 | 1 | Transition Count | Count of transitions contained by the set. | ✔ | ✔ |
| Transition | Transition Count | Transition Array | Array of transitions. | ✔ | ✔ |
| Meta-Transition | 1 | Default Transition | ✔ | ✔ | |
| u32 | 1 | Additive Animation Count | Count of additive animations contained by the set. | ✔ | ✔ |
| Additive Animation | Additive Animation Count | Additive Animation Array | Array of additive animations. Although any animation can be used as additive, this array allows for customizing the fade in/out time for each animation. | ✔ | ✔ |
| float | 1 | Default Additive Fade-In Time | Fade-in time used for additive animations not listed in the above array. | ✔ | ✔ |
| float | 1 | Default Additive Fade-Out Time | Fade-out time used for additive animations not listed in the above array. | ✔ | ✔ |
| u32 | 1 | Half Transition Count | Count of half transitions contained by the set. | ✔ | ✔ |
| Half Transition | Half Transition Count | Half Transition Array | Array of half transitions. | ✔ | ✔ |
| u32 | 1 | Animation Resource Count | Count of animation assets used by this set. | ✔ | ✖ |
| Animation Resource Pair | Animation Resource Count | Animation Resource List | List of animation assets used by this set. | ✔ | ✖ |
| u32 | 1 | Event Set Count | Count of event sets. Matches the animation count. | ✖ | ✔ |
| Event Set | Event Set Count | Event Set Array | Array of animation events. Each event set maps to the animation at the same index. Note this is basically MP1's EVNT file format, but embedded in ANCS. | ✖ | ✔ |
Animation
| Type | Name | Notes |
|---|---|---|
| string | Name | Animation name. |
| Meta-Animation | Animation | Meta-animation data. |
Transition
| Type | Name | Notes |
|---|---|---|
| u32 | Unknown | |
| u32 | Animation ID A | The animation being transitioned from. |
| u32 | Animation ID B | The animation being transitioned to. |
| Meta-Transition | Transition | Meta-transition data. |
Additive Animation
| Type | Name | Notes |
|---|---|---|
| u32 | Animation ID | |
| float | Fade-In Time | Fade-in duration. |
| float | Fade-Out Time | Fade-out duration. |
Half Transition
| Type | Name | Notes |
|---|---|---|
| u32 | Animation ID | The animation being transitioned from. |
| Meta-Transition | Transition | Meta-transition data. |
Animation Resource Pair
| Type | Name |
|---|---|
| Asset ID (ANIM) | ANIM ID |
| Asset ID (EVNT) | EVNT ID |