<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.metroid2002.com/retromodding/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Antidote</id>
		<title>Retro Modding Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://www.metroid2002.com/retromodding/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Antidote"/>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/wiki/Special:Contributions/Antidote"/>
		<updated>2026-05-02T15:07:33Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=DCLN_(Metroid_Prime)&amp;diff=1949</id>
		<title>DCLN (Metroid Prime)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=DCLN_(Metroid_Prime)&amp;diff=1949"/>
				<updated>2018-08-17T01:24:45Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Collision Mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This article is for the DCLN format from the Metroid Prime series and Donkey Kong Country Returns. See [[DCLN (File Format)]] for other revisions of this format.''&lt;br /&gt;
&lt;br /&gt;
The '''DCLN format''' stores one or more collision meshes, each partitioned via an OBB tree. These are used as dynamic collision data for actors and platforms. Most of the format is shared with the [[Area Collision (File Format)|MREA format]], but there are some sections that are unique to DCLN.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The file can store multiple collision meshes; each one has its own chunk in the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Collision Mesh Count'''&lt;br /&gt;
| Number of collision meshes in the file.&lt;br /&gt;
|-&lt;br /&gt;
| [[#Collision Mesh|Collision Mesh]]&lt;br /&gt;
| ''Collision Mesh Count''&lt;br /&gt;
| '''Collision Mesh Array'''&lt;br /&gt;
| Array of collision meshes.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=4 {{unknown|End of File}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Collision Mesh ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1/2/3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Magic'''&lt;br /&gt;
| Always &amp;lt;code&amp;gt;0xDEAFBABE&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Version'''&lt;br /&gt;
| Possible values:&lt;br /&gt;
* 0x2: Metroid Prime&lt;br /&gt;
* 0x4: Metroid Prime 2/3&lt;br /&gt;
* 0x5: Donkey Kong Country Returns&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| {{AABox}}&lt;br /&gt;
| 1&lt;br /&gt;
| '''Mesh Bounding Box'''&lt;br /&gt;
| Bounding box of the collision mesh.&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| {{none}}&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Internal Memory Allocation Size'''&lt;br /&gt;
| Used to build CNode/CLeafData from the stored representation. Each node/leaf's size is aligned to the nearest 4-byte boundary.&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| {{none}}&lt;br /&gt;
| [[Collision Index Data (File Format)|Collision Index Data]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Collision Index Data'''&lt;br /&gt;
| Index data for the collision mesh. This data section is what actually defines the collision mesh itself. This part of the format is shared with [[Area Collision (File Format)|MREA]].&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| {{none}}&lt;br /&gt;
| [[#OBB Tree|OBB Tree]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Collision OBB Tree'''&lt;br /&gt;
| OBB tree for the collision mesh. This is used to quickly locate triangles that an actor could potentially be colliding with.&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| colspan=7 {{unknown|End of Collision Mesh}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== OBB Tree ====&lt;br /&gt;
&lt;br /&gt;
{{todo|OBB tree format documentation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime Demo]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2 Demo]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3 Prototype]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=DCLN_(Metroid_Prime)&amp;diff=1948</id>
		<title>DCLN (Metroid Prime)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=DCLN_(Metroid_Prime)&amp;diff=1948"/>
				<updated>2018-08-17T01:22:52Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Collision Mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This article is for the DCLN format from the Metroid Prime series and Donkey Kong Country Returns. See [[DCLN (File Format)]] for other revisions of this format.''&lt;br /&gt;
&lt;br /&gt;
The '''DCLN format''' stores one or more collision meshes, each partitioned via an OBB tree. These are used as dynamic collision data for actors and platforms. Most of the format is shared with the [[Area Collision (File Format)|MREA format]], but there are some sections that are unique to DCLN.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The file can store multiple collision meshes; each one has its own chunk in the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Collision Mesh Count'''&lt;br /&gt;
| Number of collision meshes in the file.&lt;br /&gt;
|-&lt;br /&gt;
| [[#Collision Mesh|Collision Mesh]]&lt;br /&gt;
| ''Collision Mesh Count''&lt;br /&gt;
| '''Collision Mesh Array'''&lt;br /&gt;
| Array of collision meshes.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=4 {{unknown|End of File}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Collision Mesh ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1/2/3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Magic'''&lt;br /&gt;
| Always &amp;lt;code&amp;gt;0xDEAFBABE&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Version'''&lt;br /&gt;
| Possible values:&lt;br /&gt;
* 0x2: Metroid Prime&lt;br /&gt;
* 0x4: Metroid Prime 2/3&lt;br /&gt;
* 0x5: Donkey Kong Country Returns&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| {{AABox}}&lt;br /&gt;
| 1&lt;br /&gt;
| '''Mesh Bounding Box'''&lt;br /&gt;
| Bounding box of the collision mesh.&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| {{none}}&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Memory Allocation Size'''&lt;br /&gt;
| Internal memory allocation size, used to build CNode/CLeafData from the stored representation. Each node/leaf is aligned to the nearest 4-byte boundary.&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| {{none}}&lt;br /&gt;
| [[Collision Index Data (File Format)|Collision Index Data]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Collision Index Data'''&lt;br /&gt;
| Index data for the collision mesh. This data section is what actually defines the collision mesh itself. This part of the format is shared with [[Area Collision (File Format)|MREA]].&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| {{none}}&lt;br /&gt;
| [[#OBB Tree|OBB Tree]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Collision OBB Tree'''&lt;br /&gt;
| OBB tree for the collision mesh. This is used to quickly locate triangles that an actor could potentially be colliding with.&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| colspan=7 {{unknown|End of Collision Mesh}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== OBB Tree ====&lt;br /&gt;
&lt;br /&gt;
{{todo|OBB tree format documentation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime Demo]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2 Demo]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3 Prototype]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=AGSC_(File_Format)&amp;diff=1937</id>
		<title>AGSC (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=AGSC_(File_Format)&amp;diff=1937"/>
				<updated>2018-07-18T02:33:37Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* SoundMacros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''AGSC''' is the sound effect format for Metroid Prime and Metroid Prime 2: Echoes. Each AGSC file contains a group of sound effects. The first two Metroid Prime games utilize the MusyX audio engine created by Factor5 and as a result, AGSC files are essentially just embedded MusyX files. &lt;br /&gt;
&lt;br /&gt;
The audio codec used in AGSC is the standard GameCube DSP-ADPCM codec, but MusyX itself also offers uncompressed PCM as an option.&lt;br /&gt;
&lt;br /&gt;
{{todo|Better descriptions for how SoundMacros work and a description for what each command does.}}&lt;br /&gt;
{{research|minor|The proj and sdir chunks have a couple unknowns left.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The AGSC format is essentially four data chunks combined into one resource, each of which is a standard MusyX file. Of the four data chunks (pool, proj, samp, and sdir), there's one for sound engine scripts, one for sound properties, one for actual ADPCM sound data, and one for sound metadata. The main difference between Prime 1 and 2 is the header, and some slight changes in the way the four chunks are organized. In Metroid Prime, each chunk begins with its own size value; in Metroid Prime 2, every chunk instead has its size listed at the beginning of the file, at the end of the header. In addition, in Metroid Prime, the third chunk is samp, and the fourth is sdir; in Metroid Prime 2, it's the other way around.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| '''D'''&lt;br /&gt;
| '''Audio Directory'''. Always &amp;quot;Audio/&amp;quot;. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 + D&lt;br /&gt;
| '''N'''&lt;br /&gt;
| '''Audio Group Name'''. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 + D + N&lt;br /&gt;
|colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 2 ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''; always 1}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| D&lt;br /&gt;
| '''Audio Group Name'''. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 + D&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group ID'''; 0xFFFF if unspecified&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Pool size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xA + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Project size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xE + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample directory size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 + D&lt;br /&gt;
| colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pool ===&lt;br /&gt;
&lt;br /&gt;
The Pool chunk contains sub-chunk tables for SoundMacros, ADSR, keymaps, and layers, if applicable. It starts with a 16-byte header before the different data tables begin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''SoundMacros Offset''' (always 0x10)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Tables Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''Keymaps Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layers Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ObjectID ====&lt;br /&gt;
&lt;br /&gt;
After this are four tables of objects. Each object is identified with a 16-bit '''ObjectID''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound object type''' &amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SoundMacro&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Table&amp;lt;/li&amp;gt;&amp;lt;li value=4&amp;gt;Keymap&amp;lt;/li&amp;gt;&amp;lt;li value=8&amp;gt;Layer&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1&lt;br /&gt;
| '''Unique ID''' (per type namespacing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| colspan=2 {{unknown|End of ObjectID}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is the ID structure produced by MusyX data export tool used for ''Metroid Prime'' &lt;br /&gt;
(which allocates all group ObjectIDs on export). The ObjectID structure is actually an arbitrary 16-bits in MusyX&lt;br /&gt;
(limited to 14-bit uniqueness). Based on findings from other games, this upper-byte type source is not 100% reliable,&lt;br /&gt;
since Factor5 updated the tool during the console's lifetime.&lt;br /&gt;
&lt;br /&gt;
==== SoundMacros ====&lt;br /&gt;
&lt;br /&gt;
The first Pool table denotes MusyX's '''SoundMacros''', small scripts that apply various effects on the sounds in the game.  Each macro is composed of a header followed by a number of commands; each command specifies its type through a single-byte command ID, then specifies the parameters of that particular command, which vary.&lt;br /&gt;
&lt;br /&gt;
The header of each SoundMacro is eight bytes, and is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size''' ''(note: includes the size value itself)''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''SoundMacro ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|Commands begin}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On the commands, each 4 bytes were originally little endian, but have been swapped to big endian in the AGSC files (despite not being longs). To read the data as originally formatted, every four bytes needs to be byte-swapped. Each command is 8 bytes, and is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Command ID''' (varies; there are 79 known commands in the MusyX audio engine.)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 7&lt;br /&gt;
| '''Command arguments''' (varies between commands)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SoundMacro will continue with commands until it terminates when the END command is executed.  The command ID for END is 0 and has null command arguments; the next SoundMacro begins after reading it. &lt;br /&gt;
&lt;br /&gt;
These are the possible commands:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;2%&amp;quot; | ID&lt;br /&gt;
! width=&amp;quot;7%&amp;quot; | Name&lt;br /&gt;
! colspan=&amp;quot;91%&amp;quot; | Arguments&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| STOP&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| SPLITKEY&lt;br /&gt;
| Keynumber&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| SPLITVEL&lt;br /&gt;
| Velocity&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| WAIT_TICKS&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sampleend&lt;br /&gt;
| Absolute&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| LOOP&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sampleend&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Times&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| GOTO&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| WAIT_MS&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sample end&lt;br /&gt;
| Absolute&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| PLAYMACRO&lt;br /&gt;
| Addnote&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| Priority&lt;br /&gt;
| MaxVoices&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| SENDKEYOFF&lt;br /&gt;
| Variable&lt;br /&gt;
| Last started&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| SPLITMOD&lt;br /&gt;
| Mod value&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| PIANOPAN&lt;br /&gt;
| Scale&lt;br /&gt;
| Centerkey&lt;br /&gt;
| Centerpan&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| SETADSR&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (ADSR)&lt;br /&gt;
| DLS mode&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| SCALEVOLUME&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| PANNING&lt;br /&gt;
| Pan position&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Time ms&lt;br /&gt;
| Width&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xF&lt;br /&gt;
| ENVELOPE&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| STARTSAMPLE&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample-ID&lt;br /&gt;
| Mode&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| STOPSAMPLE&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| KEYOFF&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| SPLITRND&lt;br /&gt;
| RND&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| FADE-IN&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x15&lt;br /&gt;
| SPANNING&lt;br /&gt;
| Pan position&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Time ms&lt;br /&gt;
| Width&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| SETADSRCTRL&lt;br /&gt;
| Attack&lt;br /&gt;
| Decay&lt;br /&gt;
| Sustain&lt;br /&gt;
| Relase&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| RNDNOTE&lt;br /&gt;
| Note Lo&lt;br /&gt;
| Detune&lt;br /&gt;
| Note Hi&lt;br /&gt;
| Fixed/Free&lt;br /&gt;
| Abs/Rel&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| ADDNOTE&lt;br /&gt;
| Add&lt;br /&gt;
| Detune&lt;br /&gt;
| org key&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| SETNOTE&lt;br /&gt;
| Key&lt;br /&gt;
| Detune&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| LASTNOTE&lt;br /&gt;
| Add&lt;br /&gt;
| detune&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| PORTAMENTO&lt;br /&gt;
| Port. State&lt;br /&gt;
| Port. Type&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| VIBRATO&lt;br /&gt;
| Level note&lt;br /&gt;
| Level fine&lt;br /&gt;
| Modwheel flag&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D&lt;br /&gt;
| PITCHSWEEP1&lt;br /&gt;
| Times&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E&lt;br /&gt;
| PITCHSWEEP2&lt;br /&gt;
| Times&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| SETPITCH&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Frequency (Hz)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Fine&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| SETPITCHADSR&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (ADSR)&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| Note range&lt;br /&gt;
| Detune range&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x21&lt;br /&gt;
| SCALEVOLUME DLS&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scale&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| MOD2VIBRANGE&lt;br /&gt;
| Key range&lt;br /&gt;
| Cent range&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x23&lt;br /&gt;
| SETUP TREMOLO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Tremolo scale&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Modw. add scale&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| RETURN&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x25&lt;br /&gt;
| GOSUB&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| TRAP_EVENT&lt;br /&gt;
| Event&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x29&lt;br /&gt;
| UNTRAP_EVENT&lt;br /&gt;
| Event&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A&lt;br /&gt;
| SEND_MESSAGE&lt;br /&gt;
| IsVar&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Macro&lt;br /&gt;
| VID&lt;br /&gt;
| Variable&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B&lt;br /&gt;
| GET_MESSAGE&lt;br /&gt;
| Variable&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| GET_VID&lt;br /&gt;
| Variable&lt;br /&gt;
| PLAY_MACRO&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| ADDAGECOUNT&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x31&lt;br /&gt;
| SETAGECOUNT&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Counter&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x32&lt;br /&gt;
| SENDFLAG&lt;br /&gt;
| Flag-ID&lt;br /&gt;
| Value&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x33&lt;br /&gt;
| PITCHWHEELR&lt;br /&gt;
| Range up&lt;br /&gt;
| Range down&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x36&lt;br /&gt;
| SETPRIORITY&lt;br /&gt;
| Prio&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x37&lt;br /&gt;
| ADDPRIORITY&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| AGECNTSPEED&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Time&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| AGECNTVEL&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | AGE Base&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | AGE Scale&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| VOL_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x41&lt;br /&gt;
| PAN_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x42&lt;br /&gt;
| PitchW_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x43&lt;br /&gt;
| ModW_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| PEDAL_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x45&lt;br /&gt;
| PORTA_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| REVERB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x47&lt;br /&gt;
| SPAN_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| DOPPLER_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x49&lt;br /&gt;
| TREMOLO_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A&lt;br /&gt;
| PREA_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B&lt;br /&gt;
| PREB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| POSTB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4D&lt;br /&gt;
| AUXAFX_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E&lt;br /&gt;
| AUXBFX_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| SETUP_LFO&lt;br /&gt;
| LFO Nr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Period in ms&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| MODE_SELECT&lt;br /&gt;
| DLS vol&lt;br /&gt;
| ITD&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x59&lt;br /&gt;
| SET_KEYGROUP&lt;br /&gt;
| group&lt;br /&gt;
| kill&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5A&lt;br /&gt;
| SRCMODE_SELECT&lt;br /&gt;
| SRC type&lt;br /&gt;
| Type 0 SRC filter&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| ADD_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B +&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| SUB_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B -&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x62&lt;br /&gt;
| MUL_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B *&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x63&lt;br /&gt;
| DIV_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B /&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| ADDI_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B +&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Immediate&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x65&lt;br /&gt;
| SET_VAR&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Immediate&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| IF_EQUAL&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A ==&lt;br /&gt;
| Ctrl&lt;br /&gt;
| B&lt;br /&gt;
| Not&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro Step&lt;br /&gt;
|-&lt;br /&gt;
| 0x71&lt;br /&gt;
| IF_LESS&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A &amp;lt;&lt;br /&gt;
| Ctrl&lt;br /&gt;
| B&lt;br /&gt;
| Not&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro Step&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| END&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the last soundmacro, the table terminated by a value of 0xFFFF.&lt;br /&gt;
&lt;br /&gt;
==== Tables ====&lt;br /&gt;
&lt;br /&gt;
'''Tables''' have two functions: for defining curves for volume scaling, or to be used as ADSR envelopes.&lt;br /&gt;
&lt;br /&gt;
The tables continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Table ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|ADSR/Curve data}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== ADSR =====&lt;br /&gt;
&lt;br /&gt;
When the size of the table data is exactly 8, it may represent ADSR envelopes with this structure:&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All fields of the envelope are ''little endian''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Attack time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Decay time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sustain'''; percentage mapped between [0x0,0x1000]&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Release time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of ADSR}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== DLS ADSR =====&lt;br /&gt;
&lt;br /&gt;
MusyX can also express more advanced envelopes using a modified [[wikipedia:DLS format|DLS]] representation.&lt;br /&gt;
This representation includes scaling coefficients to respond to played note and velocity &lt;br /&gt;
(so slamming down a key harder plays longer).&lt;br /&gt;
&lt;br /&gt;
The attack and decay members are expressed in ''time-cents''. This may be converted to seconds using:&lt;br /&gt;
&amp;lt;code&amp;gt;2&amp;lt;sup&amp;gt;timecents / (1200.0 * 65536.0)&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attack and decay scale members are expressed as 0.1% increments in 16.16 fixed-point.&lt;br /&gt;
This may be converted to a normalized factor using:&lt;br /&gt;
&amp;lt;code&amp;gt;scale / (1000.0 * 65536.0)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All fields of the envelope are ''little endian''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Attack time'''; in time-cents&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Decay time'''; in time-cents&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sustain'''; percentage mapped between [0x0,0x1000]&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| 2&lt;br /&gt;
| '''Release'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Velocity to Attack Scale'''; 0.1% increments as 16.16 fixed-point&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Key to Decay Scale'''; 0.1% increments as 16.16 fixed-point&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| colspan=2 {{unknown|End of DLS ADSR}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Curves =====&lt;br /&gt;
&lt;br /&gt;
To express a volume curve, the table data is simply an arbitrarily-sized table of &amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt; values (although typically in MIDI range [0,127])&lt;br /&gt;
&lt;br /&gt;
==== Keymaps ====&lt;br /&gt;
&lt;br /&gt;
'''Keymaps''' are swappable, fixed-length tables mapping 128 MIDI keys to sound-producing objects.&lt;br /&gt;
&lt;br /&gt;
The keymaps continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''; (usually 0x1032)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Keymap ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|128 Keymap entries}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Keymap Entry =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transpose'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pan'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{Unknown|Padded to 8 bytes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Layers ====&lt;br /&gt;
&lt;br /&gt;
'''Layers''' are one-to-many, ranged keyboard mappings to sound-producing objects.&lt;br /&gt;
&lt;br /&gt;
The layers continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Layer ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|Layer data}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Layer Data =====&lt;br /&gt;
&lt;br /&gt;
Within the layer data, there is a '''u32 count''' of layer range structs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Key Lo'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Key Hi'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transpose'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Volume'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 1&lt;br /&gt;
| '''Surround Pan'''; (0: extreme forward, 64: center, 127: extreme rearward)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pan'''; (0: extreme left, 64: center, 127: extreme right)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| colspan=2 {{Unknown|Padded to 12 bytes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The entire Pool chunk is terminated by a value of 0xFFFF.&lt;br /&gt;
&lt;br /&gt;
=== Project ===&lt;br /&gt;
&lt;br /&gt;
The Project properties chunk contains values for the sounds, including priority, polyphony, volume, etc.&lt;br /&gt;
&lt;br /&gt;
Structurally, the Project is the root of the Audio Group tree, defining one or more ''Song Groups'' or ''SFX Groups''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Group end offset''' (points to next group in project)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group Type'''; 0 for SongGroup (for use with [[CSNG (File Format)|CSNG]]), 1 for SFXGroup.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''SoundMacro ID table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample ID table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Tables table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Keymaps table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layers table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| '''Normal page table''' (SongGroup) / '''SFX table offset''' (SFXGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 4&lt;br /&gt;
| '''Drum page table offset''' (SongGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 4&lt;br /&gt;
| '''MIDI Setup table offset''' (SongGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| colspan=2 {{unknown|End of group header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the header are a number of data tables. &lt;br /&gt;
&lt;br /&gt;
==== SoundMacro ID Table ====&lt;br /&gt;
&lt;br /&gt;
This is a ranged-table of shorts; there's no count value, so it's terminated with a value of 0xFFFF. It's a list of SoundMacro IDs present in the file. Contiguous ranges are expressed by IDs with most-significant bit set (0x8000). The range begins on the marked ID and incrementally reaches the next ID in the list, including that ID. All other IDs are singular.&lt;br /&gt;
&lt;br /&gt;
==== Sample ID / Table / Keymap / Layer Tables ====&lt;br /&gt;
&lt;br /&gt;
These function the same way as the SoundMacro ID table, but indexes other types of entities instead.&lt;br /&gt;
&lt;br /&gt;
==== Normal / Drum Page Entry ====&lt;br /&gt;
&lt;br /&gt;
Used to map [https://www.midi.org/specifications/item/gm-level-1-sound-set General MIDI program numbers] (instruments)&lt;br /&gt;
to sound entities (macros, keymaps, layers)&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority'''; voices are limited, so priority is used to play more important sounds over others&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Max number of voices'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''GM Program Number'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SFX Entry ====&lt;br /&gt;
&lt;br /&gt;
Used to map auto-generated &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; IDs (used by game code) to sound entities (macros, keymaps, layers)&lt;br /&gt;
&lt;br /&gt;
This table begins with a 16-bit count value, then 16 bits of padding. Each entry in the table is 10 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''DefineID'''; referenced by game code&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority'''; voices are limited, so priority is used to play more important sounds over others&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Max number of voices'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 1&lt;br /&gt;
| '''Definite Velocity'''; volume (usually 7F)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 1&lt;br /&gt;
| '''Panning'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2&lt;br /&gt;
| '''Definite Key'''; The default pitch (usually 0x3C00... the second byte may possibly be the MIDI channel)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MIDI Setup Entry ====&lt;br /&gt;
&lt;br /&gt;
Table of fixed-length tables to map all 16 MIDI channels to program numbers &lt;br /&gt;
(in-turn resolving to sound entities via the page table).&lt;br /&gt;
&lt;br /&gt;
Multiple MIDI Setups may be created to support Song data requiring totally different&lt;br /&gt;
banks of instruments.&lt;br /&gt;
&lt;br /&gt;
Each MIDI Setup starts with a u16 '''MIDI-Setup-ID''', then 16-bits padding, then 16 entries of the following structure (one for each channel):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Program Number'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1&lt;br /&gt;
| '''Volume'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Panning'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reverb'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Chorus'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MIDI setups continue until the ''group end offset'' is reached.&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&lt;br /&gt;
The Sample chunk is all the sound data encoded using the standard Gamecube DSP ADPCM codec.  It can be decoded the same way as a [[DSP (File Format)|DSP]] file. Each sound's size is padded to 32 bytes before the next sound's data begins.&lt;br /&gt;
&lt;br /&gt;
=== Sample Directory ===&lt;br /&gt;
&lt;br /&gt;
The Sample Directory chunk (chunk 4 in Metroid Prime, chunk 3 in Metroid Prime 2) is made up of two sets of tables. The structure of both these tables is identical between both games.&lt;br /&gt;
&lt;br /&gt;
==== Table A ====&lt;br /&gt;
&lt;br /&gt;
The first metadata table has one entry per sound, and is terminated with 0xFFFFFFFF; since there's no known sound count anywhere in the file, the only way to read this correctly is to read until you reach the terminator value. Each entry is 0x20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''; always 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sound start offset''', relative to the start of the ADPCM chunk&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 1&lt;br /&gt;
| '''Base Note'''; Corresponds to the MIDI note played in the sample, at the native sample-rate (which MusyX obtains from the INST chunk of .aiff files or SMPL chunk of .wav files, along with looping info). To play at a specified pitch in [[wikipedia:Cent (music)|cents]], set the playback sample rate using this formula: &amp;lt;code&amp;gt;sampleRate * 2&amp;lt;sup&amp;gt;((pitch - baseNote * 100) / 1200.0)&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| 1&lt;br /&gt;
| '''Padding'''; always 0&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sample rate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 1&lt;br /&gt;
| '''Audio format''' &amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;li&amp;gt;DSP-ADPCM&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;DSP-ADPCM (Drum Sample)&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;PCM&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;N64-VADPCM (Legacy Format)&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 3&lt;br /&gt;
| '''Number of samples'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Loop start sample'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| '''Loop length''', in samples. To get the loop end sample, add this to the start sample and subtract 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| '''Table B entry offset''', relative to the start of the sound metadata chunk&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Table B ====&lt;br /&gt;
&lt;br /&gt;
These are accessed through the offsets in table A's entries; note that it might not match the sound count, because the same entry in this table can be used with multiple sounds. Each entry is 0x28 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| {{unknown|'''Unknown'''; always 8}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Initial predictor/scale''' (matches first frame header)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop predictor/scale''' (matches loop start frame header)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Loop context sample history 2'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Loop context sample history 1'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2 &amp;amp;times; 16&lt;br /&gt;
| '''Decode coefficients'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/0B9MLV21H7SDvemgwN1daYnliSjA/view?usp=sharing Prime Audio Decoder] by Aruki will dump all sound effects contained in a given AGSC file.&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Audio]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=AGSC_(File_Format)&amp;diff=1936</id>
		<title>AGSC (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=AGSC_(File_Format)&amp;diff=1936"/>
				<updated>2018-07-18T02:33:12Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''AGSC''' is the sound effect format for Metroid Prime and Metroid Prime 2: Echoes. Each AGSC file contains a group of sound effects. The first two Metroid Prime games utilize the MusyX audio engine created by Factor5 and as a result, AGSC files are essentially just embedded MusyX files. &lt;br /&gt;
&lt;br /&gt;
The audio codec used in AGSC is the standard GameCube DSP-ADPCM codec, but MusyX itself also offers uncompressed PCM as an option.&lt;br /&gt;
&lt;br /&gt;
{{todo|Better descriptions for how SoundMacros work and a description for what each command does.}}&lt;br /&gt;
{{research|minor|The proj and sdir chunks have a couple unknowns left.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The AGSC format is essentially four data chunks combined into one resource, each of which is a standard MusyX file. Of the four data chunks (pool, proj, samp, and sdir), there's one for sound engine scripts, one for sound properties, one for actual ADPCM sound data, and one for sound metadata. The main difference between Prime 1 and 2 is the header, and some slight changes in the way the four chunks are organized. In Metroid Prime, each chunk begins with its own size value; in Metroid Prime 2, every chunk instead has its size listed at the beginning of the file, at the end of the header. In addition, in Metroid Prime, the third chunk is samp, and the fourth is sdir; in Metroid Prime 2, it's the other way around.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| '''D'''&lt;br /&gt;
| '''Audio Directory'''. Always &amp;quot;Audio/&amp;quot;. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 + D&lt;br /&gt;
| '''N'''&lt;br /&gt;
| '''Audio Group Name'''. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 + D + N&lt;br /&gt;
|colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 2 ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''; always 1}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| D&lt;br /&gt;
| '''Audio Group Name'''. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 + D&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group ID'''; 0xFFFF if unspecified&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Pool size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xA + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Project size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xE + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample directory size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 + D&lt;br /&gt;
| colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pool ===&lt;br /&gt;
&lt;br /&gt;
The Pool chunk contains sub-chunk tables for SoundMacros, ADSR, keymaps, and layers, if applicable. It starts with a 16-byte header before the different data tables begin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''SoundMacros Offset''' (always 0x10)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Tables Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''Keymaps Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layers Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ObjectID ====&lt;br /&gt;
&lt;br /&gt;
After this are four tables of objects. Each object is identified with a 16-bit '''ObjectID''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound object type''' &amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SoundMacro&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Table&amp;lt;/li&amp;gt;&amp;lt;li value=4&amp;gt;Keymap&amp;lt;/li&amp;gt;&amp;lt;li value=8&amp;gt;Layer&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1&lt;br /&gt;
| '''Unique ID''' (per type namespacing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| colspan=2 {{unknown|End of ObjectID}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is the ID structure produced by MusyX data export tool used for ''Metroid Prime'' &lt;br /&gt;
(which allocates all group ObjectIDs on export). The ObjectID structure is actually an arbitrary 16-bits in MusyX&lt;br /&gt;
(limited to 14-bit uniqueness). Based on findings from other games, this upper-byte type source is not 100% reliable,&lt;br /&gt;
since Factor5 updated the tool during the console's lifetime.&lt;br /&gt;
&lt;br /&gt;
==== SoundMacros ====&lt;br /&gt;
&lt;br /&gt;
The first Pool table denotes MusyX's '''SoundMacros''', small scripts that apply various effects on the sounds in the game.  Each macro is composed of a header followed by a number of commands; each command specifies its type through a single-byte command ID, then specifies the parameters of that particular command, which vary.&lt;br /&gt;
&lt;br /&gt;
The header of each SoundMacro is eight bytes, and is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size''' ''(note: includes the size value itself)''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''SoundMacro ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|Commands begin}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On the commands, each 4 bytes were originally little endian, but have been swapped to big endian in the AGSC files (despite not being longs). To read the data as originally formatted, every four bytes needs to be byte-swapped. Each command is 8 bytes, and is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Command ID''' (varies; there are 79 known commands in the MusyX audio engine.)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 7&lt;br /&gt;
| '''Command arguments''' (varies between commands)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SoundMacro will continue with commands until it terminates when the END command is executed.  The command ID for END is 0 and has null command arguments; the next SoundMacro begins after reading it. &lt;br /&gt;
&lt;br /&gt;
These are the possible commands:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;2%&amp;quot; | ID&lt;br /&gt;
! width=&amp;quot;7%&amp;quot; | Name&lt;br /&gt;
! colspan=&amp;quot;91%&amp;quot; | Arguments&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| STOP&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| SPLITKEY&lt;br /&gt;
| Keynumber&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| SPLITVEL&lt;br /&gt;
| Velocity&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| WAIT_TICKS&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sampleend&lt;br /&gt;
| Absolute&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| LOOP&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sampleend&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Times&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| GOTO&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| WAIT_MS&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sample end&lt;br /&gt;
| Absolute&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| PLAYMACRO&lt;br /&gt;
| Addnote&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| Priority&lt;br /&gt;
| MaxVoices&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| SENDKEYOFF&lt;br /&gt;
| Variable&lt;br /&gt;
| Last started&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| SPLITMOD&lt;br /&gt;
| Mod value&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| PIANOPAN&lt;br /&gt;
| Scale&lt;br /&gt;
| Centerkey&lt;br /&gt;
| Centerpan&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| SETADSR&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (ADSR)&lt;br /&gt;
| DLS mode&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| SCALEVOLUME&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| PANNING&lt;br /&gt;
| Pan position&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Time ms&lt;br /&gt;
| Width&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xF&lt;br /&gt;
| ENVELOPE&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| STARTSAMPLE&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample-ID&lt;br /&gt;
| Mode&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| STOPSAMPLE&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| KEYOFF&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| SPLITRND&lt;br /&gt;
| RND&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| FADE-IN&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x15&lt;br /&gt;
| SPANNING&lt;br /&gt;
| Pan position&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Time ms&lt;br /&gt;
| Width&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| SETADSRCTRL&lt;br /&gt;
| Attack&lt;br /&gt;
| Decay&lt;br /&gt;
| Sustain&lt;br /&gt;
| Relase&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| RNDNOTE&lt;br /&gt;
| Note Lo&lt;br /&gt;
| Detune&lt;br /&gt;
| Note Hi&lt;br /&gt;
| Fixed/Free&lt;br /&gt;
| Abs/Rel&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| ADDNOTE&lt;br /&gt;
| Add&lt;br /&gt;
| Detune&lt;br /&gt;
| org key&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| SETNOTE&lt;br /&gt;
| Key&lt;br /&gt;
| Detune&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| LASTNOTE&lt;br /&gt;
| Add&lt;br /&gt;
| detune&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| PORTAMENTO&lt;br /&gt;
| Port. State&lt;br /&gt;
| Port. Type&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| VIBRATO&lt;br /&gt;
| Level note&lt;br /&gt;
| Level fine&lt;br /&gt;
| Modwheel flag&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D&lt;br /&gt;
| PITCHSWEEP1&lt;br /&gt;
| Times&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E&lt;br /&gt;
| PITCHSWEEP2&lt;br /&gt;
| Times&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| SETPITCH&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Frequency (Hz)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Fine&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| SETPITCHADSR&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (ADSR)&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| Note range&lt;br /&gt;
| Detune range&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x21&lt;br /&gt;
| SCALEVOLUME DLS&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scale&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| MOD2VIBRANGE&lt;br /&gt;
| Key range&lt;br /&gt;
| Cent range&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x23&lt;br /&gt;
| SETUP TREMOLO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Tremolo scale&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Modw. add scale&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| RETURN&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x25&lt;br /&gt;
| GOSUB&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| TRAP_EVENT&lt;br /&gt;
| Event&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x29&lt;br /&gt;
| UNTRAP_EVENT&lt;br /&gt;
| Event&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A&lt;br /&gt;
| SEND_MESSAGE&lt;br /&gt;
| IsVar&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Macro&lt;br /&gt;
| VID&lt;br /&gt;
| Variable&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B&lt;br /&gt;
| GET_MESSAGE&lt;br /&gt;
| Variable&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| GET_VID&lt;br /&gt;
| Variable&lt;br /&gt;
| PLAY_MACRO&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| ADDAGECOUNT&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x31&lt;br /&gt;
| SETAGECOUNT&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Counter&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x32&lt;br /&gt;
| SENDFLAG&lt;br /&gt;
| Flag-ID&lt;br /&gt;
| Value&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x33&lt;br /&gt;
| PITCHWHEELR&lt;br /&gt;
| Range up&lt;br /&gt;
| Range down&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x36&lt;br /&gt;
| SETPRIORITY&lt;br /&gt;
| Prio&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x37&lt;br /&gt;
| ADDPRIORITY&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| AGECNTSPEED&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Time&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| AGECNTVEL&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | AGE Base&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | AGE Scale&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| VOL_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x41&lt;br /&gt;
| PAN_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x42&lt;br /&gt;
| PitchW_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x43&lt;br /&gt;
| ModW_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| PEDAL_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x45&lt;br /&gt;
| PORTA_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| REVERB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x47&lt;br /&gt;
| SPAN_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| DOPPLER_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x49&lt;br /&gt;
| TREMOLO_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A&lt;br /&gt;
| PREA_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B&lt;br /&gt;
| PREB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| POSTB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4D&lt;br /&gt;
| AUXAFX_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E&lt;br /&gt;
| AUXBFX_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| SETUP_LFO&lt;br /&gt;
| LFO Nr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Period in ms&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| MODE_SELECT&lt;br /&gt;
| DLS vol&lt;br /&gt;
| ITD&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x59&lt;br /&gt;
| SET_KEYGROUP&lt;br /&gt;
| group&lt;br /&gt;
| kill&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5A&lt;br /&gt;
| SRCMODE_SELECT&lt;br /&gt;
| SRC type&lt;br /&gt;
| Type 0 SRC filter&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| ADD_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B +&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| SUB_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B -&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x62&lt;br /&gt;
| MUL_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B *&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x63&lt;br /&gt;
| DIV_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B /&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| ADDI_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B +&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Immediate&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x65&lt;br /&gt;
| SET_VAR&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; {{unknown}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Immediate&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| IF_EQUAL&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A ==&lt;br /&gt;
| Ctrl&lt;br /&gt;
| B&lt;br /&gt;
| Not&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro Step&lt;br /&gt;
|-&lt;br /&gt;
| 0x71&lt;br /&gt;
| IF_LESS&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A &amp;lt;&lt;br /&gt;
| Ctrl&lt;br /&gt;
| B&lt;br /&gt;
| Not&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro Step&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| END&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the last soundmacro, the table terminated by a value of 0xFFFF.&lt;br /&gt;
&lt;br /&gt;
==== Tables ====&lt;br /&gt;
&lt;br /&gt;
'''Tables''' have two functions: for defining curves for volume scaling, or to be used as ADSR envelopes.&lt;br /&gt;
&lt;br /&gt;
The tables continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Table ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|ADSR/Curve data}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== ADSR =====&lt;br /&gt;
&lt;br /&gt;
When the size of the table data is exactly 8, it may represent ADSR envelopes with this structure:&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All fields of the envelope are ''little endian''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Attack time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Decay time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sustain'''; percentage mapped between [0x0,0x1000]&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Release time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of ADSR}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== DLS ADSR =====&lt;br /&gt;
&lt;br /&gt;
MusyX can also express more advanced envelopes using a modified [[wikipedia:DLS format|DLS]] representation.&lt;br /&gt;
This representation includes scaling coefficients to respond to played note and velocity &lt;br /&gt;
(so slamming down a key harder plays longer).&lt;br /&gt;
&lt;br /&gt;
The attack and decay members are expressed in ''time-cents''. This may be converted to seconds using:&lt;br /&gt;
&amp;lt;code&amp;gt;2&amp;lt;sup&amp;gt;timecents / (1200.0 * 65536.0)&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attack and decay scale members are expressed as 0.1% increments in 16.16 fixed-point.&lt;br /&gt;
This may be converted to a normalized factor using:&lt;br /&gt;
&amp;lt;code&amp;gt;scale / (1000.0 * 65536.0)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All fields of the envelope are ''little endian''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Attack time'''; in time-cents&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Decay time'''; in time-cents&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sustain'''; percentage mapped between [0x0,0x1000]&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| 2&lt;br /&gt;
| '''Release'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Velocity to Attack Scale'''; 0.1% increments as 16.16 fixed-point&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Key to Decay Scale'''; 0.1% increments as 16.16 fixed-point&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| colspan=2 {{unknown|End of DLS ADSR}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Curves =====&lt;br /&gt;
&lt;br /&gt;
To express a volume curve, the table data is simply an arbitrarily-sized table of &amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt; values (although typically in MIDI range [0,127])&lt;br /&gt;
&lt;br /&gt;
==== Keymaps ====&lt;br /&gt;
&lt;br /&gt;
'''Keymaps''' are swappable, fixed-length tables mapping 128 MIDI keys to sound-producing objects.&lt;br /&gt;
&lt;br /&gt;
The keymaps continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''; (usually 0x1032)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Keymap ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|128 Keymap entries}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Keymap Entry =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transpose'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pan'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{Unknown|Padded to 8 bytes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Layers ====&lt;br /&gt;
&lt;br /&gt;
'''Layers''' are one-to-many, ranged keyboard mappings to sound-producing objects.&lt;br /&gt;
&lt;br /&gt;
The layers continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Layer ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|Layer data}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Layer Data =====&lt;br /&gt;
&lt;br /&gt;
Within the layer data, there is a '''u32 count''' of layer range structs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Key Lo'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Key Hi'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transpose'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Volume'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 1&lt;br /&gt;
| '''Surround Pan'''; (0: extreme forward, 64: center, 127: extreme rearward)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pan'''; (0: extreme left, 64: center, 127: extreme right)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| colspan=2 {{Unknown|Padded to 12 bytes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The entire Pool chunk is terminated by a value of 0xFFFF.&lt;br /&gt;
&lt;br /&gt;
=== Project ===&lt;br /&gt;
&lt;br /&gt;
The Project properties chunk contains values for the sounds, including priority, polyphony, volume, etc.&lt;br /&gt;
&lt;br /&gt;
Structurally, the Project is the root of the Audio Group tree, defining one or more ''Song Groups'' or ''SFX Groups''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Group end offset''' (points to next group in project)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group Type'''; 0 for SongGroup (for use with [[CSNG (File Format)|CSNG]]), 1 for SFXGroup.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''SoundMacro ID table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample ID table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Tables table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Keymaps table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layers table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| '''Normal page table''' (SongGroup) / '''SFX table offset''' (SFXGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 4&lt;br /&gt;
| '''Drum page table offset''' (SongGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 4&lt;br /&gt;
| '''MIDI Setup table offset''' (SongGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| colspan=2 {{unknown|End of group header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the header are a number of data tables. &lt;br /&gt;
&lt;br /&gt;
==== SoundMacro ID Table ====&lt;br /&gt;
&lt;br /&gt;
This is a ranged-table of shorts; there's no count value, so it's terminated with a value of 0xFFFF. It's a list of SoundMacro IDs present in the file. Contiguous ranges are expressed by IDs with most-significant bit set (0x8000). The range begins on the marked ID and incrementally reaches the next ID in the list, including that ID. All other IDs are singular.&lt;br /&gt;
&lt;br /&gt;
==== Sample ID / Table / Keymap / Layer Tables ====&lt;br /&gt;
&lt;br /&gt;
These function the same way as the SoundMacro ID table, but indexes other types of entities instead.&lt;br /&gt;
&lt;br /&gt;
==== Normal / Drum Page Entry ====&lt;br /&gt;
&lt;br /&gt;
Used to map [https://www.midi.org/specifications/item/gm-level-1-sound-set General MIDI program numbers] (instruments)&lt;br /&gt;
to sound entities (macros, keymaps, layers)&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority'''; voices are limited, so priority is used to play more important sounds over others&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Max number of voices'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''GM Program Number'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SFX Entry ====&lt;br /&gt;
&lt;br /&gt;
Used to map auto-generated &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; IDs (used by game code) to sound entities (macros, keymaps, layers)&lt;br /&gt;
&lt;br /&gt;
This table begins with a 16-bit count value, then 16 bits of padding. Each entry in the table is 10 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''DefineID'''; referenced by game code&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority'''; voices are limited, so priority is used to play more important sounds over others&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Max number of voices'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 1&lt;br /&gt;
| '''Definite Velocity'''; volume (usually 7F)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 1&lt;br /&gt;
| '''Panning'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2&lt;br /&gt;
| '''Definite Key'''; The default pitch (usually 0x3C00... the second byte may possibly be the MIDI channel)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MIDI Setup Entry ====&lt;br /&gt;
&lt;br /&gt;
Table of fixed-length tables to map all 16 MIDI channels to program numbers &lt;br /&gt;
(in-turn resolving to sound entities via the page table).&lt;br /&gt;
&lt;br /&gt;
Multiple MIDI Setups may be created to support Song data requiring totally different&lt;br /&gt;
banks of instruments.&lt;br /&gt;
&lt;br /&gt;
Each MIDI Setup starts with a u16 '''MIDI-Setup-ID''', then 16-bits padding, then 16 entries of the following structure (one for each channel):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Program Number'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1&lt;br /&gt;
| '''Volume'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Panning'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reverb'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Chorus'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MIDI setups continue until the ''group end offset'' is reached.&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&lt;br /&gt;
The Sample chunk is all the sound data encoded using the standard Gamecube DSP ADPCM codec.  It can be decoded the same way as a [[DSP (File Format)|DSP]] file. Each sound's size is padded to 32 bytes before the next sound's data begins.&lt;br /&gt;
&lt;br /&gt;
=== Sample Directory ===&lt;br /&gt;
&lt;br /&gt;
The Sample Directory chunk (chunk 4 in Metroid Prime, chunk 3 in Metroid Prime 2) is made up of two sets of tables. The structure of both these tables is identical between both games.&lt;br /&gt;
&lt;br /&gt;
==== Table A ====&lt;br /&gt;
&lt;br /&gt;
The first metadata table has one entry per sound, and is terminated with 0xFFFFFFFF; since there's no known sound count anywhere in the file, the only way to read this correctly is to read until you reach the terminator value. Each entry is 0x20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''; always 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sound start offset''', relative to the start of the ADPCM chunk&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 1&lt;br /&gt;
| '''Base Note'''; Corresponds to the MIDI note played in the sample, at the native sample-rate (which MusyX obtains from the INST chunk of .aiff files or SMPL chunk of .wav files, along with looping info). To play at a specified pitch in [[wikipedia:Cent (music)|cents]], set the playback sample rate using this formula: &amp;lt;code&amp;gt;sampleRate * 2&amp;lt;sup&amp;gt;((pitch - baseNote * 100) / 1200.0)&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| 1&lt;br /&gt;
| '''Padding'''; always 0&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sample rate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 1&lt;br /&gt;
| '''Audio format''' &amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;li&amp;gt;DSP-ADPCM&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;DSP-ADPCM (Drum Sample)&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;PCM&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;N64-VADPCM (Legacy Format)&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 3&lt;br /&gt;
| '''Number of samples'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Loop start sample'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| '''Loop length''', in samples. To get the loop end sample, add this to the start sample and subtract 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| '''Table B entry offset''', relative to the start of the sound metadata chunk&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Table B ====&lt;br /&gt;
&lt;br /&gt;
These are accessed through the offsets in table A's entries; note that it might not match the sound count, because the same entry in this table can be used with multiple sounds. Each entry is 0x28 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| {{unknown|'''Unknown'''; always 8}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Initial predictor/scale''' (matches first frame header)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop predictor/scale''' (matches loop start frame header)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Loop context sample history 2'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Loop context sample history 1'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2 &amp;amp;times; 16&lt;br /&gt;
| '''Decode coefficients'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/0B9MLV21H7SDvemgwN1daYnliSjA/view?usp=sharing Prime Audio Decoder] by Aruki will dump all sound effects contained in a given AGSC file.&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Audio]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=AGSC_(File_Format)&amp;diff=1935</id>
		<title>AGSC (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=AGSC_(File_Format)&amp;diff=1935"/>
				<updated>2018-07-18T02:03:27Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* SoundMacros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''AGSC''' is the sound effect format for Metroid Prime and Metroid Prime 2: Echoes. Each AGSC file contains a group of sound effects. The first two Metroid Prime games utilize the MusyX audio engine created by Factor5 and as a result, AGSC files are essentially just embedded MusyX files. &lt;br /&gt;
&lt;br /&gt;
The audio codec used in AGSC is the standard GameCube DSP-ADPCM codec, but MusyX itself also offers uncompressed PCM as an option.&lt;br /&gt;
&lt;br /&gt;
{{todo|Better descriptions for how SoundMacros work and a description for what each command does.}}&lt;br /&gt;
{{research|minor|The proj and sdir chunks have a couple unknowns left.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The AGSC format is essentially four data chunks combined into one resource, each of which is a standard MusyX file. Of the four data chunks (pool, proj, samp, and sdir), there's one for sound engine scripts, one for sound properties, one for actual ADPCM sound data, and one for sound metadata. The main difference between Prime 1 and 2 is the header, and some slight changes in the way the four chunks are organized. In Metroid Prime, each chunk begins with its own size value; in Metroid Prime 2, every chunk instead has its size listed at the beginning of the file, at the end of the header. In addition, in Metroid Prime, the third chunk is samp, and the fourth is sdir; in Metroid Prime 2, it's the other way around.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| '''D'''&lt;br /&gt;
| '''Audio Directory'''. Always &amp;quot;Audio/&amp;quot;. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 + D&lt;br /&gt;
| '''N'''&lt;br /&gt;
| '''Audio Group Name'''. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 + D + N&lt;br /&gt;
|colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 2 ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''; always 1}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| D&lt;br /&gt;
| '''Audio Group Name'''. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 + D&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group ID'''; 0xFFFF if unspecified&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Pool size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xA + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Project size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xE + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample directory size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 + D&lt;br /&gt;
| colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pool ===&lt;br /&gt;
&lt;br /&gt;
The Pool chunk contains sub-chunk tables for SoundMacros, ADSR, keymaps, and layers, if applicable. It starts with a 16-byte header before the different data tables begin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''SoundMacros Offset''' (always 0x10)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Tables Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''Keymaps Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layers Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ObjectID ====&lt;br /&gt;
&lt;br /&gt;
After this are four tables of objects. Each object is identified with a 16-bit '''ObjectID''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound object type''' &amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SoundMacro&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Table&amp;lt;/li&amp;gt;&amp;lt;li value=4&amp;gt;Keymap&amp;lt;/li&amp;gt;&amp;lt;li value=8&amp;gt;Layer&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1&lt;br /&gt;
| '''Unique ID''' (per type namespacing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| colspan=2 {{unknown|End of ObjectID}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is the ID structure produced by MusyX data export tool used for ''Metroid Prime'' &lt;br /&gt;
(which allocates all group ObjectIDs on export). The ObjectID structure is actually an arbitrary 16-bits in MusyX&lt;br /&gt;
(limited to 14-bit uniqueness). Based on findings from other games, this upper-byte type source is not 100% reliable,&lt;br /&gt;
since Factor5 updated the tool during the console's lifetime.&lt;br /&gt;
&lt;br /&gt;
==== SoundMacros ====&lt;br /&gt;
&lt;br /&gt;
The first Pool table denotes MusyX's '''SoundMacros''', small scripts that apply various effects on the sounds in the game.  Each macro is composed of a header followed by a number of commands; each command specifies its type through a single-byte command ID, then specifies the parameters of that particular command, which vary.&lt;br /&gt;
&lt;br /&gt;
The header of each SoundMacro is eight bytes, and is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size''' ''(note: includes the size value itself)''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''SoundMacro ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|Commands begin}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On the commands, each 4 bytes were originally little endian, but have been swapped to big endian in the AGSC files (despite not being longs). To read the data as originally formatted, every four bytes needs to be byte-swapped. Each command is 8 bytes, and is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Command ID''' (varies; there are 79 known commands in the MusyX audio engine.)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 7&lt;br /&gt;
| '''Command arguments''' (varies between commands)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SoundMacro will continue with commands until it terminates when the END command is executed.  The command ID for END is 0 and has null command arguments; the next SoundMacro begins after reading it. &lt;br /&gt;
&lt;br /&gt;
These are the possible commands:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;2%&amp;quot; | ID&lt;br /&gt;
! width=&amp;quot;7%&amp;quot; | Name&lt;br /&gt;
! colspan=&amp;quot;91%&amp;quot; | Arguments&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| STOP&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| SPLITKEY&lt;br /&gt;
| Keynumber&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| SPLITVEL&lt;br /&gt;
| Velocity&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| WAIT_TICKS&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sampleend&lt;br /&gt;
| Absolute&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| LOOP&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sampleend&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Times&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| GOTO&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| WAIT_MS&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sample end&lt;br /&gt;
| Absolute&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| PLAYMACRO&lt;br /&gt;
| Addnote&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| Priority&lt;br /&gt;
| MaxVoices&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| SENDKEYOFF&lt;br /&gt;
| Variable&lt;br /&gt;
| Last started&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| SPLITMOD&lt;br /&gt;
| Mod value&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| PIANOPAN&lt;br /&gt;
| Scale&lt;br /&gt;
| Centerkey&lt;br /&gt;
| Centerpan&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| SETADSR&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (ADSR)&lt;br /&gt;
| DLS mode&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| SCALEVOLUME&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| PANNING&lt;br /&gt;
| Pan position&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Time ms&lt;br /&gt;
| Width&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xF&lt;br /&gt;
| ENVELOPE&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| STARTSAMPLE&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample-ID&lt;br /&gt;
| Mode&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| STOPSAMPLE&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| KEYOFF&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| SPLITRND&lt;br /&gt;
| RND&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| FADE-IN&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x15&lt;br /&gt;
| SPANNING&lt;br /&gt;
| Pan position&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Time ms&lt;br /&gt;
| Width&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| SETADSRCTRL&lt;br /&gt;
| Attack&lt;br /&gt;
| Decay&lt;br /&gt;
| Sustain&lt;br /&gt;
| Relase&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| RNDNOTE&lt;br /&gt;
| Note Lo&lt;br /&gt;
| Detune&lt;br /&gt;
| Note Hi&lt;br /&gt;
| Fixed/Free&lt;br /&gt;
| Abs/Rel&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| ADDNOTE&lt;br /&gt;
| Add&lt;br /&gt;
| Detune&lt;br /&gt;
| org key&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| SETNOTE&lt;br /&gt;
| Key&lt;br /&gt;
| Detune&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| LASTNOTE&lt;br /&gt;
| Add&lt;br /&gt;
| detune&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| PORTAMENTO&lt;br /&gt;
| Port. State&lt;br /&gt;
| Port. Type&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| VIBRATO&lt;br /&gt;
| Level note&lt;br /&gt;
| Level fine&lt;br /&gt;
| Modwheel flag&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D&lt;br /&gt;
| PITCHSWEEP1&lt;br /&gt;
| Times&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E&lt;br /&gt;
| PITCHSWEEP2&lt;br /&gt;
| Times&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| SETPITCH&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Frequency (Hz)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Fine&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| SETPITCHADSR&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (ADSR)&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| Note range&lt;br /&gt;
| Detune range&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x21&lt;br /&gt;
| SCALEVOLUME DLS&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scale&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| MOD2VIBRANGE&lt;br /&gt;
| Key range&lt;br /&gt;
| Cent range&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x23&lt;br /&gt;
| SETUP TREMOLO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Tremolo scale&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Modw. add scale&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| RETURN&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x25&lt;br /&gt;
| GOSUB&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| TRAP_EVENT&lt;br /&gt;
| Event&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x29&lt;br /&gt;
| UNTRAP_EVENT&lt;br /&gt;
| Event&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A&lt;br /&gt;
| SEND_MESSAGE&lt;br /&gt;
| IsVar&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Macro&lt;br /&gt;
| VID&lt;br /&gt;
| Variable&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B&lt;br /&gt;
| GET_MESSAGE&lt;br /&gt;
| Variable&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| GET_VID&lt;br /&gt;
| Variable&lt;br /&gt;
| PLAY_MACRO&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| ADDAGECOUNT&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x31&lt;br /&gt;
| SETAGECOUNT&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Counter&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x32&lt;br /&gt;
| SENDFLAG&lt;br /&gt;
| Flag-ID&lt;br /&gt;
| Value&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x33&lt;br /&gt;
| PITCHWHEELR&lt;br /&gt;
| Range up&lt;br /&gt;
| Range down&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x36&lt;br /&gt;
| SETPRIORITY&lt;br /&gt;
| Prio&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x37&lt;br /&gt;
| ADDPRIORITY&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| AGECNTSPEED&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Time&lt;br /&gt;
|-&lt;br /&gt;
| 0x39&lt;br /&gt;
| AGECNTVEL&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | AGE Base&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | AGE Scale&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| VOL_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x41&lt;br /&gt;
| PAN_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x42&lt;br /&gt;
| PitchW_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x43&lt;br /&gt;
| ModW_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| PEDAL_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x45&lt;br /&gt;
| PORTA_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| REVERB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x47&lt;br /&gt;
| SPAN_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| DOPPLER_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x49&lt;br /&gt;
| TREMOLO_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A&lt;br /&gt;
| PREA_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B&lt;br /&gt;
| PREB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| POSTB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4D&lt;br /&gt;
| AUXAFX_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E&lt;br /&gt;
| AUXBFX_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| SETUP_LFO&lt;br /&gt;
| LFO Nr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Period in ms&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| MODE_SELECT&lt;br /&gt;
| DLS vol&lt;br /&gt;
| ITD&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x59&lt;br /&gt;
| SET_KEYGROUP&lt;br /&gt;
| group&lt;br /&gt;
| kill&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5A&lt;br /&gt;
| SRCMODE_SELECT&lt;br /&gt;
| SRC type&lt;br /&gt;
| Type 0 SRC filter&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| ADD_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B +&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| SUB_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B -&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x62&lt;br /&gt;
| MUL_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B *&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x63&lt;br /&gt;
| DIV_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B /&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| ADDI_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B +&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Immediate&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x65&lt;br /&gt;
| SET_VAR&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Immediate&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| IF_EQUAL&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A ==&lt;br /&gt;
| Ctrl&lt;br /&gt;
| B&lt;br /&gt;
| Not&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro Step&lt;br /&gt;
|-&lt;br /&gt;
| 0x71&lt;br /&gt;
| IF_LESS&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A &amp;lt;&lt;br /&gt;
| Ctrl&lt;br /&gt;
| B&lt;br /&gt;
| Not&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro Step&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| END&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the last soundmacro, the table terminated by a value of 0xFFFF.&lt;br /&gt;
&lt;br /&gt;
==== Tables ====&lt;br /&gt;
&lt;br /&gt;
'''Tables''' have two functions: for defining curves for volume scaling, or to be used as ADSR envelopes.&lt;br /&gt;
&lt;br /&gt;
The tables continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Table ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|ADSR/Curve data}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== ADSR =====&lt;br /&gt;
&lt;br /&gt;
When the size of the table data is exactly 8, it may represent ADSR envelopes with this structure:&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All fields of the envelope are ''little endian''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Attack time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Decay time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sustain'''; percentage mapped between [0x0,0x1000]&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Release time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of ADSR}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== DLS ADSR =====&lt;br /&gt;
&lt;br /&gt;
MusyX can also express more advanced envelopes using a modified [[wikipedia:DLS format|DLS]] representation.&lt;br /&gt;
This representation includes scaling coefficients to respond to played note and velocity &lt;br /&gt;
(so slamming down a key harder plays longer).&lt;br /&gt;
&lt;br /&gt;
The attack and decay members are expressed in ''time-cents''. This may be converted to seconds using:&lt;br /&gt;
&amp;lt;code&amp;gt;2&amp;lt;sup&amp;gt;timecents / (1200.0 * 65536.0)&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attack and decay scale members are expressed as 0.1% increments in 16.16 fixed-point.&lt;br /&gt;
This may be converted to a normalized factor using:&lt;br /&gt;
&amp;lt;code&amp;gt;scale / (1000.0 * 65536.0)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All fields of the envelope are ''little endian''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Attack time'''; in time-cents&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Decay time'''; in time-cents&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sustain'''; percentage mapped between [0x0,0x1000]&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| 2&lt;br /&gt;
| '''Release'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Velocity to Attack Scale'''; 0.1% increments as 16.16 fixed-point&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Key to Decay Scale'''; 0.1% increments as 16.16 fixed-point&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| colspan=2 {{unknown|End of DLS ADSR}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Curves =====&lt;br /&gt;
&lt;br /&gt;
To express a volume curve, the table data is simply an arbitrarily-sized table of &amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt; values (although typically in MIDI range [0,127])&lt;br /&gt;
&lt;br /&gt;
==== Keymaps ====&lt;br /&gt;
&lt;br /&gt;
'''Keymaps''' are swappable, fixed-length tables mapping 128 MIDI keys to sound-producing objects.&lt;br /&gt;
&lt;br /&gt;
The keymaps continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''; (usually 0x1032)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Keymap ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|128 Keymap entries}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Keymap Entry =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transpose'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pan'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{Unknown|Padded to 8 bytes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Layers ====&lt;br /&gt;
&lt;br /&gt;
'''Layers''' are one-to-many, ranged keyboard mappings to sound-producing objects.&lt;br /&gt;
&lt;br /&gt;
The layers continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Layer ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|Layer data}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Layer Data =====&lt;br /&gt;
&lt;br /&gt;
Within the layer data, there is a '''u32 count''' of layer range structs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Key Lo'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Key Hi'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transpose'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Volume'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 1&lt;br /&gt;
| '''Surround Pan'''; (0: extreme forward, 64: center, 127: extreme rearward)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pan'''; (0: extreme left, 64: center, 127: extreme right)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| colspan=2 {{Unknown|Padded to 12 bytes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The entire Pool chunk is terminated by a value of 0xFFFF.&lt;br /&gt;
&lt;br /&gt;
=== Project ===&lt;br /&gt;
&lt;br /&gt;
The Project properties chunk contains values for the sounds, including priority, polyphony, volume, etc.&lt;br /&gt;
&lt;br /&gt;
Structurally, the Project is the root of the Audio Group tree, defining one or more ''Song Groups'' or ''SFX Groups''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Group end offset''' (points to next group in project)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group Type'''; 0 for SongGroup (for use with [[CSNG (File Format)|CSNG]]), 1 for SFXGroup.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''SoundMacro ID table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample ID table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Tables table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Keymaps table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layers table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| '''Normal page table''' (SongGroup) / '''SFX table offset''' (SFXGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 4&lt;br /&gt;
| '''Drum page table offset''' (SongGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 4&lt;br /&gt;
| '''MIDI Setup table offset''' (SongGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| colspan=2 {{unknown|End of group header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the header are a number of data tables. &lt;br /&gt;
&lt;br /&gt;
==== SoundMacro ID Table ====&lt;br /&gt;
&lt;br /&gt;
This is a ranged-table of shorts; there's no count value, so it's terminated with a value of 0xFFFF. It's a list of SoundMacro IDs present in the file. Contiguous ranges are expressed by IDs with most-significant bit set (0x8000). The range begins on the marked ID and incrementally reaches the next ID in the list, including that ID. All other IDs are singular.&lt;br /&gt;
&lt;br /&gt;
==== Sample ID / Table / Keymap / Layer Tables ====&lt;br /&gt;
&lt;br /&gt;
These function the same way as the SoundMacro ID table, but indexes other types of entities instead.&lt;br /&gt;
&lt;br /&gt;
==== Normal / Drum Page Entry ====&lt;br /&gt;
&lt;br /&gt;
Used to map [https://www.midi.org/specifications/item/gm-level-1-sound-set General MIDI program numbers] (instruments)&lt;br /&gt;
to sound entities (macros, keymaps, layers)&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority'''; voices are limited, so priority is used to play more important sounds over others&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Max number of voices'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''GM Program Number'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SFX Entry ====&lt;br /&gt;
&lt;br /&gt;
Used to map auto-generated &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; IDs (used by game code) to sound entities (macros, keymaps, layers)&lt;br /&gt;
&lt;br /&gt;
This table begins with a 16-bit count value, then 16 bits of padding. Each entry in the table is 10 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''DefineID'''; referenced by game code&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority'''; voices are limited, so priority is used to play more important sounds over others&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Max number of voices'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 1&lt;br /&gt;
| '''Definite Velocity'''; volume (usually 7F)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 1&lt;br /&gt;
| '''Panning'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2&lt;br /&gt;
| '''Definite Key'''; The default pitch (usually 0x3C00... the second byte may possibly be the MIDI channel)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MIDI Setup Entry ====&lt;br /&gt;
&lt;br /&gt;
Table of fixed-length tables to map all 16 MIDI channels to program numbers &lt;br /&gt;
(in-turn resolving to sound entities via the page table).&lt;br /&gt;
&lt;br /&gt;
Multiple MIDI Setups may be created to support Song data requiring totally different&lt;br /&gt;
banks of instruments.&lt;br /&gt;
&lt;br /&gt;
Each MIDI Setup starts with a u16 '''MIDI-Setup-ID''', then 16-bits padding, then 16 entries of the following structure (one for each channel):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Program Number'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1&lt;br /&gt;
| '''Volume'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Panning'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reverb'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Chorus'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MIDI setups continue until the ''group end offset'' is reached.&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&lt;br /&gt;
The Sample chunk is all the sound data encoded using the standard Gamecube DSP ADPCM codec.  It can be decoded the same way as a [[DSP (File Format)|DSP]] file. Each sound's size is padded to 32 bytes before the next sound's data begins.&lt;br /&gt;
&lt;br /&gt;
=== Sample Directory ===&lt;br /&gt;
&lt;br /&gt;
The Sample Directory chunk (chunk 4 in Metroid Prime, chunk 3 in Metroid Prime 2) is made up of two sets of tables. The structure of both these tables is identical between both games.&lt;br /&gt;
&lt;br /&gt;
==== Table A ====&lt;br /&gt;
&lt;br /&gt;
The first metadata table has one entry per sound, and is terminated with 0xFFFFFFFF; since there's no known sound count anywhere in the file, the only way to read this correctly is to read until you reach the terminator value. Each entry is 0x20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''; always 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sound start offset''', relative to the start of the ADPCM chunk&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 1&lt;br /&gt;
| '''Base Note'''; Corresponds to the MIDI note played in the sample, at the native sample-rate (which MusyX obtains from the INST chunk of .aiff files or SMPL chunk of .wav files, along with looping info). To play at a specified pitch in [[wikipedia:Cent (music)|cents]], set the playback sample rate using this formula: &amp;lt;code&amp;gt;sampleRate * 2&amp;lt;sup&amp;gt;((pitch - baseNote * 100) / 1200.0)&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| 1&lt;br /&gt;
| '''Padding'''; always 0&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sample rate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 1&lt;br /&gt;
| '''Audio format''' &amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;li&amp;gt;DSP-ADPCM&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;DSP-ADPCM (Drum Sample)&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;PCM&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;N64-VADPCM (Legacy Format)&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 3&lt;br /&gt;
| '''Number of samples'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Loop start sample'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| '''Loop length''', in samples. To get the loop end sample, add this to the start sample and subtract 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| '''Table B entry offset''', relative to the start of the sound metadata chunk&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Table B ====&lt;br /&gt;
&lt;br /&gt;
These are accessed through the offsets in table A's entries; note that it might not match the sound count, because the same entry in this table can be used with multiple sounds. Each entry is 0x28 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| {{unknown|'''Unknown'''; always 8}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Initial predictor/scale''' (matches first frame header)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop predictor/scale''' (matches loop start frame header)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Loop context sample history 2'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Loop context sample history 1'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2 &amp;amp;times; 16&lt;br /&gt;
| '''Decode coefficients'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/0B9MLV21H7SDvemgwN1daYnliSjA/view?usp=sharing Prime Audio Decoder] by Aruki will dump all sound effects contained in a given AGSC file.&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Audio]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=AGSC_(File_Format)&amp;diff=1934</id>
		<title>AGSC (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=AGSC_(File_Format)&amp;diff=1934"/>
				<updated>2018-07-18T01:55:25Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* SoundMacros */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''AGSC''' is the sound effect format for Metroid Prime and Metroid Prime 2: Echoes. Each AGSC file contains a group of sound effects. The first two Metroid Prime games utilize the MusyX audio engine created by Factor5 and as a result, AGSC files are essentially just embedded MusyX files. &lt;br /&gt;
&lt;br /&gt;
The audio codec used in AGSC is the standard GameCube DSP-ADPCM codec, but MusyX itself also offers uncompressed PCM as an option.&lt;br /&gt;
&lt;br /&gt;
{{todo|Better descriptions for how SoundMacros work and a description for what each command does.}}&lt;br /&gt;
{{research|minor|The proj and sdir chunks have a couple unknowns left.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The AGSC format is essentially four data chunks combined into one resource, each of which is a standard MusyX file. Of the four data chunks (pool, proj, samp, and sdir), there's one for sound engine scripts, one for sound properties, one for actual ADPCM sound data, and one for sound metadata. The main difference between Prime 1 and 2 is the header, and some slight changes in the way the four chunks are organized. In Metroid Prime, each chunk begins with its own size value; in Metroid Prime 2, every chunk instead has its size listed at the beginning of the file, at the end of the header. In addition, in Metroid Prime, the third chunk is samp, and the fourth is sdir; in Metroid Prime 2, it's the other way around.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| '''D'''&lt;br /&gt;
| '''Audio Directory'''. Always &amp;quot;Audio/&amp;quot;. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 + D&lt;br /&gt;
| '''N'''&lt;br /&gt;
| '''Audio Group Name'''. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 + D + N&lt;br /&gt;
|colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 2 ====&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''; always 1}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| D&lt;br /&gt;
| '''Audio Group Name'''. Zero-terminated.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 + D&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group ID'''; 0xFFFF if unspecified&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Pool size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xA + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Project size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xE + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample directory size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 + D&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x16 + D&lt;br /&gt;
| colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pool ===&lt;br /&gt;
&lt;br /&gt;
The Pool chunk contains sub-chunk tables for SoundMacros, ADSR, keymaps, and layers, if applicable. It starts with a 16-byte header before the different data tables begin.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''SoundMacros Offset''' (always 0x10)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Tables Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''Keymaps Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layers Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ObjectID ====&lt;br /&gt;
&lt;br /&gt;
After this are four tables of objects. Each object is identified with a 16-bit '''ObjectID''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound object type''' &amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;li&amp;gt;SoundMacro&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Table&amp;lt;/li&amp;gt;&amp;lt;li value=4&amp;gt;Keymap&amp;lt;/li&amp;gt;&amp;lt;li value=8&amp;gt;Layer&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1&lt;br /&gt;
| '''Unique ID''' (per type namespacing)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| colspan=2 {{unknown|End of ObjectID}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This is the ID structure produced by MusyX data export tool used for ''Metroid Prime'' &lt;br /&gt;
(which allocates all group ObjectIDs on export). The ObjectID structure is actually an arbitrary 16-bits in MusyX&lt;br /&gt;
(limited to 14-bit uniqueness). Based on findings from other games, this upper-byte type source is not 100% reliable,&lt;br /&gt;
since Factor5 updated the tool during the console's lifetime.&lt;br /&gt;
&lt;br /&gt;
==== SoundMacros ====&lt;br /&gt;
&lt;br /&gt;
The first Pool table denotes MusyX's '''SoundMacros''', small scripts that apply various effects on the sounds in the game.  Each macro is composed of a header followed by a number of commands; each command specifies its type through a single-byte command ID, then specifies the parameters of that particular command, which vary.&lt;br /&gt;
&lt;br /&gt;
The header of each SoundMacro is eight bytes, and is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size''' ''(note: includes the size value itself)''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''SoundMacro ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|Commands begin}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On the commands, each 4 bytes were originally little endian, but have been swapped to big endian in the AGSC files (despite not being longs). To read the data as originally formatted, every four bytes needs to be byte-swapped. Each command is 8 bytes, and is structured as follows:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Command ID''' (varies; there are 79 known commands in the MusyX audio engine.)&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 7&lt;br /&gt;
| '''Command arguments''' (varies between commands)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SoundMacro will continue with commands until it terminates when the END command is executed.  The command ID for END is 0 and has null command arguments; the next SoundMacro begins after reading it. &lt;br /&gt;
&lt;br /&gt;
These are the possible commands:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;2%&amp;quot; | ID&lt;br /&gt;
! width=&amp;quot;7%&amp;quot; | Name&lt;br /&gt;
! colspan=&amp;quot;91%&amp;quot; | Arguments&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| STOP&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
| width=&amp;quot;13%&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| SPLITKEY&lt;br /&gt;
| Keynumber&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| SPLITVEL&lt;br /&gt;
| Velocity&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| WAIT_TICKS&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sampleend&lt;br /&gt;
| Absolute&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| LOOP&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sampleend&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Times&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| GOTO&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| WAIT_MS&lt;br /&gt;
| Keyoff&lt;br /&gt;
| Random&lt;br /&gt;
| Sample end&lt;br /&gt;
| Absolute&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| PLAYMACRO&lt;br /&gt;
| Addnote&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| Priority&lt;br /&gt;
| MaxVoices&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| SENDKEYOFF&lt;br /&gt;
| Variable&lt;br /&gt;
| Last started&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| SPLITMOD&lt;br /&gt;
| Mod value&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xB&lt;br /&gt;
| PIANOPAN&lt;br /&gt;
| Scale&lt;br /&gt;
| Centerkey&lt;br /&gt;
| Centerpan&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| SETADSR&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (ADSR)&lt;br /&gt;
| DLS mode&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| SCALEVOLUME&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| PANNING&lt;br /&gt;
| Pan position&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Time ms&lt;br /&gt;
| Width&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xF&lt;br /&gt;
| ENVELOPE&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| STARTSAMPLE&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Sample-ID&lt;br /&gt;
| Mode&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Offset&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| STOPSAMPLE&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| KEYOFF&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| SPLITRND&lt;br /&gt;
| RND&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| FADE-IN&lt;br /&gt;
| Scale&lt;br /&gt;
| Add&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (Curve)&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x15&lt;br /&gt;
| SPANNING&lt;br /&gt;
| Pan position&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Time ms&lt;br /&gt;
| Width&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| SETADSRCTRL&lt;br /&gt;
| Attack&lt;br /&gt;
| Decay&lt;br /&gt;
| Sustain&lt;br /&gt;
| Relase&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| RNDNOTE&lt;br /&gt;
| Note Lo&lt;br /&gt;
| Detune&lt;br /&gt;
| Note Hi&lt;br /&gt;
| Fixed/Free&lt;br /&gt;
| Abs/Rel&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| ADDNOTE&lt;br /&gt;
| Add&lt;br /&gt;
| Detune&lt;br /&gt;
| org key&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| SETNOTE&lt;br /&gt;
| Key&lt;br /&gt;
| Detune&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| LASTNOTE&lt;br /&gt;
| Add&lt;br /&gt;
| detune&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| PORTAMENTO&lt;br /&gt;
| Port. State&lt;br /&gt;
| Port. Type&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| VIBRATO&lt;br /&gt;
| Level note&lt;br /&gt;
| Level fine&lt;br /&gt;
| Modwheel flag&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1D&lt;br /&gt;
| PITCHSWEEP1&lt;br /&gt;
| Times&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E&lt;br /&gt;
| PITCHSWEEP2&lt;br /&gt;
| Times&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| ms switch&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Ticks/Millisec.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1F&lt;br /&gt;
| SETPITCH&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Frequency (Hz)&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Fine&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| SETPITCHADSR&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Table-ID (ADSR)&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| Note range&lt;br /&gt;
| Detune range&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x21&lt;br /&gt;
| SCALEVOLUME DLS&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scale&lt;br /&gt;
| Org vol&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| MOD2VIBRANGE&lt;br /&gt;
| Key range&lt;br /&gt;
| Cent range&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x23&lt;br /&gt;
| SETUP TREMOLO&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Tremolo scale&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Modw. add scale&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| RETURN&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x25&lt;br /&gt;
| GOSUB&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| TRAP_EVENT&lt;br /&gt;
| Event&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro ID&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro step&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x29&lt;br /&gt;
| UNTRAP_EVENT&lt;br /&gt;
| Event&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A&lt;br /&gt;
| SEND_MESSAGE&lt;br /&gt;
| IsVar&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Macro&lt;br /&gt;
| VID&lt;br /&gt;
| Variable&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2B&lt;br /&gt;
| GET_MESSAGE&lt;br /&gt;
| Variable&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| GET_VID&lt;br /&gt;
| Variable&lt;br /&gt;
| PLAY_MACRO&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| ADDAGECOUNT&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x31&lt;br /&gt;
| SETAGECOUNT&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Counter&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x32&lt;br /&gt;
| SENDFLAG&lt;br /&gt;
| Flag-ID&lt;br /&gt;
| Value&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x33&lt;br /&gt;
| PITCHWHEELR&lt;br /&gt;
| Range up&lt;br /&gt;
| Range down&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| SETPRIORITY&lt;br /&gt;
| Prio&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x35&lt;br /&gt;
| ADDPRIORITY&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Add&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x36&lt;br /&gt;
| AGECNTSPEED&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | Time&lt;br /&gt;
|-&lt;br /&gt;
| 0x37&lt;br /&gt;
| AGECNTVEL&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | AGE Base&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | AGE Scale&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| VOL_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x41&lt;br /&gt;
| PAN_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x42&lt;br /&gt;
| PitchW_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x43&lt;br /&gt;
| ModW_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| PEDAL_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x45&lt;br /&gt;
| PORTA_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| REVERB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x47&lt;br /&gt;
| SPAN_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| DOPPLER_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x49&lt;br /&gt;
| TREMOLO_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4A&lt;br /&gt;
| PREA_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4B&lt;br /&gt;
| PREB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| POSTB_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4D&lt;br /&gt;
| AUXAFX_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4E&lt;br /&gt;
| AUXBFX_SELECT&lt;br /&gt;
| MIDI Contr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Scaling percentage&lt;br /&gt;
| Combine&lt;br /&gt;
| is var.&lt;br /&gt;
| Fine scaling&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| SETUP_LFO&lt;br /&gt;
| LFO Nr.&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Period in ms&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| MODE_SELECT&lt;br /&gt;
| DLS vol&lt;br /&gt;
| ITD&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x59&lt;br /&gt;
| SET_KEYGROUP&lt;br /&gt;
| group&lt;br /&gt;
| kill&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x5A&lt;br /&gt;
| SRCMODE_SELECT&lt;br /&gt;
| SRC type&lt;br /&gt;
| Type 0 SRC filter&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| ADD_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B +&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x61&lt;br /&gt;
| SUB_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B -&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x62&lt;br /&gt;
| MUL_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B *&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x63&lt;br /&gt;
| DIV_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B /&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| C&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| ADDI_VARS&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| Var/Ctrl&lt;br /&gt;
| B +&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Immediate&lt;br /&gt;
| {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x65&lt;br /&gt;
| SET_VAR&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A =&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | Immediate&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; {{unknown|}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| IF_EQUAL&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A ==&lt;br /&gt;
| Ctrl&lt;br /&gt;
| B&lt;br /&gt;
| Not&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro Step&lt;br /&gt;
|-&lt;br /&gt;
| 0x71&lt;br /&gt;
| IF_LESS&lt;br /&gt;
| Ctrl&lt;br /&gt;
| A &amp;lt;&lt;br /&gt;
| Ctrl&lt;br /&gt;
| B&lt;br /&gt;
| Not&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | SoundMacro Step&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| END&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; {{unknown|}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the last soundmacro, the table terminated by a value of 0xFFFF.&lt;br /&gt;
&lt;br /&gt;
==== Tables ====&lt;br /&gt;
&lt;br /&gt;
'''Tables''' have two functions: for defining curves for volume scaling, or to be used as ADSR envelopes.&lt;br /&gt;
&lt;br /&gt;
The tables continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Table ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|ADSR/Curve data}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== ADSR =====&lt;br /&gt;
&lt;br /&gt;
When the size of the table data is exactly 8, it may represent ADSR envelopes with this structure:&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All fields of the envelope are ''little endian''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Attack time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Decay time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sustain'''; percentage mapped between [0x0,0x1000]&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Release time'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of ADSR}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== DLS ADSR =====&lt;br /&gt;
&lt;br /&gt;
MusyX can also express more advanced envelopes using a modified [[wikipedia:DLS format|DLS]] representation.&lt;br /&gt;
This representation includes scaling coefficients to respond to played note and velocity &lt;br /&gt;
(so slamming down a key harder plays longer).&lt;br /&gt;
&lt;br /&gt;
The attack and decay members are expressed in ''time-cents''. This may be converted to seconds using:&lt;br /&gt;
&amp;lt;code&amp;gt;2&amp;lt;sup&amp;gt;timecents / (1200.0 * 65536.0)&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attack and decay scale members are expressed as 0.1% increments in 16.16 fixed-point.&lt;br /&gt;
This may be converted to a normalized factor using:&lt;br /&gt;
&amp;lt;code&amp;gt;scale / (1000.0 * 65536.0)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' All fields of the envelope are ''little endian''.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Attack time'''; in time-cents&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Decay time'''; in time-cents&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sustain'''; percentage mapped between [0x0,0x1000]&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| 2&lt;br /&gt;
| '''Release'''; in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Velocity to Attack Scale'''; 0.1% increments as 16.16 fixed-point&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Key to Decay Scale'''; 0.1% increments as 16.16 fixed-point&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| colspan=2 {{unknown|End of DLS ADSR}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Curves =====&lt;br /&gt;
&lt;br /&gt;
To express a volume curve, the table data is simply an arbitrarily-sized table of &amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt; values (although typically in MIDI range [0,127])&lt;br /&gt;
&lt;br /&gt;
==== Keymaps ====&lt;br /&gt;
&lt;br /&gt;
'''Keymaps''' are swappable, fixed-length tables mapping 128 MIDI keys to sound-producing objects.&lt;br /&gt;
&lt;br /&gt;
The keymaps continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''; (usually 0x1032)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Keymap ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|128 Keymap entries}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Keymap Entry =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transpose'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pan'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{Unknown|Padded to 8 bytes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Layers ====&lt;br /&gt;
&lt;br /&gt;
'''Layers''' are one-to-many, ranged keyboard mappings to sound-producing objects.&lt;br /&gt;
&lt;br /&gt;
The layers continue until 0xffffffff terminator is reached.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Chunk Size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Layer ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|-&lt;br /&gt;
| Chunk Size&lt;br /&gt;
| colspan=2 {{Unknown|Layer data}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Layer Data =====&lt;br /&gt;
&lt;br /&gt;
Within the layer data, there is a '''u32 count''' of layer range structs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Key Lo'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Key Hi'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transpose'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Volume'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority Offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 1&lt;br /&gt;
| '''Surround Pan'''; (0: extreme forward, 64: center, 127: extreme rearward)&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pan'''; (0: extreme left, 64: center, 127: extreme right)&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| colspan=2 {{Unknown|Padded to 12 bytes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The entire Pool chunk is terminated by a value of 0xFFFF.&lt;br /&gt;
&lt;br /&gt;
=== Project ===&lt;br /&gt;
&lt;br /&gt;
The Project properties chunk contains values for the sounds, including priority, polyphony, volume, etc.&lt;br /&gt;
&lt;br /&gt;
Structurally, the Project is the root of the Audio Group tree, defining one or more ''Song Groups'' or ''SFX Groups''&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Group end offset''' (points to next group in project)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Group Type'''; 0 for SongGroup (for use with [[CSNG (File Format)|CSNG]]), 1 for SFXGroup.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''SoundMacro ID table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sample ID table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Tables table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Keymaps table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layers table offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| '''Normal page table''' (SongGroup) / '''SFX table offset''' (SFXGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| 4&lt;br /&gt;
| '''Drum page table offset''' (SongGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| 4&lt;br /&gt;
| '''MIDI Setup table offset''' (SongGroup)&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| colspan=2 {{unknown|End of group header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After the header are a number of data tables. &lt;br /&gt;
&lt;br /&gt;
==== SoundMacro ID Table ====&lt;br /&gt;
&lt;br /&gt;
This is a ranged-table of shorts; there's no count value, so it's terminated with a value of 0xFFFF. It's a list of SoundMacro IDs present in the file. Contiguous ranges are expressed by IDs with most-significant bit set (0x8000). The range begins on the marked ID and incrementally reaches the next ID in the list, including that ID. All other IDs are singular.&lt;br /&gt;
&lt;br /&gt;
==== Sample ID / Table / Keymap / Layer Tables ====&lt;br /&gt;
&lt;br /&gt;
These function the same way as the SoundMacro ID table, but indexes other types of entities instead.&lt;br /&gt;
&lt;br /&gt;
==== Normal / Drum Page Entry ====&lt;br /&gt;
&lt;br /&gt;
Used to map [https://www.midi.org/specifications/item/gm-level-1-sound-set General MIDI program numbers] (instruments)&lt;br /&gt;
to sound entities (macros, keymaps, layers)&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority'''; voices are limited, so priority is used to play more important sounds over others&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Max number of voices'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''GM Program Number'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Padding'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SFX Entry ====&lt;br /&gt;
&lt;br /&gt;
Used to map auto-generated &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt; IDs (used by game code) to sound entities (macros, keymaps, layers)&lt;br /&gt;
&lt;br /&gt;
This table begins with a 16-bit count value, then 16 bits of padding. Each entry in the table is 10 bytes.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''DefineID'''; referenced by game code&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''ObjectID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Priority'''; voices are limited, so priority is used to play more important sounds over others&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| 1&lt;br /&gt;
| '''Max number of voices'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 1&lt;br /&gt;
| '''Definite Velocity'''; volume (usually 7F)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| 1&lt;br /&gt;
| '''Panning'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2&lt;br /&gt;
| '''Definite Key'''; The default pitch (usually 0x3C00... the second byte may possibly be the MIDI channel)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== MIDI Setup Entry ====&lt;br /&gt;
&lt;br /&gt;
Table of fixed-length tables to map all 16 MIDI channels to program numbers &lt;br /&gt;
(in-turn resolving to sound entities via the page table).&lt;br /&gt;
&lt;br /&gt;
Multiple MIDI Setups may be created to support Song data requiring totally different&lt;br /&gt;
banks of instruments.&lt;br /&gt;
&lt;br /&gt;
Each MIDI Setup starts with a u16 '''MIDI-Setup-ID''', then 16-bits padding, then 16 entries of the following structure (one for each channel):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 1&lt;br /&gt;
| '''Program Number'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| 1&lt;br /&gt;
| '''Volume'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Panning'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reverb'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 1&lt;br /&gt;
| '''Chorus'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MIDI setups continue until the ''group end offset'' is reached.&lt;br /&gt;
&lt;br /&gt;
=== Sample ===&lt;br /&gt;
&lt;br /&gt;
The Sample chunk is all the sound data encoded using the standard Gamecube DSP ADPCM codec.  It can be decoded the same way as a [[DSP (File Format)|DSP]] file. Each sound's size is padded to 32 bytes before the next sound's data begins.&lt;br /&gt;
&lt;br /&gt;
=== Sample Directory ===&lt;br /&gt;
&lt;br /&gt;
The Sample Directory chunk (chunk 4 in Metroid Prime, chunk 3 in Metroid Prime 2) is made up of two sets of tables. The structure of both these tables is identical between both games.&lt;br /&gt;
&lt;br /&gt;
==== Table A ====&lt;br /&gt;
&lt;br /&gt;
The first metadata table has one entry per sound, and is terminated with 0xFFFFFFFF; since there's no known sound count anywhere in the file, the only way to read this correctly is to read until you reach the terminator value. Each entry is 0x20 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Padding'''; always 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Sound start offset''', relative to the start of the ADPCM chunk&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 1&lt;br /&gt;
| '''Base Note'''; Corresponds to the MIDI note played in the sample, at the native sample-rate (which MusyX obtains from the INST chunk of .aiff files or SMPL chunk of .wav files, along with looping info). To play at a specified pitch in [[wikipedia:Cent (music)|cents]], set the playback sample rate using this formula: &amp;lt;code&amp;gt;sampleRate * 2&amp;lt;sup&amp;gt;((pitch - baseNote * 100) / 1200.0)&amp;lt;/sup&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| 1&lt;br /&gt;
| '''Padding'''; always 0&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| 2&lt;br /&gt;
| '''Sample rate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 1&lt;br /&gt;
| '''Audio format''' &amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;li&amp;gt;DSP-ADPCM&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;DSP-ADPCM (Drum Sample)&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;PCM&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;N64-VADPCM (Legacy Format)&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 3&lt;br /&gt;
| '''Number of samples'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Loop start sample'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| '''Loop length''', in samples. To get the loop end sample, add this to the start sample and subtract 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 4&lt;br /&gt;
| '''Table B entry offset''', relative to the start of the sound metadata chunk&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Table B ====&lt;br /&gt;
&lt;br /&gt;
These are accessed through the offsets in table A's entries; note that it might not match the sound count, because the same entry in this table can be used with multiple sounds. Each entry is 0x28 bytes long.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| {{unknown|'''Unknown'''; always 8}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 1&lt;br /&gt;
| '''Initial predictor/scale''' (matches first frame header)&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop predictor/scale''' (matches loop start frame header)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Loop context sample history 2'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Loop context sample history 1'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 2 &amp;amp;times; 16&lt;br /&gt;
| '''Decode coefficients'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/0B9MLV21H7SDvemgwN1daYnliSjA/view?usp=sharing Prime Audio Decoder] by Aruki will dump all sound effects contained in a given AGSC file.&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Audio]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Dock_(Metroid_Prime)&amp;diff=1926</id>
		<title>Dock (Metroid Prime)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Dock_(Metroid_Prime)&amp;diff=1926"/>
				<updated>2018-05-28T00:51:45Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A '''Dock''' is a script object that handles inter-area transitions. It is responsible for loading adjacent areas and for transitioning Samus from one to the other when she passes through it. Docks are often accompanied by doors, but this is not required.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Data Type&lt;br /&gt;
! Length&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| string&lt;br /&gt;
| N&lt;br /&gt;
| '''Instance Name'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| N+0x0&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| '''Active'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| N+0x1&lt;br /&gt;
| CVector3f&lt;br /&gt;
| 12&lt;br /&gt;
| '''Position'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| N+0xD&lt;br /&gt;
| CVector3f&lt;br /&gt;
| 12&lt;br /&gt;
| '''Scale'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| N+0x19&lt;br /&gt;
| long&lt;br /&gt;
| 4&lt;br /&gt;
| '''Dock ID'''&lt;br /&gt;
| ID number for this dock instance in this area.&lt;br /&gt;
|-&lt;br /&gt;
| N+0x1D&lt;br /&gt;
| long&lt;br /&gt;
| 4&lt;br /&gt;
| '''Area ID'''&lt;br /&gt;
| [[MLVL (File Format)|MLVL]] index for this area&lt;br /&gt;
|-&lt;br /&gt;
| N+0x21&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| '''Load Connected On Initialization'''&lt;br /&gt;
| Loads the connected area upon area initialization&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== States ==&lt;br /&gt;
&lt;br /&gt;
== Messages ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Name&lt;br /&gt;
! Effect&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| Decrement&lt;br /&gt;
| Stop rendering attached area&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| Increment&lt;br /&gt;
| Start rendering attached area&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| SetToMax&lt;br /&gt;
| Load attached area&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| SetToZero&lt;br /&gt;
| Unload attached area&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Tweaks_(Metroid_Prime)&amp;diff=1902</id>
		<title>Tweaks (Metroid Prime)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Tweaks_(Metroid_Prime)&amp;diff=1902"/>
				<updated>2017-08-23T00:19:17Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Game */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The tweaks system allows for easy modification of different game values that would normally be hardcoded. In Metroid Prime, this is handled by the CTWK files located in Tweaks.Pak. The tweaks are loaded on startup. Things that can be modified through the tweaks includes:&lt;br /&gt;
&lt;br /&gt;
* The amount and type of damage done by each weapon&lt;br /&gt;
* The Hard Mode damage multiplier&lt;br /&gt;
* The field of view&lt;br /&gt;
* The world pak prefix&lt;br /&gt;
&lt;br /&gt;
...and a lot more.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== CTWK List ==&lt;br /&gt;
&lt;br /&gt;
These are all the CTWK files:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| 1d180d7c.CTWK&lt;br /&gt;
| Particle&lt;br /&gt;
|-&lt;br /&gt;
| 264a4972.CTWK&lt;br /&gt;
| Player&lt;br /&gt;
|-&lt;br /&gt;
| 33b3323a.CTWK&lt;br /&gt;
| GunRes&lt;br /&gt;
|-&lt;br /&gt;
| 39ad28d3.CTWK&lt;br /&gt;
| CameraBob&lt;br /&gt;
|-&lt;br /&gt;
| 3faec012.CTWK&lt;br /&gt;
| PlayerControls2&lt;br /&gt;
|-&lt;br /&gt;
| 5ed56350.CTWK&lt;br /&gt;
| Ball&lt;br /&gt;
|-&lt;br /&gt;
| 5f24eff8.CTWK&lt;br /&gt;
| SlideShow&lt;br /&gt;
|-&lt;br /&gt;
| 6907a32d.CTWK&lt;br /&gt;
| PlayerGun&lt;br /&gt;
|-&lt;br /&gt;
| 85ca11e9.CTWK&lt;br /&gt;
| PlayerRes&lt;br /&gt;
|-&lt;br /&gt;
| 94c76ecd.CTWK&lt;br /&gt;
| Targeting&lt;br /&gt;
|-&lt;br /&gt;
| 953a7c63.CTWK&lt;br /&gt;
| Game&lt;br /&gt;
|-&lt;br /&gt;
| c9954e56.CTWK&lt;br /&gt;
| GuiColors&lt;br /&gt;
|-&lt;br /&gt;
| e66a4f86.CTWK&lt;br /&gt;
| AutoMapper&lt;br /&gt;
|-&lt;br /&gt;
| ed2e48a9.CTWK&lt;br /&gt;
| Gui&lt;br /&gt;
|-&lt;br /&gt;
| f1ed8fd7.CTWK&lt;br /&gt;
| PlayerControls&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| string&lt;br /&gt;
| '''World pak prefix'''&lt;br /&gt;
| &amp;quot;Metroid&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|  &amp;quot;ruin_area22&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| float&lt;br /&gt;
| '''Field of View'''&lt;br /&gt;
| 55.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| true&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| false&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| true&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| bool&lt;br /&gt;
| '''Disable Splash Screens'''; Game hard codes this value to false.&lt;br /&gt;
| true&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 25.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| float&lt;br /&gt;
| '''Press Start Delay'''&lt;br /&gt;
| 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| float&lt;br /&gt;
| '''Normal Water Wavecap Intensity'''&lt;br /&gt;
| 450.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| float&lt;br /&gt;
| '''Poison Water Wavecap Intensity'''&lt;br /&gt;
| 400.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| float&lt;br /&gt;
| '''Lava Wavecap Intensity'''&lt;br /&gt;
| 1750.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| float&lt;br /&gt;
| '''Normal Water Ripple Intensity'''&lt;br /&gt;
| 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| float&lt;br /&gt;
| '''Poison Water Ripple Intensity'''&lt;br /&gt;
| 1.2&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| float&lt;br /&gt;
| '''Lava Ripple Intensity'''&lt;br /&gt;
| 0.5&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| float&lt;br /&gt;
| '''Fluid Environment Bump Scale'''&lt;br /&gt;
| 0.25&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 30.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 125.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 150.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 300.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| float&lt;br /&gt;
| '''Hard Mode damage multiplier'''&lt;br /&gt;
| 1.53&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| float&lt;br /&gt;
| '''Hard Mode weapons multiplier'''&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Tweaks_(Metroid_Prime)&amp;diff=1901</id>
		<title>Tweaks (Metroid Prime)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Tweaks_(Metroid_Prime)&amp;diff=1901"/>
				<updated>2017-08-22T23:51:59Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The tweaks system allows for easy modification of different game values that would normally be hardcoded. In Metroid Prime, this is handled by the CTWK files located in Tweaks.Pak. The tweaks are loaded on startup. Things that can be modified through the tweaks includes:&lt;br /&gt;
&lt;br /&gt;
* The amount and type of damage done by each weapon&lt;br /&gt;
* The Hard Mode damage multiplier&lt;br /&gt;
* The field of view&lt;br /&gt;
* The world pak prefix&lt;br /&gt;
&lt;br /&gt;
...and a lot more.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== CTWK List ==&lt;br /&gt;
&lt;br /&gt;
These are all the CTWK files:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File&lt;br /&gt;
! Name&lt;br /&gt;
|-&lt;br /&gt;
| 1d180d7c.CTWK&lt;br /&gt;
| Particle&lt;br /&gt;
|-&lt;br /&gt;
| 264a4972.CTWK&lt;br /&gt;
| Player&lt;br /&gt;
|-&lt;br /&gt;
| 33b3323a.CTWK&lt;br /&gt;
| GunRes&lt;br /&gt;
|-&lt;br /&gt;
| 39ad28d3.CTWK&lt;br /&gt;
| CameraBob&lt;br /&gt;
|-&lt;br /&gt;
| 3faec012.CTWK&lt;br /&gt;
| PlayerControls2&lt;br /&gt;
|-&lt;br /&gt;
| 5ed56350.CTWK&lt;br /&gt;
| Ball&lt;br /&gt;
|-&lt;br /&gt;
| 5f24eff8.CTWK&lt;br /&gt;
| SlideShow&lt;br /&gt;
|-&lt;br /&gt;
| 6907a32d.CTWK&lt;br /&gt;
| PlayerGun&lt;br /&gt;
|-&lt;br /&gt;
| 85ca11e9.CTWK&lt;br /&gt;
| PlayerRes&lt;br /&gt;
|-&lt;br /&gt;
| 94c76ecd.CTWK&lt;br /&gt;
| Targeting&lt;br /&gt;
|-&lt;br /&gt;
| 953a7c63.CTWK&lt;br /&gt;
| Game&lt;br /&gt;
|-&lt;br /&gt;
| c9954e56.CTWK&lt;br /&gt;
| GuiColors&lt;br /&gt;
|-&lt;br /&gt;
| e66a4f86.CTWK&lt;br /&gt;
| AutoMapper&lt;br /&gt;
|-&lt;br /&gt;
| ed2e48a9.CTWK&lt;br /&gt;
| Gui&lt;br /&gt;
|-&lt;br /&gt;
| f1ed8fd7.CTWK&lt;br /&gt;
| PlayerControls&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Game ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| string&lt;br /&gt;
| '''World pak prefix'''&lt;br /&gt;
| &amp;quot;Metroid&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|  &amp;quot;ruin_area22&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| float&lt;br /&gt;
| '''Field of View'''&lt;br /&gt;
| 55.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| true&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| false&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| true&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| bool&lt;br /&gt;
| '''Disable Splash Screens'''; Game hard codes this value to false.&lt;br /&gt;
| true&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 25.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x20&lt;br /&gt;
| float&lt;br /&gt;
| '''Press Start Delay'''&lt;br /&gt;
| 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x24&lt;br /&gt;
| float&lt;br /&gt;
| '''Normal Water Wavecap Intensity'''&lt;br /&gt;
| 450.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x28&lt;br /&gt;
| float&lt;br /&gt;
| '''Poison Water Wavecap Intensity'''&lt;br /&gt;
| 400.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| float&lt;br /&gt;
| '''Lava Wavecap Intensity'''&lt;br /&gt;
| 1750.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| float&lt;br /&gt;
| '''Normal Water Ripple Intensity'''&lt;br /&gt;
| 1.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| float&lt;br /&gt;
| '''Normal Water Ripple Intensity'''&lt;br /&gt;
| 1.2&lt;br /&gt;
|-&lt;br /&gt;
| 0x38&lt;br /&gt;
| float&lt;br /&gt;
| '''Lava Ripple Intensity'''&lt;br /&gt;
| 0.5&lt;br /&gt;
|-&lt;br /&gt;
| 0x3C&lt;br /&gt;
| float&lt;br /&gt;
| '''Fluid Environment Bump Scale'''&lt;br /&gt;
| 0.25&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 30.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x44&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 125.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 150.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x4C&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| 300.0&lt;br /&gt;
|-&lt;br /&gt;
| 0x50&lt;br /&gt;
| float&lt;br /&gt;
| '''Hard Mode damage multiplier'''&lt;br /&gt;
| 1.53&lt;br /&gt;
|-&lt;br /&gt;
| 0x54&lt;br /&gt;
| float&lt;br /&gt;
| '''Hard Mode weapons multiplier'''&lt;br /&gt;
| 0.5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=HINT_(File_Format)&amp;diff=1882</id>
		<title>HINT (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=HINT_(File_Format)&amp;diff=1882"/>
				<updated>2017-05-25T11:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''HINT format''' is used to manage the hint system, controlling what hints pop up, what they say, and where they point to.&lt;br /&gt;
&lt;br /&gt;
{{research|1|There are a couple unknown fields.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Magic'''; always 0x00BADBAD&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Version'''; 1 in Prime/Echoes, 3 in Corruption&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''Hint count'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| colspan=2 {{unknown|Hint entries start}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hint ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Hint name'''&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Immediate Time'''&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Normal time'''; the amount of time that passes from when the hint is activated to when it appears on the HUD&lt;br /&gt;
|-&lt;br /&gt;
| u32/u64&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pop-up text STRG ID'''; u32 in Metroid Prime 1/2, u64 in Metroid Prime 3&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Text Time'''&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Location Count'''&lt;br /&gt;
|-&lt;br /&gt;
| [[#HintLocation|HintLocation]]&lt;br /&gt;
| locationCount&lt;br /&gt;
| '''Hint Locations'''; Areas where this hint appears.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===HintLocation===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Target world MLVL ID'''&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Target room MREA ID'''&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Target room index'''&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Map text STRG ID'''&lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=HINT_(File_Format)&amp;diff=1881</id>
		<title>HINT (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=HINT_(File_Format)&amp;diff=1881"/>
				<updated>2017-05-25T11:45:20Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Hint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''HINT format''' is used to manage the hint system, controlling what hints pop up, what they say, and where they point to.&lt;br /&gt;
&lt;br /&gt;
{{research|1|There are a couple unknown fields.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Magic'''; always 0x00BADBAD&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Version'''; 1 in Prime/Echoes, 3 in Corruption&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''Hint count'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| colspan=2 {{unknown|Hint entries start}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hint ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Hint name'''&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Immediate Time'''&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Normal time'''; the amount of time that passes from when the hint is activated to when it appears on the HUD&lt;br /&gt;
|-&lt;br /&gt;
| u32/u64&lt;br /&gt;
| 1&lt;br /&gt;
| '''Pop-up text STRG ID'''; u32 in Metroid Prime 1/2, u64 in Metroid Prime 3&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Text Time'''&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Location Count'''&lt;br /&gt;
|-&lt;br /&gt;
| [[#SHintLocation|SHintLocation]]&lt;br /&gt;
| locationCount&lt;br /&gt;
| '''Hint Locations'''; Areas where this hint appears.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===SHintLocation===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Target world MLVL ID'''&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Target room MREA ID'''&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Target room index'''&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Map text STRG ID'''&lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1851</id>
		<title>Animation Events (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1851"/>
				<updated>2017-03-03T22:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Event Base */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{research|1|Some event parameters need research}}&lt;br /&gt;
'''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]].&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== File Structure (Metroid Prime 1/2) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Version'''&lt;br /&gt;
| 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).&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Loop Event|Loop Event]]&lt;br /&gt;
| ''Loop Event Count''&lt;br /&gt;
| '''Loop Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#User Event|User Event]]&lt;br /&gt;
| ''User Event Count''&lt;br /&gt;
| '''User Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect Event|Effect Event]]&lt;br /&gt;
| ''Effect Event Count''&lt;br /&gt;
| '''Effect Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound Event Count'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Sound Event|Sound Event]]&lt;br /&gt;
| ''Sound Event Count''&lt;br /&gt;
| '''Sound Events'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Event Base ===&lt;br /&gt;
&lt;br /&gt;
These parameters are common to every event type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1/2&lt;br /&gt;
! MP3&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Name'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Type'''&lt;br /&gt;
| Enumerated event type (unknown values)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Char Anim Time]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Index'''&lt;br /&gt;
| Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Weight'''&lt;br /&gt;
| The likelihood of this event being selected&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character Index'''&lt;br /&gt;
| Character index that this event should trigger for. If -1, this event triggers for all characters.&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Loop Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== User Event ===&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 1/2 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Type'''&lt;br /&gt;
| Enumerated user event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this event to (for applicable events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 3 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Frame Count'''&lt;br /&gt;
| Number of frames to run the effect emitter for&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| {{FourCC}}&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Type'''&lt;br /&gt;
| FourCC of effect's type; either [[PART (File Format)|PART]], [[SWHC (File Format)|SWHC]], or [[ELSC (File Format)|ELSC]]&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| Asset ID&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect ID'''&lt;br /&gt;
| Asset ID of the effect resource&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone ID'''&lt;br /&gt;
| ID of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Scale'''&lt;br /&gt;
| Uniform scale of the particle effect&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transform Type'''&lt;br /&gt;
| Enumerated transform-mode relating effect to actor's bone:&lt;br /&gt;
&amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter transformed to bone for initial frame, then retained&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entire effect (including particle instances) continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| Probably effect scale?&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| Probably bone ID?&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Event ===&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 1/2 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
| 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&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Amplitude'''&lt;br /&gt;
| Reference amplitude for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Distance'''&lt;br /&gt;
| Reference distance for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 3 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Asset ID ([[CAUD (File Format)|CAUD]])&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound Effect'''&lt;br /&gt;
| Sound to be played.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Unknown Typed Structure|Unknown Typed Structure]]&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Unknown Typed Structure|Unknown Typed Structure]]&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Unknown Typed Structure =====&lt;br /&gt;
&lt;br /&gt;
Contains a 32-bit type value, followed by either:&lt;br /&gt;
&lt;br /&gt;
* Type 0: Nothing&lt;br /&gt;
* Type 1: A float&lt;br /&gt;
* Type 2: A [[Maya Spline]]&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1850</id>
		<title>Animation Events (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1850"/>
				<updated>2017-03-03T22:01:00Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Event Base */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{research|1|Some event parameters need research}}&lt;br /&gt;
'''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]].&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== File Structure (Metroid Prime 1/2) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Version'''&lt;br /&gt;
| 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).&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Loop Event|Loop Event]]&lt;br /&gt;
| ''Loop Event Count''&lt;br /&gt;
| '''Loop Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#User Event|User Event]]&lt;br /&gt;
| ''User Event Count''&lt;br /&gt;
| '''User Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect Event|Effect Event]]&lt;br /&gt;
| ''Effect Event Count''&lt;br /&gt;
| '''Effect Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound Event Count'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Sound Event|Sound Event]]&lt;br /&gt;
| ''Sound Event Count''&lt;br /&gt;
| '''Sound Events'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Event Base ===&lt;br /&gt;
&lt;br /&gt;
These parameters are common to every event type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1/2&lt;br /&gt;
! MP3&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Name'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Type'''&lt;br /&gt;
| Enumerated event type (unknown values)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Char Anim Time]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Index'''&lt;br /&gt;
| Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Weight'''&lt;br /&gt;
| The likelihood of this event being selected&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character Index'''&lt;br /&gt;
| Character index that this event should trigger for. If -1, this event triggers for all characters.&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Loop Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== User Event ===&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 1/2 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Type'''&lt;br /&gt;
| Enumerated user event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this event to (for applicable events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 3 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Frame Count'''&lt;br /&gt;
| Number of frames to run the effect emitter for&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| {{FourCC}}&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Type'''&lt;br /&gt;
| FourCC of effect's type; either [[PART (File Format)|PART]], [[SWHC (File Format)|SWHC]], or [[ELSC (File Format)|ELSC]]&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| Asset ID&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect ID'''&lt;br /&gt;
| Asset ID of the effect resource&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone ID'''&lt;br /&gt;
| ID of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Scale'''&lt;br /&gt;
| Uniform scale of the particle effect&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transform Type'''&lt;br /&gt;
| Enumerated transform-mode relating effect to actor's bone:&lt;br /&gt;
&amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter transformed to bone for initial frame, then retained&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entire effect (including particle instances) continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| Probably effect scale?&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| Probably bone ID?&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Event ===&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 1/2 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
| 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&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Amplitude'''&lt;br /&gt;
| Reference amplitude for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Distance'''&lt;br /&gt;
| Reference distance for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Metroid Prime 3 ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Asset ID ([[CAUD (File Format)|CAUD]])&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound Effect'''&lt;br /&gt;
| Sound to be played.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Unknown Typed Structure|Unknown Typed Structure]]&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Unknown Typed Structure|Unknown Typed Structure]]&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Unknown Typed Structure =====&lt;br /&gt;
&lt;br /&gt;
Contains a 32-bit type value, followed by either:&lt;br /&gt;
&lt;br /&gt;
* Type 0: Nothing&lt;br /&gt;
* Type 1: A float&lt;br /&gt;
* Type 2: A [[Maya Spline]]&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=PAS_Database&amp;diff=1846</id>
		<title>PAS Database</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=PAS_Database&amp;diff=1846"/>
				<updated>2017-03-03T21:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Parameterized Animation State Database''' is an animation-related thing that appears in every Retro game. It can be found in the [[ANCS (File Format)|ANCS format]] in Metroid Prime 1 and 2, and the [[CHAR (File Format)|CHAR format]] in Metroid Prime 3, Donkey Kong Country Returns, and Donkey Kong Country: Tropical Freeze.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| {{FourCC}}&lt;br /&gt;
| 1&lt;br /&gt;
| '''Magic'''&lt;br /&gt;
| Always &amp;lt;code&amp;gt;PAS4&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Anim State Count'''&lt;br /&gt;
| Number of anim states&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Default Anim State'''&lt;br /&gt;
| Anim state used by the character by default. If there are no anim states, this will be set to -1.&lt;br /&gt;
|-&lt;br /&gt;
| [[#Anim State|Anim State]]&lt;br /&gt;
| ''Anim State Count''&lt;br /&gt;
| '''Anim State Array'''&lt;br /&gt;
| Array of anim states.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Anim State ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Parm Info Count'''&lt;br /&gt;
| Number of parameters&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Anim Info Count'''&lt;br /&gt;
| Number of animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#Parm Info|Parm Info]]&lt;br /&gt;
| ''Parm Info Count''&lt;br /&gt;
| '''Parm Info Array'''&lt;br /&gt;
| Describes parameters in this anim state&lt;br /&gt;
|-&lt;br /&gt;
| [[#Anim Info|Anim Info]]&lt;br /&gt;
| ''Anim Info Count''&lt;br /&gt;
| '''Anim Info Array'''&lt;br /&gt;
| Describes animations in this anim state&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parm Info ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#Parm Type|'''Parm Type''']]&lt;br /&gt;
| Parameter type. This value controls the type of other values in the Parm Info and Anim Info structures.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#Weight Function|'''Weight Function''']]&lt;br /&gt;
| Specifies the weighting algorithm used for this parameter during selection.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Weight&lt;br /&gt;
| Specifies how much influence this parameter has during selection.&lt;br /&gt;
|-&lt;br /&gt;
| ''Parm Type''&lt;br /&gt;
| 1&lt;br /&gt;
| Min Value&lt;br /&gt;
| Minimum value this parameter can represent, the exact meaning depends on the context within the class implementation that uses it.&lt;br /&gt;
|-&lt;br /&gt;
| ''Parm Type''&lt;br /&gt;
| 1&lt;br /&gt;
| Max Value&lt;br /&gt;
| Maximum value this parameter can represent, the exact meaning depends on the context within the class implementation that uses it.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Anim Info ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Anim ID'''&lt;br /&gt;
| This is a character-relative anim index. This should be indexed into the character's anim list to get the animset-relative index.&lt;br /&gt;
|-&lt;br /&gt;
| ''Parm Type''&lt;br /&gt;
| ''Parm Info Count''&lt;br /&gt;
| '''Parm Values Array'''&lt;br /&gt;
| This array contains one value per Parm Info. The type of each value is determined by the corresponding Parm Info's ''Parm Type'' value.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parm Type ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Int32&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Uint32&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Real&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Bool&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Enum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Weight Function ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| ExactMatch&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PercentError&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| AngularPercent&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| NoWeight&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime Demo]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2 Demo]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3 Prototype]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;br /&gt;
[[Category:Donkey Kong Country: Tropical Freeze]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1680</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1680"/>
				<updated>2016-09-10T02:29:21Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* MetaAnimation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Character Info Pairs&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfoPair ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Id&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| Character Info&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Parented Mode&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimationPair|AdditiveAnimationPair]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default additive&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Play|Play]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Play&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Play====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimationPair===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimaton|AdditiveAnimation]]&lt;br /&gt;
| Additive Animation fade-in, fade-out values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Describes how animations are additively blended together.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade In Duration&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade Out Duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1679</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1679"/>
				<updated>2016-09-10T02:28:53Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Primitive */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Character Info Pairs&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfoPair ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Id&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| Character Info&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Parented Mode&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimationPair|AdditiveAnimationPair]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default additive&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Play&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Play====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimationPair===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimaton|AdditiveAnimation]]&lt;br /&gt;
| Additive Animation fade-in, fade-out values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Describes how animations are additively blended together.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade In Duration&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade Out Duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1678</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1678"/>
				<updated>2016-09-10T02:28:36Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* EMetaAnimationType */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Character Info Pairs&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfoPair ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Id&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| Character Info&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Parented Mode&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimationPair|AdditiveAnimationPair]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default additive&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Play&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimationPair===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimaton|AdditiveAnimation]]&lt;br /&gt;
| Additive Animation fade-in, fade-out values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Describes how animations are additively blended together.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade In Duration&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade Out Duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1677</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1677"/>
				<updated>2016-09-10T02:26:58Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* EffectComponent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Character Info Pairs&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfoPair ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Id&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| Character Info&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Parented Mode&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimationPair|AdditiveAnimationPair]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default additive&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimationPair===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimaton|AdditiveAnimation]]&lt;br /&gt;
