<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pikmintkb.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xayrga</id>
	<title>Pikmin Technical Knowledge Base - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://pikmintkb.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xayrga"/>
	<link rel="alternate" type="text/html" href="https://pikmintkb.com/wiki/Special:Contributions/Xayrga"/>
	<updated>2026-04-25T14:28:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=AST_file&amp;diff=5281</id>
		<title>AST file</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=AST_file&amp;diff=5281"/>
		<updated>2026-04-24T08:48:14Z</updated>

		<summary type="html">&lt;p&gt;Xayrga: Header&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AST files contain streamed audio data, and are used in Pikmin 2.&lt;br /&gt;
To simply play audio files, you can use [https://vgmstream.org/ vgmstream], an audio playback library for multiple video game specific audio formats. &lt;br /&gt;
&lt;br /&gt;
To convert .wav to .ast, you can use [https://github.com/XAYRGA/jatast/releases/download/stable/publish_win64.zip JATAST]. This defaults to ADPCM encoding, as the GameCube&#039;s disc reading (whether on real hardware or emulated with dolphin) will not be able to keep up with large streamed music otherwise.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a 0x40 bytes long header as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || int32  || magic || &#039;STRM&#039; 0x5354524D&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || int32 || size || (File Size - 0x40)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || u16 || Format ||  0 = ADPCM, 1 = PCM16.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || u16 || BitsPerFrame || Usually 16.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || u16 || channelCount || Number of channels.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || bool (u16) || loop || 0xFFFF = true, 0x0000 = false &lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || int32 || sampleRate || Sample Rate.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || int32 || sampleCount || Sample Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || int32 || loopStart || Start of loop in samples (Aligned to nearest 16 samples) &lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || int32 || loopEnd ||  End of loop, aligned to nearest 16 samples. SampleCount if no loop. &lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || int32 || blockSize || Block size. Generally 0x00002760.&lt;br /&gt;
NOTE: This is the size of ONE CHANNEL. If you have 2 channels, the block will be 4EC0 in length, but this should still say 0x2760&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || int32 || unknown || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || u8 || volume || Volume modifier, byte. 0x7F = 100%&lt;br /&gt;
|-&lt;br /&gt;
| 0x29 || Byte[0x17] || padding ||Padding to align header to 0x40&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || BLCK[] || ... || ...&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block / BLCK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| +0x00 || int32  || magic || &#039;BLCK&#039; 0x424C434B&lt;br /&gt;
|-&lt;br /&gt;
| +0x04 || int32 || size || Block size, 0x2760 if full block. &lt;br /&gt;
NOTE: See the above comment regarding block size. This will be the length of one channel. The last BLCK&#039;s size might differ, but the rest will generally remain 0x2760&lt;br /&gt;
|-&lt;br /&gt;
| +0x08 || u16[2][6] || sampleHist || Historical samples for ADPCM4 only. &lt;br /&gt;
|-&lt;br /&gt;
| +0x20 || u8[size][channelCount] || sampleData || Sample data. Each channel will be packed directly following the previous channel.&lt;br /&gt;
|-&lt;br /&gt;
| +(size + 0x20) || Next BLCK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trivia ===&lt;br /&gt;
When encoding the sampleHist part of the block in ADPCM, this will be the historical values (last = l, p = penultimate) &lt;br /&gt;
&lt;br /&gt;
Each set of two u16&#039;s represents one channel in the AST. If there aren&#039;t that many channels, the value will be set to 0. &lt;br /&gt;
&lt;br /&gt;
[[File:ASTHistorySamples.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
The value of these will be the last evaluated  (decoded) samples from the previous block (matching channel). Without these, the predictor for the current block will overscale, resulting in &amp;quot;crunchy&amp;quot; Audio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Xayrga</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=AST_file&amp;diff=5280</id>
		<title>AST file</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=AST_file&amp;diff=5280"/>
		<updated>2026-04-24T08:46:58Z</updated>

		<summary type="html">&lt;p&gt;Xayrga: format documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AST files contain streamed audio data, and are used in Pikmin 2.&lt;br /&gt;
To simply play audio files, you can use [https://vgmstream.org/ vgmstream], an audio playback library for multiple video game specific audio formats. &lt;br /&gt;
&lt;br /&gt;
To convert .wav to .ast, you can use [https://github.com/XAYRGA/jatast/releases/download/stable/publish_win64.zip JATAST]. This defaults to ADPCM encoding, as the GameCube&#039;s disc reading (whether on real hardware or emulated with dolphin) will not be able to keep up with large streamed music otherwise.&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with a 0x40 bytes long header as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || int32  || magic || &#039;STRM&#039; 0x5354524D&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || int32 || size || (File Size - 0x40)&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || u16 || Format ||  0 = ADPCM, 1 = PCM16.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0A || u16 || BitsPerFrame || Usually 16.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || u16 || channelCount || Number of channels.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || bool (u16) || loop || 0xFFFF = true, 0x0000 = false &lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || int32 || sampleRate || Sample Rate.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || int32 || sampleCount || Sample Count&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || int32 || loopStart || Start of loop in samples (Aligned to nearest 16 samples) &lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || int32 || loopEnd ||  End of loop, aligned to nearest 16 samples. SampleCount if no loop. &lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || int32 || blockSize || Block size. Generally 0x00002760.&lt;br /&gt;
NOTE: This is the size of ONE CHANNEL. If you have 2 channels, the block will be 4EC0 in length, but this should still say 0x2760&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || int32 || unknown || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || u8 || volume || Volume modifier, byte. 0x7F = 100%&lt;br /&gt;
|-&lt;br /&gt;
| 0x29 || Byte[0x17] || padding ||Padding to align header to 0x48&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || BLCK[] || ... || ...&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Block / BLCK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Type !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| +0x00 || int32  || magic || &#039;BLCK&#039; 0x424C434B&lt;br /&gt;
|-&lt;br /&gt;
| +0x04 || int32 || size || Block size, 0x2760 if full block. &lt;br /&gt;
NOTE: See the above comment regarding block size. This will be the length of one channel. The last BLCK&#039;s size might differ, but the rest will generally remain 0x2760&lt;br /&gt;
|-&lt;br /&gt;
| +0x08 || u16[2][6] || sampleHist || Historical samples for ADPCM4 only. &lt;br /&gt;
|-&lt;br /&gt;
| +0x20 || u8[size][channelCount] || sampleData || Sample data. Each channel will be packed directly following the previous channel.&lt;br /&gt;
|-&lt;br /&gt;
| +(size + 0x20) || Next BLCK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trivia ===&lt;br /&gt;
When encoding the sampleHist part of the block in ADPCM, this will be the historical values (last = l, p = penultimate) &lt;br /&gt;
&lt;br /&gt;
Each set of two u16&#039;s represents one channel in the AST. If there aren&#039;t that many channels, the value will be set to 0. &lt;br /&gt;
&lt;br /&gt;
[[File:ASTHistorySamples.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
The value of these will be the last evaluated  (decoded) samples from the previous block (matching channel). Without these, the predictor for the current block will overscale, resulting in &amp;quot;crunchy&amp;quot; Audio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Xayrga</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=File:ASTHistorySamples.png&amp;diff=5279</id>
		<title>File:ASTHistorySamples.png</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=File:ASTHistorySamples.png&amp;diff=5279"/>
		<updated>2026-04-24T08:42:53Z</updated>

		<summary type="html">&lt;p&gt;Xayrga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AST Historical samples shown in HxD&lt;/div&gt;</summary>
		<author><name>Xayrga</name></author>
	</entry>
	<entry>
		<id>https://pikmintkb.com/w/index.php?title=BMS_file&amp;diff=5075</id>
		<title>BMS file</title>
		<link rel="alternate" type="text/html" href="https://pikmintkb.com/w/index.php?title=BMS_file&amp;diff=5075"/>
		<updated>2025-05-31T10:52:23Z</updated>

		<summary type="html">&lt;p&gt;Xayrga: siis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;lt;code&amp;gt;.bms&amp;lt;/code&amp;gt; file holds data for sequenced music in &#039;&#039;Pikmin 2&#039;&#039;. BMS files are similar to [[wikipedia:MIDI|MIDI files]], but have many more advanced features. Custom BMS files can be made with Flaaffy by Arookas (which can be found [https://github.com/arookas/flaaffy/releases here]), however Yoshi2&#039;s fork of Flaaffy is better suited to making BMS files for &#039;&#039;Pikmin 2&#039;&#039;. You can find that [https://github.com/RenolY2/flaaffy/releases here]. You can also use [https://xayr.gay/tools/jaimaker1/JAIMaker+JAISeqX1.5.9.zip JAIMaker] for a GUI based converter.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
{{todo|Actually document every byte of a bms header and music data and what it all means.}}&lt;br /&gt;
&lt;br /&gt;
A BMS file is made up of a sequence of commands which are a single byte, and can include a range of arguments. Each command has a fixed number of arguments. Values are read as big endian.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Instruction || Mnemonic || Type || Additional Arguments&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 - 0x80 || NOTE_ON || NoteOn || Variable&lt;br /&gt;
|-&lt;br /&gt;
|  0x80 || CMD_WAIT8  || Wait || int8 LEN,&lt;br /&gt;
|-&lt;br /&gt;
|  0x81 || NOTE_OFF  || NoteOff || None&lt;br /&gt;
|-&lt;br /&gt;
|  0x88 || CMD_WAIT16  || Wait || int16 LEN&lt;br /&gt;
|-&lt;br /&gt;
|  0x90 || SETPARAM_90  || Param || byte Destination Register, byte Value&lt;br /&gt;
|-&lt;br /&gt;
|  0x91 || SETPARAM_91  || Param || byte Destination Register, byte Value&lt;br /&gt;
|-&lt;br /&gt;
|  0x92 || SETPARAM_92  || Param || byte Destination Register, byte Value&lt;br /&gt;
|-&lt;br /&gt;
|  0x94 || PERF_U8_NODUR  || Perf || byte PERFValue, byte value&lt;br /&gt;
|-&lt;br /&gt;
|  0x96 || PERF_U8_DUR_U8  || Perf || byte PERFValue, byte value, byte duration&lt;br /&gt;
|-&lt;br /&gt;
|  0x97 || PERF_U8_DUR_U16  || Perf || byte PERFValue, byte value, short duration&lt;br /&gt;
|-&lt;br /&gt;
|  0x98 || PERF_S8_NODUR  || Perf || byte PERFValue, sbyte value&lt;br /&gt;
|-&lt;br /&gt;
|  0x9A || PERF_S8_DUR_U8  || Perf || byte PERFValue, sbyte value, byte duration&lt;br /&gt;
|-&lt;br /&gt;
|  0x9B || PERF_S8_DUR_U16  || Perf || byte PERFValue, sbyte value, short duration&lt;br /&gt;
|-&lt;br /&gt;
|  0x9C || PERF_S16_NODUR  || Perf || byte PERFValue, short value&lt;br /&gt;
|-&lt;br /&gt;
|  0x9D || PERF_S16_DUR_U8  || Perf || byte PERFValue, short value, byte duration&lt;br /&gt;
|-&lt;br /&gt;
|  0x9E || PERF_S16_DUR_U8_9E  || Perf || byte PERFValue, short value, byte duration&lt;br /&gt;
|-&lt;br /&gt;
|  0x9F || PERF_S16_DUR_U16  || Perf || byte PERFValue, short value, short duration&lt;br /&gt;
|-&lt;br /&gt;
|  0xA0 || PARAM_SET_R  || Param || byte dest_register, byte src_register&lt;br /&gt;
|-&lt;br /&gt;
|  0xA1 || PARAM_ADD_R  || Param || byte dest_register, byte src_register&lt;br /&gt;
|-&lt;br /&gt;
|  0xA2 || PARAM_MUL_R  || Param || byte dest_register, byte src_register&lt;br /&gt;
|-&lt;br /&gt;
|  0xA3 || PARAM_CMP_R  || Param || byte dest_register, byte src_register&lt;br /&gt;
|-&lt;br /&gt;
|  0xA4 || PARAM_SET_8  || Param || byte register, byte value &lt;br /&gt;
|-&lt;br /&gt;
|  0xA5 || PARAM_ADD_8  || Param || byte register, byte value &lt;br /&gt;
|-&lt;br /&gt;
|  0xA6 || PARAM_MUL_8  || Param || byte register, byte value &lt;br /&gt;
|-&lt;br /&gt;
|  0xA7 || PARAM_CMP_8  || Param || byte register, byte value &lt;br /&gt;
|-&lt;br /&gt;
|  0xA8 || PARAM_LOAD_UNK  || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
|  0xA9 || PARAM_BITWISE  || Param || &lt;br /&gt;
|-&lt;br /&gt;
|  0xAA || PARAM_LOADTBL  || Param || &lt;br /&gt;
|-&lt;br /&gt;
|  0xAB || PARAM_SUBTRACT  || Param || &lt;br /&gt;
|-&lt;br /&gt;
|  0xAC || PARAM_SET_16  || Param || byte register, short value&lt;br /&gt;
|-&lt;br /&gt;
|  0xAD || PARAM_ADD_16  || Param || byte register, short value&lt;br /&gt;
|-&lt;br /&gt;
|  0xAE || PARAM_MUL_16  || Param || byte register, short value&lt;br /&gt;
|-&lt;br /&gt;
|  0xAF || PARAM_CMP_16  || Param || byte register, short value&lt;br /&gt;
|-&lt;br /&gt;
|  0xB0 || OPOVERRIDE_1  || Override || It&#039;s complicated.&lt;br /&gt;
|-&lt;br /&gt;
|  0xB1 || OPOVERRIDE_2  || Override || &lt;br /&gt;
|-&lt;br /&gt;
|  0xB4 || OPOVERRIDE_4  || Override || &lt;br /&gt;
|-&lt;br /&gt;
|  0xB8 || OPOVERRIDE_R  || Override || &lt;br /&gt;
|-&lt;br /&gt;
|  0xC1 || OPENTRACK  || Track || byte trackID &amp;amp;lt;= 0xF, int24 trackID&lt;br /&gt;
|-&lt;br /&gt;
|  0xC2 || OPENTRACKBROS  || Track || &lt;br /&gt;
|-&lt;br /&gt;
|  0xC4 || CALL  || Flow || byte condition, int24 address&lt;br /&gt;
|-&lt;br /&gt;
|  0xC5 || RETURN_NOARG  || Flow || &lt;br /&gt;
|-&lt;br /&gt;
|  0xC6 || RETURN  || Flow || byte condition&lt;br /&gt;
|-&lt;br /&gt;
|  0xC8 || JMP  || Flow || int24 address&lt;br /&gt;
|-&lt;br /&gt;
|  0xC9 || LOOP_S  || Flow || byte count&lt;br /&gt;
|-&lt;br /&gt;
|  0xCA || LOOP_E  || Flow || &lt;br /&gt;
|-&lt;br /&gt;
|  0xCB || READPORT  || Port || byte srcPort, byte dstRegister&lt;br /&gt;
|-&lt;br /&gt;
|  0xCC || WRITEPORT  || Port || byte srcPort, byte dstRegister&lt;br /&gt;
|-&lt;br /&gt;
|  0xCD || CHECKPORTIMPORT  || Port || byte srcPort&lt;br /&gt;
|-&lt;br /&gt;
|  0xCE || CHECKPORTEXPORT  || Port || byte srcPort&lt;br /&gt;
|-&lt;br /&gt;
|  0xCF || CMD_WAITR  || Wait || byte register&lt;br /&gt;
|-&lt;br /&gt;
|  0xD1 || PARENTWRITEPORT  || Port || &lt;br /&gt;
|-&lt;br /&gt;
|  0xD2 || CHILDWRITEPORT  || Port || &lt;br /&gt;
|-&lt;br /&gt;
|  0xD4 || SETLASTNOTE  ||  || byte lastNoteValue&lt;br /&gt;
|-&lt;br /&gt;
|  0xD5 || TIMERELATE  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xD6 || SIMPLEOSC  || Oscillator || &lt;br /&gt;
|-&lt;br /&gt;
|  0xD7 || SIMPLEENV  || Envelope || &lt;br /&gt;
|-&lt;br /&gt;
|  0xD8 || SIMPLEADSR  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xD9 || TRANSPOSE  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xDA || CLOSETRACK  || Track || byte trackID&lt;br /&gt;
|-&lt;br /&gt;
|  0xDB || OUTSWITCH  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xDC || UPDATESYNC  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xDD || BUSCONNECT  || Port || &lt;br /&gt;
|-&lt;br /&gt;
|  0xDE || PAUSESTATUS  || Flow || &lt;br /&gt;
|-&lt;br /&gt;
|  0xDF || SETINTERRUPT  || Interrupt || byte InterruptID, int24 Callback_Address&lt;br /&gt;
|-&lt;br /&gt;
|  0xE0 || DISINTERRUPT  || Interrupt || &lt;br /&gt;
|-&lt;br /&gt;
|  0xE1 || CLRI  || Interrupt || &lt;br /&gt;
|-&lt;br /&gt;
|  0xE2 || SETI  || Interrupt || &lt;br /&gt;
|-&lt;br /&gt;
|  0xE3 || RETI  || Interrupt || &lt;br /&gt;
|-&lt;br /&gt;
|  0xE4 || INTTIMER  || Interrupt || &lt;br /&gt;
|-&lt;br /&gt;
|  0xE5 || VIBDEPTH  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xE6 || VIBDEPTHMIDI  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xE7 || SYNCCPU  || Flow || short syncdata?&lt;br /&gt;
|-&lt;br /&gt;
|  0xE8 || FLUSHALL  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xE9 || FLUSHRELEASE  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xEA || WAIT_VLQ  || Wait || VLC delay&lt;br /&gt;
|-&lt;br /&gt;
|  0xEB || PANPOWSET  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xEC || IIRSET  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xED || FIRSET  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xEE || EXTSET  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xEF || PANSWSET  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xF0 || OSCROUTE  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xF1 || IIRCUTOFF  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xF2 || OSCFULL  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xF3 || VOLUMEMODE  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xF4 || VIBPITCH  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xFA || CHECKWAVE  ||  || &lt;br /&gt;
|-&lt;br /&gt;
|  0xFB || PRINTF  || PrintF || Variable&lt;br /&gt;
|-&lt;br /&gt;
|  0xFC || NOP  || Misc || Skips this opcode, can be used for patching things out&lt;br /&gt;
|-&lt;br /&gt;
|  0xFD || TEMPO  || Flow || int16 Tempo&lt;br /&gt;
|-&lt;br /&gt;
|  0xFE || TIMEBASE  || Flow || int16 Timebase&lt;br /&gt;
|-&lt;br /&gt;
|  0xFF || FINISH  || Track || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== List of BMS files ==&lt;br /&gt;
A full list of all the BMS files in &#039;&#039;Pikmin 2&#039;&#039; can be found [[Pikmin 2 BMS file list|here]].&lt;br /&gt;
&lt;br /&gt;
== Interactive music ==&lt;br /&gt;
A lot of BMS music in &#039;&#039;Pikmin 2&#039;&#039; is interactive, meaning that parts of it change depending on what you do in the game. A tutorial to do this can be found [[Creating Interactive BMS Files|here]]. Cave music is a different process, and can be found [[Creating cave music|here]].&lt;br /&gt;
&lt;br /&gt;
[[Category:File formats]]&lt;br /&gt;
[[Category:Pikmin 2]]&lt;/div&gt;</summary>
		<author><name>Xayrga</name></author>
	</entry>
</feed>