EvilEngine/HIP (File Format): Difference between revisions
Content added Content deleted
(→Layers) |
EnergyDrink (talk | contribs) 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. |
||