wip Fix wheels (#37)

* Fix menu bug

* Fix undefined behaviour

* Fix kart textures

* Fix boost texture

* Rename as per review

* Fix buffer overflows

* Fix lakitu progress

* Fix race starter character

* wip fixes to kart wheels

* Fix inaccuracy

* improve wheels

* Fix staff ghosts

* course stuff

* wip changes

* Update kalimari_desert_displaylists.yml
This commit is contained in:
MegaMech
2024-08-11 19:42:28 -06:00
committed by GitHub
parent 9540a4b772
commit 8f2a92d486
14 changed files with 266 additions and 197 deletions
+6 -5
View File
@@ -1919,7 +1919,7 @@ void func_80027BDC(UNUSED Player *player, u8 *arg1, void *vAddr, u16 size) {
//osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
void func_80027C74(UNUSED Player *player, u8 *texture, void *vAddr, u16 size) {
void func_80027C74(UNUSED Player *player, const char *texture, void *vAddr, u16 size) {
//osInvalDCache(vAddr, size);
// osPiStartDma(
@@ -1931,8 +1931,9 @@ void func_80027C74(UNUSED Player *player, u8 *texture, void *vAddr, u16 size) {
// size,
// &gDmaMesgQueue
// );
//printf("test %s\n",texture);
//size_t textureSize = ResourceGetTexSizeByName(texture);
// memcpy(vAddr, texture, size);
u16 *tex = (u16 *) LOAD_ASSET(texture);
//printf("wheeltex: %s\n",texture);
size_t textureSize = ResourceGetTexSizeByName(texture);
//vAddr = texture;
memcpy(vAddr, tex, size);
}
+173 -110
View File
@@ -464,110 +464,144 @@ f32 gCharacterSize[] = {
DK_SIZE, WARIO_SIZE, PEACH_SIZE, BOWSER_SIZE
};
u8 **gKartMarioWheels0[] = {
gKartMario168Wheel0, gKartMario147Wheel0, gKartMario126Wheel0, gKartMario105Wheel0,
gKartMario084Wheel0, gKartMario063Wheel0, gKartMario042Wheel0, gKartMario021Wheel0,
gKartMario000Wheel0
u32 gKartMarioWheels0[] = { 672, 588, 504, 420, 336, 252, 168, 84, 0 };
u32 gKartMarioWheels1[] = { 1076, 1076, 996, 916, 916, 916, 836, 756, 756 };
u32 gKartLuigiWheels0[] = { 672, 588, 504, 420, 336, 252, 168, 84, 0 };
u32 gKartLuigiWheels1[] = { 1076, 1076, 996, 916, 916, 916, 836, 756, 756 };
u32 gKartBowserWheels0[] = { 672, 588, 504, 420, 336, 252, 168, 84, 0 };
u32 gKartBowserWheels1[] = { 1076, 1076, 996, 916, 916, 916, 836, 756, 756 };
u32 gKartToadWheels0[] = { 672, 588, 504, 420, 336, 252, 168, 84, 0 };
u32 gKartToadWheels1[] = { 1076, 1076, 996, 916, 916, 916, 836, 756, 756 };
// Stopped doing this properly here and just copy pasted the below hoping it would work
u32 gKartYoshiWheels0[] = { 672, 588, 504, 420, 336, 252, 168, 84, 0 };
u32 gKartYoshiWheels1[] = { 1076, 1076, 996, 916, 916, 916, 836, 756, 756 };
u32 gKartDKWheels0[] = { 672, 588, 504, 420, 336, 252, 168, 84, 0 };
u32 gKartDKWheels1[] = { 1076, 1076, 996, 916, 916, 916, 836, 756, 756 };
u32 gKartPeachWheels0[] = { 672, 588, 504, 420, 336, 252, 168, 84, 0 };
u32 gKartPeachWheels1[] = { 1076, 1076, 996, 916, 916, 916, 836, 756, 756 };
u32 gKartWarioWheels0[] = { 672, 588, 504, 420, 336, 252, 168, 84, 0 };
u32 gKartWarioWheels1[] = { 1076, 1076, 996, 916, 916, 916, 836, 756, 756 };
// Replace the below ptrs with the indexes into mario_kart_wheels
// u8 **gKartMarioWheels0[] = {
// gKartMario168Wheel0, gKartMario147Wheel0, gKartMario126Wheel0, gKartMario105Wheel0,
// gKartMario084Wheel0, gKartMario063Wheel0, gKartMario042Wheel0, gKartMario021Wheel0,
// gKartMario000Wheel0
// };
// u8 **gKartMarioWheels1[] = {
// gKartMario269Wheel0, gKartMario269Wheel0, gKartMario249Wheel0, gKartMario229Wheel0,
// gKartMario229Wheel0, gKartMario229Wheel0, gKartMario209Wheel0, gKartMario189Wheel0,
// gKartMario189Wheel0
// };
// u8 **gKartLuigiWheels0[] = {
// gKartLuigi168Wheel0, gKartLuigi147Wheel0, gKartLuigi126Wheel0, gKartLuigi105Wheel0,
// gKartLuigi084Wheel0, gKartLuigi063Wheel0, gKartLuigi042Wheel0, gKartLuigi021Wheel0,
// gKartLuigi000Wheel0
// };
// u8 **gKartLuigiWheels1[] = {
// gKartLuigi269Wheel0, gKartLuigi269Wheel0, gKartLuigi249Wheel0, gKartLuigi229Wheel0,
// gKartLuigi229Wheel0, gKartLuigi229Wheel0, gKartLuigi209Wheel0, gKartLuigi189Wheel0,
// gKartLuigi189Wheel0
// };
// u8 **gKartBowserWheels0[] = {
// gKartBowser168Wheel0, gKartBowser147Wheel0, gKartBowser126Wheel0, gKartBowser105Wheel0,
// gKartBowser084Wheel0, gKartBowser063Wheel0, gKartBowser042Wheel0, gKartBowser021Wheel0,
// gKartBowser000Wheel0
// };
// u8 **gKartBowserWheels1[] = {
// gKartBowser269Wheel0, gKartBowser269Wheel0, gKartBowser249Wheel0, gKartBowser229Wheel0,
// gKartBowser229Wheel0, gKartBowser229Wheel0, gKartBowser209Wheel0, gKartBowser189Wheel0,
// gKartBowser189Wheel0
// };
// u8 **gKartToadWheels0[] = {
// gKartToad168Wheel0, gKartToad147Wheel0, gKartToad126Wheel0, gKartToad105Wheel0,
// gKartToad084Wheel0, gKartToad063Wheel0, gKartToad042Wheel0, gKartToad021Wheel0,
// gKartToad000Wheel0
// };
// u8 **gKartToadWheels1[] = {
// gKartToad269Wheel0, gKartToad269Wheel0, gKartToad249Wheel0, gKartToad229Wheel0,
// gKartToad229Wheel0, gKartToad229Wheel0, gKartToad209Wheel0, gKartToad189Wheel0,
// gKartToad189Wheel0
// };
// u8 **gKartYoshiWheels0[] = {
// gKartYoshi168Wheel0, gKartYoshi147Wheel0, gKartYoshi126Wheel0, gKartYoshi105Wheel0,
// gKartYoshi084Wheel0, gKartYoshi063Wheel0, gKartYoshi042Wheel0, gKartYoshi021Wheel0,
// gKartYoshi000Wheel0
// };
// u8 **gKartYoshiWheels1[] = {
// gKartYoshi269Wheel0, gKartYoshi269Wheel0, gKartYoshi249Wheel0, gKartYoshi229Wheel0,
// gKartYoshi229Wheel0, gKartYoshi229Wheel0, gKartYoshi209Wheel0, gKartYoshi189Wheel0,
// gKartYoshi189Wheel0
// };
// u8 **gKartDKWheels0[] = {
// gKartDK168Wheel0, gKartDK147Wheel0, gKartDK126Wheel0, gKartDK105Wheel0,
// gKartDK084Wheel0, gKartDK063Wheel0, gKartDK042Wheel0, gKartDK021Wheel0,
// gKartDK000Wheel0
// };
// u8 **gKartDKWheels1[] = {
// gKartDK269Wheel0, gKartDK269Wheel0, gKartDK249Wheel0, gKartDK229Wheel0,
// gKartDK229Wheel0, gKartDK229Wheel0, gKartDK209Wheel0, gKartDK189Wheel0,
// gKartDK189Wheel0
// };
// u8 **gKartPeachWheels0[] = {
// gKartPeach168Wheel0, gKartPeach147Wheel0, gKartPeach126Wheel0, gKartPeach105Wheel0,
// gKartPeach084Wheel0, gKartPeach063Wheel0, gKartPeach042Wheel0, gKartPeach021Wheel0,
// gKartPeach000Wheel0
// };
// u8 **gKartPeachWheels1[] = {
// gKartPeach269Wheel0, gKartPeach269Wheel0, gKartPeach249Wheel0, gKartPeach229Wheel0,
// gKartPeach229Wheel0, gKartPeach229Wheel0, gKartPeach209Wheel0, gKartPeach189Wheel0,
// gKartPeach189Wheel0
// };
// u8 **gKartWarioWheels0[] = {
// gKartWario168Wheel0, gKartWario147Wheel0, gKartWario126Wheel0, gKartWario105Wheel0,
// gKartWario084Wheel0, gKartWario063Wheel0, gKartWario042Wheel0, gKartWario021Wheel0,
// gKartWario000Wheel0
// };
// u8 **gKartWarioWheels1[] = {
// gKartWario269Wheel0, gKartWario269Wheel0, gKartWario249Wheel0, gKartWario229Wheel0,
// gKartWario229Wheel0, gKartWario229Wheel0, gKartWario209Wheel0, gKartWario189Wheel0,
// gKartWario189Wheel0
// };
u32 *D_800DDE34[] = {
gKartMarioWheels0, gKartLuigiWheels0, gKartYoshiWheels0, gKartToadWheels0,
gKartDKWheels0, gKartWarioWheels0, gKartPeachWheels0, gKartBowserWheels0
};
u8 **gKartMarioWheels1[] = {
gKartMario269Wheel0, gKartMario269Wheel0, gKartMario249Wheel0, gKartMario229Wheel0,
gKartMario229Wheel0, gKartMario229Wheel0, gKartMario209Wheel0, gKartMario189Wheel0,
gKartMario189Wheel0
u32 *D_800DDE54[] = {
gKartMarioWheels1, gKartLuigiWheels1, gKartYoshiWheels1, gKartToadWheels1,
gKartDKWheels1, gKartWarioWheels1, gKartPeachWheels1, gKartBowserWheels1
};
u8 **gKartLuigiWheels0[] = {
gKartLuigi168Wheel0, gKartLuigi147Wheel0, gKartLuigi126Wheel0, gKartLuigi105Wheel0,
gKartLuigi084Wheel0, gKartLuigi063Wheel0, gKartLuigi042Wheel0, gKartLuigi021Wheel0,
gKartLuigi000Wheel0
};
u8 **gKartLuigiWheels1[] = {
gKartLuigi269Wheel0, gKartLuigi269Wheel0, gKartLuigi249Wheel0, gKartLuigi229Wheel0,
gKartLuigi229Wheel0, gKartLuigi229Wheel0, gKartLuigi209Wheel0, gKartLuigi189Wheel0,
gKartLuigi189Wheel0
};
u8 **gKartBowserWheels0[] = {
gKartBowser168Wheel0, gKartBowser147Wheel0, gKartBowser126Wheel0, gKartBowser105Wheel0,
gKartBowser084Wheel0, gKartBowser063Wheel0, gKartBowser042Wheel0, gKartBowser021Wheel0,
gKartBowser000Wheel0
};
u8 **gKartBowserWheels1[] = {
gKartBowser269Wheel0, gKartBowser269Wheel0, gKartBowser249Wheel0, gKartBowser229Wheel0,
gKartBowser229Wheel0, gKartBowser229Wheel0, gKartBowser209Wheel0, gKartBowser189Wheel0,
gKartBowser189Wheel0
};
u8 **gKartToadWheels0[] = {
gKartToad168Wheel0, gKartToad147Wheel0, gKartToad126Wheel0, gKartToad105Wheel0,
gKartToad084Wheel0, gKartToad063Wheel0, gKartToad042Wheel0, gKartToad021Wheel0,
gKartToad000Wheel0
};
u8 **gKartToadWheels1[] = {
gKartToad269Wheel0, gKartToad269Wheel0, gKartToad249Wheel0, gKartToad229Wheel0,
gKartToad229Wheel0, gKartToad229Wheel0, gKartToad209Wheel0, gKartToad189Wheel0,
gKartToad189Wheel0
};
u8 **gKartYoshiWheels0[] = {
gKartYoshi168Wheel0, gKartYoshi147Wheel0, gKartYoshi126Wheel0, gKartYoshi105Wheel0,
gKartYoshi084Wheel0, gKartYoshi063Wheel0, gKartYoshi042Wheel0, gKartYoshi021Wheel0,
gKartYoshi000Wheel0
};
u8 **gKartYoshiWheels1[] = {
gKartYoshi269Wheel0, gKartYoshi269Wheel0, gKartYoshi249Wheel0, gKartYoshi229Wheel0,
gKartYoshi229Wheel0, gKartYoshi229Wheel0, gKartYoshi209Wheel0, gKartYoshi189Wheel0,
gKartYoshi189Wheel0
};
u8 **gKartDKWheels0[] = {
gKartDK168Wheel0, gKartDK147Wheel0, gKartDK126Wheel0, gKartDK105Wheel0,
gKartDK084Wheel0, gKartDK063Wheel0, gKartDK042Wheel0, gKartDK021Wheel0,
gKartDK000Wheel0
};
u8 **gKartDKWheels1[] = {
gKartDK269Wheel0, gKartDK269Wheel0, gKartDK249Wheel0, gKartDK229Wheel0,
gKartDK229Wheel0, gKartDK229Wheel0, gKartDK209Wheel0, gKartDK189Wheel0,
gKartDK189Wheel0
};
u8 **gKartPeachWheels0[] = {
gKartPeach168Wheel0, gKartPeach147Wheel0, gKartPeach126Wheel0, gKartPeach105Wheel0,
gKartPeach084Wheel0, gKartPeach063Wheel0, gKartPeach042Wheel0, gKartPeach021Wheel0,
gKartPeach000Wheel0
};
u8 **gKartPeachWheels1[] = {
gKartPeach269Wheel0, gKartPeach269Wheel0, gKartPeach249Wheel0, gKartPeach229Wheel0,
gKartPeach229Wheel0, gKartPeach229Wheel0, gKartPeach209Wheel0, gKartPeach189Wheel0,
gKartPeach189Wheel0
};
u8 **gKartWarioWheels0[] = {
gKartWario168Wheel0, gKartWario147Wheel0, gKartWario126Wheel0, gKartWario105Wheel0,
gKartWario084Wheel0, gKartWario063Wheel0, gKartWario042Wheel0, gKartWario021Wheel0,
gKartWario000Wheel0
};
u8 **gKartWarioWheels1[] = {
gKartWario269Wheel0, gKartWario269Wheel0, gKartWario249Wheel0, gKartWario229Wheel0,
gKartWario229Wheel0, gKartWario229Wheel0, gKartWario209Wheel0, gKartWario189Wheel0,
gKartWario189Wheel0
};
u16 **D_800DDE34[] = {
(u16 **)gKartMarioWheels0, (u16 **)gKartLuigiWheels0, (u16 **)gKartYoshiWheels0, (u16 **)gKartToadWheels0,
(u16 **)gKartDKWheels0, (u16 **)gKartWarioWheels0, (u16 **)gKartPeachWheels0, (u16 **)gKartBowserWheels0
};
u16 **D_800DDE54[] = {
(u16 **)gKartMarioWheels1, (u16 **)gKartLuigiWheels1, (u16 **)gKartYoshiWheels1, (u16 **)gKartToadWheels1,
(u16 **)gKartDKWheels1, (u16 **)gKartWarioWheels1, (u16 **)gKartPeachWheels1, (u16 **)gKartBowserWheels1
const char** wheelPtr[] = {
mario_kart_wheels, luigi_kart_wheels, yoshi_kart_wheels, toad_kart_wheels,
donkeykong_kart_wheels, wario_kart_wheels, peach_kart_wheels, bowser_kart_wheels,
};
s32 D_800DDE74[] = {
@@ -1787,8 +1821,9 @@ void func_80026B4C(Player *player, s8 playerId, s8 screenId, s8 arg3) {
s16 temp_t2 = player->unk_240;
s16 temp_num = 0x40; // setting this as a variable gets rid of regalloc
u16 *wheel0 = (u16 *) LOAD_ASSET(D_800DDE34[player->characterId][temp_t1]);
u16 *wheel1 = (u16 *) LOAD_ASSET(D_800DDE54[player->characterId][temp_t1]);
u8 character = player->characterId;
u32 wheel0 = (D_800DDE34[player->characterId][temp_t1]);
u32 wheel1 = (D_800DDE54[player->characterId][temp_t1]);
if (((player->effects & 0x4000) == 0x4000) && ((player->type & PLAYER_START_SEQUENCE) == 0)) {
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40)
@@ -1796,15 +1831,19 @@ void func_80026B4C(Player *player, s8 playerId, s8 screenId, s8 arg3) {
&& ((player->effects & 0x800000) != 0x800000) && ((player->unk_044 & 0x800) == 0)) {
if (temp_t0 <= 20) {
func_80027C74(player, (uintptr_t*) (wheel0 + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
int32_t offset = (((temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80;
func_80027C74(player, wheelPtr[character][wheel0 + offset], D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
} else {
func_80027C74(player, (uintptr_t*) (wheel1 + (temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
int32_t offset = (((((temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) ) + 0x600)) * 2) / 0x80;
func_80027C74(player, wheelPtr[character][wheel1 + offset], D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
}
} else {
if (temp_t0 == 0) {
func_80027C74(player, (uintptr_t*) (wheel0 + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
int32_t offset = (((temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80;
func_80027C74(player, wheelPtr[character][wheel0 + offset], D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
} else {
func_80027C74(player, (uintptr_t*) (wheel1 + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
int32_t offset = (((temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80;
func_80027C74(player, wheelPtr[character][wheel1 + offset], D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
}
}
} else {
@@ -1812,18 +1851,42 @@ void func_80026B4C(Player *player, s8 playerId, s8 screenId, s8 arg3) {
&& ((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000)
&& ((player->effects & 0x20000) != 0x20000) && ((player->unk_044 & 0x800) == 0)) {
//printf("---start---\n");
if (temp_t0 <= 20) {
func_80027C74(player, (uintptr_t*) (wheel0 + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
int32_t offset = (((temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80;
//printf("OFFSET VAL 0x%X\n", ((temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)));
//printf("OFFSET IDX %d\n", offset);
func_80027C74(player, wheelPtr[character][wheel0 + offset], D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
} else {
func_80027C74(player, (uintptr_t*) (wheel1 + (temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
// printf("wheel1\n");
// printf("OFFSET: 0x%X, t0: 0x%X, temp_num: 0x%X t2: 0x%X, t2_8: 0x%X\n", (((temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600)), temp_t0, temp_num, temp_t2, (temp_t2 >> 8));
// printf("wheel offset: 0x%X, w0: 0x%X, t0: 0x%X\n", wheel1 + (((temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40) + 0x600)), wheel1, temp_t0);
// printf("wheel: 0x%X, char: 0x%X, t1: 0x%X\n", wheel1, player->characterId, temp_t1);
int32_t offset = (((((temp_t0 - 21) * (temp_num * 4) + ((temp_t2 >> 8) * 0x40))+ 0x600)) * 2) / 0x80;
func_80027C74(player, wheelPtr[character][wheel1 + offset], D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
}
} else {
if (temp_t0 == 0) {
func_80027C74(player, (uintptr_t*) (wheel0 + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
// printf("wheel0\n");
// printf("OFFSET: 0x%X, t0: 0x%X, temp_num: 0x%X t2: 0x%X, t2_8: 0x%X\n", (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40), temp_t0, temp_num, temp_t2, (temp_t2 >> 8));
// printf("wheel offset: 0x%X, w0: 0x%X, t0: 0x%X\n", wheel0 + ((temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), wheel0, temp_t0);
// printf("wheel: 0x%X, char: 0x%X, t1: 0x%X\n", wheel0, player->characterId, temp_t1);
int32_t offset = (((temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80;
func_80027C74(player, wheelPtr[character][wheel0 + offset], D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
} else {
func_80027C74(player, (uintptr_t*) (wheel1 + (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
// printf("wheel1_2\n");
// printf("OFFSET: 0x%X, t0: 0x%X, temp_num: 0x%X t2: 0x%X, t2_8: 0x%X\n", (temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40), temp_t0, temp_num, temp_t2, (temp_t2 >> 8));
// printf("wheel offset: 0x%X, w0: 0x%X, t0: 0x%X\n", wheel1 + ((temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)), wheel1, temp_t0);
// printf("wheel: 0x%X, char: 0x%X, t1: 0x%X\n", wheel1, player->characterId, temp_t1);
int32_t offset = (((temp_t0 * temp_num * 4) + ((temp_t2 >> 8) * 0x40)) * 2) / 0x80;
func_80027C74(player, wheelPtr[character][wheel1 + offset], D_802F1F80_WHEEL(arg3, screenId, playerId), 0x80);
}
}
//printf("---end---\n");
}
}
+18 -18
View File
@@ -106,26 +106,26 @@ extern Vtx D_800E4EC0[];
extern Vtx D_800E4FD0[];
extern Vtx D_800E50D0[];
extern u8 **gKartMarioWheels0[];
extern u8 **gKartMarioWheels1[];
extern u8 **gKartLuigiWheels0[];
extern u8 **gKartLuigiWheels1[];
extern u8 **gKartBowserWheels0[];
extern u8 **gKartBowserWheels1[];
extern u8 **gKartToadWheels0[];
extern u8 **gKartToadWheels1[];
extern u8 **gKartYoshiWheels0[];
extern u8 **gKartYoshiWheels1[];
extern u8 **gKartDKWheels0[];
extern u8 **gKartDKWheels1[];
extern u8 **gKartPeachWheels0[];
extern u8 **gKartPeachWheels1[];
extern u8 **gKartWarioWheels0[];
extern u8 **gKartWarioWheels1[];
extern u32 gKartMarioWheels0[];
extern u32 gKartMarioWheels1[];
extern u32 gKartLuigiWheels0[];
extern u32 gKartLuigiWheels1[];
extern u32 gKartBowserWheels0[];
extern u32 gKartBowserWheels1[];
extern u32 gKartToadWheels0[];
extern u32 gKartToadWheels1[];
extern u32 gKartYoshiWheels0[];
extern u32 gKartYoshiWheels1[];
extern u32 gKartDKWheels0[];
extern u32 gKartDKWheels1[];
extern u32 gKartPeachWheels0[];
extern u32 gKartPeachWheels1[];
extern u32 gKartWarioWheels0[];
extern u32 gKartWarioWheels1[];
extern u16 **D_800DDE34[];
extern u16 **D_800DDE54[];
extern u32 *D_800DDE34[];
extern u32 *D_800DDE54[];
// These all come the kart data stuff, they should end up in their own inc.c eventually
+13 -2
View File
@@ -68,14 +68,25 @@ extern StaffGhost *d_luigi_raceway_staff_ghost;
void func_80004EF0(void) {
D_80162DA4 = (u32 *) &D_802BFB80.arraySize8[0][2][3];
u8 *dest = (u8 *) D_80162DA4;
osInvalDCache(&D_80162DA4[0], 0x4000);
//osPiStartDma(&gDmaIoMesg, 0, 0, (uintptr_t) &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(D_80162DC4)], D_80162DA4, 0x4000, &gDmaMesgQueue);
memcpy(&D_80162DA4, D_80162DC4, 0x4000);
u8 *ghost = (u8 *) LOAD_ASSET(D_80162DC4);
// Manual memcpy required for byte swap
for (int i = 0; i < 0x4000; i += 4) {
dest[i] = ghost[i + 3];
dest[i + 1] = ghost[i + 2];
dest[i + 2] = ghost[i + 1];
dest[i + 3] = ghost[i];
}
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
D_80162D9C = (*D_80162DA4 & 0xFF0000);
D_80162DA0 = 0;
}
void func_80004FB0(void) {
D_80162DB4 = (u32 *) &D_802BFB80.arraySize8[0][D_80162DD0][3];
D_80162DAC = *D_80162DB4 & 0xFF0000;
+4
View File
@@ -10,6 +10,10 @@
header:
- '#include <libultraship.h>'
- '#include <align_asset_macro.h>'
tables:
bowser_kart_wheels:
range: [0x9C088, 0xC0208]
mode: APPEND
bowser_kart_frame000:
symbol: gKartBowser000
type: texture
+4
View File
@@ -10,6 +10,10 @@
header:
- '#include <libultraship.h>'
- '#include <align_asset_macro.h>'
tables:
donkeykong_kart_wheels:
range: [0x8DC94, 0xB1E14]
mode: APPEND
donkeykong_kart_frame000:
symbol: gKartDK000
type: texture
+23 -61
View File
@@ -432,7 +432,7 @@ d_course_kalimari_desert_tree_tlut:
width: 16
height: 16
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_cactus_model1:
symbol: d_course_kalimari_desert_cactus_model1
type: vtx
@@ -442,22 +442,19 @@ d_course_kalimari_desert_cactus_model2:
symbol: d_course_kalimari_desert_cactus_model2
type: vtx
offset: 0x84e8
count: 4
count: 8
d_course_kalimari_desert_dl_cactus1:
symbol: d_course_kalimari_desert_dl_cactus1
type: gfx
offset: 0x8528
otr_mode: index
d_course_kalimari_desert_dl_cactus2:
symbol: d_course_kalimari_desert_dl_cactus2
type: gfx
offset: 0x8628
otr_mode: index
d_course_kalimari_desert_dl_cactus3:
symbol: d_course_kalimari_desert_dl_cactus3
type: gfx
offset: 0x8728
otr_mode: index
d_course_kalimari_desert_crossing_sign_inactive_top_left:
symbol: d_course_kalimari_desert_crossing_sign_inactive_top_left
type: texture
@@ -465,7 +462,7 @@ d_course_kalimari_desert_crossing_sign_inactive_top_left:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_crossing_sign_inactive_top_right:
symbol: d_course_kalimari_desert_crossing_sign_inactive_top_right
type: texture
@@ -473,7 +470,7 @@ d_course_kalimari_desert_crossing_sign_inactive_top_right:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_crossing_sign_inactive_bottom_left:
symbol: d_course_kalimari_desert_crossing_sign_inactive_bottom_left
type: texture
@@ -481,7 +478,7 @@ d_course_kalimari_desert_crossing_sign_inactive_bottom_left:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_crossing_sign_inactive_bottom_right:
symbol: d_course_kalimari_desert_crossing_sign_inactive_bottom_right
type: texture
@@ -489,7 +486,7 @@ d_course_kalimari_desert_crossing_sign_inactive_bottom_right:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_crossing_sign_active_top_left:
symbol: d_course_kalimari_desert_crossing_sign_active_top_left
type: texture
@@ -497,7 +494,7 @@ d_course_kalimari_desert_crossing_sign_active_top_left:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_crossing_sign_active_top_right:
symbol: d_course_kalimari_desert_crossing_sign_active_top_right
type: texture
@@ -505,7 +502,7 @@ d_course_kalimari_desert_crossing_sign_active_top_right:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_crossing_sign_active_bottom_left:
symbol: d_course_kalimari_desert_crossing_sign_active_bottom_left
type: texture
@@ -513,7 +510,7 @@ d_course_kalimari_desert_crossing_sign_active_bottom_left:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_crossing_sign_active_bottom_right:
symbol: d_course_kalimari_desert_crossing_sign_active_bottom_right
type: texture
@@ -521,7 +518,7 @@ d_course_kalimari_desert_crossing_sign_active_bottom_right:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_crossing_signal_active_model:
symbol: d_course_kalimari_desert_crossing_signal_active_model
type: vtx
@@ -604,7 +601,7 @@ d_course_kalimari_desert_locomotive_64:
width: 32
height: 32
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_locomotive_cab_window:
symbol: d_course_kalimari_desert_locomotive_cab_window
type: texture
@@ -612,7 +609,7 @@ d_course_kalimari_desert_locomotive_cab_window:
width: 64
height: 32
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_locomotive_cab_window_front:
symbol: d_course_kalimari_desert_locomotive_cab_window_front
type: texture
@@ -620,7 +617,7 @@ d_course_kalimari_desert_locomotive_cab_window_front:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_locomotive_chassis:
symbol: d_course_kalimari_desert_locomotive_chassis
type: texture
@@ -628,7 +625,7 @@ d_course_kalimari_desert_locomotive_chassis:
width: 32
height: 32
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_locomotive_lamp:
symbol: d_course_kalimari_desert_locomotive_lamp
type: texture
@@ -636,7 +633,7 @@ d_course_kalimari_desert_locomotive_lamp:
width: 32
height: 32
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_locomotive_boiler:
symbol: d_course_kalimari_desert_locomotive_boiler
type: texture
@@ -644,7 +641,7 @@ d_course_kalimari_desert_locomotive_boiler:
width: 32
height: 32
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_carriage_railing:
symbol: d_course_kalimari_desert_carriage_railing
type: texture
@@ -652,7 +649,7 @@ d_course_kalimari_desert_carriage_railing:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_locomotive_tender:
symbol: d_course_kalimari_desert_locomotive_tender
type: texture
@@ -660,7 +657,7 @@ d_course_kalimari_desert_locomotive_tender:
width: 64
height: 32
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_railway_ballast:
symbol: d_course_kalimari_desert_railway_ballast
type: texture
@@ -668,7 +665,7 @@ d_course_kalimari_desert_railway_ballast:
width: 32
height: 32
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_carriage_lower:
symbol: d_course_kalimari_desert_carriage_lower
type: texture
@@ -676,7 +673,7 @@ d_course_kalimari_desert_carriage_lower:
width: 32
height: 32
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_carriage_door:
symbol: d_course_kalimari_desert_carriage_door
type: texture
@@ -684,7 +681,7 @@ d_course_kalimari_desert_carriage_door:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_carriage_window:
symbol: d_course_kalimari_desert_carriage_window
type: texture
@@ -692,7 +689,7 @@ d_course_kalimari_desert_carriage_window:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_locomotive_model_lod2:
symbol: d_course_kalimari_desert_locomotive_model_lod2
type: vtx
@@ -857,17 +854,14 @@ d_course_kalimari_desert_dl_1C0B0:
symbol: d_course_kalimari_desert_dl_1C0B0
type: gfx
offset: 0x1c0b0
otr_mode: index
d_course_kalimari_desert_dl_1C0E0:
symbol: d_course_kalimari_desert_dl_1C0E0
type: gfx
offset: 0x1c0e0
otr_mode: index
d_course_kalimari_desert_dl_1C0F0:
symbol: d_course_kalimari_desert_dl_1C0F0
type: gfx
offset: 0x1c0f0
otr_mode: index
d_course_kalimari_desert_locomotive_model_lod1:
symbol: d_course_kalimari_desert_locomotive_model_lod1
type: vtx
@@ -997,17 +991,14 @@ d_course_kalimari_desert_dl_1D630:
symbol: d_course_kalimari_desert_dl_1D630
type: gfx
offset: 0x1d630
otr_mode: index
d_course_kalimari_desert_dl_1D660:
symbol: d_course_kalimari_desert_dl_1D660
type: gfx
offset: 0x1d660
otr_mode: index
d_course_kalimari_desert_dl_1D670:
symbol: d_course_kalimari_desert_dl_1D670
type: gfx
offset: 0x1d670
otr_mode: index
d_course_kalimari_desert_locomotive_model_lod0:
symbol: d_course_kalimari_desert_locomotive_model_lod0
type: vtx
@@ -1132,17 +1123,14 @@ d_course_kalimari_desert_dl_1E8D0:
symbol: d_course_kalimari_desert_dl_1E8D0
type: gfx
offset: 0x1e8d0
otr_mode: index
d_course_kalimari_desert_dl_1E900:
symbol: d_course_kalimari_desert_dl_1E900
type: gfx
offset: 0x1e900
otr_mode: index
d_course_kalimari_desert_dl_1E910:
symbol: d_course_kalimari_desert_dl_1E910
type: gfx
offset: 0x1e910
otr_mode: index
d_course_kalimari_desert_tender_model_lod2:
symbol: d_course_kalimari_desert_tender_model_lod2
type: vtx
@@ -1187,17 +1175,14 @@ d_course_kalimari_desert_dl_1F1F8:
symbol: d_course_kalimari_desert_dl_1F1F8
type: gfx
offset: 0x1f1f8
otr_mode: index
d_course_kalimari_desert_dl_1F218:
symbol: d_course_kalimari_desert_dl_1F218
type: gfx
offset: 0x1f218
otr_mode: index
d_course_kalimari_desert_dl_1F228:
symbol: d_course_kalimari_desert_dl_1F228
type: gfx
offset: 0x1f228
otr_mode: index
d_course_kalimari_desert_tender_model_lod1:
symbol: d_course_kalimari_desert_tender_model_lod1
type: vtx
@@ -1227,17 +1212,14 @@ d_course_kalimari_desert_dl_1F6E0:
symbol: d_course_kalimari_desert_dl_1F6E0
type: gfx
offset: 0x1f6e0
otr_mode: index
d_course_kalimari_desert_dl_1F6F8:
symbol: d_course_kalimari_desert_dl_1F6F8
type: gfx
offset: 0x1f6f8
otr_mode: index
d_course_kalimari_desert_dl_1F708:
symbol: d_course_kalimari_desert_dl_1F708
type: gfx
offset: 0x1f708
otr_mode: index
d_course_kalimari_desert_dl_1F720:
symbol: d_course_kalimari_desert_dl_1F720
type: gfx
@@ -1272,17 +1254,14 @@ d_course_kalimari_desert_dl_1FAD0:
symbol: d_course_kalimari_desert_dl_1FAD0
type: gfx
offset: 0x1fad0
otr_mode: index
d_course_kalimari_desert_dl_1FAE8:
symbol: d_course_kalimari_desert_dl_1FAE8
type: gfx
offset: 0x1fae8
otr_mode: index
d_course_kalimari_desert_dl_1FAF8:
symbol: d_course_kalimari_desert_dl_1FAF8
type: gfx
offset: 0x1faf8
otr_mode: index
d_course_kalimari_desert_dl_1FB10:
symbol: d_course_kalimari_desert_dl_1FB10
type: gfx
@@ -1387,22 +1366,18 @@ d_course_kalimari_desert_dl_209C8:
symbol: d_course_kalimari_desert_dl_209C8
type: gfx
offset: 0x209c8
otr_mode: index
d_course_kalimari_desert_dl_209F8:
symbol: d_course_kalimari_desert_dl_209F8
type: gfx
offset: 0x209f8
otr_mode: index
d_course_kalimari_desert_dl_20A08:
symbol: d_course_kalimari_desert_dl_20A08
type: gfx
offset: 0x20a08
otr_mode: index
d_course_kalimari_desert_dl_20A20:
symbol: d_course_kalimari_desert_dl_20A20
type: gfx
offset: 0x20a20
otr_mode: index
d_course_kalimari_desert_carriage_chassis_model_lod1:
symbol: d_course_kalimari_desert_carriage_chassis_model_lod1
type: vtx
@@ -1457,17 +1432,14 @@ d_course_kalimari_desert_dl_21200:
symbol: d_course_kalimari_desert_dl_21200
type: gfx
offset: 0x21200
otr_mode: index
d_course_kalimari_desert_dl_21210:
symbol: d_course_kalimari_desert_dl_21210
type: gfx
offset: 0x21210
otr_mode: index
d_course_kalimari_desert_dl_21220:
symbol: d_course_kalimari_desert_dl_21220
type: gfx
offset: 0x21220
otr_mode: index
d_course_kalimari_desert_dl_21238:
symbol: d_course_kalimari_desert_dl_21238
type: gfx
@@ -1492,17 +1464,14 @@ d_course_kalimari_desert_dl_21518:
symbol: d_course_kalimari_desert_dl_21518
type: gfx
offset: 0x21518
otr_mode: index
d_course_kalimari_desert_dl_21540:
symbol: d_course_kalimari_desert_dl_21540
type: gfx
offset: 0x21540
otr_mode: index
d_course_kalimari_desert_dl_21550:
symbol: d_course_kalimari_desert_dl_21550
type: gfx
offset: 0x21550
otr_mode: index
d_course_kalimari_desert_carriage_model_lod0:
symbol: d_course_kalimari_desert_carriage_model_lod0
type: vtx
@@ -1542,17 +1511,14 @@ d_course_kalimari_desert_dl_21A60:
symbol: d_course_kalimari_desert_dl_21A60
type: gfx
offset: 0x21a60
otr_mode: index
d_course_kalimari_desert_dl_21A70:
symbol: d_course_kalimari_desert_dl_21A70
type: gfx
offset: 0x21a70
otr_mode: index
d_course_kalimari_desert_dl_21A80:
symbol: d_course_kalimari_desert_dl_21A80
type: gfx
offset: 0x21a80
otr_mode: index
d_course_kalimari_desert_dl_21A98:
symbol: d_course_kalimari_desert_dl_21A98
type: gfx
@@ -1577,17 +1543,14 @@ d_course_kalimari_desert_dl_21C58:
symbol: d_course_kalimari_desert_dl_21C58
type: gfx
offset: 0x21c58
otr_mode: index
d_course_kalimari_desert_dl_21C80:
symbol: d_course_kalimari_desert_dl_21C80
type: gfx
offset: 0x21c80
otr_mode: index
d_course_kalimari_desert_dl_21C90:
symbol: d_course_kalimari_desert_dl_21C90
type: gfx
offset: 0x21c90
otr_mode: index
d_course_kalimari_desert_unknown_model1:
symbol: d_course_kalimari_desert_unknown_model1
type: vtx
@@ -1605,12 +1568,11 @@ d_course_kalimari_desert_train_bogie:
width: 32
height: 64
format: rgba16
ctype: u8
ctype: u16
d_course_kalimari_desert_dl_22D28:
symbol: d_course_kalimari_desert_dl_22D28
type: gfx
offset: 0x22d28
otr_mode: index
d_course_kalimari_desert_dl_22D70:
symbol: d_course_kalimari_desert_dl_22D70
type: gfx
+1 -1
View File
@@ -14,4 +14,4 @@ d_course_kalimari_desert_packed_dls:
symbol: d_course_kalimari_desert_packed_dls
type: blob
offset: 0x934004
size: 0x2FC6
size: 0x2FC6
+4
View File
@@ -10,6 +10,10 @@
header:
- '#include <libultraship.h>'
- '#include <align_asset_macro.h>'
tables:
luigi_kart_wheels:
range: [0x769FC, 0x9AB7C]
mode: APPEND
luigi_kart_frame000:
symbol: gKartLuigi000
type: texture
+4
View File
@@ -10,6 +10,10 @@
header:
- '#include <libultraship.h>'
- '#include <align_asset_macro.h>'
tables:
mario_kart_wheels:
range: [0x6E4B0, 0x92630]
mode: APPEND
mario_kart_frame000:
symbol: gKartMario000
type: texture
+4
View File
@@ -10,6 +10,10 @@
header:
- '#include <libultraship.h>'
- '#include <align_asset_macro.h>'
tables:
peach_kart_wheels:
range: [0x6FDE8, 0x93F68]
mode: APPEND
peach_kart_frame000:
symbol: gKartPeach000
type: texture
+4
View File
@@ -10,6 +10,10 @@
header:
- '#include <libultraship.h>'
- '#include <align_asset_macro.h>'
tables:
toad_kart_wheels:
range: [0x6C6E8, 0x90868]
mode: APPEND
toad_kart_frame000:
symbol: gKartToad000
type: texture
+4
View File
@@ -10,6 +10,10 @@
header:
- '#include <libultraship.h>'
- '#include <align_asset_macro.h>'
tables:
wario_kart_wheels:
range: [0x78F9C, 0x9D11C]
mode: APPEND
wario_kart_frame000:
symbol: gKartWario000
type: texture
+4
View File
@@ -10,6 +10,10 @@
header:
- '#include <libultraship.h>'
- '#include <align_asset_macro.h>'
tables:
yoshi_kart_wheels:
range: [0x731A8, 0x97328]
mode: APPEND
yoshi_kart_frame000:
symbol: gKartYoshi000
type: texture