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

Go to the source code of this file.

Data Structures

struct  BullyCollisionData
 

Macros

#define INTERACT_HOOT   /* 0x00000001 */ (1 << 0)
 
#define INTERACT_GRABBABLE   /* 0x00000002 */ (1 << 1)
 
#define INTERACT_DOOR   /* 0x00000004 */ (1 << 2)
 
#define INTERACT_DAMAGE   /* 0x00000008 */ (1 << 3)
 
#define INTERACT_COIN   /* 0x00000010 */ (1 << 4)
 
#define INTERACT_CAP   /* 0x00000020 */ (1 << 5)
 
#define INTERACT_POLE   /* 0x00000040 */ (1 << 6)
 
#define INTERACT_KOOPA   /* 0x00000080 */ (1 << 7)
 
#define INTERACT_UNKNOWN_08   /* 0x00000100 */ (1 << 8)
 
#define INTERACT_BREAKABLE   /* 0x00000200 */ (1 << 9)
 
#define INTERACT_WIND   /* 0x00000400 */ (1 << 10)
 
#define INTERACT_WARP_DOOR   /* 0x00000800 */ (1 << 11)
 
#define INTERACT_STAR_OR_KEY   /* 0x00001000 */ (1 << 12)
 
#define INTERACT_WARP   /* 0x00002000 */ (1 << 13)
 
#define INTERACT_CANNON_BASE   /* 0x00004000 */ (1 << 14)
 
#define INTERACT_BOUNCE_TOP   /* 0x00008000 */ (1 << 15)
 
#define INTERACT_WATER_RING   /* 0x00010000 */ (1 << 16)
 
#define INTERACT_BULLY   /* 0x00020000 */ (1 << 17)
 
#define INTERACT_FLAME   /* 0x00040000 */ (1 << 18)
 
#define INTERACT_KOOPA_SHELL   /* 0x00080000 */ (1 << 19)
 
#define INTERACT_TRAP_TURN   /* 0x00100000 */ (1 << 20)
 
#define INTERACT_MR_BLIZZARD   /* 0x00200000 */ (1 << 21)
 
#define INTERACT_HIT_FROM_BELOW   /* 0x00400000 */ (1 << 22)
 
#define INTERACT_TEXT   /* 0x00800000 */ (1 << 23)
 
#define INTERACT_TORNADO   /* 0x01000000 */ (1 << 24)
 
#define INTERACT_WHIRLPOOL   /* 0x02000000 */ (1 << 25)
 
#define INTERACT_CLAM_OR_BUBBA   /* 0x04000000 */ (1 << 26)
 
#define INTERACT_BBH_ENTRANCE   /* 0x08000000 */ (1 << 27)
 
#define INTERACT_SNUFIT_BULLET   /* 0x10000000 */ (1 << 28)
 
#define INTERACT_SHOCK   /* 0x20000000 */ (1 << 29)
 
#define INTERACT_IGLOO_BARRIER   /* 0x40000000 */ (1 << 30)
 
#define INTERACT_UNKNOWN_31   /* 0x80000000 */ (1 << 31)
 
#define ATTACK_PUNCH   1
 
#define ATTACK_KICK_OR_TRIP   2
 
#define ATTACK_FROM_ABOVE   3
 
#define ATTACK_GROUND_POUND_OR_TWIRL   4
 
#define ATTACK_FAST_ATTACK   5
 
#define ATTACK_FROM_BELOW   6
 
#define INT_STATUS_ATTACK_MASK   0x000000FF
 
#define INT_STATUS_HOOT_GRABBED_BY_MARIO   (1 << 0) /* 0x00000001 */
 
#define INT_STATUS_MARIO_UNK1   (1 << 1) /* 0x00000002 */
 
#define INT_STATUS_MARIO_UNK2   (1 << 2) /* 0x00000004 */
 
#define INT_STATUS_MARIO_DROP_OBJECT   (1 << 3) /* 0x00000008 */
 
#define INT_STATUS_MARIO_UNK4   (1 << 4) /* 0x00000010 */
 
#define INT_STATUS_MARIO_UNK5   (1 << 5) /* 0x00000020 */
 
#define INT_STATUS_MARIO_UNK6   (1 << 6) /* 0x00000040 */
 
#define INT_STATUS_MARIO_UNK7   (1 << 7) /* 0x00000080 */
 
#define INT_STATUS_GRABBED_MARIO   (1 << 11) /* 0x00000800 */
 
#define INT_STATUS_ATTACKED_MARIO   (1 << 13) /* 0x00002000 */
 
#define INT_STATUS_WAS_ATTACKED   (1 << 14) /* 0x00004000 */
 
#define INT_STATUS_INTERACTED   (1 << 15) /* 0x00008000 */
 
#define INT_STATUS_STOP_RIDING   (1 << 22) /* 0x00400000 */
 
#define INT_STATUS_TOUCHED_BOB_OMB   (1 << 23) /* 0x00800000 */
 

Functions

s16 mario_angle_to_object (struct MarioState *, struct Object *)
 
void mario_stop_riding_object (struct MarioState *)
 
