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 Wave structure is RIFF Header which defines the data inside which is WAVE.
then the media player expects "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 |
Endianess (0xFEFF=LE / 0xFFFE=BE)
|
0x006 |
2 |
Struct Length
|
0x008 |
4 |
Unknown 0
|
0x00C |
4 |
File's size
|
0x010 |
4 |
Number of chunks (= 2 (INFO & DATA))
|
0x014 |
4 |
Info Chunk Flags (0x7000)
|
0x018 |
4 |
Info Chunk Offset
|
0x01C |
4 |
Info Chunk Length
|
0x020 |
4 |
Data Chunk Flags (0x7000)
|
0x024 |
4 |
Data Chunk Offset
|
0x028 |
4 |
Data Chunk Length
|
0x02C |
0x20 |
Reserved (for more chunks offsets)
|
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
4 |
Magic (INFO)
|
0x004 |
4 |
Length
|
0x008 |
4 |
Type (must be less than 4)
|
0x00C |
4 |
Sample Rate
|
0x010 |
4 |
Unknown 1
|
0x014 |
4 |
Total samples
|
0x018 |
4 |
Unknown 2
|
0x01C |
4 |
Total Channels
|
0x020 |
X |
The Channels' Data Pointers
|
X |
X |
The Channels' Data
|
* The channels data pointers are pointers to another struct that points to the actual data (this stucture has flags as well)
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
4 |
Flags
|
0x004 |
4 |
Offset (from 0x5C, INFO's channels field)
|
* The channels data are pointers to the actual data (this stucture has flags as well)
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
4 |
Flags
|
0x004 |
4 |
Offset (inside the DATA block data)
|
0x008 |
4 |
FFs (0xFFFFFFFF)
|
0x00C |
4 |
Padding (Zero)
|
OFFSET |
SIZE |
DESCRIPTION
|
0x000 |
4 |
Magic (DATA)
|
0x004 |
4 |
Length
|