Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
Data Structures | Macros | Functions | Variables
object_helpers.h File Reference
#include "types.h"

Go to the source code of this file.

Data Structures

struct  ChainSegment
 
struct  WaterSplashParams
 
struct  struct802A1230
 
struct  Struct802A272C
 
struct  SpawnParticlesInfo
 

Macros

#define WATER_SPLASH_FLAG_RAND_ANGLE   0x02
 
#define WATER_SPLASH_FLAG_RAND_OFFSET_XZ   0x04
 
#define WATER_SPLASH_FLAG_RAND_OFFSET_XYZ   0x08
 
#define WATER_SPLASH_FLAG_SET_Y_TO_WATER_LEVEL   0x20
 
#define WATER_SPLASH_FLAG_RAND_ANGLE_INCR_PLUS_8000   0x40
 
#define WATER_SPLASH_FLAG_RAND_ANGLE_INCR   0x80
 

Functions

void func_8029D558 (Mat4, struct Object *)
 
void apply_object_scale_to_matrix (struct Object *, Mat4, Mat4)
 
void func_8029D704 (Mat4, Mat4, Mat4)
 
void set_object_held_state (struct Object *, void *)
 
f32 lateral_dist_between_objects (struct Object *, struct Object *)
 
f32 dist_between_objects (struct Object *, struct Object *)
 
void obj_obj_forward_vel_approach_upward (f32, f32)
 
s32 approach_f32_signed (f32 *, f32, f32)
 
f32 approach_f32_symmetric (f32, f32, f32)
 
s16 approach_s16_symmetric (s16 arg0, s16 arg1, s16 arg2)
 
s32 obj_rotate_yaw_toward (s16, s16)
 
s16 angle_to_object (struct Object *, struct Object *)
 
s16 obj_turn_toward_object (struct Object *, struct Object *, s16, s16)
 
void set_object_parent_relative_pos (struct Object *, s16, s16, s16)
 
void set_object_pos (struct Object *, s16, s16, s16)
 
void set_object_angle (struct Object *, s16, s16, s16)
 
struct Objectspawn_object_abs_with_rot (struct Object *, s16, u32, void *, s16, s16, s16, s16, s16, s16)
 
struct Objectspawn_object_rel_with_rot (struct Object *sp20, u32 sp24, void *sp28, s16 sp2E, s16 sp32, s16 sp36, s16 sp3A, s16 sp3E, s16 sp42)
 
struct Objectspawn_water_splash (struct Object *, struct WaterSplashParams *)
 
struct Objectspawn_object_at_origin (struct Object *, s32, u32, void *)
 
struct Objectspawn_object (struct Object *, s32, void *)
 
struct Objecttry_to_spawn_object (s16, f32, struct Object *, s32, void *)
 
struct Objectspawn_object_with_scale (struct Object *, s32, void *, f32)
 
struct Objectspawn_object_relative (s16, s16, s16, s16, struct Object *, s32, void *)
 
struct Objectspawn_object_relative_with_scale (s16, s16, s16, s16, f32, struct Object *, s32, void *)
 
void copy_object_graph_y_offset (struct Object *, struct Object *)
 
void copy_object_pos_and_angle (struct Object *, struct Object *)
 
void copy_object_pos (struct Object *, struct Object *)
 
void func_8029EA0C (struct Object *)
 
void linear_mtxf_mul_vec3f (f32 [4][4], Vec3f, Vec3f)
 
void linear_mtxf_transpose_mul_vec3f (f32 [4][4], Vec3f, Vec3f)
 
void copy_object_scale (struct Object *toObj, struct Object *fromObj)
 
void scale_object_xyz (struct Object *obj, f32 xScale, f32 yScale, f32 zScale)
 
void scale_object (struct Object *, f32)
 
void obj_scale (f32)
 
void set_obj_animation_and_sound_state (s32)
 
void func_8029ED98 (u32, f32)
 
