Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
Data Structures | Macros | Functions | Variables
obj_behaviors_2.c File Reference
#include <ultra64.h>
#include "sm64.h"
#include "prevent_bss_reordering.h"
#include "behavior_actions.h"
#include "engine/behavior_script.h"
#include "camera.h"
#include "display.h"
#include "engine/math_util.h"
#include "object_helpers.h"
#include "mario_actions_cutscene.h"
#include "behavior_data.h"
#include "mario.h"
#include "engine/surface_collision.h"
#include "obj_behaviors_2.h"
#include "audio/external.h"
#include "seq_ids.h"
#include "level_update.h"
#include "memory.h"
#include "platform_displacement.h"
#include "rendering_graph_node.h"
#include "engine/surface_load.h"
#include "obj_behaviors.h"
#include "object_constants.h"
#include "interaction.h"
#include "object_list_processor.h"
#include "spawn_sound.h"
#include "geo_misc.h"
#include "save_file.h"
#include "room.h"
#include "behaviors/koopa.inc.c"
#include "behaviors/pokey.inc.c"
#include "behaviors/swoop.inc.c"
#include "behaviors/fly_guy.inc.c"
#include "behaviors/goomba.inc.c"
#include "behaviors/chain_chomp.inc.c"
#include "behaviors/wiggler.inc.c"
#include "behaviors/spiny.inc.c"
#include "behaviors/enemy_lakitu.inc.c"
#include "behaviors/cloud.inc.c"
#include "behaviors/camera_lakitu.inc.c"
#include "behaviors/monty_mole.inc.c"
#include "behaviors/platform_on_track.inc.c"
#include "behaviors/seesaw_platform.inc.c"
#include "behaviors/ferris_wheel.inc.c"
#include "behaviors/water_bomb.inc.c"
#include "behaviors/ttc_rotating_solid.inc.c"
#include "behaviors/ttc_pendulum.inc.c"
#include "behaviors/ttc_treadmill.inc.c"
#include "behaviors/ttc_moving_bar.inc.c"
#include "behaviors/ttc_cog.inc.c"
#include "behaviors/ttc_pit_block.inc.c"
#include "behaviors/ttc_elevator.inc.c"
#include "behaviors/ttc_2d_rotator.inc.c"
#include "behaviors/ttc_spinner.inc.c"
#include "behaviors/mr_blizzard.inc.c"
#include "behaviors/activated_bf_plat.inc.c"
#include "behaviors/recovery_heart.inc.c"
#include "behaviors/dorrie.inc.c"
#include "behaviors/mad_piano.inc.c"
#include "behaviors/fire_piranha_plant.inc.c"
#include "behaviors/fire_spitter.inc.c"
#include "behaviors/horizontal_grindel.inc.c"
#include "behaviors/eyerok.inc.c"
#include "behaviors/klepto.inc.c"
#include "behaviors/bird.inc.c"
#include "behaviors/racing_penguin.inc.c"
#include "behaviors/skeeter.inc.c"
#include "behaviors/swing_platform.inc.c"
#include "behaviors/donut_platform.inc.c"
#include "behaviors/ddd_pole.inc.c"
#include "behaviors/reds_star_marker.inc.c"
#include "behaviors/triplet_butterfly.inc.c"

Data Structures

struct  Struct80331A54
 
struct  Struct80331B30
 
struct  RacingPenguinData
 
struct  Struct80331C00
 
struct  Struct80331C38
 
struct  Struct80331C48
 
struct  TripletButterflyActivationData
 
struct  Struct80331874
 

Macros

#define POS_OP_SAVE_POSITION   0
 
#define POS_OP_COMPUTE_VELOCITY   1
 
#define POS_OP_RESTORE_POSITION   2
 
#define o   gCurrentObject
 

Functions

void shelled_koopa_attack_handler (s32 attackType)
 Attack handler for regular-sized shelled koopa. More...
 
void wiggler_jumped_on_attack_handler (void)
 Attack handler for when wiggler is jumped or ground pounded on. More...
 
void huge_goomba_weakly_attacked (void)
 Attack handler for when mario attacks a huge goomba with an attack that doesn't kill it. More...
 
static s32 obj_is_rendering_enabled (void)
 
static s16 obj_get_pitch_from_vel (void)
 
static s32 obj_update_race_proposition_dialog (s16 arg0)
 Show dialog proposing a race. More...
 
static void obj_set_dist_from_home (f32 distFromHome)
 
static s32 obj_is_near_to_and_facing_mario (f32 maxDist, s16 maxAngleDiff)
 
static void obj_perform_position_op (s32 op)
 
static void platform_on_track_update_pos_or_spawn_ball (s32 ballIndex, f32 x, f32 y, f32 z)
 
static void func_802F8D78 (f32 arg0, f32 arg1)
 
static void obj_rotate_yaw_and_bounce_off_walls (s16 targetYaw, s16 turnAmount)
 
static s16 obj_get_pitch_to_home (f32 latDistToHome)
 
static void obj_compute_vel_from_move_pitch (f32 speed)
 
static s32 clamp_s16 (s16 *value, s16 minimum, s16 maximum)
 
static s32 clamp_f32 (f32 *value, f32 minimum, f32 maximum)
 
static void func_802F927C (s32 arg0)
 
static s32 func_802F92B0 (s32 arg0)
 
static s32 func_802F92EC (s32 arg0, s32 arg1)
 
static s32 func_802F932C (s32 arg0)
 
