Difference between revisions of "CHAR (Metroid Prime 3)"
From Retro Modding Wiki
(Created page with "The '''CHAR format''' defines animated characters; it's the successor to the ANCS format from Prime 1 and 2, and the format is extremely similar. {{res...") |
(→Format) |
||
| (13 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
| − | + | ''This article is for the CHAR format from Metroid Prime 3: Corruption. See [[CHAR (File Format)]] for the other revisions of this format.'' | |
| − | + | The '''CHAR format''' defines an animation character; together with [[SAND (File Format)|SAND]], it serves as the successor to the [[ANCS (File Format)|ANCS format]] from Prime 1 and 2, and contains much of the same data. The main difference from ANCS is that the file no longer contains multiple characters; instead, every character gets its own CHAR file, and any animation data shared with other characters is stored in SAND. | |
__TOC__ | __TOC__ | ||
| Line 7: | Line 7: | ||
== Format == | == Format == | ||
| − | === | + | {| class="wikitable" |
| + | ! Type | ||
| + | ! Count | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | u8 | ||
| + | | 1 | ||
| + | | '''Version''' | ||
| + | | Always 0x5. | ||
| + | |- | ||
| + | | u8 | ||
| + | | 1 | ||
| + | | '''Character ID''' | ||
| + | | This is an ID unique to each character sharing the same [[SAND (File Format)|SAND file]]. | ||
| + | |- | ||
| + | | string | ||
| + | | 1 | ||
| + | | '''Character Name''' | ||
| + | | Name of the character. Likely included for debugging purposes. | ||
| + | |- | ||
| + | | Asset ID ([[CMDL (Metroid Prime)|CMDL]]) | ||
| + | | 1 | ||
| + | | '''Character Model''' | ||
| + | | ID of the model used by this character. | ||
| + | |- | ||
| + | | Asset ID ([[CSKR (File Format)|CSKR]]) | ||
| + | | 1 | ||
| + | | '''Character Skin''' | ||
| + | | ID of the skin used by this character. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Overlay Count''' | ||
| + | | Number of overlay models. | ||
| + | |- | ||
| + | | [[#Overlay Model|Overlay Model]] | ||
| + | | ''Overlay Count'' | ||
| + | | '''Overlay Array''' | ||
| + | | Array defining overlay models that this character can use. | ||
| + | |- | ||
| + | | Asset ID ([[CINF (File Format)|CINF]]) | ||
| + | | 1 | ||
| + | | '''Character Skeleton''' | ||
| + | | ID of the skeleton used by this character. | ||
| + | |- | ||
| + | | Asset ID ([[SAND (File Format)|SAND]]) | ||
| + | | 1 | ||
| + | | '''Character Animation Data''' | ||
| + | | ID of the animation data used by this character. | ||
| + | |- | ||
| + | | [[PAS Database]] | ||
| + | | 1 | ||
| + | | '''PAS Database''' | ||
| + | | Not much known about how this data is used. | ||
| + | |- | ||
| + | | [[#Particle Resource Data|Particle Resource Data]] | ||
| + | | 1 | ||
| + | | '''Particle Resource Data''' | ||
| + | | List of particle assets being used by this character. This primarily contains particles used by animation events. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Anim Event Set Count''' | ||
| + | | Count of anim event sets used by this character. There'll be one set per animation that uses events (unless the animation has its events in the [[SAND (File Format)|SAND file]]). | ||
| + | |- | ||
| + | | [[#Anim Event Set|Anim Event Set]] | ||
| + | | ''Anim Event Set Count'' | ||
| + | | '''Anim Event Set Array''' | ||
| + | | Array of animation event sets. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Animation Count''' | ||
| + | | Count of animations used by this character. | ||
| + | |- | ||
| + | | [[#Animation|Animation]] | ||
| + | | ''Animation Count'' | ||
| + | | '''Animations Array''' | ||
| + | | Array of animations used by this character. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Animation Bounds Count''' | ||
| + | | Count of animation bounding boxes in the next array. | ||
| + | |- | ||
| + | | [[#Animation Bounding Box|Animation Bounding Box]] | ||
| + | | ''Animation Bounds Count'' | ||
| + | | '''Animation Bounding Box Array''' | ||
| + | | Array of bounding boxes for animations used by this character. | ||
| + | |- | ||
| + | | bool | ||
| + | | 1 | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | {{unknown|Unknown Array Count}} | ||
| + | | Size of the following array. | ||
| + | |- | ||
| + | | bool | ||
| + | | ''Unknown Array Count'' | ||
| + | | {{unknown|Unknown Bool Array}} | ||
| + | | Unknown array of bools. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Collision Primitive Set Count''' | ||
| + | | Number of animation collision primitive sets. | ||
| + | |- | ||
| + | | [[#Collision Primitive Set|Collision Primitive Set]] | ||
| + | | ''Collision Primitive Set Count'' | ||
| + | | '''Collision Primitive Sets''' | ||
| + | | Array of collision primitives used by this character. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Sound Resource Count''' | ||
| + | | Number of sound resources used by this character. | ||
| + | |- | ||
| + | | Asset ID ([[CAUD (File Format)|CAUD]]) | ||
| + | | ''Sound Resource Count'' | ||
| + | | '''Sound Resource List''' | ||
| + | | List of sound resources used by this character. | ||
| + | |} | ||
| + | |||
| + | === Overlay Model === | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | |||
! Type | ! Type | ||
| − | ! | + | ! Name |
| + | ! Notes | ||
|- | |- | ||
| + | | {{FourCC}} | ||
| + | | '''Overlay Type''' | ||
| + | | Possible values: | ||
| + | * <code>FRZN</code>: Overlay used when the character is frozen (eg. by Ice Missiles) | ||
| + | * <code>HYPR</code>: Overlay used when the character is in hypermode | ||
| + | * <code>ACID</code>: Overlay used when the character is in acid rain | ||
| + | * <code>XRAY</code>: Overlay used something related to the X-Ray Visor | ||
| + | |- | ||
| + | | Asset ID ([[CMDL (Metroid Prime)|CMDL]]) | ||
| + | | '''Overlay Model''' | ||
| + | | Model used by the overlay. | ||
| + | |- | ||
| + | | Asset ID ([[CSKR (File Format)|CSKR]]) | ||
| + | | '''Overlay Skin''' | ||
| + | | Skin that rigs the ''Overlay Model'' to the character's skeleton. | ||
| + | |} | ||
| + | |||
| + | === Particle Resource Data === | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Count | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | u32 | ||
| 1 | | 1 | ||
| − | | | + | | '''Generic Particle Count''' |
| − | | | + | | Count of generic particle systems. |
|- | |- | ||
| + | | Asset ID ([[PART (File Format)|PART]]) | ||
| + | | ''Generic Particle Count'' | ||
| + | | '''Generic Particle List''' | ||
| + | | List of generic particle systems used by this character. | ||
| + | |- | ||
| + | | u32 | ||
| 1 | | 1 | ||
| − | | | + | | '''Swoosh Particle Count''' |
| − | | {{unknown| | + | | Count of swoosh particle systems. |
| + | |- | ||
| + | | Asset ID ([[SWHC (File Format)|SWHC]]) | ||
| + | | ''Swoosh Particle Count'' | ||
| + | | '''Swoosh Particle List''' | ||
| + | | List of swoosh particle systems used by this character. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Electric Particle Count''' | ||
| + | | Count of electric particle systems. | ||
| + | |- | ||
| + | | Asset ID ([[ELSC_(File_Format)|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 (File Format)|SPSC]]) | ||
| + | | ''Spawn Particle Count'' | ||
| + | | '''Spawn Particle List''' | ||
| + | | List of spawn particle systems used by this character. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | {{unknown}} | ||
| + | | Always 0. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | {{unknown}} | ||
| + | | Always 0. | ||
| + | |} | ||
| + | |||
| + | === Anim Event Set === | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Count | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | {{unknown}} | ||
| + | | Likely animation ID that this set corresponds to | ||
|- | |- | ||
| − | |||
| string | | string | ||
| − | | ''' | + | | 1 |
| + | | '''Set Name''' | ||
| + | | Name of this event set. | ||
|- | |- | ||
| − | | | + | | u32 |
| − | | | + | | 1 |
| − | | ''' | + | | '''Effect Event Count''' |
| + | | Number of effect events in this set. | ||
|- | |- | ||
| − | + | | [[#Effect Event|Effect Event]] | |
| − | | [[ | + | | ''Effect Event Count'' |
| − | | ''' | + | | '''Effect Events''' |
| + | | Effect events contained in this set. | ||
|- | |- | ||
| − | | | + | | u32 |
| − | | | + | | 1 |
| − | | | + | | '''Sound Event Count''' |
| + | | Number of sound events in this set. | ||
|- | |- | ||
| − | | | + | | [[#Sound Event|Sound Event]] |
| − | | [[ | + | | ''Sound Event Count'' |
| − | | ''' | + | | '''Sound Events''' |
| + | | Sound events contained in this set. | ||
| + | |} | ||
| + | |||
| + | ==== Effect Event ==== | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | string | ||
| + | | '''Event Name''' | ||
| + | | Same as the event name in the event data. | ||
| + | |- | ||
| + | | [[Animation Events (File Format)#Effect Event|Effect Event]] | ||
| + | | '''Effect Event Data''' | ||
| + | | Actual event data. | ||
| + | |} | ||
| + | |||
| + | ==== Sound Event ==== | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | string | ||
| + | | '''Event Name''' | ||
| + | | Same as the event name in the event data. | ||
| + | |- | ||
| + | | [[Animation Events (File Format)#Sound Event|Sound Event]] | ||
| + | | '''Sound Event Data''' | ||
| + | | Actual event data. | ||
| + | |} | ||
| + | |||
| + | === Animation === | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | string | ||
| + | | '''Name''' | ||
| + | | Animation name. | ||
| + | |- | ||
| + | | [[Meta-Animation]] | ||
| + | | '''Animation''' | ||
| + | | Meta-animation data. | ||
| + | |} | ||
| + | |||
| + | === Animation Bounding Box === | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | Asset ID ([[ANIM (File Format)|ANIM]]) | ||
| + | | '''Animation Asset ID''' | ||
| + | | Asset ID of the animation that this bounding box corresponds to. | ||
| + | |- | ||
| + | | {{AABox}} | ||
| + | | '''Animation Bounding Box''' | ||
| + | | Bounding box of the animation when applied to this character. | ||
| + | |} | ||
| + | |||
| + | === Collision Primitive Set === | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Type | ||
| + | ! Count | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | string | ||
| + | | 1 | ||
| + | | '''Set Name''' | ||
| + | | Name of this primitive set. | ||
| + | |- | ||
| + | | u32 | ||
| + | | 1 | ||
| + | | '''Primitive Count''' | ||
| + | | Number of primitives contained in this set. | ||
| + | |- | ||
| + | | [[#Collision Primitive|Collision Primitive]] | ||
| + | | ''Primitive Count'' | ||
| + | | '''Primitive Array''' | ||
| + | | Array of collision primitives contained in this set. | ||
| + | |} | ||
| + | |||
| + | ==== Collision Primitive ==== | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Offset | ||
| + | ! Type | ||
| + | ! Name | ||
| + | ! Notes | ||
| + | |- | ||
| + | | 0x0 | ||
| + | | u32 | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x4 | ||
| + | | u32 | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x8 | ||
| + | | u32 | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0xC | ||
| + | | u32 | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x10 | ||
| + | | u32 | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x14 | ||
| + | | float | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x18 | ||
| + | | float | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x1C | ||
| + | | float | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x20 | ||
| + | | float | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x24 | ||
| + | | float | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x28 | ||
| + | | float | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x2C | ||
| + | | float | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x30 | ||
| + | | float | ||
| + | | {{unknown}} | ||
| + | | | ||
| + | |- | ||
| + | | 0x34 | ||
| + | | string | ||
| + | | '''Primitive Name''' | ||
| + | | Name of the collision primitive. | ||
|- | |- | ||
| − | | | + | | {{none}} |
| − | | | + | | float |
| − | | | + | | {{unknown}} |
| + | | | ||
|} | |} | ||
| + | [[Category:Metroid Prime 3 Prototype]] | ||
[[Category:Metroid Prime 3: Corruption]] | [[Category:Metroid Prime 3: Corruption]] | ||
| − | |||
[[Category:File Formats]] | [[Category:File Formats]] | ||
Latest revision as of 17:56, 7 March 2017
This article is for the CHAR format from Metroid Prime 3: Corruption. See CHAR (File Format) for the other revisions of this format.
The CHAR format defines an animation character; together with SAND, it serves as the successor to the ANCS format from Prime 1 and 2, and contains much of the same data. The main difference from ANCS is that the file no longer contains multiple characters; instead, every character gets its own CHAR file, and any animation data shared with other characters is stored in SAND.
Contents
Format
| Type | Count | Name | Notes |
|---|---|---|---|
| u8 | 1 | Version | Always 0x5. |
| u8 | 1 | Character ID | This is an ID unique to each character sharing the same SAND file. |
| string | 1 | Character Name | Name of the character. Likely included for debugging purposes. |
| Asset ID (CMDL) | 1 | Character Model | ID of the model used by this character. |
| Asset ID (CSKR) | 1 | Character Skin | ID of the skin used by this character. |
| u32 | 1 | Overlay Count | Number of overlay models. |
| Overlay Model | Overlay Count | Overlay Array | Array defining overlay models that this character can use. |
| Asset ID (CINF) | 1 | Character Skeleton | ID of the skeleton used by this character. |
| Asset ID (SAND) | 1 | Character Animation Data | ID of the animation data used by this character. |
| PAS Database | 1 | PAS Database | Not much known about how this data is used. |
| Particle Resource Data | 1 | Particle Resource Data | List of particle assets being used by this character. This primarily contains particles used by animation events. |
| u32 | 1 | Anim Event Set Count | Count of anim event sets used by this character. There'll be one set per animation that uses events (unless the animation has its events in the SAND file). |
| Anim Event Set | Anim Event Set Count | Anim Event Set Array | Array of animation event sets. |
| u32 | 1 | Animation Count | Count of animations used by this character. |
| Animation | Animation Count | Animations Array | Array of animations used by this character. |
| u32 | 1 | Animation Bounds Count | Count of animation bounding boxes in the next array. |
| Animation Bounding Box | Animation Bounds Count | Animation Bounding Box Array | Array of bounding boxes for animations used by this character. |
| bool | 1 | Unknown | |
| u32 | 1 | Unknown Array Count | Size of the following array. |
| bool | Unknown Array Count | Unknown Bool Array | Unknown array of bools. |
| u32 | 1 | Collision Primitive Set Count | Number of animation collision primitive sets. |
| Collision Primitive Set | Collision Primitive Set Count | Collision Primitive Sets | Array of collision primitives used by this character. |
| u32 | 1 | Sound Resource Count | Number of sound resources used by this character. |
| Asset ID (CAUD) | Sound Resource Count | Sound Resource List | List of sound resources used by this character. |
Overlay Model
| Type | Name | Notes |
|---|---|---|
| FourCC | Overlay Type | Possible values:
|
| Asset ID (CMDL) | Overlay Model | Model used by the overlay. |
| Asset ID (CSKR) | Overlay Skin | Skin that rigs the Overlay Model to the character's skeleton. |
Particle Resource Data
| Type | Count | Name | Notes |
|---|---|---|---|
| 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 | 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. |
| u32 | 1 | Unknown | Always 0. |
| u32 | 1 | Unknown | Always 0. |
Anim Event Set
| Type | Count | Name | Notes |
|---|---|---|---|
| u32 | 1 | Unknown | Likely animation ID that this set corresponds to |
| string | 1 | Set Name | Name of this event set. |
| u32 | 1 | Effect Event Count | Number of effect events in this set. |
| Effect Event | Effect Event Count | Effect Events | Effect events contained in this set. |
| u32 | 1 | Sound Event Count | Number of sound events in this set. |
| Sound Event | Sound Event Count | Sound Events | Sound events contained in this set. |
Effect Event
| Type | Name | Notes |
|---|---|---|
| string | Event Name | Same as the event name in the event data. |
| Effect Event | Effect Event Data | Actual event data. |
Sound Event
| Type | Name | Notes |
|---|---|---|
| string | Event Name | Same as the event name in the event data. |
| Sound Event | Sound Event Data | Actual event data. |
Animation
| Type | Name | Notes |
|---|---|---|
| string | Name | Animation name. |
| Meta-Animation | Animation | Meta-animation data. |
Animation Bounding Box
| Type | Name | Notes |
|---|---|---|
| Asset ID (ANIM) | Animation Asset ID | Asset ID of the animation that this bounding box corresponds to. |
| AABox | Animation Bounding Box | Bounding box of the animation when applied to this character. |
Collision Primitive Set
| Type | Count | Name | Notes |
|---|---|---|---|
| string | 1 | Set Name | Name of this primitive set. |
| u32 | 1 | Primitive Count | Number of primitives contained in this set. |
| Collision Primitive | Primitive Count | Primitive Array | Array of collision primitives contained in this set. |
Collision Primitive
| Offset | Type | Name | Notes |
|---|---|---|---|
| 0x0 | u32 | Unknown | |
| 0x4 | u32 | Unknown | |
| 0x8 | u32 | Unknown | |
| 0xC | u32 | Unknown | |
| 0x10 | u32 | Unknown | |
| 0x14 | float | Unknown | |
| 0x18 | float | Unknown | |
| 0x1C | float | Unknown | |
| 0x20 | float | Unknown | |
| 0x24 | float | Unknown | |
| 0x28 | float | Unknown | |
| 0x2C | float | Unknown | |
| 0x30 | float | Unknown | |
| 0x34 | string | Primitive Name | Name of the collision primitive. |
| float | Unknown |