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]] |
| |} | | |} |