static s32 func_802F9378 (s8 arg0, s8 arg1, u32 sound)
 
static s16 obj_turn_pitch_toward_mario (f32 targetOffsetY, s16 turnAmount)
 
static s32 approach_f32_ptr (f32 *px, f32 target, f32 delta)
 
static s32 obj_forward_vel_approach (f32 target, f32 delta)
 
static s32 obj_y_vel_approach (f32 target, f32 delta)
 
static s32 obj_move_pitch_approach (s16 target, s16 delta)
 
static s32 obj_face_pitch_approach (s16 targetPitch, s16 deltaPitch)
 
static s32 obj_face_yaw_approach (s16 targetYaw, s16 deltaYaw)
 
static s32 obj_face_roll_approach (s16 targetRoll, s16 deltaRoll)
 
static s32 obj_smooth_turn (s16 *angleVel, s32 *angle, s16 targetAngle, f32 targetSpeedProportion, s16 accel, s16 minSpeed, s16 maxSpeed)
 
static void obj_roll_to_match_yaw_turn (s16 targetYaw, s16 maxRoll, s16 rollSpeed)
 
static s16 random_linear_offset (s16 base, s16 range)
 
static s16 random_mod_offset (s16 base, s16 step, s16 mod)
 
static s16 obj_random_fixed_turn (s16 delta)
 
static s32 obj_grow_then_shrink (f32 *scaleVel, f32 shootFireScale, f32 endScale)
 Begin by increasing the object's scale by *scaleVel, and slowly decreasing scaleVel. More...
 
static s32 oscillate_toward (s32 *value, f32 *vel, s32 target, f32 velCloseToZero, f32 accel, f32 slowdown)
 
static void obj_update_blinking (s32 *blinkTimer, s16 baseCycleLength, s16 cycleLengthRange, s16 blinkLength)
 
static s32 obj_resolve_object_collisions (s32 *targetYaw)
 
static s32 obj_bounce_off_walls_edges_objects (s32 *targetYaw)
 
static s32 obj_resolve_collisions_and_turn (s16 targetYaw, s16 turnSpeed)
 
static void obj_die_if_health_non_positive (void)
 
static void obj_unused_die (void)
 
static void obj_set_knockback_action (s32 attackType)
 
static void obj_set_squished_action (void)
 
static s32 obj_die_if_above_lava_and_health_non_positive (void)
 
static s32 obj_handle_attacks (struct ObjectHitbox *hitbox, s32 attackedMarioAction, u8 *attackHandlers)
 
static void obj_act_knockback (UNUSED f32 baseScale)
 
static void obj_act_squished (f32 baseScale)
 
static s32 obj_update_standard_actions (f32 scale)
 
static s32 obj_check_attacks (struct ObjectHitbox *hitbox, s32 attackedMarioAction)
 
static s32 obj_move_for_one_second (s32 endAction)
 
static void treat_far_home_as_mario (f32 threshold)
 If we are far from home (> threshold away), then set oAngleToMario to the angle to home and oDistanceToMario to 25000. More...
 
void BehSlidingPlatform2Init (void)
 
void BehSlidingPlatform2Loop (void)
 
void BehOctagonalPlatformRotatingInit (void)
 
void BehOctagonalPlatformRotatingLoop (void)
 
void BehAnimatesOnFloorSwitchPressInit (void)
 
void BehAnimatesOnFloorSwitchPressLoop (void)
 
void BehCannonBarrelBubblesLoop (void)
 
void func_80308DF0 (void)
 
void func_80308E84 (void)
 
void func_80309004 (void)
 
void BehWaterBombCannonLoop (void)
 
void BehUnagiInit (void)
 
void func_803091C4 (void)
 
void func_803092AC (s32 arg0)
 
void func_80309430 (void)
 
void func_80309530 (void)
 
void BehUnagiLoop (void)
 
void BehUnagiSubobjectLoop (void)
 
void BehHauntedChairInit (void)
 
void func_8030A5D8 (void)
 
void func_8030A968 (void)
 
void BehHauntedChairLoop (void)
 
void func_8030AF6C (void)
 
void func_8030AFF0 (void)
 
void func_8030B110 (void)
 
void func_8030B1C8 (void)
 
void BehFlyingBookendLoop (void)
 
void BehBookendSpawnLoop (void)
 
void func_8030B464 (void)
 
void func_8030B50C (void)
 
void func_8030B5A4 (void)
 
void func_8030B728 (void)
 
void func_8030B794 (void)
 
void bhv_haunted_bookshelf_manager_loop (void)
 
void bhv_book_switch_loop (void)
 
void obj_spit_fire (s16 relativePosX, s16 relativePosY, s16 relativePosZ, f32 scale, s32 model, f32 startSpeed, f32 endSpeed, s16 movePitch)
 
void BehSmallPiranhaFlameLoop (void)
 
void BehFlyGuyFlameLoop (void)
 
GfxGeo18_8030D93C (s32 arg0, struct GraphNode *node, UNUSED void *arg2)
 
GfxGeo18_8030D9AC (s32 arg0, struct GraphNode *node, UNUSED void *arg2)
 
void func_8030C914 (void)
 
void func_8030CA38 (void)
 
void BehSnufitLoop (void)
 
void BehSnufitBallsLoop (void)
 
void BehHauntedRoomCheckLoop (void)
 
void func_80311264 (void)
 
void func_80311520 (void)
 
void BehHauntedRoomCheckSubobjectLoop (void)
 
void func_803116F8 (void)
 
void func_803117F4 (void)
 