| Additive Animation fade-in, fade-out values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Describes how animations are additively blended together.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade In Duration&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade Out Duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1676</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1676"/>
				<updated>2016-09-10T02:21:51Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* EffectComponent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Character Info Pairs&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfoPair ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Id&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| Character Info&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimationPair|AdditiveAnimationPair]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default additive&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimationPair===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimaton|AdditiveAnimation]]&lt;br /&gt;
| Additive Animation fade-in, fade-out values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Describes how animations are additively blended together.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade In Duration&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade Out Duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=UV_Animations&amp;diff=1670</id>
		<title>UV Animations</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=UV_Animations&amp;diff=1670"/>
				<updated>2016-09-03T07:27:20Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Animation Modes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''UV animations''' are used to animate texture coordinates. They're present in the material data of the Metroid Prime trilogy and Donkey Kong Country Returns. There are 13 animation types across those four games.&lt;br /&gt;
&lt;br /&gt;
{{research|moderate|Modes 8/10/11/12/13 are unknown}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
UV animations generally contain an int indicating what animation type they are, followed by float parameters. The number of parameters depends on the animation mode; some modes don't have any parameters while some have as many as 9.&lt;br /&gt;
&lt;br /&gt;
=== Metroid Prime 1/2 ===&lt;br /&gt;
&lt;br /&gt;
At the end of the material data, there's a 32-bit animations size value, then an animation count. Each animation is structured as:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Animation type'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| float[]&lt;br /&gt;
| -&lt;br /&gt;
| '''Parameters'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Metroid Prime 3/Donkey Kong Country Returns ===&lt;br /&gt;
&lt;br /&gt;
Animations are located at the end of each PASS section. There's no animation count; instead, one animation can be supplied per pass and can be directly associated with that pass. Like Prime 1, the animation data follows a 32-bit animations size value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Animation Mode'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| float[]&lt;br /&gt;
| -&lt;br /&gt;
| '''Parameters'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Animation Modes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Mode&lt;br /&gt;
! Name&lt;br /&gt;
! Params&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| [[#Mode_0:_Inverse ModelView Matrix (No Translation)|Inverse ModelView Matrix (No Translation)]]&lt;br /&gt;
| 0&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| [[#Mode_1:_Inverse ModelView Matrix|Inverse ModelView Matrix]]&lt;br /&gt;
| 0&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| [[#Mode_2:_UV Scroll|UV Scroll]]&lt;br /&gt;
| 4&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| [[#Mode_3:_Rotation|Rotation]]&lt;br /&gt;
| 2&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| [[#Mode_4/5:_Horizontal/Vertical_Filmstrip|Horizontal Filmstrip]]&lt;br /&gt;
| 4&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| [[#Mode_4/5:_Horizontal/Vertical_Filmstrip|Vertical Filmstrip]]&lt;br /&gt;
| 4&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| [[#Mode_6:_Model Matrix|Model Matrix]]&lt;br /&gt;
| 0&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| [[#Mode_7:_Cylinder Environment|Cylinder Environment]]&lt;br /&gt;
| 2&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| {{unknown|Unknown mode}}&lt;br /&gt;
| 9&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| {{unknown|[[#Mode_10:_Another_reflection_mode|Another reflection mode]]}}&lt;br /&gt;
| 0&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| {{unknown|Unknown mode}}&lt;br /&gt;
| 2&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| {{unknown|Unknown mode}}&lt;br /&gt;
| 2&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| {{unknown|Unknown mode}}&lt;br /&gt;
| 2&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For all of the following modes, ''s'' refers to ''seconds mod 900''.&lt;br /&gt;
&lt;br /&gt;
==== Mode 0: Inverse ModelView Matrix (No Translation) ====&lt;br /&gt;
&lt;br /&gt;
This mode is commonly used with vertex normals to simulate reflective surfaces using spheremaps that move with the camera. It takes no parameters, and will generate both a texture matrix and a post-transform matrix. Translation is ignored.&lt;br /&gt;
&lt;br /&gt;
The texture matrix is calculated like this. Note that the multiplication of the view matrix by the model matrix should be modified slightly rather than being a straight multiplication to ignore translation on the model matrix. (The game uses a function called MultiplyIgnoreTranslation for this.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;texmtx = inverse(ViewMatrix) * ModelMatrix;&lt;br /&gt;
texmtx[0][3] = texmtx[1][3] = texmtx[2][3] = 0;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-transform matrix is a constant value. The purpose of it is to adjust the normalized texture coordinates so that they range from 0 to 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.5, 0.0, 0.0, 0.5,&lt;br /&gt;
0.0, 0.0, 0.5, 0.5,&lt;br /&gt;
0.0, 0.0, 0.0, 1.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 1: Inverse ModelView Matrix ====&lt;br /&gt;
&lt;br /&gt;
This mode is nearly identical to mode 0; the only difference is that translation is left as-is. The multiplication of the view matrix by the model matrix actually is a straight multiplication in this mode, and the translation values on the texture matrix aren't set to 0.&lt;br /&gt;
&lt;br /&gt;
==== Mode 2: UV Scroll ====&lt;br /&gt;
&lt;br /&gt;
This mode is used to scroll both U and V at the same time. It will only generate a texture matrix. It has four float parameters: ''offsetA'', ''offsetB'', ''scaleA'', and ''scaleB''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;uOffset = (s * scaleA) + offsetA;&lt;br /&gt;
vOffset = (s * scaleB) + offsetB;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 3: Rotation ====&lt;br /&gt;
&lt;br /&gt;
This mode rotates the texture. It will only generate a texture matrix. It has two float parameters: ''offset'' and ''scale''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;float angle = (s * scale) + offset;&lt;br /&gt;
float acos = cos(angle);&lt;br /&gt;
float asin = sin(angle);&lt;br /&gt;
float translateX = (1.0 - (acos - asin)) * 0.5;&lt;br /&gt;
float translateY = (1.0 - (asin + acos)) * 0.5;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting texture matrix is laid out as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;acos, -asin, 0.0, translateX,&lt;br /&gt;
asin,  acos, 0.0, translateY,&lt;br /&gt;
 0.0,   0.0, 1.0,        0.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 4/5: Horizontal/Vertical Filmstrip ====&lt;br /&gt;
&lt;br /&gt;
These modes can be used to create a filmstrip-like effect. The texture steps a set distance each animation frame, rather than the scroll being smoothly interpolated every game frame. The same calculation is done for both modes, with the only difference being whether the calculated offset is applied to the U or V coordinate. It will only generate a texture matrix. There are four float parameters: ''scale'', ''numFrames'', ''step'', and ''offset''.&lt;br /&gt;
&lt;br /&gt;
The animation is made up of a number of pseudo-frames, where ''step'' controls the amount that the texture scrolls by each frame, and ''numFrames'' sets how many frames are iterated through before resetting back to 0. ''scale'' roughly controls animation playback speed, and ''offset'' modifies the time input value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;float value = step * scale * (offset + s);&lt;br /&gt;
float uv_offset = (float)(short)(float)(numFrames * fmod(value, 1.0f)) * step;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 6: Model Matrix ====&lt;br /&gt;
&lt;br /&gt;
This mode is similar to modes 0 and 1 in that it simulates reflective surfaces, but it only takes the model matrix into account, which means camera movement doesn't affect the reflection. It takes no parameters and it generates both a texture matrix and a post-transform matrix.&lt;br /&gt;
&lt;br /&gt;
The texture matrix is simply the model matrix, with the translation values set to 0. The post-transform matrix is set to the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.5, 0.0, 0.0, ModelMatrix[0][3] * 0.50000001,&lt;br /&gt;
0.0, 0.0, 0.5, ModelMatrix[1][3] * 0.5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 7: Cylinder Environment ====&lt;br /&gt;
&lt;br /&gt;
Mode 7 takes two parameters and generates both a texture matrix and a post-transform matrix, projecting the UVs onto the surface of a cylinder, used almost exclusively on pipes.&lt;br /&gt;
&lt;br /&gt;
The texture matrix is generated the same way as in mode 0; translation is ignored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;texmtx = inverse(ViewMatrix) * ModelMatrix;&lt;br /&gt;
texmtx[0][3] = texmtx[1][3] = texmtx[2][3] = 0;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-transform matrix is where it gets a little complicated. A little math is required to calculate some values:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;float xy = ((ViewMatrix[0][3] + ViewMatrix[1][3]) * 0.025f * ParamB;&lt;br /&gt;
xy = (xy - (int) xy); // This truncates the integer portion of the value, leaving only the fractional part (mantissa).&lt;br /&gt;
&lt;br /&gt;
float z = ViewMatrix[2][3] * 0.05f * ParamB;&lt;br /&gt;
z = (z - (int) z);&lt;br /&gt;
&lt;br /&gt;
float halfA = ParamA * 0.5f;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-transform matrix is then constructed as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;halfA, 0.0f,  0.0f,  xy,&lt;br /&gt;
 0.0f, 0.0f, halfA,   z,&lt;br /&gt;
 0.0f, 0.0f,  0.0f, 1.0f&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 10: Another reflection mode ====&lt;br /&gt;
&lt;br /&gt;
This one needs more research done, but the only thing the game does with this mode is load this post-transform matrix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.5, 0.0, 0.0, 0.5,&lt;br /&gt;
0.0, 0.0, 0.5, 0.5,&lt;br /&gt;
0.0, 0.0, 0.0, 1.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The function of this matrix is to transform normalized texture coords so that they range from 0 to 1, instead of from -1 to 1. This mode seems to work well with mode 0's settings, though, so it's possible that the game is creating a texture matrix somewhere else. This needs some looking into.&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=UV_Animations&amp;diff=1669</id>
		<title>UV Animations</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=UV_Animations&amp;diff=1669"/>
				<updated>2016-09-03T07:26:42Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Mode 7: Convoluted reflection mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''UV animations''' are used to animate texture coordinates. They're present in the material data of the Metroid Prime trilogy and Donkey Kong Country Returns. There are 13 animation types across those four games.&lt;br /&gt;
