Animation Events (File Format): Difference between revisions

From Retro Modding Wiki
Jump to navigation Jump to search
imported>Antidote
No edit summary
>Aruki
No edit summary
Line 1: Line 1:
{{research|1|Some event parameters need research}}
{{research|1|Some event parameters need research}}
The '''EVNT format''' is a companion to [[ANIM (File Format)|ANIM]] resources.
The '''EVNT format''' is a companion to [[ANIM (File Format)|ANIM]] resources. It controls functional events synchronized to rigged animations for things like sound effects, visual effects, character messages, and playback control. In Echoes, this format was merged in to the end of the [[ANCS (File Format)|ANCS]] format, but the structure of the file is mostly the same (with a couple changes).
Animators are able to synchronize functional events to rigged animations for things like sound effects, visual effects, character messages, and playback control.
 
== Format ==


{| class="wikitable"
{| class="wikitable"
!Data Type
! Type
!Element Count
! Count
!Identifier
! Name
!Notes
! Notes
|-
|-
|long
| u32
|1
| 1
|version
| '''Version'''
|0x1 or 0x2
| 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).
|-
|-
|long
| u32
|1
| 1
|loop_event_count
| '''Loop Event Count'''
|
|  
|-
|-
|[[#Loop Event|Loop Event]]
| [[#Loop Event|Loop Event]]
|loop_event_count
| ''Loop Event Count''
|loop_events
| '''Loop Events'''
|
|  
|-
|-
|long
| u32
|1
| 1
|uevt_event_count
| '''UEVT Event Count'''
|
|  
|-
|-
|[[#UEVT Event|UEVT Event]]
| [[#UEVT Event|UEVT Event]]
|uevt_event_count
| ''UEVT Event Count''
|uevt_events
| '''UEVT Events'''
|
|  
|-
|-
|long
| u32
|1
| 1
|effect_event_count
| '''Effect Event Count'''
|
|  
|-
|-
|[[#Effect Event|Effect Event]]
| [[#Effect Event|Effect Event]]
|effect_event_count
| ''Effect Event Count''
|effect_events
| '''Effect Events'''
|
|  
|-
|-
|long
| u32
|1
| 1
|sound_event_count
| '''Sound Event Count'''
|Version 0x2 only
| Not present in version 1
|-
|-
|[[#Sound Event|Sound Event]]
| [[#Sound Event|Sound Event]]
|sound_event_count
| ''Sound Event Count''
|sound_events
| '''Sound Events'''
|Version 0x2 only
| Not present in version 1
|}
|}


=== Event Base ===
=== Event Base ===
These parameters are common to every event type.


{| class="wikitable"
{| class="wikitable"
!Offset
! Type
!Length
! Count
!Data Type
! Name
!Identifier
! Notes
!Notes
|-
|-
|<start>
| u16
|2
| 1
|short
| {{unknown|Unknown}}
|unknown0
|  
|
|-
|-
|&#43;0x2
| string
|<null-term>
| 1
|string
| '''Event Name'''
|event_name
|  
|
|-
|-
|&#43;&#43;0x0
| u16
|2
| 1
|short
| '''Event Type'''
|event_type
| Enumerated event type (unknown values)
|Enumerated event type (unknown values)
|-
|-
|&#43;&#43;0x2
| float
|4
| 1
|float
| '''Event Timestamp'''
|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
|-
|-
|&#43;&#43;0x6
| u32
|4
| 1
|long
| {{unknown|Unknown}}
|unknown1
|  
|
|-
|-
|&#43;&#43;0xA
| u32
|4
| 1
|long
| '''Event Index'''
|event_index
| Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap)
|Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap)
|-
|-
|&#43;&#43;0xE
| bool
|1
| 1
|bool
| {{unknown|Unknown}}
|unknown2
|  
|Unknown Flag
|-
|-
|&#43;&#43;0xF
| float
|4
| 1
|float
| {{unknown|Unknown}}
|unknown3
|  
|
|-
|-
|&#43;&#43;0x13
| float
|4
| 1
|float
| {{unknown|Unknown}}
|unknown4
|  
|
|-
|&#43;&#43;0x17
|4
|long
|unknown5
|
|-
|-
| u32
| 1
| {{unknown|Unknown}}
|
|}
|}
'''RWK Note:''' The ''props'' string is formatted as:
<code>
Type:<event_type> <unknown1> <unknown2> <unknown3> <unknown4> <unknown5>
</code>


=== Loop Event ===
=== Loop Event ===


{| class="wikitable"
{| class="wikitable"
!Offset
! Type
!Length
! Count
!Data Type
! Name
!Identifier
! Notes
!Notes
|-
|-
|<start>
| [[#Event Base|Event Base]]
|<varies>
| 1
|[[#Event Base|Event Base]]
| '''Event Base'''
|event_base
|  
|
|-
|-
|&#43;0x0
| bool
|1
| 1
|bool
| {{unknown|Unknown}}
|unknown_flag
|  
|
|}
|}


Line 156: Line 139:


{| class="wikitable"
{| class="wikitable"
!Offset
! Type
!Length
! Count
!Data Type
! Name
!Identifier
! Notes
!Notes
|-
|-
|<start>
| [[#Event Base|Event Base]]
|<varies>
| 1
|[[#Event Base|Event Base]]
| '''Event Base'''
|event_base
|  
|
|-
|-
|&#43;0x0
| u32
|4
| 1
|long
| '''UEVT Type'''
|uevt_type
| Enumerated UEVT type (unknown values)
|Enumerated UEVT type (unknown values)
|-
|-
|&#43;0x4
| string
|<null-term>
| 1
|string
| '''Bone Name'''
|bone_name
| Name of the [[CINF (File Format)|CINF]] bone to attach this event to (for applicable events)
|[[CINF (File Format)|CINF]] Bone Name (for applicable events)
|}
|}


Line 184: Line 163:


{| class="wikitable"
{| class="wikitable"
!Offset
! Type
!Length
! Count
!Data Type
! Name
!Identifier
! Notes
!Notes
! MP1
! MP2
|-
|-
|<start>
| [[#Event Base|Event Base]]
|<varies>
| 1
|[[#Event Base|Event Base]]
| '''Event Base'''
|event_base
|
|
| {{check}}
| {{check}}
|-
|-
|&#43;0x0
| u32
|4
| 1
|long
| '''Frame Count'''
|frame_count
| Number of frames to run the effect emitter for
|Number of frames to run effect-emitter for
| {{check}}
| {{check}}
|-
|-
|&#43;0x4
| char
|4
| 4
|long
| '''Effect Type'''
|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 ([[PART (File Format)|PART]], [[SWHC (File Format)|SWHC]], [[ELSC (File Format)|ELSC]])
| {{check}}
| {{check}}
|-
|-
|&#43;0x8
| Asset ID
|4
| 1
|long
| '''Effect ID'''
|effect_ref
| Asset ID of the effect resource
|ID of [[Effect Script|effect]] resource
| {{check}}
| {{check}}
|-
|-
|&#43;0xC
| string
|<null-term>
| 1
|string
| '''Bone Name'''
|bone_name
| Name of the [[CINF (File Format)|CINF]] bone to attach this effect to
|[[CINF (File Format)|CINF]] Bone Name (for transforming effects)
| {{check}}
| {{nocheck}}
|-
|-
|&#43;&#43;0x0
| u32
|4
| 1
|float
| '''Bone ID'''
|effect_scale
| ID of the [[CINF (File Format)|CINF]] bone to attach this effect to
|Proportional-scale to apply with effect in scene
| {{nocheck}}
| {{check}}
|-
|-
|&#43;&#43;0x4
| float
|4
| 1
|long
| '''Effect Scale'''
|transform_type
| Uniform scale of the particle effect
|Enumerated transform-mode relating effect to actor's bone:
| {{check}}
| {{check}}
|-
| u32
| 1
| '''Transform Type'''
| Enumerated transform-mode relating effect to actor's bone:
<ol start="0">
<ol start="0">
<li>Effect-emitter transformed to bone for initial frame, then retained</li>
<li>Emitter transformed to bone for initial frame, then retained</li>
<li>Effect-emitter continuously transformed to bone</li>
<li>Emitter continuously transformed to bone</li>
<li>Entire effect (particle instances and all) continuously transformed to bone</li>
<li>Entire effect (including particle instances) continuously transformed to bone</li>
</ol>
</ol>
| {{check}}
| {{check}}
|}
|}


Line 241: Line 235:


{| class="wikitable"
{| class="wikitable"
!Offset
! Type
!Length
! Count
!Data Type
! Name
!Identifier
! Notes
!Notes
! MP1
! MP2
|-
| [[#Event Base|Event Base]]
| 1
| '''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
| {{check}}
| {{check}}
|-
| float
| 1
| '''Reference Amplitude'''
| Reference amplitude for audio attenuation
| {{check}}
| {{check}}
|-
| float
| 1
| '''Reference Distance'''
| Reference distance for audio attenuation
| {{check}}
| {{check}}
|-
|-
|<start>
| u32
|<varies>
| 1
|[[#Event Base|Event Base]]
| {{unknown|Unknown}}
|event_base
|  
|
| {{nocheck}}
| {{check}}
|-
|-
|&#43;0x0
| u16
|4
| 1
|long
| {{unknown|Unknown}}
|sound_id
|  
|Lower 16-bits are [[AGSC (File Format)|AGSC]] ''sound-id'' indirected via [[ATBL (File Format)|ATBL]]. Most-significant bit is a ''looped'' flag
| {{nocheck}}
| {{check}}
|-
|-
|&#43;0x4
| u16
|4
| 1
|float
| {{unknown|Unknown}}
|ref_amplitude
|  
|Reference amplitude for audio attenuation
| {{nocheck}}
| {{check}}
|-
|-
|&#43;0x8
| float
|4
| 1
|float
| {{unknown|Unknown}}
|ref_distance
|  
|Reference distance for audio attenuation
| {{nocheck}}
| {{check}}
|}
|}


Line 275: Line 302:
[[Category:Metroid Prime]]
[[Category:Metroid Prime]]
[[Category:Metroid Prime 2: Echoes]]
[[Category:Metroid Prime 2: Echoes]]
[[Category:Metroid Prime 3: Corruption]]

Revision as of 23:49, 15 August 2016

This file format is almost completely documented
Some event parameters need research

The EVNT format is a companion to ANIM resources. It controls functional events synchronized to rigged animations for things like sound effects, visual effects, character messages, and playback control. In Echoes, this format was merged in to the end of the ANCS format, but the structure of the file is mostly the same (with a couple changes).

Format

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 UEVT Event Count
UEVT Event UEVT Event Count UEVT 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
u16 1 Unknown
string 1 Event Name
u16 1 Event Type Enumerated event type (unknown values)
float 1 Event Timestamp Time (in seconds) from start of ANIM to trigger event
u32 1 Unknown
u32 1 Event Index Index of event unique from other events (perhaps used to maintain a triggered bitmap)
bool 1 Unknown
float 1 Unknown
float 1 Unknown
u32 1 Unknown

Loop Event

Type Count Name Notes
Event Base 1 Event Base
bool 1 Unknown

UEVT Event

Type Count Name Notes
Event Base 1 Event Base
u32 1 UEVT Type Enumerated UEVT type (unknown values)
string 1 Bone Name Name of the CINF bone to attach this event to (for applicable events)

Effect Event

Type Count Name Notes MP1 MP2
Event Base 1 Event Base
u32 1 Frame Count Number of frames to run the effect emitter for
char 4 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:
  1. Emitter transformed to bone for initial frame, then retained
  2. Emitter continuously transformed to bone
  3. Entire effect (including particle instances) continuously transformed to bone

Sound Event

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