summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcoco875 <59367621+coco875@users.noreply.github.com>2024-01-21 05:22:35 +0100
committerGitHub <noreply@github.com>2024-01-20 21:22:35 -0700
commit639fec14583decbebba6bc069157884bda17f054 (patch)
treeb23be0b57cd6813d857cd132bfcacf18480a3b35 /src
parent1b9a6f4e24d52cc7a8d51181af8f02db8d28589a (diff)
place surface type const and unassemble flag in vtx and document effects (#553)
* place surface type const and unassemble flag in vtx
Diffstat (limited to 'src')
-rw-r--r--src/audio/external.c76
-rw-r--r--src/camera.c16
-rw-r--r--src/code_80005FD0.c66
-rw-r--r--src/code_8003DC40.c17
-rw-r--r--src/code_80057C60.c1024
-rw-r--r--src/code_80071F00.c16
-rw-r--r--src/code_80086E70.c22
-rw-r--r--src/code_8008C1D0.c208
-rw-r--r--src/debug/all_variables.h2
-rw-r--r--src/effects.c2106
-rw-r--r--src/effects.h (renamed from src/code_8008C1D0.h)46
-rw-r--r--src/hud_renderer.c2
-rw-r--r--src/main.c2
-rw-r--r--src/player_controller.c418
-rw-r--r--src/player_controller.h4
-rw-r--r--src/racing/actors.c64
-rw-r--r--src/racing/actors_extended.c28
-rw-r--r--src/racing/collision.c6
-rw-r--r--src/racing/memory.c60
-rw-r--r--src/racing/race_logic.c16
-rw-r--r--src/render_player.c16
-rw-r--r--src/spawn_players.c4
22 files changed, 3163 insertions, 1056 deletions
diff --git a/src/audio/external.c b/src/audio/external.c
index ccfaf8a70..baf61d380 100644
--- a/src/audio/external.c
+++ b/src/audio/external.c
@@ -2672,31 +2672,31 @@ void func_800C70A8(u8 playerId) {
if ((D_800E9E54[playerId] > 3500.0f) || ((gPlayers[playerId].effects & 0x10) == 0x10)) {
D_800E9E74[playerId] = 1;
switch (gPlayers[playerId].boundingBoxCorners[AUDIO_LEFT_TYRE].surfaceType) {
- case 2: /* switch 1 */
+ case DIRT: /* switch 1 */
D_800E9E74[playerId] = 0x0000000D;
break;
- case 3: /* switch 1 */
+ case SAND: /* switch 1 */
D_800E9E74[playerId] = 0x0000000E;
break;
- case 6: /* switch 1 */
+ case BRIDGE: /* switch 1 */
D_800E9E74[playerId] = 0x00000011;
break;
- case 4: /* switch 1 */
+ case STONE: /* switch 1 */
D_800E9E74[playerId] = 0x0000000F;
break;
- case 5: /* switch 1 */
+ case SNOW: /* switch 1 */
D_800E9E74[playerId] = 0x00000010;
break;
- case 9: /* switch 1 */
+ case ICE: /* switch 1 */
D_800E9E74[playerId] = 0x00000014;
break;
- case 16: /* switch 1 */
+ case ROPE_BRIDGE: /* switch 1 */
D_800E9E74[playerId] = 0x00000019;
break;
- case 17: /* switch 1 */
+ case WOOD_BRIDGE: /* switch 1 */
D_800E9E74[playerId] = 0x0000001A;
break;
- case 14: /* switch 1 */
+ case TRAIN_TRACK: /* switch 1 */
D_800E9E74[playerId] = 0x0000001B;
break;
}
@@ -2704,37 +2704,37 @@ void func_800C70A8(u8 playerId) {
if ((gPlayers[playerId].effects & 0x10) == 0x10) {
D_800E9E74[playerId] = 2;
switch (gPlayers[playerId].boundingBoxCorners[AUDIO_LEFT_TYRE].surfaceType) { /* switch 2 */
- case 2: /* switch 2 */
+ case DIRT: /* switch 2 */
D_800E9E74[playerId] = 0x0000000D;
break;
- case 3: /* switch 2 */
+ case SAND: /* switch 2 */
D_800E9E74[playerId] = 0x0000000E;
break;
- case 6: /* switch 2 */
+ case BRIDGE: /* switch 2 */
D_800E9E74[playerId] = 0x00000011;
break;
- case 4: /* switch 2 */
+ case STONE: /* switch 2 */
D_800E9E74[playerId] = 0x0000000F;
break;
- case 5: /* switch 2 */
+ case SNOW: /* switch 2 */
D_800E9E74[playerId] = 0x00000010;
break;
- case 9: /* switch 2 */
+ case ICE: /* switch 2 */
D_800E9E74[playerId] = 0x00000014;
break;
- case 16: /* switch 2 */
+ case ROPE_BRIDGE: /* switch 2 */
D_800E9E74[playerId] = 0x00000019;
break;
- case 17: /* switch 2 */
+ case WOOD_BRIDGE: /* switch 2 */
D_800E9E74[playerId] = 0x0000001A;
break;
- case 14: /* switch 2 */
+ case TRAIN_TRACK: /* switch 2 */
D_800E9E74[playerId] = 0x0000001B;
break;
}
}
switch (gPlayers[playerId].boundingBoxCorners[AUDIO_LEFT_TYRE].surfaceType) { /* switch 3 */
- case 8: /* switch 3 */
+ case GRASS: /* switch 3 */
if (D_800E9E74[playerId] == 6) {
D_800E9E74[playerId] = 4;
} else if (D_800EA1C0 == 0) {
@@ -2743,7 +2743,7 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 4;
}
break;
- case 7: /* switch 3 */
+ case SAND_OFFROAD: /* switch 3 */
if (D_800E9E74[playerId] == 0x0000000C) {
D_800E9E74[playerId] = 0x0000000A;
} else if (D_800EA1C0 == 0) {
@@ -2752,7 +2752,7 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 0x0000000A;
}
break;
- case 13: /* switch 3 */
+ case DIRT_OFFROAD: /* switch 3 */
if (D_800E9E74[playerId] == 0x00000018) {
D_800E9E74[playerId] = 0x00000016;
} else if (D_800EA1C0 == 0) {
@@ -2761,7 +2761,7 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 0x00000016;
}
break;
- case 11: /* switch 3 */
+ case SNOW_OFFROAD: /* switch 3 */
if (D_800E9E74[playerId] == 0x0000001F) {
D_800E9E74[playerId] = 0x0000001D;
} else if (D_800EA1C0 == 0) {
@@ -2770,7 +2770,7 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 0x0000001D;
}
break;
- case 10: /* switch 3 */
+ case WET_SAND: /* switch 3 */
if (D_800E9F74[playerId] == 0) {
if (D_800E9E74[playerId] == 9) {
D_800E9E74[playerId] = 7;
@@ -2783,18 +2783,18 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 0x0000001C;
}
break;
- case 16: /* switch 3 */
+ case ROPE_BRIDGE: /* switch 3 */
D_800E9E74[playerId] = 0x00000019;
break;
- case 17: /* switch 3 */
+ case WOOD_BRIDGE: /* switch 3 */
D_800E9E74[playerId] = 0x0000001A;
break;
- case 14: /* switch 3 */
+ case TRAIN_TRACK: /* switch 3 */
D_800E9E74[playerId] = 0x0000001B;
break;
}
switch (gPlayers[playerId].boundingBoxCorners[AUDIO_RIGHT_TYRE].surfaceType) { /* switch 4 */
- case 8: /* switch 4 */
+ case GRASS: /* switch 4 */
if (D_800E9E74[playerId] == 5) {
D_800E9E74[playerId] = 4;
} else if (D_800EA1C0 == 0) {
@@ -2803,7 +2803,7 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 4;
}
break;
- case 7: /* switch 4 */
+ case SAND_OFFROAD: /* switch 4 */
if (D_800E9E74[playerId] == 0x0000000B) {
D_800E9E74[playerId] = 0x0000000A;
} else if (D_800EA1C0 == 0) {
@@ -2812,7 +2812,7 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 0x0000000A;
}
break;
- case 13: /* switch 4 */
+ case DIRT_OFFROAD: /* switch 4 */
if (D_800E9E74[playerId] == 0x00000017) {
D_800E9E74[playerId] = 0x00000016;
} else if (D_800EA1C0 == 0) {
@@ -2821,7 +2821,7 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 0x00000016;
}
break;
- case 11: /* switch 4 */
+ case SNOW_OFFROAD: /* switch 4 */
if (D_800E9E74[playerId] == 0x0000001E) {
D_800E9E74[playerId] = 0x0000001D;
} else if (D_800EA1C0 == 0) {
@@ -2830,7 +2830,7 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 0x0000001D;
}
break;
- case 10: /* switch 4 */
+ case WET_SAND: /* switch 4 */
if (D_800E9F74[playerId] == 0) {
if (D_800E9E74[playerId] == 8) {
D_800E9E74[playerId] = 7;
@@ -2843,13 +2843,13 @@ void func_800C70A8(u8 playerId) {
D_800E9E74[playerId] = 0x0000001C;
}
break;
- case 16: /* switch 4 */
+ case ROPE_BRIDGE: /* switch 4 */
D_800E9E74[playerId] = 0x00000019;
break;
- case 17: /* switch 4 */
+ case WOOD_BRIDGE: /* switch 4 */
D_800E9E74[playerId] = 0x0000001A;
break;
- case 14: /* switch 4 */
+ case TRAIN_TRACK: /* switch 4 */
D_800E9E74[playerId] = 0x0000001B;
break;
}
@@ -3369,13 +3369,13 @@ void func_800C9018(u8 arg0, s32 arg1) {
func_800C5578(D_800E9F7C[arg0].pos, arg1);
}
-void func_800C9060(u8 arg0, u32 arg1) {
+void func_800C9060(u8 playerId, u32 arg1) {
if (D_800EA108 == 0) {
- switch(D_800EA0EC[arg0]) {
+ switch(D_800EA0EC[playerId]) {
case 2:
- D_800EA0EC[arg0] = 1;
+ D_800EA0EC[playerId] = 1;
case 0:
- play_sound(arg1, D_800E9F7C[arg0].pos, arg0, &D_800EA1D4, &D_800EA1D4, &D_800E9F7C[arg0].unk_14);
+ play_sound(arg1, D_800E9F7C[playerId].pos, playerId, &D_800EA1D4, &D_800EA1D4, &D_800E9F7C[playerId].unk_14);
break;
}
}
diff --git a/src/camera.c b/src/camera.c
index 19bbaf03e..43f9d26fe 100644
--- a/src/camera.c
+++ b/src/camera.c
@@ -1010,16 +1010,16 @@ void func_8001F394(Player *player, f32 *arg1) {
}
if (D_80164A08[playerIndex] == 0) {
- if (player->statusEffects & HOLD_BANANA_EFFECT) {
+ if (player->soundEffects & HOLD_BANANA_SOUND_EFFECT) {
D_80164A08[playerIndex] = 1;
}
- if ((player->effects & 0x2000) == 0x2000) {
+ if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
D_80164A08[playerIndex] = 2;
}
- if ((player->effects & 0x100000) == 0x100000) {
+ if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) {
D_80164A08[playerIndex] = 3;
}
- if ((player->statusEffects & 0x100) == 0x100) {
+ if ((player->soundEffects & 0x100) == 0x100) {
D_80164A08[playerIndex] = 4;
}
if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) {
@@ -1029,7 +1029,7 @@ void func_8001F394(Player *player, f32 *arg1) {
}
switch (D_80164A08[playerIndex]) {
case 1:
- if (player->statusEffects & HOLD_BANANA_EFFECT) {
+ if (player->soundEffects & HOLD_BANANA_SOUND_EFFECT) {
move_f32_towards(&D_80164498[playerIndex], 20.0f, 0.2f);
} else {
if (D_80164498[playerIndex] > 1.0f) {
@@ -1041,7 +1041,7 @@ void func_8001F394(Player *player, f32 *arg1) {
}
break;
case 2:
- if ((player->effects & 0x2000) == 0x2000) {
+ if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
if (player->boostTimer != 0) {
move_f32_towards(&D_80164498[playerIndex], 8.0f, 0.2f);
}
@@ -1055,7 +1055,7 @@ void func_8001F394(Player *player, f32 *arg1) {
}
break;
case 3:
- if (((player->effects & 0x100000) == 0x100000) && ((player->effects & 8) == 8)) {
+ if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) && ((player->effects & 8) == 8)) {
move_f32_towards(&D_80164498[playerIndex], 20.0f, 0.1f);
} else {
if (D_80164498[playerIndex] > 1.0f) {
@@ -1067,7 +1067,7 @@ void func_8001F394(Player *player, f32 *arg1) {
}
break;
case 4:
- if ((player->statusEffects & 0x100) == 0x100) {
+ if ((player->soundEffects & 0x100) == 0x100) {
move_f32_towards(&D_80164498[playerIndex], 25.0f, 1.0f);
} else {
if (D_80164498[playerIndex] > 1.0f) {
diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c
index 2f9ca2e34..4764ba635 100644
--- a/src/code_80005FD0.c
+++ b/src/code_80005FD0.c
@@ -1067,13 +1067,13 @@ void func_80008424(s32 playerId, f32 arg1, Player *player) {
if (!(player->effects & 0x80) &&
!(player->effects & 0x40) &&
!(player->effects & 0x20000) &&
- !(player->statusEffects & 0x400000) &&
- !(player->statusEffects & 0x01000000) &&
- !(player->statusEffects & 2) &&
- !(player->statusEffects & 4)) {
+ !(player->soundEffects & 0x400000) &&
+ !(player->soundEffects & 0x01000000) &&
+ !(player->soundEffects & 2) &&
+ !(player->soundEffects & 4)) {
if (gCurrentCourseId == COURSE_AWARD_CEREMONY) {
func_80007FA4(playerId, player, var_f2);
- } else if ((D_801634D8[playerId] == 1) && !(player->effects & 0x80000200)) {
+ } else if ((D_801634D8[playerId] == 1) && !(player->effects & (STAR_EFFECT | BOO_EFFECT))) {
func_80031F48(player, 10.0f);
if (player->currentSpeed == 0.0) {
player->velocity[0] = 0.0f;
@@ -1508,7 +1508,7 @@ void func_8000929C(s32 playerId, Player *player) {
var_t0 = 0;
if (gCurrentCourseId == 0x000B) {
D_801634EC = 0;
- if (player->effects & 0x200) {
+ if (player->effects & STAR_EFFECT) {
D_801634EC = 1;
}
if (gIsMirrorMode != 0) {
@@ -1650,7 +1650,7 @@ void func_800098FC(s32 arg0, Player *player) {
}
}
if (D_801633B0[arg0] >= 0xB) {
- if ((player->statusEffects & 0x400000) || (player->statusEffects & 0x01000000) || (player->statusEffects & 2) || (player->statusEffects & 4) || (player->effects & 0x04000000)) {
+ if ((player->soundEffects & 0x400000) || (player->soundEffects & 0x01000000) || (player->soundEffects & 2) || (player->soundEffects & 4) || (player->effects & 0x04000000)) {
func_800C92CC(arg0, 0x2900800BU);
D_801633B0[arg0] = 0;
}
@@ -2114,7 +2114,7 @@ void func_8000B140(s32 playerId) {
(player->characterId != 5) &&
(player->characterId != 7) &&
(player->characterId != 4) &&
- !(player->effects & 0x200)) {
+ !(player->effects & STAR_EFFECT)) {
var_t1 = gNearestWaypointByPlayerId[playerId];
temp_f22 = (player->unk_094 / 18.0f) * 216.0f;
for (someIndex = 0; someIndex < 8; someIndex++) {
@@ -3125,7 +3125,7 @@ void func_8000DF8C(s32 bombKartId) {
if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2) + (temp_f12 * temp_f12)) < 25.0f) {
var_s1 = 0;
sp7E = 4;
- var_v0->statusEffects |= 0x400000;
+ var_v0->soundEffects |= 0x400000;
var_v0->type &= ~0x2000;
}
}
@@ -3140,9 +3140,9 @@ void func_8000DF8C(s32 bombKartId) {
sp7E = 4;
var_s1 = 0;
if (gCurrentCourseId == COURSE_FRAPPE_SNOWLAND) {
- var_v0->statusEffects |= 0x01000000;
+ var_v0->soundEffects |= 0x01000000;
} else {
- var_v0->statusEffects |= 0x400000;
+ var_v0->soundEffects |= 0x400000;
}
}
}
@@ -3705,7 +3705,7 @@ void func_8000F628(void) {
for (i = 0; i < NUM_PLAYERS; i++) {
if (D_80163330[i] == 1) {
- gPlayers[i].statusEffects |= 0x02000000;
+ gPlayers[i].soundEffects |= 0x02000000;
}
}
}
@@ -4736,12 +4736,12 @@ void func_80012DC0(s32 playerId, Player *player) {
if ((x_dist > -100.0) && (x_dist < 100.0)) {
if ((z_dist > -100.0) && (z_dist < 100.0)) {
if (func_80006018(trainCar->position[0], trainCar->position[2], trainCar->velocity[0], trainCar->velocity[2], 60.0f, 20.0f, playerPosX, playerPosZ) == 1) {
- player->statusEffects |= REVERSE_EFFECT;
+ player->soundEffects |= REVERSE_SOUND_EFFECT;
}
trainCar = &gTrainList[trainIndex].tender;
if (trainCar->isActive == 1) {
if (func_80006018(trainCar->position[0], trainCar->position[2], trainCar->velocity[0], trainCar->velocity[2], 30.0f, 20.0f, playerPosX, playerPosZ) == 1) {
- player->statusEffects |= REVERSE_EFFECT;
+ player->soundEffects |= REVERSE_SOUND_EFFECT;
}
}
}
@@ -4755,7 +4755,7 @@ void func_80012DC0(s32 playerId, Player *player) {
if ((x_dist > -100.0) && (x_dist < 100.0)) {
if ((z_dist > -100.0) && (z_dist < 100.0)) {
if (func_80006018(trainCar->position[0], trainCar->position[2], trainCar->velocity[0], trainCar->velocity[2], 30.0f, 20.0f, playerPosX, playerPosZ) == 1) {
- player->statusEffects |= REVERSE_EFFECT;
+ player->soundEffects |= REVERSE_SOUND_EFFECT;
}
}
}
@@ -4965,7 +4965,7 @@ void func_80013854(Player *player) {
f32 playerZ;
f32 playerY;
- if (!((player->effects & 0x01000000)) && (!(player->effects & 0x02000000))) {
+ if (!((player->effects & 0x01000000)) && (!(player->effects & HIT_BY_ITEM_EFFECT))) {
playerX = player->pos[0];
playerY = player->pos[1];
playerZ = player->pos[2];
@@ -4978,7 +4978,7 @@ void func_80013854(Player *player) {
if ((x_diff > -300.0) && (x_diff < 300.0)) {
if ((z_diff > -300.0) && (z_diff < 300.0)) {
if ((func_80006018(tempPaddleWheelBoat->position[0], tempPaddleWheelBoat->position[2], tempPaddleWheelBoat->velocity[0], tempPaddleWheelBoat->velocity[2], 200.0f, 60.0f, playerX, playerZ) == 1) && (y_diff < 60.0)) {
- player->statusEffects |= 0x80000;
+ player->soundEffects |= 0x80000;
}
}
}
@@ -5155,7 +5155,7 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3
if (((temp_f14) > -100.0) && ((temp_f14) < 100.0)) {
if (func_80006018(vehicle->position[0], vehicle->position[2], vehicle->velocity[0], vehicle->velocity[2], arg3, arg4, spC4, spBC) == (s32) 1) {
- player->statusEffects |= REVERSE_EFFECT;
+ player->soundEffects |= REVERSE_SOUND_EFFECT;
}
}
}
@@ -7671,7 +7671,7 @@ void cpu_use_item_strategy(s32 playerId) {
} else if (temp_s0->unk_00 == 1) {
temp_s0->actorIndex = use_banana_item(player);
if ((temp_s0->actorIndex >= 0) && (temp_s0->actorIndex < 0x64)) {
- player->statusEffects |= HOLD_BANANA_EFFECT;
+ player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
temp_s0->unk_00 = 2;
temp_s0->unk_04 = 0;
temp_s0->unk_06 += 1;
@@ -7688,7 +7688,7 @@ void cpu_use_item_strategy(s32 playerId) {
if ((!(banana->flags & 0x8000)) || (banana->type != 6) || (banana->state != 0) || (playerId != banana->playerId)) {
temp_s0->unk_00 = 0;
temp_s0->unk_04 = 0;
- player->statusEffects &= ~0x00040000;
+ player->soundEffects &= ~0x00040000;
} else if (temp_s0->unk_0E < temp_s0->unk_04) {
temp_s0->unk_00 = 3;
}
@@ -7707,7 +7707,7 @@ void cpu_use_item_strategy(s32 playerId) {
banana->pos[1] = func_802AE1C0(player->pos[0], (f32) (((f64) player->pos[1]) + 30.0), player->pos[2]) + (banana->boundingBoxSize + 1.0f);
}
}
- player->statusEffects &= ~0x00040000;
+ player->soundEffects &= ~0x00040000;
temp_s0->unk_04 = 0;
temp_s0->unk_00 = 0;
break;
@@ -7717,7 +7717,7 @@ void cpu_use_item_strategy(s32 playerId) {
if ((temp_s0->actorIndex >= 0) && (temp_s0->actorIndex < 0x64)) {
banana = (struct BananaActor*)&gActorList[temp_s0->actorIndex];
banana->state = 4;
- player->statusEffects |= HOLD_BANANA_EFFECT;
+ player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
temp_s0->unk_00 = 0x0023;
temp_s0->unk_04 = 0;
temp_s0->unk_06 += 1;
@@ -7739,7 +7739,7 @@ void cpu_use_item_strategy(s32 playerId) {
if ((((!(banana->flags & 0x8000)) || (banana->type != 6)) || (banana->state != 4)) || (playerId != banana->playerId)) {
temp_s0->unk_00 = 0;
temp_s0->unk_04 = 0;
- player->statusEffects &= ~0x00040000;
+ player->soundEffects &= ~0x00040000;
} else {
banana->velocity[1] -= 0.4;
banana->pos[0] += banana->velocity[0];
@@ -7762,7 +7762,7 @@ void cpu_use_item_strategy(s32 playerId) {
banana->velocity[2] = 0.0f;
banana->pos[1] = func_802AE1C0(banana->pos[0], (f32) (((f64) banana->pos[1]) + 30.0), banana->pos[2]) + (banana->boundingBoxSize + 1.0f);
}
- player->statusEffects &= ~0x00040000;
+ player->soundEffects &= ~0x00040000;
temp_s0->unk_00 = 0;
temp_s0->unk_04 = 0;
break;
@@ -7993,35 +7993,35 @@ void cpu_use_item_strategy(s32 playerId) {
break;
case 25:
- player->statusEffects |= STAR_EFFECT;
+ player->soundEffects |= STAR_SOUND_EFFECT;
temp_s0->unk_00 = 0x001A;
temp_s0->unk_04 = 0;
temp_s0->unk_06 += 1;
break;
case 26:
- if (!(player->effects & 0x200)) {
+ if (!(player->effects & STAR_EFFECT)) {
temp_s0->unk_00 = 0;
}
temp_s0->unk_04 = 0;
break;
case 27:
- player->statusEffects |= BOO_EFFECT;
+ player->soundEffects |= BOO_SOUND_EFFECT;
temp_s0->unk_00 = 0x001C;
temp_s0->unk_04 = 0;
temp_s0->unk_06 += 1;
break;
case 28:
- if (!(player->effects & 0x80000000)) {
+ if (!(player->effects & BOO_EFFECT)) {
temp_s0->unk_00 = 0;
}
temp_s0->unk_04 = 0;
break;
case 29:
- player->statusEffects |= BOOST_EFFECT;
+ player->soundEffects |= BOOST_SOUND_EFFECT;
temp_s0->unk_00 = 0;
temp_s0->unk_04 = 0;
temp_s0->unk_06 += 1;
@@ -8029,7 +8029,7 @@ void cpu_use_item_strategy(s32 playerId) {
case 30:
if (temp_s0->unk_04 >= 0x3D) {
- player->statusEffects |= BOOST_EFFECT;
+ player->soundEffects |= BOOST_SOUND_EFFECT;
temp_s0->unk_00 = 0x001D;
temp_s0->unk_04 = 0;
}
@@ -8037,7 +8037,7 @@ void cpu_use_item_strategy(s32 playerId) {
case 31:
if (temp_s0->unk_04 >= 0x3D) {
- player->statusEffects |= BOOST_EFFECT;
+ player->soundEffects |= BOOST_SOUND_EFFECT;
temp_s0->unk_00 = 0x001E;
temp_s0->unk_04 = 0;
}
@@ -8051,7 +8051,7 @@ void cpu_use_item_strategy(s32 playerId) {
case 33:
if ((((s16) temp_s0->unk_04) % 60) == 0) {
- player->statusEffects |= BOOST_EFFECT;
+ player->soundEffects |= BOOST_SOUND_EFFECT;
if (temp_s0->unk_0E < temp_s0->unk_04) {
temp_s0->unk_00 = 0;
temp_s0->unk_04 = 0;
@@ -8066,7 +8066,7 @@ void cpu_use_item_strategy(s32 playerId) {
if (temp_s0->unk_04 < 0x2710) {
temp_s0->unk_04 += 1;
}
- if (player->effects & 0x80002200) {
+ if (player->effects & (BOO_EFFECT | BOOST_EFFECT | STAR_EFFECT)) { // 0x80002200
temp_s0->unk_04 = 0;
}
}
diff --git a/src/code_8003DC40.c b/src/code_8003DC40.c
index 24047d504..7d92688cc 100644
--- a/src/code_8003DC40.c
+++ b/src/code_8003DC40.c
@@ -3,8 +3,9 @@
#include "math_util.h"
#include "common_structs.h"
#include "player_controller.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
#include "code_8003DC40.h"
+#include "defines.h"
void func_8003DC40(Player *player) {
player->unk_DAC = 1.0f;
@@ -68,8 +69,8 @@ void func_8003E048(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4
arg3[2] = (-(player->slopeAccel / 182) * 0xB4);
func_80031F48(player, 4.0f);
player->unk_DAC = 0.5f;
- if ((player->effects & 0x2000) != 0) {
- func_8008D554(player);
+ if ((player->effects & BOOST_EFFECT) != 0) {
+ remove_boost_effect(player);
player->currentSpeed /= 2;
player->unk_08C /= 2;
}
@@ -89,15 +90,15 @@ void func_8003E37C(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4
*arg6 += arg1[1] * player->unk_110.unk3C[2] * 0.2;
*arg7 += arg1[2] * player->unk_110.unk3C[2] * 1;
func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2);
- if ((player->unk_110.orientationVector[1] <= 0.7318f) || (player->unk_0F8 == 0x000C)) {
+ if ((player->unk_110.orientationVector[1] <= 0.7318f) || (player->surfaceType == CLIFF)) {
arg3[0] = ((player->unk_206 / 182) * 0xB4);
arg3[2] = (-(player->slopeAccel / 182) * 0xB4);
if (((player->unk_094 / 18.0f) * 216.0f) >= 8.0f) {
func_80031F48(player, 5.0f);
}
player->unk_DAC = 0.5f;
- if ((player->effects & 0x2000) != 0) {
- func_8008D554(player);
+ if ((player->effects & BOOST_EFFECT) != 0) {
+ remove_boost_effect(player);
player->currentSpeed /= 2;
player->unk_08C /= 2;
}
@@ -145,7 +146,7 @@ void func_8003E9EC(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4
func_8003DC40(player);
} else {
if ((((player->unk_094 / 18.0f) * 216.0f) > 20.0f) || ((player->effects & 0x10000) == 0x10000)) {
- if ((player->boundingBoxCorners[2].surfaceType == 1) || (player->boundingBoxCorners[3].surfaceType == 1) || (player->boundingBoxCorners[1].surfaceType == 1) || (player->boundingBoxCorners[0].surfaceType == 1)) {
+ if ((player->boundingBoxCorners[2].surfaceType == ASPHALT) || (player->boundingBoxCorners[3].surfaceType == ASPHALT) || (player->boundingBoxCorners[1].surfaceType == ASPHALT) || (player->boundingBoxCorners[0].surfaceType == ASPHALT)) {
arg3[0] = ((player->unk_206 / 182) * 5);
} else {
arg3[0] = ((player->unk_206 / 182) * 0x28);
@@ -190,7 +191,7 @@ void func_8003F138(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32 *arg4
*arg6 += arg1[1] * player->unk_110.unk3C[2] * 0.1;
*arg7 += arg1[2] * player->unk_110.unk3C[2] * 1;
func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2);
- if (player->unk_0F8 == 8) {
+ if (player->surfaceType == GRASS) {
player->unk_044 &= ~1;
}
if (player->unk_110.orientationVector[1] <= 0.8357f) {
diff --git a/src/code_80057C60.c b/src/code_80057C60.c
index cd0b0155f..ba5cf0de6 100644
--- a/src/code_80057C60.c
+++ b/src/code_80057C60.c
@@ -22,7 +22,7 @@
#include "code_8006E9C0.h"
#include "code_80071F00.h"
#include "code_80086E70.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
#include "src/data/data_800E8700.h"
#include "skybox_and_splitscreen.h"
#include "common_textures.h"
@@ -1468,7 +1468,7 @@ void func_8005A14C(s32 playerId) {
} else {
f32_step_towards(&gObjectList[objectIndex].unk_028[1], 0.0f, 1.0f);
}
- if ((player->type & PLAYER_INVISIBLE_OR_BOMB) || (player->effects & 0x80000000)) {
+ if ((player->type & PLAYER_INVISIBLE_OR_BOMB) || (player->effects & BOO_EFFECT)) {
gObjectList[objectIndex].unk_0A0 = 0x0050;
} else {
gObjectList[objectIndex].unk_0A0 = 0x00FF;
@@ -2808,12 +2808,12 @@ void func_8005D6C0(Player* player) {
}
}
-void func_8005D794(Player* player, UnkPlayerStruct258* arg1, f32 arg2, f32 arg3, f32 arg4, s8 arg5, s8 arg6) {
+void func_8005D794(Player* player, UnkPlayerStruct258* arg1, f32 arg2, f32 arg3, f32 arg4, s8 surfaceType, s8 arg6) {
arg1->unk_000[2] = arg4;
arg1->unk_000[0] = arg2;
arg1->unk_000[1] = arg3;
arg1->unk_020 = -player->rotation[1];
- arg1->unk_014 = arg5;
+ arg1->unk_014 = surfaceType;
arg1->unk_010 = arg6;
}
@@ -2896,7 +2896,7 @@ void func_8005DAD8(UnkPlayerStruct258* arg0, s16 arg1, s16 arg2, s16 arg3) {
void func_8005DAF4(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) {
UNUSED s32 stackPadding;
- s32 var_t1;
+ s32 surfaceType;
s32 var_t3;
f32 var_f2;
f32 var_f12;
@@ -2904,27 +2904,50 @@ void func_8005DAF4(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) {
s32 temp_v0;
static s32 test = 8;
- var_t1 = 0x000000FF;
+ surfaceType = 0x000000FF;
temp_v0 = random_int(test);
if ((temp_v0 == 0) || (temp_v0 == 4)) {
var_f2 = player->boundingBoxCorners[2].cornerPos[0];
var_f12 = player->boundingBoxCorners[2].cornerGroundY + 2.0f;
var_f14 = player->boundingBoxCorners[2].cornerPos[2];
var_t3 = 1;
- var_t1 = player->boundingBoxCorners[2].surfaceType;
+ surfaceType = player->boundingBoxCorners[2].surfaceType;
}
if ((temp_v0 == 2) || (temp_v0 == 6)) {
var_f2 = player->boundingBoxCorners[3].cornerPos[0];
var_f12 = player->boundingBoxCorners[3].cornerGroundY + 2.0f;
var_f14 = player->boundingBoxCorners[3].cornerPos[2];
var_t3 = 0;
- var_t1 = player->boundingBoxCorners[3].surfaceType;
- }
- switch (var_t1) {
- case 2:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
+ surfaceType = player->boundingBoxCorners[3].surfaceType;
+ }
+ switch (surfaceType) {
+ case DIRT:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
+ if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_KALAMARI_DESERT) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_MOO_MOO_FARM) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_WARIO_STADIUM) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_YOSHI_VALLEY) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 10, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_DK_JUNGLE) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 11, 0, 0x0080);
+ }
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ }
+ } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
@@ -2946,146 +2969,123 @@ void func_8005DAF4(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) {
}
player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
- if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
- func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
- }
- if (gCurrentCourseId == COURSE_KALAMARI_DESERT) {
- func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
- }
- if (gCurrentCourseId == COURSE_MOO_MOO_FARM) {
- func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
- }
- if (gCurrentCourseId == COURSE_WARIO_STADIUM) {
- func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
- }
- if (gCurrentCourseId == COURSE_YOSHI_VALLEY) {
- func_8005DAD8(&player->unk_258[10 + arg1], 10, 0, 0x0080);
- }
- if (gCurrentCourseId == COURSE_DK_JUNGLE) {
- func_8005DAD8(&player->unk_258[10 + arg1], 11, 0, 0x0080);
- }
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 8:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
+ break;
+ case GRASS:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 3, 1.0f);
+ func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
+ player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
+ }
+ } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
func_8005D7D8(&player->unk_258[10 + arg1], 3, 1.0f);
func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
}
- } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 3, 1.0f);
- func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
- player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
- }
- player->unk_258[10 + arg1].unk_000[1] -= 1.5;
- break;
- case 7:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
+ player->unk_258[10 + arg1].unk_000[1] -= 1.5;
+ break;
+ case SAND_OFFROAD:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ }
+ } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 3:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
+ break;
+ case SAND:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ }
+ } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 10:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
+ break;
+ case WET_SAND:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ }
+ } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 13:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
+ break;
+ case DIRT_OFFROAD:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ }
+ } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
+ func_8005D82C(&player->unk_258[10 + arg1], 0x00FFA54F, 0x00AF);
func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
- func_8005D82C(&player->unk_258[10 + arg1], 0x00FFA54F, 0x00AF);
- func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 5:
- case 11:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
+ break;
+ case SNOW:
+ case SNOW_OFFROAD:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ if (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ }
+ } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- } else if ((player->unk_258[10 + arg2].unk_01E > 0) && (((player->unk_094 / 18.0f) * 216.0f) >= 10.0f)) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 1:
- case 4:
- case 6:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- if ((((player->unk_094 / 18.0f) * 216.0f) >= 30.0f) && ((((player->unk_0C0 / 182) > 0x14) || ((player->unk_0C0 / 182) < (-0x14)))) || ((player->unk_22C - player->unk_094) >= 0.04)) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
+ break;
+ case ASPHALT:
+ case STONE:
+ case BRIDGE:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ if ((((player->unk_094 / 18.0f) * 216.0f) >= 30.0f) && ((((player->unk_0C0 / 182) > 0x14) || ((player->unk_0C0 / 182) < (-0x14)))) || ((player->unk_22C - player->unk_094) >= 0.04)) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ }
+ } else if ((player->unk_258[10 + arg2].unk_01E > 0) && ((((player->unk_094 / 18.0f) * 216.0f) >= 30.0f) && (((player->unk_0C0 / 182) >= 0x15) || ((player->unk_0C0 / 182) < -0x14)) || ((player->unk_22C - player->unk_094) >= 0.04))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) surfaceType, (s8) var_t3);
func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- } else if ((player->unk_258[10 + arg2].unk_01E > 0) && ((((player->unk_094 / 18.0f) * 216.0f) >= 30.0f) && (((player->unk_0C0 / 182) >= 0x15) || ((player->unk_0C0 / 182) < -0x14)) || ((player->unk_22C - player->unk_094) >= 0.04))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f2, var_f12, var_f14, (s8) var_t1, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 2, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- default:
- break;
+ break;
+ default:
+ break;
}
}
@@ -3136,178 +3136,178 @@ void func_8005EA94(Player *player, s16 arg1, s32 arg2, s8 arg3) {
void func_8005ED48(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) {
s32 temp_v0;
- s32 var_t2;
+ s32 surfaceType;
s32 var_t3;
f32 var_f0;
f32 var_f2;
f32 var_f12;
static s32 test = 8;
- var_t2 = 0x000000FF;
+ surfaceType = 0x000000FF;
temp_v0 = random_int(test);
if ((temp_v0 == 2) || (temp_v0 == 4)) {
var_f0 = player->boundingBoxCorners[2].cornerPos[0];
var_f2 = player->boundingBoxCorners[2].cornerGroundY + 2.0f;
var_f12 = player->boundingBoxCorners[2].cornerPos[2];
var_t3 = 1;
- var_t2 = player->boundingBoxCorners[2].surfaceType;
+ surfaceType = player->boundingBoxCorners[2].surfaceType;
}
if ((temp_v0 == 0) || (temp_v0 == 6)) {
var_f0 = player->boundingBoxCorners[3].cornerPos[0];
var_f2 = player->boundingBoxCorners[3].cornerGroundY + 2.0f;
var_f12 = player->boundingBoxCorners[3].cornerPos[2];
var_t3 = 0;
- var_t2 = player->boundingBoxCorners[3].surfaceType;
+ surfaceType = player->boundingBoxCorners[3].surfaceType;
}
- switch (var_t2) {
- case 2:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_t2, var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
- func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
- }
- if (gCurrentCourseId == COURSE_KALAMARI_DESERT) {
- func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
- }
- if (gCurrentCourseId == COURSE_MOO_MOO_FARM) {
- func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
- }
- if (gCurrentCourseId == COURSE_WARIO_STADIUM) {
- func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
- }
- if (gCurrentCourseId == COURSE_YOSHI_VALLEY) {
- func_8005DAD8(&player->unk_258[10 + arg1], 10, 0, 0x0080);
+ switch (surfaceType) {
+ case DIRT:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_KALAMARI_DESERT) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_MOO_MOO_FARM) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_WARIO_STADIUM) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_YOSHI_VALLEY) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 10, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_DK_JUNGLE) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 11, 0, 0x0080);
+ }
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_KALAMARI_DESERT) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_MOO_MOO_FARM) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_WARIO_STADIUM) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_YOSHI_VALLEY) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 0x000A, 0, 0x0080);
+ }
+ if (gCurrentCourseId == COURSE_DK_JUNGLE) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 0x000B, 0, 0x0080);
+ }
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == COURSE_DK_JUNGLE) {
- func_8005DAD8(&player->unk_258[10 + arg1], 11, 0, 0x0080);
+ break;
+ case GRASS:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.1f);
+ func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
+ player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.1f);
+ func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
+ player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
}
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_t2, var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
- func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
+ player->unk_258[10 + arg1].unk_000[1] -= 1.5;
+ break;
+ case SAND_OFFROAD:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == COURSE_KALAMARI_DESERT) {
- func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
+ break;
+ case SAND:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == COURSE_MOO_MOO_FARM) {
- func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
+ break;
+ case WET_SAND:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == COURSE_WARIO_STADIUM) {
- func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
+ break;
+ case DIRT_OFFROAD:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == COURSE_YOSHI_VALLEY) {
- func_8005DAD8(&player->unk_258[10 + arg1], 0x000A, 0, 0x0080);
+ break;
+ case SNOW:
+ case SNOW_OFFROAD:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == COURSE_DK_JUNGLE) {
- func_8005DAD8(&player->unk_258[10 + arg1], 0x000B, 0, 0x0080);
+ break;
+ case ASPHALT:
+ case STONE:
+ case BRIDGE:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) surfaceType, (s8) var_t3);
+ func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 8:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.1f);
- func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
- player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.1f);
- func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
- player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
- }
- player->unk_258[10 + arg1].unk_000[1] -= 1.5;
- break;
- case 7:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 3:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 10:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 13:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 5:
- case 11:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 1:
- case 4:
- case 6:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, (s8) var_t2, (s8) var_t3);
- func_8005D7D8(&player->unk_258[10 + arg1], 5, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- default:
- break;
+ break;
+ default:
+ break;
}
}
@@ -3318,7 +3318,7 @@ void func_8005ED48(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) {
void func_8005F90C(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) {
s32 var_t1;
- u8 var_v0;
+ u8 surfaceType;
f32 var_f0;
f32 var_f2;
f32 var_f12;
@@ -3329,162 +3329,162 @@ void func_8005F90C(Player *player, s16 arg1, s32 arg2, UNUSED s32 arg3) {
var_f2 = player->pos[1] - player->boundingBoxSize;
var_f12 = player->pos[2];
var_t1 = 1;
- var_v0 = player->boundingBoxCorners[2].surfaceType;
+ surfaceType = player->boundingBoxCorners[2].surfaceType;
} else {
var_f0 = player->pos[0];
var_f2 = player->pos[1] - player->boundingBoxSize;
var_f12 = player->pos[2];
- var_v0 = player->boundingBoxCorners[3].surfaceType;
- }
- switch (var_v0) {
- case 2:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- if ((gCurrentCourseId == 1) || (gCurrentCourseId == 7)) {
- func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
- }
- if (gCurrentCourseId == 0x000B) {
- func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
- }
- if (gCurrentCourseId == 9) {
- func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
- }
- if (gCurrentCourseId == 0x000E) {
- func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
- }
- if (gCurrentCourseId == 4) {
- func_8005DAD8(&player->unk_258[10 + arg1], 0x000A, 0, 0x0080);
+ surfaceType = player->boundingBoxCorners[3].surfaceType;
+ }
+ switch (surfaceType) {
+ case DIRT:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ if ((gCurrentCourseId == 1) || (gCurrentCourseId == 7)) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 0x000B) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 9) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 0x000E) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 4) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 0x000A, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 0x0012) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 0x000B, 0, 0x0080);
+ }
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ if ((gCurrentCourseId == 1) || (gCurrentCourseId == 7)) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 0x000B) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 9) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 0x000E) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 4) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 0x000A, 0, 0x0080);
+ }
+ if (gCurrentCourseId == 0x0012) {
+ func_8005DAD8(&player->unk_258[10 + arg1], 0x000B, 0, 0x0080);
+ }
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == 0x0012) {
- func_8005DAD8(&player->unk_258[10 + arg1], 0x000B, 0, 0x0080);
+ break;
+ case GRASS:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.1f);
+ func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
+ player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.1f);
+ func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
+ player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
+ player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
}
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- if ((gCurrentCourseId == 1) || (gCurrentCourseId == 7)) {
- func_8005DAD8(&player->unk_258[10 + arg1], 1, 0, 0x0080);
+ player->unk_258[10 + arg1].unk_000[1] -= 1.5;
+ break;
+ case SAND_OFFROAD:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == 0x000B) {
- func_8005DAD8(&player->unk_258[10 + arg1], 7, 0, 0x0080);
+ break;
+ case SAND:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == 9) {
- func_8005DAD8(&player->unk_258[10 + arg1], 8, 0, 0x0080);
+ break;
+ case WET_SAND:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == 0x000E) {
- func_8005DAD8(&player->unk_258[10 + arg1], 9, 0, 0x0080);
+ break;
+ case DIRT_OFFROAD:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == 4) {
- func_8005DAD8(&player->unk_258[10 + arg1], 0x000A, 0, 0x0080);
+ break;
+ case SNOW:
+ case SNOW_OFFROAD:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- if (gCurrentCourseId == 0x0012) {
- func_8005DAD8(&player->unk_258[10 + arg1], 0x000B, 0, 0x0080);
+ break;
+ case ASPHALT:
+ case STONE:
+ case BRIDGE:
+ if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
+ } else if (player->unk_258[10 + arg2].unk_01E > 0) {
+ func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, surfaceType, var_t1);
+ func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
+ func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
+ player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
}
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 8:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.1f);
- func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
- player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.1f);
- func_8005D800(&player->unk_258[10 + arg1], 0x00FFFFFF, 0x00FF);
- player->unk_258[10 + arg1].unk_038 -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03A -= arg1 * 8;
- player->unk_258[10 + arg1].unk_03C -= arg1 * 8;
- }
- player->unk_258[10 + arg1].unk_000[1] -= 1.5;
- break;
- case 7:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 2, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 3:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 3, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 10:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 4, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 13:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 5, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 5:
- case 11:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 6, 1, 0x00A8);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- case 1:
- case 4:
- case 6:
- if ((arg1 == 0) && ((player->unk_258[10 + arg2].unk_01E > 0) || (player->unk_258[10 + arg2].unk_01C == 0))) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- } else if (player->unk_258[10 + arg2].unk_01E > 0) {
- func_8005D794(player, &player->unk_258[10 + arg1], var_f0, var_f2, var_f12, var_v0, var_t1);
- func_8005D7D8(&player->unk_258[10 + arg1], 4, 0.46f);
- func_8005DAD8(&player->unk_258[10 + arg1], 0, 0, 0x0080);
- player->unk_258[10 + arg1].unk_03A = random_int(0x0010U);
- }
- break;
- default:
- break;
+ break;
+ default:
+ break;
}
}
#else
@@ -3527,7 +3527,7 @@ void func_80060504(Player *player, s16 arg1, s32 arg2, s32 arg3) {
player->unk_258[arg1].unk_024 = 0.0f;
if ((player->unk_044 & 0x20) == 0x20) {
player->unk_258[arg1].unk_040 = 0;
- if ((player->effects & 0x2000) == 0x2000) {
+ if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
func_8005D800(&player->unk_258[arg1], 0x00FFFF00, 0x0080);
player->unk_258[arg1].unk_038 = 1;
} else {
@@ -3536,7 +3536,7 @@ void func_80060504(Player *player, s16 arg1, s32 arg2, s32 arg3) {
}
} else {
player->unk_258[arg1].unk_040 = 1;
- if ((player->effects & 0x2000) == 0x2000) {
+ if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
func_8005D800(&player->unk_258[arg1], 0x00FFFF00, 0x0080);
player->unk_258[arg1].unk_038 = 1;
} else {
@@ -3760,7 +3760,7 @@ void func_80061754(Player *player, s16 arg1, UNUSED s32 arg2, UNUSED s32 arg3, U
sp48 = random_int(2U);
func_8005D794(player, &player->unk_258[0x1E + arg1], 0.0f, 0.0f, 0.0f, (s8) 0, (s8) 0);
func_8005D7D8(&player->unk_258[0x1E + arg1], 6, 1.0f);
- if ((player->effects & 0x02000000) || ((player->effects) & 0x01000000) || ((player->effects) & 0x400) || ((player->effects) & 0x80000000)) {
+ if ((player->effects & HIT_BY_ITEM_EFFECT) || ((player->effects) & 0x01000000) || ((player->effects) & 0x400) || ((player->effects) & BOO_EFFECT)) {
func_8005D800(&player->unk_258[0x1E + arg1], 0x00FFFFFF, 0x00A0);
player->unk_258[0x1E + arg1].unk_038 -= temp_s1;
player->unk_258[0x1E + arg1].unk_03A -= temp_s1;
@@ -3962,90 +3962,90 @@ void func_80062484(Player* player, UnkPlayerStruct258* arg1, s32 arg2) {
void func_800624D8(Player *player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 arg3) {
s32 var_s1;
- switch (player->unk_0F8) {
- case 2:
- for (var_s1 = 0; var_s1 < 10; var_s1++) {
- if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 1, 0, 0x00A8);
+ switch (player->surfaceType) {
+ case DIRT:
+ for (var_s1 = 0; var_s1 < 10; var_s1++) {
+ if ((gCurrentCourseId == COURSE_CHOCO_MOUNTAIN) || (gCurrentCourseId == COURSE_ROYAL_RACEWAY)) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 1, 0, 0x00A8);
+ }
+ if (gCurrentCourseId == COURSE_KALAMARI_DESERT) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 7, 0, 0x00A8);
+ }
+ if (gCurrentCourseId == COURSE_MOO_MOO_FARM) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 8, 0, 0x00A8);
+ }
+ if (gCurrentCourseId == COURSE_WARIO_STADIUM) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 9, 0, 0x00A8);
+ }
+ if (gCurrentCourseId == COURSE_YOSHI_VALLEY) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 0x000A, 0, 0x00A8);
+ }
+ if (gCurrentCourseId == COURSE_DK_JUNGLE) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 0x000B, 0, 0x00A8);
+ }
+ func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
}
- if (gCurrentCourseId == COURSE_KALAMARI_DESERT) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 7, 0, 0x00A8);
+ player->unk_044 &= ~0x0100;
+ break;
+ case GRASS:
+ for (var_s1 = 0; var_s1 < 10; var_s1++) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 2, 1, 0x00A8);
+ func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
}
- if (gCurrentCourseId == COURSE_MOO_MOO_FARM) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 8, 0, 0x00A8);
+ player->unk_044 &= ~0x0100;
+ break;
+ case SAND_OFFROAD:
+ for (var_s1 = 0; var_s1 < 10; var_s1++) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 2, 1, 0x00A8);
+ func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
}
- if (gCurrentCourseId == COURSE_WARIO_STADIUM) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 9, 0, 0x00A8);
+ player->unk_044 &= ~0x0100;
+ break;
+ case SAND:
+ for (var_s1 = 0; var_s1 < 10; var_s1++) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 3, 1, 0x00A8);
+ func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
}
- if (gCurrentCourseId == COURSE_YOSHI_VALLEY) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 0x000A, 0, 0x00A8);
+ player->unk_044 &= ~0x0100;
+ break;
+ case WET_SAND:
+ for (var_s1 = 0; var_s1 < 10; var_s1++) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 4, 1, 0x00A8);
+ func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
}
- if (gCurrentCourseId == COURSE_DK_JUNGLE) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 0x000B, 0, 0x00A8);
+ player->unk_044 &= ~0x0100;
+ break;
+ case DIRT_OFFROAD:
+ for (var_s1 = 0; var_s1 < 10; var_s1++) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 5, 1, 0x00A8);
+ func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
}
- func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
- }
- player->unk_044 &= ~0x0100;
- break;
- case 8:
- for (var_s1 = 0; var_s1 < 10; var_s1++) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 2, 1, 0x00A8);
- func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
- }
- player->unk_044 &= ~0x0100;
- break;
- case 7:
- for (var_s1 = 0; var_s1 < 10; var_s1++) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 2, 1, 0x00A8);
- func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
- }
- player->unk_044 &= ~0x0100;
- break;
- case 3:
- for (var_s1 = 0; var_s1 < 10; var_s1++) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 3, 1, 0x00A8);
- func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
- }
- player->unk_044 &= ~0x0100;
- break;
- case 10:
- for (var_s1 = 0; var_s1 < 10; var_s1++) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 4, 1, 0x00A8);
- func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
- }
- player->unk_044 &= ~0x0100;
- break;
- case 13:
- for (var_s1 = 0; var_s1 < 10; var_s1++) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 5, 1, 0x00A8);
- func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
- }
- player->unk_044 &= ~0x0100;
- break;
- case 5:
- case 11:
- for (var_s1 = 0; var_s1 < 10; var_s1++) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 6, 1, 0x00A8);
- func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
- }
- player->unk_044 &= ~0x0100;
- break;
- case 1:
- case 4:
- case 6:
- for (var_s1 = 0; var_s1 < 10; var_s1++) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 0, 0, 0x00A8);
- func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
- }
- player->unk_044 &= ~0x0100;
- break;
- default:
- for (var_s1 = 0; var_s1 < 10; var_s1++) {
- func_8005DAD8(&player->unk_258[0x1E + var_s1], 0, 0, 0x00A8);
- func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
- }
- player->unk_044 &= ~0x0100;
- break;
+ player->unk_044 &= ~0x0100;
+ break;
+ case SNOW:
+ case SNOW_OFFROAD:
+ for (var_s1 = 0; var_s1 < 10; var_s1++) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 6, 1, 0x00A8);
+ func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
+ }
+ player->unk_044 &= ~0x0100;
+ break;
+ case ASPHALT:
+ case STONE:
+ case BRIDGE:
+ for (var_s1 = 0; var_s1 < 10; var_s1++) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 0, 0, 0x00A8);
+ func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
+ }
+ player->unk_044 &= ~0x0100;
+ break;
+ default:
+ for (var_s1 = 0; var_s1 < 10; var_s1++) {
+ func_8005DAD8(&player->unk_258[0x1E + var_s1], 0, 0, 0x00A8);
+ func_80062484(player, &player->unk_258[0x1E + var_s1], var_s1);
+ }
+ player->unk_044 &= ~0x0100;
+ break;
}
}
@@ -4178,7 +4178,7 @@ void func_80062C74(Player *player, s16 arg1, UNUSED s32 arg2, s32 arg3) {
} else {
var_f6 = -((player->unk_098 / 6000.0f) + 0.1);
}
- if (((player->effects & 0x2000) == 0x2000) && (player->unk_258[arg1].unk_01E >= 6)) {
+ if (((player->effects & BOOST_EFFECT) == BOOST_EFFECT) && (player->unk_258[arg1].unk_01E >= 6)) {
player->unk_258[arg1].unk_00C = player->unk_258[arg1].unk_00C + 0.06;
}
player->unk_258[arg1].unk_010++;
@@ -4622,9 +4622,9 @@ void func_800649F4(Player* player, s16 arg1, UNUSED s8 arg2, UNUSED s8 arg3) {
f32 temp;
temp = player->unk_258[30 + arg1].unk_018;
- player->unk_258[30 + arg1].unk_000[2] = player->unk_21C + (((-temp) * player->unk_258[30 + arg1].unk_01E) * coss(player->unk_258[30 + arg1].unk_020));
- player->unk_258[30 + arg1].unk_000[0] = player->unk_218 + (((-temp) * player->unk_258[30 + arg1].unk_01E) * sins(player->unk_258[30 + arg1].unk_020));
- player->unk_258[30 + arg1].unk_000[1] = player->pos[1] + player->unk_258[30 + arg1].unk_014;
+ player->unk_258[30 + arg1].unk_000[2] = player->unk_21C + (((-temp) * player->unk_258[30 + arg1].unk_01E) * coss(player->unk_258[30 + arg1].unk_020));
+ player->unk_258[30 + arg1].unk_000[0] = player->unk_218 + (((-temp) * player->unk_258[30 + arg1].unk_01E) * sins(player->unk_258[30 + arg1].unk_020));
+ player->unk_258[30 + arg1].unk_000[1] = player->pos[1] + player->unk_258[30 + arg1].unk_014;
player->unk_258[30 + arg1].unk_00C += 0.04;
++player->unk_258[30 + arg1].unk_01E;
@@ -4830,7 +4830,7 @@ void func_8006538C(Player *player, s8 arg1, s16 arg2, s8 arg3) {
spAC[0] = 0;
spAC[1] = player->unk_048[arg3];
spAC[2] = 0;
- if ((player->effects & 0x200) && (((s32) gCourseTimer - D_8018D930[arg1]) < 9)) {
+ if ((player->effects & STAR_EFFECT) && (((s32) gCourseTimer - D_8018D930[arg1]) < 9)) {
primRed = (primColors[1] >> 0x10) & 0xFF;
primGreen = (primColors[1] >> 0x08) & 0xFF;
primBlue = (primColors[1] >> 0x00) & 0xFF;
@@ -6113,7 +6113,7 @@ void func_8006C9B8(Player *player, s16 arg1, s8 arg2, s8 arg3) {
player->unk_044 &= ~0x0100;
return;
}
- if (((((player->unk_0CA & 0x1000) == 0x1000) || ((player->unk_0E0 < 2) && (player->effects & 0x01000000))) || ((player->unk_0E0 < 2) && (player->effects & 0x02000000))) || (player->effects & 0x400)) {
+ if (((((player->unk_0CA & 0x1000) == 0x1000) || ((player->unk_0E0 < 2) && (player->effects & 0x01000000))) || ((player->unk_0E0 < 2) && (player->effects & HIT_BY_ITEM_EFFECT))) || (player->effects & 0x400)) {
func_8006199C(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100;
@@ -6125,7 +6125,7 @@ void func_8006C9B8(Player *player, s16 arg1, s8 arg2, s8 arg3) {
player->unk_044 &= ~0x0100;
return;
}
- if ((player->effects & 0x200) && ((((s32) gCourseTimer) - D_8018D930[arg2]) < 9)) {
+ if ((player->effects & STAR_EFFECT) && ((((s32) gCourseTimer) - D_8018D930[arg2]) < 9)) {
func_800615AC(player, arg1, sp28, arg2);
player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100;
@@ -6142,11 +6142,11 @@ void func_8006C9B8(Player *player, s16 arg1, s8 arg2, s8 arg3) {
player->unk_044 &= ~0x0100;
return;
}
- if ((player->effects & 0x2000) && (player->type & PLAYER_HUMAN)) {
+ if ((player->effects & BOOST_EFFECT) && (player->type & PLAYER_HUMAN)) {
func_800621BC(player, arg1, sp28, arg2);
return;
}
- if (((player->effects & 0x200000) || (player->effects & 0x100000)) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
+ if (((player->effects & 0x200000) || (player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
func_80061EF4(player, arg1, sp28, arg2);
player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100;
@@ -6609,7 +6609,7 @@ void func_8006E420(Player* player, s8 arg1, s8 arg2) {
void func_8006E5AC(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
func_8006D474(player, arg1, arg2);
}
@@ -6622,7 +6622,7 @@ void func_8006E5AC(Player* player, s8 arg1, s8 arg2) {
void func_8006E634(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
func_8006D474(player, arg1, arg2);
}
@@ -6635,7 +6635,7 @@ void func_8006E634(Player* player, s8 arg1, s8 arg2) {
void func_8006E6BC(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
func_8006D474(player, arg1, arg2);
}
@@ -6648,7 +6648,7 @@ void func_8006E6BC(Player* player, s8 arg1, s8 arg2) {
void func_8006E744(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
func_8006D474(player, arg1, arg2);
}
@@ -6661,7 +6661,7 @@ void func_8006E744(Player* player, s8 arg1, s8 arg2) {
void func_8006E7CC(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
func_8006DD3C(player, arg1, arg2);
}
@@ -6673,7 +6673,7 @@ void func_8006E7CC(Player* player, s8 arg1, s8 arg2) {
void func_8006E848(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
func_8006DD3C(player, arg1, arg2);
}
@@ -6685,7 +6685,7 @@ void func_8006E848(Player* player, s8 arg1, s8 arg2) {
void func_8006E8C4(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
func_8006DD3C(player, arg1, arg2);
}
@@ -6697,7 +6697,7 @@ void func_8006E8C4(Player* player, s8 arg1, s8 arg2) {
void func_8006E940(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
func_8006DD3C(player, arg1, arg2);
}
diff --git a/src/code_80071F00.c b/src/code_80071F00.c
index db63503df..47b8e64b5 100644
--- a/src/code_80071F00.c
+++ b/src/code_80071F00.c
@@ -23,7 +23,7 @@
#include <actors.h>
#include "race_logic.h"
#include "collision.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
#include "code_80091440.h"
#include "code_80091750.h"
#include "podium_ceremony_actors.h"
@@ -3125,7 +3125,7 @@ void func_80079860(s32 playerId) {
(
((func_802ABDF4(player->unk_110.unk3A) != 0) && (player->unk_110.unk3C[2] <= 3.0f)) ||
(player->unk_0CA & 1) ||
- ((player->unk_0F8 == 0x00FD) && !(player->effects & 8))
+ ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & 8))
)
) {
func_80090778(player);
@@ -3268,7 +3268,7 @@ void update_obj_laikitu_fishing2(s32 objectIndex, s32 playerId) {
func_80073654(objectIndex);
break;
case 3:
- if ((temp_s1->unk_0F8 == 9) && !(temp_s1->unk_0CA & 1) && ((f64) temp_s1->unk_110.unk3C[2] <= 30.0)) {
+ if ((temp_s1->surfaceType == ICE) && !(temp_s1->unk_0CA & 1) && ((f64) temp_s1->unk_110.unk3C[2] <= 30.0)) {
func_800722A4(objectIndex, 8);
}
if (!(temp_s1->unk_0CA & 2)) {
@@ -5936,7 +5936,7 @@ void func_80080B28(s32 objectIndex, s32 playerId) {
temp_s0 = &gPlayerOne[playerId];
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
- if (!(temp_s0->statusEffects & 0x100)) {
+ if (!(temp_s0->soundEffects & 0x100)) {
temp_f0 = func_80088F54(objectIndex, temp_s0);
if ((temp_f0 <= 9.0) && !(temp_s0->effects & 0x04000000) && (has_collided_horizontally_with_player(objectIndex, temp_s0) != 0)) {
if ((temp_s0->type & 0x8000) && !(temp_s0->type & 0x100)) {
@@ -5964,7 +5964,7 @@ void func_80080B28(s32 objectIndex, s32 playerId) {
func_800722A4(objectIndex, 2);
temp_s0->unk_040 = (s16) objectIndex;
temp_s0->unk_046 |= 2;
- temp_s0->statusEffects |= 0x100;
+ temp_s0->soundEffects |= 0x100;
func_80088FF0(temp_s0);
}
}
@@ -5981,7 +5981,7 @@ void func_80080DE4(s32 arg0) {
player = gPlayerOne;
for (var_v1 = 0; var_v1 < NUM_PLAYERS; var_v1++, player++) {
if (arg0 == player->unk_040) {
- player->statusEffects &= ~0x100;
+ player->soundEffects &= ~0x100;
player->unk_040 = -1;
}
}
@@ -6113,7 +6113,7 @@ void func_80081210(void) {
player->unk_046 &= ~0x0006;
for (var_s2_3 = 0; var_s2_3 < gNumActiveThwomps; var_s2_3++) {
objectIndex = indexObjectList1[var_s2_3];
- if (!(player->effects & 0x80000000)) {
+ if (!(player->effects & BOO_EFFECT)) {
func_80080B28(objectIndex, var_s4);
}
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00020000) != 0) {
@@ -6343,7 +6343,7 @@ void func_80081D34(s32 objectIndex) {
if (var_s1->effects & 0x200) {
func_800C9060(var_s2, 0x1900A046U);
} else {
- var_s1->statusEffects |= 2;
+ var_s1->soundEffects |= 2;
}
temp_s0->direction_angle[1] = var_s4->rot[1];
temp_s0->velocity[1] = (var_s1->unk_094 / 2) + 3.0;
diff --git a/src/code_80086E70.c b/src/code_80086E70.c
index 5cfb55fc4..38a583b84 100644
--- a/src/code_80086E70.c
+++ b/src/code_80086E70.c
@@ -1081,7 +1081,7 @@ void func_800896D4(s32 objectIndex, f32 arg1, f32 arg2) {
player = gPlayerOne;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
- if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x80000200) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
+ if ((gObjectList[objectIndex].state != 0) && !(player->effects & (STAR_EFFECT | BOO_EFFECT)) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
func_8008933C(player, objectIndex, arg1, arg2 * 1.1);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
func_80072180();
@@ -1099,9 +1099,9 @@ void func_80089820(s32 objectIndex, f32 arg1, f32 arg2, u32 arg3) {
set_object_flag_unk_054_false(objectIndex, 0x02000000);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
- if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x80000000)) {
+ if ((gObjectList[objectIndex].state != 0) && !(player->effects & BOO_EFFECT)) {
if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
- if (player->effects & 0x200) {
+ if (player->effects & STAR_EFFECT) {
set_object_flag_unk_054_true(objectIndex, 0x02000000);
} else {
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
@@ -1124,7 +1124,7 @@ void func_80089A04(s32 objectIndex, f32 arg1, f32 arg2) {
player = gPlayerOne;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
- if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x80000200) && (has_collided_with_player(objectIndex, player) != 0)) {
+ if ((gObjectList[objectIndex].state != 0) && !(player->effects & (BOO_EFFECT | STAR_EFFECT)) && (has_collided_with_player(objectIndex, player) != 0)) {
func_8008933C(player, objectIndex, arg1, arg2 * 1.1);
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
func_80072180();
@@ -1146,8 +1146,8 @@ s32 func_80089B50(s32 objectIndex) {
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++, test++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x81000000) && (player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
- if (!(player->effects & 0x200)) {
- player->statusEffects |= REVERSE_EFFECT;
+ if (!(player->effects & STAR_EFFECT)) {
+ player->soundEffects |= REVERSE_SOUND_EFFECT;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
@@ -1172,8 +1172,8 @@ s32 func_80089CBC(s32 objectIndex, f32 arg1) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x81000000)) {
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 & 0x200)) {
- player->statusEffects |= REVERSE_EFFECT;
+ if (!(player->effects & STAR_EFFECT)) {
+ player->soundEffects |= REVERSE_SOUND_EFFECT;
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
@@ -1196,10 +1196,10 @@ s32 func_80089E18(s32 objectIndex) {
if (is_obj_index_flag_unk_054_active(objectIndex, 0x00000200) != 0) {
for (var_s1 = 0; var_s1 < D_8018D158; var_s1++, player++) {
if ((gObjectList[objectIndex].state != 0) && !(player->effects & 0x800000C0) && (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
- if (player->effects & 0x200) {
+ if (player->effects & STAR_EFFECT) {
var_s6 = 1;
} else {
- player->statusEffects |= 1;
+ player->soundEffects |= 1;
}
}
}
@@ -1222,7 +1222,7 @@ s32 func_80089F24(s32 objectIndex) {
if (is_obj_index_flag_unk_054_active(objectIndex, 0x04000000) != 0) {
func_80072180();
}
- player->statusEffects |= 0x200000;
+ player->soundEffects |= 0x200000;
}
}
}
diff --git a/src/code_8008C1D0.c b/src/code_8008C1D0.c
index 96bc7638f..6cacdfe20 100644
--- a/src/code_8008C1D0.c
+++ b/src/code_8008C1D0.c
@@ -13,7 +13,7 @@
#include "player_controller.h"
#include "hud_renderer.h"
#include "code_80057C60.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
#include "audio/external.h"
#include "spawn_players.h"
@@ -171,7 +171,7 @@ UNUSED void func_unnamed33(void) {
void func_8008C310(Player *player) {
- if ((player->statusEffects & 2) || (player->statusEffects & 4) || ((player->statusEffects << 9) < 0) || (player->statusEffects & HIT_BY_ITEM_EFFECT)) {
+ if ((player->soundEffects & 2) || (player->soundEffects & 4) || ((player->soundEffects << 9) < 0) || (player->soundEffects & HIT_BY_ITEM_SOUND_EFFECT)) {
player->unk_0B6 = ((u16)player->unk_0B6 | 0x1000);
}
}
@@ -180,7 +180,7 @@ UNUSED void func_unnamed34(void) {
}
-void func_8008C354(Player *player, s8 arg1) {
+void clean_effect(Player *player, s8 arg1) {
if ((player->effects & 0x400) == 0x400) {
func_8008C6D0(player, arg1);
@@ -195,8 +195,8 @@ void func_8008C354(Player *player, s8 arg1) {
if ((player->unk_044 & 0x4000) != 0) {
func_8008D3B0(player, arg1);
}
- if ((player->effects & 0x2000) == 0x2000) {
- func_8008D554(player);
+ if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
+ remove_boost_effect(player);
}
if ((player->effects & 0x80000) == 0x80000) {
func_8008D760(player);
@@ -207,14 +207,14 @@ void func_8008C354(Player *player, s8 arg1) {
if ((player->effects & 0x1000000) == 0x1000000) {
func_8008E884(player, arg1);
}
- if ((player->effects & 0x2000000) == 0x2000000) {
- func_8008EC34(player, arg1);
+ if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) {
+ remove_hit_by_item_effect(player, arg1);
}
- if ((player->effects & 0x100000) == 0x100000) {
- func_8008EEC4(player);
+ if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) {
+ remove_boost_ramp_asphalt_effect(player);
}
- if ((player->effects & 4) == 4) {
- func_8008F0E8(player);
+ if ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT) {
+ remove_boost_ramp_wood_effect(player);
}
if ((player->effects & 0x4000) == 0x4000) {
func_8008F3E0(player);
@@ -232,7 +232,7 @@ void func_8008C354(Player *player, s8 arg1) {
void func_8008C528(Player *player, s8 arg1) {
UNUSED s32 sp24;
s32 temp_v1;
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
func_8008C310(player);
temp_v1 = player->characterId;
player->unk_0C2 = 0;
@@ -252,7 +252,7 @@ void func_8008C528(Player *player, s8 arg1) {
} else {
func_800098FC(arg1, player);
}
- player->statusEffects = (s32) (player->statusEffects & ~4);
+ player->soundEffects = (s32) (player->soundEffects & ~4);
}
void func_8008C62C(Player *player, s8 arg1) {
@@ -292,7 +292,7 @@ void func_8008C6D0(Player *player, s8 arg1) {
}
void func_8008C73C(Player *player, s8 arg1) {
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40)) {
player->effects &= ~0x10;
@@ -343,7 +343,7 @@ void func_8008C8C4(Player* player, s8 playerId) {
player->currentSpeed = (f32) (player->currentSpeed + 100.0f);
}
if ((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) == PLAYER_CPU) && (!gDemoMode) && ((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) {
- player->statusEffects = (s32) (player->statusEffects | REVERSE_EFFECT);
+ player->soundEffects = (s32) (player->soundEffects | REVERSE_SOUND_EFFECT);
}
}
@@ -402,9 +402,9 @@ void func_8008C9EC(Player *player, s8 arg1) {
}
void func_8008CDC0(Player* player, s8 arg1) {
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
- player->statusEffects &= ~1;
+ player->soundEffects &= ~1;
player->unk_0B4 = 0;
player->unk_0B8 = 3.0f;
player->unk_0AC = 1;
@@ -474,9 +474,9 @@ void func_8008D0E4(Player* player, UNUSED s8 arg1) {
}
void func_8008D0FC(Player *player, s8 arg1) {
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
- player->statusEffects &= ~0x80;
+ player->soundEffects &= ~0x80;
player->unk_0B4 = 0;
player->unk_0B8 = 2.0f;
player->unk_0AC = 1;
@@ -539,12 +539,12 @@ void func_8008D3B0(Player* player, UNUSED s8 arg1) {
player->unk_044 &= 0xBFFF;
}
-void func_8008D3C4(Player* player, s8 arg1) {
+void apply_boost_sound_effect(Player* player, s8 arg1) {
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
- player->effects |= 0x2000;
- player->statusEffects &= ~BOOST_EFFECT;
+ player->effects |= BOOST_EFFECT;
+ player->soundEffects &= ~BOOST_SOUND_EFFECT;
player->unk_DB4.unk0 = 0;
player->unk_DB4.unk8 = 8.0f;
@@ -563,7 +563,7 @@ void func_8008D3C4(Player* player, s8 arg1) {
player->boostTimer = 0x50;
}
-void func_8008D4B4(Player* player) {
+void apply_boost_effect(Player* player) {
player->currentSpeed = (f32) player->topSpeed;
if ( player->boostTimer > 0) {
--player->boostTimer;
@@ -576,22 +576,22 @@ void func_8008D4B4(Player* player) {
}
if (player->boostPower <= 1.0f) {
- player->effects &= ~0x2000;
+ player->effects &= ~BOOST_EFFECT;
}
}
-void func_8008D554(Player* player) {
- player->effects &= ~0x2000;
+void remove_boost_effect(Player* player) {
+ player->effects &= ~BOOST_EFFECT;
player->boostPower = 0.0f;
}
void func_8008D570(Player *player, s8 arg1) {
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
player->unk_0AE = player->rotation[1];
player->effects |= 0x80000;
player->effects &= ~0x10;
- player->statusEffects &= ~0x1000;
+ player->soundEffects &= ~0x1000;
player->kartHopJerk = D_800E3730[player->characterId];
player->kartHopAcceleration = 0.0f;
player->kartHopVelocity = (f32) D_800E3710[player->characterId];
@@ -643,12 +643,12 @@ void func_8008D760(Player* player) {
}
void func_8008D7B0(Player* player, s8 arg1) {
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
player->unk_0AE = player->rotation[1];
player->effects |= 0x800000;
player->effects &= ~0x10;
- player->statusEffects &= 0xFFFDFFFF;
+ player->soundEffects &= ~0x20000;
player->kartHopJerk = D_800E3770[player->characterId];
player->kartHopAcceleration = 0.0f;
player->kartHopVelocity = D_800E3750[player->characterId];
@@ -717,7 +717,7 @@ void func_8008D9C0(Player* player) {
}
void func_8008DABC(Player *player, s8 arg1) {
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
if ((player->effects & 0x4000000) == 0) {
player->unk_DB4.unk2 = 0;
@@ -733,7 +733,7 @@ void func_8008DABC(Player *player, s8 arg1) {
player->unk_D9C = 0.0f;
player->unk_DA0 = 65.0f;
- if ((player->statusEffects & 0x100) != 0) {
+ if ((player->soundEffects & 0x100) != 0) {
player->unk_046 |= 0x80;
}
@@ -765,7 +765,7 @@ void func_8008DC08(Player* player, s8 arg1) {
}
if ((player->unk_046 & 0x80) != 0) {
- if ((player->statusEffects & 0x100) == 0) {
+ if ((player->soundEffects & 0x100) == 0) {
D_8018D990[arg1] = 1;
player->unk_238 = 0;
if ((player->type & PLAYER_HUMAN) != 0) {
@@ -854,10 +854,10 @@ void func_8008DC08(Player* player, s8 arg1) {
}
}
-void func_8008DF98(Player* player, s8 arg1) {
- func_8008C354(player, arg1);
+void apply_hit_rotating_sound_effect(Player* player, s8 arg1) {
+ clean_effect(player, arg1);
- player->statusEffects &= ~HIT_ROTATING_EFFECT;
+ player->soundEffects &= ~HIT_ROTATING_SOUND_EFFECT;
player->effects |= 0x40020000;
player->effects &= ~0x10;
player->unk_08C *= 0.6;
@@ -887,7 +887,7 @@ void func_8008DF98(Player* player, s8 arg1) {
}
}
-void func_8008E118(Player *player, s8 arg1) {
+void apply_lightning_effect(Player *player, s8 arg1) {
s16 test;
if (((player->effects & 0x8000) == 0x8000) && ((player->effects & 0x04000000) != 0x04000000)) {
player->effects &= ~0x20000;
@@ -895,7 +895,7 @@ void func_8008E118(Player *player, s8 arg1) {
player->unk_07C = 0;
player->unk_0C0 = 0;
player->rotation[1] = player->unk_0AE;
- func_8008E3C0(player, arg1);
+ remove_lightning_effect(player, arg1);
D_80165190[0][arg1] = 1;
D_80165190[1][arg1] = 1;
D_80165190[2][arg1] = 1;
@@ -930,7 +930,7 @@ void func_8008E118(Player *player, s8 arg1) {
move_f32_towards(&player->size, 0.7f, 0.1f);
move_f32_towards(&player->boundingBoxSize, (f32) ((f64) gKartBoundingBoxSizeTable[player->characterId] * 0.9), 0.1f);
} else {
- func_8008E3C0(player, arg1);
+ remove_lightning_effect(player, arg1);
if (player->type & PLAYER_HUMAN) {
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
}
@@ -938,7 +938,7 @@ void func_8008E118(Player *player, s8 arg1) {
}
}
-void func_8008E3C0(Player* player, UNUSED s8 arg1) {
+void remove_lightning_effect(Player* player, UNUSED s8 arg1) {
move_f32_towards(&player->size, 1.0f, 0.1f);
move_f32_towards(&player->boundingBoxSize, gKartBoundingBoxSizeTable[player->characterId], 0.1f);
@@ -1017,9 +1017,9 @@ void func_8008E4A4(Player* player, s8 arg1) {
}
}
-void func_8008E6C0(Player *player, s8 arg1)
+void apply_reverse_sound_effect(Player *player, s8 arg1)
{
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
func_8008C310(player);
player->unk_0A8 = 0;
@@ -1051,7 +1051,7 @@ void func_8008E6C0(Player *player, s8 arg1)
func_800098FC(arg1, player);
}
- player->statusEffects &= ~0x00480000;
+ player->soundEffects &= ~(REVERSE_SOUND_EFFECT | 0x80000);
player->unk_0B6 |= 0x40;
gTimerBoostTripleACombo[arg1] = 0;
gIsPlayerTripleAButtonCombo[arg1] = FALSE;
@@ -1070,7 +1070,7 @@ void func_8008E884(Player* player, s8 arg1) {
player->unk_042 = 0;
}
-void func_8008E8D8(Player *player, s8 arg1) {
+void apply_hit_by_item_effect(Player *player, s8 arg1) {
player->unk_206 = 0;
player->slopeAccel = 0;
player->unk_0C0 = 0;
@@ -1086,7 +1086,7 @@ void func_8008E8D8(Player *player, s8 arg1) {
}
if (player->unk_0E0 == 4) {
- player->effects &= ~0x02000000;
+ player->effects &= ~HIT_BY_ITEM_EFFECT;
player->unk_0A8 = 0;
player->unk_236 = 0;
D_80165190[3][arg1] = 1;
@@ -1108,7 +1108,7 @@ void func_8008E8D8(Player *player, s8 arg1) {
player->unk_0A8 = 0;
--player->unk_236;
if (player->unk_236 == 0) {
- player->effects &= ~0x02000000;
+ player->effects &= ~HIT_BY_ITEM_EFFECT;
player->unk_236 = 0;
D_80165190[0][arg1] = 1;
D_80165190[1][arg1] = 1;
@@ -1127,8 +1127,8 @@ void func_8008E8D8(Player *player, s8 arg1) {
}
}
-void func_8008EAE0(Player* player, s8 arg1) {
- func_8008C354(player, arg1);
+void apply_hit_by_item_sound_effect(Player* player, s8 arg1) {
+ clean_effect(player, arg1);
func_8008C310(player);
player->unk_0A8 = 0;
@@ -1149,9 +1149,9 @@ void func_8008EAE0(Player* player, s8 arg1) {
func_800098FC(arg1, player);
}
- player->effects |= 0x02000000;
+ player->effects |= HIT_BY_ITEM_EFFECT;
player->unk_0B6 |= 0x40;
- player->statusEffects &= ~0x01000002;
+ player->soundEffects &= ~0x01000002;
gTimerBoostTripleACombo[arg1] = 0;
gIsPlayerTripleAButtonCombo[arg1] = FALSE;
@@ -1159,8 +1159,8 @@ void func_8008EAE0(Player* player, s8 arg1) {
gFrameSinceLastACombo[arg1] = 0;
}
-void func_8008EC34(Player* player, s8 arg1) {
- player->effects &= ~0x02000000;
+void remove_hit_by_item_effect(Player* player, s8 arg1) {
+ player->effects &= ~HIT_BY_ITEM_EFFECT;
player->unk_0A8 = 0;
player->unk_236 = 0;
D_80165190[0][arg1] = 1;
@@ -1170,40 +1170,40 @@ void func_8008EC34(Player* player, s8 arg1) {
player->unk_042 = 0;
}
-void func_8008EC88(Player* player, s8 arg1) {
- func_8008C354(player, arg1);
+void apply_boost_ramp_asphalt_sound_effect(Player* player, s8 playerId) {
+ clean_effect(player, playerId);
- player->effects |= 0x100000;
- player->statusEffects &= ~0x00800000;
+ player->effects |= BOOST_RAMP_ASPHALT_EFFECT;
+ player->soundEffects &= ~BOOST_RAMP_ASPHALT_SOUND_EFFECT;
player->unk_DB4.unk0 = 0;
player->unk_DB4.unk8 = 8.0f;
if (D_8015F890 != 1) {
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0)) {
- func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008001);
- func_800C9060(arg1, 0x1900A40B);
+ func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
+ func_800C9060(playerId, 0x1900A40B);
}
} else if (player == gPlayerOne) {
- func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008001);
- func_800C9060(arg1, 0x1900A40B);
+ func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
+ func_800C9060(playerId, 0x1900A40B);
}
player->unk_044 &= ~0x1;
player->effects &= ~0x20;
}
-void func_8008EDC0(Player* player) {
+void apply_boost_ramp_asphalt_effect(Player* player) {
f64 temp_f0;
player->currentSpeed = player->topSpeed;
if ((u16) player->unk_256 > 0) {
player->currentSpeed = 0.0f;
}
- if ((player->unk_0F8 != 0xFE) && ((player->effects & 8) != 8)) {
+ if ((player->surfaceType != BOOST_RAMP_ASPHALT) && ((player->effects & 8) != 8)) {
move_f32_towards(&player->boostPower, 0, 1.0f);
} else {
move_f32_towards(&player->boostPower, 400.0f, 0.01f);
}
if (player->boostPower <= 1.0f) {
- player->effects &= ~0x00100000;
+ player->effects &= ~BOOST_RAMP_ASPHALT_EFFECT;
player->boostPower = 0.0f;
if (player->unk_0C2 >= 0x33) {
temp_f0 = 0.7;
@@ -1213,55 +1213,55 @@ void func_8008EDC0(Player* player) {
}
}
-void func_8008EEC4(Player* player) {
- player->effects &= ~0x00100000;
+void remove_boost_ramp_asphalt_effect(Player* player) {
+ player->effects &= ~BOOST_RAMP_ASPHALT_EFFECT;
player->boostPower = 0.0f;
}
-void func_8008EEE4(Player* player, s8 arg1) {
- func_8008C354(player, arg1);
+void apply_boost_ramp_wood_sound_effect(Player* player, s8 playerId) {
+ clean_effect(player, playerId);
- player->effects |= 0x4;
- player->statusEffects &= ~0x8000;
+ player->effects |= BOOST_RAMP_WOOD_EFFECT;
+ player->soundEffects &= ~BOOST_RAMP_WOOD_SOUND_EFFECT;
if (D_8015F890 != 1) {
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0)) {
- func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008001);
- func_800C9060(arg1, 0x1900A40B);
+ func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
+ func_800C9060(playerId, 0x1900A40B);
}
} else if (player == gPlayerOne) {
- func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008001);
- func_800C9060(arg1, 0x1900A40B);
+ func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
+ func_800C9060(playerId, 0x1900A40B);
}
player->unk_044 &= ~0x1;
player->effects &= ~0x20;
}
-void func_8008F008(Player* player) {
+void apply_boost_ramp_wood_effect(Player* player) {
player->currentSpeed = gTopSpeedTable[0][player->characterId];
- if ((player->unk_0F8 != 0xFC) && ((player->effects & 8) != 8)) {
+ if ((player->surfaceType != BOOST_RAMP_WOOD) && ((player->effects & 8) != 8)) {
move_f32_towards(&player->boostPower, 0, 1.0f);
} else {
move_f32_towards(&player->boostPower, 300.0f, 0.1f);
}
if (player->boostPower <= 1.0f) {
- player->effects &= ~0x4;
+ player->effects &= ~BOOST_RAMP_WOOD_EFFECT;
player->boostPower = 0.0f;
player->currentSpeed /= 2;
player->unk_08C /= 2;
}
}
-void func_8008F0E8(Player* player) {
- player->effects &= ~4;
+void remove_boost_ramp_wood_effect(Player* player) {
+ player->effects &= ~BOOST_RAMP_WOOD_EFFECT;
player->boostPower = 0.0f;
}
void func_8008F104(Player* player, s8 arg1) {
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
player->unk_0AE = player->rotation[1];
player->unk_0B2 = 2;
@@ -1350,12 +1350,12 @@ void func_8008F494(Player* player, s8 arg1) {
if ((((player->effects & 0x80) != 0) ||
((player->effects & 0x40) != 0) ||
((player->effects & 0x01000000)) ||
- ((player->effects & 0x02000000)) ||
+ ((player->effects & HIT_BY_ITEM_EFFECT)) ||
((player->effects & 0x400) != 0)) && (gModeSelection == BATTLE)) {
player->unk_044 |= 0x8000;
}
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
func_8008F86C(player, arg1);
player->unk_0A8 = 0;
@@ -1397,7 +1397,7 @@ void func_8008F5A4(Player* player, s8 arg1) {
player->unk_042 = 0;
}
-void func_8008F650(Player* player, s8 arg1) {
+void apply_star_effect(Player* player, s8 arg1) {
if (((s32) gCourseTimer - D_8018D930[arg1]) >= 9) {
D_8018D900[arg1] = 1;
@@ -1413,16 +1413,16 @@ void func_8008F650(Player* player, s8 arg1) {
}
if (((s32) gCourseTimer - D_8018D930[arg1]) >= 0xA) {
- player->effects &= ~0x200;
+ player->effects &= ~STAR_EFFECT;
}
}
// Star item
-void func_8008F778(Player* player, s8 arg1) {
- func_8008C354(player, arg1);
+void apply_star_sound_effect(Player* player, s8 arg1) {
+ clean_effect(player, arg1);
- player->effects |= 0x200;
- player->statusEffects &= ~STAR_EFFECT;
+ player->effects |= STAR_EFFECT;
+ player->soundEffects &= ~STAR_SOUND_EFFECT;
D_8018D930[arg1] = gCourseTimer;
D_8018D900[arg1] = 1;
@@ -1439,7 +1439,7 @@ void func_8008F778(Player* player, s8 arg1) {
}
void func_8008F86C(Player* player, s8 arg1) {
- player->effects &= ~0x200;
+ player->effects &= ~STAR_EFFECT;
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
func_800CA730(arg1);
return;
@@ -1447,7 +1447,7 @@ void func_8008F86C(Player* player, s8 arg1) {
func_800CAACC(arg1);
}
-void func_8008F8DC(Player* arg0, s8 arg1) {
+void apply_boo_effect(Player* arg0, s8 arg1) {
s32 tmp;
tmp = ((s32) gCourseTimer) - D_8018D950[arg1];
if (tmp < 7) {
@@ -1483,7 +1483,7 @@ void func_8008F8DC(Player* arg0, s8 arg1) {
}
}
-void func_8008FA38(Player* player, s8 arg1) {
+void apply_boo_sound_effect(Player* player, s8 arg1) {
s16 temp_v1;
if ((player->type & PLAYER_HUMAN) != 0) {
@@ -1496,10 +1496,10 @@ void func_8008FA38(Player* player, s8 arg1) {
}
}
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
- player->effects |= 0x80000000;
- player->statusEffects &= ~BOO_EFFECT;
+ player->effects |= BOO_EFFECT;
+ player->soundEffects &= ~BOO_SOUND_EFFECT;
D_8018D950[arg1] = gCourseTimer;
D_8018D970[arg1] = 0xFF;
@@ -1545,8 +1545,8 @@ void func_8008FC64(Player* player, s8 arg1) {
player->unk_0C6 -= 4;
if (player->unk_0C6 < 5) {
player->unk_0C6 = 0;
- player->statusEffects &= 0xFBFFFFFF;
- player->statusEffects |= 0x08000000;
+ player->soundEffects &= 0xFBFFFFFF;
+ player->soundEffects |= 0x08000000;
player->type |= PLAYER_UNKNOWN_0x40;
func_8008FDA8(player, arg1);
@@ -1558,7 +1558,7 @@ void func_8008FCDC(Player* player, s8 arg1) {
player->unk_0C6 += 2;
if (player->unk_0C6 >= 0xF0) {
player->unk_0C6 = 0xFF;
- player->statusEffects &= ~0x08000000;
+ player->soundEffects &= ~0x08000000;
}
func_80056A40(arg1, (u32) player->unk_0C6);
@@ -1567,7 +1567,7 @@ void func_8008FCDC(Player* player, s8 arg1) {
void func_8008FD4C(Player* player, UNUSED s8 arg1) {
s16 temp_v0;
- player->statusEffects |= 0x04000000;
+ player->soundEffects |= 0x04000000;
player->unk_044 |= 0x200;
for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
@@ -1588,13 +1588,13 @@ void func_8008FDA8(Player* player, UNUSED s8 arg1) {
}
void func_8008FDF4(Player* player, UNUSED s8 arg1) {
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
player->effects &= ~0x10;
player->kartHopJerk = D_800E37F0[player->characterId];
player->kartHopAcceleration = 0.0f;
player->kartHopVelocity = D_800E37D0[player->characterId];
- player->statusEffects &= ~0x00100000;
+ player->soundEffects &= ~0x00100000;
player->effects |= 0x10000000;
}
@@ -1788,7 +1788,7 @@ void func_80090778(Player* player) {
player->unk_222 = 0;
player->unk_08C = 0.0f;
- func_8008C354(player, playerIndex);
+ clean_effect(player, playerIndex);
func_8008F86C(player, playerIndex);
player->unk_DB4.unk0 = 0;
@@ -1802,7 +1802,7 @@ void func_80090778(Player* player) {
player->unk_0C0 = 0;
player->rotation[1] = player->unk_0AE;
}
- func_8008E3C0(player, playerIndex);
+ remove_lightning_effect(player, playerIndex);
}
player->effects &= ~0x20;
}
@@ -1852,7 +1852,7 @@ void func_80090970(Player *player, s8 arg1, s8 arg2) {
player->unk_07C = 0;
player->unk_0C0 = 0;
player->unk_08C = 0.0f;
- func_8008C354(player, arg1);
+ clean_effect(player, arg1);
switch (player->unk_222) {
case 0:
if ((player->unk_0CA & 1) == 1) {
@@ -1879,7 +1879,7 @@ void func_80090970(Player *player, s8 arg1, s8 arg2) {
player->unk_0C6 = 0x00FF;
}
}
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
func_8008FB30(player, arg1);
}
break;
diff --git a/src/debug/all_variables.h b/src/debug/all_variables.h
index cb6aaf8e6..444d64546 100644
--- a/src/debug/all_variables.h
+++ b/src/debug/all_variables.h
@@ -20,7 +20,7 @@
#include <code_8006E9C0.h>
#include <code_80071F00.h>
#include <code_80086E70.h>
-#include <code_8008C1D0.h>
+#include <effects.h>
#include <code_80091440.h>
#include <code_80091750.h>
#include <code_800AF9B0.h>
diff --git a/src/effects.c b/src/effects.c
new file mode 100644
index 000000000..6cacdfe20
--- /dev/null
+++ b/src/effects.c
@@ -0,0 +1,2106 @@
+#include <ultra64.h>
+#include <macros.h>
+#include <types.h>
+#include <functions.h>
+#include <defines.h>
+#include <sounds.h>
+#include "code_800029B0.h"
+#include "math_util.h"
+#include "kart_attributes.h"
+#include "waypoints.h"
+#include "code_80005FD0.h"
+#include "render_player.h"
+#include "player_controller.h"
+#include "hud_renderer.h"
+#include "code_80057C60.h"
+#include "effects.h"
+#include "audio/external.h"
+#include "spawn_players.h"
+
+s32 D_8018D900[8];
+s16 D_8018D920[8];
+s32 D_8018D930[8];
+s32 D_8018D950[8];
+s32 D_8018D970[8];
+s32 D_8018D990[8];
+
+UNUSED void func_unnamed(void) {
+
+}
+
+s32 func_8008C1D8(UNUSED s32 *arg0) {
+
+}
+
+void func_8008C1E0(UNUSED s32 *arg0, UNUSED s32 arg1) {
+ arg1 = 4;
+}
+
+UNUSED void func_unnamed1(UNUSED s32 arg0) {
+
+}
+
+UNUSED void func_unnamed2(UNUSED s32 arg0) {
+
+}
+
+UNUSED void func_unnamed3(void) {
+
+}
+
+void func_8008C204(void) {
+
+}
+
+UNUSED void func_unnamed4(void) {
+
+}
+
+UNUSED void func_8008C214(void) {
+
+}
+
+UNUSED void func_unnamed5(void) {
+
+}
+
+UNUSED void func_unnamed6(void) {
+
+}
+
+UNUSED void func_unnamed7(void) {
+
+}
+
+UNUSED void func_unnamed8(void) {
+
+}
+
+UNUSED void func_8008C23C(void) {
+
+}
+
+UNUSED void func_unnamed9(void) {
+
+}
+UNUSED void func_unnamed10(void) {
+
+}
+UNUSED void func_unnamed11(void) {
+
+}
+UNUSED void func_unnamed12(void) {
+
+}
+UNUSED void func_unnamed13(void) {
+
+}
+UNUSED void func_unnamed14(void) {
+
+}
+UNUSED void func_unnamed15(void) {
+
+}
+UNUSED void func_unnamed16(void) {
+
+}
+UNUSED void func_unnamed17(void) {
+
+}
+UNUSED void func_unnamed18(void) {
+
+}
+UNUSED void func_unnamed19(void) {
+
+}
+UNUSED void func_unnamed20(void) {
+
+}
+UNUSED void func_unnamed21(void) {
+
+}
+
+UNUSED void func_unnamed22(UNUSED s32 arg0, UNUSED s32 arg1) {
+ arg1 = 4;
+}
+
+UNUSED void func_unnamed23(void) {
+
+}
+
+UNUSED void func_unnamed24(void) {
+
+}
+
+UNUSED void func_unnamed25(void) {
+
+}
+
+UNUSED void func_unnamed26(void) {
+
+}
+
+UNUSED void func_unnamed27(void) {
+
+
+}
+
+UNUSED void func_unnamed28(void) {
+
+}
+
+UNUSED void func_unnamed29(void) {
+
+}
+
+UNUSED void func_unnamed30(void) {
+
+}
+
+UNUSED void func_unnamed31(void) {
+
+}
+
+UNUSED void func_unnamed32(void) {
+
+}
+
+UNUSED void func_unnamed33(void) {
+
+}
+
+
+void func_8008C310(Player *player) {
+ if ((player->soundEffects & 2) || (player->soundEffects & 4) || ((player->soundEffects << 9) < 0) || (player->soundEffects & HIT_BY_ITEM_SOUND_EFFECT)) {
+ player->unk_0B6 = ((u16)player->unk_0B6 | 0x1000);
+ }
+}
+
+UNUSED void func_unnamed34(void) {
+
+}
+
+void clean_effect(Player *player, s8 arg1) {
+
+ if ((player->effects & 0x400) == 0x400) {
+ func_8008C6D0(player, arg1);
+ }
+
+ if (((player->effects & 0x80) == 0x80) || (player->effects & 0x40) == 0x40) {
+ func_8008C8C4(player, arg1);
+ }
+ if ((player->effects & 0x800) == 0x800) {
+ func_8008D0E4(player, arg1);
+ }
+ if ((player->unk_044 & 0x4000) != 0) {
+ func_8008D3B0(player, arg1);
+ }
+ if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
+ remove_boost_effect(player);
+ }
+ if ((player->effects & 0x80000) == 0x80000) {
+ func_8008D760(player);
+ }
+ if ((player->effects & 0x800000) == 0x800000) {
+ func_8008D97C(player);
+ }
+ if ((player->effects & 0x1000000) == 0x1000000) {
+ func_8008E884(player, arg1);
+ }
+ if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) {
+ remove_hit_by_item_effect(player, arg1);
+ }
+ if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) {
+ remove_boost_ramp_asphalt_effect(player);
+ }
+ if ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT) {
+ remove_boost_ramp_wood_effect(player);
+ }
+ if ((player->effects & 0x4000) == 0x4000) {
+ func_8008F3E0(player);
+ }
+ if ((player->effects & 0x10000) == 0x10000) {
+ func_8008F5A4(player, arg1);
+ }
+ if ((player->effects & 0x10000000) == 0x10000000) {
+ func_8008FEDC(player, arg1);
+ }
+ player->unk_044 = (s16) (player->unk_044 & 0xFFFE);
+ player->effects = (s32) (player->effects & ~0x20);
+}
+
+void func_8008C528(Player *player, s8 arg1) {
+ UNUSED s32 sp24;
+ s32 temp_v1;
+ clean_effect(player, arg1);
+ func_8008C310(player);
+ temp_v1 = player->characterId;
+ player->unk_0C2 = 0;
+ player->kartHopJerk = D_800E37B0[temp_v1];
+ player->kartHopAcceleration = 0.0f;
+
+ player->kartHopVelocity = D_800E3790[temp_v1];
+ player->unk_0A8 = 0;
+ player->effects = player->effects | 0x400;
+ player->effects = player->effects & ~0x10;
+ player->unk_0C0 = 0;
+ player->unk_236 = 2;
+ player->unk_042 = 0;
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800C90F4(arg1, (temp_v1 * 0x10) + 0x29008005);
+ func_800C9060(arg1, SOUND_ACTION_EXPLOSION);
+ } else {
+ func_800098FC(arg1, player);
+ }
+ player->soundEffects = (s32) (player->soundEffects & ~4);
+}
+
+void func_8008C62C(Player *player, s8 arg1) {
+
+ func_80031F48(player, 5.0f);
+ player->unk_0A8 += (s16)0xA0;
+ player->unk_042 += (s16)0x71C;
+ if (player->unk_0A8 >= 0x2000) {
+ player->unk_0A8 = 0;
+ player->unk_236 = (s16) (player->unk_236 - 1);
+ if (player->unk_236 == 0) {
+ player->unk_0A8 = 0x2000;
+ func_8008C6D0(player, arg1);
+ if (gModeSelection == BATTLE) {
+ func_8006B8B4(player, arg1);
+ }
+ }
+ }
+}
+
+void func_8008C6D0(Player *player, s8 arg1) {
+
+ player->unk_206 = 0;
+ player->slopeAccel = 0;
+ player->effects = (s32) (player->effects & ~0x400);
+ player->unk_0A8 = 0;
+ player->unk_0C0 = 0;
+ player->unk_07C = 0;
+ player->unk_236 = 0;
+ player->unk_078 = 0;
+ player->currentSpeed = 0.0f;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ player->unk_042 = 0;
+}
+
+void func_8008C73C(Player *player, s8 arg1) {
+ clean_effect(player, arg1);
+ if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40)) {
+ player->effects &= ~0x10;
+
+ if ((player->unk_0C0 / 182) >= 0) {
+ player->effects |= 0x40;
+ } else {
+ player->effects |= 0x80;
+ }
+
+ player->unk_0B6 |= 0x80;
+ player->unk_0C0 = 0; player->unk_07C = 0; player->unk_078 = 0; player->unk_0AE = player->rotation[1]; player->unk_0B2 = 2;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ D_80165280[arg1] = player->currentSpeed;
+ gTimerBoostTripleACombo[arg1] = 0;
+ gIsPlayerTripleAButtonCombo[arg1] = FALSE;
+ gCountASwitch[arg1] = 0;
+ gFrameSinceLastACombo[arg1] = 0;
+ D_8018D920[arg1] = 0;
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008003);
+ } else {
+ func_800098FC(arg1, player);
+ }
+ }
+}
+
+void func_8008C8C4(Player* player, s8 playerId) {
+ player->effects &= ~0x80;
+ player->effects &= ~0x40;
+ player->unk_0A8 = 0;
+ player->rotation[1] = player->unk_0AE;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->effects &= ~0x800;
+
+ D_80165190[0][playerId] = 1;
+ D_80165190[1][playerId] = 1;
+ D_80165190[2][playerId] = 1;
+ D_80165190[3][playerId] = 1;
+
+ player->unk_046 &= 0xFFBF;
+
+ if ((gIsPlayerTripleAButtonCombo[playerId] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
+ player->currentSpeed = (f32) (player->currentSpeed + 100.0f);
+ }
+ if ((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) == PLAYER_CPU) && (!gDemoMode) && ((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) {
+ player->soundEffects = (s32) (player->soundEffects | REVERSE_SOUND_EFFECT);
+ }
+}
+
+void func_8008C9EC(Player *player, s8 arg1) {
+ s16 stackPadding1;
+ s16 stackPadding2;
+ s16 sp30[5] = { 1092, 1092, 2184, 1638, 1820 };
+
+ player->unk_206 = 0;
+ player->slopeAccel = 0;
+ if ((player->unk_046 & 0x40) == 0x40) {
+ func_80031F48(player, 100.0f);
+ } else {
+ if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
+ func_80031F48(player, 1.0f);
+ } else {
+ func_80031F48(player, 4.0f);
+ }
+ if (!(player->type & PLAYER_HUMAN)) {
+ func_80031F48(player, 30.0f);
+ }
+ }
+ if ((player->effects & 0x80) == 0x80) {
+ player->rotation[1] -= sp30[player->unk_0B2];
+ D_8018D920[arg1] -= sp30[player->unk_0B2];
+ stackPadding1 = (u16)D_8018D920[arg1] / (0x10000 / (0x168 / (sp30[player->unk_0B2] / 182)));
+ if (stackPadding1 == 0) {
+ player->unk_0B2--;
+ if (player->unk_0B2 <= 0) {
+ if (gModeSelection == BATTLE) {
+ func_8006B8B4(player, arg1);
+ }
+ func_8008C8C4(player, arg1);
+ }
+ }
+ } else {
+ player->rotation[1] += sp30[player->unk_0B2];
+ D_8018D920[arg1] -= sp30[player->unk_0B2];
+ stackPadding2 = (u16)D_8018D920[arg1] / (0x10000 / (0x168 / (sp30[player->unk_0B2] / 182)));
+ if (stackPadding2 == 0) {
+ player->unk_0B2--;
+ if (player->unk_0B2 <= 0) {
+ func_8008C8C4(player, arg1);
+ if (gModeSelection == BATTLE) {
+ func_8006B8B4(player, arg1);
+ }
+ }
+ }
+ }
+ if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
+ gTimerBoostTripleACombo[arg1] = 0x00000078;
+ if (player->currentSpeed <= 90.0f) {
+ player->currentSpeed = 90.0f;
+ }
+ }
+}
+
+void func_8008CDC0(Player* player, s8 arg1) {
+ clean_effect(player, arg1);
+
+ player->soundEffects &= ~1;
+ player->unk_0B4 = 0;
+ player->unk_0B8 = 3.0f;
+ player->unk_0AC = 1;
+ player->effects &= ~0x10;
+
+ if (((player->unk_07C >> 0x10) >= 0x14) || ((player->unk_07C >> 0x10) < -0x13) || (((player->unk_094 / 18.0f) * 216.0f) <= 30.0f) || ((player->effects & 8) != 0) || (((player->type & PLAYER_HUMAN) == 0) && ((player->effects & 0x1000) == 0))) {
+ func_8008C73C(player, arg1);
+ }
+ else {
+ player->effects |= 0x800;
+ }
+}
+
+void func_8008CEB0(Player *player, s8 arg1) {
+ f32 var_f0;
+ s16 var_v1;
+ s16 var_a3;
+ s16 temp_f16;
+
+ var_f0 = player->unk_0B8;
+ var_v1 = player->unk_0B4;
+ var_a3 = player->unk_0AC;
+ var_v1++;
+ temp_f16 = (var_v1 * var_f0) - (0.2 * (var_v1 * var_v1));
+ if ((var_v1 != 0) && (temp_f16 < 0)) {
+ var_v1 = 0;
+ var_a3 = -var_a3;
+ var_f0 *= 0.8;
+ if ((player->effects & 1) == 1) {
+ player->effects |= 0x40000;
+ }
+ if (var_f0 <= 1.0f) {
+ player->effects &= ~0x800;
+ if ((player->effects & 0x40000) != 0x40000) {
+ func_8008C73C(player, arg1);
+ var_v1 = 0;
+ } else {
+ player->unk_0B6 |= 0x20;
+ player->effects &= ~0x40000;
+ if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)
+ {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
+ var_v1 = 0;
+ }
+ }
+ }
+ }
+ temp_f16 *= var_a3;
+ if ((temp_f16 <= 0) && (var_a3 == 1)) {
+ temp_f16 = 0;
+ }
+ if ((temp_f16 >= 0) && (var_a3 == -1)) {
+ temp_f16 = 0;
+ }
+ player->unk_078 += temp_f16 * 0x12;
+ player->unk_0B8 = var_f0;
+ player->unk_0B4 = var_v1;
+ player->unk_0AC = var_a3;
+ if (player->effects & 8) {
+ func_8008C73C(player, arg1);
+ player->effects &= ~0x800;
+ }
+}
+
+void func_8008D0E4(Player* player, UNUSED s8 arg1) {
+ player->effects &= ~0x800;
+}
+
+void func_8008D0FC(Player *player, s8 arg1) {
+ clean_effect(player, arg1);
+
+ player->soundEffects &= ~0x80;
+ player->unk_0B4 = 0;
+ player->unk_0B8 = 2.0f;
+ player->unk_0AC = 1;
+ player->effects &= ~0x10;
+ player->unk_044 |= 0x4000;
+}
+
+void func_8008D170(Player *player, s8 arg1) {
+ f32 var_f0;
+ s16 var_v1;
+ s16 var_a3;
+ s16 temp_f16;
+
+ var_f0 = player->unk_0B8;
+ var_v1 = player->unk_0B4;
+ var_a3 = player->unk_0AC;
+ var_v1++;
+ temp_f16 = (var_v1 * var_f0) - (0.1 * (var_v1 * var_v1));
+ if ((var_v1 != 0) && (temp_f16 < 0)) {
+ var_v1 = 0;
+ var_a3 = -var_a3;
+ var_f0 *= 0.9;
+ if (((player->effects & 1) == 1) || !(player->unk_044 & 0x20)) {
+ player->effects |= 0x40000;
+ }
+ if (var_f0 <= 1.3) {
+ player->unk_044 &= ~0x4000;
+ if ((player->effects & 0x40000) != 0x40000) {
+ func_8008C73C(player, arg1);
+ var_v1 = 0;
+ } else {
+ player->unk_0B6 |= 0x20;
+ player->effects &= ~0x40000;
+ if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)
+ {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
+ var_v1 = 0;
+ }
+ }
+ }
+ }
+ temp_f16 *= var_a3;
+ if ((temp_f16 <= 0) && (var_a3 == 1)) {
+ temp_f16 = 0;
+ }
+ if ((temp_f16 >= 0) && (var_a3 == -1)) {
+ temp_f16 = 0;
+ }
+ player->unk_078 += temp_f16 * 0x14;
+ player->unk_0B8 = var_f0;
+ player->unk_0B4 = var_v1;
+ player->unk_0AC = var_a3;
+ if (player->effects & 8) {
+ func_8008C73C(player, arg1);
+ player->unk_044 &= ~0x4000;
+ }
+}
+
+void func_8008D3B0(Player* player, UNUSED s8 arg1) {
+ player->unk_044 &= 0xBFFF;
+}
+
+void apply_boost_sound_effect(Player* player, s8 arg1) {
+
+ clean_effect(player, arg1);
+
+ player->effects |= BOOST_EFFECT;
+ player->soundEffects &= ~BOOST_SOUND_EFFECT;
+ player->unk_DB4.unk0 = 0;
+ player->unk_DB4.unk8 = 8.0f;
+
+ if (D_8015F890 != 1) {
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800C9250(arg1);
+ func_800C9060(arg1, 0x1900A40B);
+ }
+ } else {
+ if (player == gPlayerOne) {
+ func_800C9250(arg1);
+ func_800C9060(arg1, 0x1900A40B);
+ }
+ }
+
+ player->boostTimer = 0x50;
+}
+
+void apply_boost_effect(Player* player) {
+ player->currentSpeed = (f32) player->topSpeed;
+ if ( player->boostTimer > 0) {
+ --player->boostTimer;
+ }
+
+ if (player->boostTimer != 0) {
+ move_f32_towards(&player->boostPower, 400.0f, 0.5f);
+ } else {
+ move_f32_towards(&player->boostPower, 0.0f, 0.1f);
+ }
+
+ if (player->boostPower <= 1.0f) {
+ player->effects &= ~BOOST_EFFECT;
+ }
+}
+
+void remove_boost_effect(Player* player) {
+ player->effects &= ~BOOST_EFFECT;
+ player->boostPower = 0.0f;
+}
+
+void func_8008D570(Player *player, s8 arg1) {
+ clean_effect(player, arg1);
+
+ player->unk_0AE = player->rotation[1];
+ player->effects |= 0x80000;
+ player->effects &= ~0x10;
+ player->soundEffects &= ~0x1000;
+ player->kartHopJerk = D_800E3730[player->characterId];
+ player->kartHopAcceleration = 0.0f;
+ player->kartHopVelocity = (f32) D_800E3710[player->characterId];
+ player->unk_0B2 = 1;
+ player->unk_0C0 = 0;
+ player->unk_07C = 0;
+ player->unk_078 = 0;
+ D_8018D920[arg1] = 0;
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800C9060(arg1, 0x19008002);
+ }
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x2900800C);
+ }
+}
+
+void func_8008D698(Player* player, s8 arg1) {
+ s16 temp;
+
+ if (player->unk_0B2 == 0) {
+ player->rotation[1] = player->unk_0AE;
+ temp = 0;
+ } else {
+ player->rotation[1] -= 1820;
+ D_8018D920[arg1] -= 1820;
+ temp = ((u16) D_8018D920[arg1] / 1820);
+ }
+ if (temp == 0) {
+ --player->unk_0B2;
+ if (player->unk_0B2 <= 0) {
+ player->unk_0B2 = 0;
+ }
+ if ((player->unk_0B2 == 0) && ((player->effects & 8) != 8)) {
+ func_8008D760(player);
+ }
+ }
+}
+
+void func_8008D760(Player* player) {
+ player->unk_0A8 = 0;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->rotation[1] = player->unk_0AE;
+ player->effects &= 0xFFF7FFFF;
+ player->kartGravity = gKartGravityTable[player->characterId];
+ player->type &= 0xFF7F;
+}
+
+void func_8008D7B0(Player* player, s8 arg1) {
+ clean_effect(player, arg1);
+
+ player->unk_0AE = player->rotation[1];
+ player->effects |= 0x800000;
+ player->effects &= ~0x10;
+ player->soundEffects &= ~0x20000;
+ player->kartHopJerk = D_800E3770[player->characterId];
+ player->kartHopAcceleration = 0.0f;
+ player->kartHopVelocity = D_800E3750[player->characterId];
+ D_8018D920[arg1] = 0;
+ player->unk_0B2 = 4;
+ player->unk_0C0 = 0;
+ player->unk_07C = 0;
+ player->unk_078 = 0;
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008003);
+ }
+}
+
+void func_8008D8B4(Player* player, s8 arg1) {
+ s16 temp;
+
+ if (player->unk_0B2 == 0) {
+ player->rotation[1] = player->unk_0AE;
+ temp = 0;
+ } else {
+ player->rotation[1] -= 1820;
+ D_8018D920[arg1] -= 1820;
+ temp = ((u16) (D_8018D920[arg1]) / 1820);
+ }
+ if (temp == 0) {
+ --player->unk_0B2;
+ if (player->unk_0B2 <= 0) {
+ player->unk_0B2 = 0;
+ }
+ if ((player->unk_0B2 == 0) && ((player->effects & 8) != 8)) {
+ func_8008D97C(player);
+ }
+ }
+}
+
+void func_8008D97C(Player *player) {
+ player->unk_0A8 = 0;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->rotation[1] = player->unk_0AE;
+ player->effects &= 0xFF7FFFFF;
+ player->kartGravity = gKartGravityTable[player->characterId];
+}
+
+void func_8008D9C0(Player* player) {
+ player->unk_DA0 += 8.0f;
+ if (player->unk_DA0 >= 140.0f) {
+ player->unk_DA0 = 140.0f;
+ }
+
+ if (player->unk_D98 == 1) {
+ player->unk_D9C += player->unk_DA0;
+ if (2002.0f <= player->unk_D9C) {
+ player->unk_DA0 = 10.0f;
+ player->unk_D98 *= -1;
+ }
+ }
+ if (player->unk_D98 == -1) {
+ player->unk_D9C -= player->unk_DA0;
+ if (player->unk_D9C <= -2002.0f) {
+ player->unk_DA0 = 10.0f;
+ player->unk_D98 *= -1;
+ }
+ }
+}
+
+void func_8008DABC(Player *player, s8 arg1) {
+ clean_effect(player, arg1);
+
+ if ((player->effects & 0x4000000) == 0) {
+ player->unk_DB4.unk2 = 0;
+ player->unk_238 = 0;
+ player->unk_DB4.unk10 = 4.5f;
+ D_8018D990[arg1] = 0;
+ player->effects &= ~0x08000010;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ player->unk_D98 = 1;
+ player->unk_D9C = 0.0f;
+ player->unk_DA0 = 65.0f;
+
+ if ((player->soundEffects & 0x100) != 0) {
+ player->unk_046 |= 0x80;
+ }
+
+ if (((player->type & PLAYER_HUMAN) != 0) && ((player->effects & 0x04000000) == 0)) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008005);
+ }
+
+ player->effects |= 0x04000000;
+ if (((player->type) & 0x1000) != 0) {
+ func_800098FC(arg1, player);
+ }
+ }
+}
+
+void func_8008DC08(Player* player, s8 arg1) {
+ player->unk_0C2 = 0;
+ player->unk_0A8 = 0;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->unk_08C = 0.0f;
+ player->currentSpeed = 0.0f;
+ if ((player->unk_110.unk3C[2] >= 600.0f) || ((player->effects & 0x1000) != 0)) { D_8018D990[arg1] = 3; } // placed block on same line to match
+
+ switch (D_8018D990[arg1]) {
+ case 0:
+ player->unk_DB4.unk10 = 4.5f;
+ if (player->unk_238 < 0x3D) {
+ ++player->unk_238;
+ }
+
+ if ((player->unk_046 & 0x80) != 0) {
+ if ((player->soundEffects & 0x100) == 0) {
+ D_8018D990[arg1] = 1;
+ player->unk_238 = 0;
+ if ((player->type & PLAYER_HUMAN) != 0) {
+ func_800C9060(arg1, 0x1901904B);
+ break;
+ }
+ }
+ } else {
+ ++player->unk_238;
+ if (player->unk_238 >= 0x1E) {
+ D_8018D990[arg1] = 1;
+ player->unk_238 = 0;
+ if ((player->type & PLAYER_HUMAN) != 0) {
+ func_800C9060(arg1, 0x1901904B);
+ break;
+ }
+ }
+ break;
+ }
+
+ break;
+ case 1:
+ player->unk_DB4.unk10 = 4.5f;
+ player->pos[1] += 0.13;
+ ++player->unk_238;
+
+ if ((player->unk_046 & 0x80) != 0) {
+ if (player->unk_238 >= 0x32) {
+ D_8018D990[arg1] = 2;
+ player->unk_238 = 0;
+ player->unk_046 &= 0xFF7F;
+ }
+ } else if (player->unk_238 >= 0x50) {
+ D_8018D990[arg1] = 2;
+ player->unk_238 = 0;
+ }
+
+ player->unk_DA0 += 6.0f;
+ if (player->unk_DA0 >= 90.0f) {
+ player->unk_DA0 = 90.0f;
+ }
+
+ player->unk_D9C += player->unk_DA0;
+ if (3458.0f <= player->unk_D9C) {
+ player->unk_DA0 = 0.0f;
+ break;
+ }
+ break;
+ case 2:
+ ++player->unk_238;
+ if (player->unk_238 >= 0x259) {
+ D_8018D990[arg1] = 3;
+ player->unk_238 = 0;
+ }
+
+ if (player->unk_110.unk3C[2] >= 600.0f) {
+ D_8018D990[arg1] = 3;
+ }
+
+ player->unk_DB4.unk10 = 4.5f;
+ player->pos[1] -= 0.085;
+
+ if ((player->effects & 8) != 8) {
+ D_8018D990[arg1] = 3;
+ player->unk_238 = 0;
+ }
+
+ func_8008D9C0(player);
+ break;
+ case 3:
+ player->unk_DB4.unk10 = 3.0f;
+ player->effects &= ~0x04000000;
+ player->unk_DB4.unk2 = 0;
+ player->effects |= 0x08000000;
+ player->size = 1.0f;
+ player->boundingBoxSize = gKartBoundingBoxSizeTable[player->characterId];
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+
+ if ((player->type & PLAYER_HUMAN) != 0) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
+ }
+ break;
+ }
+}
+
+void apply_hit_rotating_sound_effect(Player* player, s8 arg1) {
+ clean_effect(player, arg1);
+
+ player->soundEffects &= ~HIT_ROTATING_SOUND_EFFECT;
+ player->effects |= 0x40020000;
+ player->effects &= ~0x10;
+ player->unk_08C *= 0.6;
+ player->unk_0B0 = 0;
+ player->size = 1.0f;
+ D_8018D930[arg1] = gCourseTimer;
+ player->unk_0AE = player->rotation[1];
+ player->unk_0B2 = 2;
+ player->unk_0C0 = 0;
+ player->unk_07C = 0;
+ player->unk_078 = 0;
+
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+
+ D_8018D920[arg1] = 0;
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008003);
+ } else {
+ func_800098FC(arg1, player);
+ }
+ if (gModeSelection == BATTLE) {
+ func_8006B8B4(player, arg1);
+ }
+}
+
+void apply_lightning_effect(Player *player, s8 arg1) {
+ s16 test;
+ if (((player->effects & 0x8000) == 0x8000) && ((player->effects & 0x04000000) != 0x04000000)) {
+ player->effects &= ~0x20000;
+ player->unk_0A8 = 0;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->rotation[1] = player->unk_0AE;
+ remove_lightning_effect(player, arg1);
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ func_8008DABC(player, arg1);
+ } else if ((player->effects & 0x20000) == 0x20000) {
+ player->rotation[1] -= 0x5B0;
+ D_8018D920[arg1] -= 0x5B0;
+ test = (u16)D_8018D920[arg1] / 1456;
+ if (test == 0) {
+ player->unk_0B2--;
+ if (player->unk_0B2 <= 0) {
+ player->unk_0A8 = 0;
+ player->effects &= ~0x20000;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->rotation[1] = player->unk_0AE;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ }
+ }
+ func_80031F48(player, 1.0f);
+ } else {
+ player->unk_0B0 += 1;
+ player->unk_08C = (f32) ((f64) player->unk_08C * 0.6);
+ if ((player->unk_0B0 == 1) && (player->type & PLAYER_HUMAN)) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008005);
+ }
+ if ((player->unk_0B0 >= 0) && (player->unk_0B0 < 0x1CC)) {
+ move_f32_towards(&player->size, 0.7f, 0.1f);
+ move_f32_towards(&player->boundingBoxSize, (f32) ((f64) gKartBoundingBoxSizeTable[player->characterId] * 0.9), 0.1f);
+ } else {
+ remove_lightning_effect(player, arg1);
+ if (player->type & PLAYER_HUMAN) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
+ }
+ }
+ }
+}
+
+void remove_lightning_effect(Player* player, UNUSED s8 arg1) {
+ move_f32_towards(&player->size, 1.0f, 0.1f);
+ move_f32_towards(&player->boundingBoxSize, gKartBoundingBoxSizeTable[player->characterId], 0.1f);
+
+ player->effects &= ~LIGHTNING_EFFECT;
+ player->size = 1.0f;
+ player->boundingBoxSize = gKartBoundingBoxSizeTable[player->characterId];
+ player->unk_DB4.unk10 = 3.0f;
+ player->unk_DB4.unk2 = 0;
+ player->effects |= 0x08000000;
+
+ if ((player->effects & 0x20000) == 0x20000) {
+ player->rotation[1] = player->unk_0AE;
+ }
+
+ player->effects &= ~0x20000;
+}
+
+void func_8008E4A4(Player* player, s8 arg1) {
+ player->unk_206 = 0;
+ player->slopeAccel = 0;
+ player->unk_0C0 = 0;
+ player->unk_07C = 0;
+ player->unk_0C2 = 0xF;
+ player->unk_042 += 0xAAA;
+ player->unk_08C = 0.0f;
+ player->currentSpeed = 0.0f;
+ player->velocity[0] = 0.0f;
+ player->velocity[2] = 0.0f;
+ player->effects &= ~0xC0;
+
+ if ((player->effects & 8) != 8) {
+ ++player->unk_0E0;
+ }
+
+ if (player->unk_0E0 == 3) {
+ player->effects &= ~0x01000000;
+ player->unk_0A8 = 0;
+ player->unk_236 = 0;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ player->unk_042 = 0;
+ player->type &= ~0x80;
+
+ if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
+ player->currentSpeed += 100.0f;
+ }
+ if (gModeSelection == BATTLE) {
+ func_8006B8B4(player, arg1);
+ }
+ } else {
+ player->unk_0A8 += 0x80;
+ if (player->unk_0A8 >= 0x2000) {
+ player->unk_0A8 = 0;
+ --player->unk_236;
+ if (player->unk_236 == 0) {
+ player->effects &= ~0x01000000;
+ player->unk_236 = 0;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ player->unk_042 = 0;
+
+ if (gModeSelection == BATTLE) {
+ func_8006B8B4(player, arg1);
+ }
+ if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
+ player->currentSpeed += 100.0f;
+ }
+
+ player->type &= ~0x80;
+ }
+ }
+ }
+}
+
+void apply_reverse_sound_effect(Player *player, s8 arg1)
+{
+ clean_effect(player, arg1);
+ func_8008C310(player);
+
+ player->unk_0A8 = 0;
+ player->effects |= 0x01000000;
+ player->effects &= ~0x10;
+ player->kartHopJerk = 0.0f;
+ player->kartHopAcceleration = 0.0f;
+ player->kartHopVelocity = 0.0f;
+ player->kartHopJerk = D_800E3730[player->characterId];
+ player->kartHopVelocity = D_800E3710[player->characterId];
+ player->unk_236 = 4;
+ player->unk_042 = 0;
+ player->unk_0E0 = 0;
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ if (((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) != 0)) && (!gDemoMode)) {
+ func_800CA24C(arg1);
+ }
+
+ if (1) {
+ }
+
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008005);
+ if (((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) != 0)) && (!gDemoMode)) {
+ func_800CA24C(arg1);
+ }
+ func_800C9060(arg1, SOUND_ACTION_EXPLOSION);
+ } else {
+ func_800098FC(arg1, player);
+ }
+
+ player->soundEffects &= ~(REVERSE_SOUND_EFFECT | 0x80000);
+ player->unk_0B6 |= 0x40;
+ gTimerBoostTripleACombo[arg1] = 0;
+ gIsPlayerTripleAButtonCombo[arg1] = FALSE;
+ gCountASwitch[arg1] = 0;
+ gFrameSinceLastACombo[arg1] = 0;
+}
+
+void func_8008E884(Player* player, s8 arg1) {
+ player->effects &= ~0x01000000;
+ player->unk_0A8 = 0;
+ player->unk_236 = 0;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ player->unk_042 = 0;
+}
+
+void apply_hit_by_item_effect(Player *player, s8 arg1) {
+ player->unk_206 = 0;
+ player->slopeAccel = 0;
+ player->unk_0C0 = 0;
+ player->unk_07C = 0;
+ player->unk_0C2 = 0xF;
+ player->unk_042 += 0xAAA;
+ player->unk_08C /= 2;
+ player->currentSpeed = 0.0f;
+ player->effects &= ~0xC0;
+
+ if ((player->effects & 8) != 8) {
+ ++player->unk_0E0;
+ }
+
+ if (player->unk_0E0 == 4) {
+ player->effects &= ~HIT_BY_ITEM_EFFECT;
+ player->unk_0A8 = 0;
+ player->unk_236 = 0;
+ D_80165190[3][arg1] = 1;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ player->unk_042 = 0;
+
+ if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
+ player->currentSpeed += 100.0f;
+ }
+
+ if (gModeSelection == BATTLE) {
+ func_8006B8B4(player, arg1);
+ }
+ } else {
+ player->unk_0A8 = (s16)(player->unk_0A8 + 0x90);
+ if (((s32)player->unk_0A8) >= 0x2000) {
+ player->unk_0A8 = 0;
+ --player->unk_236;
+ if (player->unk_236 == 0) {
+ player->effects &= ~HIT_BY_ITEM_EFFECT;
+ player->unk_236 = 0;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ player->unk_042 = 0;
+ if ((gIsPlayerTripleAButtonCombo[arg1] == TRUE) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
+ player->currentSpeed += 100.0f;
+ }
+
+ if (gModeSelection == BATTLE) {
+ func_8006B8B4(player, arg1);
+ }
+ }
+ }
+ }
+}
+
+void apply_hit_by_item_sound_effect(Player* player, s8 arg1) {
+ clean_effect(player, arg1);
+ func_8008C310(player);
+
+ player->unk_0A8 = 0;
+ player->effects &= ~0x10;
+ player->kartHopJerk = 0.0f;
+ player->kartHopAcceleration = 0.0f;
+ player->kartHopVelocity = 0.0f;
+ player->kartHopJerk = D_800E3730[player->characterId];
+ player->kartHopVelocity = D_800E3710[player->characterId];
+ player->unk_236 = 4;
+ player->unk_042 = 0;
+ player->unk_0E0 = 0;
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008005);
+ func_800C9060(arg1, SOUND_ACTION_EXPLOSION);
+ } else {
+ func_800098FC(arg1, player);
+ }
+
+ player->effects |= HIT_BY_ITEM_EFFECT;
+ player->unk_0B6 |= 0x40;
+ player->soundEffects &= ~0x01000002;
+
+ gTimerBoostTripleACombo[arg1] = 0;
+ gIsPlayerTripleAButtonCombo[arg1] = FALSE;
+ gCountASwitch[arg1] = 0;
+ gFrameSinceLastACombo[arg1] = 0;
+}
+
+void remove_hit_by_item_effect(Player* player, s8 arg1) {
+ player->effects &= ~HIT_BY_ITEM_EFFECT;
+ player->unk_0A8 = 0;
+ player->unk_236 = 0;
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ player->unk_042 = 0;
+}
+
+void apply_boost_ramp_asphalt_sound_effect(Player* player, s8 playerId) {
+ clean_effect(player, playerId);
+
+ player->effects |= BOOST_RAMP_ASPHALT_EFFECT;
+ player->soundEffects &= ~BOOST_RAMP_ASPHALT_SOUND_EFFECT;
+ player->unk_DB4.unk0 = 0;
+ player->unk_DB4.unk8 = 8.0f;
+ if (D_8015F890 != 1) {
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0)) {
+ func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
+ func_800C9060(playerId, 0x1900A40B);
+ }
+ } else if (player == gPlayerOne) {
+ func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
+ func_800C9060(playerId, 0x1900A40B);
+ }
+ player->unk_044 &= ~0x1;
+ player->effects &= ~0x20;
+}
+
+void apply_boost_ramp_asphalt_effect(Player* player) {
+ f64 temp_f0;
+
+ player->currentSpeed = player->topSpeed;
+ if ((u16) player->unk_256 > 0) {
+ player->currentSpeed = 0.0f;
+ }
+ if ((player->surfaceType != BOOST_RAMP_ASPHALT) && ((player->effects & 8) != 8)) {
+ move_f32_towards(&player->boostPower, 0, 1.0f);
+ } else {
+ move_f32_towards(&player->boostPower, 400.0f, 0.01f);
+ }
+ if (player->boostPower <= 1.0f) {
+ player->effects &= ~BOOST_RAMP_ASPHALT_EFFECT;
+ player->boostPower = 0.0f;
+ if (player->unk_0C2 >= 0x33) {
+ temp_f0 = 0.7;
+ player->currentSpeed = (player->currentSpeed * temp_f0);
+ player->unk_08C = (player->unk_08C * temp_f0);
+ }
+ }
+}
+
+void remove_boost_ramp_asphalt_effect(Player* player) {
+ player->effects &= ~BOOST_RAMP_ASPHALT_EFFECT;
+ player->boostPower = 0.0f;
+}
+
+void apply_boost_ramp_wood_sound_effect(Player* player, s8 playerId) {
+ clean_effect(player, playerId);
+
+ player->effects |= BOOST_RAMP_WOOD_EFFECT;
+ player->soundEffects &= ~BOOST_RAMP_WOOD_SOUND_EFFECT;
+
+ if (D_8015F890 != 1) {
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0)) {
+ func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
+ func_800C9060(playerId, 0x1900A40B);
+ }
+ } else if (player == gPlayerOne) {
+ func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
+ func_800C9060(playerId, 0x1900A40B);
+ }
+
+ player->unk_044 &= ~0x1;
+ player->effects &= ~0x20;
+}
+
+void apply_boost_ramp_wood_effect(Player* player) {
+ player->currentSpeed = gTopSpeedTable[0][player->characterId];
+
+ if ((player->surfaceType != BOOST_RAMP_WOOD) && ((player->effects & 8) != 8)) {
+ move_f32_towards(&player->boostPower, 0, 1.0f);
+ } else {
+ move_f32_towards(&player->boostPower, 300.0f, 0.1f);
+ }
+
+ if (player->boostPower <= 1.0f) {
+ player->effects &= ~BOOST_RAMP_WOOD_EFFECT;
+ player->boostPower = 0.0f;
+ player->currentSpeed /= 2;
+ player->unk_08C /= 2;
+ }
+}
+
+void remove_boost_ramp_wood_effect(Player* player) {
+ player->effects &= ~BOOST_RAMP_WOOD_EFFECT;
+ player->boostPower = 0.0f;
+}
+
+void func_8008F104(Player* player, s8 arg1) {
+ clean_effect(player, arg1);
+
+ player->unk_0AE = player->rotation[1];
+ player->unk_0B2 = 2;
+ player->unk_0C0 = 0;
+ player->unk_07C = 0;
+ player->effects |= 0x4000;
+ player->unk_078 = 0;
+ D_8018D920[arg1] = -0x8000;
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008003);
+ }
+}
+
+void func_8008F1B8(Player* player, s8 arg1) {
+ s16 temp;
+
+ player->unk_08C = (player->unk_210 * 0.05);
+ if (player->unk_0B2 < 0) {
+ if ((player->unk_044 & 0x80) == 0x80) {
+ player->rotation[1] += 182;
+ D_8018D920[arg1] += 182;
+
+ temp = ((u16) D_8018D920[arg1] / 182);
+ if (temp == 180) {
+ player->effects &= ~0x4000;
+ player->type &= ~0x80;
+ player->currentSpeed /= 3.0f;
+ }
+ } else {
+
+ player->rotation[1] -= 182;
+ D_8018D920[arg1] -= 182;
+ temp = ((u16) D_8018D920[arg1] / 182);
+ if (temp == 180) {
+ player->effects &= ~0x4000;
+ player->type &= ~0x80;
+ player->currentSpeed /= 3.0f;
+ }
+ }
+ } else {
+ if ((player->unk_0B2 & 1) != 0) {
+ player->rotation[1] -= 364;
+ D_8018D920[arg1] -= 364;
+ temp = ((u16) D_8018D920[arg1] / 364);
+ if (temp < 71) {
+ --player->unk_0B2;
+ }
+ player->unk_044 |= 0x80;
+ player->unk_044 &= ~0x40;
+ return;
+ }
+ player->rotation[1] += 364;
+ D_8018D920[arg1] += 364;
+ temp = ((u16) D_8018D920[arg1] / 364);
+ if (temp >= 110) {
+ --player->unk_0B2;
+ }
+ player->unk_044 |= 0x40;
+ player->unk_044 &= ~0x80;
+ }
+}
+
+void func_8008F3E0(Player* player) {
+ player->effects &= ~0x4000;
+}
+
+void func_8008F3F4(Player* player, UNUSED s8 arg1) {
+ player->unk_0A8 += 0x80;
+ player->unk_042 += 0x71C;
+ player->unk_07C = 0;
+ player->currentSpeed = 0.0f;
+ player->unk_08C /= 2;
+ if (player->unk_0A8 >= 0x2000) {
+ player->unk_0A8 = 0;
+ --player->unk_236;
+ if (player->unk_236 == 0) {
+ player->effects &= ~0x00010000;
+ func_80090778(player);
+ func_80090868(player);
+ }
+ }
+}
+
+void func_8008F494(Player* player, s8 arg1) {
+ if ((((player->effects & 0x80) != 0) ||
+ ((player->effects & 0x40) != 0) ||
+ ((player->effects & 0x01000000)) ||
+ ((player->effects & HIT_BY_ITEM_EFFECT)) ||
+ ((player->effects & 0x400) != 0)) && (gModeSelection == BATTLE)) {
+ player->unk_044 |= 0x8000;
+ }
+
+ clean_effect(player, arg1);
+ func_8008F86C(player, arg1);
+
+ player->unk_0A8 = 0;
+ player->effects |= 0x10000;
+ player->effects &= ~0x10;
+ player->unk_236 = 0x1E;
+ player->unk_042 = 0;
+
+ if (((player->type & PLAYER_HUMAN) != 0) &&
+ ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0) &&
+ ((player->unk_0CA & 2) == 0) &&
+ ((player->unk_0DE & 1) == 0) &&
+ ((player->unk_0DE & 2) == 0)) {
+ func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008004);
+ }
+}
+
+void func_8008F5A4(Player* player, s8 arg1) {
+
+ if ((player->unk_044 & 0x8000) != 0) {
+ func_8006B8B4(player, arg1);
+ player->unk_044 &= ~0x8000;
+ }
+
+ player->unk_206 = 0;
+ player->slopeAccel = 0;
+ player->effects &= ~0x10000;
+ player->unk_0A8 = 0;
+ player->unk_0C0 = 0;
+ player->unk_07C = 0;
+ player->unk_236 = 0;
+ player->unk_078 = 0;
+ player->currentSpeed = 0.0f;
+
+ D_80165190[0][arg1] = 1;
+ D_80165190[1][arg1] = 1;
+ D_80165190[2][arg1] = 1;
+ D_80165190[3][arg1] = 1;
+ player->unk_042 = 0;
+}
+
+void apply_star_effect(Player* player, s8 arg1) {
+ if (((s32) gCourseTimer - D_8018D930[arg1]) >= 9) {
+ D_8018D900[arg1] = 1;
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ if (D_8018D900[arg1] == 1) {
+ func_800CA730(arg1);
+ D_8018D900[arg1] = 0;
+ }
+ } else if (D_8018D900[arg1] == 1) {
+ func_800CAACC((u8)arg1);
+ D_8018D900[arg1] = 0;
+ }
+ }
+
+ if (((s32) gCourseTimer - D_8018D930[arg1]) >= 0xA) {
+ player->effects &= ~STAR_EFFECT;
+ }
+}
+
+// Star item
+void apply_star_sound_effect(Player* player, s8 arg1) {
+ clean_effect(player, arg1);
+
+ player->effects |= STAR_EFFECT;
+ player->soundEffects &= ~STAR_SOUND_EFFECT;
+ D_8018D930[arg1] = gCourseTimer;
+ D_8018D900[arg1] = 1;
+
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ if (D_8018D900[arg1] == 1) {
+ func_800CA59C(arg1);
+ D_8018D900[arg1] = 2;
+ }
+ // This may be in charge of ending the star sound. Still unknown though.
+ } else if (D_8018D900[arg1] == 1) {
+ func_800CA984(arg1);
+ D_8018D900[arg1] = 2;
+ }
+}
+
+void func_8008F86C(Player* player, s8 arg1) {
+ player->effects &= ~STAR_EFFECT;
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
+ func_800CA730(arg1);
+ return;
+ }
+ func_800CAACC(arg1);
+}
+
+void apply_boo_effect(Player* arg0, s8 arg1) {
+ s32 tmp;
+ tmp = ((s32) gCourseTimer) - D_8018D950[arg1];
+ if (tmp < 7) {
+ arg0->unk_0C6 -= 2;
+
+ if (arg0->unk_0C6 < 0x61) {
+ arg0->unk_0C6 = 0x60;
+ }
+ D_8018D970[arg1] -= 2;
+ if (D_8018D970[arg1] <= 0) {
+ D_8018D970[arg1] = 0;
+ }
+ } else {
+ arg0->unk_0C6 += 4;
+ if (arg0->unk_0C6 >= 0xF0) {
+ arg0->unk_0C6 = 0xFF;
+ D_8018D970[arg1] = 0xFF;
+ arg0->effects &= ~0x80000000;
+ if ((arg0->type & 0x4000) != 0) {
+ func_800CB064(arg1);
+ }
+ }
+
+ D_8018D970[arg1] += 8;
+ if (D_8018D970[arg1] >= 0xF0) {
+ D_8018D970[arg1] = 0xFF;
+ arg0->unk_0C6 = 0xFF;
+ arg0->effects &= ~0x80000000;
+ if ((arg0->type & 0x4000) != 0) {
+ func_800CB064(arg1);
+ }
+ }
+ }
+}
+
+void apply_boo_sound_effect(Player* player, s8 arg1) {
+ s16 temp_v1;
+
+ if ((player->type & PLAYER_HUMAN) != 0) {
+ player->unk_044 |= 0x200;
+
+ for (temp_v1 = 0; temp_v1 < 10; ++temp_v1) {
+ player->unk_258[temp_v1].unk_01C = 0;
+ player->unk_258[temp_v1].unk_01E = 0;
+ player->unk_258[temp_v1].unk_012 = 0;
+ }
+ }
+
+ clean_effect(player, arg1);
+
+ player->effects |= BOO_EFFECT;
+ player->soundEffects &= ~BOO_SOUND_EFFECT;
+ D_8018D950[arg1] = gCourseTimer;
+ D_8018D970[arg1] = 0xFF;
+
+ if ((player->type & PLAYER_HUMAN) != 0) {
+ func_800CAFC0(arg1);
+ }
+}
+
+void func_8008FB30(Player* arg0, s8 arg1) {
+ arg0->unk_0C6 += 8;
+ if (arg0->unk_0C6 >= 0xF0) {
+ arg0->unk_0C6 = 0xFF;
+ D_8018D970[arg1] = 0xFF;
+
+ arg0->effects &= ~0x80000000;
+ if ((arg0->type & 0x4000) != 0) {
+ func_800CB064(arg1);
+ }
+ }
+
+ D_8018D970[arg1] += 0x10;
+ if (D_8018D970[arg1] >= 0xE0) {
+ D_8018D970[arg1] = 0xFF;
+ arg0->unk_0C6 = 0xFF;
+ arg0->effects &= ~0x80000000;
+ if ((arg0->type & 0x4000) != 0) {
+ func_800CB064(arg1);
+ }
+ }
+}
+
+void func_8008FC1C(Player* player) {
+ s32 playerIndex;
+
+ if ((player->type & PLAYER_UNKNOWN_0x40) != 0) {
+ playerIndex = get_player_index_for_player(player);
+ player->type = 0x7000;
+ func_80056A94(playerIndex);
+ }
+}
+
+void func_8008FC64(Player* player, s8 arg1) {
+ player->unk_0C6 -= 4;
+ if (player->unk_0C6 < 5) {
+ player->unk_0C6 = 0;
+ player->soundEffects &= 0xFBFFFFFF;
+ player->soundEffects |= 0x08000000;
+ player->type |= PLAYER_UNKNOWN_0x40;
+
+ func_8008FDA8(player, arg1);
+ func_800569F4(arg1);
+ }
+}
+
+void func_8008FCDC(Player* player, s8 arg1) {
+ player->unk_0C6 += 2;
+ if (player->unk_0C6 >= 0xF0) {
+ player->unk_0C6 = 0xFF;
+ player->soundEffects &= ~0x08000000;
+ }
+
+ func_80056A40(arg1, (u32) player->unk_0C6);
+}
+
+void func_8008FD4C(Player* player, UNUSED s8 arg1) {
+ s16 temp_v0;
+
+ player->soundEffects |= 0x04000000;
+ player->unk_044 |= 0x200;
+
+ for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
+ player->unk_258[temp_v0].unk_01C = 0;
+ player->unk_258[temp_v0].unk_01E = 0;
+ player->unk_258[temp_v0].unk_012 = 0;
+ }
+}
+
+void func_8008FDA8(Player* player, UNUSED s8 arg1) {
+ s16 temp_v0;
+ player->unk_044 |= 0x200;
+ for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
+ player->unk_258[temp_v0].unk_01C = 0;
+ player->unk_258[temp_v0].unk_01E = 0;
+ player->unk_258[temp_v0].unk_012 = 0;
+ }
+}
+
+void func_8008FDF4(Player* player, UNUSED s8 arg1) {
+ clean_effect(player, arg1);
+
+ player->effects &= ~0x10;
+ player->kartHopJerk = D_800E37F0[player->characterId];
+ player->kartHopAcceleration = 0.0f;
+ player->kartHopVelocity = D_800E37D0[player->characterId];
+ player->soundEffects &= ~0x00100000;
+ player->effects |= 0x10000000;
+}
+
+void func_8008FE84(Player* player, UNUSED s8 arg1) {
+ player->effects &= ~0x10;
+ if ((player->effects & 8) != 8) {
+ player->effects &= ~0x10000000;
+ player->currentSpeed /= 2;
+ player->unk_08C /= 2;
+ }
+}
+
+void func_8008FEDC(Player* player, UNUSED s8 arg1) {
+ player->effects &= ~0x10000000;
+ player->kartHopJerk = 0.0f;
+ player->kartHopVelocity = 0.0f;
+ player->kartHopAcceleration = 0.0f;
+}
+
+void func_8008FF08(Player *player, s8 playerId) {
+ s16 waypoint;
+ switch (gCurrentCourseId) {
+ case COURSE_BOWSER_CASTLE:
+ waypoint = gNearestWaypointByPlayerId[playerId];
+ if ((waypoint >= 0x235) && (waypoint < 0x247)) {
+ player->nearestWaypointId = 0x214;
+ } else if ((waypoint >= 0x267) && (waypoint < 0x277)) {
+ player->nearestWaypointId = 0x25B;
+ } else {
+ player->nearestWaypointId = gNearestWaypointByPlayerId[playerId];
+ if (player->nearestWaypointId < 0) {
+ player->nearestWaypointId = gWaypointCountByPathIndex[0] + player->nearestWaypointId;
+ }
+ }
+ break;
+ case COURSE_BANSHEE_BOARDWALK:
+ waypoint = gNearestWaypointByPlayerId[playerId];
+ if ((waypoint >= 0x12C) && (waypoint < 0x13C)) {
+ player->nearestWaypointId = 0x12CU;
+ } else {
+ player->nearestWaypointId = gNearestWaypointByPlayerId[playerId];
+ if (player->nearestWaypointId < 0) {
+ player->nearestWaypointId = gWaypointCountByPathIndex[0] + player->nearestWaypointId;
+ }
+ }
+ break;
+ case COURSE_YOSHI_VALLEY:
+ case COURSE_RAINBOW_ROAD:
+ player->nearestWaypointId = gCopyNearestWaypointByPlayerId[playerId];
+ break;
+ case COURSE_FRAPPE_SNOWLAND:
+ waypoint = gNearestWaypointByPlayerId[playerId];
+#ifdef VERSION_EU
+ if (((waypoint >= 0xF0) && (waypoint < 0x11E)) ||
+ ((gCopyNearestWaypointByPlayerId[playerId] >= 0xF0) && (gCopyNearestWaypointByPlayerId[playerId] < 0x11E)))
+#else
+ if ((waypoint >= 0xF0) && (waypoint < 0x105))
+#endif
+ {
+ player->nearestWaypointId = 0xF0U;
+ } else {
+ player->nearestWaypointId = gCopyNearestWaypointByPlayerId[playerId];
+ if (player->nearestWaypointId < 0) {
+ player->nearestWaypointId = gWaypointCountByPathIndex[0] + player->nearestWaypointId;
+ }
+ }
+ break;
+ case COURSE_ROYAL_RACEWAY:
+ waypoint = gNearestWaypointByPlayerId[playerId];
+ if ((waypoint >= 0x258) && (waypoint < 0x2A4)) {
+ player->nearestWaypointId = 0x258U;
+ } else {
+ player->nearestWaypointId = gCopyNearestWaypointByPlayerId[playerId];
+ if (player->nearestWaypointId < 0) {
+ player->nearestWaypointId = gWaypointCountByPathIndex[0] + player->nearestWaypointId;
+ }
+ }
+ break;
+ case COURSE_DK_JUNGLE:
+ waypoint = gNearestWaypointByPlayerId[playerId];
+ if ((waypoint >= 0xB9) && (waypoint < 0x119)) {
+ player->nearestWaypointId = 0xB9U;
+ } else {
+ player->nearestWaypointId = gNearestWaypointByPlayerId[playerId];
+ if (player->nearestWaypointId < 0) {
+ player->nearestWaypointId = gWaypointCountByPathIndex[0] + player->nearestWaypointId;
+ }
+ }
+ break;
+ case COURSE_BLOCK_FORT:
+ case COURSE_SKYSCRAPER:
+ case COURSE_DOUBLE_DECK:
+ case COURSE_BIG_DONUT:
+ player->nearestWaypointId = 0U;
+ break;
+ default:
+ player->nearestWaypointId = gNearestWaypointByPlayerId[playerId];
+ if (player->nearestWaypointId < 0) {
+ player->nearestWaypointId = gWaypointCountByPathIndex[0] + player->nearestWaypointId;
+ }
+ break;
+ }
+}
+
+void func_80090178(Player *player, s8 playerId, Vec3f arg2, Vec3f arg3) {
+ u16 test;
+ TrackWaypoint *temp_v1;
+ f32 spF8[4] = { 0.0f, 0.0f, -700.0f, 700.0f };
+ f32 spE8[4] = { 700.0f, -700.0f, 0.0f, 0.0f };
+ f32 spD8[4] = { 0.0f, 0.0f, -650.0f, 650.0f };
+ f32 spC8[4] = { 650.0f, -650.0f, 0.0f, 0.0f };
+ f32 spB8[4] = { 0.0f, 0.0f, -400.0f, 400.0f };
+ f32 spA8[4] = { 400.0f, -400.0f, 0.0f, 0.0f };
+ f32 sp98[4] = { 0.0f, 0.0f, -350.0f, 350.0f };
+ f32 sp88[4] = { 350.0f, -350.0f, 0.0f, 0.0f };
+ f32 sp78[4] = { 0.0f, 0.0f, -675.0f, 675.0f };
+ f32 sp68[4] = { 675.0f, -675.0f, 0.0f, 0.0f };
+ f32 sp58[4] = { 0.0f, 0.0f, -550.0f, 550.0f };
+ f32 sp48[4] = { 550.0f, -550.0f, 0.0f, 0.0f };
+ f32 sp38[4] = { 0.0f, 0.0f, -575.0f, 575.0f };
+ f32 sp28[4] = { 575.0f, -575.0f, 0.0f, 0.0f };
+ f32 sp18[4] = { 10.0f, -10.0f, -575.0f, 575.0f };
+ f32 sp08[4] = { 575.0f, -575.0f, 10.0f, -10.0f };
+
+ switch (gCurrentCourseId) {
+ case COURSE_YOSHI_VALLEY:
+ test = player->nearestWaypointId;
+ temp_v1 = &D_80164550[gCopyPathIndexByPlayerId[playerId]][test];
+ arg2[0] = temp_v1->posX;
+ arg2[1] = temp_v1->posY;
+ arg2[2] = temp_v1->posZ;
+ temp_v1 = &D_80164550[gCopyPathIndexByPlayerId[playerId]][(player->nearestWaypointId + 5) % (gWaypointCountByPathIndex[gCopyPathIndexByPlayerId[playerId]] + 1)];
+ arg3[0] = temp_v1->posX;
+ arg3[1] = temp_v1->posY;
+ arg3[2] = temp_v1->posZ;
+ break;
+ case COURSE_BLOCK_FORT:
+ arg2[0] = spF8[playerId];
+ arg2[1] = 0.0f;
+ arg2[2] = spE8[playerId];
+ arg3[0] = spD8[playerId];
+ arg3[1] = 0.0f;
+ arg3[2] = spC8[playerId];
+ break;
+ case COURSE_SKYSCRAPER:
+ arg2[0] = spB8[playerId];
+ arg2[1] = 480.0f;
+ arg2[2] = spA8[playerId];
+ arg3[0] = sp98[playerId];
+ arg3[1] = 480.0f;
+ arg3[2] = sp88[playerId];
+ break;
+ case COURSE_DOUBLE_DECK:
+ arg2[0] = sp78[playerId];
+ arg2[1] = 0.0f;
+ arg2[2] = sp68[playerId];
+ arg3[0] = sp58[playerId];
+ arg3[1] = 0.0f;
+ arg3[2] = sp48[playerId];
+ break;
+ case COURSE_BIG_DONUT:
+ arg2[0] = sp38[playerId];
+ arg2[1] = 200.0f;
+ arg2[2] = sp28[playerId];
+ arg3[0] = sp18[playerId];
+ arg3[1] = 200.0f;
+ arg3[2] = sp08[playerId];
+ break;
+ default:
+ test = player->nearestWaypointId;
+ temp_v1 = &D_80164550[0][test];
+ arg2[0] = temp_v1->posX;
+ arg2[1] = temp_v1->posY;
+ arg2[2] = temp_v1->posZ;
+ temp_v1 = &D_80164550[0][(player->nearestWaypointId + 5) % (gWaypointCountByPathIndex[0] + 1)];
+ arg3[0] = temp_v1->posX;
+ arg3[1] = temp_v1->posY;
+ arg3[2] = temp_v1->posZ;
+ break;
+ }
+}
+
+void func_80090778(Player* player) {
+ s32 playerIndex = get_player_index_for_player(player);
+
+ player->unk_078 = 0;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->unk_0CA |= 8;
+ player->effects &= ~0x10;
+ player->unk_222 = 0;
+ player->unk_08C = 0.0f;
+
+ clean_effect(player, playerIndex);
+ func_8008F86C(player, playerIndex);
+
+ player->unk_DB4.unk0 = 0;
+ 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;
+ player->unk_0A8 = 0;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->rotation[1] = player->unk_0AE;
+ }
+ remove_lightning_effect(player, playerIndex);
+ }
+ player->effects &= ~0x20;
+}
+
+void func_80090868(Player* player) {
+ s32 playerIndex;
+
+ player->unk_078 = 0;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->unk_08C = 0.0f;
+ playerIndex = get_player_index_for_player(player);
+
+ if ((player->unk_0CA & 2) != 2) {
+ player->unk_D98 = 1;
+ player->unk_D9C = 0.0f;
+ player->unk_DA0 = 0.5f;
+ func_8008FF08(player, playerIndex);
+ player->unk_222 = 0;
+ player->unk_0CA |= 2;
+ player->unk_0C8 = 0;
+ if ((player->unk_0DE & 1) == 1) {
+ if ((gCurrentCourseId == COURSE_BOWSER_CASTLE) || (gCurrentCourseId == COURSE_BIG_DONUT)) {
+ player->unk_0CA |= 0x1000;
+ } else {
+ player->unk_0CA |= 0x2000;
+ }
+
+ if ((gCurrentCourseId == COURSE_SHERBET_LAND) || (gCurrentCourseId == COURSE_SKYSCRAPER) || (gCurrentCourseId == COURSE_RAINBOW_ROAD)) {
+ player->unk_0CA &= ~0x3000;
+ }
+ }
+ }
+}
+
+void func_80090970(Player *player, s8 arg1, s8 arg2) {
+ s32 stackPadding0;
+ s32 stackPadding1;
+ Vec3f sp44;
+ Vec3f sp38;
+ TrackWaypoint *waypoint;
+ s32 stackPadding2;
+ s32 stackPadding3;
+
+ player->unk_0C2 = 0x000C;
+ player->unk_078 = 0;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->unk_08C = 0.0f;
+ clean_effect(player, arg1);
+ switch (player->unk_222) {
+ case 0:
+ if ((player->unk_0CA & 1) == 1) {
+ if ((player->unk_0C8 < 0x3C) || ((player->unk_0CA & 2) != 2)) {
+ player->unk_0C8++;
+ if (player->unk_0C8 >= 0x3C) {
+ player->unk_0C8 = 0x003C;
+ }
+ } else {
+ move_f32_towards(&player->pos[1], D_801652A0[arg1] + 100.0f, 0.012f);
+ move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
+ if ((D_801652A0[arg1] + 40.0f) <= player->pos[1]) {
+ player->unk_222 = 1;
+ player->unk_0CA |= 4;
+ player->unk_0C6 = 0x00FF;
+ }
+ }
+ } else if ((player->unk_0CA & 2) == 2) {
+ move_f32_towards(&player->pos[1], player->unk_074 + 100.0f, 0.025f);
+ move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
+ if ((player->unk_074 + 40.0f) <= player->pos[1]) {
+ player->unk_222 = 1;
+ player->unk_0CA |= 4;
+ player->unk_0C6 = 0x00FF;
+ }
+ }
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
+ func_8008FB30(player, arg1);
+ }
+ break;
+ case 1:
+ if (((player->type & PLAYER_HUMAN) == 0x4000) && ((player->type & PLAYER_CPU) == 0)) {
+ func_8009E088(arg1, 0xA);
+ }
+ if ((player->unk_0CA & 1) == 1) {
+ move_f32_towards(&player->pos[1], D_801652A0[arg1] + 40.0f, 0.02f);
+ player->unk_0C6 -= 8;
+ if (player->unk_0C6 < 9) {
+ player->unk_0C6 = 0;
+ player->unk_222 = 2;
+ player->unk_0CA &= ~0x0001;
+ }
+ } else {
+ move_f32_towards(&player->pos[1], player->copy_rotation_y + 40.0f, 0.02f);
+ player->unk_0C6 -= 8;
+ if (player->unk_0C6 < 9) {
+ player->unk_0C6 = 0;
+ player->unk_222 = 2;
+ }
+ }
+ player->unk_0CA &= ~0x2000;
+ break;
+ case 2:
+ func_80090178(player, arg1, sp44, sp38);
+ // Fakematch found by Verti, who knows what's going on here
+ player->rotation[1] = (u16) -get_angle_between_points(sp44, sp38) & 0xFFFF;
+ player->pos[0] = sp44[0];
+ player->pos[1] = sp44[1] + 40.0f;
+ player->pos[2] = sp44[2];
+ player->unk_222 = 3;
+ break;
+ case 3:
+ D_80165330[arg1] = 0;
+ if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_CPU) == 0)) {
+ func_8009E020(arg1, 0x14);
+ }
+ func_80090178(player, arg1, sp44, sp38);
+ player->pos[0] = sp44[0];
+ player->pos[1] = sp44[1] + 40.0f;
+ player->pos[2] = sp44[2];
+ player->pos[2] = player->pos[2] + coss((arg1 * 0x1C70) - player->rotation[1]) * -5.0f;
+ player->pos[0] = player->pos[0] + sins((arg1 * 0x1C70) - player->rotation[1]) * -5.0f;
+ player->unk_0C6 += 8;
+ if (player->unk_0C6 >= 0xF0) {
+ player->unk_0C6 = 0x00FF;
+ player->unk_222 = 4;
+ player->unk_0CA &= ~0x0004;
+ player->unk_0C8 = 0;
+ }
+ break;
+ case 4:
+ if ((player->unk_0C8 == 0x0096) || (player->unk_0C8 == 0x00C8) || (player->unk_0C8 == 0x00FA)) {
+ player->pos[2] = player->pos[2] + coss(-player->rotation[1]) * -10.0f;
+ player->pos[0] = player->pos[0] + sins(-player->rotation[1]) * -10.0f;
+ }
+ if (player->unk_0C8 == 0x00FC) {
+ waypoint = D_80164550[0];
+ player->pos[0] = waypoint->posX;
+ player->pos[1] = waypoint->posY;
+ player->pos[2] = waypoint->posZ;
+ }
+ 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)) {
+ player->unk_0CA &= ~0x1000;
+ if (player->unk_0C8 >= 0x5B) {
+ if (player->type & PLAYER_HUMAN) {
+ func_800C9018(arg1, 0x0100FA28);
+ }
+ if (gModeSelection == BATTLE) {
+ func_8006B8B4(player, arg1);
+ }
+ player->unk_0CA &= ~0x0002;
+ player->unk_0DE &= ~0x0004;
+ if ((player->unk_0CA & 0x80) != 0x80) {
+ player->unk_0CA &= ~0x0008;
+ if ((player->topSpeed * 0.9) <= player->currentSpeed) {
+ func_8008F104(player, arg1);
+ }
+ }
+ }
+ }
+ break;
+ }
+ player->unk_DA0 += 8.0f;
+ if (player->unk_DA0 >= 180.0f) {
+ player->unk_DA0 = 180.0f;
+ }
+ if (player->unk_D98 == 1) {
+ player->unk_D9C += player->unk_DA0;
+ if (player->unk_D9C >= 1820.0f) {
+ player->unk_DA0 = 0.0f;
+ player->unk_D98 *= -1;
+ }
+ }
+ if (player->unk_D98 == -1) {
+ player->unk_D9C -= player->unk_DA0;
+ if (player->unk_D9C <= -1820.0f) {
+ player->unk_DA0 = 0.0f;
+ player->unk_D98 *= -1;
+ }
+ }
+}
+
+s32 func_800910E4(Player *player) {
+ s32 phi_v0 = 0;
+ if ((((((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) || ((player->type & PLAYER_UNKNOWN_0x40) != 0)) || ((player->type & PLAYER_CINEMATIC_MODE) != 0)) || ((player->type & PLAYER_EXISTS) == 0)) {
+ return 1;
+ }
+
+ switch (player->currentItemCopy) {
+ case ITEM_MUSHROOM:
+ case ITEM_DOUBLE_MUSHROOM:
+ case ITEM_TRIPLE_MUSHROOM:
+ case ITEM_SUPER_MUSHROOM:
+ if ((player->effects & 8) != 0) {
+ return 1;
+ }
+ phi_v0 = 0x5F934EC4;
+ goto func_800910E4_label;
+ case ITEM_STAR:
+ phi_v0 = 0xDF934EC4;
+ case ITEM_BOO:
+ phi_v0 = phi_v0 | 0xDF934EC4;
+func_800910E4_label:
+ default:
+ if ((player->effects & phi_v0) != 0) {
+ return 1;
+ }
+ return 0;
+ }
+}
+
+void func_800911B4(Player* player, s8 arg1) {
+ s32 temp_v0;
+
+ player->unk_0AE = player->rotation[1];
+ player->unk_044 |= 0x1800;
+ player->unk_044 &= ~0x0400;
+ player->unk_044 |= 0x2000;
+ player->kartHopJerk = 0.002f;
+ player->kartHopAcceleration = 0.0f;
+ player->kartHopVelocity = 2.6f;
+ player->unk_0B2 = 2;
+ player->unk_0C0 = 0;
+ player->unk_07C = 0;
+ player->unk_078 = 0;
+ D_8018D920[arg1] = 0;
+
+ player->unk_258[31].unk_012 = 0;
+ player->unk_258[31].unk_01E = 0;
+ player->unk_258[31].unk_01C = 0;
+ player->unk_258[30].unk_012 = 0;
+ player->unk_258[30].unk_01E = 0;
+ player->unk_258[30].unk_01C = 0;
+
+ temp_v0 = 2; do {
+ player->unk_258[31 + temp_v0].unk_01C = 0;
+ player->unk_258[31 + temp_v0].unk_01E = 0;
+ player->unk_258[31 + temp_v0].unk_012 = 0;
+ player->unk_258[32 + temp_v0].unk_01C = 0;
+ player->unk_258[32 + temp_v0].unk_01E = 0;
+ player->unk_258[32 + temp_v0].unk_012 = 0;
+ player->unk_258[33 + temp_v0].unk_01C = 0;
+ player->unk_258[33 + temp_v0].unk_01E = 0;
+ player->unk_258[33 + temp_v0].unk_012 = 0;
+
+ temp_v0 += 4;
+ player->unk_258[26 + temp_v0].unk_01C = 0;
+ player->unk_258[26 + temp_v0].unk_01E = 0;
+ player->unk_258[26 + temp_v0].unk_012 = 0;
+ } while (temp_v0 < 10);
+}
+
+void func_80091298(Player *player, s8 arg1) {
+ s16 var_v1;
+ s32 stackPadding1;
+ Vec3f spC = { 27.167f, 25.167f, 23.167f };
+
+ player->unk_044 |= 0x2000;
+ if (player->unk_0B2 == 0) {
+ var_v1 = 0;
+ } else {
+ player->rotation[1] -= 0xE38;
+ D_8018D920[arg1] -= 0xE38;
+ var_v1 = (u16)D_8018D920[arg1] / 3640;
+ }
+ if (((var_v1 == 9) && (player->unk_0B2 == 1)) || ((var_v1 == 0) && (player->unk_0B2 == 2)) || (player->unk_0B2 == 0)) {
+ player->unk_0B2--;
+ if (player->unk_0B2 <= 0) {
+ player->unk_0B2 = 0;
+ }
+ if (player->unk_0B2 == 0) {
+ if ((player->pos[1] - (player->boundingBoxSize + 1.0f)) <= spC[arg1]) {
+ player->pos[1] = (f32) ((f64) (spC[arg1] + player->boundingBoxSize) + 1.08);
+ player->unk_DB4.unk18 = 0;
+ player->unk_0A8 = 0;
+ player->unk_07C = 0;
+ player->unk_0C0 = 0;
+ player->unk_DB4.unkC = 3.0f;
+ player->unk_044 &= ~0x800;
+ player->kartGravity = gKartGravityTable[player->characterId];
+ player->unk_0D4[0] = 0;
+ player->type |= PLAYER_START_SEQUENCE;
+ player->unk_094 = 0.0f;
+ player->unk_08C = 0.0f;
+ player->currentSpeed = 0.0f;
+ if (arg1 == 0) {
+ D_801658BC = 1;
+ }
+ }
+ }
+ }
+}
+
+void func_80091440(s8 arg0) {
+ if ((gPlayers[arg0].unk_044 & 0x800) == 0) {
+ gPlayers[arg0].unk_044 |= 0x2400;
+ gPlayers[arg0].type &= ~0x2000;
+ }
+}
diff --git a/src/code_8008C1D0.h b/src/effects.h
index 32506e55e..3d2d76ff4 100644
--- a/src/code_8008C1D0.h
+++ b/src/effects.h
@@ -1,5 +1,5 @@
-#ifndef CODE_8008C1D0_H
-#define CODE_8008C1D0_H
+#ifndef EFFECTS_H
+#define EFFECTS_H
#include "common_structs.h"
@@ -46,7 +46,7 @@ void func_unnamed32(void);
void func_unnamed33(void);
void func_8008C310(Player*);
void func_unnamed34(void);
-void func_8008C354(Player*, s8);
+void clean_effect(Player*, s8);
void func_8008C528(Player*, s8);
void func_8008C62C(Player*, s8);
void func_8008C6D0(Player*, s8);
@@ -59,9 +59,9 @@ void func_8008D0E4(Player*, s8);
void func_8008D0FC(Player*, s8);
void func_8008D170(Player*, s8);
void func_8008D3B0(Player*, s8);
-void func_8008D3C4(Player*, s8);
-void func_8008D4B4(Player*);
-void func_8008D554(Player*);
+void apply_boost_sound_effect(Player*, s8);
+void apply_boost_effect(Player*);
+void remove_boost_effect(Player*);
void func_8008D570(Player*, s8);
void func_8008D698(Player*, s8);
void func_8008D760(Player*);
@@ -71,32 +71,32 @@ void func_8008D97C(Player*);
void func_8008D9C0(Player*);
void func_8008DABC(Player*, s8);
void func_8008DC08(Player*, s8);
-void func_8008DF98(Player*, s8);
-void func_8008E118(Player*, s8);
-void func_8008E3C0(Player*, s8);
+void apply_hit_rotating_sound_effect(Player*, s8);
+void apply_lightning_effect(Player*, s8);
+void remove_lightning_effect(Player*, s8);
void func_8008E4A4(Player*, s8);
-void func_8008E6C0(Player*, s8);
+void apply_reverse_sound_effect(Player*, s8);
void func_8008E884(Player*, s8);
-void func_8008E8D8(Player*, s8);
-void func_8008EAE0(Player*, s8);
-void func_8008EC34(Player*, s8);
-void func_8008EC88(Player*, s8);
-void func_8008EDC0(Player*);
-void func_8008EEC4(Player*);
-void func_8008EEE4(Player*, s8);
-void func_8008F008(Player*);
-void func_8008F0E8(Player*);
+void apply_hit_by_item_effect(Player*, s8);
+void apply_hit_by_item_sound_effect(Player*, s8);
+void remove_hit_by_item_effect(Player*, s8);
+void apply_boost_ramp_asphalt_sound_effect(Player*, s8);
+void apply_boost_ramp_asphalt_effect(Player*);
+void remove_boost_ramp_asphalt_effect(Player*);
+void apply_boost_ramp_wood_sound_effect(Player*, s8);
+void apply_boost_ramp_wood_effect(Player*);
+void remove_boost_ramp_wood_effect(Player*);
void func_8008F104(Player*, s8);
void func_8008F1B8(Player*, s8);
void func_8008F3E0(Player*);
void func_8008F3F4(Player*, s8);
void func_8008F494(Player*, s8);
void func_8008F5A4(Player*, s8);
-void func_8008F650(Player*, s8);
-void func_8008F778(Player*, s8);
+void apply_star_effect(Player*, s8);
+void apply_star_sound_effect(Player*, s8);
void func_8008F86C(Player*, s8);
-void func_8008F8DC(Player*, s8);
-void func_8008FA38(Player*, s8);
+void apply_boo_effect(Player*, s8);
+void apply_boo_sound_effect(Player*, s8);
void func_8008FB30(Player*, s8);
void func_8008FC1C(Player*);
void func_8008FC64(Player*, s8);
diff --git a/src/hud_renderer.c b/src/hud_renderer.c
index 59ccf9ffc..ceb9fc152 100644
--- a/src/hud_renderer.c
+++ b/src/hud_renderer.c
@@ -2840,7 +2840,7 @@ void func_80050E34(s32 playerId, s32 arg1) {
} else {
gDPLoadTLUT_pal256(gDisplayListHead++, gPortraitTLUTs[characterId]);
gSPDisplayList(gDisplayListHead++, D_0D007DB8);
- if (player->effects & 0x200) {
+ if (player->effects & STAR_EFFECT) {
func_8004B614((s32) D_801656C0, (s32) D_801656D0, (s32) D_801656E0, 0x00000080, 0x00000080, 0x00000080, (s32) gObjectList[objectIndex].unk_0A0);
} else {
set_transparency((s32) gObjectList[objectIndex].unk_0A0);
diff --git a/src/main.c b/src/main.c
index c7594763b..f62fb7394 100644
--- a/src/main.c
+++ b/src/main.c
@@ -19,7 +19,7 @@
#include "race_logic.h"
#include "skybox_and_splitscreen.h"
#include "hud_renderer.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
#include "code_80281780.h"
#include "audio/external.h"
#include "code_800029B0.h"
diff --git a/src/player_controller.c b/src/player_controller.c
index 82b62e999..db7a5401b 100644
--- a/src/player_controller.c
+++ b/src/player_controller.c
@@ -9,7 +9,7 @@
#include "racing/memory.h"
#include "math_util.h"
#include "render_player.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
#include "collision.h"
#include "waypoints.h"
#include "audio/external.h"
@@ -656,7 +656,7 @@ void func_80028864(Player *player, Camera *camera, s8 arg2, s8 arg3) {
((player->effects & 0x80000) == 0x80000) ||
((player->effects & 0x800000) == 0x800000) ||
((player->effects & 0x01000000) == 0x01000000) ||
- ((player->effects & 0x02000000) == 0x02000000) ||
+ ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
((player->effects & 0x20000) == 0x20000) ||
(player->unk_044 & 0x800)) {
func_8002E594(player, camera, arg3, arg2);
@@ -689,7 +689,7 @@ void func_80028C44(Player *player, Camera *camera, s8 arg2, s8 arg3) {
((player->effects & 0x80000) == 0x80000) ||
((player->effects & 0x800000) == 0x800000) ||
((player->effects & 0x1000000) == 0x1000000) ||
- ((player->effects & 0x2000000) == 0x2000000) ||
+ ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
((player->effects & 0x20000) == 0x20000) ||
((player->unk_044 & 0x800) != 0)) {
func_8002E594(player, camera, arg3, arg2);
@@ -716,7 +716,7 @@ void func_80028D3C(Player *player, Camera *camera, s8 arg2, s8 arg3) {
((player->effects & 0x80000) == 0x80000) ||
((player->effects & 0x800000) == 0x800000) ||
((player->effects & 0x1000000) == 0x1000000) ||
- ((player->effects & 0x2000000) == 0x2000000) ||
+ ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
((player->effects & 0x20000) == 0x20000) ||
((player->unk_044 & 0x800) != 0)) {
func_8002E594(player, camera, arg3, arg2);
@@ -966,7 +966,7 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) {
}
if (((player->effects & 0x400) == 0x400)
|| ((player->effects & 0x01000000) == 0x01000000)
- || ((player->effects & 0x02000000) == 0x02000000)
+ || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT)
|| (player->effects & 0x10000)
|| (player->effects & 0x80)
|| (player->effects & 0x40)) {
@@ -1102,15 +1102,15 @@ void func_80029B4C(Player *player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) {
if (((player->effects & 8) == 8) && ((player->unk_0CA & 2) == 2)) {
player->slopeAccel = (s16) ((s32) player->unk_D9C);
}
- player->unk_0F8 = get_surface_type(player->unk_110.unk3A) & 0xFF;
- if (player->unk_0F8 == 0xFE) {
- if (((player->effects & 0x100000) != 0x100000) && ((player->effects & 8) != 8)) {
- player->statusEffects |= 0x800000;
+ player->surfaceType = get_surface_type(player->unk_110.unk3A) & 0xFF;
+ if (player->surfaceType == BOOST_RAMP_ASPHALT) {
+ if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != BOOST_RAMP_ASPHALT_EFFECT) && ((player->effects & 8) != 8)) {
+ player->soundEffects |= BOOST_RAMP_ASPHALT_SOUND_EFFECT;
}
}
- if (player->unk_0F8 == 0xFC) {
- if (((player->effects & 4) != 4) && ((player->effects & 8) != 8)) {
- player->statusEffects |= 0x8000;
+ if (player->surfaceType == BOOST_RAMP_WOOD) {
+ if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) && ((player->effects & 8) != 8)) {
+ player->soundEffects |= BOOST_RAMP_WOOD_SOUND_EFFECT;
}
}
}
@@ -1157,11 +1157,11 @@ void func_8002A194(Player *player, f32 arg1, f32 arg2, f32 arg3) {
player->unk_1FC = (player->boundingBoxCorners[1].cornerGroundY + player->boundingBoxCorners[0].cornerGroundY) / 2;
player->unk_1F8 = (player->boundingBoxCorners[3].cornerGroundY + player->boundingBoxCorners[2].cornerGroundY) / 2;
}
- player->unk_0F8 = (u8)get_surface_type(player->unk_110.unk3A);
- player->boundingBoxCorners[3].surfaceType = player->unk_0F8;
- player->boundingBoxCorners[2].surfaceType = player->unk_0F8;
- player->boundingBoxCorners[1].surfaceType = player->unk_0F8;
- player->boundingBoxCorners[0].surfaceType = player->unk_0F8;
+ player->surfaceType = (u8)get_surface_type(player->unk_110.unk3A);
+ player->boundingBoxCorners[3].surfaceType = player->surfaceType;
+ player->boundingBoxCorners[2].surfaceType = player->surfaceType;
+ player->boundingBoxCorners[1].surfaceType = player->surfaceType;
+ player->boundingBoxCorners[0].surfaceType = player->surfaceType;
var_f20 = (gCharacterSize[player->characterId] * 18) + 1;
temp_f0 = (player->unk_23C - player->unk_230);
player->unk_206 = -func_802B7C40(temp_f0 / var_f20);
@@ -1183,14 +1183,14 @@ void func_8002A194(Player *player, f32 arg1, f32 arg2, f32 arg3) {
} else {
player->boundingBoxCorners[3].unk_14 &= ~1;
}
- if (player->unk_0F8 == 0x00FE) {
- if (((player->effects & 0x100000) != 0x100000) && ((player->effects & 8) != 8)) {
- player->statusEffects |= 0x800000;
+ if (player->surfaceType == BOOST_RAMP_ASPHALT) {
+ if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != BOOST_RAMP_ASPHALT_EFFECT) && ((player->effects & 8) != 8)) {
+ player->soundEffects |= BOOST_RAMP_ASPHALT_SOUND_EFFECT;
}
}
- if (player->unk_0F8 == 0x00FC) {
- if (((player->effects & 4) != 4) && ((player->effects & 8) != 8)) {
- player->statusEffects |= 0x8000;
+ if (player->surfaceType == BOOST_RAMP_WOOD) {
+ if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) && ((player->effects & 8) != 8)) {
+ player->soundEffects |= BOOST_RAMP_WOOD_SOUND_EFFECT;
}
}
}
@@ -1230,8 +1230,8 @@ void func_8002A5F4(Vec3f arg0, f32 arg1, Vec3f arg2, f32 arg3, f32 arg4) {
}
void func_8002A704(Player *player, s8 arg1) {
- player->effects |= 0x2000;
- player->statusEffects &= ~0x02000000;
+ player->effects |= BOOST_EFFECT;
+ player->soundEffects &= ~0x02000000;
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
func_800C90F4(0U, (player->characterId * 0x10) + 0x29008001);
func_800C9060(arg1, 0x1900A40BU);
@@ -1377,11 +1377,11 @@ void func_8002AB70(Player *player) {
move_f32_towards(&player->unk_DAC, 1.0f, 0.07f);
}
}
- if ((player->effects & 0x100000) == 0x100000) {
+ if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) {
move_f32_towards(&player->unk_DAC, 20.0f, 1.0f);
player->kartGravity = 3500.0f;
}
- if ((player->effects & 4) == 4) {
+ if ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT) {
move_f32_towards(&player->unk_DAC, 25.0f, 1.0f);
player->kartGravity = 1800.0f;
}
@@ -1400,7 +1400,7 @@ void func_8002AB70(Player *player) {
if ((player->effects & 0x01000000) == 0x01000000) {
player->kartGravity = 550.0f;
}
- if ((player->effects & 0x02000000) == 0x02000000) {
+ if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) {
player->kartGravity = 800.0f;
}
}
@@ -1515,126 +1515,126 @@ void func_8002B218(Player *player) {
}
}
-void func_8002B308(Player *player, s8 arg1, UNUSED s8 arg2) {
- if ((player->statusEffects & 2) == 2) {
- func_8008EAE0(player, arg1);
+void apply_sound_effect(Player *player, s8 playerId, UNUSED s8 arg2) {
+ if ((player->soundEffects & 2) == 2) {
+ apply_hit_by_item_sound_effect(player, playerId);
}
- if ((player->statusEffects & 4) == 4) {
- func_8008C528(player, arg1);
+ if ((player->soundEffects & 4) == 4) {
+ func_8008C528(player, playerId);
}
- if ((player->statusEffects & 1) == 1) {
- func_8008CDC0(player, arg1);
+ if ((player->soundEffects & 1) == 1) {
+ func_8008CDC0(player, playerId);
}
- if ((player->statusEffects & BOOST_EFFECT) == BOOST_EFFECT) {
- func_8008D3C4(player, arg1);
+ if ((player->soundEffects & BOOST_SOUND_EFFECT) == BOOST_SOUND_EFFECT) {
+ apply_boost_sound_effect(player, playerId);
}
- if ((player->statusEffects & 0x02000000) == 0x02000000) {
- func_8002A704(player, arg1);
+ if ((player->soundEffects & 0x02000000) == 0x02000000) {
+ func_8002A704(player, playerId);
}
- if ((player->statusEffects & 0x1000) == 0x1000) {
- func_8008D570(player, arg1);
+ if ((player->soundEffects & 0x1000) == 0x1000) {
+ func_8008D570(player, playerId);
}
- if ((player->statusEffects & 0x20000) == 0x20000) {
- func_8008D7B0(player, arg1);
+ if ((player->soundEffects & 0x20000) == 0x20000) {
+ func_8008D7B0(player, playerId);
}
- if ((player->statusEffects & 0x100) == 0x100) {
- func_8008DABC(player, arg1);
+ if ((player->soundEffects & 0x100) == 0x100) {
+ func_8008DABC(player, playerId);
}
- if ((player->statusEffects & HIT_ROTATING_EFFECT) == HIT_ROTATING_EFFECT) {
- func_8008DF98(player, arg1);
+ if ((player->soundEffects & HIT_ROTATING_SOUND_EFFECT) == HIT_ROTATING_SOUND_EFFECT) {
+ apply_hit_rotating_sound_effect(player, playerId);
}
- if ((player->statusEffects & 0x200000) == 0x200000) {
- func_8008C73C(player, arg1);
+ if ((player->soundEffects & 0x200000) == 0x200000) {
+ func_8008C73C(player, playerId);
}
- if ((player->statusEffects & REVERSE_EFFECT) == REVERSE_EFFECT) {
- func_8008E6C0(player, arg1);
+ if ((player->soundEffects & REVERSE_SOUND_EFFECT) == REVERSE_SOUND_EFFECT) {
+ apply_reverse_sound_effect(player, playerId);
}
- if ((player->statusEffects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) {
- func_8008EAE0(player, arg1);
+ if ((player->soundEffects & HIT_BY_ITEM_SOUND_EFFECT) == HIT_BY_ITEM_SOUND_EFFECT) {
+ apply_hit_by_item_sound_effect(player, playerId);
}
- if ((player->statusEffects & 0x00800000) == 0x00800000) {
- func_8008EC88(player, arg1);
+ if ((player->soundEffects & BOOST_RAMP_ASPHALT_SOUND_EFFECT) == BOOST_RAMP_ASPHALT_SOUND_EFFECT) {
+ apply_boost_ramp_asphalt_sound_effect(player, playerId);
}
- if ((player->statusEffects & 0x8000) == 0x8000) {
- func_8008EEE4(player, arg1);
+ if ((player->soundEffects & BOOST_RAMP_WOOD_SOUND_EFFECT) == BOOST_RAMP_WOOD_SOUND_EFFECT) {
+ apply_boost_ramp_wood_sound_effect(player, playerId);
}
- if ((player->statusEffects & STAR_EFFECT) == STAR_EFFECT) {
- func_8008F778(player, arg1);
+ if ((player->soundEffects & STAR_SOUND_EFFECT) == STAR_SOUND_EFFECT) {
+ apply_star_sound_effect(player, playerId);
}
- if ((player->statusEffects & BOO_EFFECT) == BOO_EFFECT) {
- func_8008FA38(player, arg1);
+ if ((player->soundEffects & BOO_SOUND_EFFECT) == BOO_SOUND_EFFECT) {
+ apply_boo_sound_effect(player, playerId);
}
- if (player->statusEffects & 0x80) {
- func_8008D0FC(player, arg1);
+ if (player->soundEffects & 0x80) {
+ func_8008D0FC(player, playerId);
}
- if (player->statusEffects & 0x80000) {
- func_8008E6C0(player, arg1);
+ if (player->soundEffects & 0x80000) {
+ apply_reverse_sound_effect(player, playerId);
}
}
-void func_8002B5C0(Player *player, UNUSED s8 arg1, UNUSED s8 arg2) {
+void func_8002B5C0(Player *player, UNUSED s8 playerId, UNUSED s8 arg2) {
if (((player->unk_0CA & 8) != 0) || ((player->unk_0CA & 2) != 0)) {
- player->statusEffects &= 0xFE1D0478;
+ player->soundEffects &= 0xFE1D0478;
}
if ((player->effects & 0x400) == 0x400) {
- player->statusEffects &= 0xFF5D457E;
+ player->soundEffects &= 0xFF5D457E;
}
if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) {
- player->statusEffects &= 0xFF5F457E;
+ player->soundEffects &= 0xFF5F457E;
}
if ((player->effects & 0x800) == 0x800) {
- player->statusEffects &= 0xFF5D457E;
+ player->soundEffects &= 0xFF5D457E;
}
if ((player->unk_044 & 0x4000) != 0) {
- player->statusEffects &= 0xFF5D457E;
+ player->soundEffects &= 0xFF5D457E;
}
if ((player->effects & 0x80000) == 0x80000) {
- player->statusEffects &= 0xFE1D4478;
+ player->soundEffects &= 0xFE1D4478;
}
if ((player->effects & 0x800000) == 0x800000) {
- player->statusEffects &= 0xFE1D0478;
+ player->soundEffects &= 0xFE1D0478;
}
if ((player->effects & 0x04000000) == 0x04000000) {
- player->statusEffects &= 0xFE1D0578;
+ player->soundEffects &= 0xFE1D0578;
}
if ((player->effects & 0x01000000) == 0x01000000) {
- player->statusEffects &= 0xFE1D4478;
+ player->soundEffects &= 0xFE1D4478;
}
- if ((player->effects & 0x02000000) == 0x02000000) {
- player->statusEffects &= 0xFE1D4478;
+ if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) {
+ player->soundEffects &= 0xFE1D4478;
}
- if ((player->effects & 0x100000) == 0x100000) {
- player->statusEffects &= 0xFE1D0478;
+ if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) {
+ player->soundEffects &= 0xFE1D0478;
}
- if ((player->effects & 4) == 4) {
- player->statusEffects &= 0xFE1D0478;
+ if ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT) {
+ player->soundEffects &= 0xFE1D0478;
}
if ((player->effects & 0x10000) == 0x10000) {
- player->statusEffects &= 0xFE1D0478;
+ player->soundEffects &= 0xFE1D0478;
}
- if ((player->effects & 0x200) == 0x200) {
- player->statusEffects &= 0xFE9D8478;
+ if ((player->effects & STAR_EFFECT) == STAR_EFFECT) {
+ player->soundEffects &= 0xFE9D8478;
}
- if ((player->effects & 0x80000000) == 0x80000000) {
- player->statusEffects &= 0xFE9D8678;
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
+ player->soundEffects &= 0xFE9D8678;
}
if ((player->effects & 0x4000) == 0x4000) {
- player->statusEffects &= 0xFF5D45FF;
+ player->soundEffects &= 0xFF5D45FF;
}
if ((player->effects & 0x20000) == 0x20000) {
- player->statusEffects &= 0xFE1D0478;
+ player->soundEffects &= 0xFE1D0478;
}
}
-void func_8002B830(Player *player, s8 arg1, s8 arg2) {
- if (player->statusEffects != 0) {
- func_8002B5C0(player, arg1, arg2);
+void func_8002B830(Player *player, s8 playerId, s8 arg2) {
+ if (player->soundEffects != 0) {
+ func_8002B5C0(player, playerId, arg2);
}
- if (player->statusEffects != 0) {
- func_8002B308(player, arg1, arg2);
+ if (player->soundEffects != 0) {
+ apply_sound_effect(player, playerId, arg2);
}
if ((player->unk_044 & 0x400) != 0) {
- func_800911B4(player, arg1);
+ func_800911B4(player, playerId);
}
}
@@ -1873,22 +1873,22 @@ void func_8002C17C(Player *player, s8 playerId) {
}
break;
case COURSE_FRAPPE_SNOWLAND:
- if ((player->unk_0F8 == 0x000B) && (D_80165330[playerId] == 0)) {
+ if ((player->surfaceType == SNOW_OFFROAD) && (D_80165330[playerId] == 0)) {
D_80165330[playerId] = 1;
gCopyNearestWaypointByPlayerId[playerId] = gNearestWaypointByPlayerId[playerId];
gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId];
- } else if (player->unk_0F8 != 0x000B) {
+ } else if (player->surfaceType != SNOW_OFFROAD) {
D_80165330[playerId] = 0;
gCopyNearestWaypointByPlayerId[playerId] = gNearestWaypointByPlayerId[playerId];
gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId];
}
break;
case COURSE_ROYAL_RACEWAY:
- if (((player->effects & 0x100000) != 0) && (D_80165330[playerId] == 0)) {
+ if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != 0) && (D_80165330[playerId] == 0)) {
D_80165330[playerId] = 1;
gCopyNearestWaypointByPlayerId[playerId] = gNearestWaypointByPlayerId[playerId];
gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId];
- } else if (((player->effects & 0x100000) == 0) && !(player->effects & 8)) {
+ } else if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == 0) && !(player->effects & 8)) {
D_80165330[playerId] = 0;
gCopyNearestWaypointByPlayerId[playerId] = gNearestWaypointByPlayerId[playerId];
gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId];
@@ -1962,7 +1962,7 @@ void func_8002C4F8(Player *player, s8 arg1) {
func_80090868(player);
}
}
- if ((player->type & PLAYER_CPU) && (player->unk_0F8 == 0x00FD) && !(player->effects & 8)) {
+ if ((player->type & PLAYER_CPU) && (player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & 8)) {
func_80090778(player);
func_80090868(player);
}
@@ -1972,7 +1972,7 @@ void func_8002C4F8(Player *player, s8 arg1) {
void func_8002C7E4(Player *player, s8 arg1, s8 arg2) {
if ((player->unk_046 & 1) != 1) {
if ((player->effects & 0x8000) == 0x8000) {
- if ((player->effects & 0x2000) != 0x2000) {
+ if ((player->effects & BOOST_EFFECT) != BOOST_EFFECT) {
func_8002B9CC(player, arg1, arg2);
}
player->unk_044 &= ~0x0001;
@@ -1985,8 +1985,8 @@ void func_8002C7E4(Player *player, s8 arg1, s8 arg2) {
if ((player->unk_046 & 4) != 4) {
player->unk_046 |= 4;
player->unk_046 |= 0x40;
- if (player->effects & 0x2000) {
- func_8008D554(player);
+ if (player->effects & BOOST_EFFECT) {
+ remove_boost_effect(player);
}
}
}
@@ -2017,7 +2017,7 @@ void func_8002C954(Player *player, s8 arg1, Vec3f arg2) {
temp_f0 = player->pos[1] - player->unk_074;
if (((((player->effects & 0x10000) != 0x10000) &&
- ((player->effects & 0x100000) == 0x100000)) ||
+ ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT)) ||
((((temp_f0 >= 20.0f) ||
(temp_f0 < (-1.0f))) &&
((player->effects & 0x10000) == 0)) &&
@@ -2068,13 +2068,13 @@ void func_8002C954(Player *player, s8 arg1, Vec3f arg2) {
}
}
}
- if (player->effects & 0x2000) {
- func_8008D554(player);
+ if (player->effects & BOOST_EFFECT) {
+ remove_boost_effect(player);
player->unk_08C /= 2;
}
}
-void func_8002CD48(Player *player, s8 arg1, s8 arg2) {
+void apply_effect(Player *player, s8 arg1, s8 arg2) {
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) {
func_80090970(player, arg1, arg2);
}
@@ -2084,29 +2084,29 @@ void func_8002CD48(Player *player, s8 arg1, s8 arg2) {
if (player->unk_044 & 0x4000) {
func_8008D170(player, arg1);
}
- if ((player->effects & 0x2000) == 0x2000) {
- func_8008D4B4(player);
+ if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
+ apply_boost_effect(player);
}
- if ((player->effects & 0x100000) == 0x100000) {
- func_8008EDC0(player);
+ if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) {
+ apply_boost_ramp_asphalt_effect(player);
}
- if ((player->effects & 4) == 4) {
- func_8008F008(player);
+ if ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT) {
+ apply_boost_ramp_wood_effect(player);
}
if ((s32)(player->effects & 0x04000000) == 0x04000000) {
func_8008DC08(player, arg1);
}
if ((player->effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) {
- func_8008E118(player, arg1);
+ apply_lightning_effect(player, arg1);
}
if ((player->effects & 0x10000) == 0x10000) {
func_8008F3F4(player, arg1);
}
- if ((player->effects & 0x200) == 0x200) {
- func_8008F650(player, arg1);
+ if ((player->effects & STAR_EFFECT) == STAR_EFFECT) {
+ apply_star_effect(player, arg1);
}
- if ((player->effects & 0x80000000) == 0x80000000) {
- func_8008F8DC(player, arg1);
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
+ apply_boo_effect(player, arg1);
}
if (((player->effects & 0x20000000) == 0x20000000) && (player->unk_228 >= 0x64)) {
func_80031F48(player, 4.0f);
@@ -2120,8 +2120,8 @@ void func_8002CD48(Player *player, s8 arg1, s8 arg2) {
if ((player->effects & 0x01000000) == 0x01000000) {
func_8008E4A4(player, arg1);
}
- if ((player->effects & 0x02000000) == 0x02000000) {
- func_8008E8D8(player, arg1);
+ if ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) {
+ apply_hit_by_item_effect(player, arg1);
}
if ((player->effects & 0x4000) == 0x4000) {
func_8008F1B8(player, arg1);
@@ -2134,10 +2134,10 @@ void func_8002CD48(Player *player, s8 arg1, s8 arg2) {
func_80031F48(player, 10.0f);
}
if (D_800DC510 != 5) {
- if (player->statusEffects & 0x04000000) {
+ if (player->soundEffects & 0x04000000) {
func_8008FC64(player, arg1);
}
- if (player->statusEffects & 0x08000000) {
+ if (player->soundEffects & 0x08000000) {
func_8008FCDC(player, arg1);
}
}
@@ -2237,7 +2237,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
func_8002BF4C(player, playerId);
}
- func_8002CD48(player, playerId, arg2);
+ apply_effect(player, playerId, arg2);
if (((player->effects & 0x20000000) == 0x20000000) && (player->unk_228 >= 0x64)) {
sp7C = 2;
}
@@ -2248,7 +2248,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
player->unk_064[0] *= -1.0f;
player->unk_064[2] *= -1.0f;
}
- if ((player->boundingBoxCorners[2].surfaceType == 1) && (player->boundingBoxCorners[3].surfaceType == 1)) {
+ if ((player->boundingBoxCorners[2].surfaceType == ASPHALT) && (player->boundingBoxCorners[3].surfaceType == ASPHALT)) {
spB4 = (-1 * (player->unk_064[0] + sp16C[0])) + ((-player->unk_110.orientationVector[0] * player->kartGravity) * 0.925);
spB0 = (-player->unk_110.orientationVector[1] * player->kartGravity);
spAC = (-1 * (player->unk_064[2] + sp16C[2])) + ((-player->unk_110.orientationVector[2] * player->kartGravity) * 0.925);
@@ -2295,7 +2295,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
sp98[2] = player->velocity[2];
if (((player->unk_10C < 3)
&& (((s32) player->unk_256) < 3))
- || ((player->effects & 0x2000) == 0x2000)) {
+ || ((player->effects & BOOST_EFFECT) == BOOST_EFFECT)) {
if (((player->unk_07C >> 16) >= 0x28)
|| ((player->unk_07C >> 16) < (-0x27))) {
@@ -2362,7 +2362,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
player->unk_DB4.unk18 = 0;
player->unk_0B6 |= 0x100;
if ((((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)
- && ((player->effects & 0x100000) == 0x100000))
+ && ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT))
&& ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB))
func_800C9060(playerId, 0x1900A60AU);
@@ -2508,7 +2508,7 @@ void func_8002E4C4(Player *player) {
player->velocity[1] = 0.0f;
}
-void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
+void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) {
Vec3f spEC = {0.0f, 0.0f, 1.0f};
Vec3f spE0 = {0.0f, 0.0f, 0.0f};
Vec3f spD4 = {0.0f, 0.0f, 0.0f};
@@ -2530,7 +2530,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
Vec3f sp54;
Vec3f sp48;
s16 sp46;
- func_8002B830(player, arg3, arg2);
+ func_8002B830(player, playerId, arg2);
if ((((((((player->effects & 0x80) == 0x80)
|| ((player->effects & 0x40) == 0x40))
|| ((player->effects & 0x4000) == 0x4000))
@@ -2542,9 +2542,9 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
} else {
sp46 = 0;
}
- func_8002CD48(player, arg3, arg2);
+ apply_effect(player, playerId, arg2);
func_8002AB70(player);
- func_8002FCA8(player, arg3);
+ func_8002FCA8(player, playerId);
if ((((player->effects & 0x80) == 0x80)
|| ((player->effects & 0x40) == 0x40))
|| ((player->effects & 0x20000) == 0x20000)) {
@@ -2556,14 +2556,14 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
sp7C = -1 * player->kartGravity;
sp78 = -1 * player->unk_064[2];
}
- func_8002C7E4(player, arg3, arg2);
+ func_8002C7E4(player, playerId, arg2);
if (sp46 == 1) {
calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060, (s16) ((s32) player->rotation[1]));
calculate_orientation_matrix(player->unk_150, player->unk_058, player->unk_05C, player->unk_060, (s16) ((s32) player->unk_0AE));
} else {
calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060, (s16) ((s32) player->rotation[1]));
}
- spEC[2] = func_80030150(player, arg3);
+ spEC[2] = func_80030150(player, playerId);
if (sp46 == 1) {
mtxf_translate_vec3f_mat3(spEC, player->unk_150);
} else {
@@ -2576,7 +2576,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
&& ((player->unk_256) < 3)
&& ((player->effects & 0x400) != 0x400)
&& ((player->effects & 0x01000000) != 0x01000000)
- && ((player->effects & 0x02000000) != 0x02000000)) {
+ && ((player->effects & HIT_BY_ITEM_EFFECT) != HIT_BY_ITEM_EFFECT)) {
sp54[0] += (((((spEC[0] + sp80) + spD4[0])) - (sp54[0] * (0.12 * player->kartFriction))) / 6000) / ((player->unk_20C * 5.0f) + 1.0f);
sp54[2] += (((((spEC[2] + sp78) + spD4[2])) - (sp54[2] * (0.12 * player->kartFriction))) / 6000) / ((player->unk_20C * 5.0f) + 1.0f);
} else {
@@ -2599,9 +2599,9 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
player->copy_rotation_y = player->pos[1];
player->copy_rotation_z = player->pos[2];
- spD0 = posX + player->velocity[0] + D_8018CE10[arg3].unk_04[0];
+ spD0 = posX + player->velocity[0] + D_8018CE10[playerId].unk_04[0];
spCC = posY + player->velocity[1];
- spC8 = posZ + player->velocity[2] + D_8018CE10[arg3].unk_04[2];
+ spC8 = posZ + player->velocity[2] + D_8018CE10[playerId].unk_04[2];
func_8002AAC0(player);
spCC += player->kartHopVelocity;
func_802AD950(&player->unk_110, player->boundingBoxSize, spD0, spCC, spC8, player->copy_rotation_x, player->copy_rotation_y, player->copy_rotation_z);
@@ -2616,7 +2616,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
player->effects &= ~8;
if ((((player->effects & 0x400) != 0x400)
&& ((player->effects & 0x01000000) != 0x01000000))
- && ((player->effects & 0x02000000) != 0x02000000)) {
+ && ((player->effects & HIT_BY_ITEM_EFFECT) != HIT_BY_ITEM_EFFECT)) {
if (player->unk_0C2 >= 0x1C) {
if (player->unk_0C2 >= 0x32) {
player->unk_0C2 = 0x0032;
@@ -2625,7 +2625,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
player->unk_0B6 |= 0x100;
player->unk_DB4.unkC = 3.0f;
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
- func_800CADD0((u8) arg3, ((f32) player->unk_0C2) / 50.0f);
+ func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f);
}
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
player->unk_044 |= 0x100;
@@ -2637,7 +2637,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
player->unk_DB4.unkC = 2.0f;
player->unk_DB4.unk18 = 0;
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
- func_800CADD0((u8) arg3, ((f32) player->unk_0C2) / 50.0f);
+ func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f);
}
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
player->unk_044 |= 0x100;
@@ -2650,7 +2650,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
player->unk_0C2 = 0x0032;
}
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
- func_800CADD0((u8) arg3, ((f32) player->unk_0C2) / 20.0f);
+ func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 20.0f);
}
if (player->unk_0C2 >= 0x28) {
player->unk_0C2 = 0x0014;
@@ -2680,13 +2680,13 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
sp74 = player->unk_110.unk3C[0];
if (sp74 < 0.0f) {
func_8003F734(player, sp48, sp54, &sp74, &spD0, &spCC, &spC8);
- func_8002C954(player, arg3, sp54);
+ func_8002C954(player, playerId, sp54);
func_80031F48(player, 6.0f);
}
sp74 = player->unk_110.unk3C[1];
if (sp74 < 0.0f) {
func_8003FBAC(player, sp48, sp54, &sp74, &spD0, &spCC, &spC8);
- func_8002C954(player, arg3, sp54);
+ func_8002C954(player, playerId, sp54);
func_80031F48(player, 6.0f);
}
sp74 = player->unk_110.unk3C[0];
@@ -2705,10 +2705,10 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
}
if (((func_802ABDB8(player->unk_110.unk3A) != 0) && ((player->effects & 0x10000) != 0x10000)) && (((player->unk_094 / 18.0f) * 216.0f) >= 20.0f)) {
if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) {
- func_8008F494(player, arg3);
+ func_8008F494(player, playerId);
}
} else if (((!(player->effects & 8)) && (func_802ABDB8(player->unk_110.unk3A) == 0)) && (player->effects & 0x10000)) {
- func_8008F5A4(player, arg3);
+ func_8008F5A4(player, playerId);
}
player->unk_074 = func_802ABE30(spD0, spCC, spC8, player->unk_110.unk3A);
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && (((gActiveScreenMode == SCREEN_MODE_1P) || (gActiveScreenMode == SCREEN_MODE_2P_SPLITSCREEN_VERTICAL)) || (gActiveScreenMode == SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL))) {
@@ -2716,7 +2716,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
} else {
func_8002A194(player, spD0, spCC, spC8);
}
- func_8002AE38(player, arg3, posX, posZ, spD0, spC8);
+ func_8002AE38(player, playerId, posX, posZ, spD0, spC8);
temp = (sp54[0] * sp54[0]) + (sp54[2] * sp54[2]);
player->unk_22C = player->unk_094;
player->unk_094 = sqrtf(temp);
@@ -2748,10 +2748,10 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
player->unk_094 = gKartTopSpeedTable[player->characterId];
}
}
- func_8002C4F8(player, arg3);
+ func_8002C4F8(player, playerId);
}
-void control_cpu_movement(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
+void control_cpu_movement(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) {
Vec3f spF4 = {0.0f, 0.0f, 1.0f};
UNUSED Vec3f spE8 = {0.0f, 0.0f, 0.0f};
Vec3f spDC = {0.0f, 0.0f, 0.0f};
@@ -2771,17 +2771,17 @@ void control_cpu_movement(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg
f32 test;
player->effects |= 0x1000;
player->unk_044 |= 0x10;
- test = D_80164510[arg3];
+ test = D_80164510[playerId];
player->unk_204 = 0;
player->effects &= ~0x10;
- func_8002B830(player, arg3, arg2);
- func_8002CD48(player, arg3, arg2);
+ func_8002B830(player, playerId, arg2);
+ apply_effect(player, playerId, arg2);
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;
- spF4[2] = func_80030150(player, arg3);
+ spF4[2] = func_80030150(player, playerId);
mtxf_translate_vec3f_mat3(spF4, player->orientationMatrix);
sp68[0] = player->velocity[0];
sp68[1] = 0;
@@ -2814,9 +2814,9 @@ void control_cpu_movement(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg
player->velocity[0] = sp68[0];
player->velocity[1] = sp68[1];
player->velocity[2] = sp68[2];
- D_80165070[arg3][0] = sp68[0];
- D_80165070[arg3][1] = sp68[1];
- D_80165070[arg3][2] = sp68[2];
+ D_80165070[playerId][0] = sp68[0];
+ D_80165070[playerId][1] = sp68[1];
+ D_80165070[playerId][2] = sp68[2];
if (gKartTopSpeedTable[player->characterId] < player->unk_094) {
temp_f0_2 = gKartTopSpeedTable[player->characterId] / player->unk_094;
player->velocity[0] *= temp_f0_2;
@@ -2939,7 +2939,7 @@ void func_8002FCA8(Player *player, s8 arg1) {
s32 var_v1;
var_f0 = 0.0f;
- if ((player->effects & 0x200) != 0x200) {
+ if ((player->effects & STAR_EFFECT) != STAR_EFFECT) {
if ((s32) player->boundingBoxCorners[3].surfaceType < 0xF) {
var_f0 += D_800E2A90[player->characterId][player->boundingBoxCorners[3].surfaceType];
}
@@ -3002,10 +3002,10 @@ void func_8002FE84(Player *player, f32 arg1) {
var_f0 += (temp_lo * 0.025) / 1.2;
}
player->unk_098 = arg1 * (1.0f - var_f0);
- if (player->boundingBoxCorners[3].surfaceType == 8) {
+ if (player->boundingBoxCorners[3].surfaceType == GRASS) {
var_f0 += D_800E2E90[player->characterId][player->boundingBoxCorners[3].surfaceType] * 0.7;
}
- if (player->boundingBoxCorners[2].surfaceType == 8) {
+ if (player->boundingBoxCorners[2].surfaceType == GRASS) {
// The unecessary "* 1.0" here is to force the compiler to save this 0.7 as a separate RO value from the 0.7 just above this comment
var_f0 += D_800E2E90[player->characterId][player->boundingBoxCorners[2].surfaceType] * (0.7 * 1.0);
}
@@ -3031,7 +3031,7 @@ f32 func_80030150(Player *player, s8 arg1) {
var_f0 = 0.0f;
var_f2 = (player->unk_094 / 18.0f) * 216.0f;
if (var_f2 >= 8.0f) {
- if ((player->effects & 0x200) != 0x200) {
+ if ((player->effects & STAR_EFFECT) != STAR_EFFECT) {
if ((s32) player->boundingBoxCorners[3].surfaceType >= 0xF) {
// ???????
if(1) {}
@@ -3084,7 +3084,7 @@ f32 func_80030150(Player *player, s8 arg1) {
var_f0 += var_v0 * 0.008;
}
}
- if ((player->effects & 0x200) == 0x200) {
+ if ((player->effects & STAR_EFFECT) == STAR_EFFECT) {
var_f0 += -0.25;
}
}
@@ -3140,11 +3140,11 @@ f32 func_80030150(Player *player, s8 arg1) {
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8) || ((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 & 0x01000000) == 0x01000000) || ((player->effects & 0x02000000) == 0x02000000)) {
+ if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || ((player->effects & 0x01000000) == 0x01000000) || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_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 & 0x2000) == (0x2000 & 0xFFFFFFFF)) || ((player->effects & 0x100000) == 0x100000) || ((player->effects & 4) == 4)) {
+ if (((player->effects & BOOST_EFFECT) == (BOOST_EFFECT & 0xFFFFFFFF)) || ((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);
return player->boostPower + player->unk_08C;
}
@@ -3158,28 +3158,28 @@ void func_80030A34(Player *player) {
if (((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 8) != 8)) {
if ((((player->unk_094 / 18.0f) * 216.0f) >= 8.0f) && (player->unk_DB4.unkC < 1.0f)) {
- switch (player->unk_0F8) { /* irregular */
- case 1:
- if (random_int(0x000AU) != 8) {
- var_f0 = 0.35f;
- var_f2 = 0.55f;
- } else {
- player->unk_07A = 0;
- player->unk_108 = 0.0f;
- var_f0 = 0.0f;
- var_f2 = 0.0f;
- }
- break;
- case 14:
- case 16:
- var_f0 = 0.94f;
- var_f2 = 0.85f;
- break;
- default:
- if(1){}
- var_f0 = 0.46f;
- var_f2 = 0.48f;
- break;
+ switch (player->surfaceType) { /* irregular */
+ case ASPHALT:
+ if (random_int(0x000AU) != 8) {
+ var_f0 = 0.35f;
+ var_f2 = 0.55f;
+ } else {
+ player->unk_07A = 0;
+ player->unk_108 = 0.0f;
+ var_f0 = 0.0f;
+ var_f2 = 0.0f;
+ }
+ break;
+ case TRAIN_TRACK:
+ case ROPE_BRIDGE:
+ var_f0 = 0.94f;
+ var_f2 = 0.85f;
+ break;
+ default:
+ if(1){}
+ var_f0 = 0.46f;
+ var_f2 = 0.48f;
+ break;
}
} else if (random_int(0x000AU) != 8) {
var_f0 = 0.3f;
@@ -3398,9 +3398,9 @@ void player_speed(Player *player) {
player->unk_08C = (player->currentSpeed * player->currentSpeed) / 25.0f;
}
player->unk_044 |= 0x20;
- if ((player->statusEffects * 8) < 0) {
+ if ((player->soundEffects * 8) < 0) {
func_8008F104(player, player_index);
- player->statusEffects &= 0xEFFFFFFF;
+ player->soundEffects &= 0xEFFFFFFF;
}
}
@@ -3422,9 +3422,9 @@ void func_80031F48(Player *player, f32 arg1) {
player->unk_08C = (player->currentSpeed * player->currentSpeed) / 25.0f;
}
player->unk_044 &= 0xFFDF;
- if ((player->statusEffects * 8) < 0) {
+ if ((player->soundEffects * 8) < 0) {
func_8008F104(player, player_index);
- player->statusEffects &= 0xEFFFFFFF;
+ player->soundEffects &= 0xEFFFFFFF;
}
}
@@ -3664,11 +3664,11 @@ void func_80032700(Player *player) {
var_v0 = 8;
}
if ((test < var_v0) && ((player->unk_044 & 0x20) != 0x20)) {
- player->statusEffects |= 0x02000000;
+ player->soundEffects |= 0x02000000;
} else if ((player->topSpeed * 0.9f) <= player->currentSpeed) {
- if ((player->statusEffects & 0x02000000) != 0x02000000) {
- player->statusEffects |= 0x10000000;
- player->statusEffects &= ~0x02000000;
+ if ((player->soundEffects & 0x02000000) != 0x02000000) {
+ player->soundEffects |= 0x10000000;
+ player->soundEffects &= ~0x02000000;
}
}
}
@@ -3688,9 +3688,9 @@ void func_80032CB0(Player *player, f32 arg1) {
player->currentSpeed = player->topSpeed;
}
if ((f64) player->currentSpeed <= (player->topSpeed * 0.7)) {
- player->statusEffects &= ~0x10000000;
+ player->soundEffects &= ~0x10000000;
}
- player->statusEffects &= ~0x02000000;
+ player->soundEffects &= ~0x02000000;
player->unk_044 &= ~0x0020;
player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f;
}
@@ -3934,7 +3934,7 @@ void func_80033AE0(Player *player, struct Controller *controller, s8 arg2) {
{
if ((((((!(player->effects & 0x10)) && (gCCSelection == CC_150)) && (gModeSelection != BATTLE)) && (!(player->effects & 8))) && (((player->unk_094 / 18.0f) * 216.0f) >= 40.0f)) && (player->unk_204 == 0))
{
- player->statusEffects |= 0x80;
+ player->soundEffects |= 0x80;
}
}
if (((s32) player->boundingBoxCorners[3].surfaceType) < 0xF)
@@ -4290,7 +4290,7 @@ void func_8003680C(Player *player, s16 arg1) {
(player->effects & 0x10000) ||
(player->effects & 0x20000) ||
(player->effects & 0x01000000) ||
- (player->effects & 0x02000000) ||
+ (player->effects & HIT_BY_ITEM_EFFECT) ||
(player->effects & 0x04000000))) {
if (!(((player->unk_094 / 18.0f) * 216.0f) >= 110.0f)) {
player->effects &= ~0x20000000;
@@ -4409,7 +4409,7 @@ void func_80036DB4(Player *player, Vec3f arg1, Vec3f arg2) {
var_f18 = player->unk_208 + ((-(player->unk_094 / 18.0f) * 216.0f) * 1.5) + (((player->unk_07C >> 0x10) * 0.1) + (-player->currentSpeed * 0.05)) + (-player->unk_20C * 50.0f);
sp20 = player->unk_084;
}
- if ((player->effects & 0x200) == 0x200) {
+ if ((player->effects & STAR_EFFECT) == STAR_EFFECT) {
if (((player->effects & 0x10) == 0x10) && ((player->effects & 2) != 2)) {
var_f18 = player->unk_208 + ((-(player->unk_094 / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 10.0f);
sp20 = player->unk_084 * 3.0f;
@@ -4463,7 +4463,7 @@ void func_800371F4(Player *player, Vec3f arg1, Vec3f arg2) {
var_f18 = ((player->unk_208 + ((f64) (-(player->unk_094 / 18.0f) * 216.0f) * 1.5)) - (((player->unk_07C >> 0x10) * 0.1) + (player->currentSpeed * 0.05))) + (-player->unk_20C * 50.0f);
sp20 = player->unk_084;
}
- if ((player->effects & 0x200) == 0x200) {
+ if ((player->effects & STAR_EFFECT) == STAR_EFFECT) {
if (((player->effects & 0x10) == 0x10) && ((player->effects & 2) != 2)) {
var_f18 = player->unk_208 + ((-(player->unk_094 / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 50.0f);
sp20 = player->unk_084 * 3.0f;
@@ -4635,7 +4635,7 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) {
((player->effects & 0x400) != 0x400) &&
((player->effects & 0x4000) != 0x4000) &&
((player->effects & 0x01000000) != 0x01000000) &&
- ((player->effects & 0x02000000) != 0x02000000) && ((player->effects & 0x10000) != 0x10000) &&
+ ((player->effects & HIT_BY_ITEM_EFFECT) != HIT_BY_ITEM_EFFECT) && ((player->effects & 0x10000) != 0x10000) &&
((player->effects & 0x20000) != 0x20000)) {
if (((player->effects & 0x04000000) != 0x04000000) &&
((player->effects & 8) != 8) &&
@@ -4653,7 +4653,7 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) {
func_80033AE0(player, controller, arg2);
}
player->effects &= ~1;
- if ((!(player->effects & 0x100000)) && (!(player->effects & 4))) {
+ if ((!(player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && (!(player->effects & BOOST_RAMP_WOOD_EFFECT))) {
if (((player->unk_094 / 18.0f) * 216.0f) <= 12.0f) {
if (controller->button & A_BUTTON) {
if (controller->button & B_BUTTON) {
@@ -4693,7 +4693,7 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) {
detect_triple_b_combo_b_released(player);
}
}
- if ((!(player->effects & 0x100000)) && (!(player->effects & 4))) {
+ if ((!(player->effects & BOOST_RAMP_ASPHALT_EFFECT)) && (!(player->effects & 4))) {
if (((func_800388B0(controller) < (-0x31)) &&
(((player->unk_094 / 18.0f) * 216.0f) <= 5.0f)) &&
(controller->button & B_BUTTON)) {
@@ -4720,7 +4720,7 @@ void func_80037CFC(Player *player, struct Controller *controller, s8 arg2) {
if (((((player->effects & 0x80) == 0x80) ||
((player->effects & 0x40) == 0x40)) ||
((player->effects & 0x01000000) == 0x01000000)) ||
- ((player->effects & 0x02000000) == 0x02000000)) {
+ ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT)) {
if (controller->button & A_BUTTON) {
detect_triple_a_combo_a_pressed(player);
func_800332E8(player, arg2);
@@ -4940,7 +4940,7 @@ void func_80038BE4(Player *player, s16 arg1) {
player->unk_08C = (player->currentSpeed * player->currentSpeed) / 25.0f;
}
-void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
+void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) {
Vec3f sp114 = {0.0, 0.0, 1.0};
Vec3f sp108 = {0.0, 0.0, 0.0};
Vec3f spFC = {0.0, 0.0, 0.0};
@@ -4967,8 +4967,8 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
player->unk_084 = -10.0f;
player->unk_088 = 28.0f;
player->topSpeed = 250.0f;
- func_8002B830(player, arg3, arg2);
- func_8002CD48(player, arg3, arg2);
+ func_8002B830(player, playerId, arg2);
+ apply_effect(player, playerId, arg2);
player->rotation[1] += player->unk_078;
spF0[0] = 0;
spF0[1] = 0;
@@ -5032,12 +5032,12 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
sp98 = player->unk_110.unk3C[0];
if (sp98 < 0) {
func_8003F734(player, sp7C, sp88, &sp98, &spEC, &spE8, &spE4);
- func_8002C954(player, arg3, sp88);
+ func_8002C954(player, playerId, sp88);
}
sp98 = player->unk_110.unk3C[1];
if (sp98 < 0) {
func_8003FBAC(player, sp7C, sp88, &sp98, &spEC, &spE8, &spE4);
- func_8002C954(player, arg3, sp88);
+ func_8002C954(player, playerId, sp88);
}
sp98 = player->unk_110.unk3C[0];
if (sp98 >= 0) {
@@ -5048,7 +5048,7 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
}
player->unk_074 = func_802ABE30(spEC, spE8, spE4, player->unk_110.unk3A);
func_80029B4C(player, spEC, spE8, spE4);
- func_8002AE38(player, arg3, posX, posZ, spEC, spE4);
+ func_8002AE38(player, playerId, posX, posZ, spEC, spE4);
sqrt = (sp88[0] * sp88[0]) + (sp88[2] * sp88[2]);
player->unk_22C = player->unk_094;
player->unk_094 = sqrtf(sqrt);
@@ -5064,9 +5064,9 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
player->velocity[1] = sp88[1];
player->velocity[2] = sp88[2];
- D_80165070[arg3][0] = sp88[0];
- D_80165070[arg3][1] = sp88[1];
- D_80165070[arg3][2] = sp88[2];
+ D_80165070[playerId][0] = sp88[0];
+ D_80165070[playerId][1] = sp88[1];
+ D_80165070[playerId][2] = sp88[2];
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
if (gKartTopSpeedTable[player->characterId] < player->unk_094) {
@@ -5088,5 +5088,5 @@ void func_80038C6C(Player *player, UNUSED Camera *camera, s8 arg2, s8 arg3) {
if (player->unk_110.unk3C[2] >= 500.0f) {
player->unk_078 /= 2;
}
- func_8002C4F8(player, arg3);
+ func_8002C4F8(player, playerId);
}
diff --git a/src/player_controller.h b/src/player_controller.h
index 153420076..e43cb3f4f 100644
--- a/src/player_controller.h
+++ b/src/player_controller.h
@@ -45,7 +45,7 @@ void func_8002AE30(void);
void func_8002AE38(Player*, s8, f32, f32, f32, f32);
void func_8002B218(Player*);
-void func_8002B308(Player*, s8, s8);
+void apply_sound_effect(Player*, s8, s8);
void func_8002B5C0(Player*, s8, s8);
void func_8002B830(Player*, s8, s8);
void func_8002B8A4(Player*, Player*);
@@ -58,7 +58,7 @@ void func_8002C17C(Player*, s8);
void func_8002C4F8(Player*, s8);
void func_8002C7E4(Player*, s8, s8);
void func_8002C954(Player*, s8, Vec3f);
-void func_8002CD48(Player*, s8, s8);
+void apply_effect(Player*, s8, s8);
void func_8002D028(Player*, s8);
void func_8002D268(Player*, Camera*, s8, s8);
diff --git a/src/racing/actors.c b/src/racing/actors.c
index 05ba211d3..ab2b78e7b 100644
--- a/src/racing/actors.c
+++ b/src/racing/actors.c
@@ -18,7 +18,7 @@
#include "macros.h"
#include "code_80005FD0.h"
#include "code_80071F00.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
#include "collision.h"
#include "audio/external.h"
#include "common_textures.h"
@@ -507,7 +507,7 @@ void update_actor_kiwano_fruit(struct KiwanoFruit *fruit) {
}
switch (fruit->state) { /* irregular */
case 0:
- if ((get_surface_type(player->unk_110.unk3A) & 0xFF) != 8) {
+ if ((get_surface_type(player->unk_110.unk3A) & 0xFF) != GRASS) {
return;
}
fruit->state = 1;
@@ -531,7 +531,7 @@ void update_actor_kiwano_fruit(struct KiwanoFruit *fruit) {
fruit->velocity[0] = 0.0f;
fruit->velocity[1] = 2.3f;
fruit->velocity[2] = 0.0f;
- if ((player->effects & 0x200) != 0) {
+ if ((player->effects & STAR_EFFECT) != 0) {
func_800C9060(player - gPlayerOne, 0x1900A052U);
} else {
player->effects |= 0x8000;
@@ -810,7 +810,7 @@ void func_80298AC0(Player *player) {
sp64[1] = data->pos[1];
sp64[2] = data->pos[2];
if (func_8029EEB8(player, sp64, 5.0f, 40.0f, 0.8f) == 1) {
- if ((player->effects & 0x200) != 0) {
+ if ((player->effects & STAR_EFFECT) != 0) {
func_800C98B8(player->pos, player->velocity, 0x19018010);
func_800C90F4((u8) (player - gPlayerOne), (player->characterId * 0x10) + 0x2900800D);
data->someId |= 0x400;
@@ -2629,7 +2629,7 @@ s32 func_8029EEB8(Player *player, Vec3f pos, f32 arg2, f32 arg3, f32 arg4) {
sp28 = temp_f0_3 - arg2;
temp_f16 = player->velocity[0];
temp_f18 = player->velocity[2];
- if (player->effects & 0x200) {
+ if (player->effects & STAR_EFFECT) {
return 1;
}
if (temp_f0_3 < 0.1f) {
@@ -2667,7 +2667,7 @@ s32 func_8029EEB8(Player *player, Vec3f pos, f32 arg2, f32 arg3, f32 arg4) {
s32 func_8029F1F8(Player *player, struct Actor *marioRacewaySign) {
if (func_8029EEB8(player, marioRacewaySign->pos, 7.0f, 200.0f, 0.8f) == 1) {
if ((player->type & PLAYER_HUMAN) != 0) {
- if ((player->effects & 0x200) != 0) {
+ if ((player->effects & STAR_EFFECT) != 0) {
marioRacewaySign->flags |= 0x400;
func_800C98B8(player->pos, player->velocity, 0x19018010U);
func_800C90F4(player - gPlayerOne, (player->characterId * 0x10) + 0x2900800D);
@@ -2683,7 +2683,7 @@ s32 func_8029F1F8(Player *player, struct Actor *marioRacewaySign) {
s32 func_8029F2FC(Player *player, struct PiranhaPlant *plant) {
if (func_8029EEB8(player, plant->pos, plant->boundingBoxSize, plant->boundingBoxSize, 2.5f) == 1) {
if ((player->type & PLAYER_HUMAN) != 0) {
- if ((player->effects & 0x200) != 0) {
+ if ((player->effects & STAR_EFFECT) != 0) {
plant->flags |= 0x400;
func_800C98B8(player->pos, player->velocity, 0x1901A24AU);
func_800C90F4(player - gPlayerOne, (player->characterId * 0x10) + 0x2900800D);
@@ -2734,7 +2734,7 @@ s32 func_8029F408(Player *player, struct YoshiValleyEgg *egg) {
return 0;
}
if ((player->type & PLAYER_HUMAN) != 0) {
- if ((player->effects & 0x200) != 0) {
+ if ((player->effects & STAR_EFFECT) != 0) {
egg->flags |= 0x400;
egg->pathCenter[1] = 8.0f;
func_800C98B8(player->pos, player->velocity, 0x19018010);
@@ -2799,7 +2799,7 @@ s32 func_8029F69C(Player *player, struct Actor *actor) {
sp48 = player->velocity[0];
sp44 = player->velocity[2];
if (player->type & PLAYER_HUMAN) {
- if (player->effects & 0x200) {
+ if (player->effects & STAR_EFFECT) {
actor->flags |= 0x400;
func_800C98B8(player->pos, player->velocity, 0x19018010U);
func_800C90F4(player - gPlayerOne, (player->characterId * 0x10) + 0x2900800D);
@@ -2809,7 +2809,7 @@ s32 func_8029F69C(Player *player, struct Actor *actor) {
func_800C9060(player - gPlayerOne, 0x19007018U);
}
}
- if (!(player->effects & 0x200)) {
+ if (!(player->effects & STAR_EFFECT)) {
player->effects |= 0x8000;
}
sp20[0] = actor->pos[0];
@@ -2941,7 +2941,7 @@ void func_8029FDC8(struct Actor *actor) {
break;
case HELD_BANANA:
player = &gPlayers[banana->playerId];
- player->statusEffects &= ~0x00040000;
+ player->soundEffects &= ~0x00040000;
/* fallthrough */
case BANANA_ON_GROUND:
banana->flags = -0x8000;
@@ -3036,7 +3036,7 @@ void func_8029FDC8(struct Actor *actor) {
fakeItemBox = (struct FakeItemBox *)actor;
player = &gPlayers[(s16)fakeItemBox->playerId];
if (fakeItemBox->state == HELD_FAKE_ITEM_BOX) {
- player->statusEffects &= ~0x00040000;
+ player->soundEffects &= ~0x00040000;
}
fakeItemBox->state = DESTROYED_FAKE_ITEM_BOX;
fakeItemBox->flags = -0x8000;
@@ -3151,16 +3151,16 @@ void func_802A0450(Player *player, struct Actor *actor) {
temp_lo = player - gPlayerOne;
switch (actor->type) {
case ACTOR_YOSHI_VALLEY_EGG:
- if (!(player->effects & 0x80000000) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
+ if (!(player->effects & BOO_EFFECT) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
func_8029F408(player, (struct YoshiValleyEgg *) actor);
}
break;
case ACTOR_BANANA:
if (player->effects & 0x800008C0) { break; }
- if (player->statusEffects & 1) { break; }
+ if (player->soundEffects & 1) { break; }
temp_v1 = actor->rot[0];
if (((temp_lo == temp_v1) && (actor->flags & 0x1000)) || (func_8029FB80(player, actor) != 1)) { break; }
- player->statusEffects |= 1;
+ player->soundEffects |= 1;
owner = &gPlayers[temp_v1];
if (owner->type & 0x4000) {
if (actor->flags & 0xF) {
@@ -3179,10 +3179,10 @@ void func_802A0450(Player *player, struct Actor *actor) {
break;
case ACTOR_GREEN_SHELL:
if (player->effects & 0x80000400) { break; }
- if (player->statusEffects & 4) { break; }
+ if (player->soundEffects & 4) { break; }
temp_v1 = actor->rot[2];
if (((temp_lo == temp_v1) && (actor->flags & 0x1000)) || (func_8029FB80(player, actor) != 1)) { break; }
- player->statusEffects |= 4;
+ player->soundEffects |= 4;
func_800C98B8(player->pos, player->velocity, 0x19018010U);
owner = &gPlayers[temp_v1];
if ((owner->type & 0x4000) && (temp_lo != temp_v1)) {
@@ -3191,11 +3191,11 @@ void func_802A0450(Player *player, struct Actor *actor) {
func_8029FDC8(actor);
break;
case ACTOR_BLUE_SPINY_SHELL:
- if (player->statusEffects & 2) { break; }
+ if (player->soundEffects & 2) { break; }
temp_v1 = actor->rot[2];
if (((temp_lo == temp_v1) && (actor->flags & 0x1000)) || (func_8029FB80(player, actor) != 1)) { break; }
- if (!(player->effects & 0x80000000)) {
- player->statusEffects |= 2;
+ if (!(player->effects & BOO_EFFECT)) {
+ player->soundEffects |= 2;
func_800C98B8(player->pos, player->velocity, 0x19018010U);
}
owner = &gPlayers[temp_v1];
@@ -3209,11 +3209,11 @@ void func_802A0450(Player *player, struct Actor *actor) {
case ACTOR_RED_SHELL:
temp_v1 = actor->rot[2];
if (player->effects & 0x01000000) { break; }
- if (player->statusEffects & 2) { break; }
+ if (player->soundEffects & 2) { break; }
temp_v1 = actor->rot[2];
if (((temp_lo == temp_v1) && (actor->flags & 0x1000)) || (func_8029FB80(player, actor) != 1)) { break; }
- if (!(player->effects & 0x80000000)) {
- player->statusEffects |= 2;
+ if (!(player->effects & BOO_EFFECT)) {
+ player->soundEffects |= 2;
func_800C98B8(player->pos, player->velocity, 0x19018010U);
}
owner = &gPlayers[temp_v1];
@@ -3223,12 +3223,12 @@ void func_802A0450(Player *player, struct Actor *actor) {
func_8029FDC8(actor);
break;
case ACTOR_PIRANHA_PLANT:
- if (!(player->effects & 0x80000000)) {
+ if (!(player->effects & BOO_EFFECT)) {
func_8029F2FC(player, (struct PiranhaPlant *) actor);
}
break;
case ACTOR_MARIO_RACEWAY_SIGN:
- if (!(player->effects & 0x80000000)) {
+ if (!(player->effects & BOO_EFFECT)) {
func_8029F1F8(player, actor);
}
break;
@@ -3244,18 +3244,18 @@ void func_802A0450(Player *player, struct Actor *actor) {
case 31:
case 32:
case 33:
- if (!(player->effects & 0x80000000)) {
+ if (!(player->effects & BOO_EFFECT)) {
func_8029F69C(player, actor);
}
break;
case ACTOR_FALLING_ROCK:
- if (!(player->effects & 0x80000000) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
+ if (!(player->effects & BOO_EFFECT) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
if (func_8029FB80(player, actor) == 1) {
func_800C98B8(actor->pos, actor->velocity, SOUND_ACTION_EXPLOSION);
if ((gModeSelection == TIME_TRIALS) && !(player->type & PLAYER_CPU)) {
D_80162DF8 = 1;
}
- if (player->effects & 0x200) {
+ if (player->effects & STAR_EFFECT) {
actor->velocity[1] = 10.0f;
} else {
func_8008DABC(player, player - gPlayerOne);
@@ -3265,10 +3265,10 @@ void func_802A0450(Player *player, struct Actor *actor) {
break;
case ACTOR_FAKE_ITEM_BOX:
temp_v1 = actor->velocity[0];
- if (player->effects & 0x80000000) { break; }
+ if (player->effects & BOO_EFFECT) { break; }
temp_v1 = actor->velocity[0];
if (((temp_lo == temp_v1) && (actor->flags & 0x1000)) || (func_8029FB80(player, actor) != 1)) { break; }
- player->statusEffects |= REVERSE_EFFECT;
+ player->soundEffects |= REVERSE_SOUND_EFFECT;
owner = &gPlayers[temp_v1];
if (owner->type & 0x4000) {
if (actor->flags & 0xF) {
@@ -3283,7 +3283,7 @@ void func_802A0450(Player *player, struct Actor *actor) {
}
}
if (actor->state == 0) {
- owner->statusEffects &= ~0x00040000;
+ owner->soundEffects &= ~0x00040000;
}
}
actor->state = 2;
@@ -3451,7 +3451,7 @@ void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) {
if ((temp_v1_3->buttonDepressed & Z_TRIG) != 0) {
temp_v1_3->buttonDepressed &= 0xDFFF;
func_802A1064(fake_item_box);
- temp_v0_4->statusEffects &= 0xFFFBFFFF;
+ temp_v0_4->soundEffects &= 0xFFFBFFFF;
func_800C9060((u8)(temp_v0_4 - gPlayerOne), 0x19008012);
}
}
diff --git a/src/racing/actors_extended.c b/src/racing/actors_extended.c
index dbc6404b4..c473206a9 100644
--- a/src/racing/actors_extended.c
+++ b/src/racing/actors_extended.c
@@ -13,7 +13,7 @@
#include "actors_extended.h"
#include "audio/external.h"
#include "code_80071F00.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
void copy_collision(Collision *arg0, Collision *arg1) {
arg1->unk30 = arg0->unk30;
@@ -292,7 +292,7 @@ void update_actor_banana_bunch(struct BananaBunchParent *banana_bunch) {
}
if (someCount == 0) {
destroy_actor((struct Actor *) banana_bunch);
- owner->statusEffects &= ~HOLD_BANANA_EFFECT;
+ owner->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
} else if ((owner->type & 0x4000) != 0) {
controller = &gControllers[banana_bunch->playerId];
if ((controller->buttonPressed & Z_TRIG) != 0) {
@@ -520,7 +520,7 @@ s32 use_banana_bunch_item(Player *player) {
bananaBunch = (struct BananaBunchParent *) &gActorList[actorIndex];
bananaBunch->state = 0;
bananaBunch->playerId = player - gPlayerOne;
- player->statusEffects |= HOLD_BANANA_EFFECT;
+ player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
return actorIndex;
}
@@ -726,7 +726,7 @@ void update_actor_banana(struct BananaActor *banana) {
controller->buttonDepressed &= ~Z_TRIG;
banana->state = 1;
banana->unk_04 = 0x00B4;
- player->statusEffects &= ~HOLD_BANANA_EFFECT;
+ player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
func_800C9060(player - gPlayerOne, 0x19008012U);
pad3 = controller->rawStickY;
if ((pad3 > 30.0f) && (controller->rawStickX < 10) && (controller->rawStickX >= -9)) {
@@ -969,7 +969,7 @@ s32 use_fake_itembox_item(Player *player) {
itemBox = (struct FakeItemBox*)&gActorList[actorIndex];
itemBox->playerId = (player - gPlayerOne);
itemBox->state = HELD_FAKE_ITEM_BOX;
- player->statusEffects |= HOLD_BANANA_EFFECT;
+ player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
return actorIndex;
}
@@ -1016,7 +1016,7 @@ s32 use_banana_item(Player *player) {
banana->playerId = playerId;
banana->state = HELD_BANANA;
banana->unk_04 = 0x0014;
- player->statusEffects |= HOLD_BANANA_EFFECT;
+ player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
return actorIndex;
}
@@ -1038,7 +1038,7 @@ void use_thunder_item(Player *player) {
for (index = 0; index < NUM_PLAYERS; index++) {
otherPlayer = &gPlayers[index];
if (player != otherPlayer) {
- otherPlayer->statusEffects |= HIT_ROTATING_EFFECT;
+ otherPlayer->soundEffects |= HIT_ROTATING_SOUND_EFFECT;
}
}
}
@@ -1064,22 +1064,22 @@ void player_use_item(Player *player) {
use_banana_bunch_item(player);
break;
case ITEM_MUSHROOM:
- player->statusEffects |= BOOST_EFFECT;
+ player->soundEffects |= BOOST_SOUND_EFFECT;
break;
case ITEM_DOUBLE_MUSHROOM:
- player->statusEffects |= BOOST_EFFECT;
+ player->soundEffects |= BOOST_SOUND_EFFECT;
break;
case ITEM_TRIPLE_MUSHROOM:
- player->statusEffects |= BOOST_EFFECT;
+ player->soundEffects |= BOOST_SOUND_EFFECT;
break;
case ITEM_SUPER_MUSHROOM:
- player->statusEffects |= BOOST_EFFECT;
+ player->soundEffects |= BOOST_SOUND_EFFECT;
break;
case ITEM_BOO:
- player->statusEffects |= BOO_EFFECT;
+ player->soundEffects |= BOO_SOUND_EFFECT;
break;
case ITEM_STAR:
- player->statusEffects |= STAR_EFFECT;
+ player->soundEffects |= STAR_SOUND_EFFECT;
break;
case ITEM_THUNDERBOLT:
use_thunder_item(player);
@@ -1446,7 +1446,7 @@ void func_802B3E7C(struct ShellActor *shell, Player *player) {
shell->velocity[1] = -2.0f;
shell->velocity[2] = z_velocity;
- if (player->effects & 0x80000000) {
+ if (player->effects & BOO_EFFECT) {
func_8029FDC8((struct Actor *) shell);
} else {
func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], newPosition[0], newPosition[1], newPosition[2]);
diff --git a/src/racing/collision.c b/src/racing/collision.c
index 0411c3172..a13fbea62 100644
--- a/src/racing/collision.c
+++ b/src/racing/collision.c
@@ -76,14 +76,14 @@ f32 func_802AAB4C(Player *player) {
}
return 0.8f;
case COURSE_SHERBET_LAND:
- if ((get_surface_type(player->unk_110.unk3A) & 0xFF) == 5) {
+ if ((get_surface_type(player->unk_110.unk3A) & 0xFF) == SNOW) {
return (f32) (D_8015F6EE - 0xA);
}
return D_8015F8E4;
case COURSE_DK_JUNGLE:
temp_v1 = func_802ABD40(player->unk_110.unk3A) & 0xFF;
if (temp_v1 == 0xFF) {
- if ((get_surface_type(player->unk_110.unk3A) & 0xFF) == 0xF) {
+ if ((get_surface_type(player->unk_110.unk3A) & 0xFF) == CAVE) {
return -475.0f;
}
if (playerX > -478.0f) {
@@ -2007,7 +2007,7 @@ void func_802AF314(void) {
* Recursive search for vtx and set surfaceTypes to -1 and sectionId's to 0xFF
*/
void set_vertex_data_with_defaults(Gfx *gfx) {
- find_and_set_vertex_data(gfx, -1, 0xFF);
+ find_and_set_vertex_data(gfx, SURFACE_DEFAULT, 0xFF);
}
/**
diff --git a/src/racing/memory.c b/src/racing/memory.c
index 4b699e911..e2be6d6b5 100644
--- a/src/racing/memory.c
+++ b/src/racing/memory.c
@@ -411,8 +411,8 @@ u32 MIO0_0F(u8 *arg0, u32 arg1, u32 arg2) {
return oldHeapEndPtr;
}
-void func_802A86A8(mk64_Vtx *data, u32 arg1) {
- mk64_Vtx_n *vtx_n = (mk64_Vtx_n *) data;
+void func_802A86A8(CourseVtx *data, u32 arg1) {
+ CourseVtx *courseVtx = data;
Vtx *vtx;
s32 tmp = ALIGN16(arg1 * 0x10);
#ifdef AVOID_UB
@@ -427,35 +427,35 @@ void func_802A86A8(mk64_Vtx *data, u32 arg1) {
gHeapEndPtr -= tmp;
vtx = (Vtx *) gHeapEndPtr;
- // s32 to u32 comparison required for matching.
- for (i = 0; i < arg1; i++) {
- if (gIsMirrorMode) {
- vtx->n.ob[0] = -vtx_n->ob[0];
- } else {
- vtx->n.ob[0] = vtx_n->ob[0];
- }
-
- vtx->n.ob[1] = (vtx_n->ob[1] * vtxStretchY);
- temp_a0 = vtx_n->n[0];
- temp_a3 = vtx_n->n[1];
-
- flags = temp_a0 & 3;
- flags |= (temp_a3 * 4) & 0xC;
-
- vtx->n.ob[2] = vtx_n->ob[2];
- vtx->n.tc[0] = vtx_n->tc[0];
- vtx->n.tc[1] = vtx_n->tc[1];
- vtx->n.n[0] = (temp_a0 & 0xFC);
- vtx->n.n[1] = (temp_a3 & 0xFC);
- vtx->n.n[2] = vtx_n->n[2];
- vtx->n.flag = flags;
- vtx->n.a = 0xFF;
- vtx++;
- vtx_n++;
+ // s32 to u32 comparison required for matching.
+ for (i = 0; i < arg1; i++) {
+ if (gIsMirrorMode) {
+ vtx->v.ob[0] = -courseVtx->ob[0];
+ } else {
+ vtx->v.ob[0] = courseVtx->ob[0];
}
+
+ vtx->v.ob[1] = (courseVtx->ob[1] * vtxStretchY);
+ temp_a0 = courseVtx->ca[0];
+ temp_a3 = courseVtx->ca[1];
+
+ flags = temp_a0 & 3;
+ flags |= (temp_a3 << 2) & 0xC;
+
+ vtx->v.ob[2] = courseVtx->ob[2];
+ vtx->v.tc[0] = courseVtx->tc[0];
+ vtx->v.tc[1] = courseVtx->tc[1];
+ vtx->v.cn[0] = (temp_a0 & 0xFC);
+ vtx->v.cn[1] = (temp_a3 & 0xFC);
+ vtx->v.cn[2] = courseVtx->ca[2];
+ vtx->v.flag = flags;
+ vtx->v.cn[3] = 0xFF;
+ vtx++;
+ courseVtx++;
+ }
}
-void decompress_vtx(mk64_Vtx *arg0, u32 vertexCount) {
+void decompress_vtx(CourseVtx *arg0, u32 vertexCount) {
s32 size = ALIGN16(vertexCount * 0x18);
u32 segment = SEGMENT_NUMBER2(arg0);
u32 offset = SEGMENT_OFFSET(arg0);
@@ -467,7 +467,7 @@ void decompress_vtx(mk64_Vtx *arg0, u32 vertexCount) {
gNextFreeMemoryAddress += size;
mio0decode(vtxCompressed, (u8 *) freeSpace);
- func_802A86A8((mk64_Vtx *) freeSpace, vertexCount);
+ func_802A86A8((CourseVtx *) freeSpace, vertexCount);
set_segment_base_addr(4, (void *) gHeapEndPtr);
}
@@ -1330,7 +1330,7 @@ u8 *load_course(s32 courseId) {
u8 *vertexRomEnd;
UNUSED s32 pad2[2];
u32 *textures;
- mk64_Vtx *vertexStart; // mio0 compressed
+ CourseVtx *vertexStart; // mio0 compressed
u8 *packedStart;
u32 vertexCount;
uintptr_t finalDisplaylistOffset;
diff --git a/src/racing/race_logic.c b/src/racing/race_logic.c
index cc0134050..be5c5b448 100644
--- a/src/racing/race_logic.c
+++ b/src/racing/race_logic.c
@@ -19,7 +19,7 @@
#include "race_logic.h"
#include "skybox_and_splitscreen.h"
#include "math_util_2.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
#include "math.h"
#include "menus.h"
@@ -572,7 +572,7 @@ void func_8028EF28(void) {
}
D_800DC510 = 5;
i = gPlayerPositionLUT[1];
- gPlayers[i].statusEffects |= 0x200000;
+ gPlayers[i].soundEffects |= 0x200000;
gPlayers[i].type |= PLAYER_CPU;
func_800CA118((u8)i);
break;
@@ -590,7 +590,7 @@ void func_8028EF28(void) {
if (*(gNmiUnknown2 + i * 3 + 2) > 99) {
*(gNmiUnknown2 + i * 3 + 2) = 99;
}
- gPlayers[i].statusEffects |= 0x200000;
+ gPlayers[i].soundEffects |= 0x200000;
gPlayers[i].type |= PLAYER_CPU;
func_800CA118((u8)i);
}
@@ -605,7 +605,7 @@ void func_8028EF28(void) {
if (currentPosition == 2) {
D_800DC510 = 5;
i = gPlayerPositionLUT[3];
- gPlayers[i].statusEffects |= 0x200000;
+ gPlayers[i].soundEffects |= 0x200000;
gPlayers[i].type |= PLAYER_CPU;
func_800CA118((u8)i);
}
@@ -1146,22 +1146,22 @@ void func_802903D8(Player *playerOne, Player *playerTwo) {
func_800C9060((playerTwo - gPlayerOne), 0x19008001U);
return;
} else {
- playerTwo->statusEffects |= REVERSE_EFFECT;
+ playerTwo->soundEffects |= REVERSE_SOUND_EFFECT;
func_8008FC1C(playerOne);
func_800C9060((playerTwo - gPlayerOne), 0x19008001U);
}
} else if (playerTwo->type & PLAYER_UNKNOWN_0x40) {
- playerOne->statusEffects |= REVERSE_EFFECT;
+ playerOne->soundEffects |= REVERSE_SOUND_EFFECT;
func_8008FC1C(playerTwo);
func_800C9060(playerOne - gPlayerOne, 0x19008001U);
return;
}
if (playerOne->effects & 0x200) {
if (!(playerTwo->effects & 0x200)) {
- playerTwo->statusEffects |= HIT_BY_ITEM_EFFECT;
+ playerTwo->soundEffects |= HIT_BY_ITEM_SOUND_EFFECT;
}
} else if (playerTwo->effects & 0x200) {
- playerOne->statusEffects |= HIT_BY_ITEM_EFFECT;
+ playerOne->soundEffects |= HIT_BY_ITEM_SOUND_EFFECT;
} else {
playerOne->effects |= 0x8000;
playerTwo->effects |= 0x8000;
diff --git a/src/render_player.c b/src/render_player.c
index b75c8462a..e2c077b0b 100644
--- a/src/render_player.c
+++ b/src/render_player.c
@@ -12,7 +12,7 @@
#include "objects.h"
#include "render_player.h"
#include "code_80057C60.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
#include "framebuffers.h"
#include "waypoints.h"
#include "player_controller.h"
@@ -1159,7 +1159,7 @@ void func_800235AC(Player *player, s8 arg1) {
}
return;
}
- if ((player->effects & 0x200) != 0) {
+ if ((player->effects & STAR_EFFECT) != 0) {
temp = (s32)gCourseTimer - D_8018D930[arg1];
if (temp <= 8) {
@@ -1242,7 +1242,7 @@ void render_player_shadow(Player *player, s8 arg1, s8 arg2) {
|| ((player->effects & 0x800000) == 0x800000)
|| ((player->effects & 0x400) == 0x400)
|| ((player->unk_0CA & 2) == 2)
- || ((player->effects & 0x02000000) == 0x02000000)
+ || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT)
|| ((player->effects & 0x10000) == 0x10000)
|| ((player->effects & 8) == 8)) {
@@ -1402,7 +1402,7 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
mtxf_scale2(sp1A4, gCharacterSize[player->characterId] * player->size);
convert_to_fixed_point_matrix(&gGfxPool->mtxKart[playerId + (arg2 * 8)], sp1A4);
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg2 == playerId) {
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (arg2 * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gDisplayListHead++, common_setting_render_character);
@@ -1434,7 +1434,7 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
);
gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
}
- } else if (((player->unk_0CA & 4) == 4) || (player->statusEffects & 0x08000000) || (player->statusEffects & 0x04000000)) {
+ } else if (((player->unk_0CA & 4) == 4) || (player->soundEffects & 0x08000000) || (player->soundEffects & 0x04000000)) {
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (arg2 * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gDisplayListHead++, common_setting_render_character);
gDPLoadTLUT_pal256(gDisplayListHead++, gPlayerPalette);
@@ -1646,8 +1646,8 @@ void player_render(Player *player, s8 playerId, s8 arg2) {
}
func_80023BF0(player, playerId, arg2, var_v1);
temp_t1 = 8 << (arg2 * 4);
- if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->unk_110.unk3C[2] <= 50.0f) && (player->unk_0F8 != 9)) {
- if ((player->effects & 0x80000000) == 0x80000000) {
+ if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->unk_110.unk3C[2] <= 50.0f) && (player->surfaceType != ICE)) {
+ if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (playerId == arg2) {
render_player_shadow(player, playerId, arg2);
}
@@ -1661,7 +1661,7 @@ void player_render(Player *player, s8 playerId, s8 arg2) {
ghost_render(player, playerId, arg2, var_v1);
}
osRecvMesg(&gDmaMesgQueue, &sp34, OS_MESG_BLOCK);
- if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->unk_0F8 == 9) && ((player->unk_0CA & 1) != 1) && (player->unk_110.unk3C[2] <= 30.0f)) {
+ if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->surfaceType == ICE) && ((player->unk_0CA & 1) != 1) && (player->unk_110.unk3C[2] <= 30.0f)) {
player_ice_reflection_render(player, playerId, arg2, var_v1);
}
if (player->boostPower >= 2.0f) {
diff --git a/src/spawn_players.c b/src/spawn_players.c
index 7abe20d2d..7fb9c85b3 100644
--- a/src/spawn_players.c
+++ b/src/spawn_players.c
@@ -21,7 +21,7 @@
#include "menus.h"
#include "render_player.h"
#include "code_80091750.h"
-#include "code_8008C1D0.h"
+#include "effects.h"
f32 D_80165210[8];
f32 D_80165230[8];
@@ -153,7 +153,7 @@ void spawn_player(Player *player, s8 playerIndex, f32 startingRow, f32 startingC
player->unk_DAC = 0.0f;
player->unk_044 = 0;
player->unk_046 = 0;
- player->statusEffects = 0;
+ player->soundEffects = 0;
player->unk_0C6 = 0xFF;