| 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[];
| |
| − | }
| |
| − | }
| |
| | } | | } |
| | | | |