.include "macros.inc"
.include "model_ids.inc"

# see include/object_lists.h for comments

# TODO: Use C preprocessor define instead of redefining the lists seperately.
.set OBJ_LIST_PLAYER,         0
.set OBJ_LIST_UNUSED_1,       1
.set OBJ_LIST_DESTRUCTIVE,    2
.set OBJ_LIST_UNUSED_3,       3
.set OBJ_LIST_GENACTOR,       4
.set OBJ_LIST_PUSHABLE,       5
.set OBJ_LIST_LEVEL,          6
.set OBJ_LIST_UNUSED_7,       7
.set OBJ_LIST_DEFAULT,        8
.set OBJ_LIST_SURFACE,        9
.set OBJ_LIST_POLELIKE,       10
.set OBJ_LIST_SPAWNER,        11
.set OBJ_LIST_UNIMPORTANT,    12

# TODO: Use C preprocessor define instead of redefining the lists seperately. (object_constants.h)
.set OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE,         (1 <<  0) # 0x0001
.set OBJ_FLAG_MOVE_XZ_USING_FVEL,               (1 <<  1) # 0x0002
.set OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL,         (1 <<  2) # 0x0004
.set OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW,         (1 <<  3) # 0x0008
.set OBJ_FLAG_0010,                             (1 <<  4) # 0x0010
.set OBJ_FLAG_0020,                             (1 <<  5) # 0x0020
.set OBJ_FLAG_COMPUTE_DIST_TO_MARIO,            (1 <<  6) # 0x0040
.set OBJ_FLAG_ACTIVE_FROM_AFAR,                 (1 <<  7) # 0x0080
.set OBJ_FLAG_0100,                             (1 <<  8) # 0x0100
.set OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT,     (1 <<  9) # 0x0200
.set OBJ_FLAG_HOLDABLE,                         (1 << 10) # 0x0400
.set OBJ_FLAG_0800,                             (1 << 11) # 0x0800
.set OBJ_FLAG_1000,                             (1 << 12) # 0x1000
.set OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO,           (1 << 13) # 0x2000
.set OBJ_FLAG_PERSISTENT_RESPAWN,               (1 << 14) # 0x4000
.set OBJ_FLAG_8000,                             (1 << 15) # 0x8000

# TODO: Use C preprocessor define instead of redefining the lists seperately. (object_fields.h)
.set objUnk88, 0x00
.set objFlags, 0x01
.set objDialogResponse, 0x02
.set objUnk94, 0x03
.set objUnk98, 0x04
.set objIntangibleTimer, 0x05
.set objPosX, 0x06
.set objPosY, 0x07
.set objPosZ, 0x08
.set objVelX, 0x09
.set objVelY, 0x0A
.set objVelZ, 0x0B
.set objForwardVel, 0x0C
.set objUnkBC, 0x0D
.set objUnkC0, 0x0E
.set objMoveAnglePitch, 0x0F
.set objMoveAngleYaw, 0x10
.set objMoveAngleRoll, 0x11
.set objFaceAnglePitch, 0x12
.set objFaceAngleYaw, 0x13
.set objFaceAngleRoll, 0x14
.set objGraphYOffset, 0x15
.set objUnkE0, 0x16
.set objGravity, 0x17
.set objFloorHeight, 0x18
.set objMoveFlags, 0x19
.set objAnimState, 0x1A
# object-specific fields
.set objVarF4, 0x1B
.set objVarF8, 0x1C
.set objVarFC, 0x1D
.set objVar100, 0x1E
.set objVar104, 0x1F
.set objVar108, 0x20
.set objVar10C, 0x21
.set objVar110, 0x22
#
.set objAngleVelPitch, 0x23
.set objAngleVelYaw, 0x24
.set objAngleVelRoll, 0x25
.set objAnimations, 0x26
.set objHeldState, 0x27
.set objWallHitboxRadius, 0x28
.set objDragStrength, 0x29
.set objInteractType, 0x2A
.set objInteractStatus, 0x2B
.set objParentRelativePosX, 0x2C
.set objParentRelativePosY, 0x2D
.set objParentRelativePosZ, 0x2E
.set objBehParams2ndByte, 0x2F
.set objUnk148, 0x30
.set objAction, 0x31
.set objSubAction, 0x32
.set objTimer, 0x33
.set objBounce, 0x34
.set objDistanceToMario, 0x35
.set objAngleToMario, 0x36
.set objHomeX, 0x37
.set objHomeY, 0x38
.set objHomeZ, 0x39
.set objFriction, 0x3A
.set objBuoyancy, 0x3B
.set objSoundStateID, 0x3C
.set objOpacity, 0x3D
.set objDamageOrCoinValue, 0x3E
.set objHealth, 0x3F
.set objBehParams, 0x40
.set objPrevAction, 0x41
.set objUnk190, 0x42
.set objCollisionDistance, 0x43
.set objNumLootCoins, 0x44
.set objDrawingDistance, 0x45
.set objRoom, 0x46
.set objUnk1A4, 0x47
.set objUnk1A8, 0x48
# Object specific, only used in this file by big boos (where it is oBigBooNumMinionBoosKilled)
.set objVar1AC, 0x49
#
.set objUnk1B0, 0x4A
.set objWallAngle, 0x4B
.set objFloorType, 0x4C
.set objUnk1BC, 0x4D
.set objFloor, 0x4E
.set objDeathSound, 0x4F

# Interactions only used
.set INTERACT_DAMAGE,          0x00000008
.set INTERACT_POLE,            0x00000040
.set INTERACT_STAR_OR_KEY,     0x00001000
.set INTERACT_WATER_RING,      0x00010000
.set INTERACT_FLAME,           0x00040000
.set INTERACT_TEXT,            0x00800000
.set INTERACT_IGLOO_BARRIER,   0x40000000

.macro bytes4 byte1, byte2, byte3, byte4
    .word ((\byte1 & 0xFF) << 24) | ((\byte2 & 0xFF) << 16) | ((\byte3 & 0xFF) << 8) | (\byte4 & 0xFF)
.endm

.macro begin arg1
    bytes4 0x00, \arg1, 0x00, 0x00
.endm

.macro delay frames
    .word (0x01 << 24) | (0x00 << 16) | (\frames & 0xFFFF)
.endm

.macro call addr
    bytes4 0x02, 0x00, 0x00, 0x00
    .word \addr
.endm

.macro return
    bytes4 0x03, 0x00, 0x00, 0x00
.endm

.macro goto addr
    bytes4 0x04, 0x00, 0x00, 0x00
    .word \addr
.endm

.macro begin_repeat times
    .word (0x05 << 24) | (0x00 << 16) | (\times & 0xFFFF)
.endm

.macro end_repeat
    bytes4 0x06, 0x00, 0x00, 0x00
.endm

.macro end_repeat_nobreak
    bytes4 0x07, 0x00, 0x00, 0x00
.endm

.macro begin_loop
    bytes4 0x08, 0x00, 0x00, 0x00
.endm

.macro end_loop
    bytes4 0x09, 0x00, 0x00, 0x00
.endm

.macro break
    bytes4 0x0A, 0x00, 0x00, 0x00
.endm

.macro callnative addr
    bytes4 0x0C, 0x00, 0x00, 0x00
    .word \addr
.endm

.macro obj_add_float field, value
    .word (0x0D << 24) | ((\field & 0xFF) << 16) | (\value & 0xFFFF)
.endm

.macro obj_set_float field, value
    .word (0x0E << 24) | ((\field & 0xFF) << 16) | (\value & 0xFFFF)
.endm

.macro obj_add_int field, value
    .word (0x0F << 24) | ((\field & 0xFF) << 16) | (\value & 0xFFFF)
.endm

.macro obj_set_int field, value
    .word (0x10 << 24) | ((\field & 0xFF) << 16) | (\value & 0xFFFF)
.endm

.macro obj_or_int field, value
    .word (0x11 << 24) | ((\field & 0xFF) << 16) | (\value & 0xFFFF)
.endm

.macro obj_bit_clear_int field, value
    .word (0x12 << 24) | ((\field & 0xFF) << 16) | (\value & 0xFFFF)
.endm

.macro obj_set_int_rand_rshift field, min, rshift
    .word (0x13 << 24) | ((\field & 0xFF) << 16) | (\min & 0xFFFF)
    .word ((\rshift & 0xFFFF) << 16) | 0x0000
.endm

.macro obj_set_float_rand field, min, max
    .word (0x14 << 24) | ((\field & 0xFF) << 16) | (\min & 0xFFFF)
    .word ((\max & 0xFFFF) << 16) | 0x0000
.endm

.macro obj_set_int_rand field, min, max
    .word (0x15 << 24) | ((\field & 0xFF) << 16) | (\min & 0xFFFF)
    .word ((\max & 0xFFFF) << 16) | 0x0000
.endm

.macro obj_add_float_rand field, min, max
    .word (0x16 << 24) | ((\field & 0xFF) << 16) | (\min & 0xFFFF)
    .word ((\max & 0xFFFF) << 16) | 0x0000
.endm

.macro obj_add_int_rand_rshift field, min, rshift
    .word (0x17 << 24) | ((\field & 0xFF) << 16) | (\min & 0xFFFF)
    .word ((\rshift & 0xFFFF) << 16) | 0x0000
.endm

.macro geo_layout model_id
    .word (0x1B << 24) | (0x00 << 16) | (\model_id & 0xFFFF)
.endm

.macro obj_child model_id, beh
    bytes4 0x1C, 0x00, 0x00, 0x00
    .word \model_id, \beh
.endm

.macro deactivate
    bytes4 0x1D, 0x00, 0x00, 0x00
.endm

.macro drop_floor
    bytes4 0x1E, 0x00, 0x00, 0x00
.endm

.macro obj_sum_float fieldDest, fieldSrc1, fieldSrc2
    bytes4 0x1F, \fieldDest, \fieldSrc1, \fieldSrc2
.endm

.macro obj_sum_int fieldDest, fieldSrc1, fieldSrc2
    bytes4 0x20, \fieldDest, \fieldSrc1, \fieldSrc2
.endm

.macro billboard
    bytes4 0x21, 0x00, 0x00, 0x00
.endm

.macro unhide
    bytes4 0x22, 0x00, 0x00, 0x00
.endm

.macro set_hitbox radius, height
    bytes4 0x23, 0x00, 0x00, 0x00
    .word ((\radius & 0xFFFF) << 16) | (\height & 0xFFFF)
.endm

.macro delay_var field
    bytes4 0x25, \field, 0x00, 0x00
.endm

.macro obj_set_int32 field, value
    bytes4 0x27, \field, 0x00, 0x00
    .word \value
.endm

.macro animate animIndex
    bytes4 0x28, \animIndex, 0x00, 0x00
.endm

.macro obj_child_param behParam, model_id, beh
    .word (0x29 << 24) | (0x00 << 16) | (\behParam & 0xFFFF)
    .word \model_id
    .word \beh
.endm

.macro collision_data addr
    bytes4 0x2A, 0x00, 0x00, 0x00
    .word \addr
.endm

.macro collision_sphere radius, height, arg3
    bytes4 0x2B, 0x00, 0x00, 0x00
    .word ((\radius & 0xFFFF) << 16) | (\height & 0xFFFF)
    .word ((\arg3 & 0xFFFF) << 16) | 0x0000
.endm

.macro obj_spawn model_id, beh
    bytes4 0x2C, 0x00, 0x00, 0x00
    .word \model_id
    .word \beh
.endm

.macro obj_set_pos
    bytes4 0x2D, 0x00, 0x00, 0x00
.endm

.macro obj_set_float2 arg1, arg2
    bytes4 0x2E, 0x00, 0x00, 0x00
    .word ((\arg1 & 0xFFFF) << 16) | (\arg2 & 0xFFFF)
.endm

.macro interact_type type
    bytes4 0x2F, 0x00, 0x00, 0x00
    .word \type
.endm

.macro gravity arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8
    bytes4 0x30, 0x00, 0x00, 0x00
    .word ((\arg1 & 0xFFFF) << 16) | (\arg2 & 0xFFFF)
    .word ((\arg3 & 0xFFFF) << 16) | (\arg4 & 0xFFFF)
    .word ((\arg5 & 0xFFFF) << 16) | (\arg6 & 0xFFFF)
    .word ((\arg7 & 0xFFFF) << 16) | (\arg8 & 0xFFFF)
.endm

.macro scale percent
    .word (0x32 << 24) | (0x00 << 16) | (\percent & 0xFFFF)
.endm

.macro obj_bit_clear_int32 field, value
    bytes4 0x33, \field, 0x00, 0x00
    .word \value
.endm

.macro text_anim_rate field, arg2
    .word (0x34 << 24) | ((\field & 0xFF) << 16) | (\arg2 & 0xFFFF)
.endm

.macro graph_clear
    bytes4 0x35, 0x00, 0x00, 0x00
.endm

.macro spawn_addr arg1
    bytes4 0x37, 0x00, 0x00, 0x00
    .word \arg1
.endm

# TODO: Go through these and rename a bunch of them, some of these names are really bad.

.section .behavior, "a"


glabel behavior_data
glabel bhvStarDoor # 0000
    begin OBJ_LIST_SURFACE
    obj_set_int objInteractType, 4
    collision_data inside_castle_seg7_collision_star_door
    obj_set_int objUnk190, 32
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    set_hitbox 80, 100
    obj_set_pos
    obj_set_float objDrawingDistance, 20000
    callnative bhv_door_init
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_star_door_loop
        callnative bhv_star_door_loop_2
        callnative load_object_collision_model
    end_loop

glabel bhvMrI # 0054
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_child MODEL_MR_I_IRIS, bhvMrIBody
    geo_layout MODEL_MR_I
    billboard
    callnative bhv_init_room
    begin_loop
        callnative bhv_mr_i_loop
    end_loop

glabel bhvMrIBody # 008C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_init_room
    begin_loop
        callnative bhv_mr_i_body_loop
    end_loop

glabel bhvMrIParticle # 00AC
    begin OBJ_LIST_LEVEL
    billboard
    obj_or_int objFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objIntangibleTimer, 0
    set_hitbox 50, 50
    obj_set_int objDamageOrCoinValue, 1
    obj_set_int objInteractType, 8
    gravity 0x001E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
    callnative bhv_init_room
    begin_loop
        callnative bhv_mr_i_particle_loop
    end_loop

glabel bhvPurpleParticle # 00F8
    begin OBJ_LIST_UNIMPORTANT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_repeat 10
        callnative bhv_piranha_particle_loop
    end_repeat
    deactivate

glabel bhvGiantPole # 0118
    begin OBJ_LIST_POLELIKE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objInteractType, 0x40
    set_hitbox 0x0050, 0x0834
    obj_set_pos
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_giant_pole_loop
    end_loop

glabel bhvPoleGrabbing # 0144
    begin OBJ_LIST_POLELIKE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objInteractType, 0x40
    set_hitbox 0x0050, 0x05DC
    callnative bhv_pole_init
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative BehClimbDetectLoop
    end_loop

glabel bhvThiHugeIslandTop # 0174
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data thi_seg7_collision_top_trap
    begin_loop
        callnative bhv_thi_huge_island_top_loop
    end_loop

glabel bhvThiTinyIslandTop # 0194
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_thi_tiny_island_top_loop
    end_loop

glabel bhvCapSwitchBase # 01AC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data capswitch_collision_05003448
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvCapSwitch # 01CC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data capswitch_collision_050033D0
    begin_loop
        callnative bhv_cap_switch_loop
        callnative load_object_collision_model
    end_loop

glabel bhvKingBobomb # 01F4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, king_bobomb_seg5_anims_0500FE30
    obj_set_int objInteractType, 0x02
    set_hitbox 0x0064, 0x0064
    gravity 0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_int objIntangibleTimer, 0
    drop_floor
    obj_set_pos
    obj_spawn MODEL_NONE, bhvBobombAnchorMario
    obj_set_int objHealth, 0x0003
    obj_set_int objDamageOrCoinValue, 1
    begin_loop
        callnative bhv_king_bobomb_loop
    end_loop

glabel bhvBobombAnchorMario # 0254
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_float objParentRelativePosX, 0x0064
    obj_set_float objParentRelativePosZ, 0x0096
    begin_loop
        callnative bhv_bobomb_anchor_mario_loop
    end_loop

glabel bhvBetaChestBottom # 0278
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    callnative bhv_beta_chest_bottom_init
    begin_loop
        callnative bhv_beta_chest_bottom_loop
    end_loop

glabel bhvBetaChestLid # 029C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    begin_loop
        callnative bhv_beta_chest_lid_loop
    end_loop