void BehClamShellLoop (void)
 
void func_80312F8C (void)
 
void func_80313170 (void)
 
void BehBubbaLoop (void)
 

Variables

u32 wiggler_seg5_anims_0500C874 []
 
u32 spiny_egg_seg5_anims_050157E4 []
 
struct ObjectNodegObjectLists
 A pointer to gObjectListArray. More...
 
u8 jrb_seg7_trajectory_unagi_1 []
 
u8 jrb_seg7_trajectory_unagi_2 []
 
u8 dorrie_seg6_collision_0600FBB8 []
 
u8 dorrie_seg6_collision_0600F644 []
 
u8 ssl_seg7_collision_070284B0 []
 
u8 ssl_seg7_collision_07028274 []
 
u8 ssl_seg7_collision_07028370 []
 
u8 ssl_seg7_collision_070282F8 []
 
u8 ccm_seg7_trajectory_penguin_race []
 
u8 bob_seg7_trajectory_koopa []
 
u8 thi_seg7_trajectory_koopa []
 
u8 rr_seg7_collision_07029038 []
 
u8 ccm_seg7_collision_070163F8 []
 
u8 checkerboard_platform_seg8_collision_0800D710 []
 
u8 bitfs_seg7_collision_070157E0 []
 
u8 rr_seg7_trajectory_0702EC3C []
 
u8 rr_seg7_trajectory_0702ECC0 []
 
u8 ccm_seg7_trajectory_0701669C []
 
u8 bitfs_seg7_trajectory_070159AC []
 
u8 hmc_seg7_trajectory_0702B86C []
 
u8 lll_seg7_trajectory_0702856C []
 
u8 lll_seg7_trajectory_07028660 []
 
u8 rr_seg7_trajectory_0702ED9C []
 
u8 rr_seg7_trajectory_0702EEE0 []
 
u8 bitdw_seg7_collision_0700F70C []
 
u8 bits_seg7_collision_0701ADD8 []
 
u8 bits_seg7_collision_0701AE5C []
 
u8 bob_seg7_collision_bridge []
 
u8 bitfs_seg7_collision_07015928 []
 
u8 rr_seg7_collision_07029750 []
 
u8 rr_seg7_collision_07029858 []
 
u8 vcutm_seg7_collision_0700AC44 []
 
u8 bits_seg7_collision_0701ACAC []
 
u8 bits_seg7_collision_0701AC28 []
 
u8 bitdw_seg7_collision_0700F7F0 []
 
u8 bitdw_seg7_collision_0700F898 []
 
u8 ttc_seg7_collision_07014F70 []
 
u8 ttc_seg7_collision_07015008 []
 
u8 ttc_seg7_collision_070152B4 []
 
u8 ttc_seg7_collision_070153E0 []
 
u8 ttc_seg7_collision_07015584 []
 
u8 ttc_seg7_collision_07015650 []
 
u8 ttc_seg7_collision_07015754 []
 
u8 ttc_seg7_collision_070157D8 []
 
u8 bits_seg7_collision_0701A9A0 []
 
u8 bits_seg7_collision_0701AA0C []
 
u8 bitfs_seg7_collision_07015714 []
 
u8 bitfs_seg7_collision_07015768 []
 
u8 rr_seg7_collision_070295F8 []
 
u8 rr_seg7_collision_0702967C []
 
u8 bitdw_seg7_collision_0700F688 []
 
u8 bits_seg7_collision_0701AA84 []
 
u8 rr_seg7_collision_07029508 []
 
u8 bits_seg7_collision_0701B734 []
 
u8 bits_seg7_collision_0701B59C []
 
u8 bits_seg7_collision_0701B404 []
 
u8 bits_seg7_collision_0701B26C []
 
u8 bits_seg7_collision_0701B0D4 []
 
u8 bitdw_seg7_collision_0700FD9C []
 
u8 bitdw_seg7_collision_0700FC7C []
 
u8 bitdw_seg7_collision_0700FB5C []
 
u8 bitdw_seg7_collision_0700FA3C []
 
u8 bitdw_seg7_collision_0700F91C []
 
u8 rr_seg7_collision_0702A6B4 []
 
u8 rr_seg7_collision_0702A32C []
 
u8 rr_seg7_collision_07029FA4 []
 
u8 rr_seg7_collision_07029C1C []
 
u8 rr_seg7_collision_07029924 []
 
u8 bits_seg7_collision_0701AD54 []
 
u8 bitfs_seg7_collision_07015124 []
 
u32 spiny_seg5_anims_05016EAC []
 
f32 sObjSavedPosX
 
f32 sObjSavedPosY
 
f32 sObjSavedPosZ
 
voidD_80331A24 []
 
voidD_80331A44 []
 
s16 D_80331A4C [] = { 300, -300, 600, -600 }
 
struct Struct80331A54 D_80331A54 [][5]
 
s16 D_80331ACC [] = { 250, 200, 200 }
 
struct ObjectHitbox sUnagiHitbox
 
struct ObjectHitbox sHauntedChairHitbox
 
struct ObjectHitbox sFlyingBookendHitbox
 
struct Struct80331B30 D_80331B30 []
 
struct ObjectHitbox sBookSwitchHitbox
 
struct ObjectHitbox sSnufitHitbox
 
struct ObjectHitbox sSnufitBulletHitbox
 
struct Struct80331C00 D_80331C00 []
 
struct ObjectHitbox sClamShellHitbox
 
static struct ObjectHitbox sBubbaHitbox
 