void SetObjAnimation (s32 arg0)
 
void func_8029EE20 (struct Object *a0, u32 *a1, u32 a2)
 
void obj_enable_rendering (void)
 
void obj_disable_rendering (void)
 
void obj_unhide (void)
 
void obj_hide (void)
 
void obj_set_pos_relative (struct Object *MarioObj, f32, f32, f32)
 
void obj_enable_rendering_2 (void)
 
void obj_set_facing_to_move_angles (struct Object *)
 
u32 get_object_list_from_behavior (u32 *a0)
 
struct Objectobj_nearest_object_with_behavior (void *)
 
f32 obj_dist_to_nearest_object_with_behavior (void *)
 
struct Objectobj_find_nearest_object_with_behavior (void *, f32 *)
 
struct Objectfind_unimportant_object (void)
 
struct Objectobj_find_nearby_held_actor (void *, f32)
 
void obj_change_action (s32)
 
void func_8029F684 (f32, f32)
 
void func_8029F6F0 (void)
 
void func_8029F728 (void)
 
s32 func_8029F788 (void)
 
s32 func_8029F828 (void)
 
s32 obj_check_anim_frame (s32)
 
s32 obj_check_anim_frame_in_range (s32, s32)
 
s32 mario_is_in_air_action (void)
 
s32 mario_is_dive_sliding (void)
 
void func_8029FA1C (f32, s32)
 
void func_8029FA5C (s32, s32)
 
void obj_get_thrown_or_placed (f32, f32, s32)
 
void obj_get_dropped (void)
 
void obj_set_model (s32)
 
s32 obj_clear_interact_status_flag (s32)
 
void mark_object_for_deletion (struct Object *)
 Mark an object to be unloaded at the end of the frame. More...
 
void obj_disable (void)
 
void obj_become_intangible (void)
 
void obj_become_tangible (void)
 
void make_object_tangible (struct Object *)
 
void obj_update_floor_height (void)
 
struct Surfaceobj_update_floor_height_and_get_floor (void)
 
void obj_apply_drag_xz (f32)
 
void obj_move_y (f32, f32, f32)
 
s16 abs_angle_diff (s16, s16)
 
void obj_move_xz_using_fvel_and_yaw (void)
 
void obj_move_y_with_terminal_vel (void)
 
void obj_compute_vel_xz (void)
 
f32 func_802A0BF4 (f32, f32, f32, f32)
 
s32 are_objects_collided (struct Object *, struct Object *)
 
void obj_set_behavior (void *)
 
void set_object_behavior (struct Object *, void *)
 
s32 obj_has_behavior (u32 *)
 
s32 object_has_behavior (struct Object *, u32 *)
 
f32 obj_lateral_dist_from_mario_to_home (void)
 
f32 obj_lateral_dist_to_home (void)
 
void obj_set_pos_to_home (void)
 
void obj_set_pos_to_home_and_stop (void)
 
void obj_shake_y (f32)
 
void func_802A11B4 (struct Object *, s32)
 
void obj_set_billboard (struct Object *a0)
 
void obj_set_hitbox_radius_and_height (f32, f32)
 
void obj_set_hurtbox_radius_and_height (f32, f32)
 
void spawn_object_loot_yellow_coins (struct Object *, s32, f32)
 
void obj_spawn_loot_coin_at_mario_pos (void)
 
s32 obj_resolve_wall_collisions (void)
 
void obj_update_floor_and_walls (void)
 
void obj_move_standard (s16)
 
void obj_move_using_vel_and_gravity (void)
 
void obj_move_using_fvel_and_gravity (void)
 
s16 obj_angle_to_home (void)
 
void func_802A2008 (struct Object *, struct Object *)
 
void translate_object_local (struct Object *, s16, s16)
 Transform the vector at localTranslateIndex into the object's local coordinates, and then add it to the vector at posIndex. More...
 
void build_object_transform_from_pos_and_angle (struct Object *, s16, s16)
 
