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).

Header

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)

INFO Header

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)


DATA Header

OFFSET SIZE DESCRIPTION
0x000 4 Magic (DATA)
0x004 4 Length