Macro Definition Documentation

◆ o

#define o   gCurrentObject

◆ POS_OP_COMPUTE_VELOCITY

#define POS_OP_COMPUTE_VELOCITY   1

◆ POS_OP_RESTORE_POSITION

#define POS_OP_RESTORE_POSITION   2

◆ POS_OP_SAVE_POSITION

#define POS_OP_SAVE_POSITION   0

Function Documentation

◆ approach_f32_ptr()

static s32 approach_f32_ptr ( f32 px,
f32  target,
f32  delta 
)
static

◆ BehAnimatesOnFloorSwitchPressInit()

void BehAnimatesOnFloorSwitchPressInit ( void  )

◆ BehAnimatesOnFloorSwitchPressLoop()

void BehAnimatesOnFloorSwitchPressLoop ( void  )

◆ BehBookendSpawnLoop()

void BehBookendSpawnLoop ( void  )

◆ BehBubbaLoop()

void BehBubbaLoop ( void  )

◆ BehCannonBarrelBubblesLoop()

void BehCannonBarrelBubblesLoop ( void  )

◆ BehClamShellLoop()

void BehClamShellLoop ( void  )

◆ BehFlyGuyFlameLoop()

void BehFlyGuyFlameLoop ( void  )

◆ BehFlyingBookendLoop()

void BehFlyingBookendLoop ( void  )

◆ BehHauntedChairInit()

void BehHauntedChairInit ( void  )

◆ BehHauntedChairLoop()

void BehHauntedChairLoop ( void  )

◆ BehHauntedRoomCheckLoop()

void BehHauntedRoomCheckLoop ( void  )

◆ BehHauntedRoomCheckSubobjectLoop()

void BehHauntedRoomCheckSubobjectLoop ( void  )

◆ BehOctagonalPlatformRotatingInit()

void BehOctagonalPlatformRotatingInit ( void  )

◆ BehOctagonalPlatformRotatingLoop()

void BehOctagonalPlatformRotatingLoop ( void  )

◆ BehSlidingPlatform2Init()

void BehSlidingPlatform2Init ( void  )

◆ BehSlidingPlatform2Loop()

void BehSlidingPlatform2Loop ( void  )

◆ BehSmallPiranhaFlameLoop()

void BehSmallPiranhaFlameLoop ( void  )

◆ BehSnufitBallsLoop()

void BehSnufitBallsLoop ( void  )

◆ BehSnufitLoop()

void BehSnufitLoop ( void  )

◆ BehUnagiInit()

void BehUnagiInit ( void  )

◆ BehUnagiLoop()

void BehUnagiLoop ( void  )

◆ BehUnagiSubobjectLoop()

void BehUnagiSubobjectLoop ( void  )

◆ BehWaterBombCannonLoop()

void BehWaterBombCannonLoop ( void  )

◆ bhv_book_switch_loop()

void bhv_book_switch_loop ( void  )

◆ bhv_haunted_bookshelf_manager_loop()

void bhv_haunted_bookshelf_manager_loop ( void  )

◆ clamp_f32()

static s32 clamp_f32 ( f32 value,
f32  minimum,
f32  maximum 
)
static

◆ clamp_s16()

static s32 clamp_s16 ( s16 value,
s16  minimum,
s16  maximum 
)
static

◆ func_802F8D78()

static void func_802F8D78 ( f32  arg0,
f32  arg1 
)
static

◆ func_802F927C()

static void func_802F927C ( s32  arg0)
static

◆ func_802F92B0()

static s32 func_802F92B0 ( s32  arg0)
static

◆ func_802F92EC()

static s32 func_802F92EC ( s32  arg0,
s32  arg1 
)
static

◆ func_802F932C()

static s32 func_802F932C ( s32  arg0)
static

◆ func_802F9378()

static s32 func_802F9378 ( s8  arg0,
s8  arg1,
u32  sound 
)
static

◆ func_80308DF0()

void func_80308DF0 ( void  )

◆ func_80308E84()

void func_80308E84 ( void  )

◆ func_80309004()

void func_80309004 ( void  )

◆ func_803091C4()

void func_803091C4 ( void  )

◆ func_803092AC()

void func_803092AC ( s32  arg0)

◆ func_80309430()

void func_80309430 ( void  )

◆ func_80309530()

void func_80309530 ( void  )

◆ func_8030A5D8()

void func_8030A5D8 ( void  )

◆ func_8030A968()

void func_8030A968 ( void  )

◆ func_8030AF6C()

void func_8030AF6C ( void  )

◆ func_8030AFF0()

void func_8030AFF0 ( void  )

◆ func_8030B110()

void func_8030B110 ( void  )

◆ func_8030B1C8()

void func_8030B1C8 ( void  )

◆ func_8030B464()

void func_8030B464 ( void  )

◆ func_8030B50C()

void func_8030B50C ( void  )

◆ func_8030B5A4()

void func_8030B5A4 ( void  )

◆ func_8030B728()

void func_8030B728 ( void  )

◆ func_8030B794()

void func_8030B794 ( void  )

◆ func_8030C914()

void func_8030C914 ( void  )

◆ func_8030CA38()

void func_8030CA38 ( void  )

◆ func_80311264()

void func_80311264 ( void  )

◆ func_80311520()

void func_80311520 ( void  )

◆ func_803116F8()

void func_803116F8 ( void  )

◆ func_803117F4()

void func_803117F4 ( void  )

◆ func_80312F8C()

void func_80312F8C ( void  )

