ANCS (File Format): Difference between revisions
→Animation Set
imported>Antidote |
>Aruki |
||
(15 intermediate revisions by 2 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__ | |||
== Format == | |||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Name | ||
! Notes | ! Notes | ||
|- | |- | ||
| u16 | | u16 | ||
| Version | | '''Version''' | ||
| Always 1 | | Always 1. | ||
|- | |- | ||
| [[# | | [[#Character Set|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 | ! Notes | ||
|- | |- | ||
| u16 | | u16 | ||
| 1 | | 1 | ||
| Version | | '''Version''' | ||
| Always 1 | | Always 1. | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| | | '''Character Count''' | ||
| | | Count of characters in this set. | ||
|- | |- | ||
| [[# | | [[#Character|Character]] | ||
| | | ''Character Count'' | ||
| Characters | | '''Characters Array''' | ||
| | | Array of characters. | ||
|} | |} | ||
=== | ==== Character ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Count | ||
! | ! Name | ||
! Notes | ! 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}} | |||
|- | |- | ||
| [[ | | Asset ID ([[CMDL (Metroid Prime)|CMDL]]) | ||
| 1 | | 1 | ||
| | | '''Model ID''' | ||
| | | ID of the model used by this character. | ||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[CSKR_(File_Format)|CSKR]] | | Asset ID ([[CSKR_(File_Format)|CSKR]]) | ||
| 1 | | 1 | ||
| | | '''Skin ID''' | ||
| | | ID of the skin used by this character. | ||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[CINF_(File_Format)|CINF]] | | Asset ID ([[CINF_(File_Format)|CINF]]) | ||
| 1 | | 1 | ||
| | | '''Skeleton ID''' | ||
| | | ID of the skeleton used by this character. | ||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| Animation Count | | '''Animation Name Count''' | ||
| | | Count of animation names in the next array. | ||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[# | | [[#Animation Name|Animation Name]] | ||
| | | ''Animation Name Count'' | ||
| Animation | | '''Animation Name Array''' | ||
| | | Array of names of animations used by this character. | ||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[ | | [[PAS Database]] | ||
| 1 | | 1 | ||
| | | '''PAS Database''' | ||
| Not much is known about how this data is used. | | Not much is known about how this data is used. | ||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[# | | [[#Particle Resource Data|Particle Resource Data]] | ||
| 1 | | 1 | ||
| Particle | | '''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 | ||
| | | {{unknown}} | ||
| | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| {{unknown | | {{unknown}} | ||
| | | | ||
| | | {{nocheck}} | ||
| | | {{nocheck}} | ||
| | | {{nocheck}} | ||
| {{ | | {{nocheck}} | ||
| | | {{check}} | ||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| Animation AABB | | '''Animation AABB Count''' | ||
| | | Count of animation bounding boxes. | ||
| {{nocheck}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[# | | [[#Animation AABB|Animation AABB]] | ||
| | | ''Animation AABB Count'' | ||
| Animation | | '''Animation AABB Array''' | ||
| | | Array of animation bounding boxes for this character. | ||
| {{nocheck}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| Effect Count | | '''Effect Count''' | ||
| | | Count of attached effects. | ||
| {{nocheck}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[#Effect|Effect]] | | [[#Effect|Effect]] | ||
| | | ''Effect Count'' | ||
| Effects | | '''Effect Array''' | ||
| | | Effects attached to this character. | ||
| {{nocheck}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[CMDL_(Metroid_Prime)|CMDL]] | | Asset ID ([[CMDL_(Metroid_Prime)|CMDL]]) | ||
| 1 | | 1 | ||
| Overlay | | '''Frozen Model''' | ||
| | | Overlay model that appears when the character is frozen with the Ice/Dark Beam. | ||
| {{nocheck}} | |||
| {{nocheck}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[CSKR_(File_Format)|CSKR]] | | Asset ID ([[CSKR_(File_Format)|CSKR]]) | ||
| 1 | | 1 | ||
| | | '''Frozen Skin''' | ||
| | | Skin for rigging the ''Frozen Model'' to the character's skeleton. | ||
| {{nocheck}} | |||
| {{nocheck}} | |||
| {{check}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| Animation | | '''Animation Count''' | ||
| | | Count of animations used by this character. | ||
| {{nocheck}} | |||
| {{nocheck}} | |||
| {{nocheck}} | |||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| u32 | | 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 | | 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 | | u32 | ||
| 1 | | 1 | ||
| Animation AABB | | '''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'' | ||
| Animation | | '''Indexed Animation AABB Array''' | ||
| | | Unknown purpose. | ||
| {{nocheck}} | |||
| {{nocheck}} | |||
| {{nocheck}} | |||
| {{nocheck}} | |||
| {{check}} | |||
|} | |} | ||
==== | ===== Animation Name ===== | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Name | ||
! Notes | ! Notes | ||
! V1 | |||
! V10 | |||
|- | |- | ||
| u32 | | 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 | | string | ||
| {{unknown|'''Unknown'''}} | | {{unknown|'''Unknown'''}} | ||
| | | Always empty. | ||
| {{check}} | |||
| {{nocheck}} | |||
|- | |- | ||
| string | | string | ||
| | | '''Animation Name''' | ||
| The name of the animation. | |||
| The name of the | | {{check}} | ||
| {{check}} | |||
|} | |} | ||
=== | ===== Particle Resource Data ===== | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Count | ||
! | ! Name | ||
! Notes | ! 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 | |||
| 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 | | u32 | ||
| 1 | | 1 | ||
| | | {{unknown}} | ||
| Always 0. | |||
| | | {{nocheck}} | ||
| | | {{check}} | ||
| | | {{check}} | ||
| | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 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" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Name | ||
! Notes | |||
|- | |- | ||
| string | | string | ||
| Name | | '''Animation Name''' | ||
| | |||
|- | |- | ||
| | | {{AABox}} | ||
| Animation | | '''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 | ||
! | ! Name | ||
! | ! Notes | ||
|- | |||
| u32 | |||
| '''Animation ID''' | |||
| Confirm this is character-relative? | |||
|- | |||
| {{AABox}} | |||
| '''Animation Bounding Box''' | |||
| | |||
|} | |||
===== Effect ===== | |||
{| class="wikitable" | |||
! Type | |||
! Count | |||
! Name | |||
! Notes | |||
|- | |- | ||
| string | | string | ||
| 1 | | 1 | ||
| Name | | '''Effect Name''' | ||
| Name of the effect. | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| Component Count | | '''Effect Component Count''' | ||
| Count of effect components | |||
|- | |- | ||
| [[# | | [[#Effect Component|Effect Component]] | ||
| | | ''Effect Component Count'' | ||
| Effect Components | | '''Effect Components''' | ||
| Array of effect components used by this effect. | |||
|} | |} | ||
==== | ====== Effect Component ====== | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Name | ||
! Notes | |||
|- | |- | ||
| string | | string | ||
| Name | | '''Component Name''' | ||
| Name of this effect component. | |||
|- | |- | ||
| FourCC | | {{FourCC}} | ||
| Type | | '''Particle Asset Type''' | ||
| Type of the particle used by this effect. | |||
|- | |- | ||
| | | Asset ID | ||
| | | '''Particle Asset ID''' | ||
| Particle resource used by this effect. | |||
|- | |- | ||
| string | | string | ||
| Bone | | '''Bone Name''' | ||
| Bone that the component is attached to. | |||
|- | |- | ||
| float | | float | ||
| '''Scale''' | |||
| Scale of the component. | |||
|- | |- | ||
| u32 | | u32 | ||
| '''Parented Mode''' | |||
| Needs documentation | |||
|- | |- | ||
| u32 | | u32 | ||
| '''Flags''' | |||
| Needs documentation | |||
|} | |} | ||
=== | === Animation Set === | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Count | ||
! | ! Name | ||
! Notes | ! Notes | ||
! MP1 | |||
! MP2 | |||
|- | |- | ||
| u16 | | u16 | ||
| 1 | | 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 | | '''Animation Count''' | ||
| | | Count of animations contained by the set. | ||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[#Animation|Animation]] | | [[#Animation|Animation]] | ||
| | | ''Animation Count'' | ||
| | | '''Animation Array''' | ||
| | | Array of animations. | ||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| Transition Count | | '''Transition Count''' | ||
| | | Count of transitions contained by the set. | ||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[#Transition|Transition]] | | [[#Transition|Transition]] | ||
| | | ''Transition Count'' | ||
| | | '''Transition Array''' | ||
| | | Array of transitions. | ||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[ | | [[Meta-Transition]] | ||
| 1 | | 1 | ||
| Default Transition | | '''Default Transition''' | ||
| | | | ||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| Additive Animation Count | | '''Additive Animation Count''' | ||
| | | Count of additive animations contained by the set. | ||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[# | | [[#Additive Animation|Additive Animation]] | ||
| | | ''Additive Animation Count'' | ||
| Additive animations | | '''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 | | float | ||
| 1 | | 1 | ||
| Time | | '''Default Additive Fade-In Time''' | ||
| {{ | | Fade-in time used for additive animations not listed in the above array. | ||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| float | | float | ||
| 1 | | 1 | ||
| Time | | '''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 | | '''Half Transition Count''' | ||
| | | Count of half transitions contained by the set. | ||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| [[# | | [[#Half Transition|Half Transition]] | ||
| | | ''Half Transition Count'' | ||
| Half | | '''Half Transition Array''' | ||
| | | Array of half transitions. | ||
| {{check}} | |||
| {{check}} | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| Animation Resource Count | | '''Animation Resource Count''' | ||
| | | Count of animation assets used by this set. | ||
| {{check}} | |||
| {{nocheck}} | |||
|- | |- | ||
| [[# | | [[#Animation Resource Pair|Animation Resource Pair]] | ||
| | | ''Animation Resource Count'' | ||
| Animation | | '''Animation Resource List''' | ||
| | | List of animation assets used by this set. | ||
| {{check}} | |||
| {{nocheck}} | |||
|- | |- | ||
| u32 | | u32 | ||
| 1 | | 1 | ||
| Event Count | | '''Event Set Count''' | ||
| | | Count of event sets. Matches the animation count. | ||
| {{nocheck}} | |||
| {{check}} | |||
|- | |- | ||
| [[EVNT_(File_Format)| | | [[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=== | ==== Animation ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
! Type | |||
! Name | ! Name | ||
! Notes | ! Notes | ||
|- | |- | ||
| string | | string | ||
| '''Name''' | |||
| Animation name. | |||
|- | |- | ||
| | | [[Meta-Animation]] | ||
| '''Animation''' | |||
| Meta-animation data. | |||
|} | |} | ||
==== | ==== Transition ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Name | ||
! Notes | ! Notes | ||
|- | |- | ||
| u32 | | u32 | ||
| | | {{unknown}} | ||
| | |||
| | |||
|- | |- | ||
| u32 | | u32 | ||
| | | '''Animation ID A''' | ||
| | | The animation being transitioned from. | ||
|- | |- | ||
| u32 | | u32 | ||
| | | '''Animation ID B''' | ||
| | | The animation being transitioned to. | ||
|- | |- | ||
| [[ | | [[Meta-Transition]] | ||
| | | '''Transition''' | ||
| | | Meta-transition data. | ||
|} | |} | ||
=== | ==== Additive Animation ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
! Type | |||
! Name | ! Name | ||
! | ! Notes | ||
|- | |- | ||
| u32 | | u32 | ||
| '''Animation ID''' | |||
| | |||
| | |||
|- | |- | ||
| float | | float | ||
| '''Fade-In Time''' | |||
| Fade-in duration. | |||
|- | |- | ||
| float | | float | ||
| '''Fade-Out Time''' | |||
| Fade-out duration. | |||
|} | |} | ||
===Half Transition=== | ==== Half Transition ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Name | ||
! Notes | |||
|- | |- | ||
| u32 | | u32 | ||
| Animation | | '''Animation ID''' | ||
| The animation being transitioned from. | |||
|- | |- | ||
| [[ | | [[Meta-Transition]] | ||
| Transition | | '''Transition''' | ||
| Meta-transition data. | |||
|} | |} | ||
=== | ==== Animation Resource Pair ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
! | ! Type | ||
! | ! Name | ||
|- | |- | ||
| [[ANIM_(File_Format)|ANIM]] | | Asset ID ([[ANIM_(File_Format)|ANIM]]) | ||
| | | '''ANIM ID''' | ||
|- | |- | ||
| [[EVNT_(File_Format)|EVNT]] | | Asset ID ([[EVNT_(File_Format)|EVNT]]) | ||
| | | '''EVNT ID''' | ||
|} | |} | ||
[[Category:File Formats]] | [[Category:File Formats]] | ||
[[Category:Metroid Prime]] | [[Category:Metroid Prime]] | ||
[[Category:Metroid Prime 2: Echoes]] | [[Category:Metroid Prime 2: Echoes]] |