This document is about the format of Banner's CTR Wave files (BCWAV).
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
Microsoft's WAV structure is RIFF Header which defines the data inside which is WAVE, then the media player expects a "fmt " chunk and a "data" chunk. Nintendo's format uses a CWAV Header (no need for a general structure for media, only wave), which points to an INFO struct (the equivalent to fmt) and a DATA struct (the equivalent to data).
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
4 |
Magic (CWAV)
|
0x004 |
2 |
Endianness (0xFEFF = little, 0xFFFE = big)
|
0x006 |
2 |
Header Size (0x40)
|
0x008 |
4 |
Version (0x02010000)
|
0x00C |
4 |
File Size
|
0x010 |
2 |
Number of Blocks (2)
|
0x012 |
2 |
Reserved
|
0x014 |
12 |
Info Block Sized Reference (Offset relative to start of file)
|
0x020 |
12 |
Data Block Sized Reference (Offset relative to start of file)
|
0x02C |
20 |
Padding
|
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
4 |
Magic
|
0x004 |
4 |
Size
|
Block Types
Info Block
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
8 |
Block Header
|
0x008 |
1 |
Encoding
|
0x009 |
1 |
Loop (0 = don't loop, 1 = loop)
|
0x00A |
2 |
Padding
|
0x00C |
4 |
Sample Rate
|
0x010 |
4 |
Loop Start Frame
|
0x014 |
4 |
Loop End Frame
|
0x018 |
4 |
Reserved
|
0x01C |
4 + Count * 8 |
Channel Info Reference Table
|
Data BlockEncoding
VALUE |
DESCRIPTION
|
0 |
PCM8
|
1 |
PCM16
|
2 |
DSP ADPCM
|
3 |
IMA ADPCM
|
Channel InfoDSP ADPCM InfoDSP ADPCM Param
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
32 |
16-bit Coefficients
|
DSP ADPCM Context
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
1 |
4-bit Predictor + 4-bit Scale
|
0x001 |
1 |
Reserved
|
0x002 |
2 |
Previous Sample
|
0x004 |
2 |
Second Previous Sample
|
IMA ADPCM InfoIMA ADPCM Context
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
2 |
Data
|
0x002 |
1 |
Table Index
|
0x003 |
1 |
Padding
|
Reference Table
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
4 |
Count
|
0x004 |
Count * 8 |
References (Offsets relative to Count field)
|
Sized Reference
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
8 |
Reference
|
0x008 |
4 |
Size
|
Reference
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
2 |
Type ID
|
0x002 |
2 |
Padding
|
0x004 |
4 |
Offset ("null" = 0xFFFFFFFF)
|
Reference Types