BCSAR: Difference between revisions

Specified which vgmtoolbox tool to use to extract BCWAVs
MarcusD (talk | contribs)
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 ===