|
IMPORTANT: All offsets are taken from KorokPot.bars! Actual offsets of dynamic-length data may vary in other files, but based |
|
on the information here, it shouldn't be hard to find the real offsets. When in doubt, look at the code. |
|
|
|
╒══════════╤══════════╤═════════╤════════════════════╤═══════════╤═════════════════════════╤════════════════════════════════════════════════════════════════════════╕ |
|
│ Offset │ -> Dec │ Size │ -> Dec │ Type │ Name │ Information │ |
|
╞══════════╪══════════╪═════════╪════════════════════╪═══════════╪═════════════════════════╪════════════════════════════════════════════════════════════════════════╡ |
|
│ 0x0 │ 0 │ 0x4 │ 4 │ │ BARS header │ Indicates that this is, in fact, a BARS file │ |
|
├──────────┼──────────┼─────────┼────────────────────┼───────────┼─────────────────────────┼────────────────────────────────────────────────────────────────────────┤ |
|
│ 0x4 │ 4 │ 0x4 │ 4 │ Int │ File length │ The file length in bytes, from 0x0 to whatever this is │ |
|
├──────────┼──────────┼─────────┼────────────────────┼───────────┼─────────────────────────┼────────────────────────────────────────────────────────────────────────┤ |
|
│ 0x8 │ 8 │ 0x2 │ 2 │ Short │ Endianness? │ Possibly a big endian BOM │ |
|
├──────────┼──────────┼─────────┼────────────────────┼───────────┼─────────────────────────┼────────────────────────────────────────────────────────────────────────┤ |
|
│ 0xa │ 10 │ 0x2 │ 2 │ │ Unknown │ Not needed when merely extracting FWAV data │ |
|
├──────────┼──────────┼─────────┼────────────────────┼───────────┼─────────────────────────┼────────────────────────────────────────────────────────────────────────┤ |
|
│ 0xc │ 12 │ 0x4 │ 4 │ Int │ Number of FWAV tracks │ │ |
|
├──────────┼──────────┼─────────┼────────────────────┼───────────┼─────────────────────────┼────────────────────────────────────────────────────────────────────────┤ |
|
│ 0x10 │ 16 │ 0x20 │ 32 │ Int[]? │ Unknown │ Most likely data relating to the tracks, not needed │ |
|
├──────────┼──────────┼─────────┼────────────────────┼───────────┼─────────────────────────┼────────────────────────────────────────────────────────────────────────┤ |
|
│ 0x30 │ 48 │ 0x40 │ 64 │ Int[] │ AMTA/FWAV chunk offsets │ Odd elements = AMTA chunk offsets / even elements = FWAV chunk offsets │ |
|
├──────────┼──────────┼─────────┼────────────────────┼───────────┼─────────────────────────┼────────────────────────────────────────────────────────────────────────┤ |
|
│ 0x70 │ 112 │ 0x5d4 │ 1492 │ See below │ AMTA chunks │ See below │ |
|
├──────────┼──────────┼─────────┼────────────────────┼───────────┼─────────────────────────┼────────────────────────────────────────────────────────────────────────┤ |
|
│ 0x680 │ 1664 │ 0x22338 │ 140088 (until EOF) │ See below │ FWAV chunks │ See below │ |
|
╘══════════╧══════════╧═════════╧════════════════════╧═══════════╧═════════════════════════╧════════════════════════════════════════════════════════════════════════╛ |
|
╒══════════╤══════════╤════════╤══════════╤════════╤══════════════╤═══════════════════════════════════════════════════════╕ |
|
│ Offset │ -> Dec │ Size │ -> Dec │ Type │ Name │ Information │ |
|
╞══════════╪══════════╪════════╪══════════╪════════╪══════════════╪═══════════════════════════════════════════════════════╡ |
|
│ 0x0 │ 0 │ 0x4 │ 4 │ │ AMTA header │ Start of an AMTA chunk │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x4 │ 4 │ 0x2 │ 2 │ Short │ Endianness? │ See above │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x6 │ 6 │ 0x2 │ 2 │ Short │ Unknown │ Is always 0x400 (1024) in BOTW's files │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x8 │ 8 │ 0x4 │ 4 │ Int │ Chunk length │ Length of the AMTA chunk │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0xc │ 12 │ 0x4 │ 4 │ Int │ DATA offset │ Offset of the DATA chunk, relative to the AMTA header │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x10 │ 16 │ 0x4 │ 4 │ Int │ MARK offset │ Offset of the MARK chunk, relative to the AMTA header │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x14 │ 20 │ 0x4 │ 4 │ Int │ EXT_ offset │ Offset of the EXT_ chunk, relative to the AMTA header │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x18 │ 24 │ 0x4 │ 4 │ Int │ STRG offset │ Offset of the STRG chunk, relative to the AMTA header │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x1c │ 28 │ 0x4 │ 4 │ │ DATA header │ │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x20 │ 32 │ 0x4 │ 4 │ Int │ DATA length │ Length of the DATA chunk, from here │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x24 │ 36 │ 0x64 │ 100 │ │ DATA content │ Unknown │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x88 │ 136 │ 0x4 │ 4 │ │ MARK header │ │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x8c │ 140 │ 0x4 │ 4 │ Int │ MARK length │ Length of the MARK chunk, from here │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x90 │ 144 │ 0x4 │ 4 │ Int? │ MARK content │ Unknown │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x94 │ 148 │ 0x4 │ 4 │ │ EXT_ header │ │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x98 │ 152 │ 0x4 │ 4 │ Int │ EXT_ length │ Length of the EXT_ chunk, from here │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x9c │ 156 │ 0x4 │ 4 │ │ EXT_ content │ Unknown │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0xa0 │ 160 │ 0x4 │ 4 │ │ STRG header │ │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0xa4 │ 164 │ 0x4 │ 4 │ Int │ STRG length │ Length of the STRG chunk, from here │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼──────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0xa8 │ 168 │ 0x11 │ 17 │ String │ STRG content │ Null-terminated track name │ |
|
╘══════════╧══════════╧════════╧══════════╧════════╧══════════════╧═══════════════════════════════════════════════════════╛ |
|
╒══════════╤══════════╤════════╤══════════╤════════╤═════════════╤═══════════════════════════════════════════════════════╕ |
|
│ Offset │ -> Dec │ Size │ -> Dec │ Type │ Name │ Information │ |
|
╞══════════╪══════════╪════════╪══════════╪════════╪═════════════╪═══════════════════════════════════════════════════════╡ |
|
│ 0x0 │ 0 │ 0x4 │ 4 │ │ FWAV header │ Start of an FWAV chunk │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼─────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x4 │ 4 │ 0x2 │ 2 │ Short │ Endianness? │ See above │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼─────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x6 │ 6 │ 0x2 │ 2 │ Short │ Unknown │ Is always 0x40 (64) in BOTW's files │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼─────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x8 │ 8 │ 0x2 │ 2 │ Short │ Unknown │ Is always 0x1 (1) in BOTW's files │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼─────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0xa │ 10 │ 0x2 │ 2 │ Short │ Unknown │ Is always 0x200 (512) in BOTW's files │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼─────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0xc │ 12 │ 0x4 │ 4 │ Int │ FWAV length │ Length of the FWAV chunk, starting at the FWAV header │ |
|
├──────────┼──────────┼────────┼──────────┼────────┼─────────────┼───────────────────────────────────────────────────────┤ |
|
│ 0x10 │ 16 │ 0xc334 │ 49972 │ │ Data │ Doesn't matter in this context │ |
|
╘══════════╧══════════╧════════╧══════════╧════════╧═════════════╧═══════════════════════════════════════════════════════╛ |
Seems it doesn't work wit .bars from switch gamecard dump
Traceback (most recent call last): File "bars.py", line 138, in <module> main() File "bars.py", line 133, in main extract_from_bars(_f) File "bars.py", line 40, in extract_from_bars bars_track_offsets = bars_track_struct.unpack(f.read(bars_track_struct.size)) MemoryError