glabel bhvBubbleMario # 02B8
    begin OBJ_LIST_DEFAULT
    graph_clear
    obj_set_int_rand objVarF4, 0x0002, 0x0009
    delay_var objVarF4
    obj_child MODEL_BUBBLE, bhvSmallWaterWave
    obj_bit_clear_int32 objUnkE0, 0x00000020
    deactivate

glabel bhvBubbleMaybe # 02E4
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    callnative bhv_bubble_wave_init
    obj_set_float_rand objVarF4, 0xFFB5, 0x0096
    obj_set_float_rand objVarF8, 0xFFB5, 0x0096
    obj_set_float_rand objVarFC, 0xFFB5, 0x0096
    obj_sum_float objPosX, objPosX, objVarF4
    obj_sum_float objPosZ, objPosZ, objVarF8
    obj_sum_float objPosY, objPosY, objVarFC
    obj_set_int objAnimState, -1
    begin_repeat 60
        obj_add_int objAnimState, 1
        callnative bhv_bubble_maybe_loop
    end_repeat
    deactivate

glabel bhvSmallWaterWave # 0338
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    callnative bhv_bubble_wave_init
    obj_set_float_rand objVarF4, 0xFFCE, 0x0064
    obj_set_float_rand objVarF8, 0xFFCE, 0x0064
    obj_sum_float objPosX, objPosX, objVarF4
    obj_sum_float objPosZ, objPosZ, objVarF8
    obj_set_float_rand objVarFC, 0x0000, 0x0032
    obj_sum_float objPosY, objPosY, objVarFC
    obj_set_int objAnimState, -1
    call bhvSmallWaterWave398
    begin_repeat 60
        call bhvSmallWaterWave398
        callnative bhv_small_water_wave_loop
    end_repeat
    deactivate

glabel bhvSmallWaterWave398 # 0398
    obj_add_int objAnimState, 1
    obj_add_float objPosY, 7
    obj_set_float_rand objVarF4, -2, 5
    obj_set_float_rand objVarF8, -2, 5
    obj_sum_float objPosX, objPosX, objVarF4
    obj_sum_float objPosZ, objPosZ, objVarF8
    return

glabel bhvWaterAirBubble # 03BC
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    collision_sphere 0x0190, 0x0096, 0xFF6A
    obj_set_int objIntangibleTimer, 0
    interact_type INTERACT_WATER_RING
    obj_set_int objDamageOrCoinValue, 5
    callnative bhv_water_air_bubble_init
    obj_set_int objAnimState, -1
    begin_loop
        callnative bhv_water_air_bubble_loop
    end_loop

glabel bhvSmallParticle # 0400
    begin OBJ_LIST_UNIMPORTANT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_particle_init
    begin_repeat 70
        callnative bhv_particle_loop
    end_repeat
    deactivate

glabel bhvWaterWaves # 0428
    begin OBJ_LIST_DEFAULT
    obj_bit_clear_int32 objUnkE0, 0x00000200
    graph_clear
    callnative bhv_water_waves_init
    deactivate

glabel bhvSmallParticleSnow # 0444
    begin OBJ_LIST_UNIMPORTANT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_particle_init
    begin_repeat 30
        callnative bhv_particle_loop
    end_repeat
    deactivate

glabel bhvSmallParticleBubbles # 046C
    begin OBJ_LIST_UNIMPORTANT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_particle_init
    begin_repeat 70
        callnative bhv_small_bubbles_loop
    end_repeat
    deactivate

glabel bhvFishGroup # 0494
    begin OBJ_LIST_DEFAULT
    begin_loop
        callnative bhv_fish_group_loop
    end_loop

glabel bhvCannon # 04A8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_child MODEL_CANNON_BARREL, bhvCannonBarrel
    obj_set_int objInteractType, 0x4000
    obj_add_float objPosY, -340
    obj_set_pos
    set_hitbox 0x0096, 0x0096
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_cannon_base_loop
    end_loop

glabel bhvCannonBarrel # 04E4
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    begin_loop
        callnative bhv_cannon_barrel_loop
    end_loop

glabel bhvCannonBaseUnused # 0500
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_int objAnimState, -1
    begin_repeat 8
        callnative bhv_cannon_base_unused_loop
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvChuckya # 0528
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, chuckya_seg8_anims_0800C070
    animate 0x05
    obj_set_int objInteractType, 0x02
    set_hitbox 0x0096, 0x0064
    gravity 0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_spawn MODEL_NONE, bhvChuckyaAnchorMario
    obj_set_int objNumLootCoins, 5
    obj_set_int objIntangibleTimer, 0
    obj_set_pos
    begin_loop
        callnative bhv_chuckya_loop
    end_loop

glabel bhvChuckyaAnchorMario # 0584
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_float objParentRelativePosY, 0xFFC4
    obj_set_float objParentRelativePosZ, 0x0096
    begin_loop
        callnative bhv_chuckya_anchor_mario_loop
    end_loop

glabel bhvUnused05A8 # 05A8
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    break

glabel bhvRotatingPlatform # 05B4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    begin_loop
        callnative bhv_rotating_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvTower # 05D8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data wf_seg7_collision_tower
    obj_set_float objCollisionDistance, 0x0BB8
    obj_set_float objDrawingDistance, 0x4E20
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvBulletBillCannon # 0600
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data wf_seg7_collision_bullet_bill_cannon
    obj_set_float objCollisionDistance, 0x012C
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWfBreakableWallRight # 0624
    begin OBJ_LIST_SURFACE
    collision_data wf_seg7_collision_breakable_wall
    goto .L13000644

glabel bhvWfBreakableWallLeft # 0638
    begin OBJ_LIST_SURFACE
    collision_data wf_seg7_collision_breakable_wall_2
.L13000644: # 0644
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    set_hitbox 0x012C, 0x0190
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_wf_breakable_wall_loop
        callnative load_object_collision_model
    end_loop

glabel bhvKickableBoard # 066C
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wf_seg7_collision_kickable_board
    set_hitbox 0x0064, 0x04B0
    obj_set_float2 0x0001, 0x0001
    obj_set_float objCollisionDistance, 0x05DC
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_kickable_board_loop
    end_loop

glabel bhvTowerDoor # 06A4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wf_seg7_collision_tower_door
    set_hitbox 0x0064, 0x0064
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_tower_door_loop
        callnative load_object_collision_model
    end_loop

glabel bhvRotatingCounterClockwise # 06D8
    begin OBJ_LIST_DEFAULT
    break

glabel bhvWfRotatingWoodenPlatform # 06E0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data wf_seg7_collision_clocklike_rotation
    begin_loop
        callnative bhv_wf_rotating_wooden_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvKoopaShellUnderwater # 0708
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO  | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_koopa_shell_underwater_loop
    end_loop

glabel bhvExitPodiumWarp # 0720
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objInteractType, 0x2000
    drop_floor
    obj_set_float objCollisionDistance, 0x1F40
    collision_data ttm_seg7_collision_podium_warp
    obj_set_int objIntangibleTimer, 0
    set_hitbox 0x0032, 0x0032
    begin_loop
        callnative load_object_collision_model
        obj_set_int objInteractStatus, 0
    end_loop

glabel bhvFadingWarp # 075C
    begin OBJ_LIST_LEVEL
    obj_set_int objUnk190, 0x0001
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objInteractType, 0x2000
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative BehFadingWarpLoop
    end_loop

glabel bhvWarp # 0780
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objInteractType, 0x2000
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_warp_loop
    end_loop

glabel bhvWarpPipe # 07A0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objInteractType, 0x2000
    collision_data warp_pipe_seg3_collision_03009AC8
    obj_set_float objDrawingDistance, 0x3E80
    obj_set_int objIntangibleTimer, 0
    set_hitbox 0x0046, 0x0032
    begin_loop
        callnative bhv_warp_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWhitePuffExplosion # 07DC
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_loop
        callnative bhv_white_puff_exploding_loop
    end_loop

glabel bhvSpawnedStar # 07F8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objBehParams2ndByte, 1
    goto .L13000814

glabel bhvUnused080C # 080C
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
.L13000814: # 0814
    obj_set_pos
    callnative bhv_unused_080c_init
    begin_loop
        callnative bhv_unused_080c_loop
    end_loop

glabel bhvMrIBlueCoin # 0830
    begin OBJ_LIST_LEVEL
    obj_set_int objInteractType, 0x10
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_int objIntangibleTimer, 0
    obj_set_float objVar110, 0x0014
    obj_set_int objAnimState, -1
    gravity 0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_coin_init
    obj_set_int objDamageOrCoinValue, 0x0005
    set_hitbox 0x0078, 0x0040
    begin_loop
        callnative bhv_coin_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvCoinInsideBoo # 0888
    begin OBJ_LIST_LEVEL
    set_hitbox 0x0064, 0x0040
    obj_set_int objInteractType, 0x10
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    gravity 0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    billboard
    callnative bhv_init_room
    begin_loop
        callnative bhv_coin_inside_boo_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvCoinFormationSpawn # 08D0
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_loop
        callnative bhv_coin_formation_spawn_loop
    end_loop

glabel bhvCoinFormation # 08EC
    begin OBJ_LIST_SPAWNER
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_coin_formation_init
    begin_loop
        callnative bhv_coin_formation_loop
    end_loop

glabel bhvOneCoin # 090C
    begin OBJ_LIST_LEVEL
    obj_set_int objBehParams2ndByte, 1
    goto .L13000920

glabel bhvYellowCoin # 091C
    begin OBJ_LIST_LEVEL
.L13000920: # 0920
    billboard
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_yellow_coin_init
    begin_loop
        callnative bhv_yellow_coin_loop
    end_loop

glabel bhvTemporaryYellowCoin # 0940
    begin OBJ_LIST_LEVEL
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_yellow_coin_init
    begin_loop
        callnative bhv_temp_coin_loop
    end_loop

glabel bhvThreeCoinsSpawn # 0964
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_repeat 3
        obj_child MODEL_YELLOW_COIN, bhvSingleCoinGetsSpawned
    end_repeat
    deactivate

glabel bhvTenCoinsSpawn # 0984
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_repeat 10
        obj_child MODEL_YELLOW_COIN, bhvSingleCoinGetsSpawned
    end_repeat
    deactivate

glabel bhvSingleCoinGetsSpawned # 09A4
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    callnative bhv_coin_init
    gravity 0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_coin_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvCoinSparkles # 09E0
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_float objGraphYOffset, 25
    obj_set_int objAnimState, -1
    begin_repeat 8
        obj_add_int objAnimState, 1
    end_repeat
    begin_repeat 2
        callnative bhv_coin_sparkles_loop
    end_repeat
    deactivate

glabel bhvGoldenCoinSparkles # 0A14
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    graph_clear
    begin_repeat 3
        callnative bhv_golden_coin_sparkles_loop
    end_repeat
    deactivate

glabel bhvWallTinyStarParticle # 0A34
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_repeat 10
        callnative bhv_wall_tiny_star_particle_loop
    end_repeat
    deactivate

glabel bhvWallTinyStarParticleSpawn # 0A54
    begin OBJ_LIST_DEFAULT
    graph_clear
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_bit_clear_int32 objUnkE0, 0x00040000
    callnative bhv_tiny_star_particles_init
    delay 1
    deactivate

glabel bhvPoundTinyStarParticle # 0A78
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_repeat 10
        callnative bhv_pound_tiny_star_particle_loop
    end_repeat
    deactivate

glabel bhvPoundTinyStarParticleSpawn # 0A98
    begin OBJ_LIST_DEFAULT
    graph_clear
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_bit_clear_int32 objUnkE0, 0x00000010
    callnative bhv_pound_tiny_star_particle_init
    delay 1
    deactivate

glabel bhvPunchTinyTriangle # 0ABC
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_loop
        callnative bhv_punch_tiny_triangle_loop
    end_loop

glabel bhvPunchTinyTriangleSpawn # 0AD8
    begin OBJ_LIST_DEFAULT
    graph_clear
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_bit_clear_int32 objUnkE0, 0x00080000
    callnative bhv_punch_tiny_triangle_init
    delay 1
    deactivate

glabel bhvDoorWarp # 0AFC
    begin OBJ_LIST_SURFACE
    obj_set_int objInteractType, 0x800
    goto .L13000B14

glabel bhvDoor # 0B0C
    begin OBJ_LIST_SURFACE
    obj_set_int objInteractType, 0x04
.L13000B14: # 0B14
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, door_seg3_anim_030156C0
    animate 0x00
    collision_data door_seg3_collision_0301CE78
    set_hitbox 0x0050, 0x0064
    obj_set_int objIntangibleTimer, 0
    obj_set_float objCollisionDistance, 0x03E8
    obj_set_pos
    callnative bhv_door_init
    begin_loop
        callnative bhv_door_loop
    end_loop

glabel bhvGrindel # 0B58
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data ssl_seg7_collision_grindel
    drop_floor
    obj_add_float objPosY, 1
    obj_set_pos
    begin_loop
        callnative bhv_grindel_thwomp_loop
        callnative load_object_collision_model
    end_loop

glabel bhvThwomp2 # 0B8C
    begin OBJ_LIST_SURFACE
    collision_data thwomp_seg5_collision_0500B92C
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_add_float objPosY, 1
    obj_set_pos
    scale 140
    obj_set_float objDrawingDistance, 0x0FA0
    begin_loop
        callnative bhv_grindel_thwomp_loop
        callnative load_object_collision_model
    end_loop

glabel bhvThwomp # 0BC8
    begin OBJ_LIST_SURFACE
    collision_data thwomp_seg5_collision_0500B7D0
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_add_float objPosY, 1
    scale 140
    obj_set_pos
    obj_set_float objDrawingDistance, 0x0FA0
    begin_loop
        callnative bhv_grindel_thwomp_loop
        callnative load_object_collision_model
    end_loop

glabel bhvTumblingBridgePlatform # 0C04
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_float objCollisionDistance, 0x012C
    begin_loop
        callnative bhv_tumbling_bridge_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWfTumblingBridge # 0C28
    begin OBJ_LIST_SPAWNER
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    begin_loop
        callnative bhv_tumbling_bridge_loop
    end_loop

glabel bhvBbhTumblingBridge # 0C44
    begin OBJ_LIST_SPAWNER
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_int objBehParams2ndByte, 1
    begin_loop
        callnative bhv_tumbling_bridge_loop
    end_loop

glabel bhvLllTumblingBridge # 0C64
    begin OBJ_LIST_SPAWNER
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_int objBehParams2ndByte, 2
    begin_loop
        callnative bhv_tumbling_bridge_loop
    end_loop

glabel bhvFlame # 0C84
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_pos
    scale 700
    interact_type INTERACT_FLAME
    collision_sphere 0x0032, 0x0019, 0x0019
    obj_set_int objIntangibleTimer, 0
    callnative bhv_init_room
    begin_loop
        obj_set_int objInteractStatus, 0
        text_anim_rate objAnimState, 0x0002
    end_loop

glabel bhvAnotherElavator # 0CC8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data hmc_seg7_collision_elevator
    obj_set_pos
    callnative bhv_elevator_init
    begin_loop
        callnative bhv_elevator_loop
        callnative load_object_collision_model
    end_loop

glabel bhvRrElevatorPlatform # 0CFC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data rr_seg7_collision_elevator_platform
    obj_set_pos
    callnative bhv_elevator_init
    begin_loop
        callnative bhv_elevator_loop
        callnative load_object_collision_model
    end_loop

glabel bhvHmcElevatorPlatform # 0D30
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data hmc_seg7_collision_elevator
    obj_set_pos
    callnative bhv_elevator_init
    callnative bhv_init_room
    begin_loop
        callnative bhv_elevator_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWaterMist # 0D6C
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_int objOpacity, 0xFE
    obj_set_float objForwardVel, 0x0014
    obj_set_float objVelY, 0xFFF8
    obj_add_float objPosY, 62
    begin_loop
        callnative bhv_water_mist_loop
    end_loop

glabel bhvWaterMistSpawn # 0D98
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_repeat 8
        callnative bhv_water_mist_spawn_loop
    end_repeat
    deactivate

glabel bhvBreakBoxTriangle # 0DB4
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_repeat 18
        callnative obj_rotate_face_angle_using_vel
        callnative obj_move_using_fvel_and_gravity
    end_repeat
    deactivate

glabel bhvWaterMist2 # 0DD8
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_int objFaceAnglePitch, 0xC000
    scale 2100
    begin_loop
        callnative bhv_water_mist_2_loop
    end_loop

glabel bhvUnused0DFC # 0DFC
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objAnimState, -1
    obj_set_float objFaceAnglePitch, 0
    obj_set_float objFaceAngleYaw, 0
    obj_set_float objFaceAngleRoll, 0
    begin_repeat 6
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvPoundWhitePuffs # 0E24
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_pound_white_puffs_init
    delay 1
    deactivate

glabel bhvGroundSand # 0E3C
    begin OBJ_LIST_DEFAULT
