EvilEngine/SURF: Difference between revisions

m
Seil moved page SURF to EvilEngine/SURF
Battlepedia>Seil
m (Seil moved page SURF to EvilEngine/SURF)
 
(10 intermediate revisions by 4 users not shown)
Line 1:
<onlyinclude>
{{AssetInfobox
{{#vardefine:typeid|SURF}}<nowiki/>
|subtitle=Surface
{{#vardefine:name|Surface}}<nowiki/>
|type=[[Object]]
{{#vardefine:type|[[Base]]}}<nowiki/>
|objectid=0x1A
{{#vardefine:basetype|0x1A}}<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/zSurface.h zSurface.h]}}<nowiki/>
{{#vardefine:image|}}<nowiki/>
</onlyinclude>
{{AutoAssetInfobox}}
 
This asset defines an entry for a surface, which can be applied to other assets such as [[PLAT]], [[SIMP]], [[BOUL]] or even parts of [[JSP]] through the [[MAPR]] asset. The surface can have properties such as special materials, texture animations or patterns, and properties such as hurt, wall jump, out of bounds, prevent standing on.
 
==Format==
Surfaces are [[Object AssetBase|objectbase assets]], so they start with their 0x54 byte header, then are followed by:
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x08 || bytechar || '''Flags 1game_damage_type''' ||
* 0x00 = ?
* 0x01 = ?
Line 19 ⟶ 24:
* 0x06 = Hazard?
|-
| 0x09 || bytechar || '''Flags 2game_sticky''', || always 0
|-
| 0x0A || bytechar || '''Flags 3game_damage_flags''' ||
* 0x00 = ?
* 0x01 = ?
|-
| 0x0B || bytechar || '''Flags 4surf_type''', || always 0
|-
| 0x0C || bytechar || '''Flags 5phys_pad''', || padding (always 0null)
|-
| 0x0D || bytechar || '''Flags 6sld_start''' || probably in degrees
* 0x14 = ?
* 0x1E = ?
* 0x23 = ?
* 0x2D = ?
|-
| 0x0E || bytechar || '''Flags 7sld_stop''' || probably in degrees
* 0x0A = ?
* 0x14 = ?
* 0x28 = ?
|-
| 0x0F || bytechar || '''Flags 8phys_flags''' ||
* 0x00 = ?Slide Off Player
* 0x02 = ?Angle Player
* 0x03 = ?
* 0x04 = ?No Stand
* 0x08 = ?Out Of Bounds
* 0x10 = ?Wall Jump
* 0x20 = ?Ledge Grab
* 0x48 = ?
|-
| 0x10 || float || '''Unknownfriction''', || range = 0 to 1?
|-
| 0x14 || int[[#zSurfMatFX|zSurfMatFX]] || '''Unknownmatfx''' ||
* 0 = ?
* 1 = ?
* 8 = ?
|-
| 0x180x2C || ?[[#zSurfColorFX|zSurfColorFX]] || '''Unknowncolorfx''' (null)||
|-
| 0x1C0x34 || [[AssetID]] ([[RWTX|Texture]])uint || '''Env Map Texture?texture_anim_flags''' || 0 or 1?
|-
| 0x38 || [[#zSurfTextureAnim|zSurfTextureAnim]][2] || '''texture_anim''' ||
| 0x20 || float || '''Unknown Env Map Value'''
|-
| 0x240x50 || ?uint || '''Unknownuvfx_flags''' (null)|| related to UV anim? 0 or 1?
|-
| 0x280x54 || ?[[#zSurfUVFX|zSurfUVFX]][2] || '''Unknownuvfx''' (null)||
|-
| 0x2C0x114 || shortchar || '''Unknownon''', always|| 0 or 0x000E1
|-
| 0x2E0x115 || shortchar[3] || '''Unknownpad''', always|| 0padding
|-
| 0x300x118 || float || '''Unknownoob_delay''' ||
|-
| 0x340x11C || intfloat || '''UV Anim Mode?walljump_scale_xz''' ||
* 0 = disabled?
* 1 = enabled?
|-
| 0x380x120 || intfloat || '''Unknownwalljump_scale_y''' ||
* 0 = ?
* 2 = ?
|-
| 0x3C0x124 || [[AssetID]] ([[GRUP|Group]])float || '''Texture Group?damage_timer''' For|| UVlittle animendian
|-
| 0x400x128 || float || '''Unknowndamage_bounce''' || little endian
|-
! colspan="34" | Events
| 0x44 || ? || '''Unknown''' (null)
|-
| 0x480x12C || ?Event[numberOfEvents] || '''Unknown[[Events]]''' (null)||
|-}
 
===zSurfMatFX===
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x4C0x00 || floatuint || '''Unknownflags''' ||
* 0x140 = ?
* 0x1E1 = ?
* 0x238 = ?
|-
| 0x500x04 || int[[AssetID]] || '''UnknownbumpmapID''', related to|| UVusually anim?null
* 0 = disabled?
* 1 = enabled?
|-
| 0x540x08 || ?[[AssetID]] || '''UnknownenvmapID''' (null)||
|-
| 0x580x0C || ?float || '''Unknownshininess''' (null)||
|-
| 0x5C0x10 || float || '''Unknownbumpiness''' || usually 0
|-
| 0x600x14 || float[[AssetID]] || '''UnknowndualmapID''' || usually null
|-}
 
===zSurfColorFX===
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x640x00 || floatushort || '''Unknownflags''' || always 0x000E
|-
| 0x680x02 || ?ushort || '''Unknownmode''' (null)|| always 0
|-
| 0x6C0x04 || float || '''UV Animation Xspeed''' ||
|-}
 
===zSurfTextureAnim===
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x700x00 || floatushort || '''UV Animation Ypad''' || padding (always null)
|-
| 0x740x02 || ?ushort || '''Unknownmode''' (null)||
* 0x2D0 = ?
* 0x0A2 = ?
|-
| 0x780x04 || float[[AssetID]] || '''Unknowngroup''' ||
|-
| 0x7C0x08 || float || '''Unknownspeed''' ||
|-}
 
===zSurfUVFX===
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x800x54 || ?[22]int || '''Unknownmode''' (null)|| always 0
|-
| 0xD80x58 || float || '''Unknownrot''' || always 0
|-
| 0xDC0x5C || float || '''Unknownrot_spd''' ||
|-
| 0xE00x60 || ?[13[Vector3]] || '''Unknowntrans''' (null)|| Z is always 0
|-
| 0x1140x6C || byte[[Vector3]] || '''Flags 9trans_spd''' || Z is always 0
* 0 = ?
* 1 = ?
|-
| 0x1150x78 || byte[[Vector3]] || '''Flags 10scale''', || Z is always 0
|-
| 0x1160x84 || byte[[Vector3]] || '''Flags 11scale_spd''' || usually (0, always0, 0)
|-
| 0x1170x90 || byte[[Vector3]] || '''Flags 12min''' || usually (0, always0, 0)
|-
| 0x1180x9C || float[[Vector3]] || '''Unknownmax''' || usually (0, 0, 0)
|-
| 0x11C0xA8 || float[[Vector3]] || '''Unknownminmax_spd''' || usually (0, 0, 0)
|-
| 0x120 || float || '''Unknown'''
|-
| 0x124 || float || '''Unknown''', little endian
|-
| 0x128 || float || '''Unknown''', little endian
|-
! colspan="3" | Events
|-
| 0x12C || Event[numberOfEvents] || '''[[Events]]'''
|}
 
{{Assets}}
{{AutoGameNavs}}
 
[[Category:Asset]]