From 0a27fbbba061533f2db70eece9eb06641c70a0ea Mon Sep 17 00:00:00 2001 From: MegaMech Date: Thu, 17 Jul 2025 20:52:44 -0600 Subject: [PATCH] Revert "Document sound effects (#735)" (#741) This reverts commit e88f33fb18f02f37cc07ca923a95e3190367d4f6. --- include/common_structs.h | 2 +- include/defines.h | 46 ++---- src/actors/banana/update.inc.c | 2 +- src/actors/fake_item_box/update.inc.c | 2 +- src/camera.c | 8 +- src/code_80086E70.c | 8 +- src/cpu_vehicles_camera_path.c | 30 ++-- src/cpu_vehicles_camera_path/bomb_kart.inc.c | 6 +- .../cpu_speed_control.inc.c | 4 +- .../vehicle_utils.inc.c | 10 +- src/effects.c | 67 ++++---- src/effects.h | 18 +-- src/player_controller.c | 153 ++++++++---------- src/player_controller.h | 2 +- src/racing/actors.c | 30 ++-- src/racing/actors_extended.c | 22 +-- src/racing/race_logic.c | 14 +- src/render_player.c | 4 +- src/spawn_players.c | 2 +- src/update_objects.c | 8 +- 20 files changed, 200 insertions(+), 238 deletions(-) diff --git a/include/common_structs.h b/include/common_structs.h index 0a4a64d4f..2aa790857 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -253,7 +253,7 @@ typedef struct { /* 0x0006 */ u16 unk_006; /* 0x0008 */ s16 lapCount; /* 0x000A */ char unk_00A[0x2]; - /* 0x000C */ s32 triggers; // Bitflag. + /* 0x000C */ s32 soundEffects; // Bitflag. /* 0x0010 */ s16 currentItemCopy; // Has no effect on what item the players has, It is just a synced copy /* 0x0012 */ s16 unk_012; /* 0x0014 */ Vec3f pos; diff --git a/include/defines.h b/include/defines.h index 54159df92..4b2d032c4 100644 --- a/include/defines.h +++ b/include/defines.h @@ -328,40 +328,20 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE }; */ #define MAX_TIME 0x927C0 -/* - * @brief triggers indicating that an effect should be applied to a kart +/** + * @brief sound effect of player's + * for soundEffect */ -#define HIT_BANANA_TRIGGER 0x1 // hits a banana -#define HIGH_TUMBLE_TRIGGER 0x2 // hit by a red shell, blue shell, or hit a mole -#define LOW_TUMBLE_TRIGGER 0x4 // hit by a green shell -#define DRIVING_SPINOUT_TRIGGER 0x80 // spinning out from erratic driving -#define THWOMP_SQUISH_TRIGGER 0x100 // stomped by thwomp -#define SHROOM_TRIGGER 0x200 // being boosted by trigger a mushroom -#define BOO_TRIGGER 0x800 // being a boo -#define UNUSED_TRIGGER_0x1000 0x1000 // Unused -#define STAR_TRIGGER 0x2000 // Starting a star -#define LIGHTNING_STRIKE_TRIGGER 0x4000 // Struck by lightning -#define BOOST_RAMP_WOOD_TRIGGER 0x8000 // being boosted by a ramp -#define UNUSED_TRIGGER_0x20000 0x20000 // Unused -#define DRAG_ITEM_EFFECT 0x40000 // holding a non-shell item behind you -#define HIT_PADDLE_BOAT_TRIGGER 0x80000 // hit paddle boat -#define UNUSED_TRIGGER_0x10000 0x100000 // Unused -#define SPINOUT_TRIGGER 0x200000 // hit crab or spiny spinout or losing versus race -#define VERTICAL_TUMBLE_TRIGGER 0x400000 // hitting a fake item / bomb / snowman / car / train -#define BOOST_RAMP_ASPHALT_TRIGGER 0x800000 // being boosted by a boost pad -#define HIT_BY_STAR_TRIGGER 0x1000000 // being hit by a star -#define START_BOOST_TRIGGER 0x2000000 // Start boost -#define LOSE_BATTLE_EFFECT 0x4000000 // When losing battle mode -#define BECOME_BOMB_EFFECT 0x8000000 // When becoming a bomb in battle mode -#define START_SPINOUT_TRIGGER 0x10000000 // Spinning out by holding gas at start of race - -#define ALL_TRIGGERS (0xFFFFFFFF) -#define RACING_SPINOUT_TRIGGERS (SPINOUT_TRIGGER | DRIVING_SPINOUT_TRIGGER | HIT_BANANA_TRIGGER) // 0x200081 -#define RAMP_BOOST_TRIGGERS (BOOST_RAMP_ASPHALT_TRIGGER | BOOST_RAMP_WOOD_TRIGGER) // 0x00808000 -#define ANY_BOOST_TRIGGERS (RAMP_BOOST_TRIGGERS | SHROOM_TRIGGER) // 0x00808200 -#define STATE_TRANSITION_TRIGGERS (STAR_TRIGGER | BOO_TRIGGER | UNUSED_TRIGGER_0x1000 | UNUSED_TRIGGER_0x20000)// 0x00023800 -#define HIT_TRIGGERS (HIT_BY_STAR_TRIGGER | VERTICAL_TUMBLE_TRIGGER | \ - LIGHTNING_STRIKE_TRIGGER | LOW_TUMBLE_TRIGGER | HIGH_TUMBLE_TRIGGER | THWOMP_SQUISH_TRIGGER) // 0x01404106 +#define HIT_SOUND_EFFECT 0x100 // hitting an object +#define BOOST_SOUND_EFFECT 0x200 // being boosted by trigger a mushroom +#define BOO_SOUND_EFFECT 0x800 // being a boo +#define STAR_SOUND_EFFECT 0x2000 // being a star +#define HIT_ROTATING_SOUND_EFFECT 0x4000 // hitting a rotating object +#define BOOST_RAMP_WOOD_SOUND_EFFECT 0x8000 // being boosted by a ramp +#define HOLD_BANANA_SOUND_EFFECT 0x40000 // holding a banana +#define REVERSE_SOUND_EFFECT 0x400000 // being in the wrong direction +#define BOOST_RAMP_ASPHALT_SOUND_EFFECT 0x800000 // being boosted by a boost pad +#define HIT_BY_ITEM_SOUND_EFFECT 0x1000000 // being hit by an item /** * @brief effect of player's diff --git a/src/actors/banana/update.inc.c b/src/actors/banana/update.inc.c index c94f141ea..e96c2d502 100644 --- a/src/actors/banana/update.inc.c +++ b/src/actors/banana/update.inc.c @@ -60,7 +60,7 @@ void update_actor_banana(struct BananaActor* banana) { controller->buttonDepressed &= ~Z_TRIG; banana->state = DROPPED_BANANA; banana->unk_04 = 0x00B4; - player->triggers &= ~DRAG_ITEM_EFFECT; + player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT; func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x12)); pad3 = controller->rawStickY; if ((pad3 > 30.0f) && (controller->rawStickX < 10) && (controller->rawStickX >= -9)) { diff --git a/src/actors/fake_item_box/update.inc.c b/src/actors/fake_item_box/update.inc.c index d054f3a2b..efb834a80 100644 --- a/src/actors/fake_item_box/update.inc.c +++ b/src/actors/fake_item_box/update.inc.c @@ -45,7 +45,7 @@ void update_actor_fake_item_box(struct FakeItemBox* fake_item_box) { if ((temp_v1_3->buttonDepressed & Z_TRIG) != 0) { temp_v1_3->buttonDepressed &= 0xDFFF; func_802A1064(fake_item_box); - temp_v0_4->triggers &= ~DRAG_ITEM_EFFECT; + temp_v0_4->soundEffects &= 0xFFFBFFFF; func_800C9060((u8) (temp_v0_4 - gPlayerOne), SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x12)); } } diff --git a/src/camera.c b/src/camera.c index b15c347ba..20f3efd80 100644 --- a/src/camera.c +++ b/src/camera.c @@ -1024,7 +1024,7 @@ void func_8001F394(Player* player, f32* arg1) { } if (D_80164A08[playerIndex] == 0) { - if (player->triggers & DRAG_ITEM_EFFECT) { + if (player->soundEffects & HOLD_BANANA_SOUND_EFFECT) { D_80164A08[playerIndex] = 1; } if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { @@ -1033,7 +1033,7 @@ void func_8001F394(Player* player, f32* arg1) { if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) { D_80164A08[playerIndex] = 3; } - if ((player->triggers & THWOMP_SQUISH_TRIGGER) == THWOMP_SQUISH_TRIGGER) { + if ((player->soundEffects & 0x100) == 0x100) { D_80164A08[playerIndex] = 4; } if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { @@ -1043,7 +1043,7 @@ void func_8001F394(Player* player, f32* arg1) { } switch (D_80164A08[playerIndex]) { case 1: - if (player->triggers & DRAG_ITEM_EFFECT) { + if (player->soundEffects & HOLD_BANANA_SOUND_EFFECT) { move_f32_towards(&D_80164498[playerIndex], 20.0f, 0.2f); } else { if (D_80164498[playerIndex] > 1.0f) { @@ -1082,7 +1082,7 @@ void func_8001F394(Player* player, f32* arg1) { } break; case 4: - if ((player->triggers & THWOMP_SQUISH_TRIGGER) == THWOMP_SQUISH_TRIGGER) { + if ((player->soundEffects & 0x100) == 0x100) { move_f32_towards(&D_80164498[playerIndex], 25.0f, 1.0f); } else { if (D_80164498[playerIndex] > 1.0f) { diff --git a/src/code_80086E70.c b/src/code_80086E70.c index 27e19548f..50619609a 100644 --- a/src/code_80086E70.c +++ b/src/code_80086E70.c @@ -1185,7 +1185,7 @@ s32 func_80089B50(s32 objectIndex) { (player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) { if (!(player->effects & STAR_EFFECT)) { - player->triggers |= VERTICAL_TUMBLE_TRIGGER; + player->soundEffects |= REVERSE_SOUND_EFFECT; if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) { func_80072180(); } @@ -1212,7 +1212,7 @@ s32 func_80089CBC(s32 objectIndex, f32 arg1) { if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_with_player_and_within_height(objectIndex, player, arg1) != 0)) { if (!(player->effects & STAR_EFFECT)) { - player->triggers |= VERTICAL_TUMBLE_TRIGGER; + player->soundEffects |= REVERSE_SOUND_EFFECT; if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) { func_80072180(); } @@ -1239,7 +1239,7 @@ s32 func_80089E18(s32 objectIndex) { if (player->effects & STAR_EFFECT) { var_s6 = 1; } else { - player->triggers |= HIT_BANANA_TRIGGER; + player->soundEffects |= 1; } } } @@ -1263,7 +1263,7 @@ s32 func_80089F24(s32 objectIndex) { if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) { func_80072180(); } - player->triggers |= SPINOUT_TRIGGER; + player->soundEffects |= 0x200000; } } } diff --git a/src/cpu_vehicles_camera_path.c b/src/cpu_vehicles_camera_path.c index e7d61f382..ec7aaa743 100644 --- a/src/cpu_vehicles_camera_path.c +++ b/src/cpu_vehicles_camera_path.c @@ -1359,8 +1359,8 @@ void play_cpu_sound_effect(s32 arg0, Player* player) { } } if (D_801633B0[arg0] >= 0xB) { - if ((player->triggers & VERTICAL_TUMBLE_TRIGGER) || (player->triggers & HIT_BY_STAR_TRIGGER) || - (player->triggers & HIGH_TUMBLE_TRIGGER) || (player->triggers & LOW_TUMBLE_TRIGGER) || (player->effects & HIT_EFFECT)) { + if ((player->soundEffects & REVERSE_EFFECT) || (player->soundEffects & 0x01000000) || + (player->soundEffects & 2) || (player->soundEffects & 4) || (player->effects & HIT_EFFECT)) { func_800C92CC(arg0, SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0B)); D_801633B0[arg0] = 0; } @@ -2215,7 +2215,7 @@ void init_players(void) { for (i = 0; i < NUM_PLAYERS; i++) { if (D_80163330[i] == 1) { - gPlayers[i].triggers |= START_BOOST_TRIGGER; + gPlayers[i].soundEffects |= 0x02000000; } } } @@ -3942,7 +3942,7 @@ void cpu_use_item_strategy(s32 playerId) { } else if (cpuStrategy->branch == CPU_STRATEGY_ITEM_BANANA) { cpuStrategy->actorIndex = use_banana_item(player); if ((cpuStrategy->actorIndex >= 0) && (cpuStrategy->actorIndex < 100)) { - player->triggers |= DRAG_ITEM_EFFECT; + player->soundEffects |= HOLD_BANANA_SOUND_EFFECT; cpuStrategy->branch = CPU_STRATEGY_HOLD_BANANA; cpuStrategy->timer = 0; cpuStrategy->numItemUse += 1; @@ -3967,7 +3967,7 @@ void cpu_use_item_strategy(s32 playerId) { cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM; cpuStrategy->timer = 0; - player->triggers &= ~DRAG_ITEM_EFFECT; + player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT; } else if (cpuStrategy->timeBeforeThrow < cpuStrategy->timer) { cpuStrategy->branch = CPU_STRATEGY_DROP_BANANA; } @@ -3996,7 +3996,7 @@ void cpu_use_item_strategy(s32 playerId) { (BANANA_ACTOR(actor)->boundingBoxSize + 1.0f); } } - player->triggers &= ~DRAG_ITEM_EFFECT; + player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT; cpuStrategy->timer = 0; cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM; break; @@ -4006,7 +4006,7 @@ void cpu_use_item_strategy(s32 playerId) { if ((cpuStrategy->actorIndex >= 0) && (cpuStrategy->actorIndex < 100)) { actor = &gActorList[cpuStrategy->actorIndex]; BANANA_ACTOR(actor)->state = BANANA_ON_GROUND; - player->triggers |= DRAG_ITEM_EFFECT; + player->soundEffects |= HOLD_BANANA_SOUND_EFFECT; cpuStrategy->branch = CPU_STRATEGY_HOLD_THROW_BANANA; cpuStrategy->timer = 0; cpuStrategy->numItemUse += 1; @@ -4039,7 +4039,7 @@ void cpu_use_item_strategy(s32 playerId) { cpuStrategy->timer = 0; cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM; - player->triggers &= ~DRAG_ITEM_EFFECT; + player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT; } else { BANANA_ACTOR(actor)->velocity[1] -= 0.4; BANANA_ACTOR(actor)->pos[0] += BANANA_ACTOR(actor)->velocity[0]; @@ -4072,7 +4072,7 @@ void cpu_use_item_strategy(s32 playerId) { get_surface_height(BANANA_ACTOR(actor)->pos[0], BANANA_ACTOR(actor)->pos[1] + 30.0, BANANA_ACTOR(actor)->pos[2]) + (BANANA_ACTOR(actor)->boundingBoxSize + 1.0f); } - player->triggers &= ~DRAG_ITEM_EFFECT; + player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT; cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM; cpuStrategy->timer = 0; break; @@ -4366,7 +4366,7 @@ void cpu_use_item_strategy(s32 playerId) { break; case CPU_STRATEGY_ITEM_STAR: - player->triggers |= STAR_TRIGGER; + player->soundEffects |= STAR_SOUND_EFFECT; cpuStrategy->branch = CPU_STRATEGY_END_ITEM_STAR; cpuStrategy->timer = 0; cpuStrategy->numItemUse += 1; @@ -4380,7 +4380,7 @@ void cpu_use_item_strategy(s32 playerId) { break; case CPU_STRATEGY_ITEM_BOO: - player->triggers |= BOO_TRIGGER; + player->soundEffects |= BOO_SOUND_EFFECT; cpuStrategy->branch = CPU_STRATEGY_WAIT_END_BOO; cpuStrategy->timer = 0; cpuStrategy->numItemUse += 1; @@ -4394,7 +4394,7 @@ void cpu_use_item_strategy(s32 playerId) { break; case CPU_STRATEGY_ITEM_MUSHROOM: - player->triggers |= SHROOM_TRIGGER; + player->soundEffects |= BOOST_SOUND_EFFECT; cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM; cpuStrategy->timer = 0; cpuStrategy->numItemUse += 1; @@ -4402,7 +4402,7 @@ void cpu_use_item_strategy(s32 playerId) { case CPU_STRATEGY_ITEM_DOUBLE_MUSHROOM: if (cpuStrategy->timer >= 0x3D) { - player->triggers |= SHROOM_TRIGGER; + player->soundEffects |= BOOST_SOUND_EFFECT; cpuStrategy->branch = CPU_STRATEGY_ITEM_MUSHROOM; cpuStrategy->timer = 0; } @@ -4410,7 +4410,7 @@ void cpu_use_item_strategy(s32 playerId) { case CPU_STRATEGY_ITEM_TRIPLE_MUSHROOM: if (cpuStrategy->timer >= 0x3D) { - player->triggers |= SHROOM_TRIGGER; + player->soundEffects |= BOOST_SOUND_EFFECT; cpuStrategy->branch = CPU_STRATEGY_ITEM_DOUBLE_MUSHROOM; cpuStrategy->timer = 0; } @@ -4424,7 +4424,7 @@ void cpu_use_item_strategy(s32 playerId) { case CPU_STRATEGY_USE_SUPER_MUSHROOM: if ((((s16) cpuStrategy->timer) % 60) == 0) { - player->triggers |= SHROOM_TRIGGER; + player->soundEffects |= BOOST_SOUND_EFFECT; if (cpuStrategy->timeBeforeThrow < cpuStrategy->timer) { cpuStrategy->timer = 0; cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM; diff --git a/src/cpu_vehicles_camera_path/bomb_kart.inc.c b/src/cpu_vehicles_camera_path/bomb_kart.inc.c index d9700b8b6..64fb2905f 100644 --- a/src/cpu_vehicles_camera_path/bomb_kart.inc.c +++ b/src/cpu_vehicles_camera_path/bomb_kart.inc.c @@ -139,7 +139,7 @@ void func_8000DF8C(s32 bombKartId) { if ((((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) + (temp_f12 * temp_f12)) < 25.0f) { var_s1 = 0; sp7E = 4; - var_v0->triggers |= VERTICAL_TUMBLE_TRIGGER; + var_v0->soundEffects |= 0x400000; var_v0->type &= ~0x2000; } } @@ -155,9 +155,9 @@ void func_8000DF8C(s32 bombKartId) { sp7E = 4; var_s1 = 0; if (gCurrentCourseId == COURSE_FRAPPE_SNOWLAND) { - var_v0->triggers |= HIT_BY_STAR_TRIGGER; + var_v0->soundEffects |= 0x01000000; } else { - var_v0->triggers |= VERTICAL_TUMBLE_TRIGGER; + var_v0->soundEffects |= 0x400000; } } } diff --git a/src/cpu_vehicles_camera_path/cpu_speed_control.inc.c b/src/cpu_vehicles_camera_path/cpu_speed_control.inc.c index 059f2b708..2d5bfad1d 100644 --- a/src/cpu_vehicles_camera_path/cpu_speed_control.inc.c +++ b/src/cpu_vehicles_camera_path/cpu_speed_control.inc.c @@ -134,8 +134,8 @@ void regulate_cpu_speed(s32 playerId, f32 targetSpeed, Player* player) { speed = player->speed; if (!(player->effects & 0x80) && !(player->effects & 0x40) && !(player->effects & 0x20000) && - !(player->triggers & VERTICAL_TUMBLE_TRIGGER) && !(player->triggers & HIT_BY_STAR_TRIGGER) && !(player->triggers & HIGH_TUMBLE_TRIGGER) && - !(player->triggers & LOW_TUMBLE_TRIGGER)) { + !(player->soundEffects & 0x400000) && !(player->soundEffects & 0x01000000) && !(player->soundEffects & 2) && + !(player->soundEffects & 4)) { if (gCurrentCourseId == COURSE_AWARD_CEREMONY) { func_80007FA4(playerId, player, speed); } else if ((bStopAICrossing[playerId] == true) && !(player->effects & (STAR_EFFECT | BOO_EFFECT))) { diff --git a/src/cpu_vehicles_camera_path/vehicle_utils.inc.c b/src/cpu_vehicles_camera_path/vehicle_utils.inc.c index 16fa54671..07cf96cb9 100644 --- a/src/cpu_vehicles_camera_path/vehicle_utils.inc.c +++ b/src/cpu_vehicles_camera_path/vehicle_utils.inc.c @@ -372,14 +372,14 @@ void handle_trains_interactions(s32 playerId, Player* player) { if ((z_dist > -100.0) && (z_dist < 100.0)) { if (is_collide_with_vehicle(trainCar->position[0], trainCar->position[2], trainCar->velocity[0], trainCar->velocity[2], 60.0f, 20.0f, playerPosX, playerPosZ) == 1) { - player->triggers |= VERTICAL_TUMBLE_TRIGGER; + player->soundEffects |= REVERSE_SOUND_EFFECT; } trainCar = &gTrainList[trainIndex].tender; if (trainCar->isActive == 1) { if (is_collide_with_vehicle(trainCar->position[0], trainCar->position[2], trainCar->velocity[0], trainCar->velocity[2], 30.0f, 20.0f, playerPosX, playerPosZ) == 1) { - player->triggers |= VERTICAL_TUMBLE_TRIGGER; + player->soundEffects |= REVERSE_SOUND_EFFECT; } } } @@ -395,7 +395,7 @@ void handle_trains_interactions(s32 playerId, Player* player) { if (is_collide_with_vehicle(trainCar->position[0], trainCar->position[2], trainCar->velocity[0], trainCar->velocity[2], 30.0f, 20.0f, playerPosX, playerPosZ) == 1) { - player->triggers |= VERTICAL_TUMBLE_TRIGGER; + player->soundEffects |= REVERSE_SOUND_EFFECT; } } } @@ -621,7 +621,7 @@ void handle_paddle_boats_interactions(Player* player) { tempPaddleWheelBoat->velocity[0], tempPaddleWheelBoat->velocity[2], 200.0f, 60.0f, playerX, playerZ) == 1) && (y_diff < 60.0)) { - player->triggers |= HIT_PADDLE_BOAT_TRIGGER; + player->soundEffects |= 0x80000; } } } @@ -805,7 +805,7 @@ void handle_vehicle_interactions(s32 playerId, Player* player, VehicleStuff* veh if (is_collide_with_vehicle(vehicle->position[0], vehicle->position[2], vehicle->velocity[0], vehicle->velocity[2], distanceX, distanceY, playerX, playerZ) == (s32) 1) { - player->triggers |= VERTICAL_TUMBLE_TRIGGER; + player->soundEffects |= REVERSE_SOUND_EFFECT; } } } diff --git a/src/effects.c b/src/effects.c index 89b2cb1ee..ba2f79a15 100644 --- a/src/effects.c +++ b/src/effects.c @@ -134,9 +134,8 @@ UNUSED void func_unnamed33(void) { } void func_8008C310(Player* player) { - // The << 9 is a hacky way to check for VERTICAL_TUMBLE_TRIGGER - if ((player->triggers & HIGH_TUMBLE_TRIGGER) || (player->triggers & LOW_TUMBLE_TRIGGER) || ((player->triggers << 9) < 0) || - (player->triggers & HIT_BY_STAR_TRIGGER)) { + if ((player->soundEffects & 2) || (player->soundEffects & 4) || ((player->soundEffects << 9) < 0) || + (player->soundEffects & HIT_BY_ITEM_SOUND_EFFECT)) { player->unk_0B6 = ((u16) player->unk_0B6 | 0x1000); } } @@ -217,7 +216,7 @@ void func_8008C528(Player* player, s8 playerIndex) { } else { play_cpu_sound_effect(playerIndex, player); } - player->triggers = (s32) (player->triggers & ~LOW_TUMBLE_TRIGGER); + player->soundEffects = (s32) (player->soundEffects & ~4); } void func_8008C62C(Player* player, s8 playerIndex) { @@ -312,7 +311,7 @@ void func_8008C8C4(Player* player, s8 playerId) { } if ((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) == PLAYER_CPU) && (!gDemoMode) && ((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) { - player->triggers = (s32) (player->triggers | VERTICAL_TUMBLE_TRIGGER); + player->soundEffects = (s32) (player->soundEffects | REVERSE_SOUND_EFFECT); } } @@ -373,7 +372,7 @@ void func_8008C9EC(Player* player, s8 playerIndex) { void func_8008CDC0(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); - player->triggers &= ~HIT_BANANA_TRIGGER; + player->soundEffects &= ~1; player->unk_0B4 = 0; player->unk_0B8 = 3.0f; player->unk_0AC = 1; @@ -445,7 +444,7 @@ void func_8008D0E4(Player* player, UNUSED s8 playerIndex) { void func_8008D0FC(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); - player->triggers &= ~DRIVING_SPINOUT_TRIGGER; + player->soundEffects &= ~0x80; player->unk_0B4 = 0; player->unk_0B8 = 2.0f; player->unk_0AC = 1; @@ -507,12 +506,12 @@ void func_8008D3B0(Player* player, UNUSED s8 playerIndex) { player->unk_044 &= 0xBFFF; } -void trigger_shroom(Player* player, s8 playerIndex) { +void apply_boost_sound_effect(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); player->effects |= BOOST_EFFECT; - player->triggers &= ~SHROOM_TRIGGER; + player->soundEffects &= ~BOOST_SOUND_EFFECT; player->unk_DB4.unk0 = 0; player->unk_DB4.unk8 = 8.0f; @@ -560,7 +559,7 @@ void func_8008D570(Player* player, s8 playerIndex) { player->unk_0AE = player->rotation[1]; player->effects |= 0x80000; player->effects &= ~0x10; - player->triggers &= ~UNUSED_TRIGGER_0x1000; + player->soundEffects &= ~0x1000; player->kartHopJerk = D_800E3730[player->characterId]; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = (f32) D_800E3710[player->characterId]; @@ -619,7 +618,7 @@ void func_8008D7B0(Player* player, s8 playerIndex) { player->unk_0AE = player->rotation[1]; player->effects |= 0x800000; player->effects &= ~0x10; - player->triggers &= ~UNUSED_TRIGGER_0x20000; + player->soundEffects &= ~0x20000; player->kartHopJerk = D_800E3770[player->characterId]; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = D_800E3750[player->characterId]; @@ -688,7 +687,7 @@ void func_8008D9C0(Player* player) { } } -void trigger_squish(Player* player, s8 playerIndex) { +void apply_hit_sound_effect(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); if ((player->effects & HIT_EFFECT) == 0) { @@ -705,7 +704,7 @@ void trigger_squish(Player* player, s8 playerIndex) { player->unk_D9C = 0.0f; player->unk_DA0 = 65.0f; - if ((player->triggers & THWOMP_SQUISH_TRIGGER) != 0) { + if ((player->soundEffects & 0x100) != 0) { player->unk_046 |= 0x80; } @@ -739,7 +738,7 @@ void apply_hit_effect(Player* player, s8 playerIndex) { } if ((player->unk_046 & 0x80) != 0) { - if ((player->triggers & THWOMP_SQUISH_TRIGGER) == 0) { + if ((player->soundEffects & 0x100) == 0) { D_8018D990[playerIndex] = 1; player->unk_238 = 0; if ((player->type & PLAYER_HUMAN) != 0) { @@ -828,10 +827,10 @@ void apply_hit_effect(Player* player, s8 playerIndex) { } } -void trigger_lightning_strike(Player* player, s8 playerIndex) { +void apply_hit_rotating_sound_effect(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); - player->triggers &= ~LIGHTNING_STRIKE_TRIGGER; + player->soundEffects &= ~HIT_ROTATING_SOUND_EFFECT; player->effects |= 0x40020000; player->effects &= ~0x10; player->unk_08C *= 0.6; @@ -875,7 +874,7 @@ void apply_lightning_effect(Player* player, s8 playerIndex) { D_80165190[1][playerIndex] = 1; D_80165190[2][playerIndex] = 1; D_80165190[3][playerIndex] = 1; - trigger_squish(player, playerIndex); + apply_hit_sound_effect(player, playerIndex); } else if ((player->effects & 0x20000) == 0x20000) { player->rotation[1] -= 0x5B0; D_8018D920[playerIndex] -= 0x5B0; @@ -993,7 +992,7 @@ void func_8008E4A4(Player* player, s8 playerIndex) { } } -void trigger_vertical_tumble(Player* player, s8 playerIndex) { +void apply_reverse_sound_effect(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); func_8008C310(player); @@ -1026,7 +1025,7 @@ void trigger_vertical_tumble(Player* player, s8 playerIndex) { play_cpu_sound_effect(playerIndex, player); } - player->triggers &= ~(VERTICAL_TUMBLE_TRIGGER | HIT_PADDLE_BOAT_TRIGGER); + player->soundEffects &= ~(REVERSE_SOUND_EFFECT | 0x80000); player->unk_0B6 |= 0x40; gTimerBoostTripleACombo[playerIndex] = 0; gIsPlayerTripleAButtonCombo[playerIndex] = false; @@ -1102,7 +1101,7 @@ void apply_hit_by_item_effect(Player* player, s8 playerIndex) { } } -void trigger_high_tumble(Player* player, s8 playerIndex) { +void apply_hit_by_item_sound_effect(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); func_8008C310(player); @@ -1127,7 +1126,7 @@ void trigger_high_tumble(Player* player, s8 playerIndex) { player->effects |= HIT_BY_ITEM_EFFECT; player->unk_0B6 |= 0x40; - player->triggers &= ~(HIT_BY_STAR_TRIGGER | HIGH_TUMBLE_TRIGGER); + player->soundEffects &= ~0x01000002; gTimerBoostTripleACombo[playerIndex] = 0; gIsPlayerTripleAButtonCombo[playerIndex] = false; @@ -1146,11 +1145,11 @@ void remove_hit_by_item_effect(Player* player, s8 playerIndex) { player->unk_042 = 0; } -void trigger_asphalt_ramp_boost(Player* player, s8 playerId) { +void apply_boost_ramp_asphalt_sound_effect(Player* player, s8 playerId) { clean_effect(player, playerId); player->effects |= BOOST_RAMP_ASPHALT_EFFECT; - player->triggers &= ~BOOST_RAMP_ASPHALT_TRIGGER; + player->soundEffects &= ~BOOST_RAMP_ASPHALT_SOUND_EFFECT; player->unk_DB4.unk0 = 0; player->unk_DB4.unk8 = 8.0f; if (D_8015F890 != 1) { @@ -1194,11 +1193,11 @@ void remove_boost_ramp_asphalt_effect(Player* player) { player->boostPower = 0.0f; } -void trigger_wood_ramp_boost(Player* player, s8 playerId) { +void apply_boost_ramp_wood_sound_effect(Player* player, s8 playerId) { clean_effect(player, playerId); player->effects |= BOOST_RAMP_WOOD_EFFECT; - player->triggers &= ~BOOST_RAMP_WOOD_TRIGGER; + player->soundEffects &= ~BOOST_RAMP_WOOD_SOUND_EFFECT; if (D_8015F890 != 1) { if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0)) { @@ -1392,11 +1391,11 @@ void apply_star_effect(Player* player, s8 playerIndex) { } // Star item -void trigger_star(Player* player, s8 playerIndex) { +void apply_star_sound_effect(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); player->effects |= STAR_EFFECT; - player->triggers &= ~STAR_TRIGGER; + player->soundEffects &= ~STAR_SOUND_EFFECT; gPlayerStarEffectStartTime[playerIndex] = gCourseTimer; D_8018D900[playerIndex] = 1; @@ -1461,7 +1460,7 @@ void apply_boo_effect(Player* player, s8 playerIndex) { } } -void trigger_boo(Player* player, s8 playerIndex) { +void apply_boo_sound_effect(Player* player, s8 playerIndex) { s16 temp_v1; if ((player->type & PLAYER_HUMAN) != 0) { @@ -1477,7 +1476,7 @@ void trigger_boo(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); player->effects |= BOO_EFFECT; - player->triggers &= ~BOO_TRIGGER; + player->soundEffects &= ~BOO_SOUND_EFFECT; gPlayerBooEffectStartTime[playerIndex] = gCourseTimer; gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX; @@ -1523,8 +1522,8 @@ void func_8008FC64(Player* player, s8 arg1) { player->alpha -= 4; if (player->alpha < 5) { player->alpha = ALPHA_MIN; - player->triggers &= ~LOSE_BATTLE_EFFECT; - player->triggers |= BECOME_BOMB_EFFECT; + player->soundEffects &= 0xFBFFFFFF; + player->soundEffects |= 0x08000000; player->type |= PLAYER_UNKNOWN_0x40; func_8008FDA8(player, arg1); @@ -1536,7 +1535,7 @@ void func_8008FCDC(Player* player, s8 playerIndex) { player->alpha += 2; if (player->alpha >= 0xF0) { player->alpha = ALPHA_MAX; - player->triggers &= ~BECOME_BOMB_EFFECT; + player->soundEffects &= ~0x08000000; } func_80056A40(playerIndex, (u32) player->alpha); @@ -1545,7 +1544,7 @@ void func_8008FCDC(Player* player, s8 playerIndex) { void func_8008FD4C(Player* player, UNUSED s8 arg1) { s16 temp_v0; - player->triggers |= LOSE_BATTLE_EFFECT; + player->soundEffects |= 0x04000000; player->unk_044 |= 0x200; for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) { @@ -1572,7 +1571,7 @@ void func_8008FDF4(Player* player, s8 playerIndex) { player->kartHopJerk = D_800E37F0[player->characterId]; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = D_800E37D0[player->characterId]; - player->triggers &= ~UNUSED_TRIGGER_0x10000; + player->soundEffects &= ~0x00100000; player->effects |= UNKNOWN_EFFECT_0x10000000; } diff --git a/src/effects.h b/src/effects.h index 723dd644f..5e8588770 100644 --- a/src/effects.h +++ b/src/effects.h @@ -59,7 +59,7 @@ void func_8008D0E4(Player*, s8); void func_8008D0FC(Player*, s8); void func_8008D170(Player*, s8); void func_8008D3B0(Player*, s8); -void trigger_shroom(Player*, s8); +void apply_boost_sound_effect(Player*, s8); void apply_boost_effect(Player*); void remove_boost_effect(Player*); void func_8008D570(Player*, s8); @@ -69,21 +69,21 @@ void func_8008D7B0(Player*, s8); void func_8008D8B4(Player*, s8); void func_8008D97C(Player*); void func_8008D9C0(Player*); -void trigger_squish(Player*, s8); +void apply_hit_sound_effect(Player*, s8); void apply_hit_effect(Player*, s8); -void trigger_lightning_strike(Player*, s8); +void apply_hit_rotating_sound_effect(Player*, s8); void apply_lightning_effect(Player*, s8); void remove_lightning_effect(Player*, s8); void func_8008E4A4(Player*, s8); -void trigger_vertical_tumble(Player*, s8); +void apply_reverse_sound_effect(Player*, s8); void func_8008E884(Player*, s8); void apply_hit_by_item_effect(Player*, s8); -void trigger_high_tumble(Player*, s8); +void apply_hit_by_item_sound_effect(Player*, s8); void remove_hit_by_item_effect(Player*, s8); -void trigger_asphalt_ramp_boost(Player*, s8); +void apply_boost_ramp_asphalt_sound_effect(Player*, s8); void apply_boost_ramp_asphalt_effect(Player*); void remove_boost_ramp_asphalt_effect(Player*); -void trigger_wood_ramp_boost(Player*, s8); +void apply_boost_ramp_wood_sound_effect(Player*, s8); void apply_boost_ramp_wood_effect(Player*); void remove_boost_ramp_wood_effect(Player*); void func_8008F104(Player*, s8); @@ -93,10 +93,10 @@ void func_8008F3F4(Player*, s8); void func_8008F494(Player*, s8); void func_8008F5A4(Player*, s8); void apply_star_effect(Player*, s8); -void trigger_star(Player*, s8); +void apply_star_sound_effect(Player*, s8); void func_8008F86C(Player*, s8); void apply_boo_effect(Player*, s8); -void trigger_boo(Player*, s8); +void apply_boo_sound_effect(Player*, s8); void func_8008FB30(Player*, s8); void func_8008FC1C(Player*); void func_8008FC64(Player*, s8); diff --git a/src/player_controller.c b/src/player_controller.c index b382d28ad..2d28f7399 100644 --- a/src/player_controller.c +++ b/src/player_controller.c @@ -954,12 +954,12 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) { if (player->surfaceType == BOOST_RAMP_ASPHALT) { if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != BOOST_RAMP_ASPHALT_EFFECT) && ((player->effects & 8) != 8)) { - player->triggers |= BOOST_RAMP_ASPHALT_TRIGGER; + player->soundEffects |= BOOST_RAMP_ASPHALT_SOUND_EFFECT; } } if (player->surfaceType == BOOST_RAMP_WOOD) { if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) && ((player->effects & 8) != 8)) { - player->triggers |= BOOST_RAMP_WOOD_TRIGGER; + player->soundEffects |= BOOST_RAMP_WOOD_SOUND_EFFECT; } } } @@ -1039,12 +1039,12 @@ void func_8002A194(Player* player, f32 x, f32 y, f32 z) { if (player->surfaceType == BOOST_RAMP_ASPHALT) { if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != BOOST_RAMP_ASPHALT_EFFECT) && ((player->effects & 8) != 8)) { - player->triggers |= BOOST_RAMP_ASPHALT_TRIGGER; + player->soundEffects |= BOOST_RAMP_ASPHALT_SOUND_EFFECT; } } if (player->surfaceType == BOOST_RAMP_WOOD) { if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) && ((player->effects & 8) != 8)) { - player->triggers |= BOOST_RAMP_WOOD_TRIGGER; + player->soundEffects |= BOOST_RAMP_WOOD_SOUND_EFFECT; } } } @@ -1085,7 +1085,7 @@ void func_8002A5F4(Vec3f arg0, f32 arg1, Vec3f arg2, f32 arg3, f32 arg4) { void func_8002A704(Player* player, s8 playerIndex) { player->effects |= BOOST_EFFECT; - player->triggers &= ~START_BOOST_TRIGGER; + player->soundEffects &= ~0x02000000; if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { func_800C90F4(0U, (player->characterId * 0x10) + 0x29008001); @@ -1350,138 +1350,123 @@ void func_8002B218(Player* player) { } } -void apply_triggers(Player* player, s8 playerId, UNUSED s8 screenId) { - if ((player->triggers & HIGH_TUMBLE_TRIGGER) == HIGH_TUMBLE_TRIGGER) { - trigger_high_tumble(player, playerId); +void apply_sound_effect(Player* player, s8 playerId, UNUSED s8 screenId) { + if ((player->soundEffects & 2) == 2) { + apply_hit_by_item_sound_effect(player, playerId); } - if ((player->triggers & LOW_TUMBLE_TRIGGER) == LOW_TUMBLE_TRIGGER) { + if ((player->soundEffects & 4) == 4) { func_8008C528(player, playerId); } - if ((player->triggers & HIT_BANANA_TRIGGER) == HIT_BANANA_TRIGGER) { + if ((player->soundEffects & 1) == 1) { func_8008CDC0(player, playerId); } - if ((player->triggers & SHROOM_TRIGGER) == SHROOM_TRIGGER) { - trigger_shroom(player, playerId); + if ((player->soundEffects & BOOST_SOUND_EFFECT) == BOOST_SOUND_EFFECT) { + apply_boost_sound_effect(player, playerId); } - if ((player->triggers & START_BOOST_TRIGGER) == START_BOOST_TRIGGER) { + if ((player->soundEffects & 0x02000000) == 0x02000000) { func_8002A704(player, playerId); } - if ((player->triggers & UNUSED_TRIGGER_0x1000) == UNUSED_TRIGGER_0x1000) { + if ((player->soundEffects & 0x1000) == 0x1000) { func_8008D570(player, playerId); } - if ((player->triggers & UNUSED_TRIGGER_0x20000) == UNUSED_TRIGGER_0x20000) { + if ((player->soundEffects & 0x20000) == 0x20000) { func_8008D7B0(player, playerId); } - if ((player->triggers & THWOMP_SQUISH_TRIGGER) == THWOMP_SQUISH_TRIGGER) { - trigger_squish(player, playerId); + if ((player->soundEffects & HIT_SOUND_EFFECT) == HIT_SOUND_EFFECT) { + apply_hit_sound_effect(player, playerId); } - if ((player->triggers & LIGHTNING_STRIKE_TRIGGER) == LIGHTNING_STRIKE_TRIGGER) { - trigger_lightning_strike(player, playerId); + if ((player->soundEffects & HIT_ROTATING_SOUND_EFFECT) == HIT_ROTATING_SOUND_EFFECT) { + apply_hit_rotating_sound_effect(player, playerId); } - if ((player->triggers & SPINOUT_TRIGGER) == SPINOUT_TRIGGER) { + if ((player->soundEffects & 0x200000) == 0x200000) { func_8008C73C(player, playerId); } - if ((player->triggers & VERTICAL_TUMBLE_TRIGGER) == VERTICAL_TUMBLE_TRIGGER) { - trigger_vertical_tumble(player, playerId); + if ((player->soundEffects & REVERSE_SOUND_EFFECT) == REVERSE_SOUND_EFFECT) { + apply_reverse_sound_effect(player, playerId); } - if ((player->triggers & HIT_BY_STAR_TRIGGER) == HIT_BY_STAR_TRIGGER) { - trigger_high_tumble(player, playerId); + if ((player->soundEffects & HIT_BY_ITEM_SOUND_EFFECT) == HIT_BY_ITEM_SOUND_EFFECT) { + apply_hit_by_item_sound_effect(player, playerId); } - if ((player->triggers & BOOST_RAMP_ASPHALT_TRIGGER) == BOOST_RAMP_ASPHALT_TRIGGER) { - trigger_asphalt_ramp_boost(player, playerId); + if ((player->soundEffects & BOOST_RAMP_ASPHALT_SOUND_EFFECT) == BOOST_RAMP_ASPHALT_SOUND_EFFECT) { + apply_boost_ramp_asphalt_sound_effect(player, playerId); } - if ((player->triggers & BOOST_RAMP_WOOD_TRIGGER) == BOOST_RAMP_WOOD_TRIGGER) { - trigger_wood_ramp_boost(player, playerId); + if ((player->soundEffects & BOOST_RAMP_WOOD_SOUND_EFFECT) == BOOST_RAMP_WOOD_SOUND_EFFECT) { + apply_boost_ramp_wood_sound_effect(player, playerId); } - if ((player->triggers & STAR_TRIGGER) == STAR_TRIGGER) { - trigger_star(player, playerId); + if ((player->soundEffects & STAR_SOUND_EFFECT) == STAR_SOUND_EFFECT) { + apply_star_sound_effect(player, playerId); } - if ((player->triggers & BOO_TRIGGER) == BOO_TRIGGER) { - trigger_boo(player, playerId); + if ((player->soundEffects & BOO_SOUND_EFFECT) == BOO_SOUND_EFFECT) { + apply_boo_sound_effect(player, playerId); } - if (player->triggers & DRIVING_SPINOUT_TRIGGER) { + if (player->soundEffects & 0x80) { func_8008D0FC(player, playerId); } - if (player->triggers & HIT_PADDLE_BOAT_TRIGGER) { - trigger_vertical_tumble(player, playerId); + if (player->soundEffects & 0x80000) { + apply_reverse_sound_effect(player, playerId); } } void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) { if (((player->unk_0CA & 8) != 0) || ((player->unk_0CA & 2) != 0)) { - player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE1D0478; } - // Green shell if ((player->effects & 0x400) == 0x400) { - player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFF5D457E; } - // Spinout (banana or driving) if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { - player->triggers &= (ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS)) | UNUSED_TRIGGER_0x20000; + player->soundEffects &= 0xFF5F457E; } - // Near spinout (banana) if ((player->effects & 0x800) == 0x800) { - player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFF5D457E; } if ((player->unk_044 & 0x4000) != 0) { - player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFF5D457E; } - //unclear if ((player->effects & 0x80000) == 0x80000) { - player->triggers &= ALL_TRIGGERS & ~((HIT_TRIGGERS ^ LIGHTNING_STRIKE_TRIGGER) | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE1D4478; } - //unclear if ((player->effects & 0x800000) == 0x800000) { - player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE1D0478; } - //squished if ((player->effects & HIT_EFFECT) == HIT_EFFECT) { - player->triggers &= (ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS)) | THWOMP_SQUISH_TRIGGER; + player->soundEffects &= 0xFE1D0578; } - //explosion crash if ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) { - player->triggers &= ALL_TRIGGERS & ~((HIT_TRIGGERS ^ LIGHTNING_STRIKE_TRIGGER) | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE1D4478; } - // hit by star or red shell if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) { - player->triggers &= ALL_TRIGGERS & ~((HIT_TRIGGERS ^ LIGHTNING_STRIKE_TRIGGER) | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE1D4478; } - // boost asphalt if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) { - player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE1D0478; } - // boost ramp if ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT) { - player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE1D0478; } - // Terrain tumble if ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000) { - player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE1D0478; } - // star if ((player->effects & STAR_EFFECT) == STAR_EFFECT) { - player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | SHROOM_TRIGGER | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE9D8478; } - // boo if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { - player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE9D8678; } - // early start spinout if ((player->effects & 0x4000) == 0x4000) { - player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | SPINOUT_TRIGGER | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFF5D45FF; } - // CPU_FAST_EFFECTS if ((player->effects & 0x20000) == 0x20000) { - player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); + player->soundEffects &= 0xFE1D0478; } } void func_8002B830(Player* player, s8 playerId, s8 screenId) { - if (player->triggers != 0) { + if (player->soundEffects != 0) { func_8002B5C0(player, playerId, screenId); } - if (player->triggers != 0) { - apply_triggers(player, playerId, screenId); + if (player->soundEffects != 0) { + apply_sound_effect(player, playerId, screenId); } if ((player->unk_044 & 0x400) != 0) { func_800911B4(player, playerId); @@ -1995,10 +1980,10 @@ void apply_effect(Player* player, s8 playerIndex, s8 arg2) { player_decelerate_alternative(player, 10.0f); } if (D_800DC510 != 5) { - if (player->triggers & LOSE_BATTLE_EFFECT) { + if (player->soundEffects & 0x04000000) { func_8008FC64(player, playerIndex); } - if (player->triggers & BECOME_BOMB_EFFECT) { + if (player->soundEffects & 0x08000000) { func_8008FCDC(player, playerIndex); } } @@ -3334,10 +3319,9 @@ void player_accelerate_alternative(Player* player) { player->unk_08C = (player->currentSpeed * player->currentSpeed) / 25.0f; } player->unk_044 |= 0x20; - // Hacky way to check for START_SPINOUT_TRIGGER - if ((player->triggers * 8) < 0) { + if ((player->soundEffects * 8) < 0) { func_8008F104(player, player_index); - player->triggers &= ~START_SPINOUT_TRIGGER; + player->soundEffects &= 0xEFFFFFFF; } } @@ -3359,10 +3343,9 @@ void player_decelerate_alternative(Player* player, f32 speed) { player->unk_08C = (player->currentSpeed * player->currentSpeed) / 25.0f; } player->unk_044 &= 0xFFDF; - // Hacky way to check for START_SPINOUT_TRIGGER - if ((player->triggers * 8) < 0) { + if ((player->soundEffects * 8) < 0) { func_8008F104(player, player_index); - player->triggers &= ~START_SPINOUT_TRIGGER; + player->soundEffects &= 0xEFFFFFFF; } } @@ -3602,11 +3585,11 @@ void player_accelerate_during_start_sequence(Player* player) { var_v0 = 8; } if ((time_delta < var_v0) && ((player->unk_044 & 0x20) != 0x20)) { - player->triggers |= START_BOOST_TRIGGER; + player->soundEffects |= 0x02000000; } else if ((player->topSpeed * 0.9f) <= player->currentSpeed) { - if ((player->triggers & START_BOOST_TRIGGER) != START_BOOST_TRIGGER) { - player->triggers |= START_SPINOUT_TRIGGER; - player->triggers &= ~START_BOOST_TRIGGER; + if ((player->soundEffects & 0x02000000) != 0x02000000) { + player->soundEffects |= 0x10000000; + player->soundEffects &= ~0x02000000; } } } @@ -3626,9 +3609,9 @@ void player_decelerate_during_start_sequence(Player* player, f32 speedReduction) player->currentSpeed = player->topSpeed; } if ((f64) player->currentSpeed <= (player->topSpeed * 0.7)) { - player->triggers &= ~START_SPINOUT_TRIGGER; + player->soundEffects &= ~0x10000000; } - player->triggers &= ~START_BOOST_TRIGGER; + player->soundEffects &= ~0x02000000; player->unk_044 &= ~0x0020; player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f; } @@ -3877,7 +3860,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { (!(player->effects & 8))) && (((player->speed / 18.0f) * 216.0f) >= 40.0f)) && (player->unk_204 == 0)) { - player->triggers |= DRIVING_SPINOUT_TRIGGER; + player->soundEffects |= 0x80; } } if (((s32) player->tyres[BACK_RIGHT].surfaceType) < 0xF) { diff --git a/src/player_controller.h b/src/player_controller.h index a0c55cec2..0caa9db25 100644 --- a/src/player_controller.h +++ b/src/player_controller.h @@ -45,7 +45,7 @@ void func_8002AE30(void); void func_8002AE38(Player*, s8, f32, f32, f32, f32); void func_8002B218(Player*); -void apply_triggers(Player*, s8, s8); +void apply_sound_effect(Player*, s8, s8); void func_8002B5C0(Player*, s8, s8); void func_8002B830(Player*, s8, s8); void func_8002B8A4(Player*, Player*); diff --git a/src/racing/actors.c b/src/racing/actors.c index 97a362eef..dd10cb589 100644 --- a/src/racing/actors.c +++ b/src/racing/actors.c @@ -1658,13 +1658,13 @@ bool collision_yoshi_egg(Player* player, struct YoshiValleyEgg* egg) { func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10)); func_800C90F4(player - gPlayerOne, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0D)); } else { - trigger_squish(player, player - gPlayerOne); + apply_hit_sound_effect(player, player - gPlayerOne); if ((gModeSelection == TIME_TRIALS) && ((player->type & PLAYER_CPU) == 0)) { gPostTTReplayCannotSave = 1; } } } else { - trigger_squish(player, player - gPlayerOne); + apply_hit_sound_effect(player, player - gPlayerOne); } return true; @@ -1862,7 +1862,7 @@ void destroy_destructable_actor(struct Actor* actor) { break; case HELD_BANANA: player = &gPlayers[banana->playerId]; - player->triggers &= ~DRAG_ITEM_EFFECT; + player->soundEffects &= ~0x00040000; /* fallthrough */ case BANANA_ON_GROUND: banana->flags = -0x8000; @@ -1957,7 +1957,7 @@ void destroy_destructable_actor(struct Actor* actor) { fakeItemBox = (struct FakeItemBox*) actor; player = &gPlayers[(s16) fakeItemBox->playerId]; if (fakeItemBox->state == HELD_FAKE_ITEM_BOX) { - player->triggers &= ~DRAG_ITEM_EFFECT; + player->soundEffects &= ~0x00040000; } fakeItemBox->state = DESTROYED_FAKE_ITEM_BOX; fakeItemBox->flags = -0x8000; @@ -2080,7 +2080,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor if (player->effects & (BOO_EFFECT | 0x8C0)) { break; } - if (player->triggers & HIT_BANANA_TRIGGER) { + if (player->soundEffects & 1) { break; } temp_v1 = actor->rot[0]; @@ -2088,7 +2088,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor (query_collision_player_vs_actor_item(player, actor) != COLLISION)) { break; } - player->triggers |= HIT_BANANA_TRIGGER; + player->soundEffects |= 1; owner = &gPlayers[temp_v1]; if (owner->type & 0x4000) { if (actor->flags & 0xF) { @@ -2109,7 +2109,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor if (player->effects & 0x80000400) { break; } - if (player->triggers & LOW_TUMBLE_TRIGGER) { + if (player->soundEffects & 4) { break; } temp_v1 = actor->rot[2]; @@ -2117,7 +2117,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor (query_collision_player_vs_actor_item(player, actor) != COLLISION)) { break; } - player->triggers |= LOW_TUMBLE_TRIGGER; + player->soundEffects |= 4; func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10)); owner = &gPlayers[temp_v1]; if ((owner->type & 0x4000) && (temp_lo != temp_v1)) { @@ -2126,7 +2126,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor destroy_destructable_actor(actor); break; case ACTOR_BLUE_SPINY_SHELL: - if (player->triggers & HIGH_TUMBLE_TRIGGER) { + if (player->soundEffects & 2) { break; } temp_v1 = actor->rot[2]; @@ -2135,7 +2135,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor break; } if (!(player->effects & BOO_EFFECT)) { - player->triggers |= HIGH_TUMBLE_TRIGGER; + player->soundEffects |= 2; func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10)); } owner = &gPlayers[temp_v1]; @@ -2151,7 +2151,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor if (player->effects & UNKNOWN_EFFECT_0x1000000) { break; } - if (player->triggers & HIGH_TUMBLE_TRIGGER) { + if (player->soundEffects & 2) { break; } temp_v1 = actor->rot[2]; @@ -2160,7 +2160,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor break; } if (!(player->effects & BOO_EFFECT)) { - player->triggers |= HIGH_TUMBLE_TRIGGER; + player->soundEffects |= 2; func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10)); } owner = &gPlayers[temp_v1]; @@ -2205,7 +2205,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor if (player->effects & STAR_EFFECT) { actor->velocity[1] = 10.0f; } else { - trigger_squish(player, player - gPlayerOne); + apply_hit_sound_effect(player, player - gPlayerOne); } } } @@ -2220,7 +2220,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor (query_collision_player_vs_actor_item(player, actor) != COLLISION)) { break; } - player->triggers |= VERTICAL_TUMBLE_TRIGGER; + player->soundEffects |= REVERSE_SOUND_EFFECT; owner = &gPlayers[temp_v1]; if (owner->type & 0x4000) { if (actor->flags & 0xF) { @@ -2235,7 +2235,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor } } if (actor->state == 0) { - owner->triggers &= ~DRAG_ITEM_EFFECT; + owner->soundEffects &= ~0x00040000; } } actor->state = 2; diff --git a/src/racing/actors_extended.c b/src/racing/actors_extended.c index cde618426..a8f8c716f 100644 --- a/src/racing/actors_extended.c +++ b/src/racing/actors_extended.c @@ -293,7 +293,7 @@ void update_actor_banana_bunch(struct BananaBunchParent* banana_bunch) { } if (someCount == 0) { destroy_actor((struct Actor*) banana_bunch); - owner->triggers &= ~DRAG_ITEM_EFFECT; + owner->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT; } else if ((owner->type & 0x4000) != 0) { controller = &gControllers[banana_bunch->playerId]; if ((controller->buttonPressed & Z_TRIG) != 0) { @@ -525,7 +525,7 @@ s32 use_banana_bunch_item(Player* player) { bananaBunch = (struct BananaBunchParent*) &gActorList[actorIndex]; bananaBunch->state = 0; bananaBunch->playerId = player - gPlayerOne; - player->triggers |= DRAG_ITEM_EFFECT; + player->soundEffects |= HOLD_BANANA_SOUND_EFFECT; return actorIndex; } @@ -803,7 +803,7 @@ s32 use_fake_itembox_item(Player* player) { itemBox = (struct FakeItemBox*) &gActorList[actorIndex]; itemBox->playerId = (player - gPlayerOne); itemBox->state = HELD_FAKE_ITEM_BOX; - player->triggers |= DRAG_ITEM_EFFECT; + player->soundEffects |= HOLD_BANANA_SOUND_EFFECT; return actorIndex; } @@ -850,7 +850,7 @@ s32 use_banana_item(Player* player) { banana->playerId = playerId; banana->state = HELD_BANANA; banana->unk_04 = 0x0014; - player->triggers |= DRAG_ITEM_EFFECT; + player->soundEffects |= HOLD_BANANA_SOUND_EFFECT; return actorIndex; } @@ -872,7 +872,7 @@ void use_thunder_item(Player* player) { for (index = 0; index < NUM_PLAYERS; index++) { otherPlayer = &gPlayers[index]; if (player != otherPlayer) { - otherPlayer->triggers |= LIGHTNING_STRIKE_TRIGGER; + otherPlayer->soundEffects |= HIT_ROTATING_SOUND_EFFECT; } } } @@ -898,22 +898,22 @@ void player_use_item(Player* player) { use_banana_bunch_item(player); break; case ITEM_MUSHROOM: - player->triggers |= SHROOM_TRIGGER; + player->soundEffects |= BOOST_SOUND_EFFECT; break; case ITEM_DOUBLE_MUSHROOM: - player->triggers |= SHROOM_TRIGGER; + player->soundEffects |= BOOST_SOUND_EFFECT; break; case ITEM_TRIPLE_MUSHROOM: - player->triggers |= SHROOM_TRIGGER; + player->soundEffects |= BOOST_SOUND_EFFECT; break; case ITEM_SUPER_MUSHROOM: - player->triggers |= SHROOM_TRIGGER; + player->soundEffects |= BOOST_SOUND_EFFECT; break; case ITEM_BOO: - player->triggers |= BOO_TRIGGER; + player->soundEffects |= BOO_SOUND_EFFECT; break; case ITEM_STAR: - player->triggers |= STAR_TRIGGER; + player->soundEffects |= STAR_SOUND_EFFECT; break; case ITEM_THUNDERBOLT: use_thunder_item(player); diff --git a/src/racing/race_logic.c b/src/racing/race_logic.c index a0205ceb5..bc2b9dffe 100644 --- a/src/racing/race_logic.c +++ b/src/racing/race_logic.c @@ -565,7 +565,7 @@ void func_8028EF28(void) { } D_800DC510 = 5; i = gPlayerPositionLUT[1]; - gPlayers[i].triggers |= SPINOUT_TRIGGER; + gPlayers[i].soundEffects |= 0x200000; gPlayers[i].type |= PLAYER_CPU; func_800CA118((u8) i); break; @@ -583,7 +583,7 @@ void func_8028EF28(void) { if (*(gNmiUnknown2 + i * 3 + 2) > 99) { *(gNmiUnknown2 + i * 3 + 2) = 99; } - gPlayers[i].triggers |= SPINOUT_TRIGGER; + gPlayers[i].soundEffects |= 0x200000; gPlayers[i].type |= PLAYER_CPU; func_800CA118((u8) i); } @@ -598,7 +598,7 @@ void func_8028EF28(void) { if (currentPosition == 2) { D_800DC510 = 5; i = gPlayerPositionLUT[3]; - gPlayers[i].triggers |= SPINOUT_TRIGGER; + gPlayers[i].soundEffects |= 0x200000; gPlayers[i].type |= PLAYER_CPU; func_800CA118((u8) i); } @@ -1138,22 +1138,22 @@ void func_802903D8(Player* playerOne, Player* playerTwo) { func_800C9060((playerTwo - gPlayerOne), 0x19008001U); return; } else { - playerTwo->triggers |= VERTICAL_TUMBLE_TRIGGER; + playerTwo->soundEffects |= REVERSE_SOUND_EFFECT; func_8008FC1C(playerOne); func_800C9060((playerTwo - gPlayerOne), 0x19008001U); } } else if (playerTwo->type & PLAYER_UNKNOWN_0x40) { - playerOne->triggers |= VERTICAL_TUMBLE_TRIGGER; + playerOne->soundEffects |= REVERSE_SOUND_EFFECT; func_8008FC1C(playerTwo); func_800C9060(playerOne - gPlayerOne, 0x19008001U); return; } if (playerOne->effects & 0x200) { if (!(playerTwo->effects & 0x200)) { - playerTwo->triggers |= HIT_BY_STAR_TRIGGER; + playerTwo->soundEffects |= HIT_BY_ITEM_SOUND_EFFECT; } } else if (playerTwo->effects & 0x200) { - playerOne->triggers |= HIT_BY_STAR_TRIGGER; + playerOne->soundEffects |= HIT_BY_ITEM_SOUND_EFFECT; } else { playerOne->effects |= 0x8000; playerTwo->effects |= 0x8000; diff --git a/src/render_player.c b/src/render_player.c index 0040792cd..a90ed7f45 100644 --- a/src/render_player.c +++ b/src/render_player.c @@ -1502,8 +1502,8 @@ void render_kart(Player* player, s8 playerId, s8 arg2, s8 flipOffset) { AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); } - } else if (((player->unk_0CA & 4) == 4) || (player->triggers & BECOME_BOMB_EFFECT) || - (player->triggers & LOSE_BATTLE_EFFECT)) { + } else if (((player->unk_0CA & 4) == 4) || (player->soundEffects & 0x08000000) || + (player->soundEffects & 0x04000000)) { gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (arg2 * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(gDisplayListHead++, common_setting_render_character); diff --git a/src/spawn_players.c b/src/spawn_players.c index 95605c73e..b294db49a 100644 --- a/src/spawn_players.c +++ b/src/spawn_players.c @@ -156,7 +156,7 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC player->unk_DAC = 0.0f; player->unk_044 = 0; player->unk_046 = 0; - player->triggers = 0; + player->soundEffects = 0; player->alpha = ALPHA_MAX; player->unk_206 = 0; diff --git a/src/update_objects.c b/src/update_objects.c index 2fb012a42..7533ae63a 100644 --- a/src/update_objects.c +++ b/src/update_objects.c @@ -5981,7 +5981,7 @@ void func_80080B28(s32 objectIndex, s32 playerId) { temp_s0 = &gPlayerOne[playerId]; if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) { - if (!(temp_s0->triggers & THWOMP_SQUISH_TRIGGER)) { + if (!(temp_s0->soundEffects & 0x100)) { temp_f0 = func_80088F54(objectIndex, temp_s0); if ((temp_f0 <= 9.0) && !(temp_s0->effects & 0x04000000) && (has_collided_horizontally_with_player(objectIndex, temp_s0) != 0)) { @@ -6012,7 +6012,7 @@ void func_80080B28(s32 objectIndex, s32 playerId) { func_800722A4(objectIndex, 2); temp_s0->unk_040 = (s16) objectIndex; temp_s0->unk_046 |= 2; - temp_s0->triggers |= THWOMP_SQUISH_TRIGGER; + temp_s0->soundEffects |= 0x100; func_80088FF0(temp_s0); } } @@ -6029,7 +6029,7 @@ void func_80080DE4(s32 arg0) { player = gPlayerOne; for (var_v1 = 0; var_v1 < NUM_PLAYERS; var_v1++, player++) { if (arg0 == player->unk_040) { - player->triggers &= ~THWOMP_SQUISH_TRIGGER; + player->soundEffects &= ~0x100; player->unk_040 = -1; } } @@ -6397,7 +6397,7 @@ void func_80081D34(s32 objectIndex) { if (player->effects & 0x200) { func_800C9060(playerIndex, 0x1900A046U); } else { - player->triggers |= HIGH_TUMBLE_TRIGGER; + player->soundEffects |= 2; } object->direction_angle[1] = var_s4->rot[1]; object->velocity[1] = (player->speed / 2) + 3.0;