Difference between revisions of "Animation Events (File Format)"
From Retro Modding Wiki
(→Effect Event) |
(→Event Base) |
||
(17 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{research|1|Some event parameters need research}} | {{research|1|Some event parameters need research}} | ||
− | + | '''Animation events''' control functional events synchronized to rigged animations for things like sound effects, visual effects, character messages, and playback control. The events can be found in different places in each game; in Prime 1, they are stored in their own file format, the '''EVNT format'''. In Echoes, the format is the same as Prime 1, but was merged in to the [[ANCS (File Format)|ANCS format]] instead of getting its own file. In Prime 3 and the Donkey Kong Country series, events can be found in the [[CHAR (File Format)|CHAR format]], as well as Prime 3's [[SAND (File Format)|SAND format]]. | |
− | + | ||
+ | == Format == | ||
+ | |||
+ | === File Structure (Metroid Prime 1/2) === | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! | + | ! Type |
− | ! | + | ! Count |
− | ! | + | ! Name |
− | !Notes | + | ! Notes |
|- | |- | ||
− | | | + | | u32 |
− | |1 | + | | 1 |
− | | | + | | '''Version''' |
− | | | + | | Either 1 or 2. Both can appear in Prime 1, while Echoes uses version 2 (the version number wasn't updated in Echoes despite format changes). |
|- | |- | ||
− | | | + | | u32 |
− | |1 | + | | 1 |
− | | | + | | '''Loop Event Count''' |
− | | | + | | |
|- | |- | ||
− | |[[#Loop Event|Loop Event]] | + | | [[#Loop Event|Loop Event]] |
− | | | + | | ''Loop Event Count'' |
− | | | + | | '''Loop Events''' |
− | | | + | | |
|- | |- | ||
− | | | + | | u32 |
− | |1 | + | | 1 |
− | | | + | | '''User Event Count''' |
− | | | + | | |
|- | |- | ||
− | |[[# | + | | [[#User Event|User Event]] |
− | | | + | | ''User Event Count'' |
− | | | + | | '''User Events''' |
− | | | + | | |
|- | |- | ||
− | | | + | | u32 |
− | |1 | + | | 1 |
− | | | + | | '''Effect Event Count''' |
− | | | + | | |
|- | |- | ||
− | |[[#Effect Event|Effect Event]] | + | | [[#Effect Event|Effect Event]] |
− | | | + | | ''Effect Event Count'' |
− | | | + | | '''Effect Events''' |
− | | | + | | |
|- | |- | ||
− | | | + | | u32 |
− | |1 | + | | 1 |
− | | | + | | '''Sound Event Count''' |
− | | | + | | Not present in version 1 |
|- | |- | ||
− | |[[#Sound Event|Sound Event]] | + | | [[#Sound Event|Sound Event]] |
− | | | + | | ''Sound Event Count'' |
− | | | + | | '''Sound Events''' |
− | | | + | | Not present in version 1 |
|} | |} | ||
=== Event Base === | === Event Base === | ||
+ | |||
+ | These parameters are common to every event type. | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! | + | ! Type |
− | ! | + | ! Count |
− | ! | + | ! Name |
− | ! | + | ! Notes |
− | ! | + | ! MP1/2 |
+ | ! MP3 | ||
|- | |- | ||
− | | | + | | u16 |
− | | | + | | 1 |
− | | | + | | {{unknown|Unknown}} |
− | | | + | | |
− | | | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | string |
− | | | + | | 1 |
− | | | + | | '''Event Name''' |
− | | | + | | |
− | | | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | u16 |
− | | | + | | 1 |
− | | | + | | '''Event Type''' |
− | + | | Enumerated event type (unknown values) | |
− | |Enumerated event type (unknown values) | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | [[Char Anim Time]] |
− | | | + | | 1 |
− | | | + | | '''Event Timestamp''' |
− | + | | Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event | |
− | |Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | u32 |
− | | | + | | 1 |
− | | | + | | '''Event Index''' |
− | | | + | | Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap) |
− | | | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | u32 |
− | | | + | | 1 |
− | | | + | | {{unknown}} |
− | | | + | | |
− | | | + | | {{nocheck}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | bool |
− | |1 | + | | 1 |
− | | | + | | {{unknown|Unknown}} |
− | | | + | | |
− | | | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | float |
− | | | + | | 1 |
− | | | + | | '''Weight''' |
− | | | + | | The likelihood of this event being selected |
− | | | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | s32 |
− | | | + | | 1 |
− | | | + | | '''Character Index''' |
− | | | + | | Character index that this event should trigger for. If -1, this event triggers for all characters. |
− | | | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | u32 |
− | | | + | | 1 |
− | | | + | | {{unknown}} |
− | | | + | | |
− | | | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | float | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | float | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Loop Event === | === Loop Event === | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! | + | ! Type |
− | ! | + | ! Count |
− | + | ! Name | |
− | ! | + | ! Notes |
− | !Notes | + | |
|- | |- | ||
− | + | | [[#Event Base|Event Base]] | |
− | + | | 1 | |
− | |[[#Event Base|Event Base]] | + | | '''Event Base''' |
− | | | + | | |
− | | | + | |
|- | |- | ||
− | | | + | | bool |
− | |1 | + | | 1 |
− | | | + | | {{unknown|Unknown}} |
− | | | + | | |
− | | | + | |
|} | |} | ||
− | === | + | === User Event === |
+ | |||
+ | ==== Metroid Prime 1/2 ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! | + | ! Type |
− | ! | + | ! Count |
− | + | ! Name | |
− | ! | + | ! Notes |
− | !Notes | + | |
|- | |- | ||
− | + | | [[#Event Base|Event Base]] | |
− | + | | 1 | |
− | |[[#Event Base|Event Base]] | + | | '''Event Base''' |
− | | | + | | |
− | | | + | |
|- | |- | ||
− | | | + | | u32 |
− | | | + | | 1 |
− | | | + | | '''User Event Type''' |
− | + | | Enumerated user event type (unknown values) | |
− | |Enumerated | + | |
|- | |- | ||
− | | | + | | string |
− | | | + | | 1 |
− | | | + | | '''Bone Name''' |
− | + | | Name of the [[CINF (File Format)|CINF]] bone to attach this event to (for applicable events) | |
− | |[[CINF (File Format)|CINF]] | + | |} |
+ | |||
+ | ==== Metroid Prime 3 ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Type | ||
+ | ! Count | ||
+ | ! Name | ||
+ | ! Notes | ||
+ | |- | ||
+ | | [[#Event Base|Event Base]] | ||
+ | | 1 | ||
+ | | '''Event Base''' | ||
+ | | | ||
+ | |- | ||
+ | | u8 | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | |- | ||
+ | | u16 | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | |- | ||
+ | | u16 | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
|} | |} | ||
Line 184: | Line 253: | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! | + | ! Type |
− | ! | + | ! Count |
− | ! | + | ! Name |
− | ! | + | ! Notes |
− | ! | + | ! MP1 |
+ | ! MP2 | ||
+ | ! MP3 | ||
|- | |- | ||
− | + | | [[#Event Base|Event Base]] | |
− | + | | 1 | |
− | |[[#Event Base|Event Base]] | + | | '''Event Base''' |
− | | | + | | |
− | | | + | | {{check}} |
+ | | {{check}} | ||
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | u32 |
− | | | + | | 1 |
− | | | + | | '''Frame Count''' |
− | + | | Number of frames to run the effect emitter for | |
− | |Number of frames to run effect | + | | {{check}} |
+ | | {{check}} | ||
+ | | {{nocheck}} | ||
|- | |- | ||
− | | | + | | {{FourCC}} |
− | | | + | | 1 |
− | | | + | | '''Effect Type''' |
− | + | | FourCC of effect's type; either [[PART (File Format)|PART]], [[SWHC (File Format)|SWHC]], or [[ELSC (File Format)|ELSC]] | |
− | |FourCC of effect's type | + | | {{check}} |
+ | | {{check}} | ||
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | Asset ID |
− | | | + | | 1 |
− | | | + | | '''Effect ID''' |
− | + | | Asset ID of the effect resource | |
− | |ID of | + | | {{check}} |
+ | | {{check}} | ||
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | string |
− | | | + | | 1 |
− | | | + | | '''Bone Name''' |
− | + | | Name of the [[CINF (File Format)|CINF]] bone to attach this effect to | |
− | |[[CINF (File Format)|CINF]] | + | | {{check}} |
+ | | {{nocheck}} | ||
+ | | {{nocheck}} | ||
|- | |- | ||
− | | | + | | u32 |
− | | | + | | 1 |
− | | | + | | '''Bone ID''' |
− | | | + | | ID of the [[CINF (File Format)|CINF]] bone to attach this effect to |
− | | | + | | {{nocheck}} |
+ | | {{check}} | ||
+ | | {{nocheck}} | ||
|- | |- | ||
− | | | + | | float |
− | | | + | | 1 |
− | | | + | | '''Effect Scale''' |
− | | | + | | Uniform scale of the particle effect |
− | |Enumerated transform-mode relating effect to actor's bone: | + | | {{check}} |
+ | | {{check}} | ||
+ | | {{nocheck}} | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | '''Transform Type''' | ||
+ | | Enumerated transform-mode relating effect to actor's bone: | ||
<ol start="0"> | <ol start="0"> | ||
− | <li> | + | <li>Emitter transformed to bone for initial frame, then retained</li> |
− | <li> | + | <li>Emitter continuously transformed to bone</li> |
− | <li>Entire effect (particle instances | + | <li>Entire effect (including particle instances) continuously transformed to bone</li> |
</ol> | </ol> | ||
+ | | {{check}} | ||
+ | | {{check}} | ||
+ | | {{nocheck}} | ||
+ | |- | ||
+ | | float | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | Probably effect scale? | ||
+ | | {{nocheck}} | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | Probably bone ID? | ||
+ | | {{nocheck}} | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
|} | |} | ||
=== Sound Event === | === Sound Event === | ||
+ | |||
+ | ==== Metroid Prime 1/2 ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! | + | ! Type |
− | ! | + | ! Count |
− | ! | + | ! Name |
− | ! | + | ! Notes |
− | ! | + | ! MP1 |
+ | ! MP2 | ||
|- | |- | ||
− | + | | [[#Event Base|Event Base]] | |
− | + | | 1 | |
− | |[[#Event Base|Event Base]] | + | | '''Event Base''' |
− | | | + | | |
− | | | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | u32 |
− | | | + | | 1 |
− | | | + | | '''Sound ID''' |
− | + | | Lower 16 bits are an [[AGSC (File Format)|AGSC]] sound ID indirected via the [[ATBL (File Format)|ATBL]]; most significant bit is a ''looped'' flag | |
− | |Lower 16 | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | float |
− | | | + | | 1 |
− | | | + | | '''Reference Amplitude''' |
− | + | | Reference amplitude for audio attenuation | |
− | |Reference amplitude for audio attenuation | + | | {{check}} |
+ | | {{check}} | ||
|- | |- | ||
− | | | + | | float |
− | | | + | | 1 |
− | | | + | | '''Reference Distance''' |
− | + | | Reference distance for audio attenuation | |
− | |Reference distance for audio attenuation | + | | {{check}} |
+ | | {{check}} | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | {{unknown|Unknown}} | ||
+ | | | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | u16 | ||
+ | | 1 | ||
+ | | {{unknown|Unknown}} | ||
+ | | | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | u16 | ||
+ | | 1 | ||
+ | | {{unknown|Unknown}} | ||
+ | | | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
+ | |- | ||
+ | | float | ||
+ | | 1 | ||
+ | | {{unknown|Unknown}} | ||
+ | | | ||
+ | | {{nocheck}} | ||
+ | | {{check}} | ||
|} | |} | ||
+ | |||
+ | ==== Metroid Prime 3 ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Type | ||
+ | ! Count | ||
+ | ! Name | ||
+ | ! Notes | ||
+ | |- | ||
+ | | [[#Event Base|Event Base]] | ||
+ | | 1 | ||
+ | | '''Event Base''' | ||
+ | | | ||
+ | |- | ||
+ | | Asset ID ([[CAUD (File Format)|CAUD]]) | ||
+ | | 1 | ||
+ | | '''Sound Effect''' | ||
+ | | Sound to be played. | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | |- | ||
+ | | u32 | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | |- | ||
+ | | [[#Unknown Typed Structure|Unknown Typed Structure]] | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | |- | ||
+ | | [[#Unknown Typed Structure|Unknown Typed Structure]] | ||
+ | | 1 | ||
+ | | {{unknown}} | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | ===== Unknown Typed Structure ===== | ||
+ | |||
+ | Contains a 32-bit type value, followed by either: | ||
+ | |||
+ | * Type 0: Nothing | ||
+ | * Type 1: A float | ||
+ | * Type 2: A [[Maya Spline]] | ||
[[Category:File Formats]] | [[Category:File Formats]] | ||
[[Category:Metroid Prime]] | [[Category:Metroid Prime]] | ||
[[Category:Metroid Prime 2: Echoes]] | [[Category:Metroid Prime 2: Echoes]] | ||
− |
Latest revision as of 16:01, 3 March 2017
This file format is almost completely documented Some event parameters need research |
Animation events control functional events synchronized to rigged animations for things like sound effects, visual effects, character messages, and playback control. The events can be found in different places in each game; in Prime 1, they are stored in their own file format, the EVNT format. In Echoes, the format is the same as Prime 1, but was merged in to the ANCS format instead of getting its own file. In Prime 3 and the Donkey Kong Country series, events can be found in the CHAR format, as well as Prime 3's SAND format.
Contents
Format
File Structure (Metroid Prime 1/2)
Type | Count | Name | Notes |
---|---|---|---|
u32 | 1 | Version | Either 1 or 2. Both can appear in Prime 1, while Echoes uses version 2 (the version number wasn't updated in Echoes despite format changes). |
u32 | 1 | Loop Event Count | |
Loop Event | Loop Event Count | Loop Events | |
u32 | 1 | User Event Count | |
User Event | User Event Count | User Events | |
u32 | 1 | Effect Event Count | |
Effect Event | Effect Event Count | Effect Events | |
u32 | 1 | Sound Event Count | Not present in version 1 |
Sound Event | Sound Event Count | Sound Events | Not present in version 1 |
Event Base
These parameters are common to every event type.
Type | Count | Name | Notes | MP1/2 | MP3 |
---|---|---|---|---|---|
u16 | 1 | Unknown | ✔ | ✔ | |
string | 1 | Event Name | ✔ | ✔ | |
u16 | 1 | Event Type | Enumerated event type (unknown values) | ✔ | ✔ |
Char Anim Time | 1 | Event Timestamp | Time (in seconds) from start of ANIM to trigger event | ✔ | ✔ |
u32 | 1 | Event Index | Index of event unique from other events (perhaps used to maintain a triggered bitmap) | ✔ | ✔ |
u32 | 1 | Unknown | ✖ | ✔ | |
bool | 1 | Unknown | ✔ | ✔ | |
float | 1 | Weight | The likelihood of this event being selected | ✔ | ✔ |
s32 | 1 | Character Index | Character index that this event should trigger for. If -1, this event triggers for all characters. | ✔ | ✔ |
u32 | 1 | Unknown | ✔ | ✔ | |
u32 | 1 | Unknown | ✖ | ✔ | |
u32 | 1 | Unknown | ✖ | ✔ | |
u32 | 1 | Unknown | ✖ | ✔ | |
float | 1 | Unknown | ✖ | ✔ | |
float | 1 | Unknown | ✖ | ✔ |
Loop Event
Type | Count | Name | Notes |
---|---|---|---|
Event Base | 1 | Event Base | |
bool | 1 | Unknown |
User Event
Metroid Prime 1/2
Type | Count | Name | Notes |
---|---|---|---|
Event Base | 1 | Event Base | |
u32 | 1 | User Event Type | Enumerated user event type (unknown values) |
string | 1 | Bone Name | Name of the CINF bone to attach this event to (for applicable events) |
Metroid Prime 3
Type | Count | Name | Notes |
---|---|---|---|
Event Base | 1 | Event Base | |
u8 | 1 | Unknown | |
u16 | 1 | Unknown | |
u16 | 1 | Unknown |
Effect Event
Type | Count | Name | Notes | MP1 | MP2 | MP3 |
---|---|---|---|---|---|---|
Event Base | 1 | Event Base | ✔ | ✔ | ✔ | |
u32 | 1 | Frame Count | Number of frames to run the effect emitter for | ✔ | ✔ | ✖ |
FourCC | 1 | Effect Type | FourCC of effect's type; either PART, SWHC, or ELSC | ✔ | ✔ | ✔ |
Asset ID | 1 | Effect ID | Asset ID of the effect resource | ✔ | ✔ | ✔ |
string | 1 | Bone Name | Name of the CINF bone to attach this effect to | ✔ | ✖ | ✖ |
u32 | 1 | Bone ID | ID of the CINF bone to attach this effect to | ✖ | ✔ | ✖ |
float | 1 | Effect Scale | Uniform scale of the particle effect | ✔ | ✔ | ✖ |
u32 | 1 | Transform Type | Enumerated transform-mode relating effect to actor's bone:
|
✔ | ✔ | ✖ |
float | 1 | Unknown | Probably effect scale? | ✖ | ✖ | ✔ |
u32 | 1 | Unknown | Probably bone ID? | ✖ | ✖ | ✔ |
Sound Event
Metroid Prime 1/2
Type | Count | Name | Notes | MP1 | MP2 |
---|---|---|---|---|---|
Event Base | 1 | Event Base | ✔ | ✔ | |
u32 | 1 | Sound ID | Lower 16 bits are an AGSC sound ID indirected via the ATBL; most significant bit is a looped flag | ✔ | ✔ |
float | 1 | Reference Amplitude | Reference amplitude for audio attenuation | ✔ | ✔ |
float | 1 | Reference Distance | Reference distance for audio attenuation | ✔ | ✔ |
u32 | 1 | Unknown | ✖ | ✔ | |
u16 | 1 | Unknown | ✖ | ✔ | |
u16 | 1 | Unknown | ✖ | ✔ | |
float | 1 | Unknown | ✖ | ✔ |
Metroid Prime 3
Type | Count | Name | Notes |
---|---|---|---|
Event Base | 1 | Event Base | |
Asset ID (CAUD) | 1 | Sound Effect | Sound to be played. |
u32 | 1 | Unknown | |
u32 | 1 | Unknown | |
Unknown Typed Structure | 1 | Unknown | |
Unknown Typed Structure | 1 | Unknown |
Unknown Typed Structure
Contains a 32-bit type value, followed by either:
- Type 0: Nothing
- Type 1: A float
- Type 2: A Maya Spline