<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wexosmk.xyz/index.php?action=history&amp;feed=atom&amp;title=BRSTM_%28File_Format%29</id>
	<title>BRSTM (File Format) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wexosmk.xyz/index.php?action=history&amp;feed=atom&amp;title=BRSTM_%28File_Format%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=BRSTM_(File_Format)&amp;action=history"/>
	<updated>2026-05-06T17:00:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.wexosmk.xyz/index.php?title=BRSTM_(File_Format)&amp;diff=151&amp;oldid=prev</id>
		<title>Wexos: Imported from avsys wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.wexosmk.xyz/index.php?title=BRSTM_(File_Format)&amp;diff=151&amp;oldid=prev"/>
		<updated>2024-05-01T17:20:12Z</updated>

		<summary type="html">&lt;p&gt;Imported from avsys wiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;BRSTM&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;inary &amp;#039;&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;#039;evolution &amp;#039;&amp;#039;&amp;#039;ST&amp;#039;&amp;#039;&amp;#039;rea&amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;) file format is used for storing music streams on [[Wii]].&lt;br /&gt;
&lt;br /&gt;
= File Format =&lt;br /&gt;
== Header ==&lt;br /&gt;
The file starts with the following header:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &amp;#039;&amp;#039;&amp;#039;File magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;RSTM&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || {{BOM}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &amp;#039;&amp;#039;&amp;#039;Version number&amp;#039;&amp;#039;&amp;#039; of the file format.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &amp;#039;&amp;#039;&amp;#039;File size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt16 || &amp;#039;&amp;#039;&amp;#039;Header size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0E || UInt16 || &amp;#039;&amp;#039;&amp;#039;Number of sections&amp;#039;&amp;#039;&amp;#039; stored in the file.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#HEAD|HEAD]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#HEAD|HEAD]] section size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#ADPC|ADPC]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#ADPC|ADPC]] section size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#DATA|DATA]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#DATA|DATA]] section size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &amp;#039;&amp;#039;&amp;#039;Type ID&amp;#039;&amp;#039;&amp;#039;. Stores the pointer type, 0 means it&amp;#039;s an absolute &amp;#039;&amp;#039;&amp;#039;address&amp;#039;&amp;#039;&amp;#039; in memory and 1 means it&amp;#039;s an &amp;#039;&amp;#039;&amp;#039;offset&amp;#039;&amp;#039;&amp;#039; relative to a value in the file.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || &amp;#039;&amp;#039;&amp;#039;Data type&amp;#039;&amp;#039;&amp;#039;. A reference can link to different structs depending, this value specifies which one. Up to 4 different structs can be used.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte[2] || &amp;#039;&amp;#039;&amp;#039;Padding&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== HEAD ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &amp;#039;&amp;#039;&amp;#039;Section magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;HEAD&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Section size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || [[#Reference|Reference]] || &amp;#039;&amp;#039;&amp;#039;[[#Data Info|Data info]] reference&amp;#039;&amp;#039;&amp;#039;, relative to 0x08 into this structure.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || [[#Reference|Reference]] || &amp;#039;&amp;#039;&amp;#039;[[#Track Info Table|Track info table]] reference&amp;#039;&amp;#039;&amp;#039;, relative to 0x08 into this structure.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || [[#Reference|Reference]] || &amp;#039;&amp;#039;&amp;#039;[[#Channel Info Table|Channel info table]] reference&amp;#039;&amp;#039;&amp;#039;, relative to 0x08 into this structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Data Info ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &amp;#039;&amp;#039;&amp;#039;Sound encoding&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || PCM 8&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || PCM 16&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || DSP ADPCM&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || &amp;#039;&amp;#039;&amp;#039;Loop flag&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte || &amp;#039;&amp;#039;&amp;#039;Number of channels&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x03 || Byte || &amp;#039;&amp;#039;&amp;#039;Sample rate 24&amp;#039;&amp;#039;&amp;#039;. Contains the upper byte of a 24-bit value.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt16 || &amp;#039;&amp;#039;&amp;#039;Sample rate&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || UInt16 || &amp;#039;&amp;#039;&amp;#039;Block header start&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Loop start&amp;#039;&amp;#039;&amp;#039; in frames.&lt;br /&gt;
|-&lt;br /&gt;
| 0x0C || UInt32 || &amp;#039;&amp;#039;&amp;#039;Loop end&amp;#039;&amp;#039;&amp;#039; in frames.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || UInt32 || &amp;#039;&amp;#039;&amp;#039;[[#DATA|DATA]] offset&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Number of stream blocks&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x18 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Stream block size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C || UInt32 || &amp;#039;&amp;#039;&amp;#039;Stream block size&amp;#039;&amp;#039;&amp;#039; in samples.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Last stream block size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Last stream block size&amp;#039;&amp;#039;&amp;#039; in samples.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Last stream block size&amp;#039;&amp;#039;&amp;#039; in bytes, including padding.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || UInt32 || &amp;#039;&amp;#039;&amp;#039;ADPCM data interval&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x30 || UInt32 || &amp;#039;&amp;#039;&amp;#039;ADPCM data size&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Track Info Table ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &amp;#039;&amp;#039;&amp;#039;Number of [[#Track Info|track infos]]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || &amp;#039;&amp;#039;&amp;#039;Data type&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte[2] || &amp;#039;&amp;#039;&amp;#039;Padding&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After comes an array of [[#Reference|references]] which points to each [[#Track Info|track info]].&lt;br /&gt;
&lt;br /&gt;
==== Track Info ====&lt;br /&gt;
; Data type 0&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &amp;#039;&amp;#039;&amp;#039;Number of channels&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte[&amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;] || &amp;#039;&amp;#039;&amp;#039;Channel index table&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
; Data type 1&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &amp;#039;&amp;#039;&amp;#039;Volume&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte || &amp;#039;&amp;#039;&amp;#039;Pan&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || Byte[2] || &amp;#039;&amp;#039;&amp;#039;Padding&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Reserved&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || Byte || &amp;#039;&amp;#039;&amp;#039;Number of channels&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;).&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Byte[&amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;] || &amp;#039;&amp;#039;&amp;#039;Channel index table&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Channel Info Table ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Byte || &amp;#039;&amp;#039;&amp;#039;Number of [[#Channel Info|channel infos]]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || Byte[3] || &amp;#039;&amp;#039;&amp;#039;Padding&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After comes an array of [[#Reference|references]] which points to each [[#Channel Info|channel info]].&lt;br /&gt;
&lt;br /&gt;
==== Channel Info ====&lt;br /&gt;
A channel info contains data used to decode DSP ADPCM sound data. Each entry has the following structure:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Int16[8][2] || &amp;#039;&amp;#039;&amp;#039;Coefficients&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x20 || UInt16 || &amp;#039;&amp;#039;&amp;#039;Gain&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x22 || UInt16 || &amp;#039;&amp;#039;&amp;#039;Pred scale&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x24 || Int16 || &amp;#039;&amp;#039;&amp;#039;Yn 1&amp;#039;&amp;#039;&amp;#039;. History sample 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || Int16 || &amp;#039;&amp;#039;&amp;#039;Yn 2&amp;#039;&amp;#039;&amp;#039;. History sample 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x28 || UInt16 || &amp;#039;&amp;#039;&amp;#039;Loop pred scale&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2A || Int16 || &amp;#039;&amp;#039;&amp;#039;Loop yn 1&amp;#039;&amp;#039;&amp;#039;. Loop history sample 1.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C || Int16 || &amp;#039;&amp;#039;&amp;#039;Loop yn 2&amp;#039;&amp;#039;&amp;#039;. Loop history sample 2.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2E || Byte[2] || &amp;#039;&amp;#039;&amp;#039;Padding&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ADPC ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &amp;#039;&amp;#039;&amp;#039;Section magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;ADPC&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Section size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt16[][2] || &amp;#039;&amp;#039;&amp;#039;Seek history&amp;#039;&amp;#039;&amp;#039;. Contains PCM 16 samples of various parts of the stream.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DATA ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Char[4] || &amp;#039;&amp;#039;&amp;#039;Section magic&amp;#039;&amp;#039;&amp;#039;. Always &amp;#039;&amp;#039;DATA&amp;#039;&amp;#039; in ASCII.&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Section size&amp;#039;&amp;#039;&amp;#039; in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 0x08 || UInt32 || &amp;#039;&amp;#039;&amp;#039;Data offset&amp;#039;&amp;#039;&amp;#039;, relative to this field. Points to the start of the sound data.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Tools =&lt;br /&gt;
The following tools can handle BRSTM files:&lt;br /&gt;
* BrawlBox, by Kryal &amp;amp; BlackJax&lt;br /&gt;
&lt;br /&gt;
[[Category:Wii File Formats]]&lt;/div&gt;</summary>
		<author><name>Wexos</name></author>
	</entry>
</feed>