EvilEngine/TPIK: Difference between revisions

no edit summary
m (1 revision imported)
No edit summary
 
(5 intermediate revisions by 3 users not shown)
Line 1:
<onlyinclude>
{{AssetInfobox
{{#vardefine:typeid|TPIK}}<nowiki/>
|subtitle=Pickup Types
{{#vardefine:name|Pickup Types}}<nowiki/>
|type=[[Binary]]
{{#vardefine:type|[[Base]]}}<nowiki/>
|games=The Incredibles<br>Rise of the Underminer}}
{{#vardefine:basetype|0x00}}<nowiki/>
{{#vardefine:games|Incredibles ROTU RatProto}}<nowiki/>
{{#vardefine:sourcecode|}}<nowiki/>
{{#vardefine:image|}}<nowiki/>
</onlyinclude>
{{AutoAssetInfobox}}
 
A '''pickup types''' is an asset which usually has only one instance in the entire game (in boot.hip) and defines information regarding DYNA pickups used in Incredibles and ROTU.
 
==Format==
ThePickup assettypes dataare startsbase assets, so they start with atheir 0x8 16-byte header, then are followed by:
 
===xTableAsset===
<source lang=cpp>
class xTableAsset : public xBaseAsset
{
public:
unsigned int version;
unsigned int numRows;
};
</source>
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x000x08 || [[Asset ID]]u32 || this'''version''' asset||
|-
| 0x0C || intu32 || amount'''numRows''' || Number of entries.
| 0x04 || int || unknown
|-
| 0x08 || int || unknown
|-
| 0x0C || int || amount of entries
|}
 
After the header is the entries themselves. Each entry is 0x38 bytes long and has the following format:
 
===TableEntry===
<source lang=cpp>
class TableEntry
{
public:
unsigned int typeHash;
unsigned int modelID;
unsigned int pulseModelID;
float pulseTime;
float pulseAddScale;
float pulseMoveDown;
float red;
float green;
float blue;
unsigned int color;
union
{
unsigned int flyingSoundGroupID;
iSndGroupHandle flyingSoundGroupHandle;
};
union
{
unsigned int usedSoundGroupID;
iSndGroupHandle usedSoundGroupHandle;
};
union
{
unsigned int cantUseSoundGroupID;
iSndGroupHandle cantUseSoundGroupHandle;
};
unsigned char healthGain;
unsigned char powerGain;
unsigned char saveFlag;
signed char bInitialized;
};
</source>
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x00 || [[AssetID]] || '''typeHash''' || Used by [[DYNA]] pickup assets to define pickup type.
|-
| 0x000x04 || [[Asset IDAssetID]] || '''pickupHashmodelID'''. Used by [[DYNA]] pickup assets to define pickup|| type.
|-
| 0x040x08 || [[AssetID]] ([[MODL|Model]])| '''pulseModelID''' || pickup model
|-
| 0x0C || f32 || '''pulseTime''' ||
| 0x08 || [[AssetID]] ([[MODL|Model]]) || ring model
|-
| 0x10 || f32 || '''pulseAddScale''' ||
| 0x0C || [[Vector3]] || unknown. possibly pickup or ring model scale
|-
| 0x14 || f32 || '''pulseMoveDown''' ||
| 0x18 || [[Vector3]] || ring color (R, G, B) (0-1)
|-
| 0x240x18 || null[[Vector3]] || unknown'''red/green/blue''' ||
|-
| 0x280x24 || nullu32 || '''color''' || unknown
|-
| 0x2C0x28 || [[AssetID]] (|| '''flyingSoundGroupID''' || [[SGRP]]) || pickup sound
|-
| 0x300x2C || [[AssetID]] ([[SGRP]]) || pickup'''usedSoundGroupID''' denied|| sound[[SGRP]]
|-
| 0x30 || [[AssetID]] || '''cantUseSoundGroupID''' || [[SGRP]]
| 0x34 || byte || unknown
|-
| 0x350x34 || byteu8 || unknown'''healthGain''' ||
|-
| 0x360x35 || byteu8 || unknown'''powerGain''' ||
|-
| 0x370x36 || byte u8|| unknown'''saveFlag''' ||
|-
| 0x37 || s8 || '''bInitialized''' ||
|}
 
{{Assets}}
{{AutoGameNavs}}
 
[[Category:Asset]]