mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-05-30 17:06:36 -04:00
402 lines
16 KiB
C
402 lines
16 KiB
C
#include <ultra64.h>
|
|
#include <macros.h>
|
|
#include "common_structs.h"
|
|
|
|
extern OSIoMesg gDmaIoMesg;
|
|
extern OSMesgQueue gDmaMesgQueue;
|
|
extern OSMesg gMainReceivedMesg;
|
|
|
|
extern u8 _kart_texturesSegmentRomStart[];
|
|
extern uintptr_t *gKartPalettes[];
|
|
|
|
// arrays?
|
|
extern u16 D_802F1F80[2][4][2048];
|
|
extern u8 D_802DFB80[2][2][18688];
|
|
|
|
extern u16 D_800DDEB0[];
|
|
/*
|
|
u16 D_800DDEB0[] = { // sizes
|
|
0x06c0, 0x06e0, 0x06e0, 0x0680, 0x07c0, 0x0700, 0x0680, 0x0910
|
|
};
|
|
*/
|
|
extern s32 gActiveScreenMode;
|
|
|
|
extern uintptr_t **gKartTextureGroup18s;
|
|
|
|
extern uintptr_t *gKartMarioGroup8[];
|
|
extern uintptr_t *gKartMarioGroup7[];
|
|
extern uintptr_t *gKartMarioGroup6[];
|
|
extern uintptr_t *gKartMarioGroup5[];
|
|
extern uintptr_t *gKartMarioGroup4[];
|
|
extern uintptr_t *gKartMarioGroup3[];
|
|
extern uintptr_t *gKartMarioGroup2[];
|
|
extern uintptr_t *gKartMarioGroup1[];
|
|
extern uintptr_t *gKartMarioGroup0[];
|
|
|
|
extern uintptr_t *gKartLuigiGroup8[];
|
|
extern uintptr_t *gKartLuigiGroup7[];
|
|
extern uintptr_t *gKartLuigiGroup6[];
|
|
extern uintptr_t *gKartLuigiGroup5[];
|
|
extern uintptr_t *gKartLuigiGroup4[];
|
|
extern uintptr_t *gKartLuigiGroup3[];
|
|
extern uintptr_t *gKartLuigiGroup2[];
|
|
extern uintptr_t *gKartLuigiGroup1[];
|
|
extern uintptr_t *gKartLuigiGroup0[];
|
|
|
|
extern uintptr_t *gKartYoshiGroup8[];
|
|
extern uintptr_t *gKartYoshiGroup7[];
|
|
extern uintptr_t *gKartYoshiGroup6[];
|
|
extern uintptr_t *gKartYoshiGroup5[];
|
|
extern uintptr_t *gKartYoshiGroup4[];
|
|
extern uintptr_t *gKartYoshiGroup3[];
|
|
extern uintptr_t *gKartYoshiGroup2[];
|
|
extern uintptr_t *gKartYoshiGroup1[];
|
|
extern uintptr_t *gKartYoshiGroup0[];
|
|
|
|
extern uintptr_t *gKartToadGroup8[];
|
|
extern uintptr_t *gKartToadGroup7[];
|
|
extern uintptr_t *gKartToadGroup6[];
|
|
extern uintptr_t *gKartToadGroup5[];
|
|
extern uintptr_t *gKartToadGroup4[];
|
|
extern uintptr_t *gKartToadGroup3[];
|
|
extern uintptr_t *gKartToadGroup2[];
|
|
extern uintptr_t *gKartToadGroup1[];
|
|
extern uintptr_t *gKartToadGroup0[];
|
|
|
|
extern uintptr_t *gKartDKGroup8[];
|
|
extern uintptr_t *gKartDKGroup7[];
|
|
extern uintptr_t *gKartDKGroup6[];
|
|
extern uintptr_t *gKartDKGroup5[];
|
|
extern uintptr_t *gKartDKGroup4[];
|
|
extern uintptr_t *gKartDKGroup3[];
|
|
extern uintptr_t *gKartDKGroup2[];
|
|
extern uintptr_t *gKartDKGroup1[];
|
|
extern uintptr_t *gKartDKGroup0[];
|
|
|
|
extern uintptr_t *gKartWarioGroup8[];
|
|
extern uintptr_t *gKartWarioGroup7[];
|
|
extern uintptr_t *gKartWarioGroup6[];
|
|
extern uintptr_t *gKartWarioGroup5[];
|
|
extern uintptr_t *gKartWarioGroup4[];
|
|
extern uintptr_t *gKartWarioGroup3[];
|
|
extern uintptr_t *gKartWarioGroup2[];
|
|
extern uintptr_t *gKartWarioGroup1[];
|
|
extern uintptr_t *gKartWarioGroup0[];
|
|
|
|
extern uintptr_t *gKartPeachGroup8[];
|
|
extern uintptr_t *gKartPeachGroup7[];
|
|
extern uintptr_t *gKartPeachGroup6[];
|
|
extern uintptr_t *gKartPeachGroup5[];
|
|
extern uintptr_t *gKartPeachGroup4[];
|
|
extern uintptr_t *gKartPeachGroup3[];
|
|
extern uintptr_t *gKartPeachGroup2[];
|
|
extern uintptr_t *gKartPeachGroup1[];
|
|
extern uintptr_t *gKartPeachGroup0[];
|
|
|
|
extern uintptr_t *gKartBowserGroup8[];
|
|
extern uintptr_t *gKartBowserGroup7[];
|
|
extern uintptr_t *gKartBowserGroup6[];
|
|
extern uintptr_t *gKartBowserGroup5[];
|
|
extern uintptr_t *gKartBowserGroup4[];
|
|
extern uintptr_t *gKartBowserGroup3[];
|
|
extern uintptr_t *gKartBowserGroup2[];
|
|
extern uintptr_t *gKartBowserGroup1[];
|
|
extern uintptr_t *gKartBowserGroup0[];
|
|
|
|
extern uintptr_t *gKartMarioGroup17[];
|
|
extern uintptr_t *gKartMarioGroup16[];
|
|
extern uintptr_t *gKartMarioGroup15[];
|
|
extern uintptr_t *gKartMarioGroup14[];
|
|
extern uintptr_t *gKartMarioGroup13[];
|
|
extern uintptr_t *gKartMarioGroup12[];
|
|
extern uintptr_t *gKartMarioGroup11[];
|
|
extern uintptr_t *gKartMarioGroup10[];
|
|
extern uintptr_t *gKartMarioGroup9[];
|
|
|
|
extern uintptr_t *gKartLuigiGroup17[];
|
|
extern uintptr_t *gKartLuigiGroup16[];
|
|
extern uintptr_t *gKartLuigiGroup15[];
|
|
extern uintptr_t *gKartLuigiGroup14[];
|
|
extern uintptr_t *gKartLuigiGroup13[];
|
|
extern uintptr_t *gKartLuigiGroup12[];
|
|
extern uintptr_t *gKartLuigiGroup11[];
|
|
extern uintptr_t *gKartLuigiGroup10[];
|
|
extern uintptr_t *gKartLuigiGroup9[];
|
|
|
|
extern uintptr_t *gKartYoshiGroup17[];
|
|
extern uintptr_t *gKartYoshiGroup16[];
|
|
extern uintptr_t *gKartYoshiGroup15[];
|
|
extern uintptr_t *gKartYoshiGroup14[];
|
|
extern uintptr_t *gKartYoshiGroup13[];
|
|
extern uintptr_t *gKartYoshiGroup12[];
|
|
extern uintptr_t *gKartYoshiGroup11[];
|
|
extern uintptr_t *gKartYoshiGroup10[];
|
|
extern uintptr_t *gKartYoshiGroup9[];
|
|
|
|
extern uintptr_t *gKartToadGroup17[];
|
|
extern uintptr_t *gKartToadGroup16[];
|
|
extern uintptr_t *gKartToadGroup15[];
|
|
extern uintptr_t *gKartToadGroup14[];
|
|
extern uintptr_t *gKartToadGroup13[];
|
|
extern uintptr_t *gKartToadGroup12[];
|
|
extern uintptr_t *gKartToadGroup11[];
|
|
extern uintptr_t *gKartToadGroup10[];
|
|
extern uintptr_t *gKartToadGroup9[];
|
|
|
|
extern uintptr_t *gKartDKGroup17[];
|
|
extern uintptr_t *gKartDKGroup16[];
|
|
extern uintptr_t *gKartDKGroup15[];
|
|
extern uintptr_t *gKartDKGroup14[];
|
|
extern uintptr_t *gKartDKGroup13[];
|
|
extern uintptr_t *gKartDKGroup12[];
|
|
extern uintptr_t *gKartDKGroup11[];
|
|
extern uintptr_t *gKartDKGroup10[];
|
|
extern uintptr_t *gKartDKGroup9[];
|
|
|
|
extern uintptr_t *gKartWarioGroup17[];
|
|
extern uintptr_t *gKartWarioGroup16[];
|
|
extern uintptr_t *gKartWarioGroup15[];
|
|
extern uintptr_t *gKartWarioGroup14[];
|
|
extern uintptr_t *gKartWarioGroup13[];
|
|
extern uintptr_t *gKartWarioGroup12[];
|
|
extern uintptr_t *gKartWarioGroup11[];
|
|
extern uintptr_t *gKartWarioGroup10[];
|
|
extern uintptr_t *gKartWarioGroup9[];
|
|
|
|
extern uintptr_t *gKartPeachGroup17[];
|
|
extern uintptr_t *gKartPeachGroup16[];
|
|
extern uintptr_t *gKartPeachGroup15[];
|
|
extern uintptr_t *gKartPeachGroup14[];
|
|
extern uintptr_t *gKartPeachGroup13[];
|
|
extern uintptr_t *gKartPeachGroup12[];
|
|
extern uintptr_t *gKartPeachGroup11[];
|
|
extern uintptr_t *gKartPeachGroup10[];
|
|
extern uintptr_t *gKartPeachGroup9[];
|
|
|
|
extern uintptr_t *gKartBowserGroup17[];
|
|
extern uintptr_t *gKartBowserGroup16[];
|
|
extern uintptr_t *gKartBowserGroup15[];
|
|
extern uintptr_t *gKartBowserGroup14[];
|
|
extern uintptr_t *gKartBowserGroup13[];
|
|
extern uintptr_t *gKartBowserGroup12[];
|
|
extern uintptr_t *gKartBowserGroup11[];
|
|
extern uintptr_t *gKartBowserGroup10[];
|
|
extern uintptr_t *gKartBowserGroup9[];
|
|
|
|
|
|
|
|
uintptr_t **gKartMarioTable0[] = {
|
|
gKartMarioGroup8, gKartMarioGroup7, gKartMarioGroup6,
|
|
gKartMarioGroup5, gKartMarioGroup4, gKartMarioGroup3,
|
|
gKartMarioGroup2, gKartMarioGroup1, gKartMarioGroup0,
|
|
};
|
|
uintptr_t **gKartLuigiTable0[] = {
|
|
gKartLuigiGroup8, gKartLuigiGroup7, gKartLuigiGroup6,
|
|
gKartLuigiGroup5, gKartLuigiGroup4, gKartLuigiGroup3,
|
|
gKartLuigiGroup2, gKartLuigiGroup1, gKartLuigiGroup0,
|
|
};
|
|
uintptr_t **gKartYoshiTable0[] = {
|
|
gKartYoshiGroup8, gKartYoshiGroup7, gKartYoshiGroup6,
|
|
gKartYoshiGroup5, gKartYoshiGroup4, gKartYoshiGroup3,
|
|
gKartYoshiGroup2, gKartYoshiGroup1, gKartYoshiGroup0,
|
|
};
|
|
uintptr_t **gKartToadTable0[] = {
|
|
gKartToadGroup8, gKartToadGroup7, gKartToadGroup6,
|
|
gKartToadGroup5, gKartToadGroup4, gKartToadGroup3,
|
|
gKartToadGroup2, gKartToadGroup1, gKartToadGroup0,
|
|
};
|
|
uintptr_t **gKartDKTable0[] = {
|
|
gKartDKGroup8, gKartDKGroup7, gKartDKGroup6,
|
|
gKartDKGroup5, gKartDKGroup4, gKartDKGroup3,
|
|
gKartDKGroup2, gKartDKGroup1, gKartDKGroup0,
|
|
};
|
|
uintptr_t **gKartWarioTable0[] = {
|
|
gKartWarioGroup8, gKartWarioGroup7, gKartWarioGroup6,
|
|
gKartWarioGroup5, gKartWarioGroup4, gKartWarioGroup3,
|
|
gKartWarioGroup2, gKartWarioGroup1, gKartWarioGroup0,
|
|
};
|
|
uintptr_t **gKartPeachTable0[] = {
|
|
gKartPeachGroup8, gKartPeachGroup7, gKartPeachGroup6,
|
|
gKartPeachGroup5, gKartPeachGroup4, gKartPeachGroup3,
|
|
gKartPeachGroup2, gKartPeachGroup1, gKartPeachGroup0,
|
|
};
|
|
uintptr_t **gKartBowserTable0[] = {
|
|
gKartBowserGroup8, gKartBowserGroup7, gKartBowserGroup6,
|
|
gKartBowserGroup5, gKartBowserGroup4, gKartBowserGroup3,
|
|
gKartBowserGroup2, gKartBowserGroup1, gKartBowserGroup0,
|
|
};
|
|
|
|
uintptr_t **gKartMarioTable1[] = {
|
|
gKartMarioGroup17, gKartMarioGroup16, gKartMarioGroup15,
|
|
gKartMarioGroup14, gKartMarioGroup13, gKartMarioGroup12,
|
|
gKartMarioGroup11, gKartMarioGroup10, gKartMarioGroup9,
|
|
};
|
|
|
|
uintptr_t **gKartLuigiTable1[] = {
|
|
gKartLuigiGroup17, gKartLuigiGroup16, gKartLuigiGroup15, gKartLuigiGroup14,
|
|
gKartLuigiGroup13, gKartLuigiGroup12, gKartLuigiGroup11, gKartLuigiGroup10,
|
|
gKartLuigiGroup9,
|
|
};
|
|
uintptr_t **gKartYoshiTable1[] = {
|
|
gKartYoshiGroup17, gKartYoshiGroup16, gKartYoshiGroup15, gKartYoshiGroup14,
|
|
gKartYoshiGroup13, gKartYoshiGroup12, gKartYoshiGroup11, gKartYoshiGroup10,
|
|
gKartYoshiGroup9,
|
|
};
|
|
uintptr_t **gKartToadTable1[] = {
|
|
gKartToadGroup17, gKartToadGroup16, gKartToadGroup15, gKartToadGroup14,
|
|
gKartToadGroup13, gKartToadGroup12, gKartToadGroup11, gKartToadGroup10,
|
|
gKartToadGroup9,
|
|
};
|
|
uintptr_t **gKartDKTable1[] = {
|
|
gKartDKGroup17, gKartDKGroup16, gKartDKGroup15, gKartDKGroup14,
|
|
gKartDKGroup13, gKartDKGroup12, gKartDKGroup11, gKartDKGroup10,
|
|
gKartDKGroup9,
|
|
};
|
|
uintptr_t **gKartWarioTable1[] = {
|
|
gKartWarioGroup17, gKartWarioGroup16, gKartWarioGroup15, gKartWarioGroup14,
|
|
gKartWarioGroup13, gKartWarioGroup12, gKartWarioGroup11, gKartWarioGroup10,
|
|
gKartWarioGroup9,
|
|
};
|
|
uintptr_t **gKartPeachTable1[] = {
|
|
gKartPeachGroup17, gKartPeachGroup16, gKartPeachGroup15, gKartPeachGroup14,
|
|
gKartPeachGroup13, gKartPeachGroup12, gKartPeachGroup11, gKartPeachGroup10,
|
|
gKartPeachGroup9,
|
|
};
|
|
uintptr_t **gKartBowserTable1[] = {
|
|
gKartBowserGroup17, gKartBowserGroup16, gKartBowserGroup15, gKartBowserGroup14,
|
|
gKartBowserGroup13, gKartBowserGroup12, gKartBowserGroup11, gKartBowserGroup10,
|
|
gKartBowserGroup9,
|
|
};
|
|
|
|
uintptr_t ***gKartTextureTable0[] = {
|
|
gKartMarioTable0,
|
|
gKartLuigiTable0,
|
|
gKartYoshiTable0,
|
|
gKartToadTable0,
|
|
gKartDKTable0,
|
|
gKartWarioTable0,
|
|
gKartPeachTable0,
|
|
gKartBowserTable0,
|
|
};
|
|
|
|
uintptr_t ***gKartTextureTable1[] = {
|
|
gKartMarioTable1,
|
|
gKartLuigiTable1,
|
|
gKartYoshiTable1,
|
|
gKartToadTable1,
|
|
gKartDKTable1,
|
|
gKartWarioTable1,
|
|
gKartPeachTable1,
|
|
gKartBowserTable1,
|
|
};
|
|
|
|
// some larger diffs that need resolving
|
|
#ifdef MIPS_TO_C
|
|
void func_80027040(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
|
|
|
|
//s32 tmp = player->unk_0BC;
|
|
void *buf; // = &D_802DFB80[arg4][arg3][arg1 * 0x920];
|
|
u16 id;
|
|
if (((((((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40)) || ((player->unk_0BC & 0x80000) == 0x80000)) || ((player->unk_0BC & 0x800000) == 0x800000)) || ((player->unk_0BC & 0x20000) == 0x20000)) || ((player->unk_044 & 0x800) != 0))
|
|
{
|
|
// temp_v1 = player + (arg2 * 2);
|
|
if (player->unk_244[arg2] != 0) {
|
|
//buf = &D_802DFB80[arg2][arg1 * 0x920];
|
|
buf = &D_802DFB80[arg4][arg3][arg1 * 0x920];
|
|
osInvalDCache(buf, D_800DDEB0[player->characterId]);
|
|
id = player->characterId;
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable1[id][player->unk_24C[arg2]][player->unk_244[arg2]])], buf, D_800DDEB0[player->unk_0BC], &gDmaMesgQueue);
|
|
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
|
|
} else {
|
|
buf = &D_802DFB80[arg4][arg3][arg1 * 0x920];
|
|
osInvalDCache(&D_802DFB80[arg4][arg3], D_800DDEB0[player->characterId]);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], buf, D_800DDEB0[player->unk_0BC], &gDmaMesgQueue);
|
|
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
|
|
}
|
|
} else if (((((player->unk_0BC & 0x400) == 0x400) || ((player->unk_0BC & 0x1000000) == 0x1000000)) || ((player->unk_0BC & 0x2000000) == 0x2000000)) || ((player->unk_0BC & 0x10000) == 0x10000))
|
|
{
|
|
buf = &D_802DFB80[arg4][arg3][arg1 * 0x920];
|
|
osInvalDCache(buf, 0x780);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureGroup18s[player->characterId][player->unk_0A8 >> 8])], buf, 0x900, &gDmaMesgQueue);
|
|
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
|
|
} else {
|
|
buf = &D_802DFB80[arg4][arg3][arg1 * 0x920];
|
|
osInvalDCache(buf, D_800DDEB0[player->characterId]);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], buf, D_800DDEB0[player->unk_0BC], &gDmaMesgQueue);
|
|
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
|
|
}
|
|
}
|
|
#else
|
|
GLOBAL_ASM("asm/non_matchings/code_80027040/func_80027040.s")
|
|
#endif
|
|
|
|
#ifdef MIPS_TO_C
|
|
//generated by mips_to_c commit 3ec45aadfc2cb619035fb802d88c52eacfab0326
|
|
void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
|
|
//s32 temp_v0;
|
|
void *temp_s0;
|
|
|
|
//temp_v0 = player->unk_0BC;
|
|
if (((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40) || ((player->unk_0BC & 0x80000) == 0x80000) || ((player->unk_0BC & 0x800000) == 0x800000) || ((player->unk_0BC & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0))
|
|
{
|
|
//temp_v1_2 = player + (arg2 * 2);
|
|
if (player->unk_244[arg2] != 0) {
|
|
temp_s0 = D_802DFB80[arg4][arg3][arg1 * 0x920];
|
|
osInvalDCache(D_802DFB80[arg4][arg3], D_800DDEB0[player->characterId]);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], temp_s0, D_800DDEB0[player->characterId], &gDmaMesgQueue);
|
|
} else {
|
|
temp_s0 = D_802DFB80[arg4][arg3][arg1 * 0x920];
|
|
osInvalDCache(temp_s0, D_800DDEB0[player->characterId]);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable1[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], temp_s0, D_800DDEB0[player->characterId], &gDmaMesgQueue);
|
|
}
|
|
} else if (((player->unk_0BC & 0x400) == 0x400) || ((player->unk_0BC & 0x01000000) == 0x01000000) || ((player->unk_0BC & 0x02000000) == 0x02000000) || ((player->unk_0BC & 0x10000) == 0x10000))
|
|
{
|
|
temp_s0 = D_802DFB80[arg4][arg3][arg1 * 0x920];
|
|
osInvalDCache(temp_s0, 0x780);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureGroup18s[player->characterId][player->unk_0A8 >> 8])], temp_s0, 0x900, &gDmaMesgQueue);
|
|
} else {
|
|
temp_s0 = D_802DFB80[arg4][arg3][arg1 * 0x920];
|
|
osInvalDCache(temp_s0, D_800DDEB0[player->characterId]);
|
|
//temp_v1 = player + (arg2 * 2);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], temp_s0, D_800DDEB0[player->characterId], &gDmaMesgQueue);
|
|
}
|
|
}
|
|
#else
|
|
GLOBAL_ASM("asm/non_matchings/code_80027040/func_80027560.s")
|
|
#endif
|
|
|
|
void func_80027A20(Player *player, s8 arg1, s8 arg2, s8 arg3) {
|
|
// @bug: Undefined Behaviour UB
|
|
// untested fix
|
|
#ifdef AVOID_UB
|
|
void *temp_s0 = &D_802F1F80[arg3][arg2][0];
|
|
#else
|
|
void *temp_s0 = &D_802F1F80[arg3][arg2][arg1 << 8];
|
|
#endif
|
|
|
|
switch(gActiveScreenMode) {
|
|
case 0: case 1:
|
|
case 2:
|
|
osInvalDCache(temp_s0, 0x200);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartPalettes[player->characterId])], temp_s0, 0x200, &gDmaMesgQueue);
|
|
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
|
|
break;
|
|
case 3:
|
|
osInvalDCache(temp_s0, 0x200);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartPalettes[player->characterId])], temp_s0, 0x200, &gDmaMesgQueue);
|
|
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void func_80027BDC(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) {
|
|
osInvalDCache(vAddr, size);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(arg1)], vAddr, size, &gDmaMesgQueue);
|
|
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, 1);
|
|
}
|
|
|
|
void func_80027C74(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) {
|
|
osInvalDCache(vAddr, size);
|
|
osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(arg1)], vAddr, size, &gDmaMesgQueue);
|
|
}
|