◆ func_80313170()

void func_80313170 ( void  )

◆ Geo18_8030D93C()

Gfx* Geo18_8030D93C ( s32  arg0,
struct GraphNode node,
UNUSED void arg2 
)

◆ Geo18_8030D9AC()

Gfx* Geo18_8030D9AC ( s32  arg0,
struct GraphNode node,
UNUSED void arg2 
)

◆ huge_goomba_weakly_attacked()

void huge_goomba_weakly_attacked ( void  )

Attack handler for when mario attacks a huge goomba with an attack that doesn't kill it.

From the goomba's perspective, this is the same as the goomba attacking mario.

◆ obj_act_knockback()

static void obj_act_knockback ( UNUSED f32  baseScale)
static

Dies immediately if above lava

◆ obj_act_squished()

static void obj_act_squished ( f32  baseScale)
static

◆ obj_bounce_off_walls_edges_objects()

static s32 obj_bounce_off_walls_edges_objects ( s32 targetYaw)
static

◆ obj_check_attacks()

static s32 obj_check_attacks ( struct ObjectHitbox hitbox,
s32  attackedMarioAction 
)
static

Dies immediately if above lava

◆ obj_compute_vel_from_move_pitch()

static void obj_compute_vel_from_move_pitch ( f32  speed)
static

◆ obj_die_if_above_lava_and_health_non_positive()

static s32 obj_die_if_above_lava_and_health_non_positive ( void  )
static

◆ obj_die_if_health_non_positive()

static void obj_die_if_health_non_positive ( void  )
static

◆ obj_face_pitch_approach()

static s32 obj_face_pitch_approach ( s16  targetPitch,
s16  deltaPitch 
)
static

◆ obj_face_roll_approach()

static s32 obj_face_roll_approach ( s16  targetRoll,
s16  deltaRoll 
)
static

◆ obj_face_yaw_approach()

static s32 obj_face_yaw_approach ( s16  targetYaw,
s16  deltaYaw 
)
static

◆ obj_forward_vel_approach()

static s32 obj_forward_vel_approach ( f32  target,
f32  delta 
)
static

◆ obj_get_pitch_from_vel()

static s16 obj_get_pitch_from_vel ( void  )
static

◆ obj_get_pitch_to_home()

static s16 obj_get_pitch_to_home ( f32  latDistToHome)
static

◆ obj_grow_then_shrink()

static s32 obj_grow_then_shrink ( f32 scaleVel,
f32  shootFireScale,
f32  endScale 
)
static

Begin by increasing the object's scale by *scaleVel, and slowly decreasing scaleVel.

Once the object starts to shrink, wait a bit, and then begin to scale the object toward endScale. The first time it reaches below shootFireScale during this time, return 1. Return -1 once it's reached endScale.

◆ obj_handle_attacks()

static s32 obj_handle_attacks ( struct ObjectHitbox hitbox,
s32  attackedMarioAction,
u8 attackHandlers 
)
static

Die immediately if above lava

◆ obj_is_near_to_and_facing_mario()

static s32 obj_is_near_to_and_facing_mario ( f32  maxDist,
s16  maxAngleDiff 
)
static

◆ obj_is_rendering_enabled()

static s32 obj_is_rendering_enabled ( void  )
static

◆ obj_move_for_one_second()

static s32 obj_move_for_one_second ( s32  endAction)
static

◆ obj_move_pitch_approach()

static s32 obj_move_pitch_approach ( s16  target,
s16  delta 
)
static

◆ obj_perform_position_op()

static void obj_perform_position_op ( s32  op)
static

◆ obj_random_fixed_turn()

static s16 obj_random_fixed_turn ( s16  delta)
static

◆ obj_resolve_collisions_and_turn()

static s32 obj_resolve_collisions_and_turn ( s16  targetYaw,
s16  turnSpeed 
)
static

◆ obj_resolve_object_collisions()

static s32 obj_resolve_object_collisions ( s32 targetYaw)
static

If one object moves after collisions are detected and this code

This should be atan2s(dz, dx)

◆ obj_roll_to_match_yaw_turn()

static void obj_roll_to_match_yaw_turn ( s16  targetYaw,
s16  maxRoll,
s16  rollSpeed 
)
static

◆ obj_rotate_yaw_and_bounce_off_walls()

static void obj_rotate_yaw_and_bounce_off_walls ( s16  targetYaw,
s16  turnAmount 
)
static

◆ obj_set_dist_from_home()

static void obj_set_dist_from_home ( f32  distFromHome)
static

◆ obj_set_knockback_action()

static void obj_set_knockback_action ( s32  attackType)
static

◆ obj_set_squished_action()

static void obj_set_squished_action ( void  )
static

◆ obj_smooth_turn()

static s32 obj_smooth_turn ( s16 angleVel,
s32 angle,
s16  targetAngle,
f32  targetSpeedProportion,
s16  accel,
s16  minSpeed,
s16  maxSpeed 
)
static

◆ obj_spit_fire()

void obj_spit_fire ( s16  relativePosX,
s16  relativePosY,
s16  relativePosZ,
f32  scale,
s32  model,
f32  startSpeed,
f32  endSpeed,
s16  movePitch 
)

◆ obj_turn_pitch_toward_mario()

static s16 obj_turn_pitch_toward_mario ( f32  targetOffsetY,
s16  turnAmount 
)
static

◆ obj_unused_die()

static void obj_unused_die ( void  )
static

◆ obj_update_blinking()

