EvilEngine/HIP (File Format): Difference between revisions

Content added Content deleted
Battlepedia>Igorseabra4
(Created page with "==Introduction== HIP archives are container formats used by Heavy Iron Studios in some of their games, including Spongebob Squarepants: Battle For Bikini Bottom. They are used...")
 
Battlepedia>Igorseabra4
No edit summary
Line 5: Line 5:


==General Info==
==General Info==
HIP archives are big endian in all versions of each game.
HIP archives are big endian in all versions of each game. It's made up of 4 main sections:
* '''HIPA''': this section is empty. It's used to mark the start of the file.
* '''PACK''': this section contains general data about the archive, such as game name, creation date and number of assets.
* '''DICT''': this section contains asset headers and layers. Each layer has a type and is composed of certain types of assets.
* '''STRM''': this section contains the raw data for the assets. Each asset header references the STRM by an absolute offset.


===Header Format===
===Header Format===
This header is present at the start of all sections.
<pre>
<pre>
// This header is present at the start of all sections.
char[4] sectionName
char[4] sectionName
int sectionSize
int sectionSize
Line 23: Line 27:


===HIPA===
===HIPA===
This section is empty.
<pre>
// This section is empty
</pre>


===PACK===
===PACK===
This section contains no data and 6 sub sections: PVER, PFLG, PCNT, PCRT, PMOD and PLAT (although PLAT is not present in Scooby Doo: Night of 100 Frights).
<pre>
<pre>
// This section contains no data and 6 sub sections: PVER, PFLG, PCNT, PCRT, PMOD and PLAT (although PLAT is not present in Scooby Doo: Night of 100 Frights).
section PVER
section PVER
section PFLG
section PFLG
Line 36: Line 38:
section PMOD
section PMOD
section PLAT
section PLAT
<pre>
</pre>


===PVER===
===PVER===
This section contains information about the archive version.
<pre>
<pre>
// This section contains information about the archive version.
int subVersion
int subVersion
int clientVersion
int clientVersion
Line 47: Line 49:


===PFLG===
===PFLG===
This section contains archive flags.
<pre>
<pre>
// This section contains archive flags.
int flags
int flags
</pre>
</pre>


===PCNT===
===PCNT===
This section contains counters.
<pre>
<pre>
int AHDRCount \\ Amount of AHDR sections
// This section contains counters.
int AHDRCount // Amount of AHDR sections
int LHDRCount \\ Amount of LHDR sections
int LHDRCount // Amount of LHDR sections
int sizeOfLargestSourceFileAsset
int sizeOfLargestSourceFileAsset
int sizeOfLargestLayer
int sizeOfLargestLayer
Line 63: Line 65:


===PCRT===
===PCRT===
// This section contains a date
This section contains a date.
<pre>
int fileDate // Date file was compiled
string dateString // Date as string
int fileDate \\ Date file was compiled
string dateString \\ Date as string
</pre>
</pre>


===PMOD===
===PMOD===
<pre>
<pre>
// This section contains a date
This section contains a date
int modDate // Date file was last changed
int modDate \\ Date file was last changed
</pre>
</pre>


===PLAT===
===PLAT===
This section contains platform data. It's not present in Scooby Doo.
<pre>
// This section contains platform data. It's not present in Scooby Doo.


// Format for Battle for Bikini Bottom
* Format for Battle for Bikini Bottom
<pre>
string targetPlatform
string targetPlatform
string targetPlatformName
string targetPlatformName
Line 84: Line 87:
string language
string language
string targetGame
string targetGame
</pre>


// Format for The Incredibles, Spongebob Movie and Rise of the Underminer
* Format for The Incredibles, Spongebob Movie and Rise of the Underminer
<pre>
string targetPlatform
string targetPlatform
string language
string language
Line 93: Line 98:


===DICT===
===DICT===
This section contains no data and 2 sub sections: ATOC and LTOC.
<pre>
<pre>
// This section contains no data and 2 sub sections: ATOC and LTOC.
section ATOC
section ATOC
section LTOC
section LTOC
Line 100: Line 105:


===ATOC===
===ATOC===
This section contains one AINF sub section and an array of AHDR sub sections as specified in PCNT.
<pre>
<pre>
// This section contains one AINF sub section and an array of AHDR sub sections as specified in PCNT
section AINF
section AINF
section[AHDRCount] AHDR
section[AHDRCount] AHDR
Line 112: Line 117:


===AHDR===
===AHDR===
This section contains data and one ADBG sub section. AHDR is used to define an asset entry.
<pre>
<pre>
uint assetID \\ identifier ID for this asset, must be unique for each asset
// This section contains data and one ADBG sub section
char[4] [[Asset|assetType]] \\ asset type
// AHDR is used to define an asset entry
int fileOffset \\ absolute
int assetID // identifier ID for this asset, must be unique for each asset
char[4] fileType // asset type
int fileOffset // relative to entire archive
int fileSize
int fileSize
int plusValue // amount of padding after file data
int plusValue \\ amount of padding after file data
int flags
int flags
section ADBG
section ADBG
Line 126: Line 130:
===ADBG===
===ADBG===
<pre>
<pre>
int alignment \\ file must be aligned to this amount of bytes in the stream, this will define the plusValue in the AHDR
// This section contains more asset data
int alignment // file must be aligned to this amount of bytes in the stream, this will define the plusValue in the AHDR
string assetName
string assetName
string assetFileName
string assetFileName
int checksum // ignored
uint checksum \\ ignored
</pre>
</pre>


===LTOC===
===LTOC===
This section contains one LINF sub section and an array of LHDR sub sections as specified in PCNT.
<pre>
<pre>
// This section contains one LINF sub section and an array of LHDR sub sections as specified in PCNT
section LINF
section LINF
section[LHDRCount] LHDR
section[LHDRCount] LHDR
Line 146: Line 149:


===LHDR===
===LHDR===
This section contains data and one LDBG sub section. LHDR is used to define a layer entry.
<pre>
<pre>
// This section contains data and one LDBG sub section
// LHDR is used to define a layer entry
int layerType
int layerType
int assetAmount
int assetAmount
Line 161: Line 163:


===STRM===
===STRM===
This section contains no data and 2 sub sections: DHDR and DPAK.
<pre>
<pre>
// This section contains no data and 2 sub sections: DHDR and DPAK.
section DHDR
section DHDR
section DPAK
section DPAK
Line 173: Line 175:


===DPAK===
===DPAK===
This section contains a byte array which contains all asset data. AHDR references this section by fileOffset.
If AHDRCount is 0, this section is empty (no firstPadding or data).
<pre>
<pre>
int firstPadding \\ Initital padding at start of data
// This section contains a byte array which contains all asset data. AHDR references this section by fileOffset.
// If AHDRCount is 0, this section is empty (no firstPadding or data).
int firstPadding // Initital padding at start of data
byte[] data
byte[] data
</pre>
</pre>