-
Notifications
You must be signed in to change notification settings - Fork 3
Format: Arc archive
Robert Jordan edited this page May 16, 2021
·
2 revisions
Archive type for all Majiro files of a specific category. Uses the .arc
extension.
Type | Value | Description |
---|---|---|
char[16] |
"MajiroArcV1.000" "MajiroArcV2.000" "MajiroArcV3.000" |
File Signature and Version |
uint32 |
Count | Number of file entries in archive |
uint32 |
NamesOffset | Absolute offset to file NamesBuffer |
uint32 |
DataOffset | Absolute offset to file DataBuffer |
Entry[NV] | Entries | File entries table |
cstring [N] |
NamesBuffer | File names buffer |
byte[] |
DataBuffer | File data buffer |
arc.Version = (int)(arc.Signature[10] - '0');
uint N = arc.Count;
uint NV = arc.Count + (arc.Version==1 ? 1 : 0);
uint namesSize = arc.DataOffset - arc.NamesOffset;
Unlike higher versions, V1 contains arc.Count + 1
table entries, where arc.Entries[arc.Count].Offset
is used exclusively to calculate arc.Entries[arc.Count - 1].Length
.
For arc.Entries[arc.Count]
, Hash = 0
and Offset = file.Length
.
Type | Value | Description |
---|---|---|
uint32 |
Hash | CRC-32 hash of file name |
uint32 |
Offset | Absolute offset to file data |
entry.Length = arc.Entries[i+1].Offset - entry.Offset;
Type | Value | Description |
---|---|---|
uint32 |
Hash | CRC-32 hash of file name |
uint32 |
Offset | Absolute offset to file data |
uint32 |
Length | Length of file data |
Type | Value | Description |
---|---|---|
uint64 |
Hash | CRC-64¹ hash of file name |
uint32 |
Offset | Absolute offset to file data |
uint32 |
Length | Length of file data |
A null-terminated list of entry names. With each name starting immediately after the previous name's null terminator.
Data is store uncompressed and decrypted[citation needed], each file can be read by seeking to entry.Offset
and reading entry.Length
bytes.