GoodEngine/HO (File Format): Difference between revisions

no edit summary
No edit summary
No edit summary
Line 1:
'''HO archives''' are container files used by Heavy Iron Studios in their 7 Havok games. They are used to store assets, which are the resources and objects used to create levels, characters and menus for the games.
 
===Endian===
HO archives are stored as [https://en.wikipedia.org/wiki/Endianness big endian] in all console versions of each game. Family Guy PC archives are stored as [https://en.wikipedia.org/wiki/Endianness little endian].
 
==Format==
Line 18 ⟶ 20:
| 0x0C || int || '''geBuildNum''' ||
|-
| 0x140x10 || intlong || '''timeValue''' || Number of seconds since 00:00, Jan 1 1970 UTC, with a timezone offset of UTC-7:00 (Pacific Time)
| 0x10 || int || '''pad''' ||
|-
| 0x14 || int || '''timeValue''' || Number of seconds since 00:00, Jan 1 1970 UTC, with a timezone offset of UTC-7:00 (Pacific Time)
|-
| 0x18 || string || '''timeString''' || <code>Www Mmm dd hh:mm:ss yyyy</code>
|-
| 0x40 || int || [FormatInfo] '''sectorSize''' || alwaysHO '''archives are divided in 2048 (0x800''') byte sectors, i.e. HO Header is Sector 0, [[#MAST (HeadersizeMasterTable)|MAST]] is Sector 1...
|-
| 0x44 || int || [MasterTable] '''startSector''' ||
Line 93:
! Offset !! Type !! Variable !! Description
|-
| 0x00 || stringint || '''sectionType''' || '''SECT/TCES'''
|-
| 0x04 || short || '''packLangID''' ||
Line 111:
| 0x18 || int || '''fromNamePtr''' ||
|-
| 0x1C || int || '''startSector''' || Multiply this by 0x800[[#HEL/HEB|'''sectorSize''']] to get the absolute offset. Start of [[#SECT (SectionTable)|SECT]].
|-
| 0x20 || int || '''sizeOnDisk''' || Size of [[#SECT (SectionTable)|SECT]].
Line 161:
! Offset !! Type !! Variable !! Description
|-
| 0x00 || stringint || '''sectionType''' ||
* '''P''' = Parcel
* '''PD/DP''' = ParcelDebug
* '''PTEX/XETP''' = ParcelTexture
* '''PFST/TSFP''' = ParcelMemFast
|-
| 0x04 || short || '''packLangID''' ||
Line 183:
| 0x18 || int || '''fromNamePtr''' ||
|-
| 0x1C || int || '''startSector''' || Multiply this by 0x800[[#HEL/HEB|'''sectorSize''']] to get the absolute offset. Start of section.
|-
| 0x20 || int || '''sizeOnDisk''' || Size of section, relative to start of '''startSector'''.
|-
| 0x24 || int || '''sizeInMem''' || Size of section, relative to start of '''startSector'''.
|-
| 0x28 || int || '''memoryAlignment''' || Memory alignment of asset data in section.
|-
| 0x2C || int || '''attributeFlags''' ||
Line 211:
! colspan="4" | MetaParcelSlicesHeader
|-
| 0x00 || int/string || '''metatype''' || '''PSL'''
|-
| 0x04 || int || '''metasize''' || Size of ParcelSliceMeta.
Line 256:
| 0x0C || int || '''blobAlign''' ||
|-
| 0x10 || [[AssetID]] || '''uidSelf''' || AssetID of corresponding asset.
|-
| 0x18 || int || '''wmlTypeID''' || AssetType of corresponding asset.
Line 270:
! Offset !! Type !! Variable !! Description
|-
| 0x00 || int/string || '''magic''' || '''PSLD'''
|-
| 0x04 || int || '''size''' || Size of ParcelSliceDebugMeta.
Line 289:
! colspan="4" | NameTableEntry
|-
| 0x00 || [[AssetID]] || '''assetid''' || AssetID of corresponding asset.
|-
| 0x08 || int || '''offset'''? || Offset to assetname?
2,079

edits