mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-05-23 06:54:37 -04:00
Fix menu bug & kart textures (#32)
* Fix menu bug * Fix undefined behaviour * Fix kart textures * Fix boost texture * Rename as per review * Fix buffer overflows --------- Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
This commit is contained in:
+2
-2
@@ -36,8 +36,8 @@ typedef union {
|
||||
* Likely over-sized due to encoded textures having variable size
|
||||
*/
|
||||
typedef struct {
|
||||
char unk_00[0x920];
|
||||
} struct_D_802DFB80; // size = 0x920
|
||||
const char *unk_00; // Original 0x920 because compressed. But no longer compressed.
|
||||
} struct_D_802DFB80; // size = 0x1000
|
||||
|
||||
typedef struct {
|
||||
u16 red:5;
|
||||
|
||||
+2
-2
@@ -5228,12 +5228,12 @@ void func_80067604(Player *player, UNUSED s8 arg1, s16 arg2, s8 arg3) {
|
||||
func_800652D4(sp8C, sp84, player->unk_258[30 + arg2].unk_00C * player->size);
|
||||
if (player->unk_258[30 + arg2].unk_010 == 1) {
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, common_texture_particle_spark, G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, common_texture_particle_spark[0], G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
func_8004B72C(0x000000FF, 0x000000FF, 0x000000DF, 0x000000FF, 0x0000005F, 0, 0x00000060);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008E70);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, common_texture_particle_spark, G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, common_texture_particle_spark[0], G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
func_8004B72C(0x000000FF, 0x000000FF, 0x000000DF, 0x000000FF, 0x0000005F, 0, 0x00000060);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008E48);
|
||||
}
|
||||
|
||||
+63
-31
@@ -1401,7 +1401,8 @@ void func_80091B78(void) {
|
||||
D_8018EDF5 = 5;
|
||||
D_8018EDF6 = 10;
|
||||
if (osEepromProbe(&gSIEventMesgQueue) != 0) {
|
||||
load_save_data();
|
||||
// save data disabled for now due to array overflow
|
||||
//load_save_data();
|
||||
}
|
||||
if (func_80091D74() != 0) {
|
||||
gMenuSelection = CONTROLLER_PAK_MENU;
|
||||
@@ -1638,19 +1639,29 @@ void func_80092290(s32 arg0, s32 *arg1, s32 *arg2) {
|
||||
}
|
||||
//vtx = (Vtx *) segmented_to_virtual_dupe_2(&v1[0]);
|
||||
|
||||
|
||||
temp_v1 = (*arg1 * 2) + 2;
|
||||
|
||||
//! @bug vtx array overflow temp fix
|
||||
if ((vtx+temp_v1) >= 54) {
|
||||
return;
|
||||
}
|
||||
temp_t6 = (vtx+temp_v1)->v.cn[0] * (256 - *arg2);
|
||||
temp_t9 = (vtx+temp_v1)->v.cn[1] * (256 - *arg2);
|
||||
temp_t7 = (vtx+temp_v1)->v.cn[2] * (256 - *arg2);
|
||||
temp_t8_2 = (vtx+temp_v1)->v.cn[3] * (256 - *arg2);
|
||||
|
||||
|
||||
temp_v1 = (((*arg1 * 2) + 2) % 6) + 2;
|
||||
a = ((vtx+temp_v1)->v.cn[0] * *arg2);
|
||||
b = ((vtx+temp_v1)->v.cn[1] * *arg2);
|
||||
c = ((vtx+temp_v1)->v.cn[2] * *arg2);
|
||||
d = ((vtx+temp_v1)->v.cn[3] * *arg2);
|
||||
|
||||
//! @bug vtx array overflow temp fix
|
||||
if ((vtx+idx) >= 54) {
|
||||
return;
|
||||
}
|
||||
|
||||
(vtx+idx)->v.cn[0] = (temp_t6 + a) / 256;
|
||||
(vtx+idx)->v.cn[1] = (temp_t9 + b) / 256;
|
||||
@@ -3606,7 +3617,7 @@ void func_80099184(MkTexture *arg0)
|
||||
while (var_s1->textureData != NULL) {
|
||||
var_a1 = 0;
|
||||
for (var_v0 = 0; var_v0 < gNumD_8018E118Entries; var_v0++) {
|
||||
if ( var_s1->textureData == (thing+var_v0)->textureData) {
|
||||
if (var_s1->textureData == (thing+var_v0)->textureData) {
|
||||
var_a1 = 1;
|
||||
break;
|
||||
}
|
||||
@@ -3624,10 +3635,13 @@ void func_80099184(MkTexture *arg0)
|
||||
}
|
||||
//dma_copy_base_729a30(var_s1->textureData, var_a1_2, D_8018D9B4);
|
||||
//mio0decode(D_8018D9B4, &D_8018D9B0[gD_8018E118TotalSize]);
|
||||
memcpy(&D_8018D9B0[gD_8018E118TotalSize], var_s1->textureData, var_a1_2);
|
||||
//size_t texSize = ResourceGetTexSizeByName(var_s1->textureData);
|
||||
//memcpy(&D_8018D9B0[gD_8018E118TotalSize], var_s1->textureData, texSize);
|
||||
strcpy(&D_8018D9B0[gD_8018E118TotalSize], var_s1->textureData);
|
||||
} else {
|
||||
//dma_copy_base_729a30(var_s1->textureData, (var_s1->height * var_s1->width) * 2, &D_8018D9B0[gD_8018E118TotalSize]);
|
||||
memcpy(&D_8018D9B0[gD_8018E118TotalSize], var_s1->textureData, var_s1->width * var_s1->height*2);
|
||||
//memcpy(&D_8018D9B0[gD_8018E118TotalSize], var_s1->textureData, var_s1->width * var_s1->height*2);
|
||||
strcpy(&D_8018D9B0[gD_8018E118TotalSize], var_s1->textureData);
|
||||
}
|
||||
thing[gNumD_8018E118Entries].textureData = var_s1->textureData;
|
||||
thing[gNumD_8018E118Entries].offset = gD_8018E118TotalSize;
|
||||
@@ -3744,7 +3758,7 @@ void func_800996BC(MkTexture *arg0, s32 arg1) {
|
||||
s32 var_a1;
|
||||
u8 var_v0_2;
|
||||
MkTexture *texture;
|
||||
struct_8018E118_entry *thing;
|
||||
struct_8018E118_entry *thing = &D_8018E118[0];
|
||||
|
||||
texture = segmented_to_virtual_dupe(arg0);
|
||||
|
||||
@@ -3759,8 +3773,7 @@ void func_800996BC(MkTexture *arg0, s32 arg1) {
|
||||
while (texture->textureData != NULL) {
|
||||
var_a1 = 0;
|
||||
for (var_v0 = 0; var_v0 < gNumD_8018E118Entries; var_v0++) {
|
||||
// wtf is going on here?
|
||||
if (D_8018E118[var_v0].textureData == (*texture).textureData) {
|
||||
if (texture->textureData == (thing+var_v0)->textureData) {
|
||||
var_a1 = 1;
|
||||
break;
|
||||
}
|
||||
@@ -3807,10 +3820,8 @@ void func_800996BC(MkTexture *arg0, s32 arg1) {
|
||||
break;
|
||||
}
|
||||
|
||||
thing = &D_8018E118[gNumD_8018E118Entries];
|
||||
thing->textureData = texture->textureData;
|
||||
thing = &D_8018E118[gNumD_8018E118Entries];
|
||||
thing->offset = gD_8018E118TotalSize;
|
||||
thing[gNumD_8018E118Entries].textureData = texture->textureData;
|
||||
thing[gNumD_8018E118Entries].offset = gD_8018E118TotalSize;
|
||||
gD_8018E118TotalSize += texture->height * texture->width;
|
||||
gD_8018E118TotalSize = ((gD_8018E118TotalSize / 8) * 8) + 8;
|
||||
gNumD_8018E118Entries += 1;
|
||||
@@ -10093,19 +10104,27 @@ void func_800AAE18(struct_8018D9E0_entry *arg0) {
|
||||
* is found.
|
||||
**/
|
||||
struct_8018D9E0_entry *func_800AAE68(void) {
|
||||
struct_8018D9E0_entry *entry = D_8018D9E0;
|
||||
s32 thing = gPlayerCount - 1;
|
||||
|
||||
for(; !(entry > &D_8018D9E0[D_8018D9E0_SIZE]); entry++) {
|
||||
if ((thing + 0xB) == entry->type) {
|
||||
goto escape;
|
||||
s32 count = gPlayerCount - 1;
|
||||
for (size_t i = 0; i < ARRAY_COUNT(D_8018D9E0); i++) {
|
||||
if (D_8018D9E0[i].type == (count + 0xB)) {
|
||||
return &D_8018D9E0[i];
|
||||
}
|
||||
}
|
||||
printf("Error: func_800AAE68 returned a null value when searching id 0x%X", count+0xB);
|
||||
return NULL;
|
||||
// struct_8018D9E0_entry *entry = D_8018D9E0;
|
||||
// s32 thing = gPlayerCount - 1;
|
||||
|
||||
// Something VERY wrong has occurred
|
||||
while(true);
|
||||
escape:
|
||||
return entry;
|
||||
// for(; !(entry > &D_8018D9E0[D_8018D9E0_SIZE]); entry++) {
|
||||
// if ((thing + 0xB) == entry->type) {
|
||||
// goto escape;
|
||||
// }
|
||||
// }
|
||||
|
||||
// // Something VERY wrong has occurred
|
||||
// while(true);
|
||||
// escape:
|
||||
// return entry;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -10114,18 +10133,27 @@ escape:
|
||||
* is found.
|
||||
**/
|
||||
struct_8018D9E0_entry *func_800AAEB4(s32 arg0) {
|
||||
struct_8018D9E0_entry *entry = D_8018D9E0;
|
||||
|
||||
for(; !(entry > &D_8018D9E0[D_8018D9E0_SIZE]); entry++) {
|
||||
if ((arg0 + 0x2B) == entry->type) {
|
||||
goto escape;
|
||||
for (size_t i = 0; i < ARRAY_COUNT(D_8018D9E0); i++) {
|
||||
if (D_8018D9E0[i].type == (arg0 + 0x2B)) {
|
||||
return &D_8018D9E0[i];
|
||||
}
|
||||
}
|
||||
printf("Error: func_800AAEB4 returned a null value when searching id 0x%X", arg0+0x2B);
|
||||
return NULL;
|
||||
|
||||
// Something VERY wrong has occurred
|
||||
while(true);
|
||||
escape:
|
||||
return entry;
|
||||
// struct_8018D9E0_entry *entry = D_8018D9E0;
|
||||
|
||||
// for(; !(entry > &D_8018D9E0[D_8018D9E0_SIZE]); entry++) {
|
||||
// if ((arg0 + 0x2B) == entry->type) {
|
||||
// goto escape;
|
||||
// }
|
||||
// }
|
||||
|
||||
// // Something VERY wrong has occurred
|
||||
// while(true);
|
||||
// escape:
|
||||
// return entry;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -10140,10 +10168,11 @@ escape:
|
||||
**/
|
||||
struct_8018D9E0_entry *find_8018D9E0_entry_dupe(s32 arg0) {
|
||||
for (size_t i = 0; i < ARRAY_COUNT(D_8018D9E0); i++) {
|
||||
if (&D_8018D9E0[i].type == arg0) {
|
||||
if (D_8018D9E0[i].type == arg0) {
|
||||
return &D_8018D9E0[i];
|
||||
}
|
||||
}
|
||||
printf("Error: find_8018D9E0_entry_dupe returned a null value when searching id 0x%X", arg0);
|
||||
return NULL;
|
||||
|
||||
|
||||
@@ -10162,10 +10191,13 @@ struct_8018D9E0_entry *find_8018D9E0_entry_dupe(s32 arg0) {
|
||||
|
||||
struct_8018D9E0_entry *find_8018D9E0_entry(s32 arg0) {
|
||||
for (size_t i = 0; i < ARRAY_COUNT(D_8018D9E0); i++) {
|
||||
if (&D_8018D9E0[i].type == arg0) {
|
||||
if (D_8018D9E0[i].type == arg0) {
|
||||
return &D_8018D9E0[i];
|
||||
}
|
||||
}
|
||||
// No printf here as returning null seems to be normal game logic
|
||||
//printf("Error: find_8018D9E0_entry returned a null value when searching id 0x%X",
|
||||
// arg0);
|
||||
return NULL;
|
||||
|
||||
// struct_8018D9E0_entry *entry = D_8018D9E0;
|
||||
|
||||
+11
-60
@@ -1704,15 +1704,9 @@ u8 *gKartPalettes[] = {
|
||||
**/
|
||||
void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s8 zero) {
|
||||
s32 temp = player->effects;
|
||||
u8 *texture;
|
||||
u8 *asset;
|
||||
size_t size = 0;
|
||||
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[zero][screenId2][playerId], D_800DDEB0[player->characterId]);
|
||||
|
||||
|
||||
texture = gKartTextureTable1[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]];
|
||||
// osPiStartDma(
|
||||
// &gDmaIoMesg,
|
||||
// OS_MESG_PRI_NORMAL, OS_READ,
|
||||
@@ -1724,12 +1718,7 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
|
||||
// &gDmaMesgQueue
|
||||
// );
|
||||
//printf("T1 kart %s\n", texture);
|
||||
|
||||
//return gKartTextureTable1[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]];
|
||||
size = ResourceGetTexSizeByName(texture);
|
||||
asset = (u8 *) LOAD_ASSET(texture);
|
||||
memcpy(&D_802DFB80[zero][screenId2][playerId], asset, 0x1000);
|
||||
|
||||
D_802DFB80[zero][screenId2][playerId].unk_00 = gKartTextureTable1[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]];
|
||||
//osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
} else {
|
||||
osInvalDCache(&D_802DFB80[zero][screenId2][playerId], D_800DDEB0[player->characterId]);
|
||||
@@ -1745,12 +1734,7 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
|
||||
// D_800DDEB0[player->characterId],
|
||||
// &gDmaMesgQueue
|
||||
// );
|
||||
|
||||
texture = gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]];
|
||||
size = ResourceGetTexSizeByName(texture);
|
||||
//printf("T0 kart %s\n",texture);
|
||||
asset = (u8 *) LOAD_ASSET(texture);
|
||||
memcpy(&D_802DFB80[zero][screenId2][playerId], asset, 0x1000);
|
||||
D_802DFB80[zero][screenId2][playerId].unk_00 = gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]];
|
||||
//osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
}
|
||||
} else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || ((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000)) {
|
||||
@@ -1767,12 +1751,7 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
|
||||
// 0x900,
|
||||
// &gDmaMesgQueue
|
||||
// );
|
||||
texture = gKartTextureTumbles[player->characterId][player->unk_0A8 >> 8];
|
||||
//printf("Tum Kart %s\n",texture);
|
||||
size = ResourceGetTexSizeByName(texture);
|
||||
asset = (u8 *) LOAD_ASSET(texture);
|
||||
memcpy(&D_802DFB80[zero][screenId2][playerId], asset, 0x1000);
|
||||
|
||||
D_802DFB80[zero][screenId2][playerId].unk_00 = gKartTextureTumbles[player->characterId][player->unk_0A8 >> 8];
|
||||
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
} else {
|
||||
osInvalDCache(&D_802DFB80[zero][screenId2][playerId], D_800DDEB0[player->characterId]);
|
||||
@@ -1786,24 +1765,15 @@ void load_kart_texture(Player *player, s8 playerId, s8 screenId, s8 screenId2, s
|
||||
// )],
|
||||
// &D_802DFB80[arg4][arg3][playerId],
|
||||
// D_800DDEB0[player->characterId],
|
||||
// &gDmaMesgQueue
|
||||
// &gDmaMesgQueue
|
||||
// );
|
||||
|
||||
texture = gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]];
|
||||
//printf("T0 kart 2 %s\n", texture);
|
||||
size = ResourceGetTexSizeByName(texture);
|
||||
asset = (u8 *) LOAD_ASSET(texture);
|
||||
memcpy(&D_802DFB80[zero][screenId2][playerId], asset, 0x1000);
|
||||
|
||||
D_802DFB80[zero][screenId2][playerId].unk_00 = gKartTextureTable0[player->characterId][player->animGroupSelector[screenId]][player->animFrameSelector[screenId]];
|
||||
//osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4, size_t i) {
|
||||
s32 temp = player->effects;
|
||||
u8 *asset;
|
||||
u8 *texture;
|
||||
size_t size;
|
||||
|
||||
if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0))
|
||||
{
|
||||
@@ -1821,14 +1791,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4, size_t i)
|
||||
// D_800DDEB0[player->characterId],
|
||||
// &gDmaMesgQueue
|
||||
// );
|
||||
|
||||
texture = gKartTextureTable1[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]];
|
||||
//printf("T1 kart 2 %s\n", texture);
|
||||
size = ResourceGetTexSizeByName(texture);
|
||||
asset = (u8 *) LOAD_ASSET(texture);
|
||||
memcpy(&D_802DFB80[arg4][arg3][arg1],
|
||||
asset, size);
|
||||
|
||||
D_802DFB80[arg4][arg3][arg1].unk_00 = gKartTextureTable1[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]];
|
||||
} else {
|
||||
osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
|
||||
|
||||
@@ -1843,11 +1806,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4, size_t i)
|
||||
// D_800DDEB0[player->characterId],
|
||||
// &gDmaMesgQueue
|
||||
// );
|
||||
texture = gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]];
|
||||
//printf("T0 kart 3 %s\n", texture);
|
||||
size = ResourceGetTexSizeByName(texture);
|
||||
asset = (u8 *) LOAD_ASSET(texture);
|
||||
memcpy(&D_802DFB80[arg4][arg3][arg1], asset, size);
|
||||
D_802DFB80[arg4][arg3][arg1].unk_00 = gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]];
|
||||
}
|
||||
} else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) ||
|
||||
((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000))
|
||||
@@ -1865,11 +1824,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4, size_t i)
|
||||
// 0x900,
|
||||
// &gDmaMesgQueue
|
||||
// );
|
||||
texture = gKartTextureTumbles[player->characterId][player->unk_0A8 >> 8];
|
||||
//printf("Tum kart 2 %s\n", texture);
|
||||
size = ResourceGetTexSizeByName(texture);
|
||||
asset = (u8 *) LOAD_ASSET(texture);
|
||||
memcpy(&D_802DFB80[arg4][arg3][arg1], asset, size);
|
||||
D_802DFB80[arg4][arg3][arg1].unk_00 = gKartTextureTumbles[player->characterId][player->unk_0A8 >> 8];
|
||||
} else {
|
||||
osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
|
||||
|
||||
@@ -1884,11 +1839,7 @@ void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4, size_t i)
|
||||
// D_800DDEB0[player->characterId],
|
||||
// &gDmaMesgQueue
|
||||
// );
|
||||
texture = gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]];
|
||||
//printf("T0 kart 4 %s 0x%llX\n", texture, &D_802DFB80[arg4][arg3][arg1]);
|
||||
size = ResourceGetTexSizeByName(texture);
|
||||
asset = (u8 *) LOAD_ASSET(texture);
|
||||
memcpy(&D_802DFB80[arg4][arg3][arg1], asset, size);
|
||||
D_802DFB80[arg4][arg3][arg1].unk_00 = gKartTextureTable0[player->characterId][player->animGroupSelector[arg2]][player->animFrameSelector[arg2]];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1982,6 +1933,6 @@ void func_80027C74(UNUSED Player *player, u8 *texture, void *vAddr, u16 size) {
|
||||
// );
|
||||
|
||||
//printf("test %s\n",texture);
|
||||
//size_t textureSize = ResourceGetTexSizeByName(texture);
|
||||
memcpy(vAddr, texture, size);
|
||||
//size_t textureSize = ResourceGetTexSizeByName(texture);
|
||||
memcpy(vAddr, texture, size);
|
||||
}
|
||||
|
||||
+3
-3
@@ -1521,10 +1521,10 @@ u8 *load_lakitu_textures_x64(const char** textureList, size_t length) {
|
||||
gNextFreeMemoryAddress += size;
|
||||
size_t offset = 0;
|
||||
for (size_t i = 0; i < length; i++) {
|
||||
//u8 *tex = (u8 *) LOAD_ASSET(textureList[i]);
|
||||
u8 *tex = (u8 *) LOAD_ASSET(textureList[i]);
|
||||
size_t texSize = ResourceGetTexSizeByName(textureList[i]);
|
||||
printf("\nTEX SIZE: %X\n\n", texSize);
|
||||
memcpy(&textures[offset], textureList[i], texSize);
|
||||
//printf("\nTEX SIZE: %X\n\n", texSize);
|
||||
memcpy(&textures[offset], tex, texSize);
|
||||
offset += texSize;
|
||||
}
|
||||
return textures;
|
||||
|
||||
@@ -4207,7 +4207,7 @@ void func_800562E4(s32 arg0, s32 arg1, s32 arg2) {
|
||||
D_80165878 = A_800E46F8[arg0][2];
|
||||
func_8004B138(D_80165860, D_8016586C, D_80165878, arg2);
|
||||
rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.2f);
|
||||
func_80044BF8(common_texture_particle_spark[arg1], 0x00000020, 0x00000020);
|
||||
func_80044BF8(common_texture_particle_spark[arg1], 32, 32);
|
||||
gSPVertex(gDisplayListHead++, D_0D005AE0, 4, 0);
|
||||
gSPDisplayList(gDisplayListHead++, common_rectangle_display);
|
||||
}
|
||||
|
||||
+69
-52
@@ -49,8 +49,8 @@ Player *D_80164AD0[8];
|
||||
s16 gMatrixEffectCount;
|
||||
s32 D_80164AF4[3];
|
||||
struct_D_802F1F80 *gPlayerPalette;
|
||||
u8 *D_80164B08;
|
||||
u8 *D_80164B0C;
|
||||
static const char *sKartUpperTexture;
|
||||
static const char *sKartLowerTexture;
|
||||
u16 gPlayerRedEffect[8];
|
||||
u16 gPlayerGreenEffect[8];
|
||||
u16 gPlayerBlueEffect[8];
|
||||
@@ -281,17 +281,21 @@ void func_80020524(void) {
|
||||
//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);
|
||||
|
||||
memcpy(&D_802BFB80.arraySize8[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].pixel_index_array,
|
||||
D_802DFB80[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].unk_00, 0x1000);
|
||||
// memcpy(&D_802BFB80.arraySize8[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].pixel_index_array,
|
||||
// D_802DFB80[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].unk_00, 0x1000);
|
||||
|
||||
strcpy(D_802BFB80.arraySize8[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].pixel_index_array, D_802DFB80[D_801651D0[D_80164AC0[i - 1]][D_80164AB0[i - 1]]][D_80164AC0[i - 1]][D_80164AB0[i - 1]].unk_00);
|
||||
|
||||
//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);
|
||||
|
||||
memcpy(&D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array,
|
||||
D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00, 0x1000);
|
||||
// memcpy(&D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array,
|
||||
// D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00, 0x1000);
|
||||
|
||||
strcpy(D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array, D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00);
|
||||
|
||||
}
|
||||
|
||||
@@ -314,17 +318,20 @@ void func_8002088C(void) {
|
||||
//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);
|
||||
|
||||
memcpy(&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,
|
||||
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, 0x1000);
|
||||
// memcpy(&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,
|
||||
// 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, 0x1000);
|
||||
|
||||
|
||||
strcpy(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, 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);
|
||||
//osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
}
|
||||
//func_80027560(D_80164AD0[0], D_80164AB0[0], D_80164AC0[0], D_80164AC0[0], D_801651D0[D_80164AC0[0]][D_80164AB0[0]], 0);
|
||||
|
||||
//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);
|
||||
memcpy(&D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array,
|
||||
D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00, 0x1000);
|
||||
// memcpy(&D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array,
|
||||
// D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00, 0x1000);
|
||||
strcpy(D_802BFB80.arraySize8[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].pixel_index_array, D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]].unk_00);
|
||||
}
|
||||
|
||||
void func_80020BF4(void) {
|
||||
@@ -341,17 +348,19 @@ void func_80020BF4(void) {
|
||||
// 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);
|
||||
|
||||
|
||||
memcpy((u8*) &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,
|
||||
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, 0x1000);
|
||||
|
||||
// memcpy((u8*) &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,
|
||||
// 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, 0x1000);
|
||||
|
||||
strcpy(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, 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);
|
||||
// osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
}
|
||||
//func_80027560(D_80164AD0[0], D_80164AB0[0] + 4, D_80164AC0[0], D_80164AC0[0] - 2, D_801651D0[D_80164AC0[0]][D_80164AB0[0]], 0);
|
||||
//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);
|
||||
|
||||
memcpy((u8*) &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, D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00, 0x1000);
|
||||
// memcpy((u8*) &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, D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00, 0x1000);
|
||||
|
||||
strcpy(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, D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00);
|
||||
}
|
||||
|
||||
void func_80020F1C(void) {
|
||||
@@ -369,14 +378,15 @@ void func_80020F1C(void) {
|
||||
// osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
|
||||
|
||||
|
||||
memcpy((u8*) &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, 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,0x1000);
|
||||
|
||||
//memcpy((u8*) &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, 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,0x1000);
|
||||
strcpy(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, 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);
|
||||
}
|
||||
//func_80027560(D_80164AD0[0], D_80164AB0[0] + 4, D_80164AC0[0], D_80164AC0[0] - 2, D_801651D0[D_80164AC0[0]][D_80164AB0[0]], 0);
|
||||
// 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);
|
||||
|
||||
memcpy((u8*) &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, D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00, 0x1000);
|
||||
//memcpy((u8*) &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, D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00, 0x1000);
|
||||
strcpy(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, D_802DFB80[D_801651D0[D_80164AC0[gPlayersToRenderCount-1]][D_80164AB0[gPlayersToRenderCount-1]]][D_80164AC0[gPlayersToRenderCount-1] - 2][D_80164AB0[gPlayersToRenderCount-1] + 4].unk_00);
|
||||
}
|
||||
|
||||
void try_render_player(Player *player, s8 playerId, s8 arg2) {
|
||||
@@ -1410,7 +1420,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 kart_render(Player *player, s8 playerId, s8 screenId, s8 arg3) {
|
||||
UNUSED s32 pad;
|
||||
Mat4 sp1A4;
|
||||
UNUSED s32 pad2[17];
|
||||
@@ -1424,53 +1434,53 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
|
||||
if (player->unk_044 & 0x2000) {
|
||||
sp14C[0] = 0;
|
||||
sp14C[1] = player->unk_048[arg2];
|
||||
sp14C[1] = player->unk_048[screenId];
|
||||
sp14C[2] = 0;
|
||||
func_80062B18(&sp148, &sp144, &sp140, 0.0f, 1.5f, 0.0f, -player->unk_048[arg2], player->unk_050[arg2]);
|
||||
func_80062B18(&sp148, &sp144, &sp140, 0.0f, 1.5f, 0.0f, -player->unk_048[screenId], player->unk_050[screenId]);
|
||||
sp154[1] = (player->pos[1] - player->boundingBoxSize) + (sp144 - 2.0);
|
||||
sp154[0] = player->pos[0] + sp148;
|
||||
sp154[2] = player->pos[2] + sp140;
|
||||
} else {
|
||||
thing = (u16)(player->unk_048[arg2] + player->rotation[1] + player->unk_0C0);
|
||||
temp_v1 = player->unk_0CC[arg2] * sins(thing);
|
||||
thing = (u16)(player->unk_048[screenId] + player->rotation[1] + player->unk_0C0);
|
||||
temp_v1 = player->unk_0CC[screenId] * sins(thing);
|
||||
if ((player->effects & 8) == 8) {
|
||||
sp14C[0] = cameras[arg2].rot[0] - 0x4000;
|
||||
sp14C[0] = cameras[screenId].rot[0] - 0x4000;
|
||||
} else {
|
||||
sp14C[0] = -temp_v1 * 0.8;
|
||||
}
|
||||
sp14C[1] = player->unk_048[arg2];
|
||||
sp14C[2] = player->unk_050[arg2];
|
||||
sp14C[1] = player->unk_048[screenId];
|
||||
sp14C[2] = player->unk_050[screenId];
|
||||
if (((s32)player->effects & HIT_EFFECT) == HIT_EFFECT) {
|
||||
func_80062B18(&sp148, &sp144, &sp140, 0.0f, 8.0f, 0.0f, -player->unk_048[arg2], player->unk_050[arg2]);
|
||||
func_80062B18(&sp148, &sp144, &sp140, 0.0f, 8.0f, 0.0f, -player->unk_048[screenId], player->unk_050[screenId]);
|
||||
sp154[1] = (player->pos[1] - player->boundingBoxSize) + player->unk_108;
|
||||
sp154[0] = player->pos[0] + sp148;
|
||||
sp154[2] = player->pos[2] + sp140;
|
||||
} else {
|
||||
func_80062B18(&sp148, &sp144, &sp140, 0.0f, 1.5f, 0.0f, -player->unk_048[arg2], player->unk_050[arg2]);
|
||||
func_80062B18(&sp148, &sp144, &sp140, 0.0f, 1.5f, 0.0f, -player->unk_048[screenId], player->unk_050[screenId]);
|
||||
sp154[1] = (player->pos[1] - player->boundingBoxSize) + player->unk_108 + (sp144 - 2.0);
|
||||
sp154[0] = player->pos[0] + sp148;
|
||||
sp154[2] = player->pos[2] + sp140;
|
||||
}
|
||||
}
|
||||
#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)) {
|
||||
sKartUpperTexture = D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId][playerId].pixel_index_array;
|
||||
//sKartLowerTexture = &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];
|
||||
sKartUpperTexture = D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array;
|
||||
//sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[screenId][playerId]][screenId - 1][playerId - 4].pixel_index_array[0x7C0];
|
||||
}
|
||||
mtxf_translate_rotate(sp1A4, sp154, sp14C);
|
||||
mtxf_scale2(sp1A4, gCharacterSize[player->characterId] * player->size);
|
||||
convert_to_fixed_point_matrix(&gGfxPool->mtxKart[playerId + (arg2 * 8)], sp1A4);
|
||||
convert_to_fixed_point_matrix(&gGfxPool->mtxKart[playerId + (screenId * 8)], sp1A4);
|
||||
|
||||
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
|
||||
if (arg2 == playerId) {
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (arg2 * 8)]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
if (screenId == playerId) {
|
||||
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);
|
||||
@@ -1485,7 +1495,7 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
);
|
||||
gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
|
||||
} else {
|
||||
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);
|
||||
@@ -1501,7 +1511,7 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
|
||||
}
|
||||
} else if (((player->unk_0CA & 4) == 4) || (player->soundEffects & 0x08000000) || (player->soundEffects & 0x04000000)) {
|
||||
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);
|
||||
@@ -1517,7 +1527,7 @@ void kart_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
gDPSetAlphaCompare(gDisplayListHead++, G_AC_DITHER);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2);
|
||||
} else {
|
||||
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);
|
||||
@@ -1532,11 +1542,14 @@ void kart_render(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);
|
||||
// Render heads
|
||||
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);
|
||||
// Render karts
|
||||
u8 *test = (u8 *)LOAD_ASSET(sKartUpperTexture);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, test+0x7C0, 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);
|
||||
@@ -1576,11 +1589,11 @@ void ghost_render(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;
|
||||
//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;
|
||||
//sKartLowerTexture = &D_802BFB80.arraySize8[D_801651D0[arg2][playerId]][arg2 - 1][playerId - 4].pixel_index_array[0x7C0];
|
||||
}
|
||||
|
||||
mtxf_translate_rotate(sp12C, spDC, spD4);
|
||||
@@ -1602,11 +1615,12 @@ void ghost_render(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
);
|
||||
gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
|
||||
|
||||
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);
|
||||
u8 *test = (u8 *)LOAD_ASSET(sKartUpperTexture);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, test+0x7C0, 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);
|
||||
@@ -1643,11 +1657,12 @@ void func_80025DE8(Player *player, s8 playerId, s8 arg2, s8 arg3) {
|
||||
);
|
||||
gDPSetRenderMode(gDisplayListHead++, AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
|
||||
|
||||
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);
|
||||
u8 *test = (u8 *)LOAD_ASSET(sKartUpperTexture);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, test+0x7C0, 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);
|
||||
@@ -1688,10 +1703,12 @@ void player_ice_reflection_render(Player *player, s8 playerId, s8 arg2, s8 arg3)
|
||||
(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);
|
||||
|
||||
u8 *test = (u8 *)LOAD_ASSET(sKartUpperTexture);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, test+0x7C0, 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);
|
||||
|
||||
@@ -68,8 +68,6 @@ 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 s32 D_80164A28;
|
||||
extern s16 D_80164AB0[];
|
||||
|
||||
+4
-2
@@ -1087,13 +1087,15 @@ void func_8003CD98(Player *player, Camera *camera, s8 playerId, s8 screenId) {
|
||||
load_kart_palette(player, playerId, screenId, 1);
|
||||
load_kart_texture(player, playerId, screenId, screenId, 0);
|
||||
//mio0decode((u8 *) &D_802DFB80[0][arg3][playerId], (u8 *) &D_802BFB80.arraySize8[0][arg3][playerId]);
|
||||
memcpy(&D_802BFB80.arraySize8[0][screenId][playerId], &D_802DFB80[0][screenId][playerId], 0x1000);
|
||||
// This memcpy does not seem to be required for some reason
|
||||
//memcpy(&D_802BFB80.arraySize8[0][screenId][playerId], &D_802DFB80[0][screenId][playerId], 0x1000);
|
||||
} 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][arg3 - 2][playerId + 4], (u8 *) &D_802BFB80.arraySize8[0][arg3 - 2][playerId + 4]);
|
||||
memcpy(&D_802BFB80.arraySize8[0][screenId - 2][playerId + 4], &D_802DFB80[0][screenId - 2][playerId + 4], 0x1000);
|
||||
// This memcpy does not seem to be required for some reason
|
||||
//memcpy(&D_802BFB80.arraySize8[0][screenId - 2][playerId + 4], &D_802DFB80[0][screenId - 2][playerId + 4], 0x1000);
|
||||
}
|
||||
|
||||
D_801650D0[screenId][playerId] = player->animFrameSelector[screenId];
|
||||
|
||||
@@ -2126,6 +2126,7 @@ common_texture_particle_spark_2:
|
||||
offset: 0x2B058
|
||||
width: 32
|
||||
height: 32
|
||||
ctype: u8
|
||||
type: texture
|
||||
format: i8
|
||||
common_texture_particle_spark_3:
|
||||
@@ -2133,6 +2134,7 @@ common_texture_particle_spark_3:
|
||||
offset: 0x2B458
|
||||
width: 32
|
||||
height: 32
|
||||
ctype: u8
|
||||
type: texture
|
||||
format: i8
|
||||
common_texture_particle_spark_4:
|
||||
@@ -2140,6 +2142,7 @@ common_texture_particle_spark_4:
|
||||
offset: 0x2B858
|
||||
width: 32
|
||||
height: 32
|
||||
ctype: u8
|
||||
type: texture
|
||||
format: i8
|
||||
common_texture_particle_smoke_1:
|
||||
|
||||
Reference in New Issue
Block a user