EvilEngine/HIP (File Format): Difference between revisions

m
no edit summary
mNo edit summary
Line 89:
This block contains no data but it does contain child blocks: [[#PVER|PVER]], [[#PFLG|PFLG]], [[#PCNT|PCNT]], [[#PCRT|PCRT]], and [[#PMOD|PMOD]], as well as [[#PLAT|PLAT]] in every game past Scooby Doo: Night of 100 Frights. This block is used to group together various metadata about the archive.
 
====PVER====
This block contains information about the archive version.
<pre>
Line 103:
'''compatVersion''' is 1 in all games.
 
====PFLG====
This block contains archive flags. It is unused by the game.
<pre>
Line 117:
** 0x02000000 is used in all BFBB hips except font2.HIP
 
====PCNT====
This block contains counts of specific things, only the first 2 are used by the game.
<pre>
Line 137:
'''maxXformAssetSize''' is the largest asset size in bytes out of all assets specifically with the <code>READ_TRANSFORM</code> flag set (see [[#AHDR|AHDR]] flags).
 
====PCRT====
This block contains the creation date of the archive.
<pre>
Line 158:
This is the same format returned by the C standard function [https://en.cppreference.com/w/c/chrono/ctime <code>ctime()</code>]. It always ends with a newline character (<code>'\n'</code>, <code>'\x0A'</code>) in Scooby.
 
====PMOD====
This block contains the latest modification date of the archive.
<pre>
Line 164:
</pre>
 
====PLAT====
This block contains information about the specific game, platform, language, etc. the archive was built for. It's not present in Scooby. The format differs between BFBB and its subsequent games:
 
Line 213:
This block serves as a "dictionary" for all the assets and layers in the HIP archive. It contains no data and 2 child blocks: [[#ATOC|ATOC]] and [[#LTOC|LTOC]].
 
====ATOC====
This section holds all the asset entries for the HIP archive. It contains no data and a [[#AINF|AINF]] child block followed by a variable number of [[#AHDR|AHDR]] child blocks. The number of AHDR blocks should match the '''assetCount''' value found in [[#PCNT|PCNT]]. All AHDR blocks together form a list and is sorted by the '''id''' value found within each block when building the HIP archive.
 
=====AINF=====
This block is unused by the game.
<pre>
Line 224:
This value is always 0.
 
=====AHDR=====
This block defines an entry for an [[asset]]. It contains some data followed by an [[#ADBG|ADBG]] child block.
<pre>
Line 251:
* 0x8 - WRITE_TRANSFORM - The asset's data needs to be transformed from a runtime-specific format into a special binary format, likely used by Heavy Iron's level editor.
 
======ADBG======
This block defines debugging info for its parent [[#AHDR|AHDR]] block.
<pre>
Line 268:
'''checksum''' is the checksum of the asset's data. The algorithm to calculate the checksum is currently unknown, but it's unused by the game anyways.
 
====LTOC====
This section holds all the layer entries for the HIP archive. It contains no data and a [[#LINF|LINF]] child block followed by a variable number of [[#LHDR|LHDR]] child blocks. The number of LHDR blocks should match the '''layerCount''' value found in [[#PCNT|PCNT]].
 
=====LINF=====
This block is unused by the game.
<pre>
Line 279:
This value is always 0.
 
=====LHDR=====
This block defines an entry for a layer. It contains some data followed by an [[#LDBG|LDBG]] child block.
<pre>
Line 293:
'''assetIDs''' is a list of all the assets' IDs. The order of IDs in this list determines the order that the assets' data will be stored in [[#DPAK|DPAK]].
 
======LDBG======
This block is unused by the game.
<pre>
Line 304:
This block organizes all of the data for the assets in the HIP archive. It contains no data and 2 child blocks: [[#DHDR|DHDR]] and [[#DPAK|DPAK]].
 
====DHDR====
This block is unused by the game.
<pre>
Line 312:
This value is always -1 (0xFFFFFFFF).
 
====DPAK====
This block contains all asset data, grouped by layer.
 
2,079

edits