glabel bhvUnused0E40 # 0E40
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_unused_0e40_init
    delay 1
    deactivate

glabel bhvGroundSnow # 0E58
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_ground_snow_init
    delay 1
    deactivate

glabel bhvWind # 0E70
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_wind_loop
    end_loop

glabel bhvEndToad # 0E88
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int32 objAnimations, toad_seg6_anims_0600FB58
    animate 0x00
    begin_loop
        callnative BehEndToadLoop
    end_loop

glabel bhvEndPeach # 0EAC
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int32 objAnimations, peach_seg5_anims_0501C41C
    animate 0x00
    begin_loop
        callnative BehEndPeachLoop
    end_loop

glabel bhvUnusedParticleSpawn # 0ED0
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    gravity 0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_int objIntangibleTimer, 0
    set_hitbox 0x0028, 0x0028
    begin_loop
        callnative bhv_unused_particle_spawn_loop
    end_loop

glabel bhvUkiki # 0F08
    begin OBJ_LIST_GENACTOR
    goto .L13001CB4
glabel bhvUnused0F14 # 0F14
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objPosX, 0x0A00
    obj_set_float objPosY, 0x05B1
    obj_set_float objPosZ, 0x076A
    break

glabel bhvLittleCage2 # 0F2C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    begin_loop
        callnative bhv_little_cage_2_loop
    end_loop

glabel bhvLittleCage # 0F48
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    collision_data ttm_seg7_collision_little_cage
    obj_child MODEL_STAR, bhvLittleCage2
    obj_child MODEL_NONE, bhvUnused0F14
    obj_set_float objCollisionDistance, 0x4E20
    gravity 0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_little_cage_loop
    end_loop

glabel bhvBitfsSinkingPlatforms # 0F9C
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data bitfs_seg7_collision_sinking_platform
    obj_set_pos
    begin_loop
        callnative bhv_bitfs_sinking_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvBitfsSinkingCagePlatform # 0FC8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data bitfs_seg7_collision_sinking_cage_platform
    obj_set_pos
    obj_child MODEL_BITFS_BLUE_POLE, bhvDddMovingPole
    begin_loop
        callnative bhv_bitfs_sinking_cage_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvDddMovingPole # 1000
    begin OBJ_LIST_POLELIKE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objInteractType, 0x40
    set_hitbox 0x0050, 0x02C6
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_ddd_moving_pole_loop
        callnative BehClimbDetectLoop
    end_loop

glabel bhvBitfsTiltingSquarePlatform # 1030
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data bitfs_seg7_collision_inverted_pyramid
    obj_set_pos
    callnative bhv_tilting_platform_init
    begin_loop
        callnative bhv_tilting_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSquishablePlatform # 1064
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data bitfs_seg7_collision_squishable_platform
    obj_set_float objCollisionDistance, 0x2710
    callnative bhv_tilting_platform_init
    begin_loop
        callnative bhv_squishable_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvCutOutObject # 1098
    begin OBJ_LIST_GENACTOR
    graph_clear
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    break

glabel bhvBetaMovingFlamesSpawn # 10A8
    begin_loop
        callnative bhv_beta_moving_flames_spawn_loop
    end_loop

glabel bhvBetaMovingFlames # 10B8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    begin_loop
        callnative bhv_beta_moving_flames_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvRrRotatingBridgePlatform # 10D8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data rr_seg7_collision_rotating_platform_with_fire
    obj_set_float objCollisionDistance, 0x05DC
    obj_set_pos
    begin_loop
        callnative bhv_rr_rotating_bridge_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvFlamethrower # 1108
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    begin_loop
        callnative bhv_flamethrower_loop
    end_loop

glabel bhvFlamethrowerFlame # 1124
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_FLAME
    collision_sphere 0x0032, 0x0019, 0x0019
    billboard
    obj_set_pos
    obj_set_int objIntangibleTimer, 0
    callnative bhv_init_room
    begin_loop
        callnative bhv_flamethrower_flame_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvBouncingFireball # 1168
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    graph_clear
    begin_loop
        callnative bhv_bouncing_fireball_loop
    end_loop

glabel bhvBouncingFireballFlame # 1184
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_FLAME
    obj_set_float objGraphYOffset, 30
    collision_sphere 0x0032, 0x0019, 0x0019
    gravity 0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    billboard
    begin_loop
        callnative bhv_bouncing_fireball_flame_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvBowserShockWave # 11D0
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objOpacity, 0x00FF
    begin_loop
        callnative bhv_bowser_shock_wave_loop
    end_loop

glabel bhvFlameMario # 11EC
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_float objGraphYOffset, 0x0046
    obj_set_int objAnimState, -1
    begin_loop
        obj_add_int objAnimState, 1
        callnative bhv_flame_mario_loop
    end_loop

glabel bhvBlackSmokeMario # 1214
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_int objAnimState, 0x0004
    obj_set_float objGraphYOffset, 0x0032
    begin_repeat 8
        callnative bhv_black_smoke_mario_loop
        delay 1
        callnative bhv_black_smoke_mario_loop
        delay 1
        callnative bhv_black_smoke_mario_loop
    end_repeat
    deactivate

glabel bhvBlackSmokeBowser # 1254
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_float objGraphYOffset, 0x0000
    begin_repeat 8
        callnative bhv_black_smoke_bowser_loop
        text_anim_rate objAnimState, 0x0004
    end_repeat
    deactivate

glabel bhvBlackSmokeUpward # 127C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_repeat 4
        callnative bhv_black_smoke_upward_loop
    end_repeat
    deactivate

glabel bhvBetaFishSplashSpawner # 1298
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    graph_clear
    begin_loop
        callnative bhv_beta_fish_splash_spawner_loop
    end_loop

glabel bhvSpindrift # 12B4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, spindrift_seg5_anims_05002D68
    animate 0x00
    gravity 0x001E, 0xFE70, 0x0000, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    obj_set_pos
    obj_set_int objUnk190, 0x0080
    begin_loop
        callnative bhv_spindrift_loop
    end_loop

glabel bhvTowerPlatformGroup # 12F4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    graph_clear
    obj_add_float objPosY, 300
    obj_set_pos
    begin_loop
        callnative bhv_tower_platform_group_loop
    end_loop

glabel bhvWfSlidingTowerPlatform # 1318
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wf_seg7_collision_platform
    begin_loop
        callnative bhv_wf_sliding_tower_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWfElevatorTowerPlatform # 1340
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wf_seg7_collision_platform
    begin_loop
        callnative bhv_wf_elevator_tower_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWfSolidTowerPlatform # 1368
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wf_seg7_collision_platform
    begin_loop
        callnative bhv_wf_solid_tower_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSnowLeafParticleSpawn # 1390
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_snow_leaf_particle_spawn_init
    delay 1
    deactivate

glabel bhvTreeSnow # 13A8
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    begin_loop
        callnative bhv_tree_snow_or_leaf_loop
    end_loop

glabel bhvTreeLeaf # 13C4
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_tree_snow_or_leaf_loop
    end_loop

glabel bhvAnotherTiltingPlatform # 13DC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    callnative bhv_tilting_platform_init
    begin_loop
        callnative bhv_tilting_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSquarishPathMoving # 1408
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data bitdw_seg7_collision_moving_pyramid
    obj_set_pos
    begin_loop
        callnative bhv_squarish_path_moving_loop
    end_loop

glabel bhvPiranhaPlantBubble # 142C
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_loop
        callnative bhv_piranha_plant_bubble_loop
    end_loop

glabel bhvPiranhaPlantWakingBubbles # 1448
    begin OBJ_LIST_UNIMPORTANT
    billboard
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_repeat 10
        callnative bhv_piranha_plant_waking_bubbles_loop
    end_repeat
    deactivate

glabel bhvFloorSwitchAnimatesObject # 1468
    begin OBJ_LIST_SURFACE
    obj_set_int objBehParams2ndByte, 1
    goto .Lbeh_floor_switch_1488

glabel bhvFloorSwitchGrills # 1478
    begin OBJ_LIST_SURFACE
    goto .Lbeh_floor_switch_1488

glabel bhvFloorSwitchHardcodedModel # 1484
    begin OBJ_LIST_SURFACE
.Lbeh_floor_switch_1488: # 1488
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data purple_switch_seg8_collision_0800C7A8
    begin_loop
        callnative bhv_purple_switch_loop
        callnative load_object_collision_model
    end_loop

glabel bhvFloorSwitchHiddenObjects # 14AC
    begin OBJ_LIST_SURFACE
    obj_set_int objBehParams2ndByte, 2
    goto .Lbeh_floor_switch_1488

glabel bhvHiddenObject # 14BC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data breakable_box_seg8_collision_08012D70
    obj_set_float objCollisionDistance, 0x012C
    begin_loop
        callnative bhv_hidden_object_loop
    end_loop

glabel bhvBreakableBox # 14E0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data breakable_box_seg8_collision_08012D70
    obj_set_float objCollisionDistance, 0x01F4
    callnative bhv_init_room
    begin_loop
        callnative bhv_breakable_box_loop
        callnative load_object_collision_model
    end_loop
    break

glabel bhvPushableMetalBox # 1518
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data metal_box_seg8_collision_08024C28
    obj_set_float objCollisionDistance, 0x01F4
    obj_set_pos
    begin_loop
        callnative bhv_pushable_loop
        callnative load_object_collision_model
    end_loop

glabel bhvHeaveHo # 1548
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, heave_ho_seg5_anims_0501534C
    animate 0x00
    gravity 0x00C8, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0258, 0x0000, 0x0000
    obj_spawn MODEL_NONE, bhvHeaveHoThrowMario
    obj_set_int objInteractType, 0x02
    obj_set_int objUnk190, 0x0204
    set_hitbox 0x0078, 0x0064
    obj_set_pos
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_heave_ho_loop
    end_loop

glabel bhvHeaveHoThrowMario # 15A4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    begin_loop
        callnative bhv_heave_ho_throw_mario_loop
    end_loop

glabel bhvCcmTouchedStarSpawn # 15C0
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    set_hitbox 0x01F4, 0x01F4
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_ccm_touched_star_spawn_loop
    end_loop

glabel bhvUnusedPoundablePlatform # 15E4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data sl_seg7_collision_pound_explodes
    obj_set_pos
    begin_loop
        callnative bhv_unused_poundable_platform
    end_loop

glabel bhvBetaTrampolineTop # 1608
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data springboard_collision_05001A28
    obj_set_pos
    begin_loop
        callnative bhv_beta_trampoline_top_loop
        callnative load_object_collision_model
    end_loop

glabel bhvBetaTrampolineSpring # 1634
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    begin_loop
        callnative bhv_beta_trampoline_spring_loop
    end_loop

glabel bhvJumpingBox # 1650
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO  | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    gravity 0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0258, 0x0000, 0x0000
    begin_loop
        callnative bhv_jumping_box_loop
    end_loop

glabel bhvBooCage # 167C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_float objGraphYOffset, 0x000A
    gravity 0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_boo_cage_loop
    end_loop

glabel bhvStub # 16AC
    begin OBJ_LIST_DEFAULT
    graph_clear
    break

glabel bhvIgloo # 16B8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_IGLOO_BARRIER
    set_hitbox 0x0064, 0x00C8
    obj_set_int objIntangibleTimer, 0
    obj_set_pos
    begin_loop
        obj_set_int objInteractStatus, 0
    end_loop

glabel bhvBowserKey # 16E4
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    gravity 0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_bowser_key_loop
    end_loop

glabel bhvGrandStar # 1714
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_STAR_OR_KEY
    obj_set_int objUnk190, 0x0800
    set_hitbox 0x00A0, 0x0064
    obj_set_pos
    begin_loop
        callnative bhv_grand_star_loop
    end_loop

glabel bhvBetaBooKey # 1744
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    set_hitbox 0x0020, 0x0040
    gravity 0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_beta_boo_key_loop
    end_loop

glabel bhvAlphaBooKey # 1778
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    set_hitbox 0x0020, 0x0040
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_alpha_boo_key_loop
    end_loop

glabel bhvBulletBill # 179C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    collision_sphere 0x0032, 0x0032, 0x0032
    interact_type INTERACT_DAMAGE
    obj_set_int objDamageOrCoinValue, 3
    scale 40
    obj_set_int objIntangibleTimer, 0
    gravity 0x001E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
    callnative bhv_bullet_bill_init
    begin_loop
        callnative bhv_bullet_bill_loop
    end_loop

glabel bhvWhitePuffSmoke # 17F4
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_add_float objPosY, -100
    callnative bhv_white_puff_smoke_init
    obj_set_int objAnimState, -1
    begin_repeat 10
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvUnused1820 # 1820
    begin OBJ_LIST_DEFAULT
    break

glabel bhvBowserTailAnchor # 1828
    begin OBJ_LIST_GENACTOR
    collision_sphere 0x0064, 0x0032, 0xFFCE
    obj_set_int objIntangibleTimer, 0
    graph_clear
    begin_loop
        callnative bhv_bowser_tail_anchor_loop
    end_loop

glabel bhvBowser # 1850
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objInteractType, 0x02
    set_hitbox 0x0190, 0x0190
    drop_floor
    obj_set_pos
    obj_set_int32 objAnimations, bowser_seg6_anims_06057690
    obj_child MODEL_NONE, bhvBowserBodyAnchor
    obj_child MODEL_BOWSER_BOMB_CHILD_OBJ, bhvBowserFlameSpawn
    obj_spawn MODEL_NONE, bhvBowserTailAnchor
    obj_set_int objNumLootCoins, 0x0032
    gravity 0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_pos
    callnative bhv_bowser_init
    begin_loop
        callnative bhv_bowser_loop
    end_loop

glabel bhvBowserBodyAnchor # 18CC
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    set_hitbox 0x0064, 0x012C
    interact_type INTERACT_DAMAGE
    obj_set_int objUnk190, 0x0008
    graph_clear
    obj_set_int objDamageOrCoinValue, 2
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_bowser_body_anchor_loop
    end_loop

glabel bhvBowserFlameSpawn # 1904
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    geo_layout MODEL_NONE
    begin_loop
        callnative bhv_bowser_flame_spawn_loop
    end_loop

glabel bhvTiltingBowserLavaPlatform # 1920
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data bowser_2_seg7_collision_tilting_platform
    obj_set_float objDrawingDistance, 0x4E20
    obj_set_float objCollisionDistance, 0x4E20
    obj_set_int objFaceAngleYaw, 0x0000
    obj_set_pos
    begin_loop
        callnative obj_rotate_face_angle_using_vel
        callnative load_object_collision_model
    end_loop

glabel bhvFallingBowserPlatform # 1958
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objDrawingDistance, 0x4E20
    obj_set_float objCollisionDistance, 0x4E20
    obj_set_pos
    begin_loop
        callnative bhv_falling_bowser_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvBlueBowserFlame # 1984
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_FLAME
    billboard
    gravity 0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_blue_bowser_flame_init
    begin_loop
        callnative bhv_blue_bowser_flame_loop
        text_anim_rate objAnimState, 0x0002
    end_loop

glabel bhvFlameFloatingLanding # 19C8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_FLAME
    billboard
    gravity 0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_flame_floating_landing_init
    begin_loop
        callnative bhv_flame_floating_landing_loop
        text_anim_rate objAnimState, 0x0002
    end_loop

glabel bhvBlueFlamesGroup # 1A0C
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    interact_type INTERACT_FLAME
    billboard
    begin_loop
        callnative bhv_blue_flames_group_loop
    end_loop

glabel bhvFlameBouncing # 1A30
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    interact_type INTERACT_FLAME
    billboard
    callnative bhv_flame_bouncing_init
    gravity 0x0000, 0xFE70, 0xFFBA, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_flame_bouncing_loop
        text_anim_rate objAnimState, 0x0002
    end_loop

glabel bhvFlameMovingForwardGrowing # 1A74
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_FLAME
    billboard
    callnative bhv_flame_moving_forward_growing_init
    begin_loop
        callnative bhv_flame_moving_forward_growing_loop
        text_anim_rate objAnimState, 0x0002
    end_loop

glabel bhvFlameBowser # 1AA4
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_FLAME
    billboard
    callnative bhv_flame_bowser_init
    gravity 0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_flame_bowser_loop
        text_anim_rate objAnimState, 0x0002
    end_loop

glabel bhvFlameLargeBurningOut # 1AE8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_FLAME
    billboard
    callnative bhv_flame_large_burning_out_init
    gravity 0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_flame_bowser_loop
        text_anim_rate objAnimState, 0x0002
    end_loop

glabel bhvBlueFish # 1B2C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_int32 objAnimations, blue_fish_seg3_anims_0301C2B0
    animate 0x00
    begin_loop
        callnative bhv_blue_fish_loop
    end_loop

