BRWSD (File Format)
Revision as of 06:11, 26 June 2023 by Gabriela (talk | contribs) (> Lamb, tell me a story. >. There was once a pale man with dark hair, who was very lonely. > Why was it lonely? >. All things must meet this man, so they shunned him. > Did he chase them all? >. He took an axe and split himself in two. Right down the middle > So he would always have a friend? >. So he would always have a friend...)
Under Construction
This article is not finished. Help improve it by adding accurate information or correcting grammar and spelling.
BRWSD (Binary Revolution Wave Sound Data) is a sub file format found in BRSAR files from many Wii games. It consists of a table of instance parameters that link to direct audios found into BRWAR files.
File Format
File Header
Offset | Type | Description |
---|---|---|
0x00 | String | File magic. Always RWSD in ASCII. |
0x04 | UInt16 | Byte order mark (BOM): The value is always 0xFEFF. If value 0xFFFE is read, then the false endian is used. Mario Kart Wii uses nearly always big endian (bytes 0xFE,0xFF). |
0x06 | UInt16 | Version number of the file format. (?) |
0x08 | UInt32 | Length of the file in bytes. |
0x0C | UInt16 | Length of this header in bytes. |
0x0E | UInt16 | Number of sections. |
0x10 | UInt32 | Offset to DATA section. |
0x14 | UInt32 | Length of DATA section. |
0x18 | UInt32 | Offset to WAVE section. |
0x1C | UInt32 | Length of WAVE section. |
DATA
The DATA section starts with a header.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always DATA in ASCII. |
0x04 | UInt32 | Length of this section. |
0x08 | UInt32 | N = Number of Wave Information Data Entries. |
0x0C | DataRef[N] | References to Wave Information Data Entries. |
Wave Information Data Table
The DATA header is followed by a table that lists the entries of wave information data. All offsets are relative to the start of this table.
Offset | Type | Description |
---|---|---|
0x00 | DataRef | Reference to WSD Information Data Entry. |
0x08 | DataRef | Reference to Track Table. |
0x10 | DataRef | Reference to Note Table. |
WSD Information Data Entry
Offset | Type | Description |
---|---|---|
0x00 | Float | Pitch |
0x04 | Byte | Pan (0–127) |
0x05 | Byte | SurroundPan (0–127) |
0x06 | Byte | FxSendA |
0x07 | Byte | FxSendB |
0x08 | Byte | FxSendC |
0x09 | SByte | MainSend |
0x0A | Byte[2] | Padding |
0x0C | DataRef | Reference to address to Graph Enviroment Table. Always 0. |
0x14 | DataRef | Reference to address to Randomizer Table. Always 0. |
0x1C | UInt32 | Reserved. |
Track Table
All offsets are relative to the Wave Information Data Table.
Offset | Type | Description |
---|---|---|
0x00 | UInt32 | N = Number of Track Infos. |
0x04 | DataRef[N] | References to Track Info. |
Track Info
Offset | Type | Description |
---|---|---|
0x00 | DataRef | Reference to Note Event Table. |
Note Event Table
Offset | Type | Description |
---|---|---|
0x00 | UInt32 | N = Number of Note Events. |
0x04 | DataRef[N] | References to Note Events. |
Note Event
Offset | Type | Description |
---|---|---|
0x00 | Float | Position |
0x04 | Float | Length |
0x08 | UInt32 | Note Index. |
0x10 | UInt32 | Reserved |
Note Table
All offsets are relative to the Wave Information Data Table.
Offset | Type | Description |
---|---|---|
0x00 | UInt32 | N = Number of Note Information Entries. |
0x04 | DataRef[N] | References to Note Information Entries. |
Note Information Entry
Offset | Type | Description |
---|---|---|
0x00 | Int32 | Wave Index |
0x04 | Byte | Attack (-1–127) |
0x05 | Byte | InfoDecay (-1–127) |
0x06 | Byte | Sustain (-1–127) |
0x07 | Byte | Release (-1–127) |
0x08 | Byte | Hold (-1–127) |
0x09 | Byte[3] | Padding |
0x0C | Byte | OriginalKey |
0x0D | Byte | Volume (0–127) |
0x0E | Byte | InfoPan (0–127) |
0x0F | Byte | InfoSurroundPan (0–127) |
0x10 | Float | InfoPitch |
0x14 | DataRef | Reference to address to LFO Table. Always 0. |
0x1C | DataRef | Reference to address to Graph Enviroment Table. Always 0. |
0x24 | DataRef | Reference to address to Randomizer Table. Always 0. |
0x2C | UInt32 | Reserved |
WAVE
The WAVE section starts with a header.
Offset | Type | Description |
---|---|---|
0x00 | String | Section magic. Always WAVE in ASCII. |
0x04 | UInt32 | Length of this section. |
0x08 | UInt32 | N = Number of offsets. |
0x0C | UInt32[N] | Offsets to Wave Infos. |
Data Reference
The Data Reference structure is used to point to other data types.
Offset | Type | Description |
---|---|---|
0x00 | Byte | Reference type. (0 = Address, 1 = Offset). |
0x01 | Byte | Data type. Usually 0x00. |
0x02 | UInt16 | Reserved. |
0x04 | UInt32 | Value. |
Tools
The following tools can handle BRWSD files:
- BrawlBox, by Kryal and BlackJax96