document texture of kart

This commit is contained in:
coco875
2024-08-03 02:37:22 +02:00
parent 421548767d
commit 5940d5c3c7
11 changed files with 302 additions and 289 deletions
+11 -4
View File
@@ -109,10 +109,17 @@
#define FOUR_PLAYERS_SELECTED 4
#define SELECTED_PLAYER_DEFINES_TOTAL 5
#define PLAYER_ONE 0
#define PLAYER_TWO 1
#define PLAYER_THREE 2
#define PLAYER_FOUR 3
enum PlayerId {
PLAYER_NONE = -1,
PLAYER_ONE = 0,
PLAYER_TWO = 1,
PLAYER_THREE = 2,
PLAYER_FOUR = 3,
PLAYER_FIVE = 4,
PLAYER_SIX = 5,
PLAYER_SEVEN = 6,
PLAYER_EIGHT = 7
};
#define NUM_PLAYERS 8
+1 -1
View File
@@ -70,7 +70,7 @@ typedef struct {
extern u16 gRandomSeed16;
extern u8 randomSeedPadding[216];
extern union_D_802BFB80 D_802BFB80;
extern struct_D_802DFB80 D_802DFB80[][2][8];
extern struct_D_802DFB80 gEncodedKartTexture[][2][8];
/**
* It would be nice to define D_802F1F80 as "struct_D_802F1F80 D_802F1F80[2][4][8]".
+4 -1
View File
@@ -3,8 +3,11 @@
#include <mk64.h>
#include "buffers.h"
/**
* @brief look like to be a buffer of decoded textures
*/
ALIGNED8 union_D_802BFB80 D_802BFB80;
ALIGNED8 struct_D_802DFB80 D_802DFB80[2][2][8];
ALIGNED8 struct_D_802DFB80 gEncodedKartTexture[2][2][8];
#ifdef AVOID_UB
ALIGNED8 struct_D_802F1F80 D_802F1F80[2][4][8];
#else
+64 -64
View File
@@ -6257,27 +6257,27 @@ void func_8006D194(Player *player, s8 arg1, s8 arg2) {
}
}
void func_8006D474(Player *player, s8 arg1, s8 arg2) {
void func_8006D474(Player *player, s8 playerId, s8 screenPlayerId) {
s16 var_s2;
if ((player->unk_002 & (8 << (arg2 * 4))) == (8 << (arg2 * 4))) {
if ((player->unk_002 & (8 << (screenPlayerId * 4))) == (8 << (screenPlayerId * 4))) {
for (var_s2 = 0; var_s2 < 10; var_s2++) {
switch (player->unk_258[var_s2].unk_012) {
case 1:
if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) {
if (arg2 == arg1) {
func_8006538C(player, arg1, var_s2, arg2);
if (screenPlayerId == playerId) {
func_8006538C(player, playerId, var_s2, screenPlayerId);
}
} else {
func_8006538C(player, arg1, var_s2, arg2);
func_8006538C(player, playerId, var_s2, screenPlayerId);
}
break;
case 6:
if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) {
if (arg2 == arg1) {
func_80066BAC(player, arg1, var_s2, arg2);
if (screenPlayerId == playerId) {
func_80066BAC(player, playerId, var_s2, screenPlayerId);
}
} else if (arg2 == arg1) {
func_80066BAC(player, arg1, var_s2, arg2);
} else if (screenPlayerId == playerId) {
func_80066BAC(player, playerId, var_s2, screenPlayerId);
}
break;
}
@@ -6285,69 +6285,69 @@ void func_8006D474(Player *player, s8 arg1, s8 arg2) {
case 1:
case 9:
if (gActiveScreenMode == SCREEN_MODE_1P) {
func_800691B8(player, arg1, var_s2, arg2);
} else if (arg2 == arg1) {
func_800691B8(player, arg1, var_s2, arg2);
func_800691B8(player, playerId, var_s2, screenPlayerId);
} else if (screenPlayerId == playerId) {
func_800691B8(player, playerId, var_s2, screenPlayerId);
}
break;
case 2:
if (gActiveScreenMode == SCREEN_MODE_1P) {
func_800696CC(player, arg1, var_s2, arg2, player->unk_258[var_s2 + 30].unk_00C);
} else if (arg2 == arg1) {
func_800696CC(player, arg1, var_s2, arg2, player->unk_258[var_s2 + 30].unk_00C);
func_800696CC(player, playerId, var_s2, screenPlayerId, player->unk_258[var_s2 + 30].unk_00C);
} else if (screenPlayerId == playerId) {
func_800696CC(player, playerId, var_s2, screenPlayerId, player->unk_258[var_s2 + 30].unk_00C);
}
break;
case 3:
if (gActiveScreenMode == SCREEN_MODE_1P) {
func_80067280(player, arg1, var_s2, arg2);
} else if (arg2 == arg1) {
func_80067280(player, (s32) arg1, var_s2, arg2);
func_80067280(player, playerId, var_s2, screenPlayerId);
} else if (screenPlayerId == playerId) {
func_80067280(player, (s32) playerId, var_s2, screenPlayerId);
}
break;
case 4:
if (gActiveScreenMode == SCREEN_MODE_1P) {
func_80069444(player, arg1, var_s2, arg2);
} else if (arg2 == arg1) {
func_80069444(player, arg1, var_s2, arg2);
func_80069444(player, playerId, var_s2, screenPlayerId);
} else if (screenPlayerId == playerId) {
func_80069444(player, playerId, var_s2, screenPlayerId);
}
break;
case 5:
if (gActiveScreenMode == SCREEN_MODE_1P) {
func_80069938(player, arg1, var_s2, arg2);
} else if (arg2 == arg1) {
func_80069938(player, arg1, var_s2, arg2);
func_80069938(player, playerId, var_s2, screenPlayerId);
} else if (screenPlayerId == playerId) {
func_80069938(player, playerId, var_s2, screenPlayerId);
}
break;
case 6:
if (gActiveScreenMode == SCREEN_MODE_1P) {
func_80069BA8(player, arg1, var_s2, arg2);
} else if (arg2 == arg1) {
func_80069BA8(player, arg1, var_s2, arg2);
func_80069BA8(player, playerId, var_s2, screenPlayerId);
} else if (screenPlayerId == playerId) {
func_80069BA8(player, playerId, var_s2, screenPlayerId);
}
break;
case 7:
if (gActiveScreenMode == SCREEN_MODE_1P) {
func_80069DB8(player, arg1, var_s2, arg2);
} else if (arg2 == arg1) {
func_80069DB8(player, arg1, var_s2, arg2);
func_80069DB8(player, playerId, var_s2, screenPlayerId);
} else if (screenPlayerId == playerId) {
func_80069DB8(player, playerId, var_s2, screenPlayerId);
}
break;
case 8:
if (gActiveScreenMode == SCREEN_MODE_1P) {
func_80067604(player, arg1, var_s2, arg2);
} else if (arg2 == arg1) {
func_80067604(player, arg1, var_s2, arg2);
func_80067604(player, playerId, var_s2, screenPlayerId);
} else if (screenPlayerId == playerId) {
func_80067604(player, playerId, var_s2, screenPlayerId);
}
break;
}
switch (player->unk_258[var_s2 + 10].unk_012) {
case 1:
if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) {
if (arg2 == arg1) {
func_80065AB0(player, arg1, var_s2, arg2);
if (screenPlayerId == playerId) {
func_80065AB0(player, playerId, var_s2, screenPlayerId);
}
} else {
func_80065AB0(player, arg1, var_s2, arg2);
func_80065AB0(player, playerId, var_s2, screenPlayerId);
}
break;
case 2:
@@ -6355,36 +6355,36 @@ void func_8006D474(Player *player, s8 arg1, s8 arg2) {
case 4:
case 5:
if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) {
if (arg2 == arg1) {
func_80065F0C(player, arg1, var_s2, arg2);
if (screenPlayerId == playerId) {
func_80065F0C(player, playerId, var_s2, screenPlayerId);
}
} else {
func_80065F0C(player, arg1, var_s2, arg2);
func_80065F0C(player, playerId, var_s2, screenPlayerId);
}
break;
case 9:
if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) {
if (arg2 == arg1) {
func_800664E0(player, (s32) arg1, var_s2, arg2);
if (screenPlayerId == playerId) {
func_800664E0(player, (s32) playerId, var_s2, screenPlayerId);
}
} else {
func_800664E0(player, (s32) arg1, var_s2, arg2);
func_800664E0(player, (s32) playerId, var_s2, screenPlayerId);
}
break;
case 11:
if (gActiveScreenMode == SCREEN_MODE_3P_4P_SPLITSCREEN) {
if (arg2 == arg1) {
func_8006A01C(player, arg1, var_s2, arg2);
if (screenPlayerId == playerId) {
func_8006A01C(player, playerId, var_s2, screenPlayerId);
}
} else if (arg2 == arg1) {
func_8006A01C(player, arg1, var_s2, arg2);
} else if (screenPlayerId == playerId) {
func_8006A01C(player, playerId, var_s2, screenPlayerId);
}
break;
}
}
}
if ((gModeSelection == BATTLE) && (player->unk_002 & (2 << (arg2 * 4)))) {
func_8006BA94(player, arg1, arg2);
if ((gModeSelection == BATTLE) && (player->unk_002 & (2 << (screenPlayerId * 4)))) {
func_8006BA94(player, playerId, screenPlayerId);
}
}
@@ -6564,7 +6564,20 @@ void func_8006E420(Player* player, s8 arg1, s8 arg2) {
}
}
void func_8006E5AC(Player* player, s8 arg1, s8 arg2) {
void render_kart_particle_on_screen_one(Player* player, s8 playerId, s8 screenPlayerId) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (playerId == screenPlayerId) {
func_8006D474(player, playerId, screenPlayerId);
}
} else {
func_8006D474(player, playerId, screenPlayerId);
}
func_8006DC54(player, playerId, screenPlayerId);
}
}
void render_kart_particle_on_screen_two(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
@@ -6577,7 +6590,7 @@ void func_8006E5AC(Player* player, s8 arg1, s8 arg2) {
}
}
void func_8006E634(Player* player, s8 arg1, s8 arg2) {
void render_kart_particle_on_screen_three(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
@@ -6590,20 +6603,7 @@ void func_8006E634(Player* player, s8 arg1, s8 arg2) {
}
}
void func_8006E6BC(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
func_8006D474(player, arg1, arg2);
}
} else {
func_8006D474(player, arg1, arg2);
}
func_8006DC54(player, arg1, arg2);
}
}
void func_8006E744(Player* player, s8 arg1, s8 arg2) {
void render_kart_particle_on_screen_four(Player* player, s8 arg1, s8 arg2) {
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
if (arg1 == arg2) {
+4 -4
View File
@@ -245,10 +245,10 @@ void func_8006DD3C(Player*, s8, s8);
void func_8006E058(void);
void func_8006E420(Player*, s8, s8);
void func_8006E5AC(Player*, s8, s8);
void func_8006E634(Player*, s8, s8);
void func_8006E6BC(Player*, s8, s8);
void func_8006E744(Player*, s8, s8);
void render_kart_particle_on_screen_one(Player*, s8, s8);
void render_kart_particle_on_screen_two(Player*, s8, s8);
void render_kart_particle_on_screen_three(Player*, s8, s8);
void render_kart_particle_on_screen_four(Player*, s8, s8);
void func_8006E7CC(Player*, s8, s8);
void func_8006E848(Player*, s8, s8);
void func_8006E8C4(Player*, s8, s8);
+17 -17
View File
@@ -1697,7 +1697,7 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
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[screenId] != 0) {
osInvalDCache(&D_802DFB80[index][screenId2][playerId], D_800DDEB0[player->characterId]);
osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]);
osPiStartDma(
&gDmaIoMesg,
@@ -1705,14 +1705,14 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
gKartTextureTable1[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]]
)],
&D_802DFB80[index][screenId2][playerId],
&gEncodedKartTexture[index][screenId2][playerId],
D_800DDEB0[player->characterId],
&gDmaMesgQueue
);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
} else {
osInvalDCache(&D_802DFB80[index][screenId2][playerId], D_800DDEB0[player->characterId]);
osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]);
osPiStartDma(
&gDmaIoMesg,
@@ -1721,7 +1721,7 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]]
)],
&D_802DFB80[index][screenId2][playerId],
&gEncodedKartTexture[index][screenId2][playerId],
D_800DDEB0[player->characterId],
&gDmaMesgQueue
);
@@ -1729,7 +1729,7 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
} else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || ((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000)) {
osInvalDCache(&D_802DFB80[index][screenId2][playerId], 0x780U);
osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], 0x780U);
// player->unk_0A8 >> 8 converts an 8.8 fixed-point animation frame to a whole number.
osPiStartDma(
&gDmaIoMesg,
@@ -1738,14 +1738,14 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
gKartTextureTumbles[player->characterId][player->unk_0A8 >> 8]
)],
&D_802DFB80[index][screenId2][playerId],
&gEncodedKartTexture[index][screenId2][playerId],
0x900,
&gDmaMesgQueue
);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
} else {
osInvalDCache(&D_802DFB80[index][screenId2][playerId], D_800DDEB0[player->characterId]);
osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]);
osPiStartDma(
&gDmaIoMesg,
@@ -1754,7 +1754,7 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]]
)],
&D_802DFB80[index][screenId2][playerId],
&gEncodedKartTexture[index][screenId2][playerId],
D_800DDEB0[player->characterId],
&gDmaMesgQueue
);
@@ -1763,13 +1763,13 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
}
}
void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
void load_kart_texture_non_blocking(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
s32 temp = player->effects;
if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0))
{
if (player->animFrameSelector[arg2] != 0) {
osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
osPiStartDma(
&gDmaIoMesg,
@@ -1778,12 +1778,12 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
gKartTextureTable1[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]]
)],
&D_802DFB80[arg4][arg3][arg1],
&gEncodedKartTexture[arg4][arg3][arg1],
D_800DDEB0[player->characterId],
&gDmaMesgQueue
);
} else {
osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
osPiStartDma(
&gDmaIoMesg,
@@ -1792,7 +1792,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]]
)],
&D_802DFB80[arg4][arg3][arg1],
&gEncodedKartTexture[arg4][arg3][arg1],
D_800DDEB0[player->characterId],
&gDmaMesgQueue
);
@@ -1800,7 +1800,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
} else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) ||
((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000))
{
osInvalDCache(&D_802DFB80[arg4][arg3][arg1], 0x780);
osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], 0x780);
// player->unk_0A8 >> 8 converts an 8.8 fixed-point animation frame to a whole number.
osPiStartDma(
&gDmaIoMesg,
@@ -1809,12 +1809,12 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
gKartTextureTumbles[player->characterId][player->unk_0A8 >> 8]
)],
&D_802DFB80[arg4][arg3][arg1],
&gEncodedKartTexture[arg4][arg3][arg1],
0x900,
&gDmaMesgQueue
);
} else {
osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
osPiStartDma(
&gDmaIoMesg,
@@ -1823,7 +1823,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
(uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(
gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]]
)],
&D_802DFB80[arg4][arg3][arg1],
&gEncodedKartTexture[arg4][arg3][arg1],
D_800DDEB0[player->characterId],
&gDmaMesgQueue
);
+1 -1
View File
@@ -7,7 +7,7 @@
/* Function Prototypes */
void load_kart_texture(Player*, s8, s8, s8, s8);
void func_80027560(Player*, s8, s8, s8, s8);
void load_kart_texture_non_blocking(Player*, s8, s8, s8, s8);
void load_kart_palette(Player*, s8, s8, s8);
void func_80027BDC(Player*, s32, void*, u16);
void func_80027C74(Player*, s32, void*, u16);
+4 -4
View File
@@ -976,8 +976,8 @@ void func_8002934C(Player *player, Camera *camera, s8 screenId, s8 playerId) {
D_80165190[screenId][playerId] = 1;
if ((player->effects & 0x80) || (player->effects & 0x40)) {
if ((player->animFrameSelector[screenId] == D_801650D0[screenId][playerId])
&& (player->animGroupSelector[screenId] == D_80165110[screenId][playerId])) {
if ((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId])
&& (player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) {
player->unk_002 &= ~(1 << (screenId * 4));
D_80165190[screenId][playerId] = 1;
}
@@ -986,11 +986,11 @@ void func_8002934C(Player *player, Camera *camera, s8 screenId, s8 playerId) {
}
} else {
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)) {
if (((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) && (player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) && ((D_80165190[screenId][playerId]) == 0)) {
player->unk_002 &= ~(1 << (screenId * 4));
}
}
temp_a0_2 = D_801650D0[screenId][playerId] - player->animFrameSelector[screenId];
temp_a0_2 = gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId];
if ((temp_a0_2 >= 0x14) || (temp_a0_2 < (-0x13))) {
player->unk_002 |= 1 << (screenId * 4);
}
+173 -170
View File
@@ -34,14 +34,14 @@ UNUSED void *D_800DDB5C[3] = {
gFramebuffer0, gFramebuffer1, gFramebuffer2
};
s16 D_80164AB0[8];
s16 D_80164AC0[8];
Player *D_80164AD0[8];
s16 gPlayersToRenderPlayerId[8];
s16 gPlayersToRenderScreenId[8];
Player *gPlayersToRenderPlayer[8];
s16 gMatrixEffectCount;
s32 D_80164AF4[3];
struct_D_802F1F80 *gPlayerPalette;
u8 *D_80164B08;
u8 *D_80164B0C;
u8 *sKartUpperTexture;
u8 *sKartLowerTexture;
u16 gPlayerRedEffect[8];
u16 gPlayerGreenEffect[8];
u16 gPlayerBlueEffect[8];
@@ -53,8 +53,8 @@ UNUSED u16 gPlayerWhiteEffect[8];
s32 D_80164B80[296];
s16 D_80165020[40];
Vec3f D_80165070[8];
s16 D_801650D0[4][8];
s16 D_80165110[4][8];
s16 gLastAnimFrameSelector[4][8];
s16 gLastAnimGroupSelector[4][8];
s16 D_80165150[4][8];
s16 D_80165190[4][8];
s16 D_801651D0[4][8];
@@ -170,6 +170,9 @@ u16 func_8001FD78(Player *player, f32 posX, UNUSED f32 arg2, f32 posZ) {
return ret;
}
/**
* @brief one of his function is to put the frame to load in to a list to load it to be only applied for the next frame
*/
void init_render_player(Player *player, Camera *camera, s8 playerId, s8 screenId) {
UNUSED s32 pad[4];
s32 sp4C;
@@ -195,13 +198,13 @@ void init_render_player(Player *player, Camera *camera, s8 playerId, s8 screenId
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) screenId;
D_80164AD0[gPlayersToRenderCount] = player;
gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId;
gPlayersToRenderScreenId[gPlayersToRenderCount] = (s16) screenId;
gPlayersToRenderPlayer[gPlayersToRenderCount] = player;
gPlayersToRenderCount += 1;
D_80165190[screenId][playerId] = 0;
D_801650D0[screenId][playerId] = player->animFrameSelector[screenId];
D_80165110[screenId][playerId] = player->animGroupSelector[screenId];
gLastAnimFrameSelector[screenId][playerId] = player->animFrameSelector[screenId];
gLastAnimGroupSelector[screenId][playerId] = player->animGroupSelector[screenId];
D_80165150[screenId][playerId] = player->unk_0A8;
D_801651D0[screenId][playerId] += 1;
if (D_801651D0[screenId][playerId] == 2) {
@@ -209,13 +212,13 @@ void init_render_player(Player *player, Camera *camera, s8 playerId, s8 screenId
}
} else {
if ((check_player_camera_collision(player, camera, D_80165574 + sp4C, D_80165576) == 1) & 0xFFFF) {
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) screenId;
D_80164AD0[gPlayersToRenderCount] = player;
if ((sRenderingFramebuffer == gRenderingFramebufferByPlayer[playerId]) || ((gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]) > 0x13) || ((gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]) < -0x13) || (D_80165190[screenId][playerId] == (s16) 1U)) {
gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId;
gPlayersToRenderScreenId[gPlayersToRenderCount] = (s16) screenId;
gPlayersToRenderPlayer[gPlayersToRenderCount] = player;
gPlayersToRenderCount += 1;
D_801650D0[screenId][playerId] = player->animFrameSelector[screenId];
D_80165110[screenId][playerId] = player->animGroupSelector[screenId];
gLastAnimFrameSelector[screenId][playerId] = player->animFrameSelector[screenId];
gLastAnimGroupSelector[screenId][playerId] = player->animGroupSelector[screenId];
D_80165150[screenId][playerId] = player->unk_0A8;
D_80165190[screenId][playerId] = 0;
D_801651D0[screenId][playerId] += 1;
@@ -225,13 +228,13 @@ void init_render_player(Player *player, Camera *camera, s8 playerId, s8 screenId
}
} else {
if ((
(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) screenId;
D_80164AD0[gPlayersToRenderCount] = player;
(gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]) > 0x13) || ((gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId]) < -0x13) || (D_80165190[screenId][playerId] == (s16) 1U)) {
gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId;
gPlayersToRenderScreenId[gPlayersToRenderCount] = (s16) screenId;
gPlayersToRenderPlayer[gPlayersToRenderCount] = player;
gPlayersToRenderCount += 1;
D_801650D0[screenId][playerId] = (s16) player->animFrameSelector[screenId];
D_80165110[screenId][playerId] = player->animGroupSelector[screenId];
gLastAnimFrameSelector[screenId][playerId] = (s16) player->animFrameSelector[screenId];
gLastAnimGroupSelector[screenId][playerId] = player->animGroupSelector[screenId];
D_80165150[screenId][playerId] = player->unk_0A8;
D_80165190[screenId][playerId] = 0;
D_801651D0[screenId][playerId] += 1;
@@ -245,96 +248,96 @@ void init_render_player(Player *player, Camera *camera, s8 playerId, s8 screenId
}
}
void func_80020524(void) {
void load_kart_texture_and_render_kart_particle_on_screen_one(void) {
s16 i;
func_80027560(D_80164AD0[0], D_80164AB0[0], D_80164AC0[0], D_80164AC0[0], D_801651D0[D_80164AC0[0]][D_80164AB0[0]]);
func_8006E5AC(gPlayerOneCopy, 0, 0);
func_8006E5AC(gPlayerTwo, 1, 0);
func_8006E5AC(gPlayerThree, 2, 0);
func_8006E5AC(gPlayerFour, 3, 0);
load_kart_texture_non_blocking(gPlayersToRenderPlayer[0], gPlayersToRenderPlayerId[0], gPlayersToRenderScreenId[0], gPlayersToRenderScreenId[0], D_801651D0[gPlayersToRenderScreenId[0]][gPlayersToRenderPlayerId[0]]);
render_kart_particle_on_screen_one(gPlayerOneCopy, PLAYER_ONE, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerTwo, PLAYER_TWO, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerThree, PLAYER_THREE, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerFour, PLAYER_FOUR, PLAYER_ONE);
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
func_8006E5AC(gPlayerFive, 4, 0);
func_8006E5AC(gPlayerSix, 5, 0);
func_8006E5AC(gPlayerSeven, 6, 0);
func_8006E5AC(gPlayerEight, 7, 0);
render_kart_particle_on_screen_one(gPlayerFive, PLAYER_FIVE, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerSix, PLAYER_SIX, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerSeven, PLAYER_SEVEN, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerEight, PLAYER_EIGHT, PLAYER_ONE);
}
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
for (i = 1; i < gPlayersToRenderCount; i++) {
func_80027560(D_80164AD0[i], D_80164AB0[i], D_80164AC0[i], D_80164AC0[i], D_801651D0[D_80164AC0[i]][D_80164AB0[i]]);
load_kart_texture_non_blocking(gPlayersToRenderPlayer[i], gPlayersToRenderPlayerId[i], gPlayersToRenderScreenId[i], gPlayersToRenderScreenId[i], D_801651D0[gPlayersToRenderScreenId[i]][gPlayersToRenderPlayerId[i]]);
mio0decode((u8*) D_802DFB80[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].unk_00,
D_802BFB80.arraySize8[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].pixel_index_array);
mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[i - 1]][gPlayersToRenderPlayerId[i - 1]]][gPlayersToRenderScreenId[i - 1]][gPlayersToRenderPlayerId[i - 1]].unk_00,
D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[i - 1]][gPlayersToRenderPlayerId[i - 1]]][gPlayersToRenderScreenId[i - 1]][gPlayersToRenderPlayerId[i - 1]].pixel_index_array);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
mio0decode((u8*) D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00,
D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array);
mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]].unk_00,
D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]].pixel_index_array);
}
void func_8002088C(void) {
void load_kart_texture_and_render_kart_particle_on_screen_two(void) {
s16 var_s0;
func_80027560(D_80164AD0[0], D_80164AB0[0], D_80164AC0[0], D_80164AC0[0], D_801651D0[D_80164AC0[0]][D_80164AB0[0]]);
func_8006E634(gPlayerOneCopy, 0, 1);
func_8006E634(gPlayerTwo, 1, 1);
func_8006E634(gPlayerThree, 2, 1);
func_8006E634(gPlayerFour, 3, 1);
load_kart_texture_non_blocking(gPlayersToRenderPlayer[0], gPlayersToRenderPlayerId[0], gPlayersToRenderScreenId[0], gPlayersToRenderScreenId[0], D_801651D0[gPlayersToRenderScreenId[0]][gPlayersToRenderPlayerId[0]]);
render_kart_particle_on_screen_two(gPlayerOneCopy, PLAYER_ONE, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerTwo, PLAYER_TWO, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerThree, PLAYER_THREE, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerFour, PLAYER_FOUR, PLAYER_TWO);
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
func_8006E634(gPlayerFive, 4, 1);
func_8006E634(gPlayerSix, 5, 1);
func_8006E634(gPlayerSeven, 6, 1);
func_8006E634(gPlayerEight, 7, 1);
render_kart_particle_on_screen_two(gPlayerFive, PLAYER_FIVE, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerSix, PLAYER_SIX, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerSeven, PLAYER_SEVEN, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerEight, PLAYER_EIGHT, PLAYER_TWO);
}
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
for (var_s0 = 1; var_s0 < gPlayersToRenderCount; var_s0++) {
func_80027560(D_80164AD0[var_s0], D_80164AB0[var_s0], D_80164AC0[var_s0], D_80164AC0[var_s0], D_801651D0[D_80164AC0[var_s0]][D_80164AB0[var_s0]]);
mio0decode((u8*) D_802DFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]].unk_00,
D_802BFB80.arraySize8[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]].pixel_index_array);
load_kart_texture_non_blocking(gPlayersToRenderPlayer[var_s0], gPlayersToRenderPlayerId[var_s0], gPlayersToRenderScreenId[var_s0], gPlayersToRenderScreenId[var_s0], D_801651D0[gPlayersToRenderScreenId[var_s0]][gPlayersToRenderPlayerId[var_s0]]);
mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]].unk_00,
D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]].pixel_index_array);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
mio0decode((u8*) D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00,
D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array);
mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]].unk_00,
D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]].pixel_index_array);
}
void func_80020BF4(void) {
void load_kart_texture_and_render_kart_particle_on_screen_three(void) {
s16 var_s0;
func_80027560(D_80164AD0[0], D_80164AB0[0] + 4, D_80164AC0[0], D_80164AC0[0] - 2, D_801651D0[D_80164AC0[0]][D_80164AB0[0]]);
func_8006E6BC(gPlayerOneCopy, 0, 2);
func_8006E6BC(gPlayerTwo, 1, 2);
func_8006E6BC(gPlayerThree, 2, 2);
func_8006E6BC(gPlayerFour, 3, 2);
load_kart_texture_non_blocking(gPlayersToRenderPlayer[0], gPlayersToRenderPlayerId[0] + 4, gPlayersToRenderScreenId[0], gPlayersToRenderScreenId[0] - 2, D_801651D0[gPlayersToRenderScreenId[0]][gPlayersToRenderPlayerId[0]]);
render_kart_particle_on_screen_three(gPlayerOneCopy, PLAYER_ONE, PLAYER_THREE);
render_kart_particle_on_screen_three(gPlayerTwo, PLAYER_TWO, PLAYER_THREE);
render_kart_particle_on_screen_three(gPlayerThree, PLAYER_THREE, PLAYER_THREE);
render_kart_particle_on_screen_three(gPlayerFour, PLAYER_FOUR, PLAYER_THREE);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
for (var_s0 = 1; var_s0 < gPlayersToRenderCount; var_s0++) {
func_80027560(D_80164AD0[var_s0], D_80164AB0[var_s0] + 4, D_80164AC0[var_s0], D_80164AC0[var_s0] - 2, D_801651D0[D_80164AC0[var_s0]][D_80164AB0[var_s0]]);
mio0decode((u8*) D_802DFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].unk_00,
D_802BFB80.arraySize8[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array);
load_kart_texture_non_blocking(gPlayersToRenderPlayer[var_s0], gPlayersToRenderPlayerId[var_s0] + 4, gPlayersToRenderScreenId[var_s0], gPlayersToRenderScreenId[var_s0] - 2, D_801651D0[gPlayersToRenderScreenId[var_s0]][gPlayersToRenderPlayerId[var_s0]]);
mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1] - 2][gPlayersToRenderPlayerId[var_s0 - 1] + 4].unk_00,
D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1] - 2][gPlayersToRenderPlayerId[var_s0 - 1] + 4].pixel_index_array);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
mio0decode((u8*) D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00,
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);
mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1] - 2][gPlayersToRenderPlayerId[gPlayersToRenderCount-1] + 4].unk_00,
D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1] - 2][gPlayersToRenderPlayerId[gPlayersToRenderCount-1] + 4].pixel_index_array);
}
void func_80020F1C(void) {
void load_kart_texture_and_render_kart_particle_on_screen_four(void) {
s16 var_s0;
func_80027560(D_80164AD0[0], D_80164AB0[0] + 4, D_80164AC0[0], D_80164AC0[0] - 2, D_801651D0[D_80164AC0[0]][D_80164AB0[0]]);
func_8006E744(gPlayerOneCopy, 0, 3);
func_8006E744(gPlayerTwo, 1, 3);
func_8006E744(gPlayerThree, 2, 3);
func_8006E744(gPlayerFour, 3, 3);
load_kart_texture_non_blocking(gPlayersToRenderPlayer[0], gPlayersToRenderPlayerId[0] + 4, gPlayersToRenderScreenId[0], gPlayersToRenderScreenId[0] - 2, D_801651D0[gPlayersToRenderScreenId[0]][gPlayersToRenderPlayerId[0]]);
render_kart_particle_on_screen_four(gPlayerOneCopy, PLAYER_ONE, PLAYER_FOUR);
render_kart_particle_on_screen_four(gPlayerTwo, PLAYER_TWO, PLAYER_FOUR);
render_kart_particle_on_screen_four(gPlayerThree, PLAYER_THREE, PLAYER_FOUR);
render_kart_particle_on_screen_four(gPlayerFour, PLAYER_FOUR, PLAYER_FOUR);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
for (var_s0 = 1; var_s0 < gPlayersToRenderCount; var_s0++) {
func_80027560(D_80164AD0[var_s0], D_80164AB0[var_s0] + 4, D_80164AC0[var_s0], D_80164AC0[var_s0] - 2, D_801651D0[D_80164AC0[var_s0]][D_80164AB0[var_s0]]);
mio0decode((u8*) D_802DFB80[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].unk_00,
D_802BFB80.arraySize8[D_801651D0[D_80164AC0[var_s0 - 1]][D_80164AB0[var_s0 - 1]]][D_80164AC0[var_s0 - 1] - 2][D_80164AB0[var_s0 - 1] + 4].pixel_index_array);
load_kart_texture_non_blocking(gPlayersToRenderPlayer[var_s0], gPlayersToRenderPlayerId[var_s0] + 4, gPlayersToRenderScreenId[var_s0], gPlayersToRenderScreenId[var_s0] - 2, D_801651D0[gPlayersToRenderScreenId[var_s0]][gPlayersToRenderPlayerId[var_s0]]);
mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1] - 2][gPlayersToRenderPlayerId[var_s0 - 1] + 4].unk_00,
D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[var_s0 - 1]][gPlayersToRenderPlayerId[var_s0 - 1]]][gPlayersToRenderScreenId[var_s0 - 1] - 2][gPlayersToRenderPlayerId[var_s0 - 1] + 4].pixel_index_array);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
mio0decode((u8*) D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00,
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);
mio0decode((u8*) gEncodedKartTexture[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1] - 2][gPlayersToRenderPlayerId[gPlayersToRenderCount-1] + 4].unk_00,
D_802BFB80.arraySize8[D_801651D0[gPlayersToRenderScreenId[gPlayersToRenderCount-1]][gPlayersToRenderPlayerId[gPlayersToRenderCount-1]]][gPlayersToRenderScreenId[gPlayersToRenderCount-1] - 2][gPlayersToRenderPlayerId[gPlayersToRenderCount-1] + 4].pixel_index_array);
}
void try_rendering_player(Player *player, s8 playerId, s8 arg2) {
@@ -359,38 +362,38 @@ void render_players_on_screen_one(void) {
};
gPlayersToRenderCount = 0;
init_render_player(gPlayerOneCopy, camera1, 0U, 0U);
init_render_player(gPlayerTwo, camera1, 1U, 0U);
init_render_player(gPlayerThree, camera1, 2U, 0U);
init_render_player(gPlayerFour, camera1, 3U, 0U);
init_render_player(gPlayerOneCopy, camera1, PLAYER_ONE, PLAYER_ONE);
init_render_player(gPlayerTwo, camera1, PLAYER_TWO, PLAYER_ONE);
init_render_player(gPlayerThree, camera1, PLAYER_THREE, PLAYER_ONE);
init_render_player(gPlayerFour, camera1, PLAYER_FOUR, PLAYER_ONE);
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
init_render_player(gPlayerFive, camera1, 4U, 0U);
init_render_player(gPlayerSix, camera1, 5U, 0U);
init_render_player(gPlayerSeven, camera1, 6U, 0U);
init_render_player(gPlayerEight, camera1, 7U, 0U);
init_render_player(gPlayerFive, camera1, PLAYER_FIVE, PLAYER_ONE);
init_render_player(gPlayerSix, camera1, PLAYER_SIX, PLAYER_ONE);
init_render_player(gPlayerSeven, camera1, PLAYER_SEVEN, PLAYER_ONE);
init_render_player(gPlayerEight, camera1, PLAYER_EIGHT, PLAYER_ONE);
}
try_rendering_player(gPlayerOne, 0U, 0U);
try_rendering_player(gPlayerTwo, 1U, 0U);
try_rendering_player(gPlayerThree, 2U, 0U);
try_rendering_player(gPlayerFour, 3U, 0U);
try_rendering_player(gPlayerOne, PLAYER_ONE, PLAYER_ONE);
try_rendering_player(gPlayerTwo, PLAYER_TWO, PLAYER_ONE);
try_rendering_player(gPlayerThree, PLAYER_THREE, PLAYER_ONE);
try_rendering_player(gPlayerFour, PLAYER_FOUR, PLAYER_ONE);
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
try_rendering_player(gPlayerFive, 4U, 0U);
try_rendering_player(gPlayerSix, 5U, 0U);
try_rendering_player(gPlayerSeven, 6U, 0U);
try_rendering_player(gPlayerEight, 7U, 0U);
try_rendering_player(gPlayerFive, PLAYER_FIVE, PLAYER_ONE);
try_rendering_player(gPlayerSix, PLAYER_SIX, PLAYER_ONE);
try_rendering_player(gPlayerSeven, PLAYER_SEVEN, PLAYER_ONE);
try_rendering_player(gPlayerEight, PLAYER_EIGHT, PLAYER_ONE);
}
if (gPlayersToRenderCount != 0) {
func_80020524();
load_kart_texture_and_render_kart_particle_on_screen_one();
} else {
func_8006E5AC(gPlayerOneCopy, 0, 0);
func_8006E5AC(gPlayerTwo, 1, 0);
func_8006E5AC(gPlayerThree, 2, 0);
func_8006E5AC(gPlayerFour, 3, 0);
render_kart_particle_on_screen_one(gPlayerOneCopy, PLAYER_ONE, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerTwo, PLAYER_TWO, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerThree, PLAYER_THREE, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerFour, PLAYER_FOUR, PLAYER_ONE);
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
func_8006E5AC(gPlayerFive, 4, 0);
func_8006E5AC(gPlayerSix, 5, 0);
func_8006E5AC(gPlayerSeven, 6, 0);
func_8006E5AC(gPlayerEight, 7, 0);
render_kart_particle_on_screen_one(gPlayerFive, PLAYER_FIVE, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerSix, PLAYER_SIX, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerSeven, PLAYER_SEVEN, PLAYER_ONE);
render_kart_particle_on_screen_one(gPlayerEight, PLAYER_EIGHT, PLAYER_ONE);
}
}
gPlayersToRenderCount = 0;
@@ -528,38 +531,38 @@ s32 maybeCompilerPadding = 0;
void render_players_on_screen_two(void) {
gPlayersToRenderCount = 0;
init_render_player(gPlayerOneCopy, camera2, 0, 1);
init_render_player(gPlayerTwo, camera2, 1, 1);
init_render_player(gPlayerThree, camera2, 2, 1);
init_render_player(gPlayerFour, camera2, 3, 1);
init_render_player(gPlayerOneCopy, camera2, PLAYER_ONE, PLAYER_TWO);
init_render_player(gPlayerTwo, camera2, PLAYER_TWO, PLAYER_TWO);
init_render_player(gPlayerThree, camera2, PLAYER_THREE, PLAYER_TWO);
init_render_player(gPlayerFour, camera2, PLAYER_FOUR, PLAYER_TWO);
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
init_render_player(gPlayerFive, camera2, 4, 1);
init_render_player(gPlayerSix, camera2, 5, 1);
init_render_player(gPlayerSeven, camera2, 6, 1);
init_render_player(gPlayerEight, camera2, 7, 1);
init_render_player(gPlayerFive, camera2, PLAYER_FIVE, PLAYER_TWO);
init_render_player(gPlayerSix, camera2, PLAYER_SIX, PLAYER_TWO);
init_render_player(gPlayerSeven, camera2, PLAYER_SEVEN, PLAYER_TWO);
init_render_player(gPlayerEight, camera2, PLAYER_EIGHT, PLAYER_TWO);
}
try_rendering_player(gPlayerOne, 0, 1);
try_rendering_player(gPlayerTwo, 1, 1);
try_rendering_player(gPlayerThree, 2, 1);
try_rendering_player(gPlayerFour, 3, 1);
try_rendering_player(gPlayerOne, PLAYER_ONE, PLAYER_TWO);
try_rendering_player(gPlayerTwo, PLAYER_TWO, PLAYER_TWO);
try_rendering_player(gPlayerThree, PLAYER_THREE, PLAYER_TWO);
try_rendering_player(gPlayerFour, PLAYER_FOUR, PLAYER_TWO);
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
try_rendering_player(gPlayerFive, 4, 1);
try_rendering_player(gPlayerSix, 5, 1);
try_rendering_player(gPlayerSeven, 6, 1);
try_rendering_player(gPlayerEight, 7, 1);
try_rendering_player(gPlayerFive, PLAYER_FIVE, PLAYER_TWO);
try_rendering_player(gPlayerSix, PLAYER_SIX, PLAYER_TWO);
try_rendering_player(gPlayerSeven, PLAYER_SEVEN, PLAYER_TWO);
try_rendering_player(gPlayerEight, PLAYER_EIGHT, PLAYER_TWO);
}
if (gPlayersToRenderCount != 0) {
func_8002088C();
load_kart_texture_and_render_kart_particle_on_screen_two();
} else {
func_8006E634(gPlayerOneCopy, 0, 1);
func_8006E634(gPlayerTwo, 1, 1);
func_8006E634(gPlayerThree, 2, 1);
func_8006E634(gPlayerFour, 3, 1);
render_kart_particle_on_screen_two(gPlayerOneCopy, PLAYER_ONE, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerTwo, PLAYER_TWO, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerThree, PLAYER_THREE, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerFour, PLAYER_FOUR, PLAYER_TWO);
if (gActiveScreenMode != SCREEN_MODE_3P_4P_SPLITSCREEN) {
func_8006E634(gPlayerFive, 4, 1);
func_8006E634(gPlayerSix, 5, 1);
func_8006E634(gPlayerSeven, 6, 1);
func_8006E634(gPlayerEight, 7, 1);
render_kart_particle_on_screen_two(gPlayerFive, PLAYER_FIVE, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerSix, PLAYER_SIX, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerSeven, PLAYER_SEVEN, PLAYER_TWO);
render_kart_particle_on_screen_two(gPlayerEight, PLAYER_EIGHT, PLAYER_TWO);
}
}
gPlayersToRenderCount = 0;
@@ -567,42 +570,42 @@ void render_players_on_screen_two(void) {
void render_players_on_screen_three(void) {
gPlayersToRenderCount = 0;
init_render_player(gPlayerOneCopy, camera3, 0, 2);
init_render_player(gPlayerTwo, camera3, 1, 2);
init_render_player(gPlayerThree, camera3, 2, 2);
init_render_player(gPlayerFour, camera3, 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);
init_render_player(gPlayerOneCopy, camera3, PLAYER_ONE, PLAYER_THREE);
init_render_player(gPlayerTwo, camera3, PLAYER_TWO, PLAYER_THREE);
init_render_player(gPlayerThree, camera3, PLAYER_THREE, PLAYER_THREE);
init_render_player(gPlayerFour, camera3, PLAYER_FOUR, PLAYER_THREE);
try_rendering_player(gPlayerOne, PLAYER_ONE, PLAYER_THREE);
try_rendering_player(gPlayerTwo, PLAYER_TWO, PLAYER_THREE);
try_rendering_player(gPlayerThree, PLAYER_THREE, PLAYER_THREE);
try_rendering_player(gPlayerFour, PLAYER_FOUR, PLAYER_THREE);
if (gPlayersToRenderCount != 0) {
func_80020BF4();
load_kart_texture_and_render_kart_particle_on_screen_three();
} else {
func_8006E6BC(gPlayerOneCopy, 0, 2);
func_8006E6BC(gPlayerTwo, 1, 2);
func_8006E6BC(gPlayerThree, 2, 2);
func_8006E6BC(gPlayerFour, 3, 2);
render_kart_particle_on_screen_three(gPlayerOneCopy, PLAYER_ONE, PLAYER_THREE);
render_kart_particle_on_screen_three(gPlayerTwo, PLAYER_TWO, PLAYER_THREE);
render_kart_particle_on_screen_three(gPlayerThree, PLAYER_THREE, PLAYER_THREE);
render_kart_particle_on_screen_three(gPlayerFour, PLAYER_FOUR, PLAYER_THREE);
}
gPlayersToRenderCount = 0;
}
void render_players_on_screen_four(void) {
gPlayersToRenderCount = 0;
init_render_player(gPlayerOneCopy, camera4, 0, 3);
init_render_player(gPlayerTwo, camera4, 1, 3);
init_render_player(gPlayerThree, camera4, 2, 3);
init_render_player(gPlayerFour, camera4, 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);
init_render_player(gPlayerOneCopy, camera4, PLAYER_ONE, PLAYER_FOUR);
init_render_player(gPlayerTwo, camera4, PLAYER_TWO, PLAYER_FOUR);
init_render_player(gPlayerThree, camera4, PLAYER_THREE, PLAYER_FOUR);
init_render_player(gPlayerFour, camera4, PLAYER_FOUR, PLAYER_FOUR);
try_rendering_player(gPlayerOne, PLAYER_ONE, PLAYER_FOUR);
try_rendering_player(gPlayerTwo, PLAYER_TWO, PLAYER_FOUR);
try_rendering_player(gPlayerThree, PLAYER_THREE, PLAYER_FOUR);
try_rendering_player(gPlayerFour, PLAYER_FOUR, PLAYER_FOUR);
if (gPlayersToRenderCount != 0) {
func_80020F1C();
load_kart_texture_and_render_kart_particle_on_screen_four();
} else {
func_8006E744(gPlayerOneCopy, 0, 3);
func_8006E744(gPlayerTwo, 1, 3);
func_8006E744(gPlayerThree, 2, 3);
func_8006E744(gPlayerFour, 3, 3);
render_kart_particle_on_screen_four(gPlayerOneCopy, PLAYER_ONE, PLAYER_FOUR);
render_kart_particle_on_screen_four(gPlayerTwo, PLAYER_TWO, PLAYER_FOUR);
render_kart_particle_on_screen_four(gPlayerThree, PLAYER_THREE, PLAYER_FOUR);
render_kart_particle_on_screen_four(gPlayerFour, PLAYER_FOUR, PLAYER_FOUR);
}
gPlayersToRenderCount = 0;
}
@@ -1416,11 +1419,11 @@ void render_kart(Player *player, s8 playerId, s8 arg2, s8 arg3) {
gPlayerPalette = (struct_D_802F1F80 *) &D_802F1F80[D_801651D0[arg2][playerId]][arg2][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];
sKartUpperTexture = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][playerId].pixel_index_array[0];
sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2][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];
sKartUpperTexture = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0];
sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0];
}
mtxf_translate_rotate(sp1A4, sp154, sp14C);
mtxf_scale2(sp1A4, gCharacterSize[player->characterId] * player->size);
@@ -1490,11 +1493,11 @@ void render_kart(Player *player, s8 playerId, s8 arg2, s8 arg3) {
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
}
gDPLoadTextureBlock(gDisplayListHead++, D_80164B08, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gDPLoadTextureBlock(gDisplayListHead++, D_80164B0C, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, sKartLowerTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3 + 4], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
@@ -1534,11 +1537,11 @@ void render_ghost(Player *player, s8 playerId, s8 screenId, s8 arg3) {
gPlayerPalette = (struct_D_802F1F80 *) &D_802F1F80[D_801651D0[screenId][playerId]][screenId][playerId * 0x100];
#endif
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];
sKartUpperTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0];
sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array[0x7C0];
} else {
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];
sKartUpperTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0];
sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0x7C0];
}
mtxf_translate_rotate(sp12C, spDC, spD4);
@@ -1560,11 +1563,11 @@ void render_ghost(Player *player, s8 playerId, s8 screenId, s8 arg3) {
);
gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
gDPLoadTextureBlock(gDisplayListHead++, D_80164B08, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gDPLoadTextureBlock(gDisplayListHead++, D_80164B0C, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, sKartLowerTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3 + 4], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
@@ -1601,11 +1604,11 @@ void func_80025DE8(Player *player, s8 playerId, s8 screenId, s8 arg3) {
);
gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
gDPLoadTextureBlock(gDisplayListHead++, D_80164B08, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gDPLoadTextureBlock(gDisplayListHead++, D_80164B0C, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, sKartLowerTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3 + 4], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
@@ -1646,10 +1649,10 @@ void render_player_ice_reflection(Player *player, s8 playerId, s8 screenId, s8 a
(s16) player->unk_0C6 / 2
);
gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2);
gDPLoadTextureBlock(gDisplayListHead++, D_80164B08, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, sKartUpperTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gDPLoadTextureBlock(gDisplayListHead++, D_80164B0C, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gDPLoadTextureBlock(gDisplayListHead++, sKartLowerTexture, G_IM_FMT_CI, G_IM_SIZ_8b, 64, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPVertex(gDisplayListHead++, &D_800DDBB4[playerId][arg3 + 4], 4, 0);
gSPDisplayList(gDisplayListHead++, common_square_plain_render);
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
@@ -1723,8 +1726,8 @@ void func_80026A48(Player *player, s8 arg1) {
#endif
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_t0 = gLastAnimFrameSelector[screenId][playerId];
s16 temp_t1 = gLastAnimGroupSelector[screenId][playerId];
s16 temp_t2 = player->unk_240;
s16 temp_num = 0x40; // setting this as a variable gets rid of regalloc
+11 -11
View File
@@ -14,10 +14,10 @@ void func_8001F9E4(Player*, Camera*, s8);
u16 check_player_camera_collision(Player*, Camera*, f32, f32);
u16 func_8001FD78(Player*, f32, f32, f32);
void init_render_player(Player*, Camera*, s8, s8);
void func_80020524(void);
void func_8002088C(void);
void func_80020BF4(void);
void func_80020F1C(void);
void load_kart_texture_and_render_kart_particle_on_screen_one(void);
void load_kart_texture_and_render_kart_particle_on_screen_two(void);
void load_kart_texture_and_render_kart_particle_on_screen_three(void);
void load_kart_texture_and_render_kart_particle_on_screen_four(void);
void try_rendering_player(Player*, s8, s8);
void render_players_on_screen_one(void);
void render_players_on_screen_two(void);
@@ -68,14 +68,14 @@ void func_80027024(s32, s32, s32);
/* This is where I'd put my static data, if I had any */
extern struct_D_802F1F80 *gPlayerPalette;
extern u8 *D_80164B08;
extern u8 *D_80164B0C;
extern u8 *sKartUpperTexture;
extern u8 *sKartLowerTexture;
extern s32 D_80164A28;
extern s16 D_80164AB0[];
extern s16 gPlayersToRenderPlayerId[];
extern s16 D_80164ABE[];
extern s16 D_80164AC0[];
extern Player *D_80164AD0[];
extern s16 gPlayersToRenderScreenId[];
extern Player *gPlayersToRenderPlayer[];
extern s16 gMatrixEffectCount;
extern u16 gPlayerRedEffect[];
extern u16 gPlayerGreenEffect[];
@@ -281,8 +281,8 @@ extern u8 *gKartWario189Wheel0[];
extern s16 D_80165020[40];
extern Vec3f D_80165070[8];
extern s16 D_801650D0[4][8];
extern s16 D_80165110[4][8];
extern s16 gLastAnimFrameSelector[4][8];
extern s16 gLastAnimGroupSelector[4][8];
extern s16 D_80165150[4][8];
extern s16 D_80165190[4][8];
extern s16 D_801651D0[4][8];
+12 -12
View File
@@ -250,14 +250,14 @@ void spawn_player(Player *player, s8 playerIndex, f32 startingRow, f32 startingC
idx = playerIndex;
D_801650D0[0][idx] = 0;
D_801650D0[1][idx] = 0;
D_801650D0[2][idx] = 0;
D_801650D0[3][idx] = 0;
D_80165110[0][idx] = 0;
D_80165110[1][idx] = 0;
D_80165110[2][idx] = 0;
D_80165110[3][idx] = 0;
gLastAnimFrameSelector[0][idx] = 0;
gLastAnimFrameSelector[1][idx] = 0;
gLastAnimFrameSelector[2][idx] = 0;
gLastAnimFrameSelector[3][idx] = 0;
gLastAnimGroupSelector[0][idx] = 0;
gLastAnimGroupSelector[1][idx] = 0;
gLastAnimGroupSelector[2][idx] = 0;
gLastAnimGroupSelector[3][idx] = 0;
D_80165190[0][idx] = 0;
D_80165190[1][idx] = 0;
D_80165190[2][idx] = 0;
@@ -1080,16 +1080,16 @@ void func_8003CD98(Player *player, Camera *camera, s8 playerId, s8 screenId) {
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]);
mio0decode((u8 *) &gEncodedKartTexture[0][screenId][playerId], (u8 *) &D_802BFB80.arraySize8[0][screenId][playerId]);
} else {
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]);
mio0decode((u8 *) &gEncodedKartTexture[0][screenId - 2][playerId + 4], (u8 *) &D_802BFB80.arraySize8[0][screenId - 2][playerId + 4]);
}
D_801650D0[screenId][playerId] = player->animFrameSelector[screenId];
D_80165110[screenId][playerId] = player->animGroupSelector[screenId];
gLastAnimFrameSelector[screenId][playerId] = player->animFrameSelector[screenId];
gLastAnimGroupSelector[screenId][playerId] = player->animGroupSelector[screenId];
D_80165150[screenId][playerId] = player->unk_0A8;
D_801651D0[screenId][playerId] = 0;
render_player(player, playerId, screenId);