GoodEngine/HO (File Format): Difference between revisions
no edit summary
EnergyDrink (talk | contribs) (namehash :spongedance:) |
EnergyDrink (talk | contribs) No edit summary |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1:
'''HO archives''' are container files used by Heavy Iron Studios in their 7 Good Engine/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===
Line 5:
==Format==
===
{| class="wikitable"
|-
! Offset !! Type !! Variable !! Description
|-
| 0x00 ||
|-
| 0x04 || int || '''verPackFile''' ||
Line 20 ⟶ 18:
| 0x0C || int || '''geBuildNum''' ||
|-
| 0x10 || long || '''timeValue''' || Number of seconds since 00:00, Jan 1 1970 UTC, with a timezone offset of UTC-7:00 (Pacific Time).
|-
| 0x18 ||
|-
| 0x40 || int || [FormatInfo] '''sectorSize''' ||
|-
| 0x44 || int || [MasterTable] '''startSector''' || Always 1 (if '''sectorSize''' is 0x800).
|-
| 0x48 || int || [MasterTable] '''tableSize''' || Size of [[#
|-
| 0x4C ||
|-
| 0x400 || WideString || '''platform''' ||
Line 44 ⟶ 42:
* WALE = Wall-E
* Up = Up
* SB09 =
* UFCT = UFC Personal Trainer
* FIVE = Harley Pasternak's Hollywood Workout
* FGUY = Family Guy: Back to the Multiverse
|-
| 0x4BC || WideString || '''creator''' || always "'''GoodEditor:PackView.GEPlugin'''"
Line 61 ⟶ 53:
| 0x5FC || WideString || '''hash''' ||
|-
| 0x63C || int || '''libVersion''' || Always 1.
|-
| 0x640 ||
|}
===
====TableHeader====
{| class="wikitable"
Line 72 ⟶ 64:
! Offset !! Type !! Variable !! Description
|-
| 0x00 ||
|-
| 0x04 || int || '''entryCount''' || Amount of [[#MasterEntry|master entries]], always 1.
Line 86 ⟶ 78:
| 0x18 || int || '''metaDataSize''' || ''null''
|-
| 0x1C ||
|}
Line 96 ⟶ 88:
| 0x00 || int || '''sectionType''' || '''SECT/TCES'''
|-
| 0x04 ||
|-
| 0x06 ||
|-
| 0x07 || byte || '''pad''' || ''0x33''
Line 104 ⟶ 96:
| 0x08 || int || '''userKey''' || ''null''
|-
| 0x0C ||
|-
| 0x10 || int || '''namePtr''' || Offset to
|-
| 0x14 ||
|-
| 0x18 || int || '''fromNamePtr''' || ''0xFFFFFFFF''
|-
| 0x1C || int || '''startSector''' || Multiply this by [[#
|-
| 0x20 || int || '''sizeOnDisk''' || Size of [[#
|-
| 0x24 || int || '''sizeInMem''' || Size of [[#
|-
| 0x28 || int || '''memoryAlignment''' || ''0xFFFFFFFF''
Line 128 ⟶ 120:
| 0x38 || int || '''metaRecord''' || ''0xFFFFFFFF''
|-
| 0x3C ||
|}
Line 134 ⟶ 126:
Unknown
===
====TableHeader====
{| class="wikitable"
Line 140 ⟶ 132:
! Offset !! Type !! Variable !! Description
|-
| 0x00 ||
|-
| 0x04 || int || '''entryCount''' || Amount of [[#SectionEntry|section entries]].
Line 146 ⟶ 138:
| 0x08 || int || '''tableFlags''' || ''null''
|-
| 0x0C || int || '''firstString''' || Offset to
|-
| 0x10 || int || '''stringTableSize''' || Size of
|-
| 0x14 || int || '''firstMetaRec''' || Offset to [[#MetaSection|MetaSection]], relative to start of this header.
|-
| 0x18 || int || '''metaDataSize''' || Size of PSL/PSLD entries in [[#MetaSection|MetaSection]] (without child blocks).
|-
| 0x1C ||
|}
Line 166 ⟶ 158:
* '''PD/DP''' = ParcelDebug
* '''PTEX/XETP''' = ParcelTexture
* '''PFST/TSFP''' = ParcelMemFast '''(Not present in Ratatouille)'''
|-
| 0x04 ||
'''
* 0x0000 =
* 0x0401 =
* 0x0804 =
* 0x0C04 =
* 0x0404 =
* 0x1004 =
* 0x0405 =
* 0x0406 =
* 0x0413 =
* 0x0409 =
* 0x0809 =
* 0x0C09 =
* 0x1009 =
* 0x040B =
* 0x040C =
* 0x0407 =
* 0x0807 =
* 0x0408 =
* 0x0410 =
* 0x0411 =
* 0x0412 =
* 0x0814 =
* 0x0415 =
* 0x0816 =
* 0x0416 =
* 0x0419 =
* 0x041B =
* 0x080A =
* 0x0C0A =
* 0x041D =
* 0x0422 =
|-
| 0x06 ||
* 0 = UNDEFINED
* 1 = EXCLUSIVE
Line 212 ⟶ 204:
| 0x08 || int || '''userKey''' || ''null''
|-
| 0x0C ||
|-
| 0x10 || int || '''namePtr''' || Offset to
|-
| 0x14 ||
|-
| 0x18 || int || '''fromNamePtr''' || ''0xFFFFFFFF''
|-
| 0x1C || int || '''startSector''' || Multiply this by [[#
|-
| 0x20 || int || '''sizeOnDisk''' || Size of section.
Line 226 ⟶ 218:
| 0x24 || int || '''sizeInMem''' || Size of section.
|-
| 0x28 || int || '''memoryAlignment''' || Memory alignment of
|-
| 0x2C || int || '''attributeFlags''' || ''null''
Line 232 ⟶ 224:
| 0x30 || int || '''externName''' || ''0xFFFFFFFF''
|-
| 0x34 || int || '''metaBlockCount''' || Amount of [[#
|-
| 0x38 || int || '''metaRecord''' || Offset to [[#
|-
| 0x3C ||
|}
===MetaSection===
====
{| class="wikitable"
|-
Line 248 ⟶ 239:
! colspan="4" | MetaParcelSlicesHeader
|-
| 0x00 ||
|-
| 0x04 || int || '''metasize''' || Size of
|-
| 0x08 || int || '''numSlices''' || Amount of slice entries.
Line 281 ⟶ 272:
| 0x04 || int || '''brickDataOffset''' ||
|-
| 0x08 || int[6] || ''' reserved''' || ''0x74747474''
|-
! colspan="4" | TOCEntry
Line 287 ⟶ 278:
| 0x00 || int || '''elementSize''' || Size of asset (with 0x33 padding bytes).
|-
| 0x04 || int || '''elementOffset''' || Offset to asset, relative to start of [[#SectionEntry|'''
|-
| 0x08 || int || '''blobSize''' || Size of asset (without 0x33 padding bytes).
Line 297 ⟶ 288:
| 0x18 || int || '''wmlTypeID''' || AssetType of corresponding asset.
|-
| 0x1C || short || '''subType''' || Not present in Ratatouille/Wall-E
|-
| 0x1E || short || '''blobFlags''' || int32 in Ratatouille/Wall-E
|}
====
{| class="wikitable
|-
Line 309 ⟶ 300:
| 0x00 || string || '''magic''' || '''PSLD'''
|-
| 0x04 || int || '''size''' || Size of
|-
| 0x08 || int || '''count'''|| Amount of [[#PSLD Entry|'''entrySize''']] and [[#PSLD Entry|'''NameTableEntry''']].
|-
| 0x0C || int || '''offset''' || Offset to [[#PSLD Entry|'''NameTableEntry''']], relative to start of [[#SectionEntry|'''startSector''']].
|-
| 0x10 ||
|}
=====PSLD Entry=====
{| class="wikitable"
|-
! Offset !! Type !! Variable !! Description
|-
| 0x00 || int[count] || '''entrySize''' || Length in bytes of the entries below.
|-
! colspan="4" | NameTableEntry
Line 328 ⟶ 320:
| 0x00 || [[AssetID]] || '''assetid''' || AssetID of corresponding asset.
|-
| 0x08 || int || '''offset'''? ||
|-
| 0x0C || int
|-
| 0x10 || int || Unknown || ''0xFFFFFFFF''
| 0x20 || String || '''assetname''' || Name of corresponding asset.▼
|-
| 0x14 || int[3] || Unknown || ''null''
| colspan="4 | Padding bytes until this entry reaches '''<entrySize>''' in length.▼
|-
|-
▲| colspan="4 | Padding - 0x33 bytes until this entry reaches '''<entrySize>''' in length.
|}
[[Category:File Format]] [[Category:GoodEngine]]
|