void mario_grab_used_object (struct MarioState *)
 
void mario_drop_held_object (struct MarioState *)
 
void mario_throw_held_object (struct MarioState *)
 
void mario_stop_riding_and_holding (struct MarioState *)
 
u32 func_8024C75C (struct MarioState *)
 
void mario_blow_off_cap (struct MarioState *, f32)
 
u32 mario_lose_cap_to_enemy (u32)
 
void mario_retrieve_cap (void)
 
struct Objectmario_get_collided_object (struct MarioState *, u32)
 
u32 mario_check_object_grab (struct MarioState *)
 
u32 get_door_save_file_flag (struct Object *)
 
void mario_process_interactions (struct MarioState *)
 
void mario_handle_special_floors (struct MarioState *)
 
void init_bully_collision_data (struct BullyCollisionData *data, f32 posX, f32 posZ, f32 forwardVel, s16 yaw, f32 conversionRatio, f32 radius)
 
void transfer_bully_speed (struct BullyCollisionData *, struct BullyCollisionData *)
 

Variables

u8 D_03009AC8 []
 

Macro Definition Documentation

◆ ATTACK_FAST_ATTACK

#define ATTACK_FAST_ATTACK   5

◆ ATTACK_FROM_ABOVE

#define ATTACK_FROM_ABOVE   3

◆ ATTACK_FROM_BELOW

#define ATTACK_FROM_BELOW   6

◆ ATTACK_GROUND_POUND_OR_TWIRL

#define ATTACK_GROUND_POUND_OR_TWIRL   4

◆ ATTACK_KICK_OR_TRIP

#define ATTACK_KICK_OR_TRIP   2

◆ ATTACK_PUNCH

#define ATTACK_PUNCH   1

◆ INT_STATUS_ATTACK_MASK

#define INT_STATUS_ATTACK_MASK   0x000000FF

◆ INT_STATUS_ATTACKED_MARIO

#define INT_STATUS_ATTACKED_MARIO   (1 << 13) /* 0x00002000 */

◆ INT_STATUS_GRABBED_MARIO

#define INT_STATUS_GRABBED_MARIO   (1 << 11) /* 0x00000800 */

◆ INT_STATUS_HOOT_GRABBED_BY_MARIO

#define INT_STATUS_HOOT_GRABBED_BY_MARIO   (1 << 0) /* 0x00000001 */

◆ INT_STATUS_INTERACTED

#define INT_STATUS_INTERACTED   (1 << 15) /* 0x00008000 */

◆ INT_STATUS_MARIO_DROP_OBJECT

#define INT_STATUS_MARIO_DROP_OBJECT   (1 << 3) /* 0x00000008 */

◆ INT_STATUS_MARIO_UNK1

#define INT_STATUS_MARIO_UNK1   (1 << 1) /* 0x00000002 */

◆ INT_STATUS_MARIO_UNK2

#define INT_STATUS_MARIO_UNK2   (1 << 2) /* 0x00000004 */

◆ INT_STATUS_MARIO_UNK4

#define INT_STATUS_MARIO_UNK4   (1 << 4) /* 0x00000010 */

◆ INT_STATUS_MARIO_UNK5

#define INT_STATUS_MARIO_UNK5   (1 << 5) /* 0x00000020 */

◆ INT_STATUS_MARIO_UNK6

#define INT_STATUS_MARIO_UNK6   (1 << 6) /* 0x00000040 */

◆ INT_STATUS_MARIO_UNK7

#define INT_STATUS_MARIO_UNK7   (1 << 7) /* 0x00000080 */

◆ INT_STATUS_STOP_RIDING

#define INT_STATUS_STOP_RIDING   (1 << 22) /* 0x00400000 */

◆ INT_STATUS_TOUCHED_BOB_OMB

#define INT_STATUS_TOUCHED_BOB_OMB   (1 << 23) /* 0x00800000 */

◆ INT_STATUS_WAS_ATTACKED

#define INT_STATUS_WAS_ATTACKED   (1 << 14) /* 0x00004000 */

◆ INTERACT_BBH_ENTRANCE

#define INTERACT_BBH_ENTRANCE   /* 0x08000000 */ (1 << 27)

◆ INTERACT_BOUNCE_TOP

#define INTERACT_BOUNCE_TOP   /* 0x00008000 */ (1 << 15)

◆ INTERACT_BREAKABLE

#define INTERACT_BREAKABLE   /* 0x00000200 */ (1 << 9)

◆ INTERACT_BULLY

#define INTERACT_BULLY   /* 0x00020000 */ (1 << 17)

◆ INTERACT_CANNON_BASE

#define INTERACT_CANNON_BASE   /* 0x00004000 */ (1 << 14)

◆ INTERACT_CAP

#define INTERACT_CAP   /* 0x00000020 */ (1 << 5)

◆ INTERACT_CLAM_OR_BUBBA

#define INTERACT_CLAM_OR_BUBBA   /* 0x04000000 */ (1 << 26)

◆ INTERACT_COIN

#define INTERACT_COIN   /* 0x00000010 */ (1 << 4)