glabel bhvTankFishGroup # 1B54
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    begin_loop
        callnative bhv_tank_fish_group_loop
    end_loop

glabel bhvCheckerboardElevatorGroup # 1B70
    begin OBJ_LIST_SPAWNER
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_checkerboard_elevator_group_init
    delay 1
    deactivate

glabel bhvCheckerboardPlatformSub # 1B88
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data checkerboard_platform_seg8_collision_0800D710
    callnative bhv_checkerboard_platform_init
    obj_set_pos
    begin_loop
        callnative bhv_checkerboard_platform_loop
    end_loop

glabel bhvBowserKeyUnlockDoor # 1BB4
    begin OBJ_LIST_DEFAULT
    obj_set_int32 objAnimations, bowser_key_seg3_anims_list
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_bowser_key_unlock_door_loop
    end_loop

glabel bhvBowserKeyCourseExit # 1BD4
    begin OBJ_LIST_DEFAULT
    obj_set_int32 objAnimations, bowser_key_seg3_anims_list
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_bowser_key_course_exit_loop
    end_loop

glabel bhvInvisibleObjectsUnderBridge # 1BF4
    begin OBJ_LIST_DEFAULT
    callnative bhv_invisible_objects_under_bridge_init
    break

glabel bhvWaterLevelPillar # 1C04
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data inside_castle_seg7_collision_water_level_pillar
    callnative bhv_water_level_pillar_init
    begin_loop
        callnative bhv_water_level_pillar_loop
        callnative load_object_collision_model
    end_loop

glabel bhvDddWarp # 1C34
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objCollisionDistance, 0x7530
    begin_loop
        callnative bhv_ddd_warp_loop
        callnative load_object_collision_model
    end_loop

glabel bhvMoatGrills # 1C58
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data castle_grounds_seg7_collision_moat_grills
    obj_set_float objCollisionDistance, 0x7530
    begin_loop
        callnative bhv_moat_grills_loop
    end_loop

glabel bhvClockMinuteHand # 1C7C
    begin OBJ_LIST_DEFAULT
    obj_set_int objAngleVelRoll, 0xFE80
    goto .L13001C94
glabel bhvClockHourHand # 1C8C
    begin OBJ_LIST_DEFAULT
    obj_set_int objAngleVelRoll, 0xFFE0
.L13001C94: # 1C94
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_init_room
    begin_loop
        callnative bhv_rotating_clock_arm_loop
    end_loop

glabel bhvUkikiOpenCage # 1CB0
    begin OBJ_LIST_GENACTOR
.L13001CB4: # 1CB4
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objInteractType, 0x02
    obj_set_int objUnk190, 0x0010
    set_hitbox 0x0028, 0x0028
    obj_set_int objIntangibleTimer, 0
    drop_floor
    obj_set_int32 objAnimations, ukiki_seg5_anims_05015784
    animate 0x00
    gravity 0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    obj_set_pos
    callnative bhv_ukiki_open_cage_init
    begin_loop
        callnative bhv_ukiki_open_cage_loop
    end_loop

glabel bhvStub1D0C # 1D0C
    begin OBJ_LIST_DEFAULT
    deactivate

glabel bhvLllRotatingHexagonalPlatform # 1D14
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_hexagonal_platform
    obj_set_pos
    begin_loop
        obj_set_int objAngleVelYaw,  0x100
        obj_add_int objMoveAngleYaw, 0x100
        callnative load_object_collision_model
    end_loop

glabel bhvLllSinkingRockBlock # 1D40
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_floating_block
    obj_add_float objPosY, -50
    obj_set_pos
    begin_loop
        callnative bhv_lll_sinking_rock_block_loop
        callnative load_object_collision_model
    end_loop

glabel bhvStub1D70 # 1D70
    begin OBJ_LIST_DEFAULT
    break

glabel bhvLllMovingOctagonalMeshPlatform # 1D78
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_add_float objPosY, -50
    collision_data lll_seg7_collision_octagonal_moving_platform
    begin_loop
        callnative bhv_lll_moving_octagonal_mesh_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSnowBall # 1DA4
    break

glabel bhvLllRotatingBlockWithFireBars # 1DA8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_rotating_fire_bars
    obj_set_float objCollisionDistance, 0x0FA0
    begin_loop
        callnative bhv_lll_rotating_block_fire_bars_loop
    end_loop

glabel bhvLllRotatingHexFlame # 1DCC
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    interact_type INTERACT_FLAME
    collision_sphere 0x0032, 0x0064, 0x0032
    obj_set_int objIntangibleTimer, 0
    billboard
    begin_loop
        callnative bhv_lll_rotating_hex_flame_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvLllWoodPiece # 1E04
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_wood_piece
    obj_set_pos
    begin_loop
        callnative bhv_lll_wood_piece_loop
        callnative load_object_collision_model
    end_loop

glabel bhvLllFloatingWoodBridge # 1E30
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    geo_layout MODEL_NONE
    begin_loop
        callnative bhv_lll_floating_wood_bridge_loop
    end_loop

glabel bhvVolcanoFlames # 1E4C
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    begin_loop
        obj_add_int objAnimState, 1
        callnative bhv_volcano_flames_loop
    end_loop

glabel bhvLllRotatingHexagonalRing # 1E6C
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_rotating_platform
    begin_loop
        callnative bhv_lll_rotating_hexagonal_ring_loop
        callnative load_object_collision_model
    end_loop

glabel bhvLllSinkingRectangularPlatform # 1E94
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_slow_tilting_platform
    obj_set_float objCollisionDistance, 0x07D0
    obj_set_pos
    begin_loop
        callnative bhv_lll_sinking_rectangular_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvLllSinkingSquarePlatforms # 1EC4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_sinking_pyramids
    obj_add_float objPosY, 5
    obj_set_float objCollisionDistance, 0x07D0
    obj_set_pos
    begin_loop
        callnative bhv_lll_sinking_square_platforms_loop
        callnative load_object_collision_model
    end_loop

glabel bhvLllTiltingSquarePlatform # 1EF8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_inverted_pyramid
    obj_add_float objPosY, 5
    obj_set_pos
    callnative bhv_tilting_platform_init
    begin_loop
        callnative bhv_tilting_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvUnused1F30 # 1F30
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    break

glabel bhvKoopaShell # 1F3C
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    gravity 0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_koopa_shell_loop
    end_loop

glabel bhvKoopaShellFlame # 1F68
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_FLAME
    billboard
    begin_loop
        callnative bhv_koopa_shell_flame_loop
        text_anim_rate objAnimState, 0x0002
    end_loop

glabel bhvToxBox # 1F90
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data ssl_seg7_collision_tox_box
    obj_add_float objPosY, 256
    obj_set_float objDrawingDistance, 0x1F40
    obj_set_pos
    begin_loop
        callnative bhv_tox_box_loop
    end_loop

glabel bhvPiranhaPlant # 1FBC
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, piranha_plant_seg6_anims_0601C31C
    animate 0x00
    interact_type INTERACT_DAMAGE
    set_hitbox 0x0064, 0x00C8
    obj_set_float2 0x0032, 0x00C8
    obj_set_int objIntangibleTimer, 0
    obj_set_int objDamageOrCoinValue, 3
    obj_set_int objNumLootCoins, 5
    obj_child MODEL_BUBBLE, bhvPiranhaPlantBubble
    obj_set_float objDrawingDistance, 0x07D0
    obj_set_pos
    begin_loop
        callnative bhv_piranha_plant_loop
    end_loop

glabel bhvLllHexagonalMesh # 2018
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data lll_hexagonal_mesh_seg3_collision_0301CECC
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvLllBowserPuzzlePiece # 2038
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_puzzle_piece
    obj_set_pos
    obj_set_float objCollisionDistance, 0x0BB8
    begin_loop
        callnative bhv_lll_bowser_puzzle_piece_loop
        callnative load_object_collision_model
    end_loop

glabel bhvLllBowserPuzzle # 2068
    begin OBJ_LIST_SPAWNER
    graph_clear
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_add_float objPosZ, -50
    begin_loop
        callnative bhv_lll_bowser_puzzle_loop
    end_loop

glabel bhvTuxiesMother # 2088
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, penguin_seg5_anims_05008B74
    animate 0x03
    gravity 0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
    obj_set_pos
    interact_type INTERACT_TEXT
    set_hitbox 0x00C8, 0x012C
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_tuxies_mother_loop
    end_loop

glabel bhvPenguinBaby # 20D8
    begin OBJ_LIST_GENACTOR
    break

glabel bhvUnused20E0 # 20E0
    begin OBJ_LIST_GENACTOR
    break

glabel bhvSmallPenguin # 20E8
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, penguin_seg5_anims_05008B74
    animate 0x00
    gravity 0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    obj_set_int objInteractType, 0x02
    obj_set_int objUnk190, 0x0010
    obj_set_int objIntangibleTimer, 0
    set_hitbox 0x0028, 0x0028
    obj_set_pos
    begin_loop
        callnative bhv_small_penguin_loop
    end_loop

glabel bhvFish2 # 213C
    begin OBJ_LIST_DEFAULT
    obj_set_int objBehParams2ndByte, 0x0000
    goto bhvFishCommon
glabel bhvFish3 # 214C
    begin OBJ_LIST_DEFAULT
    obj_set_int objBehParams2ndByte, 1
    goto bhvFishCommon
glabel bhvLargeFishGroup # 215C
    begin OBJ_LIST_DEFAULT
glabel bhvFishCommon # 2160
    graph_clear
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_fish_loop
    end_loop

glabel bhvFishGroup2 # 2178
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    begin_loop
        callnative bhv_fish_group_2_loop
    end_loop

glabel bhvWdwExpressElevator # 2194
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wdw_seg7_collision_express_elevator_platform
    obj_set_pos
    begin_loop
        callnative bhv_wdw_express_elevator_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWdwExpressElevatorPlatform # 21C0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wdw_seg7_collision_express_elevator_platform
    obj_set_pos
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvChirpChirp # 21E4
    begin OBJ_LIST_DEFAULT
    obj_set_int objVarF4, 1
    goto .LbhvChirpChirp_21F4

glabel bhvChirpChirpUnused # 21F4
.LbhvChirpChirp_21F4:
    graph_clear
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_bird_chirp_chirp_loop
    end_loop

glabel bhvBub # 220C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, bub_seg6_anims_06012354
    animate 0x00
    collision_sphere 0x0014, 0x000A, 0x000A
    interact_type INTERACT_DAMAGE
    obj_set_int objDamageOrCoinValue, 1
    obj_set_pos
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_cheep_cheep_loop
    end_loop

glabel bhvExclamationBox # 2250
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data exclamation_box_outline_seg8_collision_08025F78
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objCollisionDistance, 0x012C
    obj_set_pos
    begin_loop
        callnative bhv_exclamation_box_loop
    end_loop

glabel bhvRotatingExclamationMark # 227C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    scale 200
    begin_loop
        callnative bhv_rotatin_exclamation_box_loop
        obj_add_int objMoveAngleYaw, 0x800
    end_loop

glabel bhvSoundSpawner # 229C
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    delay 3
    callnative bhv_sound_spawner_init
    delay 30
    deactivate

glabel bhvRockSolid # 22B8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data jrb_seg7_collision_rock_solid
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvBowserSubDoor # 22D8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data ddd_seg7_collision_bowser_sub_door
    obj_set_float objDrawingDistance, 0x4E20
    obj_set_float objCollisionDistance, 0x4E20
    begin_loop
        callnative bhv_bowsers_sub_loop
        callnative load_object_collision_model
    end_loop

glabel bhvBowsersSub # 2308
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_float objDrawingDistance, 0x4E20
    obj_set_float objCollisionDistance, 0x4E20
    collision_data ddd_seg7_collision_submarine
    begin_loop
        callnative bhv_bowsers_sub_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSushiShark # 2338
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, sushi_seg5_anims_0500AE54
    obj_spawn MODEL_NONE, bhvSushiSharkCollisionChild
    collision_sphere 0x0064, 0x0032, 0x0032
    interact_type INTERACT_DAMAGE
    obj_set_int objDamageOrCoinValue, 3
    obj_set_pos
    animate 0x00
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_sushi_shark_loop
    end_loop

glabel bhvSushiSharkCollisionChild # 2388
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    graph_clear
    begin_loop
        callnative bhv_sushi_shark_collision_loop
    end_loop

glabel bhvJrbSlidingBox # 23A4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data jrb_seg7_collision_floating_box
    obj_set_pos
    begin_loop
        callnative bhv_jrb_sliding_box_loop
        callnative load_object_collision_model
    end_loop

glabel bhvShipPart3 # 23D0
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    begin_loop
        callnative bhv_ship_part_3_loop
    end_loop

glabel bhvInSunkenShip3 # 23EC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data jrb_seg7_collision_in_sunken_ship_3
    obj_set_pos
    obj_set_float objCollisionDistance, 0x0FA0
    begin_loop
        callnative bhv_ship_part_3_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSunkenShipPart # 241C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    scale 50
    obj_set_pos
    begin_loop
        callnative bhv_sunken_ship_part_loop
    end_loop

glabel bhvUnused243C # 243C
    obj_set_int objFaceAnglePitch, 0xE958
    obj_set_int objFaceAngleYaw, 0xEE6C
    obj_set_int objFaceAngleRoll, 0x0C80
    return
glabel bhvSunkenShipPart2 # 244C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    scale 100
    obj_set_float objDrawingDistance, 0x1770
    obj_set_pos
    call bhvUnused243C
    break

glabel bhvInSunkenShip # 246C
    begin OBJ_LIST_SURFACE
    collision_data jrb_seg7_collision_in_sunken_ship
    goto .LbhvInSunkenShip248C
glabel bhvInSunkenShip2 # 2480
    begin OBJ_LIST_SURFACE
    collision_data jrb_seg7_collision_in_sunken_ship_2
.LbhvInSunkenShip248C: # 248C
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objCollisionDistance, 0x0FA0
    call bhvUnused243C
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvMarioDustGenerator # 24AC
    begin OBJ_LIST_DEFAULT
    obj_bit_clear_int32 objUnkE0, 0x00000001
    graph_clear
    obj_child MODEL_MIST, bhvWhitePuff1
    obj_child MODEL_SMOKE, bhvWhitePuff2
    delay 1
    deactivate

glabel bhvWhitePuff1 # 24DC
    begin OBJ_LIST_DEFAULT
    obj_bit_clear_int32 objUnkE0, 0x00000001
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_loop
        callnative bhv_white_puff_1_loop
    end_loop

glabel bhvWhitePuff2 # 2500
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_int objAnimState, -1
    begin_repeat 7
        callnative bhv_white_puff_2_loop
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvWhitePuffSmoke2 # 2528
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_int objAnimState, -1
    begin_repeat 7
        callnative bhv_white_puff_2_loop
        callnative obj_move_using_fvel_and_gravity
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvPurpleSwitchHiddenBoxes # 2558
    begin OBJ_LIST_SURFACE
    obj_set_int objBehParams2ndByte, 2
    goto .Lbeh_floor_switch_1488

glabel bhvBlueCoinSwitch # 2568
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data blue_coin_switch_seg8_collision_08000E98
    begin_loop
        callnative bhv_blue_coin_switch_loop
    end_loop

glabel bhvHiddenBlueCoin # 2588
    begin OBJ_LIST_LEVEL
    obj_set_int objInteractType, 0x10
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    set_hitbox 0x0064, 0x0040
    obj_set_int objDamageOrCoinValue, 0x0005
    obj_set_int objIntangibleTimer, 0
    obj_set_int objAnimState, -1
    begin_loop
        callnative bhv_hidden_blue_coin_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvOpenableCageDoor # 25C0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_openable_cage_door_loop
        callnative load_object_collision_model
    end_loop

glabel bhvOpenableGrill # 25E0
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_openable_grill_loop
    end_loop

glabel bhvWaterLevelDiamond # 25F8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    set_hitbox 0x0046, 0x001E
    obj_set_float objCollisionDistance, 0x00C8
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_water_level_diamond_loop
    end_loop

glabel bhvInitializeChangingWaterLevel # 2620
    begin OBJ_LIST_DEFAULT
    begin_loop
        callnative bhv_init_changing_water_level_loop
    end_loop

glabel bhvTornadoSandParticle # 2634
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    begin_loop
        callnative bhv_tweester_sand_particle_loop
    end_loop

glabel bhvTornado # 2650
    begin OBJ_LIST_POLELIKE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    gravity 0x001E, 0xFE70, 0x0000, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    drop_floor
    obj_set_pos
    begin_loop
        callnative bhv_tweester_loop
    end_loop

glabel bhvMerryGoRoundBooManager # 2684
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_merry_go_round_boo_manager_loop
    end_loop

