Changes

2,330 bytes added ,  02:45, 26 November 2015
no edit summary
Line 24: Line 24:  
| 0x000 || 4 || Magic (CWAV)
 
| 0x000 || 4 || Magic (CWAV)
 
|-
 
|-
| 0x004 || 2 || Endianess (0xFEFF=LE / 0xFFFE=BE)
+
| 0x004 || 2 || Endianness (0xFEFF = little, 0xFFFE = big)
 
|-
 
|-
| 0x006 || 2 || Struct Length
+
| 0x006 || 2 || Header Size (0x40)
 
|-
 
|-
| 0x008 || 4 || Unknown 0
+
| 0x008 || 4 || Version (0x02010000)
 
|-
 
|-
| 0x00C || 4 || File's size
+
| 0x00C || 4 || File Size
 
|-
 
|-
| 0x010 || 4 || Number of chunks (= 2 (INFO & DATA))
+
| 0x010 || 2 || Number of Blocks (2)
 
|-
 
|-
| 0x014 || 4 || Info Chunk Flags (0x7000)
+
| 0x012 || 2 || Reserved
 
|-
 
|-
| 0x018 || 4 || Info Chunk Offset
+
| 0x014 || 12 || [[BCWAV#Info Block|Info Block]] [[BCWAV#Sized Reference|Sized Reference]] (Offset relative to start of file)
 
|-
 
|-
| 0x01C || 4 || Info Chunk Length
+
| 0x020 || 12 || [[BCWAV#Data Block|Data Block]] [[BCWAV#Sized Reference|Sized Reference]] (Offset relative to start of file)
 
|-
 
|-
| 0x020 || 4 || Data Chunk Flags (0x7000)
+
| 0x02C || 20 || Padding
 +
|}
 +
 
 +
=== Block Header ===
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! OFFSET !! SIZE !!  DESCRIPTION
 +
|-
 +
| 0x000 || 4 || Magic
 +
|-
 +
| 0x004 || 4 || Size
 +
|}
 +
 
 +
==== Block Types ====
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0x024 || 4 || Data Chunk Offset
+
! MAGIC !! TYPE
 
|-
 
|-
| 0x028 || 4 || Data Chunk Length
+
| INFO || [[BCWAV#Info Block|Info Block]]
 
|-
 
|-
| 0x02C || 0x20 || Reserved (for more chunks offsets)
+
| DATA || [[BCWAV#Data Block|Data Block]]
 
|}
 
|}
   −
=== INFO Header ===
+
=== Info Block ===
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 55: Line 71:  
! OFFSET !! SIZE !!  DESCRIPTION
 
! OFFSET !! SIZE !!  DESCRIPTION
 
|-
 
|-
| 0x000 || 4 || Magic (INFO)
+
| 0x000 || 8 || [[BCWAV#Block Header|Block Header]]
 
|-
 
|-
| 0x004 || 4 || Length
+
| 0x008 || 1 || [[BCWAV#Encoding|Encoding]]
 
|-
 
|-
| 0x008 || 4 || Type (must be less than 4)
+
| 0x009 || 1 || Loop (0 = don't loop, 1 = loop)
 +
|-
 +
| 0x00A || 2 || Padding
 
|-
 
|-
 
| 0x00C || 4 || Sample Rate
 
| 0x00C || 4 || Sample Rate
 
|-
 
|-
| 0x010 || 4 || Unknown 1
+
| 0x010 || 4 || Loop Start Frame
 +
|-
 +
| 0x014 || 4 || Loop End Frame
 +
|-
 +
| 0x018 || 4 || Reserved
 +
|-
 +
| 0x01C || 4 + Count * 8 || [[BCWAV#Channel Info|Channel Info]] [[BCWAV#Reference Table|Reference Table]]
 +
|}
 +
 
 +
=== Data Block ===
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! OFFSET !! SIZE !!  DESCRIPTION
 +
|-
 +
| 0x000 || 8 || [[BCWAV#Block Header|Block Header]]
 +
|-
 +
| 0x008 || [[BCWAV#Block Header|Block Header]] Size - 8 || Data
 +
|}
 +
 
 +
=== Encoding ===
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! VALUE !! DESCRIPTION
 +
|-
 +
| 0 || PCM8
 +
|-
 +
| 1 || PCM16
 +
|-
 +
| 2 || DSP ADPCM
 +
|-
 +
| 3 || IMA ADPCM
 +
|}
 +
 
 +
=== Channel Info ===
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! OFFSET !! SIZE !!  DESCRIPTION
 +
|-
 +
| 0x000 || 8 || Samples [[BCWAV#Reference|Reference]] (Offset relative to [[BCWAV#Data Block|Data Block]] Data field)
 +
|-
 +
| 0x008 || 8 || ADPCM Info [[BCWAV#Reference|Reference]]  (Offset relative to [[BCWAV#Channel Info|Channel Info]] start)
 +
|-
 +
| 0x010 || 4 || Reserved
 +
|}
 +
 
 +
=== DSP ADPCM Info ===
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! OFFSET !! SIZE !!  DESCRIPTION
 +
|-
 +
| 0x000 || 32 || [[BCWAV#DSP ADPCM Param|Param]]
 +
|-
 +
| 0x020 || 6 || [[BCWAV#DSP ADPCM Context|Context]]
 +
|-
 +
| 0x026 || 6 || Loop [[BCWAV#DSP ADPCM Context|Context]]
 +
|}
 +
 
 +
=== DSP ADPCM Param ===
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! OFFSET !! SIZE !!  DESCRIPTION
 
|-
 
|-
| 0x014 || 4 || Total samples
+
| 0x000 || 32 || 16-bit Coefficients
 +
|}
 +
 
 +
=== DSP ADPCM Context ===
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0x018 || 4 || Unknown 2
+
! OFFSET !! SIZE !!  DESCRIPTION
 
|-
 
|-
| 0x01C || 4 || Total Channels
+
| 0x000 || 1 || 4-bit Predictor + 4-bit Scale
 
|-
 
|-
| 0x020 || X || The Channels' Data Pointers
+
| 0x001 || 1 || Reserved
 
|-
 
|-
| X || X || The Channels' Data
+
| 0x002 || 2 || Previous Sample
 +
|-
 +
| 0x004 || 2 || Second Previous Sample
 
|}
 
|}
   −
  * The channels data pointers are pointers to another struct that points to the actual data (this stucture has flags as well)
+
=== IMA ADPCM Info ===
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 82: Line 172:  
! OFFSET !! SIZE !!  DESCRIPTION
 
! OFFSET !! SIZE !!  DESCRIPTION
 
|-
 
|-
| 0x000 || 4 || Flags
+
| 0x000 || 4 || [[BCWAV#IMA ADPCM Context|Context]]
 
|-
 
|-
| 0x004 || 4 || Offset (from 0x5C, INFO's channels field)
+
| 0x004 || 4 || Loop [[BCWAV#IMA ADPCM Context|Context]]
 
|}
 
|}
   −
  * The channels data are pointers to the actual data (this stucture has flags as well)
+
=== IMA ADPCM Context ===
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 93: Line 183:  
! OFFSET !! SIZE !!  DESCRIPTION
 
! OFFSET !! SIZE !!  DESCRIPTION
 
|-
 
|-
| 0x000 || 4 || Flags
+
| 0x000 || 2 || Data
 +
|-
 +
| 0x002 || 1 || Table Index
 +
|-
 +
| 0x003 || 1 || Padding
 +
|}
 +
 
 +
=== Reference Table ===
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0x004 || 4 || Offset (inside the DATA block data)
+
! OFFSET !! SIZE !!  DESCRIPTION
 
|-
 
|-
| 0x008 || 4 || FFs (0xFFFFFFFF)
+
| 0x000 || 4 || Count
 
|-
 
|-
| 0x00C || 4 || Padding (Zero)
+
| 0x004 || Count * 8 || [[BCWAV#Reference|References]] (Offsets relative to Count field)
 
|}
 
|}
    +
=== Sized Reference ===
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! OFFSET !! SIZE !!  DESCRIPTION
 +
|-
 +
| 0x000 || 8 || [[BCWAV#Reference|Reference]]
 +
|-
 +
| 0x008 || 4 || Size
 +
|}
   −
=== DATA Header ===
+
=== Reference ===
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 109: Line 218:  
! OFFSET !! SIZE !!  DESCRIPTION
 
! OFFSET !! SIZE !!  DESCRIPTION
 
|-
 
|-
| 0x000 || 4 || Magic (DATA)
+
| 0x000 || 2 || Type ID
 +
|-
 +
| 0x002 || 2 || Padding
 +
|-
 +
| 0x004 || 4 || Offset
 +
|}
 +
 
 +
==== Reference Types ====
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! ID !! TYPE
 +
|-
 +
| 0x0300 || [[BCWAV#DSP ADPCM Info|DSP ADPCM Info]]
 +
|-
 +
| 0x0301 || [[BCWAV#IMA ADPCM Info|IMA ADPCM Info]]
 +
|-
 +
| 0x7000 || [[BCWAV#Info Block|Info Block]]
 +
|-
 +
| 0x7001 || [[BCWAV#Data Block|Data Block]]
 
|-
 
|-
| 0x004 || 4 || Length
+
| 0x7100 || [[BCWAV#Channel Info|Channel Info]]
 
|}
 
|}
1,434

edits