Anonymous user
EvilEngine/HIP (File Format): Difference between revisions
no edit summary
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:
==General Info==
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===
<pre>
▲// This header is present at the start of all sections.
char[4] sectionName
int sectionSize
Line 23 ⟶ 27:
===HIPA===
<pre>▼
▲// This section is empty
</pre>▼
===PACK===
<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 PFLG
Line 36 ⟶ 38:
section PMOD
section PLAT
</pre>
===PVER===
<pre>
▲// This section contains information about the archive version.
int subVersion
int clientVersion
Line 47 ⟶ 49:
===PFLG===
<pre>
▲// This section contains archive flags.
int flags
</pre>
===PCNT===
<pre>
▲// This section contains counters.
int
▲int LHDRCount // Amount of LHDR sections
int sizeOfLargestSourceFileAsset
int sizeOfLargestLayer
Line 63 ⟶ 65:
===PCRT===
▲<pre>
string dateString \\ Date as string
</pre>
===PMOD===
<pre>
int modDate
</pre>
===PLAT===
<pre>▼
▲// This section contains platform data. It's not present in Scooby Doo.
▲<pre>
string targetPlatform
string targetPlatformName
Line 84 ⟶ 87:
string language
string targetGame
▲</pre>
<pre>
string targetPlatform
string language
Line 93 ⟶ 98:
===DICT===
<pre>
▲// This section contains no data and 2 sub sections: ATOC and LTOC.
section ATOC
section LTOC
Line 100 ⟶ 105:
===ATOC===
<pre>
▲// This section contains one AINF sub section and an array of AHDR sub sections as specified in PCNT
section AINF
section[AHDRCount] AHDR
Line 112 ⟶ 117:
===AHDR===
<pre>
▲// This section contains data and one ADBG sub section
int fileOffset \\ absolute
▲int assetID // identifier ID for this asset, must be unique for each asset
▲char[4] fileType // asset type
int fileSize
int plusValue
int flags
section ADBG
Line 126 ⟶ 130:
===ADBG===
<pre>
int alignment
▲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 assetFileName
</pre>
===LTOC===
<pre>
▲// This section contains one LINF sub section and an array of LHDR sub sections as specified in PCNT
section LINF
section[LHDRCount] LHDR
Line 146 ⟶ 149:
===LHDR===
<pre>
▲// This section contains data and one LDBG sub section
int layerType
int assetAmount
Line 161 ⟶ 163:
===STRM===
<pre>
▲// This section contains no data and 2 sub sections: DHDR and DPAK.
section DHDR
section DPAK
Line 173 ⟶ 175:
===DPAK===
<pre>
▲// 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
</pre>
|