mirror of https://github.com/n64decomp/mk64.git
parent
aa7e9146c4
commit
bbf45b44de
|
|
@ -26,8 +26,8 @@ glabel audio_init
|
|||
.L800BC128:
|
||||
/* BCD28 800BC128 19E0000C */ blez $t7, .L800BC15C
|
||||
/* BCD2C 800BC12C 3C04803B */ lui $a0, %hi(gGfxSPTaskOutputBufferSize)
|
||||
/* BCD30 800BC130 3C18803B */ lui $t8, %hi(D_803B71B0)
|
||||
/* BCD34 800BC134 270271B0 */ addiu $v0, $t8, %lo(D_803B71B0)
|
||||
/* BCD30 800BC130 3C18803B */ lui $t8, %hi(gAudioHeap)
|
||||
/* BCD34 800BC134 270271B0 */ addiu $v0, $t8, %lo(gAudioHeap)
|
||||
/* BCD38 800BC138 000FC8C0 */ sll $t9, $t7, 3
|
||||
/* BCD3C 800BC13C 03221821 */ addu $v1, $t9, $v0
|
||||
.L800BC140:
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ glabel audio_init
|
|||
.L800BC128:
|
||||
/* 0BCD28 800BC128 19E0000C */ blez $t7, .L800BC15C
|
||||
/* 0BCD2C 800BC12C 3C04803B */ lui $a0, %hi(gGfxSPTaskOutputBufferSize) # 0x803b
|
||||
/* 0BCD30 800BC130 3C18803B */ lui $t8, %hi(D_803B71B0) # 0x803b
|
||||
/* 0BCD34 800BC134 270271B0 */ addiu $v0, $t8, %lo(D_803B71B0) # 0x71b0
|
||||
/* 0BCD30 800BC130 3C18803B */ lui $t8, %hi(gAudioHeap) # 0x803b
|
||||
/* 0BCD34 800BC134 270271B0 */ addiu $v0, $t8, %lo(gAudioHeap) # 0x71b0
|
||||
/* 0BCD38 800BC138 000FC8C0 */ sll $t9, $t7, 3
|
||||
/* 0BCD3C 800BC13C 03221821 */ addu $v1, $t9, $v0
|
||||
.L800BC140:
|
||||
|
|
|
|||
|
|
@ -441,4 +441,4 @@ u16 D_803B7192; // unconfirmed
|
|||
u32 gAudioRandom;
|
||||
s32 gAudioErrorFlags;
|
||||
u32 D_803B71A0[4]; // unconfirmed
|
||||
ALIGNED8 u8 D_803B71B0[4]; // unconfirmed
|
||||
ALIGNED8 u8 gAudioHeap[4]; // unconfirmed
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ extern u16 D_803B7192; // unconfirmed
|
|||
extern u32 gAudioRandom;
|
||||
extern s32 gAudioErrorFlags;
|
||||
extern u32 D_803B71A0[]; // unconfirmed
|
||||
extern u8 D_803B71B0[]; // unconfirmed
|
||||
extern u8 gAudioHeap[]; // unconfirmed
|
||||
|
||||
extern struct ReverbSettingsEU sReverbSettings[];
|
||||
extern struct AudioSessionSettingsEU gAudioSessionPresets[];
|
||||
|
|
|
|||
|
|
@ -194,8 +194,8 @@ void func_800B90E0(struct SoundAllocPool *pool) {
|
|||
|
||||
// inspired by sound_init_main_pools in sm64
|
||||
void sound_init_main_pools(s32 arg0) {
|
||||
sound_alloc_pool_init(&gAudioInitPool, &D_803B71B0, arg0);
|
||||
sound_alloc_pool_init(&gAudioSessionPool, D_803B71B0 + arg0, gAudioHeapSize - arg0);
|
||||
sound_alloc_pool_init(&gAudioInitPool, &gAudioHeap, arg0);
|
||||
sound_alloc_pool_init(&gAudioSessionPool, gAudioHeap + arg0, gAudioHeapSize - arg0);
|
||||
}
|
||||
|
||||
// inspired by session_pools_init in sm64
|
||||
|
|
|
|||
|
|
@ -785,7 +785,7 @@ void audio_init(void) {
|
|||
gAudioLoadLock = 0;
|
||||
|
||||
for (i = 0; i < gAudioHeapSize / 8; i++) {
|
||||
((u64 *) D_803B71B0)[i] = 0;
|
||||
((u64 *) gAudioHeap)[i] = 0;
|
||||
}
|
||||
|
||||
#ifdef TARGET_N64
|
||||
|
|
|
|||
|
|
@ -63,10 +63,8 @@ Gfx *D_8018E75C;
|
|||
s32 gNumD_8018E768Entries;
|
||||
struct_8018E768_entry D_8018E768[D_8018E768_SIZE];
|
||||
s32 gCycleFlashMenu;
|
||||
s8 D_8018E7AC[4];
|
||||
s8 D_8018E7B0;
|
||||
u32 D_8018E7B8[4];
|
||||
u32 D_8018E7C8;
|
||||
s8 D_8018E7AC[5];
|
||||
u32 D_8018E7B8[5];
|
||||
u32 D_8018E7D0[4];
|
||||
s32 D_8018E7E0;
|
||||
struct UnkStruct_8018E7E8 D_8018E7E8[D_8018E7E8_SIZE];
|
||||
|
|
@ -2656,7 +2654,7 @@ void func_80094C60(void) {
|
|||
void func_80095574(void) {
|
||||
s32 var_v0;
|
||||
|
||||
if ((D_8018EE0C < 3) || (D_8018E7B0 != 0)) {
|
||||
if ((D_8018EE0C < 3) || (D_8018E7AC[4] != 0)) {
|
||||
func_800A8230();
|
||||
}
|
||||
if (gDebugMenuSelection >= 2) {
|
||||
|
|
@ -4438,7 +4436,7 @@ Gfx *func_8009BA74(Gfx *arg0, MkTexture *arg1, s32 column, s32 row) {
|
|||
}
|
||||
temp_v0_3 = (u8*)func_8009B8C4(temp_v0->textureData);
|
||||
if (temp_v0_3 != 0) {
|
||||
if (D_8018E7B0 != 4) {
|
||||
if (D_8018E7AC[4] != 4) {
|
||||
arg0 = func_80095E10(arg0, var_s4, 0x00000400, 0x00000400, 0, 0, temp_v0->width, temp_v0->height, temp_v0->dX + column, temp_v0->dY + row, temp_v0_3, temp_v0->width, temp_v0->height);
|
||||
} else {
|
||||
arg0 = func_800987D0(arg0, 0U, 0U, temp_v0->width, temp_v0->height, temp_v0->dX + column, temp_v0->dY + row, temp_v0_3, temp_v0->width, temp_v0->height);
|
||||
|
|
@ -5211,11 +5209,11 @@ void func_8009DAA8(void) {
|
|||
u32 var_t0;
|
||||
|
||||
D_8018E7D0[4]++;
|
||||
if (D_8018E7D0[4] >= (D_8018E7C8 + 1)) {
|
||||
if (D_8018E7D0[4] >= (D_8018E7B8[4] + 1)) {
|
||||
func_8009CE64(4);
|
||||
}
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
var_t0 = (D_8018E7D0[4] * 255) / D_8018E7C8;
|
||||
var_t0 = (D_8018E7D0[4] * 255) / D_8018E7B8[4];
|
||||
if ((s32) var_t0 >= 0x100) {
|
||||
var_t0 = 0x000000FF;
|
||||
}
|
||||
|
|
@ -5232,8 +5230,8 @@ void func_8009DB8C(void) {
|
|||
D_8018E7D0[4]++;
|
||||
// why?
|
||||
var_v1 = D_8018E7D0[4];
|
||||
if ((u32) var_v1 >= D_8018E7C8) {
|
||||
if ((u32) var_v1 == D_8018E7C8) {
|
||||
if ((u32) var_v1 >= D_8018E7B8[4]) {
|
||||
if ((u32) var_v1 == D_8018E7B8[4]) {
|
||||
for (var_s0 = 0; var_s0 < 0x4B0; var_s0++) {
|
||||
D_8018D9B8[var_s0] = 1;
|
||||
}
|
||||
|
|
@ -5243,8 +5241,8 @@ void func_8009DB8C(void) {
|
|||
} else {
|
||||
var_s0 = 0;
|
||||
var_s3 = 0;
|
||||
while (var_s3 < (0x4B0U / D_8018E7C8)) {
|
||||
if ((D_8018D9B8[var_s0] == 0) && (random_int((0x4B0U - D_8018E7D0[4]) / D_8018E7C8) == 0)) {
|
||||
while (var_s3 < (0x4B0U / D_8018E7B8[4])) {
|
||||
if ((D_8018D9B8[var_s0] == 0) && (random_int((0x4B0U - D_8018E7D0[4]) / D_8018E7B8[4]) == 0)) {
|
||||
var_s3 += 1;
|
||||
D_8018D9B8[var_s0] = 1;
|
||||
}
|
||||
|
|
@ -5266,7 +5264,7 @@ void func_8009DB8C(void) {
|
|||
}
|
||||
}
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
var_v1 = (D_8018E7D0[4] * 255) / D_8018E7C8;
|
||||
var_v1 = (D_8018E7D0[4] * 255) / D_8018E7B8[4];
|
||||
if (var_v1 >= 0x100) {
|
||||
var_v1 = 0x000000FF;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -437,9 +437,7 @@ extern s32 gNumD_8018E768Entries;
|
|||
extern struct_8018E768_entry D_8018E768[D_8018E768_SIZE];
|
||||
extern s32 gCycleFlashMenu;
|
||||
extern s8 D_8018E7AC[];
|
||||
extern s8 D_8018E7B0;
|
||||
extern u32 D_8018E7B8[];
|
||||
extern u32 D_8018E7C8;
|
||||
extern u32 D_8018E7D0[];
|
||||
extern s32 D_8018E7E0;
|
||||
extern struct UnkStruct_8018E7E8 D_8018E7E8[D_8018E7E8_SIZE];
|
||||
|
|
|
|||
|
|
@ -1693,35 +1693,35 @@ u8 *gKartPalettes[] = {
|
|||
* @param arg3 Second buffer index appears to always be 0-3.
|
||||
* @param arg4 First buffer index always zero.
|
||||
**/
|
||||
void load_kart_texture(Player *player, s8 playerId, s8 arg2, s8 arg3, s8 arg4) {
|
||||
void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s8 index) {
|
||||
s32 temp = player->effects;
|
||||
if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) {
|
||||
if (player->animFrameSelector[arg2] != 0) {
|
||||
osInvalDCache(&D_802DFB80[arg4][arg3][playerId], D_800DDEB0[player->characterId]);
|
||||
if (player->animFrameSelector[screenId] != 0) {
|
||||
osInvalDCache(&D_802DFB80[index][screenId2][playerId], D_800DDEB0[player->characterId]);
|
||||
|
||||
osPiStartDma(
|
||||
&gDmaIoMesg,
|
||||
OS_MESG_PRI_NORMAL, OS_READ,
|
||||
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
|
||||
gKartTextureTable1[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]]
|
||||
gKartTextureTable1[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]]
|
||||
)],
|
||||
&D_802DFB80[arg4][arg3][playerId],
|
||||
&D_802DFB80[index][screenId2][playerId],
|
||||
D_800DDEB0[player->characterId],
|
||||
&gDmaMesgQueue
|
||||
);
|
||||
|
||||
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
} else {
|
||||
osInvalDCache(&D_802DFB80[arg4][arg3][playerId], D_800DDEB0[player->characterId]);
|
||||
osInvalDCache(&D_802DFB80[index][screenId2][playerId], D_800DDEB0[player->characterId]);
|
||||
|
||||
osPiStartDma(
|
||||
&gDmaIoMesg,
|
||||
OS_MESG_PRI_NORMAL,
|
||||
OS_READ,
|
||||
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
|
||||
gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]]
|
||||
gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]]
|
||||
)],
|
||||
&D_802DFB80[arg4][arg3][playerId],
|
||||
&D_802DFB80[index][screenId2][playerId],
|
||||
D_800DDEB0[player->characterId],
|
||||
&gDmaMesgQueue
|
||||
);
|
||||
|
|
@ -1729,7 +1729,7 @@ void load_kart_texture(Player *player, s8 playerId, s8 arg2, s8 arg3, s8 arg4) {
|
|||
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
}
|
||||
} else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || ((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000)) {
|
||||
osInvalDCache(&D_802DFB80[arg4][arg3][playerId], 0x780U);
|
||||
osInvalDCache(&D_802DFB80[index][screenId2][playerId], 0x780U);
|
||||
// player->unk_0A8 >> 8 converts an 8.8 fixed-point animation frame to a whole number.
|
||||
osPiStartDma(
|
||||
&gDmaIoMesg,
|
||||
|
|
@ -1738,23 +1738,23 @@ void load_kart_texture(Player *player, s8 playerId, s8 arg2, s8 arg3, s8 arg4) {
|
|||
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
|
||||
gKartTextureTumbles[player->characterId][player->unk_0A8 >> 8]
|
||||
)],
|
||||
&D_802DFB80[arg4][arg3][playerId],
|
||||
&D_802DFB80[index][screenId2][playerId],
|
||||
0x900,
|
||||
&gDmaMesgQueue
|
||||
);
|
||||
|
||||
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
} else {
|
||||
osInvalDCache(&D_802DFB80[arg4][arg3][playerId], D_800DDEB0[player->characterId]);
|
||||
osInvalDCache(&D_802DFB80[index][screenId2][playerId], D_800DDEB0[player->characterId]);
|
||||
|
||||
osPiStartDma(
|
||||
&gDmaIoMesg,
|
||||
OS_MESG_PRI_NORMAL,
|
||||
OS_READ,
|
||||
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
|
||||
gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]]
|
||||
gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]]
|
||||
)],
|
||||
&D_802DFB80[arg4][arg3][playerId],
|
||||
&D_802DFB80[index][screenId2][playerId],
|
||||
D_800DDEB0[player->characterId],
|
||||
&gDmaMesgQueue
|
||||
);
|
||||
|
|
@ -1830,11 +1830,11 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
|
|||
}
|
||||
}
|
||||
|
||||
void load_kart_palette(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
void load_kart_palette(Player *player, s8 playerId, s8 screenId, s8 index) {
|
||||
#ifdef AVOID_UB
|
||||
struct_D_802F1F80 *temp_s0 = &D_802F1F80[arg3][arg2][playerId];
|
||||
struct_D_802F1F80 *temp_s0 = &D_802F1F80[index][screenId][playerId];
|
||||
#else
|
||||
struct_D_802F1F80 *temp_s0 = (struct_D_802F1F80 *) &D_802F1F80[arg3][arg2][playerId * 0x100];
|
||||
struct_D_802F1F80 *temp_s0 = (struct_D_802F1F80 *) &D_802F1F80[index][screenId][playerId * 0x100];
|
||||
#endif
|
||||
switch(gActiveScreenMode) {
|
||||
case SCREEN_MODE_1P:
|
||||
|
|
|
|||
|
|
@ -2003,7 +2003,7 @@ void func_800B44BC(void) {
|
|||
// Likely checks that the user is actually in the menus and not racing.
|
||||
bool func_800B4520(void) {
|
||||
|
||||
if ((D_8018E7B0 == 2) || (D_8018E7B0 == 3) || (D_8018E7B0 == 4) || (D_8018E7B0 == 7)) {
|
||||
if ((D_8018E7AC[4] == 2) || (D_8018E7AC[4] == 3) || (D_8018E7AC[4] == 4) || (D_8018E7AC[4] == 7)) {
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
|
|
|||
|
|
@ -360,24 +360,24 @@ s32 get_player_index_for_player(Player *player) {
|
|||
return index;
|
||||
}
|
||||
|
||||
void func_80027DA8(Player *arg0, s8 arg1) {
|
||||
void func_80027DA8(Player *player, s8 playerId) {
|
||||
if (D_8015F890 != 1) {
|
||||
if ((arg0->type & 0x10) != 0x10) {
|
||||
if (((D_8018D168 == 1) && ((arg0->type & 0x4000) == 0x4000)) && ((arg0->type & 0x100) != 0x100)) {
|
||||
func_800C94A4(arg1);
|
||||
arg0->type |= 0x10;
|
||||
} else if ((arg0->type & 0x2000) == 0) {
|
||||
func_800C9A88(arg1);
|
||||
arg0->type |= 0x10;
|
||||
if ((player->type & 0x10) != 0x10) {
|
||||
if (((D_8018D168 == 1) && ((player->type & 0x4000) == 0x4000)) && ((player->type & 0x100) != 0x100)) {
|
||||
func_800C94A4(playerId);
|
||||
player->type |= 0x10;
|
||||
} else if ((player->type & 0x2000) == 0) {
|
||||
func_800C9A88(playerId);
|
||||
player->type |= 0x10;
|
||||
}
|
||||
}
|
||||
} else if ((arg0->type & 0x10) != 0x10) {
|
||||
if ((D_8018D168 == 1) && (arg0 == gPlayerOne)) {
|
||||
func_800C94A4(arg1);
|
||||
arg0->type |= 0x10;
|
||||
} else if ((arg0->type & 0x2000) == 0) {
|
||||
func_800C9A88(arg1);
|
||||
arg0->type |= 0x10;
|
||||
} else if ((player->type & 0x10) != 0x10) {
|
||||
if ((D_8018D168 == 1) && (player == gPlayerOne)) {
|
||||
func_800C94A4(playerId);
|
||||
player->type |= 0x10;
|
||||
} else if ((player->type & 0x2000) == 0) {
|
||||
func_800C9A88(playerId);
|
||||
player->type |= 0x10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -618,7 +618,7 @@ void func_80027EDC(Player *player, s8 playerId) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_80028864(Player *player, Camera *camera, s8 arg2, s8 arg3) {
|
||||
void func_80028864(Player *player, Camera *camera, s8 playerId, s8 screenId) {
|
||||
u16 sp1E;
|
||||
|
||||
if (!(player->type & PLAYER_START_SEQUENCE)) {
|
||||
|
|
@ -648,7 +648,7 @@ void func_80028864(Player *player, Camera *camera, s8 arg2, s8 arg3) {
|
|||
((player->unk_0CA & 2) != 0) ||
|
||||
(player->unk_0CA & 8) ||
|
||||
//! @todo make a proper match
|
||||
((*(D_801633F8 + (arg2))) == ((s16) 1U))) {
|
||||
((*(D_801633F8 + (playerId))) == ((s16) 1U))) {
|
||||
player->effects &= ~0x1000;
|
||||
if (((player->effects & 0x80) == 0x80) ||
|
||||
((player->effects & 0x40) == 0x40) ||
|
||||
|
|
@ -660,18 +660,18 @@ void func_80028864(Player *player, Camera *camera, s8 arg2, s8 arg3) {
|
|||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
|
||||
((player->effects & 0x20000) == 0x20000) ||
|
||||
(player->unk_044 & 0x800)) {
|
||||
func_8002E594(player, camera, arg3, arg2);
|
||||
func_8002E594(player, camera, screenId, playerId);
|
||||
} else {
|
||||
func_8002D268(player, camera, arg3, arg2);
|
||||
func_8002D268(player, camera, screenId, playerId);
|
||||
}
|
||||
} else {
|
||||
control_kart_ai_movement(player, camera, arg3, arg2);
|
||||
control_kart_ai_movement(player, camera, screenId, playerId);
|
||||
}
|
||||
} else if ((player->type & PLAYER_STAGING) == PLAYER_STAGING) {
|
||||
func_8002D028(player, arg2);
|
||||
func_8002F730(player, camera, arg3, arg2);
|
||||
func_8002D028(player, playerId);
|
||||
func_8002F730(player, camera, screenId, playerId);
|
||||
} else if (player->type & 0x80) {
|
||||
func_8002D268(player, camera, arg3, arg2);
|
||||
func_8002D268(player, camera, screenId, playerId);
|
||||
} else {
|
||||
if ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN) {
|
||||
player->currentSpeed = 50.0f;
|
||||
|
|
@ -680,7 +680,7 @@ void func_80028864(Player *player, Camera *camera, s8 arg2, s8 arg3) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_80028C44(Player *player, Camera *camera, s8 arg2, s8 arg3) {
|
||||
void func_80028C44(Player *player, Camera *camera, s8 playerId, s8 screenId) {
|
||||
if ((player->type & PLAYER_START_SEQUENCE) == 0) {
|
||||
player->effects &= ~0x1000;
|
||||
if (((player->effects & 0x80) == 0x80) ||
|
||||
|
|
@ -693,16 +693,16 @@ void func_80028C44(Player *player, Camera *camera, s8 arg2, s8 arg3) {
|
|||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
|
||||
((player->effects & 0x20000) == 0x20000) ||
|
||||
((player->unk_044 & 0x800) != 0)) {
|
||||
func_8002E594(player, camera, arg3, arg2);
|
||||
func_8002E594(player, camera, screenId, playerId);
|
||||
} else {
|
||||
func_8002D268(player, camera, arg3, arg2);
|
||||
func_8002D268(player, camera, screenId, playerId);
|
||||
}
|
||||
} else {
|
||||
player->effects &= -9;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80028D3C(Player *player, Camera *camera, s8 arg2, s8 arg3) {
|
||||
void func_80028D3C(Player *player, Camera *camera, s8 playerId, s8 screenId) {
|
||||
if ((((player->type & PLAYER_START_SEQUENCE) == 0)
|
||||
&& (D_800DC510 != 5))
|
||||
|| (player->unk_0CA & 2) != 0
|
||||
|
|
@ -720,37 +720,37 @@ void func_80028D3C(Player *player, Camera *camera, s8 arg2, s8 arg3) {
|
|||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
|
||||
((player->effects & 0x20000) == 0x20000) ||
|
||||
((player->unk_044 & 0x800) != 0)) {
|
||||
func_8002E594(player, camera, arg3, arg2);
|
||||
func_8002E594(player, camera, screenId, playerId);
|
||||
} else {
|
||||
func_8002D268(player, camera, arg3, arg2);
|
||||
func_8002D268(player, camera, screenId, playerId);
|
||||
}
|
||||
} else {
|
||||
player->effects = player->effects & ~8;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80028E70(Player *player, Camera *camera, s8 arg2, s8 arg3) {
|
||||
void func_80028E70(Player *player, Camera *camera, s8 playerId, s8 screenId) {
|
||||
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
|
||||
switch (gGamestate) {
|
||||
case ENDING:
|
||||
if (!(player->type & PLAYER_START_SEQUENCE)) {
|
||||
func_80038C6C(player, camera, arg3, arg2);
|
||||
func_80038C6C(player, camera, screenId, playerId);
|
||||
} else {
|
||||
player->effects &= ~8;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
func_80027DA8(player, arg2);
|
||||
func_80027DA8(player, playerId);
|
||||
switch (gModeSelection) {
|
||||
case TIME_TRIALS:
|
||||
case VERSUS:
|
||||
func_80028C44(player, camera, arg2, arg3);
|
||||
func_80028C44(player, camera, playerId, screenId);
|
||||
break;
|
||||
case BATTLE:
|
||||
func_80028D3C(player, camera, arg2, arg3);
|
||||
func_80028D3C(player, camera, playerId, screenId);
|
||||
break;
|
||||
default:
|
||||
func_80028864(player, camera, arg2, arg3);
|
||||
func_80028864(player, camera, playerId, screenId);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
|
@ -810,37 +810,37 @@ void func_800291F8(void) {
|
|||
|
||||
}
|
||||
|
||||
void func_80029200(Player *player, s8 arg1) {
|
||||
void func_80029200(Player *player, s8 screenId) {
|
||||
if ((s32) player->slopeAccel < -0x71B) {
|
||||
player->animGroupSelector[arg1] = 0;
|
||||
player->animGroupSelector[screenId] = 0;
|
||||
}
|
||||
if (((s32) player->slopeAccel < -0x4F9) && ((s32) player->slopeAccel >= -0x71B)) {
|
||||
player->animGroupSelector[arg1] = 1;
|
||||
player->animGroupSelector[screenId] = 1;
|
||||
}
|
||||
if ((player->slopeAccel < -0x221) && (player->slopeAccel >= -0x4F9)) {
|
||||
player->animGroupSelector[arg1] = 2;
|
||||
player->animGroupSelector[screenId] = 2;
|
||||
}
|
||||
if ((player->slopeAccel < -0x16B) && (player->slopeAccel >= -0x221)) {
|
||||
player->animGroupSelector[arg1] = 3;
|
||||
player->animGroupSelector[screenId] = 3;
|
||||
}
|
||||
if ((player->slopeAccel < 0x16C) && (player->slopeAccel >= -0x16B)) {
|
||||
player->animGroupSelector[arg1] = 4;
|
||||
player->animGroupSelector[screenId] = 4;
|
||||
}
|
||||
if ((player->slopeAccel >= 0x16C) && (player->slopeAccel < 0x222)) {
|
||||
player->animGroupSelector[arg1] = 5;
|
||||
player->animGroupSelector[screenId] = 5;
|
||||
}
|
||||
if ((player->slopeAccel >= 0x222) && (player->slopeAccel < 0x4FA)) {
|
||||
player->animGroupSelector[arg1] = 6;
|
||||
player->animGroupSelector[screenId] = 6;
|
||||
}
|
||||
if ((player->slopeAccel >= 0x4FA) && (player->slopeAccel < 0x71C)) {
|
||||
player->animGroupSelector[arg1] = 7;
|
||||
player->animGroupSelector[screenId] = 7;
|
||||
}
|
||||
if (player->slopeAccel >= 0x71C) {
|
||||
player->animGroupSelector[arg1] = 8;
|
||||
player->animGroupSelector[screenId] = 8;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) {
|
||||
void func_8002934C(Player *player, Camera *camera, s8 screenId, s8 playerId) {
|
||||
UNUSED s32 pad[2];
|
||||
f32 temp_f0;
|
||||
f32 temp_f2;
|
||||
|
|
@ -852,45 +852,45 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) {
|
|||
s32 var_t0;
|
||||
u16 var_a0;
|
||||
|
||||
player->unk_048[arg2] = atan2s(player->pos[0] - camera->pos[0], player->pos[2] - camera->pos[2]);
|
||||
player->animFrameSelector[arg2] = (u16) ( (((player->unk_048[arg2]) + player->rotation[1] + player->unk_0C0))) / 128;
|
||||
player->unk_048[screenId] = atan2s(player->pos[0] - camera->pos[0], player->pos[2] - camera->pos[2]);
|
||||
player->animFrameSelector[screenId] = (u16) ( (((player->unk_048[screenId]) + player->rotation[1] + player->unk_0C0))) / 128;
|
||||
|
||||
temp_f2 = (gCharacterSize[player->characterId] * 18.0f) * player->size;
|
||||
temp_f0 = player->unk_230 - player->unk_23C;
|
||||
if ((player->effects & 8) != 8) {
|
||||
if ((player->effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) {
|
||||
player->unk_0CC[arg2] = (s16) ((s32) (((f64) func_802B7C40(temp_f0 / temp_f2)) * 1.6));
|
||||
player->unk_0CC[screenId] = (s16) ((s32) (((f64) func_802B7C40(temp_f0 / temp_f2)) * 1.6));
|
||||
} else {
|
||||
player->unk_0CC[arg2] = func_802B7C40(temp_f0 / temp_f2) * 2;
|
||||
player->unk_0CC[screenId] = func_802B7C40(temp_f0 / temp_f2) * 2;
|
||||
}
|
||||
}
|
||||
if ((player->effects & HIT_EFFECT) == HIT_EFFECT) {
|
||||
player->unk_0CC[arg2] = (s16) ((s32) player->unk_D9C);
|
||||
player->unk_0CC[screenId] = (s16) ((s32) player->unk_D9C);
|
||||
}
|
||||
if ((player->effects & 8) != 8) {
|
||||
temp_f0 = player->unk_1F8 - player->unk_1FC;
|
||||
player->unk_0D4[arg2] = (((func_802B7C40(temp_f0 / temp_f2)) * 0.9));
|
||||
player->unk_0D4[screenId] = (((func_802B7C40(temp_f0 / temp_f2)) * 0.9));
|
||||
}
|
||||
else {
|
||||
if (((player->animFrameSelector[arg2]) >= 0) && ((player->animFrameSelector[arg2]) < 0x101)) {
|
||||
if (((player->animFrameSelector[screenId]) >= 0) && ((player->animFrameSelector[screenId]) < 0x101)) {
|
||||
var_f0 = player->copy_rotation_y - player->pos[1];
|
||||
} else {
|
||||
var_f0 = player->pos[1] - player->copy_rotation_y;
|
||||
}
|
||||
player->unk_0D4[arg2] = (s16) ((s32) (((f64) func_802B7C40(var_f0 / temp_f2)) * 0.5));
|
||||
player->unk_0D4[screenId] = (s16) ((s32) (((f64) func_802B7C40(var_f0 / temp_f2)) * 0.5));
|
||||
}
|
||||
if ((player->effects & HIT_EFFECT) == HIT_EFFECT) {
|
||||
player->unk_0D4[arg2] = (s16) ((s32) player->unk_D9C);
|
||||
player->unk_0D4[screenId] = (s16) ((s32) player->unk_D9C);
|
||||
}
|
||||
func_80029200(player, arg2);
|
||||
temp_a0 = ((player->unk_048[arg2] + player->rotation[1]) + player->unk_0C0);
|
||||
temp_a0 = (s16) player->unk_0D4[arg2] * sins((u16) temp_a0) + player->unk_0CC[arg2] * coss((u16) temp_a0);
|
||||
move_s16_towards(&player->unk_050[arg2], temp_a0, 0.5f);
|
||||
var_a0 = player->animFrameSelector[arg2];
|
||||
player->unk_002 = player->unk_002 & (~(4 << (arg2 * 4)));
|
||||
func_80029200(player, screenId);
|
||||
temp_a0 = ((player->unk_048[screenId] + player->rotation[1]) + player->unk_0C0);
|
||||
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);
|
||||
var_a0 = player->animFrameSelector[screenId];
|
||||
player->unk_002 = player->unk_002 & (~(4 << (screenId * 4)));
|
||||
if (var_a0 >= 0x101) {
|
||||
var_a0 = 0x201 - var_a0;
|
||||
player->unk_002 |= (4 << (arg2 * 4));
|
||||
player->unk_002 |= (4 << (screenId * 4));
|
||||
}
|
||||
if (((player->effects & 0x80) != 0x80)
|
||||
&& ((player->effects & 0x40) != 0x40)
|
||||
|
|
@ -913,13 +913,13 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) {
|
|||
if (((player->effects & 0x80000) == 0x80000)
|
||||
|| ((player->effects & 0x800000) == 0x800000)
|
||||
|| (player->unk_044 & 0x800)) {
|
||||
player->unk_050[arg2] = 0;
|
||||
player->unk_050[screenId] = 0;
|
||||
}
|
||||
if (((player->effects & 8) == 8)
|
||||
&& ((player->unk_0CA & 2) == 2)) {
|
||||
player->unk_050[arg2] = 0;
|
||||
player->unk_050[screenId] = 0;
|
||||
}
|
||||
var_a0 = (player->unk_048[arg2] + 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)
|
||||
|| ((player->effects & 0x80000) == 0x80000)
|
||||
|
|
@ -941,9 +941,9 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) {
|
|||
}
|
||||
var_a0 /= var_a1;
|
||||
}
|
||||
player->animFrameSelector[arg2] = var_a0 + var_t0;
|
||||
if ((player->animFrameSelector[arg2]) >= 0x23) {
|
||||
player->animFrameSelector[arg2] = 0x22;
|
||||
player->animFrameSelector[screenId] = var_a0 + var_t0;
|
||||
if ((player->animFrameSelector[screenId]) >= 0x23) {
|
||||
player->animFrameSelector[screenId] = 0x22;
|
||||
}
|
||||
if ((player->effects & 0x80)
|
||||
|| (player->effects & 0x40)
|
||||
|
|
@ -952,18 +952,18 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) {
|
|||
|| (player->effects & 0x20000)
|
||||
|| (player->unk_044 & 0x800)) {
|
||||
|
||||
if ((player->animFrameSelector[arg2]) >= 0x14) {
|
||||
player->animFrameSelector[arg2] = 0;
|
||||
if ((player->animFrameSelector[screenId]) >= 0x14) {
|
||||
player->animFrameSelector[screenId] = 0;
|
||||
}
|
||||
}
|
||||
if ((player->animGroupSelector[arg2]) >= 9) {
|
||||
player->animGroupSelector[arg2] = 4;
|
||||
if ((player->animGroupSelector[screenId]) >= 9) {
|
||||
player->animGroupSelector[screenId] = 4;
|
||||
}
|
||||
if (((player->effects & 0x80000) == 0x80000)
|
||||
|| ((player->effects & 0x800000) == 0x800000)
|
||||
|| (player->unk_044 & 0x800)) {
|
||||
|
||||
player->animGroupSelector[arg2] = 4;
|
||||
player->animGroupSelector[screenId] = 4;
|
||||
}
|
||||
if (((player->effects & 0x400) == 0x400)
|
||||
|| ((player->effects & 0x01000000) == 0x01000000)
|
||||
|
|
@ -972,27 +972,27 @@ void func_8002934C(Player *player, Camera *camera, s8 arg2, s8 playerId) {
|
|||
|| (player->effects & 0x80)
|
||||
|| (player->effects & 0x40)) {
|
||||
|
||||
player->unk_002 |= 1 << (arg2 * 4);
|
||||
D_80165190[arg2][playerId] = 1;
|
||||
player->unk_002 |= 1 << (screenId * 4);
|
||||
D_80165190[screenId][playerId] = 1;
|
||||
|
||||
if ((player->effects & 0x80) || (player->effects & 0x40)) {
|
||||
if ((player->animFrameSelector[arg2] == D_801650D0[arg2][playerId])
|
||||
&& (player->animGroupSelector[arg2] == D_80165110[arg2][playerId])) {
|
||||
player->unk_002 &= ~(1 << (arg2 * 4));
|
||||
D_80165190[arg2][playerId] = 1;
|
||||
if ((player->animFrameSelector[screenId] == D_801650D0[screenId][playerId])
|
||||
&& (player->animGroupSelector[screenId] == D_80165110[screenId][playerId])) {
|
||||
player->unk_002 &= ~(1 << (screenId * 4));
|
||||
D_80165190[screenId][playerId] = 1;
|
||||
}
|
||||
} else if (((player->unk_0A8) >> 8) == D_80165150[arg2][playerId] >> 8) {
|
||||
player->unk_002 &= ~(1 << (arg2 * 4));
|
||||
} else if (((player->unk_0A8) >> 8) == D_80165150[screenId][playerId] >> 8) {
|
||||
player->unk_002 &= ~(1 << (screenId * 4));
|
||||
}
|
||||
} else {
|
||||
player->unk_002 |= 1 << (arg2 * 4);
|
||||
if (((player->animFrameSelector[arg2] == D_801650D0[arg2][playerId]) && (player->animGroupSelector[arg2] == D_80165110[arg2][playerId])) && ((D_80165190[arg2][playerId]) == 0)) {
|
||||
player->unk_002 &= ~(1 << (arg2 * 4));
|
||||
player->unk_002 |= 1 << (screenId * 4);
|
||||
if (((player->animFrameSelector[screenId] == D_801650D0[screenId][playerId]) && (player->animGroupSelector[screenId] == D_80165110[screenId][playerId])) && ((D_80165190[screenId][playerId]) == 0)) {
|
||||
player->unk_002 &= ~(1 << (screenId * 4));
|
||||
}
|
||||
}
|
||||
temp_a0_2 = D_801650D0[arg2][playerId] - player->animFrameSelector[arg2];
|
||||
temp_a0_2 = D_801650D0[screenId][playerId] - player->animFrameSelector[screenId];
|
||||
if ((temp_a0_2 >= 0x14) || (temp_a0_2 < (-0x13))) {
|
||||
player->unk_002 |= 1 << (arg2 * 4);
|
||||
player->unk_002 |= 1 << (screenId * 4);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1516,7 +1516,7 @@ void func_8002B218(Player *player) {
|
|||
}
|
||||
}
|
||||
|
||||
void apply_sound_effect(Player *player, s8 playerId, UNUSED s8 arg2) {
|
||||
void apply_sound_effect(Player *player, s8 playerId, UNUSED s8 screenId) {
|
||||
if ((player->soundEffects & 2) == 2) {
|
||||
apply_hit_by_item_sound_effect(player, playerId);
|
||||
}
|
||||
|
|
@ -1573,7 +1573,7 @@ void apply_sound_effect(Player *player, s8 playerId, UNUSED s8 arg2) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_8002B5C0(Player *player, UNUSED s8 playerId, UNUSED s8 arg2) {
|
||||
void func_8002B5C0(Player *player, UNUSED s8 playerId, UNUSED s8 screenId) {
|
||||
if (((player->unk_0CA & 8) != 0) || ((player->unk_0CA & 2) != 0)) {
|
||||
player->soundEffects &= 0xFE1D0478;
|
||||
}
|
||||
|
|
@ -1627,12 +1627,12 @@ void func_8002B5C0(Player *player, UNUSED s8 playerId, UNUSED s8 arg2) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_8002B830(Player *player, s8 playerId, s8 arg2) {
|
||||
void func_8002B830(Player *player, s8 playerId, s8 screenId) {
|
||||
if (player->soundEffects != 0) {
|
||||
func_8002B5C0(player, playerId, arg2);
|
||||
func_8002B5C0(player, playerId, screenId);
|
||||
}
|
||||
if (player->soundEffects != 0) {
|
||||
apply_sound_effect(player, playerId, arg2);
|
||||
apply_sound_effect(player, playerId, screenId);
|
||||
}
|
||||
if ((player->unk_044 & 0x400) != 0) {
|
||||
func_800911B4(player, playerId);
|
||||
|
|
@ -2199,7 +2199,7 @@ void func_8002D028(Player *player, s8 arg1) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
|
||||
void func_8002D268(Player *player, UNUSED Camera *camera, s8 screenId, s8 playerId)
|
||||
{
|
||||
Vec3f sp184 = {0.0, 0.0, 1.0};
|
||||
Vec3f sp178 = {0.0, 0.0, 0.0};
|
||||
|
|
@ -2234,11 +2234,11 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
|
|||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||
func_8002A79C(player, playerId);
|
||||
}
|
||||
func_8002B830(player, playerId, arg2);
|
||||
func_8002B830(player, playerId, screenId);
|
||||
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
|
||||
func_8002BF4C(player, playerId);
|
||||
}
|
||||
apply_effect(player, playerId, arg2);
|
||||
apply_effect(player, playerId, screenId);
|
||||
if (((player->effects & 0x20000000) == 0x20000000) && (player->unk_228 >= 0x64)) {
|
||||
sp7C = 2;
|
||||
}
|
||||
|
|
@ -2288,7 +2288,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
|
|||
mtxf_translate_vec3f_mat3(sp178, player->orientationMatrix);
|
||||
spB4 += sp178[0];
|
||||
spAC += sp178[2];
|
||||
func_8002C7E4(player, playerId, arg2);
|
||||
func_8002C7E4(player, playerId, screenId);
|
||||
sp184[2] = func_80030150(player, playerId);
|
||||
mtxf_translate_vec3f_mat3(sp184, player->orientationMatrix);
|
||||
sp98[0] = player->velocity[0];
|
||||
|
|
@ -2461,7 +2461,7 @@ void func_8002D268(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
|
|||
}
|
||||
player->pos[1] = spF8;
|
||||
if ((player->type & PLAYER_HUMAN) && (!(player->type & PLAYER_KART_AI))) {
|
||||
func_8002BB9C(player, &spFC, &spF4, arg2, playerId, sp98);
|
||||
func_8002BB9C(player, &spFC, &spF4, screenId, playerId, sp98);
|
||||
}
|
||||
player->unk_064[0] = sp178[0];
|
||||
player->unk_064[2] = sp178[2];
|
||||
|
|
@ -2509,7 +2509,7 @@ void func_8002E4C4(Player *player) {
|
|||
player->velocity[1] = 0.0f;
|
||||
}
|
||||
|
||||
void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId) {
|
||||
void func_8002E594(Player *player, UNUSED Camera *camera, s8 screenId, s8 playerId) {
|
||||
Vec3f spEC = {0.0f, 0.0f, 1.0f};
|
||||
Vec3f spE0 = {0.0f, 0.0f, 0.0f};
|
||||
Vec3f spD4 = {0.0f, 0.0f, 0.0f};
|
||||
|
|
@ -2531,7 +2531,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
|
|||
Vec3f sp54;
|
||||
Vec3f sp48;
|
||||
s16 sp46;
|
||||
func_8002B830(player, playerId, arg2);
|
||||
func_8002B830(player, playerId, screenId);
|
||||
if ((((((((player->effects & 0x80) == 0x80)
|
||||
|| ((player->effects & 0x40) == 0x40))
|
||||
|| ((player->effects & 0x4000) == 0x4000))
|
||||
|
|
@ -2543,7 +2543,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
|
|||
} else {
|
||||
sp46 = 0;
|
||||
}
|
||||
apply_effect(player, playerId, arg2);
|
||||
apply_effect(player, playerId, screenId);
|
||||
func_8002AB70(player);
|
||||
func_8002FCA8(player, playerId);
|
||||
if ((((player->effects & 0x80) == 0x80)
|
||||
|
|
@ -2557,7 +2557,7 @@ void func_8002E594(Player *player, UNUSED Camera *camera, s8 arg2, s8 playerId)
|
|||
sp7C = -1 * player->kartGravity;
|
||||
sp78 = -1 * player->unk_064[2];
|
||||
}
|
||||
func_8002C7E4(player, playerId, arg2);
|
||||
func_8002C7E4(player, playerId, screenId);
|
||||
if (sp46 == 1) {
|
||||
calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060, (s16) ((s32) player->rotation[1]));
|
||||
calculate_orientation_matrix(player->unk_150, player->unk_058, player->unk_05C, player->unk_060, (s16) ((s32) player->unk_0AE));
|
||||
|
|
@ -2827,7 +2827,7 @@ void control_kart_ai_movement(Player *player, UNUSED Camera *camera, s8 arg2, s8
|
|||
}
|
||||
}
|
||||
|
||||
void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 arg2, s8 arg3) {
|
||||
void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 screenId, s8 playerId) {
|
||||
Vec3f spF4 = {0.0f, 0.0f, 1.0f};
|
||||
Vec3f spE8 = {0.0f, 0.0f, 0.0f};
|
||||
UNUSED Vec3f spDC = {0.0f, 0.0f, 0.0f};
|
||||
|
|
@ -2853,7 +2853,7 @@ void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 arg2, s8 arg
|
|||
func_80037BB4(player, spD0);
|
||||
sp84 = player->unk_064[0] * 0;
|
||||
sp7C = player->unk_064[2] * 0;
|
||||
spF4[2] = func_80030150(player, arg3);
|
||||
spF4[2] = func_80030150(player, playerId);
|
||||
|
||||
mtxf_translate_vec3f_mat3(spF4, player->orientationMatrix);
|
||||
|
||||
|
|
@ -2898,7 +2898,7 @@ void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 arg2, s8 arg
|
|||
} else {
|
||||
func_8002A194(player, spCC, spC8, spC4);
|
||||
}
|
||||
func_8002AE38(player, arg3, spC0, spB8, spCC, spC4);
|
||||
func_8002AE38(player, playerId, spC0, spB8, spCC, spC4);
|
||||
sqrt = (sp68[0] * sp68[0]) + (sp68[1] * sp68[1]) + (sp68[2] * sp68[2]);
|
||||
player->unk_22C = player->unk_094;
|
||||
player->unk_094 = sqrtf(sqrt);
|
||||
|
|
@ -2918,9 +2918,9 @@ void func_8002F730(Player *player, UNUSED Camera *camera, UNUSED s8 arg2, s8 arg
|
|||
player->velocity[1] = sp68[1];
|
||||
player->velocity[2] = sp68[2];
|
||||
|
||||
D_80165070[arg3][0] = sp68[0];
|
||||
D_80165070[arg3][1] = sp68[1];
|
||||
D_80165070[arg3][2] = sp68[2];
|
||||
D_80165070[playerId][0] = sp68[0];
|
||||
D_80165070[playerId][1] = sp68[1];
|
||||
D_80165070[playerId][2] = sp68[2];
|
||||
|
||||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||
if (gKartTopSpeedTable[player->characterId] < player->unk_094) {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ void func_800431B0(Vec3f pos, Vec3su orientation, f32 scale, Vtx *vtx) {
|
|||
|
||||
void func_80043220(Vec3f pos, Vec3su orientation, f32 scale, Gfx *gfx) {
|
||||
rsp_set_matrix_transformation(pos, orientation, scale);
|
||||
gSPDisplayList(gDisplayListHead++, &D_0D0077A0);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0077A0);
|
||||
gSPDisplayList(gDisplayListHead++, gfx);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ u16 gPlayerBlueEffect[8];
|
|||
u16 gPlayerCyanEffect[8];
|
||||
u16 gPlayerMagentaEffect[8];
|
||||
u16 gPlayerYellowEffect[8];
|
||||
//if it's also a color effect like before
|
||||
// Likely an unused colour effect.
|
||||
UNUSED u16 gPlayerWhiteEffect[8];
|
||||
s32 D_80164B80[296];
|
||||
s16 D_80165020[40];
|
||||
|
|
@ -72,7 +72,7 @@ void func_8001F980(s32 *arg0, s32 *arg1) {
|
|||
*arg1 = 0;
|
||||
}
|
||||
|
||||
void func_8001F9E4(Player *player, Camera *camera, s8 arg2) {
|
||||
void func_8001F9E4(Player *player, Camera *camera, s8 screenId) {
|
||||
UNUSED s32 pad;
|
||||
s32 sp30;
|
||||
s32 sp2C;
|
||||
|
|
@ -81,14 +81,14 @@ void func_8001F9E4(Player *player, Camera *camera, s8 arg2) {
|
|||
get_player_index_for_player(player);
|
||||
func_8001F980(&sp30, &sp2C);
|
||||
|
||||
player->unk_002 &= ~(2 << (arg2 * 4));
|
||||
player->unk_002 &= ~(8 << (arg2 * 4));
|
||||
player->unk_002 &= ~(2 << (screenId * 4));
|
||||
player->unk_002 &= ~(8 << (screenId * 4));
|
||||
|
||||
if (check_player_camera_collision(player, camera, (f32) (D_80165578 + sp30), (f32) (D_8016557A + sp2C)) == 1) {
|
||||
player->unk_002 |= 2 << (arg2 * 4);
|
||||
player->unk_002 |= 2 << (screenId * 4);
|
||||
}
|
||||
if (check_player_camera_collision(player, camera, (f32) D_80165580, (f32) D_80165582) == 1) {
|
||||
player->unk_002 |= 8 << (arg2 * 4);
|
||||
player->unk_002 |= 8 << (screenId * 4);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -170,7 +170,7 @@ u16 func_8001FD78(Player *player, f32 posX, UNUSED f32 arg2, f32 posZ) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
void init_render_player(Player *player, Camera *camera, s8 playerId, s8 playerRenderId) {
|
||||
void init_render_player(Player *player, Camera *camera, s8 playerId, s8 screenId) {
|
||||
UNUSED s32 pad[4];
|
||||
s32 sp4C;
|
||||
s32 sp48;
|
||||
|
|
@ -179,64 +179,64 @@ void init_render_player(Player *player, Camera *camera, s8 playerId, s8 playerRe
|
|||
s32 temp_v0_2;
|
||||
|
||||
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
|
||||
func_8001F9E4(player, camera, playerRenderId);
|
||||
temp_v0 = 2 << (playerRenderId << 2);
|
||||
func_8001F9E4(player, camera, screenId);
|
||||
temp_v0 = 2 << (screenId << 2);
|
||||
if (temp_v0 == (player->unk_002 & temp_v0)) {
|
||||
if (!(player->type & PLAYER_START_SEQUENCE)) {
|
||||
func_8002934C(player, camera, playerRenderId, playerId);
|
||||
func_8002934C(player, camera, screenId, playerId);
|
||||
} else {
|
||||
func_8002934C(player, camera, playerRenderId, playerId);
|
||||
func_8002934C(player, camera, screenId, playerId);
|
||||
player->slopeAccel = 0;
|
||||
player->unk_206 = 0;
|
||||
player->unk_050[playerRenderId] = 0;
|
||||
player->unk_050[screenId] = 0;
|
||||
}
|
||||
}
|
||||
func_8001F980(&sp4C, &sp48);
|
||||
temp_v0_2 = 1 << (playerRenderId << 2);
|
||||
temp_v0_2 = 1 << (screenId << 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) {
|
||||
D_80164AB0[gPlayersToRenderCount] = (s16) playerId;
|
||||
D_80164AC0[gPlayersToRenderCount] = (s16) playerRenderId;
|
||||
D_80164AC0[gPlayersToRenderCount] = (s16) screenId;
|
||||
D_80164AD0[gPlayersToRenderCount] = player;
|
||||
gPlayersToRenderCount += 1;
|
||||
D_80165190[playerRenderId][playerId] = 0;
|
||||
D_801650D0[playerRenderId][playerId] = player->animFrameSelector[playerRenderId];
|
||||
D_80165110[playerRenderId][playerId] = player->animGroupSelector[playerRenderId];
|
||||
D_80165150[playerRenderId][playerId] = player->unk_0A8;
|
||||
D_801651D0[playerRenderId][playerId] += 1;
|
||||
if (D_801651D0[playerRenderId][playerId] == 2) {
|
||||
D_801651D0[playerRenderId][playerId] = 0;
|
||||
D_80165190[screenId][playerId] = 0;
|
||||
D_801650D0[screenId][playerId] = player->animFrameSelector[screenId];
|
||||
D_80165110[screenId][playerId] = player->animGroupSelector[screenId];
|
||||
D_80165150[screenId][playerId] = player->unk_0A8;
|
||||
D_801651D0[screenId][playerId] += 1;
|
||||
if (D_801651D0[screenId][playerId] == 2) {
|
||||
D_801651D0[screenId][playerId] = 0;
|
||||
}
|
||||
} else {
|
||||
if ((check_player_camera_collision(player, camera, D_80165574 + sp4C, D_80165576) == 1) & 0xFFFF) {
|
||||
if ((sRenderingFramebuffer == gRenderingFramebufferByPlayer[playerId]) || ((D_801650D0[playerRenderId][playerId] - player->animFrameSelector[playerRenderId]) > 0x13) || ((D_801650D0[playerRenderId][playerId] - player->animFrameSelector[playerRenderId]) < -0x13) || (D_80165190[playerRenderId][playerId] == (s16) 1U)) {
|
||||
if ((sRenderingFramebuffer == gRenderingFramebufferByPlayer[playerId]) || ((D_801650D0[screenId][playerId] - player->animFrameSelector[screenId]) > 0x13) || ((D_801650D0[screenId][playerId] - player->animFrameSelector[screenId]) < -0x13) || (D_80165190[screenId][playerId] == (s16) 1U)) {
|
||||
D_80164AB0[gPlayersToRenderCount] = (s16) playerId;
|
||||
D_80164AC0[gPlayersToRenderCount] = (s16) playerRenderId;
|
||||
D_80164AC0[gPlayersToRenderCount] = (s16) screenId;
|
||||
D_80164AD0[gPlayersToRenderCount] = player;
|
||||
gPlayersToRenderCount += 1;
|
||||
D_801650D0[playerRenderId][playerId] = player->animFrameSelector[playerRenderId];
|
||||
D_80165110[playerRenderId][playerId] = player->animGroupSelector[playerRenderId];
|
||||
D_80165150[playerRenderId][playerId] = player->unk_0A8;
|
||||
D_80165190[playerRenderId][playerId] = 0;
|
||||
D_801651D0[playerRenderId][playerId] += 1;
|
||||
if (D_801651D0[playerRenderId][playerId] == 2) {
|
||||
D_801651D0[playerRenderId][playerId] = 0;
|
||||
D_801650D0[screenId][playerId] = player->animFrameSelector[screenId];
|
||||
D_80165110[screenId][playerId] = player->animGroupSelector[screenId];
|
||||
D_80165150[screenId][playerId] = player->unk_0A8;
|
||||
D_80165190[screenId][playerId] = 0;
|
||||
D_801651D0[screenId][playerId] += 1;
|
||||
if (D_801651D0[screenId][playerId] == 2) {
|
||||
D_801651D0[screenId][playerId] = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ((
|
||||
(D_801650D0[playerRenderId][playerId] - player->animFrameSelector[playerRenderId]) > 0x13) || ((D_801650D0[playerRenderId][playerId] - player->animFrameSelector[playerRenderId]) < -0x13) || (D_80165190[playerRenderId][playerId] == (s16) 1U)) {
|
||||
(D_801650D0[screenId][playerId] - player->animFrameSelector[screenId]) > 0x13) || ((D_801650D0[screenId][playerId] - player->animFrameSelector[screenId]) < -0x13) || (D_80165190[screenId][playerId] == (s16) 1U)) {
|
||||
D_80164AB0[gPlayersToRenderCount] = (s16) playerId;
|
||||
D_80164AC0[gPlayersToRenderCount] = (s16) playerRenderId;
|
||||
D_80164AC0[gPlayersToRenderCount] = (s16) screenId;
|
||||
D_80164AD0[gPlayersToRenderCount] = player;
|
||||
gPlayersToRenderCount += 1;
|
||||
D_801650D0[playerRenderId][playerId] = (s16) player->animFrameSelector[playerRenderId];
|
||||
D_80165110[playerRenderId][playerId] = player->animGroupSelector[playerRenderId];
|
||||
D_80165150[playerRenderId][playerId] = player->unk_0A8;
|
||||
D_80165190[playerRenderId][playerId] = 0;
|
||||
D_801651D0[playerRenderId][playerId] += 1;
|
||||
if (D_801651D0[playerRenderId][playerId] == 2) {
|
||||
D_801651D0[playerRenderId][playerId] = 0;
|
||||
D_801650D0[screenId][playerId] = (s16) player->animFrameSelector[screenId];
|
||||
D_80165110[screenId][playerId] = player->animGroupSelector[screenId];
|
||||
D_80165150[screenId][playerId] = player->unk_0A8;
|
||||
D_80165190[screenId][playerId] = 0;
|
||||
D_801651D0[screenId][playerId] += 1;
|
||||
if (D_801651D0[screenId][playerId] == 2) {
|
||||
D_801651D0[screenId][playerId] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -337,12 +337,12 @@ void func_80020F1C(void) {
|
|||
D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].pixel_index_array);
|
||||
}
|
||||
|
||||
void try_render_player(Player *player, s8 playerId, s8 arg2) {
|
||||
void try_rendering_player(Player *player, s8 playerId, s8 arg2) {
|
||||
|
||||
if (((player->type & PLAYER_EXISTS) == PLAYER_EXISTS)
|
||||
&& ((player->type & PLAYER_UNKNOWN_0x40) == 0)) {
|
||||
if ((player->unk_002 & 2 << (arg2 * 4)) == 2 << (arg2 * 4)) {
|
||||
player_render(player, playerId, arg2);
|
||||
render_player(player, playerId, arg2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -369,15 +369,15 @@ void render_players_on_screen_one(void) {
|
|||
init_render_player(gPlayerSeven, camera1, 6U, 0U);
|
||||
init_render_player(gPlayerEight, camera1, 7U, 0U);
|
||||
}
|
||||
try_render_player(gPlayerOne, 0U, 0U);
|
||||
try_render_player(gPlayerTwo, 1U, 0U);
|
||||
try_render_player(gPlayerThree, 2U, 0U);
|
||||
try_render_player(gPlayerFour, 3U, 0U);
|
||||
try_rendering_player(gPlayerOne, 0U, 0U);
|
||||
try_rendering_player(gPlayerTwo, 1U, 0U);
|
||||
try_rendering_player(gPlayerThree, 2U, 0U);
|
||||
try_rendering_player(gPlayerFour, 3U, 0U);
|
||||
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
|
||||
try_render_player(gPlayerFive, 4U, 0U);
|
||||
try_render_player(gPlayerSix, 5U, 0U);
|
||||
try_render_player(gPlayerSeven, 6U, 0U);
|
||||
try_render_player(gPlayerEight, 7U, 0U);
|
||||
try_rendering_player(gPlayerFive, 4U, 0U);
|
||||
try_rendering_player(gPlayerSix, 5U, 0U);
|
||||
try_rendering_player(gPlayerSeven, 6U, 0U);
|
||||
try_rendering_player(gPlayerEight, 7U, 0U);
|
||||
}
|
||||
if (gPlayersToRenderCount != 0) {
|
||||
func_80020524();
|
||||
|
|
@ -538,15 +538,15 @@ void render_players_on_screen_two(void) {
|
|||
init_render_player(gPlayerSeven, camera2, 6, 1);
|
||||
init_render_player(gPlayerEight, camera2, 7, 1);
|
||||
}
|
||||
try_render_player(gPlayerOne, 0, 1);
|
||||
try_render_player(gPlayerTwo, 1, 1);
|
||||
try_render_player(gPlayerThree, 2, 1);
|
||||
try_render_player(gPlayerFour, 3, 1);
|
||||
try_rendering_player(gPlayerOne, 0, 1);
|
||||
try_rendering_player(gPlayerTwo, 1, 1);
|
||||
try_rendering_player(gPlayerThree, 2, 1);
|
||||
try_rendering_player(gPlayerFour, 3, 1);
|
||||
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
|
||||
try_render_player(gPlayerFive, 4, 1);
|
||||
try_render_player(gPlayerSix, 5, 1);
|
||||
try_render_player(gPlayerSeven, 6, 1);
|
||||
try_render_player(gPlayerEight, 7, 1);
|
||||
try_rendering_player(gPlayerFive, 4, 1);
|
||||
try_rendering_player(gPlayerSix, 5, 1);
|
||||
try_rendering_player(gPlayerSeven, 6, 1);
|
||||
try_rendering_player(gPlayerEight, 7, 1);
|
||||
}
|
||||
if (gPlayersToRenderCount != 0) {
|
||||
func_8002088C();
|
||||
|
|
@ -571,10 +571,10 @@ void render_players_on_screen_three(void) {
|
|||
init_render_player(gPlayerTwo, camera3, 1, 2);
|
||||
init_render_player(gPlayerThree, camera3, 2, 2);
|
||||
init_render_player(gPlayerFour, camera3, 3, 2);
|
||||
try_render_player(gPlayerOne, 0, 2);
|
||||
try_render_player(gPlayerTwo, 1, 2);
|
||||
try_render_player(gPlayerThree, 2, 2);
|
||||
try_render_player(gPlayerFour, 3, 2);
|
||||
try_rendering_player(gPlayerOne, 0, 2);
|
||||
try_rendering_player(gPlayerTwo, 1, 2);
|
||||
try_rendering_player(gPlayerThree, 2, 2);
|
||||
try_rendering_player(gPlayerFour, 3, 2);
|
||||
if (gPlayersToRenderCount != 0) {
|
||||
func_80020BF4();
|
||||
} else {
|
||||
|
|
@ -592,10 +592,10 @@ void render_players_on_screen_four(void) {
|
|||
init_render_player(gPlayerTwo, camera4, 1, 3);
|
||||
init_render_player(gPlayerThree, camera4, 2, 3);
|
||||
init_render_player(gPlayerFour, camera4, 3, 3);
|
||||
try_render_player(gPlayerOne, 0, 3);
|
||||
try_render_player(gPlayerTwo, 1, 3);
|
||||
try_render_player(gPlayerThree, 2, 3);
|
||||
try_render_player(gPlayerFour, 3, 3);
|
||||
try_rendering_player(gPlayerOne, 0, 3);
|
||||
try_rendering_player(gPlayerTwo, 1, 3);
|
||||
try_rendering_player(gPlayerThree, 2, 3);
|
||||
try_rendering_player(gPlayerFour, 3, 3);
|
||||
if (gPlayersToRenderCount != 0) {
|
||||
func_80020F1C();
|
||||
} else {
|
||||
|
|
@ -975,24 +975,24 @@ void func_80022BC4(Player *player, UNUSED s8 arg1) {
|
|||
player->unk_DB4.unk2 = temp_v0;
|
||||
}
|
||||
|
||||
void func_80022CA8(Player *player, s8 arg1, UNUSED s8 arg2, s8 arg3) {
|
||||
void func_80022CA8(Player *player, s8 playerId, UNUSED s8 screenId, s8 arg3) {
|
||||
s16 temp_v0 = player->unk_DA4;
|
||||
|
||||
D_800DDBB4[arg1][arg3 + 0x0].v.ob[1] = 18 - (temp_v0 * 2.3);
|
||||
D_800DDBB4[arg1][arg3 + 0x1].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[arg1][arg3 + 0x2].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[arg1][arg3 + 0x3].v.ob[1] = 18 - (temp_v0 * 2.3);
|
||||
D_800DDBB4[arg1][arg3 + 0x4].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[arg1][arg3 + 0x7].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x0].v.ob[1] = 18 - (temp_v0 * 2.3);
|
||||
D_800DDBB4[playerId][arg3 + 0x1].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x2].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x3].v.ob[1] = 18 - (temp_v0 * 2.3);
|
||||
D_800DDBB4[playerId][arg3 + 0x4].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x7].v.ob[1] = 9 - temp_v0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Seems to stretch/warp a specific players texture for a
|
||||
* short period of time. Perhaps does not do anything
|
||||
**/
|
||||
void func_80022D60(UNUSED Player *player, s8 arg1, UNUSED s8 arg2, s8 arg3) {
|
||||
D_800DDBB4[arg1][arg3].v.ob[1] = 21;
|
||||
D_800DDBB4[arg1][arg3 + 0x3].v.ob[1] = 21;
|
||||
void func_80022D60(UNUSED Player *player, s8 playerId, UNUSED s8 screenId, s8 arg3) {
|
||||
D_800DDBB4[playerId][arg3].v.ob[1] = 21;
|
||||
D_800DDBB4[playerId][arg3 + 0x3].v.ob[1] = 21;
|
||||
}
|
||||
|
||||
void func_80022DB4(Player *player, UNUSED s8 arg1) {
|
||||
|
|
@ -1020,15 +1020,15 @@ void func_80022DB4(Player *player, UNUSED s8 arg1) {
|
|||
player->unk_DB4.unk18 = temp_v0;
|
||||
}
|
||||
|
||||
void func_80022E84(Player *player, s8 arg1, UNUSED s8 arg2, s8 arg3) {
|
||||
void func_80022E84(Player *player, s8 playerId, UNUSED s8 screenId, s8 arg3) {
|
||||
s16 temp_v0 = player->unk_DB4.unk1E;
|
||||
|
||||
D_800DDBB4[arg1][arg3 + 0x0].v.ob[1] = 18 - temp_v0;
|
||||
D_800DDBB4[arg1][arg3 + 0x1].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[arg1][arg3 + 0x2].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[arg1][arg3 + 0x3].v.ob[1] = 18 - temp_v0;
|
||||
D_800DDBB4[arg1][arg3 + 0x4].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[arg1][arg3 + 0x7].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x0].v.ob[1] = 18 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x1].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x2].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x3].v.ob[1] = 18 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x4].v.ob[1] = 9 - temp_v0;
|
||||
D_800DDBB4[playerId][arg3 + 0x7].v.ob[1] = 9 - temp_v0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1230,18 +1230,18 @@ void func_800235AC(Player *player, s8 arg1) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_80023BF0(Player *player, s8 arg1, s8 arg2, s8 arg3) {
|
||||
void func_80023BF0(Player *player, s8 playerId, s8 screenId, s8 arg3) {
|
||||
if (((player->effects & HIT_EFFECT) == HIT_EFFECT) || ((player->effects & 0x8000000) == 0x8000000)) {
|
||||
func_80022CA8(player, arg1, arg2, arg3);
|
||||
func_80022CA8(player, playerId, screenId, arg3);
|
||||
} else {
|
||||
func_80022E84(player, arg1, arg2, arg3);
|
||||
func_80022E84(player, playerId, screenId, arg3);
|
||||
}
|
||||
if ((player->unk_0CA & 2) == 2) {
|
||||
func_80022D60(player, arg1, arg2, arg3);
|
||||
func_80022D60(player, playerId, screenId, arg3);
|
||||
}
|
||||
}
|
||||
|
||||
void render_player_shadow(Player *player, s8 arg1, s8 arg2) {
|
||||
void render_player_shadow(Player *player, s8 playerId, s8 screenId) {
|
||||
Mat4 sp118;
|
||||
UNUSED Mat4 pad;
|
||||
Vec3f spCC;
|
||||
|
|
@ -1254,7 +1254,7 @@ void render_player_shadow(Player *player, s8 arg1, s8 arg2) {
|
|||
UNUSED Vec3f pad2;
|
||||
f32 var_f2;
|
||||
|
||||
temp_t9 = (u16)(player->unk_048[arg2] + player->rotation[1] + player->unk_0C0) / 128; // << 7) & 0xFFFF;
|
||||
temp_t9 = (u16)(player->unk_048[screenId] + player->rotation[1] + player->unk_0C0) / 128; // << 7) & 0xFFFF;
|
||||
spC0 = -player->rotation[1] - player->unk_0C0;
|
||||
|
||||
spB0 = -coss(temp_t9 << 7) * 2;
|
||||
|
|
@ -1293,9 +1293,9 @@ void render_player_shadow(Player *player, s8 arg1, s8 arg2) {
|
|||
mtxf_translate_rotate(sp118, spCC, spC4);
|
||||
mtxf_scale2(sp118, gCharacterSize[player->characterId] * player->size);
|
||||
}
|
||||
convert_to_fixed_point_matrix(&gGfxPool->mtxShadow[arg1 + (arg2 * 8)], sp118);
|
||||
convert_to_fixed_point_matrix(&gGfxPool->mtxShadow[playerId + (screenId * 8)], sp118);
|
||||
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxShadow[arg1 + (arg2 * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxShadow[playerId + (screenId * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008D58);
|
||||
gDPSetTextureLUT(gDisplayListHead++, G_TT_NONE);
|
||||
|
|
@ -1368,7 +1368,7 @@ void render_player_shadow_credits(Player *player, s8 playerId, s8 arg2) {
|
|||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
}
|
||||
|
||||
void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
void render_kart(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
UNUSED s32 pad;
|
||||
Mat4 sp1A4;
|
||||
UNUSED s32 pad2[17];
|
||||
|
|
@ -1501,7 +1501,7 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
|||
gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);
|
||||
}
|
||||
|
||||
void ghost_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
void render_ghost(Player *player, s8 playerId, s8 screenId, s8 arg3) {
|
||||
UNUSED s32 pad;
|
||||
Mat4 sp12C;
|
||||
UNUSED s32 pad2[17];
|
||||
|
|
@ -1514,38 +1514,38 @@ void ghost_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
|||
s16 spC2;
|
||||
s16 thing;
|
||||
|
||||
if (arg2) {}
|
||||
if (screenId) {}
|
||||
if (D_8015F890 == 1) {
|
||||
spC2 = 0x00FF;
|
||||
} else {
|
||||
spC2 = 0x0070;
|
||||
}
|
||||
thing = (u16)(player->unk_048[arg2] - player->rotation[1]);
|
||||
thing = (u16)(player->unk_048[screenId] - player->rotation[1]);
|
||||
spD4[0] = (-(s16)(sins(thing) * (0.0f * 0.0f)) * 0.8);
|
||||
spD4[1] = player->unk_048[arg2];
|
||||
spD4[2] = player->unk_050[arg2];
|
||||
func_80062B18(&spD0, &spCC, &spC8, 0, 1.5f, 0, -player->unk_048[arg2], player->unk_050[arg2]);
|
||||
spD4[1] = player->unk_048[screenId];
|
||||
spD4[2] = player->unk_050[screenId];
|
||||
func_80062B18(&spD0, &spCC, &spC8, 0, 1.5f, 0, -player->unk_048[screenId], player->unk_050[screenId]);
|
||||
spDC[1] = (player->pos[1] - player->boundingBoxSize) + (spCC - 2.0);
|
||||
spDC[0] = player->pos[0] + spD0;
|
||||
spDC[2] = player->pos[2] + spC8;
|
||||
#ifdef AVOID_UB
|
||||
gPlayerPalette = &D_802F1F80[D_801651D0[arg2][playerId]][arg2][playerId];
|
||||
gPlayerPalette = &D_802F1F80[D_801651D0[screenId][playerId]][screenId][playerId];
|
||||
#else
|
||||
gPlayerPalette = (struct_D_802F1F80 *) &D_802F1F80[D_801651D0[arg2][playerId]][arg2][playerId * 0x100];
|
||||
gPlayerPalette = (struct_D_802F1F80 *) &D_802F1F80[D_801651D0[screenId][playerId]][screenId][playerId * 0x100];
|
||||
#endif
|
||||
if ((arg2 == 0) || (arg2 == 1)) {
|
||||
D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0];
|
||||
D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0x7C0];
|
||||
if ((screenId == 0) || (screenId == 1)) {
|
||||
D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0];
|
||||
D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0x7C0];
|
||||
} else {
|
||||
D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0];
|
||||
D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0];
|
||||
D_80164B08 = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0];
|
||||
D_80164B0C = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0x7C0];
|
||||
}
|
||||
|
||||
mtxf_translate_rotate(sp12C, spDC, spD4);
|
||||
mtxf_scale2(sp12C, gCharacterSize[player->characterId] * player->size);
|
||||
convert_to_fixed_point_matrix(&gGfxPool->mtxKart[playerId + (arg2 * 8)], sp12C);
|
||||
convert_to_fixed_point_matrix(&gGfxPool->mtxKart[playerId + (screenId * 8)], sp12C);
|
||||
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (arg2 * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (screenId * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gDisplayListHead++, common_setting_render_character);
|
||||
gDPLoadTLUT_pal256(gDisplayListHead++, gPlayerPalette);
|
||||
gDPSetTextureLUT(gDisplayListHead++, G_TT_RGBA16);
|
||||
|
|
@ -1571,7 +1571,7 @@ void ghost_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
|||
gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);
|
||||
}
|
||||
|
||||
void func_80025DE8(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
void func_80025DE8(Player *player, s8 playerId, s8 screenId, s8 arg3) {
|
||||
Mat4 spA8;
|
||||
Vec3f sp9C;
|
||||
Vec3s sp94;
|
||||
|
|
@ -1580,8 +1580,8 @@ void func_80025DE8(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
|||
sp9C[1] = ((player->pos[1] - player->boundingBoxSize) + player->unk_108) + 0.1;
|
||||
sp9C[2] = player->pos[2] + (coss(-player->rotation[1]) * -1.5);
|
||||
sp94[0] = -0x00B6;
|
||||
sp94[1] = player->unk_048[arg2];
|
||||
sp94[2] = player->unk_050[arg2];
|
||||
sp94[1] = player->unk_048[screenId];
|
||||
sp94[2] = player->unk_050[screenId];
|
||||
|
||||
mtxf_translate_rotate(spA8, sp9C, sp94);
|
||||
mtxf_scale2(spA8, gCharacterSize[player->characterId] * player->size);
|
||||
|
|
@ -1612,18 +1612,18 @@ void func_80025DE8(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
|||
gMatrixEffectCount += 1;
|
||||
}
|
||||
|
||||
void player_ice_reflection_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
void render_player_ice_reflection(Player *player, s8 playerId, s8 screenId, s8 arg3) {
|
||||
Mat4 spA8;
|
||||
Vec3f sp9C;
|
||||
Vec3s sp94;
|
||||
|
||||
sp94[0] = 0;
|
||||
sp94[1] = player->unk_048[arg2];
|
||||
sp94[2] = player->unk_050[arg2] + 0x8000; // invert Y
|
||||
sp94[1] = player->unk_048[screenId];
|
||||
sp94[2] = player->unk_050[screenId] + 0x8000; // invert Y
|
||||
sp9C[0] = player->pos[0];
|
||||
sp9C[1] = player->unk_074 + (4.0f * player->size);
|
||||
sp9C[2] = player->pos[2];
|
||||
if (!(player->unk_002 & (4 << (arg2 * 4)))) {
|
||||
if (!(player->unk_002 & (4 << (screenId * 4)))) {
|
||||
arg3 = 8;
|
||||
} else {
|
||||
arg3 = 0;
|
||||
|
|
@ -1656,40 +1656,40 @@ void player_ice_reflection_render(Player *player, s8 playerId, s8 arg2, s8 arg3)
|
|||
gMatrixEffectCount += 1;
|
||||
}
|
||||
|
||||
void player_render(Player *player, s8 playerId, s8 arg2) {
|
||||
void render_player(Player *player, s8 playerId, s8 screenId) {
|
||||
UNUSED s32 pad[2];
|
||||
s32 temp_t1;
|
||||
s32 var_v1;
|
||||
OSMesg *sp34;
|
||||
|
||||
func_80026B4C(player, playerId, arg2, D_801651D0[arg2][playerId]);
|
||||
if (!(player->unk_002 & (4 << (arg2 * 4)))) {
|
||||
func_80026B4C(player, playerId, screenId, D_801651D0[screenId][playerId]);
|
||||
if (!(player->unk_002 & (4 << (screenId * 4)))) {
|
||||
var_v1 = 0;
|
||||
} else {
|
||||
var_v1 = 8;
|
||||
}
|
||||
func_80023BF0(player, playerId, arg2, var_v1);
|
||||
temp_t1 = 8 << (arg2 * 4);
|
||||
func_80023BF0(player, playerId, screenId, var_v1);
|
||||
temp_t1 = 8 << (screenId * 4);
|
||||
if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->unk_110.unk3C[2] <= 50.0f) && (player->surfaceType != ICE)) {
|
||||
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
|
||||
if (playerId == arg2) {
|
||||
render_player_shadow(player, playerId, arg2);
|
||||
if (playerId == screenId) {
|
||||
render_player_shadow(player, playerId, screenId);
|
||||
}
|
||||
} else {
|
||||
render_player_shadow(player, playerId, arg2);
|
||||
render_player_shadow(player, playerId, screenId);
|
||||
}
|
||||
}
|
||||
if ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB) {
|
||||
kart_render(player, playerId, arg2, var_v1);
|
||||
render_kart(player, playerId, screenId, var_v1);
|
||||
} else {
|
||||
ghost_render(player, playerId, arg2, var_v1);
|
||||
render_ghost(player, playerId, screenId, var_v1);
|
||||
}
|
||||
osRecvMesg(&gDmaMesgQueue, (OSMesg *) &sp34, OS_MESG_BLOCK);
|
||||
if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->surfaceType == ICE) && ((player->unk_0CA & 1) != 1) && (player->unk_110.unk3C[2] <= 30.0f)) {
|
||||
player_ice_reflection_render(player, playerId, arg2, var_v1);
|
||||
render_player_ice_reflection(player, playerId, screenId, var_v1);
|
||||
}
|
||||
if (player->boostPower >= 2.0f) {
|
||||
func_80025DE8(player, playerId, arg2, var_v1);
|
||||
func_80025DE8(player, playerId, screenId, var_v1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1722,9 +1722,9 @@ void func_80026A48(Player *player, s8 arg1) {
|
|||
#define D_802F1F80_WHEEL(a, b, c) &D_802F1F80[a][b][(c * 0x100) + 0xC0]
|
||||
#endif
|
||||
|
||||
void func_80026B4C(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
s16 temp_t0 = D_801650D0[arg2][playerId];
|
||||
s16 temp_t1 = D_80165110[arg2][playerId];
|
||||
void func_80026B4C(Player *player, s8 playerId, s8 screenId, s8 arg3) {
|
||||
s16 temp_t0 = D_801650D0[screenId][playerId];
|
||||
s16 temp_t1 = D_80165110[screenId][playerId];
|
||||
s16 temp_t2 = player->unk_240;
|
||||
s16 temp_num = 0x40; // setting this as a variable gets rid of regalloc
|
||||
|
||||
|
|
@ -1734,15 +1734,15 @@ void func_80026B4C(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
|||
&& ((player->effects & 0x800000) != 0x800000) && ((player->unk_044 & 0x800) == 0)) {
|
||||
|
||||
if (temp_t0 <= 20) {
|
||||
func_80027C74(player, (s32) (D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80);
|
||||
func_80027C74(player, (s32) (D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
|
||||
} else {
|
||||
func_80027C74(player, (s32) (D_800DDE54[player->characterId][temp_t1] + (temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80);
|
||||
func_80027C74(player, (s32) (D_800DDE54[player->characterId][temp_t1] + (temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
|
||||
}
|
||||
} else {
|
||||
if (temp_t0 == 0) {
|
||||
func_80027C74(player, (s32) (D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80);
|
||||
func_80027C74(player, (s32) (D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
|
||||
} else {
|
||||
func_80027C74(player, (s32) (D_800DDE54[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80);
|
||||
func_80027C74(player, (s32) (D_800DDE54[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
@ -1751,15 +1751,15 @@ void func_80026B4C(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
|||
&& ((player->effects & 0x20000) != 0x20000) && ((player->unk_044 & 0x800) == 0)) {
|
||||
|
||||
if (temp_t0 <= 20) {
|
||||
func_80027C74(player, (s32) (D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80);
|
||||
func_80027C74(player, (s32) (D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
|
||||
} else {
|
||||
func_80027C74(player, (s32) (D_800DDE54[player->characterId][temp_t1] + (temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80);
|
||||
func_80027C74(player, (s32) (D_800DDE54[player->characterId][temp_t1] + (temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
|
||||
}
|
||||
} else {
|
||||
if (temp_t0 == 0) {
|
||||
func_80027C74(player, (s32) (D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80);
|
||||
func_80027C74(player, (s32) (D_800DDE34[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
|
||||
} else {
|
||||
func_80027C74(player, (s32) (D_800DDE54[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, arg2, playerId), 0x80);
|
||||
func_80027C74(player, (s32) (D_800DDE54[player->characterId][temp_t1] + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ void func_80020524(void);
|
|||
void func_8002088C(void);
|
||||
void func_80020BF4(void);
|
||||
void func_80020F1C(void);
|
||||
void try_render_player(Player*, s8, s8);
|
||||
void try_rendering_player(Player*, s8, s8);
|
||||
void render_players_on_screen_one(void);
|
||||
void render_players_on_screen_two(void);
|
||||
void render_players_on_screen_three(void);
|
||||
|
|
@ -54,11 +54,11 @@ void func_800235AC(Player*, s8);
|
|||
void func_80023BF0(Player*, s8, s8, s8);
|
||||
void render_player_shadow(Player*, s8, s8);
|
||||
void render_player_shadow_credits(Player*, s8, s8);
|
||||
void kart_render(Player*, s8, s8, s8);
|
||||
void ghost_render(Player*, s8, s8, s8);
|
||||
void render_kart(Player*, s8, s8, s8);
|
||||
void render_ghost(Player*, s8, s8, s8);
|
||||
void func_80025DE8(Player*, s8, s8, s8);
|
||||
void player_ice_reflection_render(Player*, s8, s8, s8);
|
||||
void player_render(Player*, s8, s8);
|
||||
void render_player_ice_reflection(Player*, s8, s8, s8);
|
||||
void render_player(Player*, s8, s8);
|
||||
void func_80026A48(Player*, s8);
|
||||
void func_80026B4C(Player*, s8, s8, s8);
|
||||
void func_80030A34(Player*);
|
||||
|
|
|
|||
|
|
@ -1070,29 +1070,29 @@ void func_8003CD78(void) {
|
|||
func_8003BE30();
|
||||
}
|
||||
|
||||
void func_8003CD98(Player *player, Camera *camera, s8 playerId, s8 arg3) {
|
||||
void func_8003CD98(Player *player, Camera *camera, s8 playerId, s8 screenId) {
|
||||
if (player->type & PLAYER_EXISTS) {
|
||||
if (arg3 == 0) {
|
||||
func_8002D268(player, camera, arg3, playerId);
|
||||
if (screenId == 0) {
|
||||
func_8002D268(player, camera, screenId, playerId);
|
||||
}
|
||||
func_8002934C(player, camera, arg3, playerId);
|
||||
if ((arg3 == 0) || (arg3 == 1)) {
|
||||
load_kart_palette(player, playerId, arg3, 0);
|
||||
load_kart_palette(player, playerId, arg3, 1);
|
||||
load_kart_texture(player, playerId, arg3, arg3, 0);
|
||||
mio0decode((u8 *) &D_802DFB80[0][arg3][playerId], (u8 *) &D_802BFB80.arraySize8[0][arg3][playerId]);
|
||||
func_8002934C(player, camera, screenId, playerId);
|
||||
if ((screenId == 0) || (screenId == 1)) {
|
||||
load_kart_palette(player, playerId, screenId, 0);
|
||||
load_kart_palette(player, playerId, screenId, 1);
|
||||
load_kart_texture(player, playerId, screenId, screenId, 0);
|
||||
mio0decode((u8 *) &D_802DFB80[0][screenId][playerId], (u8 *) &D_802BFB80.arraySize8[0][screenId][playerId]);
|
||||
} else {
|
||||
load_kart_palette(player, playerId, arg3, 0);
|
||||
load_kart_palette(player, playerId, arg3, 1);
|
||||
load_kart_texture(player, (s8) (playerId + 4), arg3, (s8) (arg3 - 2), 0);
|
||||
mio0decode((u8 *) &D_802DFB80[0][arg3 - 2][playerId + 4], (u8 *) &D_802BFB80.arraySize8[0][arg3 - 2][playerId + 4]);
|
||||
load_kart_palette(player, playerId, screenId, 0);
|
||||
load_kart_palette(player, playerId, screenId, 1);
|
||||
load_kart_texture(player, (s8) (playerId + 4), screenId, (s8) (screenId - 2), 0);
|
||||
mio0decode((u8 *) &D_802DFB80[0][screenId - 2][playerId + 4], (u8 *) &D_802BFB80.arraySize8[0][screenId - 2][playerId + 4]);
|
||||
}
|
||||
|
||||
D_801650D0[arg3][playerId] = player->animFrameSelector[arg3];
|
||||
D_80165110[arg3][playerId] = player->animGroupSelector[arg3];
|
||||
D_80165150[arg3][playerId] = player->unk_0A8;
|
||||
D_801651D0[arg3][playerId] = 0;
|
||||
player_render(player, playerId, arg3);
|
||||
D_801650D0[screenId][playerId] = player->animFrameSelector[screenId];
|
||||
D_80165110[screenId][playerId] = player->animGroupSelector[screenId];
|
||||
D_80165150[screenId][playerId] = player->unk_0A8;
|
||||
D_801651D0[screenId][playerId] = 0;
|
||||
render_player(player, playerId, screenId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue