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