void func_802A2270 (struct Object *)
 
void build_object_transform_relative_to_parent (struct Object *)
 
void obj_rotate_face_angle_using_vel (void)
 
s32 obj_follow_path (UNUSED s32)
 
void chain_segment_init (struct ChainSegment *)
 
f32 random_f32_around_zero (f32)
 
f32 scale_object_random (struct Object *, f32, f32)
 
void translate_object_xyz_random (struct Object *, f32)
 
void translate_object_xz_random (struct Object *, f32)
 
void func_802A2A38 (void)
 
void obj_spawn_particles (struct SpawnParticlesInfo *sp28)
 
s16 obj_reflect_move_angle_off_wall (void)
 

Variables

struct GraphNode ** gLoadedGraphNodes
 
s16 gMarioShotFromCannon
 
s16 D_8035FEE4
 
u8 wdw_seg7_collision_07018528 []
 
voidD_060576FC
 
s8 dddStatus
 

Macro Definition Documentation

◆ WATER_SPLASH_FLAG_RAND_ANGLE

#define WATER_SPLASH_FLAG_RAND_ANGLE   0x02

◆ WATER_SPLASH_FLAG_RAND_ANGLE_INCR

#define WATER_SPLASH_FLAG_RAND_ANGLE_INCR   0x80

◆ WATER_SPLASH_FLAG_RAND_ANGLE_INCR_PLUS_8000

#define WATER_SPLASH_FLAG_RAND_ANGLE_INCR_PLUS_8000   0x40

◆ WATER_SPLASH_FLAG_RAND_OFFSET_XYZ

#define WATER_SPLASH_FLAG_RAND_OFFSET_XYZ   0x08

◆ WATER_SPLASH_FLAG_RAND_OFFSET_XZ

#define WATER_SPLASH_FLAG_RAND_OFFSET_XZ   0x04

◆ WATER_SPLASH_FLAG_SET_Y_TO_WATER_LEVEL

#define WATER_SPLASH_FLAG_SET_Y_TO_WATER_LEVEL   0x20

Function Documentation

◆ abs_angle_diff()

s16 abs_angle_diff ( s16  ,
s16   
)

◆ angle_to_object()

s16 angle_to_object ( struct Object ,
struct Object  
)

◆ apply_object_scale_to_matrix()

void apply_object_scale_to_matrix ( struct Object ,
Mat4  ,
Mat4   
)

◆ approach_f32_signed()

s32 approach_f32_signed ( f32 ,
f32  ,
f32   
)

◆ approach_f32_symmetric()

f32 approach_f32_symmetric ( f32  ,
f32  ,
f32   
)

◆ approach_s16_symmetric()

s16 approach_s16_symmetric ( s16  arg0,
s16  arg1,
s16  arg2 
)

◆ are_objects_collided()

s32 are_objects_collided ( struct Object ,
struct Object  
)

◆ build_object_transform_from_pos_and_angle()

void build_object_transform_from_pos_and_angle ( struct Object ,
s16  ,
s16   
)

◆ build_object_transform_relative_to_parent()

void build_object_transform_relative_to_parent ( struct Object )

Sets scale of gCurrentObject instead of obj. Not exploitable since this

◆ chain_segment_init()

void chain_segment_init ( struct ChainSegment )

◆ copy_object_graph_y_offset()

void copy_object_graph_y_offset ( struct Object ,
struct Object  
)

◆ copy_object_pos()

void copy_object_pos ( struct Object ,
struct Object  
)

◆ copy_object_pos_and_angle()

void copy_object_pos_and_angle ( struct Object ,
struct Object  
)

◆ copy_object_scale()

void copy_object_scale ( struct Object toObj,
struct Object fromObj 
)

◆ dist_between_objects()

f32 dist_between_objects ( struct Object ,
struct Object  
)

◆ find_unimportant_object()

struct Object* find_unimportant_object ( void  )