glabel bhvAnimatedTexture # 269C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    gravity 0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    billboard
    begin_loop
        callnative bhv_animated_texture_loop
        obj_add_int objAnimState, 1
        text_anim_rate objAnimState, 0x0002
    end_loop

glabel bhvBooInCastle # 26D4
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_float objGraphYOffset, 0x003C
    gravity 0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_init_room
    begin_loop
        callnative bhv_boo_in_castle_loop
    end_loop

glabel bhvBooWithCage # 2710
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_int objDamageOrCoinValue, 3
    obj_set_float2 0x0050, 0x0078
    set_hitbox 0x00B4, 0x008C
    obj_set_float objGraphYOffset, 0x003C
    gravity 0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_boo_with_cage_init
    callnative bhv_init_room
    begin_loop
        callnative bhv_boo_with_cage_loop
    end_loop

glabel bhvBalconyBigBoo # 2768
    begin OBJ_LIST_GENACTOR
    obj_set_int objBehParams2ndByte, 2
    obj_set_int objVar1AC, 10
    goto common_big_boo_bhv

glabel bhvMerryGoRoundBigBoo # 277C
    begin OBJ_LIST_GENACTOR
    obj_set_int objBehParams2ndByte, 1
    # Set number of minion boos killed to 10, which is greater than 5 so that the boo always loads without needing to kill any boos.
    obj_set_int objVar1AC, 10
    goto common_big_boo_bhv

glabel bhvGhostHuntBigBoo # 2790
    begin OBJ_LIST_GENACTOR
common_big_boo_bhv: # 2794
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    gravity 0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_init_room
    callnative bhv_boo_init
    begin_loop
        callnative bhv_big_boo_loop
    end_loop

glabel bhvCourtyardBooTriplet # 27D0
    begin OBJ_LIST_DEFAULT
    graph_clear
    callnative bhv_courtyard_boo_triplet_init
    deactivate

glabel bhvBoo # 27E4
    begin OBJ_LIST_GENACTOR
    obj_set_int objBehParams2ndByte, 1
    goto common_boo_bhv

glabel bhvMerryGoRoundBoo # 27F4
    begin OBJ_LIST_GENACTOR
    obj_set_int objBehParams2ndByte, 2
    goto common_boo_bhv

glabel bhvGhostHuntBoo # 2804
    begin OBJ_LIST_GENACTOR
common_boo_bhv: # 2808
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objIntangibleTimer, 0
    obj_set_pos
    obj_set_int objDamageOrCoinValue, 2
    set_hitbox 0x008C, 0x0050
    obj_set_float2 0x0028, 0x003C
    obj_set_float objGraphYOffset, 30
    callnative bhv_init_room
    obj_child MODEL_YELLOW_COIN, bhvCoinInsideBoo
    gravity 0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_boo_init
    begin_loop
        callnative bhv_boo_loop
    end_loop

glabel bhvHiddenStaircaseStep # 286C
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data bbh_seg7_collision_staircase_step
    obj_set_int objRoom, 0x0001
    obj_set_float objCollisionDistance, 0x03E8
    obj_set_pos
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvBooBossSpawnedBridge # 2898
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data bbh_seg7_collision_staircase_step
    obj_set_int objRoom, 0x0001
    obj_set_float objCollisionDistance, 0x03E8
    obj_set_pos
    begin_loop
        callnative bhv_boo_boss_spawned_bridge_loop
        callnative load_object_collision_model
    end_loop

glabel bhvBbhTiltingTrapPlatform # 28CC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data bbh_seg7_collision_tilt_floor_platform
    obj_set_pos
    obj_set_int objRoom, 0x0002
    begin_loop
        callnative bhv_bbh_tilting_trap_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvHauntedBookshelf # 28FC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data bbh_seg7_collision_haunted_bookshelf
    obj_set_pos
    obj_set_int objRoom, 0x0006
    begin_loop
        callnative bhv_haunted_bookshelf_loop
        callnative load_object_collision_model
    end_loop

glabel bhvMeshElevator # 292C
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data bbh_seg7_collision_mesh_elevator
    obj_set_pos
    obj_set_int objRoom, 0x000C
    obj_set_int objBehParams2ndByte, 0x0004
    callnative bhv_elevator_init
    begin_loop
        callnative bhv_elevator_loop
        callnative load_object_collision_model
    end_loop

glabel bhvMerryGoRound # 2968
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data bbh_seg7_collision_merry_go_round
    obj_set_float objCollisionDistance, 0x07D0
    obj_set_int objRoom, 0x000A
    begin_loop
        callnative bhv_merry_go_round_loop
        callnative load_object_collision_model
    end_loop

.ifndef VERSION_JP
glabel bhvPlaysMusicTrackWhenTouched # 2998
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_play_music_track_when_touched_loop
    end_loop
.endif

glabel bhvInsideCannon # 2998
    break

glabel bhvBetaBowserAnchor # 299C
    begin OBJ_LIST_DESTRUCTIVE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_pos
    set_hitbox 0x0064, 0x012C
    obj_set_int objIntangibleTimer, 0
    begin_loop
        obj_add_int objAnimState, 1
        callnative bhv_beta_bowser_anchor_loop
    end_loop

glabel bhvStaticCheckeredPlatform # 29CC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data checkerboard_platform_seg8_collision_0800D710
    obj_set_pos
    begin_loop
        callnative bhv_static_checkered_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvUnused2A10 # 29F8
    begin OBJ_LIST_DEFAULT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    break

glabel bhvUnusedFakeStar # 2A08
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        obj_add_int objFaceAnglePitch, 256
        obj_add_int objFaceAngleYaw, 256
    end_loop

# What is this?
    break
    break
    break
    break

glabel bhvStaticObject # 2A30
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    break

glabel bhvUnused2A54 # 2A3C
    begin OBJ_LIST_DEFAULT
    break

glabel bhvCastleFloorTrap # 2A44
    begin OBJ_LIST_DEFAULT
    graph_clear
    callnative bhv_castle_floor_trap_init
    begin_loop
        callnative bhv_castle_floor_trap_loop
    end_loop

glabel bhvFloorTrapInCastle # 2A64
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data inside_castle_seg7_collision_floor_trap
    begin_loop
        callnative bhv_floor_trap_in_castle_loop
        callnative load_object_collision_model
    end_loop

glabel bhvTree # 2A8C
    begin OBJ_LIST_POLELIKE
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objInteractType, 0x40
    set_hitbox 0x0050, 0x01F4
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative BehClimbDetectLoop
    end_loop

glabel bhvSparkle # 2AB8
    begin OBJ_LIST_UNIMPORTANT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objAnimState, -1
    begin_repeat 9
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvSparkleSpawn # 2AD8
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_sparkle_spawn_loop
    end_loop

glabel bhvSpecialTripleJumpSparkles # 2AF0
    begin OBJ_LIST_DEFAULT
    obj_bit_clear_int32 objUnkE0, 0x00000008
glabel bhvSomeGfx # 2AFC
    begin OBJ_LIST_UNIMPORTANT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objGraphYOffset, 25
    obj_set_float_rand objVarF4, 0xFFCE, 0x0064
    obj_sum_float objPosX, objPosX, objVarF4
    obj_set_float_rand objVarF4, 0xFFCE, 0x0064
    obj_sum_float objPosZ, objPosZ, objVarF4
    obj_set_float_rand objVarF4, 0xFFCE, 0x0064
    obj_sum_float objPosY, objPosY, objVarF4
    obj_set_int objAnimState, -1
    begin_repeat 12
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvScuttlebug # 2B44
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, scuttlebug_seg6_anims_06015064
    animate 0x00
    gravity 0x0050, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    obj_set_pos
    callnative bhv_init_room
    begin_loop
        callnative bhv_scuttlebug_loop
    end_loop

glabel bhvScuttlebugSpawn # 2B88
    begin OBJ_LIST_SPAWNER
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_scuttlebug_spawn_loop
    end_loop

glabel bhvWhompKingBoss # 2BA0
    begin OBJ_LIST_SURFACE
    obj_set_int objBehParams2ndByte, 1
    obj_set_int objHealth, 0x0003
    goto .Lbeh_whomp_2BD4
glabel bhvSmallWhomp # 2BB4
    begin OBJ_LIST_SURFACE
    obj_set_int objNumLootCoins, 5
.Lbeh_whomp_2BD4: # 2BBC
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, whomp_seg6_anims_06020A04
    collision_data whomp_seg6_collision_06020A0C
    animate 0x00
    gravity 0x0000, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    obj_set_pos
    begin_loop
        callnative bhv_whomp_loop
    end_loop

glabel bhvWaterSplash # 2BFC
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_int objAnimState, -1
    begin_repeat 3
        obj_add_int objAnimState, 1
        callnative bhv_water_splash_loop
        delay 1
        callnative bhv_water_splash_loop
    end_repeat
    begin_repeat 5
        obj_add_int objAnimState, 1
        delay 1
    end_repeat
    obj_bit_clear_int32 objUnkE0, 0x00000040
    deactivate

glabel bhvWaterDrops # 2C48
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    begin_loop
        callnative bhv_water_drops_loop
    end_loop

glabel bhvWaterSurfaceWhiteWave # 2C64
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
.ifndef VERSION_JP
    obj_set_int objFaceAnglePitch, 0
    obj_set_int objFaceAngleYaw, 0
    obj_set_int objFaceAngleRoll, 0
.endif
    callnative bhv_water_surface_white_wave_init
    obj_add_float objPosY, 5
    obj_set_int objAnimState, -1
    begin_repeat 6
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvObjectBubbleRipples # 2C8C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
.ifdef VERSION_JP
    obj_set_float objFaceAnglePitch, 0
    obj_set_float objFaceAngleYaw, 0
    obj_set_float objFaceAngleRoll, 0
.endif
.ifndef VERSION_JP
    obj_set_int objFaceAnglePitch, 0
    obj_set_int objFaceAngleYaw, 0
    obj_set_int objFaceAngleRoll, 0
.endif
    obj_set_int objAnimState, -1
    callnative bhv_object_bubble_ripples_init
    begin_repeat 6
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvSurfaceWaves # 2CBC
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
.ifdef VERSION_JP
    obj_set_float objFaceAnglePitch, 0
    obj_set_float objFaceAngleYaw, 0
    obj_set_float objFaceAngleRoll, 0
.endif
.ifndef VERSION_JP
    obj_set_int objFaceAnglePitch, 0
    obj_set_int objFaceAngleYaw, 0
    obj_set_int objFaceAngleRoll, 0
.endif
    obj_set_int objAnimState, -1
    obj_add_int objAnimState, 1
    begin_loop
        callnative bhv_surface_waves_loop
        obj_add_int objAnimState, 1
        begin_repeat 6
            callnative bhv_surface_waves_loop
        end_repeat
        callnative bhv_surface_waves_loop
    end_loop

glabel bhvWaterSurfaceWhiteWave2 # 2D04
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
.ifdef VERSION_JP
    obj_set_float objFaceAnglePitch, 0
    obj_set_float objFaceAngleYaw, 0
    obj_set_float objFaceAngleRoll, 0
.endif
.ifndef VERSION_JP
    obj_set_int objFaceAnglePitch, 0
    obj_set_int objFaceAngleYaw, 0
    obj_set_int objFaceAngleRoll, 0
.endif
    obj_set_int objAnimState, -1
    begin_repeat 6
        obj_add_int objAnimState, 1
    end_repeat
    deactivate

glabel bhvWavesGenerator # 2D2C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    graph_clear
    begin_repeat 5
        spawn_addr D_8032FE18
    end_repeat_nobreak
    delay 1
    obj_bit_clear_int32 objUnkE0, 0x00000100
    deactivate

glabel bhvSurfaceWaveShrinking # 2D58
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    graph_clear
    begin_repeat 18
        spawn_addr D_8032FDD0
    end_repeat_nobreak
    callnative bhv_surface_wave_shrinking_init
    delay 1
    obj_bit_clear_int32 objUnkE0, 0x00001000
    deactivate

glabel bhvWaterType # 2D8C
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    goto .Lbeh_wave_trail_2DD0
glabel bhvWaveTrailOnSurface # 2D9C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_bit_clear_int32 objUnkE0, 0x00000400
.Lbeh_wave_trail_2DD0: # 2DAC
    obj_set_float objFaceAnglePitch, 0
    obj_set_float objFaceAngleYaw, 0
    obj_set_float objFaceAngleRoll, 0
    obj_set_int objAnimState, -1
    begin_repeat 8
        obj_add_int objAnimState, 1
        callnative bhv_wave_trail_loop
        delay 1
        callnative bhv_wave_trail_loop
    end_repeat
    deactivate

glabel bhvTinyWhiteWindParticle # 2DE0
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_loop
        callnative bhv_white_wind_particle_loop
    end_loop

glabel bhvWindParticle # 2DFC
    begin OBJ_LIST_POLELIKE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_loop
        callnative bhv_white_wind_particle_loop
    end_loop

glabel bhvSnowmanWindBlowing # 2E18
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    begin_loop
        callnative bhv_snowman_wind_blowing_loop
    end_loop

glabel bhvWalkingPenguin # 2E34
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data penguin_seg5_collision_05008B88
    obj_set_int32 objAnimations, penguin_seg5_anims_05008B74
    animate 0x00
    gravity 0x0000, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    scale 600
    obj_set_pos
    begin_loop
        callnative bhv_walking_penguin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvYellowBall # 2E84
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    break

    .align 4
glabel bhvMario # 2EA0
    begin OBJ_LIST_PLAYER
    obj_set_int objIntangibleTimer, 0
    obj_or_int objFlags, OBJ_FLAG_0100
    obj_or_int objUnk94, 0x0001
    set_hitbox 0x0025, 0x00A0
    begin_loop
        callnative try_print_debug_mario_level_info
        callnative bhv_mario_update
        callnative try_do_mario_debug_object_spawn
    end_loop

glabel bhvToadMessage # 2ED8
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, toad_seg6_anims_0600FB58
    animate 0x06
    interact_type INTERACT_TEXT
    set_hitbox 0x0050, 0x0064
    obj_set_int objIntangibleTimer, 0
    callnative bhv_init_room
    callnative bhvToadMessage_init
    begin_loop
        callnative bhvToadMessage_loop
    end_loop

glabel bhvUnlockDoorStar # 2F20
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhvUnlockDoorStar_init
    begin_loop
        callnative bhvUnlockDoorStar_loop
    end_loop

glabel bhvWarps60 # 2F40
    break
glabel bhvWarps64 # 2F44
    break
glabel bhvWarps68 # 2F48
    break
glabel bhvWarps6C # 2F4C
    break
glabel bhvWarps70 # 2F50
    break
glabel bhvWarps74 # 2F54
    break
glabel bhvWarps78 # 2F58
    break
glabel bhvWarps7C # 2F5C
    break
glabel bhvWarps80 # 2F60
    break
glabel bhvWarps84 # 2F64
    break
glabel bhvWarps88 # 2F68
    break
glabel bhvWarps8C # 2F6C
    break
glabel bhvWarps90 # 2F70
    break
glabel bhvWarps94 # 2F74
    break

    .align 4
glabel bhvRandomAnimatedTexture # 2F80
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objGraphYOffset, 0xFFF0
    billboard
    obj_set_int objAnimState, -1
    begin_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvYellowBackgroundInMenu # 2FA0
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative beh_yellow_background_menu_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative beh_yellow_background_menu_loop
    end_loop

glabel bhvMenuButton # 2FC4
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhvMenuButton_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhvMenuButton_loop
    end_loop

glabel bhvMenuButtonManager # 2FE8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_0800 | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhvMenuButtonManager_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhvMenuButtonManager_loop
    end_loop

glabel bhvStarInActSelector # 300C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    begin_loop
        callnative BehStarActSelectorLoop
    end_loop

glabel bhvActSelector # 3028
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative BehActSelectorInit
    begin_loop
        callnative BehActSelectorLoop
    end_loop

glabel bhvMovingYellowCoin # 3048
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    set_hitbox 0x0064, 0x0040
    obj_set_int objInteractType, 0x10
    obj_set_int objIntangibleTimer, 0
    obj_set_int objAnimState, -1
    callnative bhv_moving_yellow_coin_init
    begin_loop
        callnative bhv_moving_yellow_coin_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvMovingBlueCoin # 3084
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_int objIntangibleTimer, 0
    obj_set_int objAnimState, -1
    callnative bhv_moving_blue_coin_init
    begin_loop
        callnative bhv_moving_blue_coin_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvBlueCoinSliding # 30B4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_int objIntangibleTimer, 0
    obj_set_int objAnimState, -1
    callnative bhv_blue_coin_sliding_jumping_init
    begin_loop
        callnative bhv_blue_coin_sliding_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvBlueCoinJumping # 30E4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_int objIntangibleTimer, 0
    obj_set_int objAnimState, -1
    callnative bhv_blue_coin_sliding_jumping_init
    begin_loop
        callnative bhv_blue_coin_jumping_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvSeaweed # 3114
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int32 objAnimations, seaweed_seg6_anims_0600A4D4
    animate 0x00
    callnative bhv_seaweed_init
    begin_loop
    end_loop