&lt;br /&gt;
{{research|moderate|Modes 8/10/11/12/13 are unknown}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
UV animations generally contain an int indicating what animation type they are, followed by float parameters. The number of parameters depends on the animation mode; some modes don't have any parameters while some have as many as 9.&lt;br /&gt;
&lt;br /&gt;
=== Metroid Prime 1/2 ===&lt;br /&gt;
&lt;br /&gt;
At the end of the material data, there's a 32-bit animations size value, then an animation count. Each animation is structured as:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Animation type'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| float[]&lt;br /&gt;
| -&lt;br /&gt;
| '''Parameters'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Metroid Prime 3/Donkey Kong Country Returns ===&lt;br /&gt;
&lt;br /&gt;
Animations are located at the end of each PASS section. There's no animation count; instead, one animation can be supplied per pass and can be directly associated with that pass. Like Prime 1, the animation data follows a 32-bit animations size value.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Animation Mode'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| float[]&lt;br /&gt;
| -&lt;br /&gt;
| '''Parameters'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Animation Modes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Mode&lt;br /&gt;
! Name&lt;br /&gt;
! Params&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| [[#Mode_0:_Inverse ModelView Matrix (No Translation)|Inverse ModelView Matrix (No Translation)]]&lt;br /&gt;
| 0&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| [[#Mode_1:_Inverse ModelView Matrix|Inverse ModelView Matrix]]&lt;br /&gt;
| 0&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| [[#Mode_2:_UV Scroll|UV Scroll]]&lt;br /&gt;
| 4&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| [[#Mode_3:_Rotation|Rotation]]&lt;br /&gt;
| 2&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| [[#Mode_4/5:_Horizontal/Vertical_Filmstrip|Horizontal Filmstrip]]&lt;br /&gt;
| 4&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| [[#Mode_4/5:_Horizontal/Vertical_Filmstrip|Vertical Filmstrip]]&lt;br /&gt;
| 4&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| [[#Mode_6:_Model Matrix|Model Matrix]]&lt;br /&gt;
| 0&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| [[#Mode_7:_Convoluted reflection mode|Convoluted reflection mode]]&lt;br /&gt;
| 2&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| {{unknown|Unknown mode}}&lt;br /&gt;
| 9&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| {{unknown|[[#Mode_10:_Another_reflection_mode|Another reflection mode]]}}&lt;br /&gt;
| 0&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| {{unknown|Unknown mode}}&lt;br /&gt;
| 2&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| {{unknown|Unknown mode}}&lt;br /&gt;
| 2&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| {{unknown|Unknown mode}}&lt;br /&gt;
| 2&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For all of the following modes, ''s'' refers to ''seconds mod 900''.&lt;br /&gt;
&lt;br /&gt;
==== Mode 0: Inverse ModelView Matrix (No Translation) ====&lt;br /&gt;
&lt;br /&gt;
This mode is commonly used with vertex normals to simulate reflective surfaces using spheremaps that move with the camera. It takes no parameters, and will generate both a texture matrix and a post-transform matrix. Translation is ignored.&lt;br /&gt;
&lt;br /&gt;
The texture matrix is calculated like this. Note that the multiplication of the view matrix by the model matrix should be modified slightly rather than being a straight multiplication to ignore translation on the model matrix. (The game uses a function called MultiplyIgnoreTranslation for this.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;texmtx = inverse(ViewMatrix) * ModelMatrix;&lt;br /&gt;
texmtx[0][3] = texmtx[1][3] = texmtx[2][3] = 0;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-transform matrix is a constant value. The purpose of it is to adjust the normalized texture coordinates so that they range from 0 to 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.5, 0.0, 0.0, 0.5,&lt;br /&gt;
0.0, 0.0, 0.5, 0.5,&lt;br /&gt;
0.0, 0.0, 0.0, 1.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 1: Inverse ModelView Matrix ====&lt;br /&gt;
&lt;br /&gt;
This mode is nearly identical to mode 0; the only difference is that translation is left as-is. The multiplication of the view matrix by the model matrix actually is a straight multiplication in this mode, and the translation values on the texture matrix aren't set to 0.&lt;br /&gt;
&lt;br /&gt;
==== Mode 2: UV Scroll ====&lt;br /&gt;
&lt;br /&gt;
This mode is used to scroll both U and V at the same time. It will only generate a texture matrix. It has four float parameters: ''offsetA'', ''offsetB'', ''scaleA'', and ''scaleB''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;uOffset = (s * scaleA) + offsetA;&lt;br /&gt;
vOffset = (s * scaleB) + offsetB;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 3: Rotation ====&lt;br /&gt;
&lt;br /&gt;
This mode rotates the texture. It will only generate a texture matrix. It has two float parameters: ''offset'' and ''scale''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;float angle = (s * scale) + offset;&lt;br /&gt;
float acos = cos(angle);&lt;br /&gt;
float asin = sin(angle);&lt;br /&gt;
float translateX = (1.0 - (acos - asin)) * 0.5;&lt;br /&gt;
float translateY = (1.0 - (asin + acos)) * 0.5;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The resulting texture matrix is laid out as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;acos, -asin, 0.0, translateX,&lt;br /&gt;
asin,  acos, 0.0, translateY,&lt;br /&gt;
 0.0,   0.0, 1.0,        0.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 4/5: Horizontal/Vertical Filmstrip ====&lt;br /&gt;
&lt;br /&gt;
These modes can be used to create a filmstrip-like effect. The texture steps a set distance each animation frame, rather than the scroll being smoothly interpolated every game frame. The same calculation is done for both modes, with the only difference being whether the calculated offset is applied to the U or V coordinate. It will only generate a texture matrix. There are four float parameters: ''scale'', ''numFrames'', ''step'', and ''offset''.&lt;br /&gt;
&lt;br /&gt;
The animation is made up of a number of pseudo-frames, where ''step'' controls the amount that the texture scrolls by each frame, and ''numFrames'' sets how many frames are iterated through before resetting back to 0. ''scale'' roughly controls animation playback speed, and ''offset'' modifies the time input value.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;float value = step * scale * (offset + s);&lt;br /&gt;
float uv_offset = (float)(short)(float)(numFrames * fmod(value, 1.0f)) * step;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 6: Model Matrix ====&lt;br /&gt;
&lt;br /&gt;
This mode is similar to modes 0 and 1 in that it simulates reflective surfaces, but it only takes the model matrix into account, which means camera movement doesn't affect the reflection. It takes no parameters and it generates both a texture matrix and a post-transform matrix.&lt;br /&gt;
&lt;br /&gt;
The texture matrix is simply the model matrix, with the translation values set to 0. The post-transform matrix is set to the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.5, 0.0, 0.0, ModelMatrix[0][3] * 0.50000001,&lt;br /&gt;
0.0, 0.0, 0.5, ModelMatrix[1][3] * 0.5&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 7: Cylinder Environment ====&lt;br /&gt;
&lt;br /&gt;
Mode 7 takes two parameters and generates both a texture matrix and a post-transform matrix, projecting the UVs onto the surface of a cylinder, used almost exclusively on pipes.&lt;br /&gt;
&lt;br /&gt;
The texture matrix is generated the same way as in mode 0; translation is ignored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;texmtx = inverse(ViewMatrix) * ModelMatrix;&lt;br /&gt;
texmtx[0][3] = texmtx[1][3] = texmtx[2][3] = 0;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-transform matrix is where it gets a little complicated. A little math is required to calculate some values:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;float xy = ((ViewMatrix[0][3] + ViewMatrix[1][3]) * 0.025f * ParamB;&lt;br /&gt;
xy = (xy - (int) xy); // This truncates the integer portion of the value, leaving only the fractional part (mantissa).&lt;br /&gt;
&lt;br /&gt;
float z = ViewMatrix[2][3] * 0.05f * ParamB;&lt;br /&gt;
z = (z - (int) z);&lt;br /&gt;
&lt;br /&gt;
float halfA = ParamA * 0.5f;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The post-transform matrix is then constructed as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;halfA, 0.0f,  0.0f,  xy,&lt;br /&gt;
 0.0f, 0.0f, halfA,   z,&lt;br /&gt;
 0.0f, 0.0f,  0.0f, 1.0f&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mode 10: Another reflection mode ====&lt;br /&gt;
&lt;br /&gt;
This one needs more research done, but the only thing the game does with this mode is load this post-transform matrix:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.5, 0.0, 0.0, 0.5,&lt;br /&gt;
0.0, 0.0, 0.5, 0.5,&lt;br /&gt;
0.0, 0.0, 0.0, 1.0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The function of this matrix is to transform normalized texture coords so that they range from 0 to 1, instead of from -1 to 1. This mode seems to work well with mode 0's settings, though, so it's possible that the game is creating a texture matrix somewhere else. This needs some looking into.&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1668</id>
		<title>Animation Events (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1668"/>
				<updated>2016-09-02T07:25:39Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* TimeType */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{research|1|Some event parameters need research}}&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Version'''&lt;br /&gt;
| 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).&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Loop Event|Loop Event]]&lt;br /&gt;
| ''Loop Event Count''&lt;br /&gt;
| '''Loop Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#User Event|User Event]]&lt;br /&gt;
| ''User Event Count''&lt;br /&gt;
| '''User Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect Event|Effect Event]]&lt;br /&gt;
| ''Effect Event Count''&lt;br /&gt;
| '''Effect Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound Event Count'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Sound Event|Sound Event]]&lt;br /&gt;
| ''Sound Event Count''&lt;br /&gt;
| '''Sound Events'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Event Base ===&lt;br /&gt;
&lt;br /&gt;
These parameters are common to every event type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Name'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Type'''&lt;br /&gt;
| Enumerated event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| [[#CCharAnimTime|CCharAnimTime]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Index'''&lt;br /&gt;
| Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap)&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Weight'''&lt;br /&gt;
| The likelihood of this event being selected&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character Index'''&lt;br /&gt;
| Character index that this event should trigger for. If -1, this event triggers for all characters.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====CCharAnimTime====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
|-&lt;br /&gt;
| [[#TimeType|TimeType]]&lt;br /&gt;
| 1&lt;br /&gt;
| Value Type&lt;br /&gt;
| Describes the current status of the time value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====TimeType=====&lt;br /&gt;
TimeType describes the current status of the animation time, e.g: Non-zero, Increasing from zero, Staying at zero, Decreasing to zero, or Infinity,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| NonZero&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ZeroIncreasing&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| ZeroSteady&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| ZeroDecreasing&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Infinity&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Loop Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== User Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Type'''&lt;br /&gt;
| Enumerated user event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this event to (for applicable events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Frame Count'''&lt;br /&gt;
| Number of frames to run the effect emitter for&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| 4&lt;br /&gt;
| '''Effect Type'''&lt;br /&gt;
| FourCC of effect's type; either [[PART (File Format)|PART]], [[SWHC (File Format)|SWHC]], or [[ELSC (File Format)|ELSC]]&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| Asset ID&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect ID'''&lt;br /&gt;
| Asset ID of the effect resource&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone ID'''&lt;br /&gt;
| ID of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Scale'''&lt;br /&gt;
| Uniform scale of the particle effect&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transform Type'''&lt;br /&gt;
| Enumerated transform-mode relating effect to actor's bone:&lt;br /&gt;
&amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter transformed to bone for initial frame, then retained&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entire effect (including particle instances) continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
| 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&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Amplitude'''&lt;br /&gt;
| Reference amplitude for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Distance'''&lt;br /&gt;
| Reference distance for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1667</id>
		<title>Animation Events (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1667"/>
				<updated>2016-09-02T07:24:09Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* ==TimeType */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{research|1|Some event parameters need research}}&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Version'''&lt;br /&gt;
| 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).&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Loop Event|Loop Event]]&lt;br /&gt;
| ''Loop Event Count''&lt;br /&gt;
| '''Loop Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#User Event|User Event]]&lt;br /&gt;
| ''User Event Count''&lt;br /&gt;
| '''User Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect Event|Effect Event]]&lt;br /&gt;
| ''Effect Event Count''&lt;br /&gt;
| '''Effect Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound Event Count'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Sound Event|Sound Event]]&lt;br /&gt;
| ''Sound Event Count''&lt;br /&gt;
| '''Sound Events'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Event Base ===&lt;br /&gt;
&lt;br /&gt;
These parameters are common to every event type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Name'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Type'''&lt;br /&gt;
| Enumerated event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| [[#CCharAnimTime|CCharAnimTime]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Index'''&lt;br /&gt;
| Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap)&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Weight'''&lt;br /&gt;
| The likelihood of this event being selected&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character Index'''&lt;br /&gt;
| Character index that this event should trigger for. If -1, this event triggers for all characters.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====CCharAnimTime====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
|-&lt;br /&gt;
| [[#TimeType|TimeType]]&lt;br /&gt;
| 1&lt;br /&gt;
| Value Type&lt;br /&gt;
| Describes the current status of the time value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====TimeType=====&lt;br /&gt;
TimeType describes the current status of the animation time, e.g: Non-zero, Increasing from zero, Staying at zero, Decreasing to zero, or Infinity,&lt;br /&gt;
the ordering fo&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| NonZero&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ZeroIncreasing&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| ZeroSteady&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| ZeroDecreasing&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Infinity&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Loop Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== User Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Type'''&lt;br /&gt;
| Enumerated user event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this event to (for applicable events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Frame Count'''&lt;br /&gt;
| Number of frames to run the effect emitter for&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| 4&lt;br /&gt;
| '''Effect Type'''&lt;br /&gt;
| FourCC of effect's type; either [[PART (File Format)|PART]], [[SWHC (File Format)|SWHC]], or [[ELSC (File Format)|ELSC]]&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| Asset ID&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect ID'''&lt;br /&gt;
| Asset ID of the effect resource&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone ID'''&lt;br /&gt;
| ID of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Scale'''&lt;br /&gt;
| Uniform scale of the particle effect&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transform Type'''&lt;br /&gt;
| Enumerated transform-mode relating effect to actor's bone:&lt;br /&gt;
&amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter transformed to bone for initial frame, then retained&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entire effect (including particle instances) continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
| 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&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Amplitude'''&lt;br /&gt;
| Reference amplitude for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Distance'''&lt;br /&gt;
| Reference distance for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1666</id>
		<title>Animation Events (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1666"/>
				<updated>2016-09-02T07:23:58Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* =CCharAnimTime */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{research|1|Some event parameters need research}}&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Version'''&lt;br /&gt;
| 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).&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Loop Event|Loop Event]]&lt;br /&gt;
| ''Loop Event Count''&lt;br /&gt;
| '''Loop Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#User Event|User Event]]&lt;br /&gt;
| ''User Event Count''&lt;br /&gt;
| '''User Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect Event|Effect Event]]&lt;br /&gt;
| ''Effect Event Count''&lt;br /&gt;
| '''Effect Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound Event Count'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Sound Event|Sound Event]]&lt;br /&gt;
| ''Sound Event Count''&lt;br /&gt;
| '''Sound Events'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Event Base ===&lt;br /&gt;
&lt;br /&gt;
These parameters are common to every event type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Name'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Type'''&lt;br /&gt;
| Enumerated event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| [[#CCharAnimTime|CCharAnimTime]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Index'''&lt;br /&gt;
| Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap)&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Weight'''&lt;br /&gt;
| The likelihood of this event being selected&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character Index'''&lt;br /&gt;
| Character index that this event should trigger for. If -1, this event triggers for all characters.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====CCharAnimTime====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
|-&lt;br /&gt;
| [[#TimeType|TimeType]]&lt;br /&gt;
| 1&lt;br /&gt;
| Value Type&lt;br /&gt;
| Describes the current status of the time value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====TimeType===&lt;br /&gt;
TimeType describes the current status of the animation time, e.g: Non-zero, Increasing from zero, Staying at zero, Decreasing to zero, or Infinity,&lt;br /&gt;
the ordering fo&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| NonZero&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ZeroIncreasing&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| ZeroSteady&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| ZeroDecreasing&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Infinity&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Loop Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== User Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Type'''&lt;br /&gt;
| Enumerated user event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this event to (for applicable events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Frame Count'''&lt;br /&gt;
| Number of frames to run the effect emitter for&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| 4&lt;br /&gt;
| '''Effect Type'''&lt;br /&gt;
| FourCC of effect's type; either [[PART (File Format)|PART]], [[SWHC (File Format)|SWHC]], or [[ELSC (File Format)|ELSC]]&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| Asset ID&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect ID'''&lt;br /&gt;
| Asset ID of the effect resource&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone ID'''&lt;br /&gt;
| ID of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Scale'''&lt;br /&gt;
| Uniform scale of the particle effect&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transform Type'''&lt;br /&gt;
| Enumerated transform-mode relating effect to actor's bone:&lt;br /&gt;
&amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter transformed to bone for initial frame, then retained&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entire effect (including particle instances) continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
| 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&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Amplitude'''&lt;br /&gt;
| Reference amplitude for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Distance'''&lt;br /&gt;
| Reference distance for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1665</id>
		<title>Animation Events (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1665"/>
				<updated>2016-09-02T07:23:37Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Event Base */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{research|1|Some event parameters need research}}&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Version'''&lt;br /&gt;
| 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).&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Loop Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Loop Event|Loop Event]]&lt;br /&gt;
| ''Loop Event Count''&lt;br /&gt;
| '''Loop Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#User Event|User Event]]&lt;br /&gt;
| ''User Event Count''&lt;br /&gt;
| '''User Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Event Count'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect Event|Effect Event]]&lt;br /&gt;
| ''Effect Event Count''&lt;br /&gt;
| '''Effect Events'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound Event Count'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Sound Event|Sound Event]]&lt;br /&gt;
| ''Sound Event Count''&lt;br /&gt;
| '''Sound Events'''&lt;br /&gt;
| Not present in version 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Event Base ===&lt;br /&gt;
&lt;br /&gt;
These parameters are common to every event type.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Name'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Type'''&lt;br /&gt;
| Enumerated event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| [[#CCharAnimTime|CCharAnimTime]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Index'''&lt;br /&gt;
| Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap)&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Weight'''&lt;br /&gt;
| The likelihood of this event being selected&lt;br /&gt;
|-&lt;br /&gt;
| s32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character Index'''&lt;br /&gt;
| Character index that this event should trigger for. If -1, this event triggers for all characters.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====CCharAnimTime===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Timestamp'''&lt;br /&gt;
| Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
|-&lt;br /&gt;
| [[#TimeType|TimeType]]&lt;br /&gt;
| 1&lt;br /&gt;
| Value Type&lt;br /&gt;
| Describes the current status of the time value&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====TimeType===&lt;br /&gt;
TimeType describes the current status of the animation time, e.g: Non-zero, Increasing from zero, Staying at zero, Decreasing to zero, or Infinity,&lt;br /&gt;
the ordering fo&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| NonZero&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| ZeroIncreasing&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| ZeroSteady&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| ZeroDecreasing&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Infinity&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Loop Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== User Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''User Event Type'''&lt;br /&gt;
| Enumerated user event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this event to (for applicable events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Frame Count'''&lt;br /&gt;
| Number of frames to run the effect emitter for&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| 4&lt;br /&gt;
| '''Effect Type'''&lt;br /&gt;
| FourCC of effect's type; either [[PART (File Format)|PART]], [[SWHC (File Format)|SWHC]], or [[ELSC (File Format)|ELSC]]&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| Asset ID&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect ID'''&lt;br /&gt;
| Asset ID of the effect resource&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone Name'''&lt;br /&gt;
| Name of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Bone ID'''&lt;br /&gt;
| ID of the [[CINF (File Format)|CINF]] bone to attach this effect to&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Effect Scale'''&lt;br /&gt;
| Uniform scale of the particle effect&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Transform Type'''&lt;br /&gt;
| Enumerated transform-mode relating effect to actor's bone:&lt;br /&gt;
&amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter transformed to bone for initial frame, then retained&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Emitter continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entire effect (including particle instances) continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Name&lt;br /&gt;
! Notes&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#Event Base|Event Base]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Event Base'''&lt;br /&gt;
| &lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Sound ID'''&lt;br /&gt;
| 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&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Amplitude'''&lt;br /&gt;
| Reference amplitude for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| '''Reference Distance'''&lt;br /&gt;
| Reference distance for audio attenuation&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
| &lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1656</id>
		<title>CHAR (Metroid Prime 3)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1656"/>
				<updated>2016-08-23T20:58:55Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: Grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
{{research|major|This format hasn't been researched/documented very well yet, but it appears to be extremely similar to ANCS.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|Character Info]]&lt;br /&gt;
| Specific settings and resources used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|Animation Set]]&lt;br /&gt;
| Events, Animations, and Hitbox related settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CharacterInfo===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character name'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL (File Format)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character model'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR (File Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skin'''&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Overlay|Overlays]]&lt;br /&gt;
| overlay_count&lt;br /&gt;
| Overlays used for various status effects, such as Frozen, Hazard, or Hyper&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF (File Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skeleton'''&lt;br /&gt;
|-&lt;br /&gt;
| [[SAND (File Format)|SAND]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character sand'''&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation Set Database&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|Particle Resource Data]]&lt;br /&gt;
| 1&lt;br /&gt;
| Various Particle Systems used by this character.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Overlay====&lt;br /&gt;
Overlays are external models that are skinned and attached to the rig for certain status effects, the layout simply consists of a FourCC value, a CMDL reference, and a CSKR reference.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| The type of status effect this overlay is for, &amp;lt;code&amp;gt;FRZN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HYPR&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;HZRD&amp;lt;/code&amp;gt; are known values, there may be more&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[CMDL (File Format)|CMDL]] id&lt;br /&gt;
|- &lt;br /&gt;
| u64&lt;br /&gt;
| [[CSKR (File Format)|CSKR]] id&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
Particle Resource data is simply a list of particle systems that can be used with this character.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[PART (File Format)|PART]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| part_count&lt;br /&gt;
| [[PART (File Format)|PART]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| swhc_count&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| elsc_count&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| spsc_count&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationSet===&lt;br /&gt;
The Animation Set saw the largest change from Metroid Prime 1/2, gone are Transitions, Half Transitions and AdditiveInfo, EVNT was overhauled, AABBs were moved from CharacterInfo, and Hitboxes were added.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#EVNT|EVNT]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EVNT|EVNT]]&lt;br /&gt;
| evnt_count&lt;br /&gt;
| Events available for use by various animations, how events are linked to animations is currently unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation count&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| A true/false value map for additive animations, true if an animation is additive, false otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#HitboxSet|HitboxSet]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#HitboxSet|HitboxSet]]&lt;br /&gt;
| hitbox_set_count&lt;br /&gt;
| Hitbox Sets for animations&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| anim_count&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EVNT====&lt;br /&gt;
Not much is currently known about the actual structure of the new EVNT format, so much of the structure is a complete guess.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index of this particular event, how it's currently used is unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]]&lt;br /&gt;
| particle_poi_node_count&lt;br /&gt;
| Particle effects events that can be triggered during the course of the animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]]&lt;br /&gt;
| sound_poi_node_count&lt;br /&gt;
| Sound effect events that can be triggered during the course of the animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====ParticlePOINode=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#SharedHeader|POI Header]]&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type, &amp;lt;code&amp;gt;PART&amp;lt;/code&amp;gt; is the most common, not aware of any others being used&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Particle ID, file type corresponds to the previous value.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale of the particle system.&lt;br /&gt;
|- &lt;br /&gt;
| u32&lt;br /&gt;
| Parent Mode&lt;br /&gt;
|}&lt;br /&gt;
=====SoundPOINode=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#POI Header|POI Header]]&lt;br /&gt;
| 1&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| [[CAUD (File Format)|CAUD]] id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Dictates the presence of the following values, if 1, the following float exists, otherwise 35 unknown bytes.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the previous value is 1&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 35&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the value above does not exist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====POI Header=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
====AnimationAABB====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[ANIM (File Format)|ANIM]]&lt;br /&gt;
|-&lt;br /&gt;
| float2x3&lt;br /&gt;
| Axis Aligned Bounding Box&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====HitboxSet====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#Hitbox|Hitbox]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hitbox|Hitbox]]&lt;br /&gt;
| hitbox_count&lt;br /&gt;
| Hitboxes for bones used in an animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Hitbox=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=TXTR_(Metroid_Prime)&amp;diff=1627</id>
		<title>TXTR (Metroid Prime)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=TXTR_(Metroid_Prime)&amp;diff=1627"/>
				<updated>2016-07-21T17:03:52Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''See [[TXTR (File Format)]] for the other revisions of this format.''&lt;br /&gt;
&lt;br /&gt;
'''TXTR''' is, as the name suggests, the Retro Studios texture format. The format remains completely unchanged from Metroid Prime all the way up to Donkey Kong Country Returns.&lt;br /&gt;
&lt;br /&gt;
{{todo|Could possibly use some more information on how the formats work and how to decode them, but then again the Custom Mario Kart Wiiki has this covered pretty nicely already.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
TXTR files contain a very short 12-byte header, followed by the image data.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Image format'''. Possible values range from 0x0 to 0xA; see below for more details.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Width'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Height'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''Mipmap count'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Palettes ===&lt;br /&gt;
&lt;br /&gt;
The C4 and C8 image formats contain a palette table after the header, before the image data begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Palette format'''. Possible values range from 0 to 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 2&lt;br /&gt;
| '''Width'''. always 1 in C4, 256 in C8&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| 2&lt;br /&gt;
| '''Height'''. always 16 in C4, 1 in C8&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| Varies&lt;br /&gt;
| '''Palette colors'''. 16-bit color values; 16 colors in C4, 256 in C8.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=3 {{unknown|End of palette table; image data begins immediately after}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Image Formats ==&lt;br /&gt;
&lt;br /&gt;
There are 11 different image formats; these are built directly into GX, so they remain the same across all GameCube and Wii games. Rather than storing pixels in a linear left-to-right order, GX textures encode pixels in large blocks. The size of the block varies depending on the image format.&lt;br /&gt;
&lt;br /&gt;
For example, suppose you have a format that stores 4x4 blocks. Pixels 1-4 of the image will make up the first row of the first block; pixels 5-8 will make up the second row; 9-12 will make up the third row; 13-16 will make up the fourth row, completing the block; and then 17-20 will begin the first row of the second block, appearing directly to the right of the first row of the first block.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Name&lt;br /&gt;
! Bits per pixel&lt;br /&gt;
! Block size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| I4&lt;br /&gt;
| 4&lt;br /&gt;
| 8x8&lt;br /&gt;
| 4-bit greyscale intensity values. Two pixels per byte.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1&lt;br /&gt;
| I8&lt;br /&gt;
| 8&lt;br /&gt;
| 8x4&lt;br /&gt;
| 8-bit greyscale intensity values.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| IA4&lt;br /&gt;
| 8&lt;br /&gt;
| 8x4&lt;br /&gt;
| 4-bit greyscale intensity values with an additional 4-bit alpha channel.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3&lt;br /&gt;
| IA8&lt;br /&gt;
| 16&lt;br /&gt;
| 4x4&lt;br /&gt;
| 8-bit greyscale intensity values with an additional 8-bit alpha channel.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| C4&lt;br /&gt;
| 4&lt;br /&gt;
| 8x8&lt;br /&gt;
| 4-bit palette indices.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5&lt;br /&gt;
| C8&lt;br /&gt;
| 8&lt;br /&gt;
| 8x4&lt;br /&gt;
| 8-bit palette indices.&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| C14x2&lt;br /&gt;
| 16&lt;br /&gt;
| 4x4&lt;br /&gt;
| Another palette format. Not used by any official textures.&lt;br /&gt;
|-&lt;br /&gt;
| 0x7&lt;br /&gt;
| RGB565&lt;br /&gt;
| 16&lt;br /&gt;
| 4x4&lt;br /&gt;
| 16-bit colors without alpha.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| RGB5A3&lt;br /&gt;
| 16&lt;br /&gt;
| 4x4&lt;br /&gt;
| 16-bit colors with alpha.&lt;br /&gt;
|-&lt;br /&gt;
| 0x9&lt;br /&gt;
| RGBA8&lt;br /&gt;
| 32&lt;br /&gt;
| 4x4&lt;br /&gt;
| Uncompressed 32-bit colors with alpha.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| CMPR&lt;br /&gt;
| 4&lt;br /&gt;
| 8x8&lt;br /&gt;
| DXT1-compressed textures.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.tockdom.com/wiki/Image_Formats Custom Mario Kart Wiki]: More detailed information on each format, and how to decode them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=MLVL_(File_Format)&amp;diff=1626</id>
		<title>MLVL (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=MLVL_(File_Format)&amp;diff=1626"/>
				<updated>2016-07-16T09:27:08Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Audio Groups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''MLVL format''' defines worlds in the Metroid Prime trilogy and Donkey Kong Country Returns. While the [[MREA (File Format)|MREA format]] defines individual areas, the MLVL is what links together all the areas to create a single cohesive world.&lt;br /&gt;
&lt;br /&gt;
{{research|moderate|There's still a fair number of unknowns left in this format.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The format largely defines properties related to each area in general and how they link together, as well as things that apply to the world on a global scale across all areas, such as the skybox.&lt;br /&gt;
&lt;br /&gt;
Remember that all resource IDs are 32 bits in Prime 1/2, and 64 bits in Prime 3/DKCR.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Magic'''; always 0xDEAFBABE&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Version'''; see below&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| [[STRG (File Format)|STRG]]&lt;br /&gt;
| 4/8&lt;br /&gt;
| '''World name'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| [[STRG (File Format)|STRG]]&lt;br /&gt;
| 4&lt;br /&gt;
| '''Dark World Name'''&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|Sets whether the next five values exist}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Level number''' (such as 1-2, 2-2, etc)&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| [[SAVW (File Format)|SAVW]]&lt;br /&gt;
| 4/8&lt;br /&gt;
| '''SaveWorld ID'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL (File Format)|CMDL]]&lt;br /&gt;
| 4/8&lt;br /&gt;
| '''World skybox CMDL ID'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
&lt;br /&gt;
These are the known version numbers:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Game&lt;br /&gt;
|-&lt;br /&gt;
| 0xD&lt;br /&gt;
| Metroid Prime Demo&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| Metroid Prime&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| Metroid Prime 2 Demo&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| Metroid Prime 2&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| Metroid Prime 3&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| Donkey Kong Country Returns&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Memory Relays ===&lt;br /&gt;
&lt;br /&gt;
This section is only present in Prime 1. It contains a list of all Memory Relay objects used in the world and what objects they're connected to. If a Memory Relay is connected to multiple objects, it will show up multiple times.&lt;br /&gt;
&lt;br /&gt;
The section starts with a 32-bit count value, then each relay is structured as:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Memory Relay instance ID'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Target instance ID'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| '''Message'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown''' (always 0)}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Areas ===&lt;br /&gt;
&lt;br /&gt;
This section defines every area in the world and how they connect to other areas.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Area count'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Area Header ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| [[STRG (File Format)|STRG]]&lt;br /&gt;
| 4/8&lt;br /&gt;
| '''Area name'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float[12]&lt;br /&gt;
| 0x30&lt;br /&gt;
| '''Transform matrix'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| float[6]&lt;br /&gt;
| 0x18&lt;br /&gt;
| '''Bounding box'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| [[MREA (File Format)|MREA]]&lt;br /&gt;
| 4/8&lt;br /&gt;
| '''Area MREA'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32/u64&lt;br /&gt;
| 4/8&lt;br /&gt;
| '''Area ID'''; used by layer-switching objects&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Attached Areas ====&lt;br /&gt;
&lt;br /&gt;
This part contains a small table listing what areas within the world are attached (connected) to this one. This is done by using indices into the MLVL's area table; so an index of 0 indicates the first area listed in the MLVL, for example.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Attached area index count''' (AC)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u16[]&lt;br /&gt;
| 2 &amp;amp;times; AC&lt;br /&gt;
| '''Attached area indices'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Dependency List ====&lt;br /&gt;
&lt;br /&gt;
This section is only present in Prime 1 and 2. It starts with what's essentially 2 embedded [[DGRP (File Format)|DGRP]] files: a 32-bit count value followed by a list of resources used by the area. There are two of these tables, and the first is always empty in release versions.&lt;br /&gt;
&lt;br /&gt;
Following that is a small array. The purpose of this array is to distinguish which resources are used by which layers, to avoid wasting time loading resources used by objects that aren't active. It's an array of offsets into the dependency table, each one marking the start of that layer's dependency list.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layer count''' (LC)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32[]&lt;br /&gt;
| 4 &amp;amp;times; LC&lt;br /&gt;
| '''Layer dependency offsets'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Docks ====&lt;br /&gt;
&lt;br /&gt;
This section is only present in the Prime trilogy.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Dock count''' (DC)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#Dock|Dock]]&lt;br /&gt;
| DC&lt;br /&gt;
| '''Docks'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Dock =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Connecting dock count''' (DC)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#Connecting Dock|Connecting dock]]&lt;br /&gt;
| DC&lt;br /&gt;
| '''Connecting docks'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Dock coordinate count''' (CC)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| vec3&lt;br /&gt;
| CC&lt;br /&gt;
| '''Dock coordinates'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Connecting Dock =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Area index'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Dock index'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== .rel List ====&lt;br /&gt;
&lt;br /&gt;
This section is only present in Echoes. It contains a list of .rel files used by the area. Like the dependencies, it is followed by an array of offsets to distinguish which .rels are used by which layers. There are two offsets per layer; the reason for this is currently unknown.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''.rel count''' (RC)&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| RC&lt;br /&gt;
| '''.rel filenames''' (all zero-terminated)&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''.rel offset count''' (OC)&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| OC&lt;br /&gt;
| '''.rel offsets'''&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Area Footer ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''; always 0}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Internal area name''' (zero-terminated)&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== World Map ===&lt;br /&gt;
&lt;br /&gt;
This section is only present in the Prime trilogy. It sets the [[MAPW (File Format)|MAPW]] file used for this world.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| [[MAPW (File Format)|MAPW]]&lt;br /&gt;
| 4/8&lt;br /&gt;
| '''World map'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''; always 0}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''; always 0}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Audio Groups ===&lt;br /&gt;
&lt;br /&gt;
This section is only present in Prime 1. It contains a list of audio groups (AGSC files) used in this world. It begins with a 32-bit count value, then each audio group is defined as:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Studio ID'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
| [[AGSC (File Format)|AGSC]]&lt;br /&gt;
| 4&lt;br /&gt;
| '''Audio Group file'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There's a string following this, at the end of the AGSC table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''; always empty}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Layer Info ===&lt;br /&gt;
&lt;br /&gt;
The final section of the file contains some metadata related to each layer.&lt;br /&gt;
&lt;br /&gt;
==== Layer Flags ====&lt;br /&gt;
&lt;br /&gt;
This part attaches a set of 64-bit flags to every area, where each bit corresponds to a layer; if the bit is set, then that indicates that the corresponding layer will be enabled by default (on a new save file). Since the flags are 64 bits, that means the maximum number of layers that can be present in one area is 64.&lt;br /&gt;
&lt;br /&gt;
After a 32-bit area count, the following structure is repeated for each area:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Area layer count'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 8&lt;br /&gt;
| '''Area layer flags'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Layer Names ====&lt;br /&gt;
&lt;br /&gt;
This is a very simple list of layer name strings. For info on how each layer is actually attached to its corresponding area, check the [[#Layer Name Offsets|Layer Name Offsets]] section.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Layer count''' (LC)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| LC&lt;br /&gt;
| '''Layer names''' (zero-terminated)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Layer IDs ====&lt;br /&gt;
&lt;br /&gt;
This array is only present in Prime 3 and DKCR, and is used by layer-switching objects.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Layer ID count''' (IC)&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u128&lt;br /&gt;
| 0x10 &amp;amp;times; IC&lt;br /&gt;
| '''Layer ID'''&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Layer Name Offsets ====&lt;br /&gt;
&lt;br /&gt;
The final layer info section provides one offset into the layer name table per area. This can be used to attach a layer's name to its corresponding data within the area.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! MP1&lt;br /&gt;
! MP2&lt;br /&gt;
! MP3&lt;br /&gt;
! DKCR&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| '''Area count''' (AC)&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| AC&lt;br /&gt;
| '''Area layer names offsets'''&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=MAPA_(File_Format)&amp;diff=1537</id>
		<title>MAPA (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=MAPA_(File_Format)&amp;diff=1537"/>
				<updated>2016-05-25T02:34:45Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''.MAPA file format''' defines the minimap models used in the Metroid Prime series. MAPA or '''MAP A'''rea consists of several sections: The header, Point Of Interest entries, Vertices, Primitive Headers, and the primitives.&lt;br /&gt;
&lt;br /&gt;
{{research|2|A few things are unknown in the header and POI Entries}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Format ==&lt;br /&gt;
=== Header ===&lt;br /&gt;
The header is very straight forward, and has some minor differences depending on version, the unknown values don't seem to do anything, however not much research has been put into them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
!MP1&lt;br /&gt;
!MP2&lt;br /&gt;
!MP3&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Magic'''; Always 0xDEADD00D&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Version'''; See below&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|CAABox&lt;br /&gt;
|'''Bounding Box'''&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''POI Count'''&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Vertex Count'''&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Primitive Count'''&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
The version value listed above can have the following values:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Game&lt;br /&gt;
!Value&lt;br /&gt;
|-&lt;br /&gt;
|Metroid Prime 1&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Metroid Prime 2: Echoes&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|Metroid Prime 3: Corruption&lt;br /&gt;
|5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Point of Interest ===&lt;br /&gt;
A Point of Interest in the Metroid Prime series can include: Mission Objectives, Elevators, Doors, Map Stations, and Missile Stations. Each Point of Interest entry consists of the following struct:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
!MP1 &amp;amp; MP2&lt;br /&gt;
!MP3&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Type'''; All valid values are not currently known&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u16&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
|u16&lt;br /&gt;
|'''ID'''; Which door, elevator etc.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
|CVector4f&lt;br /&gt;
|{{unknown|Unknown}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Padding'''; always -1&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|CTransform4f&lt;br /&gt;
|'''Tranform Matrix''' The Point of Interest's position in '''world''' space.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32 * 4&lt;br /&gt;
|'''Padding'''; four values of -1&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vertices ===&lt;br /&gt;
&lt;br /&gt;
Vertices are a simple array of CVector3f. Geometry in MAPAs is, almost always, centered around the origin (0, 0, 0) and are simplified, full sized, versions of the map they replicate. Each vertex is referenced at least twice: once for the primitive, once for the line border.&lt;br /&gt;
&lt;br /&gt;
=== Primitive Headers ===&lt;br /&gt;
&lt;br /&gt;
The Primitive headers are extremely simple, they merely have a bounding box followed by the primitive table start and end point, relative to the end of the current primitive header. In other words: read in the header, seek to the start of the table from the '''current''' position, then read the primitives tables.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|CVector3f&lt;br /&gt;
|'''Normal'''&lt;br /&gt;
|-&lt;br /&gt;
|CVector3f&lt;br /&gt;
|'''Center of Mass'''&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Primitive Table Start'''; relative to the end of this header&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Primitive Table End'''; relative to the end of this header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Primitive Table ===&lt;br /&gt;
&lt;br /&gt;
The Primitive is also fairly simple, each one consists of two parts: The GX Primitive list, and the Border list. &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Primitive Count (PC)'''&lt;br /&gt;
|-&lt;br /&gt;
|Primitive * PC&lt;br /&gt;
|'''Primitives'''&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|'''Border Count (BC)'''&lt;br /&gt;
|-&lt;br /&gt;
|Border * (BC)&lt;br /&gt;
|'''Borders'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Primitive ===&lt;br /&gt;
&lt;br /&gt;
A primitive in a MAPA is a simple 4 byte aligned list of indices into the vertex list, starting with the GX Primitive type, a count, then an array of indices, each index taking up one byte.&lt;br /&gt;
&lt;br /&gt;
=== Border ===&lt;br /&gt;
&lt;br /&gt;
A border in a MAPA is a simple count followed by a 4 byte aligned list indices into the vertex list, each index taking up one byte. A border is simply drawn using GX_LINESTRIP.&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANIM_(Metroid_Prime)&amp;diff=1453</id>
		<title>ANIM (Metroid Prime)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANIM_(Metroid_Prime)&amp;diff=1453"/>
				<updated>2016-05-19T02:03:31Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This article is for the ANIM format used in ''Metroid Prime'' and ''Metroid Prime 2: Echoes''. See [[ANIM (File Format)]] for the other revisions of this format.''&lt;br /&gt;
&lt;br /&gt;
The '''ANIM format''' is used in conjunction with [[CINF (File Format)|CINF]] + [[CSKR (File Format)|CSKR]] rigging to animate [[CMDL (Metroid Prime)|CMDL meshes]]. The format is largely the same between the two games, with the main difference being that starting in ''Metroid Prime 2'', support for animating scale was added.&lt;br /&gt;
&lt;br /&gt;
There are two versions of the ANIM format (indicated by the file's first u32 value), one with compressed animations and one with uncompressed ones:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Version&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x0&lt;br /&gt;
|[[#Quaternion Array Format (Uncompressed)|Quaternion Array Format (Uncompressed)]]&lt;br /&gt;
|-&lt;br /&gt;
|0x2&lt;br /&gt;
|[[#Rotation Vector Bitstream Format (Compressed)|Rotation Vector Bitstream Format (Compressed)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Quaternion Array Format (Uncompressed) ==&lt;br /&gt;
&lt;br /&gt;
The '''Quaternion Array Format''' (0x0) is a less common animation format. In ''Metroid Prime'', it only appears in a Ridley intro animation and the rotating pirate data artifact hologram above the Impact Crater, as well as some unused Samus animations, while in ''Metroid Prime 2'', it only seems to show up in some draft/test animations not used in the final game.&lt;br /&gt;
&lt;br /&gt;
This format stores uncompressed animations by mapping animation channels to bones, supplying rotations as an array of [[wikipedia:Quaternion|quaternion]] (WXYZ) keys and translations/scales as an array of XYZ keys. Translations may be specified for a subset of bones as an array of XYZ keys. In ''Metroid Prime'', rotation keys are required on every channel, while translations may be specified for a subset of bones. In ''Metroid Prime 2'', all three transform components are opt-in. &lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset&lt;br /&gt;
!Type&lt;br /&gt;
!style=&amp;quot;width: 215px;&amp;quot;|Element Count&lt;br /&gt;
!style=&amp;quot;width: 240px;&amp;quot;|Name&lt;br /&gt;
!Notes&lt;br /&gt;
!MP1&lt;br /&gt;
!MP2&lt;br /&gt;
|-&lt;br /&gt;
|0x4&lt;br /&gt;
|float&lt;br /&gt;
|1&lt;br /&gt;
|'''Duration'''&lt;br /&gt;
|'''[1/2 in CCharAnimTime]''' Time in seconds that the animation plays for&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x8&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Differential State Enum'''&lt;br /&gt;
|'''[2/2 in CCharAnimTime]''' State of ''Duration'' time point for proper integration control &amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;li&amp;gt;Non Zero&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Zero Increasing&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Zero Steady&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Zero Decreasing&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Infinity&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0xC&lt;br /&gt;
|float&lt;br /&gt;
|1&lt;br /&gt;
|'''Key Interval'''&lt;br /&gt;
|'''[1/2 in CCharAnimTime]''' Time in seconds between keys of each bone channel (reciprocal of frame-rate)&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x10&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Differential State Enum'''&lt;br /&gt;
|'''[2/2 in CCharAnimTime]''' State of ''Key Interval'' time point for proper integration control&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x14&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Key Count'''&lt;br /&gt;
|Count of keys for each bone channel (keys are set for every frame of the animation)&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x18&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Root Bone ID'''&lt;br /&gt;
|ID of the root bone in this ANIM&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x1C&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Bone Channel Count'''&lt;br /&gt;
|Count of bone channel indices in the next array. Always 100.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x20&lt;br /&gt;
|u8&lt;br /&gt;
|''Bone Channel Count''&lt;br /&gt;
|'''Bone Channel Index Array'''&lt;br /&gt;
|This table maps each bone to a bone channel, with the index-position corresponding to a ''Bone ID'' in the associated [[CINF (File Format)|CINF]], while the value corresponds to a bone channel index. The value is 0xFF if the bone is not animated by this ANIM.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Rotation Channel Index Count'''&lt;br /&gt;
|Count of rotation channel indices in the next array. Matches the number of valid bone channels.&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|u8&lt;br /&gt;
|''Rotation Channel Index Count''&lt;br /&gt;
|'''Rotation Channel Index Array'''&lt;br /&gt;
|This table maps each bone channel to a rotation channel, with the index-position corresponding to an entry in the ''Bone Channel Index Array'' above (disregarding 0xFF entries), while the value corresponds to the index of a rotation channel. The value is 0xFF if the bone is not rotated by this ANIM. '''Note:''' In ''Metroid Prime'', every bone channel always has rotations, so this array is omitted.&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Translation Channel Index Count'''&lt;br /&gt;
|Count of translation channel indices in the next array. Matches the number of valid bone channels.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|u8&lt;br /&gt;
|''Translation Channel Index Count''&lt;br /&gt;
|'''Translation Channel Index Array'''&lt;br /&gt;
|This table maps each bonechannel to a translation channel, with the index-position corresponding to an entry in the ''Bone Channel Index Array'' above (disregarding 0xFF entries), while the value corresponds to the index of a translation channel. The value is 0xFF if the bone is not translated by this ANIM.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Scale Channel Index Count'''&lt;br /&gt;
|Count of scale channel indices in the next array. Matches the number of valid bone channels.&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|u8&lt;br /&gt;
|''Scale Channel Index Count''&lt;br /&gt;
|'''Scale Channel Index Array'''&lt;br /&gt;
|This table maps each bone channel to a scale channel, with the index-position corresponding to an entry in the ''Bone Channel Index Array'' above (disregarding 0xFF entries), while the value corresponds to the index of a scale channel. The value is 0xFF if the bone is not scaled by this ANIM.&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Scale Key Count'''&lt;br /&gt;
|Count of elements in ''Scale Key Array'' below&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|float3&lt;br /&gt;
|''Scale Key Count''&lt;br /&gt;
|'''Scale Key Array'''&lt;br /&gt;
|The scale keys are interleaved as such (bone-major):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
|------------|------------|-----|------------|&lt;br /&gt;
| bone0/key0 | bone0/key1 | ... | bone0/keyN |&lt;br /&gt;
| bone1/key0 | bone1/key1 | ... | bone1/keyN |&lt;br /&gt;
| .......... | .......... | ... | .......... |&lt;br /&gt;
| boneN/key0 | boneN/key1 | ... | boneN/keyN |&lt;br /&gt;
|------------|------------|-----|------------|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Rotation Key Count'''&lt;br /&gt;
|Count of elements in ''Rotation Key Array'' below&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|float4&lt;br /&gt;
|''Rotation Key Count''&lt;br /&gt;
|'''Rotation Key Array'''&lt;br /&gt;
|The rotation keys are interleaved the same way as the scale keys. In ''Metroid Prime 2'', any bone channels that were marked 0xFF in the ''Rotation Channel Index Array'' are skipped.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Translation Key Count'''&lt;br /&gt;
|Count of elements in ''Translation Key Array'' below&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|float3&lt;br /&gt;
|''Translation Key Count''&lt;br /&gt;
|'''Translation Key Array'''&lt;br /&gt;
|The translation keys are interleaved the same way as the scale keys. Any bone channels that were marked 0xFF in the ''Translation Channel Index Array'' are skipped.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|{{unknown|}}&lt;br /&gt;
|[[EVNT (File Format)|EVNT]]&lt;br /&gt;
|1&lt;br /&gt;
|'''EVNT Ref'''&lt;br /&gt;
|ID for this ANIM's [[EVNT (File Format)|EVNT]] resource, or 0xFFFFFFFF if no events triggered&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rotation Vector Bitstream Format (Compressed) ==&lt;br /&gt;
&lt;br /&gt;
The '''Rotation Vector Bitstream Format''' (0x2) is the most widely used animation format.&lt;br /&gt;
The format uses a compressed [[wikipedia:Bitstream|bitstream]] to store keys that have been&lt;br /&gt;
[[wikipedia:Delta encoding|delta encoded]] and [[wikipedia:Quantization (signal processing)|quantized]]&lt;br /&gt;
to make for a very compact, compressed animation. The data is processed sequentially to reconstruct the&lt;br /&gt;
uncompressed bone channel data as quaternions.&lt;br /&gt;
&lt;br /&gt;
In addition to the bitstream quantization, the format includes a bitmap specifying which frames of the animation have&lt;br /&gt;
keys added. Consequently, the runtime generates missing keys via interpolation (reducing animation size further). &lt;br /&gt;
&lt;br /&gt;
=== Key Values ===&lt;br /&gt;
When decoding the animation, each bone's attribute values are initialized to the ''Initial *''&lt;br /&gt;
values in the ''bone channel descriptors''. For every frame of every bone channel, the key value in the bitstream is ''added''&lt;br /&gt;
with the previous key value (to resolve the delta encoding). &lt;br /&gt;
&lt;br /&gt;
Once resolved, rotation components are divided by ''Rotation Divisor'', resulting in an axis-angle&lt;br /&gt;
[[wikipedia:Axis–angle_representation#Rotation_vector|rotation vector]]. This rotation vector is converted&lt;br /&gt;
to quaternion imaginary components with the W component derived via normalized-difference and a ''sign-bit''&lt;br /&gt;
packed into the bitstream:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
q = &amp;amp;pi; / 2.0 / rotation_divisor&lt;br /&gt;
X = sin(rx * q)&lt;br /&gt;
Y = sin(ry * q)&lt;br /&gt;
Z = sin(rz * q)&lt;br /&gt;
W = sqrt(MAX((1.0 - (X*X + Y*Y + Z*Z)), 0.0))&lt;br /&gt;
W = sign_bit ? -W : W&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translation components are multiplied by ''Translation Multiplier'', and scale components are multiplied by ''Scale Multiplier''.&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!style=&amp;quot;width: 220px;&amp;quot;|Element Count&lt;br /&gt;
!style=&amp;quot;width: 240px;&amp;quot;|Name&lt;br /&gt;
!Notes&lt;br /&gt;
!MP1&lt;br /&gt;
!MP2&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Scratch Size'''&lt;br /&gt;
|Amount of memory that the animation system needs to allocate to process animation&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|[[EVNT (File Format)|EVNT]]&lt;br /&gt;
|1&lt;br /&gt;
|'''EVNT Ref'''&lt;br /&gt;
|ID for this ANIM's [[EVNT (File Format)|EVNT]] resource, or 0xFFFFFFFF if no events triggered&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|{{unknown|Unknown 1}}&lt;br /&gt;
|Always 0x1&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
|u16&lt;br /&gt;
|1&lt;br /&gt;
|{{unknown|Unknown 2}}&lt;br /&gt;
| &lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|float&lt;br /&gt;
|1&lt;br /&gt;
|'''Duration'''&lt;br /&gt;
|Time in seconds that the animation plays for&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|float&lt;br /&gt;
|1&lt;br /&gt;
|'''Interval'''&lt;br /&gt;
|Time in seconds between frames (reciprocal of frame-rate, typically 30-fps)&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Root Bone ID'''&lt;br /&gt;
|ID of the root bone in this ANIM&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|{{unknown|Unknown 3}}&lt;br /&gt;
|Always 0x0&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Rotation Divisor'''&lt;br /&gt;
|Rotation vectors are divided by this value before being applied&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|float&lt;br /&gt;
|1&lt;br /&gt;
|'''Translation Multiplier'''&lt;br /&gt;
|Translation vectors are multiplied by this value before being applied&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|float&lt;br /&gt;
|1&lt;br /&gt;
|'''Scale Multiplier'''&lt;br /&gt;
|Scale vectors are multiplied by this value before being applied&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Bone Channel Count'''&lt;br /&gt;
|Count of bone channels present in ANIM&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|{{unknown|Unknown 4}}&lt;br /&gt;
|Always 0x1&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Key Bitmap Length'''&lt;br /&gt;
|Number of bits in ''Key Bitmap''&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|round_up(''Key Bitmap Length'' / 32)&lt;br /&gt;
|'''Key Bitmap'''&lt;br /&gt;
|Word-packed bitmap. Each word is read from least-significant to most-significant bit. A set bit indicates the frame at the bit's position has keys for each bone channel. If the bit is unset, the keys must be generated via interpolation.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Bone Channel Count'''&lt;br /&gt;
|Count of animated bone channels (matches the previous bone channel count)&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|1&lt;br /&gt;
|'''Bone Channel Descriptor Count'''&lt;br /&gt;
|Count of bone channel descriptors in ''Bone Channel Descriptor Table''. Matches the ''Bone Channel Counts''.&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|[[#Bone Channel Descriptor|Bone Channel Descriptor]]&lt;br /&gt;
|''Bone Channel Descriptor Count''&lt;br /&gt;
|'''Bone Channel Descriptor Table'''&lt;br /&gt;
|Table describing animated bone channels&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|u32&lt;br /&gt;
|&amp;lt;remainder of file&amp;gt;&lt;br /&gt;
|'''Key Bitstream'''&lt;br /&gt;
|Word-packed bitstream laid out as described by the descriptor table. The bitstream is unpacked just like ''Key Bitmap'' (least-significant to most-significant). &lt;br /&gt;
Key values are tightly-packed, quantized integers whose bit-depth is specified by the ''* Bits'' values in the descriptor table. &lt;br /&gt;
Each bone-channel key-set starts with a single bit providing the ''W sign-bit'' (1 for negative, 0 for positive).&lt;br /&gt;
&lt;br /&gt;
The key integers are signed using [[wikipedia:Two's complement|Two's complement]] representation.&lt;br /&gt;
&lt;br /&gt;
The keys are interleaved as such (key-major):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
|------------|------------|-----|------------|&lt;br /&gt;
| bone0/key0 | bone1/key0 | ... | boneN/key0 |&lt;br /&gt;
| bone0/key1 | bone1/key1 | ... | boneN/key1 |&lt;br /&gt;
| .......... | .......... | ... | .......... |&lt;br /&gt;
| bone0/keyN | bone1/keyN | ... | boneN/keyN |&lt;br /&gt;
|------------|------------|-----|------------|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Bone Channel Descriptor ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Notes&lt;br /&gt;
!MP1&lt;br /&gt;
!MP2&lt;br /&gt;
|-&lt;br /&gt;
|0x0&lt;br /&gt;
|u32&lt;br /&gt;
|'''Bone ID'''&lt;br /&gt;
|''Bone ID'' in the associated [[CINF (File Format)|CINF]] for this bone channel&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x4&lt;br /&gt;
|u16&lt;br /&gt;
|'''Rotation Key Count'''&lt;br /&gt;
|Number of rotation keys in the bitstream for this bone channel.&lt;br /&gt;
'''In MP2, if this value is 0, the remaining Rotation fields aren't present'''&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x6&lt;br /&gt;
|s16&lt;br /&gt;
|'''Initial Rotation X'''&lt;br /&gt;
|Initial X value of bone's rotation vector&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x8&lt;br /&gt;
|u8&lt;br /&gt;
|'''Rotation Bits X'''&lt;br /&gt;
|Number of bits allocated to bone's rotation delta X in bitstream&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x9&lt;br /&gt;
|s16&lt;br /&gt;
|'''Initial Rotation Y'''&lt;br /&gt;
|Initial Y value of bone's rotation vector&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0xB&lt;br /&gt;
|u8&lt;br /&gt;
|'''Rotation Bits Y'''&lt;br /&gt;
|Number of bits allocated to bone's rotation delta Y in bitstream&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0xC&lt;br /&gt;
|s16&lt;br /&gt;
|'''Initial Rotation Z'''&lt;br /&gt;
|Initial Z value of bone's rotation vector&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0xE&lt;br /&gt;
|u8&lt;br /&gt;
|'''Rotation Bits Z'''&lt;br /&gt;
|Number of bits allocated to bone's rotation delta Z in bitstream&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0xF&lt;br /&gt;
|u16&lt;br /&gt;
|'''Translation Key Count'''&lt;br /&gt;
|If this bone channel has an animated translation, its value will match ''Rotation Key Count''; otherwise the value will be 0. &lt;br /&gt;
'''If the value is 0, the remaining Translation fields aren't present'''&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x11&lt;br /&gt;
|s16&lt;br /&gt;
|'''Initial Translation X'''&lt;br /&gt;
|Initial X value of bone's translation vector&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x13&lt;br /&gt;
|u8&lt;br /&gt;
|'''Translation Bits X'''&lt;br /&gt;
|Number of bits allocated to bone's translation delta X in bitstream&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x14&lt;br /&gt;
|s16&lt;br /&gt;
|'''Initial Translation Y'''&lt;br /&gt;
|Initial Y value of bone's translation vector&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x16&lt;br /&gt;
|u8&lt;br /&gt;
|'''Translation Bits Y'''&lt;br /&gt;
|Number of bits allocated to bone's translation delta Y in bitstream&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x17&lt;br /&gt;
|s16&lt;br /&gt;
|'''Initial Translation Z'''&lt;br /&gt;
|Initial Z value of bone's translation vector&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x19&lt;br /&gt;
|u8&lt;br /&gt;
|'''Translation Bits Z'''&lt;br /&gt;
|Number of bits allocated to bone's translation delta Z in bitstream&lt;br /&gt;
|{{check}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x1A&lt;br /&gt;
|u16&lt;br /&gt;
|'''Scale Key Count'''&lt;br /&gt;
|If this bone channel has an animated scale, its value will match ''Scale Key Count''; otherwise the value will be 0. &lt;br /&gt;
'''If the value is 0, the remaining Scale fields aren't present'''&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x1C&lt;br /&gt;
|s16&lt;br /&gt;
|'''Initial Scale X'''&lt;br /&gt;
|Initial X value of bone's scale vector&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x1E&lt;br /&gt;
|u8&lt;br /&gt;
|'''Scale Bits X'''&lt;br /&gt;
|Number of bits allocated to bone's scale delta X in bitstream&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x1F&lt;br /&gt;
|s16&lt;br /&gt;
|'''Initial Scale Y'''&lt;br /&gt;
|Initial Y value of bone's scale vector&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x21&lt;br /&gt;
|u8&lt;br /&gt;
|'''Scale Bits Y'''&lt;br /&gt;
|Number of bits allocated to bone's scale delta Y in bitstream&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x22&lt;br /&gt;
|s16&lt;br /&gt;
|'''Initial Scale Z'''&lt;br /&gt;
|Initial Z value of bone's scale vector&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x24&lt;br /&gt;
|u8&lt;br /&gt;
|'''Scale Bits Z'''&lt;br /&gt;
|Number of bits allocated to bone's scale delta Z in bitstream&lt;br /&gt;
|{{nocheck}}&lt;br /&gt;
|{{check}}&lt;br /&gt;
|-&lt;br /&gt;
|0x25&lt;br /&gt;
|colspan=5 {{unknown|End of descriptor}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1381</id>
		<title>CHAR (Metroid Prime 3)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1381"/>
				<updated>2016-05-02T02:23:20Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* AnimationSet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
{{research|major|This format hasn't been researched/documented very well yet, but it appears to be extremely similar to ANCS.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|Character Info]]&lt;br /&gt;
| Specific settings and resources used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|Animation Set]]&lt;br /&gt;
| Events, Animations, and Hitbox related settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CharacterInfo===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character name'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL (File Format)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character model'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR (File Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skin'''&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Overlay|Overlays]]&lt;br /&gt;
| overlay_count&lt;br /&gt;
| Overlays used for various status effects, such as Frozen, Hazard, or Hyper&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF (File Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skeleton'''&lt;br /&gt;
|-&lt;br /&gt;
| [[SAND (File Format)|SAND]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character sand'''&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation Set Database&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|Particle Resource Data]]&lt;br /&gt;
| 1&lt;br /&gt;
| Various Particle Systems used by this character.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Overlay====&lt;br /&gt;
Overlays are external models that are skinned and attached to the rig for certain status effects, the layout simply consists of a FourCC value, a CMDL reference, and a CSKR reference.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| The type of status effect this overlay is for, &amp;lt;code&amp;gt;FRZN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HYPR&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;HZRD&amp;lt;/code&amp;gt; are known values, there may be more&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[CMDL (File Format)|CMDL]] id&lt;br /&gt;
|- &lt;br /&gt;
| u64&lt;br /&gt;
| [[CSKR (File Format)|CSKR]] id&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
Particle Resource data is simply a list of particle systems that can be used with this character.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[PART (File Format)|PART]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| part_count&lt;br /&gt;
| [[PART (File Format)|PART]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| swhc_count&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| elsc_count&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| spsc_count&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationSet===&lt;br /&gt;
The Animation Set saw the largest change from Metroid Prime 1/2, gone are Transitions and Half Transitions and AdditiveInfo, EVNT was overhauled, AABBs were moved from CharacterInfo, and Hitboxes were added.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#EVNT|EVNT]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EVNT|EVNT]]&lt;br /&gt;
| evnt_count&lt;br /&gt;
| Events available for use by various animations, how events are linked to animations is currently unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation count&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| A true/false value map for additive animations, true if an animation is additive, false otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#HitboxSet|HitboxSet]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#HitboxSet|HitboxSet]]&lt;br /&gt;
| hitbox_set_count&lt;br /&gt;
| Hitbox Sets for animations&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| anim_count&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EVNT====&lt;br /&gt;
Not much is currently known about the actual structure of the new EVNT format, so much of the structure is a complete guess.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index of this particular event, how it's currently used is unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]]&lt;br /&gt;
| particle_poi_node_count&lt;br /&gt;
| Particle effects events that can be triggered during the course of the animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]]&lt;br /&gt;
| sound_poi_node_count&lt;br /&gt;
| Sound effect events that can be triggered during the course of the animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====ParticlePOINode=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#SharedHeader|POI Header]]&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type, &amp;lt;code&amp;gt;PART&amp;lt;/code&amp;gt; is the most common, not aware of any others being used&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Particle ID, file type corresponds to the previous value.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale of the particle system.&lt;br /&gt;
|- &lt;br /&gt;
| u32&lt;br /&gt;
| Parent Mode&lt;br /&gt;
|}&lt;br /&gt;
=====SoundPOINode=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#POI Header|POI Header]]&lt;br /&gt;
| 1&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| [[CAUD (File Format)|CAUD]] id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Dictates the presence of the following values, if 1, the following float exists, otherwise 35 unknown bytes.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the previous value is 1&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 35&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the value above does not exist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====POI Header=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
====AnimationAABB====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[ANIM (File Format)|ANIM]]&lt;br /&gt;
|-&lt;br /&gt;
| float2x3&lt;br /&gt;
| Axis Aligned Bounding Box&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====HitboxSet====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#Hitbox|Hitbox]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hitbox|Hitbox]]&lt;br /&gt;
| hitbox_count&lt;br /&gt;
| Hitboxes for bones used in an animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Hitbox=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1380</id>
		<title>CHAR (Metroid Prime 3)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1380"/>
				<updated>2016-05-02T02:23:02Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
{{research|major|This format hasn't been researched/documented very well yet, but it appears to be extremely similar to ANCS.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|Character Info]]&lt;br /&gt;
| Specific settings and resources used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|Animation Set]]&lt;br /&gt;
| Events, Animations, and Hitbox related settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CharacterInfo===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character name'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL (File Format)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character model'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR (File Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skin'''&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Overlay|Overlays]]&lt;br /&gt;
| overlay_count&lt;br /&gt;
| Overlays used for various status effects, such as Frozen, Hazard, or Hyper&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF (File Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skeleton'''&lt;br /&gt;
|-&lt;br /&gt;
| [[SAND (File Format)|SAND]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character sand'''&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation Set Database&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|Particle Resource Data]]&lt;br /&gt;
| 1&lt;br /&gt;
| Various Particle Systems used by this character.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Overlay====&lt;br /&gt;
Overlays are external models that are skinned and attached to the rig for certain status effects, the layout simply consists of a FourCC value, a CMDL reference, and a CSKR reference.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| The type of status effect this overlay is for, &amp;lt;code&amp;gt;FRZN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HYPR&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;HZRD&amp;lt;/code&amp;gt; are known values, there may be more&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[CMDL (File Format)|CMDL]] id&lt;br /&gt;
|- &lt;br /&gt;
| u64&lt;br /&gt;
| [[CSKR (File Format)|CSKR]] id&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
Particle Resource data is simply a list of particle systems that can be used with this character.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[PART (File Format)|PART]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| part_count&lt;br /&gt;
| [[PART (File Format)|PART]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| swhc_count&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| elsc_count&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| spsc_count&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationSet===&lt;br /&gt;
The Animation Set saw the largest change from Metroid Prime 1/2, gone are Transitions and Half Transitions and AdditiveInfo, EVNT was overhauled, AABBs were moved from CharacterInfo, and Hitboxes were added.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#EVNT|EVNT]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EVNT|EVNT]]&lt;br /&gt;
| evnt_count&lt;br /&gt;
| Events available for use by various animations, how events are linked to animations is currently unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
|-&lt;br /&gt;
| [[AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation count&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| A true/false value map for additive animations, true if an animation is additive, false otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#HitboxSet|HitboxSet]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#HitboxSet|HitboxSet]]&lt;br /&gt;
| hitbox_set_count&lt;br /&gt;
| Hitbox Sets for animations&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| anim_count&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EVNT====&lt;br /&gt;
Not much is currently known about the actual structure of the new EVNT format, so much of the structure is a complete guess.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index of this particular event, how it's currently used is unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]]&lt;br /&gt;
| particle_poi_node_count&lt;br /&gt;
| Particle effects events that can be triggered during the course of the animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]]&lt;br /&gt;
| sound_poi_node_count&lt;br /&gt;
| Sound effect events that can be triggered during the course of the animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====ParticlePOINode=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#SharedHeader|POI Header]]&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type, &amp;lt;code&amp;gt;PART&amp;lt;/code&amp;gt; is the most common, not aware of any others being used&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Particle ID, file type corresponds to the previous value.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale of the particle system.&lt;br /&gt;
|- &lt;br /&gt;
| u32&lt;br /&gt;
| Parent Mode&lt;br /&gt;
|}&lt;br /&gt;
=====SoundPOINode=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#POI Header|POI Header]]&lt;br /&gt;
| 1&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| [[CAUD (File Format)|CAUD]] id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Dictates the presence of the following values, if 1, the following float exists, otherwise 35 unknown bytes.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the previous value is 1&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 35&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the value above does not exist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====POI Header=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
====AnimationAABB====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[ANIM (File Format)|ANIM]]&lt;br /&gt;
|-&lt;br /&gt;
| float2x3&lt;br /&gt;
| Axis Aligned Bounding Box&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====HitboxSet====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#Hitbox|Hitbox]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hitbox|Hitbox]]&lt;br /&gt;
| hitbox_count&lt;br /&gt;
| Hitboxes for bones used in an animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Hitbox=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1379</id>
		<title>CHAR (Metroid Prime 3)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1379"/>
				<updated>2016-05-02T02:19:37Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
{{research|major|This format hasn't been researched/documented very well yet, but it appears to be extremely similar to ANCS.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|Character Info]]&lt;br /&gt;
| Specific settings and resources used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|Animation Set]]&lt;br /&gt;
| Events, Animations, and Hitbox related settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CharacterInfo===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character name'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL (File Format)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character model'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR (File Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skin'''&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Overlay|Overlays]]&lt;br /&gt;
| overlay_count&lt;br /&gt;
| Overlays used for various status effects, such as Frozen, Hazard, or Hyper&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF (File Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skeleton'''&lt;br /&gt;
|-&lt;br /&gt;
| [[SAND (File Format)|SAND]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character sand'''&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation Set Database&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|Particle Resource Data]]&lt;br /&gt;
| 1&lt;br /&gt;
| Various Particle Systems used by this character.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Overlay====&lt;br /&gt;
Overlays are external models that are skinned and attached to the rig for certain status effects, the layout simply consists of a FourCC value, a CMDL reference, and a CSKR reference.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| The type of status effect this overlay is for, &amp;lt;code&amp;gt;FRZN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HYPR&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;HZRD&amp;lt;/code&amp;gt; are known values, there may be more&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[CMDL (File Format)|CMDL]] id&lt;br /&gt;
|- &lt;br /&gt;
| u64&lt;br /&gt;
| [[CSKR (File Format)|CSKR]] id&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
Particle Resource data is simply a list of particle systems that can be used with this character.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[PART (File Format)|PART]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| part_count&lt;br /&gt;
| [[PART (File Format)|PART]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| swhc_count&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| elsc_count&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| spsc_count&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationSet===&lt;br /&gt;
The Animation Set saw the largest change from Metroid Prime 1/2, gone are Transitions and Half Transitions and AdditiveInfo, EVNT was overhauled, AABBs were moved from CharacterInfo, and Hitboxes were added.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#EVNT|EVNT]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EVNT|EVNT]]&lt;br /&gt;
| evnt_count&lt;br /&gt;
| Events available for use by various animations, how events are linked to animations is currently unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
|-&lt;br /&gt;
| [[AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation count&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| A true/false value map for additive animations, true if an animation is additive, false otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#HitboxSet|HitboxSet]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#HitboxSet|HitboxSet]]&lt;br /&gt;
| hitbox_set_count&lt;br /&gt;
| Hitbox Sets for animations&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| anim_count&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EVNT====&lt;br /&gt;
Not much is currently known about the actual structure of the new EVNT format, so much of the structure is a complete guess.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index of this particular event, how it's currently used is unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]]&lt;br /&gt;
| particle_poi_node_count&lt;br /&gt;
| Particle effects events that can be triggered during the course of the animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]]&lt;br /&gt;
| sound_poi_node_count&lt;br /&gt;
| Sound effect events that can be triggered during the course of the animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====ParticlePOINode=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#SharedHeader|POI Header]]&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type, &amp;lt;code&amp;gt;PART&amp;lt;/code&amp;gt; is the most common, not aware of any others being used&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Particle ID, file type corresponds to the previous value.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale of the particle system.&lt;br /&gt;
|- &lt;br /&gt;
| u32&lt;br /&gt;
| Parent Mode&lt;br /&gt;
|}&lt;br /&gt;
=====SoundPOINode=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#POI Header|POI Header]]&lt;br /&gt;
| 1&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| [[CAUD (File Format)|CAUD]] id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Dictates the presence of the following values, if 1, the following float exists, otherwise 35 unknown bytes.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the previous value is 1&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 35&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the value above does not exist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====POI Header=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====HitboxSet====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#Hitbox|Hitbox]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hitbox|Hitbox]]&lt;br /&gt;
| hitbox_count&lt;br /&gt;
| Hitboxes for bones used in an animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Hitbox=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1378</id>
		<title>CHAR (Metroid Prime 3)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1378"/>
				<updated>2016-05-02T02:18:28Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
{{research|major|This format hasn't been researched/documented very well yet, but it appears to be extremely similar to ANCS.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|Character Info]]&lt;br /&gt;
| Specific settings and resources used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|Animation Set]]&lt;br /&gt;
| Events, Animations, and Hitbox related settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CharacterInfo===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character name'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL (File Format)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character model'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR (File Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skin'''&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Overlay|Overlays]]&lt;br /&gt;
| overlay_count&lt;br /&gt;
| Overlays used for various status effects, such as Frozen, Hazard, or Hyper&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF (File Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skeleton'''&lt;br /&gt;
|-&lt;br /&gt;
| [[SAND (File Format)|SAND]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character sand'''&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation Set Database&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|Particle Resource Data]]&lt;br /&gt;
| 1&lt;br /&gt;
| Various Particle Systems used by this character.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Overlay====&lt;br /&gt;
Overlays are external models that are skinned and attached to the rig for certain status effects, the layout simply consists of a FourCC value, a CMDL reference, and a CSKR reference.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| The type of status effect this overlay is for, &amp;lt;code&amp;gt;FRZN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HYPR&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;HZRD&amp;lt;/code&amp;gt; are known values, there may be more&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[CMDL (File Format)|CMDL]] id&lt;br /&gt;
|- &lt;br /&gt;
| u64&lt;br /&gt;
| [[CSKR (File Format)|CSKR]] id&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
Particle Resource data is simply a list of particle systems that can be used with this character.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[PART (File Format)|PART]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| part_count&lt;br /&gt;
| [[PART (File Format)|PART]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| swhc_count&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| elsc_count&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| spsc_count&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationSet===&lt;br /&gt;
The Animation Set saw the largest change from Metroid Prime 1/2, gone are Transitions and Half Transitions and AdditiveInfo, EVNT was overhauled, AABBs were moved from CharacterInfo, and Hitboxes were added.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#EVNT|EVNT]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EVNT|EVNT]]&lt;br /&gt;
| evnt_count&lt;br /&gt;
| Events available for use by various animations, how events are linked to animations is currently unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
|-&lt;br /&gt;
| [[AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation count&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| A true/false value map for additive animations, true if an animation is additive, false otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#HitboxSet|HitboxSet]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#HitboxSet|HitboxSet]]&lt;br /&gt;
| hitbox_set_count&lt;br /&gt;
| Hitbox Sets for animations&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| anim_count&lt;br /&gt;
| [[ANIM (File Format)|ANIM]] ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EVNT====&lt;br /&gt;
Not much is currently known about the actual structure of the new EVNT format, so much of the structure is a complete guess.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index of this particular event, how it's currently used is unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]]&lt;br /&gt;
| particle_poi_node_count&lt;br /&gt;
| Particle effects events that can be triggered during the course of the animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]]&lt;br /&gt;
| sound_poi_node_count&lt;br /&gt;
| Sound effect events that can be triggered during the course of the animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====ParticlePOINode====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#SharedHeader|POI Header]]&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type, &amp;lt;code&amp;gt;PART&amp;lt;/code&amp;gt; is the most common, not aware of any others being used&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Particle ID, file type corresponds to the previous value.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale of the particle system.&lt;br /&gt;
|- &lt;br /&gt;
| u32&lt;br /&gt;
| Parent Mode&lt;br /&gt;
|}&lt;br /&gt;
====SoundPOINode====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#POI Header|POI Header]]&lt;br /&gt;
| 1&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| [[CAUD (File Format)|CAUD]] id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Dictates the presence of the following values, if 1, the following float exists, otherwise 35 unknown bytes.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the previous value is 1&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 35&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the value above does not exist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====POI Header====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====HitboxSet====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#Hitbox|Hitbox]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Hitbox|Hitbox]]&lt;br /&gt;
| hitbox_count&lt;br /&gt;
| Hitboxes for bones used in an animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Hitbox=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1377</id>
		<title>CHAR (Metroid Prime 3)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1377"/>
				<updated>2016-05-02T02:08:17Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* SoundPOINode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
{{research|major|This format hasn't been researched/documented very well yet, but it appears to be extremely similar to ANCS.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|Character Info]]&lt;br /&gt;
| Specific settings and resources used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|Animation Set]]&lt;br /&gt;
| Events, Animations, and Hitbox related settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CharacterInfo===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character name'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL (File Format)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character model'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR (File Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skin'''&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Overlay|Overlays]]&lt;br /&gt;
| overlay_count&lt;br /&gt;
| Overlays used for various status effects, such as Frozen, Hazard, or Hyper&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF (File Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skeleton'''&lt;br /&gt;
|-&lt;br /&gt;
| [[SAND (File Format)|SAND]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character sand'''&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation Set Database&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|Particle Resource Data]]&lt;br /&gt;
| 1&lt;br /&gt;
| Various Particle Systems used by this character.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Overlay====&lt;br /&gt;
Overlays are external models that are skinned and attached to the rig for certain status effects, the layout simply consists of a FourCC value, a CMDL reference, and a CSKR reference.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| The type of status effect this overlay is for, &amp;lt;code&amp;gt;FRZN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HYPR&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;HZRD&amp;lt;/code&amp;gt; are known values, there may be more&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[CMDL (File Format)|CMDL]] id&lt;br /&gt;
|- &lt;br /&gt;
| u64&lt;br /&gt;
| [[CSKR (File Format)|CSKR]] id&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
Particle Resource data is simply a list of particle systems that can be used with this character.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[PART (File Format)|PART]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| part_count&lt;br /&gt;
| [[PART (File Format)|PART]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| swhc_count&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| elsc_count&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| spsc_count&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationSet===&lt;br /&gt;
The Animation Set saw the largest change from Metroid Prime 1/2, gone are Transitions and Half Transitions and AdditiveInfo, EVNT was overhauled, AABBs were moved from CharacterInfo, and Hitboxes were added.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#EVNT|EVNT]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EVNT|EVNT]]&lt;br /&gt;
| evnt_count&lt;br /&gt;
| Events available for use by various animations, how events are linked to animations is currently unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations used by this character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EVNT====&lt;br /&gt;
Not much is currently known about the actual structure of the new EVNT format, so much of the structure is a complete guess.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index of this particular event, how it's currently used is unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]]&lt;br /&gt;
| particle_poi_node_count&lt;br /&gt;
| Particle effects events that can be triggered during the course of the animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]]&lt;br /&gt;
| sound_poi_node_count&lt;br /&gt;
| Sound effect events that can be triggered during the course of the animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====ParticlePOINode====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#SharedHeader|POI Header]]&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type, &amp;lt;code&amp;gt;PART&amp;lt;/code&amp;gt; is the most common, not aware of any others being used&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Particle ID, file type corresponds to the previous value.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale of the particle system.&lt;br /&gt;
|- &lt;br /&gt;
| u32&lt;br /&gt;
| Parent Mode&lt;br /&gt;
|}&lt;br /&gt;
====SoundPOINode====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#POI Header|POI Header]]&lt;br /&gt;
| 1&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| [[CAUD (File Format)|CAUD]] id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Dictates the presence of the following values, if 1, the following float exists, otherwise 35 unknown bytes.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the previous value is 1&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 35&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the value above does not exist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Shared Header====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1376</id>
		<title>CHAR (Metroid Prime 3)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=CHAR_(Metroid_Prime_3)&amp;diff=1376"/>
				<updated>2016-05-02T02:03:11Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
{{research|major|This format hasn't been researched/documented very well yet, but it appears to be extremely similar to ANCS.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| {{unknown|Unknown}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|Character Info]]&lt;br /&gt;
| Specific settings and resources used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|Animation Set]]&lt;br /&gt;
| Events, Animations, and Hitbox related settings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CharacterInfo===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character name'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL (File Format)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character model'''&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR (File Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skin'''&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay count&lt;br /&gt;
|-&lt;br /&gt;
| [[#Overlay|Overlays]]&lt;br /&gt;
| overlay_count&lt;br /&gt;
| Overlays used for various status effects, such as Frozen, Hazard, or Hyper&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF (File Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character skeleton'''&lt;br /&gt;
|-&lt;br /&gt;
| [[SAND (File Format)|SAND]]&lt;br /&gt;
| 1&lt;br /&gt;
| '''Character sand'''&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation Set Database&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|Particle Resource Data]]&lt;br /&gt;
| 1&lt;br /&gt;
| Various Particle Systems used by this character.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Overlay====&lt;br /&gt;
Overlays are external models that are skinned and attached to the rig for certain status effects, the layout simply consists of a FourCC value, a CMDL reference, and a CSKR reference.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| The type of status effect this overlay is for, &amp;lt;code&amp;gt;FRZN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HYPR&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;HZRD&amp;lt;/code&amp;gt; are known values, there may be more&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| [[CMDL (File Format)|CMDL]] id&lt;br /&gt;
|- &lt;br /&gt;
| u64&lt;br /&gt;
| [[CSKR (File Format)|CSKR]] id&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
Particle Resource data is simply a list of particle systems that can be used with this character.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[PART (File Format)|PART]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| part_count&lt;br /&gt;
| [[PART (File Format)|PART]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| swhc_count&lt;br /&gt;
| [[SWHC (File Format)|SWHC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| elsc_count&lt;br /&gt;
| [[ELSC (File Format)|ELSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| spsc_count&lt;br /&gt;
| [[SPSC (File Format)|SPSC]] ids&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} count&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| unk_count&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}} ids&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationSet===&lt;br /&gt;
The Animation Set saw the largest change from Metroid Prime 1/2, gone are Transitions and Half Transitions and AdditiveInfo, EVNT was overhauled, AABBs were moved from CharacterInfo, and Hitboxes were added.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#EVNT|EVNT]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EVNT|EVNT]]&lt;br /&gt;
| evnt_count&lt;br /&gt;
| Events available for use by various animations, how events are linked to animations is currently unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[ANCS (File Format)#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations used by this character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EVNT====&lt;br /&gt;
Not much is currently known about the actual structure of the new EVNT format, so much of the structure is a complete guess.&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index of this particular event, how it's currently used is unknown&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticlePOINode|ParticlePOINode]]&lt;br /&gt;
| particle_poi_node_count&lt;br /&gt;
| Particle effects events that can be triggered during the course of the animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]] count&lt;br /&gt;
|-&lt;br /&gt;
| [[#SoundPOINode|SoundPOINode]]&lt;br /&gt;
| sound_poi_node_count&lt;br /&gt;
| Sound effect events that can be triggered during the course of the animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====ParticlePOINode====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#SharedHeader|POI Header]]&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type, &amp;lt;code&amp;gt;PART&amp;lt;/code&amp;gt; is the most common, not aware of any others being used&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| Particle ID, file type corresponds to the previous value.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Scale of the particle system.&lt;br /&gt;
|- &lt;br /&gt;
| u32&lt;br /&gt;
| Parent Mode&lt;br /&gt;
|}&lt;br /&gt;
====SoundPOINode====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#SharedHeader|POI Header]]&lt;br /&gt;
| 1&lt;br /&gt;
| Basic information about this particular event&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u64&lt;br /&gt;
| 1&lt;br /&gt;
| [[CAUD (File Format)|CAUD]] id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Dictates the presence of the following values, if 1, the following float exists, otherwise 35 unknown bytes.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the previous value is 1&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 35&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
| Only present if the value above does not exist&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Shared Header====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''UNKNOWN'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:File Formats]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1373</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1373"/>
				<updated>2016-04-30T01:01:31Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* AnimationSet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Character Info Pairs&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfoPair ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Id&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| Character Info&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimationPair|AdditiveAnimationPair]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default additive&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimationPair===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimaton|AdditiveAnimation]]&lt;br /&gt;
| Additive Animation fade-in, fade-out values&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Describes how animations are additively blended together.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade In Duration&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Fade Out Duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1366</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1366"/>
				<updated>2016-04-13T21:34:52Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* CharacterSet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfoPair|CharacterInfoPair]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Character Info Pairs&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfoPair ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Id&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| Character Info&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time A&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time B&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Additive animations simply reference an existing animation within the above animation table, and has two unknown floats.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1355</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1355"/>
				<updated>2016-04-08T17:46:56Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Transition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Characters&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| id&lt;br /&gt;
| Used by the engine to as a unique identifier within the Character Set.&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time A&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time B&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Additive animations simply reference an existing animation within the above animation table, and has two unknown floats.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1354</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1354"/>
				<updated>2016-04-08T17:46:29Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Blend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Characters&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| id&lt;br /&gt;
| Used by the engine to as a unique identifier within the Character Set.&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time A&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time B&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Additive animations simply reference an existing animation within the above animation table, and has two unknown floats.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1353</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1353"/>
				<updated>2016-04-08T17:45:47Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* Blend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Characters&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| id&lt;br /&gt;
| Used by the engine to as a unique identifier within the Character Set.&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time A&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time B&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Additive animations simply reference an existing animation within the above animation table, and has two unknown floats.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1350</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1350"/>
				<updated>2016-04-08T03:14:30Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* ParticleResData */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Characters&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| id&lt;br /&gt;
| Used by the engine to as a unique identifier within the Character Set.&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
| Only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time A&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time B&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Additive animations simply reference an existing animation within the above animation table, and has two unknown floats.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1349</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1349"/>
				<updated>2016-04-08T03:14:04Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* ParticleResData */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Characters&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| id&lt;br /&gt;
| Used by the engine to as a unique identifier within the Character Set.&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character, only present if info_type_count &amp;gt; 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time A&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time B&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Additive animations simply reference an existing animation within the above animation table, and has two unknown floats.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1348</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1348"/>
				<updated>2016-04-08T03:03:37Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: /* AnimationResource */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Characters&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| id&lt;br /&gt;
| Used by the engine to as a unique identifier within the Character Set.&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time A&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time B&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Additive animations simply reference an existing animation within the above animation table, and has two unknown floats.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1347</id>
		<title>ANCS (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=ANCS_(File_Format)&amp;diff=1347"/>
				<updated>2016-04-08T02:53:51Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''ANCS format''' defines characters for animation in Metroid Prime 1 and 2. Starting in Metroid Prime 3, it was replaced by the [[CHAR (Metroid Prime 3)|CHAR]] format. The extension stands for '''AN'''imation '''C'''haracter '''S'''et.&lt;br /&gt;
&lt;br /&gt;
{{research|3|Most of the file structure is known, but we still don't know what any of it actually is! Also, the table at the end of the file is unknown.}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Root Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterSet|CharacterSet]]&lt;br /&gt;
| Character Set&lt;br /&gt;
| Contains multiple [[#CharacterInfo|CharacterInfo]] Entries&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationSet|AnimationSet]]&lt;br /&gt;
| Animation Set&lt;br /&gt;
| Describes Meta Animations, Meta Transitions, Half Transitions, and Resource association&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CharacterSet ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Version&lt;br /&gt;
| Always 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]] count&lt;br /&gt;
| Number of characters in this set.&lt;br /&gt;
|-&lt;br /&gt;
| [[#CharacterInfo|CharacterInfo]]&lt;br /&gt;
| character_info_count&lt;br /&gt;
| Characters&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== CharacterInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| id&lt;br /&gt;
| Used by the engine to as a unique identifier within the Character Set.&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Type Count&lt;br /&gt;
| Informs the engine which info types are present within the CharacterSet&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Character Name&lt;br /&gt;
| Human readable name, useful for editors, the engine does not use this internally.&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Model&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Skin&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[CINF_(File_Format)|CINF]]&lt;br /&gt;
| 1&lt;br /&gt;
| Character Rig&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| Animations in AnimationSet that specifically relate to this character, some characters make heavy use of this abstraction, Space Pirates being the biggest culprit.&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationName|AnimationName]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animation Names&lt;br /&gt;
| Animations linked to this character by name and index.&lt;br /&gt;
|-&lt;br /&gt;
| [[PASDatabase|PASDatabase]]&lt;br /&gt;
| 1&lt;br /&gt;
| Parameterized Animation State Data&lt;br /&gt;
| Not much is known about how this data is used.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ParticleResData|ParticleResData]]&lt;br /&gt;
| 1&lt;br /&gt;
| Particle systems used by this character&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;lt;= 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB|AnimationAABB]]&lt;br /&gt;
| animation_aabb_count&lt;br /&gt;
| Animation bounds&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Effect Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[#Effect|Effect]]&lt;br /&gt;
| effect_count&lt;br /&gt;
| Effects used by this character, including which bones they're attached to&lt;br /&gt;
| Only present when info_type_count &amp;gt; 1&lt;br /&gt;
|-&lt;br /&gt;
| [[CMDL_(Metroid_Prime)|CMDL]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Model for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CSKR_(File_Format)|CSKR]]&lt;br /&gt;
| 1&lt;br /&gt;
| Overlay Skin for status effects, such as ice when frozen&lt;br /&gt;
| Only present when info_type_count &amp;gt; 3&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Index Count&lt;br /&gt;
| The total number of animations used by this, only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| animation_index_count&lt;br /&gt;
| Indices of each animation used by this character&lt;br /&gt;
| Only present when info_type_count &amp;gt; 4&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation AABB Indexed Count&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationAABB_Indexed|AnimationAABB]]&lt;br /&gt;
| animation_aabb_indexed_count&lt;br /&gt;
| Animation bounds, referenced by index&lt;br /&gt;
| Only present when info_type_count &amp;gt; 9&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====AnimationName====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Index&lt;br /&gt;
| The index into AnimationSet's MetaAnimation table.&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
| Not present when info_type_count &amp;gt;= 10&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Name&lt;br /&gt;
| The name of the index ref'd Animation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ParticleResData===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[PART_(File_Format)|PART]] count&lt;br /&gt;
| How many particle systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[PART_(File_Format)|PART]]&lt;br /&gt;
| part_count&lt;br /&gt;
| The particle systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]] count&lt;br /&gt;
| How many swooshes are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[SWHC_(File_Format)|SWHC]]&lt;br /&gt;
| swhc_count&lt;br /&gt;
| The swooshes used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown Count'''}}&lt;br /&gt;
| How many unknown systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| unknown_count&lt;br /&gt;
| The unknown systems used by this character&lt;br /&gt;
|-&lt;br /&gt;
| u32 &lt;br /&gt;
| 1&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]] count&lt;br /&gt;
| How many electric systems are used by this character&lt;br /&gt;
|-&lt;br /&gt;
| [[ELSC_(File_Format)|ELSC]]&lt;br /&gt;
| else_count&lt;br /&gt;
| The electric systems used by this character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| CAABox&lt;br /&gt;
| Animation bounds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| 1&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Component Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#EffectComponent|EffectComponent]]&lt;br /&gt;
| component_count&lt;br /&gt;
| Effect Components&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EffectComponent====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| FourCC&lt;br /&gt;
| Type&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Resource as defined by Type&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Bone to attach the effect to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationAABB Indexed===&lt;br /&gt;
The only difference between this and the previous [[#AnimationAABB|AnimationAABB]] is the fact that animations are referenced by index, rather than by name.&lt;br /&gt;
&lt;br /&gt;
==AnimationSet==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u16&lt;br /&gt;
| 1&lt;br /&gt;
| Info Count&lt;br /&gt;
| Enumeration of the presence of certain sections&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| How many animations there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Animation|Animation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| Animations that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Transition Count&lt;br /&gt;
| How many transitions there are in the set&lt;br /&gt;
|-&lt;br /&gt;
| [[#Transition|Transition]]&lt;br /&gt;
| transition_count&lt;br /&gt;
| Transitions that can be referenced by characters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| 1&lt;br /&gt;
| Default Transition&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Additive Animation Count&lt;br /&gt;
| How many additive animations there are&lt;br /&gt;
|-&lt;br /&gt;
| [[#AdditiveAnimation|AdditiveAnimation]]&lt;br /&gt;
| additive_animation_count&lt;br /&gt;
| Additive animations that can be referenced in some fashion&lt;br /&gt;
| Reference method is currently unknown, presumably PASDatabase.&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time A&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| Time B&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Half Transition Count&lt;br /&gt;
| How many half transitions there in the set, Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| [[#HalfTransition|HalfTransition]]&lt;br /&gt;
| half_transition_Count&lt;br /&gt;
| Half Transitions&lt;br /&gt;
| Only present if info_count &amp;gt; 2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Resource Count&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimationResource|AnimationResource]]&lt;br /&gt;
| animation_resource_count&lt;br /&gt;
| Animation Resources&lt;br /&gt;
| Only present if info_count &amp;gt; 3, and not present at all in MP2&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Event Count&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|-&lt;br /&gt;
| [[EVNT_(File_Format)|EVNT]]&lt;br /&gt;
| event_count&lt;br /&gt;
| Animation Events&lt;br /&gt;
| Only present in MP2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Animation===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaAnimation===&lt;br /&gt;
MetaAnimations can be one of five types, and may contain children.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#EMetaAnimationType|EMetaAnimationType]]&lt;br /&gt;
| The Animation type&lt;br /&gt;
|-&lt;br /&gt;
| [[#Primitive|Primitive]], [[#Blend|Blend]], [[#Blend|PhaseBlend]], [[#Random|Random]] or [[#Sequence|Sequence]]&lt;br /&gt;
| The animation description, including name, animation ID, and index used to connect character animations references to actual animations.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====EMetaAnimationType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| Primitive&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| Blend&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| PhaseBlend&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| Random&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Sequence&lt;br /&gt;
| 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Primitive====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[ANIM_(File_Format)|ANIM]]&lt;br /&gt;
| Animation ID&lt;br /&gt;
| The asset ID for this particular animation&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Index&lt;br /&gt;
| The ID used by characters to reference this animation&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| Name&lt;br /&gt;
| The animations name&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blend====&lt;br /&gt;
Blend's structure is shared between Blend and PhaseBlend, with the only currently known difference being the animation type value.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation A&lt;br /&gt;
| The animation to, presumably, blend from&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| Animation B&lt;br /&gt;
| The animation to, presumably, blend to&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| colspan=2 {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Random====&lt;br /&gt;
Random may contain one or more children in an Animation -&amp;gt; Probability pair following this structure:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
| The number of child animations&lt;br /&gt;
|-&lt;br /&gt;
| [[#AnimProbabilityPair|AnimProbabilityPair]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to select from&lt;br /&gt;
| The exact manner these are used is currently unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====AnimProbabilityPair=====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation use if the probability factor is met&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Probability&lt;br /&gt;
| How probability is used is not currently known&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sequence====&lt;br /&gt;
Sequence is a fairly easy to understand type, it simply plays a list of animations in succession as each animation finishes&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Element Count&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| 1&lt;br /&gt;
| Animation Count&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| animation_count&lt;br /&gt;
| The animations to play in a sequence&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transition===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index A&lt;br /&gt;
| The animation to transition from&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index B&lt;br /&gt;
| The animation to transition to&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration&lt;br /&gt;
| Describes how the transition is performed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===MetaTransition===&lt;br /&gt;
Meta Transitions can be one of four types, and may contain animations.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#ETransitionType|EMetaTransitionType]]&lt;br /&gt;
| The type of transition&lt;br /&gt;
|-&lt;br /&gt;
| [[#TransAnimation|TransAnimation]], [[#TransTransition|TransTransition]], [[#TransTransition|TransPhaseTransition]], TransNoTransition&lt;br /&gt;
| The transition configuration&lt;br /&gt;
|}&lt;br /&gt;
====EMetaTransitionType====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! Value&lt;br /&gt;
|-&lt;br /&gt;
| TransAnimation&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| TransTransition&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| TransPhaseTransition&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| TransNoTransition&lt;br /&gt;
| 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransAnimation====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaAnimation|MetaAnimation]]&lt;br /&gt;
| The animation to use while transitioning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====TransTransition====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| Time&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AdditiveAnimation===&lt;br /&gt;
Additive animations simply reference an existing animation within the above animation table, and has two unknown floats.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Half Transition===&lt;br /&gt;
A half transition is very similar to a regular transition, but has less configuration information, any other differences are currently unknown&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| u32&lt;br /&gt;
| Animation Index&lt;br /&gt;
|-&lt;br /&gt;
| [[#MetaTransition|MetaTransition]]&lt;br /&gt;
| Transition configuration.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===AnimationResource===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Data Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Animation Asset ID&lt;br /&gt;
|-&lt;br /&gt;
| UniqueID32&lt;br /&gt;
| Event Asset ID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=FONT_(File_Format)&amp;diff=1321</id>
		<title>FONT (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=FONT_(File_Format)&amp;diff=1321"/>
				<updated>2016-03-11T20:10:33Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''FONT format''' defines fonts that can be used to display text in-game.&lt;br /&gt;
&lt;br /&gt;
{{research|2|There's some unknowns in the header. Also, some version 4/5 fonts have outlines on their textures - how do these work?}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
Note: All measurements are in points.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
The header has a couple minor differences depending on the version. Version 1 (MP1 Kiosk Demo) is missing the value at 0x18, and starting in Version 5 (MP3/DKCR), the texture ID is 64 bits. Those are the only changes, though (and for that matter, those are the only differences in version 1/5).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| char[4]&lt;br /&gt;
| 4&lt;br /&gt;
| '''&amp;quot;FONT&amp;quot; magic fourCC'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Version'''; see below&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| s32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Line height'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Vertical offset''' ''(note: not present in version 1)''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| s32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Line margin'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}} &lt;br /&gt;
|-&lt;br /&gt;
| 0x1E&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Font size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| string&lt;br /&gt;
| N&lt;br /&gt;
| '''Font name'''; zero-terminated string&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| [[TXTR (Metroid Prime)|TXTR]]&lt;br /&gt;
| 4/8&lt;br /&gt;
| '''Texture ID'''&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Texture format''' (see [[#Textures|Textures]])&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Glyph count'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Version&lt;br /&gt;
! Game&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ''Metroid Prime'' Kiosk Demo&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ''Metroid Prime'' NTSC&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| ''Metroid Prime'' PAL and ''Metroid Prime 2''&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| ''Metroid Prime 3'', ''DKCR''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Glyphs ===&lt;br /&gt;
&lt;br /&gt;
This section of the file details each glyph making up the font. One glyph corresponds to one character. To map the character with the part of the font texture that contains that character, each glyph contains a set of texture coordinates. Since the UV map is always rectangular, the file only stores the min/max X/Y coordinates; they should be mixed and matched to get the absolute values.&lt;br /&gt;
&lt;br /&gt;
In addition, glyphs contain a vertical offset. This offset is necessary because the textures are usually so tightly packed that there's no extra space for vertical spacing. After applying the offset, the vertical offset from the FONT header is applied. This aligns the glyphs at their intended position.&lt;br /&gt;
&lt;br /&gt;
The kerning index value is the index of the first kerning table entry for the given character. Since the table is sorted in alphabetical order, this can be used to speed up lookup time.&lt;br /&gt;
&lt;br /&gt;
This section of the file changes somewhat from version 2 to 4. Starting in version 4, font textures are able to be split up into multiple layers, which allows multiple glyphs to be encoded in the same space on the texture. A &amp;quot;layer index&amp;quot; value was introduced to track which layer the glyph is on. Additionally, a lot of 32-bit values were reduced to 8- or 16-bit. Aside from that, though, the actual layout is still the same, with the same values in the same places.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 (Metroid Prime NTSC) ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| '''UTF-16 character'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Left UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Top UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Right UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Bottom UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Left padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Print head advance'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Right padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Width'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Height'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x26&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Vertical offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Kerning start index'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E&lt;br /&gt;
| colspan=3 {{unknown|End of glyph definition}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Version 4 (Metroid Prime PAL/Trilogy) ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| '''UTF-16 character'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Left UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Top UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Right UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Bottom UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Layer index'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Glyph left padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Print head advance'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x15&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Glyph right padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Glyph width'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Glyph height'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Vertical offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| '''Kerning start index'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| colspan=3 {{unknown|End of glyph definition}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Kerning Table ===&lt;br /&gt;
&lt;br /&gt;
This table is at the end of the file, and defines kerning pairs. Kerning pairs horizontally adjust the second character of the pair whenever that particular sequence of characters is encountered. The table is case-sensitively sorted in alphabetical order, which allows for fast lookup times using the glyph kerning indices. After a 32-bit count value, each pair follows this simple structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Character 1'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Character 2'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Kerning adjust'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
{{research|minor|Someone should look at the code to make sure the info in this section is accurate.}}&lt;br /&gt;
&lt;br /&gt;
Textures used by FONT files are encoded in a bit of an unorthodox manner. The font format allows for multiple glyphs to be encoded in the same spot on the texture by splitting up the texture into multiple layers. The way this is handled on the textures is by encoding the textures with palettes (as C4), but modifying the palette indices at runtime and loading each layer one at a time as a separate texture. Each bit of the palette index corresponds to a layer, so up to four layers per font are supported. The MSB refers to layer 0, while the LSB refers to layer 3. In DKCR, font textures are encoded as C8, so theoretically the game could use up to eight layers per font; however, it still never actually uses more than four.&lt;br /&gt;
&lt;br /&gt;
The texture format is determined by a value in the header. These are the possible settings:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
! V1&lt;br /&gt;
! V2&lt;br /&gt;
! V4&lt;br /&gt;
! V5&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| One glyph layer, no outlines; fill on layer 0&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One glyph layer, with outlines; fill on layer 0, outline on layer 1&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Four glyph layers, no outlines&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Two glyph layers, with outlines; fill on layers 0/2, outlines on layers 1/3&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Two glyph layers, no outlines; copies on layers 0/1, and layers 2/3&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Two glyph layers, with outlines; fill on layers 2/3, outlines on layers 0/1&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To dump out every layer into a single texture by encoding each layer on a separate RGBA channel, the following palette colors could be substituted into the texture:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Index&lt;br /&gt;
! Binary&lt;br /&gt;
! Color&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0000&lt;br /&gt;
| 0x8000&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0001&lt;br /&gt;
| 0x7000&lt;br /&gt;
| Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 0010&lt;br /&gt;
| 0xFC00&lt;br /&gt;
| Blue&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0011&lt;br /&gt;
| 0x7F00&lt;br /&gt;
| Blue/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 0100&lt;br /&gt;
| 0x83E0&lt;br /&gt;
| Green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 0101&lt;br /&gt;
| 0x70F0&lt;br /&gt;
| Green/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0110&lt;br /&gt;
| 0xFFE0&lt;br /&gt;
| Green/Blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0111&lt;br /&gt;
| 0x7FF0&lt;br /&gt;
| Green/Blue/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| 1000&lt;br /&gt;
| 0x801F&lt;br /&gt;
| Red&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 1001&lt;br /&gt;
| 0x700F&lt;br /&gt;
| Red/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 1010&lt;br /&gt;
| 0xFC1F&lt;br /&gt;
| Red/Blue&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 1011&lt;br /&gt;
| 0x7F0F&lt;br /&gt;
| Red/Blue/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 1100&lt;br /&gt;
| 0x83FF&lt;br /&gt;
| Red/Green&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 1101&lt;br /&gt;
| 0x70FF&lt;br /&gt;
| Red/Green/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 1110&lt;br /&gt;
| 0xFFFF&lt;br /&gt;
| Red/Green/Blue&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 1111&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
| Red/Green/Blue/Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1275</id>
		<title>Animation Events (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=Animation_Events_(File_Format)&amp;diff=1275"/>
				<updated>2016-01-16T07:06:46Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{research|1|Some event parameters need research}}&lt;br /&gt;
The '''EVNT format''' is a companion to [[ANIM (File Format)|ANIM]] resources.&lt;br /&gt;
Animators are able to synchronize functional events to rigged animations for things like sound effects, visual effects, character messages, and playback control.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Data Type&lt;br /&gt;
!Element Count&lt;br /&gt;
!Identifier&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|long&lt;br /&gt;
|1&lt;br /&gt;
|version&lt;br /&gt;
|0x1 or 0x2&lt;br /&gt;
|-&lt;br /&gt;
|long&lt;br /&gt;
|1&lt;br /&gt;
|loop_event_count&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[#Loop Event|Loop Event]]&lt;br /&gt;
|loop_event_count&lt;br /&gt;
|loop_events&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|long&lt;br /&gt;
|1&lt;br /&gt;
|uevt_event_count&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[#UEVT Event|UEVT Event]]&lt;br /&gt;
|uevt_event_count&lt;br /&gt;
|uevt_events&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|long&lt;br /&gt;
|1&lt;br /&gt;
|effect_event_count&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[#Effect Event|Effect Event]]&lt;br /&gt;
|effect_event_count&lt;br /&gt;
|effect_events&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|long&lt;br /&gt;
|1&lt;br /&gt;
|sound_event_count&lt;br /&gt;
|Version 0x2 only&lt;br /&gt;
|-&lt;br /&gt;
|[[#Sound Event|Sound Event]]&lt;br /&gt;
|sound_event_count&lt;br /&gt;
|sound_events&lt;br /&gt;
|Version 0x2 only&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Event Base ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset&lt;br /&gt;
!Length&lt;br /&gt;
!Data Type&lt;br /&gt;
!Identifier&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;start&amp;gt;&lt;br /&gt;
|2&lt;br /&gt;
|short&lt;br /&gt;
|unknown0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x2&lt;br /&gt;
|&amp;lt;null-term&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|event_name&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0x0&lt;br /&gt;
|2&lt;br /&gt;
|short&lt;br /&gt;
|event_type&lt;br /&gt;
|Enumerated event type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0x2&lt;br /&gt;
|4&lt;br /&gt;
|float&lt;br /&gt;
|event_timestamp&lt;br /&gt;
|Time (in seconds) from start of [[ANIM (File Format)|ANIM]] to trigger event&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0x6&lt;br /&gt;
|4&lt;br /&gt;
|long&lt;br /&gt;
|unknown1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0xA&lt;br /&gt;
|4&lt;br /&gt;
|long&lt;br /&gt;
|event_index&lt;br /&gt;
|Index of event unique from other events (perhaps used to maintain a ''triggered'' bitmap)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0xE&lt;br /&gt;
|1&lt;br /&gt;
|bool&lt;br /&gt;
|unknown2&lt;br /&gt;
|Unknown Flag&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0xF&lt;br /&gt;
|4&lt;br /&gt;
|float&lt;br /&gt;
|unknown3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0x13&lt;br /&gt;
|4&lt;br /&gt;
|float&lt;br /&gt;
|unknown4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0x17&lt;br /&gt;
|4&lt;br /&gt;
|long&lt;br /&gt;
|unknown5&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''RWK Note:''' The ''props'' string is formatted as:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Type:&amp;lt;event_type&amp;gt; &amp;lt;unknown1&amp;gt; &amp;lt;unknown2&amp;gt; &amp;lt;unknown3&amp;gt; &amp;lt;unknown4&amp;gt; &amp;lt;unknown5&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset&lt;br /&gt;
!Length&lt;br /&gt;
!Data Type&lt;br /&gt;
!Identifier&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;start&amp;gt;&lt;br /&gt;
|&amp;lt;varies&amp;gt;&lt;br /&gt;
|[[#Event Base|Event Base]]&lt;br /&gt;
|event_base&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x0&lt;br /&gt;
|1&lt;br /&gt;
|bool&lt;br /&gt;
|unknown_flag&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== UEVT Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset&lt;br /&gt;
!Length&lt;br /&gt;
!Data Type&lt;br /&gt;
!Identifier&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;start&amp;gt;&lt;br /&gt;
|&amp;lt;varies&amp;gt;&lt;br /&gt;
|[[#Event Base|Event Base]]&lt;br /&gt;
|event_base&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x0&lt;br /&gt;
|4&lt;br /&gt;
|long&lt;br /&gt;
|uevt_type&lt;br /&gt;
|Enumerated UEVT type (unknown values)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x4&lt;br /&gt;
|&amp;lt;null-term&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|bone_name&lt;br /&gt;
|[[CINF (File Format)|CINF]] Bone Name (for applicable events)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Effect Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset&lt;br /&gt;
!Length&lt;br /&gt;
!Data Type&lt;br /&gt;
!Identifier&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;start&amp;gt;&lt;br /&gt;
|&amp;lt;varies&amp;gt;&lt;br /&gt;
|[[#Event Base|Event Base]]&lt;br /&gt;
|event_base&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x0&lt;br /&gt;
|4&lt;br /&gt;
|long&lt;br /&gt;
|frame_count&lt;br /&gt;
|Number of frames to run effect-emitter for&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x4&lt;br /&gt;
|4&lt;br /&gt;
|long&lt;br /&gt;
|effect_type&lt;br /&gt;
|FourCC of effect's type ([[PART (File Format)|PART]], [[SWHC (File Format)|SWHC]], [[ELSC (File Format)|ELSC]])&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x8&lt;br /&gt;
|4&lt;br /&gt;
|long&lt;br /&gt;
|effect_ref&lt;br /&gt;
|ID of [[Effect Script|effect]] resource&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0xC&lt;br /&gt;
|&amp;lt;null-term&amp;gt;&lt;br /&gt;
|string&lt;br /&gt;
|bone_name&lt;br /&gt;
|[[CINF (File Format)|CINF]] Bone Name (for transforming effects)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0x0&lt;br /&gt;
|4&lt;br /&gt;
|float&lt;br /&gt;
|effect_scale&lt;br /&gt;
|Proportional-scale to apply with effect in scene&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;&amp;amp;#43;0x4&lt;br /&gt;
|4&lt;br /&gt;
|long&lt;br /&gt;
|transform_type&lt;br /&gt;
|Enumerated transform-mode relating effect to actor's bone:&lt;br /&gt;
&amp;lt;ol start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Effect-emitter transformed to bone for initial frame, then retained&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Effect-emitter continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entire effect (particle instances and all) continuously transformed to bone&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sound Event ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset&lt;br /&gt;
!Length&lt;br /&gt;
!Data Type&lt;br /&gt;
!Identifier&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;start&amp;gt;&lt;br /&gt;
|&amp;lt;varies&amp;gt;&lt;br /&gt;
|[[#Event Base|Event Base]]&lt;br /&gt;
|event_base&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x0&lt;br /&gt;
|4&lt;br /&gt;
|long&lt;br /&gt;
|sound_id&lt;br /&gt;
|Lower 16-bits are [[AGSC (File Format)|AGSC]] ''sound-id'' indirected via [[ATBL (File Format)|ATBL]]. Most-significant bit is a ''looped'' flag&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x4&lt;br /&gt;
|4&lt;br /&gt;
|float&lt;br /&gt;
|ref_amplitude&lt;br /&gt;
|Reference amplitude for audio attenuation&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#43;0x8&lt;br /&gt;
|4&lt;br /&gt;
|float&lt;br /&gt;
|ref_distance&lt;br /&gt;
|Reference distance for audio attenuation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=FONT_(File_Format)&amp;diff=1245</id>
		<title>FONT (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=FONT_(File_Format)&amp;diff=1245"/>
				<updated>2015-10-21T05:08:01Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''FONT format''' defines fonts that can be used to display text in-game.&lt;br /&gt;
&lt;br /&gt;
{{research|2|There's some unknowns in the header. Also, some version 4/5 fonts have outlines on their textures - how do these work?}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
Note: All measurements are in points.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
The header has a couple minor differences depending on the version. Version 1 (MP1 Kiosk Demo) is missing the value at 0x18, and starting in Version 5 (MP3/DKCR), the texture ID is 64 bits. Those are the only changes, though (and for that matter, those are the only differences in version 1/5).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| char[4]&lt;br /&gt;
| 4&lt;br /&gt;
| '''&amp;quot;FONT&amp;quot; magic fourCC'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Version'''; see below&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| s32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Line height'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Vertical offset''' ''(note: not present in version 1)''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| s32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Line margin'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| bool&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown'''}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| {{unknown|'''Unknown'''}} &lt;br /&gt;
|-&lt;br /&gt;
| 0x1E&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Font size'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| string&lt;br /&gt;
| N&lt;br /&gt;
| '''Font name'''; zero-terminated string&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| [[TXTR (Metroid Prime)|TXTR]]&lt;br /&gt;
| 4/8&lt;br /&gt;
| '''Texture ID'''&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Texture format''' (see [[#Textures|Textures]])&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Glyph count'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Version ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Version&lt;br /&gt;
! Game&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| ''Metroid Prime'' Kiosk Demo&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ''Metroid Prime'' NTSC&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| ''Metroid Prime'' PAL and ''Metroid Prime 2''&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| ''Metroid Prime 3'', ''DKCR''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Glyphs ===&lt;br /&gt;
&lt;br /&gt;
This section of the file details each glyph making up the font. One glyph corresponds to one character. To map the character with the part of the font texture that contains that character, each glyph contains a set of texture coordinates. Since the UV map is always rectangular, the file only stores the min/max X/Y coordinates; they should be mixed and matched to get the absolute values.&lt;br /&gt;
&lt;br /&gt;
In addition, glyphs contain a vertical offset. This offset is necessary because the textures are usually so tightly packed that there's no extra space for vertical spacing. After applying the offset, the vertical offset from the FONT header is applied. This aligns the glyphs at their intended position.&lt;br /&gt;
&lt;br /&gt;
The kerning index value is the index of the first kerning table entry for the given character. Since the table is sorted in alphabetical order, this can be used to speed up lookup time.&lt;br /&gt;
&lt;br /&gt;
This section of the file changes somewhat from version 2 to 4. Starting in version 4, glyphs are able to be encoded to only one particular RGBA channel, which allows multiple glyphs to be encoded in the same space on the texture. A &amp;quot;channel index&amp;quot; value was introduced to track which channel the glyph is on. Additionally, a lot of 32-bit values were reduced to 8- or 16-bit. Aside from that, though, the actual layout is still the same, with the same values in the same places.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 (Metroid Prime NTSC) ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| '''UTF-16 character'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Left UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Top UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Right UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Bottom UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Left padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Print head advance'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1A&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Right padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1E&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Width'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x22&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Height'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x26&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Vertical offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A&lt;br /&gt;
| u32&lt;br /&gt;
| 4&lt;br /&gt;
| '''Kerning index'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E&lt;br /&gt;
| colspan=3 {{unknown|End of glyph definition}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Version 4 (Metroid Prime PAL/Trilogy) ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Type&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| '''UTF-16 character'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Left UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x6&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Top UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xA&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Right UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xE&lt;br /&gt;
| float&lt;br /&gt;
| 4&lt;br /&gt;
| '''Bottom UV coordinate'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''RGBA channel index'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Glyph left padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Print head advance'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x15&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Glyph right padding'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x16&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Glyph width'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x17&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Glyph height'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| u8&lt;br /&gt;
| 1&lt;br /&gt;
| '''Vertical offset'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| u16&lt;br /&gt;
| 2&lt;br /&gt;
| '''Kerning index'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x1B&lt;br /&gt;
| colspan=3 {{unknown|End of glyph definition}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Kerning Table ===&lt;br /&gt;
&lt;br /&gt;
This table is at the end of the file, and defines kerning pairs. Kerning pairs horizontally adjust the second character of the pair whenever that particular sequence of characters is encountered. The table is case-sensitively sorted in alphabetical order, which allows for fast lookup times using the glyph kerning indices. After a 32-bit count value, each pair follows this simple structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 2&lt;br /&gt;
| '''Character 1'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x2&lt;br /&gt;
| 2&lt;br /&gt;
| '''Character 2'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Kerning adjust'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| colspan=2 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
{{research|minor|Someone should look at the code to make sure the info in this section is accurate.}}&lt;br /&gt;
&lt;br /&gt;
Textures used by FONT files are encoded in a bit of an unorthodox manner. The font format allows for multiple glyphs to be encoded in the same spot on the texture by splitting up the texture into multiple layers. The way this is handled on the textures is by encoding the textures with palettes (as C4), but modifying the palette indices at runtime and loading each layer one at a time as a separate texture. Each bit of the palette index corresponds to a layer, so up to four layers per font are supported. The MSB refers to layer 0, while the LSB refers to layer 3. In DKCR, font textures are encoded as C8, so theoretically the game could use up to eight layers per font; however, it still never actually uses more than four.&lt;br /&gt;
&lt;br /&gt;
The texture format is determined by a value in the header. These are the possible settings:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
! V1&lt;br /&gt;
! V2&lt;br /&gt;
! V4&lt;br /&gt;
! V5&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| One glyph layer, no outlines; fill on layer 0&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| One glyph layer, with outlines; fill on layer 0, outline on layer 1&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Four glyph layers, no outlines&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Two glyph layers, with outlines; fill on layers 0/2, outlines on layers 1/3&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Two glyph layers, no outlines; copies on layers 0/1, and layers 2/3&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Two glyph layers, with outlines; fill on layers 2/3, outlines on layers 0/1&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{nocheck}}&lt;br /&gt;
| {{check}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To dump out every layer into a single texture by encoding each layer on a separate RGBA channel, the following palette colors could be substituted into the texture:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Index&lt;br /&gt;
! Binary&lt;br /&gt;
! Color&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 0000&lt;br /&gt;
| 0x8000&lt;br /&gt;
| None&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 0001&lt;br /&gt;
| 0x7000&lt;br /&gt;
| Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 0010&lt;br /&gt;
| 0xFC00&lt;br /&gt;
| Blue&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 0011&lt;br /&gt;
| 0x7F00&lt;br /&gt;
| Blue/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 0100&lt;br /&gt;
| 0x83E0&lt;br /&gt;
| Green&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 0101&lt;br /&gt;
| 0x70F0&lt;br /&gt;
| Green/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 0110&lt;br /&gt;
| 0xFFE0&lt;br /&gt;
| Green/Blue&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 0111&lt;br /&gt;
| 0x7FF0&lt;br /&gt;
| Green/Blue/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| 1000&lt;br /&gt;
| 0x801F&lt;br /&gt;
| Red&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 1001&lt;br /&gt;
| 0x700F&lt;br /&gt;
| Red/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 1010&lt;br /&gt;
| 0xFC1F&lt;br /&gt;
| Red/Blue&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 1011&lt;br /&gt;
| 0x7F0F&lt;br /&gt;
| Red/Blue/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 1100&lt;br /&gt;
| 0x83FF&lt;br /&gt;
| Red/Green&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 1101&lt;br /&gt;
| 0x70FF&lt;br /&gt;
| Red/Green/Alpha&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 1110&lt;br /&gt;
| 0xFFFF&lt;br /&gt;
| Red/Green/Blue&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 1111&lt;br /&gt;
| 0x7FFF&lt;br /&gt;
| Red/Green/Blue/Alpha&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;br /&gt;
[[Category:Metroid Prime 2: Echoes]]&lt;br /&gt;
[[Category:Metroid Prime 3: Corruption]]&lt;br /&gt;
[[Category:Donkey Kong Country Returns]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=SCAN_(Metroid_Prime)&amp;diff=1233</id>
		<title>SCAN (Metroid Prime)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=SCAN_(Metroid_Prime)&amp;diff=1233"/>
				<updated>2015-09-25T22:19:45Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This article is for the SCAN format from Metroid Prime. For other revisions of this format, see [[SCAN (File Format)]].''&lt;br /&gt;
&lt;br /&gt;
The '''SCAN file format''' describes scannable objects. It is a relatively simple format and has a static size.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The SCAN format is very simple; it has a header with data that contains general settings related to the scan, and then four structs defining how the scan images work. Even if a scan doesn't use four images, there are always four image structs, which means that the SCAN format has a static size; every SCAN file is 0x89 bytes (or 0xA0 bytes padded).&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
The header is rather simple, and consists of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Version'''; 3 for the demo, 5 for the final&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Magic'''; always 0x0BADBEEF&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''[[FRME (File Format)|FRME]] ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Scan text [[STRG (File Format)|STRG]] ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Scan Speed Flag'''; 0 = normal fast scan, 1 = slower scan (usually found in boss fights)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Logbook Category'''; see below&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 1&lt;br /&gt;
| '''Scan Icon Flag'''; 0 = orange icon, 1 = red icon&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Logbook Category ====&lt;br /&gt;
&lt;br /&gt;
There are five possible values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not a logbook scan&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Space Pirate Data&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Chozo Lore&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Creatures&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Research&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Scan Images ===&lt;br /&gt;
Following the header is an array of four structs that contain settings for up to four scan images. Although there can be anywhere from 0 to 4 scan images attached to a scan, there are always four scan image entries here. Entries that aren't used have their TXTR ID set to 0xFFFFFFFF, with the rest of the settings mostly left at defaults. They follow this format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| long&lt;br /&gt;
| '''[[TXTR (Metroid Prime)|TXTR]] ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| float&lt;br /&gt;
| '''Appearance %'''; image will appear when the scan is this% complete. Should range from 0 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| long&lt;br /&gt;
| '''Image Position'''; See below.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| long&lt;br /&gt;
| '''Width'''; 0 = no animation&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| long&lt;br /&gt;
| '''Height'''; 0 = no animation&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| float&lt;br /&gt;
| '''Interval'''; 0.0 = no animation&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| float&lt;br /&gt;
| '''Fade Duration'''; 0.0 = no fade&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| colspan=3 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Image Position ====&lt;br /&gt;
&lt;br /&gt;
There are 20 possible values for the scan image's position; there are ten for the left side, and ten for the right:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Size&lt;br /&gt;
! Position&lt;br /&gt;
! FRME_ScanHud Widget&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1/4&lt;br /&gt;
| Top-left corner&lt;br /&gt;
| imagepane_pane0&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1/4&lt;br /&gt;
| Upper-middle-left&lt;br /&gt;
| imagepane_pane1&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| 1/4&lt;br /&gt;
| Lower-middle-left&lt;br /&gt;
| imagepane_pane2&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| 1/4&lt;br /&gt;
| Bottom-left corner&lt;br /&gt;
| imagepane_pane3&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 1/2&lt;br /&gt;
| Top-left corner&lt;br /&gt;
| imagepane_pane01&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| 1/2&lt;br /&gt;
| Middle-left&lt;br /&gt;
| imagepane_pane12&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| 1/2&lt;br /&gt;
| Bottom-left corner&lt;br /&gt;
| imagepane_pane23&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| 3/4&lt;br /&gt;
| Top-left corner&lt;br /&gt;
| imagepane_pane012&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 3/4&lt;br /&gt;
| Bottom-left corner&lt;br /&gt;
| imagepane_pane123&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| 1&lt;br /&gt;
| Left side&lt;br /&gt;
| imagepane_pane0123&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| 1/4&lt;br /&gt;
| Top-right corner&lt;br /&gt;
| imagepane_pane4&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| 1/4&lt;br /&gt;
| Upper-middle-right&lt;br /&gt;
| imagepane_pane5&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 1/4&lt;br /&gt;
| Lower-middle-right&lt;br /&gt;
| imagepane_pane6&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| 1/4&lt;br /&gt;
| Bottom-right corner&lt;br /&gt;
| imagepane_pane7&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| 1/2&lt;br /&gt;
| Top-right corner&lt;br /&gt;
| imagepane_pane45&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| 1/2&lt;br /&gt;
| Middle-right&lt;br /&gt;
| imagepane_pane56&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 1/2&lt;br /&gt;
| Bottom-right corner&lt;br /&gt;
| imagepane_pane67&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 3/4&lt;br /&gt;
| Top-right corner&lt;br /&gt;
| imagepane_pane456&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 3/4&lt;br /&gt;
| Bottom-right corner&lt;br /&gt;
| imagepane_pane567&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| 1&lt;br /&gt;
| Right side&lt;br /&gt;
| imagepane_pane4567&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=packed heights=200px&amp;gt;&lt;br /&gt;
File:Scan_offsets_1.png|Image positions 0x00, 0x01, and 0x02&lt;br /&gt;
File:Scan_offsets_3.png|Image positions for 0x04, 0x06, 0x0E, and 0x10&lt;br /&gt;
File:Scan_offset_101.png|Image positions for 0x03, 0x05, and 0x0F. Note that 0x03 appears only for this scan (Omega Pirate's projectiles) and no others.&lt;br /&gt;
File:Scan_offsets_10.png|Image positions for 0x09 and 0x13&lt;br /&gt;
File:Scan_position_10000.png|This unused Chozo Elder scan (hacked onto Parasite Queen) shows image positions 0x0A and 0x0D. This scan is the only one where these positions are used.&lt;br /&gt;
File:Scan_position_99.png|Image positions for 0x0B and 0x0C (unused)&lt;br /&gt;
File:Scan_offset_11.png|Image positions for 0x07 and 0x11 (unused)&lt;br /&gt;
File:Scan_offset_12.png|Image positions for 0x08 and 0x12 (unused)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fly In Behavior ====&lt;br /&gt;
&lt;br /&gt;
The first scan image to appear (based on the appearance percent value) will &amp;quot;fly in&amp;quot; from the side of the screen toward the center. The remaining images will &amp;quot;fade in&amp;quot; without moving. The only exception to this is when the first image to appear is a &amp;quot;blank&amp;quot; image with no associated [[TXTR (Metroid Prime)|TXTR]]. In this case, no image will fly in (i.e., all images will fade in).&lt;br /&gt;
&lt;br /&gt;
==== Scan Animations ====&lt;br /&gt;
[[Image:AnimatedscanFinal.gif|thumb|The terminal with an animated scan image in the Map Facility.]]&lt;br /&gt;
An extremely small number of scans display animated images in Metroid Prime. In the final version of the game, only a terminal in the Map Facility displays an animated image. In the demo version of the game, the aforementioned terminal scan and the Parasite Queen scan both display animated images. For most SCAN files, the last 32 bits of the scan image entry are zeroed out, but for the animated scans, these 32 bits have actual values in them. Strangely, the terminal directly to the left of the animated terminal in the Map Facility also has non-zero values for these 32 bits, even though it does not display any animated images.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=SCAN_(Metroid_Prime)&amp;diff=1232</id>
		<title>SCAN (Metroid Prime)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=SCAN_(Metroid_Prime)&amp;diff=1232"/>
				<updated>2015-09-25T22:18:46Z</updated>
		
		<summary type="html">&lt;p&gt;Antidote: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This article is for the SCAN format from Metroid Prime. For other revisions of this format, see [[SCAN (File Format)]].''&lt;br /&gt;
&lt;br /&gt;
The '''SCAN file format''' describes scannable objects. It is a relatively simple format and has a static size.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
The SCAN format is very simple; it has a header with data that contains general settings related to the scan, and then four structs defining how the scan images work. Even if a scan doesn't use four images, there are always four image structs, which means that the SCAN format has a static size; every SCAN file is 0x89 bytes (or 0xA0 bytes padded).&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
The header is rather simple, and consists of the following:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| '''Version'''; 3 for the demo, 5 for the final&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| '''Magic'''; always 0x0BADBEEF&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| '''[[FRME (File Format)|FRME]] ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| '''Scan text [[STRG (File Format)|STRG]] ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| '''Scan Speed Flag'''; 0 = normal fast scan, 1 = slower scan (usually found in boss fights)&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| '''Logbook Category'''; see below&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 1&lt;br /&gt;
| '''Scan Icon Flag'''; 0 = orange icon, 1 = red icon&lt;br /&gt;
|-&lt;br /&gt;
| 0x19&lt;br /&gt;
| colspan=2 {{unknown|End of header}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Logbook Category ====&lt;br /&gt;
&lt;br /&gt;
There are five possible values:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! Category&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Not a logbook scan&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Space Pirate Data&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Chozo Lore&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Creatures&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Research&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Scan Images ===&lt;br /&gt;
Following the header is an array of four structs that contain settings for up to four scan images. Although there can be anywhere from 0 to 4 scan images attached to a scan, there are always four scan image entries here. Entries that aren't used have their TXTR ID set to 0xFFFFFFFF, with the rest of the settings mostly left at defaults. They follow this format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Type&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 4&lt;br /&gt;
| long&lt;br /&gt;
| '''[[TXTR (Metroid Prime)|TXTR]] ID'''&lt;br /&gt;
|-&lt;br /&gt;
| 0x4&lt;br /&gt;
| 4&lt;br /&gt;
| float&lt;br /&gt;
| '''Appearance %'''; image will appear when the scan is this% complete. Should range from 0 to 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 4&lt;br /&gt;
| long&lt;br /&gt;
| '''Image Position'''; See below.&lt;br /&gt;
|-&lt;br /&gt;
| 0xC&lt;br /&gt;
| 4&lt;br /&gt;
| long&lt;br /&gt;
| '''Width'''; 0 = no animation&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 4&lt;br /&gt;
| long&lt;br /&gt;
| '''Height'''; 0 = no animation&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 4&lt;br /&gt;
| float&lt;br /&gt;
| '''Interval'''; 0.0 = no animation&lt;br /&gt;
|-&lt;br /&gt;
| 0x18&lt;br /&gt;
| 4&lt;br /&gt;
| float&lt;br /&gt;
| '''Fade Duration'''; 0.0 = no fade&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| colspan=3 {{unknown|End of entry}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Image Position ====&lt;br /&gt;
&lt;br /&gt;
There are 20 possible values for the scan image's position; there are ten for the left side, and ten for the right:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Size&lt;br /&gt;
! Position&lt;br /&gt;
! FRME_ScanHud Widget&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 1/4&lt;br /&gt;
| Top-left corner&lt;br /&gt;
| imagepane_pane0&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| 1/4&lt;br /&gt;
| Upper-middle-left&lt;br /&gt;
| imagepane_pane1&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| 1/4&lt;br /&gt;
| Lower-middle-left&lt;br /&gt;
| imagepane_pane2&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| 1/4&lt;br /&gt;
| Bottom-left corner&lt;br /&gt;
| imagepane_pane3&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| 1/2&lt;br /&gt;
| Top-left corner&lt;br /&gt;
| imagepane_pane01&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| 1/2&lt;br /&gt;
| Middle-left&lt;br /&gt;
| imagepane_pane12&lt;br /&gt;
|-&lt;br /&gt;
| 0x06&lt;br /&gt;
| 1/2&lt;br /&gt;
| Bottom-left corner&lt;br /&gt;
| imagepane_pane23&lt;br /&gt;
|-&lt;br /&gt;
| 0x07&lt;br /&gt;
| 3/4&lt;br /&gt;
| Top-left corner&lt;br /&gt;
| imagepane_pane012&lt;br /&gt;
|-&lt;br /&gt;
| 0x08&lt;br /&gt;
| 3/4&lt;br /&gt;
| Bottom-left corner&lt;br /&gt;
| imagepane_pane123&lt;br /&gt;
|-&lt;br /&gt;
| 0x09&lt;br /&gt;
| 1&lt;br /&gt;
| Left side&lt;br /&gt;
| imagepane_pane0123&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A&lt;br /&gt;
| 1/4&lt;br /&gt;
| Top-right corner&lt;br /&gt;
| imagepane_pane4&lt;br /&gt;
|-&lt;br /&gt;
| 0x0B&lt;br /&gt;
| 1/4&lt;br /&gt;
| Upper-middle-right&lt;br /&gt;
| imagepane_pane5&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C&lt;br /&gt;
| 1/4&lt;br /&gt;
| Lower-middle-right&lt;br /&gt;
| imagepane_pane6&lt;br /&gt;
|-&lt;br /&gt;
| 0x0D&lt;br /&gt;
| 1/4&lt;br /&gt;
| Bottom-right corner&lt;br /&gt;
| imagepane_pane7&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E&lt;br /&gt;
| 1/2&lt;br /&gt;
| Top-right corner&lt;br /&gt;
| imagepane_pane45&lt;br /&gt;
|-&lt;br /&gt;
| 0x0F&lt;br /&gt;
| 1/2&lt;br /&gt;
| Middle-right&lt;br /&gt;
| imagepane_pane56&lt;br /&gt;
|-&lt;br /&gt;
| 0x10&lt;br /&gt;
| 1/2&lt;br /&gt;
| Bottom-right corner&lt;br /&gt;
| imagepane_pane67&lt;br /&gt;
|-&lt;br /&gt;
| 0x11&lt;br /&gt;
| 3/4&lt;br /&gt;
| Top-right corner&lt;br /&gt;
| imagepane_pane456&lt;br /&gt;
|-&lt;br /&gt;
| 0x12&lt;br /&gt;
| 3/4&lt;br /&gt;
| Bottom-right corner&lt;br /&gt;
| imagepane_pane567&lt;br /&gt;
|-&lt;br /&gt;
| 0x13&lt;br /&gt;
| 1&lt;br /&gt;
| Right side&lt;br /&gt;
| imagepane_pane4567&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=packed heights=200px&amp;gt;&lt;br /&gt;
File:Scan_offsets_1.png|Image positions 0x00, 0x01, and 0x02&lt;br /&gt;
File:Scan_offsets_3.png|Image positions for 0x04, 0x06, 0x0E, and 0x10&lt;br /&gt;
File:Scan_offset_101.png|Image positions for 0x03, 0x05, and 0x0F. Note that 0x03 appears only for this scan (Omega Pirate's projectiles) and no others.&lt;br /&gt;
File:Scan_offsets_10.png|Image positions for 0x09 and 0x13&lt;br /&gt;
File:Scan_position_10000.png|This unused Chozo Elder scan (hacked onto Parasite Queen) shows image positions 0x0A and 0x0D. This scan is the only one where these positions are used.&lt;br /&gt;
File:Scan_position_99.png|Image positions for 0x0B and 0x0C (unused)&lt;br /&gt;
File:Scan_offset_11.png|Image positions for 0x07 and 0x11 (unused)&lt;br /&gt;
File:Scan_offset_12.png|Image positions for 0x08 and 0x12 (unused)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Fly In Behavior ====&lt;br /&gt;
&lt;br /&gt;
The first scan image to appear (based on the appearance percent value) will &amp;quot;fly in&amp;quot; from the side of the screen toward the center. The remaining images will &amp;quot;fade in&amp;quot; without moving. The only exception to this is when the first image to appear is a &amp;quot;blank&amp;quot; image with no associated [[TXTR (Metroid Prime)|TXTR]]. In this case, no image will fly in (i.e., all images will fade in).&lt;br /&gt;
&lt;br /&gt;
==== Scan Animations ====&lt;br /&gt;
{{todo|Investigate what each of the four unknowns actually controls. The files are 3be96f49.SCAN, fe4e51c7.SCAN, and 1e4b491f.SCAN, though the latter only has non-zero values for the unknowns in the demo.}}&lt;br /&gt;
&lt;br /&gt;
[[Image:AnimatedscanFinal.gif|thumb|The terminal with an animated scan image in the Map Facility.]]&lt;br /&gt;
An extremely small number of scans display animated images in Metroid Prime. In the final version of the game, only a terminal in the Map Facility displays an animated image. In the demo version of the game, the aforementioned terminal scan and the Parasite Queen scan both display animated images. For most SCAN files, the last 32 bits of the scan image entry are zeroed out, but for the animated scans, these 32 bits have actual values in them. Strangely, the terminal directly to the left of the animated terminal in the Map Facility also has non-zero values for these 32 bits, even though it does not display any animated images.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats]]&lt;br /&gt;
[[Category:Metroid Prime]]&lt;/div&gt;</summary>
		<author><name>Antidote</name></author>	</entry>

	</feed>