◆ func_8029D558()

void func_8029D558 ( Mat4  ,
struct Object  
)

◆ func_8029D704()

void func_8029D704 ( Mat4  ,
Mat4  ,
Mat4   
)

◆ func_8029EA0C()

void func_8029EA0C ( struct Object )

◆ func_8029ED98()

void func_8029ED98 ( u32  ,
f32   
)

◆ func_8029EE20()

void func_8029EE20 ( struct Object a0,
u32 a1,
u32  a2 
)

◆ func_8029F684()

void func_8029F684 ( f32  ,
f32   
)

◆ func_8029F6F0()

void func_8029F6F0 ( void  )

◆ func_8029F728()

void func_8029F728 ( void  )

◆ func_8029F788()

s32 func_8029F788 ( void  )

◆ func_8029F828()

s32 func_8029F828 ( void  )

◆ func_8029FA1C()

void func_8029FA1C ( f32  ,
s32   
)

◆ func_8029FA5C()

void func_8029FA5C ( s32  ,
s32   
)

◆ func_802A0BF4()

f32 func_802A0BF4 ( f32  ,
f32  ,
f32  ,
f32   
)

◆ func_802A11B4()

void func_802A11B4 ( struct Object ,
s32   
)

◆ func_802A2008()

void func_802A2008 ( struct Object ,
struct Object  
)

◆ func_802A2270()

void func_802A2270 ( struct Object )

Sets scale of gCurrentObject instead of obj. Not exploitable since this

◆ func_802A2A38()

void func_802A2A38 ( void  )

◆ get_object_list_from_behavior()

u32 get_object_list_from_behavior ( u32 a0)

◆ lateral_dist_between_objects()

f32 lateral_dist_between_objects ( struct Object ,
struct Object  
)

◆ linear_mtxf_mul_vec3f()

void linear_mtxf_mul_vec3f ( f32  [4][4],
Vec3f  ,
Vec3f   
)

◆ linear_mtxf_transpose_mul_vec3f()

void linear_mtxf_transpose_mul_vec3f ( f32  [4][4],
Vec3f  ,
Vec3f   
)

◆ make_object_tangible()

void make_object_tangible ( struct Object )

◆ mario_is_dive_sliding()

s32 mario_is_dive_sliding ( void  )

◆ mario_is_in_air_action()

s32 mario_is_in_air_action ( void  )

◆ mark_object_for_deletion()

void mark_object_for_deletion ( struct Object )

Mark an object to be unloaded at the end of the frame.

This clears all activeFlags. Since some of these flags disable behavior,

◆ obj_angle_to_home()

s16 obj_angle_to_home ( void  )

◆ obj_apply_drag_xz()

void obj_apply_drag_xz ( f32  )

◆ obj_become_intangible()

void obj_become_intangible ( void  )

◆ obj_become_tangible()

void obj_become_tangible ( void  )

◆ obj_change_action()

void obj_change_action ( s32  )

◆ obj_check_anim_frame()

s32 obj_check_anim_frame ( s32  )

◆ obj_check_anim_frame_in_range()

s32 obj_check_anim_frame_in_range ( s32  ,
s32   
)

◆ obj_clear_interact_status_flag()

s32 obj_clear_interact_status_flag ( s32  )

◆ obj_compute_vel_xz()

void obj_compute_vel_xz ( void  )

◆ obj_disable()

void obj_disable ( void  )

◆ obj_disable_rendering()

void obj_disable_rendering ( void  )

◆ obj_dist_to_nearest_object_with_behavior()

f32 obj_dist_to_nearest_object_with_behavior ( void )

◆ obj_enable_rendering()

void obj_enable_rendering ( void  )

◆ obj_enable_rendering_2()

void obj_enable_rendering_2 ( void  )

◆ obj_find_nearby_held_actor()

struct Object* obj_find_nearby_held_actor ( void ,
f32   
)