glabel bhvSeaweedBundle # 3138
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    drop_floor
    callnative bhv_seaweed_bundle_init
    begin_loop
    end_loop

glabel bhvBobomb # 3154
    begin OBJ_LIST_DESTRUCTIVE
    obj_or_int objFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, bobomb_seg8_anims_0802396C
    drop_floor
    animate 0x00
    obj_set_int objIntangibleTimer, 0
    obj_set_pos
    callnative bhv_bobomb_init
    begin_loop
        callnative bhv_bobomb_loop
    end_loop

glabel bhvBobombFuseSmoke # 318C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_int objAnimState, -1
    callnative bhv_bobomb_fuse_smoke_init
    delay 1
    begin_loop
        callnative BehDustSmokeLoop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvBobombBuddy # 31BC
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, bobomb_seg8_anims_0802396C
    interact_type INTERACT_TEXT
    drop_floor
    set_hitbox 0x0064, 0x003C
    animate 0x00
    obj_set_int objVarFC, 0x0000
    obj_set_pos
    callnative bhv_bobomb_buddy_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_bobomb_buddy_loop
    end_loop

# The only difference between this and the previous behavior are what objFlags and objVarFC are set to, why didn't they just use a jump?
glabel bhvBobombBuddyOpensCannon # 3208
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, bobomb_seg8_anims_0802396C
    interact_type INTERACT_TEXT
    drop_floor
    set_hitbox 0x0064, 0x003C
    animate 0x00
    obj_set_int objVarFC, 0x0001
    obj_set_pos
    callnative bhv_bobomb_buddy_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_bobomb_buddy_loop
    end_loop

glabel bhvCannonClosed # 3254
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data cannon_lid_seg8_collision_08004950
    obj_set_pos
    callnative bhv_cannon_closed_init
    begin_loop
        callnative bhv_cannon_closed_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWhirlpool # 3288
    begin OBJ_LIST_POLELIKE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_whirlpool_init
    begin_loop
        callnative bhv_whirlpool_loop
    end_loop

glabel bhvJetStream # 32A8
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_jet_stream_loop
    end_loop

glabel bhvMessagePanel # 32C0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data wooden_signpost_seg3_collision_0302DD80
    interact_type INTERACT_TEXT
    obj_set_int objUnk190, 0x1000
    drop_floor
    set_hitbox 0x0096, 0x0050
    obj_set_int objVarF4, 0
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative load_object_collision_model
        obj_set_int objInteractStatus, 0
    end_loop

glabel bhvSignOnWall # 3304
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    interact_type INTERACT_TEXT
    obj_set_int objUnk190, 0x1000
    set_hitbox 0x0096, 0x0050
    obj_set_int objVarF4, 0
    begin_loop
        obj_set_int objIntangibleTimer, 0
        obj_set_int objInteractStatus, 0
    end_loop

glabel bhvHomingAmp # 3334
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, amp_seg8_anims_08004034
    animate 0x00
    obj_set_float objGraphYOffset, 0x0028
    obj_set_int objIntangibleTimer, 0
    callnative bhv_homing_amp_init
    begin_loop
        callnative bhv_homing_amp_loop
    end_loop

glabel bhvCirclingAmp # 3368
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, amp_seg8_anims_08004034
    animate 0x00
    obj_set_float objGraphYOffset, 0x0028
    obj_set_int objIntangibleTimer, 0
    callnative bhv_circling_amp_init
    begin_loop
        callnative bhv_circling_amp_loop
    end_loop

glabel bhvButterfly # 339C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, butterfly_seg3_anims_030056B0
    drop_floor
    obj_set_float objGraphYOffset, 0x0005
    callnative bhv_butterfly_init
    begin_loop
        callnative bhv_butterfly_loop
    end_loop

glabel bhvHoot # 33CC
    begin OBJ_LIST_POLELIKE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, hoot_seg5_anims_05005768
    obj_set_int objInteractType, 0x01
    set_hitbox 0x004B, 0x004B
    callnative bhv_hoot_init
    begin_loop
        callnative bhv_hoot_loop
    end_loop

glabel bhvBetaHoldableObject # 3400
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int objInteractType, 0x02 # INTERACT_GRABBABLE
    drop_floor
    set_hitbox 0x0028, 0x0032
    callnative bhv_beta_holdable_object_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_beta_holdable_object_loop
    end_loop

glabel bhvCarrySomething1 # 3434
    begin OBJ_LIST_DEFAULT
    break
glabel bhvCarrySomething2 # 343C
    begin OBJ_LIST_DEFAULT
    break
glabel bhvCarrySomething3 # 3444
    begin OBJ_LIST_DEFAULT
    break
glabel bhvCarrySomething4 # 344C
    begin OBJ_LIST_DEFAULT
    break
glabel bhvCarrySomething5 # 3454
    begin OBJ_LIST_DEFAULT
    break
glabel bhvCarrySomething6 # 345C
    begin OBJ_LIST_DEFAULT
    break

glabel bhvObjectBubble # 3464
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objAnimState, -1
    callnative bhv_object_bubble_init
    obj_set_float_rand objVelY, 0x0003, 0x0006
    obj_set_int_rand_rshift objMoveAngleYaw, 0x0000, 0x0000
    delay 1
    begin_loop
        callnative bhv_object_bubble_loop
    end_loop

glabel bhvObjectWaterWave # 34A4
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objFaceAnglePitch, 0
    obj_set_float objFaceAngleYaw, 0
    obj_set_float objFaceAngleRoll, 0
    obj_set_int objAnimState, -1
    callnative bhv_object_water_wave_init
    obj_add_int objAnimState, 1
    delay 6
    begin_loop
        callnative bhv_object_water_wave_loop
        obj_add_int objAnimState, 1
    begin_repeat 6
        callnative bhv_object_water_wave_loop
    end_repeat
    end_loop