static void obj_update_blinking ( s32 blinkTimer,
s16  baseCycleLength,
s16  cycleLengthRange,
s16  blinkLength 
)
static

◆ obj_update_race_proposition_dialog()

static s32 obj_update_race_proposition_dialog ( s16  arg0)
static

Show dialog proposing a race.

If the player accepts the race, then leave time stop enabled and mario in the text action so that the racing object can wait before starting the race. If the player declines the race, then disable time stop and allow mario to move again.

◆ obj_update_standard_actions()

static s32 obj_update_standard_actions ( f32  scale)
static

◆ obj_y_vel_approach()

static s32 obj_y_vel_approach ( f32  target,
f32  delta 
)
static

◆ oscillate_toward()

static s32 oscillate_toward ( s32 value,
f32 vel,
s32  target,
f32  velCloseToZero,
f32  accel,
f32  slowdown 
)
static

◆ platform_on_track_update_pos_or_spawn_ball()

static void platform_on_track_update_pos_or_spawn_ball ( s32  ballIndex,
f32  x,
f32  y,
f32  z 
)
static

◆ random_linear_offset()

static s16 random_linear_offset ( s16  base,
s16  range 
)
static

◆ random_mod_offset()

static s16 random_mod_offset ( s16  base,
s16  step,
s16  mod 
)
static

◆ shelled_koopa_attack_handler()

void shelled_koopa_attack_handler ( s32  attackType)

Attack handler for regular-sized shelled koopa.

Lose shell and enter lying action.

Because bob-ombs/corkboxes come after koopa in processing order,

◆ treat_far_home_as_mario()

static void treat_far_home_as_mario ( f32  threshold)
static

If we are far from home (> threshold away), then set oAngleToMario to the angle to home and oDistanceToMario to 25000.

If we are close to home, but Mario is far from us (> threshold away), then keep oAngleToMario the same and set oDistanceToMario to 20000. If we are close to both home and Mario, then keep both oAngleToMario and oDistanceToMario the same.

The point of this function is to avoid having to write extra code to get the object to return to home. When mario is far away and the object is far from home, it could theoretically re-use the "approach mario" logic to approach its home instead. However, most objects that use this function handle the far-from-home case separately anyway. This function causes seemingly erroneous behavior in some objects that try to attack mario (e.g. fly guy shooting fire or lunging), especially when combined with partial updates.

◆ wiggler_jumped_on_attack_handler()

void wiggler_jumped_on_attack_handler ( void  )

Attack handler for when wiggler is jumped or ground pounded on.

Stop and enter the jumped on action.

Variable Documentation

◆ bitdw_seg7_collision_0700F688

u8 bitdw_seg7_collision_0700F688[]

◆ bitdw_seg7_collision_0700F70C

u8 bitdw_seg7_collision_0700F70C[]

◆ bitdw_seg7_collision_0700F7F0

u8 bitdw_seg7_collision_0700F7F0[]

◆ bitdw_seg7_collision_0700F898

u8 bitdw_seg7_collision_0700F898[]

◆ bitdw_seg7_collision_0700F91C

u8 bitdw_seg7_collision_0700F91C[]

◆ bitdw_seg7_collision_0700FA3C

u8 bitdw_seg7_collision_0700FA3C[]

◆ bitdw_seg7_collision_0700FB5C

u8 bitdw_seg7_collision_0700FB5C[]

◆ bitdw_seg7_collision_0700FC7C

u8 bitdw_seg7_collision_0700FC7C[]

◆ bitdw_seg7_collision_0700FD9C

u8 bitdw_seg7_collision_0700FD9C[]

◆ bitfs_seg7_collision_07015124

u8 bitfs_seg7_collision_07015124[]

◆ bitfs_seg7_collision_07015714

u8 bitfs_seg7_collision_07015714[]

◆ bitfs_seg7_collision_07015768

u8 bitfs_seg7_collision_07015768[]

◆ bitfs_seg7_collision_070157E0

u8 bitfs_seg7_collision_070157E0

◆ bitfs_seg7_collision_07015928

u8 bitfs_seg7_collision_07015928[]

◆ bitfs_seg7_trajectory_070159AC

u8 bitfs_seg7_trajectory_070159AC[]

◆ bits_seg7_collision_0701A9A0

u8 bits_seg7_collision_0701A9A0[]

◆ bits_seg7_collision_0701AA0C

u8 bits_seg7_collision_0701AA0C[]

◆ bits_seg7_collision_0701AA84

u8 bits_seg7_collision_0701AA84[]

◆ bits_seg7_collision_0701AC28

u8 bits_seg7_collision_0701AC28[]

◆ bits_seg7_collision_0701ACAC

u8 bits_seg7_collision_0701ACAC[]

◆ bits_seg7_collision_0701AD54

u8 bits_seg7_collision_0701AD54[]

◆ bits_seg7_collision_0701ADD8

u8 bits_seg7_collision_0701ADD8[]

◆ bits_seg7_collision_0701AE5C

u8 bits_seg7_collision_0701AE5C[]

◆ bits_seg7_collision_0701B0D4

u8 bits_seg7_collision_0701B0D4[]

◆ bits_seg7_collision_0701B26C

u8 bits_seg7_collision_0701B26C[]

◆ bits_seg7_collision_0701B404

u8 bits_seg7_collision_0701B404[]

◆ bits_seg7_collision_0701B59C

u8 bits_seg7_collision_0701B59C[]

◆ bits_seg7_collision_0701B734

