From 0e8c3c9003f0e761238b0185bdc248c65b6acd90 Mon Sep 17 00:00:00 2001 From: Arceveti <73617174+Arceveti@users.noreply.github.com> Date: Sat, 7 Aug 2021 18:49:10 -0700 Subject: [PATCH] Fixed many hardcoded object flags to use defines --- data/behavior_data.c | 6 +-- include/object_constants.h | 34 ++++++++--------- src/game/behaviors/bobomb.inc.c | 5 +-- src/game/behaviors/boulder.inc.c | 6 +-- src/game/behaviors/breakable_box_small.inc.c | 12 +++--- src/game/behaviors/bully.inc.c | 14 +++---- src/game/behaviors/cap.inc.c | 18 ++++----- src/game/behaviors/door.inc.c | 2 +- src/game/behaviors/exclamation_box.inc.c | 4 +- src/game/behaviors/fire_piranha_plant.inc.c | 2 +- src/game/behaviors/klepto.inc.c | 8 ++-- src/game/behaviors/mips.inc.c | 7 +--- src/game/behaviors/moneybag.inc.c | 2 +- src/game/behaviors/moving_coin.inc.c | 4 +- src/game/behaviors/mushroom_1up.inc.c | 39 +++++++++----------- src/game/behaviors/scuttlebug.inc.c | 4 +- src/game/behaviors/skeeter.inc.c | 4 +- src/game/behaviors/snowman.inc.c | 21 ++++------- src/game/behaviors/spindrift.inc.c | 4 +- src/game/behaviors/yoshi.inc.c | 4 +- src/game/interaction.h | 4 ++ src/game/mario_actions_cutscene.c | 10 ++--- src/game/object_helpers.c | 8 ++-- 23 files changed, 105 insertions(+), 117 deletions(-) diff --git a/data/behavior_data.c b/data/behavior_data.c index 72ca4b8f..584b4402 100644 --- a/data/behavior_data.c +++ b/data/behavior_data.c @@ -3507,7 +3507,7 @@ UNUSED static const u64 behavior_data_unused_0 = 0; const BehaviorScript bhvMario[] = { BEGIN(OBJ_LIST_PLAYER), SET_INT(oIntangibleTimer, 0), - OR_INT(oFlags, OBJ_FLAG_0100), + OR_INT(oFlags, OBJ_FLAG_PLAYER), OR_INT(oUnk94, 0x0001), SET_HITBOX(/*Radius*/ 37, /*Height*/ 160), BEGIN_LOOP(), @@ -3631,7 +3631,7 @@ const BehaviorScript bhvMenuButton[] = { const BehaviorScript bhvMenuButtonManager[] = { BEGIN(OBJ_LIST_LEVEL), - OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), + OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), CALL_NATIVE(bhv_menu_button_manager_init), BEGIN_LOOP(), SET_INT(oIntangibleTimer, 0), @@ -4828,7 +4828,7 @@ const BehaviorScript bhvHidden1upInPoleSpawner[] = { const BehaviorScript bhvControllablePlatform[] = { BEGIN(OBJ_LIST_SURFACE), - OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), + OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)), LOAD_COLLISION_DATA(hmc_seg7_collision_controllable_platform), SET_HOME(), CALL_NATIVE(bhv_controllable_platform_init), diff --git a/include/object_constants.h b/include/object_constants.h index 76664b23..807ef5e9 100644 --- a/include/object_constants.h +++ b/include/object_constants.h @@ -28,23 +28,23 @@ #define RESPAWN_INFO_DONT_RESPAWN 0xFF /* oFlags */ -#define OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE (1 << 0) // 0x00000001 -#define OBJ_FLAG_MOVE_XZ_USING_FVEL (1 << 1) // 0x00000002 -#define OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL (1 << 2) // 0x00000004 -#define OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW (1 << 3) // 0x00000008 -#define OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE (1 << 4) // 0x00000010 -#define OBJ_FLAG_0020 (1 << 5) // 0x00000020 -#define OBJ_FLAG_COMPUTE_DIST_TO_MARIO (1 << 6) // 0x00000040 -#define OBJ_FLAG_ACTIVE_FROM_AFAR (1 << 7) // 0x00000080 -#define OBJ_FLAG_0100 (1 << 8) // 0x00000100 -#define OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT (1 << 9) // 0x00000200 -#define OBJ_FLAG_HOLDABLE (1 << 10) // 0x00000400 -#define OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM (1 << 11) // 0x00000800 -#define OBJ_FLAG_1000 (1 << 12) // 0x00001000 -#define OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO (1 << 13) // 0x00002000 -#define OBJ_FLAG_PERSISTENT_RESPAWN (1 << 14) // 0x00004000 -#define OBJ_FLAG_8000 (1 << 15) // 0x00008000 -#define OBJ_FLAG_30 (1 << 30) // 0x40000000 +#define OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE (1 << 0) // 0x00000001 +#define OBJ_FLAG_MOVE_XZ_USING_FVEL (1 << 1) // 0x00000002 +#define OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL (1 << 2) // 0x00000004 +#define OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW (1 << 3) // 0x00000008 +#define OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE (1 << 4) // 0x00000010 +#define OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX (1 << 5) // 0x00000020 +#define OBJ_FLAG_COMPUTE_DIST_TO_MARIO (1 << 6) // 0x00000040 +#define OBJ_FLAG_ACTIVE_FROM_AFAR (1 << 7) // 0x00000080 +#define OBJ_FLAG_PLAYER (1 << 8) // 0x00000100 +#define OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT (1 << 9) // 0x00000200 +#define OBJ_FLAG_HOLDABLE (1 << 10) // 0x00000400 +#define OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM (1 << 11) // 0x00000800 +#define OBJ_FLAG_1000 (1 << 12) // 0x00001000 +#define OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO (1 << 13) // 0x00002000 +#define OBJ_FLAG_PERSISTENT_RESPAWN (1 << 14) // 0x00004000 +#define OBJ_FLAG_8000 (1 << 15) // 0x00008000 +#define OBJ_FLAG_HITBOX_WAS_SET (1 << 30) // 0x40000000 /* oHeldState */ #define HELD_FREE 0 diff --git a/src/game/behaviors/bobomb.inc.c b/src/game/behaviors/bobomb.inc.c index 1f6124e4..34eef764 100644 --- a/src/game/behaviors/bobomb.inc.c +++ b/src/game/behaviors/bobomb.inc.c @@ -98,8 +98,7 @@ void bobomb_act_chase_mario(void) { } void bobomb_act_launched(void) { - s16 collisionFlags = 0; - collisionFlags = object_step(); + s16 collisionFlags = object_step(); if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == OBJ_COL_FLAG_GROUNDED) o->oAction = BOBOMB_ACT_EXPLODE; /* bit 0 */ } @@ -203,7 +202,7 @@ void bobomb_thrown_loop(void) { o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE; o->oHeldState = 0; - o->oFlags &= ~0x8; /* bit 3 */ + o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; /* bit 3 */ o->oForwardVel = 25.0; o->oVelY = 20.0; o->oAction = BOBOMB_ACT_LAUNCHED; diff --git a/src/game/behaviors/boulder.inc.c b/src/game/behaviors/boulder.inc.c index 18bd53fb..42e03cfb 100644 --- a/src/game/behaviors/boulder.inc.c +++ b/src/game/behaviors/boulder.inc.c @@ -11,10 +11,8 @@ void bhv_big_boulder_init(void) { } void boulder_act_1(void) { - s16 sp1E; - - sp1E = object_step_without_floor_orient(); - if ((sp1E & 0x09) == 0x01 && o->oVelY > 10.0f) { + s16 collisionFlags = object_step_without_floor_orient(); + if ((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAG_GROUNDED && o->oVelY > 10.0f) { cur_obj_play_sound_2(SOUND_GENERAL_GRINDEL_ROLL); spawn_mist_particles(); } diff --git a/src/game/behaviors/breakable_box_small.inc.c b/src/game/behaviors/breakable_box_small.inc.c index fe962bf0..e2ecc8c6 100644 --- a/src/game/behaviors/breakable_box_small.inc.c +++ b/src/game/behaviors/breakable_box_small.inc.c @@ -29,19 +29,19 @@ void small_breakable_box_spawn_dust(void) { } void small_breakable_box_act_move(void) { - s16 sp1E = object_step(); + s16 collisionFlags = object_step(); obj_attack_collided_from_other_object(o); - if (sp1E == 1) + if (collisionFlags == OBJ_COL_FLAG_GROUNDED) cur_obj_play_sound_2(SOUND_GENERAL_BOX_LANDING_2); - if (sp1E & 1) { + if (collisionFlags & OBJ_COL_FLAG_GROUNDED) { if (o->oForwardVel > 20.0f) { cur_obj_play_sound_2(SOUND_ENV_SLIDING); small_breakable_box_spawn_dust(); } } - if (sp1E & 2) { + if (collisionFlags & OBJ_COL_FLAG_HIT_WALL) { spawn_mist_particles(); spawn_triangle_break_particles(20, MODEL_DIRT_ANIMATION, 0.7f, 3); obj_spawn_yellow_coins(o, 3); @@ -49,7 +49,7 @@ void small_breakable_box_act_move(void) { o->activeFlags = ACTIVE_FLAG_DEACTIVATED; } - obj_check_floor_death(sp1E, sObjFloor); + obj_check_floor_death(collisionFlags, sObjFloor); } void breakable_box_small_released_loop(void) { @@ -106,7 +106,7 @@ void breakable_box_small_get_thrown(void) { cur_obj_enable_rendering(); o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE; o->oHeldState = 0; - o->oFlags &= ~0x08; + o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; o->oForwardVel = 40.0f; o->oVelY = 20.0f; o->oBreakableBoxSmallReleased = 1; diff --git a/src/game/behaviors/bully.inc.c b/src/game/behaviors/bully.inc.c index 21c561a7..3695a847 100644 --- a/src/game/behaviors/bully.inc.c +++ b/src/game/behaviors/bully.inc.c @@ -64,7 +64,7 @@ void bully_check_mario_collision(void) { o->oInteractStatus &= ~INT_STATUS_INTERACTED; o->oAction = BULLY_ACT_KNOCKBACK; - o->oFlags &= ~0x8; /* bit 3 */ + o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; /* bit 3 */ cur_obj_init_animation(3); o->oBullyMarioCollisionAngle = o->oMoveAngleYaw; } @@ -98,7 +98,7 @@ void bully_act_knockback(void) { if (o->oForwardVel < 10.0 && (s32) o->oVelY == 0) { o->oForwardVel = 1.0; o->oBullyKBTimerAndMinionKOCounter++; - o->oFlags |= 0x8; /* bit 3 */ + o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; /* bit 3 */ o->oMoveAngleYaw = o->oFaceAngleYaw; obj_turn_toward_object(o, gMarioObject, 16, 1280); } else @@ -113,7 +113,7 @@ void bully_act_knockback(void) { void bully_act_back_up(void) { if (o->oTimer == 0) { - o->oFlags &= ~0x8; /* bit 3 */ + o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; /* bit 3 */ o->oMoveAngleYaw += 0x8000; } @@ -128,13 +128,13 @@ void bully_act_back_up(void) { if (o->oTimer == 15) { o->oMoveAngleYaw = o->oFaceAngleYaw; - o->oFlags |= 0x8; /* bit 3 */ + o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; /* bit 3 */ o->oAction = BULLY_ACT_PATROL; } } void bully_backup_check(s16 collisionFlags) { - if (!(collisionFlags & 0x8) && o->oAction != BULLY_ACT_KNOCKBACK) /* bit 3 */ + if (!(collisionFlags & OBJ_COL_FLAG_NO_Y_VEL) && o->oAction != BULLY_ACT_KNOCKBACK) /* bit 3 */ { o->oPosX = o->oBullyPrevX; o->oPosZ = o->oBullyPrevZ; @@ -346,10 +346,10 @@ void bhv_big_bully_with_minions_loop(void) { case BULLY_ACT_ACTIVATE_AND_FALL: collisionFlags = object_step(); - if ((collisionFlags & 0x9) == 0x9) /* bits 0 and 3 */ + if ((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED) /* bits 0 and 3 */ o->oAction = BULLY_ACT_PATROL; - if (collisionFlags == 1) { + if (collisionFlags == OBJ_COL_FLAG_GROUNDED) { cur_obj_play_sound_2(SOUND_OBJ_THWOMP); set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ); spawn_mist_particles(); diff --git a/src/game/behaviors/cap.inc.c b/src/game/behaviors/cap.inc.c index 066ff1fb..09e13d1a 100644 --- a/src/game/behaviors/cap.inc.c +++ b/src/game/behaviors/cap.inc.c @@ -118,11 +118,11 @@ void cap_scale_vertically(void) { } void wing_vanish_cap_act_0(void) { - s16 sp1E; + s16 collisionFlags; o->oFaceAngleYaw += o->oForwardVel * 128.0f; - sp1E = object_step(); - if (sp1E & 0x01) { + collisionFlags = object_step(); + if (collisionFlags & OBJ_COL_FLAG_GROUNDED) { cap_check_quicksand(); if (o->oVelY != 0.0f) { o->oCapUnkF4 = 1; @@ -161,11 +161,11 @@ void bhv_metal_cap_init(void) { } void metal_cap_act_0(void) { - s16 sp1E; + s16 collisionFlags; o->oFaceAngleYaw += o->oForwardVel * 128.0f; - sp1E = object_step(); - if (sp1E & 0x01) + collisionFlags = object_step(); + if (collisionFlags & OBJ_COL_FLAG_GROUNDED) cap_check_quicksand(); } @@ -220,12 +220,12 @@ void normal_cap_set_save_flags(void) { } void normal_cap_act_0(void) { - s16 sp1E; + s16 collisionFlags; o->oFaceAngleYaw += o->oForwardVel * 128.0f; o->oFaceAnglePitch += o->oForwardVel * 80.0f; - sp1E = object_step(); - if (sp1E & 0x01) { + collisionFlags = object_step(); + if (collisionFlags & OBJ_COL_FLAG_GROUNDED) { cap_check_quicksand(); if (o->oVelY != 0.0f) { diff --git a/src/game/behaviors/door.inc.c b/src/game/behaviors/door.inc.c index 695e5996..a02ee597 100644 --- a/src/game/behaviors/door.inc.c +++ b/src/game/behaviors/door.inc.c @@ -6,7 +6,7 @@ struct DoorAction s32 action; }; -static struct DoorAction sDoorActions[] = { { 0x40000, 3 }, { 0x80000, 4 }, { 0x10000, 1 }, { 0x20000, 2 }, { -1, 0 }, }; +static struct DoorAction sDoorActions[] = { { INT_STATUS_WARP_DOOR_PULLED, 3 }, { INT_STATUS_WARP_DOOR_PUSHED, 4 }, { INT_STATUS_DOOR_PULLED, 1 }, { INT_STATUS_DOOR_PUSHED, 2 }, { -1, 0 }, }; static s32 sDoorOpenSounds[] = { SOUND_GENERAL_OPEN_WOOD_DOOR, SOUND_GENERAL_OPEN_IRON_DOOR }; diff --git a/src/game/behaviors/exclamation_box.inc.c b/src/game/behaviors/exclamation_box.inc.c index eed6df0e..3d70e032 100644 --- a/src/game/behaviors/exclamation_box.inc.c +++ b/src/game/behaviors/exclamation_box.inc.c @@ -113,8 +113,8 @@ void exclamation_box_spawn_contents(struct Struct802C0DF0 *a0, u8 a1) { sp1C->oForwardVel = 3.0f; sp1C->oMoveAngleYaw = gMarioObject->oMoveAngleYaw; o->oBehParams |= a0->unk2 << 24; - if (a0->model == 122) - o->oFlags |= 0x4000; + if (a0->model == MODEL_STAR) + o->oFlags |= OBJ_FLAG_PERSISTENT_RESPAWN; break; } a0++; diff --git a/src/game/behaviors/fire_piranha_plant.inc.c b/src/game/behaviors/fire_piranha_plant.inc.c index a6d867b2..c4b1bc56 100644 --- a/src/game/behaviors/fire_piranha_plant.inc.c +++ b/src/game/behaviors/fire_piranha_plant.inc.c @@ -35,7 +35,7 @@ void bhv_fire_piranha_plant_init(void) { obj_set_hitbox(o, &sFirePiranhaPlantHitbox); if ((u16)(o->oBehParams >> 16) != 0) { - o->oFlags |= 0x00004000; + o->oFlags |= OBJ_FLAG_PERSISTENT_RESPAWN; o->oHealth = 1; if (o->oBehParams & 0x0000FF00) { diff --git a/src/game/behaviors/klepto.inc.c b/src/game/behaviors/klepto.inc.c index 46d7ffcc..1a5768a5 100644 --- a/src/game/behaviors/klepto.inc.c +++ b/src/game/behaviors/klepto.inc.c @@ -180,7 +180,7 @@ static void klepto_act_wait_for_mario(void) { klepto_target_mario(); if (o->oKleptoDistanceToTarget < 1000.0f) { o->oAction = KLEPTO_ACT_TURN_TOWARD_MARIO; - o->oFlags &= ~0x00000008; + o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; } } @@ -195,7 +195,7 @@ static void klepto_act_turn_toward_mario(void) { cur_obj_play_sound_2(SOUND_OBJ_KLEPTO1); o->oAction = KLEPTO_ACT_DIVE_AT_MARIO; o->oMoveAngleYaw = o->oFaceAngleYaw; - o->oFlags |= 0x00000008; + o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; cur_obj_init_animation_with_sound(3); } @@ -287,7 +287,7 @@ static void klepto_act_retreat(void) { o->oAction = KLEPTO_ACT_RESET_POSITION; o->oHomeY = 1500.0f; o->oKleptoUnk1AE = -100; - o->oFlags |= 0x00000008; + o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; cur_obj_become_tangible(); } } @@ -371,7 +371,7 @@ void bhv_klepto_update(void) { o->oGravity = -2.0f; o->oMoveAngleYaw = o->oAngleToMario + 0x8000; - o->oFlags &= ~0x00000008; + o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; cur_obj_become_intangible(); } else if (gMarioStates[0].action == ACT_SLEEPING || (gMarioStates[0].action diff --git a/src/game/behaviors/mips.inc.c b/src/game/behaviors/mips.inc.c index 461e9f2a..adba6333 100644 --- a/src/game/behaviors/mips.inc.c +++ b/src/game/behaviors/mips.inc.c @@ -163,13 +163,10 @@ void bhv_mips_act_wait_for_animation_done(void) { * Handles MIPS falling down after being thrown. */ void bhv_mips_act_fall_down(void) { - - s16 collisionFlags = 0; - - collisionFlags = object_step(); + s16 collisionFlags = object_step(); o->header.gfx.animInfo.animFrame = 0; - if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == 1) { + if (collisionFlags & OBJ_COL_FLAG_GROUNDED) { o->oAction = MIPS_ACT_WAIT_FOR_ANIMATION_DONE; o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; diff --git a/src/game/behaviors/moneybag.inc.c b/src/game/behaviors/moneybag.inc.c index 7c366632..b8567bd5 100644 --- a/src/game/behaviors/moneybag.inc.c +++ b/src/game/behaviors/moneybag.inc.c @@ -74,7 +74,7 @@ void moneybag_jump(s8 collisionFlags) { case MONEYBAG_JUMP_JUMP: cur_obj_init_animation(2); - if ((collisionFlags & 1) == 1) /* bit 0 */ + if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == OBJ_COL_FLAG_GROUNDED) /* bit 0 */ { o->oForwardVel = 0; o->oVelY = 0; diff --git a/src/game/behaviors/moving_coin.inc.c b/src/game/behaviors/moving_coin.inc.c index d992b13e..b01e32b8 100644 --- a/src/game/behaviors/moving_coin.inc.c +++ b/src/game/behaviors/moving_coin.inc.c @@ -31,7 +31,7 @@ s32 coin_step(s16 *collisionFlagsPtr) { obj_check_floor_death(*collisionFlagsPtr, sObjFloor); - if ((*collisionFlagsPtr & 0x1) != 0 && (*collisionFlagsPtr & 0x8) == 0) /* bit 0, bit 3 */ + if ((*collisionFlagsPtr & OBJ_COL_FLAG_GROUNDED) && !(*collisionFlagsPtr & OBJ_COL_FLAG_NO_Y_VEL)) /* bit 0, bit 3 */ { cur_obj_play_sound_2(SOUND_GENERAL_COIN_DROP); return 1; @@ -152,7 +152,7 @@ void blue_coin_sliding_away_from_mario(void) { if (coin_step(&collisionFlags) != 0) o->oVelY += 18.0f; - if ((collisionFlags & 0x2) != 0) + if (collisionFlags & OBJ_COL_FLAG_HIT_WALL) o->oAction = 3; /* bit 1 */ if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000) == 0) diff --git a/src/game/behaviors/mushroom_1up.inc.c b/src/game/behaviors/mushroom_1up.inc.c index aac7c98d..5921827c 100644 --- a/src/game/behaviors/mushroom_1up.inc.c +++ b/src/game/behaviors/mushroom_1up.inc.c @@ -57,11 +57,11 @@ void pole_1up_move_towards_mario(void) { bhv_1up_interact(); } -void one_up_move_away_from_mario(s16 sp1A) { +void one_up_move_away_from_mario(s16 collisionFlags) { o->oForwardVel = 8.0f; o->oMoveAngleYaw = o->oAngleToMario + 0x8000; bhv_1up_interact(); - if (sp1A & 0x02) + if (collisionFlags & OBJ_COL_FLAG_HIT_WALL) o->oAction = 2; if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 3000)) @@ -105,9 +105,7 @@ void bhv_1up_walking_loop(void) { } void bhv_1up_running_away_loop(void) { - s16 sp26; - - sp26 = object_step(); + s16 collisionFlags = object_step(); switch (o->oAction) { case 0: if (o->oTimer >= 18) @@ -127,7 +125,7 @@ void bhv_1up_running_away_loop(void) { case 1: spawn_object(o, MODEL_NONE, bhvSparkleSpawn); - one_up_move_away_from_mario(sp26); + one_up_move_away_from_mario(collisionFlags); break; case 2: @@ -140,10 +138,8 @@ void bhv_1up_running_away_loop(void) { } void sliding_1up_move(void) { - s16 sp1E; - - sp1E = object_step(); - if (sp1E & 0x01) { + s16 collisionFlags = object_step(); + if (collisionFlags & OBJ_COL_FLAG_GROUNDED) { o->oForwardVel += 25.0f; o->oVelY = 0; } else { @@ -185,7 +181,7 @@ void bhv_1up_loop(void) { } void bhv_1up_jump_on_approach_loop(void) { - s16 sp26; + s16 collisionFlags; switch (o->oAction) { case 0: @@ -196,13 +192,13 @@ void bhv_1up_jump_on_approach_loop(void) { break; case 1: - sp26 = object_step(); - one_up_move_away_from_mario(sp26); + collisionFlags = object_step(); + one_up_move_away_from_mario(collisionFlags); spawn_object(o, MODEL_NONE, bhvSparkleSpawn); break; case 2: - sp26 = object_step(); + collisionFlags = object_step(); bhv_1up_interact(); obj_flicker_and_disappear(o, 30); break; @@ -212,7 +208,7 @@ void bhv_1up_jump_on_approach_loop(void) { } void bhv_1up_hidden_loop(void) { - s16 sp26; + s16 collisionFlags; switch (o->oAction) { case 0: o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE; @@ -225,19 +221,19 @@ void bhv_1up_hidden_loop(void) { break; case 1: - sp26 = object_step(); - one_up_move_away_from_mario(sp26); + collisionFlags = object_step(); + one_up_move_away_from_mario(collisionFlags); spawn_object(o, MODEL_NONE, bhvSparkleSpawn); break; case 2: - sp26 = object_step(); + collisionFlags = object_step(); bhv_1up_interact(); obj_flicker_and_disappear(o, 30); break; case 3: - sp26 = object_step(); + collisionFlags = object_step(); if (o->oTimer >= 18) spawn_object(o, MODEL_NONE, bhvSparkleSpawn); @@ -264,7 +260,6 @@ void bhv_1up_hidden_trigger_loop(void) { } void bhv_1up_hidden_in_pole_loop(void) { - UNUSED s16 sp26; switch (o->oAction) { case 0: o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE; @@ -278,11 +273,11 @@ void bhv_1up_hidden_in_pole_loop(void) { case 1: pole_1up_move_towards_mario(); - sp26 = object_step(); + object_step(); break; case 3: - sp26 = object_step(); + object_step(); if (o->oTimer >= 18) spawn_object(o, MODEL_NONE, bhvSparkleSpawn); diff --git a/src/game/behaviors/scuttlebug.inc.c b/src/game/behaviors/scuttlebug.inc.c index 16840e1c..febf64f2 100644 --- a/src/game/behaviors/scuttlebug.inc.c +++ b/src/game/behaviors/scuttlebug.inc.c @@ -77,7 +77,7 @@ void bhv_scuttlebug_loop(void) { cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); break; case 3: - o->oFlags &= ~8; + o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; o->oForwardVel = -10.0f; o->oVelY = 30.0f; cur_obj_play_sound_2(SOUND_OBJ2_SCUTTLEBUG_ALERT); @@ -89,7 +89,7 @@ void bhv_scuttlebug_loop(void) { o->oSubAction++; o->oVelY = 0.0f; o->oScuttlebugUnkFC = 0; - o->oFlags |= 8; + o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; o->oInteractStatus = 0; } break; diff --git a/src/game/behaviors/skeeter.inc.c b/src/game/behaviors/skeeter.inc.c index a726760f..6451d4ea 100644 --- a/src/game/behaviors/skeeter.inc.c +++ b/src/game/behaviors/skeeter.inc.c @@ -70,7 +70,7 @@ static void skeeter_act_lunge(void) { if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) { o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall(); o->oForwardVel *= 0.3f; - o->oFlags &= ~0x00000008; + o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; } if (obj_forward_vel_approach(0.0f, 0.8f) && cur_obj_check_if_at_animation_end()) { @@ -84,7 +84,7 @@ static void skeeter_act_lunge(void) { o->oAction = SKEETER_ACT_IDLE; o->oSkeeterWaitTime = random_linear_offset(0, 30); - o->oFlags |= 0x00000008; + o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; } } } diff --git a/src/game/behaviors/snowman.inc.c b/src/game/behaviors/snowman.inc.c index 2d532efe..35ed8dd9 100644 --- a/src/game/behaviors/snowman.inc.c +++ b/src/game/behaviors/snowman.inc.c @@ -51,7 +51,6 @@ void adjust_rolling_face_pitch(f32 f12) { } void snowmans_bottom_act_1(void) { - UNUSED s16 sp26; s32 sp20; UNUSED s16 sp1E; #ifdef AVOID_UB @@ -59,7 +58,7 @@ void snowmans_bottom_act_1(void) { #endif o->oPathedStartWaypoint = segmented_to_virtual(&ccm_seg7_trajectory_snowman); - sp26 = object_step_without_floor_orient(); + object_step_without_floor_orient(); sp20 = cur_obj_follow_path(sp20); o->oSnowmansBottomUnkF8 = o->oPathedTargetYaw; o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oSnowmansBottomUnkF8, 0x400); @@ -80,9 +79,7 @@ void snowmans_bottom_act_1(void) { } void snowmans_bottom_act_2(void) { - UNUSED s16 sp26; - - sp26 = object_step_without_floor_orient(); + object_step_without_floor_orient(); if (o->oForwardVel > 70.0) o->oForwardVel = 70.0f; @@ -106,15 +103,13 @@ void snowmans_bottom_act_2(void) { } void snowmans_bottom_act_3(void) { - UNUSED s16 sp1E; - - sp1E = object_step_without_floor_orient(); - if ((sp1E & 0x09) == 0x09) { + s16 collisionFlags = object_step_without_floor_orient(); + if ((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED) { o->oAction = 4; cur_obj_become_intangible(); } - if ((sp1E & 0x01) != 0) { + if ((collisionFlags & 0x01) != 0) { spawn_mist_particles_variable(0, 0, 70.0f); o->oPosX = -4230.0f; o->oPosZ = 1813.0f; @@ -190,7 +185,7 @@ void bhv_snowmans_head_init(void) { void bhv_snowmans_head_loop(void) { UNUSED s16 sp1E; - s16 sp1C; + s16 collisionFlags; switch (o->oAction) { case 0: @@ -202,8 +197,8 @@ void bhv_snowmans_head_loop(void) { break; case 2: - sp1C = object_step_without_floor_orient(); - if (sp1C & 0x08) + collisionFlags = object_step_without_floor_orient(); + if (collisionFlags & OBJ_COL_FLAG_NO_Y_VEL) o->oAction = 3; break; diff --git a/src/game/behaviors/spindrift.inc.c b/src/game/behaviors/spindrift.inc.c index bc04018e..4e904486 100644 --- a/src/game/behaviors/spindrift.inc.c +++ b/src/game/behaviors/spindrift.inc.c @@ -27,12 +27,12 @@ void bhv_spindrift_loop(void) { cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400); break; case 1: - o->oFlags &= ~8; + o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; o->oForwardVel = -10.0f; if (o->oTimer > 20) { o->oAction = 0; o->oInteractStatus = 0; - o->oFlags |= 8; + o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW; } break; } diff --git a/src/game/behaviors/yoshi.inc.c b/src/game/behaviors/yoshi.inc.c index 3a56cf8b..f2ba6de6 100644 --- a/src/game/behaviors/yoshi.inc.c +++ b/src/game/behaviors/yoshi.inc.c @@ -18,11 +18,11 @@ void bhv_yoshi_init(void) { } void yoshi_walk_loop(void) { - UNUSED s16 sp26; + UNUSED s16 collisionFlags; s16 sp24 = o->header.gfx.animInfo.animFrame; o->oForwardVel = 10.0f; - sp26 = object_step(); + collisionFlags = object_step(); o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oYoshiTargetYaw, 0x500); if (is_point_close_to_object(o, o->oHomeX, 3174.0f, o->oHomeZ, 200)) o->oAction = YOSHI_ACT_IDLE; diff --git a/src/game/interaction.h b/src/game/interaction.h index 3f9e5b9b..1b2457be 100644 --- a/src/game/interaction.h +++ b/src/game/interaction.h @@ -95,6 +95,10 @@ #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_DOOR_PULLED (1 << 16) /* 0x00010000 */ +#define INT_STATUS_DOOR_PUSHED (1 << 17) /* 0x00020000 */ +#define INT_STATUS_WARP_DOOR_PULLED (1 << 18) /* 0x00040000 */ +#define INT_STATUS_WARP_DOOR_PUSHED (1 << 19) /* 0x00080000 */ #define INT_STATUS_TRAP_TURN (1 << 20) /* 0x00100000 */ #define INT_STATUS_HIT_MINE (1 << 21) /* 0x00200000 */ #define INT_STATUS_STOP_RIDING (1 << 22) /* 0x00400000 */ diff --git a/src/game/mario_actions_cutscene.c b/src/game/mario_actions_cutscene.c index ad95b9a8..07458cff 100644 --- a/src/game/mario_actions_cutscene.c +++ b/src/game/mario_actions_cutscene.c @@ -861,7 +861,7 @@ s32 act_entering_star_door(struct MarioState *m) { s16 targetAngle; if (m->actionTimer++ == 0) { - m->interactObj->oInteractStatus = 0x00010000; + m->interactObj->oInteractStatus = INT_STATUS_DOOR_PULLED; // ~30 degrees / 1/12 rot targetAngle = m->usedObj->oMoveAngleYaw + 0x1555; @@ -919,10 +919,10 @@ s32 act_entering_star_door(struct MarioState *m) { s32 act_going_through_door(struct MarioState *m) { if (m->actionTimer == 0) { if (m->actionArg & 1) { - m->interactObj->oInteractStatus = 0x00010000; + m->interactObj->oInteractStatus = INT_STATUS_DOOR_PULLED; set_mario_animation(m, MARIO_ANIM_PULL_DOOR_WALK_IN); } else { - m->interactObj->oInteractStatus = 0x00020000; + m->interactObj->oInteractStatus = INT_STATUS_DOOR_PUSHED; set_mario_animation(m, MARIO_ANIM_PUSH_DOOR_WALK_IN); } } @@ -952,9 +952,9 @@ s32 act_warp_door_spawn(struct MarioState *m) { if (m->actionState == 0) { m->actionState = 1; if (m->actionArg & 1) { - m->usedObj->oInteractStatus = 0x00040000; + m->usedObj->oInteractStatus = INT_STATUS_WARP_DOOR_PULLED; } else { - m->usedObj->oInteractStatus = 0x00080000; + m->usedObj->oInteractStatus = INT_STATUS_WARP_DOOR_PUSHED; } } else if (m->usedObj->oAction == 0) { if (gNeverEnteredCastle == TRUE && gCurrLevelNum == LEVEL_CASTLE) { diff --git a/src/game/object_helpers.c b/src/game/object_helpers.c index f9a144cb..eae57a85 100644 --- a/src/game/object_helpers.c +++ b/src/game/object_helpers.c @@ -479,7 +479,7 @@ struct Object *spawn_object_rel_with_rot(struct Object *parent, u32 model, const struct Object *spawn_obj_with_transform_flags(struct Object *sp20, s32 model, const BehaviorScript *sp28) { struct Object *sp1C = spawn_object(sp20, model, sp28); - sp1C->oFlags |= OBJ_FLAG_0020 | OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM; + sp1C->oFlags |= OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX | OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM; return sp1C; } @@ -1921,7 +1921,7 @@ void obj_build_transform_from_pos_and_angle(struct Object *obj, s16 posIndex, s1 } void obj_set_throw_matrix_from_transform(struct Object *obj) { - if (obj->oFlags & OBJ_FLAG_0020) { + if (obj->oFlags & OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX) { obj_build_transform_from_pos_and_angle(obj, O_POS_INDEX, O_FACE_ANGLE_INDEX); obj_apply_scale_to_transform(obj); } @@ -2118,8 +2118,8 @@ void cur_obj_spawn_particles(struct SpawnParticlesInfo *info) { } void obj_set_hitbox(struct Object *obj, struct ObjectHitbox *hitbox) { - if (!(obj->oFlags & OBJ_FLAG_30)) { - obj->oFlags |= OBJ_FLAG_30; + if (!(obj->oFlags & OBJ_FLAG_HITBOX_WAS_SET)) { + obj->oFlags |= OBJ_FLAG_HITBOX_WAS_SET; obj->oInteractType = hitbox->interactType; obj->oDamageOrCoinValue = hitbox->damageOrCoinValue;