EvilEngine/Assets

Heavy Iron games store all of their data for each scene in assets, which can be different formats such as models, textures, animations, object placement information, and many others. Assets are defined by AHDR sections in the HIP archives and uniquely identified by their Asset ID. It is not yet known what all different asset types do.

Classes of Assets
There are many different asset types, but they can be grouped into classes that have similar properties.

RenderWare Streams
These are assets whose data is composed of a RenderWare binary stream, with the tree structure commonly found in them. These assets can be opened in RW Analyze. They are: BSP, JSP, MODL, RWTX.

Base Assets
Many assets extend from Base Assets (also referred to as object assets), which define objects in the level that can interact with each other by using links. Base assets start with an 8 byte header, defined by the  struct:

The data that follows this header differs depending on the asset type. Some base assets are entity assets as well (defined below).

These objects have, at the end of their data, an array of links, with the amount of entries specified in this header. The only exception for this is the PLYR assets, which still has one field after the events.

Entity Assets
Entity assets (also referred to as placeable assets) are base assets which have a 3D placement in the world and the following common header (not all objects with a position follow this, though; for example, MRKR have a position but are not even base assets). They start with a 0x54 byte header, which is defined by the  struct (which extends from  ):

List of asset types
The following is a list of all asset types found across all 5 games as well as which asset types are present in each game, signified by a checkmark (✔).