◆ INTERACT_DAMAGE

#define INTERACT_DAMAGE   /* 0x00000008 */ (1 << 3)

◆ INTERACT_DOOR

#define INTERACT_DOOR   /* 0x00000004 */ (1 << 2)

◆ INTERACT_FLAME

#define INTERACT_FLAME   /* 0x00040000 */ (1 << 18)

◆ INTERACT_GRABBABLE

#define INTERACT_GRABBABLE   /* 0x00000002 */ (1 << 1)

◆ INTERACT_HIT_FROM_BELOW

#define INTERACT_HIT_FROM_BELOW   /* 0x00400000 */ (1 << 22)

◆ INTERACT_HOOT

#define INTERACT_HOOT   /* 0x00000001 */ (1 << 0)

◆ INTERACT_IGLOO_BARRIER

#define INTERACT_IGLOO_BARRIER   /* 0x40000000 */ (1 << 30)

◆ INTERACT_KOOPA

#define INTERACT_KOOPA   /* 0x00000080 */ (1 << 7)

◆ INTERACT_KOOPA_SHELL

#define INTERACT_KOOPA_SHELL   /* 0x00080000 */ (1 << 19)

◆ INTERACT_MR_BLIZZARD

#define INTERACT_MR_BLIZZARD   /* 0x00200000 */ (1 << 21)

◆ INTERACT_POLE

#define INTERACT_POLE   /* 0x00000040 */ (1 << 6)

◆ INTERACT_SHOCK

#define INTERACT_SHOCK   /* 0x20000000 */ (1 << 29)

◆ INTERACT_SNUFIT_BULLET

#define INTERACT_SNUFIT_BULLET   /* 0x10000000 */ (1 << 28)

◆ INTERACT_STAR_OR_KEY

#define INTERACT_STAR_OR_KEY   /* 0x00001000 */ (1 << 12)

◆ INTERACT_TEXT

#define INTERACT_TEXT   /* 0x00800000 */ (1 << 23)

◆ INTERACT_TORNADO

#define INTERACT_TORNADO   /* 0x01000000 */ (1 << 24)

◆ INTERACT_TRAP_TURN

#define INTERACT_TRAP_TURN   /* 0x00100000 */ (1 << 20)

◆ INTERACT_UNKNOWN_08

#define INTERACT_UNKNOWN_08   /* 0x00000100 */ (1 << 8)

◆ INTERACT_UNKNOWN_31

#define INTERACT_UNKNOWN_31   /* 0x80000000 */ (1 << 31)

◆ INTERACT_WARP

#define INTERACT_WARP   /* 0x00002000 */ (1 << 13)

◆ INTERACT_WARP_DOOR

#define INTERACT_WARP_DOOR   /* 0x00000800 */ (1 << 11)

◆ INTERACT_WATER_RING

#define INTERACT_WATER_RING   /* 0x00010000 */ (1 << 16)

◆ INTERACT_WHIRLPOOL

#define INTERACT_WHIRLPOOL   /* 0x02000000 */ (1 << 25)

◆ INTERACT_WIND

#define INTERACT_WIND   /* 0x00000400 */ (1 << 10)

Function Documentation

◆ func_8024C75C()

u32 func_8024C75C ( struct MarioState )

◆ get_door_save_file_flag()

u32 get_door_save_file_flag ( struct Object )

◆ init_bully_collision_data()

void init_bully_collision_data ( struct BullyCollisionData data,
f32  posX,
f32  posZ,
f32  forwardVel,
s16  yaw,
f32  conversionRatio,
f32  radius 
)

◆ mario_angle_to_object()

s16 mario_angle_to_object ( struct MarioState ,
struct Object  
)

◆ mario_blow_off_cap()

void mario_blow_off_cap ( struct MarioState ,
f32   
)

◆ mario_check_object_grab()

u32 mario_check_object_grab ( struct MarioState )

◆ mario_drop_held_object()

void mario_drop_held_object ( struct MarioState )

◆ mario_get_collided_object()

struct Object* mario_get_collided_object ( struct MarioState ,
u32   
)

◆ mario_grab_used_object()

void mario_grab_used_object ( struct MarioState )

◆ mario_handle_special_floors()

void mario_handle_special_floors ( struct MarioState )

◆ mario_lose_cap_to_enemy()

u32 mario_lose_cap_to_enemy ( u32  )

◆ mario_process_interactions()

void mario_process_interactions ( struct MarioState )

If the kick/punch flags are set and an object collision changes mario's

◆ mario_retrieve_cap()

void mario_retrieve_cap ( void  )

◆ mario_stop_riding_and_holding()

void mario_stop_riding_and_holding ( struct MarioState )

◆ mario_stop_riding_object()

void mario_stop_riding_object ( struct MarioState )

◆ mario_throw_held_object()

void mario_throw_held_object ( struct MarioState )

◆ transfer_bully_speed()

void transfer_bully_speed ( struct BullyCollisionData ,
struct BullyCollisionData  
)

Bully NaN crash

Bully battery

Variable Documentation

◆ D_03009AC8

u8 D_03009AC8[]