EvilEngine/PICK: Difference between revisions

From Heavy Iron Modding
Content added Content deleted
No edit summary
m (Seil moved page PICK to EvilEngine/PICK)
 
(3 intermediate revisions by one other user not shown)
Line 4: Line 4:
{{#vardefine:type|[[Binary]]}}<nowiki/>
{{#vardefine:type|[[Binary]]}}<nowiki/>
{{#vardefine:basetype|}}<nowiki/>
{{#vardefine:basetype|}}<nowiki/>
{{#vardefine:games|Scooby BFBB TSSM ROTU}}<nowiki/>
{{#vardefine:games|Scooby BFBB TSSM Incredibles ROTU RatProto}}<nowiki/>
{{#vardefine:sourcecode|[https://github.com/bfbbdecomp/bfbb/blob/master/src/Game/zPickupTable.h zPickupTable.h]}}<nowiki/>
{{#vardefine:sourcecode|[https://github.com/bfbbdecomp/bfbb/blob/master/src/Game/zPickupTable.h zPickupTable.h]}}<nowiki/>
{{#vardefine:image|}}<nowiki/>
{{#vardefine:image|}}<nowiki/>
Line 15: Line 15:
The asset data starts with an 8-byte header:
The asset data starts with an 8-byte header:


===zAssetPickupTable===
{| class="wikitable"
{| class="wikitable"
! Offset !! Type !! Description
! Offset !! Type !! Variable !! Description
|-
|-
| 0x00 || unsigned int || '''Magic''' - 0x5049434B ("PICK")
| 0x00 || uint || '''Magic''' || 0x5049434B ("PICK")
|-
|-
| 0x04 || unsigned int || '''Count''' - amount of entries
| 0x04 || uint || '''Count''' || Amount of entries
|}
|}


After the header is the entries themselves. Each entry has the following format:
After the header is the entries themselves. Each entry has the following format:


===zAssetPickup===
{| class="wikitable"
{| class="wikitable"
! Offset !! Type !! Description
! Offset !! Type !! Variable !! Description
|-
|-
| 0x00 || unsigned int || '''pickupHash'''. Used by [[PKUP]] assets to define pickup type.
| 0x00 || uint || '''pickupHash''' || Used by [[PKUP]] assets to define pickup type.
|-
|-
| 0x04 || unsigned char || '''pickupType'''. Usually 0xCD.
| 0x04 || byte || '''pickupType''' || Usually 0xCD.
|-
|-
| 0x05 || unsigned char || '''pickupIndex'''. Usually 0xCD.
| 0x05 || byte || '''pickupIndex''' || Usually 0xCD.
|-
|-
| 0x06 || unsigned short || '''pickupFlags'''. Usually 0x0000.
| 0x06 || ushort || '''pickupFlags''' || Usually 0x0000.
|-
|-
| 0x08 || unsigned int || '''quantity'''. Usually 1.
| 0x08 || uint || '''quantity''' || Usually 1.
|-
|-
| 0x0C || unsigned int ([[MODL|Model]] [[AssetID]]) || '''modelID'''
| 0x0C || [[AssetID]] || '''modelID''' ||
|-
|-
| 0x10 || unsigned int ([[AssetID]]) || '''animID'''. Usually 0.
| 0x10 || [[AssetID]] || '''animID''' || Usually 0.
|-
|-
|}
|}

Latest revision as of 22:47, 15 September 2022

PICK
Pickup Table
TypeBinary
Games usedNight of 100 Frights

Battle for Bikini Bottom
The SpongeBob SquarePants Movie
The Incredibles
Rise of the Underminer

Ratatouille Prototype
Source codezPickupTable.h

A pickup table is an asset which usually has only one instance in the entire game (in boot.hip) and defines information regarding pickups.

Format

The asset data starts with an 8-byte header:

zAssetPickupTable

Offset Type Variable Description
0x00 uint Magic 0x5049434B ("PICK")
0x04 uint Count Amount of entries

After the header is the entries themselves. Each entry has the following format:

zAssetPickup

Offset Type Variable Description
0x00 uint pickupHash Used by PKUP assets to define pickup type.
0x04 byte pickupType Usually 0xCD.
0x05 byte pickupIndex Usually 0xCD.
0x06 ushort pickupFlags Usually 0x0000.
0x08 uint quantity Usually 1.
0x0C AssetID modelID
0x10 AssetID animID Usually 0.