Overview
The BCSAR (CTR Sound ARchive) format is the 3DS's equivalent of the Wii's BRSAR format. They're not the same structures, though, but they do have the same purpose.
BCSAR are located in the RomFS and store various audio formats, such as CSTM, CWSD, and CWAV.
BCSAR Header
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x0 | 0x4 | MAGIC "CSAR" |
0x4 | 0x2 | Byte order mark? |
0x6 | 0x1 | Length of BCSAR header |
0xB | 0x1 | Version? |
0xC | 0x4 | Length of the entire BCSAR (starting from 0x0) |
0x10 | 0x1 | Amount of partitions in the BCSAR? [STRG + INFO + FILE = 0x03 (= 3)] |
0x15 | 0x1 | Partition header length? [same for each partition? (ie STRG,INFO,and FILE header lengths)] |
0x18 | 0x4 | Location of STRG partition |
0x1C | 0x4 | Length of STRG partition |
0x24 | 0x4 | Location of INFO partition |
0x28 | 0x4 | Length of INFO partition |
0x30 | 0x4 | Location of FILE partition |
0x34 | 0x4 | Length of FILE partition |
0x38 | 0x4 | Reserved for 4th partition location? |
0x3C | 0x4 | Reserved for 4th partition length? |
Partitions
STRG
STRG contains the names of the audio files in the BCWAV.
For now I only know information in the header for this partition, but I'm working on figuring the rest out.
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x0 | 0x4 | MAGIC "STRG" |
0x4 | 0x4 | Length of STRG partition (also in CSAR header) |
INFO
INFO presumably contains information on the audio files? Possibly used to connect names from STRG to data from FILE?
For now I only know information in the header for this partition, but I'm working on figuring the rest out.
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x0 | 0x4 | MAGIC "INFO" |
0x4 | 0x4 | Length of INFO partition (also in CSAR header) |
FILE
FILE contains all of the audio data in the BCSAR.
OFFSET | SIZE | DESCRIPTION |
---|---|---|
0x0 | 0x4 | MAGIC "FILE" |
0x4 | 0x4 | Length of FILE partition (also in CSAR header) |
There isn't a whole lot else I can document about the FILE partition, since the data in it will most definitely vary depending on the game. (since audio is more than likely to change in each game)
There is no table in FILE so a different partition (presumably INFO) must be used to connect the data in FILE with the names from STRG.