Line 86: |
Line 86: |
| STRG contains the names of the audio files in the BCSAR. | | STRG contains the names of the audio files in the BCSAR. |
| | | |
− | Header: | + | ==== Header ==== |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 101: |
Line 101: |
| | 0x4 | | | 0x4 |
| | Length of STRG partition (also in CSAR header) | | | Length of STRG partition (also in CSAR header) |
| + | |- |
| + | | 0x8 |
| + | | 0x4 |
| + | | Version? (always 0x2400) |
| + | |- |
| + | | 0xC |
| + | | 0x4 |
| + | | Offset to root node (always 0x10) |
| + | |- |
| + | | 0x10 |
| + | | 0x4 |
| + | | Root node type (always 0x2401) |
| + | |- |
| + | | 0x14 |
| + | | 0x4 |
| + | | This + 8 points to some kind of descriptor table |
| |- | | |- |
| | 0x18 | | | 0x18 |
Line 108: |
Line 124: |
| |} | | |} |
| | | |
− | Then for each name:
| + | ==== Node struct ==== |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 118: |
Line 134: |
| | 0x0 | | | 0x0 |
| | 0x4 | | | 0x4 |
− | | Type of the file...? | + | | Type of the node? |
| |- | | |- |
| | 0x4 | | | 0x4 |
| | 0x4 | | | 0x4 |
− | | Offset of the filename...? | + | | Offset to node data? |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x4 | | | 0x4 |
− | | Size of the filename | + | | Length of some data based on node type |
| |- | | |- |
| |} | | |} |
| + | |
| + | ==== Nodes ==== |
| + | |
| + | ===== Root node (0x2401) ===== |
| + | * Offset + 8 points to some unknown data. |
| + | * Length specifies how many nodes after this node belong to this node. |
| + | |
| + | ===== File node(?) (0x1F01) ===== |
| + | * Offset + 0x18 points to the file's name |
| + | * Length specifies the file name buffer size, including the NUL terminator. |
| + | |
| + | |
| Then every filename is rawly setted. You can set up a dictionary that contains, using a simple counter, the size of every filename in order. Then, using the same type of counter, get the values of the size of the filename in a correct order. | | Then every filename is rawly setted. You can set up a dictionary that contains, using a simple counter, the size of every filename in order. Then, using the same type of counter, get the values of the size of the filename in a correct order. |
| + | |
| === INFO === | | === INFO === |
| | | |