◆ obj_find_nearest_object_with_behavior()

struct Object* obj_find_nearest_object_with_behavior ( void ,
f32  
)

◆ obj_follow_path()

s32 obj_follow_path ( UNUSED  s32)

◆ obj_get_dropped()

void obj_get_dropped ( void  )

◆ obj_get_thrown_or_placed()

void obj_get_thrown_or_placed ( f32  ,
f32  ,
s32   
)

◆ obj_has_behavior()

s32 obj_has_behavior ( u32 )

◆ obj_hide()

void obj_hide ( void  )

◆ obj_lateral_dist_from_mario_to_home()

f32 obj_lateral_dist_from_mario_to_home ( void  )

◆ obj_lateral_dist_to_home()

f32 obj_lateral_dist_to_home ( void  )

◆ obj_move_standard()

void obj_move_standard ( s16  )

Because some objects allow these active flags to be set but don't

◆ obj_move_using_fvel_and_gravity()

void obj_move_using_fvel_and_gravity ( void  )

No terminal velocity

◆ obj_move_using_vel_and_gravity()

void obj_move_using_vel_and_gravity ( void  )

No terminal velocity

◆ obj_move_xz_using_fvel_and_yaw()

void obj_move_xz_using_fvel_and_yaw ( void  )

◆ obj_move_y()

void obj_move_y ( f32  ,
f32  ,
f32   
)

We only handle floor collision if the object does not enter

◆ obj_move_y_with_terminal_vel()

void obj_move_y_with_terminal_vel ( void  )

◆ obj_nearest_object_with_behavior()

struct Object* obj_nearest_object_with_behavior ( void )

◆ obj_obj_forward_vel_approach_upward()

void obj_obj_forward_vel_approach_upward ( f32  ,
f32   
)

◆ obj_reflect_move_angle_off_wall()

s16 obj_reflect_move_angle_off_wall ( void  )

◆ obj_resolve_wall_collisions()

s32 obj_resolve_wall_collisions ( void  )

◆ obj_rotate_face_angle_using_vel()

void obj_rotate_face_angle_using_vel ( void  )

◆ obj_rotate_yaw_toward()

s32 obj_rotate_yaw_toward ( s16  ,
s16   
)

◆ obj_scale()

void obj_scale ( f32  )

◆ obj_set_behavior()

void obj_set_behavior ( void )

◆ obj_set_billboard()

void obj_set_billboard ( struct Object a0)

◆ obj_set_facing_to_move_angles()

void obj_set_facing_to_move_angles ( struct Object )

◆ obj_set_hitbox_radius_and_height()

void obj_set_hitbox_radius_and_height ( f32  ,
f32   
)

◆ obj_set_hurtbox_radius_and_height()

void obj_set_hurtbox_radius_and_height ( f32  ,
f32   
)

◆ obj_set_model()

void obj_set_model ( s32  )

◆ obj_set_pos_relative()

void obj_set_pos_relative ( struct Object MarioObj,
f32  ,
f32  ,
f32   
)

◆ obj_set_pos_to_home()

void obj_set_pos_to_home ( void  )

◆ obj_set_pos_to_home_and_stop()

void obj_set_pos_to_home_and_stop ( void  )

◆ obj_shake_y()

void obj_shake_y ( f32  )

Technically could cause a bit of drift, but not much

◆ obj_spawn_loot_coin_at_mario_pos()

void obj_spawn_loot_coin_at_mario_pos ( void  )

◆ obj_spawn_particles()

void obj_spawn_particles ( struct SpawnParticlesInfo sp28)

◆ obj_turn_toward_object()

s16 obj_turn_toward_object ( struct Object ,
struct Object ,
s16  ,
s16   
)

◆ obj_unhide()

void obj_unhide ( void  )

◆ obj_update_floor_and_walls()

void obj_update_floor_and_walls ( void  )

◆ obj_update_floor_height()

void obj_update_floor_height ( void  )

