<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://insidethelink.ortiche.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://insidethelink.ortiche.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Mohawk_Sounds</id>
		<title>Mohawk Sounds - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://insidethelink.ortiche.net/wiki/index.php?action=history&amp;feed=atom&amp;title=Mohawk_Sounds"/>
		<link rel="alternate" type="text/html" href="http://insidethelink.ortiche.net/wiki/index.php?title=Mohawk_Sounds&amp;action=history"/>
		<updated>2026-05-16T21:40:19Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.15</generator>

	<entry>
		<id>http://insidethelink.ortiche.net/wiki/index.php?title=Mohawk_Sounds&amp;diff=5162&amp;oldid=prev</id>
		<title>Aaron: I added a link to more information on ADPCM encoding</title>
		<link rel="alternate" type="text/html" href="http://insidethelink.ortiche.net/wiki/index.php?title=Mohawk_Sounds&amp;diff=5162&amp;oldid=prev"/>
				<updated>2010-03-10T21:04:58Z</updated>
		
		<summary type="html">&lt;p&gt;I added a link to more information on ADPCM encoding&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 21:04, 10 March 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 132:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 132:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''loop_end'' is the ending point of the loop (not used in Riven).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''loop_end'' is the ending point of the loop (not used in Riven).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''audio_data'' is the audio data stream, encoded according to encoding. In case of 1-channel ADPC audio, each byte holds 2 compressed samples (higher and lower 4 bits of the byte); in case of stereo ADPC sounds, each byte stores one compressed sample for each channel (higher and lower 4 bits of the byte).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''audio_data'' is the audio data stream, encoded according to encoding. In case of 1-channel ADPC audio, each byte holds 2 compressed samples (higher and lower 4 bits of the byte); in case of stereo ADPC sounds, each byte stores one compressed sample for each channel (higher and lower 4 bits of the byte).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A good reference for ADPCM decoding (which sounds right to me) can be found [http://wiki.multimedia.cx/index.php?title=IMA_ADPCM here]. Use the decoding method involving the if statements and bit-shifts, which sounds the best. It can be found near the bottom of the page.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Aaron</name></author>	</entry>

	<entry>
		<id>http://insidethelink.ortiche.net/wiki/index.php?title=Mohawk_Sounds&amp;diff=2652&amp;oldid=prev</id>
		<title>TitoDalCanton: tried to generalize a bit more</title>
		<link rel="alternate" type="text/html" href="http://insidethelink.ortiche.net/wiki/index.php?title=Mohawk_Sounds&amp;diff=2652&amp;oldid=prev"/>
				<updated>2008-08-31T11:43:01Z</updated>
		
		<summary type="html">&lt;p&gt;tried to generalize a bit more&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 11:43, 31 August 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Myst}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Myst}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Riven}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Riven}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This page shows the structure of Mohawk Sound resources&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;which store game &lt;/del&gt;sounds and music. Though this &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;document &lt;/del&gt;is complete enough to correctly decode sounds (at least &amp;quot;by ear&amp;quot;), the format has a number of obscure details and unknown fields, especially those connected to data sizes. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Finally, thanks &lt;/del&gt;to Ron Hayter for providing details on the DVD version of Riven's tWAV resources.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;It happens that Myst&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Riven and other products share a somewhat common format for storing audio data (&lt;/ins&gt;sounds and music&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;): we called it the ''Mohawk sounds'' format&lt;/ins&gt;. Though this &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;page &lt;/ins&gt;is complete enough to correctly decode sounds (at least &amp;quot;by ear&amp;quot;), the format has a number of obscure details and unknown fields, especially those connected to data sizes. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Thanks &lt;/ins&gt;to Ron Hayter for providing details on the DVD version of Riven's tWAV resources.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;resources are &lt;/del&gt;structured in chunks, much like the common WAV audio format. The audio data can be compressed in three ways&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;. The first is raw &lt;/del&gt;unsigned PCM data, used in older games. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The second is &lt;/del&gt;Intel DVI ADPCM format, a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/del&gt;lossy&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;) &lt;/del&gt;differential encoding which stores the difference between consecutive samples as 4-bit delta samples, yielding a compression factor of 4:1. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The third (used &lt;/del&gt;in the DVD version of Riven&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;) is MPEG-2 Layer II encoding&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;format is &lt;/ins&gt;structured in chunks, much like the common WAV audio format. The audio data can be compressed in three ways&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* Raw &lt;/ins&gt;unsigned PCM data, used in older games.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* &lt;/ins&gt;Intel DVI ADPCM format, a lossy differential encoding which stores the difference between consecutive samples as 4-bit delta samples, yielding a compression factor of 4:1.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* MPEG-2 Layer II encoding - Used &lt;/ins&gt;in the DVD version of Riven.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It's important to note that the compressed data block contains more data than necessary (in Riven): the additional data is just garbage at the end of the block, and is skipped by the Riven decoder when the sound is played. Unfortunately, the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;tWAV &lt;/del&gt;headers seem to ignore this excess data: this makes reverse-engineering of these fields very difficult, since every relation with the full resource size is lost. It's necessary to introduce an &amp;quot;effective resource size&amp;quot; excluding the excess data.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;It's important to note that the compressed data block contains more data than necessary (in Riven): the additional data is just garbage at the end of the block, and is skipped by the Riven decoder when the sound is played. Unfortunately, the headers seem to ignore this excess data: this makes reverse-engineering of these fields very difficult, since every relation with the full resource size is lost. It's necessary to introduce an &amp;quot;effective resource size&amp;quot; excluding the excess data.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==The header==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==The header==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 62:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==The Cue# chunk==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==The Cue# chunk==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This chunk is rare, only a few tWAV resources have it and just one resource has an interesting one (that's tWAV 3 from p_Sounds.mhk). This chunk seems to contain &amp;quot;cue points&amp;quot;, in a way similar to the corresponding chunk of the WAVE format. This is much more common in other games, especially Myst.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This chunk is rare &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;in Riven&lt;/ins&gt;, only a few tWAV resources have it and just one resource has an interesting one (that's tWAV 3 from p_Sounds.mhk). This chunk seems to contain &amp;quot;cue points&amp;quot;, in a way similar to the corresponding chunk of the WAVE format. This is much more common in other games, especially Myst.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;structure&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;structure&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 87:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 90:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''name'' is the associated string (zero-terminated).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''name'' is the associated string (zero-terminated).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Most Cue# chunks have ''point_count'' set to 0, so they contain nothing. tWAV 3 from p_Sounds.mhk has two cue points, named &amp;lt;code&amp;gt;Beg Loop&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;End Loop&amp;lt;/code&amp;gt;. Please note that the chunk structure has been guessed from this single case, so the statistics is very poor :-\&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Most Cue# chunks have ''point_count'' set to 0, so they contain nothing. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Riven &lt;/ins&gt;tWAV 3 from p_Sounds.mhk has two cue points, named &amp;lt;code&amp;gt;Beg Loop&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;End Loop&amp;lt;/code&amp;gt;. Please note that the chunk structure has been guessed from this single case, so the statistics is very poor :-\&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I don't know if the engine uses this chunk at all.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I don't know if the engine uses this chunk at all.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 125:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 128:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''channels'' is the number of audio channels.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''channels'' is the number of audio channels.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''encoding'' tells how the audio data is stored. It's 0 for raw unsigned PCM, 1 for ADPCM, 2 for MPEG-2 Audio Layer II.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''encoding'' tells how the audio data is stored. It's 0 for raw unsigned PCM, 1 for ADPCM, 2 for MPEG-2 Audio Layer II.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''loop'' means loop if the value is 0xFFFF (&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;NOTE: Not &lt;/del&gt;used in Riven).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''loop'' means loop if the value is 0xFFFF (&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;not &lt;/ins&gt;used in Riven).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''loop_start'' is the starting point of the loop (&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;NOTE: Not &lt;/del&gt;used in Riven).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''loop_start'' is the starting point of the loop (&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;not &lt;/ins&gt;used in Riven).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''loop_end'' is the ending point of the loop (&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;NOTE: Not &lt;/del&gt;used in Riven).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''loop_end'' is the ending point of the loop (&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;not &lt;/ins&gt;used in Riven).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''audio_data'' is the audio data stream, encoded according to encoding. In case of 1-channel ADPC audio, each byte holds 2 compressed samples (higher and lower 4 bits of the byte); in case of stereo ADPC sounds, each byte stores one compressed sample for each channel (higher and lower 4 bits of the byte).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*''audio_data'' is the audio data stream, encoded according to encoding. In case of 1-channel ADPC audio, each byte holds 2 compressed samples (higher and lower 4 bits of the byte); in case of stereo ADPC sounds, each byte stores one compressed sample for each channel (higher and lower 4 bits of the byte).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TitoDalCanton</name></author>	</entry>

	<entry>
		<id>http://insidethelink.ortiche.net/wiki/index.php?title=Mohawk_Sounds&amp;diff=2562&amp;oldid=prev</id>
		<title>Clone2727: split off tWAV to a new &quot;Mohawk Sounds&quot; page as many games use this format under various tags</title>
		<link rel="alternate" type="text/html" href="http://insidethelink.ortiche.net/wiki/index.php?title=Mohawk_Sounds&amp;diff=2562&amp;oldid=prev"/>
				<updated>2008-08-30T15:38:31Z</updated>
		
		<summary type="html">&lt;p&gt;split off tWAV to a new &amp;quot;Mohawk Sounds&amp;quot; page as many games use this format under various tags&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Myst}}&lt;br /&gt;
{{Riven}}&lt;br /&gt;
This page shows the structure of Mohawk Sound resources, which store game sounds and music. Though this document is complete enough to correctly decode sounds (at least &amp;quot;by ear&amp;quot;), the format has a number of obscure details and unknown fields, especially those connected to data sizes. Finally, thanks to Ron Hayter for providing details on the DVD version of Riven's tWAV resources.&lt;br /&gt;
&lt;br /&gt;
The resources are structured in chunks, much like the common WAV audio format. The audio data can be compressed in three ways. The first is raw unsigned PCM data, used in older games. The second is Intel DVI ADPCM format, a (lossy) differential encoding which stores the difference between consecutive samples as 4-bit delta samples, yielding a compression factor of 4:1. The third (used in the DVD version of Riven) is MPEG-2 Layer II encoding.&lt;br /&gt;
&lt;br /&gt;
It's important to note that the compressed data block contains more data than necessary (in Riven): the additional data is just garbage at the end of the block, and is skipped by the Riven decoder when the sound is played. Unfortunately, the tWAV headers seem to ignore this excess data: this makes reverse-engineering of these fields very difficult, since every relation with the full resource size is lost. It's necessary to introduce an &amp;quot;effective resource size&amp;quot; excluding the excess data.&lt;br /&gt;
&lt;br /&gt;
==The header==&lt;br /&gt;
The data block begins with the following header:&lt;br /&gt;
{| class=&amp;quot;structure&amp;quot;&lt;br /&gt;
|4 bytes||mhwk_magic&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||size&lt;br /&gt;
|-&lt;br /&gt;
|4 bytes||wave_magic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*''mhwk_magic'' is the string 'MHWK'. It's equal to the [[Mohawk archive format#IFF header|Mohawk format signature]]!&lt;br /&gt;
*''size'' is the effective resource size, minus the ADPC chunk size, minus 2.&lt;br /&gt;
*''wave_magic'' is the string 'WAVE'.&lt;br /&gt;
&lt;br /&gt;
After this header come the chunks. Until now, 3 chunk types have been identified: '[[#The ADPC chunk|ADPC]]', '[[#The Cue.23 chunk|Cue#]]' and '[[#The Data chunk|Data]]'.&lt;br /&gt;
&lt;br /&gt;
==The ADPC chunk==&lt;br /&gt;
This chunk holds some information about the audio sample format. Its size is not constant.&lt;br /&gt;
{| class=&amp;quot;structure&amp;quot;&lt;br /&gt;
|4 bytes||chunk_type&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||chunk_size&lt;br /&gt;
|-&lt;br /&gt;
|unsigned short||u0&lt;br /&gt;
|-&lt;br /&gt;
|unsigned short||channels&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||u1&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||u2[channels]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*''chunk_type'' is the string 'ADPC'.&lt;br /&gt;
*''chunk_size'' is the chunk size minus 8.&lt;br /&gt;
*''channels'' is the number of audio channels.&lt;br /&gt;
*''u0'' is 2 when there is the Cue# chunk, and 1 when there isn't.&lt;br /&gt;
*''u1'' is always 0.&lt;br /&gt;
*''u2'' is always 0x00400000 for both channels.&lt;br /&gt;
&lt;br /&gt;
If there is the Cue# chunk, then there is additional data in the ADPC chunk:&lt;br /&gt;
{| class=&amp;quot;structure&amp;quot;&lt;br /&gt;
|unsigned long||u3&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||u4[channels]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*''u3'' seems to be in units of samples (maybe it's a position within the audio stream).&lt;br /&gt;
*''u4'' looks more like a record than a single unsigned long value, but values are obscure and I have no idea about its meaning.&lt;br /&gt;
&lt;br /&gt;
Finally, the ADPC chunk is only present when there is ADPCM sound.&lt;br /&gt;
&lt;br /&gt;
==The Cue# chunk==&lt;br /&gt;
This chunk is rare, only a few tWAV resources have it and just one resource has an interesting one (that's tWAV 3 from p_Sounds.mhk). This chunk seems to contain &amp;quot;cue points&amp;quot;, in a way similar to the corresponding chunk of the WAVE format. This is much more common in other games, especially Myst.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;structure&amp;quot;&lt;br /&gt;
|4 bytes||chunk_type&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||chunk_size&lt;br /&gt;
|-&lt;br /&gt;
|unsigned short||point_count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*''chunk_type'' is the string 'Cue#'.&lt;br /&gt;
*''chunk_size'' is the chunk size minus 8.&lt;br /&gt;
*''point_count'' is the number of cue points.&lt;br /&gt;
&lt;br /&gt;
Following this fixed structure there are ''point_count'' records; each record describes a cue point with a position inside the audio stream and an associated ASCII text string:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;structure&amp;quot;&lt;br /&gt;
|unsigned long||position&lt;br /&gt;
|-&lt;br /&gt;
|unsigned char||name_len&lt;br /&gt;
|-&lt;br /&gt;
|unsigned char||name[name_len+1]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*''position'' is the cue point position within the audio stream, in units of samples.&lt;br /&gt;
*''name_len'' is the length of the associated string.&lt;br /&gt;
*''name'' is the associated string (zero-terminated).&lt;br /&gt;
&lt;br /&gt;
Most Cue# chunks have ''point_count'' set to 0, so they contain nothing. tWAV 3 from p_Sounds.mhk has two cue points, named &amp;lt;code&amp;gt;Beg Loop&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;End Loop&amp;lt;/code&amp;gt;. Please note that the chunk structure has been guessed from this single case, so the statistics is very poor :-\&lt;br /&gt;
&lt;br /&gt;
I don't know if the engine uses this chunk at all.&lt;br /&gt;
&lt;br /&gt;
==The Data chunk==&lt;br /&gt;
This chunk is always present since it contains the actual audio samples.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;structure&amp;quot;&lt;br /&gt;
|4 bytes||chunk_type&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||chunk_size&lt;br /&gt;
|-&lt;br /&gt;
|unsigned short||sample_rate&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||sample_count&lt;br /&gt;
|-&lt;br /&gt;
|unsigned char||bits_per_sample&lt;br /&gt;
|-&lt;br /&gt;
|unsigned char||channels&lt;br /&gt;
|-&lt;br /&gt;
|unsigned short||encoding&lt;br /&gt;
|-&lt;br /&gt;
|unsigned short||loop&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||loop_start&lt;br /&gt;
|-&lt;br /&gt;
|unsigned long||loop_end&lt;br /&gt;
|-&lt;br /&gt;
|variable||audio_data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*''chunk_type'' is the string 'Data'.&lt;br /&gt;
*''chunk_size'' is the full chunk size, including ''chunk_type'' and ''chunk_size'' itself.&lt;br /&gt;
*''sample_rate'' is the audio sampling rate (always 22050).&lt;br /&gt;
*''sample_count'' is the number of audio samples.&lt;br /&gt;
*''bits_per_sample'' is the number of bits per sample per channel.&lt;br /&gt;
*''channels'' is the number of audio channels.&lt;br /&gt;
*''encoding'' tells how the audio data is stored. It's 0 for raw unsigned PCM, 1 for ADPCM, 2 for MPEG-2 Audio Layer II.&lt;br /&gt;
*''loop'' means loop if the value is 0xFFFF (NOTE: Not used in Riven).&lt;br /&gt;
*''loop_start'' is the starting point of the loop (NOTE: Not used in Riven).&lt;br /&gt;
*''loop_end'' is the ending point of the loop (NOTE: Not used in Riven).&lt;br /&gt;
*''audio_data'' is the audio data stream, encoded according to encoding. In case of 1-channel ADPC audio, each byte holds 2 compressed samples (higher and lower 4 bits of the byte); in case of stereo ADPC sounds, each byte stores one compressed sample for each channel (higher and lower 4 bits of the byte).&lt;/div&gt;</summary>
		<author><name>Clone2727</name></author>	</entry>

	</feed>