Difference between revisions of "CHAR (Metroid Prime 3)"

From Retro Modding Wiki
Jump to: navigation, search
m (This format is not used in DKCR)
(Format)
 
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
The '''CHAR format''' defines animated characters; it's the successor to the [[ANCS (File Format)|ANCS format]] from Prime 1 and 2, and the format is extremely similar.
+
''This article is for the CHAR format from Metroid Prime 3: Corruption. See [[CHAR (File Format)]] for the other revisions of this format.''
  
{{research|major|This format hasn't been researched/documented very well yet, but it appears to be extremely similar to ANCS.}}
+
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 ==
  
=== Header ===
+
{| 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"
! Size
 
 
! Type
 
! Type
! Description
+
! 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
| char
+
| '''Generic Particle Count'''
| {{unknown|Unknown}}
+
| 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
| char
+
| '''Swoosh Particle Count'''
| {{unknown|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
| '''Character name'''
+
| 1
 +
| '''Set Name'''
 +
| Name of this event set.
 
|-
 
|-
| 8
+
| u32
| [[CMDL (File Format)|CMDL]]
+
| 1
| '''Character model'''
+
| '''Effect Event Count'''
 +
| Number of effect events in this set.
 
|-
 
|-
| 8
+
| [[#Effect Event|Effect Event]]
| [[CSKR (File Format)|CSKR]]
+
| ''Effect Event Count''
| '''Character skin'''
+
| '''Effect Events'''
 +
| Effect events contained in this set.
 
|-
 
|-
| 4
+
| u32
| long
+
| 1
| {{unknown|Unknown}}
+
| '''Sound Event Count'''
 +
| Number of sound events in this set.
 
|-
 
|-
| 8
+
| [[#Sound Event|Sound Event]]
| [[CINF (File Format)|CINF]]
+
| ''Sound Event Count''
| '''Character skeleton'''
+
| '''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.
 
|-
 
|-
| 8
+
| {{none}}
| [[SAND (File Format)|SAND]]
+
| float
| '''Character sand'''
+
| {{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.

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:
  • FRZN: Overlay used when the character is frozen (eg. by Ice Missiles)
  • HYPR: Overlay used when the character is in hypermode
  • ACID: Overlay used when the character is in acid rain
  • XRAY: Overlay used something related to the X-Ray Visor
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