u8 bits_seg7_collision_0701B734[]

◆ bob_seg7_collision_bridge

u8 bob_seg7_collision_bridge[]

◆ bob_seg7_trajectory_koopa

u8 bob_seg7_trajectory_koopa[]

◆ ccm_seg7_collision_070163F8

u8 ccm_seg7_collision_070163F8[]

◆ ccm_seg7_trajectory_0701669C

u8 ccm_seg7_trajectory_0701669C[]

◆ ccm_seg7_trajectory_penguin_race

u8 ccm_seg7_trajectory_penguin_race[]

◆ checkerboard_platform_seg8_collision_0800D710

u8 checkerboard_platform_seg8_collision_0800D710[]

◆ D_80331A24

void* D_80331A24[]
Initial value:
= {
}
u8 rr_seg7_collision_0702967C[]
u8 bits_seg7_collision_0701AA0C[]
u8 bitfs_seg7_collision_07015768[]
u8 bitdw_seg7_collision_0700F688[]
u8 bits_seg7_collision_0701A9A0[]
u8 rr_seg7_collision_070295F8[]
u8 bitfs_seg7_collision_07015714[]
#define NULL
Definition: mbi.h:101

◆ D_80331A44

void* D_80331A44[]
Initial value:
= {
}
u8 rr_seg7_collision_07029508[]
u8 bits_seg7_collision_0701AA84[]

◆ D_80331A4C

s16 D_80331A4C[] = { 300, -300, 600, -600 }

◆ D_80331A54

struct Struct80331A54 D_80331A54[][5]
Initial value:
= {
{
},
{
},
{
},
}
u8 bitdw_seg7_collision_0700FD9C[]
#define MODEL_BITDW_STAIRCASE_FRAME4
Definition: model_ids.h:196
u8 rr_seg7_collision_0702A32C[]
#define MODEL_BITS_STAIRCASE_FRAME3
Definition: model_ids.h:236
#define MODEL_BITDW_STAIRCASE
Definition: model_ids.h:200
#define MODEL_BITS_STAIRCASE_FRAME2
Definition: model_ids.h:235
u8 bits_seg7_collision_0701B26C[]
u8 bits_seg7_collision_0701B59C[]
u8 bitdw_seg7_collision_0700FA3C[]
#define MODEL_BITS_STAIRCASE_FRAME1
Definition: model_ids.h:234
#define MODEL_BITS_STAIRCASE_FRAME4
Definition: model_ids.h:237
u8 bits_seg7_collision_0701B404[]
u8 bitdw_seg7_collision_0700FB5C[]
#define MODEL_RR_TRICKY_TRIANGLES_FRAME2
Definition: model_ids.h:184
#define MODEL_BITS_STAIRCASE
Definition: model_ids.h:233
u8 bits_seg7_collision_0701B0D4[]
u8 rr_seg7_collision_0702A6B4[]
#define MODEL_RR_TRICKY_TRIANGLES_FRAME4
Definition: model_ids.h:186
#define MODEL_BITDW_STAIRCASE_FRAME1
Definition: model_ids.h:199
u8 rr_seg7_collision_07029FA4[]
#define MODEL_RR_TRICKY_TRIANGLES_FRAME3
Definition: model_ids.h:185
u8 bitdw_seg7_collision_0700F91C[]
u8 rr_seg7_collision_07029C1C[]
#define MODEL_RR_TRICKY_TRIANGLES
Definition: model_ids.h:182
#define MODEL_BITDW_STAIRCASE_FRAME2
Definition: model_ids.h:198
u8 rr_seg7_collision_07029924[]
#define MODEL_RR_TRICKY_TRIANGLES_FRAME1
Definition: model_ids.h:183
u8 bits_seg7_collision_0701B734[]
u8 bitdw_seg7_collision_0700FC7C[]
#define MODEL_BITDW_STAIRCASE_FRAME3
Definition: model_ids.h:197

◆ D_80331ACC

s16 D_80331ACC[] = { 250, 200, 200 }

◆ D_80331B30

struct Struct80331B30 D_80331B30[]
Initial value:
= {
{ 52, 150 },
{ 135, 3 },
{ -75, 78 },
}

◆ D_80331C00

struct Struct80331C00 D_80331C00[]
Initial value:
= {
{ 0x019C, 0xFF6A }, { 0x02FA, 0xFF6A }, { 0x0458, 0xFF6A },
{ 0x019C, 0x0096 }, { 0x02FA, 0x0096 }, { 0x0458, 0x0096 },
}

◆ dorrie_seg6_collision_0600F644

u8 dorrie_seg6_collision_0600F644[]

◆ dorrie_seg6_collision_0600FBB8

u8 dorrie_seg6_collision_0600FBB8[]

◆ gObjectLists

struct ObjectNode* gObjectLists

A pointer to gObjectListArray.

Given an object list index idx, gObjectLists[idx] is the head of a doubly linked list of all currently spawned objects in the list.

◆ hmc_seg7_trajectory_0702B86C

u8 hmc_seg7_trajectory_0702B86C[]

◆ jrb_seg7_trajectory_unagi_1

u8 jrb_seg7_trajectory_unagi_1[]

◆ jrb_seg7_trajectory_unagi_2

u8 jrb_seg7_trajectory_unagi_2[]

◆ lll_seg7_trajectory_0702856C

u8 lll_seg7_trajectory_0702856C[]

◆ lll_seg7_trajectory_07028660

u8 lll_seg7_trajectory_07028660[]

