EvilEngine/HIP (File Format): Difference between revisions

Content added Content deleted
mNo edit summary
Line 89: 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.
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===
====PVER====
This block contains information about the archive version.
This block contains information about the archive version.
<pre>
<pre>
Line 103: Line 103:
'''compatVersion''' is 1 in all games.
'''compatVersion''' is 1 in all games.


===PFLG===
====PFLG====
This block contains archive flags. It is unused by the game.
This block contains archive flags. It is unused by the game.
<pre>
<pre>
Line 117: Line 117:
** 0x02000000 is used in all BFBB hips except font2.HIP
** 0x02000000 is used in all BFBB hips except font2.HIP


===PCNT===
====PCNT====
This block contains counts of specific things, only the first 2 are used by the game.
This block contains counts of specific things, only the first 2 are used by the game.
<pre>
<pre>
Line 137: 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).
'''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===
====PCRT====
This block contains the creation date of the archive.
This block contains the creation date of the archive.
<pre>
<pre>
Line 158: 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.
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===
====PMOD====
This block contains the latest modification date of the archive.
This block contains the latest modification date of the archive.
<pre>
<pre>
Line 164: Line 164:
</pre>
</pre>


===PLAT===
====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:
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: 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]].
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===
====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.
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===
=====AINF=====
This block is unused by the game.
This block is unused by the game.
<pre>
<pre>
Line 224: Line 224:
This value is always 0.
This value is always 0.


===AHDR===
=====AHDR=====
This block defines an entry for an [[asset]]. It contains some data followed by an [[#ADBG|ADBG]] child block.
This block defines an entry for an [[asset]]. It contains some data followed by an [[#ADBG|ADBG]] child block.
<pre>
<pre>
Line 251: 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.
* 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===
======ADBG======
This block defines debugging info for its parent [[#AHDR|AHDR]] block.
This block defines debugging info for its parent [[#AHDR|AHDR]] block.
<pre>
<pre>
Line 268: 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.
'''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===
====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]].
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===
=====LINF=====
This block is unused by the game.
This block is unused by the game.
<pre>
<pre>
Line 279: Line 279:
This value is always 0.
This value is always 0.


===LHDR===
=====LHDR=====
This block defines an entry for a layer. It contains some data followed by an [[#LDBG|LDBG]] child block.
This block defines an entry for a layer. It contains some data followed by an [[#LDBG|LDBG]] child block.
<pre>
<pre>
Line 293: 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]].
'''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===
======LDBG======
This block is unused by the game.
This block is unused by the game.
<pre>
<pre>
Line 304: 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]].
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===
====DHDR====
This block is unused by the game.
This block is unused by the game.
<pre>
<pre>
Line 312: Line 312:
This value is always -1 (0xFFFFFFFF).
This value is always -1 (0xFFFFFFFF).


===DPAK===
====DPAK====
This block contains all asset data, grouped by layer.
This block contains all asset data, grouped by layer.