Line 2: |
Line 2: |
| == Overview == | | == 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. | + | The BCSAR (Binary 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, this is usually stored under "romfs:/sound/<name>.bcsar". This contains various audio formats, such as CSTM, CWSD, and CWAV. | + | BCSAR are located in the RomFS, this is usually stored under "romfs:/sound/<name>.bcsar". This contains various audio formats, such as CSTM, CWSD, CSEQ, and CWAV. |
| | | |
| == BCSAR Header == | | == BCSAR Header == |
Line 40: |
Line 40: |
| | 0x14 | | | 0x14 |
| | 0x4 | | | 0x4 |
− | | Partition header length [same for each partition? (ie STRG,INFO,and FILE header lengths)] | + | | STRG partition reference ID? (Always 0x2000) |
| |- | | |- |
| | 0x18 | | | 0x18 |
Line 52: |
Line 52: |
| | 0x20 | | | 0x20 |
| | 0x4 | | | 0x4 |
− | | Unknown (always 0x01200000?) | + | | INFO partition reference ID? (Always 0x2001) |
| |- | | |- |
| | 0x24 | | | 0x24 |
Line 61: |
Line 61: |
| | 0x4 | | | 0x4 |
| | Length of INFO partition | | | Length of INFO partition |
| + | |- |
| + | | 0x2C |
| + | | 0x4 |
| + | | Main FILE partition reference ID? (Always 0x2002) |
| |- | | |- |
| | 0x30 | | | 0x30 |
Line 237: |
Line 241: |
| | 0x8 | | | 0x8 |
| | 0x4 | | | 0x4 |
− | | Unknown magic 0x2100 | + | | Audio Table Reference ID (0x2100) |
| |- | | |- |
| | 0xC | | | 0xC |
| | 0x4 | | | 0x4 |
− | | This + 8 points to unknown | + | | This + 8 points to the Audio Table |
| |- | | |- |
| | 0x10 | | | 0x10 |
| | 0x4 | | | 0x4 |
− | | Unknown magic 0x2104 | + | | Set Table Reference ID (0x2104) |
| |- | | |- |
| | 0x14 | | | 0x14 |
| | 0x4 | | | 0x4 |
− | | This + 8 points to unknown | + | | This + 8 points to the Set Table |
| |- | | |- |
| | 0x18 | | | 0x18 |
| | 0x4 | | | 0x4 |
− | | Unknown magic 0x2101 | + | | Bank Table Reference ID (0x2101) |
| |- | | |- |
| | 0x1C | | | 0x1C |
| | 0x4 | | | 0x4 |
− | | This + 8 points to unknown | + | | This + 8 points to the Bank Table |
| |- | | |- |
| | 0x20 | | | 0x20 |
| | 0x4 | | | 0x4 |
− | | Unknown magic 0x2103 | + | | WAV Archive Table Reference ID (0x2103) |
| |- | | |- |
| | 0x24 | | | 0x24 |
| | 0x4 | | | 0x4 |
− | | This + 8 points to unknown | + | | This + 8 points to the WAV Archive Table |
| |- | | |- |
| | 0x28 | | | 0x28 |
| | 0x4 | | | 0x4 |
− | | Unknown magic 0x2105 | + | | Group Table Reference ID (0x2105) |
| |- | | |- |
| | 0x2C | | | 0x2C |
| | 0x4 | | | 0x4 |
− | | This + 8 points to unknown | + | | This + 8 points to the Group Table |
| |- | | |- |
| | 0x30 | | | 0x30 |
| | 0x4 | | | 0x4 |
− | | Unknown magic 0x2102 | + | | Player Table Reference ID (0x2102) |
| |- | | |- |
| | 0x34 | | | 0x34 |
| | 0x4 | | | 0x4 |
− | | This + 8 points to unknown | + | | This + 8 points to Player Table |
| |- | | |- |
| | 0x38 | | | 0x38 |
| | 0x4 | | | 0x4 |
− | | Unknown magic 0x2106 | + | | FILE Table Reference ID (0x2106) |
| |- | | |- |
| | 0x3C | | | 0x3C |
| | 0x4 | | | 0x4 |
− | | This + 8 points to unknown | + | | This + 8 points to the FILE Table |
| |- | | |- |
| | 0x40 | | | 0x40 |
| | 0x4 | | | 0x4 |
− | | Unknown magic 0x220B | + | | Unknown Table Reference ID (0x220B) |
| |- | | |- |
| | 0x44 | | | 0x44 |
Line 414: |
Line 418: |
| | 0x4 | | | 0x4 |
| | Unknown | | | Unknown |
| + | |- |
| + | |} |
| + | |
| + | ===== Table IDs ===== |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! ID |
| + | ! NAME |
| + | |- |
| + | | 0x2200 |
| + | | Audio Table |
| + | |- |
| + | | 0x2204 |
| + | | Set Table |
| + | |- |
| + | | 0x2206 |
| + | | Bank Table |
| + | |- |
| + | | 0x2207 |
| + | | WAV Archive Table |
| + | |- |
| + | | 0x2208 |
| + | | Group Table |
| + | |- |
| + | | 0x2208 |
| + | | Player Table |
| + | |- |
| + | | 0x220A |
| + | | FILE Table |
| |- | | |- |
| |} | | |} |
Line 445: |
Line 479: |
| == Tools == | | == Tools == |
| * vgmtoolbox's Advanced Cutter/Offset Finder tool can extract BCWAVs without filenames | | * vgmtoolbox's Advanced Cutter/Offset Finder tool can extract BCWAVs without filenames |
| + | * [https://github.com/soneek/3DSUSoundArchiveTool 3DSUSoundArchiveTool] reference implementation of CSAR extraction |