Difference between revisions of "BRSAR (File Format)"

From Custom Mario Kart
Jump to navigation Jump to search
Line 1: Line 1:
 
{{Under-construction}}
 
{{Under-construction}}
  
This page describes the '''BRSAR''' ('''B'''inary '''R'''evolution '''S'''ound '''AR'''chive) format used to store sound effects and some music. It is used in [[Mario Kart Wii]], Super Smash Bros. Brawl, The Legend of Zelda: Skyward Sword and other games.
+
The '''BRSAR''' ('''B'''inary '''R'''evolution '''S'''ound '''AR'''chive) format is used to store sound effects and some music. It is used in [[Mario Kart Wii]], Super Smash Bros. Brawl, The Legend of Zelda: Skyward Sword and other games.
  
 
==File Header==
 
==File Header==
Line 9: Line 9:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-  
 
|-  
| Offset
+
!Offset !! Type !! Description
| Size
 
| Description
 
 
|-
 
|-
| 0x00
+
| 0x00 || String || '''File magic'''. RSAR in ASCII
| 0x04
 
| File identifier: '''RSAR''' in ASCII
 
 
|-
 
|-
| 0x04
+
| 0x04 || UInt16 || '''Byte order mark'''. 0xFEFF for Big Endian, 0xFFFE for Little Endian
| 0x02
 
| '''Byte order mark'''. 0xFEFF is Big Endian, 0xFFFE is Little Endian
 
 
|-
 
|-
| 0x06
+
| 0x06 || Byte || '''VersionMajor''' flag from [[BrawlBox]]. [[Mario Kart Wii]] uses 01. HomeButtonSe.brsar (used for the Home Menu) uses 01. Unknown if it affects anything in-game
| 0x02
 
| '''VersionMajor''' and '''VersionMinor''' flags from [[BrawlBox]]. Mario Kart Wii uses 01 04. HomeButtonSe.brsar (used for the Home Menu) uses 01 01. Unknown if it affects anything in-game.
 
 
|-
 
|-
| 0x08
+
| 0x07 || Byte || '''VersionMinor''' flag from [[BrawlBox]]. [[Mario Kart Wii]] uses 04. HomeButtonSe.brsar (used for the Home Menu) uses 01. Unknown if it affects anything in-game
| 0x04
 
| Length of the file (in bytes).
 
 
|-
 
|-
| 0x0C
+
| 0x08 || UInt32 || Length of the file
| 0x02
 
| Length of the header (in bytes) (always 0x0040)
 
 
|-
 
|-
| 0x0E
+
| 0x0C || UInt16 || Length of the header (always 0x40)
| 0x02
 
| Unknown (usually 0x0003)
 
 
|-
 
|-
| 0x10
+
| 0x0E || UInt16 || '''Unknown''' (usually 0x03)
| 0x04
 
| Offset to the SYMB section
 
 
|-
 
|-
| 0x14
+
| 0x10 || UInt32 || Offset to the [[#SYMB|SYMB]] section
| 0x04
 
| Size of the SYMB section
 
 
|-
 
|-
| 0x18
+
| 0x14 || UInt32 || Size of the [[#SYMB|SYMB]] section
| 0x04
 
| Offset to the INFO section
 
 
|-
 
|-
| 0x1C
+
| 0x18 || UInt32 || Offset to the INFO section
| 0x04
 
| Size of the INFO section
 
 
|-
 
|-
| 0x20
+
| 0x1C || UInt32 || Size of the INFO section
| 0x04
 
| Offset to the FILE section
 
 
|-
 
|-
| 0x24
+
| 0x20 || UInt32 || Offset to the FILE section
| 0x04
 
| Size of the FILE section
 
 
|-
 
|-
| 0x28
+
| 0x24 || UInt32 || Size of the FILE section
| 0x18
 
| Padding (0x00)
 
 
|-
 
|-
| colspan=6 {{unknown|End of header}}
+
| 0x28 || Byte[24] || Padding
 +
|-
 +
| 0x40 || colspan=2 {{unknown|End of header}}
 
|-
 
|-
 
|}
 
|}
Line 78: Line 52:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-  
 
|-  
| Offset
+
! Offset !! Type !! Description
| Size
 
| Description
 
 
|-
 
|-
| 0x00
+
| 0x00 || String || '''Section magic'''. SYMB in ASCII
| 0x04
 
| File Identifier, '''SYMB''' in ASCII
 
 
|-
 
|-
| 0x04
+
| 0x04 || UInt32 || Size of the SYMB section
| 0x04
 
| Size of the SYMB section
 
 
|-
 
|-
| 0x08
+
| 0x08 || UInt32 || '''Unknown'''
| 0x04
 
| Unknown
 
 
|-
 
|-
| 0x0C
+
| 0x0C || UInt32 || Number of entries in the SYMB table
| 0x04
 
| Number of entries in the SYMB table
 
 
|-
 
|-
| colspan=6 {{unknown|End of header}}
+
| 0x10 || colspan=2 {{unknown|End of header}}
 
|-
 
|-
 
|}
 
|}
  
 
[[Category:File Format]]
 
[[Category:File Format]]

Revision as of 01:16, 21 July 2016

Under Construction
This article is not finished. Help improve it by adding accurate information or correcting grammar and spelling.

The BRSAR (Binary Revolution Sound ARchive) format is used to store sound effects and some music. It is used in Mario Kart Wii, Super Smash Bros. Brawl, The Legend of Zelda: Skyward Sword and other games.

File Header

The file begins with a header of size 0x40 bytes.

Offset Type Description
0x00 String File magic. RSAR in ASCII
0x04 UInt16 Byte order mark. 0xFEFF for Big Endian, 0xFFFE for Little Endian
0x06 Byte VersionMajor flag from BrawlBox. Mario Kart Wii uses 01. HomeButtonSe.brsar (used for the Home Menu) uses 01. Unknown if it affects anything in-game
0x07 Byte VersionMinor flag from BrawlBox. Mario Kart Wii uses 04. HomeButtonSe.brsar (used for the Home Menu) uses 01. Unknown if it affects anything in-game
0x08 UInt32 Length of the file
0x0C UInt16 Length of the header (always 0x40)
0x0E UInt16 Unknown (usually 0x03)
0x10 UInt32 Offset to the SYMB section
0x14 UInt32 Size of the SYMB section
0x18 UInt32 Offset to the INFO section
0x1C UInt32 Size of the INFO section
0x20 UInt32 Offset to the FILE section
0x24 UInt32 Size of the FILE section
0x28 Byte[24] Padding
0x40 End of header

Sections

Unless otherwise noted, offsets in each section are relative to the start of the section block.

SYMB

The SYMB section consists of an FST-like data structure. It contains 3 header-less subsections.

Offset Type Description
0x00 String Section magic. SYMB in ASCII
0x04 UInt32 Size of the SYMB section
0x08 UInt32 Unknown
0x0C UInt32 Number of entries in the SYMB table
0x10 End of header