Changes

Jump to navigation Jump to search
1,726 bytes added ,  01:19, 4 July 2017
→‎Header versions 6+: Completed the NadeoPak header
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[];
  −
    }
  −
  }
   
  }
 
  }
  

Navigation menu