<?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=Skysurf3000</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=Skysurf3000"/>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/wiki/Special:Contributions/Skysurf3000"/>
		<updated>2026-05-02T23:21:45Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=AFSM_(File_Format)&amp;diff=416</id>
		<title>AFSM (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=AFSM_(File_Format)&amp;diff=416"/>
				<updated>2015-01-26T12:36:58Z</updated>
		
		<summary type="html">&lt;p&gt;Skysurf3000: condition names are zeo terminated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''AFSM format''' controls AI behavior; it stands for '''A'''I '''F'''inite '''S'''tate '''M'''achine. AI-controlled creatures have a limited number of possible states they can be in. The AFSM file defines those states, and what triggers can cause it to advance to another state.&lt;br /&gt;
&lt;br /&gt;
{{researchminor|reason=We should have a list of possible states and trigger conditions and a short explanation of what they generally do on this page somewhere. Also, the float settings on conditions is unknown.}}&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;
The format first defines a list of states, then defines each trigger attached to each state. There are no state/trigger type IDs; rather, the name string itself is used as an identifier to fetch the corresponding AI function. It starts with a short header listing each state and then providing a trigger count. Note that the trigger count isn't actually used to parse the file; it's present merely because the game uses it to allocate space for each trigger ahead of time.&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;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''State count''' (SC)&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| SC&lt;br /&gt;
| '''State names''' (each zero-terminated)&lt;br /&gt;
|-&lt;br /&gt;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''Condition count'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== State Triggers ===&lt;br /&gt;
&lt;br /&gt;
Following that, it iterates through each state, defining the triggers associated with each one. Triggers are composed of a target state index and a number of conditions; when all the conditions associated with a trigger are satisfied, it advances to the targeted state. The state trigger definitions are structured like this:&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;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''Trigger count''' (TC)&lt;br /&gt;
|-&lt;br /&gt;
| Trigger&lt;br /&gt;
| TC&lt;br /&gt;
| '''Triggers'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trigger ===&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;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''Condition count''' (CC)&lt;br /&gt;
|-&lt;br /&gt;
| Trigger condition&lt;br /&gt;
| CC&lt;br /&gt;
| '''Conditions'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Condition ===&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;
| '''Condition name''' (zero terminated)&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown''' (possibly AI function parameter)}}&lt;br /&gt;
|-&lt;br /&gt;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''Target state index''' (note: this is ONLY present on the first condition for each trigger!)&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>Skysurf3000</name></author>	</entry>

	<entry>
		<id>http://www.metroid2002.com/retromodding/index.php?title=AFSM_(File_Format)&amp;diff=415</id>
		<title>AFSM (File Format)</title>
		<link rel="alternate" type="text/html" href="http://www.metroid2002.com/retromodding/index.php?title=AFSM_(File_Format)&amp;diff=415"/>
				<updated>2015-01-26T12:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;Skysurf3000: The &amp;quot;trigger count&amp;quot; at the end of the header is actually a &amp;quot;condition count&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''AFSM format''' controls AI behavior; it stands for '''A'''I '''F'''inite '''S'''tate '''M'''achine. AI-controlled creatures have a limited number of possible states they can be in. The AFSM file defines those states, and what triggers can cause it to advance to another state.&lt;br /&gt;
&lt;br /&gt;
{{researchminor|reason=We should have a list of possible states and trigger conditions and a short explanation of what they generally do on this page somewhere. Also, the float settings on conditions is unknown.}}&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;
The format first defines a list of states, then defines each trigger attached to each state. There are no state/trigger type IDs; rather, the name string itself is used as an identifier to fetch the corresponding AI function. It starts with a short header listing each state and then providing a trigger count. Note that the trigger count isn't actually used to parse the file; it's present merely because the game uses it to allocate space for each trigger ahead of time.&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;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''State count''' (SC)&lt;br /&gt;
|-&lt;br /&gt;
| string&lt;br /&gt;
| SC&lt;br /&gt;
| '''State names''' (each zero-terminated)&lt;br /&gt;
|-&lt;br /&gt;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''Condition count'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== State Triggers ===&lt;br /&gt;
&lt;br /&gt;
Following that, it iterates through each state, defining the triggers associated with each one. Triggers are composed of a target state index and a number of conditions; when all the conditions associated with a trigger are satisfied, it advances to the targeted state. The state trigger definitions are structured like this:&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;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''Trigger count''' (TC)&lt;br /&gt;
|-&lt;br /&gt;
| Trigger&lt;br /&gt;
| TC&lt;br /&gt;
| '''Triggers'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trigger ===&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;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''Condition count''' (CC)&lt;br /&gt;
|-&lt;br /&gt;
| Trigger condition&lt;br /&gt;
| CC&lt;br /&gt;
| '''Conditions'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Condition ===&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;
| '''Condition name'''&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| 1&lt;br /&gt;
| {{unknown|'''Unknown''' (possibly AI function parameter)}}&lt;br /&gt;
|-&lt;br /&gt;
| long&lt;br /&gt;
| 1&lt;br /&gt;
| '''Target state index''' (note: this is ONLY present on the first condition for each trigger!)&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>Skysurf3000</name></author>	</entry>

	</feed>