Player bitflag attributes (pr 750 from the decomp) (#592)

* Player bitflag attributes (pr 750 from the decomp)

Co-Authored-By: Jed Grabman <JedGrabman@users.noreply.github.com>

* remove WATER_NO_INTERACTION

---------

Co-authored-by: Jed Grabman <JedGrabman@users.noreply.github.com>
Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
This commit is contained in:
coco875 2025-12-16 17:55:37 +01:00 committed by GitHub
parent 6b8be33a5b
commit 1a5c79b641
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 431 additions and 377 deletions

View File

@ -385,6 +385,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE tomlplusplus::tomlplusplus)
# Removes MPQ/OTR support # Removes MPQ/OTR support
set(EXCLUDE_MPQ_SUPPORT TRUE CACHE BOOL "") set(EXCLUDE_MPQ_SUPPORT TRUE CACHE BOOL "")
set(ENABLE_EXP_AUTO_CONFIGURE_CONTROLLERS ON CACHE BOOL "")
add_compile_definitions(EXCLUDE_MPQ_SUPPORT) add_compile_definitions(EXCLUDE_MPQ_SUPPORT)
if(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch") if(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")

View File

@ -278,7 +278,7 @@ typedef struct {
/* 0x0034 */ Vec3f velocity; /* 0x0034 */ Vec3f velocity;
/* 0x0040 */ s16 unk_040; /* 0x0040 */ s16 unk_040;
/* 0x0042 */ s16 unk_042; /* 0x0042 */ s16 unk_042;
/* 0x0044 */ s16 unk_044; /* 0x0044 */ s16 kartProps;
/* 0x0046 */ u16 unk_046; /* 0x0046 */ u16 unk_046;
/* 0x0048 */ Vec4s unk_048; /* 0x0048 */ Vec4s unk_048;
/* 0x0050 */ Vec4s unk_050; /* 0x0050 */ Vec4s unk_050;
@ -308,7 +308,7 @@ typedef struct {
/* 0x00B0 */ s16 unk_0B0; /* 0x00B0 */ s16 unk_0B0;
/* 0x00B2 */ s16 unk_0B2; /* 0x00B2 */ s16 unk_0B2;
/* 0x00B4 */ u16 unk_0B4; /* 0x00B4 */ u16 unk_0B4;
/* 0x00B6 */ u16 unk_0B6; /* 0x00B6 */ u16 kartGraphics;
/* 0x00B8 */ f32 unk_0B8; /* 0x00B8 */ f32 unk_0B8;
/* 0x00BC */ u32 effects; /* 0x00BC */ u32 effects;
/* 0x00C0 */ s16 unk_0C0; /* 0x00C0 */ s16 unk_0C0;
@ -316,11 +316,11 @@ typedef struct {
/* 0x00C4 */ s16 slopeAccel; /* 0x00C4 */ s16 slopeAccel;
/* 0x00C6 */ s16 alpha; /* 0x00C6 */ s16 alpha;
/* 0x00C8 */ s16 unk_0C8; /* 0x00C8 */ s16 unk_0C8;
/* 0x00CA */ s16 unk_0CA; /* 0x00CA */ s16 lakituProps;
/* 0x00CC */ Vec4s unk_0CC; /* 0x00CC */ Vec4s unk_0CC;
/* 0x00D4 */ Vec4s unk_0D4; /* 0x00D4 */ Vec4s unk_0D4;
/* 0x00DC */ s16 boostTimer; /* 0x00DC */ s16 boostTimer;
/* 0x00DE */ u16 waterInteractionFlags; /* 0x00DE */ u16 oobProps;
/* 0x00E0 */ s16 unk_0E0; /* 0x00E0 */ s16 unk_0E0;
/* 0x00E2 */ s16 unk_0E2; /* 0x00E2 */ s16 unk_0E2;
/* 0x00E4 */ f32 unk_0E4; /* 0x00E4 */ f32 unk_0E4;

View File

@ -92,7 +92,9 @@
* Used in the Player struct's 'type' member: player->type * Used in the Player struct's 'type' member: player->type
*/ */
#define PLAYER_INACTIVE 0 // 0x0000 #define PLAYER_INACTIVE 0 // 0x0000
#define PLAYER_UNKNOWN_0x10 (1 << 4) // 0x0010 // unused?
#define PLAYER_UNKNOWN_0x40 (1 << 6) // 0x0040 #define PLAYER_UNKNOWN_0x40 (1 << 6) // 0x0040
#define PLAYER_UNKNOWN_0x80 (1 << 7) // 0x0080 // UNUSED
#define PLAYER_INVISIBLE_OR_BOMB (1 << 8) // 0x0100 #define PLAYER_INVISIBLE_OR_BOMB (1 << 8) // 0x0100
#define PLAYER_STAGING (1 << 9) // 0x0200 #define PLAYER_STAGING (1 << 9) // 0x0200
#define PLAYER_UNKNOWN (1 << 10) // 0x0400 // unused ? #define PLAYER_UNKNOWN (1 << 10) // 0x0400 // unused ?
@ -354,6 +356,64 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE };
* @brief Max representable time, 100 minutes measured in centiseconds * @brief Max representable time, 100 minutes measured in centiseconds
*/ */
#define MAX_TIME 0x927C0 #define MAX_TIME 0x927C0
#define DEGREES_CONVERSION_FACTOR 182
// player->oobProps
/* Deals with the lower out of bounds (OOB) plane on levels. Represented by fluids (water / lava)
or nothing for Rainbow Road and Skyscraper. */
#define UNDER_OOB_OR_FLUID_LEVEL 0x1 // Set while mostly under the plane. Does not necessarily trigger Lakitu on Koopa Troopa Beach.
#define PASS_OOB_OR_FLUID_LEVEL 0x2 // Set when passing through the lower plane in either direction
// The next two are also activated when passing through the lower plane.
#define UNDER_FLUID_LEVEL 0x4 // Stays active until Lakitu places back on track
#define UNDER_OOB_LEVEL 0x8 // Active while under a non-fluid OOB plane. Is momentarily active when passing through fluids.
/* UNK_002 has something to do with player animations. Each player has a 32-bit
flag broken into 8 groups of 4 bits. Those 4 bits affect how each of the 8 players
appear to the specified player */
#define CHANGING_ANIMATION 0x1 // Seems to be set when the kart animation has to change.
#define UNK_002_UNKNOWN_0x2 0x2
#define UNK_002_UNKNOWN_0x4 0x4 /* Unclear, but has to do with viewing the side of player. At least tends to change if target
player spins. Something with avoding rollover of aniamation frame data? */
#define SIDE_OF_KART 0x8 // Seems to be whether you are in a rectangle shooting out from both sides of target player
#define WHISTLE 0x20 // Whistle spinout save graphic
#define CRASH 0x40 // Crash! graphic (vertical tumble)
#define WHIRRR 0x80 // Whirrr! graphic (spinning out)
#define POOMP 0x100 // Poomp! graphic (landing from a height)
#define BOING 0x800 // Boing! graphic (hopping)
#define EXPLOSION 0x1000 // Big shock looking graphic when starting tumble
// player->lakituProps
#define LAKITU_RETRIEVAL 0x1 // While lakitu is grabbing you, but before the scene transition of being placed on the track
#define HELD_BY_LAKITU 0x2
#define LAKITU_FIZZLE 0x4 // Disintegration and reintegration effect when transitioning from retrieval to placement
#define LAKITU_SCENE 0x8 // the whole segment from when lakitu is called to when you regain control
#define FRIGID_EFFECT 0x10 // Cold colors on Sherbet Land after in frigid water
#define THAWING_EFFECT 0x20 // Regaining usual colors post frigid effect
#define FROZEN_EFFECT 0x80 // In the ice cube
#define WENT_OVER_OOB 0x100 // Player went over (or is on) an OOB area. Cancelled if touch back in bounds
#define LAKITU_LAVA 0x1000 // smoky effect when retrieved from lava
#define LAKITU_WATER 0x2000 // dripping effect when retreived from water
// player->kartProps
#define BACK_UP 0x1
#define RIGHT_TURN 0x2 // non-drifting (more than 5 degrees)
#define LEFT_TURN 0x4 // non-drifting (more than 5 degrees)
#define MOVE_BACKWARDS 0x8 // includes lakitu
#define LOSE_GP_RACE 0x10 // pointless, only unsets itself
#define THROTTLE 0x20 // Closely tied to just pressing A. Possible exception for AB-spins
#define EARLY_SPINOUT_RIGHT 0x40 // Spinning out while facing right (not actually used for anything)
#define EARLY_SPINOUT_LEFT 0x80 // Spinning out while facing left
#define POST_TUMBLE_GAS 0x100 // Causes particles after a vertical tumble, I think
#define BECOME_INVISIBLE 0x200
#define UNUSED_0x400 0x400 // locked behind 0x800 (func_80091440)
#define UNUSED_0x800 0x800 // locked behind 0x400 (func_8002B830 -> func_800911B4)
#define UNUSED_0x1000 0x1000 // 0x1000 locked behind 0x400 (func_8002B830 -> func_800911B4)
#define UNUSED_0x2000 0x2000 // 0x2000 locked behind 0x400 and 0x800 (func_8002B830 -> func_800911B4, apply_effect -> func_80091298,
// func_80091440)
#define DRIVING_SPINOUT 0x4000
#define UNKNOWN_BATTLE_VAR 0x8000 // 0x8000 something battle related, unclear if ever set
/** /**
* @brief triggers indicating that an effect should be applied to a kart * @brief triggers indicating that an effect should be applied to a kart
@ -458,18 +518,6 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE };
#define COLOR_LAVA GPACK_RGB888(0x34, 0x00, 0x00) #define COLOR_LAVA GPACK_RGB888(0x34, 0x00, 0x00)
#define COLOR_BLACK GPACK_RGB888(0, 0, 0) #define COLOR_BLACK GPACK_RGB888(0, 0, 0)
/**
* @brief player water interaction flags (player->unk_0DE)
*
*/
#define WATER_NO_INTERACTION 0x0000 // No water interaction
#define WATER_IS_FULLY_SUBMERGED 0x0001 // Kart is completely underwater
#define WATER_IS_PARTIALLY_SUBMERGED 0x0002 // Kart is partially in the water
#define WATER_IN_DEEP_LIQUID_STATE 0x0004 // Persistent flag for being in a deep liquid state?
#define WATER_JUST_ENTERED_DEEP_LIQUID 0x0008 // Momentary flag for the instant of entering deep liquid
/** /**
* *
* Collision mesh flags * Collision mesh flags

View File

@ -1,3 +1,8 @@
#include "actors_extended.h"
#include "collision.h"
#include "defines.h"
#include "external.h"
#include "sounds.h"
#include <actors.h> #include <actors.h>
#include <main.h> #include <main.h>
@ -40,7 +45,7 @@ void update_actor_fake_item_box(struct FakeItemBox* fake_item_box) {
fake_item_box->pos[1], fake_item_box->pos[2]); fake_item_box->pos[1], fake_item_box->pos[2]);
func_802B4E30((struct Actor*) fake_item_box); func_802B4E30((struct Actor*) fake_item_box);
temp_v1_3 = &gControllers[temp_v1]; temp_v1_3 = &gControllers[temp_v1];
if ((temp_v0_4->type & 0x4000) != 0) { if ((temp_v0_4->type & PLAYER_HUMAN) != 0) {
if ((temp_v1_3->buttonDepressed & Z_TRIG) != 0) { if ((temp_v1_3->buttonDepressed & Z_TRIG) != 0) {
temp_v1_3->buttonDepressed &= 0xDFFF; temp_v1_3->buttonDepressed &= 0xDFFF;

View File

@ -595,7 +595,7 @@ void func_800C2474(void) {
gPlayers[var_v0].unk_20C = 0.0f; gPlayers[var_v0].unk_20C = 0.0f;
gPlayers[var_v0].unk_0C0 = 0; gPlayers[var_v0].unk_0C0 = 0;
gPlayers[var_v0].unk_098 = 0.0f; gPlayers[var_v0].unk_098 = 0.0f;
gPlayers[var_v0].waterInteractionFlags = WATER_NO_INTERACTION; gPlayers[var_v0].oobProps = 0;
D_8018FC10[var_v0][0] = 0x00FF; D_8018FC10[var_v0][0] = 0x00FF;
D_8018FC10[var_v0][1] = 0; D_8018FC10[var_v0][1] = 0;
D_800EA10C[var_v0] = 0; D_800EA10C[var_v0] = 0;
@ -1835,7 +1835,7 @@ void func_800C5CB8(void) {
} }
void func_800C5D04(u8 playerId) { void func_800C5D04(u8 playerId) {
if ((gPlayers[playerId].unk_044 & 0x20) == 0x20) { if ((gPlayers[playerId].kartProps & THROTTLE) == THROTTLE) {
D_800E9E34[playerId] = 0; D_800E9E34[playerId] = 0;
if (D_800E9E24[playerId] < 0x4E20) { if (D_800E9E24[playerId] < 0x4E20) {
if ((u8) D_800EA16C == 0) { if ((u8) D_800EA16C == 0) {
@ -1864,7 +1864,7 @@ void func_800C5D04(u8 playerId) {
void func_800C5E38(u8 playerId) { void func_800C5E38(u8 playerId) {
if (D_800EA108 == 0) { if (D_800EA108 == 0) {
if (((gPlayers[playerId].unk_044 & 0x20) != 0x20) && (gPlayers[playerId].unk_098 > 400.0f)) { if (((gPlayers[playerId].kartProps & THROTTLE) != THROTTLE) && (gPlayers[playerId].unk_098 > 400.0f)) {
D_800E9E14[playerId] = 1; D_800E9E14[playerId] = 1;
if (D_800EA0EC[playerId] == 0) { if (D_800EA0EC[playerId] == 0) {
D_800E9F7C[playerId].unk_10 = 0.6f - D_800E9F54[playerId]; D_800E9F7C[playerId].unk_10 = 0.6f - D_800E9F54[playerId];
@ -1916,7 +1916,7 @@ void func_800C6108(u8 playerId) {
player = &gPlayers[playerId]; player = &gPlayers[playerId];
D_800E9E64[playerId] = (player->unk_098 / D_800E9DC4[playerId]) + D_800E9DD4[playerId]; D_800E9E64[playerId] = (player->unk_098 / D_800E9DC4[playerId]) + D_800E9DD4[playerId];
if ((player->unk_098 < 1800.0f) && ((player->unk_044 & 0x20) != 0x20)) { if ((player->unk_098 < 1800.0f) && ((player->kartProps & THROTTLE) != THROTTLE)) {
D_800E9E64[playerId] = (player->unk_098 / D_800E9F7C[playerId].unk_34) + D_800E9F7C[playerId].unk_28; D_800E9E64[playerId] = (player->unk_098 / D_800E9F7C[playerId].unk_34) + D_800E9F7C[playerId].unk_28;
if (D_800E9EC4) {} // ? if (D_800E9EC4) {} // ?
} }
@ -2014,7 +2014,7 @@ void func_800C64A0(u8 playerId) {
if (D_800E9EF4[playerId] < 0.0f) { if (D_800E9EF4[playerId] < 0.0f) {
D_800E9EF4[playerId] = 0.0f; D_800E9EF4[playerId] = 0.0f;
} }
if ((gPlayers[playerId].unk_044 & 0x20) == 0x20) { if ((gPlayers[playerId].kartProps & THROTTLE) == THROTTLE) {
D_800E9F04[playerId] = 0.56f - (D_800E9E24[playerId] * 0.06f); D_800E9F04[playerId] = 0.56f - (D_800E9E24[playerId] * 0.06f);
} else { } else {
D_800E9F04[playerId] = (D_800E9E34[playerId] / 50.0f) + 0.25f; D_800E9F04[playerId] = (D_800E9E34[playerId] / 50.0f) + 0.25f;
@ -2390,12 +2390,12 @@ void func_800C70A8(u8 playerId) {
(D_800E9E74[playerId] != 0x0000001C)) { (D_800E9E74[playerId] != 0x0000001C)) {
D_800E9E74[playerId] = 0; D_800E9E74[playerId] = 0;
} }
if ((((gPlayers[playerId].effects & 0x4000) == 0x4000) && ((gPlayers[playerId].type & 0x2000) != 0x2000)) || if ((((gPlayers[playerId].effects & 0x4000) == 0x4000) && ((gPlayers[playerId].type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE)) ||
((gPlayers[playerId].effects & 0x800) == 0x800) || ((gPlayers[playerId].effects & 0x80) == 0x80) || ((gPlayers[playerId].effects & 0x800) == 0x800) || ((gPlayers[playerId].effects & 0x80) == 0x80) ||
((gPlayers[playerId].effects & 0x40) == 0x40) || ((gPlayers[playerId].unk_044 & 0x4000) == 0x4000)) { ((gPlayers[playerId].effects & 0x40) == 0x40) || ((gPlayers[playerId].kartProps & DRIVING_SPINOUT) == DRIVING_SPINOUT)) {
D_800E9E74[playerId] = 0x00000012; D_800E9E74[playerId] = 0x00000012;
} }
if ((((gPlayers[playerId].effects & 0x20) == 0x20) && ((gPlayers[playerId].type & 0x2000) != 0x2000)) || if ((((gPlayers[playerId].effects & 0x20) == 0x20) && ((gPlayers[playerId].type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE)) ||
((gPlayers[playerId].effects & 0x800) == 0x800)) { ((gPlayers[playerId].effects & 0x800) == 0x800)) {
D_800E9E74[playerId] = 0x00000013; D_800E9E74[playerId] = 0x00000013;
} }
@ -2686,7 +2686,7 @@ void func_800C76C0(u8 playerId) {
} }
void func_800C847C(u8 playerId) { void func_800C847C(u8 playerId) {
if ((gPlayers[playerId].waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) == WATER_IS_FULLY_SUBMERGED) { if ((gPlayers[playerId].oobProps & UNDER_OOB_OR_FLUID_LEVEL) == UNDER_OOB_OR_FLUID_LEVEL) {
if (D_800E9F74[playerId] == 0) { if (D_800E9F74[playerId] == 0) {
if ((s32) D_800EA1C0 < 2) { if ((s32) D_800EA1C0 < 2) {
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xF9, 0x26)); func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xF9, 0x26));

View File

@ -475,7 +475,7 @@ void func_8001CCEC(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
D_80164A78[index] = D_800DDB30[gActiveScreenMode]; D_80164A78[index] = D_800DDB30[gActiveScreenMode];
} }
} }
if ((player->unk_0CA & 0x100) == 0x100) { if ((player->lakituProps & WENT_OVER_OOB) == WENT_OVER_OOB) {
switch (gActiveScreenMode) { switch (gActiveScreenMode) {
case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL:
case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL:
@ -545,7 +545,7 @@ void func_8001CCEC(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
*arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15)); *arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15));
} }
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) != 0) { if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) != 0) {
*arg4 = gPlayerWaterLevel[index]; *arg4 = gPlayerWaterLevel[index];
} }
} }
@ -590,7 +590,7 @@ void func_8001D53C(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
stackPadding0 = player->pos[0] + sp68[0]; stackPadding0 = player->pos[0] + sp68[0];
stackPadding2 = player->pos[2] + sp68[2]; stackPadding2 = player->pos[2] + sp68[2];
stackPadding1 = sp68[1] + (player->unk_074 + 1.5); stackPadding1 = sp68[1] + (player->unk_074 + 1.5);
if ((player->unk_0CA & 1) == 1) { if ((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) {
stackPadding1 = sp68[1] + (thing + 10.0f); stackPadding1 = sp68[1] + (thing + 10.0f);
} }
*arg3 = stackPadding0; *arg3 = stackPadding0;
@ -709,7 +709,7 @@ void func_8001D944(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
D_80164A78[index] = D_800DDB30[gActiveScreenMode]; D_80164A78[index] = D_800DDB30[gActiveScreenMode];
} }
} }
if ((player->unk_0CA & 0x100) == 0x100) { if ((player->lakituProps & WENT_OVER_OOB) == WENT_OVER_OOB) {
move_f32_towards(&D_80164A90[index], 15, 0.02f); move_f32_towards(&D_80164A90[index], 15, 0.02f);
move_f32_towards(&D_80164AA0[index], 20, 0.02f); move_f32_towards(&D_80164AA0[index], 20, 0.02f);
@ -765,7 +765,7 @@ void func_8001D944(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
*arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15)); *arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15));
} }
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) != 0) { if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) != 0) {
*arg4 = gPlayerWaterLevel[index]; *arg4 = gPlayerWaterLevel[index];
} }
} }
@ -1109,7 +1109,7 @@ void func_8001EE98(Player* player, Camera* camera, s8 index) {
func_8001A588(&camera->mode, camera, player, index, cameraIndex); func_8001A588(&camera->mode, camera, player, index, cameraIndex);
break; break;
case 1: // player camera case 1: // player camera
if (((player->unk_0CA & 1) == 1) || ((player->unk_0CA & 2) == 2)) { if (((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) || ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU)) {
func_8001E8E8(camera, player, index); func_8001E8E8(camera, player, index);
break; break;
} }
@ -1120,7 +1120,7 @@ void func_8001EE98(Player* player, Camera* camera, s8 index) {
func_8001F87C(cameraIndex); func_8001F87C(cameraIndex);
break; break;
case 9: case 9:
if (((player->unk_0CA & 1) == 1) || ((player->unk_0CA & 2) == 2)) { if (((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) || ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU)) {
func_8001E8E8(camera, player, index); func_8001E8E8(camera, player, index);
break; break;
} }
@ -1269,7 +1269,7 @@ void func_8001F87C(s32 cameraId) {
if (gActiveScreenMode == SCREEN_MODE_1P) { if (gActiveScreenMode == SCREEN_MODE_1P) {
if (gModeSelection == GRAND_PRIX) { if (gModeSelection == GRAND_PRIX) {
for (size_t i = 0; i < NUM_PLAYERS; i++) { for (size_t i = 0; i < NUM_PLAYERS; i++) {
if ((gPlayerOne[i].type & 0x200) || (gPlayerOne[i].type & 0x80)) { if ((gPlayerOne[i].type & PLAYER_STAGING) || (gPlayerOne[i].type & PLAYER_UNKNOWN_0x80)) {
break; break;
} }
if (i == PLAYER_EIGHT) { if (i == PLAYER_EIGHT) {

View File

@ -1226,7 +1226,7 @@ bool func_800088D8(s32 playerId, s16 lapNum, s16 arg2) {
return true; return true;
} }
player = &gPlayers[playerId]; player = &gPlayers[playerId];
if (player->type & 0x4000) { if (player->type & PLAYER_HUMAN) {
return true; return true;
} }
@ -1641,7 +1641,7 @@ void update_player(s32 playerId) {
if (gTrackMaxZ < player->pos[2]) { D_801633E0[playerId] = 4; } if (gTrackMaxZ < player->pos[2]) { D_801633E0[playerId] = 4; }
// clang-format on // clang-format on
if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8)) { if (!(player->lakituProps & HELD_BY_LAKITU) && !(player->lakituProps & LAKITU_SCENE)) {
gPlayerPathIndex = gPathIndexByPlayerId[playerId]; gPlayerPathIndex = gPathIndexByPlayerId[playerId];
set_current_path(gPlayerPathIndex); set_current_path(gPlayerPathIndex);
@ -1669,7 +1669,7 @@ void update_player(s32 playerId) {
// } // }
if (player->type & PLAYER_CINEMATIC_MODE) { if (player->type & PLAYER_CINEMATIC_MODE) {
player->effects &= ~REVERSE_EFFECT; player->effects &= ~REVERSE_EFFECT;
player->unk_044 &= ~1; player->kartProps &= ~BACK_UP;
} }
update_player_path_completion(playerId, player); update_player_path_completion(playerId, player);
if ((!IsPodiumCeremony()) && ((D_80163240[playerId] == 1) || (playerId == 0))) { if ((!IsPodiumCeremony()) && ((D_80163240[playerId] == 1) || (playerId == 0))) {
@ -2570,7 +2570,7 @@ s16 update_player_path(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, Player*
UNUSED s32 stackPadding2; UNUSED s32 stackPadding2;
TrackPathPoint* temp_v1; TrackPathPoint* temp_v1;
if ((player->type & 0x4000) && !(player->type & 0x1000)) { if ((player->type & PLAYER_HUMAN) && !(player->type & PLAYER_CPU)) {
newWaypoint = update_path_index_with_track(posX, posY, posZ, waypointIndex, pathIndex, newWaypoint = update_path_index_with_track(posX, posY, posZ, waypointIndex, pathIndex,
(u16) get_track_section_id(player->collision.meshIndexZX)); (u16) get_track_section_id(player->collision.meshIndexZX));
if (newWaypoint == -1) { if (newWaypoint == -1) {
@ -2578,12 +2578,12 @@ s16 update_player_path(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, Player*
} }
} else { } else {
if (D_801631E0[playerId] == 1) { if (D_801631E0[playerId] == 1) {
if (player->unk_0CA & 1) { if (player->lakituProps & LAKITU_RETRIEVAL) {
temp_v1 = &gTrackPaths[pathIndex][waypointIndex]; temp_v1 = &gTrackPaths[pathIndex][waypointIndex];
player->pos[0] = (f32) temp_v1->x; player->pos[0] = (f32) temp_v1->x;
player->pos[1] = (f32) temp_v1->y; player->pos[1] = (f32) temp_v1->y;
player->pos[2] = (f32) temp_v1->z; player->pos[2] = (f32) temp_v1->z;
player->unk_0CA &= ~0x0001; player->lakituProps &= ~LAKITU_RETRIEVAL;
return waypointIndex; return waypointIndex;
} }
if (playerId == ((s32) D_80163488 % 8)) { if (playerId == ((s32) D_80163488 % 8)) {
@ -3115,7 +3115,7 @@ void func_8000DF8C(s32 bombKartId) {
var_s1 = 0; var_s1 = 0;
sp7E = 4; sp7E = 4;
var_v0->triggers |= VERTICAL_TUMBLE_TRIGGER; var_v0->triggers |= VERTICAL_TUMBLE_TRIGGER;
var_v0->type &= ~0x2000; var_v0->type &= ~PLAYER_STAGING;
} }
} }
} else { } else {
@ -6969,7 +6969,7 @@ void func_8001A588(UNUSED u16* localD_80152300, Camera* camera, Player* player,
if (playerId >= 8) { if (playerId >= 8) {
playerId = 1; playerId = 1;
} }
if ((!(gPlayers[playerId].unk_0CA & 2) && !(gPlayers[playerId].unk_0CA & 8))) { if ((!(gPlayers[playerId].lakituProps & HELD_BY_LAKITU) && !(gPlayers[playerId].lakituProps & LAKITU_SCENE))) {
break; break;
} }
} }
@ -7863,26 +7863,26 @@ void func_8001C14C(void) {
player = &gPlayerOne[var_s1]; player = &gPlayerOne[var_s1];
update_player(var_s1); update_player(var_s1);
if (!(player->type & 0x2000)) { if (!(player->type & PLAYER_START_SEQUENCE)) {
temp_f0 = D_80163418[var_s1] - player->pos[0]; temp_f0 = D_80163418[var_s1] - player->pos[0];
temp_f2 = D_80163438[var_s1] - player->pos[2]; temp_f2 = D_80163438[var_s1] - player->pos[2];
if ((f64) ((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 1.0) { if ((f64) ((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 1.0) {
if (var_s1 != 3) { if (var_s1 != 3) {
if (1) {} if (1) {}
// Why oh why is a ternary required here? Who does that? // Why oh why is a ternary required here? Who does that?
(D_8016347C == 0) ? (player->type |= 0x2000) : (player->type &= ~0x2000); (D_8016347C == 0) ? (player->type |= PLAYER_START_SEQUENCE) : (player->type &= ~PLAYER_START_SEQUENCE);
if ((gPlayerOne->type & 0x2000) && (gPlayerTwo->type & 0x2000) && (gPlayerThree->type & 0x2000)) { if ((gPlayerOne->type & PLAYER_START_SEQUENCE) && (gPlayerTwo->type & PLAYER_START_SEQUENCE) && (gPlayerThree->type & PLAYER_START_SEQUENCE)) {
D_8016347C = 1; D_8016347C = 1;
D_80163480 = 0; D_80163480 = 0;
} }
} else if (D_8016347E == 0) { } else if (D_8016347E == 0) {
if (!(player->effects & 0x01000000)) { if (!(player->effects & 0x01000000)) {
player->type |= 0x2000; player->type |= PLAYER_START_SEQUENCE;
} }
D_8016347E = 1; D_8016347E = 1;
D_80163484 = 0; D_80163484 = 0;
} else if (!(player->effects & 0x01000000)) { } else if (!(player->effects & 0x01000000)) {
player->type |= 0x2000; player->type |= PLAYER_START_SEQUENCE;
} }
} }
} }

View File

@ -197,7 +197,7 @@ void func_8003F138(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4
*arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1; *arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1;
func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2); func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2);
if (player->surfaceType == GRASS) { if (player->surfaceType == GRASS) {
player->unk_044 &= ~1; player->kartProps &= ~BACK_UP;
} }
if (player->collision.orientationVector[1] <= 0.8357f) { if (player->collision.orientationVector[1] <= 0.8357f) {
arg3[0] = ((player->unk_206 / 182) * 0xC8); arg3[0] = ((player->unk_206 / 182) * 0xC8);
@ -222,7 +222,7 @@ void func_8003F46C(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4
arg1[0] = -player->collision.orientationVector[0]; arg1[0] = -player->collision.orientationVector[0];
arg1[1] = -player->collision.orientationVector[1]; arg1[1] = -player->collision.orientationVector[1];
arg1[2] = -player->collision.orientationVector[2]; arg1[2] = -player->collision.orientationVector[2];
if ((player->collision.orientationVector[1] < 0.0f) && ((player->unk_0CA & 2) == 0)) { if ((player->collision.orientationVector[1] < 0.0f) && ((player->lakituProps & HELD_BY_LAKITU) == 0)) {
*arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1; *arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1;
*arg6 += arg1[1] * player->collision.surfaceDistance[2] * 1; *arg6 += arg1[1] * player->collision.surfaceDistance[2] * 1;
*arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1; *arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1;

View File

@ -3249,7 +3249,7 @@ void func_80060504(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
s32 temp_v0; s32 temp_v0;
UNUSED s32 test; UNUSED s32 test;
if ((player->unk_044 & 0x20) == 0x20) { if ((player->kartProps & THROTTLE) == THROTTLE) {
var_v0 = 5; var_v0 = 5;
} else { } else {
var_v0 = 0xE; var_v0 = 0xE;
@ -3272,7 +3272,7 @@ void func_80060504(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
} }
} }
player->particlePool0[arg1].unk_024 = 0.0f; player->particlePool0[arg1].unk_024 = 0.0f;
if ((player->unk_044 & 0x20) == 0x20) { if ((player->kartProps & THROTTLE) == THROTTLE) {
player->particlePool0[arg1].unk_040 = 0; player->particlePool0[arg1].unk_040 = 0;
if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
set_particle_colour(&player->particlePool0[arg1], 0x00FFFF00, 0x0080); set_particle_colour(&player->particlePool0[arg1], 0x00FFFF00, 0x0080);
@ -3317,7 +3317,7 @@ void func_800608E0(Player* player, s16 arg1, UNUSED s32 arg2, s8 arg3, UNUSED s8
var_f0 = 0.0f; var_f0 = 0.0f;
} }
sp4C = (gPlayerWaterLevel[arg3] - player->pos[1]) - 3.0f; sp4C = (gPlayerWaterLevel[arg3] - player->pos[1]) - 3.0f;
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) && (!IsKoopaTroopaBeach())) { if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) && (!IsKoopaTroopaBeach())) {
var_f0 = 2.5f; var_f0 = 2.5f;
sp4C = (f32) ((f64) (gPlayerWaterLevel[arg3] - player->pos[1]) + 0.1); sp4C = (f32) ((f64) (gPlayerWaterLevel[arg3] - player->pos[1]) + 0.1);
} }
@ -3404,7 +3404,7 @@ void func_80060F50(Player* player, s16 arg1, UNUSED s32 arg2, s8 arg3, UNUSED s8
player->particlePool0[arg1].pos[0] = player->particlePool0[arg1].pos[0] =
player->pos[0] + (sins(player->particlePool0[arg1].unk_020) * -5.8); player->pos[0] + (sins(player->particlePool0[arg1].unk_020) * -5.8);
player->particlePool0[arg1].pos[1] = gPlayerWaterLevel[arg3]; player->particlePool0[arg1].pos[1] = gPlayerWaterLevel[arg3];
player->waterInteractionFlags &= ~WATER_JUST_ENTERED_DEEP_LIQUID; player->oobProps &= ~UNDER_OOB_LEVEL;
} }
void func_80061094(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) { void func_80061094(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
@ -3439,7 +3439,7 @@ void func_80061224(Player* player, s16 arg1, s32 arg2, s8 arg3, s8 arg4) {
} else if (player->particlePool0[arg2].unk_01E >= 2) { } else if (player->particlePool0[arg2].unk_01E >= 2) {
func_80061130(player, arg1, arg2, arg3, arg4); func_80061130(player, arg1, arg2, arg3, arg4);
if (arg1 == 9) { if (arg1 == 9) {
player->unk_044 &= ~0x0200; player->kartProps &= ~BECOME_INVISIBLE;
} }
} }
} }
@ -3479,7 +3479,7 @@ void func_80061430(Player* player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
player->particlePool3[var_s2].pos[2] = player->pos[2]; player->particlePool3[var_s2].pos[2] = player->pos[2];
player->particlePool3[var_s2].pos[0] = player->pos[0]; player->particlePool3[var_s2].pos[0] = player->pos[0];
} }
player->unk_044 &= ~0x1000; player->kartProps &= ~UNUSED_0x1000;
} }
void func_800615AC(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) { void func_800615AC(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
@ -3767,42 +3767,42 @@ void func_800624D8(Player* player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
} }
func_80062484(player, &player->particlePool3[var_s1], var_s1); func_80062484(player, &player->particlePool3[var_s1], var_s1);
} }
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
break; break;
case GRASS: case GRASS:
for (var_s1 = 0; var_s1 < 10; var_s1++) { for (var_s1 = 0; var_s1 < 10; var_s1++) {
func_8005DAD8(&player->particlePool3[var_s1], 2, 1, 0x00A8); func_8005DAD8(&player->particlePool3[var_s1], 2, 1, 0x00A8);
func_80062484(player, &player->particlePool3[var_s1], var_s1); func_80062484(player, &player->particlePool3[var_s1], var_s1);
} }
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
break; break;
case SAND_OFFROAD: case SAND_OFFROAD:
for (var_s1 = 0; var_s1 < 10; var_s1++) { for (var_s1 = 0; var_s1 < 10; var_s1++) {
func_8005DAD8(&player->particlePool3[var_s1], 2, 1, 0x00A8); func_8005DAD8(&player->particlePool3[var_s1], 2, 1, 0x00A8);
func_80062484(player, &player->particlePool3[var_s1], var_s1); func_80062484(player, &player->particlePool3[var_s1], var_s1);
} }
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
break; break;
case SAND: case SAND:
for (var_s1 = 0; var_s1 < 10; var_s1++) { for (var_s1 = 0; var_s1 < 10; var_s1++) {
func_8005DAD8(&player->particlePool3[var_s1], 3, 1, 0x00A8); func_8005DAD8(&player->particlePool3[var_s1], 3, 1, 0x00A8);
func_80062484(player, &player->particlePool3[var_s1], var_s1); func_80062484(player, &player->particlePool3[var_s1], var_s1);
} }
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
break; break;
case WET_SAND: case WET_SAND:
for (var_s1 = 0; var_s1 < 10; var_s1++) { for (var_s1 = 0; var_s1 < 10; var_s1++) {
func_8005DAD8(&player->particlePool3[var_s1], 4, 1, 0x00A8); func_8005DAD8(&player->particlePool3[var_s1], 4, 1, 0x00A8);
func_80062484(player, &player->particlePool3[var_s1], var_s1); func_80062484(player, &player->particlePool3[var_s1], var_s1);
} }
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
break; break;
case DIRT_OFFROAD: case DIRT_OFFROAD:
for (var_s1 = 0; var_s1 < 10; var_s1++) { for (var_s1 = 0; var_s1 < 10; var_s1++) {
func_8005DAD8(&player->particlePool3[var_s1], 5, 1, 0x00A8); func_8005DAD8(&player->particlePool3[var_s1], 5, 1, 0x00A8);
func_80062484(player, &player->particlePool3[var_s1], var_s1); func_80062484(player, &player->particlePool3[var_s1], var_s1);
} }
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
break; break;
case SNOW: case SNOW:
case SNOW_OFFROAD: case SNOW_OFFROAD:
@ -3810,7 +3810,7 @@ void func_800624D8(Player* player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
func_8005DAD8(&player->particlePool3[var_s1], 6, 1, 0x00A8); func_8005DAD8(&player->particlePool3[var_s1], 6, 1, 0x00A8);
func_80062484(player, &player->particlePool3[var_s1], var_s1); func_80062484(player, &player->particlePool3[var_s1], var_s1);
} }
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
break; break;
case ASPHALT: case ASPHALT:
case STONE: case STONE:
@ -3819,14 +3819,14 @@ void func_800624D8(Player* player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
func_8005DAD8(&player->particlePool3[var_s1], 0, 0, 0x00A8); func_8005DAD8(&player->particlePool3[var_s1], 0, 0, 0x00A8);
func_80062484(player, &player->particlePool3[var_s1], var_s1); func_80062484(player, &player->particlePool3[var_s1], var_s1);
} }
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
break; break;
default: default:
for (var_s1 = 0; var_s1 < 10; var_s1++) { for (var_s1 = 0; var_s1 < 10; var_s1++) {
func_8005DAD8(&player->particlePool3[var_s1], 0, 0, 0x00A8); func_8005DAD8(&player->particlePool3[var_s1], 0, 0, 0x00A8);
func_80062484(player, &player->particlePool3[var_s1], var_s1); func_80062484(player, &player->particlePool3[var_s1], var_s1);
} }
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
break; break;
} }
} }
@ -3870,7 +3870,7 @@ void func_80062A18(Player* player, s8 arg1, UNUSED s8 arg2, s8 index) {
player->particlePool2[arg1 /* arg1 instead of arg3 */].scale = 0.2f; player->particlePool2[arg1 /* arg1 instead of arg3 */].scale = 0.2f;
player->particlePool2[index].unk_01E = 1; player->particlePool2[index].unk_01E = 1;
player->particlePool2[index].unk_020 = 0; player->particlePool2[index].unk_020 = 0;
player->unk_0B6 &= ~0x0080; player->kartGraphics &= ~WHIRRR;
player->particlePool2[index].pos[2] = player->pos[2]; player->particlePool2[index].pos[2] = player->pos[2];
player->particlePool2[index].pos[0] = player->pos[0]; player->particlePool2[index].pos[0] = player->pos[0];
player->particlePool2[index].pos[1] = (player->pos[1] + 4.0f); player->particlePool2[index].pos[1] = (player->pos[1] + 4.0f);
@ -3981,7 +3981,7 @@ void func_80062F98(Player* player, s16 arg1, s8 arg2, UNUSED s8 arg3) {
temp_f0 = player->particlePool1[arg1].unk_018 / 10.0f; temp_f0 = player->particlePool1[arg1].unk_018 / 10.0f;
++player->particlePool1[arg1].unk_01E; ++player->particlePool1[arg1].unk_01E;
player->particlePool1[arg1].pos[1] += temp_f0; player->particlePool1[arg1].pos[1] += temp_f0;
if ((player->unk_0CA & 1) == 1) { if ((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) {
player->particlePool1[arg1].pos[1] += (temp_f0 + 0.3); player->particlePool1[arg1].pos[1] += (temp_f0 + 0.3);
if ((player->particlePool1[arg1].unk_01E == 0x10) || if ((player->particlePool1[arg1].unk_01E == 0x10) ||
((gPlayerWaterLevel[arg2] - player->particlePool1[arg1].pos[1]) < 3.0f)) { ((gPlayerWaterLevel[arg2] - player->particlePool1[arg1].pos[1]) < 3.0f)) {
@ -4321,7 +4321,7 @@ void func_80064184(Player* player, s16 arg1, s8 arg2, UNUSED s8 arg3) {
f32 sp3C; f32 sp3C;
sp40 = gPlayerWaterLevel[arg2] - player->pos[1] - 3.0f; sp40 = gPlayerWaterLevel[arg2] - player->pos[1] - 3.0f;
if (((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) != 0) && (!IsKoopaTroopaBeach())) { if (((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) != 0) && (!IsKoopaTroopaBeach())) {
sp40 = gPlayerWaterLevel[arg2] - player->pos[1] + 0.1; sp40 = gPlayerWaterLevel[arg2] - player->pos[1] + 0.1;
} }
@ -4570,7 +4570,7 @@ void func_80064DEC(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
++player->particlePool2[index].unk_01E; ++player->particlePool2[index].unk_01E;
if (player->particlePool2[index].unk_01E == 9) { if (player->particlePool2[index].unk_01E == 9) {
player->unk_0B6 &= ~0x0040; player->kartGraphics &= ~CRASH;
player->particlePool2[index].isAlive = 0; player->particlePool2[index].isAlive = 0;
player->particlePool2[index].unk_01E = 0; player->particlePool2[index].unk_01E = 0;
player->particlePool2[index].type = 0; player->particlePool2[index].type = 0;
@ -4592,7 +4592,7 @@ void func_80064EA4(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
} else { } else {
player->particlePool2[index].scale -= 1.8; player->particlePool2[index].scale -= 1.8;
if (player->particlePool2[index].scale <= 0.0f) { if (player->particlePool2[index].scale <= 0.0f) {
player->unk_0B6 &= ~0x1000; player->kartGraphics &= ~EXPLOSION;
player->particlePool2[index].isAlive = 0; player->particlePool2[index].isAlive = 0;
player->particlePool2[index].unk_01E = 0; player->particlePool2[index].unk_01E = 0;
player->particlePool2[index].type = 0; player->particlePool2[index].type = 0;
@ -4608,7 +4608,7 @@ void func_80064F88(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
player->particlePool2[index].scale = 1.2f; player->particlePool2[index].scale = 1.2f;
} }
if (player->particlePool2[index].unk_01E >= 12) { if (player->particlePool2[index].unk_01E >= 12) {
player->unk_0B6 &= ~0x0800; player->kartGraphics &= ~BOING;
player->particlePool2[index].isAlive = 0; player->particlePool2[index].isAlive = 0;
player->particlePool2[index].unk_01E = 0; player->particlePool2[index].unk_01E = 0;
player->particlePool2[index].type = 0; player->particlePool2[index].type = 0;
@ -4625,7 +4625,7 @@ void func_80065030(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
} }
if (player->particlePool2[index].unk_01E >= 12) { if (player->particlePool2[index].unk_01E >= 12) {
player->unk_0B6 &= ~0x0100; player->kartGraphics &= ~POOMP;
player->particlePool2[index].isAlive = 0; player->particlePool2[index].isAlive = 0;
player->particlePool2[index].unk_01E = 0; player->particlePool2[index].unk_01E = 0;
player->particlePool2[index].type = 0; player->particlePool2[index].type = 0;
@ -4664,7 +4664,7 @@ void func_800651F4(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
} else { } else {
player->particlePool2[index].scale -= 0.4; player->particlePool2[index].scale -= 0.4;
if (player->particlePool2[index].scale <= 0.0f) { if (player->particlePool2[index].scale <= 0.0f) {
player->unk_0B6 &= ~0x0020; player->kartGraphics &= ~WHISTLE;
player->particlePool2[index].isAlive = 0; player->particlePool2[index].isAlive = 0;
player->particlePool2[index].unk_01E = 0; player->particlePool2[index].unk_01E = 0;
player->particlePool2[index].type = 0; player->particlePool2[index].type = 0;
@ -6048,7 +6048,7 @@ void func_8006C6AC(Player* player, s16 particleIndex, s8 arg2, s8 arg3) {
break; break;
} }
} else { } else {
if (player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) { if (player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) {
func_80060BCC(player, particleIndex, sp28, arg2_copy, arg3); func_80060BCC(player, particleIndex, sp28, arg2_copy, arg3);
} else if (!(player->effects & 8) && !(player->effects & 2)) { } else if (!(player->effects & 8) && !(player->effects & 2)) {
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) &&
@ -6060,7 +6060,7 @@ void func_8006C6AC(Player* player, s16 particleIndex, s8 arg2, s8 arg3) {
} else if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) { } else if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) {
func_8005F90C(player, particleIndex, sp28, arg2_copy, arg3); func_8005F90C(player, particleIndex, sp28, arg2_copy, arg3);
} else if (((player->effects & 0x4000) && !(player->type & PLAYER_START_SEQUENCE)) || } else if (((player->effects & 0x4000) && !(player->type & PLAYER_START_SEQUENCE)) ||
(player->effects & 0x800) || (player->effects & 0x20) || (player->unk_044 & 0x4000)) { (player->effects & 0x800) || (player->effects & 0x20) || (player->kartProps & DRIVING_SPINOUT)) {
func_8005ED48(player, particleIndex, sp28, arg2_copy, arg3); func_8005ED48(player, particleIndex, sp28, arg2_copy, arg3);
} else { } else {
setup_tyre_particles(player, particleIndex, sp28, arg2_copy, arg3); setup_tyre_particles(player, particleIndex, sp28, arg2_copy, arg3);
@ -6118,40 +6118,40 @@ void func_8006C9B8(Player* player, s16 arg1, s8 arg2, s8 arg3) {
break; break;
} }
} else { } else {
if (player->unk_044 & 0x1000) { if (player->kartProps & UNUSED_0x1000) {
func_80061430(player, arg1, sp28, arg2, arg3); func_80061430(player, arg1, sp28, arg2, arg3);
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
return; return;
} }
if (((((player->unk_0CA & 0x1000) == 0x1000) || ((player->unk_0E0 < 2) && (player->effects & 0x01000000))) || if (((((player->lakituProps & LAKITU_LAVA) == LAKITU_LAVA) || ((player->unk_0E0 < 2) && (player->effects & 0x01000000))) ||
((player->unk_0E0 < 2) && (player->effects & HIT_BY_ITEM_EFFECT))) || ((player->unk_0E0 < 2) && (player->effects & HIT_BY_ITEM_EFFECT))) ||
(player->effects & 0x400)) { (player->effects & 0x400)) {
func_8006199C(player, arg1, sp28, arg2, arg3); func_8006199C(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008; player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
return; return;
} }
if ((player->unk_0CA & 0x2000) == 0x2000) { if ((player->lakituProps & LAKITU_WATER) == LAKITU_WATER) {
func_80061A34(player, arg1, sp28, arg2, arg3); func_80061A34(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008; player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
return; return;
} }
if ((player->effects & STAR_EFFECT) && ((((s32) gCourseTimer) - gPlayerStarEffectStartTime[arg2]) < 9)) { if ((player->effects & STAR_EFFECT) && ((((s32) gCourseTimer) - gPlayerStarEffectStartTime[arg2]) < 9)) {
func_800615AC(player, arg1, sp28, arg2, arg3); func_800615AC(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008; player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
return; return;
} }
if ((player->unk_046 & 8) == 8) { if ((player->unk_046 & 8) == 8) {
func_800612F8(player, arg1, sp28, arg2, arg3); func_800612F8(player, arg1, sp28, arg2, arg3);
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
return; return;
} }
if (((player->unk_046 & 0x20) == 0x20) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) { if (((player->unk_046 & 0x20) == 0x20) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
func_80061D4C(player, arg1, sp28, arg2, arg3); func_80061D4C(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008; player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
return; return;
} }
if ((player->effects & BOOST_EFFECT) && (player->type & PLAYER_HUMAN)) { if ((player->effects & BOOST_EFFECT) && (player->type & PLAYER_HUMAN)) {
@ -6162,10 +6162,10 @@ void func_8006C9B8(Player* player, s16 arg1, s8 arg2, s8 arg3) {
((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
func_80061EF4(player, arg1, sp28, arg2, arg3); func_80061EF4(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008; player->unk_046 &= ~0x0008;
player->unk_044 &= ~0x0100; player->kartProps &= ~POST_TUMBLE_GAS;
return; return;
} }
if ((player->unk_044 & 0x100) == 0x100) { if ((player->kartProps & POST_TUMBLE_GAS) == POST_TUMBLE_GAS) {
func_800624D8(player, arg1, sp28, arg2, arg3); func_800624D8(player, arg1, sp28, arg2, arg3);
player->unk_046 &= ~0x0008; player->unk_046 &= ~0x0008;
} }
@ -6197,17 +6197,17 @@ void func_8006CEC0(Player* player, s16 arg1, s8 arg2, s8 arg3) {
break; break;
} }
} else { } else {
if ((player->unk_044 & 0x200) && (player->type & 0x4000)) { if ((player->kartProps & BECOME_INVISIBLE) && (player->type & PLAYER_HUMAN)) {
func_80061224(player, arg1, sp20, arg2, arg3); func_80061224(player, arg1, sp20, arg2, arg3);
return; return;
} else if (((player->effects & 0x40000000) == 0x40000000) && (player->unk_0B0 < 0x32)) { } else if (((player->effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) && (player->unk_0B0 < 0x32)) {
func_80061094(player, arg1, sp20, arg2, arg3); func_80061094(player, arg1, sp20, arg2, arg3);
return; return;
} else if ((player->type & 0x4000) == 0x4000) { } else if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
if ((player->waterInteractionFlags & WATER_JUST_ENTERED_DEEP_LIQUID) == WATER_JUST_ENTERED_DEEP_LIQUID) { if ((player->oobProps & UNDER_OOB_LEVEL) == UNDER_OOB_LEVEL) {
func_80060F50(player, arg1, sp20, arg2, arg3); func_80060F50(player, arg1, sp20, arg2, arg3);
return; return;
} else if ((player->waterInteractionFlags & WATER_IS_PARTIALLY_SUBMERGED) || (player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED)) { } else if ((player->oobProps & PASS_OOB_OR_FLUID_LEVEL) || (player->oobProps & UNDER_OOB_OR_FLUID_LEVEL)) {
func_80060B14(player, arg1, sp20, arg2, arg3); func_80060B14(player, arg1, sp20, arg2, arg3);
return; return;
} }
@ -6216,7 +6216,7 @@ void func_8006CEC0(Player* player, s16 arg1, s8 arg2, s8 arg3) {
case SCREEN_MODE_1P: case SCREEN_MODE_1P:
if (((player->effects & 0x04000000) != 0x04000000) && ((player->effects & 0x400) != 0x400) && if (((player->effects & 0x04000000) != 0x04000000) && ((player->effects & 0x400) != 0x400) &&
((player->effects & 0x01000000) != 0x01000000)) { ((player->effects & 0x01000000) != 0x01000000)) {
if (((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 0x10) != 0x10) && !(player->unk_0CA & 0x100)) { if (((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) && ((player->lakituProps & FRIGID_EFFECT) != FRIGID_EFFECT) && !(player->lakituProps & WENT_OVER_OOB)) {
func_80060504(player, arg1, sp20, arg2, arg3); func_80060504(player, arg1, sp20, arg2, arg3);
} }
} }
@ -6226,9 +6226,9 @@ void func_8006CEC0(Player* player, s16 arg1, s8 arg2, s8 arg3) {
case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL:
case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL:
case SCREEN_MODE_3P_4P_SPLITSCREEN: case SCREEN_MODE_3P_4P_SPLITSCREEN:
if (((player->type & 0x4000) != 0) && ((player->effects & 0x04000000) != 0x04000000) && if (((player->type & PLAYER_HUMAN) != 0) && ((player->effects & 0x04000000) != 0x04000000) &&
((player->effects & 0x400) != 0x400) && ((player->effects & 0x01000000) != 0x01000000)) { ((player->effects & 0x400) != 0x400) && ((player->effects & 0x01000000) != 0x01000000)) {
if (((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 0x10) != 0x10) && !(player->unk_0CA & 0x100)) { if (((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) && ((player->lakituProps & FRIGID_EFFECT) != FRIGID_EFFECT) && !(player->lakituProps & WENT_OVER_OOB)) {
func_80060504(player, arg1, sp20, arg2, arg3); func_80060504(player, arg1, sp20, arg2, arg3);
} }
} }
@ -6238,8 +6238,8 @@ void func_8006CEC0(Player* player, s16 arg1, s8 arg2, s8 arg3) {
} }
void func_8006D194(Player* player, s8 arg1, s8 arg2) { void func_8006D194(Player* player, s8 arg1, s8 arg2) {
if (player->particlePool0[0x14].isAlive == 1) { if (player->particlePool2[0].isAlive == 1) {
switch (player->particlePool0[0x14].type) { switch (player->particlePool2[0].type) {
case 2: case 2:
func_80064DEC(player, arg1, arg2, 0); func_80064DEC(player, arg1, arg2, 0);
break; break;
@ -6257,34 +6257,34 @@ void func_8006D194(Player* player, s8 arg1, s8 arg2) {
break; break;
} }
} else { } else {
if ((player->unk_0B6 & 0x40) == 0x40) { if ((player->kartGraphics & CRASH) == CRASH) {
func_800628C0(player, arg1, arg2, 0); func_800628C0(player, arg1, arg2, 0);
} }
if ((player->unk_0B6 & 0x800) == 0x800) { if ((player->kartGraphics & BOING) == BOING) {
func_80062968(player, arg1, arg2, 0); func_80062968(player, arg1, arg2, 0);
} }
if ((player->unk_0B6 & 0x1000) == 0x1000) { if ((player->kartGraphics & EXPLOSION) == EXPLOSION) {
func_80062914(player, arg1, arg2, 0); func_80062914(player, arg1, arg2, 0);
} }
if ((player->unk_0B6 & 0x80) == 0x80) { if ((player->kartGraphics & WHIRRR) == WHIRRR) {
func_80062A18(player, arg1, arg2, 0); func_80062A18(player, arg1, arg2, 0);
} }
if ((player->unk_0B6 & 0x100) == 0x100) { if ((player->kartGraphics & POOMP) == POOMP) {
func_800629BC(player, arg1, arg2, 0); func_800629BC(player, arg1, arg2, 0);
} }
} }
if (player->particlePool0[0x15].isAlive == 1) { if (player->particlePool2[1].isAlive == 1) {
if (player->particlePool0[0x15].type == 5) { if (player->particlePool2[1].type == 5) {
func_800651F4(player, arg1, arg2, 1); func_800651F4(player, arg1, arg2, 1);
} }
} else if ((player->unk_0B6 & 0x20) == 0x20) { } else if ((player->kartGraphics & WHISTLE) == WHISTLE) {
func_80062AA8(player, arg1, arg2, 1); func_80062AA8(player, arg1, arg2, 1);
} }
} }
void func_8006D474(Player* player, s8 playerId, s8 screenId) { void func_8006D474(Player* player, s8 playerId, s8 screenId) {
s16 var_s2; s16 var_s2;
if ((player->unk_002 & (8 << (screenId * 4))) == (8 << (screenId * 4))) { if ((player->unk_002 & (SIDE_OF_KART << (screenId * 4))) == (SIDE_OF_KART << (screenId * 4))) {
for (var_s2 = 0; var_s2 < 10; var_s2++) { for (var_s2 = 0; var_s2 < 10; var_s2++) {
// @port: Tag the transform. // @port: Tag the transform.
FrameInterpolation_RecordOpenChild("SmokeDust", TAG_SMOKE_DUST((playerId << 8) + var_s2)); FrameInterpolation_RecordOpenChild("SmokeDust", TAG_SMOKE_DUST((playerId << 8) + var_s2));
@ -6418,7 +6418,7 @@ void func_8006D474(Player* player, s8 playerId, s8 screenId) {
FrameInterpolation_RecordCloseChild(); FrameInterpolation_RecordCloseChild();
} }
} }
if ((gModeSelection == BATTLE) && (player->unk_002 & (2 << (screenId * 4)))) { if ((gModeSelection == BATTLE) && (player->unk_002 & (UNK_002_UNKNOWN_0x2 << (screenId * 4)))) {
func_8006BA94(player, playerId, screenId); func_8006BA94(player, playerId, screenId);
} }
} }
@ -6427,7 +6427,7 @@ void func_8006DC54(Player* player, s8 arg1, s8 arg2) {
s16 i; s16 i;
s32 bitwiseMask; s32 bitwiseMask;
bitwiseMask = 8 << (arg2 * 4); bitwiseMask = SIDE_OF_KART << (arg2 * 4);
if (bitwiseMask == (player->unk_002 & bitwiseMask)) { if (bitwiseMask == (player->unk_002 & bitwiseMask)) {
for (i = 0; i < 10; i++) { for (i = 0; i < 10; i++) {
if (player->particlePool0[i].type == 7) { if (player->particlePool0[i].type == 7) {
@ -6441,7 +6441,7 @@ void func_8006DD3C(Player* player, s8 playerId, s8 arg2) {
s16 temp_s0; s16 temp_s0;
s32 temp_v0; s32 temp_v0;
temp_v0 = 8 << (arg2 * 4); temp_v0 = SIDE_OF_KART << (arg2 * 4);
if (temp_v0 == (player->unk_002 & temp_v0)) { if (temp_v0 == (player->unk_002 & temp_v0)) {
for (temp_s0 = 0; temp_s0 < 10; ++temp_s0) { for (temp_s0 = 0; temp_s0 < 10; ++temp_s0) {
temp_v0 = player->particlePool0[temp_s0].type; temp_v0 = player->particlePool0[temp_s0].type;
@ -6458,7 +6458,7 @@ void func_8006DD3C(Player* player, s8 playerId, s8 arg2) {
} }
} }
if (((player->type & 0x4000) == 0x4000) && (arg2 == playerId)) { if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && (arg2 == playerId)) {
FrameInterpolation_RecordOpenChild("onomatopoeia", TAG_SMOKE_DUST((playerId << 8) + 20)); FrameInterpolation_RecordOpenChild("onomatopoeia", TAG_SMOKE_DUST((playerId << 8) + 20));
switch (player->particlePool2[0].type) { switch (player->particlePool2[0].type) {
case 2: case 2:
@ -6504,11 +6504,11 @@ void func_8006E058(void) {
case TIME_TRIALS: case TIME_TRIALS:
func_8006E420(gPlayerOne, 0, 0); func_8006E420(gPlayerOne, 0, 0);
if ((gPlayerTwo->type & 0x100) == 0x100) { if ((gPlayerTwo->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) {
func_8006E420(gPlayerTwo, 1, 0); func_8006E420(gPlayerTwo, 1, 0);
} }
if ((gPlayerThree->type & 0x100) == 0x100) { if ((gPlayerThree->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) {
func_8006E420(gPlayerThree, 2, 0); func_8006E420(gPlayerThree, 2, 0);
break; break;
} }

View File

@ -136,7 +136,7 @@ UNUSED void func_unnamed33(void) {
void func_8008C310(Player* player) { void func_8008C310(Player* player) {
if ((player->triggers & HIGH_TUMBLE_TRIGGER) || (player->triggers & LOW_TUMBLE_TRIGGER) || ((player->triggers << 9) < 0) || if ((player->triggers & HIGH_TUMBLE_TRIGGER) || (player->triggers & LOW_TUMBLE_TRIGGER) || ((player->triggers << 9) < 0) ||
(player->triggers & HIT_BY_STAR_TRIGGER)) { (player->triggers & HIT_BY_STAR_TRIGGER)) {
player->unk_0B6 = ((u16) player->unk_0B6 | 0x1000); player->kartGraphics = ((u16) player->kartGraphics | EXPLOSION);
} }
} }
@ -155,7 +155,7 @@ void clean_effect(Player* player, s8 arg1) {
if ((player->effects & 0x800) == 0x800) { if ((player->effects & 0x800) == 0x800) {
func_8008D0E4(player, arg1); func_8008D0E4(player, arg1);
} }
if ((player->unk_044 & 0x4000) != 0) { if ((player->kartProps & DRIVING_SPINOUT) != 0) {
func_8008D3B0(player, arg1); func_8008D3B0(player, arg1);
} }
if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
@ -188,7 +188,7 @@ void clean_effect(Player* player, s8 arg1) {
if ((player->effects & 0x10000000) == 0x10000000) { if ((player->effects & 0x10000000) == 0x10000000) {
func_8008FEDC(player, arg1); func_8008FEDC(player, arg1);
} }
player->unk_044 = (s16) (player->unk_044 & 0xFFFE); player->kartProps = (s16) (player->kartProps & ~BACK_UP);
player->effects = (s32) (player->effects & ~0x20); player->effects = (s32) (player->effects & ~0x20);
} }
@ -266,7 +266,7 @@ void func_8008C73C(Player* player, s8 playerIndex) {
player->effects |= 0x80; player->effects |= 0x80;
} }
player->unk_0B6 |= 0x80; player->kartGraphics |= WHIRRR;
// clang-format off // clang-format off
player->unk_0C0 = 0; player->unk_07C = 0; player->unk_078 = 0; player->unk_0AE = player->rotation[1]; player->unk_0B2 = 2; player->unk_0C0 = 0; player->unk_07C = 0; player->unk_078 = 0; player->unk_0AE = player->rotation[1]; player->unk_0B2 = 2;
// clang-format on // clang-format on
@ -310,7 +310,7 @@ void func_8008C8C4(Player* player, s8 playerId) {
player->currentSpeed = (f32) (player->currentSpeed + 100.0f); player->currentSpeed = (f32) (player->currentSpeed + 100.0f);
} }
if ((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) == PLAYER_CPU) && (!gDemoMode) && if ((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) == PLAYER_CPU) && (!gDemoMode) &&
((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) { ((player->lakituProps & HELD_BY_LAKITU) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) {
player->triggers = (s32) (player->triggers | VERTICAL_TUMBLE_TRIGGER); player->triggers = (s32) (player->triggers | VERTICAL_TUMBLE_TRIGGER);
} }
} }
@ -411,7 +411,7 @@ void func_8008CEB0(Player* player, s8 arg1) {
func_8008C73C(player, arg1); func_8008C73C(player, arg1);
var_v1 = 0; var_v1 = 0;
} else { } else {
player->unk_0B6 |= 0x20; player->kartGraphics |= WHISTLE;
player->effects &= ~0x40000; player->effects &= ~0x40000;
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008); func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
@ -448,8 +448,8 @@ void func_8008D0FC(Player* player, s8 arg1) {
player->unk_0B4 = 0; player->unk_0B4 = 0;
player->unk_0B8 = 2.0f; player->unk_0B8 = 2.0f;
player->unk_0AC = 1; player->unk_0AC = 1;
player->effects &= ~0x10; player->effects &= ~DRIFTING_EFFECT;
player->unk_044 |= 0x4000; player->kartProps |= DRIVING_SPINOUT;
} }
void func_8008D170(Player* player, s8 arg1) { void func_8008D170(Player* player, s8 arg1) {
@ -467,16 +467,16 @@ void func_8008D170(Player* player, s8 arg1) {
var_v1 = 0; var_v1 = 0;
var_a3 = -var_a3; var_a3 = -var_a3;
var_f0 *= 0.9; var_f0 *= 0.9;
if (((player->effects & 1) == 1) || !(player->unk_044 & 0x20)) { if (((player->effects & 1) == 1) || !(player->kartProps & THROTTLE)) {
player->effects |= 0x40000; player->effects |= 0x40000;
} }
if (var_f0 <= 1.3) { if (var_f0 <= 1.3) {
player->unk_044 &= ~0x4000; player->kartProps &= ~DRIVING_SPINOUT;
if ((player->effects & 0x40000) != 0x40000) { if ((player->effects & 0x40000) != 0x40000) {
func_8008C73C(player, arg1); func_8008C73C(player, arg1);
var_v1 = 0; var_v1 = 0;
} else { } else {
player->unk_0B6 |= 0x20; player->kartGraphics |= WHISTLE;
player->effects &= ~0x40000; player->effects &= ~0x40000;
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008); func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
@ -498,12 +498,12 @@ void func_8008D170(Player* player, s8 arg1) {
player->unk_0AC = var_a3; player->unk_0AC = var_a3;
if (player->effects & 8) { if (player->effects & 8) {
func_8008C73C(player, arg1); func_8008C73C(player, arg1);
player->unk_044 &= ~0x4000; player->kartProps &= ~DRIVING_SPINOUT;
} }
} }
void func_8008D3B0(Player* player, UNUSED s8 arg1) { void func_8008D3B0(Player* player, UNUSED s8 arg1) {
player->unk_044 &= 0xBFFF; player->kartProps &= ~DRIVING_SPINOUT;
} }
void trigger_shroom(Player* player, s8 arg1) { void trigger_shroom(Player* player, s8 arg1) {
@ -609,7 +609,7 @@ void func_8008D760(Player* player) {
player->rotation[1] = player->unk_0AE; player->rotation[1] = player->unk_0AE;
player->effects &= 0xFFF7FFFF; player->effects &= 0xFFF7FFFF;
player->kartGravity = gKartGravityTable[player->characterId]; player->kartGravity = gKartGravityTable[player->characterId];
player->type &= 0xFF7F; player->type &= ~PLAYER_UNKNOWN_0x80;
} }
void func_8008D7B0(Player* player, s8 arg1) { void func_8008D7B0(Player* player, s8 arg1) {
@ -713,7 +713,7 @@ void trigger_squish(Player* player, s8 arg1) {
} }
player->effects |= HIT_EFFECT; player->effects |= HIT_EFFECT;
if (((player->type) & 0x1000) != 0) { if (((player->type) & PLAYER_CPU) != 0) {
play_cpu_sound_effect(arg1, player); play_cpu_sound_effect(arg1, player);
} }
} }
@ -957,7 +957,7 @@ void func_8008E4A4(Player* player, s8 arg1) {
D_80165190[2][arg1] = 1; D_80165190[2][arg1] = 1;
D_80165190[3][arg1] = 1; D_80165190[3][arg1] = 1;
player->unk_042 = 0; player->unk_042 = 0;
player->type &= ~0x80; player->type &= ~PLAYER_UNKNOWN_0x80;
if ((gIsPlayerTripleAButtonCombo[arg1] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { if ((gIsPlayerTripleAButtonCombo[arg1] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
player->currentSpeed += 100.0f; player->currentSpeed += 100.0f;
@ -986,7 +986,7 @@ void func_8008E4A4(Player* player, s8 arg1) {
player->currentSpeed += 100.0f; player->currentSpeed += 100.0f;
} }
player->type &= ~0x80; player->type &= ~PLAYER_UNKNOWN_0x80;
} }
} }
} }
@ -1026,7 +1026,7 @@ void trigger_vertical_tumble(Player* player, s8 arg1) {
} }
player->triggers &= ~(VERTICAL_TUMBLE_TRIGGER | HIT_PADDLE_BOAT_TRIGGER); player->triggers &= ~(VERTICAL_TUMBLE_TRIGGER | HIT_PADDLE_BOAT_TRIGGER);
player->unk_0B6 |= 0x40; player->kartGraphics |= CRASH;
gTimerBoostTripleACombo[arg1] = 0; gTimerBoostTripleACombo[arg1] = 0;
gIsPlayerTripleAButtonCombo[arg1] = false; gIsPlayerTripleAButtonCombo[arg1] = false;
gCountASwitch[arg1] = 0; gCountASwitch[arg1] = 0;
@ -1125,7 +1125,7 @@ void trigger_high_tumble(Player* player, s8 arg1) {
} }
player->effects |= HIT_BY_ITEM_EFFECT; player->effects |= HIT_BY_ITEM_EFFECT;
player->unk_0B6 |= 0x40; player->kartGraphics |= CRASH;
player->triggers &= ~(HIT_BY_STAR_TRIGGER | HIGH_TUMBLE_TRIGGER); player->triggers &= ~(HIT_BY_STAR_TRIGGER | HIGH_TUMBLE_TRIGGER);
gTimerBoostTripleACombo[arg1] = 0; gTimerBoostTripleACombo[arg1] = 0;
@ -1161,7 +1161,7 @@ void trigger_asphalt_ramp_boost(Player* player, s8 playerId) {
func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001); func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
func_800C9060(playerId, 0x1900A40B); func_800C9060(playerId, 0x1900A40B);
} }
player->unk_044 &= ~0x1; player->kartProps &= ~BACK_UP;
player->effects &= ~0x20; player->effects &= ~0x20;
} }
@ -1209,7 +1209,7 @@ void trigger_wood_ramp_boost(Player* player, s8 playerId) {
func_800C9060(playerId, 0x1900A40B); func_800C9060(playerId, 0x1900A40B);
} }
player->unk_044 &= ~0x1; player->kartProps &= ~BACK_UP;
player->effects &= ~0x20; player->effects &= ~0x20;
} }
@ -1257,14 +1257,14 @@ void func_8008F1B8(Player* player, s8 arg1) {
player->kartPropulsionStrength = (player->unk_210 * 0.05); player->kartPropulsionStrength = (player->unk_210 * 0.05);
if (player->unk_0B2 < 0) { if (player->unk_0B2 < 0) {
if ((player->unk_044 & 0x80) == 0x80) { if ((player->kartProps & EARLY_SPINOUT_LEFT) == EARLY_SPINOUT_LEFT) {
player->rotation[1] += 182; player->rotation[1] += 182;
D_8018D920[arg1] += 182; D_8018D920[arg1] += 182;
temp = ((u16) D_8018D920[arg1] / 182); temp = ((u16) D_8018D920[arg1] / 182);
if (temp == 180) { if (temp == 180) {
player->effects &= ~0x4000; player->effects &= ~0x4000;
player->type &= ~0x80; player->type &= ~PLAYER_UNKNOWN_0x80;
player->currentSpeed /= 3.0f; player->currentSpeed /= 3.0f;
} }
} else { } else {
@ -1274,7 +1274,7 @@ void func_8008F1B8(Player* player, s8 arg1) {
temp = ((u16) D_8018D920[arg1] / 182); temp = ((u16) D_8018D920[arg1] / 182);
if (temp == 180) { if (temp == 180) {
player->effects &= ~0x4000; player->effects &= ~0x4000;
player->type &= ~0x80; player->type &= ~PLAYER_UNKNOWN_0x80;
player->currentSpeed /= 3.0f; player->currentSpeed /= 3.0f;
} }
} }
@ -1286,8 +1286,8 @@ void func_8008F1B8(Player* player, s8 arg1) {
if (temp < 71) { if (temp < 71) {
--player->unk_0B2; --player->unk_0B2;
} }
player->unk_044 |= 0x80; player->kartProps |= EARLY_SPINOUT_LEFT;
player->unk_044 &= ~0x40; player->kartProps &= ~EARLY_SPINOUT_RIGHT;
return; return;
} }
player->rotation[1] += 364; player->rotation[1] += 364;
@ -1296,8 +1296,8 @@ void func_8008F1B8(Player* player, s8 arg1) {
if (temp >= 110) { if (temp >= 110) {
--player->unk_0B2; --player->unk_0B2;
} }
player->unk_044 |= 0x40; player->kartProps |= EARLY_SPINOUT_RIGHT;
player->unk_044 &= ~0x80; player->kartProps &= ~EARLY_SPINOUT_LEFT;
} }
} }
@ -1326,7 +1326,7 @@ void func_8008F494(Player* player, s8 arg1) {
if ((((player->effects & 0x80) != 0) || ((player->effects & 0x40) != 0) || ((player->effects & 0x01000000)) || if ((((player->effects & 0x80) != 0) || ((player->effects & 0x40) != 0) || ((player->effects & 0x01000000)) ||
((player->effects & HIT_BY_ITEM_EFFECT)) || ((player->effects & 0x400) != 0)) && ((player->effects & HIT_BY_ITEM_EFFECT)) || ((player->effects & 0x400) != 0)) &&
(gModeSelection == BATTLE)) { (gModeSelection == BATTLE)) {
player->unk_044 |= 0x8000; player->kartProps |= UNKNOWN_BATTLE_VAR;
} }
clean_effect(player, arg1); clean_effect(player, arg1);
@ -1339,16 +1339,16 @@ void func_8008F494(Player* player, s8 arg1) {
player->unk_042 = 0; player->unk_042 = 0;
if (((player->type & PLAYER_HUMAN) != 0) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0) && if (((player->type & PLAYER_HUMAN) != 0) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0) &&
((player->unk_0CA & 2) == 0) && ((player->waterInteractionFlags & 1) == 0) && ((player->waterInteractionFlags & 2) == 0)) { ((player->lakituProps & HELD_BY_LAKITU) == 0) && ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) == 0) && ((player->oobProps & PASS_OOB_OR_FLUID_LEVEL) == 0)) {
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008004); func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008004);
} }
} }
void func_8008F5A4(Player* player, s8 arg1) { void func_8008F5A4(Player* player, s8 arg1) {
if ((player->unk_044 & 0x8000) != 0) { if ((player->kartProps & UNKNOWN_BATTLE_VAR) != 0) {
pop_player_balloon(player, arg1); pop_player_balloon(player, arg1);
player->unk_044 &= ~0x8000; player->kartProps &= ~UNKNOWN_BATTLE_VAR;
} }
player->unk_206 = 0; player->unk_206 = 0;
@ -1450,7 +1450,7 @@ void apply_boo_effect(Player* player, s8 playerIndex) {
player->alpha = ALPHA_MAX; player->alpha = ALPHA_MAX;
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX; gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
player->effects &= ~0x80000000; player->effects &= ~0x80000000;
if ((player->type & 0x4000) != 0) { if ((player->type & PLAYER_HUMAN) != 0) {
func_800CB064(playerIndex); func_800CB064(playerIndex);
} }
} }
@ -1460,7 +1460,7 @@ void apply_boo_effect(Player* player, s8 playerIndex) {
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX; gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
player->alpha = ALPHA_MAX; player->alpha = ALPHA_MAX;
player->effects &= ~0x80000000; player->effects &= ~0x80000000;
if ((player->type & 0x4000) != 0) { if ((player->type & PLAYER_HUMAN) != 0) {
func_800CB064(playerIndex); func_800CB064(playerIndex);
} }
} }
@ -1469,9 +1469,9 @@ void apply_boo_effect(Player* player, s8 playerIndex) {
void trigger_boo(Player* player, s8 playerIndex) { void trigger_boo(Player* player, s8 playerIndex) {
s16 temp_v1; s16 temp_v1;
// become boo
if ((player->type & PLAYER_HUMAN) != 0) { if ((player->type & PLAYER_HUMAN) != 0) {
player->unk_044 |= 0x200; player->kartProps |= BECOME_INVISIBLE;
for (temp_v1 = 0; temp_v1 < 10; ++temp_v1) { for (temp_v1 = 0; temp_v1 < 10; ++temp_v1) {
player->particlePool0[temp_v1].isAlive = 0; player->particlePool0[temp_v1].isAlive = 0;
@ -1499,7 +1499,7 @@ void func_8008FB30(Player* player, s8 playerIndex) {
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX; gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
player->effects &= ~0x80000000; player->effects &= ~0x80000000;
if ((player->type & 0x4000) != 0) { if ((player->type & PLAYER_HUMAN) != 0) {
func_800CB064(playerIndex); func_800CB064(playerIndex);
} }
} }
@ -1509,7 +1509,7 @@ void func_8008FB30(Player* player, s8 playerIndex) {
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX; gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
player->alpha = ALPHA_MAX; player->alpha = ALPHA_MAX;
player->effects &= ~0x80000000; player->effects &= ~0x80000000;
if ((player->type & 0x4000) != 0) { if ((player->type & PLAYER_HUMAN) != 0) {
func_800CB064(playerIndex); func_800CB064(playerIndex);
} }
} }
@ -1550,7 +1550,7 @@ void func_8008FD4C(Player* player, UNUSED s8 arg1) {
s16 temp_v0; s16 temp_v0;
player->triggers |= LOSE_BATTLE_EFFECT; player->triggers |= LOSE_BATTLE_EFFECT;
player->unk_044 |= 0x200; player->kartProps |= BECOME_INVISIBLE;
for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) { for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
player->particlePool0[temp_v0].isAlive = 0; player->particlePool0[temp_v0].isAlive = 0;
@ -1561,7 +1561,7 @@ void func_8008FD4C(Player* player, UNUSED s8 arg1) {
void func_8008FDA8(Player* player, UNUSED s8 arg1) { void func_8008FDA8(Player* player, UNUSED s8 arg1) {
s16 temp_v0; s16 temp_v0;
player->unk_044 |= 0x200; player->kartProps |= BECOME_INVISIBLE;
for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) { for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
player->particlePool0[temp_v0].isAlive = 0; player->particlePool0[temp_v0].isAlive = 0;
player->particlePool0[temp_v0].unk_01E = 0; player->particlePool0[temp_v0].unk_01E = 0;
@ -1683,7 +1683,7 @@ void func_80090778(Player* player) {
player->unk_078 = 0; player->unk_078 = 0;
player->unk_07C = 0; player->unk_07C = 0;
player->unk_0C0 = 0; player->unk_0C0 = 0;
player->unk_0CA |= 8; player->lakituProps |= LAKITU_SCENE;
player->effects &= ~0x10; player->effects &= ~0x10;
player->unk_222 = 0; player->unk_222 = 0;
player->kartPropulsionStrength = 0.0f; player->kartPropulsionStrength = 0.0f;
@ -1716,24 +1716,24 @@ void func_80090868(Player* player) {
player->kartPropulsionStrength = 0.0f; player->kartPropulsionStrength = 0.0f;
playerIndex = get_player_index_for_player(player); playerIndex = get_player_index_for_player(player);
if ((player->unk_0CA & 2) != 2) { if ((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) {
player->unk_D98 = 1; player->unk_D98 = 1;
player->unk_D9C = 0.0f; player->unk_D9C = 0.0f;
player->unk_DA0 = 0.5f; player->unk_DA0 = 0.5f;
func_8008FF08(player, playerIndex); func_8008FF08(player, playerIndex);
player->unk_222 = 0; player->unk_222 = 0;
player->unk_0CA |= 2; player->lakituProps |= HELD_BY_LAKITU;
player->unk_0C8 = 0; player->unk_0C8 = 0;
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) == WATER_IS_FULLY_SUBMERGED) { if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) == UNDER_OOB_OR_FLUID_LEVEL) {
if ((IsBowsersCastle()) || (IsBigDonut())) { if ((IsBowsersCastle()) || (IsBigDonut())) {
player->unk_0CA |= 0x1000; player->lakituProps |= LAKITU_LAVA;
} else { } else {
player->unk_0CA |= 0x2000; player->lakituProps |= LAKITU_WATER;
} }
if ((IsSherbetLand()) || (IsSkyscraper()) || if ((IsSherbetLand()) || (IsSkyscraper()) ||
(IsRainbowRoad())) { (IsRainbowRoad())) {
player->unk_0CA &= ~0x3000; player->lakituProps &= ~(LAKITU_LAVA | LAKITU_WATER);
} }
} }
} }
@ -1756,8 +1756,8 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
clean_effect(player, playerId); clean_effect(player, playerId);
switch (player->unk_222) { switch (player->unk_222) {
case 0: case 0:
if ((player->unk_0CA & 1) == 1) { if ((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) {
if ((player->unk_0C8 < 0x3C) || ((player->unk_0CA & 2) != 2)) { if ((player->unk_0C8 < 0x3C) || ((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU)) {
player->unk_0C8++; player->unk_0C8++;
if (player->unk_0C8 >= 0x3C) { if (player->unk_0C8 >= 0x3C) {
player->unk_0C8 = 0x003C; player->unk_0C8 = 0x003C;
@ -1767,16 +1767,16 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f); move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
if ((gPlayerWaterLevel[playerId] + 40.0f) <= player->pos[1]) { if ((gPlayerWaterLevel[playerId] + 40.0f) <= player->pos[1]) {
player->unk_222 = 1; player->unk_222 = 1;
player->unk_0CA |= 4; player->lakituProps |= LAKITU_FIZZLE;
player->alpha = ALPHA_MAX; player->alpha = ALPHA_MAX;
} }
} }
} else if ((player->unk_0CA & 2) == 2) { } else if ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) {
move_f32_towards(&player->pos[1], player->unk_074 + 100.0f, 0.025f); move_f32_towards(&player->pos[1], player->unk_074 + 100.0f, 0.025f);
move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f); move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
if ((player->unk_074 + 40.0f) <= player->pos[1]) { if ((player->unk_074 + 40.0f) <= player->pos[1]) {
player->unk_222 = 1; player->unk_222 = 1;
player->unk_0CA |= 4; player->lakituProps |= LAKITU_FIZZLE;
player->alpha = ALPHA_MAX; player->alpha = ALPHA_MAX;
} }
} }
@ -1785,16 +1785,16 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
} }
break; break;
case 1: case 1:
if (((player->type & PLAYER_HUMAN) == 0x4000) && ((player->type & PLAYER_CPU) == 0)) { if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_CPU) == 0)) {
func_8009E088(playerId, 0xA); func_8009E088(playerId, 0xA);
} }
if ((player->unk_0CA & 1) == 1) { if ((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) {
move_f32_towards(&player->pos[1], gPlayerWaterLevel[playerId] + 40.0f, 0.02f); move_f32_towards(&player->pos[1], gPlayerWaterLevel[playerId] + 40.0f, 0.02f);
player->alpha -= ALPHA_CHANGE_LARGE; player->alpha -= ALPHA_CHANGE_LARGE;
if (player->alpha <= ALPHA_CHANGE_LARGE) { if (player->alpha <= ALPHA_CHANGE_LARGE) {
player->alpha = ALPHA_MIN; player->alpha = ALPHA_MIN;
player->unk_222 = 2; player->unk_222 = 2;
player->unk_0CA &= ~0x0001; player->lakituProps &= ~LAKITU_RETRIEVAL;
} }
} else { } else {
move_f32_towards(&player->pos[1], player->oldPos[1] + 40.0f, 0.02f); move_f32_towards(&player->pos[1], player->oldPos[1] + 40.0f, 0.02f);
@ -1804,7 +1804,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
player->unk_222 = 2; player->unk_222 = 2;
} }
} }
player->unk_0CA &= ~0x2000; player->lakituProps &= ~LAKITU_WATER;
break; break;
case 2: case 2:
func_80090178(player, playerId, sp44, sp38); func_80090178(player, playerId, sp44, sp38);
@ -1830,7 +1830,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
if (player->alpha > ALPHA_MAX - (ALPHA_CHANGE_LARGE * 2)) { if (player->alpha > ALPHA_MAX - (ALPHA_CHANGE_LARGE * 2)) {
player->alpha = ALPHA_MAX; player->alpha = ALPHA_MAX;
player->unk_222 = 4; player->unk_222 = 4;
player->unk_0CA &= ~0x0004; player->lakituProps &= ~LAKITU_FIZZLE;
player->unk_0C8 = 0; player->unk_0C8 = 0;
} }
break; break;
@ -1848,7 +1848,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
move_f32_towards(&player->pos[1], (player->unk_074 + player->boundingBoxSize) - 2.0f, 0.04f); move_f32_towards(&player->pos[1], (player->unk_074 + player->boundingBoxSize) - 2.0f, 0.04f);
player->unk_0C8++; player->unk_0C8++;
if (((player->effects & 8) != 8) || (player->effects & 0x8000)) { if (((player->effects & 8) != 8) || (player->effects & 0x8000)) {
player->unk_0CA &= ~0x1000; player->lakituProps &= ~LAKITU_LAVA;
if (player->unk_0C8 >= 0x5B) { if (player->unk_0C8 >= 0x5B) {
if (player->type & PLAYER_HUMAN) { if (player->type & PLAYER_HUMAN) {
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28)); func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
@ -1856,10 +1856,10 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
if (gModeSelection == BATTLE) { if (gModeSelection == BATTLE) {
pop_player_balloon(player, playerId); pop_player_balloon(player, playerId);
} }
player->unk_0CA &= ~0x0002; player->lakituProps &= ~HELD_BY_LAKITU;
player->waterInteractionFlags &= ~WATER_IN_DEEP_LIQUID_STATE; player->oobProps &= ~UNDER_FLUID_LEVEL;
if ((player->unk_0CA & 0x80) != 0x80) { if ((player->lakituProps & FROZEN_EFFECT) != FROZEN_EFFECT) {
player->unk_0CA &= ~0x0008; player->lakituProps &= ~LAKITU_SCENE;
if ((player->topSpeed * 0.9) <= player->currentSpeed) { if ((player->topSpeed * 0.9) <= player->currentSpeed) {
func_8008F104(player, playerId); func_8008F104(player, playerId);
} }
@ -1895,7 +1895,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
bool prevent_item_use(Player* player) { bool prevent_item_use(Player* player) {
s32 phi_v0 = 0; s32 phi_v0 = 0;
if ((((((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) || if ((((((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) ||
((player->type & PLAYER_UNKNOWN_0x40) != 0)) || ((player->type & PLAYER_UNKNOWN_0x40) != 0)) ||
((player->type & PLAYER_CINEMATIC_MODE) != 0)) || ((player->type & PLAYER_CINEMATIC_MODE) != 0)) ||
((player->type & PLAYER_EXISTS) == 0)) { ((player->type & PLAYER_EXISTS) == 0)) {
@ -1925,13 +1925,14 @@ bool prevent_item_use(Player* player) {
} }
} }
//UNUSED
void func_800911B4(Player* player, s8 arg1) { void func_800911B4(Player* player, s8 arg1) {
s32 temp_v0; s32 temp_v0;
player->unk_0AE = player->rotation[1]; player->unk_0AE = player->rotation[1];
player->unk_044 |= 0x1800; player->kartProps |= (UNUSED_0x1000 | UNUSED_0x800);
player->unk_044 &= ~0x0400; player->kartProps &= ~UNUSED_0x400;
player->unk_044 |= 0x2000; player->kartProps |= UNUSED_0x2000;
player->kartHopJerk = 0.002f; player->kartHopJerk = 0.002f;
player->kartHopAcceleration = 0.0f; player->kartHopAcceleration = 0.0f;
player->kartHopVelocity = 2.6f; player->kartHopVelocity = 2.6f;
@ -1968,12 +1969,13 @@ void func_800911B4(Player* player, s8 arg1) {
} while (temp_v0 < 10); } while (temp_v0 < 10);
} }
// unused
void func_80091298(Player* player, s8 arg1) { void func_80091298(Player* player, s8 arg1) {
s16 var_v1; s16 var_v1;
UNUSED s32 stackPadding1; UNUSED s32 stackPadding1;
Vec3f spC = { 27.167f, 25.167f, 23.167f }; Vec3f spC = { 27.167f, 25.167f, 23.167f };
player->unk_044 |= 0x2000; player->kartProps |= UNUSED_0x2000;
if (player->unk_0B2 == 0) { if (player->unk_0B2 == 0) {
var_v1 = 0; var_v1 = 0;
} else { } else {
@ -1995,7 +1997,7 @@ void func_80091298(Player* player, s8 arg1) {
player->unk_07C = 0; player->unk_07C = 0;
player->unk_0C0 = 0; player->unk_0C0 = 0;
player->unk_DB4.unkC = 3.0f; player->unk_DB4.unkC = 3.0f;
player->unk_044 &= ~0x800; player->kartProps &= ~UNUSED_0x800;
player->kartGravity = gKartGravityTable[player->characterId]; player->kartGravity = gKartGravityTable[player->characterId];
player->unk_0D4[0] = 0; player->unk_0D4[0] = 0;
player->type |= PLAYER_START_SEQUENCE; player->type |= PLAYER_START_SEQUENCE;
@ -2011,8 +2013,8 @@ void func_80091298(Player* player, s8 arg1) {
} }
void func_80091440(s8 arg0) { void func_80091440(s8 arg0) {
if ((gPlayers[arg0].unk_044 & 0x800) == 0) { if ((gPlayers[arg0].kartProps & UNUSED_0x800) == 0) {
gPlayers[arg0].unk_044 |= 0x2400; gPlayers[arg0].kartProps |= (UNUSED_0x2000 | UNUSED_0x400);
gPlayers[arg0].type &= ~0x2000; gPlayers[arg0].type &= ~PLAYER_START_SEQUENCE;
} }
} }

View File

@ -149,7 +149,7 @@ void OBombKart::Tick() {
state = States::EXPLODE; state = States::EXPLODE;
Behaviour = States::EXPLODE; Behaviour = States::EXPLODE;
player->triggers |= VERTICAL_TUMBLE_TRIGGER; player->triggers |= VERTICAL_TUMBLE_TRIGGER;
player->type &= ~0x2000; player->type &= ~PLAYER_START_SEQUENCE;
} }
} }
} else { } else {

View File

@ -197,13 +197,13 @@ void OLakitu::func_800791F0(s32 objectIndex, s32 playerId) {
if ((gObjectList[objectIndex].unk_0D8 != 3) && (gObjectList[objectIndex].unk_0D8 != 7)) { if ((gObjectList[objectIndex].unk_0D8 != 3) && (gObjectList[objectIndex].unk_0D8 != 7)) {
func_800722CC(objectIndex, 1); func_800722CC(objectIndex, 1);
if (CM_GetProps()->LakituTowType == LakituTowType::ICE) { if (CM_GetProps()->LakituTowType == LakituTowType::ICE) {
player->unk_0CA &= 0xFFEF; player->lakituProps &= ~FRIGID_EFFECT;
} }
} }
if (CM_GetProps()->LakituTowType == LakituTowType::ICE) { if (CM_GetProps()->LakituTowType == LakituTowType::ICE) {
func_800722CC(objectIndex, 0x00000010); func_800722CC(objectIndex, 0x00000010);
player->unk_0CA &= 0xFFDF; player->lakituProps &= ~THAWING_EFFECT;
} }
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28)); func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
} }
@ -429,10 +429,10 @@ void OLakitu::func_800797AC(s32 playerId) {
objectIndex = gIndexLakituList[playerId]; objectIndex = gIndexLakituList[playerId];
player = &gPlayerOne[playerId]; player = &gPlayerOne[playerId];
// if ((IsSherbetLand()) && (player->unk_0CA & 1)) { // if ((IsSherbetLand()) && (player->lakituProps & 1)) {
if ((CM_GetProps()->LakituTowType == LakituTowType::ICE) && (player->unk_0CA & 1)) { if ((CM_GetProps()->LakituTowType == LakituTowType::ICE) && (player->lakituProps & LAKITU_RETRIEVAL)) {
init_object(objectIndex, 7); init_object(objectIndex, 7);
player->unk_0CA |= 0x10; player->lakituProps |= FRIGID_EFFECT;
} else { } else {
init_object(objectIndex, 3); init_object(objectIndex, 3);
} }
@ -447,14 +447,14 @@ void OLakitu::func_80079860(s32 playerId) {
player = &gPlayerOne[playerId]; player = &gPlayerOne[playerId];
if ((func_80072354(objectIndex, 1) != 0) && if ((func_80072354(objectIndex, 1) != 0) &&
(((func_802ABDF4(player->collision.meshIndexZX) != 0) && (player->collision.surfaceDistance[2] <= 3.0f)) || (((func_802ABDF4(player->collision.meshIndexZX) != 0) && (player->collision.surfaceDistance[2] <= 3.0f)) ||
(player->unk_0CA & 1) || ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & 8)))) { (player->lakituProps & LAKITU_RETRIEVAL) || ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & 8)))) {
func_80090778(player); func_80090778(player);
OLakitu::func_800797AC(playerId); OLakitu::func_800797AC(playerId);
} }
} }
void OLakitu::func_8007993C(s32 objectIndex, Player* player) { void OLakitu::func_8007993C(s32 objectIndex, Player* player) {
if (player->unk_0CA & 4) { if (player->lakituProps & LAKITU_FIZZLE) {
func_800722A4(objectIndex, 2); func_800722A4(objectIndex, 2);
gObjectList[objectIndex].primAlpha = player->alpha; gObjectList[objectIndex].primAlpha = player->alpha;
return; return;
@ -544,7 +544,7 @@ void OLakitu::update_object_lakitu_fishing(s32 objectIndex, s32 playerId) {
func_80073654(objectIndex); func_80073654(objectIndex);
break; break;
case 3: case 3:
if (!(player->unk_0CA & 2)) { if (!(player->lakituProps & HELD_BY_LAKITU)) {
func_80086EAC(objectIndex, 0, 3); func_80086EAC(objectIndex, 0, 3);
func_80073654(objectIndex); func_80073654(objectIndex);
} }
@ -579,7 +579,7 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
case 2: /* switch 1 */ case 2: /* switch 1 */
set_object_flag(objectIndex, 0x00000010); set_object_flag(objectIndex, 0x00000010);
func_800736E0(objectIndex); func_800736E0(objectIndex);
player->unk_0CA |= 0x80; player->lakituProps |= FROZEN_EFFECT;
object_next_state(objectIndex); object_next_state(objectIndex);
break; break;
case 3: /* switch 1 */ case 3: /* switch 1 */
@ -599,11 +599,11 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
func_80073654(objectIndex); func_80073654(objectIndex);
break; break;
case 3: case 3:
if ((player->surfaceType == ICE) && !(player->unk_0CA & 1) && if ((player->surfaceType == ICE) && !(player->lakituProps & LAKITU_RETRIEVAL) &&
((f64) player->collision.surfaceDistance[2] <= 30.0)) { ((f64) player->collision.surfaceDistance[2] <= 30.0)) {
func_800722A4(objectIndex, 8); func_800722A4(objectIndex, 8);
} }
if (!(player->unk_0CA & 2)) { if (!(player->lakituProps & HELD_BY_LAKITU)) {
func_80086EAC(objectIndex, 0, 3); func_80086EAC(objectIndex, 0, 3);
func_80073654(objectIndex); func_80073654(objectIndex);
} }
@ -612,7 +612,7 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
func_8007375C(objectIndex, 0x0000001E); func_8007375C(objectIndex, 0x0000001E);
break; break;
case 5: case 5:
player->unk_0CA &= 0xFF7F; player->lakituProps &= ~FROZEN_EFFECT;
func_800722A4(objectIndex, 0x00000010); func_800722A4(objectIndex, 0x00000010);
func_800722A4(objectIndex, 0x00000020); func_800722A4(objectIndex, 0x00000020);
func_800722CC(objectIndex, 4); func_800722CC(objectIndex, 4);
@ -623,8 +623,8 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
case 6: case 6:
if (func_8007375C(objectIndex, 0x000000A0) != 0) { if (func_8007375C(objectIndex, 0x000000A0) != 0) {
func_800722CC(objectIndex, 0x00000010); func_800722CC(objectIndex, 0x00000010);
player->unk_0CA &= 0xFFEF; player->lakituProps &= ~FRIGID_EFFECT;
player->unk_0CA |= 0x20; player->lakituProps |= THAWING_EFFECT;
} }
break; break;
case 7: case 7:
@ -633,7 +633,7 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
case 8: case 8:
func_80073720(objectIndex); func_80073720(objectIndex);
func_80072428(objectIndex); func_80072428(objectIndex);
player->unk_0CA &= 0xFFDF; player->lakituProps &= ~THAWING_EFFECT;
func_800722CC(objectIndex, 1); func_800722CC(objectIndex, 1);
func_800C9018((u8) playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28)); func_800C9018((u8) playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
break; break;

View File

@ -208,13 +208,13 @@ void OMole::func_80081D34(s32 objectIndex) {
for (size_t i = 0; i < D_8018D158; i++, player++, camera++) { for (size_t i = 0; i < D_8018D158; i++, player++, camera++) {
if ((is_obj_flag_status_active(objectIndex, 0x00000200) != 0) && !(player->effects & 0x80000000) && if ((is_obj_flag_status_active(objectIndex, 0x00000200) != 0) && !(player->effects & 0x80000000) &&
(has_collided_with_player(objectIndex, player) != 0)) { (has_collided_with_player(objectIndex, player) != 0)) {
if ((player->type & 0x8000) && !(player->type & 0x100)) { if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
var_s5 = 1; var_s5 = 1;
object = &gObjectList[objectIndex]; object = &gObjectList[objectIndex];
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) { if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180(); func_80072180();
} }
if (player->effects & 0x200) { if (player->effects & STAR_EFFECT) {
func_800C9060(i, 0x1900A046U); func_800C9060(i, 0x1900A046U);
} else { } else {
player->triggers |= HIGH_TUMBLE_TRIGGER; player->triggers |= HIGH_TUMBLE_TRIGGER;

View File

@ -648,11 +648,11 @@ void OThwomp::func_80080B28(s32 objectIndex, s32 playerId) {
temp_f0 = func_80088F54(objectIndex, player); temp_f0 = func_80088F54(objectIndex, player);
if ((temp_f0 <= 9.0) && !(player->effects & 0x04000000) && if ((temp_f0 <= 9.0) && !(player->effects & 0x04000000) &&
(has_collided_horizontally_with_player(objectIndex, player) != 0)) { (has_collided_horizontally_with_player(objectIndex, player) != 0)) {
if ((player->type & 0x8000) && !(player->type & 0x100)) { if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
if (!(player->effects & 0x200)) { if (!(player->effects & STAR_EFFECT)) {
func_80089474(objectIndex, playerId, 1.4f, 1.1f, SOUND_ARG_LOAD(0x19, 0x00, 0xA0, 0x4C)); func_80089474(objectIndex, playerId, 1.4f, 1.1f, SOUND_ARG_LOAD(0x19, 0x00, 0xA0, 0x4C));
} else if (func_80072354(objectIndex, 0x00000040) != 0) { } else if (func_80072354(objectIndex, 0x00000040) != 0) {
if (player->type & 0x1000) { if (player->type & PLAYER_CPU) {
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0xA2, 0x4A)); func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0xA2, 0x4A));
} else { } else {
func_800C9060((u8) playerId, SOUND_ARG_LOAD(0x19, 0x01, 0xA2, 0x4A)); func_800C9060((u8) playerId, SOUND_ARG_LOAD(0x19, 0x01, 0xA2, 0x4A));
@ -668,7 +668,7 @@ void OThwomp::func_80080B28(s32 objectIndex, s32 playerId) {
} else if ((temp_f0 <= 17.5) && (func_80072320(objectIndex, 1) != 0) && } else if ((temp_f0 <= 17.5) && (func_80072320(objectIndex, 1) != 0) &&
(is_within_horizontal_distance_of_player(objectIndex, player, (is_within_horizontal_distance_of_player(objectIndex, player,
(player->speed * 0.5) + BoundingBoxSize) != 0)) { (player->speed * 0.5) + BoundingBoxSize) != 0)) {
if ((player->type & 0x8000) && !(player->type & 0x100)) { if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) { if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
func_80072180(); func_80072180();
} }

View File

@ -604,7 +604,7 @@ void load_kart_texture(Player* player, s8 playerId, s8 screenId, s8 screenId2, s
s32 temp = player->effects; s32 temp = player->effects;
s16 tyreSpeed = player->tyreSpeed; s16 tyreSpeed = player->tyreSpeed;
if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) ||
((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->kartProps & UNUSED_0x800) != 0)) {
if (player->animFrameSelector[screenId] != 0) { if (player->animFrameSelector[screenId] != 0) {
osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]); osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]);
gEncodedKartTexture[index][screenId2][playerId].unk_00 = gEncodedKartTexture[index][screenId2][playerId].unk_00 =
@ -635,7 +635,7 @@ void load_kart_texture_non_blocking(Player* player, s8 arg1, s8 arg2, s8 arg3, s
s16 tyreSpeed = player->tyreSpeed; s16 tyreSpeed = player->tyreSpeed;
if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) ||
((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->kartProps & UNUSED_0x800) != 0)) {
if (player->animFrameSelector[arg2] != 0) { if (player->animFrameSelector[arg2] != 0) {
osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]); osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]);

View File

@ -219,22 +219,22 @@ s32 get_player_index_for_player(Player* player) {
void func_80027DA8(Player* player, s8 playerId) { void func_80027DA8(Player* player, s8 playerId) {
if (D_8015F890 != 1) { if (D_8015F890 != 1) {
if ((player->type & 0x10) != 0x10) { if ((player->type & PLAYER_UNKNOWN_0x10) != PLAYER_UNKNOWN_0x10) {
if (((D_8018D168 == 1) && ((player->type & 0x4000) == 0x4000)) && ((player->type & 0x100) != 0x100)) { if (((D_8018D168 == 1) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
func_800C94A4(playerId); func_800C94A4(playerId);
player->type |= 0x10; player->type |= PLAYER_UNKNOWN_0x10;
} else if ((player->type & 0x2000) == 0) { } else if ((player->type & PLAYER_START_SEQUENCE) == 0) {
func_800C9A88(playerId); func_800C9A88(playerId);
player->type |= 0x10; player->type |= PLAYER_UNKNOWN_0x10;
} }
} }
} else if ((player->type & 0x10) != 0x10) { } else if ((player->type & PLAYER_UNKNOWN_0x10) != PLAYER_UNKNOWN_0x10) {
if ((D_8018D168 == 1) && (player == gPlayerOne)) { if ((D_8018D168 == 1) && (player == gPlayerOne)) {
func_800C94A4(playerId); func_800C94A4(playerId);
player->type |= 0x10; player->type |= PLAYER_UNKNOWN_0x10;
} else if ((player->type & 0x2000) == 0) { } else if ((player->type & PLAYER_START_SEQUENCE) == 0) {
func_800C9A88(playerId); func_800C9A88(playerId);
player->type |= 0x10; player->type |= PLAYER_UNKNOWN_0x10;
} }
} }
} }
@ -335,7 +335,7 @@ void func_80028864(Player* player, Camera* camera, s8 playerId, s8 screenId) {
break; break;
} }
if ((sp1E == 1) || ((player->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) || if ((sp1E == 1) || ((player->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) ||
(gModeSelection == BATTLE) || ((player->unk_0CA & 2) != 0) || (player->unk_0CA & 8) || (gModeSelection == BATTLE) || ((player->lakituProps & HELD_BY_LAKITU) != 0) || (player->lakituProps & LAKITU_SCENE) ||
//! @todo make a proper match //! @todo make a proper match
((*(D_801633F8 + (playerId))) == ((s16) 1U))) { ((*(D_801633F8 + (playerId))) == ((s16) 1U))) {
player->effects &= ~0x1000; player->effects &= ~0x1000;
@ -344,7 +344,7 @@ void func_80028864(Player* player, Camera* camera, s8 playerId, s8 screenId) {
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
((player->effects & 0x01000000) == 0x01000000) || ((player->effects & 0x01000000) == 0x01000000) ||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
((player->effects & 0x20000) == 0x20000) || (player->unk_044 & 0x800)) { ((player->effects & 0x20000) == 0x20000) || (player->kartProps & UNUSED_0x800)) {
func_8002E594(player, camera, screenId, playerId); func_8002E594(player, camera, screenId, playerId);
} else { } else {
func_8002D268(player, camera, screenId, playerId); func_8002D268(player, camera, screenId, playerId);
@ -355,7 +355,7 @@ void func_80028864(Player* player, Camera* camera, s8 playerId, s8 screenId) {
} else if ((player->type & PLAYER_STAGING) == PLAYER_STAGING) { } else if ((player->type & PLAYER_STAGING) == PLAYER_STAGING) {
func_8002D028(player, playerId); func_8002D028(player, playerId);
func_8002F730(player, camera, screenId, playerId); func_8002F730(player, camera, screenId, playerId);
} else if (player->type & 0x80) { } else if (player->type & PLAYER_UNKNOWN_0x80) {
func_8002D268(player, camera, screenId, playerId); func_8002D268(player, camera, screenId, playerId);
} else { } else {
if ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN) { if ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN) {
@ -373,7 +373,7 @@ void func_80028C44(Player* player, Camera* camera, s8 playerId, s8 screenId) {
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
((player->effects & 0x1000000) == 0x1000000) || ((player->effects & 0x1000000) == 0x1000000) ||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
((player->effects & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { ((player->effects & 0x20000) == 0x20000) || ((player->kartProps & UNUSED_0x800) != 0)) {
func_8002E594(player, camera, screenId, playerId); func_8002E594(player, camera, screenId, playerId);
} else { } else {
func_8002D268(player, camera, screenId, playerId); func_8002D268(player, camera, screenId, playerId);
@ -385,7 +385,7 @@ void func_80028C44(Player* player, Camera* camera, s8 playerId, s8 screenId) {
void func_80028D3C(Player* player, Camera* camera, s8 playerId, s8 screenId) { void func_80028D3C(Player* player, Camera* camera, s8 playerId, s8 screenId) {
if ((((player->type & PLAYER_START_SEQUENCE) == 0) && (gRaceState != RACE_FINISHED)) || if ((((player->type & PLAYER_START_SEQUENCE) == 0) && (gRaceState != RACE_FINISHED)) ||
(player->unk_0CA & 2) != 0 || (player->unk_0CA & 8) != 0 || (player->effects & 0x4F010CC0) != 0) { (player->lakituProps & HELD_BY_LAKITU) != 0 || (player->lakituProps & LAKITU_SCENE) != 0 || (player->effects & 0x4F010CC0) != 0) {
player->effects &= ~0x1000; player->effects &= ~0x1000;
if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) ||
@ -393,7 +393,7 @@ void func_80028D3C(Player* player, Camera* camera, s8 playerId, s8 screenId) {
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
((player->effects & 0x1000000) == 0x1000000) || ((player->effects & 0x1000000) == 0x1000000) ||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
((player->effects & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) { ((player->effects & 0x20000) == 0x20000) || ((player->kartProps & UNUSED_0x800) != 0)) {
func_8002E594(player, camera, screenId, playerId); func_8002E594(player, camera, screenId, playerId);
} else { } else {
func_8002D268(player, camera, screenId, playerId); func_8002D268(player, camera, screenId, playerId);
@ -527,14 +527,14 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
temp_a0 = (s16) player->unk_0D4[screenId] * sins((u16) temp_a0) + player->unk_0CC[screenId] * coss((u16) temp_a0); temp_a0 = (s16) player->unk_0D4[screenId] * sins((u16) temp_a0) + player->unk_0CC[screenId] * coss((u16) temp_a0);
move_s16_towards(&player->unk_050[screenId], temp_a0, 0.5f); move_s16_towards(&player->unk_050[screenId], temp_a0, 0.5f);
var_a0 = player->animFrameSelector[screenId]; var_a0 = player->animFrameSelector[screenId];
player->unk_002 = player->unk_002 & (~(4 << (screenId * 4))); player->unk_002 = player->unk_002 & (~(UNK_002_UNKNOWN_0x4 << (screenId * 4)));
if (var_a0 >= 0x101) { if (var_a0 >= 0x101) {
var_a0 = 0x201 - var_a0; var_a0 = 0x201 - var_a0;
player->unk_002 |= (4 << (screenId * 4)); player->unk_002 |= (UNK_002_UNKNOWN_0x4 << (screenId * 4));
} }
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) && if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) &&
((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) && ((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) &&
((player->effects & 0x20000) != 0x20000) && (!(player->unk_044 & 0x800))) { ((player->effects & 0x20000) != 0x20000) && (!(player->kartProps & UNUSED_0x800))) {
if (var_a0 < 0x51) { if (var_a0 < 0x51) {
var_a1 = 0x208; var_a1 = 0x208;
var_t0 = 0; var_t0 = 0;
@ -547,16 +547,16 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
var_t0 = 0; var_t0 = 0;
} }
if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
(player->unk_044 & 0x800)) { (player->kartProps & UNUSED_0x800)) {
player->unk_050[screenId] = 0; player->unk_050[screenId] = 0;
} }
if (((player->effects & 8) == 8) && ((player->unk_0CA & 2) == 2)) { if (((player->effects & 8) == 8) && ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU)) {
player->unk_050[screenId] = 0; player->unk_050[screenId] = 0;
} }
var_a0 = (player->unk_048[screenId] + player->rotation[1] + player->unk_0C0); var_a0 = (player->unk_048[screenId] + player->rotation[1] + player->unk_0C0);
if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) ||
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
((player->effects & 0x20000) == 0x20000) || (player->unk_044 & 0x800)) { ((player->effects & 0x20000) == 0x20000) || (player->kartProps & UNUSED_0x800)) {
if (var_a0 >= 0x7FF9) { if (var_a0 >= 0x7FF9) {
var_a0 = -var_a0; var_a0 = -var_a0;
var_a0 /= var_a1; var_a0 /= var_a1;
@ -577,7 +577,7 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
player->animFrameSelector[screenId] = 0x22; player->animFrameSelector[screenId] = 0x22;
} }
if ((player->effects & 0x80) || (player->effects & 0x40) || (player->effects & 0x80000) || if ((player->effects & 0x80) || (player->effects & 0x40) || (player->effects & 0x80000) ||
(player->effects & 0x800000) || (player->effects & 0x20000) || (player->unk_044 & 0x800)) { (player->effects & 0x800000) || (player->effects & 0x20000) || (player->kartProps & UNUSED_0x800)) {
if ((player->animFrameSelector[screenId]) >= 0x14) { if ((player->animFrameSelector[screenId]) >= 0x14) {
player->animFrameSelector[screenId] = 0; player->animFrameSelector[screenId] = 0;
@ -587,7 +587,7 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
player->animGroupSelector[screenId] = 4; player->animGroupSelector[screenId] = 4;
} }
if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
(player->unk_044 & 0x800)) { (player->kartProps & UNUSED_0x800)) {
player->animGroupSelector[screenId] = 4; player->animGroupSelector[screenId] = 4;
} }
@ -595,29 +595,29 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || (player->effects & 0x10000) || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || (player->effects & 0x10000) ||
(player->effects & 0x80) || (player->effects & 0x40)) { (player->effects & 0x80) || (player->effects & 0x40)) {
player->unk_002 |= 1 << (screenId * 4); player->unk_002 |= CHANGING_ANIMATION << (screenId * 4);
D_80165190[screenId][playerId] = 1; D_80165190[screenId][playerId] = 1;
if ((player->effects & 0x80) || (player->effects & 0x40)) { if ((player->effects & 0x80) || (player->effects & 0x40)) {
if ((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) && if ((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) &&
(player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) { (player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) {
player->unk_002 &= ~(1 << (screenId * 4)); player->unk_002 &= ~(CHANGING_ANIMATION << (screenId * 4));
D_80165190[screenId][playerId] = 1; D_80165190[screenId][playerId] = 1;
} }
} else if (((player->unk_0A8) >> 8) == D_80165150[screenId][playerId] >> 8) { } else if (((player->unk_0A8) >> 8) == D_80165150[screenId][playerId] >> 8) {
player->unk_002 &= ~(1 << (screenId * 4)); player->unk_002 &= ~(CHANGING_ANIMATION << (screenId * 4));
} }
} else { } else {
player->unk_002 |= 1 << (screenId * 4); player->unk_002 |= CHANGING_ANIMATION << (screenId * 4);
if (((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) && if (((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) &&
(player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) && (player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) &&
((D_80165190[screenId][playerId]) == 0)) { ((D_80165190[screenId][playerId]) == 0)) {
player->unk_002 &= ~(1 << (screenId * 4)); player->unk_002 &= ~(CHANGING_ANIMATION << (screenId * 4));
} }
} }
temp_a0_2 = gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]; temp_a0_2 = gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId];
if ((temp_a0_2 >= 0x14) || (temp_a0_2 < (-0x13))) { if ((temp_a0_2 >= 0x14) || (temp_a0_2 < (-0x13))) {
player->unk_002 |= 1 << (screenId * 4); player->unk_002 |= CHANGING_ANIMATION << (screenId * 4);
} }
} }
@ -702,7 +702,7 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) {
temp_f2_3 = ((gCharacterSize[player->characterId] * 18.0f) + 1.0f) * player->size; temp_f2_3 = ((gCharacterSize[player->characterId] * 18.0f) + 1.0f) * player->size;
temp_f0_2 = player->unk_23C - player->unk_230; temp_f0_2 = player->unk_23C - player->unk_230;
player->unk_206 = -func_802B7C40(temp_f0_2 / temp_f2_3); player->unk_206 = -func_802B7C40(temp_f0_2 / temp_f2_3);
if (((player->unk_0CA & 2) == 2) || (player->effects & 8)) { if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || (player->effects & 8)) {
player->unk_206 = 0; player->unk_206 = 0;
} }
if ((player->effects & 8) != 8) { if ((player->effects & 8) != 8) {
@ -718,7 +718,7 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) {
} }
move_s16_towards(&player->slopeAccel, temp_v0, 0.5f); move_s16_towards(&player->slopeAccel, temp_v0, 0.5f);
} }
if (((player->effects & 8) == 8) && ((player->unk_0CA & 2) == 2)) { if (((player->effects & 8) == 8) && ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU)) {
player->slopeAccel = (s16) ((s32) player->unk_D9C); player->slopeAccel = (s16) ((s32) player->unk_D9C);
} }
player->surfaceType = get_surface_type(player->collision.meshIndexZX) & 0xFF; player->surfaceType = get_surface_type(player->collision.meshIndexZX) & 0xFF;
@ -1019,7 +1019,7 @@ void func_8002AB70(Player* player) {
if (player->effects & 0x80000) { if (player->effects & 0x80000) {
player->kartGravity = 1500.0f; player->kartGravity = 1500.0f;
} }
if ((player->unk_044 & 0x800) != 0) { if ((player->kartProps & UNUSED_0x800) != 0) {
player->kartGravity = 1900.0f; player->kartGravity = 1900.0f;
} }
if ((player->effects & 0x800000) == 0x800000) { if ((player->effects & 0x800000) == 0x800000) {
@ -1053,7 +1053,7 @@ void func_8002AE38(Player* player, s8 arg1, f32 arg2, f32 arg3, f32 arg4, f32 ar
sp28 = (sins(-player->rotation[1]) * player->speed) + arg2; sp28 = (sins(-player->rotation[1]) * player->speed) + arg2;
temp_f16 = (coss(-player->rotation[1]) * player->speed) + arg3; temp_f16 = (coss(-player->rotation[1]) * player->speed) + arg3;
if (((player->effects & 0x800) != 0x800) && ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT) && if (((player->effects & 0x800) != 0x800) && ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT) &&
!(player->unk_044 & 0x4000) && !(player->kartProps & DRIVING_SPINOUT) &&
((((player->speed / 18.0f) * 216.0f) <= 8.0f) || ((((player->speed / 18.0f) * 216.0f) <= 8.0f) ||
(((player->unk_07C >> 0x10) < 5) && ((player->unk_07C >> 0x10) > -5)))) { (((player->unk_07C >> 0x10) < 5) && ((player->unk_07C >> 0x10) > -5)))) {
if ((player->effects & 0x20) == 0x20) { if ((player->effects & 0x20) == 0x20) {
@ -1179,7 +1179,7 @@ void apply_triggers(Player* player, s8 playerId, UNUSED s8 screenId) {
} }
void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) { void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) {
if (((player->unk_0CA & 8) != 0) || ((player->unk_0CA & 2) != 0)) { if (((player->lakituProps & LAKITU_SCENE) != 0) || ((player->lakituProps & HELD_BY_LAKITU) != 0)) {
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
} }
// Green shell // Green shell
@ -1194,7 +1194,7 @@ void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) {
if ((player->effects & 0x800) == 0x800) { if ((player->effects & 0x800) == 0x800) {
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
} }
if ((player->unk_044 & 0x4000) != 0) { if ((player->kartProps & DRIVING_SPINOUT) != 0) {
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS); player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
} }
//unclear //unclear
@ -1254,7 +1254,7 @@ void func_8002B830(Player* player, s8 playerId, s8 screenId) {
if (player->triggers != 0) { if (player->triggers != 0) {
apply_triggers(player, playerId, screenId); apply_triggers(player, playerId, screenId);
} }
if ((player->unk_044 & 0x400) != 0) { if ((player->kartProps & UNUSED_0x400) != 0) { // can never be true
func_800911B4(player, playerId); func_800911B4(player, playerId);
} }
} }
@ -1456,7 +1456,7 @@ void func_8002BF4C(Player* player, s8 arg1) {
} else { } else {
for (i = 0; i < NUM_PLAYERS; i++) { for (i = 0; i < NUM_PLAYERS; i++) {
playerBorrow = &players[i]; playerBorrow = &players[i];
if (((player != playerBorrow) && ((playerBorrow->type & 0x100) == 0) && (playerBorrow->type & 0x8000)) && if (((player != playerBorrow) && ((playerBorrow->type & PLAYER_INVISIBLE_OR_BOMB) == 0) && (playerBorrow->type & 0x8000)) &&
((var_a2 = func_8001FD78(player, playerBorrow->pos[0], playerBorrow->pos[1], playerBorrow->pos[2]), ((var_a2 = func_8001FD78(player, playerBorrow->pos[0], playerBorrow->pos[1], playerBorrow->pos[2]),
var_a2 == 1))) { var_a2 == 1))) {
player->unk_0E2 += 1; player->unk_0E2 += 1;
@ -1537,7 +1537,7 @@ void func_8002C17C(Player* player, s8 playerId) {
} else if (D_80165330[playerId] == 0) { } else if (D_80165330[playerId] == 0) {
gCopyNearestWaypointByPlayerId[playerId] = gNearestPathPointByPlayerId[playerId]; gCopyNearestWaypointByPlayerId[playerId] = gNearestPathPointByPlayerId[playerId];
gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId]; gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId];
} else if (!((player->effects & 8) || (player->unk_0CA & 1))) { } else if (!((player->effects & 8) || (player->lakituProps & LAKITU_RETRIEVAL))) {
D_80165330[playerId] = 0; D_80165330[playerId] = 0;
} }
} else { } else {
@ -1549,25 +1549,25 @@ void func_8002C17C(Player* player, s8 playerId) {
void update_player_environment_and_hazard_state(Player* player, s8 playerIndex) { void update_player_environment_and_hazard_state(Player* player, s8 playerIndex) {
gPlayerWaterLevel[playerIndex] = get_water_level(player); gPlayerWaterLevel[playerIndex] = get_water_level(player);
if (player->pos[1] <= gPlayerWaterLevel[playerIndex]) { // Player is in water, at least partially if (player->pos[1] <= gPlayerWaterLevel[playerIndex]) { // Player is in water, at least partially
player->waterInteractionFlags |= WATER_IS_PARTIALLY_SUBMERGED; player->oobProps |= PASS_OOB_OR_FLUID_LEVEL;
} else { } else {
player->waterInteractionFlags &= ~WATER_IS_PARTIALLY_SUBMERGED; player->oobProps &= ~PASS_OOB_OR_FLUID_LEVEL;
} }
if (player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) { if (player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) {
// Player is fully submerged in water // Player is fully submerged in water
player->waterInteractionFlags |= WATER_IS_FULLY_SUBMERGED; player->oobProps |= UNDER_OOB_OR_FLUID_LEVEL;
player->waterInteractionFlags &= ~WATER_IS_PARTIALLY_SUBMERGED; player->oobProps &= ~PASS_OOB_OR_FLUID_LEVEL;
} else { } else {
// Player is not fully submerged in water, clear the flag // Player is not fully submerged in water, clear the flag
player->waterInteractionFlags &= ~WATER_IS_FULLY_SUBMERGED; player->oobProps &= ~UNDER_OOB_OR_FLUID_LEVEL;
} }
if (player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) { if (player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) {
// We confirm again that the player if fully submerged // We confirm again that the player if fully submerged
if ((player->waterInteractionFlags & WATER_IN_DEEP_LIQUID_STATE) != WATER_IN_DEEP_LIQUID_STATE) { if ((player->oobProps & UNDER_FLUID_LEVEL) != UNDER_FLUID_LEVEL) {
// Set flag - it will be cleared shortly after // Set flag - it will be cleared shortly after
player->waterInteractionFlags |= WATER_JUST_ENTERED_DEEP_LIQUID; player->oobProps |= UNDER_OOB_LEVEL;
// This flag persists longer // This flag persists longer
player->waterInteractionFlags |= WATER_IN_DEEP_LIQUID_STATE; player->oobProps |= UNDER_FLUID_LEVEL;
if ((!IsKoopaTroopaBeach()) && (!IsSkyscraper()) && if ((!IsKoopaTroopaBeach()) && (!IsSkyscraper()) &&
(!IsRainbowRoad()) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) { (!IsRainbowRoad()) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
if ((IsBowsersCastle()) || (IsBigDonut())) { if ((IsBowsersCastle()) || (IsBigDonut())) {
@ -1581,20 +1581,20 @@ void update_player_environment_and_hazard_state(Player* player, s8 playerIndex)
if ((IsKoopaTroopaBeach()) || (IsSkyscraper()) || if ((IsKoopaTroopaBeach()) || (IsSkyscraper()) ||
(IsRainbowRoad())) { (IsRainbowRoad())) {
// Different handling for these tracks, we just use the first two (0x0001 and 0x0002) // Different handling for these tracks, we just use the first two (0x0001 and 0x0002)
player->waterInteractionFlags &= ~(WATER_IN_DEEP_LIQUID_STATE | WATER_JUST_ENTERED_DEEP_LIQUID); player->oobProps &= ~(UNDER_FLUID_LEVEL | UNDER_OOB_LEVEL);
} }
if ((player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) && if ((player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) &&
(player->collision.surfaceDistance[2] >= 600.0f)) { (player->collision.surfaceDistance[2] >= 600.0f)) {
// We are fully submerged in water and far away from the surface (out of bounds?) // We are fully submerged in water and far away from the surface (out of bounds?)
player->unk_0CA |= 1; player->lakituProps |= LAKITU_RETRIEVAL;
} }
if (player->collision.surfaceDistance[2] >= 600.0f) { if (player->collision.surfaceDistance[2] >= 600.0f) {
player->unk_0CA |= 0x0100; player->lakituProps |= WENT_OVER_OOB;
} else if ((player->effects & 8) != 8) { } else if ((player->effects & 8) != 8) {
player->unk_0CA &= ~0x0100; player->lakituProps &= ~WENT_OVER_OOB;
} }
if ((player->type & PLAYER_CPU) && ((func_802ABDF4(player->collision.meshIndexZX) != 0) || (player->unk_0CA & 1))) { if ((player->type & PLAYER_CPU) && ((func_802ABDF4(player->collision.meshIndexZX) != 0) || (player->lakituProps & LAKITU_RETRIEVAL))) {
if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8) && !(player->effects & 0x1000)) { if (!(player->lakituProps & HELD_BY_LAKITU) && !(player->lakituProps & LAKITU_SCENE) && !(player->effects & 0x1000)) {
func_80090778(player); func_80090778(player);
func_80090868(player); func_80090868(player);
} }
@ -1612,7 +1612,7 @@ void func_8002C7E4(Player* player, s8 arg1, s8 arg2) {
if ((player->effects & BOOST_EFFECT) != BOOST_EFFECT) { if ((player->effects & BOOST_EFFECT) != BOOST_EFFECT) {
func_8002B9CC(player, arg1, arg2); func_8002B9CC(player, arg1, arg2);
} }
player->unk_044 &= ~0x0001; player->kartProps &= ~BACK_UP;
player->unk_046 |= 1; player->unk_046 |= 1;
player->unk_046 |= 8; player->unk_046 |= 8;
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
@ -1632,7 +1632,7 @@ void func_8002C7E4(Player* player, s8 arg1, s8 arg2) {
if ((player->effects & 0x8000) == 0x8000) { if ((player->effects & 0x8000) == 0x8000) {
player->effects &= ~0x8000; player->effects &= ~0x8000;
player->unk_10C = 1; player->unk_10C = 1;
player->unk_044 &= ~0x0001; player->kartProps &= ~BACK_UP;
return; return;
} }
player->unk_046 &= ~0x0001; player->unk_046 &= ~0x0001;
@ -1659,7 +1659,7 @@ void func_8002C954(Player* player, s8 playerId, Vec3f arg2) {
((((temp_f0 >= 20.0f) || (temp_f0 < (-1.0f))) && ((player->effects & 0x10000) == 0)) && ((((temp_f0 >= 20.0f) || (temp_f0 < (-1.0f))) && ((player->effects & 0x10000) == 0)) &&
(player->effects & 8)) || (player->effects & 8)) ||
((player->collision.unk34 == 0) && ((player->effects & 0x10000) == 0))) && ((player->collision.unk34 == 0) && ((player->effects & 0x10000) == 0))) &&
(((player->unk_0CA & 2) == 0) || (!(player->unk_0CA & 8)))) { (((player->lakituProps & HELD_BY_LAKITU) == 0) || (!(player->lakituProps & LAKITU_SCENE)))) {
func_8008F494(player, playerId); func_8008F494(player, playerId);
} }
if ((player->unk_046 & 0x20) != 0x20) { if ((player->unk_046 & 0x20) != 0x20) {
@ -1707,13 +1707,13 @@ void func_8002C954(Player* player, s8 playerId, Vec3f arg2) {
} }
void apply_effect(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)) { if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) {
func_80090970(player, arg1, arg2); func_80090970(player, arg1, arg2);
} }
if ((player->effects & 0x800) == 0x800) { if ((player->effects & 0x800) == 0x800) {
func_8008CEB0(player, arg1); func_8008CEB0(player, arg1);
} }
if (player->unk_044 & 0x4000) { if (player->kartProps & DRIVING_SPINOUT) {
func_8008D170(player, arg1); func_8008D170(player, arg1);
} }
if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) { if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
@ -1773,7 +1773,7 @@ void apply_effect(Player* player, s8 arg1, s8 arg2) {
func_8008FCDC(player, arg1); func_8008FCDC(player, arg1);
} }
} }
if (player->unk_044 & 0x800) { if (player->kartProps & UNUSED_0x800) {
func_80091298(player, arg1); func_80091298(player, arg1);
} }
} }
@ -1813,7 +1813,7 @@ void func_8002D028(Player* player, s8 arg1) {
if (temp_f18 <= 8.0f) { if (temp_f18 <= 8.0f) {
adjust_angle(&player->rotation[1], -0x8000, 0x016C); adjust_angle(&player->rotation[1], -0x8000, 0x016C);
if ((player->rotation[1] < (-0x7F41)) || (player->rotation[1] > 0x7F41)) { if ((player->rotation[1] < (-0x7F41)) || (player->rotation[1] > 0x7F41)) {
player->type &= ~0x0200; player->type &= ~SHROOM_TRIGGER;
} }
player->kartPropulsionStrength = 0; player->kartPropulsionStrength = 0;
player->speed = 0; player->speed = 0;
@ -1877,7 +1877,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
func_80037BB4(player, sp160); func_80037BB4(player, sp160);
func_8002AB70(player); func_8002AB70(player);
func_8002FCA8(player, playerId); func_8002FCA8(player, playerId);
if (player->unk_044 & 1) { if (player->kartProps & 1) {
player->unk_064[0] *= -1.0f; player->unk_064[0] *= -1.0f;
player->unk_064[2] *= -1.0f; player->unk_064[2] *= -1.0f;
} }
@ -1911,9 +1911,9 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
temp_f2_2 = ((player->oldPos[2] - player->pos[2]) * coss(player->rotation[1] + player->unk_0C0)) + temp_f2_2 = ((player->oldPos[2] - player->pos[2]) * coss(player->rotation[1] + player->unk_0C0)) +
(-(player->oldPos[0] - player->pos[0]) * sins(player->rotation[1] + player->unk_0C0)); (-(player->oldPos[0] - player->pos[0]) * sins(player->rotation[1] + player->unk_0C0));
if (temp_f2_2 > 0.1) { if (temp_f2_2 > 0.1) {
player->unk_044 |= 8; player->kartProps |= MOVE_BACKWARDS;
} else { } else {
player->unk_044 &= 0xFFF7; player->kartProps &= ~MOVE_BACKWARDS;
} }
if (((player->kartPropulsionStrength <= 0.0f) && ((temp_v0_3 = player->effects, (temp_v0_3 & 1) == 1))) && if (((player->kartPropulsionStrength <= 0.0f) && ((temp_v0_3 = player->effects, (temp_v0_3 & 1) == 1))) &&
((temp_v0_3 & 0x20) != 0x20)) { ((temp_v0_3 & 0x20) != 0x20)) {
@ -1961,15 +1961,15 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
newVelocity[1] += newVelocity[1] +=
(((((f64) ((sp184[1] + gravityY) + sp160[1])) - (newVelocity[1] * (0.12 * ((f64) player->kartFriction)))) / 6000.0) / (((((f64) ((sp184[1] + gravityY) + sp160[1])) - (newVelocity[1] * (0.12 * ((f64) player->kartFriction)))) / 6000.0) /
((f64) player->unk_DAC)); ((f64) player->unk_DAC));
if (((((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) || if (((((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) ||
((player->effects & HIT_EFFECT) == HIT_EFFECT)) || ((player->effects & HIT_EFFECT) == HIT_EFFECT)) ||
(player->unk_0CA & 1)) { (player->lakituProps & LAKITU_RETRIEVAL)) {
newVelocity[0] = 0.0f; newVelocity[0] = 0.0f;
newVelocity[1] = 0.0f; newVelocity[1] = 0.0f;
newVelocity[2] = 0.0f; newVelocity[2] = 0.0f;
} }
if ((player->unk_044 & 0x10) == 0x10) { if ((player->kartProps & LOSE_GP_RACE) == LOSE_GP_RACE) {
player->unk_044 &= 0xFFEF; player->kartProps &= ~LOSE_GP_RACE;
} }
posX = player->pos[0]; posX = player->pos[0];
@ -1983,9 +1983,9 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
nextY = posY + player->velocity[1]; nextY = posY + player->velocity[1];
nextZ = posZ + player->velocity[2] + D_8018CE10[playerId].unk_04[2]; nextZ = posZ + player->velocity[2] + D_8018CE10[playerId].unk_04[2];
if (((((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 8) != 8)) && if (((((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) && ((player->lakituProps & LAKITU_SCENE) != LAKITU_SCENE)) &&
((player->effects & HIT_EFFECT) != HIT_EFFECT)) && ((player->effects & HIT_EFFECT) != HIT_EFFECT)) &&
(!(player->unk_0CA & 1))) { (!(player->lakituProps & LAKITU_RETRIEVAL))) {
func_8002AAC0(player); func_8002AAC0(player);
nextY += player->kartHopVelocity; nextY += player->kartHopVelocity;
nextY -= 0.02; nextY -= 0.02;
@ -1995,7 +1995,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
player->unk_058 = 0.0f; player->unk_058 = 0.0f;
player->unk_060 = 0.0f; player->unk_060 = 0.0f;
player->unk_05C = 1.0f; player->unk_05C = 1.0f;
if ((player->unk_044 & 1) != 1) { if ((player->kartProps & 1) != 1) {
calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060, calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060,
player->rotation[1]); player->rotation[1]);
} else { } else {
@ -2014,7 +2014,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
} }
player->unk_DB4.unkC = 3.0f; player->unk_DB4.unkC = 3.0f;
player->unk_DB4.unk18 = 0; player->unk_DB4.unk18 = 0;
player->unk_0B6 |= 0x100; player->kartGraphics |= POOMP;
if ((((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && if ((((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT)) && ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT)) &&
((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
@ -2025,7 +2025,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 35.0f); func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 35.0f);
} }
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
player->unk_044 |= 0x100; player->kartProps |= POST_TUMBLE_GAS;
} }
} }
if (((player->unk_0C2 < 0x23) && (player->unk_0C2 >= 0x1C)) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) { if (((player->unk_0C2 < 0x23) && (player->unk_0C2 >= 0x1C)) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
@ -2036,7 +2036,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 35.0f); func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 35.0f);
} }
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
player->unk_044 |= 0x100; player->kartProps |= POST_TUMBLE_GAS;
} }
} }
if (((player->unk_0C2 < 0x1C) && (player->unk_0C2 >= 4)) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) { if (((player->unk_0C2 < 0x1C) && (player->unk_0C2 >= 4)) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
@ -2083,7 +2083,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
} }
if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) != 0)) && if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) != 0)) &&
((player->effects & 0x10000) != 0x10000)) { ((player->effects & 0x10000) != 0x10000)) {
if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) { if ((!(player->lakituProps & HELD_BY_LAKITU)) || (!(player->lakituProps & LAKITU_SCENE))) {
func_8008F494(player, playerId); func_8008F494(player, playerId);
} }
} else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) && } else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) &&
@ -2136,7 +2136,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
player->speed = gKartTopSpeedTable[player->characterId]; player->speed = gKartTopSpeedTable[player->characterId];
} }
} }
if ((player->unk_044 & 1) == 1) { if ((player->kartProps & 1) == 1) {
if (player->speed > 1) { if (player->speed > 1) {
temp = 1 / player->speed; temp = 1 / player->speed;
player->velocity[0] *= temp; player->velocity[0] *= temp;
@ -2195,7 +2195,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
((player->effects & 0x80000) == 0x80000)) || ((player->effects & 0x80000) == 0x80000)) ||
((player->effects & 0x800000) == 0x800000)) || ((player->effects & 0x800000) == 0x800000)) ||
((player->effects & 0x20000) == 0x20000)) || ((player->effects & 0x20000) == 0x20000)) ||
(player->unk_044 & 0x800)) { (player->kartProps & UNUSED_0x800)) {
sp46 = 1; sp46 = 1;
} else { } else {
sp46 = 0; sp46 = 0;
@ -2247,7 +2247,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
} }
sp54[1] += (((((spEC[1] + sp7C) + spD4[1])) - (sp54[1] * (0.12 * player->kartFriction))) / 6000) / player->unk_DAC; sp54[1] += (((((spEC[1] + sp7C) + spD4[1])) - (sp54[1] * (0.12 * player->kartFriction))) / 6000) / player->unk_DAC;
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) { if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) {
sp54[0] = 0.0f; sp54[0] = 0.0f;
sp54[1] = 0.0f; sp54[1] = 0.0f;
sp54[2] = 0.0f; sp54[2] = 0.0f;
@ -2283,14 +2283,14 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
player->unk_0C2 = 0x0032; player->unk_0C2 = 0x0032;
} }
player->unk_DB4.unk18 = 0; player->unk_DB4.unk18 = 0;
player->unk_0B6 |= 0x100; player->kartGraphics |= POOMP;
player->unk_DB4.unkC = 3.0f; player->unk_DB4.unkC = 3.0f;
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f); func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f);
} }
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
player->unk_044 |= 0x100; player->kartProps |= POST_TUMBLE_GAS;
} }
} }
if (((player->unk_0C2 < 0x1C) && (player->unk_0C2 >= 0xA)) && if (((player->unk_0C2 < 0x1C) && (player->unk_0C2 >= 0xA)) &&
@ -2302,7 +2302,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f); func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f);
} }
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
player->unk_044 |= 0x100; player->kartProps |= POST_TUMBLE_GAS;
} }
} }
player->unk_0C2 = 0; player->unk_0C2 = 0;
@ -2327,7 +2327,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
player->kartHopJerk = 0.06f; player->kartHopJerk = 0.06f;
player->kartHopAcceleration = 0.0f; player->kartHopAcceleration = 0.0f;
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) { if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
player->unk_044 |= 0x100; player->kartProps |= POST_TUMBLE_GAS;
} }
} }
} else { } else {
@ -2367,7 +2367,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
} }
if (((func_802ABDB8(player->collision.meshIndexZX) != 0) && ((player->effects & 0x10000) != 0x10000)) && if (((func_802ABDB8(player->collision.meshIndexZX) != 0) && ((player->effects & 0x10000) != 0x10000)) &&
(((player->speed / 18.0f) * 216.0f) >= 20.0f)) { (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) { if ((!(player->lakituProps & HELD_BY_LAKITU)) || (!(player->lakituProps & LAKITU_SCENE))) {
func_8008F494(player, playerId); func_8008F494(player, playerId);
} }
} else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) && } else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) &&
@ -2432,7 +2432,7 @@ void control_cpu_movement(Player* player, UNUSED Camera* camera, s8 screenId, s8
f32 topSpeedMultiplier; f32 topSpeedMultiplier;
f32 nextY; f32 nextY;
player->effects |= 0x1000; player->effects |= 0x1000;
player->unk_044 |= 0x10; player->kartProps |= LOSE_GP_RACE;
nextY = gPlayerPathY[playerId]; nextY = gPlayerPathY[playerId];
player->driftDuration = 0; player->driftDuration = 0;
player->effects &= ~DRIFTING_EFFECT; player->effects &= ~DRIFTING_EFFECT;
@ -2717,7 +2717,7 @@ f32 func_80030150(Player* player, s8 arg1) {
var_f0 += D_800E2E90[player->characterId][player->tyres[FRONT_LEFT].surfaceType]; var_f0 += D_800E2E90[player->characterId][player->tyres[FRONT_LEFT].surfaceType];
} }
} }
if (((player->effects & 8) != 8) && ((player->unk_0CA & 2) != 2)) { if (((player->effects & 8) != 8) && ((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU)) {
temp_lo = player->slopeAccel / 182; temp_lo = player->slopeAccel / 182;
if (var_f2 >= 20.0f) { if (var_f2 >= 20.0f) {
if ((temp_lo > 0x11) || (temp_lo < -0x11)) { if ((temp_lo > 0x11) || (temp_lo < -0x11)) {
@ -2757,10 +2757,10 @@ f32 func_80030150(Player* player, s8 arg1) {
var_f0 += -0.25; var_f0 += -0.25;
} }
} }
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) == WATER_IS_FULLY_SUBMERGED) { if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) == UNDER_OOB_OR_FLUID_LEVEL) {
var_f0 += 0.3; var_f0 += 0.3;
} else { } else {
if ((player->waterInteractionFlags & WATER_IS_PARTIALLY_SUBMERGED) == WATER_IS_PARTIALLY_SUBMERGED) { if ((player->oobProps & PASS_OOB_OR_FLUID_LEVEL) == PASS_OOB_OR_FLUID_LEVEL) {
var_f0 += 0.15; var_f0 += 0.15;
} }
if (((gPlayerWaterLevel[arg1] - player->tyres[BACK_LEFT].baseHeight) >= 3.5) || if (((gPlayerWaterLevel[arg1] - player->tyres[BACK_LEFT].baseHeight) >= 3.5) ||
@ -2807,7 +2807,7 @@ f32 func_80030150(Player* player, s8 arg1) {
if (var_f2 < 0.0f) { if (var_f2 < 0.0f) {
var_f2 = 0.0f; var_f2 = 0.0f;
} }
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8) || if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE) ||
((player->type & PLAYER_START_SEQUENCE) == PLAYER_START_SEQUENCE)) { ((player->type & PLAYER_START_SEQUENCE) == PLAYER_START_SEQUENCE)) {
return (1.0f - player->unk_104) * var_f2; return (1.0f - player->unk_104) * var_f2;
} }
@ -2831,7 +2831,7 @@ void update_player_kart_hop(Player* player) {
f32 hopInitialUpwardVelocity; f32 hopInitialUpwardVelocity;
f32 hopDownwardAcceleration; f32 hopDownwardAcceleration;
if (((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 8) != 8)) { if (((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) && ((player->lakituProps & LAKITU_SCENE) != LAKITU_SCENE)) {
if ((((player->speed / 18.0f) * 216.0f) >= 8.0f) && (player->unk_DB4.unkC < 1.0f)) { if ((((player->speed / 18.0f) * 216.0f) >= 8.0f) && (player->unk_DB4.unkC < 1.0f)) {
switch (player->surfaceType) { /* irregular */ switch (player->surfaceType) { /* irregular */
case ASPHALT: case ASPHALT:
@ -3107,7 +3107,7 @@ void player_accelerate_alternative(Player* player) {
if (!((player->effects & 8)) || ((player->effects & LIGHTNING_EFFECT))) { if (!((player->effects & 8)) || ((player->effects & LIGHTNING_EFFECT))) {
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f; player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
} }
player->unk_044 |= 0x20; player->kartProps |= THROTTLE;
// Hacky way to check for START_SPINOUT_TRIGGER // Hacky way to check for START_SPINOUT_TRIGGER
if ((player->triggers * 8) < 0) { if ((player->triggers * 8) < 0) {
func_8008F104(player, player_index); func_8008F104(player, player_index);
@ -3132,7 +3132,7 @@ void player_decelerate_alternative(Player* player, f32 speed) {
if ((player->effects & 8) != 8) { if ((player->effects & 8) != 8) {
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f; player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
} }
player->unk_044 &= 0xFFDF; player->kartProps &= ~THROTTLE;
// Hacky way to check for START_SPINOUT_TRIGGER // Hacky way to check for START_SPINOUT_TRIGGER
if ((player->triggers * 8) < 0) { if ((player->triggers * 8) < 0) {
func_8008F104(player, player_index); func_8008F104(player, player_index);
@ -3375,7 +3375,7 @@ void player_accelerate_during_start_sequence(Player* player) {
} else { } else {
var_v0 = 8; var_v0 = 8;
} }
if ((test < var_v0) && ((player->unk_044 & 0x20) != 0x20)) { if ((test < var_v0) && ((player->kartProps & THROTTLE) != THROTTLE)) {
player->triggers |= START_BOOST_TRIGGER; player->triggers |= START_BOOST_TRIGGER;
} else if ((player->topSpeed * 0.9f) <= player->currentSpeed) { } else if ((player->topSpeed * 0.9f) <= player->currentSpeed) {
if ((player->triggers & START_BOOST_TRIGGER) != START_BOOST_TRIGGER) { if ((player->triggers & START_BOOST_TRIGGER) != START_BOOST_TRIGGER) {
@ -3384,7 +3384,7 @@ void player_accelerate_during_start_sequence(Player* player) {
} }
} }
} }
player->unk_044 |= 0x20; player->kartProps |= THROTTLE;
player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f; player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f;
} }
@ -3403,7 +3403,7 @@ void player_decelerate_during_start_sequence(Player* player, f32 speedReduction)
player->triggers &= ~START_SPINOUT_TRIGGER; player->triggers &= ~START_SPINOUT_TRIGGER;
} }
player->triggers &= ~START_BOOST_TRIGGER; player->triggers &= ~START_BOOST_TRIGGER;
player->unk_044 &= ~0x0020; player->kartProps &= ~THROTTLE;
player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f; player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f;
} }
@ -3489,7 +3489,7 @@ void player_accelerate_global(Player* player, s32 playerIndex) {
if (((player->topSpeed * 0.9) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] <= (player->topSpeed * 1.0))) { if (((player->topSpeed * 0.9) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] <= (player->topSpeed * 1.0))) {
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][9] * 2.8; gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][9] * 2.8;
} }
player->unk_044 |= 0x20; player->kartProps |= THROTTLE;
if (gPlayerCurrentSpeed[playerIndex] < 0.0f) { if (gPlayerCurrentSpeed[playerIndex] < 0.0f) {
gPlayerCurrentSpeed[playerIndex] = 0.0f; gPlayerCurrentSpeed[playerIndex] = 0.0f;
} }
@ -3497,7 +3497,7 @@ void player_accelerate_global(Player* player, s32 playerIndex) {
} }
void player_decelerate_global(Player* player, f32 speedReduction, s32 playerIndex) { void player_decelerate_global(Player* player, f32 speedReduction, s32 playerIndex) {
player->unk_044 &= ~0x20; player->kartProps &= ~THROTTLE;
gPlayerCurrentSpeed[playerIndex] -= speedReduction; gPlayerCurrentSpeed[playerIndex] -= speedReduction;
if (gPlayerCurrentSpeed[playerIndex] <= 0.0f) { if (gPlayerCurrentSpeed[playerIndex] <= 0.0f) {
gPlayerCurrentSpeed[playerIndex] = 0.0f; gPlayerCurrentSpeed[playerIndex] = 0.0f;
@ -3621,31 +3621,31 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) {
((player->effects & 0x8000) == 0x8000)) { ((player->effects & 0x8000) == 0x8000)) {
func_80036CB4(player); func_80036CB4(player);
} }
if ((player->unk_0C0 / 182) < (-5)) { if ((player->unk_0C0 / DEGREES_CONVERSION_FACTOR) < (-5)) {
player->unk_044 |= 4; player->kartProps |= LEFT_TURN;
player->unk_044 &= 0xFFFD; player->kartProps &= ~RIGHT_TURN;
D_801652C0[arg2]++; D_801652C0[arg2]++;
} else if ((player->unk_0C0 / 182) >= 6) { } else if ((player->unk_0C0 / DEGREES_CONVERSION_FACTOR) >= 6) {
player->unk_044 |= 2; player->kartProps |= RIGHT_TURN;
player->unk_044 &= 0xFFFB; player->kartProps &= ~LEFT_TURN;
D_801652C0[arg2]++; D_801652C0[arg2]++;
} else { } else {
player->unk_044 &= 0xFFF9; player->kartProps &= ~(LEFT_TURN | RIGHT_TURN);
D_801652C0[arg2] = 0; D_801652C0[arg2] = 0;
} }
if (((player->effects & 2) == 2) || ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT)) { if (((player->effects & 2) == 2) || ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT)) {
player->unk_044 &= 0xFFF9; player->kartProps &= ~(LEFT_TURN | RIGHT_TURN);
} }
sp2E4 = player->unk_07C; sp2E4 = player->unk_07C;
temp_v0_3 = func_80038534(controller); temp_v0_3 = func_80038534(controller);
if (((player->unk_044 & 1) == 1) || ((player->unk_044 & 8) == 8)) { if (((player->kartProps & BACK_UP) == BACK_UP) || ((player->kartProps & MOVE_BACKWARDS) == MOVE_BACKWARDS)) {
temp_v0_3 = -temp_v0_3; temp_v0_3 = -temp_v0_3;
} }
player->unk_07C = (temp_v0_3 << 16) & 0xFFFF0000; player->unk_07C = (temp_v0_3 << 16) & 0xFFFF0000;
sp2D0 = sp2E4 - player->unk_07C; sp2D0 = sp2E4 - player->unk_07C;
sp2D0 = sp2D0 >> 16; sp2D0 = sp2D0 >> 16;
player->unk_0FA = (s16) sp2D0; player->unk_0FA = (s16) sp2D0;
if (((sp2D0 >= 0x5A) || (sp2D0 < (-0x59))) && (!(player->unk_044 & 0x4000))) { if (((sp2D0 >= 0x5A) || (sp2D0 < (-0x59))) && (!(player->kartProps & DRIVING_SPINOUT))) {
if ((((((!(player->effects & DRIFTING_EFFECT)) && (gCCSelection == CC_150)) && (gModeSelection != BATTLE)) && if ((((((!(player->effects & DRIFTING_EFFECT)) && (gCCSelection == CC_150)) && (gModeSelection != BATTLE)) &&
(!(player->effects & 8))) && (!(player->effects & 8))) &&
(((player->speed / 18.0f) * 216.0f) >= 40.0f)) && (((player->speed / 18.0f) * 216.0f) >= 40.0f)) &&
@ -3669,7 +3669,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) {
var_a0 = 0; var_a0 = 0;
} }
if (((player->speed / 18.0f) * 216.0f) >= 15.0f) { if (((player->speed / 18.0f) * 216.0f) >= 15.0f) {
if ((player->unk_044 & 2) == 2) { if ((player->kartProps & RIGHT_TURN) == RIGHT_TURN) {
if ((sp2D0 < 36) && (sp2D0 >= 0)) { if ((sp2D0 < 36) && (sp2D0 >= 0)) {
sp2C8 = sp2C8 =
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 0xF)) * (1.0f + var_f2)); (gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 0xF)) * (1.0f + var_f2));
@ -3679,7 +3679,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) {
sp2C8 = (s32) (((f32) (var_a0 + 5)) * (1.0f + var_f2)); sp2C8 = (s32) (((f32) (var_a0 + 5)) * (1.0f + var_f2));
sp2CC = (s32) (((f32) (var_a0 + 9)) * (1.0f + var_f2)); sp2CC = (s32) (((f32) (var_a0 + 9)) * (1.0f + var_f2));
} }
} else if ((player->unk_044 & 4) == 4) { } else if ((player->kartProps & LEFT_TURN) == LEFT_TURN) {
if ((sp2D0 >= (-0x23)) && (sp2D0 <= 0)) { if ((sp2D0 >= (-0x23)) && (sp2D0 <= 0)) {
sp2C8 = sp2C8 =
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 0xF)) * (1.0f + var_f2)); (gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 0xF)) * (1.0f + var_f2));
@ -3698,11 +3698,11 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) {
sp2CC = 8; sp2CC = 8;
} }
} }
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) == WATER_IS_FULLY_SUBMERGED) { if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) == UNDER_OOB_OR_FLUID_LEVEL) {
sp2C8 *= 1.5; sp2C8 *= 1.5;
sp2CC *= 1.5; sp2CC *= 1.5;
} else { } else {
if ((player->waterInteractionFlags & WATER_IS_PARTIALLY_SUBMERGED) == WATER_IS_PARTIALLY_SUBMERGED) { if ((player->oobProps & PASS_OOB_OR_FLUID_LEVEL) == PASS_OOB_OR_FLUID_LEVEL) {
sp2C8 *= 1.2; sp2C8 *= 1.2;
sp2CC *= 1.2; sp2CC *= 1.2;
} }
@ -3989,7 +3989,7 @@ void func_80036C5C(Player* player) {
if (((player->speed / 18.0f) * 216.0f) > 20.0f) { if (((player->speed / 18.0f) * 216.0f) > 20.0f) {
player->driftDuration = 0; player->driftDuration = 0;
player->effects |= DRIFTING_EFFECT; player->effects |= DRIFTING_EFFECT;
player->unk_0B6 |= 0x800; player->kartGraphics |= BOING;
} }
} }
@ -4028,7 +4028,7 @@ void func_80036DB4(Player* player, Vec3f arg1, Vec3f arg2) {
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->effects & 2) != 2)) { if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->effects & 2) != 2)) {
var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 10.0f); var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 10.0f);
sp20 = player->unk_084 * 3.0f; sp20 = player->unk_084 * 3.0f;
} else if (!(player->effects & 0x800) && !(player->unk_044 & 0x4000)) { } else if (!(player->effects & 0x800) && !(player->kartProps & DRIVING_SPINOUT)) {
thing = player->unk_0FA; thing = player->unk_0FA;
if (thing > 0) { if (thing > 0) {
thing *= -1; thing *= -1;
@ -4086,7 +4086,7 @@ void func_800371F4(Player* player, Vec3f arg1, Vec3f arg2) {
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->effects & 2) != 2)) { if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->effects & 2) != 2)) {
var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 50.0f); var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 50.0f);
sp20 = player->unk_084 * 3.0f; sp20 = player->unk_084 * 3.0f;
} else if (!(player->effects & 0x800) && !(player->unk_044 & 0x4000)) { } else if (!(player->effects & 0x800) && !(player->kartProps & DRIVING_SPINOUT)) {
var_v0 = player->unk_0FA; var_v0 = player->unk_0FA;
if (var_v0 > 0) { if (var_v0 > 0) {
var_v0 *= -1; var_v0 *= -1;
@ -4321,7 +4321,7 @@ void func_80037CFC(Player* player, struct Controller* controller, s8 arg2) {
player->effects &= ~0x20; player->effects &= ~0x20;
} }
} }
if ((player->unk_044 & 1) != 1) { if ((player->kartProps & BACK_UP) != BACK_UP) {
if (controller->button & A_BUTTON) { if (controller->button & A_BUTTON) {
player_accelerate_alternative(player); player_accelerate_alternative(player);
detect_triple_a_combo_a_pressed(player); detect_triple_a_combo_a_pressed(player);
@ -4345,13 +4345,13 @@ void func_80037CFC(Player* player, struct Controller* controller, s8 arg2) {
if (((func_800388B0(controller) < (-0x31)) && (((player->speed / 18.0f) * 216.0f) <= 5.0f)) && if (((func_800388B0(controller) < (-0x31)) && (((player->speed / 18.0f) * 216.0f) <= 5.0f)) &&
(controller->button & B_BUTTON)) { (controller->button & B_BUTTON)) {
player->currentSpeed = 140.0f; player->currentSpeed = 140.0f;
player->unk_044 |= 1; player->kartProps |= BACK_UP;
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f; player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
player->unk_20C = 0.0f; player->unk_20C = 0.0f;
} }
if ((func_800388B0(controller) >= -0x1D) || (!(controller->button & B_BUTTON))) { if ((func_800388B0(controller) >= -0x1D) || (!(controller->button & B_BUTTON))) {
if ((player->unk_044 & 1) == 1) { if ((player->kartProps & BACK_UP) == BACK_UP) {
player->unk_044 &= 0xFFFE; player->kartProps &= ~BACK_UP;
player->currentSpeed = 0.0f; player->currentSpeed = 0.0f;
} }
} }
@ -4382,7 +4382,7 @@ void handle_a_press_for_player_during_race(Player* player, struct Controller* co
if (((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && if (((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
((player->type & PLAYER_CPU) != PLAYER_CPU)) { ((player->type & PLAYER_CPU) != PLAYER_CPU)) {
if ((player->type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE) { if ((player->type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE) {
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) { if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) {
if (controller->button & A_BUTTON) { if (controller->button & A_BUTTON) {
player_accelerate(player); player_accelerate(player);
} else { } else {
@ -4423,24 +4423,24 @@ void handle_a_press_for_all_players_during_race(void) {
if (D_8015F890 != 1) { if (D_8015F890 != 1) {
handle_a_press_for_player_during_race(gPlayerOne, gControllerOne, 0); handle_a_press_for_player_during_race(gPlayerOne, gControllerOne, 0);
temp_v0_3 = gPlayerTwo->type; temp_v0_3 = gPlayerTwo->type;
if (((temp_v0_3 & 0x100) == 0x100) && ((temp_v0_3 & 0x800) != 0x800)) { if (((temp_v0_3 & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) && ((temp_v0_3 & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE)) {
handle_a_press_for_player_during_race(gPlayerTwo, gControllerSix, 1); handle_a_press_for_player_during_race(gPlayerTwo, gControllerSix, 1);
} }
temp_v0_4 = gPlayerThree->type; temp_v0_4 = gPlayerThree->type;
if (((temp_v0_4 & 0x100) == 0x100) && ((temp_v0_4 & 0x800) != 0x800)) { if (((temp_v0_4 & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) && ((temp_v0_4 & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE)) {
handle_a_press_for_player_during_race(gPlayerThree, gControllerSeven, 2); handle_a_press_for_player_during_race(gPlayerThree, gControllerSeven, 2);
return; return;
} }
} else { } else {
if ((gPlayerOne->type & 0x800) != 0x800) { if ((gPlayerOne->type & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE) {
handle_a_press_for_player_during_race(gPlayerOne, gControllerEight, 0); handle_a_press_for_player_during_race(gPlayerOne, gControllerEight, 0);
} }
temp_v0_5 = gPlayerTwo->type; temp_v0_5 = gPlayerTwo->type;
if (((temp_v0_5 & 0x100) == 0x100) && ((temp_v0_5 & 0x800) != 0x800)) { if (((temp_v0_5 & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) && ((temp_v0_5 & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE)) {
handle_a_press_for_player_during_race(gPlayerTwo, gControllerSix, 1); handle_a_press_for_player_during_race(gPlayerTwo, gControllerSix, 1);
} }
temp_v0_6 = gPlayerThree->type; temp_v0_6 = gPlayerThree->type;
if (((temp_v0_6 & 0x100) == 0x100) && ((temp_v0_6 & 0x800) != 0x800)) { if (((temp_v0_6 & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) && ((temp_v0_6 & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE)) {
handle_a_press_for_player_during_race(gPlayerThree, gControllerSeven, 2); handle_a_press_for_player_during_race(gPlayerThree, gControllerSeven, 2);
return; return;
} }
@ -4581,7 +4581,7 @@ void func_80038BE4(Player* player, s16 arg1) {
if (player->currentSpeed >= 250.0f) { if (player->currentSpeed >= 250.0f) {
player->currentSpeed = 250.0f; player->currentSpeed = 250.0f;
} }
player->unk_044 |= 0x20; player->kartProps |= THROTTLE;
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f; player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
} }
@ -4638,8 +4638,8 @@ void func_80038C6C(Player* player, UNUSED Camera* camera, s8 arg2, s8 playerId)
sp88[0] += ((((((sp114[0] + spA4) + spF0[0])) - (sp88[0] * (0.12 * (player->kartFriction)))) / 6000.0) / 1); sp88[0] += ((((((sp114[0] + spA4) + spF0[0])) - (sp88[0] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
sp88[2] += ((((((sp114[2] + sp9C) + spF0[2])) - (sp88[2] * (0.12 * (player->kartFriction)))) / 6000.0) / 1); sp88[2] += ((((((sp114[2] + sp9C) + spF0[2])) - (sp88[2] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
sp88[1] += ((((((sp114[1] + spA0) + spF0[1])) - (sp88[1] * (0.12 * (player->kartFriction)))) / 6000.0) / 1); sp88[1] += ((((((sp114[1] + spA0) + spF0[1])) - (sp88[1] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
if ((player->unk_044 & 0x10) == 0x10) { if ((player->kartProps & LOSE_GP_RACE) == LOSE_GP_RACE) {
player->unk_044 &= 0xFFEF; player->kartProps &= ~LOSE_GP_RACE;
} }
posX = player->pos[0]; posX = player->pos[0];
@ -4723,7 +4723,7 @@ void func_80038C6C(Player* player, UNUSED Camera* camera, s8 arg2, s8 playerId)
player->speed = gKartTopSpeedTable[player->characterId]; player->speed = gKartTopSpeedTable[player->characterId];
} }
} }
if ((player->unk_044 & 1) == 1) { if ((player->kartProps & BACK_UP) == BACK_UP) {
if (player->speed > 1.0f) { if (player->speed > 1.0f) {
player->velocity[0] *= 1.0f / player->speed; player->velocity[0] *= 1.0f / player->speed;
player->velocity[1] *= 1.0f / player->speed; player->velocity[1] *= 1.0f / player->speed;

View File

@ -1133,10 +1133,10 @@ void init_kiwano_fruit(void) {
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
phi_s1 = &gPlayers[i]; phi_s1 = &gPlayers[i];
// temp_v0 = *phi_s1; // temp_v0 = *phi_s1;
if ((phi_s1->type & 0x4000) == 0) { if ((phi_s1->type & PLAYER_HUMAN) == 0) {
continue; continue;
} }
if ((phi_s1->type & 0x100) != 0) { if ((phi_s1->type & PLAYER_INVISIBLE_OR_BOMB) != 0) {
continue; continue;
} }
@ -1987,7 +1987,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
} }
player->triggers |= HIT_BANANA_TRIGGER; player->triggers |= HIT_BANANA_TRIGGER;
owner = &gPlayers[temp_v1]; owner = &gPlayers[temp_v1];
if (owner->type & 0x4000) { if (owner->type & PLAYER_HUMAN) {
if (actor->flags & 0xF) { if (actor->flags & 0xF) {
if (temp_lo != temp_v1) { if (temp_lo != temp_v1) {
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06)); func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
@ -2017,7 +2017,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
player->triggers |= LOW_TUMBLE_TRIGGER; player->triggers |= LOW_TUMBLE_TRIGGER;
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10)); func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
owner = &gPlayers[temp_v1]; owner = &gPlayers[temp_v1];
if ((owner->type & 0x4000) && (temp_lo != temp_v1)) { if ((owner->type & PLAYER_HUMAN) && (temp_lo != temp_v1)) {
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06)); func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
} }
destroy_destructable_actor(actor); destroy_destructable_actor(actor);
@ -2036,7 +2036,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10)); func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
} }
owner = &gPlayers[temp_v1]; owner = &gPlayers[temp_v1];
if ((owner->type & 0x4000) && (temp_lo != temp_v1)) { if ((owner->type & PLAYER_HUMAN) && (temp_lo != temp_v1)) {
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06)); func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
} }
if (temp_lo == actor->unk_04) { if (temp_lo == actor->unk_04) {
@ -2061,7 +2061,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10)); func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
} }
owner = &gPlayers[temp_v1]; owner = &gPlayers[temp_v1];
if ((owner->type & 0x4000) && (temp_lo != temp_v1)) { if ((owner->type & PLAYER_HUMAN) && (temp_lo != temp_v1)) {
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06)); func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
} }
destroy_destructable_actor(actor); destroy_destructable_actor(actor);
@ -2119,7 +2119,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
} }
player->triggers |= VERTICAL_TUMBLE_TRIGGER; player->triggers |= VERTICAL_TUMBLE_TRIGGER;
owner = &gPlayers[temp_v1]; owner = &gPlayers[temp_v1];
if (owner->type & 0x4000) { if (owner->type & PLAYER_HUMAN) {
if (actor->flags & 0xF) { if (actor->flags & 0xF) {
if (temp_lo != temp_v1) { if (temp_lo != temp_v1) {
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06)); func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));

View File

@ -101,7 +101,7 @@ void destroy_banana_in_banana_bunch(struct BananaActor* banana) {
func_802B0464(banana->youngerIndex); func_802B0464(banana->youngerIndex);
func_802B04E8(banana, banana->elderIndex); func_802B04E8(banana, banana->elderIndex);
if ((gPlayers[banana->playerId].type & 0x4000) != 0) { if ((gPlayers[banana->playerId].type & PLAYER_HUMAN) != 0) {
func_800C9060(banana->playerId, SOUND_ARG_LOAD(0x19, 0x01, 0x90, 0x53)); func_800C9060(banana->playerId, SOUND_ARG_LOAD(0x19, 0x01, 0x90, 0x53));
} }
banana->flags = -0x8000; banana->flags = -0x8000;
@ -295,7 +295,7 @@ void update_actor_banana_bunch(struct BananaBunchParent* banana_bunch) {
if (someCount == 0) { if (someCount == 0) {
destroy_actor((struct Actor*) banana_bunch); destroy_actor((struct Actor*) banana_bunch);
owner->triggers &= ~DRAG_ITEM_EFFECT; owner->triggers &= ~DRAG_ITEM_EFFECT;
} else if ((owner->type & 0x4000) != 0) { } else if ((owner->type & PLAYER_HUMAN) != 0) {
controller = &gControllers[banana_bunch->playerId]; controller = &gControllers[banana_bunch->playerId];
if ((controller->buttonPressed & Z_TRIG) != 0) { if ((controller->buttonPressed & Z_TRIG) != 0) {
controller->buttonPressed &= ~Z_TRIG; controller->buttonPressed &= ~Z_TRIG;

View File

@ -79,6 +79,4 @@ extern Vec3f D_802B91C8;
} }
#endif #endif
#define DEGREES_CONVERSION_FACTOR 182
#endif // MATH_UTIL_H #endif // MATH_UTIL_H

View File

@ -575,7 +575,7 @@ void func_8028EF28(void) {
} }
} else if (gPlayers[i].lapCount == 2) { } else if (gPlayers[i].lapCount == 2) {
if ((gPlayers[i].type & 0x100) != 0) { if ((gPlayers[i].type & PLAYER_INVISIBLE_OR_BOMB) != 0) {
return; return;
} }
if ((D_802BA032 & 0x4000) == 0) { if ((D_802BA032 & 0x4000) == 0) {

View File

@ -88,14 +88,14 @@ void func_8001F9E4(Player* player, Camera* camera, s8 screenId) {
get_player_index_for_player(player); get_player_index_for_player(player);
func_8001F980(&sp30, &sp2C); func_8001F980(&sp30, &sp2C);
player->unk_002 &= ~(2 << (screenId * 4)); player->unk_002 &= ~(UNK_002_UNKNOWN_0x2 << (screenId * 4));
player->unk_002 &= ~(8 << (screenId * 4)); player->unk_002 &= ~(SIDE_OF_KART << (screenId * 4));
if (check_player_camera_collision(player, camera, (f32) (D_80165578 + sp30), (f32) (D_8016557A + sp2C)) == 1) { if (check_player_camera_collision(player, camera, (f32) (D_80165578 + sp30), (f32) (D_8016557A + sp2C)) == 1) {
player->unk_002 |= 2 << (screenId * 4); player->unk_002 |= UNK_002_UNKNOWN_0x2 << (screenId * 4);
} }
if (check_player_camera_collision(player, camera, (f32) D_80165580, (f32) D_80165582) == 1) { if (check_player_camera_collision(player, camera, (f32) D_80165580, (f32) D_80165582) == 1) {
player->unk_002 |= 8 << (screenId * 4); player->unk_002 |= SIDE_OF_KART << (screenId * 4);
} }
} }
@ -194,7 +194,7 @@ void init_render_player(Player* player, Camera* camera, s8 playerId, s8 screenId
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) { if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
func_8001F9E4(player, camera, screenId); func_8001F9E4(player, camera, screenId);
temp_v0 = 2 << (screenId << 2); temp_v0 = UNK_002_UNKNOWN_0x2 << (screenId << 2);
if (temp_v0 == (player->unk_002 & temp_v0)) { if (temp_v0 == (player->unk_002 & temp_v0)) {
if (!(player->type & PLAYER_START_SEQUENCE)) { if (!(player->type & PLAYER_START_SEQUENCE)) {
func_8002934C(player, camera, screenId, playerId); func_8002934C(player, camera, screenId, playerId);
@ -206,7 +206,7 @@ void init_render_player(Player* player, Camera* camera, s8 playerId, s8 screenId
} }
} }
func_8001F980(&sp4C, &sp48); func_8001F980(&sp4C, &sp48);
temp_v0_2 = 1 << (screenId << 2); temp_v0_2 = CHANGING_ANIMATION << (screenId << 2);
if ((temp_v0 == (player->unk_002 & temp_v0)) && (temp_v0_2 == (player->unk_002 & temp_v0_2))) { if ((temp_v0 == (player->unk_002 & temp_v0)) && (temp_v0_2 == (player->unk_002 & temp_v0_2))) {
if ((check_player_camera_collision(player, camera, D_80165570 + sp4C, D_80165572 + sp48) == 1) & 0xFFFF) { if ((check_player_camera_collision(player, camera, D_80165570 + sp4C, D_80165572 + sp48) == 1) & 0xFFFF) {
gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId; gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId;
@ -552,16 +552,16 @@ void func_80021B0C(void) {
func_8006E7CC(gPlayerEight, 7, 0); func_8006E7CC(gPlayerEight, 7, 0);
} }
if (gGamestate == ENDING) { if (gGamestate == ENDING) {
if (gPlayerOne->unk_044 & 0x2000) { if (gPlayerOne->kartProps & UNUSED_0x2000) {
render_player_shadow_credits(gPlayerOne, 0, 0); render_player_shadow_credits(gPlayerOne, 0, 0);
} }
if (gPlayerTwo->unk_044 & 0x2000) { if (gPlayerTwo->kartProps & UNUSED_0x2000) {
render_player_shadow_credits(gPlayerTwo, 1, 0); render_player_shadow_credits(gPlayerTwo, 1, 0);
} }
if (gPlayerThree->unk_044 & 0x2000) { if (gPlayerThree->kartProps & UNUSED_0x2000) {
render_player_shadow_credits(gPlayerThree, 2, 0); render_player_shadow_credits(gPlayerThree, 2, 0);
} }
if (gPlayerFour->unk_044 & 0x2000) { if (gPlayerFour->kartProps & UNUSED_0x2000) {
render_player_shadow_credits(gPlayerFour, 3, 0); render_player_shadow_credits(gPlayerFour, 3, 0);
} }
} }
@ -785,10 +785,10 @@ void func_8002276C(void) {
break; break;
case TIME_TRIALS: /* switch 1 */ case TIME_TRIALS: /* switch 1 */
func_80022A98(gPlayerOne, 0); func_80022A98(gPlayerOne, 0);
if ((gPlayerTwo->type & 0x100) == 0x100) { if ((gPlayerTwo->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) {
func_80022A98(gPlayerTwo, 1); func_80022A98(gPlayerTwo, 1);
} }
if ((gPlayerThree->type & 0x100) == 0x100) { if ((gPlayerThree->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) {
func_80022A98(gPlayerThree, 2); func_80022A98(gPlayerThree, 2);
} }
break; break;
@ -1065,22 +1065,22 @@ void func_800235AC(Player* player, s8 arg1) {
return; return;
} }
if (((player->unk_0CA & 0x10) == 0x10) && ((player->unk_0CA & 4) == 4)) { if (((player->lakituProps & FRIGID_EFFECT) == FRIGID_EFFECT) && ((player->lakituProps & LAKITU_FIZZLE) == LAKITU_FIZZLE)) {
change_player_color_effect_rgb(player, arg1, 0x646464, 0.5f); change_player_color_effect_rgb(player, arg1, 0x646464, 0.5f);
change_player_color_effect_cmy(player, arg1, 0xFF0000, 0.1f); change_player_color_effect_cmy(player, arg1, 0xFF0000, 0.1f);
return; return;
} }
if ((player->unk_0CA & 4) == 4) { if ((player->lakituProps & LAKITU_FIZZLE) == LAKITU_FIZZLE) {
change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 1.0f); change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 1.0f);
change_player_color_effect_cmy(player, arg1, 0, 1.0f); change_player_color_effect_cmy(player, arg1, 0, 1.0f);
return; return;
} }
if ((player->unk_0CA & 0x10) == 0x10) { if ((player->lakituProps & FRIGID_EFFECT) == FRIGID_EFFECT) {
change_player_color_effect_rgb(player, arg1, 0x646464, 0.5f); change_player_color_effect_rgb(player, arg1, 0x646464, 0.5f);
change_player_color_effect_cmy(player, arg1, 0xFF0000, 0.1f); change_player_color_effect_cmy(player, arg1, 0xFF0000, 0.1f);
return; return;
} }
if ((player->unk_0CA & 0x20) == 0x20) { if ((player->lakituProps & THAWING_EFFECT) == THAWING_EFFECT) {
change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 0.1f); change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 0.1f);
change_player_color_effect_cmy(player, arg1, 0, 0.1f); change_player_color_effect_cmy(player, arg1, 0, 0.1f);
return; return;
@ -1144,7 +1144,7 @@ void func_800235AC(Player* player, s8 arg1) {
return; return;
} }
render_light_environment_on_player(player, arg1); render_light_environment_on_player(player, arg1);
if ((player->unk_0CA & 0x1000) == 0x1000) { if ((player->lakituProps & LAKITU_LAVA) == LAKITU_LAVA) {
change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 0.3f); change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 0.3f);
change_player_color_effect_cmy(player, arg1, 0xF0F0F0, 0.3f); change_player_color_effect_cmy(player, arg1, 0xF0F0F0, 0.3f);
} }
@ -1157,7 +1157,7 @@ void func_80023BF0(Player* player, s8 playerId, s8 screenId, s8 arg3) {
} else { } else {
func_80022E84(player, playerId, screenId, arg3); func_80022E84(player, playerId, screenId, arg3);
} }
if ((player->unk_0CA & 2) == 2) { if ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) {
func_80022D60(player, playerId, screenId, arg3); func_80022D60(player, playerId, screenId, arg3);
} }
} }
@ -1192,7 +1192,7 @@ void render_player_shadow(Player* player, s8 playerId, s8 screenId) {
if (((player->effects & 0x01000000) == 0x01000000) || ((player->effects & 0x400) == 0x400) || if (((player->effects & 0x01000000) == 0x01000000) || ((player->effects & 0x400) == 0x400) ||
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) || ((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
((player->effects & 0x400) == 0x400) || ((player->unk_0CA & 2) == 2) || ((player->effects & 0x400) == 0x400) || ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) ||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || ((player->effects & 0x10000) == 0x10000) || ((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || ((player->effects & 0x10000) == 0x10000) ||
((player->effects & 8) == 8)) { ((player->effects & 8) == 8)) {
@ -1310,7 +1310,7 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 flipOffset) {
s16 thing; s16 thing;
FrameInterpolation_RecordOpenChild("player_kart", playerId | screenId << 8); FrameInterpolation_RecordOpenChild("player_kart", playerId | screenId << 8);
if (player->unk_044 & 0x2000) { if (player->kartProps & UNUSED_0x2000) {
sp14C[0] = 0; sp14C[0] = 0;
sp14C[1] = player->unk_048[screenId]; sp14C[1] = player->unk_048[screenId];
sp14C[2] = 0; sp14C[2] = 0;
@ -1392,7 +1392,7 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 flipOffset) {
AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | 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)); GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
} }
} else if (((player->unk_0CA & 4) == 4) || (player->triggers & BECOME_BOMB_EFFECT) || } else if (((player->lakituProps & LAKITU_FIZZLE) == LAKITU_FIZZLE) || (player->triggers & BECOME_BOMB_EFFECT) ||
(player->triggers & LOSE_BATTLE_EFFECT)) { (player->triggers & LOSE_BATTLE_EFFECT)) {
gSPMatrix(gDisplayListHead++, GetKartMatrix(playerId + (screenId * 8)), gSPMatrix(gDisplayListHead++, GetKartMatrix(playerId + (screenId * 8)),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
@ -1550,7 +1550,7 @@ void render_player_ice_reflection(Player* player, s8 playerId, s8 screenId, s8 f
sp9C[0] = player->pos[0]; sp9C[0] = player->pos[0];
sp9C[1] = player->unk_074 + (4.0f * player->size); sp9C[1] = player->unk_074 + (4.0f * player->size);
sp9C[2] = player->pos[2]; sp9C[2] = player->pos[2];
if (!(player->unk_002 & (4 << (screenId * 4)))) { if (!(player->unk_002 & (UNK_002_UNKNOWN_0x4 << (screenId * 4)))) {
flipOffset = 8; flipOffset = 8;
} else { } else {
flipOffset = 0; flipOffset = 0;
@ -1592,13 +1592,13 @@ void render_player(Player* player, s8 playerId, s8 screenId) {
OSMesg* sp34; OSMesg* sp34;
update_wheel_palette(player, playerId, screenId, D_801651D0[screenId][playerId]); update_wheel_palette(player, playerId, screenId, D_801651D0[screenId][playerId]);
if (!(player->unk_002 & (4 << (screenId * 4)))) { if (!(player->unk_002 & (UNK_002_UNKNOWN_0x4 << (screenId * 4)))) {
var_v1 = 0; var_v1 = 0;
} else { } else {
var_v1 = 8; var_v1 = 8;
} }
func_80023BF0(player, playerId, screenId, var_v1); func_80023BF0(player, playerId, screenId, var_v1);
temp_t1 = 8 << (screenId * 4); temp_t1 = SIDE_OF_KART << (screenId * 4);
if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->collision.surfaceDistance[2] <= 50.0f) && if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->collision.surfaceDistance[2] <= 50.0f) &&
(player->surfaceType != ICE)) { (player->surfaceType != ICE)) {
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) { if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
@ -1615,7 +1615,7 @@ void render_player(Player* player, s8 playerId, s8 screenId) {
render_ghost(player, playerId, screenId, var_v1); render_ghost(player, playerId, screenId, var_v1);
} }
osRecvMesg(&gDmaMesgQueue, (OSMesg*) &sp34, OS_MESG_BLOCK); osRecvMesg(&gDmaMesgQueue, (OSMesg*) &sp34, OS_MESG_BLOCK);
if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->surfaceType == ICE) && ((player->unk_0CA & 1) != 1) && if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->surfaceType == ICE) && ((player->kartProps & LAKITU_RETRIEVAL) != LAKITU_RETRIEVAL) &&
(player->collision.surfaceDistance[2] <= 30.0f)) { (player->collision.surfaceDistance[2] <= 30.0f)) {
render_player_ice_reflection(player, playerId, screenId, var_v1); render_player_ice_reflection(player, playerId, screenId, var_v1);
} }
@ -1680,7 +1680,7 @@ void update_wheel_palette(Player* player, s8 playerId, s8 screenId, s8 arg3) {
if (((player->effects & 0x4000) == 0x4000) && ((player->type & PLAYER_START_SEQUENCE) == 0)) { if (((player->effects & 0x4000) == 0x4000) && ((player->type & PLAYER_START_SEQUENCE) == 0)) {
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) && if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) &&
((player->effects & 0x20000) != 0x20000) && ((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x20000) != 0x20000) && ((player->effects & 0x80000) != 0x80000) &&
((player->effects & 0x800000) != 0x800000) && ((player->unk_044 & 0x800) == 0)) { ((player->effects & 0x800000) != 0x800000) && ((player->kartProps & UNUSED_0x800) == 0)) {
if (frameId <= 20) { if (frameId <= 20) {
int32_t offset = (frameId << 2) + (tyreSpeed >> 8); int32_t offset = (frameId << 2) + (tyreSpeed >> 8);
@ -1705,7 +1705,7 @@ void update_wheel_palette(Player* player, s8 playerId, s8 screenId, s8 arg3) {
} else { } else {
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) && if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) &&
((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) && ((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) &&
((player->effects & 0x20000) != 0x20000) && ((player->unk_044 & 0x800) == 0)) { ((player->effects & 0x20000) != 0x20000) && ((player->kartProps & UNUSED_0x800) == 0)) {
if (frameId <= 20) { if (frameId <= 20) {
int32_t offset = (frameId << 2) + (tyreSpeed >> 8); int32_t offset = (frameId << 2) + (tyreSpeed >> 8);

View File

@ -417,7 +417,7 @@ void save_player_replay(void) {
/* Input file is too long or picked up by lakitu or Out of bounds /* Input file is too long or picked up by lakitu or Out of bounds
Not sure if there is any way to be considered out of bounds without lakitu getting called */ Not sure if there is any way to be considered out of bounds without lakitu getting called */
if (((sPlayerInputIdx >= 0x1000) || ((gPlayerOne->unk_0CA & 2) != 0)) || ((gPlayerOne->unk_0CA & 8) != 0)) { if (((sPlayerInputIdx >= 0x1000) || ((gPlayerOne->lakituProps & HELD_BY_LAKITU) != 0)) || ((gPlayerOne->lakituProps & LAKITU_SCENE) != 0)) {
gPostTimeTrialReplayCannotSave = 1; gPostTimeTrialReplayCannotSave = 1;
return; return;
} }
@ -519,7 +519,7 @@ void func_80005B18(void) {
sReplayGhostBufferSize = D_80162D86; sReplayGhostBufferSize = D_80162D86;
D_80162DDC = 1; D_80162DDC = 1;
} }
if ((gPlayerOne->type & 0x800) == 0x800) { if ((gPlayerOne->type & PLAYER_CINEMATIC_MODE) == PLAYER_CINEMATIC_MODE) {
func_80005AE8(gPlayerTwo); func_80005AE8(gPlayerTwo);
func_80005AE8(gPlayerThree); func_80005AE8(gPlayerThree);
} else { } else {

View File

@ -83,7 +83,7 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC
player->type = PLAYER_INACTIVE; player->type = PLAYER_INACTIVE;
player->kartPropulsionStrength = 0; player->kartPropulsionStrength = 0;
player->characterId = characterId; player->characterId = characterId;
player->unk_0B6 = 0; player->kartGraphics = 0;
player->kartFriction = gKartFrictionTable[player->characterId]; player->kartFriction = gKartFrictionTable[player->characterId];
player->boundingBoxSize = gKartBoundingBoxSizeTable[player->characterId]; player->boundingBoxSize = gKartBoundingBoxSizeTable[player->characterId];
player->kartGravity = gKartGravityTable[player->characterId]; player->kartGravity = gKartGravityTable[player->characterId];
@ -165,8 +165,8 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC
player->speed = 0.0f; player->speed = 0.0f;
player->unk_074 = 0.0f; player->unk_074 = 0.0f;
player->type = playerType; player->type = playerType;
player->unk_0CA = 0; player->lakituProps = 0;
player->waterInteractionFlags = WATER_NO_INTERACTION; player->oobProps = 0;
player->unk_10C = 0; player->unk_10C = 0;
player->unk_0E2 = 0; player->unk_0E2 = 0;
player->unk_0E8 = 0.0f; player->unk_0E8 = 0.0f;
@ -175,7 +175,7 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC
player->currentSpeed = 0.0f; player->currentSpeed = 0.0f;
player->unk_20C = 0.0f; player->unk_20C = 0.0f;
player->unk_DAC = 0.0f; player->unk_DAC = 0.0f;
player->unk_044 = 0; player->kartProps = 0;
player->unk_046 = 0; player->unk_046 = 0;
player->triggers = 0; player->triggers = 0;
player->alpha = ALPHA_MAX; player->alpha = ALPHA_MAX;
@ -206,9 +206,9 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC
player->unk_0C0 = 0; player->unk_0C0 = 0;
player->unk_0C2 = 0; player->unk_0C2 = 0;
player->unk_0C8 = 0; player->unk_0C8 = 0;
player->unk_0CA = 0; player->lakituProps = 0;
player->boostTimer = 0; player->boostTimer = 0;
player->waterInteractionFlags = WATER_NO_INTERACTION; player->oobProps = 0;
player->unk_0E0 = 0; player->unk_0E0 = 0;
player->unk_0E2 = 0; player->unk_0E2 = 0;
player->unk_10C = 0; player->unk_10C = 0;