Line 106: |
Line 106: |
| } | | } |
| | | |
− | ===Header versions 9+=== | + | ===Header versions 6+=== |
− | byte magic[8]: "NadeoPak" | + | byte magic[8]; // "NadeoPak" |
− | uint32 version (9 or higher) | + | uint32 version; |
| if (version >= 6) | | if (version >= 6) |
| { | | { |
− | uint256 ContentsChecksum; // Checksum Sha256 of the pack contents starting at next byte
| + | uint256 ContentsChecksum; // Checksum Sha256 of the pack contents starting at next byte |
− | uint32 DecryptFlags;
| + | uint32 DecryptFlags; // 0x1 = IsHeaderPrivate, 0x2 = IsCrypted(?), 0x4 = IsDataPrivate, 0x8 = IsImpostor |
− | if (version >= 15)
| + | if (version >= 15) |
− | uint32 HeaderMaxSize; // 0x4000 = small (16 KB), 0x100000 = big (1 MB), 0x1000000 = huge (16 MB)
| + | uint32 HeaderMaxSize; // 0x4000 = Small (16 KB), 0x100000 = Big (1 MB), 0x1000000 = Huge (16 MB) |
− | if (version >= 9)
| + | if (version >= 7) |
− | {
| |
− | struct SAuthorInfo
| |
| { | | { |
− | uint32 version;
| + | SAuthorInfo AuthorInfo; // version = 0, string login, string nick, string zone, string extra |
− | string Login;
| + | if (version < 9) |
− | string Nick;
| + | { |
− | string Zone;
| + | string Comment; |
− | string ExtraInfo;
| + | uint128 unused; |
| + | } |
| + | if (version == 8) |
| + | { |
| + | string CreationBuildInfo; |
| + | string AuthorUrl; |
| + | } |
| + | if (version >= 9) |
| + | { |
| + | string ManialinkUrl; |
| + | if (version >= 13) |
| + | string DownloadUrl; |
| + | uint64 CreationDate; |
| + | string Comment; |
| + | if (version >= 12) |
| + | { |
| + | string Xml; |
| + | string TitleID; |
| + | } |
| + | string UsageSubDir; // to known the kind of pack it is |
| + | string CreationBuildInfo; |
| + | uint128 unused; |
| + | if (version >= 10) |
| + | { |
| + | uint32 NbIncludedPacks; |
| + | struct SIncludedPacksHeaders |
| + | { |
| + | uint256 ContentsChecksum; // Sha256 |
| + | string Name; |
| + | SAuthorInfo AuthorInfo; |
| + | string InfoManialinkUrl; |
| + | uint64 CreationDate; |
| + | string Name; |
| + | if (version >= 11) |
| + | uint32 IncludeDepth; |
| + | } IncludedPacks[]; |
| + | } |
| + | } |
| } | | } |
− | string ManialinkUrl; | + | Blowfish encrypted: // Unencrypted, if DecryptFlags & 0x3 == 0 |
− | if (version >= 13)
| |
− | string DownloadUrl;
| |
− | uint64 CreationDate;
| |
− | string Comment;
| |
− | if (version >= 12)
| |
| { | | { |
− | string Xml;
| + | uint128 Checksum; |
− | string TitleID;
| + | uint32 GbxHeadersStart; |
| + | if version < 15: |
| + | uint32 DataStart; |
| + | if version >= 2: |
| + | { |
| + | uint32 GbxHeadersSize; |
| + | uint32 GbxHeadersComprSize; |
| + | } |
| + | if version >= 14: |
| + | uint128 unused; |
| + | if version >= 16: |
| + | uint32 FileSize; |
| + | if version >= 3: |
| + | uint128 unused; |
| + | if version == 6: |
| + | SAuthorInfo; |
| + | uint32 Flags; |
| + | uint32 NumFolders; |
| + | FolderDesc Folders[NumFolders] |
| + | { |
| + | int32 FolderIndexParent; |
| + | string FolderName; |
| + | } |
| + | uint32 NumFiles; |
| + | FileDesc Files[NumFiles] |
| + | { |
| + | int32 FolderIndex; |
| + | string FileName; |
| + | uint32 unknown; |
| + | uint32 UncompressedSize; |
| + | uint32 CompressedSize; |
| + | uint32 Offset; |
| + | uint32 ClassID; |
| + | if version >= 17: |
| + | uint32 Size; |
| + | if version >= 14: |
| + | uint128 Checksum; |
| + | uint64 Flags; |
| + | } |
| } | | } |
− | string UsageSubDir; // to known the kind of pack it is
| |
− | string CreationBuildInfo;
| |
− | uint128 unused;
| |
− | if (version >= 10)
| |
− | {
| |
− | uint32 NbIncludedPacks;
| |
− | struct SIncludedPacksHeaders
| |
− | {
| |
− | uint256 ContentsChecksum; // Sha256
| |
− | string Name;
| |
− | SAuthorInfo AuthorInfo;
| |
− | string InfoManialinkUrl;
| |
− | uint64 CreationDate;
| |
− | string Name;
| |
− | if (version >= 11)
| |
− | uint32 IncludeDepth;
| |
− | } IncludedPacks[];
| |
− | }
| |
− | }
| |
| } | | } |
| | | |