Line 4: |
Line 4: |
| == Overview == | | == Overview == |
| | | |
− | ARC files are archives. Containers of files compressed with LZ-10 (more compression methods might be available). | + | ARC files are compressed files. |
| | | |
− | This is very similiar to NARC (the DS archives).
| + | Found in [[BCMA|manual files] compressed with LZ-10 |
| | | |
− | == ARC header ==
| + | (more compression methods might be available). |
− | {| class="wikitable" border="1"
| |
− | ! Offset !! Size !! Type !! Description
| |
− | |-
| |
− | | 0x000 || 4 || char[4] || Magic Number 'darc'
| |
− | |-
| |
− | | 0x004 || 2 || uint16 || Endianess (=0xFFFE: Little)
| |
− | |-
| |
− | | 0x006 || 2 || uint16 || Header's length
| |
− | |-
| |
− | | 0x008 || 4 || uint32 || Unknown (= 0x01000000 ?)
| |
− | |-
| |
− | | 0x00C || 4 || uint32 || File's length
| |
− | |-
| |
− | | 0x010 || 4 || uint32 || [[ARC#File_table|File table]] offset (from the beginning of the file)
| |
− | |-
| |
− | | 0x014 || 4 || uint32 || [[ARC#File_table|File table]] length
| |
− | |-
| |
− | | 0x018 || 4 || uint32 || [[ARC#Files_data|Files data]] offset
| |
− | |}
| |
− | | |
− | === File table ===
| |
− | | |
− | The file table starts at 0x01C.
| |
− | | |
− | Each file struct consists of 3 uint32:
| |
− | {| class="wikitable" border="1"
| |
− | ! Offset !! Size !! Type !! Description
| |
− | |-
| |
− | | 0x00C || 4 || uint32 || Compressed file name offset (from the end of the table, padded to 0x10)
| |
− | | |
− | if (offset & 0x01000000) then this is a folder (i.e. first two nodes 'null' & '.')
| |
− | |-
| |
− | | 0x004 || 4 || uint32 || Compressed file offset
| |
− | |-
| |
− | | 0x008 || 4 || uint32 || Compressed file length
| |
− | |}
| |
− | | |
− | * First two nodes in the file table are ‘null’ and ‘.’ both have compressed file length of 7.
| |
− | | |
− | === Files data ===
| |
− | | |
− | * Each file is compressed using LZ-10. (Starts with 0x10 and followed by uint24 of the uncompressed file size).
| |
− | * Each file's end is padded to 0x10 besides the last one which ends with EOF.
| |