EvilEngine/PLAT: Difference between revisions

From Heavy Iron Modding
Content added Content deleted
No edit summary
No edit summary
 
(6 intermediate revisions by 3 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 [[Placeable Asset|placeable assets]], so they start with their 0x54 byte header, then are followed by:
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 || '''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:
| 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
Line 20: Line 140:
* 13 - Fully Manipulable
* 13 - Fully Manipulable
|-
|-
| 0x55 || byte || Padding (always 0)
| 0x55 || byte || '''pad''' || Padding (always 0)
|-
|-
| 0x56 || short || '''Flags'''
| 0x56 || ushort || '''flags''' ||
*1 - Shake - Shakes when player mounts/dismounts
*1 - Shake - Shakes when player mounts/dismounts
*4 - Solid
*4 - Solid
|-
|-
! colspan="3" | Platform only
! colspan="4" | Extend/Retract only
|-
|-
| 0x58 || byte[0x38] || null (no data)
| 0x58 || int || '''nodata''' || ''null''
|-
|-
| 0x5C || byte[0x34] || - || ''null'' (Padding)
! colspan="3" | Mechanism only
|-
|-
! colspan="4" | Orbit only
| 0x58 || byte[0x38] || null (no data)
|-
|-
| 0x58 || int || '''nodata''' || ''null''
! colspan="3" | Pendulum only
|-
|-
| 0x58 || byte[0x38] || null (no data)
| 0x5C || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="3" | Conveyor Belt only
! colspan="4" | Spline only
|-
|-
| 0x58 || int || '''nodata''' || ''null''
| 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
| 0x5C || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="3" | Falling Platform only
! colspan="4" | Move Point only
|-
|-
| 0x58 || float || '''Speed'''
| 0x58 || int || '''nodata''' ||
|-
|-
| 0x5C || [[Asset ID]] || '''Bust [[MODL|Model]] ID'''
| 0x5C || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="4" | Mechanism only
| 0x60 || byte[0x30] || null
|-
|-
| 0x58 || int || '''nodata''' || ''null''
! colspan="3" | FR only
|-
|-
| 0x58 || float || '''fspeed'''
| 0x5C || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="4" | Pendulum only
| 0x5C || float || '''rspeed'''
|-
|-
| 0x60 || float || '''ret_delay'''
| 0x58 || int || '''nodata''' || ''null''
|-
|-
| 0x64 || float || '''post_ret_delay'''
| 0x5C || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="4" | Conveyor Belt only
| 0x68 || byte[0x28] || null
|-
|-
| 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
! colspan="3" | Breakaway Platform only
|-
|-
| 0x5C || byte[0x34] || - || ''null'' (Padding)
| 0x58 || float || '''Breakaway Delay''' - Time in seconds to fall down after player stands on it
|-
|-
! colspan="4" | Falling Platform only
| 0x5C || [[Asset ID]] || '''Bust [[MODL|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
| 0x58 || float || '''speed''' ||
|-
|-
| 0x64 || unsigned int || '''Flags'''
| 0x5C || [[AssetID]] || '''bustModelID''' || [[EvilEngine/MODL|Model]] ID
|-
| 0x60 || byte[0x30] || - || ''null'' (Padding)
|-
! colspan="4" | FR only
|-
| 0x58 || float || '''fspeed''' ||
|-
| 0x5C || float || '''rspeed''' ||
|-
| 0x60 || float || '''ret_delay''' ||
|-
| 0x64 || float || '''post_ret_delay''' ||
|-
| 0x68 || byte[0x28] || - || ''null'' (Padding)
|-
! colspan="4" | Breakaway Platform only
|-
| 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 || '''reset_delay''' || Time in seconds after falling down to reset back to normal position
|-
| 0x64 || uint || '''breakflags''' ||
* 1 - Allow Sneak - Won't break if player is sneaking
* 1 - Allow Sneak - Won't break if player is sneaking
|-
|-
| 0x68 || byte[0x28] || null
| 0x68 || byte[0x28] || - || ''null'' (Padding)
|-
|-
! colspan="3" | Springboard only
! colspan="4" | Springboard only
|-
|-
| 0x58 || float[3] || '''Heights''' - Bounce height array, unknown why it's an array. The game seems to pick the highest of the 3 heights in this array
| 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 || '''Height (Bubble Bounce)''' - Bounce height when using the Bubble Bounce (SpongeBob only)
| 0x64 || float || '''jmpbounce''' || Bounce height when using the Bubble Bounce (SpongeBob only)
|-
|-
| 0x68 || [[AssetID]][3] || '''[[ANIM]] IDs''' - Bounce animations?
| 0x68 || [[AssetID]][3] || '''animID''' || Bounce animations?
|-
|-
| 0x74 || [[Vector3]] || '''Direction''' - Bounce direction (unit vector)
| 0x74 || [[Vector3]] || '''jmpdir''' || Bounce direction (unit vector)
|-
|-
| 0x80 || unsigned int || '''Flags'''
| 0x80 || uint || '''springflags''' ||
*1 - Lock view (look down)
*1 - Lock view (look down)
*2 - ?
*2 - ?
*4 - Lock movement (doesn't let you move)
*4 - Lock movement (doesn't let you move)
|-
|-
| 0x84 || byte[0xC] || null
| 0x84 || byte[0xC] || - || ''null'' (Padding)
|-
|-
! colspan="3" | Teeter-Totter only
! colspan="4" | Teeter-Totter only
|-
|-
| 0x58 || float || '''itilt''' - initial tilt, in radians
| 0x58 || float || '''itilt''' || Initial tilt, in radians
|-
|-
| 0x5C || float || '''Max Tilt''' - in radians
| 0x5C || float || '''maxtilt''' || In radians
|-
|-
| 0x60 || float || '''Inverse Mass''' - determines tilt speed
| 0x60 || float || '''invmass''' || Determines tilt speed
|-
|-
| 0x64 || byte[0x2C] || null
| 0x64 || byte[0x2C] || - || ''null'' (Padding)
|-
|-
! colspan="3" | Paddle only
! colspan="4" | Paddle only
|-
|-
| 0x58 || int || '''Start Orient''' - Array index of Orients to start at (zero-indexed). Range is 0 ... Orient Count - 1.
| 0x58 || int || '''startOrient''' || Array index of Orients to start at (zero-indexed). Range is 0 ... Orient Count - 1.
|-
|-
| 0x5C || int || '''Orient Count''' - Number of rotations the paddle can be in (up to 6).
| 0x5C || int || '''countOrient''' || Number of rotations the paddle can be in (up to 6).
|-
|-
| 0x60 || float || '''Orient Loop''' - Max rotation? (In degrees)
| 0x60 || float || '''orientLoop''' || Max rotation? (In degrees)
|-
|-
| 0x64 || float[6] || '''Orients''' - Array of yaw rotations (in degrees) for the paddle (up to 6).
| 0x64 || float[6] || '''orient''' || Array of yaw rotations (in degrees) for the paddle (up to 6).
|-
|-
| 0x7C || unsigned int || '''Flags'''
| 0x7C || uint || '''paddleFlags''' ||
|-
|-
| 0x80 || float || '''Rotate Speed'''
| 0x80 || float || '''rotateSpeed''' ||
|-
|-
| 0x84 || float || '''Accel Time'''
| 0x84 || float || '''accelTime''' ||
|-
|-
| 0x88 || float || '''Decel Time'''
| 0x88 || float || '''decelTime''' ||
|-
|-
| 0x8C || float || '''Hub Radius''' - collision radius?
| 0x8C || float || '''hubRadius''' || collision radius?
|-
|-
! colspan="3" | Fully Manipulable only
! colspan="4" | Fully Manipulable only
|-
|-
| 0x58 || byte[0x38] || null (no data)
| 0x58 || int || '''nothingyet''' || ''null''
|-
|-
| 0x5C || byte[0x34] || - || ''null'' (Padding)
! colspan="3" |
|-
|-
! colspan="4" |
| 0x90 || [[Motion]] || '''Motion'''
|-
|-
| 0x90 || [[Motion]] || - ||
! colspan="3" | Events
|-
|-
! colspan="4" | Events
| 0xC0 || Event[numberOfEvents] || '''[[Events]]'''
|-
| 0xC0 || Event[numberOfEvents] || [[EvilEngine/Events|'''Events''']] ||
|}
|}


==Format: The Spongebob Squarepants Movie==
==Format: The Spongebob Squarepants Movie==
PLAT are [[Placeable Asset|placeable assets]], so they start with their 0x50 byte header, then are followed by:
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 || '''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:
| 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
Line 150: Line 296:
* 13 - Fully Manipulable
* 13 - Fully Manipulable
|-
|-
| 0x51 || byte || Padding (always 0)
| 0x51 || byte || '''pad''' || ''null'' (Padding)
|-
|-
| 0x52 || short || '''Flags''' - Collision type
| 0x52 || short || '''flags''' || Collision type
*0, 1, 2, 3, 8, 9 - Nonsolid
*0, 1, 2, 3, 8, 9 - Nonsolid
*4, 6 - Normal collision
*4, 6 - Normal collision
*5, 7 - Bouncy collision
*5, 7 - Bouncy collision
|-
|-
! colspan="3" | Platform only
! colspan="4" | Extend/Retract only
|-
|-
| 0x54 || byte[0x38] || null (no data)
| 0x54 || int || '''nodata''' ||
|-
|-
| 0x58 || byte[0x34] || - || ''null'' (Padding)
! colspan="3" | Mechanism only
|-
|-
! colspan="4" | Orbit only
| 0x54 || byte[0x38] || null (no data)
|-
|-
| 0x54 || int || '''nodata''' ||
! colspan="3" | Pendulum only
|-
|-
| 0x54 || byte[0x38] || null (no data)
| 0x58 || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="3" | Conveyor Belt only
! colspan="4" | Spline only
|-
|-
| 0x54 || float || '''Speed'''
| 0x54 || int || '''nodata''' ||
|-
|-
| 0x58 || byte[0x34] || null
| 0x58 || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="3" | Falling Platform only
! colspan="4" | Move Point only
|-
|-
| 0x54 || float || '''Speed'''
| 0x54 || int || '''nodata''' ||
|-
|-
| 0x58 || [[Asset ID]] || '''Bust [[MODL|Model]] ID'''
| 0x58 || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="4" | Mechanism only
| 0x5C || byte[0x30] || null
|-
|-
| 0x54 || int || '''nodata''' ||
! colspan="3" | FR only
|-
|-
| 0x54 || float || '''fspeed'''
| 0x58 || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="4" | Pendulum only
| 0x58 || float || '''rspeed'''
|-
|-
| 0x5C || float || '''ret_delay'''
| 0x54 || int || '''nodata''' ||
|-
|-
| 0x60 || float || '''post_ret_delay'''
| 0x58 || byte[0x34] || - || ''null'' (Padding)
|-
|-
! colspan="4" | Conveyor Belt only
| 0x64 || byte[0x28] || null
|-
|-
| 0x54 || float || '''speed''' ||
! colspan="3" | Breakaway Platform only
|-
|-
| 0x58 || byte[0x34] || - || ''null'' (Padding)
| 0x54 || float || '''Breakaway Delay''' - Time in seconds to fall down after player stands on it
|-
|-
! colspan="4" | Falling Platform only
| 0x58 || [[Asset ID]] || '''Bust [[MODL|Model]] ID''' - Always 0 or 0xCE7F8131 (hash of "--Choose One--")
|-
|-
| 0x5C || float || '''Reset Delay''' - Time in seconds after falling down to reset back to normal position
| 0x54 || float || '''speed''' ||
|-
|-
| 0x60 || unsigned int || '''Flags''' - Always 0 or 1
| 0x58 || [[AssetID]] || '''bustModelID''' ||
|-
|-
| 0x64 || byte[0x28] || null
| 0x5C || byte[0x30] || - || ''null'' (Padding)
|-
|-
! colspan="3" | Springboard only
! colspan="4" | FR only
|-
|-
| 0x54 || float || '''fspeed''' ||
| 0x54 || float[3] || '''Heights''' - Bounce height array, unknown why it's an array. The game seems to pick the highest of the 3 heights in this array
|-
|-
| 0x60 || float || '''Height (Bubble Bounce)''' - Bounce height when using the Bubble Bounce (SpongeBob only)
| 0x58 || float || '''rspeed''' ||
|-
|-
| 0x64 || [[AssetID]][3] || '''[[ANIM]] IDs''' - Bounce animations?
| 0x5C || float || '''ret_delay''' ||
|-
|-
| 0x70 || [[Vector3]] || '''Direction''' - Bounce direction
| 0x60 || float || '''post_ret_delay''' ||
|-
|-
| 0x7C || unsigned int || '''Flags''' - Movement lock mode
| 0x64 || byte[0x28] || - || ''null'' (Padding)
|-
|-
! colspan="4" | Breakaway Platform only
| 0x80 || byte[0xC] || null
|-
|-
| 0x54 || float || '''warningTime''' || Time in seconds to fall down after player stands on it
! colspan="3" | Teeter-Totter only
|-
|-
| 0x54 || float || '''itilt''' - unknown, in radians
| 0x58 || float || '''collapseIdleTime''' || Time in seconds after falling down to reset back to normal position
|-
|-
| 0x58 || float || '''Max Tilt''' - in radians
| 0x5C || uint || '''breakflags''' ||
|-
|-
| 0x5C || float || '''Inverse Mass''' - determines tilt speed
| 0x60 || float || '''collisionOffTime''' ||
|-
|-
| 0x60 || byte[0x2C] || null
| 0x64 || byte[0x28] || - || ''null'' (Padding)
|-
|-
! colspan="3" | Paddle only
! colspan="4" | Springboard only
|-
|-
| 0x54 || int || '''Start Orient''' - Array index of Orients to start at (zero-indexed). Range is 0 ... Orient Count - 1.
| 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
|-
|-
| 0x58 || int || '''Orient Count''' - Number of rotations the paddle can be in (up to 6).
| 0x60 || float || '''jmpbounce''' || Bounce height when using the Bubble Bounce (SpongeBob only)
|-
|-
| 0x5C || float || '''Orient Loop''' - Max rotation? (In degrees)
| 0x64 || [[AssetID]][3] || '''animID''' || Bounce animations?
|-
|-
| 0x60 || float[6] || '''Orients''' - Array of yaw rotations (in degrees) for the paddle (up to 6).
| 0x70 || [[Vector3]] || '''jmpdir''' || Bounce direction (unit vector)
|-
|-
| 0x78 || unsigned int || '''Flags'''
| 0x7C || uint || '''springflags''' ||
|-
|-
| 0x7C || float || '''Rotate Speed'''
| 0x80 || byte[0xC] || - || ''null'' (Padding)
|-
|-
! colspan="4" | Teeter-Totter only
| 0x80 || float || '''Accel Time'''
|-
|-
| 0x84 || float || '''Decel Time'''
| 0x54 || float || '''itilt''' || Initial tilt, in radians
|-
|-
| 0x88 || float || '''Hub Radius''' - collision radius?
| 0x58 || float || '''maxtilt''' || In radians
|-
|-
| 0x5C || float || '''invmass''' || Determines tilt speed
! colspan="3" | Fully Manipulable only
|-
|-
| 0x54 || byte[0x38] || null (no data)
| 0x60 || byte[0x28] || - || ''null'' (Padding)
|-
|-
! colspan="3" |
! colspan="4" | Paddle only
|-
|-
| 0x54 || int || '''startOrient''' || Array index of Orients to start at (zero-indexed). Range is 0 ... Orient Count - 1.
| 0x8C || [[Motion]] || '''Motion'''
|-
|-
| 0x58 || int || '''countOrient''' || Number of rotations the paddle can be in (up to 6).
! colspan="3" | Events
|-
|-
| 0x5C || float || '''orientLoop''' || Max rotation? (In degrees)
| 0xC8 || Event[numberOfEvents] || '''[[Events]]'''
|-
| 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?
|-
! colspan="4" | Fully Manipulable only
|-
| 0x54 || int || '''nothingyet''' || ''null''
|-
| 0x58 || byte[0x34] || - || ''null'' (Padding)
|-
! colspan="4" |
|-
| 0x8C || [[Motion]] || - ||
|-
! colspan="4" | Events
|-
| 0xC8 || Event[numberOfEvents] || [[EvilEngine/Events|'''Events''']] ||
|}
|}


Line 267: Line 439:
* 0 - Platform
* 0 - Platform
* 4 - Mechanism
* 4 - Mechanism
* 5 - Pendulum? (unused)
* 5 - Pendulum
* 6 - Conveyor Belt
* 6 - Conveyor Belt
* 7 - Falling Platform? (unused)
* 7 - Falling Platform
* 8 - FR? (Forward/Return?) (unused)
* 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)'''
* 13 - Fully Manipulable

== Events ==
* Forward
* Reverse
* Run
* Arrive


{{Assets}}
{{Assets}}
{{AutoGameNavs}}


[[Category:Asset]]
[[Category:Asset]]

Latest revision as of 08:09, 6 November 2022

PLAT
Platform
TypeEntity
Base Type0x06
Games usedNight of 100 Frights

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

Ratatouille Prototype
Source codezPlatform.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:
  • 0 - Extend/Retract
  • 1 - Orbit
  • 2 - Spline
  • 3 - Move Point
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:
  • 0 - Extend/Retract
  • 1 - Orbit
  • 2 - Spline
  • 3 - Move Point
  • 13 - Fully Manipulable
0x55 byte pad Padding (always 0)
0x56 ushort flags
  • 1 - Shake - Shakes when player mounts/dismounts
  • 4 - Solid
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
  • 1 - Allow Sneak - Won't break if player is sneaking
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
  • 1 - Lock view (look down)
  • 2 - ?
  • 4 - Lock movement (doesn't let you move)
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:
  • 0 - Extend/Retract
  • 1 - Orbit
  • 2 - Spline
  • 3 - Move Point
  • 13 - Fully Manipulable
0x51 byte pad null (Padding)
0x52 short flags Collision type
  • 0, 1, 2, 3, 8, 9 - Nonsolid
  • 4, 6 - Normal collision
  • 5, 7 - Bouncy collision
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)