◆ rr_seg7_collision_07029038

u8 rr_seg7_collision_07029038[]

◆ rr_seg7_collision_07029508

u8 rr_seg7_collision_07029508[]

◆ rr_seg7_collision_070295F8

u8 rr_seg7_collision_070295F8[]

◆ rr_seg7_collision_0702967C

u8 rr_seg7_collision_0702967C[]

◆ rr_seg7_collision_07029750

u8 rr_seg7_collision_07029750[]

◆ rr_seg7_collision_07029858

u8 rr_seg7_collision_07029858[]

◆ rr_seg7_collision_07029924

u8 rr_seg7_collision_07029924[]

◆ rr_seg7_collision_07029C1C

u8 rr_seg7_collision_07029C1C[]

◆ rr_seg7_collision_07029FA4

u8 rr_seg7_collision_07029FA4[]

◆ rr_seg7_collision_0702A32C

u8 rr_seg7_collision_0702A32C[]

◆ rr_seg7_collision_0702A6B4

u8 rr_seg7_collision_0702A6B4[]

◆ rr_seg7_trajectory_0702EC3C

u8 rr_seg7_trajectory_0702EC3C[]

◆ rr_seg7_trajectory_0702ECC0

u8 rr_seg7_trajectory_0702ECC0[]

◆ rr_seg7_trajectory_0702ED9C

u8 rr_seg7_trajectory_0702ED9C[]

◆ rr_seg7_trajectory_0702EEE0

u8 rr_seg7_trajectory_0702EEE0[]

◆ sBookSwitchHitbox

struct ObjectHitbox sBookSwitchHitbox
Initial value:
= {
0,
0,
99,
0,
20,
30,
20,
30,
}
#define INTERACT_BREAKABLE
Definition: interaction.h:15

◆ sBubbaHitbox

struct ObjectHitbox sBubbaHitbox
static
Initial value:
= {
0,
1,
99,
0,
300,
200,
300,
200,
}
#define INTERACT_CLAM_OR_BUBBA
Definition: interaction.h:32

◆ sClamShellHitbox

struct ObjectHitbox sClamShellHitbox
Initial value:
= {
0,
2,
99,
0,
150,
80,
150,
80,
}
#define INTERACT_CLAM_OR_BUBBA
Definition: interaction.h:32

◆ sFlyingBookendHitbox

struct ObjectHitbox sFlyingBookendHitbox
Initial value:
= {
0,
2,
0,
-1,
60,
30,
40,
30,
}
#define INTERACT_HIT_FROM_BELOW
Definition: interaction.h:28

◆ sHauntedChairHitbox

struct ObjectHitbox sHauntedChairHitbox
Initial value:
= {
0,
2,
0,
0,
50,
50,
50,
50,
}
#define INTERACT_MR_BLIZZARD
Definition: interaction.h:27

◆ sObjSavedPosX

f32 sObjSavedPosX

◆ sObjSavedPosY

f32 sObjSavedPosY

◆ sObjSavedPosZ

f32 sObjSavedPosZ

◆ spiny_egg_seg5_anims_050157E4

u32 spiny_egg_seg5_anims_050157E4[]

◆ spiny_seg5_anims_05016EAC

u32 spiny_seg5_anims_05016EAC[]

◆ ssl_seg7_collision_07028274

u8 ssl_seg7_collision_07028274[]

◆ ssl_seg7_collision_070282F8

u8 ssl_seg7_collision_070282F8[]

◆ ssl_seg7_collision_07028370

u8 ssl_seg7_collision_07028370[]

◆ ssl_seg7_collision_070284B0

u8 ssl_seg7_collision_070284B0[]

◆ sSnufitBulletHitbox

struct ObjectHitbox sSnufitBulletHitbox
Initial value:
= {
50,
1,
0,
0,
100,
50,
100,
50,
}
#define INTERACT_SNUFIT_BULLET
Definition: interaction.h:34

◆ sSnufitHitbox

struct ObjectHitbox sSnufitHitbox
Initial value:
= {
0,
2,
0,
2,
100,
60,
70,
50,
}
#define INTERACT_HIT_FROM_BELOW
Definition: interaction.h:28

◆ sUnagiHitbox

struct ObjectHitbox sUnagiHitbox
Initial value:
= {
50,
3,
99,
0,
150,
150,
150,
150,
}
#define INTERACT_CLAM_OR_BUBBA
Definition: interaction.h:32

◆ thi_seg7_trajectory_koopa

u8 thi_seg7_trajectory_koopa[]

◆ ttc_seg7_collision_07014F70

u8 ttc_seg7_collision_07014F70[]

◆ ttc_seg7_collision_07015008

u8 ttc_seg7_collision_07015008[]

◆ ttc_seg7_collision_070152B4

u8 ttc_seg7_collision_070152B4[]

◆ ttc_seg7_collision_070153E0

u8 ttc_seg7_collision_070153E0[]

◆ ttc_seg7_collision_07015584

u8 ttc_seg7_collision_07015584[]

◆ ttc_seg7_collision_07015650

u8 ttc_seg7_collision_07015650[]

◆ ttc_seg7_collision_07015754

u8 ttc_seg7_collision_07015754[]

◆ ttc_seg7_collision_070157D8

u8 ttc_seg7_collision_070157D8[]

◆ vcutm_seg7_collision_0700AC44

u8 vcutm_seg7_collision_0700AC44[]

◆ wiggler_seg5_anims_0500C874

u32 wiggler_seg5_anims_0500C874[]