BCWAV: Difference between revisions

PabloMK7 (talk | contribs)
B doesn't stand for Banner, but for Binary (same all of the other NW4C related file formats).
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:File formats]]
[[Category:File formats]]
This document is about the format of Banner's CTR Wave files (BCWAV).
This document is about the format of Binary CTR Wave files (BCWAV). The structure is very similar to Microsoft's Wave file.
 
The structure is very similar to Microsoft's Wave file.
 
Banner CWAV total channels must be 2, and the length of the audio in seconds must be 3 seconds or less.


=== Overview ===
=== Overview ===
Line 20: Line 16:
| 0x004 || 2 || Endianness (0xFEFF = little, 0xFFFE = big)
| 0x004 || 2 || Endianness (0xFEFF = little, 0xFFFE = big)
|-
|-
| 0x006 || 2 || Header Size (0x40)
| 0x006 || 2 || Header Size (0x40 due to [[#Info Block|Info Block]] alignment)
|-
|-
| 0x008 || 4 || Version (0x02010000)
| 0x008 || 4 || Version (0x02010000)
Line 30: Line 26:
| 0x012 || 2 || Reserved
| 0x012 || 2 || Reserved
|-
|-
| 0x014 || 12 || [[BCWAV#Info Block|Info Block]] [[BCWAV#Sized Reference|Sized Reference]] (Offset relative to start of file)
| 0x014 || 12 || [[#Info Block|Info Block]] [[#Sized Reference|Sized Reference]] (Offset relative to start of file)
|-
| 0x020 || 12 || [[BCWAV#Data Block|Data Block]] [[BCWAV#Sized Reference|Sized Reference]] (Offset relative to start of file)
|-
|-
| 0x02C || 20 || Padding
| 0x020 || 12 || [[#Data Block|Data Block]] [[#Sized Reference|Sized Reference]] (Offset relative to start of file)
|}
|}


Line 54: Line 48:
! MAGIC !! TYPE
! MAGIC !! TYPE
|-
|-
| INFO || [[BCWAV#Info Block|Info Block]]
| INFO || [[#Info Block|Info Block]]
|-
|-
| DATA || [[BCWAV#Data Block|Data Block]]
| DATA || [[#Data Block|Data Block]]
|}
|}


Line 65: Line 59:
! OFFSET !! SIZE !!  DESCRIPTION
! OFFSET !! SIZE !!  DESCRIPTION
|-
|-
| 0x000 || 8 || [[BCWAV#Block Header|Block Header]]
| 0x000 || 8 || [[#Block Header|Block Header]]
|-
|-
| 0x008 || 1 || [[BCWAV#Encoding|Encoding]]
| 0x008 || 1 || [[#Encoding|Encoding]]
|-
|-
| 0x009 || 1 || Loop (0 = don't loop, 1 = loop)
| 0x009 || 1 || Loop (0 = don't loop, 1 = loop)
Line 81: Line 75:
| 0x018 || 4 || Reserved
| 0x018 || 4 || Reserved
|-
|-
| 0x01C || 4 + Count * 8 || [[BCWAV#Channel Info|Channel Info]] [[BCWAV#Reference Table|Reference Table]]
| 0x01C || X || [[#Channel Info|Channel Info]] [[#Reference Table|Reference Table]]
|-
| X || X || [[#Channel Info|Channel Info]] Entries
|}
|}


=== Data Block ===
If encoding is DSP ADPCM:


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 90: Line 86:
! OFFSET !! SIZE !!  DESCRIPTION
! OFFSET !! SIZE !!  DESCRIPTION
|-
|-
| 0x000 || 8 || [[BCWAV#Block Header|Block Header]]
| X || X || [[#DSP ADPCM Info|DSP ADPCM Info]] Entries
|}
 
If encoding is IMA ADPCM:
 
{| class="wikitable" border="1"
|-
! OFFSET !! SIZE !!  DESCRIPTION
|-
|-
| 0x008 || [[BCWAV#Block Header|Block Header]] Size - 8 || Data
| X || X || [[#IMA ADPCM Info|IMA ADPCM Info]] Entries
|}
|}


=== Encoding ===
The info block is aligned to 0x20 bytes.
 
==== Encoding ====


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 110: Line 115:
|}
|}


=== Channel Info ===
==== Channel Info ====


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 116: Line 121:
! OFFSET !! SIZE !!  DESCRIPTION
! OFFSET !! SIZE !!  DESCRIPTION
|-
|-
| 0x000 || 8 || Samples [[BCWAV#Reference|Reference]] (Offset relative to [[BCWAV#Data Block|Data Block]] Data field)
| 0x000 || 8 || Samples [[#Reference|Reference]] (Offset relative to [[#Data Block|Data Block]] Data field)
|-
|-
| 0x008 || 8 || ADPCM Info [[BCWAV#Reference|Reference]]  (Offset relative to [[BCWAV#Channel Info|Channel Info]] start)
| 0x008 || 8 || ADPCM Info [[#Reference|Reference]]  (Offset relative to Samples [[#Reference|Reference]] field)
|-
|-
| 0x010 || 4 || Reserved
| 0x010 || 4 || Reserved
|}
|}


=== DSP ADPCM Info ===
===== DSP ADPCM Info =====


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 129: Line 134:
! OFFSET !! SIZE !!  DESCRIPTION
! OFFSET !! SIZE !!  DESCRIPTION
|-
|-
| 0x000 || 32 || [[BCWAV#DSP ADPCM Param|Param]]
| 0x000 || 32 || [[#DSP ADPCM Param|Param]]
|-
|-
| 0x020 || 6 || [[BCWAV#DSP ADPCM Context|Context]]
| 0x020 || 6 || [[#DSP ADPCM Context|Context]]
|-
|-
| 0x026 || 6 || Loop [[BCWAV#DSP ADPCM Context|Context]]
| 0x026 || 6 || Loop [[#DSP ADPCM Context|Context]]
|-
| 0x02C || 2 || Padding
|}
|}


=== DSP ADPCM Param ===
====== DSP ADPCM Param ======


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 145: Line 152:
|}
|}


=== DSP ADPCM Context ===
====== DSP ADPCM Context ======


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 160: Line 167:
|}
|}


=== IMA ADPCM Info ===
===== IMA ADPCM Info =====


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 166: Line 173:
! OFFSET !! SIZE !!  DESCRIPTION
! OFFSET !! SIZE !!  DESCRIPTION
|-
|-
| 0x000 || 4 || [[BCWAV#IMA ADPCM Context|Context]]
| 0x000 || 4 || [[#IMA ADPCM Context|Context]]
|-
|-
| 0x004 || 4 || Loop [[BCWAV#IMA ADPCM Context|Context]]
| 0x004 || 4 || Loop [[#IMA ADPCM Context|Context]]
|}
|}


=== IMA ADPCM Context ===
====== IMA ADPCM Context ======


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 183: Line 190:
| 0x003 || 1 || Padding
| 0x003 || 1 || Padding
|}
|}
=== Data Block ===
{| class="wikitable" border="1"
|-
! OFFSET !! SIZE !!  DESCRIPTION
|-
| 0x000 || 8 || [[#Block Header|Block Header]]
|-
| 0x008 || [[#Block Header|Block Header]] Size Value - 8 || Data
|}
The data block is aligned to 0x20 bytes, as well as the data field's actual sample data.


=== Reference Table ===
=== Reference Table ===
Line 192: Line 212:
| 0x000 || 4 || Count
| 0x000 || 4 || Count
|-
|-
| 0x004 || Count * 8 || [[BCWAV#Reference|References]] (Offsets relative to Count field)
| 0x004 || Count * 8 || [[#Reference|References]] (Offsets relative to Count field)
|}
|}


Line 201: Line 221:
! OFFSET !! SIZE !!  DESCRIPTION
! OFFSET !! SIZE !!  DESCRIPTION
|-
|-
| 0x000 || 8 || [[BCWAV#Reference|Reference]]
| 0x000 || 8 || [[#Reference|Reference]]
|-
|-
| 0x008 || 4 || Size
| 0x008 || 4 || Size
Line 225: Line 245:
! ID !! TYPE
! ID !! TYPE
|-
|-
| 0x0300 || [[BCWAV#DSP ADPCM Info|DSP ADPCM Info]]
| 0x0300 || [[#DSP ADPCM Info|DSP ADPCM Info]]
|-
|-
| 0x0301 || [[BCWAV#IMA ADPCM Info|IMA ADPCM Info]]
| 0x0301 || [[#IMA ADPCM Info|IMA ADPCM Info]]
|-
|-
| 0x1F00 || [[BCWAV#Data_Block|Sample Data]]
| 0x1F00 || [[#Data_Block|Sample Data]]
|-
|-
| 0x7000 || [[BCWAV#Info Block|Info Block]]
| 0x7000 || [[#Info Block|Info Block]]
|-
|-
| 0x7001 || [[BCWAV#Data Block|Data Block]]
| 0x7001 || [[#Data Block|Data Block]]
|-
|-
| 0x7100 || [[BCWAV#Channel Info|Channel Info]]
| 0x7100 || [[#Channel Info|Channel Info]]
|}
|}