From 779ae6f6f1a91db2a560aecdbc9fa55fb203a63c Mon Sep 17 00:00:00 2001 From: MegaMech Date: Fri, 16 Jun 2023 10:30:39 -0600 Subject: Item & Various decomp (#311) * Item & Various decomp --- src/audio/external.c | 19 +- src/code_80027D00.c | 2 +- src/code_80057C60.c | 156 ++-- src/code_80057C60.h | 2 +- src/code_80071F00.c | 2273 +++++++++++++++++++-------------------------- src/code_80071F00.h | 4 +- src/code_8008C1D0.c | 5 +- src/common_textures.inc.c | 259 +++++- src/hud_renderer.c | 82 +- 9 files changed, 1323 insertions(+), 1479 deletions(-) (limited to 'src') diff --git a/src/audio/external.c b/src/audio/external.c index 27a85c2c5..802102509 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -4238,16 +4238,21 @@ block_4: GLOBAL_ASM("asm/non_matchings/audio/external/func_800C8F80.s") #endif -#ifdef MIPS_TO_C +#ifdef NON_MATCHING //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800C5578(void *, s32); // extern -extern ? D_800E9F7C; +//void func_800C5578(void *, s32); // extern -void func_800C9018(s32 arg0) { - s32 temp_a2; +typedef struct { + s32 unk0[0x3C]; +} UnkStruct_800E9F7C; - temp_a2 = arg0 & 0xFF; - func_800C5578((temp_a2 * 0x3C) + &D_800E9F7C, temp_a2); +extern UnkStruct_800E9F7C D_800E9F7C[]; + +void func_800C9018(u8 arg0, s32 arg1) { + //s32 temp_a2; + + //temp_a2 = arg0; + func_800C5578(D_800E9F7C->unk0[arg0], arg1); } #else GLOBAL_ASM("asm/non_matchings/audio/external/func_800C9018.s") diff --git a/src/code_80027D00.c b/src/code_80027D00.c index 1332993df..b3b919d4d 100644 --- a/src/code_80027D00.c +++ b/src/code_80027D00.c @@ -1843,7 +1843,7 @@ void func_8002B308(Player *player, s8 arg1, s8 arg2) { if ((player->statusEffects & 0x01000000) == 0x01000000) { func_8008EAE0(player, arg1); } - if ((player->statusEffects & 0x800000) == 0x800000) { + if ((player->statusEffects & 0x00800000) == 0x00800000) { func_8008EC88(player, arg1); } if ((player->statusEffects & 0x8000) == 0x8000) { diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 734398596..171eccf1b 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -828,14 +828,14 @@ GLOBAL_ASM("asm/non_matchings/code_80057C60/func_80059820.s") void func_800598D4(s32 arg0) { struct Controller *controller = &gControllerOne[arg0]; - if ((controller->button & 0x8000) != 0) { - D_801658FF++; + if ((controller->button & A_BUTTON) != 0) { + gControllerRandom++; } - if ((controller->button & 0x4000) != 0) { - D_801658FF++; + if ((controller->button & B_BUTTON) != 0) { + gControllerRandom++; } - if ((controller->button & 0x10) != 0) { - D_801658FF++; + if ((controller->button & R_TRIG) != 0) { + gControllerRandom++; } } @@ -8287,8 +8287,8 @@ GLOBAL_ASM("asm/non_matchings/code_80057C60/func_80069DB8.s") #ifdef MIPS_TO_C //generated by m2c commit b7eac665cffd02361f73cec283ef16d0a35a0e5b -? func_800652D4(f32 *, s16 *, f32); /* extern */ -extern u32 D_8018D49C; +//? func_800652D4(f32 *, s16 *, f32); /* extern */ +//extern u32 D_8018D49C; void func_8006A01C(Player *player, s32 arg1, s16 arg2, s8 arg3) { f32 sp5C; @@ -8297,83 +8297,77 @@ void func_8006A01C(Player *player, s32 arg1, s16 arg2, s8 arg3) { s16 sp50; s16 sp4E; s16 sp4C; - Gfx *sp2C; - Gfx *sp28; - Gfx *temp_v0_10; - Gfx *temp_v0_11; - Gfx *temp_v0_12; - Gfx *temp_v0_13; - Gfx *temp_v0_2; - Gfx *temp_v0_3; - Gfx *temp_v0_4; - Gfx *temp_v0_5; - Gfx *temp_v0_6; - Gfx *temp_v0_7; - Gfx *temp_v0_8; - Gfx *temp_v0_9; - void *temp_v0; - - temp_v0 = player + (arg2 * 0x48); + UnkPlayerStruct258 *temp_v0 = &player->unk_258[arg2]; // + (arg2 * 0x48); if (player->unk_258[arg2].unk_01C == 1) { - sp54 = temp_v0->unk528; - sp58 = temp_v0->unk52C; + sp54 = player->unk_258[arg2].unk_028; + sp58 = player->unk_258[arg2].unk_02C; sp4C = 0; - sp5C = temp_v0->unk530; + sp5C = player->unk_258[arg2].unk_030; sp50 = 0; sp4E = player->unk_048[arg3]; - func_800652D4(&sp54, &sp4C, temp_v0->unk534 * player->unk_224); - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->words.w0 = 0x06000000; - temp_v0_2->words.w1 = (u32) D_0D008D58; - temp_v0_3 = gDisplayListHead; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->words.w1 = 0; - temp_v0_3->words.w0 = 0xBA000E02; - temp_v0_4 = gDisplayListHead; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->words.w0 = 0xFD700000; - temp_v0_4->words.w1 = D_8018D49C; - temp_v0_5 = gDisplayListHead; - gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->words.w1 = 0x07080200; - temp_v0_5->words.w0 = 0xF5700000; - temp_v0_6 = gDisplayListHead; - gDisplayListHead = temp_v0_6 + 8; - temp_v0_6->words.w1 = 0; - temp_v0_6->words.w0 = 0xE6000000; - temp_v0_7 = gDisplayListHead; - gDisplayListHead = temp_v0_7 + 8; - temp_v0_7->words.w1 = 0x070FF200; - temp_v0_7->words.w0 = 0xF3000000; - temp_v0_8 = gDisplayListHead; - gDisplayListHead = temp_v0_8 + 8; - temp_v0_8->words.w1 = 0; - temp_v0_8->words.w0 = 0xE7000000; - temp_v0_9 = gDisplayListHead; - gDisplayListHead = temp_v0_9 + 8; - sp2C = temp_v0_9; - temp_v0_9->words.w0 = 0xF5700800; - temp_v0_9->words.w1 = 0x00080200; - temp_v0_10 = gDisplayListHead; - gDisplayListHead = temp_v0_10 + 8; - sp28 = temp_v0_10; - temp_v0_10->words.w1 = 0x0003C03C; - temp_v0_10->words.w0 = 0xF2000000; - func_8004B35C(0x000000FF, 0x000000FF, 0x000000FF, 0x000000FF); - temp_v0_11 = gDisplayListHead; - gDisplayListHead = temp_v0_11 + 8; - temp_v0_11->words.w0 = 0xB900031D; - temp_v0_11->words.w1 = 0x00504B50; - temp_v0_12 = gDisplayListHead; - gDisplayListHead = temp_v0_12 + 8; - temp_v0_12->words.w1 = (u32) D_0D008B78; - temp_v0_12->words.w0 = 0x0400103F; - temp_v0_13 = gDisplayListHead; - gDisplayListHead = temp_v0_13 + 8; - temp_v0_13->words.w0 = 0x06000000; - temp_v0_13->words.w1 = (u32) D_0D008DA0; - D_80164AF0 += 1; + func_800652D4(&sp54, &sp4C, player->unk_258[arg2].unk_034 * player->unk_224); + + gSPDisplayList(gDisplayListHead++, D_0D008D58); + gDPSetTextureLUT(gDisplayListHead++, G_TT_NONE); + gDPLoadTextureBlock(gDisplayListHead++, D_8018D49C, G_IM_FMT_IA, G_IM_SIZ_16b, 16, 16, 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); + func_8004B35C(0xFF, 0xFF, 0xFF, 0xFF); + gDPSetRenderMode(gDisplayListHead++, G_RM_ZB_CLD_SURF, G_RM_ZB_CLD_SURF2); + gSPVertex(gDisplayListHead++, D_0D008B78, 4, 0); + gSPDisplayList(gDisplayListHead++, D_0D008DA0); + D_80164AF0++; + + + + // temp_v0_2 = gDisplayListHead; + // gDisplayListHead = temp_v0_2 + 8; + // temp_v0_2->words.w0 = 0x06000000; + // temp_v0_2->words.w1 = (u32) D_0D008D58; + // temp_v0_3 = gDisplayListHead; + // gDisplayListHead = temp_v0_3 + 8; + // temp_v0_3->words.w1 = 0; + // temp_v0_3->words.w0 = 0xBA000E02; + // temp_v0_4 = gDisplayListHead; + // gDisplayListHead = temp_v0_4 + 8; + // temp_v0_4->words.w0 = 0xFD700000; + // temp_v0_4->words.w1 = D_8018D49C; + // temp_v0_5 = gDisplayListHead; + // gDisplayListHead = temp_v0_5 + 8; + // temp_v0_5->words.w1 = 0x07080200; + // temp_v0_5->words.w0 = 0xF5700000; + // temp_v0_6 = gDisplayListHead; + // gDisplayListHead = temp_v0_6 + 8; + // temp_v0_6->words.w1 = 0; + // temp_v0_6->words.w0 = 0xE6000000; + // temp_v0_7 = gDisplayListHead; + // gDisplayListHead = temp_v0_7 + 8; + // temp_v0_7->words.w1 = 0x070FF200; + // temp_v0_7->words.w0 = 0xF3000000; + // temp_v0_8 = gDisplayListHead; + // gDisplayListHead = temp_v0_8 + 8; + // temp_v0_8->words.w1 = 0; + // temp_v0_8->words.w0 = 0xE7000000; + // temp_v0_9 = gDisplayListHead; + // gDisplayListHead = temp_v0_9 + 8; + // sp2C = temp_v0_9; + // temp_v0_9->words.w0 = 0xF5700800; + // temp_v0_9->words.w1 = 0x00080200; + // temp_v0_10 = gDisplayListHead; + // gDisplayListHead = temp_v0_10 + 8; + // sp28 = temp_v0_10; + // temp_v0_10->words.w1 = 0x0003C03C; + // temp_v0_10->words.w0 = 0xF2000000; + // temp_v0_11 = gDisplayListHead; + // gDisplayListHead = temp_v0_11 + 8; + // temp_v0_11->words.w0 = 0xB900031D; + // temp_v0_11->words.w1 = 0x00504B50; + // temp_v0_12 = gDisplayListHead; + // gDisplayListHead = temp_v0_12 + 8; + // temp_v0_12->words.w1 = (u32) D_0D008B78; + // temp_v0_12->words.w0 = 0x0400103F; + // temp_v0_13 = gDisplayListHead; + // gDisplayListHead = temp_v0_13 + 8; + // temp_v0_13->words.w0 = 0x06000000; + // temp_v0_13->words.w1 = (u32) D_0D008DA0; } } #else diff --git a/src/code_80057C60.h b/src/code_80057C60.h index 431adf4dc..661110d7f 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.h @@ -218,7 +218,7 @@ extern s8 D_801657F0; extern s8 D_80165800; extern s8 D_80165801; extern s8 D_801657B0; -extern u8 D_801658FF; +extern u8 gControllerRandom; extern struct Controller *gControllerOne; extern s32 D_8018D214; extern s32 D_8018D2C8[]; diff --git a/src/code_80071F00.c b/src/code_80071F00.c index c461a3546..59c966f5f 100644 --- a/src/code_80071F00.c +++ b/src/code_80071F00.c @@ -2,6 +2,7 @@ #include #include #include +#include "memory.h" #include "camera.h" #include "math_util.h" #include "math_util_2.h" @@ -13,6 +14,35 @@ #include "code_80086E70.h" #include "common_textures.h" #include "audio/external.h" +#include "sounds.h" +#include + +extern s32 D_8018D1F0; + +typedef struct { + s16 unk[0x70]; +} UnkStruct_80165CBE; + +extern UnkStruct_80165CBE D_80165CBE[]; + +typedef struct { + u8 unk[0xE0]; +} UnkStruct_80165CF5; + +extern UnkStruct_80165CF5 D_80165CF5[]; + +typedef struct { + f32 unk[0x38]; +} UnkStruct_80165C40; + +extern UnkStruct_80165C40 D_80165C40[]; + +typedef struct { + s16 unk[0x70]; +} UnkStruct_80165CB4; + +extern UnkStruct_80165CB4 D_80165CB4[]; + s32 find_unused_obj_index(s32* arg0) { s32 temp_v0; @@ -97,25 +127,15 @@ void func_80072100(s32 *arg0) { func_80071F6C(arg0); } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc void func_80072120(s32 *arg0, s32 arg1) { - s32 *var_s1; s32 var_s0; + s32 i; - var_s1 = arg0; - var_s0 = 0; - if (arg1 > 0) { - do { - func_800721E8(*var_s1, 0x00600000); - var_s0 += 1; - var_s1 += 4; - } while (var_s0 != arg1); + for (i = 0; i < arg1; i++) { + func_800721E8(*arg0, 0x00600000); + arg0++; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80072120.s") -#endif void func_80072180(void) { if (gModeSelection == TIME_TRIALS) { @@ -357,35 +377,22 @@ void func_800729D0(s32 arg0, s32 arg1) { D_80165C18[arg0].unk_0A4 = arg1; } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern s32 D_8018D2A4; -extern s32 D_8018D2BC; -s16 gCurrentCourseId; /* unable to generate initializer */ - void func_800729EC(s32 arg0) { - s8 temp_v1; - struct_8018CA70_entry *var_v0; + u32 temp_v1 = 1; + s32 i; start_race(); func_80072488(arg0); D_8018D2BC = 1; D_8018D2A4 = 1; + if (gCurrentCourseId != 4) { - temp_v1 = D_8018EDF3; - var_v0 = D_8018CA70; - if (temp_v1 > 0) { - do { - var_v0 += 0x84; - var_v0->unk-3 = 1; - } while ((u32) var_v0 < (u32) &D_8018CA70[temp_v1]); + for (i = 0; i < D_8018EDF3; i++) { + D_8018CA70[i].unk_81 = temp_v1; } } func_8005AB20(); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800729EC.s") -#endif UNUSED void func_80072A78(s32 arg0, s32 arg1) { D_80165C18[arg0].unk_0D2 = arg1; @@ -1153,17 +1160,9 @@ void func_80074510(uintptr_t devAddr, void * vaddr, size_t nbytes) { D_8018D224 = 1; } -#ifdef NON_MATCHING - -extern s8 _other_texturesSegmentRomStart[]; - -void func_80074574(s32 arg0, u8 *arg1, u16 arg2, u16 arg3) { - if (1); - func_80074510(&_other_texturesSegmentRomStart[arg0 & 0xFFFFFF], (void *) (arg2 * arg3), arg3); +void func_80074574(s32 arg0, void *arg1, u16 arg2, u16 arg3) { + func_80074510(&_other_texturesSegmentRomStart[SEGMENT_OFFSET(arg0)], arg1, arg2 * arg3); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80074574.s") -#endif void func_800745C8(s32 arg0, s32 arg1) { s32 phi_a1; @@ -1225,47 +1224,31 @@ s32 func_80074790(s32 arg0, s32 arg1) { return (D_80165C18[arg0].unk_0D9 * D_80165C18[arg0].unk_0DA * phi_a2) + arg1; } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_80074574(s32, s32, u8, u8); /* extern */ - void func_800747F0(s32 objectIndex, s32 arg1) { s32 sp24; - struct_80165C18_entry *sp1C; - s8 temp_v0; - struct_80165C18_entry *temp_v1; - - temp_v1 = &D_80165C18[objectIndex]; - temp_v0 = temp_v1->unk_0D2; - if (temp_v0 != temp_v1->unk_0D3) { - sp1C = temp_v1; - sp24 = (temp_v0 * temp_v1->unk_0D9 * temp_v1->unk_0DA) + temp_v1->unk_06C; - func_80074574(sp24, func_80074790(objectIndex, arg1), temp_v1->unk_0D9, temp_v1->unk_0DA); - temp_v1->unk_0D3 = temp_v1->unk_0D2; + if (D_80165C18[objectIndex].unk_0D2 != D_80165C18[objectIndex].unk_0D3) { + sp24 = D_80165C18[objectIndex].unk_06C + (D_80165C18[objectIndex].unk_0D9 * D_80165C18[objectIndex].unk_0DA * D_80165C18[objectIndex].unk_0D2); + func_80074574(sp24, (void *) func_80074790(objectIndex, arg1), D_80165C18[objectIndex].unk_0D9, D_80165C18[objectIndex].unk_0DA); + D_80165C18[objectIndex].unk_0D3 = D_80165C18[objectIndex].unk_0D2; func_80074478(objectIndex); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800747F0.s") -#endif void func_80074894(s32 arg0, s32 arg1) { - func_800747F0(arg0); + func_800747F0(arg0, arg1); func_800745C8(arg0, arg1); } void func_800748C4(s32 arg0, s32 arg1) { - func_800747F0(arg0); + func_800747F0(arg0, arg1); func_8007466C(arg0, arg1); } void func_800748F4(s32 arg0, s32 arg1) { - func_800747F0(arg0); + func_800747F0(arg0, arg1); func_80074704(arg0, arg1); } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc struct _struct_D_800E6F30_0x3 { /* 0x0 */ u8 unk0; /* inferred */ /* 0x1 */ u8 unk1; /* inferred */ @@ -1278,32 +1261,36 @@ struct _struct_D_800E6F48_0x3 { /* 0x2 */ u8 unk2; /* inferred */ }; /* size = 0x3 */ -void func_8008B80C(s32, ?, ?, ?); /* extern */ +//void func_8008B80C(s32, ?, ?, ?); /* extern */ +extern u16 D_80165748; extern s16 D_80165718; extern s16 D_80165720; extern s16 D_80165728; -extern f32 D_8018D01C; -static struct _struct_D_800E6F30_0x3 D_800E6F30[8] = { - { 0xC8, 1, 0 }, - { 0, 0x70, 1 }, - { 0x10, 0x79, 0x51 }, - { 0, 0x59, 0x70 }, - { 0x70, 0x55, 0 }, - { 0x7A, 0x7E, 0 }, - { 0x77, 0x2C, 0x24 }, - { 0x30, 0x14, 0x58 }, -}; -static struct _struct_D_800E6F48_0x3 D_800E6F48[8] = { - { 0xDC, 0, 0 }, - { 0, 0x8C, 6 }, - { 0, 0, 0x51 }, - { 0, 0, 0 }, - { 0, 0, 0 }, - { 0, 0, 0 }, - { 0, 0, 0 }, - { 0, 0, 0 }, -}; -s16 gCurrentCourseId; /* unable to generate initializer */ + +extern struct _struct_D_800E6F30_0x3 D_800E6F30[8]; +extern struct _struct_D_800E6F30_0x3 D_800E6F48[8]; + +//extern f32 D_8018D01C; +// static struct _struct_D_800E6F30_0x3 D_800E6F30[8] = { +// { 0xC8, 1, 0 }, +// { 0, 0x70, 1 }, +// { 0x10, 0x79, 0x51 }, +// { 0, 0x59, 0x70 }, +// { 0x70, 0x55, 0 }, +// { 0x7A, 0x7E, 0 }, +// { 0x77, 0x2C, 0x24 }, +// { 0x30, 0x14, 0x58 }, +// }; +// static struct _struct_D_800E6F48_0x3 D_800E6F48[8] = { +// { 0xDC, 0, 0 }, +// { 0, 0x8C, 6 }, +// { 0, 0, 0x51 }, +// { 0, 0, 0 }, +// { 0, 0, 0 }, +// { 0, 0, 0 }, +// { 0, 0, 0 }, +// { 0, 0, 0 }, +// }; void func_80074924(s32 objectIndex) { s32 sp2C; @@ -1322,7 +1309,7 @@ void func_80074924(s32 objectIndex) { switch (temp_v0) { /* irregular */ case 0: sp2C = random_int(0x00C8U); - sp28 = random_int((u16) D_80165748); + sp28 = random_int(D_80165748); sp24 = random_int(0x0096U); sp20 = random_int(0x2000U); temp_s0->unk_010[0] = (f32) ((((f64) D_80165718 + 100.0) - (f64) sp2C) * (f64) D_8018D01C); @@ -1331,7 +1318,7 @@ void func_80074924(s32 objectIndex) { break; case 7: sp2C = random_int(0x0168U); - sp28 = random_int((u16) D_80165748); + sp28 = random_int(D_80165748); sp24 = random_int(0x00B4U); sp20 = random_int(0x2000U); temp_s0->unk_010[0] = (f32) ((((f64) D_80165718 + 180.0) - (f64) sp2C) * (f64) D_8018D01C); @@ -1340,7 +1327,7 @@ void func_80074924(s32 objectIndex) { break; case 8: sp2C = random_int(0x012CU); - sp28 = random_int((u16) D_80165748); + sp28 = random_int(D_80165748); sp24 = random_int(0x0096U); sp20 = random_int(0x2000U); temp_s0->unk_010[0] = (f32) ((((f64) D_80165718 + 150.0) - (f64) sp2C) * (f64) D_8018D01C); @@ -1350,20 +1337,20 @@ void func_80074924(s32 objectIndex) { } func_8008B80C(objectIndex, 0, 0, 0); if (D_8018EDF3 == 1) { - temp_s0->unk_03C = (f32) (((f64) (f32) (sp2C % 4) * 0.25) + 0.8); + temp_s0->unk_038[1] = (f32) (((f64) (f32) (sp2C % 4) * 0.25) + 0.8); } else { - temp_s0->unk_03C = (f32) (((f64) (f32) (sp2C % 3) * 0.2) + 0.4); + temp_s0->unk_038[1] = (f32) (((f64) (f32) (sp2C % 3) * 0.2) + 0.4); } temp_a0 = sp2C % 8; temp_v0_2 = &D_800E6F30[temp_a0]; temp_v1 = &D_800E6F48[temp_a0]; - temp_s0->unk_084[6] = sp20 - 0x1000; temp_s0->unk_084[0] = (s16) temp_v0_2->unk0; temp_s0->unk_084[1] = (s16) temp_v0_2->unk1; temp_s0->unk_084[2] = (s16) temp_v0_2->unk2; temp_s0->unk_084[3] = (s16) temp_v1->unk0; temp_s0->unk_084[4] = (s16) temp_v1->unk1; temp_s0->unk_084[5] = (s16) temp_v1->unk2; + temp_s0->unk_084[6] = sp20 - 0x1000; if (sp2C & 1) { temp_s0->unk_084[7] = (sp20 / 32) + 0x100; } else { @@ -1372,9 +1359,6 @@ void func_80074924(s32 objectIndex) { temp_s0->unk_0A0 = 0x00E6; func_80072488(objectIndex); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80074924.s") -#endif void func_80074D94(s32 arg0) { if (D_80165C18[arg0].unk_0AE == 1) { @@ -2073,44 +2057,40 @@ s32 func_80076828(Vec3s arg0, s32 arg1) { return temp_v0; } -#ifdef MIPS_TO_C -//generated by m2c commit d9d3d6575355663122de59f6b2882d8f174e2355 on Dec-25-2022 -s16 D_800E5740[0][3]; /* unable to generate initializer */ -s16 D_800E579C[0][3]; /* unable to generate initializer */ -s16 D_800E57F8[0][3]; /* unable to generate initializer */ +extern s16 D_800E5740[1]; //[15][3]; /* unable to generate initializer */ +extern s16 D_800E579C[1]; //[15][3]; /* unable to generate initializer */ +extern s16 D_800E57F8[1]; //[15][3]; /* unable to generate initializer */ void func_80076884(s32 arg0) { + s32 pad[2]; + s32 i; s16 *var_s2; - s32 var_s0; u16 temp_v0; - temp_v0 = random_int(0x000FU); - switch (arg0) { /* irregular */ - default: - var_s2 = sp28; - break; - case 0: - var_s2 = D_800E5740[temp_v0]; + switch (arg0) + { + case 0: + var_s2 = *(&D_800E5740 + temp_v0 * 3); break; - case 1: - var_s2 = D_800E579C[temp_v0]; + + case 1: + var_s2 = *(&D_800E579C + temp_v0 * 3); break; - case 2: - var_s2 = D_800E57F8[temp_v0]; + + case 2: + var_s2 = *(&D_800E57F8 + temp_v0 * 3); break; + } - var_s0 = 0; -loop_8: - var_s0 += 1; - if (func_80076828(var_s2, var_s0) != -1) { - if (var_s0 != 1) { - goto loop_8; + + for (i = 0; i < 1; i++) + { + if (func_80076828(var_s2, i) == (-1)) + { + break; } } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80076884.s") -#endif void func_80076958(s32 objectIndex) { struct_80165C18_entry *temp_v0; @@ -2129,28 +2109,27 @@ void func_800769D8(s32 objectIndex) { temp_s0 = &D_80165C18[objectIndex]; switch (temp_s0->unk_0A6) { - case 1: - func_80076958(objectIndex); - break; - case 2: - if (func_8007278C(objectIndex, temp_s0->unk_048) != 0) { - func_80086E70(objectIndex); - } - break; - case 3: - f32_step_towards(&temp_s0->unk_000, 2.0f, 0.05f); - s16_step_towards(&temp_s0->unk_0A4, 0, 0x0018); - if ((temp_s0->unk_0AE >= 2) && (func_80073B00(objectIndex, &temp_s0->unk_0A0, 0x000000FF, 0x00000050, 0x00000020, 0, 0) != 0)) { - func_80072488(objectIndex); - } - break; - case 4: - func_80072428(objectIndex); - func_80086F60(objectIndex); - break; - case 0: - default: - break; + case 0: + break; + case 1: + func_80076958(objectIndex); + break; + case 2: + if (func_8007278C(objectIndex, temp_s0->unk_048) != 0) { + func_80086E70(objectIndex); + } + break; + case 3: + f32_step_towards(&temp_s0->unk_000, 2.0f, 0.05f); + s16_step_towards(&temp_s0->unk_0A4, 0, 0x0018); + if ((temp_s0->unk_0AE >= 2) && (func_80073B00(objectIndex, &temp_s0->unk_0A0, 0x000000FF, 0x00000050, 0x00000020, 0, 0) != 0)) { + func_80072488(objectIndex); + } + break; + case 4: + func_80072428(objectIndex); + func_80086F60(objectIndex); + break; } } @@ -2238,20 +2217,20 @@ void func_80076DC4(s32 objectIndex) { void func_80076E14(s32 objectIndex) { switch (D_80165C18[objectIndex].unk_0A6) { - case 1: - func_80076DC4(objectIndex); - break; - case 2: - if ((D_80165C18[objectIndex].unk_0AE >= 2) && (func_80073B00(objectIndex, &D_80165C18[objectIndex].unk_0A0, 0x000000FF, 0x00000050, 0x00000020, 0, 0) != 0)) { - func_80072488(objectIndex); - } - break; - case 0: - break; - case 3: - func_80072428(objectIndex); - func_80086F60(objectIndex); - break; + case 1: + func_80076DC4(objectIndex); + break; + case 2: + if ((D_80165C18[objectIndex].unk_0AE >= 2) && (func_80073B00(objectIndex, &D_80165C18[objectIndex].unk_0A0, 0x000000FF, 0x00000050, 0x00000020, 0, 0) != 0)) { + func_80072488(objectIndex); + } + break; + case 0: + break; + case 3: + func_80072428(objectIndex); + func_80086F60(objectIndex); + break; } } @@ -2281,35 +2260,28 @@ void func_80076F2C(void) { } } } - -#ifdef NON_MATCHING -// Non matching due to some register differences surrounding the accessing of D_800E6788 -extern Vec3s D_800E6788[8]; /* unable to generate initializer */ - + +extern s16 D_800E6788[1]; // todo: fix this extern void func_80076FEC(s32 objectIndex, s32 flameIndex) { - struct_80165C18_entry *temp_v0; - func_800723A4(objectIndex, 3); - temp_v0 = &D_80165C18[objectIndex]; - temp_v0->unk_0D5 = 0x0B; - temp_v0->unk_064 = D_0D02BC58; - temp_v0->unk_06C = D_0D02BC58; - temp_v0->unk_000 = 0.8f; - temp_v0->unk_010[0] = D_800E6788[flameIndex][0] * D_8018D01C; - temp_v0->unk_010[1] = D_800E6788[flameIndex][1]; - temp_v0->unk_010[2] = D_800E6788[flameIndex][2]; - temp_v0->unk_034 = 0.0f; - temp_v0->unk_0A4 = 0x00FF; - temp_v0->unk_0A2 = 0x00FF; - temp_v0->unk_0A0 = 0x00FF; - func_8008B8BC(objectIndex, 0U, 0U, 0U); - // The permuter found this slightly better match, but still no full match - //func_8008B8BC(objectIndex ^ 0, 0U, 0U, 0U); - func_8008B80C(objectIndex, 0.0f, 0.0f, 0.0f); + + D_80165C18[objectIndex].unk_0D5 = 0xB; + D_80165C18[objectIndex].unk_064 = D_0D02BC58; + D_80165C18[objectIndex].unk_06C = D_0D02BC58; + D_80165C18[0, objectIndex].unk_000 = 0.8f; + + // Mixing arr + offset and array access... Why? + // todo: ifdef this to proper array access. + D_80165C18[objectIndex].unk_010[0] = (f32)(intptr_t)(*(&D_800E6788 + flameIndex * 3)[0]) * D_8018D01C; + D_80165C18[objectIndex].unk_010[1] = (f32)(intptr_t)(*(&D_800E6788 + flameIndex * 3)[1]); + D_80165C18[objectIndex].unk_010[2] = (f32)(intptr_t)(*(&D_800E6788 + flameIndex * 3)[2]); + D_80165C18[objectIndex].unk_034 = 0; + D_80165C18[objectIndex].unk_0A4 = 255; + D_80165C18[objectIndex].unk_0A2 = 255; + D_80165C18[objectIndex].unk_0A0 = 255; + func_8008B8BC(objectIndex, 0, 0, 0); + func_8008B80C(objectIndex, 0, 0, 0); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80076FEC.s") -#endif void func_800770F0(s32 arg0) { s32 temp_v0; @@ -2320,84 +2292,54 @@ void func_800770F0(s32 arg0) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8005C674(s8, s16 *, s16 *, s16 *); /* extern */ - void func_80077138(s32 objectIndex, Vec3f arg1, s32 arg2) { - s8 sp37; - s16 sp34; - s16 sp32; - s16 sp30; - f64 var_f10; - f64 var_f4; - s32 temp_v0; - s32 temp_v0_2; s8 temp_v0_3; - s8 temp_v0_4; - struct_80165C18_entry *temp_s0; - u16 temp_v1; + Vec3s sp30; func_800723A4(objectIndex, arg2); - temp_s0 = &D_80165C18[objectIndex]; - temp_s0->unk_0D5 = 0x0C; - temp_s0->unk_000 = 0.05f; - func_8008B7D4(objectIndex, arg1->unk0, arg1->unk4, arg1->unk8); + D_80165C18[objectIndex].unk_0D5 = 0x0C; + D_80165C18[objectIndex].unk_000 = 0.05f; + func_8008B7D4(objectIndex, arg1[0], arg1[1], arg1[2]); func_8008B8BC(objectIndex, 0U, 0U, 0U); func_8008B80C(objectIndex, 0.0f, 0.0f, 0.0f); - switch (arg2) { /* irregular */ - case 0: - temp_s0->unk_038[1] = -1.0f; - temp_v0 = random_int(0x004BU); - var_f10 = (f64) temp_v0; - if (temp_v0 < 0) { - var_f10 += 4294967296.0; - } - temp_s0->unk_034 = (f32) ((var_f10 * 0.01) + 0.25); - temp_s0->unk_0BE[1] = random_int(0x0040U) << 0xA; - func_8008751C(objectIndex); - temp_s0->unk_084[5] = 0x001E; - break; - case 1: - temp_s0->unk_038[1] = 1.5f; - temp_v0_2 = random_int(0x0064U); - var_f4 = (f64) temp_v0_2; - if (temp_v0_2 < 0) { - var_f4 += 4294967296.0; - } - temp_s0->unk_034 = (f32) ((var_f4 * 0.01) + 0.5); - temp_s0->unk_0BE[1] = random_int(0x0040U) << 0xA; - func_8008751C(objectIndex); - temp_s0->unk_084[5] = 0x0032; - break; + switch (arg2) { + case 0: + D_80165C18[objectIndex].unk_038[1] = -1.0f; + D_80165C18[objectIndex].unk_034 = (f32) ((random_int(0x004BU) * 0.01) + 0.25); + D_80165C18[objectIndex].unk_0BE[1] = random_int(0x0040U) << 0xA; + func_8008751C(objectIndex); + D_80165C18[objectIndex].unk_084[5] = 0x001E; + break; + case 1: + D_80165C18[objectIndex].unk_038[1] = 1.5f; + D_80165C18[objectIndex].unk_034 = (f32) ((random_int(0x0064U) * 0.01) + 0.5); + D_80165C18[objectIndex].unk_0BE[1] = random_int(0x0040U) << 0xA; + func_8008751C(objectIndex); + D_80165C18[objectIndex].unk_084[5] = 0x0032; + break; } temp_v0_3 = random_int(0x000CU); if (temp_v0_3 < 9) { - func_8005C674(temp_v0_3, &sp34, &sp32, &sp30); - temp_s0->unk_048 = 0; - temp_s0->unk_084[0] = sp34; - temp_s0->unk_084[1] = sp32; - temp_s0->unk_084[2] = sp30; + func_8005C674(temp_v0_3, &sp30[2], &sp30[1], &sp30); + D_80165C18[objectIndex].unk_048 = 0; + D_80165C18[objectIndex].unk_084[0] = sp30[2]; + D_80165C18[objectIndex].unk_084[1] = sp30[1]; + D_80165C18[objectIndex].unk_084[2] = sp30[0]; } else { - temp_v0_4 = random_int(3U); - sp37 = temp_v0_4; - func_8005C6B4(temp_v0_4, &sp34, &sp32, &sp30); - temp_s0->unk_048 = 1; - temp_s0->unk_084[0] = sp34; - temp_s0->unk_084[1] = sp32; - temp_s0->unk_084[2] = sp30; - temp_s0->unk_084[4] = (s16) sp37; - } - temp_s0->unk_0A0 = 0x00FF; - temp_v1 = temp_s0->unk_0BE[1]; - temp_s0->unk_084[3] = random_int(0x0800U) + 0x400; - if (((s32) temp_v1 < 0x3000) || ((s32) temp_v1 >= 0xB001)) { - temp_s0->unk_084[3] = -temp_s0->unk_084[3]; + temp_v0_3 = random_int(3U); + func_8005C6B4(temp_v0_3, &sp30[2], &sp30[1], &sp30); + D_80165C18[objectIndex].unk_084[0] = sp30[2]; + D_80165C18[objectIndex].unk_084[1] = sp30[1]; + D_80165C18[objectIndex].unk_084[2] = sp30[0]; + D_80165C18[objectIndex].unk_084[4] = temp_v0_3; + D_80165C18[objectIndex].unk_048 = 1; + } + D_80165C18[objectIndex].unk_0A0 = 0x00FF; + D_80165C18[objectIndex].unk_084[3] = random_int(0x0800U) + 0x400; + if ((D_80165C18[objectIndex].unk_0BE[1] < 0x3000) || (D_80165C18[objectIndex].unk_0BE[1] >= 0xB001)) { + D_80165C18[objectIndex].unk_084[3] = -D_80165C18[objectIndex].unk_084[3]; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80077138.s") -#endif void func_800773D8(s32 arg0, s32 arg1) { s32 temp_v0 = func_80072044(D_8018C630, &D_80183E5C, 0x80); @@ -2418,18 +2360,18 @@ void func_80077450(s32 objectIndex) { s16 sp38; switch (D_80165C18[objectIndex].unk_0A6) { - case 0: - break; - case 1: - func_80077428(objectIndex); - break; - case 2: - f32_step_up_towards(&D_80165C18[objectIndex].unk_000, 0.1f, 0.01f); - if ((D_80165C18[objectIndex].unk_004[1] <= D_80165C18[objectIndex].unk_084[5]) && (func_80073B00(objectIndex, &D_80165C18[objectIndex].unk_0A0, 0x000000FF, 0, 0x00000010, 0, 0) != 0)) { - func_80086F60(objectIndex); - func_80072428(objectIndex); - } - break; + case 0: + break; + case 1: + func_80077428(objectIndex); + break; + case 2: + f32_step_up_towards(&D_80165C18[objectIndex].unk_000, 0.1f, 0.01f); + if ((D_80165C18[objectIndex].unk_004[1] <= D_80165C18[objectIndex].unk_084[5]) && (func_80073B00(objectIndex, &D_80165C18[objectIndex].unk_0A0, 0x000000FF, 0, 0x00000010, 0, 0) != 0)) { + func_80086F60(objectIndex); + func_80072428(objectIndex); + } + break; } if (D_80165C18[objectIndex].unk_048 != 0) { D_80165C18[objectIndex].unk_084[4] = (s16) ((s32) (D_80165C18[objectIndex].unk_084[4] + 1) % 3); @@ -2491,26 +2433,26 @@ void func_80077700(s32 objectIndex, Vec3f arg1, s32 arg2) { D_80165C18[objectIndex].unk_000 = 0.1f; D_80165C18[objectIndex].unk_044 = arg1[1]; switch (gCurrentCourseId) { - case COURSE_MARIO_RACEWAY: - func_8008BD14(objectIndex, arg1[0], arg1[1] + 25.0, arg1[2], 0x00000014, 0x0000001E, 0x00000014); - D_80165C18[objectIndex].unk_034 = 1.5f; - D_80165C18[objectIndex].unk_038[1] = 1.5f; - break; - case COURSE_YOSHI_VALLEY: - func_8008BD14(objectIndex, arg1[0], arg1[1] + 25.0, arg1[2], 0x00000014, 0x0000001E, 0x00000014); - D_80165C18[objectIndex].unk_034 = 2.0f; - D_80165C18[objectIndex].unk_038[1] = 2.0f; - break; - case COURSE_ROYAL_RACEWAY: - func_8008BD14(objectIndex, arg1[0], arg1[1] + 30.0, arg1[2], 0x00000010, 0x00000028, 0x00000010); - D_80165C18[objectIndex].unk_034 = 2.0f; - D_80165C18[objectIndex].unk_038[1] = 2.0f; - break; - case COURSE_LUIGI_RACEWAY: - func_8008BD14(objectIndex, arg1[0], arg1[1] + 25.0, arg1[2], 0x00000014, 0x0000001E, 0x00000014); - D_80165C18[objectIndex].unk_034 = 1.5f; - D_80165C18[objectIndex].unk_038[1] = 1.0f; - break; + case COURSE_MARIO_RACEWAY: + func_8008BD14(objectIndex, arg1[0], arg1[1] + 25.0, arg1[2], 0x00000014, 0x0000001E, 0x00000014); + D_80165C18[objectIndex].unk_034 = 1.5f; + D_80165C18[objectIndex].unk_038[1] = 1.5f; + break; + case COURSE_YOSHI_VALLEY: + func_8008BD14(objectIndex, arg1[0], arg1[1] + 25.0, arg1[2], 0x00000014, 0x0000001E, 0x00000014); + D_80165C18[objectIndex].unk_034 = 2.0f; + D_80165C18[objectIndex].unk_038[1] = 2.0f; + break; + case COURSE_ROYAL_RACEWAY: + func_8008BD14(objectIndex, arg1[0], arg1[1] + 30.0, arg1[2], 0x00000010, 0x00000028, 0x00000010); + D_80165C18[objectIndex].unk_034 = 2.0f; + D_80165C18[objectIndex].unk_038[1] = 2.0f; + break; + case COURSE_LUIGI_RACEWAY: + func_8008BD14(objectIndex, arg1[0], arg1[1] + 25.0, arg1[2], 0x00000014, 0x0000001E, 0x00000014); + D_80165C18[objectIndex].unk_034 = 1.5f; + D_80165C18[objectIndex].unk_038[1] = 1.0f; + break; } temp_s0 = random_int(0x0010U) << 0xC; sp3E = random_int(0x0010U) << 0xC; @@ -2547,32 +2489,32 @@ void func_80077B3C(s32 objectIndex) { temp_v1 = &D_80165C18[objectIndex]; switch (temp_v1->unk_0A6) { - case 1: - func_80077B14(objectIndex); - break; - case 2: - if (temp_v1->unk_0AE == 0) { - func_80072488(objectIndex); - } - break; - case 0: - break; - case 3: - func_80072428(objectIndex); - break; + case 0: + break; + case 1: + func_80077B14(objectIndex); + break; + case 2: + if (temp_v1->unk_0AE == 0) { + func_80072488(objectIndex); + } + break; + case 3: + func_80072428(objectIndex); + break; } } void func_80077BCC(s32 objectIndex) { switch (D_80165C18[objectIndex].unk_0AE) { - case 1: - func_80087E08(objectIndex, D_80165C18[objectIndex].unk_038[1], 0.2f, D_80165C18[objectIndex].unk_034, (s16) (s32) D_80165C18[objectIndex].unk_0BE[1], 0x0000000A); - break; - case 2: - if (func_80087B84(objectIndex, 0.4f, D_80165C18[objectIndex].unk_044) != 0) { - func_80086F60(objectIndex); - } - break; + case 1: + func_80087E08(objectIndex, D_80165C18[objectIndex].unk_038[1], 0.2f, D_80165C18[objectIndex].unk_034, (s16) (s32) D_80165C18[objectIndex].unk_0BE[1], 0x0000000A); + break; + case 2: + if (func_80087B84(objectIndex, 0.4f, D_80165C18[objectIndex].unk_044) != 0) { + func_80086F60(objectIndex); + } + break; } func_8008BF18(objectIndex); D_80165C18[objectIndex].unk_0B2[0] += 0x1000; @@ -2653,95 +2595,63 @@ void func_80077E20(s32 objectIndex) { func_80072488(objectIndex); } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern ? D_80165C40; extern f32 D_8018D1E8; extern s16 D_8018D208; extern s16 D_8018D210; extern s16 D_8018D218; -void func_80077EB8(s32 objectIndex, s32 arg1, Camera *camera) { +void func_80077EB8(s32 objectIndex, u16 arg1, Camera *camera) { s16 temp_v0; temp_v0 = camera->rot[1] - arg1; if ((temp_v0 >= D_8018D210) || (D_8018D208 >= temp_v0)) { - *(&D_80165C40 + (objectIndex * 0xE0)) = (f32) D_8018D218 + (D_8018D1E8 * (f32) temp_v0); + D_80165C40[objectIndex].unk[0] = D_8018D218 + (D_8018D1E8 * (f32) temp_v0); func_800721C0(objectIndex, 0x00000010); return; } func_800721E8(objectIndex, 0x00000010); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80077EB8.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_80077EB8(s32, u16, Camera *, Camera *); /* extern */ void func_80077F64(s32 objectIndex, Camera *camera) { - f64 var_f6; - s16 temp_v0; - s32 temp_v0_2; - struct_80165C18_entry *temp_s0; - temp_s0 = &D_80165C18[objectIndex]; - temp_v0 = temp_s0->unk_0AE; - switch (temp_v0) { /* irregular */ - case 1: - temp_s0->unk_0BE[1] = (random_int(0x4000U) + camera->rot[1]) - 0x2000; - func_8008BAB4(objectIndex, 0x00B4, 0x0014U); - temp_v0_2 = random_int(0x0064U); - var_f6 = (f64) temp_v0_2; - if (temp_v0_2 < 0) { - var_f6 += 4294967296.0; - } - temp_s0->unk_028[0] = 0.0f; - temp_s0->unk_028[1] = 0.0f; - temp_s0->unk_038[1] = (f32) (-0.75 - (f64) (f32) (var_f6 * 0.01)); - func_80086FD4(objectIndex); - return; - case 2: - func_80077EB8(objectIndex, temp_s0->unk_0BE[1], camera, camera); - func_800877C4(objectIndex); - func_8008BF18(objectIndex); - func_8008BFC0(objectIndex); - if (temp_s0->unk_004[1] <= 0.0f) { + f64 rand; + + switch (D_80165C18[objectIndex].unk_0AE) { /* irregular */ + case 1: + D_80165C18[objectIndex].unk_0BE[1] = (camera->rot[1] + random_int(0x4000U)) - 0x2000; + func_8008BAB4(objectIndex, 0x00B4, 0x0014U); + rand = random_int(0x0064U); + + D_80165C18[objectIndex].unk_038[1] = (f32) (-0.75 - (f64) (f32) (rand * 0.01)); + D_80165C18[objectIndex].unk_028[0] = 0.0f; + D_80165C18[objectIndex].unk_028[1] = 0.0f; func_80086FD4(objectIndex); return; - } - case 0: - return; - case 3: - func_80086F60(objectIndex); - break; + case 2: + func_80077EB8(objectIndex, D_80165C18[objectIndex].unk_0BE[1], camera); + func_800877C4(objectIndex); + func_8008BF18(objectIndex); + func_8008BFC0(objectIndex); + if (D_80165C18[objectIndex].unk_004[1] <= 0.0f) { + func_80086FD4(objectIndex); + return; + } + case 0: + return; + case 3: + func_80086F60(objectIndex); + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80077F64.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_80077E20(); /* extern */ -void func_80077F64(); /* extern */ - -void func_800780CC(s32 objectIndex) { - struct_80165C18_entry *sp18; - s16 temp_v0; - struct_80165C18_entry *temp_v1; - temp_v1 = &D_80165C18[objectIndex]; - temp_v0 = temp_v1->unk_0A6; - switch (temp_v0) { /* irregular */ +void func_800780CC(s32 objectIndex, Camera *camera) { + switch (D_80165C18[objectIndex].unk_0A6) { /* irregular */ case 1: - func_80077E20(); + func_80077E20(objectIndex); return; case 2: - sp18 = temp_v1; - func_80077F64(); - if (temp_v1->unk_0AE == 0) { + func_80077F64(objectIndex, camera); + if (D_80165C18[objectIndex].unk_0AE == 0) { func_80072488(objectIndex); return; } @@ -2752,47 +2662,21 @@ void func_800780CC(s32 objectIndex) { break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800780CC.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_80077D5C(); // extern -void func_800780CC(s32, ?); // extern -extern struct_80165C18_entry D_80165C18; -extern ? D_8018CC80; extern s32 D_8018D1F0; -void func_80078170(s32 arg0, ? arg1) { - s32 temp_a0; - s32 temp_s1; - s32 temp_v0; +void func_80078170(s32 arg0, s32 arg1) { s32 *phi_s0; - s32 phi_s1; - s32 phi_v0; + s32 i; func_80077D5C(); - temp_v0 = D_8018D1F0; - phi_s1 = 0; - phi_v0 = temp_v0; - if (temp_v0 > 0) { - phi_s0 = (arg0 * 4) + &D_8018CC80; - do { - temp_a0 = *phi_s0; - if ((&D_80165C18 + (temp_a0 * 0xE0))->unkA6 != 0) { - func_800780CC(temp_a0, arg1); - phi_v0 = D_8018D1F0; - } - temp_s1 = phi_s1 + 1; - phi_s0 += 4; - phi_s1 = temp_s1; - } while (temp_s1 < phi_v0); + for (i = 0; i < D_8018D1F0; i++) { + phi_s0 = &D_8018CC80[arg0 + i]; + if (D_80165C18[*phi_s0].unk_0A6 != 0) { + func_800780CC(*phi_s0, arg1); + } } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80078170.s") -#endif void func_80078220(s32 objectIndex) { struct_80165C18_entry *temp_v0; @@ -2915,75 +2799,64 @@ void func_80078838(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern ? D_80165CB4; extern f32 D_8018D1E8; extern s16 D_8018D208; extern s16 D_8018D210; extern s16 D_8018D218; -void func_800788F8(s32 objectIndex, s32 arg1, Camera *camera) { +void func_800788F8(s32 objectIndex, u16 rot, Camera *camera) { s16 temp_v0; - temp_v0 = camera->rot[1] + arg1; + temp_v0 = camera->rot[1] + rot; if ((temp_v0 >= D_8018D210) && (D_8018D208 >= temp_v0)) { - *(&D_80165CB4 + (objectIndex * 0xE0)) = (s16) (s32) ((f32) D_8018D218 + (D_8018D1E8 * (f32) temp_v0)); + D_80165CB4[objectIndex].unk[0] = (D_8018D218 + (D_8018D1E8 * temp_v0)); func_800721C0(objectIndex, 0x00000010); return; } func_800721E8(objectIndex, 0x00000010); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800788F8.s") -#endif #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800788F8(s32, u16, ?); // extern -extern ? D_8018CC80; -extern s32 D_8018D1F0; +//void func_800788F8(s32, u16, ?); // extern +//extern ? D_8018CC80; +//extern s32 D_8018D1F0; -void func_800789AC(s32 arg0, ? arg1, s32 arg2) { - s32 temp_s0; - s32 *phi_s1; - s32 phi_s0; +void func_800789AC(s32 arg0, Camera *arg1, Vec3s *arg2) { + //s32 temp_s0; + //s32 *phi_s1; + s32 i; - phi_s0 = 0; - if (D_8018D1F0 > 0) { - phi_s1 = (arg0 * 4) + &D_8018CC80; - do { - func_800788F8(*phi_s1, *((phi_s0 * 8) + arg2), arg1); - temp_s0 = phi_s0 + 1; - phi_s1 += 4; - phi_s0 = temp_s0; - } while (temp_s0 < D_8018D1F0); + //phi_s1 = &D_8018CC80[arg0]; + for (i = 0; i < D_8018D1F0; i++) { + func_800788F8(D_8018CC80[arg0 + i], arg2[0][i], arg1); + //*phi_s1 += 4; } + + // if (D_8018D1F0 > 0) { + // phi_s1 = (arg0 * 4) + &D_8018CC80; + // do { + // func_800788F8(*phi_s1, *((phi_s0 * 8) + arg2), arg1); + // temp_s0 = phi_s0 + 1; + // phi_s1 += 4; + // phi_s0 = temp_s0; + // } while (temp_s0 < D_8018D1F0); + // } } #else GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800789AC.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800788F8(s32, u16, Camera *); /* extern */ -extern ? D_8018CC80; -extern s32 D_8018D1F0; +void func_80078A44(s32 arg0, Camera *camera, s32 rot) { + s32 temp_s0; + s32 i; -void func_80078A44(s32 arg0, Camera *camera, s32 arg2) { - s32 *var_s4; - s32 temp_s0; - u32 temp_hi; - u32 var_s3; + for (i = 0; i < D_8018D1F0; i++, arg0++) { + temp_s0 = D_8018CC80[arg0]; - var_s3 = 0; - if (D_8018D1F0 > 0) { - var_s4 = (arg0 * 4) + &D_8018CC80; - do { - temp_s0 = *var_s4; - func_800788F8(temp_s0, *((var_s3 * 8) + arg2), camera); - temp_hi = var_s3 % 5U; - switch (temp_hi) { + // i * 8 + func_800788F8(temp_s0, *(u16 *)((i << 3) + rot), camera); + switch (i % 5U) { case 0: func_80073CB0(temp_s0, &D_80165C18[temp_s0].unk_0A0, 0x00000028, 0x000000B4, 0x000000FF, 0, -1); break; @@ -2999,123 +2872,107 @@ void func_80078A44(s32 arg0, Camera *camera, s32 arg2) { case 4: func_80073CB0(temp_s0, &D_80165C18[temp_s0].unk_0A0, 0x0000005A, 0x00000080, 0x000000FF, 0, -1); break; - } - var_s3 += 1; - var_s4 += 4; - } while ((s32) var_s3 < D_8018D1F0); + } } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80078A44.s") -#endif UNUSED void func_80078C68() { } -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -void func_80078170(s32, s32, s32); /* extern */ -void func_800789AC(s32, s32, ? *); /* extern */ -void func_80078A44(s32, s32, ? *); /* extern */ -static ? D_800E6A38; /* unable to generate initializer; const */ -static ? D_800E6AA8; /* unable to generate initializer; const */ -static ? D_800E6B00; /* unable to generate initializer; const */ -static ? D_800E6B38; /* unable to generate initializer; const */ -static ? D_800E6BA8; /* unable to generate initializer; const */ -static ? D_800E6C10; /* unable to generate initializer; const */ -static ? D_800E6C80; /* unable to generate initializer; const */ -static ? D_800E6DE0; /* unable to generate initializer; const */ -u16 gCurrentCourseId; /* unable to generate initializer */ - -void func_80078C70(u32 arg0) { +extern s32 D_800E6A38; /* unable to generate initializer; const */ +extern s32 D_800E6AA8; /* unable to generate initializer; const */ +extern s32 D_800E6B00; /* unable to generate initializer; const */ +extern s32 D_800E6B38; /* unable to generate initializer; const */ +extern s32 D_800E6BA8; /* unable to generate initializer; const */ +extern s32 D_800E6C10; /* unable to generate initializer; const */ +extern s32 D_800E6C80; /* unable to generate initializer; const */ +extern s32 D_800E6DE0; /* unable to generate initializer; const */ + +extern s16 D_8018D200; +extern s32 D_8018D1F0; +extern s16 D_8018D208; +extern s16 D_8018D210; +extern f32 D_8018D1E8; +extern s16 D_8018D218; + +void func_80078C70(s32 arg0) { s32 sp1C; - s32 sp18; - s16 temp_v0; - s32 temp_v1; - u16 temp_t4; + s32 camera; if (D_801657C8 == 0) { switch (arg0) { /* switch 1 */ case 0: /* switch 1 */ sp1C = 0; - sp18 = camera1; + camera = camera1; D_8018D200 = D_80150130[0] + 40.0f; break; case 1: /* switch 1 */ sp1C = 0; - sp18 = camera1; + camera = camera1; D_8018D200 = D_80150130[0] + 40.0f; break; case 2: /* switch 1 */ - sp18 = camera2; + camera = camera2; sp1C = D_8018D1F0; D_8018D200 = D_80150130[1] + 40.0f; break; case 3: /* switch 1 */ sp1C = 0; - sp18 = camera1; + camera = camera1; D_8018D200 = D_80150130[0] + 40.0f; break; case 4: /* switch 1 */ - sp18 = camera2; + camera = camera2; sp1C = D_8018D1F0; D_8018D200 = D_80150130[1] + 40.0f; break; } - temp_v0 = D_8018D200; - temp_t4 = gCurrentCourseId; - temp_v1 = temp_v0 / 2; - D_8018D208 = (temp_v1 * 0xB6) + 0x71C; - D_8018D210 = (-temp_v1 * 0xB6) - 0x71C; - D_8018D1E8 = 1.7578125 / temp_v0; + + D_8018D208 = ( (D_8018D200 / 2) * 0xB6) + 0x71C; + D_8018D210 = (-(D_8018D200 / 2) * 0xB6) - 0x71C; + D_8018D1E8 = 1.7578125 / D_8018D200; D_8018D218 = 0xA0; - switch (temp_t4) { /* switch 2 */ + switch (gCurrentCourseId) { /* switch 2 */ case 0: /* switch 2 */ - func_800789AC(sp1C, sp18, &D_800E6A38); - return; + func_800789AC(sp1C, camera, &D_800E6A38); + break; case 4: /* switch 2 */ - func_800789AC(sp1C, sp18, &D_800E6AA8); - return; + func_800789AC(sp1C, camera, &D_800E6AA8); + break; case 5: /* switch 2 */ - func_80078170(sp1C, sp18, 0xB6); - return; + func_80078170(sp1C, camera); + break; case 6: /* switch 2 */ - func_800789AC(sp1C, sp18, &D_800E6B00); - return; + func_800789AC(sp1C, camera, &D_800E6B00); + break; case 7: /* switch 2 */ - func_800789AC(sp1C, sp18, &D_800E6B38); - return; + func_800789AC(sp1C, camera, &D_800E6B38); + break; case 8: /* switch 2 */ - func_800789AC(sp1C, sp18, &D_800E6A38); - return; + func_800789AC(sp1C, camera, &D_800E6A38); + break; case 9: /* switch 2 */ - func_800789AC(sp1C, sp18, &D_800E6AA8); - return; + func_800789AC(sp1C, camera, &D_800E6AA8); + break; case 10: /* switch 2 */ - func_80078A44(sp1C, sp18, &D_800E6C80); - return; + func_80078A44(sp1C, camera, &D_800E6C80); + break; case 11: /* switch 2 */ - func_800789AC(sp1C, sp18, &D_800E6C10); - return; + func_800789AC(sp1C, camera, &D_800E6C10); + break; case 12: /* switch 2 */ - func_800789AC(sp1C, sp18, &D_800E6BA8); - return; + func_800789AC(sp1C, camera, &D_800E6BA8); + break; case 13: /* switch 2 */ - func_80078A44(sp1C, sp18, &D_800E6C80); - return; + func_80078A44(sp1C, camera, &D_800E6C80); + break; case 14: /* switch 2 */ - func_80078A44(sp1C, sp18, &D_800E6DE0); - /* Duplicate return node #22. Try simplifying control flow for better match */ - return; + func_80078A44(sp1C, camera, &D_800E6DE0); + break; } - } else { - default: /* switch 2 */ } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80078C70.s") -#endif void func_80078F64(void) { switch (gScreenModeSelection) { /* irregular */ @@ -3155,74 +3012,63 @@ void func_800790E4(s32 arg0) { func_800723A4(D_80183DB8[arg0], 6); } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern s32 D_80183DB8; extern s32 D_8018C028; void func_80079114(s32 objectIndex, s32 arg1, s32 arg2) { - struct_80165C18_entry *temp_v0; - struct_80165C18_entry *temp_v1; - - temp_v1 = &D_80165C18[objectIndex]; - if (temp_v1->unk_0A6 >= 2) { - if ((u8) temp_v1->unk_0D8 == 1) { + s32 a; + if (D_80165C18[objectIndex].unk_0A6 >= 2) { + if ((u8)D_80165C18[objectIndex].unk_0D8 == 1) { if (arg1 == 0) { func_80074894(objectIndex, D_8018C028); return; } - temp_v0 = &D_80165C18[D_80183DB8]; - temp_v1->unk_060 = temp_v0->unk_060; - temp_v1->unk_064 = temp_v0->unk_064; + a = D_80183DB8[0]; + D_80165C18[objectIndex].unk_060 = D_80165C18[a].unk_060; + D_80165C18[objectIndex].unk_064 = D_80165C18[a].unk_064; + if (0) { } return; } - switch (arg2) { /* irregular */ - case 0: - func_800748F4(objectIndex, D_8018C028); - return; - case 1: - func_800748C4(objectIndex, D_8018C028); - return; - case 2: - func_80074894(objectIndex, D_8018C028); - break; + switch (arg2) { + case 0: + func_800748F4(objectIndex, D_8018C028); + break; + case 1: + func_800748C4(objectIndex, D_8018C028); + break; + case 2: + func_80074894(objectIndex, D_8018C028); + break; } } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80079114.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800C9018(u8, ?); /* extern */ -extern ? D_80165CF0; -s16 gCurrentCourseId; /* unable to generate initializer */ +extern UnkStruct_80165CF5 D_80165CF0[]; -void func_800791F0(s32 objectIndex, u8 playerId) { - Player *sp1C; - Player *temp_v1; - s16 var_v0; - u8 temp_v0; +#ifdef NON_MATCHING - temp_v0 = *(&D_80165CF0 + (objectIndex * 0xE0)); - temp_v1 = &gPlayerOne[playerId]; - if ((temp_v0 != 3) && (temp_v0 != 7)) { - sp1C = temp_v1; +void func_800791F0(s32 objectIndex, u8 playerId) { + //Player *sp1C; + Player *player = &gPlayerOne[playerId]; + //s16 var_v0; + //struct_80165C18_entry *temp_v0; + + //temp_v0 = &D_80165CF0[objectIndex]; + if ((D_80165CF0[objectIndex].unk[0] != 3) && (D_80165CF0[objectIndex].unk[0] != 7)) { + //sp1C = temp_v1; func_800722CC(objectIndex, 1); - var_v0 = gCurrentCourseId; - if (var_v0 == 0x000C) { - temp_v1->unk_0CA &= 0xFFEF; - goto block_5; + //var_v0 = gCurrentCourseId; + if (gCurrentCourseId == 0x000C) { + player->unk_0CA &= 0xFFEF; + //goto block_5; } } else { -block_5: - var_v0 = gCurrentCourseId; +//block_5: + //var_v0 = gCurrentCourseId; } - if (var_v0 == 0x000C) { - sp1C = temp_v1; + if (gCurrentCourseId == 0x000C) { + //temp_v1 = temp_v1; func_800722CC(objectIndex, 0x00000010); - temp_v1->unk_0CA &= 0xFFDF; + player->unk_0CA &= 0xFFDF; } func_800C9018(playerId, 0x0100FA28); } @@ -3230,201 +3076,148 @@ block_5: GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800791F0.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern Vtx D_0D005EB0; -extern s32 gTLUTLakituCountdown; extern s32 D_0F05EB50; extern s16 D_801656F0; extern s32 D_8018D168; extern s32 D_8018D180; void func_800792D8(s32 objectIndex, s32 arg1) { - struct_80165C18_entry *sp24; - struct_80165C18_entry *temp_v0; - if (arg1 == 0) { D_801656F0 = 0; D_8018D168 = 0; } func_80073444(objectIndex, &gTLUTLakituCountdown, &D_0F05EB50, 0x38U, (u16) 0x00000048); - temp_v0 = &D_80165C18[objectIndex]; - temp_v0->unk_074 = (s32) &D_0D005EB0; - sp24 = temp_v0; - temp_v0->unk_000 = 0.15f; + D_80165C18[objectIndex].unk_074 = (s32) &D_0D005EB0; + D_80165C18[objectIndex].unk_000 = 0.15f; func_800721E8(objectIndex, 0x00000010); func_80072488(objectIndex); - temp_v0->unk_048 = D_8018D180; + D_80165C18[objectIndex].unk_048 = D_8018D180; } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800792D8.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800729EC(); /* extern */ -void func_800792D8(s32); /* extern */ -void play_sound2(?); /* extern */ extern s16 D_801656F0; extern s32 D_8018D160; extern s32 D_8018D168; -static ? D_800E67B8; /* unable to generate initializer */ +extern s32 D_800E67B8; // static void func_80079380(s32 objectIndex, s32 arg1) { - struct_80165C18_entry *sp20; - struct_80165C18_entry *temp_v1; - u16 temp_t8; - - temp_v1 = &D_80165C18[objectIndex]; - temp_t8 = (u16) temp_v1->unk_0A6; - switch (temp_t8) { - case 1: - func_800792D8(arg1); - return; - case 2: - sp20 = temp_v1; - func_8007278C(objectIndex, temp_v1->unk_048); - if ((temp_v1->unk_050 == 0x00000055) && (D_8018EDF3 == 3) && (arg1 == 0)) { - D_8018D168 = 1; - return; - } - default: - return; - case 3: - func_800721C0(objectIndex, 0x00000010); - func_80086F10(objectIndex, 1, (s32) &D_800E67B8); - func_80072488(objectIndex); - return; - case 4: - if ((func_8007278C(objectIndex, 0x0000001E) != 0) && (D_8018EDF3 != 3) && (arg1 == 0)) { - D_8018D168 = 1; - return; - } - break; - case 5: - func_8007278C(objectIndex, 0x0000001E); - return; - case 6: - func_80072E54(objectIndex, 1, 7, 1, 2, 0); - return; - case 7: - sp20 = temp_v1; - if (func_8007278C(objectIndex, 0x00000014) != 0) { - temp_v1->unk_068 += 0x200; - if (arg1 == 0) { + s32 pad; + switch (D_80165C18[objectIndex].unk_0A6) { + case 0: + break; + case 1: + func_800792D8(objectIndex, arg1); + break; + case 2: + func_8007278C(objectIndex, D_80165C18[objectIndex].unk_048); + if ((D_80165C18[objectIndex].unk_050 == 0x00000055) && (D_8018EDF3 == 3) && (arg1 == 0)) { + D_8018D168 = 1; + } + break; + case 3: + func_800721C0(objectIndex, 0x00000010); + func_80086F10(objectIndex, 1, (s32) &D_800E67B8); + func_80072488(objectIndex); + break; + case 4: + if ((func_8007278C(objectIndex, 0x0000001E) != 0) && (D_8018EDF3 != 3) && (arg1 == 0)) { + D_8018D168 = 1; + } + break; + case 5: + func_8007278C(objectIndex, 0x0000001E); + break; + case 6: + func_80072E54(objectIndex, 1, 7, 1, 2, 0); + break; + case 7: + if (func_8007278C(objectIndex, 0x00000014) != 0) { + D_80165C18[objectIndex].unk_068 += 0x80; + if (arg1 == 0) { + play_sound2(SOUND_ACTION_COUNTDOWN_LIGHT); + } + } + break; + case 8: + func_80072E54(objectIndex, 8, 0x0000000F, 1, 6, 0); + break; + case 9: + if ((func_8007278C(objectIndex, 8) != 0) && (arg1 == 0)) { play_sound2(SOUND_ACTION_COUNTDOWN_LIGHT); - return; } - } - break; - case 8: - func_80072E54(objectIndex, 8, 0x0000000F, 1, 6, 0); - return; - case 9: - if ((func_8007278C(objectIndex, 8) != 0) && (arg1 == 0)) { - play_sound2(SOUND_ACTION_COUNTDOWN_LIGHT); - return; - } - break; - case 10: - if ((func_80072E54(objectIndex, 0x00000010, 0x00000017, 1, 6, 0) != 0) && (arg1 == 0)) { - D_801656F0 = 1; - return; - } - break; - case 11: - sp20 = temp_v1; - if (func_8007278C(objectIndex, 8) != 0) { - temp_v1->unk_068 += 0x200; + break; + case 10: + if ((func_80072E54(objectIndex, 0x00000010, 0x00000017, 1, 6, 0) != 0) && (arg1 == 0)) { + D_801656F0 = 1; + } + break; + case 11: + if (func_8007278C(objectIndex, 8) != 0) { + D_80165C18[objectIndex].unk_068 += 0x80; + if (arg1 == 0) { + play_sound2(SOUND_ACTION_GREEN_LIGHT); + } + } + break; + case 12: + func_80072E54(objectIndex, 0x00000018, 0x0000001B, 1, 6, 0); + break; + case 13: if (arg1 == 0) { - play_sound2(SOUND_ACTION_GREEN_LIGHT); - return; + func_800729EC(objectIndex); + D_8018D160 = 1; + break; } - } - break; - case 12: - func_80072E54(objectIndex, 0x00000018, 0x0000001B, 1, 6, 0); - return; - case 13: - if (arg1 == 0) { - func_800729EC(); - D_8018D160 = 1; - return; - } - func_80072488(objectIndex); - return; - case 14: - func_8007278C(objectIndex, 0x00000078); - return; - case 15: - func_80072428(objectIndex); - break; + func_80072488(objectIndex); + break; + case 14: + func_8007278C(objectIndex, 0x00000078); + break; + case 15: + func_80072428(objectIndex); + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80079380.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800791F0(); /* extern */ -void func_80086F10(s32, ?, ? *); /* extern */ -extern Vtx D_0D006730; -extern s32 gTLUTLakituCheckeredFlag; extern s32 D_0F07E350; -extern s32 *D_8018C028; -static ? D_800E6834; /* unable to generate initializer */ +extern s32 D_8018C028; +extern s32 D_800E6834; // static -void func_8007963C(s32 objectIndex) { +void func_8007963C(s32 objectIndex, s32 playerIndex) { struct_80165C18_entry *temp_v0; - func_800791F0(); + func_800791F0(objectIndex, playerIndex); func_80073444(objectIndex, &gTLUTLakituCheckeredFlag, &D_0F07E350, 0x48U, (u16) 0x00000038); temp_v0 = &D_80165C18[objectIndex]; + temp_v0->unk_064 = D_8018C028; temp_v0->unk_074 = (s32) &D_0D006730; temp_v0->unk_004[2] = 5000.0f; temp_v0->unk_004[1] = 5000.0f; temp_v0->unk_004[0] = 5000.0f; - temp_v0->unk_064 = D_8018C028; temp_v0->unk_000 = 0.15f; func_80086F10(objectIndex, 2, &D_800E6834); func_800721E8(objectIndex, 0x00000010); func_80072488(objectIndex); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007963C.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8007963C(); /* extern */ -extern ? D_80165CBE; - -void func_80079700(s32 objectIndex) { - u16 temp_t7; - - temp_t7 = *(&D_80165CBE + (objectIndex * 0xE0)); - switch (temp_t7) { - case 1: - func_8007963C(); - return; - case 2: - func_800721C0(objectIndex, 0x00000010); - func_80072488(objectIndex); - return; - case 3: - func_80072E54(objectIndex, 0, 0x0000001F, 1, 2, -1); - return; - case 4: - func_80072428(objectIndex); - /* fallthrough */ - default: - return; +void func_80079700(s32 objectIndex, s32 playerIndex) { + switch (D_80165CBE[objectIndex].unk[0]) { + case 0: + break; + case 1: + func_8007963C(objectIndex, playerIndex); + break; + case 2: + func_800721C0(objectIndex, 0x00000010); + func_80072488(objectIndex); + break; + case 3: + func_80072E54(objectIndex, 0, 0x0000001F, 1, 2, -1); + break; + case 4: + func_80072428(objectIndex); + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80079700.s") -#endif void func_800797AC(s32 playerId) { s32 objectIndex; @@ -3468,32 +3261,20 @@ void func_8007993C(s32 objectIndex, Player *player) { func_800722CC(objectIndex, 2); } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800791F0(); /* extern */ -void func_80086E70(s32); /* extern */ -void func_800C8F80(u8, ?); /* extern */ -extern Vtx D_0D005F30; -extern s32 gTLUTLakituFishing; -extern s32 D_0F0CCF50; +extern Vtx D_0D005F30[]; +extern Gfx D_0F0CCF50[]; -void func_800799A8(s32 objectIndex, u8 arg1) { - struct_80165C18_entry *temp_v0; - - func_800791F0(); +void func_800799A8(s32 objectIndex, s32 arg1) { + func_800791F0(objectIndex, arg1); func_80073444(objectIndex, &gTLUTLakituFishing, &D_0F0CCF50, 0x38U, (u16) 0x00000048); - temp_v0 = &D_80165C18[objectIndex]; - temp_v0->unk_074 = (s32) &D_0D005F30; - temp_v0->unk_000 = 0.15f; + D_80165C18[objectIndex].unk_074 = D_0D005F30; + D_80165C18[objectIndex].unk_000 = 0.15f; func_80086E70(objectIndex); func_800721E8(objectIndex, 0x00000010); func_80073720(objectIndex); func_80072488(objectIndex); - func_800C8F80(arg1, 0x0100FA28); + func_800C8F80((u8)arg1, 0x0100FA28); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800799A8.s") -#endif void func_80079A5C(s32 objectIndex, Player *player) { switch (D_80165C18[objectIndex].unk_0AE) { @@ -3521,408 +3302,302 @@ void func_80079A5C(s32 objectIndex, Player *player) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800799A8(s32, s32); /* extern */ -void func_800C9018(u8, ?); /* extern */ - void func_80079B40(s32 objectIndex, s32 playerId) { - Player *sp34; - struct_80165C18_entry *sp2C; - s16 temp_v0; - struct_80165C18_entry *temp_t2; - u8 temp_t6; - - temp_t2 = &D_80165C18[objectIndex]; - sp34 = &gPlayerOne[playerId]; - sp2C = temp_t2; - temp_v0 = temp_t2->unk_0A6; - switch (temp_v0) { /* switch 1; irregular */ - case 0: /* switch 1 */ - break; - case 1: /* switch 1 */ - func_800799A8(objectIndex, playerId); - break; - case 2: /* switch 1 */ - func_800721C0(objectIndex, 0x00000010); - func_800736E0(objectIndex); - func_80072488(objectIndex); - break; - case 3: /* switch 1 */ - func_800730BC(objectIndex, 0, 3, 1, 2, -1); - break; + Player *player = &gPlayerOne[playerId]; + + switch (D_80165C18[objectIndex].unk_0A6) { /* switch 1; irregular */ + case 0: /* switch 1 */ + break; + case 1: /* switch 1 */ + func_800799A8(objectIndex, playerId); + break; + case 2: /* switch 1 */ + func_800721C0(objectIndex, 0x00000010); + func_800736E0(objectIndex); + func_80072488(objectIndex); + break; + case 3: /* switch 1 */ + func_800730BC(objectIndex, 0, 3, 1, 2, -1); + break; } - temp_t6 = sp2C->unk_0D6; - switch (temp_t6) { - case 1: - if (func_80086FA4(objectIndex) != 0) { - func_80073654(objectIndex); - } - break; - case 2: - func_80090868(sp34); - func_80073654(objectIndex); - break; - case 3: - if (!(sp34->unk_0CA & 2)) { - func_80086EAC(objectIndex, 0, 3); - func_80073654(objectIndex); - } - break; - case 4: - if (func_80086FA4(objectIndex) != 0) { + switch (D_80165C18[objectIndex].unk_0D6) { + case 0: + break; + case 1: + if (func_80086FA4(objectIndex) != 0) { + func_80073654(objectIndex); + } + break; + case 2: + func_80090868(player); func_80073654(objectIndex); - } - break; - case 5: - func_800722CC(objectIndex, 1); - func_800C9018((u8) playerId, 0x0100FA28); - func_80072428(objectIndex); - func_80073720(objectIndex); - break; + break; + case 3: + if (!(player->unk_0CA & 2)) { + func_80086EAC(objectIndex, 0, 3); + func_80073654(objectIndex); + } + break; + case 4: + if (func_80086FA4(objectIndex) != 0) { + func_80073654(objectIndex); + } + break; + case 5: + func_800722CC(objectIndex, 1); + func_800C9018((u8) playerId, 0x0100FA28); + func_80072428(objectIndex); + func_80073720(objectIndex); + break; } - if (sp2C->unk_0A6 >= 2) { - func_8007993C(objectIndex, sp34); + if (D_80165C18[objectIndex].unk_0A6 >= 2) { + func_8007993C(objectIndex, player); } - func_80079A5C(objectIndex, sp34); + func_80079A5C(objectIndex, player); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80079B40.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800799A8(s32, s32); /* extern */ -void func_800C9018(u8, ?); /* extern */ void func_80079D44(s32 objectIndex, s32 playerId) { - struct_80165C18_entry *sp2C; + Player *temp_s1; - s16 temp_v0; - struct_80165C18_entry *temp_t1; - u8 temp_t7; - temp_t1 = &D_80165C18[objectIndex]; - sp2C = temp_t1; - temp_v0 = temp_t1->unk_0A6; temp_s1 = &gPlayerOne[playerId]; - switch (temp_v0) { /* switch 1; irregular */ - case 0: /* switch 1 */ - break; - case 1: /* switch 1 */ - func_800799A8(objectIndex, playerId); - break; - case 2: /* switch 1 */ - func_800721C0(objectIndex, 0x00000010); - func_800736E0(objectIndex); - temp_s1->unk_0CA |= 0x80; - func_80072488(objectIndex); - break; - case 3: /* switch 1 */ - func_800730BC(objectIndex, 0, 3, 1, 2, -1); - break; + switch (D_80165C18[objectIndex].unk_0A6) { /* switch 1; irregular */ + case 0: /* switch 1 */ + break; + case 1: /* switch 1 */ + func_800799A8(objectIndex, playerId); + break; + case 2: /* switch 1 */ + func_800721C0(objectIndex, 0x00000010); + func_800736E0(objectIndex); + temp_s1->unk_0CA |= 0x80; + func_80072488(objectIndex); + break; + case 3: /* switch 1 */ + func_800730BC(objectIndex, 0, 3, 1, 2, -1); + break; } - temp_t7 = sp2C->unk_0D6; - switch (temp_t7) { - case 1: - if (func_80086FA4(objectIndex) != 0) { - func_800C9060((u8) playerId, 0x1900A055U); + switch (D_80165C18[objectIndex].unk_0D6) { + case 1: + if (func_80086FA4(objectIndex) != 0) { + func_800C9060((u8) playerId, 0x1900A055U); + func_80073654(objectIndex); + } + break; + case 2: + func_80090868(temp_s1); + func_800722A4(objectIndex, 4); func_80073654(objectIndex); - } - break; - case 2: - func_80090868(temp_s1); - func_800722A4(objectIndex, 4); - func_80073654(objectIndex); - break; - case 3: - if ((temp_s1->unk_0F8 == 9) && !(temp_s1->unk_0CA & 1) && ((f64) temp_s1->unk_110.unk44 <= 30.0)) { - func_800722A4(objectIndex, 8); - } - if (!(temp_s1->unk_0CA & 2)) { - func_80086EAC(objectIndex, 0, 3); + break; + case 3: + if ((temp_s1->unk_0F8 == 9) && !(temp_s1->unk_0CA & 1) && ((f64) temp_s1->unk_110.unk3C[2] <= 30.0)) { + func_800722A4(objectIndex, 8); + } + if (!(temp_s1->unk_0CA & 2)) { + func_80086EAC(objectIndex, 0, 3); + func_80073654(objectIndex); + } + break; + case 4: + func_8007375C(objectIndex, 0x0000001E); + break; + case 5: + temp_s1->unk_0CA &= 0xFF7F; + func_800722A4(objectIndex, 0x00000010); + func_800722A4(objectIndex, 0x00000020); + func_800722CC(objectIndex, 4); + func_800722CC(objectIndex, 8); func_80073654(objectIndex); - } - break; - case 4: - func_8007375C(objectIndex, 0x0000001E); - break; - case 5: - temp_s1->unk_0CA &= 0xFF7F; - func_800722A4(objectIndex, 0x00000010); - func_800722A4(objectIndex, 0x00000020); - func_800722CC(objectIndex, 4); - func_800722CC(objectIndex, 8); - func_80073654(objectIndex); - func_800C9060((u8) playerId, 0x1900A056U); - break; - case 6: - if (func_8007375C(objectIndex, 0x000000A0) != 0) { - func_800722CC(objectIndex, 0x00000010); - temp_s1->unk_0CA &= 0xFFEF; - temp_s1->unk_0CA |= 0x20; - } - break; - case 7: - func_8007375C(objectIndex, 0x0000003C); - break; - case 8: - func_80073720(objectIndex); - func_80072428(objectIndex); - temp_s1->unk_0CA &= 0xFFDF; - func_800722CC(objectIndex, 1); - func_800C9018((u8) playerId, 0x0100FA28); - break; + func_800C9060((u8) playerId, 0x1900A056U); + break; + case 6: + if (func_8007375C(objectIndex, 0x000000A0) != 0) { + func_800722CC(objectIndex, 0x00000010); + temp_s1->unk_0CA &= 0xFFEF; + temp_s1->unk_0CA |= 0x20; + } + break; + case 7: + func_8007375C(objectIndex, 0x0000003C); + break; + case 8: + func_80073720(objectIndex); + func_80072428(objectIndex); + temp_s1->unk_0CA &= 0xFFDF; + func_800722CC(objectIndex, 1); + func_800C9018((u8) playerId, 0x0100FA28); + break; } - if (sp2C->unk_0A6 >= 2) { + + if (D_80165C18[objectIndex].unk_0A6 >= 2) { func_8007993C(objectIndex, temp_s1); } func_80079A5C(objectIndex, temp_s1); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80079D44.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800791F0(); /* extern */ -void func_80086F10(s32, ?, ? *); /* extern */ -extern Vtx D_0D006730; -extern s32 gTLUTLakituSecondLap; -extern s32 D_0F09DB50; -extern s32 *D_8018C028; -static ? D_800E694C; /* unable to generate initializer */ - -void func_8007A060(s32 objectIndex) { +extern Gfx D_0F09DB50[]; +extern s16 D_800E694C[]; + +void func_8007A060(s32 objectIndex, s32 playerIndex) { struct_80165C18_entry *temp_v0; - func_800791F0(); + func_800791F0(objectIndex, playerIndex); func_80073444(objectIndex, &gTLUTLakituSecondLap, &D_0F09DB50, 0x48U, (u16) 0x00000038); temp_v0 = &D_80165C18[objectIndex]; - temp_v0->unk_074 = (s32) &D_0D006730; - temp_v0->unk_004[2] = 5000.0f; - temp_v0->unk_004[1] = 5000.0f; - temp_v0->unk_004[0] = 5000.0f; temp_v0->unk_064 = D_8018C028; - temp_v0->unk_000 = 0.15f; - func_800721E8(objectIndex, 0x00000010); - func_80086F10(objectIndex, 5, &D_800E694C); - func_80072488(objectIndex); -} -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007A060.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8007A060(); /* extern */ - -void func_8007A124(s32 objectIndex) { - struct_80165C18_entry *temp_v0; - u16 temp_t8; - - temp_v0 = &D_80165C18[objectIndex]; - temp_t8 = (u16) temp_v0->unk_0A6; - switch (temp_t8) { - case 1: - func_8007A060(); - return; - case 2: - func_800721C0(objectIndex, 0x00000010); - func_80072488(objectIndex); - return; - case 3: - func_8007278C(objectIndex, 0x00000014); - return; - case 4: - func_80072E54(objectIndex, 0, 0x0000000F, 1, 2, 1); - return; - case 5: - func_8007278C(objectIndex, 0x0000003C); - return; - case 6: - func_80072F88(objectIndex, 0x0000000F, 0, 1, 2, 1); - return; - case 7: - if (temp_v0->unk_0AE == 0) { - func_80072428(objectIndex); - } - /* fallthrough */ - default: - return; - } -} -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007A124.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800791F0(); /* extern */ -void func_80086F10(s32, ?, ? *); /* extern */ -extern Vtx D_0D006730; -extern s32 gTLUTLakituFinalLap; -extern s32 D_0F0AD750; -extern s32 *D_8018C028; -static ? D_800E694C; /* unable to generate initializer */ - -void func_8007A228(s32 objectIndex) { - struct_80165C18_entry *temp_v0; - - func_800791F0(); - func_80073444(objectIndex, &gTLUTLakituFinalLap, &D_0F0AD750, 0x48U, (u16) 0x00000038); - temp_v0 = &D_80165C18[objectIndex]; - temp_v0->unk_074 = (s32) &D_0D006730; + temp_v0->unk_074 = D_0D006730; temp_v0->unk_004[2] = 5000.0f; temp_v0->unk_004[1] = 5000.0f; temp_v0->unk_004[0] = 5000.0f; - temp_v0->unk_064 = D_8018C028; temp_v0->unk_000 = 0.15f; func_800721E8(objectIndex, 0x00000010); func_80086F10(objectIndex, 5, &D_800E694C); func_80072488(objectIndex); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007A228.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8007A228(); /* extern */ - -void func_8007A2EC(s32 objectIndex) { - struct_80165C18_entry *temp_v0; - u16 temp_t8; - temp_v0 = &D_80165C18[objectIndex]; - temp_t8 = (u16) temp_v0->unk_0A6; - switch (temp_t8) { - case 1: - func_8007A228(); - return; - case 2: - func_800721C0(objectIndex, 0x00000010); - func_80072488(objectIndex); - return; - case 3: - func_8007278C(objectIndex, 0x00000014); - return; - case 4: - func_80072E54(objectIndex, 0, 0x0000000F, 1, 2, 1); - return; - case 5: - func_8007278C(objectIndex, 0x0000003C); - return; - case 6: - func_80072F88(objectIndex, 0x0000000F, 0, 1, 2, 1); - return; - case 7: - if (temp_v0->unk_0AE == 0) { - func_80072428(objectIndex); - } - /* fallthrough */ - default: - return; +void func_8007A124(s32 objectIndex, s32 playerIndex) { + switch (D_80165C18[objectIndex].unk_0A6) { + case 0: + break; + case 1: + func_8007A060(objectIndex, playerIndex); + break; + case 2: + func_800721C0(objectIndex, 0x00000010); + func_80072488(objectIndex); + break; + case 3: + func_8007278C(objectIndex, 0x00000014); + break; + case 4: + func_80072E54(objectIndex, 0, 0x0000000F, 1, 2, 1); + break; + case 5: + func_8007278C(objectIndex, 0x0000003C); + break; + case 6: + func_80072F88(objectIndex, 0x0000000F, 0, 1, 2, 1); + break; + case 7: + if (D_80165C18[objectIndex].unk_0AE == 0) { + func_80072428(objectIndex); + } + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007A2EC.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800791F0(); /* extern */ -void func_80086F10(s32, ?, ? *); /* extern */ -void func_800C8F80(u8, ?); /* extern */ -extern Vtx D_0D006730; -extern s32 gTLUTLakituReverse; -extern s32 D_0F0BD350; -extern s32 *D_8018C028; -static ? D_800E69B0; /* unable to generate initializer */ +extern Gfx D_0F0AD750[]; -void func_8007A3F0(s32 objectIndex, u8 arg1) { - struct_80165C18_entry *sp28; +void func_8007A228(s32 objectIndex, s32 playerIndex) { struct_80165C18_entry *temp_v0; - func_800791F0(); - func_80073444(objectIndex, &gTLUTLakituReverse, &D_0F0BD350, 0x48U, (u16) 0x00000038); + func_800791F0(objectIndex, playerIndex); + func_80073444(objectIndex, &gTLUTLakituFinalLap, &D_0F0AD750, 0x48U, (u16) 0x00000038); temp_v0 = &D_80165C18[objectIndex]; - temp_v0->unk_074 = (s32) &D_0D006730; + temp_v0->unk_064 = D_8018C028; + temp_v0->unk_074 = D_0D006730; temp_v0->unk_004[2] = 5000.0f; temp_v0->unk_004[1] = 5000.0f; temp_v0->unk_004[0] = 5000.0f; - temp_v0->unk_064 = D_8018C028; - sp28 = temp_v0; temp_v0->unk_000 = 0.15f; func_800721E8(objectIndex, 0x00000010); + func_80086F10(objectIndex, 5, &D_800E694C); + func_80072488(objectIndex); +} + +void func_8007A2EC(s32 objectIndex, s32 playerIndex) { + switch (D_80165C18[objectIndex].unk_0A6) { + case 0: + break; + case 1: + func_8007A228(objectIndex, playerIndex); + break; + case 2: + func_800721C0(objectIndex, 0x00000010); + func_80072488(objectIndex); + break; + case 3: + func_8007278C(objectIndex, 0x00000014); + break; + case 4: + func_80072E54(objectIndex, 0, 0x0000000F, 1, 2, 1); + break; + case 5: + func_8007278C(objectIndex, 0x0000003C); + break; + case 6: + func_80072F88(objectIndex, 0x0000000F, 0, 1, 2, 1); + break; + case 7: + if (D_80165C18[objectIndex].unk_0AE == 0) { + func_80072428(objectIndex); + } + break; + } +} + +extern Gfx D_0F0BD350[]; +extern s16 D_800E69B0[1]; // static? + +void func_8007A3F0(s32 objectIndex, s32 arg1) { + f32 var = 5000.0f; + func_800791F0(objectIndex, arg1); + func_80073444(objectIndex, &gTLUTLakituReverse, &D_0F0BD350, 0x48U, (u16) 0x00000038); + D_80165C18[objectIndex].unk_064 = D_8018C028; + D_80165C18[objectIndex].unk_074 = D_0D006730; + D_80165C18[objectIndex].unk_004[2] = var; + D_80165C18[objectIndex].unk_004[1] = var; + D_80165C18[objectIndex].unk_004[0] = var; + D_80165C18[objectIndex].unk_000 = 0.15f; + func_800721E8(objectIndex, 0x00000010); func_80086F10(objectIndex, 6, &D_800E69B0); - temp_v0->unk_0D6 = 0; + D_80165C18[objectIndex].unk_0D6 = 0; func_80072488(objectIndex); - func_800C8F80(arg1, 0x0100FA28); + func_800C8F80((u8)arg1, 0x0100FA28); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007A3F0.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8007A3F0(s32, s32); /* extern */ -void func_80086F10(s32, ?, ? *); /* extern */ -void func_800C9018(u8, ?); /* extern */ -static ? D_800E69F4; /* unable to generate initializer */ +extern s16 D_800E69F4[1]; // static? void func_8007A4D4(s32 objectIndex, s32 playerId) { - Player *sp2C; - s32 temp_t3; - struct_80165C18_entry *temp_s0; - u16 temp_t2; - u8 temp_v0; + Player *sp2C = &gPlayerOne[playerId]; - temp_s0 = &D_80165C18[objectIndex]; - temp_t2 = (u16) temp_s0->unk_0A6; - sp2C = &gPlayerOne[playerId]; - switch (temp_t2) { - case 0: - break; - case 1: - func_8007A3F0(objectIndex, playerId); - break; - case 2: - func_800721C0(objectIndex, 0x00000010); - temp_s0->unk_0D6 = 1; - func_80072488(objectIndex); - break; - case 3: - func_800730BC(objectIndex, 0, 0x0000000F, 1, 2, -1); - break; - case 4: - func_80072428(objectIndex); - break; + switch (D_80165C18[objectIndex].unk_0A6) { + case 0: + break; + case 1: + func_8007A3F0(objectIndex, playerId); + break; + case 2: + func_800721C0(objectIndex, 0x00000010); + D_80165C18[objectIndex].unk_0D6 = 1; + func_80072488(objectIndex); + break; + case 3: + func_800730BC(objectIndex, 0, 0x0000000F, 1, 2, -1); + break; + case 4: + func_80072428(objectIndex); + break; } - temp_v0 = temp_s0->unk_0D6; - switch (temp_v0) { /* switch 1; irregular */ - case 1: /* switch 1 */ - if ((temp_s0->unk_0A6 >= 3) && ((sp2C->unk_0BC << 9) >= 0)) { - func_80086F10(objectIndex, 6, &D_800E69F4); - temp_s0->unk_0D6 = 2; - temp_s0->unk_04C = 0x00000050; - func_800C9018((u8) playerId, 0x0100FA28); + switch (D_80165C18[objectIndex].unk_0D6) { /* switch 1; irregular */ + case 1: /* switch 1 */ + if ((D_80165C18[objectIndex].unk_0A6 >= 3) && ((sp2C->unk_0BC << 9) >= 0)) { + func_80086F10(objectIndex, 6, &D_800E69F4); + D_80165C18[objectIndex].unk_0D6 = 2; + D_80165C18[objectIndex].unk_04C = 0x00000050; + func_800C9018((u8) playerId, 0x0100FA28); + return; + } return; - } - return; - case 2: /* switch 1 */ - temp_t3 = temp_s0->unk_04C - 1; - temp_s0->unk_04C = temp_t3; - if (temp_t3 == 0) { - func_80072488(objectIndex); - temp_s0->unk_0D6 = 0; - } - break; + case 2: /* switch 1 */ + D_80165C18[objectIndex].unk_04C--; + if (D_80165C18[objectIndex].unk_04C == 0) { + func_80072488(objectIndex); + D_80165C18[objectIndex].unk_0D6 = 0; + } + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007A4D4.s") -#endif void func_8007A66C(s32 objectIndex, Player *player, Camera *camera) { u16 temp_t8; @@ -3965,59 +3640,40 @@ void func_8007A910(s32 arg0) { func_80079860(arg0); } -#ifdef MIPS_TO_C -//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909 -void func_80079380(s32, s32); /* extern */ -void func_80079700(s32, s32); /* extern */ -void func_80079B40(s32, s32); /* extern */ -void func_80079D44(s32, s32); /* extern */ -void func_8007A124(s32, s32); /* extern */ -void func_8007A2EC(s32, s32); /* extern */ -void func_8007A4D4(s32, s32); /* extern */ -void func_8008BFFC(s32); /* extern */ -extern ? D_80165CF0; -extern s32 D_80183DB8; - void func_8007A948(s32 arg0) { - s32 temp_s0; - u8 temp_t8; + s32 temp_s0 = D_80183DB8[arg0]; - temp_s0 = *(&D_80183DB8 + (arg0 * 4)); - temp_t8 = *(&D_80165CF0 + (temp_s0 * 0xE0)); - switch (temp_t8) { - case 1: - func_80079380(temp_s0, arg0); - func_8008BFFC(temp_s0); - return; - case 2: - func_80079700(temp_s0, arg0); - func_8008BFFC(temp_s0); - return; - case 3: - func_80079B40(temp_s0, arg0); - return; - case 4: - func_8007A124(temp_s0, arg0); - func_8008BFFC(temp_s0); - return; - case 5: - func_8007A2EC(temp_s0, arg0); - func_8008BFFC(temp_s0); - return; - case 6: - func_8007A4D4(temp_s0, arg0); - func_8008BFFC(temp_s0); - return; - case 7: - func_80079D44(temp_s0, arg0); - /* fallthrough */ - default: - return; + switch (D_80165CF0[temp_s0].unk[0]) { + case 0: + break; + case 1: + func_80079380(temp_s0, arg0); + func_8008BFFC(temp_s0); + break; + case 2: + func_80079700(temp_s0, arg0); + func_8008BFFC(temp_s0); + break; + case 3: + func_80079B40(temp_s0, arg0); + break; + case 4: + func_8007A124(temp_s0, arg0); + func_8008BFFC(temp_s0); + break; + case 5: + func_8007A2EC(temp_s0, arg0); + func_8008BFFC(temp_s0); + break; + case 6: + func_8007A4D4(temp_s0, arg0); + func_8008BFFC(temp_s0); + break; + case 7: + func_80079D44(temp_s0, arg0); + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007A948.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit d9d3d6575355663122de59f6b2882d8f174e2355 on Dec-27-2022 @@ -4117,59 +3773,55 @@ void func_8007AC9C(s32 playerId) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern s8 D_0D008150; -extern s8 D_0D008790; -extern ? D_0D008B14; -extern u8 D_801658FD; -extern u8 D_801658FF; +//#ifdef MIPS_TO_C +extern u8 sRandomItemIndex; +extern u8 gControllerRandom; extern s32 gRaceFrameCounter; - -u8 gen_random_item(s16 arg0, s16 arg1) { - s32 sp18; - s32 temp_v0; - s32 temp_v1; - s32 var_v0; - u8 *var_a1; - u8 var_v1; - - var_a1 = &D_801658FD; - D_801658FD = (u8) ((u32) (random_int(0x0064U) + (D_801658FD + D_801658FF) + gRaceFrameCounter) % 100U); - temp_v1 = gModeSelection; - if (temp_v1 == VERSUS) { - temp_v0 = gPlayerCountSelection1; - switch (temp_v0) { /* irregular */ - case 2: - sp18 = segmented_to_virtual((u32) &D_0D008790); -block_8: - var_a1 = &D_801658FD; - break; - case 3: - sp18 = segmented_to_virtual(0x0D008858U); - goto block_8; - case 4: - sp18 = segmented_to_virtual(0x0D008984U); - goto block_8; +extern s8 D_0D008B14[]; +extern s8 D_0D008470[]; +extern s8 D_0D008858[]; +extern s8 D_0D008984[]; + +// todo: Cleanup this function to use array access and struct if possible. +u8 gen_random_item(s16 arg0, s16 arg1) +{ + u16 rand = random_int(100); + u8 *curve; + u8 randomItem; + + // sRandomItemIndex not initialized for further randomness? + sRandomItemIndex = ((u32) rand + (sRandomItemIndex + gControllerRandom) + gRaceFrameCounter) % 100U; + + if (gModeSelection == VERSUS) { + switch (gPlayerCountSelection1) { + case TWO_PLAYERS_SELECTED: + curve = segmented_to_virtual((void *) D_0D008790); + break; + case THREE_PLAYERS_SELECTED: + curve = segmented_to_virtual((void *) D_0D008858); + break; + case FOUR_PLAYERS_SELECTED: + curve = segmented_to_virtual((void *) D_0D008984); + break; } - var_v1 = *((arg0 * 0x64) + sp18 + *var_a1); - } else if (temp_v1 == BATTLE) { - var_v1 = *(D_801658FD + segmented_to_virtual((u32) &D_0D008B14)); - } else { + randomItem = *((arg0 * 100) + curve + sRandomItemIndex); + + } else if (gModeSelection == BATTLE) { + curve = segmented_to_virtual((void *) D_0D008B14); + randomItem = curve[sRandomItemIndex]; + } else { // GP Mode if (arg1 == 0) { - var_v0 = segmented_to_virtual((u32) &D_0D008150); - } else { - var_v0 = segmented_to_virtual(0x0D008470U); + curve = segmented_to_virtual((void *) D_0D008150); } - var_v1 = *((arg0 * 0x64) + var_v0 + D_801658FD); + else { + curve = segmented_to_virtual((void *) D_0D008470); + } + randomItem = *((arg0 * 100) + curve + sRandomItemIndex); } - return var_v1; + return randomItem; } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/gen_random_item.s") -#endif -u8 func_8007AF40(s32 arg0, s16 arg1) { +u8 func_8007AF40(s16 arg0, s16 arg1) { return gen_random_item(arg1, 0); } @@ -4177,33 +3829,38 @@ u8 func_8007AF78(s32 arg0, s16 arg1) { return gen_random_item(arg1, 1); } -#ifdef MIPS_TO_C +//#ifdef MIPS_TO_C //generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern ? D_80164392; -extern ? D_801643BA; + + +/** + * todo: verify that these two variables are fake ptrs. + * As seen below, they were replaced with gLapCountByPlayerId and gGPCurrentRaceRankByPlayerId + * + * Notice how matching with the two variables below required two s16s. The lapcount gets cast to s16 to match. +typedef struct { + s16 val; + s16 pad; +} a; +extern a D_80164392[]; +extern a D_801643BA[]; +*/ s16 func_8007AFB0(s32 objectIndex, s32 arg1) { - s16 sp1A; - s16 var_a1; - s32 temp_v0; - struct_8018CA70_entry *temp_v1; - u8 temp_a0; + s32 pad[3]; + s16 randomItem; - temp_v0 = arg1 * 4; - temp_v1 = &D_8018CA70[arg1]; - temp_a0 = temp_v1->unk76; - var_a1 = func_8007AF40((s32) *(&D_80164392 + temp_v0), *(&D_801643BA + temp_v0)); - if (temp_a0 != 0) { - var_a1 = (s16) temp_a0; - temp_v1->unk76 = 0U; + randomItem = (s16) func_8007AF40((s16) gLapCountByPlayerId[arg1], (s16) gGPCurrentRaceRankByPlayerId[arg1]); + + if (D_8018CA70[arg1].itemOverride != 0) { + randomItem = (s16) D_8018CA70[arg1].itemOverride; + D_8018CA70[arg1].itemOverride = 0; } - sp1A = var_a1; - func_800729B4(objectIndex, (s32) var_a1); - return sp1A; + + func_800729B4(objectIndex, (s32) randomItem); + + return randomItem; } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007AFB0.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc @@ -4683,10 +4340,18 @@ void func_8007BDA8(void) { func_8008BF18(temp_a0); } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern ? D_06007BA8; -static ? D_800E634C; /* unable to generate initializer */ +extern Gfx D_06007BA8[]; +// This is either 3 Vec3s as separate variables or an array of s16's or an array of vec3s. +// The other entries appear to be unused. +extern Vec3s D_800E634C[3]; // static? +// todo: import +// Vec3s D_800E634C[] = { +// 62334, 19, 65058, +// 62331, 19, 65073, +// 3896, 19, 65044, +// 0x0000, // pad +// }; + void func_8007BDE0(s32 objectIndex) { struct_80165C18_entry *temp_v0; @@ -4694,16 +4359,13 @@ void func_8007BDE0(s32 objectIndex) { temp_v0 = &D_80165C18[objectIndex]; temp_v0->unk_0D5 = 1; temp_v0->unk_054 = 0; - temp_v0->unk_070 = (s32) &D_06007BA8; + temp_v0->unk_070 = D_06007BA8; temp_v0->unk_000 = 0.2f; func_80072488(objectIndex); - func_8008B7D4(objectIndex, (f32) D_800E634C.unk0, (f32) ((f64) D_800E634C.unk2 + 55.0), (f32) D_800E634C.unk4); + func_8008B7D4(objectIndex, (f32) D_800E634C[0][0], (f32) ((f64) D_800E634C[0][1] + 55.0), (f32) D_800E634C[0][2]); func_8008B80C(objectIndex, 0.0f, 30.0f, 0.0f); func_8008B888(objectIndex, 0U, 0x3800U, 0U); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007BDE0.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc @@ -4835,18 +4497,14 @@ void func_800723A4(s32, s32); // extern void func_8007BEC8(s32); // extern void func_8007BFB0(s32); // extern extern s8 D_801658BC; -extern s16 D_80165CBE[]; -// Unsure about D_80183F28[D_80165CBE] due to m2c: -// D_80165CBE + (D_80183F28 * 0xE0) -// This could be a fake match. Apparently it didn't match at all. void func_8007C280(void) { if (D_801658BC == 1) { D_801658BC = 0; func_800723A4(D_80183F28, 0); } - if (*(&D_80165CBE[D_80183F28[0]])) { + if (D_80165CBE[D_80183F28[0]].unk[0]) { func_8007BEC8(D_80183F28); func_8007BFB0(D_80183F28); } @@ -4855,23 +4513,16 @@ void func_8007C280(void) { GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007C280.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c -? func_8007C280(); /* extern */ - void func_8007C2F8(s32 arg0) { - switch (arg0) { /* irregular */ - case 0: - func_8007BDA8(); - return; - case 1: - func_8007C280(); - return; + switch (arg0) { + case 0: + func_8007BDA8(); + break; + case 1: + func_8007C280(); + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007C2F8.s") -#endif void func_8007C340(void) { func_8007CC00(); @@ -4962,15 +4613,13 @@ void func_8007C550(s32 objectIndex) { func_8007C4A4(objectIndex); } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern s32 gTLUTBoo; +extern s8 gTLUTBoo[]; extern s32 *D_80165880; void func_8007C5B4(s32 objectIndex) { struct_80165C18_entry *temp_s0; - func_80073444(objectIndex, &gTLUTBoo, D_80165880, 0x30U, (u16) 0x00000028); + func_80073444(objectIndex, &gTLUTBoo, D_80165880, 48, 40); temp_s0 = &D_80165C18[objectIndex]; temp_s0->unk_004[0] = 0.0f; temp_s0->unk_004[1] = 0.0f; @@ -4987,9 +4636,6 @@ void func_8007C5B4(s32 objectIndex) { temp_s0->unk_0B2[0] = 0; temp_s0->unk_0B2[2] = 0x8000; } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007C5B4.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc @@ -5036,57 +4682,64 @@ void func_8007C684(s32 objectIndex) { GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007C684.s") #endif -#ifdef MIPS_TO_C +#ifdef NON_MATCHING //generated by m2c commit 9841ff34ca242f5f14b2eab2b54a7a65ac47d80f extern s16 D_8018CFF0; extern s16 D_8018D048; -static ? D_800E5988; /* unable to generate initializer */ -static ? D_800E5A44; /* unable to generate initializer */ -static ? D_800E5B08; /* unable to generate initializer */ -static ? D_800E5BD4; /* unable to generate initializer */ -static ? D_800E5C90; /* unable to generate initializer */ -static s32 D_800E5D9C[5] = { - (s32) &D_800E5988, - (s32) &D_800E5A44, - (s32) &D_800E5B08, - (s32) &D_800E5BD4, - (s32) &D_800E5C90, -}; -static ? D_800E5DB0; /* unable to generate initializer */ - -void func_8007C7B4(s32 arg0, s8 arg1) { - s32 *sp40; +// static ? D_800E5988; /* unable to generate initializer */ +// static ? D_800E5A44; /* unable to generate initializer */ +// static ? D_800E5B08; /* unable to generate initializer */ +// static ? D_800E5BD4; /* unable to generate initializer */ +// static ? D_800E5C90; /* unable to generate initializer */ +// static s32 D_800E5D9C[5] = { +// (s32) &D_800E5988, +// (s32) &D_800E5A44, +// (s32) &D_800E5B08, +// (s32) &D_800E5BD4, +// (s32) &D_800E5C90, +// }; +// static ? D_800E5DB0; /* unable to generate initializer */ +extern s32 D_800E5D9C[]; +extern s32 D_800E5DB0; + +// Close but not yet +void func_8007C7B4(s32 arg0, s32 arg1) { + //s32 *sp40; s16 temp_s1_2; s16 temp_s4; s16 temp_s5; - s32 *var_s2; - s32 *var_s3; - s32 temp_s1; + s32 var_s2; + s32 var_s3; + s32 *temp_s1; s32 temp_v1; - struct_80165C18_entry *temp_s0; - - var_s3 = &D_8018BFA8[arg0]; - var_s2 = D_800E5D9C; - sp40 = var_s3; - do { - temp_s1 = *var_s3; - func_800723A4(temp_s1, 1); - temp_s0 = &D_80165C18[temp_s1]; - temp_s0->unk_0D1 = arg1; - temp_s1_2 = random_int(0x003CU) - 0x1E; - temp_s4 = random_int(0x0014U) - 0xA; - temp_s5 = random_int(0x0050U) - 0x28; - random_int(0x1000U); - temp_v1 = *var_s2; + //struct_80165C18_entry *temp_s0; + //s32 i = 0; + + temp_s1 = &D_8018BFA8[arg0]; + //sp40 = D_8018BFA8[arg0]; + var_s2 = &D_800E5D9C; + + do { //for (i = 0; i < 20; i++) { + var_s3 = *temp_s1; + //temp_s1 = *var_s3; + func_800723A4(var_s3, 1); + //temp_s0 = &D_80165C18[var_s3[i]]; + D_80165C18[var_s3].unk_0D1 = arg1; + temp_s1_2 = random_int(60) - 30; + temp_s4 = random_int(20) - 10; + temp_s5 = random_int(80) - 40; + random_int(4096); // burn a card? + temp_v1 = var_s2; var_s2 += 4; - var_s3 += 4; - temp_s0->unk_010[0] = (f32) temp_s1_2; - temp_s0->unk_080 = temp_v1; - temp_s0->unk_010[1] = (f32) temp_s4; - temp_s0->unk_010[2] = (f32) temp_s5; - } while (var_s2 != &D_800E5DB0); - func_800C9060(arg1 & 0xFF, 0x1900705AU); - if (sp40 == D_8018BFA8) { + temp_s1 += 4; + D_80165C18[var_s3].unk_010[0] = (f32)temp_s1_2; + D_80165C18[var_s3].unk_080 = var_s2; + D_80165C18[var_s3].unk_010[1] = (f32) temp_s4; + D_80165C18[var_s3].unk_010[2] = (f32) temp_s5; + } while (var_s2 != D_800E5DB0); + + func_800C9060(arg1, 0x1900705A); + if (&D_8018BFA8[arg0] == D_8018BFA8) { D_8018CFF0 = 1; return; } @@ -5132,25 +4785,30 @@ void func_8007C91C(s32 objectIndex) { GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007C91C.s") #endif +// Something looks wonky about the asm. I suspect this a function was accidentally split in half. #ifdef MIPS_TO_C //generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc s16 func_8007C9F8(void) { - s8 temp_v0; + //s8 temp_v0; + + //temp_v0 = D_8018EDF3; + + - temp_v0 = D_8018EDF3; - if (temp_v0 == 1) { + if (D_8018EDF3 == 1) { return 0; } - if (temp_v0 == 2) { + + if (D_8018EDF3 == 2) { if (gModeSelection == GRAND_PRIX) { - if (gGPCurrentRaceRankByPlayerId->unk0 < gGPCurrentRaceRankByPlayerId->unk4) { + if (gGPCurrentRaceRankByPlayerId[0] < gGPCurrentRaceRankByPlayerId[1]) { return 0; } return 1; } - return *gGPCurrentRacePlayerIdByRank; + //return gGPCurrentRacePlayerIdByRank[0]; } - return *gGPCurrentRacePlayerIdByRank; + return gGPCurrentRacePlayerIdByRank[0]; } #else GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007C9F8.s") @@ -6708,41 +6366,20 @@ void func_8007FEA4(s32 objectIndex) { } } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_8007FB48(); // extern -void func_8007FEA4(); // extern -extern ? D_80165CF5; - -void func_8007FF5C(s32 arg0) { - u8 temp_v0; - - temp_v0 = *(&D_80165CF5 + (arg0 * 0xE0)); - if (temp_v0 != 1) { - if (temp_v0 != 2) { - return; - } - func_8007FEA4(); - return; +void func_8007FF5C(s32 arg0) +{ + switch(D_80165CF5[arg0].unk[0]) { + case 1: + func_8007FB48(); + break; + case 2: + func_8007FEA4(arg0); + break; } - func_8007FB48(); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007FF5C.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8007E63C(s32); /* extern */ -void func_8007FA08(s32); /* extern */ -void func_8007FF5C(s32); /* extern */ -extern ? D_80165CBE; void func_8007FFC0(s32 objectIndex) { - s16 temp_v0; - - temp_v0 = *(&D_80165CBE + (objectIndex * 0xE0)); - switch (temp_v0) { /* irregular */ + switch (D_80165CBE[objectIndex].unk[0]) { /* irregular */ case 0: break; case 1: @@ -6761,9 +6398,6 @@ void func_8007FFC0(s32 objectIndex) { func_8008BF18(objectIndex); func_80073514(objectIndex); } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8007FFC0.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc @@ -8014,14 +7648,13 @@ GLOBAL_ASM("asm/non_matchings/code_80071F00/func_8008241C.s") #ifdef MIPS_TO_C //generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_8008241C(); // extern -extern ? D_80165CBE; +//void func_8008241C(); // extern +extern s16 D_80165CBE[]; void func_80082714(s32 arg0) { - s16 temp_v0; + s16 *temp_v0 = &D_80165CBE[arg0]; - temp_v0 = *(&D_80165CBE + (arg0 * 0xE0)); - if ((temp_v0 != 0) && (temp_v0 == 1)) { + if ((temp_v0[0] != 0) && (temp_v0[0] == 1)) { func_8008241C(); } } @@ -8456,19 +8089,13 @@ block_6: GLOBAL_ASM("asm/non_matchings/code_80071F00/func_800833D0.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -s32 func_80089F24(); // extern -extern ? D_80165CBE; +extern UnkStruct_80165CBE D_80165CBE[]; void func_80083474(s32 arg0) { - if (*(&D_80165CBE + (arg0 * 0xE0)) >= 2) { + if (D_80165CBE[arg0].unk[0] >= 2) { func_80089F24(); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80071F00/func_80083474.s") -#endif #ifdef MIPS_TO_C //generated by m2c commit d9d3d6575355663122de59f6b2882d8f174e2355 on Dec-28-2022 diff --git a/src/code_80071F00.h b/src/code_80071F00.h index 545159e50..4e72e1201 100644 --- a/src/code_80071F00.h +++ b/src/code_80071F00.h @@ -102,7 +102,7 @@ void func_800745C8(s32, s32); void func_8007466C(s32, s32); void func_80074704(s32, s32); s32 func_80074790(s32, s32); -void func_800747F0(s32); +void func_800747F0(s32, s32); void func_80074894(s32, s32); void func_800748C4(s32, s32); void func_800748F4(s32, s32); @@ -188,7 +188,7 @@ void func_8007AA44(s32); void func_8007ABFC(s32, s32); void func_8007AC9C(s32); u8 gen_random_item(s16, s16); -u8 func_8007AF40(s32, s16); +u8 func_8007AF40(s16, s16); u8 func_8007AF78(s32, s16); void func_8007BB9C(); void func_8007BD04(s32); diff --git a/src/code_8008C1D0.c b/src/code_8008C1D0.c index baa2f4525..6909f4568 100644 --- a/src/code_8008C1D0.c +++ b/src/code_8008C1D0.c @@ -1463,6 +1463,7 @@ void func_8008F650(Player* player, s8 arg1) { } } +// Star item void func_8008F778(Player* player, s8 arg1) { func_8008C354(player, arg1); @@ -1470,11 +1471,13 @@ void func_8008F778(Player* player, s8 arg1) { player->statusEffects &= ~0x2000; D_8018D930[arg1] = gCourseTimer; D_8018D900[arg1] = 1; - if (((player->unk_000 & 0x4000) == 0x4000) && ((player->unk_000 & 0x100) != 0x100)) { + + if (((player->unk_000 & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->unk_000 & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) { if (D_8018D900[arg1] == 1) { func_800CA59C(arg1); D_8018D900[arg1] = 2; } + // This may be in charge of ending the star sound. Still unknown though. } else if (D_8018D900[arg1] == 1) { func_800CA984(arg1); D_8018D900[arg1] = 2; diff --git a/src/common_textures.inc.c b/src/common_textures.inc.c index 3ed1eb211..744a7fbc4 100644 --- a/src/common_textures.inc.c +++ b/src/common_textures.inc.c @@ -1746,25 +1746,250 @@ Gfx D_0D008138[] = { gsSPEndDisplayList(), }; -// 0x8150 unk data prob texture -s8 D_0D008150[] = { - #include "textures/common/132B50_08150.ia8.inc.c" +// Curve graphs for generating a random item based on player race position. +// GP Mode +u8 D_0D008150[800] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F +}; + +// Also GP Mode? +u8 D_0D008470[800] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0B, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C +}; + +// Versus mode two player +u8 D_0D008790[200] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x0B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x0B, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x0B, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x0B, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x02, 0x04, 0x05, + 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, + 0x07, 0x05, 0x02, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x04, 0x05, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x02, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x02, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x05, 0x07, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x05, 0x04, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x02, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F +}; + +// Versus mode three player +u8 D_0D008858[300] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F +}; + +// Versus mode four player +u8 D_0D008984[400] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, + 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F +}; + +// Battle mode +u8 D_0D008B14[100] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, + 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, + 0x0B, 0x0B, 0x0B, 0x0B }; -s8 D_0D008470[] = { - #include "textures/common/132B50_08470.ia8.inc.c" -}; - -s8 D_0D008790[] = { - #include "textures/common/132B50_08790.ia8.inc.c" -}; -// D_0D008858 part of 08790 - -// D_0D008984 part of 08790 - -// D_0D008B14 part of 08790 - - Vtx D_0D008B78[] = { {{{ 2, 2, 0}, 0, {0, 0}, {0xff, 0xff, 0xff, 0xff}}}, {{{ 2, -2, 0}, 0, {0, 960}, {0xff, 0xff, 0xff, 0xff}}}, diff --git a/src/hud_renderer.c b/src/hud_renderer.c index 64b6e381b..74053645d 100644 --- a/src/hud_renderer.c +++ b/src/hud_renderer.c @@ -207,52 +207,42 @@ void func_8004477C(s8 *image, s32 width, s32 height) { #ifdef MIPS_TO_C //generated by m2c commit b7eac665cffd02361f73cec283ef16d0a35a0e5b void func_80044924(s8 *image, s32 width, s32 height) { - Gfx *temp_v0; - Gfx *temp_v0_2; - Gfx *temp_v0_3; - Gfx *temp_v0_4; - Gfx *temp_v0_5; - Gfx *temp_v0_6; - Gfx *temp_v0_7; - s32 temp_t0; - s32 temp_t3; - s32 var_a0; - - temp_v0 = gDisplayListHead; - gDisplayListHead = temp_v0 + 8; - temp_v0->words.w0 = 0xFD700000; - temp_v0->words.w1 = (u32) image; - temp_v0_2 = gDisplayListHead; - gDisplayListHead = temp_v0_2 + 8; - temp_v0_2->words.w0 = 0xF5700000; - temp_v0_2->words.w1 = 0x07080200; - temp_v0_3 = gDisplayListHead; - gDisplayListHead = temp_v0_3 + 8; - temp_v0_3->words.w0 = 0xE6000000; - temp_v0_3->words.w1 = 0; - temp_v0_4 = gDisplayListHead; - temp_t3 = ((s32) ((width * height) + 3) >> 2) - 1; - gDisplayListHead = temp_v0_4 + 8; - temp_v0_4->words.w0 = 0xF3000000; - if (temp_t3 < 0x7FF) { - var_a0 = temp_t3; - } else { - var_a0 = 0x7FF; - } - temp_t0 = width / 16; - temp_v0_4->words.w1 = ((var_a0 & 0xFFF) << 0xC) | 0x07000000 | (((s32) (temp_t0 + 0x7FF) / temp_t0) & 0xFFF); - temp_v0_5 = gDisplayListHead; - gDisplayListHead = temp_v0_5 + 8; - temp_v0_5->words.w0 = 0xE7000000; - temp_v0_5->words.w1 = 0; - temp_v0_6 = gDisplayListHead; - gDisplayListHead = temp_v0_6 + 8; - temp_v0_6->words.w1 = 0x00080200; - temp_v0_6->words.w0 = ((((s32) ((width >> 1) + 7) >> 3) & 0x1FF) << 9) | 0xF5600000; - temp_v0_7 = gDisplayListHead; - gDisplayListHead = temp_v0_7 + 8; - temp_v0_7->words.w0 = 0xF2000000; - temp_v0_7->words.w1 = ((((width - 1) * 4) & 0xFFF) << 0xC) | (((height - 1) * 4) & 0xFFF); + //gDPLoadTextureBlock(gDisplayListHead++, &image, G_IM_FMT_IA, G_IM_SIZ_4b, width, height, 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); + s32 temp_t0; + s32 temp_t3; + s32 var_a0; + + // temp_t3 = ((s32) ((width * height) + 3) >> 2) - 1; + // temp_t0 = width / 16; + + gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, image); + gDPSetTile(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD); + gDPLoadSync(gDisplayListHead++); + gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, (temp_t0 + 0x7FF) / temp_t0, temp_t3, 0); + gDPPipeSync(gDisplayListHead++); + gDPSetTile(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_4b, 0, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD); + gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0, 0); + + // // set tile + // //temp_v0_2->words.w0 = 0xF5700000; + // //temp_v0_2->words.w1 = 0x07080200; + + + // // loadblock + // //temp_v0_4->words.w0 = 0xF3000000; + // // if (temp_t3 < 0x7FF) { + // // var_a0 = temp_t3; + // // } else { + // // var_a0 = 0x7FF; + // // } + // //temp_v0_4->words.w1 = ((var_a0 & 0xFFF) << 0xC) | 0x07000000 | (((s32) (temp_t0 + 0x7FF) / temp_t0) & 0xFFF); + + // // set tile + // temp_v0_6->words.w1 = 0x00080200; + // temp_v0_6->words.w0 = ((((s32) ((width >> 1) + 7) >> 3) & 0x1FF) << 9) | 0xF5600000; + // // set tile size + // temp_v0_7->words.w0 = 0xF2000000; + // temp_v0_7->words.w1 = ((((width - 1) * 4) & 0xFFF) << 0xC) | (((height - 1) * 4) & 0xFFF); } #else GLOBAL_ASM("asm/non_matchings/hud_renderer/func_80044924.s") -- cgit v1.2.3