glabel bhvExplosion # 34F0
    begin OBJ_LIST_DESTRUCTIVE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    interact_type INTERACT_DAMAGE
    obj_set_int objDamageOrCoinValue, 2
    obj_set_int objIntangibleTimer, 0
    collision_sphere 0x0096, 0x0096, 0x0096
    obj_set_int objAnimState, -1
    callnative bhv_explosion_init
    begin_loop
        callnative bhv_explosion_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvBobombBullyDeathSmoke # 3538
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_int objAnimState, -1
    callnative bhv_bobomb_bully_death_smoke_init
    delay 1
    begin_loop
        callnative BehDustSmokeLoop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvSmoke # 3568
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, (OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_int objAnimState, -1
    delay 1
    begin_loop
        callnative BehDustSmokeLoop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvBobombExplosionBubble # 3590
    begin OBJ_LIST_DEFAULT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_bobomb_explosion_bubble_init
    obj_add_float_rand objPosX, -50, 100
    obj_add_float_rand objPosY, -50, 100
    obj_add_float_rand objPosZ, -50, 100
    call bhvBobombExplosionBubble3600
    delay 1
    begin_loop
        call bhvBobombExplosionBubble3600
        callnative bhv_bobomb_explosion_bubble_loop
    end_loop

glabel bhvBobombExplosionBubble3600 # 35E0
    obj_add_float_rand objPosX, -2, 4
    obj_add_float_rand objPosZ, -2, 4
    return

glabel bhvRespawner # 35F4
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_respawner_loop
    end_loop

glabel bhvSmallBully # 360C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, bully_seg5_anims_0500470C
    drop_floor
    obj_set_pos
    callnative bhv_small_bully_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_bully_loop
    end_loop

glabel bhvBigBully # 3640
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, bully_seg5_anims_0500470C
    drop_floor
    obj_set_pos
    callnative bhv_big_bully_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_bully_loop
    end_loop

glabel bhvBigBullyWithMinions # 3674
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, bully_seg5_anims_0500470C
    obj_set_pos
    callnative bhv_big_bully_init
    callnative bhv_big_bully_with_minions_init
    begin_loop
        callnative bhv_big_bully_with_minions_loop
    end_loop

glabel bhvSmallChillBully # 36A8
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, chilly_chief_seg6_anims_06003994
    drop_floor
    obj_set_pos
    obj_set_int objVarF4, 0x0010
    callnative bhv_small_bully_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_bully_loop
    end_loop

glabel bhvBigChillBully # 36E0
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, chilly_chief_seg6_anims_06003994
    drop_floor
    obj_set_pos
    obj_set_int objVarF4, 0x0010
    callnative bhv_big_bully_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_bully_loop
    end_loop

glabel bhvJetStreamRingSpawner # 3718
    begin OBJ_LIST_DEFAULT
    unhide
    begin_loop
        callnative bhv_jet_stream_ring_spawner_loop
    end_loop

glabel bhvJetStreamWaterRing # 3730
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int32 objAnimations, water_ring_seg6_anims_06013F7C
    collision_sphere 0x004B, 0x0014, 0x0014
    interact_type INTERACT_WATER_RING
    obj_set_int objDamageOrCoinValue, 2
    obj_set_int objIntangibleTimer, 0
    callnative bhv_jet_stream_water_ring_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_jet_stream_water_ring_loop
    end_loop

glabel bhvMantaRayWaterRing # 3778
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int32 objAnimations, water_ring_seg6_anims_06013F7C
    collision_sphere 0x004B, 0x0014, 0x0014
    interact_type INTERACT_WATER_RING
    obj_set_int objDamageOrCoinValue, 2
    obj_set_int objIntangibleTimer, 0
    callnative bhv_manta_ray_water_ring_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_manta_ray_water_ring_loop
    end_loop

glabel bhvMantaRayRingManager # 37C0
    begin OBJ_LIST_DEFAULT
    begin_loop
    end_loop

glabel bhvBowserBomb # 37CC
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objIntangibleTimer, 0
    collision_sphere 0x0028, 0x0028, 0x0028
    delay 1
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_bowser_bomb_loop
    end_loop

glabel bhvBowserBombExplosion # 37FC
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_float objGraphYOffset, 0xFEE0
    obj_set_int objAnimState, -1
    begin_loop
        callnative bhv_bowser_bomb_explosion_loop
    end_loop

glabel bhvBowserBombSmoke # 3820
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_float objGraphYOffset, 0xFEE0
    obj_set_int objOpacity, 0x00FF
    obj_set_int objAnimState, -1
    begin_loop
        callnative bhv_bowser_bomb_smoke_loop
    end_loop

glabel bhvCelebrationStar # 3848
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_celebration_star_init
    begin_loop
        callnative bhv_celebration_star_loop
    end_loop

glabel bhvCelebrationStarSparkle # 3868
    begin OBJ_LIST_UNIMPORTANT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objGraphYOffset, 25
    obj_set_int objAnimState, -1
    begin_loop
        obj_add_int objAnimState, 1
        callnative bhv_celebration_star_sparkle_loop
    end_loop

glabel bhvStarKeyCollectionPuffSpawner # 3890
    begin OBJ_LIST_DEFAULT
    billboard
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objAnimState, -1
    begin_loop
        callnative bhv_star_key_collection_puff_spawner_loop
    end_loop

glabel bhvLllDrawbridgeSpawner # 38B0
    begin OBJ_LIST_DEFAULT
    unhide
    begin_loop
        callnative bhv_lll_drawbridge_spawner_loop
    end_loop

glabel bhvLllDrawbridge # 38C8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data lll_seg7_collision_drawbridge
    begin_loop
        callnative bhv_lll_drawbridge_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSmallBomp # 38F0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wf_seg7_collision_small_bomp
    callnative bhv_small_bomp_init
    begin_loop
        callnative bhv_small_bomp_loop
        callnative load_object_collision_model
    end_loop

glabel bhvLargeBomp # 3920
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wf_seg7_collision_large_bomp
    callnative bhv_large_bomp_init
    begin_loop
        callnative bhv_large_bomp_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWfSlidingPlatform # 3950
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wf_seg7_collision_sliding_brick_platform
    callnative bhv_wf_sliding_platform_init
    begin_loop
        callnative bhv_wf_sliding_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvMoneybag # 3980
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, moneybag_seg6_anims_06005E5C
    drop_floor
    obj_set_pos
    obj_set_int objIntangibleTimer, -1
    callnative bhv_moneybag_init
    begin_loop
        callnative bhv_moneybag_loop
    end_loop

glabel bhvMoneybagHidden # 39B4
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objGraphYOffset, 0x001B
    billboard
    set_hitbox 0x006E, 0x0064
    obj_set_int objIntangibleTimer, 0
    obj_set_int objAnimState, -1
    begin_loop
        obj_add_int objAnimState, 1
        callnative bhv_moneybag_hidden_loop
    end_loop

glabel bhvPitBowlingBall # 39E8
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_float objGraphYOffset, 130
    callnative bhv_bob_pit_bowling_ball_init
    begin_loop
        callnative bhv_bob_pit_bowling_ball_loop
    end_loop

glabel bhvFreeBowlingBall # 3A10
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_float objGraphYOffset, 130
    callnative bhv_free_bowling_ball_init
    begin_loop
        callnative bhv_free_bowling_ball_loop
    end_loop

glabel bhvBowlingBall # 3A38
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_float objGraphYOffset, 130
    callnative bhv_bowling_ball_init
    begin_loop
        callnative bhv_bowling_ball_loop
    end_loop

glabel bhvTtmBowlingBallSpawner # 3A60
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objVarFC, 0x003F
    callnative bhv_generic_bowling_ball_spawner_init
    begin_loop
        callnative bhv_generic_bowling_ball_spawner_loop
    end_loop

glabel bhvBobBowlingBallSpawner # 3A84
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objVarFC, 0x007F
    callnative bhv_generic_bowling_ball_spawner_init
    begin_loop
        callnative bhv_generic_bowling_ball_spawner_loop
    end_loop

glabel bhvThiBowlingBallSpawner # 3AA8
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_thi_bowling_ball_spawner_loop
    end_loop

glabel bhvRrCruiserWing # 3AC0
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_rr_cruiser_wing_init
    begin_loop
        callnative bhv_rr_cruiser_wing_loop
    end_loop

glabel bhvSpindel # 3AE0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data ssl_seg7_collision_spindel
    callnative bhv_spindel_init
    begin_loop
        callnative bhv_spindel_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSslMovingPyramidWall # 3B10
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data ssl_seg7_collision_0702808C
    callnative bhv_ssl_moving_pyramid_wall_init
    begin_loop
        callnative bhv_ssl_moving_pyramid_wall_loop
        callnative load_object_collision_model
    end_loop

glabel bhvPyramidElevator # 3B40
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data ssl_seg7_collision_pyramid_elevator
    obj_set_pos
    obj_set_float objCollisionDistance, 0x4E20
    callnative bhv_pyramid_elevator_init
    begin_loop
        callnative bhv_pyramid_elevator_loop
        callnative load_object_collision_model
    end_loop

glabel bhvPyramidElevatorTrajectoryMarkerBall # 3B78
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    begin_loop
        callnative bhv_pyramid_elevator_trajectory_marker_ball_loop
    end_loop

glabel bhvPyramidTop # 3B94
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data ssl_seg7_collision_pyramid_top
    obj_set_pos
    obj_set_float objCollisionDistance, 0x4E20
    callnative bhv_pyramid_top_init
    begin_loop
        callnative bhv_pyramid_top_loop
        callnative load_object_collision_model
    end_loop

glabel bhvPyramidTopFragment # 3BCC
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_pyramid_top_fragment_init
    begin_loop
        callnative bhv_pyramid_top_fragment_loop
    end_loop

glabel bhvPyramidPillarTouchDetector # 3BEC
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    set_hitbox 0x0032, 0x0032
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_pyramid_pillar_touch_detector_loop
    end_loop

glabel bhvWaterfallSoundLoop # 3C10
    begin OBJ_LIST_DEFAULT
    begin_loop
        callnative BehWaterfallSoundLoop
    end_loop

glabel bhvVolcanoSoundLoop # 3C24
    begin OBJ_LIST_DEFAULT
    begin_loop
        callnative BehVolcanoSoundLoop
    end_loop

glabel bhvCastleFlagWaving # 3C38
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int32 objAnimations, castle_grounds_seg7_anim_flags
    animate 0x00
    callnative BehCastleFlagWavingInit
    begin_loop
    end_loop

glabel bhvBirdsSoundLoop # 3C5C
    begin OBJ_LIST_DEFAULT
    begin_loop
        callnative BehBirdsSoundLoop
    end_loop

glabel bhvAmbientSounds # 3C70
    begin OBJ_LIST_DEFAULT
    callnative bhv_ambient_sounds_init
    begin_loop
    end_loop

glabel bhvSandSoundLoop # 3C84
    begin OBJ_LIST_DEFAULT
    begin_loop
        callnative BehSandSoundLoop
    end_loop

glabel bhvHiddenAt120Stars # 3C98
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data castle_grounds_seg7_collision_cannon_grill
    obj_set_float objCollisionDistance, 0x0FA0
    callnative BehHiddenAt120StarsInit
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSnowmansBottom # 3CC4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int objIntangibleTimer, 0
    callnative bhv_snowmans_bottom_init
    begin_loop
        callnative bhv_snowmans_bottom_loop
    end_loop

glabel bhvSnowmansHead # 3CEC
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_float objGraphYOffset, 0x006E
    callnative bhv_snowmans_head_init
    begin_loop
        callnative bhv_snowmans_head_loop
    end_loop

glabel bhvSnowmansBodyCheckpoint # 3D14
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_snowmans_body_checkpoint_loop
    end_loop

glabel bhvBigSnowmanWhole # 3D2C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objGraphYOffset, 0x00B4
    interact_type INTERACT_TEXT
    set_hitbox 0x00D2, 0x0226
    begin_loop
        obj_set_int objIntangibleTimer, 0
    end_loop

glabel bhvBigBoulder # 3D54
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_float objGraphYOffset, 0x00B4
    callnative bhv_big_boulder_init
    obj_set_float objCollisionDistance, 0x4E20
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_big_boulder_loop
    end_loop

glabel bhvBigBoulderGenerator # 3D80
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_big_boulder_generator_loop
    end_loop

glabel bhvWingCap # 3D98
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_wing_cap_init
    begin_loop
        callnative bhv_wing_vanish_cap_loop
    end_loop

glabel bhvMetalCap # 3DB8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_metal_cap_init
    begin_loop
        callnative bhv_metal_cap_loop
    end_loop

glabel bhvNormalCap # 3DD8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_normal_cap_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_normal_cap_loop
    end_loop

glabel bhvVanishCap # 3DFC
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_vanish_cap_init
    begin_loop
        callnative bhv_wing_vanish_cap_loop
    end_loop

glabel bhvStar # 3E1C
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_init_room
    callnative bhv_collect_star_init
    begin_loop
        callnative bhv_collect_star_loop
    end_loop

glabel bhvStarSpawnCoordinates # 3E44
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_collect_star_init
    callnative bhv_star_spawn_init
    begin_loop
        callnative bhv_star_spawn_loop
    end_loop

glabel bhvHiddenRedCoinStar # 3E6C
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_hidden_red_coin_star_init
    begin_loop
        callnative bhv_hidden_red_coin_star_loop
    end_loop

glabel bhvRedCoin # 3E8C
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_int objIntangibleTimer, 0
    obj_set_int objAnimState, -1
    callnative bhv_init_room
    callnative bhv_red_coin_init
    begin_loop
        callnative bhv_red_coin_loop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvBowserCourseRedCoinStar # 3EC4
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_bowser_course_red_coin_star_loop
    end_loop

glabel bhvHiddenStar # 3EDC
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_hidden_star_init
    begin_loop
        callnative bhv_hidden_star_loop
    end_loop

glabel bhvHiddenStarTrigger # 3EFC
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    set_hitbox 0x0064, 0x0064
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_hidden_star_trigger_loop
    end_loop

glabel bhvTtmRollingLog # 3F20
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data ttm_seg7_collision_pitoune_2
    obj_set_pos
    obj_set_float objCollisionDistance, 0x07D0
    callnative bhv_ttm_rolling_log_init
    begin_loop
        callnative bhv_rolling_log_loop
        callnative load_object_collision_model
    end_loop

glabel bhvLllVolcanoFallingTrap # 3F58
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data lll_seg7_collision_falling_wall
    obj_set_pos
    begin_loop
        callnative bhvLllVolcanoFallingTrap_loop
        callnative load_object_collision_model
    end_loop

glabel bhvLllRollingLog # 3F84
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data lll_seg7_collision_pitoune
    obj_set_pos
    obj_set_float objCollisionDistance, 0x07D0
    callnative bhv_lll_rolling_log_init
    begin_loop
        callnative bhv_rolling_log_loop
        callnative load_object_collision_model
    end_loop

glabel bhv1upWalking # 3FBC
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    collision_sphere 0x001E, 0x001E, 0x0000
    obj_set_float objGraphYOffset, 30
    callnative bhv_1up_common_init
    begin_loop
        callnative bhv_1up_walking_loop
    end_loop

glabel bhv1upRunningAway # 3FF0
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    collision_sphere 0x001E, 0x001E, 0x0000
    obj_set_float objGraphYOffset, 30
    callnative bhv_1up_common_init
    begin_loop
        callnative bhv_1up_running_away_loop
    end_loop

glabel bhv1upSliding # 4024
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    collision_sphere 0x001E, 0x001E, 0x0000
    obj_set_float objGraphYOffset, 30
    callnative bhv_1up_common_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_1up_sliding_loop
    end_loop

glabel bhv1Up # 405C
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    collision_sphere 0x001E, 0x001E, 0x0000
    obj_set_float objGraphYOffset, 30
    callnative bhv_1up_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_1up_loop
    end_loop

glabel bhv1upJumpOnApproach # 4094
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    collision_sphere 0x001E, 0x001E, 0x0000
    obj_set_float objGraphYOffset, 30
    callnative bhv_1up_common_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_1up_jump_on_approach_loop
    end_loop

glabel bhvHidden1up # 40CC
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    collision_sphere 0x001E, 0x001E, 0x0000
    obj_set_float objGraphYOffset, 30
    callnative bhv_1up_common_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_1up_hidden_loop
    end_loop

glabel bhvHidden1upTrigger # 4104
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    set_hitbox 0x0064, 0x0064
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_1up_hidden_trigger_loop
    end_loop

glabel bhvHidden1upInPole # 4128
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    collision_sphere 0x001E, 0x001E, 0x0000
    obj_set_float objGraphYOffset, 30
    callnative bhv_1up_common_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_1up_hidden_in_pole_loop
    end_loop

glabel bhvHidden1upInPoleTrigger # 4160
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    set_hitbox 0x0064, 0x0064
    obj_set_int objIntangibleTimer, 0
    begin_loop
        callnative bhv_1up_hidden_in_pole_trigger_loop
    end_loop

glabel bhvHidden1upInPoleSpawner # 4184
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_1up_hidden_in_pole_spawner_loop
    end_loop

glabel bhvControllablePlatform # 419C
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_0800 | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data hmc_seg7_collision_controllable_platform
    obj_set_pos
    callnative bhv_controllable_platform_init
    begin_loop
        callnative bhv_controllable_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvControllablePlatformSub # 41D0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data hmc_seg7_collision_controllable_platform_sub
    begin_loop
        callnative bhv_controllable_platform_sub_loop
        callnative load_object_collision_model
    end_loop

glabel bhvBreakableBoxSmall # 41F8
    begin OBJ_LIST_DESTRUCTIVE
    obj_or_int objFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_pos
    callnative bhv_breakable_box_small_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_breakable_box_small_loop
    end_loop

glabel bhvSlidingSnowMound # 4224
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data sl_seg7_collision_sliding_snow_mound
    obj_set_pos
    begin_loop
        callnative bhv_sliding_snow_mound_loop
        callnative load_object_collision_model
    end_loop

glabel bhvSnowMoundSpawn # 4250
    begin OBJ_LIST_DEFAULT
    begin_loop
        callnative bhv_snow_mound_spawn_loop
    end_loop

glabel bhvWdwSquareFloatingPlatform # 4264
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wdw_seg7_collision_square_floating_platform
    obj_set_float objVarFC, 0x0040
    obj_set_pos
    begin_loop
        callnative bhv_floating_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvWdwRectangularFloatingPlatform # 4294
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data wdw_seg7_collision_rect_floating_platform
    obj_set_float objVarFC, 0x0040
    obj_set_pos
    begin_loop
        callnative bhv_floating_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvJrbFloatingPlatform # 42C4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    collision_data jrb_seg7_collision_floating_platform
    obj_set_float objVarFC, 0x0040
    obj_set_pos
    begin_loop
        callnative bhv_floating_platform_loop
        callnative load_object_collision_model
    end_loop

glabel bhvArrowLift # 42F4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data wdw_seg7_collision_arrow_lift
    obj_set_int_rand_rshift objVar100, 0x0001, 0x0020
    obj_set_pos
    begin_loop
        callnative bhv_arrow_lift_loop
        callnative load_object_collision_model
    end_loop

glabel bhvOrangeNumber # 4328
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    obj_set_pos
    callnative bhv_orange_number_init
    begin_loop
        callnative bhv_orange_number_loop
    end_loop

glabel bhvMantaRay # 4350
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, manta_seg5_anims_05008EB4
    animate 0x00
    callnative bhv_manta_ray_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative bhv_manta_ray_loop
    end_loop

glabel bhvFallingPillar # 4380
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    callnative bhv_falling_pillar_init
    begin_loop
        callnative bhv_falling_pillar_loop
    end_loop

glabel bhvFallingPillarHitbox # 43A4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    begin_loop
        callnative bhv_falling_pillar_hitbox_loop
    end_loop

glabel bhvPillarBase # 43C0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data jrb_seg7_collision_pillar_base
    begin_loop
        callnative load_object_collision_model
    end_loop

glabel bhvJrbFloatingBox # 43E0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    collision_data jrb_seg7_collision_floating_box
    obj_set_pos
    begin_loop
        callnative bhv_jrb_floating_box_loop
        callnative load_object_collision_model
    end_loop

glabel bhvDecorativePendulum # 440C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative bhv_decorative_pendulum_init
    begin_loop
        callnative bhv_decorative_pendulum_loop
    end_loop

glabel bhvTreasureChestsShip # 442C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    drop_floor
    callnative bhv_treasure_chest_ship_init
    begin_loop
        callnative bhv_treasure_chest_ship_loop
    end_loop

glabel bhvTreasureChestsJrb # 4450
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    drop_floor
    callnative bhv_treasure_chest_jrb_init
    begin_loop
        callnative bhv_treasure_chest_jrb_loop
    end_loop

glabel bhvTreasureChests # 4474
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    drop_floor
    callnative bhv_treasure_chest_init
    begin_loop
        callnative bhv_treasure_chest_loop
    end_loop

glabel bhvTreasureChestBottom # 4498
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    drop_floor
    callnative bhv_treasure_chest_bottom_init
    obj_set_int objIntangibleTimer, -1
    begin_loop
        callnative bhv_treasure_chest_bottom_loop
    end_loop

glabel bhvTreasureChestTop # 44C0
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    begin_loop
        callnative bhv_treasure_chest_top_loop
    end_loop

glabel bhvMips # 44DC
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, mips_seg6_anims_06015634
    obj_set_int objInteractType, 0x02
    drop_floor
    set_hitbox 0x0032, 0x004B
    obj_set_int objIntangibleTimer, 0
    callnative bhv_mips_init
    begin_loop
        callnative bhv_mips_loop
    end_loop

glabel bhvYoshi # 4518
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, yoshi_seg5_anims_05024100
    interact_type INTERACT_TEXT
    drop_floor
    set_hitbox 0x00A0, 0x0096
    animate 0x00
    obj_set_pos
    callnative bhv_yoshi_init
    begin_loop
        obj_set_int objIntangibleTimer, 0
        callnative BehYoshiLoop
    end_loop

glabel bhvKoopa # 4560
    begin OBJ_LIST_PUSHABLE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, koopa_seg6_anims_06011364
    animate 0x09
    obj_set_pos
    gravity 0x0032, 0xFE70, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000
    scale 150
    obj_set_float objVarF4, 1
    callnative bhv_koopa_init
    begin_loop
        callnative bhv_koopa_update
    end_loop

glabel bhvKoopaRaceEndpoint # 45B0
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_child_param 0x0000, MODEL_KOOPA_FLAG, bhvKoopaFlag
    begin_loop
        callnative bhv_koopa_race_endpoint_update
    end_loop

glabel bhvKoopaFlag # 45D8
    begin OBJ_LIST_POLELIKE
    interact_type INTERACT_POLE
    set_hitbox 0x0050, 0x02BC
    obj_set_int objIntangibleTimer, 0
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    drop_floor
    obj_set_int32 objAnimations, koopa_flag_seg6_anims_06001028
    animate 0x00
    begin_loop
        callnative BehClimbDetectLoop
    end_loop

glabel bhvPokey # 4614
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_pos
    gravity 0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_pokey_update
    end_loop

glabel bhvPokeyBodyPart # 4648
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    gravity 0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    billboard
    begin_loop
        callnative bhv_pokey_body_part_update
    end_loop

glabel bhvSwoop # 4678
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, swoop_seg6_anims_060070D0
    obj_set_pos
    gravity 0x0032, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
    callnative bhv_init_room
    scale 0
    begin_loop
        callnative bhv_swoop_update
    end_loop

glabel bhvFlyGuy # 46BC
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, flyguy_seg8_anims_08011A64
    animate 0x00
    obj_set_pos
    gravity 0x0032, 0x0000, 0x0000, 0x0000, 0x03E8, 0x0258, 0x0000, 0x0000
    callnative bhv_init_room
    obj_set_int objUnk190, 0x0080
    obj_set_float objGraphYOffset, 30
    scale 150
    begin_loop
        callnative bhv_fly_guy_update
    end_loop

glabel bhvGoomba # 470C
    begin OBJ_LIST_PUSHABLE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, goomba_seg8_anims_0801DA4C
    obj_set_pos
    gravity 0x0028, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0000, 0x0000, 0x0000
    callnative bhv_goomba_init
    begin_loop
        callnative bhv_goomba_update
    end_loop

glabel bhvGoombaTripletSpawner # 4750
    begin OBJ_LIST_PUSHABLE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    begin_loop
        callnative bhv_goomba_triplet_spawner_update
    end_loop

glabel bhvChainChomp # 476C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, chain_chomp_seg6_anims_06025178
    animate 0x00
    gravity 0x0000, 0xFE70, 0xFFCE, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000
    unhide
    obj_set_pos
    obj_set_float objGraphYOffset, 0x00F0
    scale 200
    obj_child_param 0x0000, MODEL_WOODEN_POST, bhvWoodenPost
    begin_loop
        callnative bhv_chain_chomp_update
    end_loop

glabel bhvChainChompChainPart # 47C4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    gravity 0x0000, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_float objGraphYOffset, 0x0028
    scale 200
    begin_loop
        callnative bhv_chain_chomp_chain_part_update
    end_loop

glabel bhvWoodenPost # 47FC
    begin OBJ_LIST_SURFACE
    collision_data poundable_pole_collision_06002490
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    gravity 0x0000, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_int objNumLootCoins, 5
    drop_floor
    obj_set_pos
    scale 50
    begin_loop
        callnative bhv_wooden_post_update
        callnative load_object_collision_model
    end_loop

glabel bhvChainChompGate # 4848
    begin OBJ_LIST_SURFACE
    collision_data bob_seg7_collision_chain_chomp_gate
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_chain_chomp_gate_init
    begin_loop
        callnative bhv_chain_chomp_gate_update
        callnative load_object_collision_model
    end_loop

glabel bhvWiggler # 4878
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, wiggler_seg5_anims_0500EC8C
    obj_set_pos
    gravity 0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    unhide
    scale 400
    obj_set_float objVarF4, 5000
    begin_loop
        callnative bhv_wiggler_update
    end_loop

glabel bhvWigglerBodyPart # 48C0
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int32 objAnimations, wiggler_seg5_anims_0500C874
    gravity 0x0000, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    scale 400
    begin_loop
        callnative bhv_wiggler_body_part_update
    end_loop

glabel bhvEnemyLakitu # 48F8
    begin OBJ_LIST_PUSHABLE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, lakitu_enemy_seg5_anims_050144D4
    animate 0x00
    obj_set_pos
    gravity 0x0028, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_enemy_lakitu_update
    end_loop

glabel bhvCameraLakitu # 4934
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, lakitu_seg6_anims_060058F8
    animate 0x00
    callnative bhv_init_room
    callnative bhv_camera_lakitu_init
    begin_loop
        callnative bhv_camera_lakitu_update
    end_loop

glabel bhvCloud # 4968
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    obj_set_pos
    obj_set_int objOpacity, 0x00F0
    begin_loop
        callnative bhv_cloud_update
    end_loop

glabel bhvCloudPart # 498C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int objOpacity, 0x00F0
    begin_loop
        callnative bhv_cloud_part_update
    end_loop

glabel bhvSpiny # 49A8
    begin OBJ_LIST_PUSHABLE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, spiny_seg5_anims_05016EAC
    animate 0x00
    gravity 0x0028, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_spiny_update
    end_loop

glabel bhvMontyMole # 49E0
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, monty_mole_seg5_anims_05007248
    animate 0x03
    gravity 0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    unhide
    obj_set_int objIntangibleTimer, -1
    obj_set_float objGraphYOffset, 0xFFC4
    scale 150
    delay 1
    callnative bhv_monty_mole_init
    begin_loop
        callnative bhv_monty_mole_update
    end_loop

glabel bhvMontyMoleHole # 4A38
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    scale 150
    begin_loop
        callnative bhv_monty_mole_hole_update
    end_loop

glabel bhvMontyMoleRock # 4A58
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    gravity 0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_float objGraphYOffset, 0x000A
    scale 200
    begin_loop
        callnative bhv_monty_mole_rock_update
    end_loop

glabel bhvPlatformOnTrack # 4A90
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    gravity 0x0032, 0xFF9C, 0xFFCE, 0x0064, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_init_room
    callnative bhv_platform_on_track_init
    begin_loop
        callnative bhv_platform_on_track_update
        callnative load_object_collision_model
    end_loop

glabel bhvTrackBall # 4AD4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    callnative bhv_init_room
    scale 15
    begin_loop
        callnative bhv_track_ball_update
    end_loop

glabel bhvSeesawPlatform # 4AFC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_seesaw_platform_init
    begin_loop
        callnative bhv_seesaw_platform_update
        callnative load_object_collision_model
    end_loop

glabel bhvFerrisWheelAxle # 4B24
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_add_int objMoveAngleYaw, 0x4000
    callnative bhv_ferris_wheel_axle_init
    begin_loop
        obj_add_int objFaceAngleRoll, 400
        callnative load_object_collision_model
    end_loop

glabel bhvFerrisWheelPlatform # 4B4C
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_ferris_wheel_platform_update
        callnative load_object_collision_model
    end_loop

glabel bhvWaterBombSpawner # 4B6C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    begin_loop
        callnative bhv_water_bomb_spawner_update
    end_loop

glabel bhvWaterBomb # 4B88
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    gravity 0x0078, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative bhv_water_bomb_update
    end_loop

glabel bhvWaterBombShadow # 4BB4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    scale 150
    begin_loop
        callnative bhv_water_bomb_shadow_update
    end_loop

glabel bhvTTCRotatingSolid # 4BD0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_float objCollisionDistance, 0x01C2
    callnative bhv_ttc_rotating_solid_init
    obj_set_int objVarF4, 1
    begin_loop
        callnative bhv_ttc_rotating_solid_update
        callnative load_object_collision_model
    end_loop

glabel bhvTTCPendulum # 4C04
    begin OBJ_LIST_SURFACE
    collision_data ttc_seg7_collision_clock_pendulum
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_float objCollisionDistance, 0x05DC
    callnative bhv_ttc_pendulum_init
    obj_set_float objVarF4, 1
    begin_loop
        callnative bhv_ttc_pendulum_update
        callnative load_object_collision_model
    end_loop

glabel bhvTTCTreadmill # 4C3C
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_float objCollisionDistance, 0x02EE
    callnative bhv_ttc_treadmill_init
    delay 1
    begin_loop
        callnative bhv_ttc_treadmill_update
        callnative obj_compute_vel_xz
        callnative load_object_collision_model
    end_loop

glabel bhvTTCMovingBar # 4C74
    begin OBJ_LIST_SURFACE
    collision_data ttc_seg7_collision_sliding_surface
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_float objCollisionDistance, 0x0226
    callnative bhv_ttc_moving_bar_init
    begin_loop
        callnative bhv_ttc_moving_bar_update
        callnative load_object_collision_model
    end_loop

glabel bhvTTCCog # 4CAC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_float objCollisionDistance, 0x0190
    callnative bhv_ttc_cog_init
    begin_loop
        callnative bhv_ttc_cog_update
        callnative load_object_collision_model
    end_loop

glabel bhvTTCPitBlock # 4CD8
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_float objCollisionDistance, 0x015E
    callnative bhv_ttc_pit_block_init
    begin_loop
        callnative bhv_ttc_pit_block_update
        callnative load_object_collision_model
    end_loop

glabel bhvTTCElevator # 4D08
    begin OBJ_LIST_SURFACE
    collision_data ttc_seg7_collision_clock_platform
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_float objCollisionDistance, 0x0190
    callnative bhv_ttc_elevator_init
    obj_set_float objVarF4, 1
    begin_loop
        callnative bhv_ttc_elevator_update
        callnative load_object_collision_model
    end_loop

glabel bhvTTC2DRotator # 4D44
    begin OBJ_LIST_SURFACE
    collision_data ttc_seg7_collision_clock_main_rotation
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objCollisionDistance, 0x0708
    callnative bhv_ttc_2d_rotator_init
    begin_loop
        callnative bhv_ttc_2d_rotator_update
    end_loop

glabel bhvTTCSpinner # 4D70
    begin OBJ_LIST_SURFACE
    collision_data ttc_seg7_collision_rotating_clock_platform2
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objCollisionDistance, 0x01C2
    begin_loop
        callnative bhv_ttc_spinner_update
        callnative load_object_collision_model
    end_loop

glabel bhvMrBlizzard # 4D9C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, snowman_seg5_anims_0500D118
    animate 0x00
    obj_set_pos
    gravity 0x001E, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_mr_blizzard_init
    obj_set_float objVarF4, 1
    begin_loop
        callnative bhv_mr_blizzard_update
    end_loop

glabel bhvMrBlizzardSnowball # 4DE8
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    gravity 0x001E, 0xFED4, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    scale 200
    obj_add_int objMoveAngleYaw, -0x5B58
    obj_set_float objForwardVel, 5
    obj_set_float objVelY, -1
    obj_set_float objGraphYOffset, 10
    begin_loop
        callnative bhv_mr_blizzard_snowball
    end_loop

glabel bhvSlidingPlatform2 # 4E2C
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    callnative BehSlidingPlatform2Init
    begin_loop
        callnative BehSlidingPlatform2Loop
        callnative load_object_collision_model
    end_loop

glabel bhvOctagonalPlatformRotating # 4E58
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    callnative BehOctagonalPlatformRotatingInit
    begin_loop
        callnative BehOctagonalPlatformRotatingLoop
        callnative load_object_collision_model
    end_loop

glabel bhvAnimatesOnFloorSwitchPress # 4E80
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_float objCollisionDistance, 0x1F40
    callnative BehAnimatesOnFloorSwitchPressInit
    begin_loop
        callnative BehAnimatesOnFloorSwitchPressLoop
        callnative load_object_collision_model
    end_loop

glabel bhvActivatedBackAndForthPlatform # 4EAC
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    callnative bhv_activated_back_and_forth_platform_init
    begin_loop
        callnative bhv_activated_back_and_forth_platform_update
        callnative load_object_collision_model
    end_loop

glabel bhvRecoveryHeart # 4ED8
    begin OBJ_LIST_LEVEL
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_recovery_heart_loop
    end_loop

glabel bhvWaterBombCannon # 4EF0
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative BehWaterBombCannonLoop
    end_loop

glabel bhvCannonBarrelBubbles # 4F08
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative BehCannonBarrelBubblesLoop
    end_loop

glabel bhvUnagi # 4F20
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, unagi_seg5_anims_05012824
    animate 0x06
    obj_set_pos
    scale 300
    obj_set_float objDrawingDistance, 0x1770
    callnative BehUnagiInit
    begin_loop
        callnative BehUnagiLoop
    end_loop

glabel bhvUnagiSubobject # 4F58
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative BehUnagiSubobjectLoop
    end_loop

glabel bhvDorrie # 4F70
    begin OBJ_LIST_SURFACE
    collision_data dorrie_seg6_collision_0600F644
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, dorrie_seg6_anims_0600F638
    obj_set_pos
    obj_set_float objCollisionDistance, 0x7530
    obj_add_float objPosX, 2000
    callnative bhv_init_room
    begin_loop
        callnative bhv_dorrie_update
        callnative load_object_collision_model
    end_loop

glabel bhvHauntedChair # 4FB4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, chair_seg5_anims_05005784
    animate 0x00
    gravity 0x0028, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_pos
    callnative bhv_init_room
    callnative BehHauntedChairInit
    begin_loop
        callnative BehHauntedChairLoop
    end_loop

glabel bhvMadPiano # 5004
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, mad_piano_seg5_anims_05009B14
    gravity 0x0028, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_pos
    obj_add_int objMoveAngleYaw, 0x4000
    callnative bhv_init_room
    begin_loop
        callnative bhv_mad_piano_update
    end_loop

glabel bhvFlyingBookend # 504C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, bookend_seg5_anims_05002540
    animate 0x00
    gravity 0x003C, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_int objMoveFlags, 0
    scale 70
    callnative bhv_init_room
    begin_loop
        callnative BehFlyingBookendLoop
    end_loop

glabel bhvBookendSpawn # 5094
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_init_room
    begin_loop
        callnative BehBookendSpawnLoop
    end_loop

glabel bhvHauntedBookshelfManager # 50B4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_init_room
    begin_loop
        callnative bhv_haunted_bookshelf_manager_loop
    end_loop

glabel bhvBookSwitch # 50D4
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    obj_set_float objGraphYOffset, 30
    obj_add_int objMoveAngleYaw, 0x4000
    callnative bhv_init_room
    begin_loop
        callnative bhv_book_switch_loop
    end_loop

glabel bhvFirePiranhaPlant # 5100
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, piranha_plant_seg6_anims_0601C31C
    animate 0x00
    obj_set_pos
    unhide
    callnative bhv_fire_piranha_plant_init
    begin_loop
        callnative bhv_fire_piranha_plant_update
    end_loop

glabel bhvSmallPiranhaFlame # 5138
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    gravity 0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative BehSmallPiranhaFlameLoop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvFireSpitter # 516C
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    scale 40
    begin_loop
        callnative bhv_fire_spitter_update
    end_loop

glabel bhvFlyguyFlame # 518C
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    billboard
    gravity 0x0000, 0x00C8, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    begin_loop
        callnative BehFlyGuyFlameLoop
        obj_add_int objAnimState, 1
    end_loop

glabel bhvSnufit # 51C0
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    gravity 0x001E, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
    callnative bhv_init_room
    begin_loop
        obj_set_int objVarF4, 0
        callnative BehSnufitLoop
    end_loop

glabel bhvSnufitBalls # 51FC
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    billboard
    gravity 0x000A, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    callnative bhv_init_room
    obj_set_float objGraphYOffset, 0x000A
    scale 10
    begin_loop
        callnative BehSnufitBallsLoop
    end_loop

glabel bhvHorizontalGrindel # 523C
    begin OBJ_LIST_SURFACE
    collision_data ssl_seg7_collision_grindel
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    drop_floor
    obj_set_pos
    gravity 0x0028, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    scale 90
    callnative bhv_horizontal_grindel_init
    begin_loop
        callnative obj_update_floor_and_walls
        callnative bhv_horizontal_grindel_update
        callnative load_object_collision_model
    end_loop

glabel bhvEyerokBoss # 5294
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    begin_loop
        callnative bhv_eyerok_boss_loop
    end_loop

glabel bhvEyerokHand # 52B0
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, eyerok_seg5_anims_050116E4
    animate 0x06
    gravity 0x0096, 0x0000, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_pos
    obj_set_int objAnimState, 3
    begin_loop
        callnative bhv_eyerok_hand_loop
    end_loop

glabel bhvKlepto # 52F0
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, klepto_seg5_anims_05008CFC
    animate 0x00
    gravity 0x0064, 0x0000, 0xFFEC, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_pos
    callnative bhv_klepto_init
    begin_loop
        callnative bhv_klepto_update
    end_loop

glabel bhvBird # 5334
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, birds_seg5_anims_050009E8
    animate 0x00
    unhide
    scale 70
    begin_loop
        callnative bhv_bird_update
    end_loop

glabel bhvRacingPenguin # 5360
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, penguin_seg5_anims_05008B74
    animate 0x03
    gravity 0x012C, 0xFCE0, 0xFFFB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
    scale 400
    callnative bhv_racing_penguin_init
    begin_loop
        callnative bhv_racing_penguin_update
    end_loop

glabel bhvPenguinRaceFinishLine # 53A4
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_penguin_race_finish_line_update
    end_loop

glabel bhvPenguinRaceShortcutCheck # 53BC
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    begin_loop
        callnative bhv_penguin_race_shortcut_check_update
    end_loop

glabel bhvHauntedRoomCheck # 53D4
    begin OBJ_LIST_SURFACE
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    callnative bhv_init_room
    begin_loop
        callnative BehHauntedRoomCheckLoop
    end_loop

glabel bhvHauntedRoomCheckSubobject # 53F4
    begin OBJ_LIST_SURFACE
    collision_data bbh_seg7_collision_coffin
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    callnative bhv_init_room
    begin_loop
        callnative BehHauntedRoomCheckSubobjectLoop
    end_loop

glabel bhvClamShell # 5420
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    drop_floor
    obj_set_int32 objAnimations, clam_shell_seg5_anims_05001744
    obj_set_float objGraphYOffset, 0x000A
    begin_loop
        callnative BehClamShellLoop
    end_loop

glabel bhvSkeeter # 5448
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, skeeter_seg6_anims_06007DE0
    obj_set_pos
    gravity 0x00B4, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x04B0, 0x0000, 0x0000
    begin_loop
        callnative bhv_skeeter_update
    end_loop

glabel bhvSkeeterWave # 5480
    begin OBJ_LIST_UNIMPORTANT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_skeeter_wave_update
    end_loop

glabel bhvSwingPlatform # 5498
    begin OBJ_LIST_SURFACE
    collision_data rr_seg7_collision_pendulum
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_float objCollisionDistance, 0x07D0
    callnative bhv_swing_platform_init
    begin_loop
        callnative bhv_swing_platform_update
        callnative load_object_collision_model
    end_loop

glabel bhvDonutPlatformSpawner # 54CC
    begin OBJ_LIST_SPAWNER
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative bhv_donut_platform_spawner_update
    end_loop

glabel bhvDonutPlatform # 54E4
    begin OBJ_LIST_SURFACE
    collision_data rr_seg7_collision_donut_platform
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    begin_loop
        callnative bhv_donut_platform_update
    end_loop

glabel bhvDDDPole # 5508
    begin OBJ_LIST_POLELIKE
    interact_type INTERACT_POLE
    set_hitbox 0x0050, 0x0320
    obj_set_int objIntangibleTimer, 0
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_pos
    callnative bhv_ddd_pole_init
    obj_set_float objVarF4, 10
    begin_loop
        callnative bhv_ddd_pole_update
        callnative BehClimbDetectLoop
    end_loop

glabel bhvRedCoinStarMarker # 554C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    drop_floor
    scale 150
    obj_set_int objFaceAnglePitch, 0x4000
    obj_add_float objPosY, 60
    callnative bhv_red_coin_star_marker_init
    begin_loop
        obj_add_int objFaceAngleYaw, 0x100
    end_loop

glabel bhvTripletButterfly # 5578
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, butterfly_seg3_anims_030056B0
    animate 0x00
    unhide
    obj_set_pos
    gravity 0x0000, 0x0000, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000
    obj_set_float objVarF4, 1
    begin_loop
        callnative bhv_triplet_butterfly_update
    end_loop

glabel bhvBubba # 55BC
    begin OBJ_LIST_GENACTOR
    obj_or_int objFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_pos
    gravity 0x00C8, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0000, 0x0000, 0x0000
    scale 50
    begin_loop
        callnative BehBubbaLoop
    end_loop

glabel bhvBeginningLakitu # 55F0
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int32 objAnimations, lakitu_seg6_anims_060058F8
    animate 0x00
    obj_set_float objOpacity, 0x0000
    begin_loop
        callnative BehBeginningLakituLoop
    end_loop

glabel bhvBeginningPeach # 5618
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    obj_set_int32 objAnimations, peach_seg5_anims_0501C41C
    animate 0x00
    begin_loop
        callnative BehBeginningPeachLoop
    end_loop

glabel bhvEndBirds1 # 563C
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, birds_seg5_anims_050009E8
    animate 0x00
    begin_loop
        callnative BehEndBirds1Loop
    end_loop

glabel bhvEndBirds2 # 5660
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, (OBJ_FLAG_0010 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)
    obj_set_int32 objAnimations, birds_seg5_anims_050009E8
    animate 0x00
    begin_loop
        callnative BehEndBirds2Loop
    end_loop

glabel bhvIntroScene # 5684
    begin OBJ_LIST_DEFAULT
    obj_or_int objFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE
    begin_loop
        callnative BehIntroSceneLoop
    end_loop

    .align 4
glabel behavior_data_end
