IPAK Files: Difference between revisions

From COD Engine Research
Kokole (talk | contribs)
No edit summary
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:


== Structure ==
== Structure ==
Thanks to kokole for the structure.
<syntaxhighlight lang="cpp">
 
struct IPakHeader
struct IPakHeader
{
{
Line 34: Line 33:
   unsigned int commands[31]; //(depending on endian) blockSize = (info & 0xFFFF); , compressedFlag = info >> 24;
   unsigned int commands[31]; //(depending on endian) blockSize = (info & 0xFFFF); , compressedFlag = info >> 24;
};
};
 
</syntaxhighlight>
== Decompression Methods ==
== Decompression Methods ==



Latest revision as of 01:20, 4 July 2015

IPAK's, implemented in Black Ops 2, are basically an archive of compressed image data.

Structure

struct IPakHeader
{
  unsigned int magic;
  unsigned int version;
  unsigned int size;
  unsigned int sectionCount;
};
 
struct IPakSection
{
  unsigned int type; //enum 0x1 = info, 0x2 = data
  unsigned int offset;
  unsigned int size;
  unsigned int itemCount;
};
 
struct IPakIndexEntry
{
  unsigned __int64 key;
  unsigned int offset;
  unsigned int size;
};
 
struct IPakDataChunkHeader
{
  unsigned int countAndOffset; // 24 bits = offset, 8 bits = count
  unsigned int commands[31]; //(depending on endian) blockSize = (info & 0xFFFF); , compressedFlag = info >> 24;
};

Decompression Methods

The compression method is just the basic LZO1X compression.

PC:

http://pastebin.com/vd9t2U2B

PS3:

1.00 t6mp_ps3f.self - 0x6AEA78

XBOX:

tu9 default_mp.xex - 0x828E5090
tu13 default_mp.xex - 0x828E6308