diff --git a/include/defines.h b/include/defines.h index 54159df92..acc0f1dbf 100644 --- a/include/defines.h +++ b/include/defines.h @@ -367,28 +367,41 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE }; * @brief effect of player's * for effects */ -#define UNKNOWN_EFFECT_0x1 0x1 // -#define BOOST_RAMP_WOOD_EFFECT 0x4 // being boosted by a ramp -#define UNKNOWN_EFFECT_0x10 0x10 // -#define UNKNOWN_EFFECT_0x40 0x40 // -#define UNKNOWN_EFFECT_0x80 0x80 // -#define UNKNOWN_EFFECT_0xC 0xC // -#define UNKNOWN_EFFECT_0x10 0x10 // -#define UNKNOWN_EFFECT_0x100 0x100 // -#define UNKNOWN_EFFECT_0x1000 0x1000 // -#define STAR_EFFECT 0x200 // being a star -#define BOOST_EFFECT 0x2000 // being boosted by trigger a mushroom -#define UNKNOWN_EFFECT_0x10000 0x10000 // -#define BOOST_RAMP_ASPHALT_EFFECT 0x100000 // being boosted by a boost pad -#define UNKNOWN_EFFECT_0x200000 0x200000 // -#define REVERSE_EFFECT 0x400000 // being in reverse of the course -#define UNKNOWN_EFFECT_0x1000000 0x1000000 // -#define HIT_BY_ITEM_EFFECT 0x2000000 // being hit by an item -#define HIT_EFFECT 0x4000000 // hitting an object -#define UNKNOWN_EFFECT_0x10000000 0x10000000 // -#define LIGHTNING_EFFECT 0x40000000 // being hit by lightning -#define BOO_EFFECT 0x80000000 // being a boo - +// clang-format off +#define BRAKING_EFFECT 0x1 // pressing brake +#define HOP_EFFECT 0x2 // from when you hop to when you land +#define BOOST_RAMP_WOOD_EFFECT 0x4 // being boosted by DKJP ramp +#define MIDAIR_EFFECT 0x8 // in midair +#define DRIFTING_EFFECT 0x10 // drifting +#define AB_SPIN_EFFECT 0x20 // spinning with a+b +#define DRIVING_SPINOUT_EFFECT 0x40 // spinout (from erratic driving) or crab +#define BANANA_SPINOUT_EFFECT 0x80 // spinout (from hitting a banana or another driver) +#define MINI_TURBO_EFFECT 0x100 // mini-turbo +#define STAR_EFFECT 0x200 // using a star +#define HIT_BY_GREEN_SHELL_EFFECT 0x400 // tumbling after hit with a green shell +#define BANANA_NEAR_SPINOUT_EFFECT 0x800 // decreased steering sensitivity after hitting a banana, but before spinning out +#define LOST_RACE_EFFECT 0x1000 // lost race in GP mode +#define MUSHROOM_EFFECT 0x2000 // using a mushroom +#define EARLY_START_SPINOUT_EFFECT 0x4000 // spinning out by pressing a too early at the startline or after lakitu retrieves you +#define ENEMY_BONK_EFFECT 0x8000 // bouncing off an enemy (penguin, thwomp, etc) +#define TERRAIN_TUMBLE_EFFECT 0x10000 // tumbling after hitting steep terrain +#define LIGHTNING_STRIKE_EFFECT 0x20000 // spinning and shrinking during a lightning strike +#define BANANA_SPINOUT_SAVE_EFFECT 0x40000 // avoid spinning out by pressing b +#define UNKNOWN_EFFECT_0x80000 0x80000 // Only set when soundEffect 0x1000 is set. Unclear if it ever is +#define BOOST_RAMP_ASPHALT_EFFECT 0x100000 // being boosted by the Royal Raceway ramp +#define CPU_FAST_EFFECT 0x200000 // CPU Rubberbanding flag +#define REVERSE_EFFECT 0x400000 // facing backwards +#define UNKNOWN_EFFECT_0x800000 0x800000 // Only set when soundEffect 0x20000 is set +#define EXPLOSION_CRASH_EFFECT 0x1000000 // vertical launch (hitting car, snowman, etc.) +#define HIT_BY_STAR_EFFECT 0x2000000 // being hit by a red shell or star +#define SQUISH_EFFECT 0x4000000 // hitting an object +#define POST_SQUISH_EFFECT 0x8000000 // briefly after being squished (boulder, thwomp, etc.) +#define UNKNOWN_EFFECT_0x10000000 0x10000000 // UNUSED (set in unused func_8008FDF4) +#define DRIFT_OUTSIDE_EFFECT 0x20000000 // drifting toward the outside of your turn +#define LIGHTNING_EFFECT 0x40000000 // suffering the effects of lightning +#define BOO_EFFECT 0x80000000 // being a boo +#define ALL_EFFECTS 0xFFFFFFFF +// clang-format on /** * @brief durations of effects diff --git a/include/seq_ids.h b/include/seq_ids.h new file mode 100644 index 000000000..509e86773 --- /dev/null +++ b/include/seq_ids.h @@ -0,0 +1,38 @@ +#ifndef SEQ_IDS_H +#define SEQ_IDS_H + +enum SeqId { + SEQ_SOUND_PLAYER, // 0x00 (00) + SEQ_MENU_TITLE_SCREEN, // 0x01 (01) + SEQ_MENU_MAIN_MENU, // 0x02 (02) + SEQ_TRACK_RACEWAY, // 0x03 (03) + SEQ_TRACK_FARM, // 0x04 (04) + SEQ_TRACK_MOUNTAIN, // 0x05 (05) + SEQ_TRACK_BEACH, // 0x06 (06) + SEQ_TRACK_SCARY, // 0x07 (07) + SEQ_TRACK_SNOW, // 0x08 (08) + SEQ_TRACK_CASTLE, // 0x09 (09) + SEQ_TRACK_DESERT, // 0x0A (10) + SEQ_EVENT_RACE_STARTING, // 0x0B (11) + SEQ_EVENT_RACE_FINAL_LAP, // 0x0C (12) + SEQ_EVENT_RACE_FINISH_FIRST, // 0x0D (13) + SEQ_EVENT_RACE_FINISH_OTHER, // 0x0E (14) + SEQ_EVENT_RACE_FINISH_LOSE, // 0x0F (15) + SEQ_MENU_RESULTS_SCREEN_WIN, // 0x10 (16) + SEQ_EVENT_RACE_POWERUP_STAR, // 0x11 (17) + SEQ_TRACK_RAINBOW, // 0x12 (18) + SEQ_TRACK_JUNGLE, // 0x13 (19) + SEQ_EVENT_CEREMONY_TROPHY_LOSE, // 0x14 (20) + SEQ_TRACK_TURNPIKE, // 0x15 (21) + SEQ_EVENT_RACE_STARTING_VS, // 0x16 (22) + SEQ_MENU_RESULTS_SCREEN_WIN_VS, // 0x17 (23) + SEQ_MENU_RESULTS_SCREEN_LOSE, // 0x18 (24) + SEQ_TRACK_BATTLE, // 0x19 (25) + SEQ_EVENT_CEREMONY_PRESENTATION_PART1, // 0x1A (26) + SEQ_EVENT_CEREMONY_PRESENTATION_PART2_WIN, // 0x1B (27) + SEQ_EVENT_CEREMONY_TROPHY_CREDITS, // 0x1C (28) + SEQ_EVENT_CEREMONY_PRESENTATION_PART2_LOSE, // 0x1D (29) + SEQ_COUNT +}; + +#endif // SEQ_IDS_H diff --git a/src/actors/kiwano_fruit/update.inc.c b/src/actors/kiwano_fruit/update.inc.c index ed2a46a0c..66a52b0c7 100644 --- a/src/actors/kiwano_fruit/update.inc.c +++ b/src/actors/kiwano_fruit/update.inc.c @@ -51,7 +51,7 @@ void update_actor_kiwano_fruit(struct KiwanoFruit* fruit) { if ((player->effects & STAR_EFFECT) != 0) { func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0xA0, 0x52)); } else { - player->effects |= 0x8000; + player->effects |= ENEMY_BONK_EFFECT; player->pos[0] -= temp_f2 * 4.0f; player->pos[2] -= temp_f14 * 4.0f; player->velocity[0] -= temp_f2 * 0.7f; diff --git a/src/audio/external.c b/src/audio/external.c index 0086da553..41835ae6d 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -14,6 +14,7 @@ #include "code_800029B0.h" #include "cpu_vehicles_camera_path.h" #include "menu_items.h" +#include "seq_ids.h" s8 D_8018EF10; UnkStruct8018EF18 D_8018EF18[16]; @@ -1920,7 +1921,7 @@ void func_800C6108(u8 playerId) { } else { D_800E9E54[playerId] = (f32) -player->unk_0C0; } - if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { D_800E9EB4[playerId] = D_800E9E64[playerId] + D_800E9DE4[playerId]; } else { D_800E9EB4[playerId] = D_800E9E64[playerId] + D_800E9DE4[playerId] - (D_800E9E54[playerId] / 12000.0f); @@ -2190,8 +2191,7 @@ void func_800C683C(u8 cameraId) { void func_800C70A8(u8 playerId) { if (D_800EA0EC[playerId] == 0) { D_800E9E74[playerId] = 0; - if ((D_800E9E54[playerId] > 3500.0f) || - ((gPlayers[playerId].effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10)) { + if ((D_800E9E54[playerId] > 3500.0f) || ((gPlayers[playerId].effects & DRIFTING_EFFECT) == DRIFTING_EFFECT)) { D_800E9E74[playerId] = 1; switch (gPlayers[playerId].tyres[AUDIO_LEFT_TYRE].surfaceType) { case DIRT: /* switch 1 */ @@ -2223,7 +2223,7 @@ void func_800C70A8(u8 playerId) { break; } } - if ((gPlayers[playerId].effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((gPlayers[playerId].effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { D_800E9E74[playerId] = 2; switch (gPlayers[playerId].tyres[AUDIO_LEFT_TYRE].surfaceType) { /* switch 2 */ case DIRT: /* switch 2 */ @@ -2375,17 +2375,21 @@ void func_800C70A8(u8 playerId) { D_800E9E74[playerId] = 0x0000001B; break; } - if (((gPlayers[playerId].speed < 0.5f) || ((gPlayers[playerId].effects & 8) == 8)) && + if (((gPlayers[playerId].speed < 0.5f) || ((gPlayers[playerId].effects & MIDAIR_EFFECT) == MIDAIR_EFFECT)) && (D_800E9E74[playerId] != 0x0000001C)) { D_800E9E74[playerId] = 0; } - if ((((gPlayers[playerId].effects & 0x4000) == 0x4000) && ((gPlayers[playerId].type & 0x2000) != 0x2000)) || - ((gPlayers[playerId].effects & 0x800) == 0x800) || ((gPlayers[playerId].effects & 0x80) == 0x80) || - ((gPlayers[playerId].effects & 0x40) == 0x40) || ((gPlayers[playerId].unk_044 & 0x4000) == 0x4000)) { + if ((((gPlayers[playerId].effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) && + ((gPlayers[playerId].type & 0x2000) != 0x2000)) || + ((gPlayers[playerId].effects & BANANA_NEAR_SPINOUT_EFFECT) == BANANA_NEAR_SPINOUT_EFFECT) || + ((gPlayers[playerId].effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((gPlayers[playerId].effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((gPlayers[playerId].unk_044 & 0x4000) == 0x4000)) { D_800E9E74[playerId] = 0x00000012; } - if ((((gPlayers[playerId].effects & 0x20) == 0x20) && ((gPlayers[playerId].type & 0x2000) != 0x2000)) || - ((gPlayers[playerId].effects & 0x800) == 0x800)) { + if ((((gPlayers[playerId].effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) && + ((gPlayers[playerId].type & 0x2000) != 0x2000)) || + ((gPlayers[playerId].effects & BANANA_NEAR_SPINOUT_EFFECT) == BANANA_NEAR_SPINOUT_EFFECT)) { D_800E9E74[playerId] = 0x00000013; } if (gPlayers[playerId].unk_20C != 0.0f) { @@ -2394,6 +2398,13 @@ void func_800C70A8(u8 playerId) { } } +/* + Routine to tell the game which "finish" music to play depending on which mode the player is in (Grand Prix, Time Trials, etc), + whether the game is in multiplayer or not, and which position they ended up finishing in (1st, 2nd, 3rd, etc) + + Contains a LOT of inlined funcs. + Modify if you dare. +*/ void func_800C76C0(u8 playerId) { if (D_800E9EA4[playerId] != 0) { if (D_800E9EA4[playerId] < 0x2BC) { @@ -2417,15 +2428,15 @@ void func_800C76C0(u8 playerId) { func_800C97C4(playerId); D_800EA0F0 = 2; func_800C9A88(playerId); - func_800CA414(0x000DU, 0x0010U); + play_sequences(SEQ_EVENT_RACE_FINISH_FIRST, SEQ_MENU_RESULTS_SCREEN_WIN); } else if (gPlayers[playerId].currentRank < 4) { func_800C97C4(playerId); D_800EA0F0 = 2; func_800C9A88(playerId); - func_800CA414(0x000EU, 0x0010U); + play_sequences(SEQ_EVENT_RACE_FINISH_OTHER, SEQ_MENU_RESULTS_SCREEN_WIN); } else { func_800C3448(-0x3E9F9C00); - func_800CA414(0x000FU, 0x0018U); + play_sequences(SEQ_EVENT_RACE_FINISH_LOSE, SEQ_MENU_RESULTS_SCREEN_LOSE); } } else { D_800EA0EC[playerId] = 2; @@ -2436,7 +2447,7 @@ void func_800C76C0(u8 playerId) { func_800C97C4(playerId); D_800EA0F0 = 2; func_800C9A88(playerId); - func_800CA414(0x000DU, 0x0010U); + play_sequences(SEQ_EVENT_RACE_FINISH_FIRST, SEQ_MENU_RESULTS_SCREEN_WIN); } else if (gPlayers[playerId].currentRank < 4) { if (D_800EA104 == 0) { func_800C3448(0x100100FF); @@ -2445,12 +2456,12 @@ void func_800C76C0(u8 playerId) { func_800C97C4(playerId); D_800EA0F0 = 2; func_800C9A88(playerId); - func_800CA414(0x000EU, 0x0010U); + play_sequences(SEQ_EVENT_RACE_FINISH_OTHER, SEQ_MENU_RESULTS_SCREEN_WIN); } else if (D_800EA104 == 0) { func_800C3448(0x100100FF); func_800C3448(0x110100FF); func_800C3448(-0x3E9F9C00); - func_800CA414(0x000FU, 0x0018U); + play_sequences(SEQ_EVENT_RACE_FINISH_LOSE, SEQ_MENU_RESULTS_SCREEN_LOSE); } if ((D_800EA104 != 0) || (D_800EA0EC[playerId] != 1)) { func_800C5278(5U); @@ -2466,9 +2477,9 @@ void func_800C76C0(u8 playerId) { D_800EA0EC[playerId] = 2; func_800C9060(playerId, 0x1900F103U); if (D_801657E5 == 1) { - func_800CA414(0x000DU, 0x0010U); + play_sequences(SEQ_EVENT_RACE_FINISH_FIRST, SEQ_MENU_RESULTS_SCREEN_WIN); } else if (D_8018ED90 == 1) { - func_800CA414(0x000EU, 0x0010U); + play_sequences(SEQ_EVENT_RACE_FINISH_OTHER, SEQ_MENU_RESULTS_SCREEN_WIN); } else { func_800C3448(0x01640010); } @@ -2483,16 +2494,16 @@ void func_800C76C0(u8 playerId) { func_800C97C4(playerId); D_800EA0F0 = 2; func_800C9A88(playerId); - func_800CA414(0x000DU, 0x0017U); + play_sequences(SEQ_EVENT_RACE_FINISH_FIRST, SEQ_MENU_RESULTS_SCREEN_WIN_VS); break; case 2: /* switch 1 */ if ((D_800EA104 == 0) && (D_800EA0EC[playerId] == 1)) { func_800C3448(0x100100FF); func_800C3448(0x110100FF); #ifdef VERSION_EU - func_800C8EF8(0x000DU); + play_sequence2(SEQ_EVENT_RACE_FINISH_FIRST); #else - func_800CA414(0x000DU, 0x0017U); + play_sequences(SEQ_EVENT_RACE_FINISH_FIRST, SEQ_MENU_RESULTS_SCREEN_WIN_VS); #endif D_800EA104 = 1; } else if ((D_800EA104 == 1) && (D_800EA0EC[playerId] == 1)) { @@ -2502,7 +2513,7 @@ void func_800C76C0(u8 playerId) { #endif { D_800EA104 = 0; - func_800CA414(0x000EU, 0x0017U); + play_sequences(SEQ_EVENT_RACE_FINISH_OTHER, SEQ_MENU_RESULTS_SCREEN_WIN_VS); } D_800EA104 = 2; } @@ -2511,12 +2522,12 @@ void func_800C76C0(u8 playerId) { if ((D_800EA104 == 0) && (D_800EA0EC[playerId] == 1)) { func_800C3448(0x100100FF); func_800C3448(0x110100FF); - func_800C8EF8(0x000DU); + play_sequence2(SEQ_EVENT_RACE_FINISH_FIRST); D_800EA104 = 1; } else if ((D_800EA104 == 1) && (D_800EA0EC[playerId] == 1)) { if (func_800C3508(1) != 0x000D) { D_800EA104 = 0; - func_800C8EF8(0x000EU); + play_sequence2(SEQ_EVENT_RACE_FINISH_OTHER); } D_800EA104 = 2; } else if ((D_800EA104 == 2) && (D_800EA0EC[playerId] == 1)) { @@ -2526,7 +2537,7 @@ void func_800C76C0(u8 playerId) { #endif { D_800EA104 = 0; - func_800CA414(0x000EU, 0x0017U); + play_sequences(SEQ_EVENT_RACE_FINISH_OTHER, SEQ_MENU_RESULTS_SCREEN_WIN_VS); } D_800EA104 = 3; } @@ -2540,7 +2551,7 @@ void func_800C76C0(u8 playerId) { func_800C3448(0x110100FF); func_800C5278(5U); func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xF9, 0x26)); - func_800C8EF8(0x0017U); + play_sequence2(SEQ_MENU_RESULTS_SCREEN_WIN_VS); D_800EA0EC[playerId] = 2; func_800C90F4(playerId, (gPlayers[gPlayerWinningIndex].characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0D)); @@ -2549,7 +2560,7 @@ void func_800C76C0(u8 playerId) { if ((D_800EA0EC[0] == 1) && (D_800EA0EC[1] == 1) && (D_800EA0EC[2] == 1)) { func_800C5278(5U); func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0x80, 0x26)); - func_800C8EF8(0x0017U); + play_sequence2(SEQ_MENU_RESULTS_SCREEN_WIN_VS); D_800EA0EC[playerId] = 2; func_800C90F4(playerId, (gPlayers[gPlayerWinningIndex].characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0D)); @@ -2560,7 +2571,7 @@ void func_800C76C0(u8 playerId) { (D_800EA0EC[3] == 1)) { func_800C5278(5U); func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0x80, 0x26)); - func_800C8EF8(0x0017U); + play_sequence2(SEQ_MENU_RESULTS_SCREEN_WIN_VS); D_800EA0EC[playerId] = 2; func_800C90F4(playerId, (gPlayers[gPlayerWinningIndex].characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0D)); @@ -2714,13 +2725,13 @@ void func_800C847C(u8 playerId) { } void func_800C86D8(u8 playerId) { - if (((gPlayers[playerId].effects & 0x40000000) != 0x40000000) && (D_800E9F24[playerId] == 1)) { + if (((gPlayers[playerId].effects & LIGHTNING_EFFECT) != LIGHTNING_EFFECT) && (D_800E9F24[playerId] == 1)) { func_800C90F4(playerId, (gPlayers[playerId].characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x08)); } } void func_800C8770(u8 playerId) { - if ((gPlayers[playerId].effects & 0x40000000) == 0x40000000) { + if ((gPlayers[playerId].effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) { D_800E9F24[playerId] = 1; if (D_800E9F2C[playerId] < 0xFA) { D_800E9F2C[playerId]++; @@ -2753,11 +2764,14 @@ void func_800C8770(u8 playerId) { // Checks the same field for all players before doing something? void func_800C8920(void) { - if (((u8) D_800EA168 != 0) && ((gPlayers[0].effects & 0x40000000) != 0x40000000) && - ((gPlayers[1].effects & 0x40000000) != 0x40000000) && ((gPlayers[2].effects & 0x40000000) != 0x40000000) && - ((gPlayers[3].effects & 0x40000000) != 0x40000000) && ((gPlayers[4].effects & 0x40000000) != 0x40000000) && - ((gPlayers[5].effects & 0x40000000) != 0x40000000) && ((gPlayers[6].effects & 0x40000000) != 0x40000000) && - ((gPlayers[7].effects & 0x40000000) != 0x40000000)) { + if (((u8) D_800EA168 != 0) && ((gPlayers[0].effects & LIGHTNING_EFFECT) != LIGHTNING_EFFECT) && + ((gPlayers[1].effects & LIGHTNING_EFFECT) != LIGHTNING_EFFECT) && + ((gPlayers[2].effects & LIGHTNING_EFFECT) != LIGHTNING_EFFECT) && + ((gPlayers[3].effects & LIGHTNING_EFFECT) != LIGHTNING_EFFECT) && + ((gPlayers[4].effects & LIGHTNING_EFFECT) != LIGHTNING_EFFECT) && + ((gPlayers[5].effects & LIGHTNING_EFFECT) != LIGHTNING_EFFECT) && + ((gPlayers[6].effects & LIGHTNING_EFFECT) != LIGHTNING_EFFECT) && + ((gPlayers[7].effects & LIGHTNING_EFFECT) != LIGHTNING_EFFECT)) { func_800CAC08(); } } @@ -2874,14 +2888,14 @@ void play_sound2(s32 soundBits) { play_sound(soundBits, &D_800EA1C8, 4, &D_800EA1D4, &D_800EA1D4, &D_800EA1DC); } -void func_800C8EAC(u16 arg0) { - func_800C3448(arg0 | 0x10000); - D_800EA15C = arg0; +void play_sequence(u16 index) { + func_800C3448(index | 0x0010000); + D_800EA15C = index; } -void func_800C8EF8(u16 arg0) { - func_800C3448(arg0 | 0x1010000); - D_800EA160 = arg0; +void play_sequence2(u16 index) { + func_800C3448(index | 0x1010000); + D_800EA160 = index; } void func_800C8F44(u8 arg0) { @@ -2928,7 +2942,8 @@ void func_800C90F4(u8 playerId, u32 soundBits) { ((soundBits & ~0xF0) == SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x05))) { D_800EA180 = 1; } - if (((gPlayers[playerId].effects & 0x40000000) == 0x40000000) && ((s32) D_800E9F2C[playerId] >= 0x1F)) { + if (((gPlayers[playerId].effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) && + ((s32) D_800E9F2C[playerId] >= 0x1F)) { play_sound(soundBits, &D_800E9F7C[playerId].pos, playerId, &D_800EA150, &D_800EA1D4, (s8*) &D_800E9F7C[playerId].unk_14); } else { @@ -2957,7 +2972,8 @@ void func_800C92CC(u8 playerId, u32 soundBits) { (u8) var_s0, soundBits); if (temp_v0 != NULL) { temp_v0->unk34 = 170.0f; - if (((gPlayers[playerId].effects & 0x40000000) == 0x40000000) && ((s32) D_800E9F2C[playerId] >= 0x1F)) { + if (((gPlayers[playerId].effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) && + ((s32) D_800E9F2C[playerId] >= 0x1F)) { play_sound((gPlayers[playerId].characterId * 0x10) + soundBits, &temp_v0->unk18, var_s0, &D_800EA150, &D_800EA1D4, (s8*) &D_800EA06C[playerId].unk0C); } else { @@ -3301,12 +3317,12 @@ void func_800CA388(u8 arg0) { fade_channel_volume_scale(5, 0, arg0); } -void func_800CA414(u16 arg0, u16 arg1) { +void play_sequences(u16 first, u16 second) { if (D_800EA104 == 0) { func_800C3448(func_800C3508(0) | 0x30000000); func_800C35E8(0); - func_800C3448(arg1 | 0xC1510000); - func_800C3448(arg0 | 0x1000000); + func_800C3448(second | 0xC1510000); + func_800C3448(first | 0x01000000); } D_800EA104 = 1; } @@ -3318,12 +3334,12 @@ void func_800CA49C(u8 playerIndex) { } else if (D_800EA164 != 0) { func_800C3448(0x100100FF); // 0x19000000 func_800C3448(0x110100FF); - func_800C8EF8(0xC); + play_sequence2(SEQ_EVENT_RACE_FINAL_LAP); func_800C3448(0xC1510011); } else { func_800C3448(0x100100FF); // 0x19000000 func_800C3448(0x110100FF); - func_800C8EF8(0xC); + play_sequence2(SEQ_EVENT_RACE_FINAL_LAP); func_800C3448(D_800EA15C | 0xC1500000); func_800C3448(0xC130017D); } @@ -3347,11 +3363,11 @@ void func_800CA59C(u8 playerId) { func_800C3448(0xC1F00000); func_800C3448(0xC1510011); } else { - func_800C8EF8(0x0011U); + play_sequence2(SEQ_EVENT_RACE_POWERUP_STAR); } } else { if (1) {} // ? - func_800C8EF8(0x0011U); + play_sequence2(SEQ_EVENT_RACE_POWERUP_STAR); } } D_800EA10C[playerId] = 1; @@ -3374,7 +3390,7 @@ void func_800CA730(u8 playerIndex) { if (D_8018FC08 != 0) { if (((u32) (gSequencePlayers[1].enabled)) == 0) { func_800C3608(1, 5); - func_800C8EAC(D_800EA15C); + play_sequence(D_800EA15C); func_800C3448(0xB001307DU); } else if ((func_800C3508(1) == 0xC) || (func_800C357C(0x0101000C) == 0)) { func_800C3448(0xC1F00000U); @@ -3382,12 +3398,12 @@ void func_800CA730(u8 playerIndex) { func_800C3448(0xC130017DU); } else { func_800C3448(0x110100FFU); - func_800C8EAC(D_800EA15C); + play_sequence(D_800EA15C); func_800C3448(0xB001307DU); } } else { func_800C3448(0x110100FFU); - func_800C8EAC(D_800EA15C); + play_sequence(D_800EA15C); } } D_800EA164 = 0; @@ -3548,41 +3564,54 @@ void func_800CB134() { D_800EA174 = 1; } -void func_800CB14C() { +/* + Play the entire "losing" sequence for the podium ceremony. + + Increments a timer value by one per frame in order to tell which part of the sequence to play at which point. +*/ +void begin_losing_ceremony_sequence() { if (D_800EA174 != 0) { D_800EA174++; + if (D_800EA174 == 3) { - func_800C8EAC(0x001AU); + play_sequence(SEQ_EVENT_CEREMONY_PRESENTATION_PART1); // Begin with Part 1 of the ceremony presentation music --- "Everything seems normal..." func_800C3448(0x4000007F); } - if (D_800EA174 == 0x012C) { - func_800C8EAC(0x001BU); + + if (D_800EA174 == 300) { + play_sequence(SEQ_EVENT_CEREMONY_PRESENTATION_PART2_WIN); // Follow up with Part 2 of the winning ceremony presentation music --- "Looks like I won...?" func_800C3448(0x4000007F); - func_800C8EF8(0x001DU); + play_sequence2(SEQ_EVENT_CEREMONY_PRESENTATION_PART2_LOSE); // Once it ends, begin the LOSING ceremony presentation music, which has a few notes changed to be off-tune --- "Uh oh..." func_800C3448(0x41000000); } - if (D_800EA174 == 0x0230) { + + if (D_800EA174 == 560) { // (Somewhere in this code it slows down the music, changes the pitch of it and completely breaks the music) func_800C3448(0x40640000); func_800C3448(0xB0640073); func_800C3448(0x4150007F); func_800C3448(0xB1640073); } - if (D_800EA174 == 0x02A8) { + + if (D_800EA174 == 680) { func_800C3448(0x100100FF); } - if (D_800EA174 == 0x041A) { + + if (D_800EA174 == 1050) { func_800C3448(0xB1500001); func_800C3448(0x51500001); } - if (D_800EA174 == 0x046A) { + + if (D_800EA174 == 1130) { func_800C3448(0x41320000); } - if (D_800EA174 == 0x04B0) { + + if (D_800EA174 == 1200) { // (Player gets hit by the bomb-omb car; play the "explosion" sound effect and the "hurt" voice for the current character) func_800C3448(0x110100FF); } - if (D_800EA174 == 0x04CE) { - func_800C8EAC(0x0014U); - func_800C3448(0x4000007F); + + if (D_800EA174 == 1230) { // Once the music is completely broken by this point, play the "No Trophy For You!" sequence --- "Aw man, I lost... :(" + play_sequence(SEQ_EVENT_CEREMONY_TROPHY_LOSE); + func_800C3448(0x4000007F); // (Play the "losing" voice for the current character, twice) } } } diff --git a/src/audio/external.h b/src/audio/external.h index 2e827d1a8..5caf82cc2 100644 --- a/src/audio/external.h +++ b/src/audio/external.h @@ -270,8 +270,8 @@ void func_800C8AE4(void); void func_800C8C7C(u8); void func_800C8CCC(void); void play_sound2(s32); -void func_800C8EAC(u16); -void func_800C8EF8(u16); +void play_sequence(u16); +void play_sequence2(u16); void func_800C8F44(u8); void func_800C8F80(u8, u32); @@ -304,7 +304,7 @@ void func_800CA2E4(u8, s8); void func_800CA30C(u8); void func_800CA330(u8); void func_800CA388(u8); -void func_800CA414(u16, u16); +void play_sequences(u16, u16); void func_800CA49C(u8); void func_800CA59C(u8); void func_800CA984(u8); @@ -317,7 +317,7 @@ void func_800CAEC4(u8, f32); void func_800CAFC0(u8); void func_800CB134(void); -void func_800CB14C(void); +void begin_losing_ceremony_sequence(void); void func_800CB2C4(void); void func_800CBC24(void); diff --git a/src/camera.c b/src/camera.c index b15c347ba..220e9daf1 100644 --- a/src/camera.c +++ b/src/camera.c @@ -362,7 +362,7 @@ void func_8001CCEC(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a arg2[0] = camera->lookAt[0]; arg2[1] = camera->lookAt[1]; arg2[2] = camera->lookAt[2]; - if ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) { + if ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) { sp84[2] /= 3.0f; } calculate_orientation_matrix(sp9C, 0, 1, 0, arg7); @@ -375,7 +375,7 @@ void func_8001CCEC(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a arg2[0] += (x - camera->lookAt[0]) * D_80164A78[index]; arg2[2] += ((z - camera->lookAt[2]) * D_80164A78[index]); - if ((((player->speed / 18) * 216) <= 5.0f) && ((player->effects & 2) == 2)) { + if ((((player->speed / 18) * 216) <= 5.0f) && ((player->effects & HOP_EFFECT) == HOP_EFFECT)) { arg2[1] += ((y - camera->lookAt[1]) * 0.02); } else { arg2[1] += ((y - camera->lookAt[1]) * 0.5); @@ -383,7 +383,7 @@ void func_8001CCEC(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a mtxf_transform_vec3f_mat3(sp90, sp9C); x = player->pos[0] + sp90[0]; z = player->pos[2] + sp90[2]; - if ((player->effects & UNKNOWN_EFFECT_0x1000000) != UNKNOWN_EFFECT_0x1000000) { + if ((player->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT) { var_f0 = player->pos[1] + sp90[1]; // permute y = var_f0; @@ -394,7 +394,7 @@ void func_8001CCEC(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a *arg3 = camera->pos[0] + ((x - camera->pos[0]) * D_80164A78[index]); *arg5 = camera->pos[2] + ((z - camera->pos[2]) * D_80164A78[index]); - if ((((player->speed / 18) * 216) <= 5.0f) && ((player->effects & 2) == 2)) { + if ((((player->speed / 18) * 216) <= 5.0f) && ((player->effects & HOP_EFFECT) == HOP_EFFECT)) { *arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.01)); } else { *arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15)); @@ -582,7 +582,7 @@ void func_8001D944(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a arg2[0] = camera->lookAt[0]; arg2[1] = camera->lookAt[1]; arg2[2] = camera->lookAt[2]; - if ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) { + if ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) { sp84[2] /= 3.0f; } calculate_orientation_matrix(sp9C, 0, 1, 0, arg7); @@ -595,7 +595,7 @@ void func_8001D944(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a arg2[0] += (x - camera->lookAt[0]) * D_80164A78[index]; arg2[2] += ((z - camera->lookAt[2]) * D_80164A78[index]); - if ((((player->speed / 18) * 216) <= 5.0f) && ((player->effects & 2) == 2)) { + if ((((player->speed / 18) * 216) <= 5.0f) && ((player->effects & HOP_EFFECT) == HOP_EFFECT)) { arg2[1] += ((y - camera->lookAt[1]) * 0.02); } else { arg2[1] += ((y - camera->lookAt[1]) * 0.5); @@ -603,7 +603,7 @@ void func_8001D944(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a mtxf_transform_vec3f_mat3(sp90, sp9C); x = player->pos[0] + sp90[0]; z = player->pos[2] + sp90[2]; - if ((player->effects & UNKNOWN_EFFECT_0x1000000) != UNKNOWN_EFFECT_0x1000000) { + if ((player->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT) { var_f0 = player->pos[1] + sp90[1]; // permute y = var_f0; @@ -614,7 +614,7 @@ void func_8001D944(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a *arg3 = camera->pos[0] + ((x - camera->pos[0]) * D_80164A78[index]); *arg5 = camera->pos[2] + ((z - camera->pos[2]) * D_80164A78[index]); - if ((((player->speed / 18) * 216) <= 5.0f) && ((player->effects & 2) == 2)) { + if ((((player->speed / 18) * 216) <= 5.0f) && ((player->effects & HOP_EFFECT) == HOP_EFFECT)) { *arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.01)); } else { *arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15)); @@ -704,21 +704,21 @@ void func_8001E45C(Camera* camera, Player* player, s8 arg2) { UNUSED s16 pad6; s16 temp; - if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { var_a3 = 100; if (player->unk_078 == 0) { camera->unk_B0 = 0; } else { if (player->unk_078 < 0) { var_a3 = 0xA5 - (player->unk_078 / 2); - if ((player->effects & 0x20000000) == 0x20000000) { + if ((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) { move_s16_towards(&camera->unk_B0, -0x0B60, 0.1f); } else { move_s16_towards(&camera->unk_B0, -0x0888, 0.1f); } } else { var_a3 = (player->unk_078 / 2) + 0xA5; - if ((player->effects & 0x20000000) == 0x20000000) { + if ((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) { move_s16_towards(&camera->unk_B0, 0x0B60, 0.1f); } else { move_s16_towards(&camera->unk_B0, 0x0888, 0.1f); @@ -729,7 +729,7 @@ void func_8001E45C(Camera* camera, Player* player, s8 arg2) { move_s16_towards(&camera->unk_B0, 0, 0.05f); var_a3 = ((s16) camera->unk_2C / 182) - ((s16) player->rotation[1] / 182); if (player->unk_078 == 0) { - if ((player->effects & 0x20) == 0x20) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { var_a3 = 0x02D8; } else { var_a3 = 0x01F4; @@ -746,11 +746,14 @@ void func_8001E45C(Camera* camera, Player* player, s8 arg2) { var_a3 = (player->unk_078 / 2) + 0xA5; } } - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || - ((player->effects & 0x4000) == 0x4000) || ((player->effects & 0x80000) == 0x80000) || - ((player->effects & 0x800000) == 0x800000) || (((player->effects & 0x20) == 0x20) && (player->unk_078 != 0)) || + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) || + ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || + (((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) && (player->unk_078 != 0)) || (player->collision.surfaceDistance[0] <= 0.0f) || (player->collision.surfaceDistance[1] <= 0.0f) || - ((player->effects & 0x20000) == 0x20000)) { + ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT)) { func_8001CCEC(player, camera, sp64, &sp84, &sp80, &sp7C, &sp58, (s32) camera->unk_2C, (s32) arg2); } else { adjust_angle(&camera->unk_2C, (s16) (player->rotation[1] + camera->unk_B0), var_a3); @@ -826,7 +829,7 @@ void func_8001EA0C(Camera* camera, Player* player, s8 arg2) { UNUSED s16 pad6; s16 temp; - if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { var_a3 = 100; if (player->unk_078 == 0) { camera->unk_B0 = 0; @@ -834,14 +837,14 @@ void func_8001EA0C(Camera* camera, Player* player, s8 arg2) { if (player->unk_078 < 0) { var_a3 = 0xA5 - (player->unk_078 / 2); - if ((player->effects & 0x20000000) == 0x20000000) { + if ((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) { move_s16_towards(&camera->unk_B0, -0x0B60, 0.1f); } else { move_s16_towards(&camera->unk_B0, -0x0888, 0.1f); } } else { var_a3 = (player->unk_078 / 2) + 0xA5; - if ((player->effects & 0x20000000) == 0x20000000) { + if ((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) { move_s16_towards(&camera->unk_B0, 0x0B60, 0.1f); } else { move_s16_towards(&camera->unk_B0, 0x0888, 0.1f); @@ -852,7 +855,7 @@ void func_8001EA0C(Camera* camera, Player* player, s8 arg2) { move_s16_towards(&camera->unk_B0, 0, 0.05f); var_a3 = ((s16) camera->unk_2C / 182) - ((s16) player->rotation[1] / 182); if (player->unk_078 == 0) { - if ((player->effects & 0x20) == 0x20) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { var_a3 = 0x02D8; } else { var_a3 = 0x01F4; @@ -869,11 +872,14 @@ void func_8001EA0C(Camera* camera, Player* player, s8 arg2) { var_a3 = (player->unk_078 / 2) + 0xA5; } } - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || - ((player->effects & 0x4000) == 0x4000) || ((player->effects & 0x80000) == 0x80000) || - ((player->effects & 0x800000) == 0x800000) || (((player->effects & 0x20) == 0x20) && (player->unk_078 != 0)) || + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) || + ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || + (((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) && (player->unk_078 != 0)) || (player->collision.surfaceDistance[0] <= 0.0f) || (player->collision.surfaceDistance[1] <= 0.0f) || - ((player->effects & 0x20000) == 0x20000)) { + ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT)) { func_8001D944(player, camera, sp64, &sp84, &sp80, &sp7C, &sp58, (s32) camera->unk_2C, (s32) arg2); } else { adjust_angle(&camera->unk_2C, (s16) (player->rotation[1] + camera->unk_B0), var_a3); @@ -1027,7 +1033,7 @@ void func_8001F394(Player* player, f32* arg1) { if (player->triggers & DRAG_ITEM_EFFECT) { D_80164A08[playerIndex] = 1; } - if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { + if ((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT) { D_80164A08[playerIndex] = 2; } if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) { @@ -1036,7 +1042,8 @@ void func_8001F394(Player* player, f32* arg1) { if ((player->triggers & THWOMP_SQUISH_TRIGGER) == THWOMP_SQUISH_TRIGGER) { D_80164A08[playerIndex] = 4; } - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT)) { D_80164A08[playerIndex] = 5; } D_80164498[playerIndex] = 0.0f; @@ -1055,7 +1062,7 @@ void func_8001F394(Player* player, f32* arg1) { } break; case 2: - if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { + if ((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT) { if (player->boostTimer != 0) { move_f32_towards(&D_80164498[playerIndex], 8.0f, 0.2f); } @@ -1070,7 +1077,7 @@ void func_8001F394(Player* player, f32* arg1) { break; case 3: if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) && - ((player->effects & 8) == 8)) { + ((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT)) { move_f32_towards(&D_80164498[playerIndex], 20.0f, 0.1f); } else { if (D_80164498[playerIndex] > 1.0f) { @@ -1094,7 +1101,8 @@ void func_8001F394(Player* player, f32* arg1) { } break; case 5: - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT)) { move_f32_towards(&D_80164498[playerIndex], 18.0f, 0.2f); } else { if (D_80164498[playerIndex] > 1.0f) { diff --git a/src/code_800029B0.c b/src/code_800029B0.c index 16a69bedc..a351de8ec 100644 --- a/src/code_800029B0.c +++ b/src/code_800029B0.c @@ -351,15 +351,15 @@ void func_80003040(void) { break; case COURSE_SHERBET_LAND: // d_course_sherbet_land_packed_dl_1EB8 - find_vtx_and_set_colours(0x07001EB8, 76, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(0x07001EB8, 180, 0xFF, 0xFF, 0xFF); // d_course_sherbet_land_packed_dl_2308 - find_vtx_and_set_colours(0x07002308, 106, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(0x07002308, 150, 0xFF, 0xFF, 0xFF); break; case COURSE_RAINBOW_ROAD: // d_course_rainbow_road_packed_dl_2068 - find_vtx_and_set_colours(0x07002068, 106, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(0x07002068, 150, 0xFF, 0xFF, 0xFF); // d_course_rainbow_road_packed_dl_1E18 - find_vtx_and_set_colours(0x07001E18, 106, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(0x07001E18, 150, 0xFF, 0xFF, 0xFF); // d_course_rainbow_road_packed_dl_1318 find_vtx_and_set_colours(0x07001318, 255, 0xFF, 0xFF, 0); break; diff --git a/src/code_8003DC40.c b/src/code_8003DC40.c index 47c5d7d24..f9a7e324d 100644 --- a/src/code_8003DC40.c +++ b/src/code_8003DC40.c @@ -73,13 +73,13 @@ void func_8003E048(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4 arg3[2] = (-(player->slopeAccel / 182) * 0xB4); player_decelerate_alternative(player, 4.0f); player->unk_DAC = 0.5f; - if ((player->effects & BOOST_EFFECT) != 0) { - remove_boost_effect(player); + if ((player->effects & MUSHROOM_EFFECT) != 0) { + remove_mushroom_effect(player); player->currentSpeed /= 2; player->unk_08C /= 2; } } else if ((((player->speed / 18.0f) * 216.0f) > 20.0f) || - ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000)) { + ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT)) { arg3[0] = ((player->unk_206 / 182) * 0x32); arg3[2] = (-(player->slopeAccel / 182) * 0x3C); } else { @@ -102,13 +102,13 @@ void func_8003E37C(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4 player_decelerate_alternative(player, 5.0f); } player->unk_DAC = 0.5f; - if ((player->effects & BOOST_EFFECT) != 0) { - remove_boost_effect(player); + if ((player->effects & MUSHROOM_EFFECT) != 0) { + remove_mushroom_effect(player); player->currentSpeed /= 2; player->unk_08C /= 2; } } else if ((((player->speed / 18.0f) * 216.0f) > 20.0f) || - ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000)) { + ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT)) { arg3[0] = ((player->unk_206 / 182) * 0x32); arg3[2] = (-(player->slopeAccel / 182) * 0x32); } else { @@ -130,7 +130,7 @@ void func_8003E6EC(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4 player_decelerate_alternative(player, 4.0f); func_8003DC40(player); } else if ((((player->speed / 18.0f) * 216.0f) > 20.0f) || - ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000)) { + ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT)) { arg3[0] = ((player->unk_206 / 182) * 0x32); arg3[2] = (-(player->slopeAccel / 182) * 0x3C); } else { @@ -153,7 +153,7 @@ void func_8003E9EC(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4 func_8003DC40(player); } else { if ((((player->speed / 18.0f) * 216.0f) > 20.0f) || - ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000)) { + ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT)) { if ((player->tyres[BACK_LEFT].surfaceType == ASPHALT) || (player->tyres[BACK_RIGHT].surfaceType == ASPHALT) || (player->tyres[FRONT_RIGHT].surfaceType == ASPHALT) || @@ -167,7 +167,7 @@ void func_8003E9EC(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4 arg3[0] = 0.0f; arg3[2] = (-(player->slopeAccel / 182) * 0x32); } - if ((player->effects & UNKNOWN_EFFECT_0x10000) != 0) { + if ((player->effects & TERRAIN_TUMBLE_EFFECT) != 0) { arg3[0] = ((player->unk_206 / 182) * 0x78); arg3[2] = (-(player->slopeAccel / 182) * 0xB4); } @@ -187,7 +187,7 @@ void func_8003EE2C(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4 player_decelerate_alternative(player, 4.0f); func_8003DC40(player); } else if ((((player->speed / 18.0f) * 216.0f) > 20.0f) || - ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000)) { + ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT)) { arg3[0] = ((player->unk_206 / 182) * 0x32); arg3[2] = (-(player->slopeAccel / 182) * 0x3C); } else { @@ -213,7 +213,7 @@ void func_8003F138(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4 player->unk_DAC = 0.5f; arg3[0] = 0; } else if ((((player->speed / 18.0f) * 216.0f) > 20.0f) || - ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000)) { + ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT)) { arg3[0] = ((player->unk_206 / 182) * 0x78); arg3[2] = (-(player->slopeAccel / 182) * 0x78); arg3[0] = 0; @@ -268,7 +268,7 @@ void func_8003F46C(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4 #else #endif - if (player->effects & UNKNOWN_EFFECT_0x10000) { + if (player->effects & TERRAIN_TUMBLE_EFFECT) { player->unk_DAC = 0.5f; } } @@ -296,7 +296,7 @@ void func_8003F734(Player* player, Vec3f arg1, Vec3f arg2, f32* arg3, f32* arg4, *arg5 += arg1[1] * player->collision.surfaceDistance[0] * 0.1; *arg6 += arg1[2] * player->collision.surfaceDistance[0] * 1; func_8002A5F4(arg1, *arg3, arg2, 1, 0); - if ((!(player->effects & UNKNOWN_EFFECT_0x10000)) && ((player->effects & 8) == 0)) { + if ((!(player->effects & TERRAIN_TUMBLE_EFFECT)) && ((player->effects & MIDAIR_EFFECT) == 0)) { arg2[1] *= -1e-05; } } else { @@ -309,11 +309,11 @@ void func_8003F734(Player* player, Vec3f arg1, Vec3f arg2, f32* arg3, f32* arg4, } *arg6 += arg1[2] * player->collision.surfaceDistance[0] * 1; func_8002A5F4(arg1, *arg3, arg2, 1.2f, 0); - if ((!(player->effects & UNKNOWN_EFFECT_0x10000)) && ((player->effects & 8) == 0)) { + if ((!(player->effects & TERRAIN_TUMBLE_EFFECT)) && ((player->effects & MIDAIR_EFFECT) == 0)) { arg2[1] *= -1e-05; } } - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; temp_f12 = player->collision.surfaceDistance[0] * arg1[0]; temp_f14 = player->collision.surfaceDistance[0] * arg1[2]; if (((temp_f12 >= 0) && (temp_f14 >= 0)) || ((temp_f12 < 0) && (temp_f14 >= 0))) { @@ -350,7 +350,7 @@ void func_8003FBAC(Player* player, Vec3f arg1, Vec3f arg2, f32* arg3, f32* arg4, *arg5 += arg1[1] * player->collision.surfaceDistance[1] * 0.1; *arg6 += arg1[2] * player->collision.surfaceDistance[1] * 1; func_8002A5F4(arg1, *arg3, arg2, 1, 0); - if ((!(player->effects & UNKNOWN_EFFECT_0x10000)) && ((player->effects & 8) == 0)) { + if ((!(player->effects & TERRAIN_TUMBLE_EFFECT)) && ((player->effects & MIDAIR_EFFECT) == 0)) { arg2[1] *= -1e-05; } } else { @@ -363,11 +363,11 @@ void func_8003FBAC(Player* player, Vec3f arg1, Vec3f arg2, f32* arg3, f32* arg4, } *arg6 += arg1[2] * player->collision.surfaceDistance[1] * 1; func_8002A5F4(arg1, *arg3, arg2, 1.2f, 0); - if ((!(player->effects & UNKNOWN_EFFECT_0x10000)) && ((player->effects & 8) == 0)) { + if ((!(player->effects & TERRAIN_TUMBLE_EFFECT)) && ((player->effects & MIDAIR_EFFECT) == 0)) { arg2[1] *= -1e-05; } } - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; temp_f12 = player->collision.surfaceDistance[1] * arg1[0]; temp_f14 = player->collision.surfaceDistance[1] * arg1[2]; if (((temp_f12 >= 0) && (temp_f14 >= 0)) || ((temp_f12 >= 0) && (temp_f14 < 0))) { diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 6acdb0a28..9d6619977 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -1442,7 +1442,8 @@ void func_8005A14C(s32 playerId) { objectIndex = D_8018CE10[playerId].objectIndex; lapCount = gLapCountByPlayerId[playerId]; if (player->type & PLAYER_EXISTS) { - if (player->effects & 0x204C0) { + if (player->effects & + (LIGHTNING_STRIKE_EFFECT | HIT_BY_GREEN_SHELL_EFFECT | BANANA_SPINOUT_EFFECT | DRIVING_SPINOUT_EFFECT)) { gObjectList[objectIndex].direction_angle[2] += 0x1000; } else { if (gObjectList[objectIndex].direction_angle[2] != 0) { @@ -1454,12 +1455,12 @@ void func_8005A14C(s32 playerId) { } else { f32_step_towards(&gObjectList[objectIndex].sizeScaling, 0.6f, 0.02f); } - if (player->effects & HIT_EFFECT) { + if (player->effects & SQUISH_EFFECT) { u16_step_up_towards(&gObjectList[objectIndex].direction_angle[0], 0x0C00U, 0x0100U); } else { u16_step_down_towards(&gObjectList[objectIndex].direction_angle[0], 0, 0x00000100); } - if (player->effects & 0x03000000) { + if (player->effects & (HIT_BY_STAR_EFFECT | EXPLOSION_CRASH_EFFECT)) { func_80087D24(objectIndex, 6.0f, 1.5f, 0.0f); } else { f32_step_towards(&gObjectList[objectIndex].offset[1], 0.0f, 1.0f); @@ -3376,7 +3377,7 @@ void func_8005F90C(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 f32 var_f12; var_t1 = 0; - if ((player->effects & 0x80) == 0x80) { + if ((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) { var_f0 = player->pos[0]; var_f2 = player->pos[1] - player->boundingBoxSize; var_f12 = player->pos[2]; @@ -3584,7 +3585,7 @@ void func_80060504(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 player->particles[arg1].unk_024 = 0.0f; if ((player->unk_044 & 0x20) == 0x20) { player->particles[arg1].unk_040 = 0; - if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { + if ((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT) { set_particle_colour(&player->particles[arg1], 0x00FFFF00, 0x0080); player->particles[arg1].red = 1; } else { @@ -3593,7 +3594,7 @@ void func_80060504(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8 } } else { player->particles[arg1].unk_040 = 1; - if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { + if ((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT) { set_particle_colour(&player->particles[arg1], 0x00FFFF00, 0x0080); player->particles[arg1].red = 1; } else { @@ -3824,8 +3825,8 @@ void func_80061754(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s32 arg3, U sp48 = random_int(2U); set_particle_position_and_rotation(player, &player->particles[0x1E + arg1], 0.0f, 0.0f, 0.0f, (s8) 0, (s8) 0); init_new_particle_player(&player->particles[0x1E + arg1], 6, 1.0f); - if ((player->effects & HIT_BY_ITEM_EFFECT) || ((player->effects) & UNKNOWN_EFFECT_0x1000000) || - ((player->effects) & 0x400) || ((player->effects) & BOO_EFFECT)) { + if ((player->effects & HIT_BY_STAR_EFFECT) || ((player->effects) & EXPLOSION_CRASH_EFFECT) || + ((player->effects) & HIT_BY_GREEN_SHELL_EFFECT) || ((player->effects) & BOO_EFFECT)) { set_particle_colour(&player->particles[0x1E + arg1], 0x00FFFFFF, 0x00A0); player->particles[0x1E + arg1].red -= temp_s1; player->particles[0x1E + arg1].green -= temp_s1; @@ -4260,7 +4261,7 @@ void func_80062C74(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s32 arg3) { } else { var_f6 = -((player->unk_098 / 6000.0f) + 0.1); } - if (((player->effects & BOOST_EFFECT) == BOOST_EFFECT) && (player->particles[arg1].timer >= 6)) { + if (((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT) && (player->particles[arg1].timer >= 6)) { player->particles[arg1].scale = player->particles[arg1].scale + 0.06; } player->particles[arg1].unk_010++; @@ -4382,7 +4383,7 @@ void func_80063408(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { ++player->particles[10 + arg1].timer; player->particles[10 + arg1].pos[1] += 1.0f; - if (((player->effects & 0x80) != 0) || ((player->effects & 0x40) != 0)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) != 0) || ((player->effects & DRIVING_SPINOUT_EFFECT) != 0)) { player->particles[10 + arg1].IsAlive = 0; player->particles[10 + arg1].timer = 0; } @@ -4444,7 +4445,7 @@ void func_800635D4(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) { ++player->particles[10 + arg1].timer; player->particles[10 + arg1].pos[1] += 0.2; - if (((player->effects & 0x80) != 0) || ((player->effects & 0x40) != 0)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) != 0) || ((player->effects & DRIVING_SPINOUT_EFFECT) != 0)) { player->particles[10 + arg1].IsAlive = 0; player->particles[10 + arg1].timer = 0; } @@ -4927,13 +4928,14 @@ void func_800650FC(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 arg3) { player->particles[20 + arg3].pos[2] = (f32) player->pos[2]; player->particles[20 + arg3].pos[0] = (f32) player->pos[0]; player->particles[20 + arg3].pos[1] = (f32) (player->pos[1] + 4.0f); - if ((player->effects & 0x80) == 0x80) { + if ((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) { player->particles[20 + arg3].rotation += 4732; } else { player->particles[20 + arg3].rotation -= 4732; } - if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) != BANANA_SPINOUT_EFFECT) && + ((player->effects & DRIVING_SPINOUT_EFFECT) != DRIVING_SPINOUT_EFFECT)) { player->particles[20 + arg3].IsAlive = 0; player->particles[20 + arg3].timer = 0; player->particles[20 + arg3].type = 0; @@ -4993,7 +4995,8 @@ void func_8006538C(Player* player, s8 playerIndex, s16 arg2, s8 arg3) { spAC[0] = 0; spAC[1] = player->unk_048[arg3]; spAC[2] = 0; - if ((player->effects & STAR_EFFECT) && (((s32) gCourseTimer - gPlayerStarEffectStartTime[playerIndex]) < STAR_EFFECT_DURATION - 1)) { + if ((player->effects & STAR_EFFECT) && + (((s32) gCourseTimer - gPlayerStarEffectStartTime[playerIndex]) < STAR_EFFECT_DURATION - 1)) { primRed = (primColors[1] >> 0x10) & 0xFF; primGreen = (primColors[1] >> 0x08) & 0xFF; primBlue = (primColors[1] >> 0x00) & 0xFF; @@ -6262,17 +6265,19 @@ void func_8006C6AC(Player* player, s16 arg1, s8 arg2, s8 arg3) { } else { if (player->unk_0DE & 1) { func_80060BCC(player, arg1, sp28, arg2_copy, arg3); - } else if (!(player->effects & 8) && !(player->effects & 2)) { - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && + } else if (!(player->effects & MIDAIR_EFFECT) && !(player->effects & HOP_EFFECT)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { check_drift_particles_setup_valid(player, arg1, sp28, arg2_copy, arg3); } else if (((f64) (D_801652A0[arg2_copy] - player->tyres[BACK_RIGHT].baseHeight) >= 3.5) || ((f64) (D_801652A0[arg2_copy] - player->tyres[BACK_LEFT].baseHeight) >= 3.5)) { func_8005EA94(player, arg1, sp28, arg2_copy, arg3); - } else if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { + } else if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT)) { func_8005F90C(player, arg1, sp28, arg2_copy, arg3); - } else if (((player->effects & 0x4000) && !(player->type & PLAYER_START_SEQUENCE)) || - (player->effects & 0x800) || (player->effects & 0x20) || (player->unk_044 & 0x4000)) { + } else if (((player->effects & EARLY_START_SPINOUT_EFFECT) && !(player->type & PLAYER_START_SEQUENCE)) || + (player->effects & BANANA_NEAR_SPINOUT_EFFECT) || (player->effects & AB_SPIN_EFFECT) || + (player->unk_044 & 0x4000)) { func_8005ED48(player, arg1, sp28, arg2_copy, arg3); } else { setup_tyre_particles(player, arg1, sp28, arg2_copy, arg3); @@ -6336,9 +6341,9 @@ void func_8006C9B8(Player* player, s16 arg1, s8 playerIndex, s8 arg3) { return; } if (((((player->unk_0CA & 0x1000) == 0x1000) || - ((player->unk_0E0 < 2) && (player->effects & UNKNOWN_EFFECT_0x1000000))) || - ((player->unk_0E0 < 2) && (player->effects & HIT_BY_ITEM_EFFECT))) || - (player->effects & 0x400)) { + ((player->unk_0E0 < 2) && (player->effects & EXPLOSION_CRASH_EFFECT))) || + ((player->unk_0E0 < 2) && (player->effects & HIT_BY_STAR_EFFECT))) || + (player->effects & HIT_BY_GREEN_SHELL_EFFECT)) { func_8006199C(player, arg1, sp28, playerIndex, arg3); player->unk_046 &= ~0x0008; player->unk_044 &= ~0x0100; @@ -6350,7 +6355,8 @@ void func_8006C9B8(Player* player, s16 arg1, s8 playerIndex, s8 arg3) { player->unk_044 &= ~0x0100; return; } - if ((player->effects & STAR_EFFECT) && ((((s32) gCourseTimer) - gPlayerStarEffectStartTime[playerIndex]) < STAR_EFFECT_DURATION - 1)) { + if ((player->effects & STAR_EFFECT) && + ((((s32) gCourseTimer) - gPlayerStarEffectStartTime[playerIndex]) < STAR_EFFECT_DURATION - 1)) { func_800615AC(player, arg1, sp28, playerIndex, arg3); player->unk_046 &= ~0x0008; player->unk_044 &= ~0x0100; @@ -6367,11 +6373,11 @@ void func_8006C9B8(Player* player, s16 arg1, s8 playerIndex, s8 arg3) { player->unk_044 &= ~0x0100; return; } - if ((player->effects & BOOST_EFFECT) && (player->type & PLAYER_HUMAN)) { + if ((player->effects & MUSHROOM_EFFECT) && (player->type & PLAYER_HUMAN)) { func_800621BC(player, arg1, sp28, playerIndex, arg3); return; } - if (((player->effects & 0x200000) || (player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && + if (((player->effects & CPU_FAST_EFFECT) || (player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { func_80061EF4(player, arg1, sp28, playerIndex, arg3); player->unk_046 &= ~0x0008; @@ -6414,7 +6420,7 @@ void func_8006CEC0(Player* arg0, s16 arg1, s8 arg2, s8 arg3) { if ((arg0->unk_044 & 0x200) && (arg0->type & 0x4000)) { func_80061224(arg0, arg1, sp20, arg2, arg3); return; - } else if (((arg0->effects & 0x40000000) == 0x40000000) && (arg0->unk_0B0 < 0x32)) { + } else if (((arg0->effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) && (arg0->unk_0B0 < 0x32)) { func_80061094(arg0, arg1, sp20, arg2, arg3); return; } else if ((arg0->type & 0x4000) == 0x4000) { @@ -6428,8 +6434,9 @@ void func_8006CEC0(Player* arg0, s16 arg1, s8 arg2, s8 arg3) { } switch (gActiveScreenMode) { case SCREEN_MODE_1P: - if (((arg0->effects & 0x04000000) != 0x04000000) && ((arg0->effects & 0x400) != 0x400) && - ((arg0->effects & UNKNOWN_EFFECT_0x1000000) != UNKNOWN_EFFECT_0x1000000)) { + if (((arg0->effects & SQUISH_EFFECT) != SQUISH_EFFECT) && + ((arg0->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) && + ((arg0->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT)) { if (((arg0->unk_0CA & 2) != 2) && ((arg0->unk_0CA & 0x10) != 0x10) && !(arg0->unk_0CA & 0x100)) { func_80060504(arg0, arg1, sp20, arg2, arg3); } @@ -6440,9 +6447,9 @@ void func_8006CEC0(Player* arg0, s16 arg1, s8 arg2, s8 arg3) { case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: case SCREEN_MODE_3P_4P_SPLITSCREEN: - if (((arg0->type & 0x4000) != 0) && ((arg0->effects & 0x04000000) != 0x04000000) && - ((arg0->effects & 0x400) != 0x400) && - ((arg0->effects & UNKNOWN_EFFECT_0x1000000) != UNKNOWN_EFFECT_0x1000000)) { + if (((arg0->type & 0x4000) != 0) && ((arg0->effects & SQUISH_EFFECT) != SQUISH_EFFECT) && + ((arg0->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) && + ((arg0->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT)) { if (((arg0->unk_0CA & 2) != 2) && ((arg0->unk_0CA & 0x10) != 0x10) && !(arg0->unk_0CA & 0x100)) { func_80060504(arg0, arg1, sp20, arg2, arg3); } diff --git a/src/code_80086E70.c b/src/code_80086E70.c index 27e19548f..db2ebf326 100644 --- a/src/code_80086E70.c +++ b/src/code_80086E70.c @@ -976,7 +976,7 @@ void func_80089020(s32 playerId, f32* arg1) { } else { var_f2 = -*arg1; } - if (player->effects & 0xC0) { + if (player->effects & (BANANA_SPINOUT_EFFECT | DRIVING_SPINOUT_EFFECT)) { if (gCurrentCourseId == COURSE_SHERBET_LAND) { if (var_f2 <= 0.5) { var_f0 = 0.025f; @@ -1043,7 +1043,7 @@ f32 func_8008933C(Player* player, s32 objectIndex, f32 arg2, f32 arg3) { if (temp_v1->unk_18[6] == 0) { object = &gObjectList[objectIndex]; player->unk_046 |= 2; - player->effects |= 0x8000; + player->effects |= ENEMY_BONK_EFFECT; temp_v1->unk_18[6] = 4; something = (player->pos[0] - object->pos[0]) * object->velocity[0]; if (something >= 0.0f) { @@ -1181,7 +1181,7 @@ s32 func_80089B50(s32 objectIndex) { player = gPlayerOne; if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) { for (playerIndex = 0; playerIndex < D_8018D158; playerIndex++, player++, test++) { - if ((gObjectList[objectIndex].state != 0) && !(player->effects & (BOO_EFFECT | UNKNOWN_EFFECT_0x1000000)) && + if ((gObjectList[objectIndex].state != 0) && !(player->effects & (BOO_EFFECT | EXPLOSION_CRASH_EFFECT)) && (player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) { if (!(player->effects & STAR_EFFECT)) { @@ -1208,7 +1208,7 @@ s32 func_80089CBC(s32 objectIndex, f32 arg1) { player = gPlayerOne; if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) { for (playerIndex = 0; playerIndex < D_8018D158; playerIndex++, player++) { - if ((gObjectList[objectIndex].state != 0) && !(player->effects & (BOO_EFFECT | UNKNOWN_EFFECT_0x1000000))) { + if ((gObjectList[objectIndex].state != 0) && !(player->effects & (BOO_EFFECT | EXPLOSION_CRASH_EFFECT))) { 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)) { @@ -1234,7 +1234,8 @@ s32 func_80089E18(s32 objectIndex) { player = gPlayerOne; if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) { for (playerIndex = 0; playerIndex < D_8018D158; playerIndex++, player++) { - if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x800000C0) && + if ((gObjectList[objectIndex].state != 0) && + !(player->effects & (BOO_EFFECT | BANANA_SPINOUT_EFFECT | DRIVING_SPINOUT_EFFECT)) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) { if (player->effects & STAR_EFFECT) { var_s6 = 1; @@ -1256,7 +1257,8 @@ s32 func_80089F24(s32 objectIndex) { player = gPlayerOne; if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) { for (playerIndex = 0; playerIndex < D_8018D158; playerIndex++, player++) { - if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x800002C0)) { + if ((gObjectList[objectIndex].state != 0) && + !(player->effects & (BOO_EFFECT | STAR_EFFECT | BANANA_SPINOUT_EFFECT | DRIVING_SPINOUT_EFFECT))) { if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) { var_s7 = 1; diff --git a/src/cpu_vehicles_camera_path.c b/src/cpu_vehicles_camera_path.c index e7d61f382..26fa50d4a 100644 --- a/src/cpu_vehicles_camera_path.c +++ b/src/cpu_vehicles_camera_path.c @@ -1239,7 +1239,7 @@ void update_player_path_completion(s32 playerId, Player* player) { s16 var_t0 = 0; if (gCurrentCourseId == COURSE_KALAMARI_DESERT) { D_801634EC = 0; - if (player->effects & 0x200) { + if (player->effects & STAR_EFFECT) { D_801634EC = 1; } if (gIsMirrorMode != 0) { @@ -1353,14 +1353,15 @@ void update_vehicles(void) { void play_cpu_sound_effect(s32 arg0, Player* player) { if (D_80163398[arg0] >= 0xB) { - if ((player->effects & 0x80) || (player->effects & 0x40) || (player->effects & 0x20000)) { + if ((player->effects & BANANA_SPINOUT_EFFECT) || (player->effects & DRIVING_SPINOUT_EFFECT) || + (player->effects & LIGHTNING_STRIKE_EFFECT)) { func_800C92CC(arg0, SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0A)); D_80163398[arg0] = 0; } } 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)) { + (player->triggers & HIGH_TUMBLE_TRIGGER) || (player->triggers & LOW_TUMBLE_TRIGGER) || (player->effects & SQUISH_EFFECT)) { func_800C92CC(arg0, SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0B)); D_801633B0[arg0] = 0; } @@ -1481,7 +1482,7 @@ void update_player(s32 playerId) { break; } D_801631E0[playerId] = false; - if ((player->effects & UNKNOWN_EFFECT_0x1000) && (gCurrentCourseId != COURSE_AWARD_CEREMONY)) { + if ((player->effects & LOST_RACE_EFFECT) && (gCurrentCourseId != COURSE_AWARD_CEREMONY)) { D_801631E0[playerId] = true; } if ((D_801646CC == 1) || (player->type & PLAYER_CINEMATIC_MODE) || @@ -1520,7 +1521,7 @@ void update_player(s32 playerId) { } if (D_801631E0[playerId] == true) { D_801630E8[playerId] = 0; - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; if ((playerId & 1) != (gIncrementUpdatePlayer & 1)) { apply_cpu_turn(player, 0); regulate_cpu_speed(playerId, gPreviousCpuTargetSpeed[playerId], player); @@ -1542,7 +1543,8 @@ void update_player(s32 playerId) { determine_ideal_cpu_position_offset(playerId, gCurrentNearestPathPoint); distX = gOffsetPosition[0] - player->pos[0]; minAngle = gOffsetPosition[2] - player->pos[2]; - if (!(player->effects & 0x80) && !(player->effects & 0x40) && !(player->effects & 0x800)) { + if (!(player->effects & BANANA_SPINOUT_EFFECT) && !(player->effects & DRIVING_SPINOUT_EFFECT) && + !(player->effects & BANANA_NEAR_SPINOUT_EFFECT)) { if (((distX * distX) + (minAngle * minAngle)) > 6400.0f) { if (gPlayerPathIndex == 0) { func_8000B140(playerId); @@ -1564,7 +1566,7 @@ void update_player(s32 playerId) { return; } if ((D_801630E8[playerId] == 1) || (D_801630E8[playerId] == -1)) { - player->effects |= UNKNOWN_EFFECT_0x10; + player->effects |= DRIFTING_EFFECT; } if (D_801630E8[playerId] != 0) { sPlayerAngle[playerId] = -get_xz_angle_between_points(player->oldPos, player->pos); @@ -1596,13 +1598,13 @@ void update_player(s32 playerId) { case -1: if (steeringSensitivity > 5) { D_801630E8[playerId] = 0; - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; } break; case 1: if (steeringSensitivity < -5) { D_801630E8[playerId] = 0; - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; } break; default: @@ -1699,9 +1701,9 @@ void update_player(s32 playerId) { if ((cpu_BehaviourState[playerId] == CPU_BEHAVIOUR_STATE_RUNNING) && ((gTrackPositionFactor[playerId] > 0.9f) || (gTrackPositionFactor[playerId] < -0.9f))) { D_801630E8[playerId] = 0; - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; } - if (player->effects & 2) { + if (player->effects & HOP_EFFECT) { switch (D_801630E8[playerId]) { case 1: newAngle = 0x0035; @@ -1714,7 +1716,7 @@ void update_player(s32 playerId) { (gPreviousAngleSteering[playerId] + ((angle * steeringSensitivity) / minAngle)) / 2; break; } - } else if (player->effects & (UNKNOWN_EFFECT_0x10000000 | UNKNOWN_EFFECT_0xC)) { + } else if (player->effects & (UNKNOWN_EFFECT_0x10000000 | MIDAIR_EFFECT | BOOST_RAMP_WOOD_EFFECT)) { newAngle = 0; } else { newAngle = (gPreviousAngleSteering[playerId] + ((angle * steeringSensitivity) / minAngle)) / 2; @@ -1723,7 +1725,7 @@ void update_player(s32 playerId) { gPreviousAngleSteering[playerId] = newAngle; if ((gIsPlayerInCurve[playerId] == true) || (D_801630E8[playerId] == 1) || (D_801630E8[playerId] == -1) || - (player->effects & (UNKNOWN_EFFECT_0x10000000 | UNKNOWN_EFFECT_0xC))) { + (player->effects & (UNKNOWN_EFFECT_0x10000000 | MIDAIR_EFFECT | BOOST_RAMP_WOOD_EFFECT))) { cpu_TargetSpeed[playerId] = GET_COURSE_cpu_CurveTargetSpeed(gCCSelection); } else { cpu_TargetSpeed[playerId] = GET_COURSE_cpu_NormalTargetSpeed(gCCSelection); @@ -1738,7 +1740,7 @@ void update_player(s32 playerId) { cpu_TargetSpeed[playerId] = 3.3333333f; } gCurrentCpuTargetSpeed = cpu_TargetSpeed[playerId]; - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; gPreviousCpuTargetSpeed[playerId] = gCurrentCpuTargetSpeed; check_ai_crossing_distance(playerId); regulate_cpu_speed(playerId, gCurrentCpuTargetSpeed, player); @@ -1771,7 +1773,7 @@ void func_8000B140(s32 playerId) { Player* player; player = &gPlayers[playerId]; - if (player->effects & UNKNOWN_EFFECT_0x10) { + if (player->effects & DRIFTING_EFFECT) { return; } @@ -2421,7 +2423,7 @@ void func_80015390(Camera* camera, UNUSED Player* player, UNUSED s32 arg2) { } else { var_a2 = 0xA0 + (temp_s1->unk_078 / 16); } - if (!((temp_s1->effects & 0x80) || (temp_s1->effects & 0x40))) { + if (!((temp_s1->effects & BANANA_SPINOUT_EFFECT) || (temp_s1->effects & DRIVING_SPINOUT_EFFECT))) { adjust_angle(&camera->unk_2C, temp_s1->rotation[1], var_a2); } func_8001D794(temp_s1, camera, sp64, &sp84, &sp80, &sp7C, camera->unk_2C); @@ -3707,7 +3709,7 @@ void func_8001A450(s32 playerId, s32 arg1, s32 arg2) { s16 pathPoint; s32 temp_v0; - if (!(gPlayers[playerId].effects & (UNKNOWN_EFFECT_0x10000000 | UNKNOWN_EFFECT_0xC))) { + if (!(gPlayers[playerId].effects & (UNKNOWN_EFFECT_0x10000000 | MIDAIR_EFFECT | BOOST_RAMP_WOOD_EFFECT))) { temp_v1 = D_80164680[arg1]; pathPoint = gNearestPathPointByCameraId[arg1]; temp_v0 = func_8001A310(pathPoint, (temp_v1 + 1) % 10); @@ -4439,7 +4441,7 @@ void cpu_use_item_strategy(s32 playerId) { if (cpuStrategy->timer < 10000) { cpuStrategy->timer += 1; } - if (player->effects & (BOO_EFFECT | BOOST_EFFECT | STAR_EFFECT)) { // 0x80002200 + if (player->effects & (BOO_EFFECT | MUSHROOM_EFFECT | STAR_EFFECT)) { cpuStrategy->timer = 0; } } @@ -4549,12 +4551,12 @@ void func_8001C14C(void) { D_80163480 = 0; } } else if (D_8016347E == 0) { - if (!(temp_s0->effects & UNKNOWN_EFFECT_0x1000000)) { + if (!(temp_s0->effects & EXPLOSION_CRASH_EFFECT)) { temp_s0->type |= 0x2000; } D_8016347E = 1; D_80163484 = 0; - } else if (!(temp_s0->effects & UNKNOWN_EFFECT_0x1000000)) { + } else if (!(temp_s0->effects & EXPLOSION_CRASH_EFFECT)) { temp_s0->type |= 0x2000; } } diff --git a/src/cpu_vehicles_camera_path/behaviour_utils.inc.c b/src/cpu_vehicles_camera_path/behaviour_utils.inc.c index 1851bbb52..728d0c893 100644 --- a/src/cpu_vehicles_camera_path/behaviour_utils.inc.c +++ b/src/cpu_vehicles_camera_path/behaviour_utils.inc.c @@ -47,7 +47,7 @@ void cpu_behaviour_start(s32 playerId, Player* player) { break; case BEHAVIOUR_HOP: kart_hop(player); - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; D_801630E8[playerId] = 0; break; case BEHAVIOUR_DRIVE_CENTER: @@ -74,7 +74,7 @@ void cpu_behaviour_start(s32 playerId, Player* player) { case BEHAVIOUR_9: D_801633F8[playerId] = 1; D_801631E0[playerId] = false; - gPlayers[playerId].effects &= ~UNKNOWN_EFFECT_0x1000; + gPlayers[playerId].effects &= ~LOST_RACE_EFFECT; break; case BEHAVIOUR_10: D_801633F8[playerId] = 0; @@ -95,7 +95,7 @@ void cpu_behaviour_end(s32 playerIndex, Player* player) { if (nearestPathPoint >= pathPointEnd) { switch (behaviourType) { case BEHAVIOUR_1: - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; D_801630E8[playerIndex] = 0; cpu_BehaviourState[playerIndex] = CPU_BEHAVIOUR_STATE_START; break; @@ -144,7 +144,7 @@ void func_80011EC0(s32 playerIndex, Player* player, s32 arg2, UNUSED u16 arg3) { if ((arg2 >= -9) && (D_80162FF8[playerIndex] == 0)) { if ((gTrackPositionFactor[playerIndex] > -0.8) && (gTrackPositionFactor[playerIndex] < 0.5)) { kart_hop(player); - player->effects |= UNKNOWN_EFFECT_0x10; + player->effects |= DRIFTING_EFFECT; D_801630E8[playerIndex] = 1; break; } @@ -156,7 +156,7 @@ void func_80011EC0(s32 playerIndex, Player* player, s32 arg2, UNUSED u16 arg3) { if ((arg2 < 0xA) && (D_80162FF8[playerIndex] == 0)) { if ((gTrackPositionFactor[playerIndex] > -0.5) && (gTrackPositionFactor[playerIndex] < 0.8)) { kart_hop(player); - player->effects |= UNKNOWN_EFFECT_0x10; + player->effects |= DRIFTING_EFFECT; D_801630E8[playerIndex] = -1; break; } diff --git a/src/cpu_vehicles_camera_path/bomb_kart.inc.c b/src/cpu_vehicles_camera_path/bomb_kart.inc.c index d9700b8b6..73838149a 100644 --- a/src/cpu_vehicles_camera_path/bomb_kart.inc.c +++ b/src/cpu_vehicles_camera_path/bomb_kart.inc.c @@ -147,7 +147,7 @@ void func_8000DF8C(s32 bombKartId) { for (var_a0 = 0; var_a0 < gPlayerCount; var_a0++) { var_v0 = &gPlayers[var_a0]; - if (!(var_v0->effects & 0x80000000)) { + if (!(var_v0->effects & BOO_EFFECT)) { temp_f0 = var_f22 - var_v0->pos[0]; temp_f2 = var_f20 - var_v0->pos[1]; temp_f12 = var_f24 - var_v0->pos[2]; 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..1ba70abfc 100644 --- a/src/cpu_vehicles_camera_path/cpu_speed_control.inc.c +++ b/src/cpu_vehicles_camera_path/cpu_speed_control.inc.c @@ -11,13 +11,13 @@ void func_80007D04(s32 playerId, Player* player) { s16 val2 = temp_t2 - temp_t1; if (val2 > 400 && val1 >= 6) { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_accelerate_alternative(player); D_801634C0[playerId] = 4; return; } } else { - player->effects |= UNKNOWN_EFFECT_0x200000; + player->effects |= CPU_FAST_EFFECT; player_accelerate_alternative(player); D_801634C0[playerId] = 3; return; @@ -63,19 +63,19 @@ void func_80007D04(s32 playerId, Player* player) { } if (temp_t2 < temp_t1) { - player->effects |= UNKNOWN_EFFECT_0x200000; + player->effects |= CPU_FAST_EFFECT; player_accelerate_alternative(player); D_801634C0[playerId] = 1; } else if (temp_t2 < (temp_t1 + var_v0 + 0x32)) { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_accelerate_alternative(player); D_801634C0[playerId] = 3; } else if (D_801631E0[playerId] == false) { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_accelerate_alternative(player); D_801634C0[playerId] = 2; } else { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_decelerate_alternative(player, 1.0f); D_801634C0[playerId] = -1; } @@ -133,7 +133,7 @@ void regulate_cpu_speed(s32 playerId, f32 targetSpeed, Player* player) { s32 var_a1; speed = player->speed; - if (!(player->effects & 0x80) && !(player->effects & 0x40) && !(player->effects & 0x20000) && + if (!(player->effects & BANANA_SPINOUT_EFFECT) && !(player->effects & DRIVING_SPINOUT_EFFECT) && !(player->effects & LIGHTNING_STRIKE_EFFECT) && !(player->triggers & VERTICAL_TUMBLE_TRIGGER) && !(player->triggers & HIT_BY_STAR_TRIGGER) && !(player->triggers & HIGH_TUMBLE_TRIGGER) && !(player->triggers & LOW_TUMBLE_TRIGGER)) { if (gCurrentCourseId == COURSE_AWARD_CEREMONY) { @@ -158,34 +158,34 @@ void regulate_cpu_speed(s32 playerId, f32 targetSpeed, Player* player) { break; } if (speed < var_f0) { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_accelerate_alternative(player); } else if (player->type & PLAYER_CINEMATIC_MODE) { if (speed < targetSpeed) { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_accelerate_alternative(player); } else { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_decelerate_alternative(player, 1.0f); } } else if ((D_801631E0[playerId] == true) && (D_80163330[playerId] != 1)) { if (func_800088D8(playerId, gLapCountByPlayerId[playerId], gGPCurrentRaceRankByPlayerIdDup[playerId]) == 1) { - player->effects |= UNKNOWN_EFFECT_0x200000; + player->effects |= CPU_FAST_EFFECT; player_accelerate_alternative(player); } else { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_decelerate_alternative(player, 1.0f); } } else { var_a1 = 1; switch (gSpeedCPUBehaviour[playerId]) { /* switch 1; irregular */ case SPEED_CPU_BEHAVIOUR_FAST: /* switch 1 */ - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_accelerate_alternative(player); break; case SPEED_CPU_BEHAVIOUR_MAX: /* switch 1 */ - player->effects |= UNKNOWN_EFFECT_0x200000; + player->effects |= CPU_FAST_EFFECT; player_accelerate_alternative(player); break; case SPEED_CPU_BEHAVIOUR_SLOW: /* switch 1 */ @@ -207,14 +207,14 @@ void regulate_cpu_speed(s32 playerId, f32 targetSpeed, Player* player) { func_80007D04(playerId, player); } else if (func_800088D8(playerId, gLapCountByPlayerId[playerId], gGPCurrentRaceRankByPlayerIdDup[playerId]) == true) { - player->effects |= UNKNOWN_EFFECT_0x200000; + player->effects |= CPU_FAST_EFFECT; player_accelerate_alternative(player); } else { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; player_decelerate_alternative(player, 1.0f); } } else { - player->effects &= ~UNKNOWN_EFFECT_0x200000; + player->effects &= ~CPU_FAST_EFFECT; if (targetSpeed > 1.0f) { player_decelerate_alternative(player, 2.0f); } else { diff --git a/src/cpu_vehicles_camera_path/vehicle_utils.inc.c b/src/cpu_vehicles_camera_path/vehicle_utils.inc.c index 16fa54671..d359e1070 100644 --- a/src/cpu_vehicles_camera_path/vehicle_utils.inc.c +++ b/src/cpu_vehicles_camera_path/vehicle_utils.inc.c @@ -361,7 +361,7 @@ void handle_trains_interactions(s32 playerId, Player* player) { s32 passengerCarIndex; if (D_801631E0[playerId] != true) { - if (!(player->effects & UNKNOWN_EFFECT_0x1000000)) { + if (!(player->effects & EXPLOSION_CRASH_EFFECT)) { playerPosX = player->pos[0]; playerPosZ = player->pos[2]; for (trainIndex = 0; trainIndex < NUM_TRAINS; trainIndex++) { @@ -605,7 +605,7 @@ void handle_paddle_boats_interactions(Player* player) { f32 playerZ; f32 playerY; - if (!((player->effects & UNKNOWN_EFFECT_0x1000000)) && (!(player->effects & HIT_BY_ITEM_EFFECT))) { + if (!((player->effects & EXPLOSION_CRASH_EFFECT)) && (!(player->effects & HIT_BY_STAR_EFFECT))) { playerX = player->pos[0]; playerY = player->pos[1]; playerZ = player->pos[2]; @@ -788,7 +788,7 @@ void handle_vehicle_interactions(s32 playerId, Player* player, VehicleStuff* veh f32 playerZ; if (((D_801631E0[playerId] != true) || ((((player->type & PLAYER_HUMAN) != 0)) && !(player->type & PLAYER_CPU))) && - !(player->effects & UNKNOWN_EFFECT_0x1000000)) { + !(player->effects & EXPLOSION_CRASH_EFFECT)) { playerX = player->pos[0]; playerY = player->pos[1]; diff --git a/src/effects.c b/src/effects.c index 89b2cb1ee..33b31f625 100644 --- a/src/effects.c +++ b/src/effects.c @@ -146,33 +146,34 @@ UNUSED void func_unnamed34(void) { void clean_effect(Player* player, s8 playerIndex) { - if ((player->effects & 0x400) == 0x400) { + if ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) { func_8008C6D0(player, playerIndex); } - if (((player->effects & 0x80) == 0x80) || (player->effects & 0x40) == 0x40) { + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + (player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) { func_8008C8C4(player, playerIndex); } - if ((player->effects & 0x800) == 0x800) { + if ((player->effects & BANANA_NEAR_SPINOUT_EFFECT) == BANANA_NEAR_SPINOUT_EFFECT) { func_8008D0E4(player, playerIndex); } if ((player->unk_044 & 0x4000) != 0) { func_8008D3B0(player, playerIndex); } - if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { - remove_boost_effect(player); + if ((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT) { + remove_mushroom_effect(player); } - if ((player->effects & 0x80000) == 0x80000) { + if ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) { func_8008D760(player); } - if ((player->effects & 0x800000) == 0x800000) { + if ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) { func_8008D97C(player); } - if ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) { + if ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) { func_8008E884(player, playerIndex); } - if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) { - remove_hit_by_item_effect(player, playerIndex); + if ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) { + remove_hit_by_star_effect(player, playerIndex); } if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) { remove_boost_ramp_asphalt_effect(player); @@ -180,17 +181,17 @@ void clean_effect(Player* player, s8 playerIndex) { if ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT) { remove_boost_ramp_wood_effect(player); } - if ((player->effects & 0x4000) == 0x4000) { + if ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) { func_8008F3E0(player); } - if ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000) { + if ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT) { func_8008F5A4(player, playerIndex); } if ((player->effects & UNKNOWN_EFFECT_0x10000000) == UNKNOWN_EFFECT_0x10000000) { func_8008FEDC(player, playerIndex); } player->unk_044 = (s16) (player->unk_044 & 0xFFFE); - player->effects = (s32) (player->effects & ~0x20); + player->effects = (s32) (player->effects & ~AB_SPIN_EFFECT); } void func_8008C528(Player* player, s8 playerIndex) { @@ -205,8 +206,8 @@ void func_8008C528(Player* player, s8 playerIndex) { player->kartHopVelocity = D_800E3790[temp_v1]; player->unk_0A8 = 0; - player->effects = player->effects | 0x400; - player->effects = player->effects & ~0x10; + player->effects = player->effects | HIT_BY_GREEN_SHELL_EFFECT; + player->effects = player->effects & ~DRIFTING_EFFECT; player->unk_0C0 = 0; player->unk_236 = 2; player->unk_042 = 0; @@ -242,7 +243,7 @@ void func_8008C6D0(Player* player, s8 playerIndex) { player->unk_206 = 0; player->slopeAccel = 0; - player->effects = (s32) (player->effects & ~0x400); + player->effects = (s32) (player->effects & ~HIT_BY_GREEN_SHELL_EFFECT); player->unk_0A8 = 0; player->unk_0C0 = 0; player->unk_07C = 0; @@ -258,13 +259,14 @@ void func_8008C6D0(Player* player, s8 playerIndex) { void func_8008C73C(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); - if (((player->effects & UNKNOWN_EFFECT_0x80) != UNKNOWN_EFFECT_0x80) && ((player->effects & UNKNOWN_EFFECT_0x40) != UNKNOWN_EFFECT_0x40)) { - player->effects &= ~UNKNOWN_EFFECT_0x10; + if (((player->effects & BANANA_SPINOUT_EFFECT) != BANANA_SPINOUT_EFFECT) && + ((player->effects & DRIVING_SPINOUT_EFFECT) != DRIVING_SPINOUT_EFFECT)) { + player->effects &= ~DRIFTING_EFFECT; if ((player->unk_0C0 / 182) >= 0) { - player->effects |= UNKNOWN_EFFECT_0x40; + player->effects |= DRIVING_SPINOUT_EFFECT; } else { - player->effects |= UNKNOWN_EFFECT_0x80; + player->effects |= BANANA_SPINOUT_EFFECT; } player->unk_0B6 |= 0x80; @@ -292,13 +294,13 @@ void func_8008C73C(Player* player, s8 playerIndex) { } void func_8008C8C4(Player* player, s8 playerId) { - player->effects &= ~UNKNOWN_EFFECT_0x80; - player->effects &= ~UNKNOWN_EFFECT_0x40; + player->effects &= ~BANANA_SPINOUT_EFFECT; + player->effects &= ~DRIVING_SPINOUT_EFFECT; player->unk_0A8 = 0; player->rotation[1] = player->unk_0AE; player->unk_07C = 0; player->unk_0C0 = 0; - player->effects &= ~0x800; + player->effects &= ~BANANA_NEAR_SPINOUT_EFFECT; D_80165190[0][playerId] = 1; D_80165190[1][playerId] = 1; @@ -335,7 +337,7 @@ void func_8008C9EC(Player* player, s8 playerIndex) { player_decelerate_alternative(player, 30.0f); } } - if ((player->effects & 0x80) == 0x80) { + if ((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) { player->rotation[1] -= sp30[player->unk_0B2]; D_8018D920[playerIndex] -= sp30[player->unk_0B2]; stackPadding1 = (u16) D_8018D920[playerIndex] / (0x10000 / (0x168 / (sp30[player->unk_0B2] / 182))); @@ -377,14 +379,14 @@ void func_8008CDC0(Player* player, s8 playerIndex) { player->unk_0B4 = 0; player->unk_0B8 = 3.0f; player->unk_0AC = 1; - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; if (((player->unk_07C >> 0x10) >= 0x14) || ((player->unk_07C >> 0x10) < -0x13) || - (((player->speed / 18.0f) * 216.0f) <= 30.0f) || ((player->effects & 8) != 0) || - (((player->type & PLAYER_HUMAN) == 0) && ((player->effects & UNKNOWN_EFFECT_0x1000) == 0))) { + (((player->speed / 18.0f) * 216.0f) <= 30.0f) || ((player->effects & MIDAIR_EFFECT) != 0) || + (((player->type & PLAYER_HUMAN) == 0) && ((player->effects & LOST_RACE_EFFECT) == 0))) { func_8008C73C(player, playerIndex); } else { - player->effects |= 0x800; + player->effects |= BANANA_NEAR_SPINOUT_EFFECT; } } @@ -403,17 +405,17 @@ void func_8008CEB0(Player* player, s8 playerIndex) { var_v1 = 0; var_a3 = -var_a3; var_f0 *= 0.8; - if ((player->effects & 1) == 1) { - player->effects |= 0x40000; + if ((player->effects & BRAKING_EFFECT) == BRAKING_EFFECT) { + player->effects |= BANANA_SPINOUT_SAVE_EFFECT; } if (var_f0 <= 1.0f) { - player->effects &= ~0x800; - if ((player->effects & 0x40000) != 0x40000) { + player->effects &= ~BANANA_NEAR_SPINOUT_EFFECT; + if ((player->effects & BANANA_SPINOUT_SAVE_EFFECT) != BANANA_SPINOUT_SAVE_EFFECT) { func_8008C73C(player, playerIndex); var_v1 = 0; } else { player->unk_0B6 |= 0x20; - player->effects &= ~0x40000; + player->effects &= ~BANANA_SPINOUT_SAVE_EFFECT; if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { func_800C90F4(playerIndex, (player->characterId * 0x10) + 0x29008008); var_v1 = 0; @@ -432,14 +434,14 @@ void func_8008CEB0(Player* player, s8 playerIndex) { player->unk_0B8 = var_f0; player->unk_0B4 = var_v1; player->unk_0AC = var_a3; - if (player->effects & 8) { + if (player->effects & MIDAIR_EFFECT) { func_8008C73C(player, playerIndex); - player->effects &= ~0x800; + player->effects &= ~BANANA_NEAR_SPINOUT_EFFECT; } } void func_8008D0E4(Player* player, UNUSED s8 playerIndex) { - player->effects &= ~0x800; + player->effects &= ~BANANA_NEAR_SPINOUT_EFFECT; } void func_8008D0FC(Player* player, s8 playerIndex) { @@ -449,7 +451,7 @@ void func_8008D0FC(Player* player, s8 playerIndex) { player->unk_0B4 = 0; player->unk_0B8 = 2.0f; player->unk_0AC = 1; - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; player->unk_044 |= 0x4000; } @@ -468,17 +470,17 @@ void func_8008D170(Player* player, s8 playerIndex) { var_v1 = 0; var_a3 = -var_a3; var_f0 *= 0.9; - if (((player->effects & 1) == 1) || !(player->unk_044 & 0x20)) { - player->effects |= 0x40000; + if (((player->effects & BRAKING_EFFECT) == BRAKING_EFFECT) || !(player->unk_044 & 0x20)) { + player->effects |= BANANA_SPINOUT_SAVE_EFFECT; } if (var_f0 <= 1.3) { player->unk_044 &= ~0x4000; - if ((player->effects & 0x40000) != 0x40000) { + if ((player->effects & BANANA_SPINOUT_SAVE_EFFECT) != BANANA_SPINOUT_SAVE_EFFECT) { func_8008C73C(player, playerIndex); var_v1 = 0; } else { player->unk_0B6 |= 0x20; - player->effects &= ~0x40000; + player->effects &= ~BANANA_SPINOUT_SAVE_EFFECT; if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { func_800C90F4(playerIndex, (player->characterId * 0x10) + 0x29008008); var_v1 = 0; @@ -497,7 +499,7 @@ void func_8008D170(Player* player, s8 playerIndex) { player->unk_0B8 = var_f0; player->unk_0B4 = var_v1; player->unk_0AC = var_a3; - if (player->effects & 8) { + if (player->effects & MIDAIR_EFFECT) { func_8008C73C(player, playerIndex); player->unk_044 &= ~0x4000; } @@ -511,7 +513,7 @@ void trigger_shroom(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); - player->effects |= BOOST_EFFECT; + player->effects |= MUSHROOM_EFFECT; player->triggers &= ~SHROOM_TRIGGER; player->unk_DB4.unk0 = 0; player->unk_DB4.unk8 = 8.0f; @@ -532,7 +534,7 @@ void trigger_shroom(Player* player, s8 playerIndex) { player->boostTimer = 0x50; } -void apply_boost_effect(Player* player) { +void apply_mushroom_effect(Player* player) { player->currentSpeed = (f32) player->topSpeed; if (player->boostTimer > 0) { --player->boostTimer; @@ -545,12 +547,12 @@ void apply_boost_effect(Player* player) { } if (player->boostPower <= 1.0f) { - player->effects &= ~BOOST_EFFECT; + player->effects &= ~MUSHROOM_EFFECT; } } -void remove_boost_effect(Player* player) { - player->effects &= ~BOOST_EFFECT; +void remove_mushroom_effect(Player* player) { + player->effects &= ~MUSHROOM_EFFECT; player->boostPower = 0.0f; } @@ -558,8 +560,8 @@ void func_8008D570(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); player->unk_0AE = player->rotation[1]; - player->effects |= 0x80000; - player->effects &= ~0x10; + player->effects |= UNKNOWN_EFFECT_0x80000; + player->effects &= ~DRIFTING_EFFECT; player->triggers &= ~UNUSED_TRIGGER_0x1000; player->kartHopJerk = D_800E3730[player->characterId]; player->kartHopAcceleration = 0.0f; @@ -597,7 +599,7 @@ void func_8008D698(Player* player, s8 playerIndex) { if (player->unk_0B2 <= 0) { player->unk_0B2 = 0; } - if ((player->unk_0B2 == 0) && ((player->effects & 8) != 8)) { + if ((player->unk_0B2 == 0) && ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) { func_8008D760(player); } } @@ -608,7 +610,7 @@ void func_8008D760(Player* player) { player->unk_07C = 0; player->unk_0C0 = 0; player->rotation[1] = player->unk_0AE; - player->effects &= 0xFFF7FFFF; + player->effects &= ~UNKNOWN_EFFECT_0x80000; player->kartGravity = gKartGravityTable[player->characterId]; player->type &= 0xFF7F; } @@ -617,8 +619,8 @@ void func_8008D7B0(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); player->unk_0AE = player->rotation[1]; - player->effects |= 0x800000; - player->effects &= ~0x10; + player->effects |= UNKNOWN_EFFECT_0x800000; + player->effects &= ~DRIFTING_EFFECT; player->triggers &= ~UNUSED_TRIGGER_0x20000; player->kartHopJerk = D_800E3770[player->characterId]; player->kartHopAcceleration = 0.0f; @@ -651,7 +653,7 @@ void func_8008D8B4(Player* player, s8 playerIndex) { if (player->unk_0B2 <= 0) { player->unk_0B2 = 0; } - if ((player->unk_0B2 == 0) && ((player->effects & 8) != 8)) { + if ((player->unk_0B2 == 0) && ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) { func_8008D97C(player); } } @@ -662,7 +664,7 @@ void func_8008D97C(Player* player) { player->unk_07C = 0; player->unk_0C0 = 0; player->rotation[1] = player->unk_0AE; - player->effects &= 0xFF7FFFFF; + player->effects &= ~UNKNOWN_EFFECT_0x800000; player->kartGravity = gKartGravityTable[player->characterId]; } @@ -691,12 +693,12 @@ void func_8008D9C0(Player* player) { void trigger_squish(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); - if ((player->effects & HIT_EFFECT) == 0) { + if ((player->effects & SQUISH_EFFECT) == 0) { player->unk_DB4.unk2 = 0; player->unk_238 = 0; player->unk_DB4.unk10 = 4.5f; D_8018D990[playerIndex] = 0; - player->effects &= ~0x08000010; + player->effects &= ~(POST_SQUISH_EFFECT | DRIFTING_EFFECT); D_80165190[0][playerIndex] = 1; D_80165190[1][playerIndex] = 1; D_80165190[2][playerIndex] = 1; @@ -709,11 +711,11 @@ void trigger_squish(Player* player, s8 playerIndex) { player->unk_046 |= 0x80; } - if (((player->type & PLAYER_HUMAN) != 0) && ((player->effects & HIT_EFFECT) == 0)) { + if (((player->type & PLAYER_HUMAN) != 0) && ((player->effects & SQUISH_EFFECT) == 0)) { func_800C90F4(playerIndex, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x05)); } - player->effects |= HIT_EFFECT; + player->effects |= SQUISH_EFFECT; if (((player->type) & 0x1000) != 0) { play_cpu_sound_effect(playerIndex, player); } @@ -728,7 +730,7 @@ void apply_hit_effect(Player* player, s8 playerIndex) { player->unk_08C = 0.0f; player->currentSpeed = 0.0f; // clang-format off - if ((player->collision.surfaceDistance[2] >= 600.0f) || ((player->effects & UNKNOWN_EFFECT_0x1000) != 0)) { D_8018D990[playerIndex] = 3; } // placed block on same line to match + if ((player->collision.surfaceDistance[2] >= 600.0f) || ((player->effects & LOST_RACE_EFFECT) != 0)) { D_8018D990[playerIndex] = 3; } // placed block on same line to match // clang-format on switch (D_8018D990[playerIndex]) { @@ -802,7 +804,7 @@ void apply_hit_effect(Player* player, s8 playerIndex) { player->unk_DB4.unk10 = 4.5f; player->pos[1] -= 0.085; - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { D_8018D990[playerIndex] = 3; player->unk_238 = 0; } @@ -811,9 +813,9 @@ void apply_hit_effect(Player* player, s8 playerIndex) { break; case 3: player->unk_DB4.unk10 = 3.0f; - player->effects &= ~HIT_EFFECT; + player->effects &= ~SQUISH_EFFECT; player->unk_DB4.unk2 = 0; - player->effects |= 0x08000000; + player->effects |= POST_SQUISH_EFFECT; player->size = 1.0f; player->boundingBoxSize = gKartBoundingBoxSizeTable[player->characterId]; D_80165190[0][playerIndex] = 1; @@ -832,8 +834,8 @@ void trigger_lightning_strike(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); player->triggers &= ~LIGHTNING_STRIKE_TRIGGER; - player->effects |= 0x40020000; - player->effects &= ~0x10; + player->effects |= (LIGHTNING_EFFECT | LIGHTNING_STRIKE_EFFECT); + player->effects &= ~DRIFTING_EFFECT; player->unk_08C *= 0.6; player->unk_0B0 = 0; player->size = 1.0f; @@ -864,8 +866,9 @@ void trigger_lightning_strike(Player* player, s8 playerIndex) { void apply_lightning_effect(Player* player, s8 playerIndex) { s16 test; - if (((player->effects & 0x8000) == 0x8000) && ((player->effects & HIT_EFFECT) != HIT_EFFECT)) { - player->effects &= ~0x20000; + if (((player->effects & ENEMY_BONK_EFFECT) == ENEMY_BONK_EFFECT) && + ((player->effects & SQUISH_EFFECT) != SQUISH_EFFECT)) { + player->effects &= ~LIGHTNING_STRIKE_EFFECT; player->unk_0A8 = 0; player->unk_07C = 0; player->unk_0C0 = 0; @@ -876,7 +879,7 @@ void apply_lightning_effect(Player* player, s8 playerIndex) { D_80165190[2][playerIndex] = 1; D_80165190[3][playerIndex] = 1; trigger_squish(player, playerIndex); - } else if ((player->effects & 0x20000) == 0x20000) { + } else if ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) { player->rotation[1] -= 0x5B0; D_8018D920[playerIndex] -= 0x5B0; test = (u16) D_8018D920[playerIndex] / 1456; @@ -884,7 +887,7 @@ void apply_lightning_effect(Player* player, s8 playerIndex) { player->unk_0B2--; if (player->unk_0B2 <= 0) { player->unk_0A8 = 0; - player->effects &= ~0x20000; + player->effects &= ~LIGHTNING_STRIKE_EFFECT; player->unk_07C = 0; player->unk_0C0 = 0; player->rotation[1] = player->unk_0AE; @@ -923,13 +926,13 @@ void remove_lightning_effect(Player* player, UNUSED s8 playerIndex) { player->boundingBoxSize = gKartBoundingBoxSizeTable[player->characterId]; player->unk_DB4.unk10 = 3.0f; player->unk_DB4.unk2 = 0; - player->effects |= 0x08000000; + player->effects |= POST_SQUISH_EFFECT; - if ((player->effects & 0x20000) == 0x20000) { + if ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) { player->rotation[1] = player->unk_0AE; } - player->effects &= ~0x20000; + player->effects &= ~LIGHTNING_STRIKE_EFFECT; } void func_8008E4A4(Player* player, s8 playerIndex) { @@ -943,14 +946,14 @@ void func_8008E4A4(Player* player, s8 playerIndex) { player->currentSpeed = 0.0f; player->velocity[0] = 0.0f; player->velocity[2] = 0.0f; - player->effects &= ~0xC0; + player->effects &= ~(BANANA_SPINOUT_EFFECT | DRIVING_SPINOUT_EFFECT); - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { ++player->unk_0E0; } if (player->unk_0E0 == 3) { - player->effects &= ~UNKNOWN_EFFECT_0x1000000; + player->effects &= ~EXPLOSION_CRASH_EFFECT; player->unk_0A8 = 0; player->unk_236 = 0; D_80165190[0][playerIndex] = 1; @@ -972,7 +975,7 @@ void func_8008E4A4(Player* player, s8 playerIndex) { player->unk_0A8 = 0; --player->unk_236; if (player->unk_236 == 0) { - player->effects &= ~UNKNOWN_EFFECT_0x1000000; + player->effects &= ~EXPLOSION_CRASH_EFFECT; player->unk_236 = 0; D_80165190[0][playerIndex] = 1; D_80165190[1][playerIndex] = 1; @@ -983,7 +986,8 @@ void func_8008E4A4(Player* player, s8 playerIndex) { if (gModeSelection == BATTLE) { pop_player_balloon(player, playerIndex); } - if ((gIsPlayerTripleAButtonCombo[playerIndex] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { + if ((gIsPlayerTripleAButtonCombo[playerIndex] == true) && + ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { player->currentSpeed += 100.0f; } @@ -998,8 +1002,8 @@ void trigger_vertical_tumble(Player* player, s8 playerIndex) { func_8008C310(player); player->unk_0A8 = 0; - player->effects |= UNKNOWN_EFFECT_0x1000000; - player->effects &= ~0x10; + player->effects |= EXPLOSION_CRASH_EFFECT; + player->effects &= ~DRIFTING_EFFECT; player->kartHopJerk = 0.0f; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = 0.0f; @@ -1035,7 +1039,7 @@ void trigger_vertical_tumble(Player* player, s8 playerIndex) { } void func_8008E884(Player* player, s8 playerIndex) { - player->effects &= ~UNKNOWN_EFFECT_0x1000000; + player->effects &= ~EXPLOSION_CRASH_EFFECT; player->unk_0A8 = 0; player->unk_236 = 0; D_80165190[0][playerIndex] = 1; @@ -1045,7 +1049,7 @@ void func_8008E884(Player* player, s8 playerIndex) { player->unk_042 = 0; } -void apply_hit_by_item_effect(Player* player, s8 playerIndex) { +void apply_hit_by_star_effect(Player* player, s8 playerIndex) { player->unk_206 = 0; player->slopeAccel = 0; player->unk_0C0 = 0; @@ -1054,14 +1058,14 @@ void apply_hit_by_item_effect(Player* player, s8 playerIndex) { player->unk_042 += 0xAAA; player->unk_08C /= 2; player->currentSpeed = 0.0f; - player->effects &= ~0xC0; + player->effects &= ~(BANANA_SPINOUT_EFFECT | DRIVING_SPINOUT_EFFECT); - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { ++player->unk_0E0; } if (player->unk_0E0 == 4) { - player->effects &= ~HIT_BY_ITEM_EFFECT; + player->effects &= ~HIT_BY_STAR_EFFECT; player->unk_0A8 = 0; player->unk_236 = 0; D_80165190[3][playerIndex] = 1; @@ -1083,14 +1087,15 @@ void apply_hit_by_item_effect(Player* player, s8 playerIndex) { player->unk_0A8 = 0; --player->unk_236; if (player->unk_236 == 0) { - player->effects &= ~HIT_BY_ITEM_EFFECT; + player->effects &= ~HIT_BY_STAR_EFFECT; player->unk_236 = 0; D_80165190[0][playerIndex] = 1; D_80165190[1][playerIndex] = 1; D_80165190[2][playerIndex] = 1; D_80165190[3][playerIndex] = 1; player->unk_042 = 0; - if ((gIsPlayerTripleAButtonCombo[playerIndex] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { + if ((gIsPlayerTripleAButtonCombo[playerIndex] == true) && + ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { player->currentSpeed += 100.0f; } @@ -1107,7 +1112,7 @@ void trigger_high_tumble(Player* player, s8 playerIndex) { func_8008C310(player); player->unk_0A8 = 0; - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; player->kartHopJerk = 0.0f; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = 0.0f; @@ -1125,7 +1130,7 @@ void trigger_high_tumble(Player* player, s8 playerIndex) { play_cpu_sound_effect(playerIndex, player); } - player->effects |= HIT_BY_ITEM_EFFECT; + player->effects |= HIT_BY_STAR_EFFECT; player->unk_0B6 |= 0x40; player->triggers &= ~(HIT_BY_STAR_TRIGGER | HIGH_TUMBLE_TRIGGER); @@ -1135,8 +1140,8 @@ void trigger_high_tumble(Player* player, s8 playerIndex) { gFrameSinceLastACombo[playerIndex] = 0; } -void remove_hit_by_item_effect(Player* player, s8 playerIndex) { - player->effects &= ~HIT_BY_ITEM_EFFECT; +void remove_hit_by_star_effect(Player* player, s8 playerIndex) { + player->effects &= ~HIT_BY_STAR_EFFECT; player->unk_0A8 = 0; player->unk_236 = 0; D_80165190[0][playerIndex] = 1; @@ -1163,7 +1168,7 @@ void trigger_asphalt_ramp_boost(Player* player, s8 playerId) { func_800C9060(playerId, 0x1900A40B); } player->unk_044 &= ~0x1; - player->effects &= ~0x20; + player->effects &= ~AB_SPIN_EFFECT; } void apply_boost_ramp_asphalt_effect(Player* player) { @@ -1173,7 +1178,7 @@ void apply_boost_ramp_asphalt_effect(Player* player) { if ((u16) player->unk_256 > 0) { player->currentSpeed = 0.0f; } - if ((player->surfaceType != BOOST_RAMP_ASPHALT) && ((player->effects & 8) != 8)) { + if ((player->surfaceType != BOOST_RAMP_ASPHALT) && ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) { move_f32_towards(&player->boostPower, 0, 1.0f); } else { move_f32_towards(&player->boostPower, 400.0f, 0.01f); @@ -1211,13 +1216,13 @@ void trigger_wood_ramp_boost(Player* player, s8 playerId) { } player->unk_044 &= ~0x1; - player->effects &= ~0x20; + player->effects &= ~AB_SPIN_EFFECT; } void apply_boost_ramp_wood_effect(Player* player) { player->currentSpeed = gTopSpeedTable[0][player->characterId]; - if ((player->surfaceType != BOOST_RAMP_WOOD) && ((player->effects & 8) != 8)) { + if ((player->surfaceType != BOOST_RAMP_WOOD) && ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) { move_f32_towards(&player->boostPower, 0, 1.0f); } else { move_f32_towards(&player->boostPower, 300.0f, 0.1f); @@ -1243,7 +1248,7 @@ void func_8008F104(Player* player, s8 playerIndex) { player->unk_0B2 = 2; player->unk_0C0 = 0; player->unk_07C = 0; - player->effects |= 0x4000; + player->effects |= EARLY_START_SPINOUT_EFFECT; player->unk_078 = 0; D_8018D920[playerIndex] = -0x8000; @@ -1264,7 +1269,7 @@ void func_8008F1B8(Player* player, s8 arg1) { temp = ((u16) D_8018D920[arg1] / 182); if (temp == 180) { - player->effects &= ~0x4000; + player->effects &= ~EARLY_START_SPINOUT_EFFECT; player->type &= ~0x80; player->currentSpeed /= 3.0f; } @@ -1274,7 +1279,7 @@ void func_8008F1B8(Player* player, s8 arg1) { D_8018D920[arg1] -= 182; temp = ((u16) D_8018D920[arg1] / 182); if (temp == 180) { - player->effects &= ~0x4000; + player->effects &= ~EARLY_START_SPINOUT_EFFECT; player->type &= ~0x80; player->currentSpeed /= 3.0f; } @@ -1303,7 +1308,7 @@ void func_8008F1B8(Player* player, s8 arg1) { } void func_8008F3E0(Player* player) { - player->effects &= ~0x4000; + player->effects &= ~EARLY_START_SPINOUT_EFFECT; } void func_8008F3F4(Player* player, UNUSED s8 arg1) { @@ -1316,7 +1321,7 @@ void func_8008F3F4(Player* player, UNUSED s8 arg1) { player->unk_0A8 = 0; --player->unk_236; if (player->unk_236 == 0) { - player->effects &= ~UNKNOWN_EFFECT_0x10000; + player->effects &= ~TERRAIN_TUMBLE_EFFECT; func_80090778(player); func_80090868(player); } @@ -1324,9 +1329,9 @@ void func_8008F3F4(Player* player, UNUSED s8 arg1) { } void func_8008F494(Player* player, s8 playerIndex) { - if ((((player->effects & UNKNOWN_EFFECT_0x80) != 0) || ((player->effects & UNKNOWN_EFFECT_0x40) != 0) || - ((player->effects & UNKNOWN_EFFECT_0x1000000)) || ((player->effects & HIT_BY_ITEM_EFFECT)) || - ((player->effects & 0x400) != 0)) && + if ((((player->effects & BANANA_SPINOUT_EFFECT) != 0) || ((player->effects & DRIVING_SPINOUT_EFFECT) != 0) || + ((player->effects & EXPLOSION_CRASH_EFFECT)) || ((player->effects & HIT_BY_STAR_EFFECT)) || + ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) != 0)) && (gModeSelection == BATTLE)) { player->unk_044 |= 0x8000; } @@ -1335,8 +1340,8 @@ void func_8008F494(Player* player, s8 playerIndex) { func_8008F86C(player, playerIndex); player->unk_0A8 = 0; - player->effects |= UNKNOWN_EFFECT_0x10000; - player->effects &= ~0x10; + player->effects |= TERRAIN_TUMBLE_EFFECT; + player->effects &= ~DRIFTING_EFFECT; player->unk_236 = 0x1E; player->unk_042 = 0; @@ -1355,7 +1360,7 @@ void func_8008F5A4(Player* player, s8 playerIndex) { player->unk_206 = 0; player->slopeAccel = 0; - player->effects &= ~UNKNOWN_EFFECT_0x10000; + player->effects &= ~TERRAIN_TUMBLE_EFFECT; player->unk_0A8 = 0; player->unk_0C0 = 0; player->unk_07C = 0; @@ -1443,7 +1448,7 @@ void apply_boo_effect(Player* player, s8 playerIndex) { if (player->alpha >= 0xF0) { player->alpha = ALPHA_MAX; gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX; - player->effects &= ~0x80000000; + player->effects &= ~BOO_EFFECT; if ((player->type & 0x4000) != 0) { func_800CB064(playerIndex); } @@ -1453,7 +1458,7 @@ void apply_boo_effect(Player* player, s8 playerIndex) { if (gPlayerOtherScreensAlpha[playerIndex] >= 0xF0) { gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX; player->alpha = ALPHA_MAX; - player->effects &= ~0x80000000; + player->effects &= ~BOO_EFFECT; if ((player->type & 0x4000) != 0) { func_800CB064(playerIndex); } @@ -1492,7 +1497,7 @@ void func_8008FB30(Player* player, s8 playerIndex) { player->alpha = ALPHA_MAX; gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX; - player->effects &= ~0x80000000; + player->effects &= ~BOO_EFFECT; if ((player->type & 0x4000) != 0) { func_800CB064(playerIndex); } @@ -1502,7 +1507,7 @@ void func_8008FB30(Player* player, s8 playerIndex) { if (gPlayerOtherScreensAlpha[playerIndex] >= 0xE0) { gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX; player->alpha = ALPHA_MAX; - player->effects &= ~0x80000000; + player->effects &= ~BOO_EFFECT; if ((player->type & 0x4000) != 0) { func_800CB064(playerIndex); } @@ -1568,7 +1573,7 @@ void func_8008FDA8(Player* player, UNUSED s8 arg1) { void func_8008FDF4(Player* player, s8 playerIndex) { clean_effect(player, playerIndex); - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; player->kartHopJerk = D_800E37F0[player->characterId]; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = D_800E37D0[player->characterId]; @@ -1577,8 +1582,8 @@ void func_8008FDF4(Player* player, s8 playerIndex) { } void func_8008FE84(Player* player, UNUSED s8 playerIndex) { - player->effects &= ~0x10; - if ((player->effects & 8) != 8) { + player->effects &= ~DRIFTING_EFFECT; + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { player->effects &= ~UNKNOWN_EFFECT_0x10000000; player->currentSpeed /= 2; player->unk_08C /= 2; @@ -1769,7 +1774,7 @@ void func_80090778(Player* player) { player->unk_07C = 0; player->unk_0C0 = 0; player->unk_0CA |= 8; - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; player->unk_222 = 0; player->unk_08C = 0.0f; @@ -1780,8 +1785,8 @@ void func_80090778(Player* player) { player->unk_0C2 = 0; player->unk_DB4.unk8 = 0.0f; if ((player->effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) { - if ((player->effects & 0x20000) == 0x20000) { - player->effects &= ~0x20000; + if ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) { + player->effects &= ~LIGHTNING_STRIKE_EFFECT; player->unk_0A8 = 0; player->unk_07C = 0; player->unk_0C0 = 0; @@ -1789,7 +1794,7 @@ void func_80090778(Player* player) { } remove_lightning_effect(player, playerIndex); } - player->effects &= ~0x20; + player->effects &= ~AB_SPIN_EFFECT; } void func_80090868(Player* player) { @@ -1932,7 +1937,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) { } move_f32_towards(&player->pos[1], (player->unk_074 + player->boundingBoxSize) - 2.0f, 0.04f); player->unk_0C8++; - if (((player->effects & 8) != 8) || (player->effects & 0x8000)) { + if (((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) || (player->effects & ENEMY_BONK_EFFECT)) { player->unk_0CA &= ~0x1000; if (player->unk_0C8 >= 0x5B) { if (player->type & PLAYER_HUMAN) { @@ -1973,10 +1978,11 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) { } } -#define EFFECT_BLACKLIST_USE_ITEM \ - LIGHTNING_EFFECT | 0x10000000 | 0x8000000 | HIT_EFFECT | HIT_BY_ITEM_EFFECT | 0x1000000 | 0x800000 | \ - BOOST_RAMP_ASPHALT_EFFECT | 0x20000 | 0x10000 | 0x4000 | 0x800 | 0x400 | STAR_EFFECT | 0x80 | 0x40 | \ - BOOST_RAMP_WOOD_EFFECT +#define BLOCK_ITEM_USE_EFFECTS \ + LIGHTNING_EFFECT | UNKNOWN_EFFECT_0x10000000 | POST_SQUISH_EFFECT | SQUISH_EFFECT | HIT_BY_STAR_EFFECT | \ + EXPLOSION_CRASH_EFFECT | UNKNOWN_EFFECT_0x800000 | BOOST_RAMP_ASPHALT_EFFECT | LIGHTNING_STRIKE_EFFECT | \ + TERRAIN_TUMBLE_EFFECT | EARLY_START_SPINOUT_EFFECT | BANANA_NEAR_SPINOUT_EFFECT | HIT_BY_GREEN_SHELL_EFFECT | \ + STAR_EFFECT | BANANA_SPINOUT_EFFECT | DRIVING_SPINOUT_EFFECT | BOOST_RAMP_WOOD_EFFECT bool prevent_item_use(Player* player) { s32 phi_v0 = 0; @@ -1992,15 +1998,15 @@ bool prevent_item_use(Player* player) { case ITEM_DOUBLE_MUSHROOM: case ITEM_TRIPLE_MUSHROOM: case ITEM_SUPER_MUSHROOM: - if ((player->effects & 8) != 0) { + if ((player->effects & MIDAIR_EFFECT) != 0) { return true; } - phi_v0 = EFFECT_BLACKLIST_USE_ITEM; + phi_v0 = BLOCK_ITEM_USE_EFFECTS; goto prevent_item_use_label; case ITEM_STAR: - phi_v0 = BOO_EFFECT | EFFECT_BLACKLIST_USE_ITEM; + phi_v0 = BOO_EFFECT | BLOCK_ITEM_USE_EFFECTS; case ITEM_BOO: - phi_v0 = phi_v0 | (BOO_EFFECT | EFFECT_BLACKLIST_USE_ITEM); + phi_v0 = phi_v0 | (BOO_EFFECT | BLOCK_ITEM_USE_EFFECTS); prevent_item_use_label: default: if ((player->effects & phi_v0) != 0) { diff --git a/src/effects.h b/src/effects.h index 723dd644f..5649359d5 100644 --- a/src/effects.h +++ b/src/effects.h @@ -60,8 +60,8 @@ void func_8008D0FC(Player*, s8); void func_8008D170(Player*, s8); void func_8008D3B0(Player*, s8); void trigger_shroom(Player*, s8); -void apply_boost_effect(Player*); -void remove_boost_effect(Player*); +void apply_mushroom_effect(Player*); +void remove_mushroom_effect(Player*); void func_8008D570(Player*, s8); void func_8008D698(Player*, s8); void func_8008D760(Player*); @@ -77,9 +77,9 @@ void remove_lightning_effect(Player*, s8); void func_8008E4A4(Player*, s8); void trigger_vertical_tumble(Player*, s8); void func_8008E884(Player*, s8); -void apply_hit_by_item_effect(Player*, s8); +void apply_hit_by_star_effect(Player*, s8); void trigger_high_tumble(Player*, s8); -void remove_hit_by_item_effect(Player*, s8); +void remove_hit_by_star_effect(Player*, s8); void trigger_asphalt_ramp_boost(Player*, s8); void apply_boost_ramp_asphalt_effect(Player*); void remove_boost_ramp_asphalt_effect(Player*); diff --git a/src/ending/ceremony_and_credits.c b/src/ending/ceremony_and_credits.c index 85d11c4c7..36e3d25aa 100644 --- a/src/ending/ceremony_and_credits.c +++ b/src/ending/ceremony_and_credits.c @@ -21,6 +21,7 @@ #include "menu_items.h" #include "code_80057C60.h" #include "defines.h" +#include "seq_ids.h" f32 D_802856B0 = 98.0f; f32 D_802856B4 = 12.0f; @@ -720,26 +721,25 @@ void func_80283BA4(UNUSED CinematicCamera* camera) { func_800CA0A0(); } -void func_80283BF0(UNUSED CinematicCamera* camera) { - func_800C8EF8(0x1A); +void play_winning_ceremony_sequence_part1(UNUSED CinematicCamera* camera) { + play_sequence2(SEQ_EVENT_CEREMONY_PRESENTATION_PART1); } -// -void func_80283C14(UNUSED CinematicCamera* camera) { - func_800C8EF8(0x1B); +void play_winning_ceremony_sequence_part2(UNUSED CinematicCamera* camera) { + play_sequence2(SEQ_EVENT_CEREMONY_PRESENTATION_PART2_WIN); } void wrap_func_800CB134(UNUSED CinematicCamera* camera) { func_800CB134(); } -void wrap_func_800CB14C(UNUSED CinematicCamera* camera) { - func_800CB14C(); +void play_losing_ceremony_sequence(UNUSED CinematicCamera* camera) { + begin_losing_ceremony_sequence(); } -void func_80283C78(UNUSED CinematicCamera* arg0) { +void play_winning_ceremony_credits_sequence(UNUSED CinematicCamera* arg0) { if (D_800DC5E4 == 0) { - func_800C8EF8(0x1C); + play_sequence2(SEQ_EVENT_CEREMONY_TROPHY_CREDITS); } } @@ -920,7 +920,7 @@ void func_80283D2C(CinematicCamera* camera) { gOrderedSizeSlidingBorders = 120.0f; cutscene_event(func_80283CA8, camera, 0, 0); cutscene_event(wrap_func_800CA0CC, camera, 1, 1); - cutscene_event(func_80283BF0, camera, 0, 0); + cutscene_event(play_winning_ceremony_sequence_part1, camera, 0, 0); cutscene_event(play_sound_balloon_pop, camera, 45, 45); cutscene_event(play_sound_balloon_pop, camera, 65, 65); cutscene_event(play_sound_balloon_pop, camera, 70, 70); @@ -972,7 +972,7 @@ void func_80284068(CinematicCamera* camera) { } void func_802840C8(CinematicCamera* camera) { - cutscene_event(func_80283C14, camera, 5, 5); + cutscene_event(play_winning_ceremony_sequence_part2, camera, 5, 5); switch (D_802876D8) { case 2: @@ -1448,9 +1448,9 @@ void func_802847CC(CinematicCamera* camera) { cutscene_event(func_80283CD0, camera, 0, 0); cutscene_event(play_sound_welcome, camera, 8, 8); #ifdef VERSION_EU - cutscene_event(func_80283C78, camera, 134, 134); + cutscene_event(play_winning_ceremony_credits_sequence, camera, 134, 134); #else - cutscene_event(func_80283C78, camera, 149, 149); + cutscene_event(play_winning_ceremony_credits_sequence, camera, 149, 149); #endif cutscene_event(reset_spline_wrap, camera, 0, 0); switch (D_80286A04[D_800DC5E4].unk0) { @@ -1520,7 +1520,7 @@ void play_cutscene(CinematicCamera* camera) { CUTSCENE(4, gCutScene) break; CUTSCENE(5, D_80285D58) - wrap_func_800CB14C(camera); + play_losing_ceremony_sequence(camera); break; CUTSCENE(6, D_80286B5C) break; diff --git a/src/ending/ceremony_and_credits.h b/src/ending/ceremony_and_credits.h index 86c6a5b07..0a157216d 100644 --- a/src/ending/ceremony_and_credits.h +++ b/src/ending/ceremony_and_credits.h @@ -164,11 +164,11 @@ void func_80283A54(CinematicCamera*); void func_80283A7C(CinematicCamera*); void func_80283B6C(CinematicCamera*); void func_80283BA4(CinematicCamera*); -void func_80283BF0(CinematicCamera*); -void func_80283C14(CinematicCamera*); +void play_winning_ceremony_sequence_part1(CinematicCamera*); +void play_winning_ceremony_sequence_part2(CinematicCamera*); void wrap_func_800CB134(CinematicCamera*); -void wrap_func_800CB14C(CinematicCamera*); -void func_80283C78(CinematicCamera*); +void play_losing_ceremony_sequence(CinematicCamera*); +void play_winning_ceremony_credits_sequence(CinematicCamera*); void func_80283CA8(CinematicCamera*); void func_80283CD0(CinematicCamera*); void play_sound_farewell(CinematicCamera*); diff --git a/src/kart_dma.c b/src/kart_dma.c index b39f7188a..5695a5449 100644 --- a/src/kart_dma.c +++ b/src/kart_dma.c @@ -1187,8 +1187,11 @@ u8* gKartPalettes[] = { **/ void load_kart_texture(Player* player, s8 playerId, s8 screenId, s8 screenId2, s8 index) { s32 temp = player->effects; - if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || - ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { + if (((temp & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((temp & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((temp & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((temp & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || + ((temp & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) || ((player->unk_044 & 0x800) != 0)) { if (player->animFrameSelector[screenId] != 0) { osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]); @@ -1212,8 +1215,10 @@ void load_kart_texture(Player* player, s8 playerId, s8 screenId, s8 screenId2, s osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); } - } else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || - ((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000)) { + } else if (((temp & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) || + ((temp & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) || + ((temp & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) || + ((temp & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT)) { osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], 0x780U); // player->unk_0A8 >> 8 converts an 8.8 fixed-point animation frame to a whole number. osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, @@ -1238,8 +1243,11 @@ void load_kart_texture(Player* player, s8 playerId, s8 screenId, s8 screenId2, s void load_kart_texture_non_blocking(Player* player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) { s32 temp = player->effects; - if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || - ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { + if (((temp & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((temp & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((temp & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((temp & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || + ((temp & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) || ((player->unk_044 & 0x800) != 0)) { if (player->animFrameSelector[arg2] != 0) { osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]); @@ -1257,8 +1265,10 @@ void load_kart_texture_non_blocking(Player* player, s8 arg1, s8 arg2, s8 arg3, s [player->animFrameSelector[arg2]])], &gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue); } - } else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || - ((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000)) { + } else if (((temp & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) || + ((temp & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) || + ((temp & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) || + ((temp & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT)) { osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], 0x780); // player->unk_0A8 >> 8 converts an 8.8 fixed-point animation frame to a whole number. osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, diff --git a/src/menus.c b/src/menus.c index 7fcbfc993..5223158f5 100644 --- a/src/menus.c +++ b/src/menus.c @@ -19,6 +19,7 @@ #include "save_data.h" #include #include "spawn_players.h" +#include "seq_ids.h" #if ENABLE_DEBUG_MODE #define DEBUG_MODE_TOGGLE true @@ -1840,7 +1841,7 @@ void load_menu_states(s32 menuSelection) { } gScreenModeListIndex = sScreenModeIdxFromPlayerMode[gPlayerCount - 1]; func_800CA008(0, 0); - func_800C8EAC(1); + play_sequence(SEQ_MENU_TITLE_SCREEN); gCourseMapInit = 0; break; } @@ -1857,13 +1858,13 @@ void load_menu_states(s32 menuSelection) { func_800CB2C4(); gGamestate = 0; gGamestateNext = 0; - func_800C8EAC(2); + play_sequence(SEQ_MENU_MAIN_MENU); } switch (gMenuFadeType) { case MENU_FADE_TYPE_MAIN: { gMainMenuSelection = MAIN_MENU_PLAYER_SELECT; - func_800C8EAC(2); + play_sequence(SEQ_MENU_MAIN_MENU); gPlayerCount = 1; if (gScreenModeSelection >= NUM_SCREEN_MODES || gScreenModeSelection < 0) { gScreenModeSelection = SCREEN_MODE_1P; @@ -1915,7 +1916,7 @@ void load_menu_states(s32 menuSelection) { func_800CB2C4(); gGamestate = 0; gGamestateNext = 0; - func_800C8EAC(2); + play_sequence(SEQ_MENU_MAIN_MENU); for (i = 0; i < ARRAY_COUNT(gCharacterGridIsSelected); i++) { gCharacterGridIsSelected[i] = false; } @@ -1953,7 +1954,7 @@ void load_menu_states(s32 menuSelection) { func_800CB2C4(); gGamestate = 0; gGamestateNext = 0; - func_800C8EAC(2); + play_sequence(SEQ_MENU_MAIN_MENU); } play_sound2(SOUND_MENU_SELECT_MAP); sTempCupSelection = 0; diff --git a/src/player_controller.c b/src/player_controller.c index b382d28ad..23f1e6fef 100644 --- a/src/player_controller.c +++ b/src/player_controller.c @@ -535,13 +535,16 @@ void func_80028864(Player* player, Camera* camera, s8 playerId, s8 screenId) { (gModeSelection == BATTLE) || ((player->unk_0CA & 2) != 0) || (player->unk_0CA & 8) || //! @todo make a proper match ((*(D_801633F8 + (playerId))) == ((s16) 1U))) { - player->effects &= ~UNKNOWN_EFFECT_0x1000; - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || - ((player->effects & 0x400) == 0x400) || ((player->effects & 0x4000) == 0x4000) || - ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || - ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) || - ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || - ((player->effects & 0x20000) == 0x20000) || (player->unk_044 & 0x800)) { + player->effects &= ~LOST_RACE_EFFECT; + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) || + ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) || + ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || + ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) || + ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) || + ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) || (player->unk_044 & 0x800)) { func_8002E594(player, camera, screenId, playerId); } else { func_8002D268(player, camera, screenId, playerId); @@ -558,47 +561,55 @@ void func_80028864(Player* player, Camera* camera, s8 playerId, s8 screenId) { if ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN) { player->currentSpeed = 50.0f; } - player->effects &= ~8; + player->effects &= ~MIDAIR_EFFECT; } } void func_80028C44(Player* player, Camera* camera, s8 playerId, s8 screenId) { if ((player->type & PLAYER_START_SEQUENCE) == 0) { - player->effects &= ~UNKNOWN_EFFECT_0x1000; - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || - ((player->effects & 0x400) == 0x400) || ((player->effects & 0x4000) == 0x4000) || - ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || - ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) || - ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || - ((player->effects & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { + player->effects &= ~LOST_RACE_EFFECT; + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) || + ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) || + ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || + ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) || + ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) || + ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) || + ((player->unk_044 & 0x800) != 0)) { func_8002E594(player, camera, screenId, playerId); } else { func_8002D268(player, camera, screenId, playerId); } } else { - player->effects &= -9; + player->effects &= ~MIDAIR_EFFECT; } } void func_80028D3C(Player* player, Camera* camera, s8 playerId, s8 screenId) { if ((((player->type & PLAYER_START_SEQUENCE) == 0) && (D_800DC510 != 5)) || (player->unk_0CA & 2) != 0 || (player->unk_0CA & 8) != 0 || - (player->effects & (0x40000000 | UNKNOWN_EFFECT_0x1000000 | 0x2000000 | 0x4000000 | 0x8000000 | - UNKNOWN_EFFECT_0x10000 | 0xC00 | 0xC0)) != 0) { - player->effects &= ~UNKNOWN_EFFECT_0x1000; + (player->effects & (LIGHTNING_EFFECT | EXPLOSION_CRASH_EFFECT | HIT_BY_STAR_EFFECT | SQUISH_EFFECT | + POST_SQUISH_EFFECT | TERRAIN_TUMBLE_EFFECT | 0xC00 | 0xC0)) != 0) { + player->effects &= ~LOST_RACE_EFFECT; - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || - ((player->effects & 0x400) == 0x400) || ((player->effects & 0x4000) == 0x4000) || - ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || - ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) || - ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || - ((player->effects & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) || + ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) || + ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || + ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) || + ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) || + ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) || + ((player->unk_044 & 0x800) != 0)) { func_8002E594(player, camera, screenId, playerId); } else { func_8002D268(player, camera, screenId, playerId); } } else { - player->effects = player->effects & ~8; + player->effects = player->effects & ~MIDAIR_EFFECT; } } @@ -609,7 +620,7 @@ void func_80028E70(Player* player, Camera* camera, s8 playerId, s8 screenId) { if (!(player->type & PLAYER_START_SEQUENCE)) { func_80038C6C(player, camera, screenId, playerId); } else { - player->effects &= ~8; + player->effects &= ~MIDAIR_EFFECT; } break; default: @@ -726,17 +737,17 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) { temp_f2 = (gCharacterSize[player->characterId] * 18.0f) * player->size; temp_f0 = player->unk_230 - player->unk_23C; - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { if ((player->effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) { player->unk_0CC[screenId] = (s16) ((s32) (((f64) atan1s(temp_f0 / temp_f2)) * 1.6)); } else { player->unk_0CC[screenId] = atan1s(temp_f0 / temp_f2) * 2; } } - if ((player->effects & HIT_EFFECT) == HIT_EFFECT) { + if ((player->effects & SQUISH_EFFECT) == SQUISH_EFFECT) { player->unk_0CC[screenId] = (s16) ((s32) player->unk_D9C); } - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { temp_f0 = player->unk_1F8 - player->unk_1FC; player->unk_0D4[screenId] = (((atan1s(temp_f0 / temp_f2)) * 0.9)); } else { @@ -747,7 +758,7 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) { } player->unk_0D4[screenId] = (s16) ((s32) (((f64) atan1s(var_f0 / temp_f2)) * 0.5)); } - if ((player->effects & HIT_EFFECT) == HIT_EFFECT) { + if ((player->effects & SQUISH_EFFECT) == SQUISH_EFFECT) { player->unk_0D4[screenId] = (s16) ((s32) player->unk_D9C); } func_80029200(player, screenId); @@ -760,9 +771,11 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) { var_a0 = 0x201 - var_a0; player->unk_002 |= (4 << (screenId * 4)); } - if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) && - ((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) && - ((player->effects & 0x20000) != 0x20000) && (!(player->unk_044 & 0x800))) { + if (((player->effects & BANANA_SPINOUT_EFFECT) != BANANA_SPINOUT_EFFECT) && + ((player->effects & DRIVING_SPINOUT_EFFECT) != DRIVING_SPINOUT_EFFECT) && + ((player->effects & UNKNOWN_EFFECT_0x80000) != UNKNOWN_EFFECT_0x80000) && + ((player->effects & UNKNOWN_EFFECT_0x800000) != UNKNOWN_EFFECT_0x800000) && + ((player->effects & LIGHTNING_STRIKE_EFFECT) != LIGHTNING_STRIKE_EFFECT) && (!(player->unk_044 & 0x800))) { if (var_a0 < 0x51) { var_a1 = 0x208; var_t0 = 0; @@ -774,17 +787,19 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) { var_a1 = 0x666; var_t0 = 0; } - if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || - (player->unk_044 & 0x800)) { + if (((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || (player->unk_044 & 0x800)) { player->unk_050[screenId] = 0; } - if (((player->effects & 8) == 8) && ((player->unk_0CA & 2) == 2)) { + if (((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT) && ((player->unk_0CA & 2) == 2)) { player->unk_050[screenId] = 0; } var_a0 = (player->unk_048[screenId] + player->rotation[1] + player->unk_0C0); - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || - ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || - ((player->effects & 0x20000) == 0x20000) || (player->unk_044 & 0x800)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || + ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) || (player->unk_044 & 0x800)) { if (var_a0 >= 0x7FF9) { var_a0 = -var_a0; var_a0 /= var_a1; @@ -804,8 +819,9 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) { if ((player->animFrameSelector[screenId]) >= 0x23) { player->animFrameSelector[screenId] = 0x22; } - if ((player->effects & 0x80) || (player->effects & 0x40) || (player->effects & 0x80000) || - (player->effects & 0x800000) || (player->effects & 0x20000) || (player->unk_044 & 0x800)) { + if ((player->effects & BANANA_SPINOUT_EFFECT) || (player->effects & DRIVING_SPINOUT_EFFECT) || + (player->effects & UNKNOWN_EFFECT_0x80000) || (player->effects & UNKNOWN_EFFECT_0x800000) || + (player->effects & LIGHTNING_STRIKE_EFFECT) || (player->unk_044 & 0x800)) { if ((player->animFrameSelector[screenId]) >= 0x14) { player->animFrameSelector[screenId] = 0; @@ -814,20 +830,20 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) { if ((player->animGroupSelector[screenId]) >= 9) { player->animGroupSelector[screenId] = 4; } - if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || - (player->unk_044 & 0x800)) { + if (((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || (player->unk_044 & 0x800)) { player->animGroupSelector[screenId] = 4; } - if (((player->effects & 0x400) == 0x400) || - ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) || - ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || (player->effects & UNKNOWN_EFFECT_0x10000) || - (player->effects & 0x80) || (player->effects & 0x40)) { + if (((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) || + ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) || + ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) || (player->effects & TERRAIN_TUMBLE_EFFECT) || + (player->effects & BANANA_SPINOUT_EFFECT) || (player->effects & DRIVING_SPINOUT_EFFECT)) { player->unk_002 |= 1 << (screenId * 4); D_80165190[screenId][playerId] = 1; - if ((player->effects & 0x80) || (player->effects & 0x40)) { + if ((player->effects & BANANA_SPINOUT_EFFECT) || (player->effects & DRIVING_SPINOUT_EFFECT)) { if ((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) && (player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) { player->unk_002 &= ~(1 << (screenId * 4)); @@ -915,7 +931,7 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) { player->tyres[BACK_RIGHT].pos[1] = player->pos[1] + sp8C[1]; player->tyres[BACK_RIGHT].pos[2] = player->pos[2] + sp8C[2]; player_terrain_collision(player, &player->tyres[BACK_RIGHT], sp80[0], sp80[1], sp80[2]); - if (!(player->effects & 8)) { + if (!(player->effects & MIDAIR_EFFECT)) { a = (player->tyres[BACK_LEFT].baseHeight + player->tyres[FRONT_LEFT].baseHeight) / 2; move_f32_towards(&player->unk_230, a, 0.5f); @@ -931,10 +947,10 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) { temp_f2_3 = ((gCharacterSize[player->characterId] * 18.0f) + 1.0f) * player->size; temp_f0_2 = player->unk_23C - player->unk_230; player->unk_206 = -atan1s(temp_f0_2 / temp_f2_3); - if (((player->unk_0CA & 2) == 2) || (player->effects & 8)) { + if (((player->unk_0CA & 2) == 2) || (player->effects & MIDAIR_EFFECT)) { player->unk_206 = 0; } - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { temp_f0_2 = player->unk_1F8 - player->unk_1FC; move_s16_towards(&player->slopeAccel, atan1s(temp_f0_2 / temp_f2_3), 0.5f); } else { @@ -947,18 +963,18 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) { } move_s16_towards(&player->slopeAccel, temp_v0, 0.5f); } - if (((player->effects & 8) == 8) && ((player->unk_0CA & 2) == 2)) { + if (((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT) && ((player->unk_0CA & 2) == 2)) { player->slopeAccel = (s16) ((s32) player->unk_D9C); } player->surfaceType = get_surface_type(player->collision.meshIndexZX) & 0xFF; if (player->surfaceType == BOOST_RAMP_ASPHALT) { if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != BOOST_RAMP_ASPHALT_EFFECT) && - ((player->effects & 8) != 8)) { + ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) { player->triggers |= BOOST_RAMP_ASPHALT_TRIGGER; } } if (player->surfaceType == BOOST_RAMP_WOOD) { - if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) && ((player->effects & 8) != 8)) { + if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) && ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) { player->triggers |= BOOST_RAMP_WOOD_TRIGGER; } } @@ -1004,7 +1020,7 @@ void func_8002A194(Player* player, f32 x, f32 y, f32 z) { player->tyres[BACK_RIGHT].baseHeight = calculate_surface_height( player->tyres[BACK_LEFT].pos[0], y, player->tyres[BACK_LEFT].pos[2], player->collision.meshIndexZX); - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { player->unk_230 = (player->tyres[BACK_LEFT].baseHeight + player->tyres[FRONT_LEFT].baseHeight) / 2; player->unk_23C = (player->tyres[BACK_RIGHT].baseHeight + player->tyres[FRONT_RIGHT].baseHeight) / 2; player->unk_1FC = (player->tyres[FRONT_RIGHT].baseHeight + player->tyres[FRONT_LEFT].baseHeight) / 2; @@ -1018,7 +1034,7 @@ void func_8002A194(Player* player, f32 x, f32 y, f32 z) { var_f20 = (gCharacterSize[player->characterId] * 18) + 1; temp_f0 = (player->unk_23C - player->unk_230); player->unk_206 = -atan1s(temp_f0 / var_f20); - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { temp_f0 = (player->unk_1F8 - player->unk_1FC); move_s16_towards(&player->slopeAccel, atan1s(temp_f0 / var_f20), 0.5f); } else { @@ -1038,12 +1054,13 @@ 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->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) { player->triggers |= BOOST_RAMP_ASPHALT_TRIGGER; } } if (player->surfaceType == BOOST_RAMP_WOOD) { - if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) && ((player->effects & 8) != 8)) { + if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) && + ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) { player->triggers |= BOOST_RAMP_WOOD_TRIGGER; } } @@ -1084,7 +1101,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->effects |= MUSHROOM_EFFECT; player->triggers &= ~START_BOOST_TRIGGER; if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { @@ -1095,9 +1112,9 @@ void func_8002A704(Player* player, s8 playerIndex) { } void func_8002A79C(Player* player, s8 playerIndex) { - if (((player->effects & UNKNOWN_EFFECT_0x100) != UNKNOWN_EFFECT_0x100) && - ((player->effects & UNKNOWN_EFFECT_0x10) != UNKNOWN_EFFECT_0x10) && (player->driftState >= 2)) { - player->effects |= UNKNOWN_EFFECT_0x100; + if (((player->effects & MINI_TURBO_EFFECT) != MINI_TURBO_EFFECT) && + ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT) && (player->driftState >= 2)) { + player->effects |= MINI_TURBO_EFFECT; player->unk_23A = 0; player->driftState = 0; player->unk_228 = 0; @@ -1108,11 +1125,11 @@ void func_8002A79C(Player* player, s8 playerIndex) { } else if (player == gPlayerOne) { func_800C9250(playerIndex); } - } else if ((player->effects & UNKNOWN_EFFECT_0x100) == UNKNOWN_EFFECT_0x100) { + } else if ((player->effects & MINI_TURBO_EFFECT) == MINI_TURBO_EFFECT) { player->unk_23A += 1; if (player->unk_23A >= 0x1F) { player->unk_23A = 0; - player->effects &= ~0x100; + player->effects &= ~MINI_TURBO_EFFECT; player->driftState = 0; player->unk_228 = 0; } @@ -1167,7 +1184,7 @@ void kart_hop(Player* player) { player->kartHopJerk = gKartHopJerkTable[player->characterId]; player->kartHopAcceleration = 0.0f; player->kartHopVelocity = gKartHopInitialVelocityTable[player->characterId]; - player->effects |= 2; + player->effects |= HOP_EFFECT; player->unk_DAC = 3.0f; player->kartGravity = 500.0f; func_80036C5C(player); @@ -1214,7 +1231,7 @@ void func_8002AAC0(Player* player) { void func_8002AB70(Player* player) { UNUSED s32 pad[2]; - if (((player->effects & 8) != 8) && (player->unk_08C > 0.0f)) { + if (((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) && (player->unk_08C > 0.0f)) { if (((player->slopeAccel / 182) < -1) && ((player->slopeAccel / 182) >= -0x14) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) { move_f32_towards(&player->kartGravity, 500.0f, 1.0f); @@ -1228,7 +1245,7 @@ void func_8002AB70(Player* player) { player->unk_DAC = 2.0f; } move_f32_towards(&player->kartGravity, gKartGravityTable[player->characterId], 0.02f); - if ((player->effects & 2) == 2) { + if ((player->effects & HOP_EFFECT) == HOP_EFFECT) { move_f32_towards(&player->unk_DAC, 1.0f, 0.07f); } else { move_f32_towards(&player->unk_DAC, 1.0f, 0.07f); @@ -1242,22 +1259,22 @@ void func_8002AB70(Player* player) { move_f32_towards(&player->unk_DAC, 25.0f, 1.0f); player->kartGravity = 1800.0f; } - if ((player->effects & 0x400) == 0x400) { + if ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) { player->kartGravity = 1100.0f; } - if (player->effects & 0x80000) { + if (player->effects & UNKNOWN_EFFECT_0x80000) { player->kartGravity = 1500.0f; } if ((player->unk_044 & 0x800) != 0) { player->kartGravity = 1900.0f; } - if ((player->effects & 0x800000) == 0x800000) { + if ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) { player->kartGravity = 300.0f; } - if ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) { + if ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) { player->kartGravity = 550.0f; } - if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) { + if ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) { player->kartGravity = 800.0f; } } @@ -1281,11 +1298,11 @@ void func_8002AE38(Player* player, s8 arg1, f32 arg2, f32 arg3, f32 arg4, f32 ar sp28 = (sins(-player->rotation[1]) * player->speed) + arg2; temp_f16 = (coss(-player->rotation[1]) * player->speed) + arg3; - if (((player->effects & 0x800) != 0x800) && ((player->effects & UNKNOWN_EFFECT_0x10) != UNKNOWN_EFFECT_0x10) && - !(player->unk_044 & 0x4000) && + if (((player->effects & BANANA_NEAR_SPINOUT_EFFECT) != BANANA_NEAR_SPINOUT_EFFECT) && + ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT) && !(player->unk_044 & 0x4000) && ((((player->speed / 18.0f) * 216.0f) <= 8.0f) || (((player->unk_07C >> 0x10) < 5) && ((player->unk_07C >> 0x10) > -5)))) { - if ((player->effects & 0x20) == 0x20) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { player->unk_0C0 = (f32) (player->unk_0C0 - (player->unk_0C0 / 10)); } else { temp_v0_3 = player->unk_0C0; @@ -1306,7 +1323,7 @@ void func_8002AE38(Player* player, s8 arg1, f32 arg2, f32 arg3, f32 arg4, f32 ar } else { player->unk_0C0 = (atan2s(arg2 - arg4, arg3 - arg5) - atan2s(arg2 - sp28, arg3 - temp_f16)) * 2; } - if (((player->effects & UNKNOWN_EFFECT_0x10) != UNKNOWN_EFFECT_0x10) && + if (((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT) && ((((player->unk_07C >> 0x10) > 0) && (player->unk_0C0 < 0)) || (((player->unk_07C >> 0x10) < 0) && (player->unk_0C0 > 0)))) { if (player->unk_0C0 > 0) { @@ -1337,14 +1354,14 @@ void func_8002B218(Player* player) { for (someIndex = 0; someIndex < 10; someIndex++) { if (player->unk_006 == sp38[someIndex]) { - player->effects |= UNKNOWN_EFFECT_0x10; + player->effects |= DRIFTING_EFFECT; kart_hop(player); player->unk_204 = 0; break; } if (player->unk_006 == sp24[someIndex]) { - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; break; } } @@ -1412,38 +1429,39 @@ void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) { player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } // Green shell - if ((player->effects & 0x400) == 0x400) { + if ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) { player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } // Spinout (banana or driving) - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT)) { player->triggers &= (ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS)) | UNUSED_TRIGGER_0x20000; } // Near spinout (banana) - if ((player->effects & 0x800) == 0x800) { + if ((player->effects & BANANA_NEAR_SPINOUT_EFFECT) == BANANA_NEAR_SPINOUT_EFFECT) { player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } if ((player->unk_044 & 0x4000) != 0) { player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } //unclear - if ((player->effects & 0x80000) == 0x80000) { + if ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) { player->triggers &= ALL_TRIGGERS & ~((HIT_TRIGGERS ^ LIGHTNING_STRIKE_TRIGGER) | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } //unclear - if ((player->effects & 0x800000) == 0x800000) { + if ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) { player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } //squished - if ((player->effects & HIT_EFFECT) == HIT_EFFECT) { + if ((player->effects & SQUISH_EFFECT) == SQUISH_EFFECT) { player->triggers &= (ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS)) | THWOMP_SQUISH_TRIGGER; } //explosion crash - if ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) { + if ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) { player->triggers &= ALL_TRIGGERS & ~((HIT_TRIGGERS ^ LIGHTNING_STRIKE_TRIGGER) | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } // hit by star or red shell - if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) { + if ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) { player->triggers &= ALL_TRIGGERS & ~((HIT_TRIGGERS ^ LIGHTNING_STRIKE_TRIGGER) | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } // boost asphalt @@ -1455,7 +1473,7 @@ void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) { player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } // Terrain tumble - if ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000) { + if ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT) { player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } // star @@ -1467,11 +1485,11 @@ void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) { player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } // early start spinout - if ((player->effects & 0x4000) == 0x4000) { + if ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) { player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | SPINOUT_TRIGGER | STATE_TRANSITION_TRIGGERS); } // CPU_FAST_EFFECTS - if ((player->effects & 0x20000) == 0x20000) { + if ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) { player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); } } @@ -1548,7 +1566,7 @@ void func_8002B9CC(Player* player, s8 playerIndex, UNUSED s32 arg2) { if (sqrtf((temp_f0 * temp_f0) + (temp_f2 * temp_f2) + (temp_f14 * temp_f14)) >= 6.5) { player->unk_08C /= 4; player->currentSpeed /= 4; - if (!(player->effects & 0x80) && !(player->effects & 0x40)) { + if (!(player->effects & BANANA_SPINOUT_EFFECT) && !(player->effects & DRIVING_SPINOUT_EFFECT)) { func_8008C73C(player, playerIndex); } } @@ -1559,7 +1577,7 @@ void func_8002B9CC(Player* player, s8 playerIndex, UNUSED s32 arg2) { if (sqrtf((temp_f0 * temp_f0) + (temp_f2 * temp_f2) + (temp_f14 * temp_f14)) >= 4.2) { player->unk_08C /= 4; player->currentSpeed /= 4; - if (!(player->effects & 0x80) && !(player->effects & 0x40)) { + if (!(player->effects & BANANA_SPINOUT_EFFECT) && !(player->effects & DRIVING_SPINOUT_EFFECT)) { func_8008C73C(player, playerIndex); } } @@ -1674,13 +1692,13 @@ void func_8002BF4C(Player* player, s8 playerIndex) { if (((player->speed / 18.0f) * 216.0f) < 50.0f) { player->unk_0E2 = 0; - player->effects &= 0xFFDFFFFF; + player->effects &= ~CPU_FAST_EFFECT; return; } - if ((player->effects & 0x200000) == 0x200000) { + if ((player->effects & CPU_FAST_EFFECT) == CPU_FAST_EFFECT) { player->unk_0E2 -= 1; if (player->unk_0E2 <= 0) { - player->effects &= 0xFFDFFFFF; + player->effects &= ~CPU_FAST_EFFECT; } } else { for (i = 0; i < NUM_PLAYERS; i++) { @@ -1691,7 +1709,7 @@ void func_8002BF4C(Player* player, s8 playerIndex) { var_a2 == 1))) { player->unk_0E2 += 1; if (player->unk_0E2 >= 0x3D) { - player->effects |= 0x200000; + player->effects |= CPU_FAST_EFFECT; if ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB) { uselessAssignment = player->type & PLAYER_INVISIBLE_OR_BOMB; func_800C90F4(playerIndex, (player->characterId * 0x10) + 0x29008001); @@ -1712,7 +1730,7 @@ void func_8002BF4C(Player* player, s8 playerIndex) { } void func_8002C11C(Player* player) { - if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { player->unk_204 += 1; if (player->unk_204 >= 0x65) { player->unk_204 = 0x64; @@ -1735,7 +1753,7 @@ void func_8002C17C(Player* player, s8 playerId) { } else if (D_80165330[playerId] == 0) { gCopyNearestPathPointByPlayerId[playerId] = gNearestPathPointByPlayerId[playerId]; gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId]; - } else if (!(player->effects & 8)) { + } else if (!(player->effects & MIDAIR_EFFECT)) { if (func_802ABDF4(player->collision.meshIndexZX) == 0) { D_80165330[playerId] = 0; } @@ -1757,7 +1775,7 @@ void func_8002C17C(Player* player, s8 playerId) { D_80165330[playerId] = 1; gCopyNearestPathPointByPlayerId[playerId] = gNearestPathPointByPlayerId[playerId]; gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId]; - } else if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == 0) && !(player->effects & 8)) { + } else if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == 0) && !(player->effects & MIDAIR_EFFECT)) { D_80165330[playerId] = 0; gCopyNearestPathPointByPlayerId[playerId] = gNearestPathPointByPlayerId[playerId]; gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId]; @@ -1771,7 +1789,7 @@ void func_8002C17C(Player* player, s8 playerId) { } else if (D_80165330[playerId] == 0) { gCopyNearestPathPointByPlayerId[playerId] = gNearestPathPointByPlayerId[playerId]; gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId]; - } else if (!((player->effects & 8) || (player->unk_0CA & 1))) { + } else if (!((player->effects & MIDAIR_EFFECT) || (player->unk_0CA & 1))) { D_80165330[playerId] = 0; } break; @@ -1819,16 +1837,16 @@ void func_8002C4F8(Player* player, s8 playerIndex) { } if (player->collision.surfaceDistance[2] >= 600.0f) { player->unk_0CA |= 0x0100; - } else if ((player->effects & 8) != 8) { + } else if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { player->unk_0CA &= ~0x0100; } if ((player->type & PLAYER_CPU) && ((func_802ABDF4(player->collision.meshIndexZX) != 0) || (player->unk_0CA & 1))) { - if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8) && !(player->effects & UNKNOWN_EFFECT_0x1000)) { + if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8) && !(player->effects & LOST_RACE_EFFECT)) { func_80090778(player); func_80090868(player); } } - if ((player->type & PLAYER_CPU) && (player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & 8)) { + if ((player->type & PLAYER_CPU) && (player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & MIDAIR_EFFECT)) { func_80090778(player); func_80090868(player); } @@ -1837,8 +1855,8 @@ void func_8002C4F8(Player* player, s8 playerIndex) { void func_8002C7E4(Player* player, s8 playerIndex, s8 arg2) { if ((player->unk_046 & 1) != 1) { - if ((player->effects & 0x8000) == 0x8000) { - if ((player->effects & BOOST_EFFECT) != BOOST_EFFECT) { + if ((player->effects & ENEMY_BONK_EFFECT) == ENEMY_BONK_EFFECT) { + if ((player->effects & MUSHROOM_EFFECT) != MUSHROOM_EFFECT) { func_8002B9CC(player, playerIndex, arg2); } player->unk_044 &= ~0x0001; @@ -1851,21 +1869,21 @@ void func_8002C7E4(Player* player, s8 playerIndex, s8 arg2) { if ((player->unk_046 & 4) != 4) { player->unk_046 |= 4; player->unk_046 |= 0x40; - if (player->effects & BOOST_EFFECT) { - remove_boost_effect(player); + if (player->effects & MUSHROOM_EFFECT) { + remove_mushroom_effect(player); } } } } } - if ((player->effects & 0x8000) == 0x8000) { - player->effects &= ~0x8000; + if ((player->effects & ENEMY_BONK_EFFECT) == ENEMY_BONK_EFFECT) { + player->effects &= ~ENEMY_BONK_EFFECT; player->unk_10C = 1; player->unk_044 &= ~0x0001; return; } player->unk_046 &= ~0x0001; - player->effects &= ~0x8000; + player->effects &= ~ENEMY_BONK_EFFECT; if (player->unk_10C > 0) { player->unk_10C += 1; } @@ -1883,11 +1901,11 @@ void func_8002C954(Player* player, s8 playerId, Vec3f velocity) { temp_f0 = player->pos[1] - player->unk_074; - if (((((player->effects & UNKNOWN_EFFECT_0x10000) != UNKNOWN_EFFECT_0x10000) && + if (((((player->effects & TERRAIN_TUMBLE_EFFECT) != TERRAIN_TUMBLE_EFFECT) && ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT)) || - ((((temp_f0 >= 20.0f) || (temp_f0 < (-1.0f))) && ((player->effects & UNKNOWN_EFFECT_0x10000) == 0)) && - (player->effects & 8)) || - ((player->collision.unk34 == 0) && ((player->effects & UNKNOWN_EFFECT_0x10000) == 0))) && + ((((temp_f0 >= 20.0f) || (temp_f0 < (-1.0f))) && ((player->effects & TERRAIN_TUMBLE_EFFECT) == 0)) && + (player->effects & MIDAIR_EFFECT)) || + ((player->collision.unk34 == 0) && ((player->effects & TERRAIN_TUMBLE_EFFECT) == 0))) && (((player->unk_0CA & 2) == 0) || (!(player->unk_0CA & 8)))) { func_8008F494(player, playerId); } @@ -1929,8 +1947,8 @@ void func_8002C954(Player* player, s8 playerId, Vec3f velocity) { } } } - if (player->effects & BOOST_EFFECT) { - remove_boost_effect(player); + if (player->effects & MUSHROOM_EFFECT) { + remove_mushroom_effect(player); player->unk_08C /= 2; } } @@ -1939,14 +1957,14 @@ void apply_effect(Player* player, s8 playerIndex, s8 arg2) { if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) { func_80090970(player, playerIndex, arg2); } - if ((player->effects & 0x800) == 0x800) { + if ((player->effects & BANANA_NEAR_SPINOUT_EFFECT) == BANANA_NEAR_SPINOUT_EFFECT) { func_8008CEB0(player, playerIndex); } if (player->unk_044 & 0x4000) { func_8008D170(player, playerIndex); } - if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { - apply_boost_effect(player); + if ((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT) { + apply_mushroom_effect(player); } if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) { apply_boost_ramp_asphalt_effect(player); @@ -1954,13 +1972,13 @@ void apply_effect(Player* player, s8 playerIndex, s8 arg2) { if ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT) { apply_boost_ramp_wood_effect(player); } - if ((s32) (player->effects & HIT_EFFECT) == HIT_EFFECT) { + if ((s32) (player->effects & SQUISH_EFFECT) == SQUISH_EFFECT) { apply_hit_effect(player, playerIndex); } if ((player->effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) { apply_lightning_effect(player, playerIndex); } - if ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000) { + if ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT) { func_8008F3F4(player, playerIndex); } if ((player->effects & STAR_EFFECT) == STAR_EFFECT) { @@ -1969,28 +1987,29 @@ void apply_effect(Player* player, s8 playerIndex, s8 arg2) { if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { apply_boo_effect(player, playerIndex); } - if (((player->effects & 0x20000000) == 0x20000000) && (player->unk_228 >= 0x64)) { + if (((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) && (player->unk_228 >= 0x64)) { player_decelerate_alternative(player, 4.0f); } - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT)) { func_8008C9EC(player, playerIndex); } - if ((player->effects & 0x400) == 0x400) { + if ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) { func_8008C62C(player, playerIndex); } - if ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) { + if ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) { func_8008E4A4(player, playerIndex); } - if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) { - apply_hit_by_item_effect(player, playerIndex); + if ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) { + apply_hit_by_star_effect(player, playerIndex); } - if ((player->effects & 0x4000) == 0x4000) { + if ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) { func_8008F1B8(player, playerIndex); } - if ((player->effects & 0x80000) == 0x80000) { + if ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) { func_8008D698(player, playerIndex); } - if ((player->effects & 0x800000) == 0x800000) { + if ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) { func_8008D8B4(player, playerIndex); player_decelerate_alternative(player, 10.0f); } @@ -2100,7 +2119,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player func_8002BF4C(player, playerId); } apply_effect(player, playerId, screenId); - if (((player->effects & 0x20000000) == 0x20000000) && (player->unk_228 >= 0x64)) { + if (((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) && (player->unk_228 >= 0x64)) { sp7C = 2; } func_80037BB4(player, sp160); @@ -2122,17 +2141,18 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player temp3 = 10; } gravityX = -1 * (player->unk_064[0] + sp16C[0]) + - ((-player->collision.orientationVector[0] * player->kartGravity) * sp104[temp3]); + ((-player->collision.orientationVector[0] * player->kartGravity) * sp104[temp3]); gravityY = (-player->collision.orientationVector[1] * player->kartGravity); gravityZ = -1 * (player->unk_064[2] + sp16C[2]) + - ((-player->collision.orientationVector[2] * player->kartGravity) * sp104[temp3]); + ((-player->collision.orientationVector[2] * player->kartGravity) * sp104[temp3]); } - if (((player->effects & 8) != 8) && ((player->effects & 0x20) == 0x20)) { + if (((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) && + ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT)) { gravityX = 0 * (player->unk_064[0] + sp16C[0]); gravityY = -1 * player->kartGravity / 4; gravityZ = 0 * (player->unk_064[2] + sp16C[2]); } - if ((player->effects & 8) == 8) { + if ((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT) { gravityX = 0 * (player->unk_064[0] + sp16C[0]); gravityY = -1 * player->kartGravity; gravityZ = 0 * (player->unk_064[2] + sp16C[2]); @@ -2144,8 +2164,9 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player } else { player->unk_044 &= 0xFFF7; } - if (((player->unk_08C <= 0.0f) && ((temp_v0_3 = player->effects, (temp_v0_3 & 1) == 1))) && - ((temp_v0_3 & 0x20) != 0x20)) { + if (((player->unk_08C <= 0.0f) && + ((temp_v0_3 = player->effects, (temp_v0_3 & BRAKING_EFFECT) == BRAKING_EFFECT))) && + ((temp_v0_3 & AB_SPIN_EFFECT) != AB_SPIN_EFFECT)) { sp178[2] = temp_f2_2 * 4500.0f; } else { sp178[2] = 0.0f; @@ -2161,37 +2182,44 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player newVelocity[1] = player->velocity[1]; newVelocity[2] = player->velocity[2]; if (((player->unk_10C < 3) && (((s32) player->unk_256) < 3)) || - ((player->effects & BOOST_EFFECT) == BOOST_EFFECT)) { + ((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT)) { if (((player->unk_07C >> 16) >= 0x28) || ((player->unk_07C >> 16) < (-0x27))) { - newVelocity[0] += (((((f64) ((sp184[0] + gravityX) + sp160[0])) - (newVelocity[0] * (0.12 * ((f64) player->kartFriction)))) / - 6000.0) / - (((((f64) player->unk_20C) * 0.6) + 1.0) + sp7C)); - newVelocity[2] += (((((f64) ((sp184[2] + gravityZ) + sp160[2])) - (newVelocity[2] * (0.12 * ((f64) player->kartFriction)))) / - 6000.0) / - (((((f64) player->unk_20C) * 0.6) + 1.0) + sp7C)); + newVelocity[0] += (((((f64) ((sp184[0] + gravityX) + sp160[0])) - + (newVelocity[0] * (0.12 * ((f64) player->kartFriction)))) / + 6000.0) / + (((((f64) player->unk_20C) * 0.6) + 1.0) + sp7C)); + newVelocity[2] += (((((f64) ((sp184[2] + gravityZ) + sp160[2])) - + (newVelocity[2] * (0.12 * ((f64) player->kartFriction)))) / + 6000.0) / + (((((f64) player->unk_20C) * 0.6) + 1.0) + sp7C)); } else { - newVelocity[0] += (((((f64) ((sp184[0] + gravityX) + sp160[0])) - (newVelocity[0] * (0.12 * ((f64) player->kartFriction)))) / - 6000.0) / - (sp7C + 1)); - newVelocity[2] += (((((f64) ((sp184[2] + gravityZ) + sp160[2])) - (newVelocity[2] * (0.12 * ((f64) player->kartFriction)))) / - 6000.0) / - (sp7C + 1)); + newVelocity[0] += (((((f64) ((sp184[0] + gravityX) + sp160[0])) - + (newVelocity[0] * (0.12 * ((f64) player->kartFriction)))) / + 6000.0) / + (sp7C + 1)); + newVelocity[2] += (((((f64) ((sp184[2] + gravityZ) + sp160[2])) - + (newVelocity[2] * (0.12 * ((f64) player->kartFriction)))) / + 6000.0) / + (sp7C + 1)); } } else { newVelocity[0] += - (((((f64) ((sp184[0] + gravityX) + sp160[0])) - (newVelocity[0] * (0.12 * ((f64) player->kartFriction)))) / 6000.0) / + (((((f64) ((sp184[0] + gravityX) + sp160[0])) - (newVelocity[0] * (0.12 * ((f64) player->kartFriction)))) / + 6000.0) / 30.0); newVelocity[2] += - (((((f64) ((sp184[2] + gravityZ) + sp160[2])) - (newVelocity[2] * (0.12 * ((f64) player->kartFriction)))) / 6000.0) / + (((((f64) ((sp184[2] + gravityZ) + sp160[2])) - (newVelocity[2] * (0.12 * ((f64) player->kartFriction)))) / + 6000.0) / 30.0); } newVelocity[1] += - (((((f64) ((sp184[1] + gravityY) + sp160[1])) - (newVelocity[1] * (0.12 * ((f64) player->kartFriction)))) / 6000.0) / + (((((f64) ((sp184[1] + gravityY) + sp160[1])) - (newVelocity[1] * (0.12 * ((f64) player->kartFriction)))) / + 6000.0) / ((f64) player->unk_DAC)); if (((((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) || - ((player->effects & HIT_EFFECT) == HIT_EFFECT)) || + ((player->effects & SQUISH_EFFECT) == SQUISH_EFFECT)) || (player->unk_0CA & 1)) { newVelocity[0] = 0.0f; newVelocity[1] = 0.0f; @@ -2213,7 +2241,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player nextZ = posZ + player->velocity[2] + D_8018CE10[playerId].unk_04[2]; if (((((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 8) != 8)) && - ((player->effects & HIT_EFFECT) != HIT_EFFECT)) && + ((player->effects & SQUISH_EFFECT) != SQUISH_EFFECT)) && (!(player->unk_0CA & 1))) { func_8002AAC0(player); nextY += player->kartHopVelocity; @@ -2231,12 +2259,12 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060, player->rotation[1] + 0x8000); } - player->effects |= 8; + player->effects |= MIDAIR_EFFECT; player->unk_0C2 += 1; surfaceDistance = player->collision.surfaceDistance[2]; if (surfaceDistance <= 0.0f) { - player->effects = player->effects & (~2); - player->effects = player->effects & (~8); + player->effects = player->effects & (~HOP_EFFECT); + player->effects = player->effects & (~MIDAIR_EFFECT); if (player->unk_0C2 >= 35) { if (player->unk_0C2 >= 0x32) { player->unk_0C2 = 0x32; @@ -2310,13 +2338,13 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player } } } - if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) != 0)) && - ((player->effects & UNKNOWN_EFFECT_0x10000) != UNKNOWN_EFFECT_0x10000)) { + if (((!(player->effects & MIDAIR_EFFECT)) && (func_802ABDB8(player->collision.meshIndexZX) != 0)) && + ((player->effects & TERRAIN_TUMBLE_EFFECT) != TERRAIN_TUMBLE_EFFECT)) { if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) { func_8008F494(player, playerId); } - } else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) && - (player->effects & UNKNOWN_EFFECT_0x10000)) { + } else if (((!(player->effects & MIDAIR_EFFECT)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) && + (player->effects & TERRAIN_TUMBLE_EFFECT)) { func_8008F5A4(player, playerId); } player->unk_074 = calculate_surface_height(nextX, nextY, nextZ, player->collision.meshIndexZX); @@ -2416,11 +2444,12 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player Vec3f sp48; s16 sp46; func_8002B830(player, playerId, screenId); - if ((((((((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) || - ((player->effects & 0x4000) == 0x4000)) || - ((player->effects & 0x80000) == 0x80000)) || - ((player->effects & 0x800000) == 0x800000)) || - ((player->effects & 0x20000) == 0x20000)) || + if ((((((((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT)) || + ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT)) || + ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000)) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000)) || + ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT)) || (player->unk_044 & 0x800)) { sp46 = 1; } else { @@ -2429,9 +2458,11 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player apply_effect(player, playerId, screenId); func_8002AB70(player); func_8002FCA8(player, playerId); - if ((((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) || - ((player->effects & 0x20000) == 0x20000)) { - gravityX = -1 * (player->unk_064[0]) + (((-player->collision.orientationVector[0]) * player->kartGravity) * 0.1); + if ((((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT)) || + ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT)) { + gravityX = + -1 * (player->unk_064[0]) + (((-player->collision.orientationVector[0]) * player->kartGravity) * 0.1); gravityY = (-player->collision.orientationVector[1]) * player->kartGravity; gravityZ = -1 * (player->unk_064[2]) + (((-player->collision.orientationVector[2]) * player->kartGravity) * 0.1); } else { @@ -2458,9 +2489,10 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player newVelocity[0] = player->velocity[0]; newVelocity[1] = player->velocity[1]; newVelocity[2] = player->velocity[2]; - if ((player->unk_10C < 3) && ((player->unk_256) < 3) && ((player->effects & 0x400) != 0x400) && - ((player->effects & UNKNOWN_EFFECT_0x1000000) != UNKNOWN_EFFECT_0x1000000) && - ((player->effects & HIT_BY_ITEM_EFFECT) != HIT_BY_ITEM_EFFECT)) { + if ((player->unk_10C < 3) && ((player->unk_256) < 3) && + ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) && + ((player->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT) && + ((player->effects & HIT_BY_STAR_EFFECT) != HIT_BY_STAR_EFFECT)) { newVelocity[0] += (((((spEC[0] + gravityX) + spD4[0])) - (newVelocity[0] * (0.12 * player->kartFriction))) / 6000) / ((player->unk_20C * 5.0f) + 1.0f); newVelocity[2] += (((((spEC[2] + gravityZ) + spD4[2])) - (newVelocity[2] * (0.12 * player->kartFriction))) / 6000) / @@ -2493,18 +2525,18 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player nextY += player->kartHopVelocity; actor_terrain_collision(&player->collision, player->boundingBoxSize, nextX, nextY, nextZ, player->oldPos[0], player->oldPos[1], player->oldPos[2]); - player->effects |= 8; + player->effects |= MIDAIR_EFFECT; player->unk_0C2 += 1; player->unk_058 = 0.0f; player->unk_060 = 0.0f; player->unk_05C = 1.0f; surfaceDistance = player->collision.surfaceDistance[2]; if (surfaceDistance <= 0.0f) { - player->effects &= ~2; - player->effects &= ~8; - if ((((player->effects & 0x400) != 0x400) && - ((player->effects & UNKNOWN_EFFECT_0x1000000) != UNKNOWN_EFFECT_0x1000000)) && - ((player->effects & HIT_BY_ITEM_EFFECT) != HIT_BY_ITEM_EFFECT)) { + player->effects &= ~HOP_EFFECT; + player->effects &= ~MIDAIR_EFFECT; + if ((((player->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) && + ((player->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT)) && + ((player->effects & HIT_BY_STAR_EFFECT) != HIT_BY_STAR_EFFECT)) { if (player->unk_0C2 >= 0x1C) { if (player->unk_0C2 >= 0x32) { player->unk_0C2 = 0x0032; @@ -2545,7 +2577,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player if (player->unk_0C2 >= 0x28) { player->unk_0C2 = 0x0014; } - if ((player->effects & 0x400) == 0x400) { + if ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) { player->unk_0C2 /= 6.5; player->kartHopJerk = 0.06f; player->kartHopAcceleration = 0.0f; @@ -2593,13 +2625,13 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player } } if (((func_802ABDB8(player->collision.meshIndexZX) != 0) && - ((player->effects & UNKNOWN_EFFECT_0x10000) != UNKNOWN_EFFECT_0x10000)) && + ((player->effects & TERRAIN_TUMBLE_EFFECT) != TERRAIN_TUMBLE_EFFECT)) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) { if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) { func_8008F494(player, playerId); } - } else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) && - (player->effects & UNKNOWN_EFFECT_0x10000)) { + } else if (((!(player->effects & MIDAIR_EFFECT)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) && + (player->effects & TERRAIN_TUMBLE_EFFECT)) { func_8008F5A4(player, playerId); } player->unk_074 = calculate_surface_height(nextX, nextY, nextZ, player->collision.meshIndexZX); @@ -2614,9 +2646,10 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player temp = (newVelocity[0] * newVelocity[0]) + (newVelocity[2] * newVelocity[2]); player->previousSpeed = player->speed; player->speed = sqrtf(temp); - if ((((player->effects & 0x400) != 0x400) && (player->unk_08C <= 0) && (player->speed < 0.13)) || - (((player->effects & 0x400) != 0x400) && (player->unk_08C <= 0) && (player->speed < 0.20) && - ((player->effects & 1) == 1))) { + if ((((player->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) && (player->unk_08C <= 0) && + (player->speed < 0.13)) || + (((player->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) && (player->unk_08C <= 0) && + (player->speed < 0.20) && ((player->effects & BRAKING_EFFECT) == BRAKING_EFFECT))) { newVelocity[0] = newVelocity[0] + (-1 * newVelocity[0]); newVelocity[2] = newVelocity[2] + (-1 * newVelocity[2]); } else { @@ -2659,18 +2692,18 @@ void control_cpu_movement(Player* player, UNUSED Camera* camera, s8 screenId, s8 f32 toSqrt; f32 topSpeedMultiplier; f32 nextY; - player->effects |= UNKNOWN_EFFECT_0x1000; + player->effects |= LOST_RACE_EFFECT; player->unk_044 |= 0x10; nextY = gPlayerPathY[playerId]; player->unk_204 = 0; - player->effects &= ~UNKNOWN_EFFECT_0x10; + player->effects &= ~DRIFTING_EFFECT; func_8002B830(player, playerId, screenId); apply_effect(player, playerId, screenId); sp84 = 0 * player->unk_064[0] + spDC[0]; sp7C = 0 * player->unk_064[2] + spDC[2]; player->unk_10C = 0; player->unk_256 = 0; - player->effects &= ~0x8000; + player->effects &= ~ENEMY_BONK_EFFECT; spF4[2] = func_80030150(player, playerId); mtxf_transform_vec3f_mat3(spF4, player->orientationMatrix); newVelocity[0] = player->velocity[0]; @@ -2690,8 +2723,8 @@ void control_cpu_movement(Player* player, UNUSED Camera* camera, s8 screenId, s8 calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060, player->rotation[1]); player->unk_0C2 = 0; - player->effects &= ~2; - player->effects &= ~8; + player->effects &= ~HOP_EFFECT; + player->effects &= ~MIDAIR_EFFECT; player->slopeAccel = 0; player->unk_206 = 0; toSqrt = (newVelocity[0] * newVelocity[0]) + (newVelocity[2] * newVelocity[2]); @@ -2777,7 +2810,7 @@ void func_8002F730(Player* player, UNUSED Camera* camera, UNUSED s8 screenId, s8 player->unk_05C = 1.0f; player->unk_060 = 0.0f; calculate_orientation_matrix(player->orientationMatrix, 0.0f, 1.0f, 0.0f, (s16) (s32) player->rotation[1]); - player->effects &= ~8; + player->effects &= ~MIDAIR_EFFECT; surfaceDistance = player->collision.surfaceDistance[2]; if (surfaceDistance <= 0.0f) { if (1) {}; @@ -2796,7 +2829,8 @@ void func_8002F730(Player* player, UNUSED Camera* camera, UNUSED s8 screenId, s8 player->previousSpeed = player->speed; player->speed = sqrtf(sqrt); if (((player->unk_08C <= 0.0f) && ((f64) player->speed < 0.13)) || - ((player->unk_08C <= 0.0f) && ((f64) player->speed < 0.2) && ((player->effects & 1) == 1))) { + ((player->unk_08C <= 0.0f) && ((f64) player->speed < 0.2) && + ((player->effects & BRAKING_EFFECT) == BRAKING_EFFECT))) { newVelocity[0] = newVelocity[0] + (newVelocity[0] * -1.0f); newVelocity[2] = newVelocity[2] + (newVelocity[2] * -1.0f); } else { @@ -2859,7 +2893,7 @@ void func_8002FCA8(Player* player, s8 playerIndex) { var_f0 += 1.0; } } - if (((player->effects & 0x200000) == 0x200000) && ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN)) { + if (((player->effects & CPU_FAST_EFFECT) == CPU_FAST_EFFECT) && ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN)) { var_f0 = -3.0f; } @@ -2877,13 +2911,13 @@ void func_8002FE84(Player* player, f32 arg1) { s16 temp_lo; s32 test; - if ((player->effects & 0x4000) == 0x4000) { + if ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) { player->unk_098 = ((player->currentSpeed * player->currentSpeed) / 25.0f) * 1.1; return; } // Huh? - if (((player->effects & 0xFFFFFFFF) & 8) == 8) { + if (((player->effects & ALL_EFFECTS) & MIDAIR_EFFECT) == MIDAIR_EFFECT) { player->unk_098 = ((player->currentSpeed * player->currentSpeed) / 25.0f) * 1.1; return; } @@ -2912,7 +2946,7 @@ void func_8002FE84(Player* player, f32 arg1) { var_f0 += test * 0.004; } player->unk_098 = arg1 * (1.0 + (var_f0 * 0.7)); - if ((player->effects & 0x20) == 0x20) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { temp_f0_3 = player->currentSpeed + 180.0f; player->unk_098 = (temp_f0_3 * temp_f0_3) / 25.0f; } @@ -2947,7 +2981,7 @@ f32 func_80030150(Player* player, s8 playerIndex) { var_f0 += D_800E2E90[player->characterId][player->tyres[FRONT_LEFT].surfaceType]; } } - if (((player->effects & 8) != 8) && ((player->unk_0CA & 2) != 2)) { + if (((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) && ((player->unk_0CA & 2) != 2)) { temp_lo = player->slopeAccel / 182; if (var_f2 >= 20.0f) { if ((temp_lo > 0x11) || (temp_lo < -0x11)) { @@ -2961,7 +2995,7 @@ f32 func_80030150(Player* player, s8 playerIndex) { var_f0 += -0.55; } } - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) || (player->unk_204 > 0)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) || (player->unk_204 > 0)) { var_v0 = (s16) player->unk_0C0 / 182; if (var_v0 < 0) { var_f0 += -var_v0 * 0.004; @@ -2976,7 +3010,7 @@ f32 func_80030150(Player* player, s8 playerIndex) { var_f0 += var_v0 * (0.01 + gKartTurnSpeedReductionTable0[player->characterId]); } } - if (((player->effects & 0x20000000) == 0x20000000) && (player->unk_228 < 0xA)) { + if (((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) && (player->unk_228 < 0xA)) { if (var_v0 < 0) { var_f0 += -var_v0 * 0.008; } else { @@ -2998,7 +3032,7 @@ f32 func_80030150(Player* player, s8 playerIndex) { var_f0 += 0.05; } } - if ((player->effects & 8) != 0) { + if ((player->effects & MIDAIR_EFFECT) != 0) { move_f32_towards(&player->unk_0A0, player->unk_08C * 0.04, 0.15f); } else { move_f32_towards(&player->unk_0A0, 0.0f, 0.1f); @@ -3014,20 +3048,20 @@ f32 func_80030150(Player* player, s8 playerIndex) { } } if ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN) { - if ((player->effects & 0x200000) == 0x200000) { + if ((player->effects & CPU_FAST_EFFECT) == CPU_FAST_EFFECT) { move_f32_towards(&player->unk_0E8, 380.0f, 0.5f); } else { move_f32_towards(&player->unk_0E8, 0.0f, 0.1f); } } if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { - if (((player->effects & UNKNOWN_EFFECT_0x100) == UNKNOWN_EFFECT_0x100) && - ((player->effects & UNKNOWN_EFFECT_0x10) != UNKNOWN_EFFECT_0x10)) { + if (((player->effects & MINI_TURBO_EFFECT) == MINI_TURBO_EFFECT) && + ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT)) { move_f32_towards(&player->unk_0E8, 580.0f, 0.2f); } else { move_f32_towards(&player->unk_0E8, 0.0f, 0.01f); } - if ((player->effects & 0x200000) == 0x200000) { + if ((player->effects & CPU_FAST_EFFECT) == CPU_FAST_EFFECT) { move_f32_towards(&player->unk_0E4, 580.0f, 0.01f); } else { move_f32_towards(&player->unk_0E4, 0.0f, 0.01f); @@ -3042,13 +3076,13 @@ f32 func_80030150(Player* player, s8 playerIndex) { ((player->type & PLAYER_START_SEQUENCE) == PLAYER_START_SEQUENCE)) { return (1.0f - player->unk_104) * var_f2; } - if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || - ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) || - ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) || + ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) || + ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT)) { return (1.0f - player->unk_104) * var_f2; } - // Have to `and` the 0x2000 here to force the compiler to reload the immediate - if (((player->effects & BOOST_EFFECT) == (BOOST_EFFECT & 0xFFFFFFFF)) || + if (((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT) || ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) || ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT)) { func_8002FE84(player, player->boostPower + player->unk_08C); @@ -3330,7 +3364,7 @@ void player_accelerate_alternative(Player* player) { if (player->topSpeed <= player->currentSpeed) { player->currentSpeed = player->topSpeed; } - if (!((player->effects & 8)) || ((player->effects & LIGHTNING_EFFECT))) { + if (!((player->effects & MIDAIR_EFFECT)) || ((player->effects & LIGHTNING_EFFECT))) { player->unk_08C = (player->currentSpeed * player->currentSpeed) / 25.0f; } player->unk_044 |= 0x20; @@ -3355,7 +3389,7 @@ void player_decelerate_alternative(Player* player, f32 speed) { if (player->topSpeed <= player->currentSpeed) { player->currentSpeed = player->topSpeed; } - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { player->unk_08C = (player->currentSpeed * player->currentSpeed) / 25.0f; } player->unk_044 &= 0xFFDF; @@ -3518,9 +3552,9 @@ void func_800323E4(Player* player) { if (player == gPlayerEight) { playerIndex = 7; } - player->effects |= 1; + player->effects |= BRAKING_EFFECT; // This check will never be true, why is it here? - if ((player->effects & 0x20) == 0x20) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { player_decelerate_alternative(player, 1.0f); player->unk_20C = var_f2; } else { @@ -3691,13 +3725,16 @@ void player_accelerate_global(Player* player, s32 playerIndex) { if (((player->topSpeed * 0.1) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.2))) { gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][1] * 3.2; } - if (((player->topSpeed * 0.2) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.3))) { + if (((player->topSpeed * 0.2) <= gPlayerCurrentSpeed[playerIndex]) && + (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.3))) { gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][2] * 3.2; } - if (((player->topSpeed * 0.3) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.4))) { + if (((player->topSpeed * 0.3) <= gPlayerCurrentSpeed[playerIndex]) && + (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.4))) { gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][3] * 3.2; } - if (((player->topSpeed * 0.4) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.5))) { + if (((player->topSpeed * 0.4) <= gPlayerCurrentSpeed[playerIndex]) && + (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.5))) { gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][4] * 3.2; } if (((player->topSpeed * 0.5) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] < (player->topSpeed * 0.6))) { @@ -3841,10 +3878,11 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8 }; - if (((((player->effects & 2) != 2) && ((((player->unk_0C0 / 182) <= 6) && ((player->unk_0C0 / 182) >= (-6))) || - ((controller->button & R_TRIG) != R_TRIG))) || + if (((((player->effects & HOP_EFFECT) != HOP_EFFECT) && + ((((player->unk_0C0 / 182) <= 6) && ((player->unk_0C0 / 182) >= (-6))) || + ((controller->button & R_TRIG) != R_TRIG))) || (((player->speed / 18.0f) * 216.0f) <= 20.0f)) || - ((player->effects & 0x8000) == 0x8000)) { + ((player->effects & ENEMY_BONK_EFFECT) == ENEMY_BONK_EFFECT)) { func_80036CB4(player); } if ((player->unk_0C0 / 182) < (-5)) { @@ -3859,7 +3897,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { player->unk_044 &= 0xFFF9; D_801652C0[arg2] = 0; } - if (((player->effects & 2) == 2) || ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10)) { + if (((player->effects & HOP_EFFECT) == HOP_EFFECT) || ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT)) { player->unk_044 &= 0xFFF9; } sp2E4 = player->unk_07C; @@ -3872,9 +3910,8 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { sp2D0 = sp2D0 >> 16; player->unk_0FA = (s16) sp2D0; if (((sp2D0 >= 0x5A) || (sp2D0 < (-0x59))) && (!(player->unk_044 & 0x4000))) { - if ((((((!(player->effects & UNKNOWN_EFFECT_0x10)) && (gCCSelection == CC_150)) && - (gModeSelection != BATTLE)) && - (!(player->effects & 8))) && + if ((((((!(player->effects & DRIFTING_EFFECT)) && (gCCSelection == CC_150)) && (gModeSelection != BATTLE)) && + (!(player->effects & MIDAIR_EFFECT))) && (((player->speed / 18.0f) * 216.0f) >= 40.0f)) && (player->unk_204 == 0)) { player->triggers |= DRIVING_SPINOUT_TRIGGER; @@ -3886,11 +3923,12 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { if (((s32) player->tyres[BACK_LEFT].surfaceType) < 0xF) { var_f2 += D_800E3610[player->characterId][player->tyres[BACK_LEFT].surfaceType]; } - if ((player->effects & 0x20) == 0x20) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { sp2C8 = 10; sp2CC = 10; } else { - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && ((player->effects & 2) != 2)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && + ((player->effects & HOP_EFFECT) != HOP_EFFECT)) { var_a0 = 3; } else { var_a0 = 0; @@ -4029,7 +4067,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 2, 0x6000 / sp2CC, 1.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 1, 0x5000 / sp2CC, 1.9f); func_80033A40(player, &sp2D0, &sp2E4, player->unk_07C, 0, 0 / sp2CC, 1.9f); - if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { var_f2_2 = (f32) (((s32) (sp2E4 >> 16)) / 8); } else if (((player->speed / 18.0f) * 216.0f) <= 25.0f) { var_f2_2 = (f32) ((sp2E4 >> 16) / 12); @@ -4039,9 +4077,9 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { if (var_f2_2 < 0.0f) { var_f2_2 = -var_f2_2; } - if ((player->effects & 0x20) == 0x20) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { var_f2_2 = var_f2_2 * (sp44[((s16) ((player->speed / 18.0f) * 216.0f)) + 10] * 1.5f); - } else if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + } else if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { var_f2_2 = var_f2_2 * sp44[(s16) ((player->speed / 18.0f) * 216.0f)]; } else { var_f2_2 = var_f2_2 * (sp44[(s16) ((player->speed / 18.0f) * 216.0f)] * 1.5f); @@ -4050,7 +4088,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { if (player->unk_10C != 0) { func_8002BD58(player); } - player->effects &= 0xDFFFFFFF; + player->effects &= ~DRIFT_OUTSIDE_EFFECT; if (((s32) player->tyres[BACK_RIGHT].surfaceType) > 0xE) { var_f12 = var_f12; } else { @@ -4059,11 +4097,11 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { if (((s32) player->tyres[BACK_LEFT].surfaceType) < 0xF) { var_f12 += D_800E3410[player->characterId][player->tyres[BACK_LEFT].surfaceType]; } - if (((player->effects & 2) != 2) && ((player->effects & UNKNOWN_EFFECT_0x10) != UNKNOWN_EFFECT_0x10)) { - if ((player->effects & 0x20) == 0x20) { + if (((player->effects & HOP_EFFECT) != HOP_EFFECT) && ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT)) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { player->unk_078 = (s16) ((s32) (((f32) ((((s32) player->unk_07C) >> 0x10) * 5)) * var_f2_2)); } else { - if ((player->effects & UNKNOWN_EFFECT_0x1) != UNKNOWN_EFFECT_0x1) { + if ((player->effects & BRAKING_EFFECT) != BRAKING_EFFECT) { if (((player->unk_07C >> 16) >= 45) || ((player->unk_07C >> 16) <= (-45))) { player->unk_078 = ((player->unk_07C >> 16) * (var_f2_2 + (var_f2_2 * var_f12))) * (0.15 + gKartHandlingTable[player->characterId]); @@ -4087,22 +4125,22 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { player->driftState = 0; } } - } else if (((player->effects & 8) != 8) && ((player->effects & 2) != 2)) { + } else if (((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) && ((player->effects & HOP_EFFECT) != HOP_EFFECT)) { if ((((s16) player->unk_0C0) / 182) > 0) { var_s1_2 = (((s32) (((player->unk_07C >> 0x10) * 0xD) + 0x2B1)) / 106) + 0x28; if ((player->unk_07C >> 0x10) < (-0x27)) { - player->effects = player->effects | 0x20000000; + player->effects = player->effects | DRIFT_OUTSIDE_EFFECT; if ((player->unk_07C >> 0x10) < (-0x31)) { - player->effects |= 0x20000000; + player->effects |= DRIFT_OUTSIDE_EFFECT; } } func_8002A8A4(player, arg2); } else { var_s1_2 = (((s32) (((player->unk_07C >> 0x10) * 0xD) + 0x2B1)) / 106) - 0x35; if ((player->unk_07C >> 0x10) >= 0x28) { - player->effects = player->effects | 0x20000000; + player->effects = player->effects | DRIFT_OUTSIDE_EFFECT; if ((player->unk_07C >> 0x10) < (-0x31)) { - player->effects |= 0x20000000; + player->effects |= DRIFT_OUTSIDE_EFFECT; } } func_8002A8A4(player, arg2); @@ -4116,7 +4154,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) { if (((player->speed / 18.0f) * 216.0f) >= 65.0f) { player->unk_078 = var_s1_2 * ((((f64) var_f2_2) + 3.5) + (var_f2_2 * var_f12)); } - if ((player->effects & 0x20000000) == 0x20000000) { + if ((player->effects & DRIFT_OUTSIDE_EFFECT) == DRIFT_OUTSIDE_EFFECT) { player->unk_078 *= 0.9; } else { player->unk_078 *= 0.65; @@ -4158,18 +4196,18 @@ void apply_cpu_turn(Player* player, s16 targetAngle) { 3.0f, 3.0f, 3.0f, 3.0f, 3.0f, 3.0f, 3.0f, 3.0f, }; - if (!((player->effects & 0x80) || (player->effects & 0x40) || (player->effects & 0x400) || - (player->effects & UNKNOWN_EFFECT_0x10000) || (player->effects & 0x20000) || - (player->effects & UNKNOWN_EFFECT_0x1000000) || (player->effects & HIT_BY_ITEM_EFFECT) || - (player->effects & HIT_EFFECT))) { + if (!((player->effects & BANANA_SPINOUT_EFFECT) || (player->effects & DRIVING_SPINOUT_EFFECT) || + (player->effects & HIT_BY_GREEN_SHELL_EFFECT) || (player->effects & TERRAIN_TUMBLE_EFFECT) || + (player->effects & LIGHTNING_STRIKE_EFFECT) || (player->effects & EXPLOSION_CRASH_EFFECT) || + (player->effects & HIT_BY_STAR_EFFECT) || (player->effects & SQUISH_EFFECT))) { if (!(((player->speed / 18.0f) * 216.0f) >= 110.0f)) { - player->effects &= ~0x20000000; + player->effects &= ~DRIFT_OUTSIDE_EFFECT; player->unk_228 = 0; - if (!(player->effects & 0x80) && !(player->effects & 0x40)) { + if (!(player->effects & BANANA_SPINOUT_EFFECT) && !(player->effects & DRIVING_SPINOUT_EFFECT)) { sp304 = (s32) player->unk_07C >> 0x10; move_s32_towards(&sp304, (s32) targetAngle, 0.35f); sp304 <<= 0x10; - if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { var_f0 = (sp304 >> 0x10) / 5; } else { var_f0 = (f32) (sp304 >> 0x10) / (8.0f + (player->currentSpeed / 50.0f)); @@ -4179,20 +4217,21 @@ void apply_cpu_turn(Player* player, s16 targetAngle) { } // Apply speed and character multipliers - if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { var_f0 = speedTurn[(s16) ((player->speed / 18.0f) * 216.0f)] * var_f0; } else { var_f0 = speedTurn[(s16) ((player->speed / 18.0f) * 216.0f)] * characterTurn[player->characterId] * var_f0; } player->unk_07C = sp304; - if (((player->effects & 2) != 2) && ((player->effects & UNKNOWN_EFFECT_0x10) != UNKNOWN_EFFECT_0x10)) { - if ((player->effects & 1) != 1) { + if (((player->effects & HOP_EFFECT) != HOP_EFFECT) && + ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT)) { + if ((player->effects & BRAKING_EFFECT) != BRAKING_EFFECT) { player->unk_078 = (player->unk_07C >> 0x10) * var_f0; } else { player->unk_078 = (player->unk_07C >> 0x10) * (var_f0 + 1.5); } - } else if ((player->effects & 8) != 8) { + } else if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { if (((s16) player->unk_0C0 / 182) > 0) { var_v0 = player->unk_07C >> 0x10; } else { @@ -4207,8 +4246,8 @@ void apply_cpu_turn(Player* player, s16 targetAngle) { } player->unk_078 = var_v0 * var_f0; } - if ((((player->effects & 2) != 2) && (player->unk_0C0 < 0x3D) && (player->unk_0C0 > -0x3D)) || - (((player->speed / 18.0f) * 216.0f) <= 20.0f) || ((player->effects & 0x8000) == 0x8000)) { + if ((((player->effects & HOP_EFFECT) != HOP_EFFECT) && (player->unk_0C0 < 0x3D) && (player->unk_0C0 > -0x3D)) || + (((player->speed / 18.0f) * 216.0f) <= 20.0f) || ((player->effects & ENEMY_BONK_EFFECT) == ENEMY_BONK_EFFECT)) { func_80036CB4(player); } } @@ -4219,7 +4258,7 @@ void apply_cpu_turn(Player* player, s16 targetAngle) { void func_80036C5C(Player* player) { if (((player->speed / 18.0f) * 216.0f) > 20.0f) { player->unk_204 = 0; - player->effects |= UNKNOWN_EFFECT_0x10; + player->effects |= DRIFTING_EFFECT; player->unk_0B6 |= 0x800; } } @@ -4227,8 +4266,7 @@ void func_80036C5C(Player* player) { void func_80036CB4(Player* player) { s32 test; - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && - ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { if ((player->unk_0C0 / 182) > 0) { test = ((((player->unk_07C >> 0x10) * 0xD) + 0x2B1) / 106) + 0x28; player->unk_07C = test << 0x10; @@ -4237,11 +4275,10 @@ void func_80036CB4(Player* player) { test = ((((player->unk_07C >> 0x10) * 0xD) + 0x2B1) / 106) - 0x35; player->unk_07C = test << 0x10; } - player->effects &= ~0x10; + player->effects &= ~DRIFTING_EFFECT; } - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && - ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN)) { - player->effects &= ~0x10; + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN)) { + player->effects &= ~DRIFTING_EFFECT; } } @@ -4252,16 +4289,18 @@ void func_80036DB4(Player* player, Vec3f arg1, Vec3f arg2) { f32 var_f18; s32 temp_t6; - if (((player->effects & UNKNOWN_EFFECT_0x1000) == UNKNOWN_EFFECT_0x1000) || ((player->effects & 0x20) == 0x20)) { + if (((player->effects & LOST_RACE_EFFECT) == LOST_RACE_EFFECT) || + ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT)) { arg1[0] = 0.0f; arg1[1] = 0.0f; arg1[2] = 0.0f; mtxf_transform_vec3f_mat3(arg1, player->orientationMatrix); } else { - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && ((player->effects & 2) != 2)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && + ((player->effects & HOP_EFFECT) != HOP_EFFECT)) { var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 10.0f); sp20 = player->unk_084 * 3.0f; - } else if (!(player->effects & 0x800) && !(player->unk_044 & 0x4000)) { + } else if (!(player->effects & BANANA_NEAR_SPINOUT_EFFECT) && !(player->unk_044 & 0x4000)) { thing = player->unk_0FA; if (thing > 0) { thing *= -1; @@ -4286,7 +4325,8 @@ void func_80036DB4(Player* player, Vec3f arg1, Vec3f arg2) { sp20 = player->unk_084; } if ((player->effects & STAR_EFFECT) == STAR_EFFECT) { - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && ((player->effects & 2) != 2)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && + ((player->effects & HOP_EFFECT) != HOP_EFFECT)) { var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 10.0f); sp20 = player->unk_084 * 3.0f; } else { @@ -4310,16 +4350,18 @@ void func_800371F4(Player* player, Vec3f arg1, Vec3f arg2) { f32 var_f18; s32 temp_t6; - if (((player->effects & UNKNOWN_EFFECT_0x1000) == UNKNOWN_EFFECT_0x1000) || ((player->effects & 0x20) == 0x20)) { + if (((player->effects & LOST_RACE_EFFECT) == LOST_RACE_EFFECT) || + ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT)) { arg1[0] = 0.0f; arg1[1] = 0.0f; arg1[2] = 0.0f; mtxf_transform_vec3f_mat3(arg1, player->orientationMatrix); } else { - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && ((player->effects & 2) != 2)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && + ((player->effects & HOP_EFFECT) != HOP_EFFECT)) { var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 50.0f); sp20 = player->unk_084 * 3.0f; - } else if (!(player->effects & 0x800) && !(player->unk_044 & 0x4000)) { + } else if (!(player->effects & BANANA_NEAR_SPINOUT_EFFECT) && !(player->unk_044 & 0x4000)) { var_v0 = player->unk_0FA; if (var_v0 > 0) { var_v0 *= -1; @@ -4347,7 +4389,8 @@ void func_800371F4(Player* player, Vec3f arg1, Vec3f arg2) { sp20 = player->unk_084; } if ((player->effects & STAR_EFFECT) == STAR_EFFECT) { - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && ((player->effects & 2) != 2)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && + ((player->effects & HOP_EFFECT) != HOP_EFFECT)) { var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 50.0f); sp20 = player->unk_084 * 3.0f; } else { @@ -4369,13 +4412,15 @@ void func_80037614(Player* player, Vec3f arg1, Vec3f arg2) { f32 var_f12; f32 var_f2; - if (((player->effects & UNKNOWN_EFFECT_0x1000) == UNKNOWN_EFFECT_0x1000) || ((player->effects & 0x20) == 0x20)) { + if (((player->effects & LOST_RACE_EFFECT) == LOST_RACE_EFFECT) || + ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT)) { arg1[0] = 0.0f; arg1[1] = 0.0f; arg1[2] = 0.0f; mtxf_transform_vec3f_mat3(arg1, player->orientationMatrix); } else { - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && ((player->effects & 2) != 2)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && + ((player->effects & HOP_EFFECT) != HOP_EFFECT)) { var_f2 = ((-(player->speed / 18.0f) * 216.0f) * 2) + -80.0f; var_f12 = -80.0f; } else { @@ -4397,13 +4442,15 @@ void func_8003777C(Player* player, Vec3f arg1, Vec3f arg2) { f32 var_f12; f32 var_f2; - if (((player->effects & UNKNOWN_EFFECT_0x1000) == UNKNOWN_EFFECT_0x1000) || ((player->effects & 0x20) == 0x20)) { + if (((player->effects & LOST_RACE_EFFECT) == LOST_RACE_EFFECT) || + ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT)) { arg1[0] = 0.0f; arg1[1] = 0.0f; arg1[2] = 0.0f; mtxf_transform_vec3f_mat3(arg1, player->orientationMatrix); } else { - if (((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) && ((player->effects & 2) != 2)) { + if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && + ((player->effects & HOP_EFFECT) != HOP_EFFECT)) { var_f2 = ((-(player->speed / 18.0f) * 216.0f) * 2) + -80.0f; var_f12 = -80.0f; } else { @@ -4424,13 +4471,13 @@ void func_800378E8(Player* player, Vec3f arg1, Vec3f arg2) { f32 var_f12; f32 var_f2; - if ((player->effects & 0x20) == 0x20) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { arg1[0] = 0.0f; arg1[1] = 0.0f; arg1[2] = 0.0f; mtxf_transform_vec3f_mat3(arg1, player->orientationMatrix); } else { - if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { var_f2 = player->unk_208 + (-(player->speed / 18.0f) * 216.0f * 5.0f) + (-player->unk_20C * 10.0f); var_f12 = -100.0f; } else { @@ -4451,13 +4498,13 @@ void func_80037A4C(Player* player, Vec3f arg1, Vec3f arg2) { f32 var_f12; f32 var_f2; - if ((player->effects & 0x20) == 0x20) { + if ((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) { arg1[0] = 0.0f; arg1[1] = 0.0f; arg1[2] = 0.0f; mtxf_transform_vec3f_mat3(arg1, player->orientationMatrix); } else { - if ((player->effects & UNKNOWN_EFFECT_0x10) == UNKNOWN_EFFECT_0x10) { + if ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) { var_f2 = player->unk_208 + (-(player->speed / 18.0f) * 216.0f * 5.0f) + (-player->unk_20C * 50.0f); var_f12 = -100.0f; } else { @@ -4484,7 +4531,7 @@ void func_80037BB4(Player* player, Vec3f arg1) { arg1[2] = 0.0f; } else { if (player->unk_078 < 0) { - if (((player->effects & 0x20000000) != 0x20000000) || (player->unk_228 >= 0x64)) { + if (((player->effects & DRIFT_OUTSIDE_EFFECT) != DRIFT_OUTSIDE_EFFECT) || (player->unk_228 >= 0x64)) { player->rotation[1] += player->unk_078; } if (!(player->type & PLAYER_CPU)) { @@ -4497,7 +4544,7 @@ void func_80037BB4(Player* player, Vec3f arg1) { func_80037614(player, sp20, arg1); } } else { - if (((player->effects & 0x20000000) != 0x20000000) || (player->unk_228 >= 0x64)) { + if (((player->effects & DRIFT_OUTSIDE_EFFECT) != DRIFT_OUTSIDE_EFFECT) || (player->unk_228 >= 0x64)) { player->rotation[1] += player->unk_078; } if (!(player->type & PLAYER_CPU)) { @@ -4514,41 +4561,43 @@ void func_80037BB4(Player* player, Vec3f arg1) { } void func_80037CFC(Player* player, struct Controller* controller, s8 playerIndex) { - if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) && - ((player->effects & 0x400) != 0x400) && ((player->effects & 0x4000) != 0x4000) && - ((player->effects & UNKNOWN_EFFECT_0x1000000) != UNKNOWN_EFFECT_0x1000000) && - ((player->effects & HIT_BY_ITEM_EFFECT) != HIT_BY_ITEM_EFFECT) && - ((player->effects & UNKNOWN_EFFECT_0x10000) != UNKNOWN_EFFECT_0x10000) && - ((player->effects & 0x20000) != 0x20000)) { - if (((player->effects & HIT_EFFECT) != HIT_EFFECT) && ((player->effects & 8) != 8) && - ((player->effects & 2) != 2) && ((player->effects & UNKNOWN_EFFECT_0x10) != UNKNOWN_EFFECT_0x10) && - (controller->buttonPressed & R_TRIG)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) != BANANA_SPINOUT_EFFECT) && + ((player->effects & DRIVING_SPINOUT_EFFECT) != DRIVING_SPINOUT_EFFECT) && + ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) && + ((player->effects & EARLY_START_SPINOUT_EFFECT) != EARLY_START_SPINOUT_EFFECT) && + ((player->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT) && + ((player->effects & HIT_BY_STAR_EFFECT) != HIT_BY_STAR_EFFECT) && + ((player->effects & TERRAIN_TUMBLE_EFFECT) != TERRAIN_TUMBLE_EFFECT) && + ((player->effects & LIGHTNING_STRIKE_EFFECT) != LIGHTNING_STRIKE_EFFECT)) { + if (((player->effects & SQUISH_EFFECT) != SQUISH_EFFECT) && + ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) && ((player->effects & HOP_EFFECT) != HOP_EFFECT) && + ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT) && (controller->buttonPressed & R_TRIG)) { kart_hop(player); if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { func_800C9060(playerIndex, 0x19008000); } } - if ((player->effects & 8) != 8) { + if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) { func_80033AE0(player, controller, playerIndex); - } else if (((player->effects & 2) == 2) && (player->collision.surfaceDistance[2] <= 5.0f)) { + } else if (((player->effects & HOP_EFFECT) == HOP_EFFECT) && (player->collision.surfaceDistance[2] <= 5.0f)) { func_80033AE0(player, controller, playerIndex); } - player->effects &= ~1; + player->effects &= ~BRAKING_EFFECT; if ((!(player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && (!(player->effects & BOOST_RAMP_WOOD_EFFECT))) { if (((player->speed / 18.0f) * 216.0f) <= 12.0f) { if (controller->button & A_BUTTON) { if (controller->button & B_BUTTON) { - player->effects |= 0x20; - if ((player->effects & 0x20) != 0x20) { + player->effects |= AB_SPIN_EFFECT; + if ((player->effects & AB_SPIN_EFFECT) != AB_SPIN_EFFECT) { player->currentSpeed += 100.0f; } } } } - if (((player->effects & 0x20) == 0x20) && + if (((player->effects & AB_SPIN_EFFECT) == AB_SPIN_EFFECT) && (((controller->button & B_BUTTON) == 0) || (!(controller->button & A_BUTTON)))) { - player->effects &= ~0x20; + player->effects &= ~AB_SPIN_EFFECT; } } if ((player->unk_044 & 1) != 1) { @@ -4571,7 +4620,7 @@ void func_80037CFC(Player* player, struct Controller* controller, s8 playerIndex detect_triple_b_combo_b_released(player); } } - if ((!(player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && (!(player->effects & 4))) { + if ((!(player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && (!(player->effects & BOOST_RAMP_WOOD_EFFECT))) { if (((get_clamped_stickY_with_deadzone(controller) < (-0x31)) && (((player->speed / 18.0f) * 216.0f) <= 5.0f)) && (controller->button & B_BUTTON)) { player->currentSpeed = 140.0f; @@ -4587,16 +4636,17 @@ void func_80037CFC(Player* player, struct Controller* controller, s8 playerIndex } } } else { - if ((player->effects & 0x4000) == 0x4000) { + if ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) { if (controller->button & A_BUTTON) { player_accelerate_alternative(player); } else { player_decelerate_alternative(player, 5.0f); } } - if (((((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) || - ((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000)) || - ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT)) { + if (((((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) || + ((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT)) || + ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT)) || + ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT)) { if (controller->button & A_BUTTON) { detect_triple_a_combo_a_pressed(player); player_accelerate_global(player, playerIndex); @@ -4623,7 +4673,7 @@ void handle_a_press_for_player_during_race(Player* player, struct Controller* co func_80037CFC(player, controller, playerIndex); } D_80164A89 = 1; - // If start sequence and unknown condition + // If start sequence and unknown condition } else if (D_8018D168 == 1) { if (D_801656F0 == 1) { if (D_801652E0[playerIndex] == 0) { @@ -4894,13 +4944,13 @@ void func_80038C6C(Player* player, UNUSED Camera* camera, s8 screenId, s8 player player->unk_060 = 0; player->unk_05C = 1.0f; calculate_orientation_matrix(player->orientationMatrix, 0, 1.0f, 0, player->rotation[1]); - player->effects |= 8; + player->effects |= MIDAIR_EFFECT; player->unk_0C2 += 1; surfaceDistance = player->collision.surfaceDistance[2]; if (surfaceDistance <= 0) { player->unk_0C2 = 0; - player->effects &= ~2; - player->effects &= ~8; + player->effects &= ~HOP_EFFECT; + player->effects &= ~MIDAIR_EFFECT; player->kartHopVelocity = player->unk_0C2; } surfaceDistance = player->collision.surfaceDistance[2]; diff --git a/src/racing/actors.c b/src/racing/actors.c index 97a362eef..d49949b7a 100644 --- a/src/racing/actors.c +++ b/src/racing/actors.c @@ -1552,7 +1552,7 @@ bool query_and_resolve_collision_player_actor(Player* player, Vec3f pos, f32 min player->pos[0] += (xVelocity / temp_f0_4) * minDist; player->pos[2] += (zVelocity / temp_f0_4) * minDist; } else { - player->effects |= 0x8000; + player->effects |= ENEMY_BONK_EFFECT; xDist /= sqrtDist; zDist /= sqrtDist; temp_f0_5 = sqrtf((xVelocity * xVelocity) + (zVelocity * zVelocity)); @@ -1729,7 +1729,7 @@ bool collision_tree(Player* player, struct Actor* actor) { } } if (!(player->effects & STAR_EFFECT)) { - player->effects |= 0x8000; + player->effects |= ENEMY_BONK_EFFECT; } actorPos[0] = actor->pos[0]; actorPos[1] = actor->pos[1]; @@ -2077,7 +2077,8 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor } break; case ACTOR_BANANA: - if (player->effects & (BOO_EFFECT | 0x8C0)) { + if (player->effects & + (BOO_EFFECT | BANANA_NEAR_SPINOUT_EFFECT | BANANA_SPINOUT_EFFECT | DRIVING_SPINOUT_EFFECT)) { break; } if (player->triggers & HIT_BANANA_TRIGGER) { @@ -2106,7 +2107,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor destroy_destructable_actor(actor); break; case ACTOR_GREEN_SHELL: - if (player->effects & 0x80000400) { + if (player->effects & (BOO_EFFECT | HIT_BY_GREEN_SHELL_EFFECT)) { break; } if (player->triggers & LOW_TUMBLE_TRIGGER) { @@ -2148,7 +2149,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor break; case ACTOR_RED_SHELL: temp_v1 = actor->rot[2]; - if (player->effects & UNKNOWN_EFFECT_0x1000000) { + if (player->effects & EXPLOSION_CRASH_EFFECT) { break; } if (player->triggers & HIGH_TUMBLE_TRIGGER) { @@ -2281,12 +2282,12 @@ void evaluate_collision_for_players_and_actors(void) { for (i = 0; i < NUM_PLAYERS; i++) { phi_s1 = &gPlayers[i]; - if (((phi_s1->type & PLAYER_EXISTS) != 0) && ((phi_s1->effects & 0x4000000) == 0)) { + if (((phi_s1->type & PLAYER_EXISTS) != 0) && ((phi_s1->effects & SQUISH_EFFECT) == 0)) { func_802977E4(phi_s1); for (j = 0; j < ACTOR_LIST_SIZE; j++) { temp_a1 = &gActorList[j]; - if ((phi_s1->effects & 0x4000000) == 0) { + if ((phi_s1->effects & SQUISH_EFFECT) == 0) { // temp_v0 = temp_a1->unk2; if (((temp_a1->flags & 0x8000) != 0) && ((temp_a1->flags & 0x4000) != 0)) { evaluate_collision_between_player_actor(phi_s1, temp_a1); diff --git a/src/racing/race_logic.c b/src/racing/race_logic.c index a0205ceb5..43c7048d3 100644 --- a/src/racing/race_logic.c +++ b/src/racing/race_logic.c @@ -23,6 +23,7 @@ #include "effects.h" #include "math.h" #include "menus.h" +#include "seq_ids.h" #pragma intrinsic(sqrtf) @@ -415,59 +416,76 @@ UNUSED void func_8028EC38(s32 arg0) { gDemoTimer = 5; } -void func_8028EC98(s32 arg0) { +void play_music_for_current_track(s32 track) { if (gScreenModeSelection == SCREEN_MODE_3P_4P_SPLITSCREEN) { - return; + return; // If 3P/4P splitscreen mode is currently on, don't play the music for the current track. } func_800029B0(); - switch (arg0) { - case COURSE_MARIO_RACEWAY: + switch (track) { + case COURSE_MARIO_RACEWAY: // Raceways, Wario Stadium case COURSE_ROYAL_RACEWAY: case COURSE_LUIGI_RACEWAY: case COURSE_WARIO_STADIUM: - func_800C8EAC(3); + play_sequence(SEQ_TRACK_RACEWAY); break; - case COURSE_TOADS_TURNPIKE: - func_800C8EAC(21); + + case COURSE_TOADS_TURNPIKE: // Toad's Turnpike + play_sequence(SEQ_TRACK_TURNPIKE); break; - case COURSE_YOSHI_VALLEY: + + case COURSE_YOSHI_VALLEY: // Yoshi Valley, Moo Moo Farm case COURSE_MOO_MOO_FARM: - func_800C8EAC(4); + play_sequence(SEQ_TRACK_FARM); break; - case COURSE_CHOCO_MOUNTAIN: + + case COURSE_CHOCO_MOUNTAIN: // Choco Mountain, Various Battle Stages case COURSE_BLOCK_FORT: case COURSE_DOUBLE_DECK: - func_800C8EAC(5); + play_sequence(SEQ_TRACK_MOUNTAIN); break; - case COURSE_KALAMARI_DESERT: - func_800C8EAC(10); + + case COURSE_KALAMARI_DESERT: // Kalimari Desert + play_sequence(SEQ_TRACK_DESERT); break; - case COURSE_KOOPA_BEACH: - func_800C8EAC(6); + + case COURSE_KOOPA_BEACH: // Koopa Troopa Beach + play_sequence(SEQ_TRACK_BEACH); break; - case COURSE_BOWSER_CASTLE: - func_800C8EAC(9); + + case COURSE_BOWSER_CASTLE: // Bowser Castle + play_sequence(SEQ_TRACK_CASTLE); break; - case COURSE_BANSHEE_BOARDWALK: - func_800C8EAC(7); + + case COURSE_BANSHEE_BOARDWALK: // Banshee Boardwalk + play_sequence(SEQ_TRACK_SCARY); break; - case COURSE_FRAPPE_SNOWLAND: + + case COURSE_FRAPPE_SNOWLAND: // Frappe Snowland, Sherbet Land case COURSE_SHERBET_LAND: - func_800C8EAC(8); + play_sequence(SEQ_TRACK_SNOW); break; - case COURSE_RAINBOW_ROAD: - func_800C8EAC(18); + + case COURSE_RAINBOW_ROAD: // Rainbow Road + play_sequence(SEQ_TRACK_RAINBOW); break; - case COURSE_DK_JUNGLE: - func_800C8EAC(19); + + case COURSE_DK_JUNGLE: // DK's Jungle Parkway + play_sequence(SEQ_TRACK_JUNGLE); break; - case COURSE_SKYSCRAPER: + + case COURSE_SKYSCRAPER: // Other Battle Stages case COURSE_BIG_DONUT: - func_800C8EAC(25); + play_sequence(SEQ_TRACK_BATTLE); break; + +#ifdef AVOID_UB + default: //! @BUG: No default case. Enable AVOID_UB for custom tracks. + play_sequence(SEQ_TRACK_RACEWAY); + break; +#endif } } @@ -475,8 +493,8 @@ void start_race(void) { s32 i; D_8015011E = -1; - if (!gDemoMode) { - func_8028EC98(gCurrentCourseId); + if (!gDemoMode) { // If we're not in the title screen demo, play the music for the current track. + play_music_for_current_track(gCurrentCourseId); } if (D_800DC510 == 2) { @@ -898,13 +916,13 @@ void func_8028FCBC(void) { } switch (D_800DC510) { case 0: - if (!gDemoMode) { + if (!gDemoMode) { // If we're not in the demo mode, play the starting fanfare for the current mode (Grand Prix / Time Trials / VS / Battle) if (gModeSelection == GRAND_PRIX) { - func_800C8EF8(11); + play_sequence2(SEQ_EVENT_RACE_STARTING); play_sound2(SOUND_ACTION_REV_ENGINE); play_sound2(SOUND_ACTION_REV_ENGINE_2); } else { - func_800C8EF8(22); + play_sequence2(SEQ_EVENT_RACE_STARTING_VS); } } func_80002DAC(); @@ -1148,15 +1166,15 @@ void func_802903D8(Player* playerOne, Player* playerTwo) { func_800C9060(playerOne - gPlayerOne, 0x19008001U); return; } - if (playerOne->effects & 0x200) { - if (!(playerTwo->effects & 0x200)) { + if (playerOne->effects & STAR_EFFECT) { + if (!(playerTwo->effects & STAR_EFFECT)) { playerTwo->triggers |= HIT_BY_STAR_TRIGGER; } - } else if (playerTwo->effects & 0x200) { + } else if (playerTwo->effects & STAR_EFFECT) { playerOne->triggers |= HIT_BY_STAR_TRIGGER; } else { - playerOne->effects |= 0x8000; - playerTwo->effects |= 0x8000; + playerOne->effects |= ENEMY_BONK_EFFECT; + playerTwo->effects |= ENEMY_BONK_EFFECT; } temp_f0_2 = sqrtf((sp54[0] * sp54[0]) + (sp54[1] * sp54[1]) + (sp54[2] * sp54[2])); sp60[0] /= temp_f0; @@ -1175,7 +1193,7 @@ void func_802903D8(Player* playerOne, Player* playerTwo) { temp_f16 = ((sp60[0] * sp54[0]) + (sp60[1] * sp54[1]) + (sp60[2] * sp54[2])) / temp_f0_2; } temp_f0_2 = temp_f0_2 * temp_f16 * 0.85; - if ((playerOne->effects & 0x200) != 0x200) { + if ((playerOne->effects & STAR_EFFECT) != STAR_EFFECT) { temp_f2 = (temp_f0_2 * sp20) / sp24; playerOne->velocity[0] += sp60[0] * temp_f2; playerOne->velocity[1] += sp60[1] * temp_f2; @@ -1184,7 +1202,7 @@ void func_802903D8(Player* playerOne, Player* playerTwo) { playerOne->pos[1] -= sp60[1] * sp74 * 0.5f; playerOne->pos[2] -= sp60[2] * sp74 * 0.5f; } - if ((playerTwo->effects & 0x200) != 0x200) { + if ((playerTwo->effects & STAR_EFFECT) != STAR_EFFECT) { temp_f2 = (temp_f0_2 * sp24) / sp20; playerTwo->velocity[0] -= sp60[0] * temp_f2; playerTwo->velocity[1] -= sp60[1] * temp_f2; @@ -1211,14 +1229,14 @@ void func_802909F0(void) { for (i = 0; i < 7; i++) { ply = &gPlayers[i]; - if ((ply->type & PLAYER_EXISTS) && (!(ply->effects & 0x80000000)) && - (!(ply->type & PLAYER_INVISIBLE_OR_BOMB)) && (!(ply->effects & 0x4000000))) { + if ((ply->type & PLAYER_EXISTS) && (!(ply->effects & BOO_EFFECT)) && + (!(ply->type & PLAYER_INVISIBLE_OR_BOMB)) && (!(ply->effects & SQUISH_EFFECT))) { for (k = i + 1; k < NUM_PLAYERS; k++) { ply2 = &gPlayers[k]; - if ((ply2->type & PLAYER_EXISTS) && (!(ply2->effects & 0x80000000)) && - (!(ply2->type & PLAYER_INVISIBLE_OR_BOMB)) && (!(ply2->effects & 0x4000000))) { + if ((ply2->type & PLAYER_EXISTS) && (!(ply2->effects & BOO_EFFECT)) && + (!(ply2->type & PLAYER_INVISIBLE_OR_BOMB)) && (!(ply2->effects & SQUISH_EFFECT))) { func_802903D8(ply, ply2); } diff --git a/src/racing/race_logic.h b/src/racing/race_logic.h index 0d4aea256..fc9972d9e 100644 --- a/src/racing/race_logic.h +++ b/src/racing/race_logic.h @@ -13,7 +13,7 @@ void func_8028E3A0(void); void func_8028E438(void); void func_8028E678(void); void func_8028EC38(s32); -void func_8028EC98(s32); +void play_music_for_current_track(s32); void start_race(void); f32 func_8028EE8C(s32); void func_8028EEF0(s32); diff --git a/src/racing/render_courses.c b/src/racing/render_courses.c index 851d80409..c9f171699 100644 --- a/src/racing/render_courses.c +++ b/src/racing/render_courses.c @@ -1547,13 +1547,13 @@ void course_generate_collision_mesh(void) { parse_course_displaylists((uintptr_t) d_course_koopa_troopa_beach_addr); func_80295C6C(); // d_course_koopa_troopa_beach_packed_dl_ADE0 - find_vtx_and_set_colours((uintptr_t) 0x0700ADE0, 106, 255, 255, 255); + find_vtx_and_set_colours((uintptr_t) 0x0700ADE0, 150, 255, 255, 255); // d_course_koopa_troopa_beach_packed_dl_A540 - find_vtx_and_set_colours((uintptr_t) 0x0700A540, 106, 255, 255, 255); + find_vtx_and_set_colours((uintptr_t) 0x0700A540, 150, 255, 255, 255); // d_course_koopa_troopa_beach_packed_dl_9E70 - find_vtx_and_set_colours((uintptr_t) 0x07009E70, 106, 255, 255, 255); + find_vtx_and_set_colours((uintptr_t) 0x07009E70, 150, 255, 255, 255); // d_course_koopa_troopa_beach_packed_dl_358 - find_vtx_and_set_colours((uintptr_t) 0x07000358, 106, 255, 255, 255); + find_vtx_and_set_colours((uintptr_t) 0x07000358, 150, 255, 255, 255); break; case COURSE_ROYAL_RACEWAY: parse_course_displaylists((uintptr_t) d_course_royal_raceway_addr); @@ -1590,9 +1590,9 @@ void course_generate_collision_mesh(void) { func_80295C6C(); D_8015F8E4 = -18.0f; // d_course_sherbet_land_packed_dl_1EB8 - find_vtx_and_set_colours((uintptr_t) 0x07001EB8, 76, 255, 255, 255); + find_vtx_and_set_colours((uintptr_t) 0x07001EB8, 180, 255, 255, 255); // d_course_sherbet_land_packed_dl_2308 - find_vtx_and_set_colours((uintptr_t) 0x07002308, 106, 255, 255, 255); + find_vtx_and_set_colours((uintptr_t) 0x07002308, 150, 255, 255, 255); break; case COURSE_RAINBOW_ROAD: D_800DC5C8 = 1; @@ -1600,14 +1600,14 @@ void course_generate_collision_mesh(void) { func_80295C6C(); D_8015F8E4 = 0.0f; // d_course_rainbow_road_packed_dl_2068 - find_vtx_and_set_colours((uintptr_t) 0x07002068, 106, 255, 255, 255); + find_vtx_and_set_colours((uintptr_t) 0x07002068, 150, 255, 255, 255); // d_course_rainbow_road_packed_dl_1E18 - find_vtx_and_set_colours((uintptr_t) 0x07001E18, 106, 255, 255, 255); + find_vtx_and_set_colours((uintptr_t) 0x07001E18, 150, 255, 255, 255); // d_course_rainbow_road_packed_dl_1318 find_vtx_and_set_colours((uintptr_t) 0x07001318, 255, 255, 255, 0); if (gGamestate != CREDITS_SEQUENCE) { // d_course_rainbow_road_packed_dl_1FB8 - find_vtx_and_set_colours((uintptr_t) 0x07001FB8, 106, 255, 255, 255); + find_vtx_and_set_colours((uintptr_t) 0x07001FB8, 150, 255, 255, 255); } break; case COURSE_WARIO_STADIUM: diff --git a/src/render_player.c b/src/render_player.c index 0040792cd..ca979a977 100644 --- a/src/render_player.c +++ b/src/render_player.c @@ -956,11 +956,11 @@ void func_80022A98(Player* player, s8 playerIndex) { if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) { func_80026A48(player, playerIndex); func_800235AC(player, playerIndex); - if (((player->effects & HIT_EFFECT) == HIT_EFFECT) || ((player->effects & 0x08000000) == 0x08000000)) { - if ((player->effects & HIT_EFFECT) == HIT_EFFECT) { + if (((player->effects & SQUISH_EFFECT) == SQUISH_EFFECT) || ((player->effects & POST_SQUISH_EFFECT) == POST_SQUISH_EFFECT)) { + if ((player->effects & SQUISH_EFFECT) == SQUISH_EFFECT) { func_80022B50(player, playerIndex); } - if ((player->effects & 0x08000000) == 0x08000000) { + if ((player->effects & POST_SQUISH_EFFECT) == POST_SQUISH_EFFECT) { func_80022BC4(player, playerIndex); } } else { @@ -998,7 +998,7 @@ void func_80022BC4(Player* player, UNUSED s8 playerIndex) { temp_f0 *= 0.8; temp_v0 = 0; if (temp_f0 <= 0.1) { - player->effects &= 0xF7FFFFFF; + player->effects &= ~POST_SQUISH_EFFECT; temp_f0 = 0.0f; } } @@ -1271,7 +1271,7 @@ void func_800235AC(Player* player, s8 playerIndex) { } void func_80023BF0(Player* player, s8 playerId, s8 screenId, s8 arg3) { - if (((player->effects & HIT_EFFECT) == HIT_EFFECT) || ((player->effects & 0x8000000) == 0x8000000)) { + if (((player->effects & SQUISH_EFFECT) == SQUISH_EFFECT) || ((player->effects & POST_SQUISH_EFFECT) == POST_SQUISH_EFFECT)) { func_80022CA8(player, playerId, screenId, arg3); } else { func_80022E84(player, playerId, screenId, arg3); @@ -1300,11 +1300,11 @@ void render_player_shadow(Player* player, s8 playerId, s8 screenId) { spB0 = -coss(temp_t9 << 7) * 2; spAC = -sins(temp_t9 << 7) * 2; - if (((player->effects & UNKNOWN_EFFECT_0x1000000) == UNKNOWN_EFFECT_0x1000000) || - ((player->effects & 0x400) == 0x400) || ((player->effects & 0x80000) == 0x80000) || - ((player->effects & 0x800000) == 0x800000) || ((player->effects & 0x400) == 0x400) || - ((player->unk_0CA & 2) == 2) || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || - ((player->effects & UNKNOWN_EFFECT_0x10000) == UNKNOWN_EFFECT_0x10000) || ((player->effects & 8) == 8)) { + if (((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) || + ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) || ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) || + ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) || + ((player->unk_0CA & 2) == 2) || ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) || + ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT) || ((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT)) { var_f2 = (f32) (1.0 - ((f64) player->collision.surfaceDistance[2] * 0.02)); if (var_f2 < 0.0f) { @@ -1435,14 +1435,14 @@ void render_kart(Player* player, s8 playerId, s8 arg2, s8 flipOffset) { } else { thing = (u16) (player->unk_048[arg2] + player->rotation[1] + player->unk_0C0); temp_v1 = player->unk_0CC[arg2] * sins(thing); - if ((player->effects & 8) == 8) { + if ((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT) { sp14C[0] = cameras[arg2].rot[0] - 0x4000; } else { sp14C[0] = -temp_v1 * 0.8; } sp14C[1] = player->unk_048[arg2]; sp14C[2] = player->unk_050[arg2]; - if (((s32) player->effects & HIT_EFFECT) == HIT_EFFECT) { + if (((s32) player->effects & SQUISH_EFFECT) == SQUISH_EFFECT) { func_80062B18(&sp148, &sp144, &sp140, 0.0f, 8.0f, 0.0f, -player->unk_048[arg2], player->unk_050[arg2]); sp154[1] = (player->pos[1] - player->boundingBoxSize) + player->unk_108; sp154[0] = player->pos[0] + sp148; @@ -1747,7 +1747,7 @@ void render_player(Player* player, s8 playerId, s8 screenId) { void func_80026A48(Player* player, s8 playerIndex) { f32 temp_f0; - if (((player->effects & 0x4000) == 0x4000) && ((player->type & PLAYER_START_SEQUENCE) == 0)) { + if (((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) && ((player->type & PLAYER_START_SEQUENCE) == 0)) { player->tyreSpeed += D_800DDE74[8]; if (player->tyreSpeed >= 0x400) { player->tyreSpeed = 0; @@ -1779,10 +1779,10 @@ void update_wheel_palette(Player* player, s8 playerId, s8 screenId, s8 arg3) { s16 temp_t2 = player->tyreSpeed; s16 temp_num = 0x40; // setting this as a variable gets rid of regalloc - if (((player->effects & 0x4000) == 0x4000) && ((player->type & PLAYER_START_SEQUENCE) == 0)) { - if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) && - ((player->effects & 0x20000) != 0x20000) && ((player->effects & 0x80000) != 0x80000) && - ((player->effects & 0x800000) != 0x800000) && ((player->unk_044 & 0x800) == 0)) { + if (((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) && ((player->type & PLAYER_START_SEQUENCE) == 0)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) != BANANA_SPINOUT_EFFECT) && ((player->effects & DRIVING_SPINOUT_EFFECT) != DRIVING_SPINOUT_EFFECT) && + ((player->effects & LIGHTNING_STRIKE_EFFECT) != LIGHTNING_STRIKE_EFFECT) && ((player->effects & UNKNOWN_EFFECT_0x80000) != UNKNOWN_EFFECT_0x80000) && + ((player->effects & UNKNOWN_EFFECT_0x800000) != UNKNOWN_EFFECT_0x800000) && ((player->unk_044 & 0x800) == 0)) { if (frameId <= 20) { load_player_data_non_blocking(player, @@ -1809,9 +1809,9 @@ void update_wheel_palette(Player* player, s8 playerId, s8 screenId, s8 arg3) { } } } else { - if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) && - ((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) && - ((player->effects & 0x20000) != 0x20000) && ((player->unk_044 & 0x800) == 0)) { + if (((player->effects & BANANA_SPINOUT_EFFECT) != BANANA_SPINOUT_EFFECT) && ((player->effects & DRIVING_SPINOUT_EFFECT) != DRIVING_SPINOUT_EFFECT) && + ((player->effects & UNKNOWN_EFFECT_0x80000) != UNKNOWN_EFFECT_0x80000) && ((player->effects & UNKNOWN_EFFECT_0x800000) != UNKNOWN_EFFECT_0x800000) && + ((player->effects & LIGHTNING_STRIKE_EFFECT) != LIGHTNING_STRIKE_EFFECT) && ((player->unk_044 & 0x800) == 0)) { if (frameId <= 20) { load_player_data_non_blocking(player, diff --git a/src/update_objects.c b/src/update_objects.c index 2fb012a42..f65429072 100644 --- a/src/update_objects.c +++ b/src/update_objects.c @@ -161,26 +161,18 @@ s32 add_unused_obj_index(s32* listIdx, s32* nextFree, s32 size) { } count = 0; id = &listIdx[*nextFree]; - /** - * @todo This HAS to be a for-loop of some variety, but I can't make a for-loop to match. - * If you replace this with ```for(var_v1 = 0; var_v1 < size; var_v1++)``` - * The diff gets massive. - */ - if (size > 0) { - loop_3: + + for (count = 0; count < size; count++) { if (*id == NULL_OBJECT_ID) { objectIndex = find_unused_obj_index(id); *nextFree += 1; + break; } else { *nextFree += 1; if (*nextFree >= size) { *nextFree = 0; } - count += 1; id = &listIdx[*nextFree]; - if (count != size) { // check if don't check all element of the list - goto loop_3; - } } } if (count == size) { @@ -3152,7 +3144,7 @@ void func_80079860(s32 playerId) { player = &gPlayerOne[playerId]; if ((func_80072354(objectIndex, 1) != 0) && (((func_802ABDF4(player->collision.meshIndexZX) != 0) && (player->collision.surfaceDistance[2] <= 3.0f)) || - (player->unk_0CA & 1) || ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & 8)))) { + (player->unk_0CA & 1) || ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & MIDAIR_EFFECT)))) { func_80090778(player); func_800797AC(playerId); } @@ -3476,7 +3468,7 @@ void update_object_lakitu_reverse(s32 objectIndex, s32 playerId) { } switch (gObjectList[objectIndex].unk_0D6) { /* switch 1; irregular */ case 1: /* switch 1 */ - if ((gObjectList[objectIndex].state >= 3) && (!(sp2C->effects & 0x400000))) { + if ((gObjectList[objectIndex].state >= 3) && (!(sp2C->effects & REVERSE_EFFECT))) { func_80086F10(objectIndex, 6, &D_800E69F4); gObjectList[objectIndex].unk_0D6 = 2; gObjectList[objectIndex].unk_04C = 0x00000050; @@ -3536,7 +3528,7 @@ void func_8007A88C(s32 playerId) { objectIndex = gIndexLakituList[playerId]; player = &gPlayerOne[playerId]; - if ((gObjectList[objectIndex].state == 0) && (player->effects & 0x400000)) { + if ((gObjectList[objectIndex].state == 0) && (player->effects & REVERSE_EFFECT)) { func_800790E4(playerId); } } @@ -5983,10 +5975,10 @@ void func_80080B28(s32 objectIndex, s32 playerId) { if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) { if (!(temp_s0->triggers & THWOMP_SQUISH_TRIGGER)) { temp_f0 = func_80088F54(objectIndex, temp_s0); - if ((temp_f0 <= 9.0) && !(temp_s0->effects & 0x04000000) && + if ((temp_f0 <= 9.0) && !(temp_s0->effects & SQUISH_EFFECT) && (has_collided_horizontally_with_player(objectIndex, temp_s0) != 0)) { if ((temp_s0->type & PLAYER_EXISTS) && !(temp_s0->type & 0x100)) { - if (!(temp_s0->effects & 0x200)) { + if (!(temp_s0->effects & STAR_EFFECT)) { func_80089474(objectIndex, playerId, 1.4f, 1.1f, SOUND_ARG_LOAD(0x19, 0x00, 0xA0, 0x4C)); } else if (func_80072354(objectIndex, 0x00000040) != 0) { if (temp_s0->type & 0x1000) { @@ -6386,7 +6378,7 @@ void func_80081D34(s32 objectIndex) { player = gPlayerOne; var_s4 = camera1; for (playerIndex = 0; playerIndex < D_8018D158; playerIndex++, player++, var_s4++) { - if ((is_obj_flag_status_active(objectIndex, 0x00000200) != 0) && !(player->effects & 0x80000000) && + if ((is_obj_flag_status_active(objectIndex, 0x00000200) != 0) && !(player->effects & BOO_EFFECT) && (has_collided_with_player(objectIndex, player) != 0)) { if ((player->type & PLAYER_EXISTS) && !(player->type & 0x100)) { var_s5 = 1; @@ -6394,7 +6386,7 @@ void func_80081D34(s32 objectIndex) { if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) { func_80072180(); } - if (player->effects & 0x200) { + if (player->effects & STAR_EFFECT) { func_800C9060(playerIndex, 0x1900A046U); } else { player->triggers |= HIGH_TUMBLE_TRIGGER;