◆ obj_update_floor_height_and_get_floor()

struct Surface* obj_update_floor_height_and_get_floor ( void  )

◆ object_has_behavior()

s32 object_has_behavior ( struct Object ,
u32  
)

◆ random_f32_around_zero()

f32 random_f32_around_zero ( f32  )

◆ scale_object()

void scale_object ( struct Object ,
f32   
)

◆ scale_object_random()

f32 scale_object_random ( struct Object ,
f32  ,
f32   
)

◆ scale_object_xyz()

void scale_object_xyz ( struct Object obj,
f32  xScale,
f32  yScale,
f32  zScale 
)

◆ set_obj_animation_and_sound_state()

void set_obj_animation_and_sound_state ( s32  )

◆ set_object_angle()

void set_object_angle ( struct Object ,
s16  ,
s16  ,
s16   
)

◆ set_object_behavior()

void set_object_behavior ( struct Object ,
void  
)

◆ set_object_held_state()

void set_object_held_state ( struct Object ,
void  
)

◆ set_object_parent_relative_pos()

void set_object_parent_relative_pos ( struct Object ,
s16  ,
s16  ,
s16   
)

◆ set_object_pos()

void set_object_pos ( struct Object ,
s16  ,
s16  ,
s16   
)

◆ SetObjAnimation()

void SetObjAnimation ( s32  arg0)

◆ spawn_object()

struct Object* spawn_object ( struct Object ,
s32  ,
void  
)

◆ spawn_object_abs_with_rot()

struct Object* spawn_object_abs_with_rot ( struct Object ,
s16  ,
u32  ,
void ,
s16  ,
s16  ,
s16  ,
s16  ,
s16  ,
s16   
)

◆ spawn_object_at_origin()

struct Object* spawn_object_at_origin ( struct Object ,
s32  ,
u32  ,
void  
)

◆ spawn_object_loot_yellow_coins()

void spawn_object_loot_yellow_coins ( struct Object ,
s32  ,
f32   
)

◆ spawn_object_rel_with_rot()

struct Object* spawn_object_rel_with_rot ( struct Object sp20,
u32  sp24,
void sp28,
s16  sp2E,
s16  sp32,
s16  sp36,
s16  sp3A,
s16  sp3E,
s16  sp42 
)

◆ spawn_object_relative()

struct Object* spawn_object_relative ( s16  ,
s16  ,
s16  ,
s16  ,
struct Object ,
s32  ,
void  
)

◆ spawn_object_relative_with_scale()

struct Object* spawn_object_relative_with_scale ( s16  ,
s16  ,
s16  ,
s16  ,
f32  ,
struct Object ,
s32  ,
void  
)

◆ spawn_object_with_scale()

struct Object* spawn_object_with_scale ( struct Object ,
s32  ,
void ,
f32   
)

◆ spawn_water_splash()

struct Object* spawn_water_splash ( struct Object ,
struct WaterSplashParams  
)

◆ translate_object_local()

void translate_object_local ( struct Object ,
s16  ,
s16   
)

Transform the vector at localTranslateIndex into the object's local coordinates, and then add it to the vector at posIndex.

◆ translate_object_xyz_random()

void translate_object_xyz_random ( struct Object ,
f32   
)

◆ translate_object_xz_random()

void translate_object_xz_random ( struct Object ,
f32   
)

◆ try_to_spawn_object()

struct Object* try_to_spawn_object ( s16  ,
f32  ,
struct Object ,
s32  ,
void  
)

Variable Documentation

◆ D_060576FC

void* D_060576FC

◆ D_8035FEE4

s16 D_8035FEE4

◆ dddStatus

s8 dddStatus

◆ gLoadedGraphNodes

struct GraphNode** gLoadedGraphNodes

◆ gMarioShotFromCannon

s16 gMarioShotFromCannon

◆ wdw_seg7_collision_07018528

u8 wdw_seg7_collision_07018528[]