EvilEngine/PLAT: Difference between revisions
Content added Content deleted
Battlepedia>TetraxZ mNo edit summary |
EnergyDrink (talk | contribs) No edit summary |
||
(11 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
<onlyinclude> |
|||
{{AssetInfobox |
|||
{{#vardefine:typeid|PLAT}}<nowiki/> |
|||
|subtitle=Platform |
|||
{{#vardefine:name|Platform}}<nowiki/> |
|||
|type=[[Placeable]] |
|||
{{#vardefine:type|[[Entity]]}}<nowiki/> |
|||
|objectid=0x06 |
|||
{{#vardefine:basetype|0x06}}<nowiki/> |
|||
|games=Night of 100 Frights<br>Battle for Bikini Bottom<br>The SpongeBob SquarePants Movie<br>The Incredibles<br>Rise of the Underminer}} |
|||
{{#vardefine:games|Scooby BFBB TSSM Incredibles ROTU RatProto}}<nowiki/> |
|||
{{#vardefine:sourcecode|[https://github.com/bfbbdecomp/bfbb/blob/master/src/Game/zPlatform.h zPlatform.h]}}<nowiki/> |
|||
{{#vardefine:image|}}<nowiki/> |
|||
</onlyinclude> |
|||
{{AutoAssetInfobox}} |
|||
This asset defines an entry for a moving object. |
|||
==Format: Night of 100 Frights== |
|||
PLAT are [[EvilEngine/Assets#Entity Assets|entity assets]], so they start with their 0x50 byte header, then are followed by: |
|||
{| class="wikitable" |
|||
! Offset !! Type !! Variable !! Description |
|||
|- |
|||
| 0x50 || byte || '''type''' || This is always the same as the [[#Types (0x09)|Type at 0x09]] for every type except Platform, which can be one of the following subtypes: |
|||
* 0 - Extend/Retract |
|||
* 1 - Orbit |
|||
* 2 - Spline |
|||
* 3 - Move Point |
|||
|- |
|||
| 0x51 || byte || '''pad''' || ''null'' (Padding) |
|||
|- |
|||
| 0x52 || ushort || '''flags''' || |
|||
|- |
|||
! colspan="4" | Extend/Retract only |
|||
|- |
|||
| 0x54 || int || '''nodata''' || ''null'' |
|||
|- |
|||
| 0x58 || byte[0x20] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | Orbit only |
|||
|- |
|||
| 0x54 || int || '''nodata''' || ''null'' |
|||
|- |
|||
| 0x58 || byte[0x20] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | Spline only |
|||
|- |
|||
| 0x54 || int || '''nodata''' || ''null'' |
|||
|- |
|||
| 0x58 || byte[0x20] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | Move Point only |
|||
|- |
|||
| 0x54 || int || '''nodata''' || ''null'' |
|||
|- |
|||
| 0x58 || byte[0x20] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | Mechanism only |
|||
|- |
|||
| 0x54 || int || '''nodata''' || ''null'' |
|||
|- |
|||
| 0x58 || byte[0x20] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | Pendulum only |
|||
|- |
|||
| 0x54 || int || '''nodata''' || ''null'' |
|||
|- |
|||
| 0x58 || byte[0x20] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | Conveyor Belt only |
|||
|- |
|||
| 0x54 || float || '''speed''' || |
|||
|- |
|||
| 0x58 || byte[0x20] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | Falling Platform only |
|||
|- |
|||
| 0x54 || float || '''speed''' || |
|||
|- |
|||
| 0x58 || [[AssetID]] || '''bustModelID''' || |
|||
|- |
|||
| 0x5C || byte[0x1C] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | FR only |
|||
|- |
|||
| 0x54 || float || '''fspeed''' || |
|||
|- |
|||
| 0x58 || float || '''rspeed''' || |
|||
|- |
|||
| 0x5C || float || '''ret_delay''' || |
|||
|- |
|||
| 0x60 || float || '''post_ret_delay''' || |
|||
|- |
|||
| 0x64 || byte[0x14] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | Breakaway Platform only |
|||
|- |
|||
| 0x54 || float || '''ba_delay''' || |
|||
|- |
|||
| 0x58 || [[AssetID]] || '''bustModelID''' || |
|||
|- |
|||
| 0x5C || float || '''reset_delay''' || |
|||
|- |
|||
| 0x60 || byte[0x18] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | Springboard only |
|||
|- |
|||
| 0x54 || float[3] || '''jmph''' || |
|||
|- |
|||
| 0x60 || [[AssetID]][3] || '''animID''' || |
|||
|- |
|||
| 0x6C || [[Vector3]] || '''jmpdir''' || |
|||
|- |
|||
! colspan="4" | Teeter-Totter only |
|||
|- |
|||
| 0x54 || float || '''itilt''' || |
|||
|- |
|||
| 0x58 || float || '''maxtilt''' || |
|||
|- |
|||
| 0x5C || float || '''invmass''' || |
|||
|- |
|||
| 0x60 || byte[0x18] || - || ''null'' (Padding) |
|||
|- |
|||
! colspan="4" | |
|||
|- |
|||
| 0x78 || [[Motion]] || - || |
|||
|- |
|||
! colspan="4" | Events |
|||
|- |
|||
| 0xA8 || Events[numberOfEvents] || [[EvilEngine/Events|'''Events''']] || |
|||
|} |
|||
This asset usually defines an entry for a moving object. |
|||
==Format: Battle For Bikini Bottom== |
==Format: Battle For Bikini Bottom== |
||
PLAT are [[ |
PLAT are [[EvilEngine/Assets#Entity Assets|entity assets]], so they start with their 0x54 byte header, then are followed by: |
||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Type !! Description |
! Offset !! Type !! Variable !! Description |
||
|- |
|- |
||
| 0x54 || byte || ''' |
| 0x54 || byte || '''type''' || This is always the same as the [[#Types (0x09)|Type at 0x09]] for every type except Platform, which can be one of the following subtypes: |
||
* 0 - Extend/Retract |
* 0 - Extend/Retract |
||
* 1 - Orbit |
* 1 - Orbit |
||
* 2 - Spline |
|||
* 3 - Move Point |
* 3 - Move Point |
||
* 13 - Fully Manipulable |
* 13 - Fully Manipulable |
||
|- |
|- |
||
| 0x55 || byte || |
| 0x55 || byte || '''pad''' || Padding (always 0) |
||
|- |
|- |
||
| 0x56 || |
| 0x56 || ushort || '''flags''' || |
||
*1 - Shake - Shakes when player mounts/dismounts |
|||
*0, 1, 2, 3, 8, 9 - Nonsolid |
|||
*4 |
*4 - Solid |
||
*5, 7 - Bouncy collision |
|||
|- |
|- |
||
! colspan=" |
! colspan="4" | Extend/Retract only |
||
|- |
|- |
||
| 0x58 || int || null |
| 0x58 || int || '''nodata''' || ''null'' |
||
|- |
|- |
||
| 0x5C || |
| 0x5C || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Orbit only |
|||
| 0x60 || int || null |
|||
|- |
|- |
||
| |
| 0x58 || int || '''nodata''' || ''null'' |
||
|- |
|- |
||
| 0x5C || byte[0x34] || - || ''null'' (Padding) |
|||
! colspan="3" | Mechanism only |
|||
|- |
|- |
||
! colspan="4" | Spline only |
|||
| 0x58 || int || null |
|||
|- |
|- |
||
| |
| 0x58 || int || '''nodata''' || ''null'' |
||
|- |
|- |
||
| |
| 0x5C || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Move Point only |
|||
| 0x64 || int || null |
|||
|- |
|- |
||
| 0x58 || int || '''nodata''' || |
|||
! colspan="3" | Conveyor Belt only |
|||
|- |
|- |
||
| |
| 0x5C || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Mechanism only |
|||
| 0x5C || int || null |
|||
|- |
|- |
||
| |
| 0x58 || int || '''nodata''' || ''null'' |
||
|- |
|- |
||
| |
| 0x5C || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan=" |
! colspan="4" | Pendulum only |
||
|- |
|- |
||
| 0x58 || |
| 0x58 || int || '''nodata''' || ''null'' |
||
|- |
|- |
||
| 0x5C || |
| 0x5C || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Conveyor Belt only |
|||
| 0x60 || float || '''Reset Delay''' - Time in seconds after falling down to reset back to normal position |
|||
|- |
|- |
||
| 0x58 || float || '''speed''' || The player slides along the platform's X axis at this speed (in units per second) when standing on top of it |
|||
| 0x64 || int || '''Unknown''' - Always 0 or 1 |
|||
|- |
|- |
||
| 0x5C || byte[0x34] || - || ''null'' (Padding) |
|||
! colspan="3" | Springboard only |
|||
|- |
|- |
||
! colspan="4" | Falling Platform only |
|||
| 0x58 || float || '''Bounce Height 1''' - there are 3 of these, the reason is unknown since they all seem to do the same thing and the game picks the highest one of the 3 |
|||
|- |
|- |
||
| |
| 0x58 || float || '''speed''' || |
||
|- |
|- |
||
| |
| 0x5C || [[AssetID]] || '''bustModelID''' || [[EvilEngine/MODL|Model]] ID |
||
|- |
|- |
||
| |
| 0x60 || byte[0x30] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan=" |
! colspan="4" | FR only |
||
|- |
|- |
||
| 0x58 || float || ''' |
| 0x58 || float || '''fspeed''' || |
||
|- |
|- |
||
| 0x5C || float || ''' |
| 0x5C || float || '''rspeed''' || |
||
|- |
|- |
||
| 0x60 || float || ''' |
| 0x60 || float || '''ret_delay''' || |
||
|- |
|- |
||
| 0x64 || |
| 0x64 || float || '''post_ret_delay''' || |
||
|- |
|- |
||
| 0x68 || byte[0x28] || - || ''null'' (Padding) |
|||
! colspan="3" | Paddle only |
|||
|- |
|- |
||
! colspan="4" | Breakaway Platform only |
|||
| 0x58 || float || '''Current Spin Index''' - Which spin position to start at. Zero-indexed. Range is 0 ... Number of Spins - 1. |
|||
|- |
|- |
||
| |
| 0x58 || float || '''ba_delay''' || Time in seconds to fall down after player stands on it |
||
|- |
|- |
||
| 0x5C || [[AssetID]] || '''bustModelID''' || [[EvilEngine/MODL|Model]] ID - Always 0 or 0xCE7F8131 (hash of "--Choose One--") |
|||
| 0x60 || float || '''Unknown''' - in degrees? |
|||
|- |
|- |
||
| 0x60 || float || '''reset_delay''' || Time in seconds after falling down to reset back to normal position |
|||
| 0x64 || int || null |
|||
|- |
|- |
||
| 0x64 || uint || '''breakflags''' || |
|||
! colspan="3" | |
|||
* 1 - Allow Sneak - Won't break if player is sneaking |
|||
|- |
|- |
||
| 0x68 || [ |
| 0x68 || byte[0x28] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Springboard only |
|||
| 0x6C || [[Asset ID]] || [[ANIM]] |
|||
|- |
|- |
||
| 0x58 || float[3] || '''jmph''' || Jump height array, unknown why it's an array. The game seems to pick the highest of the 3 heights in this array |
|||
| 0x70 || float || Unknown |
|||
|- |
|- |
||
| 0x64 || float || '''jmpbounce''' || Bounce height when using the Bubble Bounce (SpongeBob only) |
|||
| 0x74 || float || Launch Direction X |
|||
|- |
|- |
||
| 0x68 || [[AssetID]][3] || '''animID''' || Bounce animations? |
|||
| 0x78 || float || Launch Direction Y |
|||
|- |
|- |
||
| 0x74 || [[Vector3]] || '''jmpdir''' || Bounce direction (unit vector) |
|||
| 0x7C || float || Launch Direction Z |
|||
|- |
|- |
||
| 0x80 || |
| 0x80 || uint || '''springflags''' || |
||
*1 - Lock view (look down) |
|||
*2 - ? |
|||
*4 - Lock movement (doesn't let you move) |
|||
|- |
|- |
||
| 0x84 || |
| 0x84 || byte[0xC] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Teeter-Totter only |
|||
| 0x88 || float || Unknown |
|||
|- |
|- |
||
| |
| 0x58 || float || '''itilt''' || Initial tilt, in radians |
||
|- |
|- |
||
| |
| 0x5C || float || '''maxtilt''' || In radians |
||
|- |
|- |
||
| 0x60 || float || '''invmass''' || Determines tilt speed |
|||
| 0x94 || byte || Movement Mode: |
|||
*0 - Move only |
|||
*1 - Rotate only |
|||
*2 - Move and rotate at the same time |
|||
*3 - Move, then rotate, then wait |
|||
*4 - Move, then wait, then rotate |
|||
*5 - Faster rotate only |
|||
To do: investigate more values |
|||
|- |
|- |
||
| |
| 0x64 || byte[0x2C] || - || ''null'' (Padding) |
||
*0 - Single direction (never return) |
|||
*1 - Move back and forth |
|||
*2 - Move on event |
|||
*3 - Move on event |
|||
To do: investigate more values and difference between 2 and 3 |
|||
|- |
|- |
||
! colspan="4" | Paddle only |
|||
| 0x96 || byte || Movement Translation Direction: |
|||
*0 - X |
|||
*1 - Y |
|||
*2 - Z |
|||
*3 - Z? |
|||
To do: investigate more values and see how some PLATs move in more than one direction |
|||
|- |
|- |
||
| 0x58 || int || '''startOrient''' || Array index of Orients to start at (zero-indexed). Range is 0 ... Orient Count - 1. |
|||
| 0x97 || byte || Movement Rotation Axis: |
|||
*0 - X |
|||
*1 - Y |
|||
*2 - Z |
|||
*3 - Z? |
|||
To do: investigate more values and see how some PLATs rotate in more than one direction |
|||
|- |
|- |
||
| 0x5C || int || '''countOrient''' || Number of rotations the paddle can be in (up to 6). |
|||
| 0x98 || [[Asset ID]] || [[MVPT]] |
|||
|- |
|- |
||
| |
| 0x60 || float || '''orientLoop''' || Max rotation? (In degrees) |
||
|- |
|- |
||
| 0x64 || float[6] || '''orient''' || Array of yaw rotations (in degrees) for the paddle (up to 6). |
|||
| 0x9C || float || Movement Translation Time |
|||
|- |
|- |
||
| 0x7C || uint || '''paddleFlags''' || |
|||
| 0xA0 || float || Movement Translation Ease In Start |
|||
|- |
|- |
||
| |
| 0x80 || float || '''rotateSpeed''' || |
||
|- |
|- |
||
| |
| 0x84 || float || '''accelTime''' || |
||
|- |
|- |
||
| |
| 0x88 || float || '''decelTime''' || |
||
|- |
|- |
||
| |
| 0x8C || float || '''hubRadius''' || collision radius? |
||
|- |
|- |
||
! colspan="4" | Fully Manipulable only |
|||
| 0xB4 || float || Movement Rotation Ease In End |
|||
|- |
|- |
||
| |
| 0x58 || int || '''nothingyet''' || ''null'' |
||
|- |
|- |
||
| |
| 0x5C || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan=" |
! colspan="4" | |
||
|- |
|- |
||
| |
| 0x90 || [[Motion]] || - || |
||
|- |
|||
! colspan="4" | Events |
|||
|- |
|||
| 0xC0 || Event[numberOfEvents] || [[EvilEngine/Events|'''Events''']] || |
|||
|} |
|} |
||
==Format: The Spongebob Squarepants Movie== |
==Format: The Spongebob Squarepants Movie== |
||
PLAT are [[ |
PLAT are [[EvilEngine/Assets#Entity Assets|entity assets]], so they start with their 0x50 byte header, then are followed by: |
||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Type !! Description |
! Offset !! Type !! Variable !! Description |
||
|- |
|- |
||
| 0x50 || byte || ''' |
| 0x50 || byte || '''type''' || This is always the same as the [[#Types (0x09)|Type at 0x09]] for every type except Platform, which can be one of the following subtypes: |
||
* 0 - Extend/Retract |
* 0 - Extend/Retract |
||
* 1 - Orbit |
* 1 - Orbit |
||
* 2 - Spline |
|||
* 3 - Move Point |
* 3 - Move Point |
||
* 13 - Fully Manipulable |
* 13 - Fully Manipulable |
||
|- |
|- |
||
| 0x51 || byte || |
| 0x51 || byte || '''pad''' || ''null'' (Padding) |
||
|- |
|- |
||
| 0x52 || short || ''' |
| 0x52 || short || '''flags''' || Collision type |
||
*0, 1, 2, 3, 8, 9 - Nonsolid |
|||
*4, 6 - Normal collision |
|||
*5, 7 - Bouncy collision |
|||
|- |
|- |
||
! colspan=" |
! colspan="4" | Extend/Retract only |
||
|- |
|- |
||
| 0x54 || int || |
| 0x54 || int || '''nodata''' || |
||
|- |
|- |
||
| 0x58 || |
| 0x58 || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Orbit only |
|||
| 0x5C || int || null |
|||
|- |
|- |
||
| |
| 0x54 || int || '''nodata''' || |
||
|- |
|- |
||
| 0x58 || byte[0x34] || - || ''null'' (Padding) |
|||
! colspan="3" | Mechanism only |
|||
|- |
|- |
||
! colspan="4" | Spline only |
|||
| 0x54 || int || null |
|||
|- |
|- |
||
| |
| 0x54 || int || '''nodata''' || |
||
|- |
|- |
||
| |
| 0x58 || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Move Point only |
|||
| 0x60 || int || null |
|||
|- |
|- |
||
| 0x54 || int || '''nodata''' || |
|||
! colspan="3" | Conveyor Belt only |
|||
|- |
|- |
||
| |
| 0x58 || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Mechanism only |
|||
| 0x58 || int || null |
|||
|- |
|- |
||
| |
| 0x54 || int || '''nodata''' || |
||
|- |
|- |
||
| |
| 0x58 || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan=" |
! colspan="4" | Pendulum only |
||
|- |
|- |
||
| 0x54 || |
| 0x54 || int || '''nodata''' || |
||
|- |
|- |
||
| 0x58 || |
| 0x58 || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Conveyor Belt only |
|||
| 0x5C || float || '''Reset Delay''' - Time in seconds after falling down to reset back to normal position |
|||
|- |
|- |
||
| |
| 0x54 || float || '''speed''' || |
||
|- |
|- |
||
| 0x58 || byte[0x34] || - || ''null'' (Padding) |
|||
! colspan="3" | Springboard only |
|||
|- |
|- |
||
! colspan="4" | Falling Platform only |
|||
| 0x54 || float || '''Bounce Height 1''' - there are 3 of these, the reason is unknown since they all seem to do the same thing and the game picks the highest one of the 3 |
|||
|- |
|- |
||
| |
| 0x54 || float || '''speed''' || |
||
|- |
|- |
||
| |
| 0x58 || [[AssetID]] || '''bustModelID''' || |
||
|- |
|- |
||
| |
| 0x5C || byte[0x30] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan=" |
! colspan="4" | FR only |
||
|- |
|- |
||
| 0x54 || float || ''' |
| 0x54 || float || '''fspeed''' || |
||
|- |
|- |
||
| 0x58 || float || ''' |
| 0x58 || float || '''rspeed''' || |
||
|- |
|- |
||
| 0x5C || float || ''' |
| 0x5C || float || '''ret_delay''' || |
||
|- |
|- |
||
| 0x60 || |
| 0x60 || float || '''post_ret_delay''' || |
||
|- |
|- |
||
| 0x64 || byte[0x28] || - || ''null'' (Padding) |
|||
! colspan="3" | Paddle only |
|||
|- |
|- |
||
! colspan="4" | Breakaway Platform only |
|||
| 0x54 || float || '''Current Spin Index''' - Which spin position to start at. Zero-indexed. Range is 0 ... Number of Spins - 1. |
|||
|- |
|- |
||
| |
| 0x54 || float || '''warningTime''' || Time in seconds to fall down after player stands on it |
||
|- |
|- |
||
| |
| 0x58 || float || '''collapseIdleTime''' || Time in seconds after falling down to reset back to normal position |
||
|- |
|- |
||
| |
| 0x5C || uint || '''breakflags''' || |
||
|- |
|- |
||
| 0x60 || float || '''collisionOffTime''' || |
|||
! colspan="3" | |
|||
|- |
|- |
||
| 0x64 || [ |
| 0x64 || byte[0x28] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Springboard only |
|||
| 0x68 || [[Asset ID]] || [[ANIM]] |
|||
|- |
|- |
||
| 0x54 || float[3] || '''jmph''' || Jump height array, unknown why it's an array. The game seems to pick the highest of the 3 heights in this array |
|||
| 0x6C || float || Unknown |
|||
|- |
|- |
||
| 0x60 || float || '''jmpbounce''' || Bounce height when using the Bubble Bounce (SpongeBob only) |
|||
| 0x70 || float || Launch Direction X |
|||
|- |
|- |
||
| 0x64 || [[AssetID]][3] || '''animID''' || Bounce animations? |
|||
| 0x74 || float || Launch Direction Y |
|||
|- |
|- |
||
| 0x70 || [[Vector3]] || '''jmpdir''' || Bounce direction (unit vector) |
|||
| 0x78 || float || Launch Direction Z |
|||
|- |
|- |
||
| 0x7C || |
| 0x7C || uint || '''springflags''' || |
||
|- |
|- |
||
| 0x80 || |
| 0x80 || byte[0xC] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | Teeter-Totter only |
|||
| 0x84 || float || Unknown |
|||
|- |
|- |
||
| |
| 0x54 || float || '''itilt''' || Initial tilt, in radians |
||
|- |
|- |
||
| |
| 0x58 || float || '''maxtilt''' || In radians |
||
|- |
|- |
||
| 0x5C || float || '''invmass''' || Determines tilt speed |
|||
| 0x90 || byte || Movement Mode: |
|||
*0 - Move only |
|||
*1 - Rotate only |
|||
*2 - Move and rotate at the same time |
|||
*3 - Move, then rotate, then wait |
|||
*4 - Move, then wait, then rotate |
|||
*5 - Faster rotate only |
|||
To do: investigate more values |
|||
|- |
|- |
||
| |
| 0x60 || byte[0x28] || - || ''null'' (Padding) |
||
*0 - Single direction (never return) |
|||
*1 - Move back and forth |
|||
*2 - Move on event |
|||
*3 - Move on event |
|||
To do: investigate more values and difference between 2 and 3 |
|||
|- |
|- |
||
! colspan="4" | Paddle only |
|||
| 0x92 || byte || Movement Translation Direction: |
|||
*0 - X |
|||
*1 - Y |
|||
*2 - Z |
|||
*3 - Z? |
|||
To do: investigate more values and see how some PLATs move in more than one direction |
|||
|- |
|- |
||
| 0x54 || int || '''startOrient''' || Array index of Orients to start at (zero-indexed). Range is 0 ... Orient Count - 1. |
|||
| 0x93 || byte || Movement Rotation Axis: |
|||
*0 - X |
|||
*1 - Y |
|||
*2 - Z |
|||
*3 - Z? |
|||
To do: investigate more values and see how some PLATs rotate in more than one direction |
|||
|- |
|- |
||
| 0x58 || int || '''countOrient''' || Number of rotations the paddle can be in (up to 6). |
|||
| 0x94 || [[Asset ID]] || [[MVPT]] |
|||
|- |
|- |
||
| |
| 0x5C || float || '''orientLoop''' || Max rotation? (In degrees) |
||
|- |
|- |
||
| 0x60 || float[6] || '''orient''' || Array of yaw rotations (in degrees) for the paddle (up to 6). |
|||
| 0x9C || float || Movement Translation Time |
|||
|- |
|- |
||
| 0x78 || uint || '''paddleFlags''' || |
|||
| 0xA0 || float || Movement Translation Ease In Start |
|||
|- |
|- |
||
| |
| 0x7C || float || '''rotateSpeed''' || |
||
|- |
|- |
||
| |
| 0x80 || float || '''accelTime''' || |
||
|- |
|- |
||
| |
| 0x84 || float || '''decelTime''' || |
||
|- |
|- |
||
| |
| 0x88 || float || '''hubRadius''' || collision radius? |
||
|- |
|- |
||
! colspan="4" | Fully Manipulable only |
|||
| 0xB4 || float || Movement Rotation Ease In End |
|||
|- |
|- |
||
| |
| 0x54 || int || '''nothingyet''' || ''null'' |
||
|- |
|- |
||
| |
| 0x58 || byte[0x34] || - || ''null'' (Padding) |
||
|- |
|- |
||
! colspan="4" | |
|||
| 0xC0 || float || '''Unknown''' |
|||
|- |
|- |
||
| |
| 0x8C || [[Motion]] || - || |
||
|- |
|- |
||
! colspan=" |
! colspan="4" | Events |
||
|- |
|- |
||
| 0xC8 || Event[numberOfEvents] || ''' |
| 0xC8 || Event[numberOfEvents] || [[EvilEngine/Events|'''Events''']] || |
||
|} |
|} |
||
Line 351: | Line 439: | ||
* 0 - Platform |
* 0 - Platform |
||
* 4 - Mechanism |
* 4 - Mechanism |
||
* 5 - Pendulum |
|||
* 6 - Conveyor Belt |
* 6 - Conveyor Belt |
||
* 7 - Falling Platform |
|||
* 8 - FR? (Forward/Return?) |
|||
* 9 - Breakaway Platform |
* 9 - Breakaway Platform |
||
* 10 - Springboard |
* 10 - Springboard |
||
* 11 - Teeter-Totter |
* 11 - Teeter-Totter |
||
* 12 - Paddle |
* 12 - Paddle '''(Not present in Scooby)''' |
||
{{Assets}} |
|||
== Events == |
|||
{{AutoGameNavs}} |
|||
* Forward |
|||
* Reverse |
|||
* Run |
|||
* Arrive |
|||
[[Category:Asset]] |
[[Category:Asset]] |
Latest revision as of 08:09, 6 November 2022
PLAT | |
---|---|
Platform | |
Type | Entity |
Base Type | 0x06 |
Games used | Night of 100 Frights Battle for Bikini Bottom |
Source code | zPlatform.h |
This asset defines an entry for a moving object.
Format: Night of 100 Frights
PLAT are entity assets, so they start with their 0x50 byte header, then are followed by:
Offset | Type | Variable | Description |
---|---|---|---|
0x50 | byte | type | This is always the same as the Type at 0x09 for every type except Platform, which can be one of the following subtypes:
|
0x51 | byte | pad | null (Padding) |
0x52 | ushort | flags | |
Extend/Retract only | |||
0x54 | int | nodata | null |
0x58 | byte[0x20] | - | null (Padding) |
Orbit only | |||
0x54 | int | nodata | null |
0x58 | byte[0x20] | - | null (Padding) |
Spline only | |||
0x54 | int | nodata | null |
0x58 | byte[0x20] | - | null (Padding) |
Move Point only | |||
0x54 | int | nodata | null |
0x58 | byte[0x20] | - | null (Padding) |
Mechanism only | |||
0x54 | int | nodata | null |
0x58 | byte[0x20] | - | null (Padding) |
Pendulum only | |||
0x54 | int | nodata | null |
0x58 | byte[0x20] | - | null (Padding) |
Conveyor Belt only | |||
0x54 | float | speed | |
0x58 | byte[0x20] | - | null (Padding) |
Falling Platform only | |||
0x54 | float | speed | |
0x58 | AssetID | bustModelID | |
0x5C | byte[0x1C] | - | null (Padding) |
FR only | |||
0x54 | float | fspeed | |
0x58 | float | rspeed | |
0x5C | float | ret_delay | |
0x60 | float | post_ret_delay | |
0x64 | byte[0x14] | - | null (Padding) |
Breakaway Platform only | |||
0x54 | float | ba_delay | |
0x58 | AssetID | bustModelID | |
0x5C | float | reset_delay | |
0x60 | byte[0x18] | - | null (Padding) |
Springboard only | |||
0x54 | float[3] | jmph | |
0x60 | AssetID[3] | animID | |
0x6C | Vector3 | jmpdir | |
Teeter-Totter only | |||
0x54 | float | itilt | |
0x58 | float | maxtilt | |
0x5C | float | invmass | |
0x60 | byte[0x18] | - | null (Padding) |
0x78 | Motion | - | |
Events | |||
0xA8 | Events[numberOfEvents] | Events |
Format: Battle For Bikini Bottom
PLAT are entity assets, so they start with their 0x54 byte header, then are followed by:
Offset | Type | Variable | Description |
---|---|---|---|
0x54 | byte | type | This is always the same as the Type at 0x09 for every type except Platform, which can be one of the following subtypes:
|
0x55 | byte | pad | Padding (always 0) |
0x56 | ushort | flags |
|
Extend/Retract only | |||
0x58 | int | nodata | null |
0x5C | byte[0x34] | - | null (Padding) |
Orbit only | |||
0x58 | int | nodata | null |
0x5C | byte[0x34] | - | null (Padding) |
Spline only | |||
0x58 | int | nodata | null |
0x5C | byte[0x34] | - | null (Padding) |
Move Point only | |||
0x58 | int | nodata | |
0x5C | byte[0x34] | - | null (Padding) |
Mechanism only | |||
0x58 | int | nodata | null |
0x5C | byte[0x34] | - | null (Padding) |
Pendulum only | |||
0x58 | int | nodata | null |
0x5C | byte[0x34] | - | null (Padding) |
Conveyor Belt only | |||
0x58 | float | speed | The player slides along the platform's X axis at this speed (in units per second) when standing on top of it |
0x5C | byte[0x34] | - | null (Padding) |
Falling Platform only | |||
0x58 | float | speed | |
0x5C | AssetID | bustModelID | Model ID |
0x60 | byte[0x30] | - | null (Padding) |
FR only | |||
0x58 | float | fspeed | |
0x5C | float | rspeed | |
0x60 | float | ret_delay | |
0x64 | float | post_ret_delay | |
0x68 | byte[0x28] | - | null (Padding) |
Breakaway Platform only | |||
0x58 | float | ba_delay | Time in seconds to fall down after player stands on it |
0x5C | AssetID | bustModelID | Model ID - Always 0 or 0xCE7F8131 (hash of "--Choose One--") |
0x60 | float | reset_delay | Time in seconds after falling down to reset back to normal position |
0x64 | uint | breakflags |
|
0x68 | byte[0x28] | - | null (Padding) |
Springboard only | |||
0x58 | float[3] | jmph | Jump height array, unknown why it's an array. The game seems to pick the highest of the 3 heights in this array |
0x64 | float | jmpbounce | Bounce height when using the Bubble Bounce (SpongeBob only) |
0x68 | AssetID[3] | animID | Bounce animations? |
0x74 | Vector3 | jmpdir | Bounce direction (unit vector) |
0x80 | uint | springflags |
|
0x84 | byte[0xC] | - | null (Padding) |
Teeter-Totter only | |||
0x58 | float | itilt | Initial tilt, in radians |
0x5C | float | maxtilt | In radians |
0x60 | float | invmass | Determines tilt speed |
0x64 | byte[0x2C] | - | null (Padding) |
Paddle only | |||
0x58 | int | startOrient | Array index of Orients to start at (zero-indexed). Range is 0 ... Orient Count - 1. |
0x5C | int | countOrient | Number of rotations the paddle can be in (up to 6). |
0x60 | float | orientLoop | Max rotation? (In degrees) |
0x64 | float[6] | orient | Array of yaw rotations (in degrees) for the paddle (up to 6). |
0x7C | uint | paddleFlags | |
0x80 | float | rotateSpeed | |
0x84 | float | accelTime | |
0x88 | float | decelTime | |
0x8C | float | hubRadius | collision radius? |
Fully Manipulable only | |||
0x58 | int | nothingyet | null |
0x5C | byte[0x34] | - | null (Padding) |
0x90 | Motion | - | |
Events | |||
0xC0 | Event[numberOfEvents] | Events |
Format: The Spongebob Squarepants Movie
PLAT are entity assets, so they start with their 0x50 byte header, then are followed by:
Offset | Type | Variable | Description |
---|---|---|---|
0x50 | byte | type | This is always the same as the Type at 0x09 for every type except Platform, which can be one of the following subtypes:
|
0x51 | byte | pad | null (Padding) |
0x52 | short | flags | Collision type
|
Extend/Retract only | |||
0x54 | int | nodata | |
0x58 | byte[0x34] | - | null (Padding) |
Orbit only | |||
0x54 | int | nodata | |
0x58 | byte[0x34] | - | null (Padding) |
Spline only | |||
0x54 | int | nodata | |
0x58 | byte[0x34] | - | null (Padding) |
Move Point only | |||
0x54 | int | nodata | |
0x58 | byte[0x34] | - | null (Padding) |
Mechanism only | |||
0x54 | int | nodata | |
0x58 | byte[0x34] | - | null (Padding) |
Pendulum only | |||
0x54 | int | nodata | |
0x58 | byte[0x34] | - | null (Padding) |
Conveyor Belt only | |||
0x54 | float | speed | |
0x58 | byte[0x34] | - | null (Padding) |
Falling Platform only | |||
0x54 | float | speed | |
0x58 | AssetID | bustModelID | |
0x5C | byte[0x30] | - | null (Padding) |
FR only | |||
0x54 | float | fspeed | |
0x58 | float | rspeed | |
0x5C | float | ret_delay | |
0x60 | float | post_ret_delay | |
0x64 | byte[0x28] | - | null (Padding) |
Breakaway Platform only | |||
0x54 | float | warningTime | Time in seconds to fall down after player stands on it |
0x58 | float | collapseIdleTime | Time in seconds after falling down to reset back to normal position |
0x5C | uint | breakflags | |
0x60 | float | collisionOffTime | |
0x64 | byte[0x28] | - | null (Padding) |
Springboard only | |||
0x54 | float[3] | jmph | Jump height array, unknown why it's an array. The game seems to pick the highest of the 3 heights in this array |
0x60 | float | jmpbounce | Bounce height when using the Bubble Bounce (SpongeBob only) |
0x64 | AssetID[3] | animID | Bounce animations? |
0x70 | Vector3 | jmpdir | Bounce direction (unit vector) |
0x7C | uint | springflags | |
0x80 | byte[0xC] | - | null (Padding) |
Teeter-Totter only | |||
0x54 | float | itilt | Initial tilt, in radians |
0x58 | float | maxtilt | In radians |
0x5C | float | invmass | Determines tilt speed |
0x60 | byte[0x28] | - | null (Padding) |
Paddle only | |||
0x54 | int | startOrient | Array index of Orients to start at (zero-indexed). Range is 0 ... Orient Count - 1. |
0x58 | int | countOrient | Number of rotations the paddle can be in (up to 6). |
0x5C | float | orientLoop | Max rotation? (In degrees) |
0x60 | float[6] | orient | Array of yaw rotations (in degrees) for the paddle (up to 6). |
0x78 | uint | paddleFlags | |
0x7C | float | rotateSpeed | |
0x80 | float | accelTime | |
0x84 | float | decelTime | |
0x88 | float | hubRadius | collision radius? |
Fully Manipulable only | |||
0x54 | int | nothingyet | null |
0x58 | byte[0x34] | - | null (Padding) |
0x8C | Motion | - | |
Events | |||
0xC8 | Event[numberOfEvents] | Events |
Types (0x09)
- 0 - Platform
- 4 - Mechanism
- 5 - Pendulum
- 6 - Conveyor Belt
- 7 - Falling Platform
- 8 - FR? (Forward/Return?)
- 9 - Breakaway Platform
- 10 - Springboard
- 11 - Teeter-Totter
- 12 - Paddle (Not present in Scooby)