diff options
| author | Tyler McGavran <tyler.taggerung@gmail.com> | 2024-02-14 19:16:54 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-14 19:16:54 -0500 |
| commit | 49ab41f0c5e39c9d28b1f1ce14d681748f0c7b3f (patch) | |
| tree | d7713bc0abe6e09163502ab83e8fef3bd3953679 /src/code_8006E9C0.c | |
| parent | 811e05c297ec8288ca39cb0b67206f5b060a8448 (diff) | |
A match in code_8006E9C0 (#573)
Also updated ctx_includes to match the current state of the
repository (primarily fixing the trig_table include location)
Signed-off-by: Taggerung <tyler.taggerung@email.com>
Co-authored-by: Taggerung <tyler.taggerung@email.com>
Diffstat (limited to 'src/code_8006E9C0.c')
| -rw-r--r-- | src/code_8006E9C0.c | 261 |
1 files changed, 81 insertions, 180 deletions
diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index dba7ab899..6168b681c 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -83,21 +83,9 @@ void func_8006EB10(void) { // Has to be on one line, because IDO hates you :) for (i = 0; i < gLeafParticle_SIZE; i++) { gLeafParticle[i] = NULL_OBJECT_ID; } - - D_8018CFA8 = 0; - D_8018CF90 = D_8018CFA8; - D_8018CF78 = D_8018CF90; - D_8018CF60 = D_8018CF78; - D_8018CF48 = D_8018CF60; - D_8018CF20 = D_8018CF48; - D_8018CF18 = D_8018CF20; - D_8018CFE0 = 0; - D_8018CFD8 = D_8018CFE0; - D_8018CFD0 = D_8018CFD8; - D_8018CFC8 = D_8018CFD0; - D_8018CFC0 = D_8018CFC8; - D_8018CFB8 = D_8018CFC0; - D_8018CFB0 = D_8018CFB8; + + D_8018CF18 = D_8018CF20 = D_8018CF48 = D_8018CF60 = D_8018CF78 = D_8018CF90 = D_8018CFA8 = 0; + D_8018CFB0 = D_8018CFB8 = D_8018CFC0 = D_8018CFC8 = D_8018CFD0 = D_8018CFD8 = D_8018CFE0 = 0; D_8018D018 = 0; D_8018D010 = 0; D_8018D008 = 0; @@ -108,15 +96,8 @@ void func_8006EB10(void) { D_8018D110 = 0; D_8018D0E8 = 0; D_8018D0C0 = 0; - D_8018D098 = 0; - D_8018D070 = D_8018D098; - D_8018D048 = D_8018D070; - D_8018D020 = D_8018D048; - gNextFreeLeafParticle = 0; - gNextFreeObjectParticle4 = gNextFreeLeafParticle; - gNextFreeObjectParticle3 = gNextFreeObjectParticle4; - gNextFreeObjectParticle2 = gNextFreeObjectParticle3; - gNextFreeObjectParticle1 = gNextFreeObjectParticle2; + D_8018D020 = D_8018D048 = D_8018D070 = D_8018D098 = 0; + gNextFreeObjectParticle1 = gNextFreeObjectParticle2 = gNextFreeObjectParticle3 = gNextFreeObjectParticle4 = gNextFreeLeafParticle = 0; } void clear_object_list() { @@ -168,23 +149,16 @@ void func_8006EEE8(s32 courseId) { D_8018D2B8 = D_800E5548[courseId * 2 + 1]; } -#ifdef NON_MATCHING -// I really really don't know what D_8018D9B4 is supposed to be -// Its value is a pointer that seems to point to compressesed data -// of some variety (sometimes TKMK, sometimes MIO0) -extern u8 *D_8018D9B4; - void func_8006EF60(void) { s32 i; + // `huh`'s and `i`'s types have to differ, for some reason + s16 huh; + u8 *wut; - for (i = 0; i < 0x14; i++) { - D_8018D248[i] = func_8006ED94(gCourseOutlineTextures[i], D_8018D9B4, D_800E5520[i], D_800E5520[i]); - D_8018D9B4 += D_800E5520[i]; - } + wut = D_8018D9B4 + 0xFFFF0000; + // God forgive me for my sins... + huh = 0x14; if (0) {} for (i = 0; i < huh; i++) { D_8018D248[i] = func_8006ED94(gCourseOutlineTextures[i], wut, D_800E5520[i], D_800E5520[i]); wut += D_800E5520[i]; } } -#else -GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_8006EF60.s") -#endif void func_8006F008(void) { D_801655C8 = 0; @@ -428,49 +402,17 @@ void func_8006F8CC(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Dec-30-2023 -extern s8 D_8016576A; -extern s8 D_8016579C; -extern s8 D_801657E1; -extern s32 D_801657FC; -extern s32 D_80165804; -extern s32 D_8016580C; -extern s32 D_80165814; -extern s32 D_8016581C; -extern s8 D_801658E4; -extern s8 D_801658EC; -extern ? D_8018CFAC; -extern ? D_8018CFB4; -extern ? D_8018CFBC; -extern ? D_8018CFC4; -extern ? D_8018D0F0; -extern s16 D_8018D16C; -extern s16 D_8018D184; -extern s16 D_8018D18C; -extern s32 D_8018D1C4; -extern s32 D_8018D1DC; -extern s32 D_8018D2B4; - +#ifdef NON_MATCHING +// Major register allocation problems in the first for-loop +// Smaller issues elsewhere, probably some one line, multiple variable assignment shenanigans going on +// https://decomp.me/scratch/ohbAc void func_8006FA94(void) { - ? *var_a0_2; - ? *var_a1; - ? *var_a2; - ? *var_a2_2; - ? *var_v1; - Player **var_t0; - Player *temp_v0; - Player *temp_v0_2; - Player *temp_v0_3; - Player *var_v0; - f32 *var_a1_2; - s16 *var_a3; - s16 var_a0; - struct_D_8018CE10 *var_v1_2; + s32 var_a0; + Player *player; func_8006F8CC(); func_8006F008(); - osSetTime(/* u64+0x0 */ 0, /* u64+0x4 */ 0); + osSetTime(0); D_8018D170 = 0; D_8018D190 = 0; gIsHUDVisible = 0; @@ -479,9 +421,19 @@ void func_8006FA94(void) { D_801657E2 = 0; D_80165730 = 0; D_801658FE = 0; + /* D_801657E5 = 0; D_801657E3 = D_801657E5; D_801657E1 = D_801657E3; + */ + D_801657E1 = D_801657E3 = D_801657E5 = 0; + /* + D_80165658->unk8 = 0; + D_80165658->unk4 = 0; + D_80165658->unk0 = 0; + */ + D_80165658[0] = D_80165658[1] = D_80165658[2] = 0; + /* D_801658D6 = 0; D_801658E4 = D_801658D6; D_801658F4 = D_801658E4; @@ -489,19 +441,18 @@ void func_8006FA94(void) { D_801658DC = D_801658EC; D_801658CE = D_801658DC; D_801658C6 = D_801658CE; - D_80165658->unk8 = 0; - D_80165658->unk4 = 0; - D_80165658->unk0 = 0; D_801658BC = D_801658C6; + */ + D_801658BC = D_801658C6 = D_801658CE = D_801658DC = D_801658EC = D_801658F4 = D_801658E4 = D_801658D6 = 0; switch (gPlayerCount) { /* irregular */ case 1: if (gModeSelection == 0) { D_8018D114 = 0; - D_8018D178 = 0x00000096; - D_8018D114 = 0x000000F0; + D_8018D178 = 150; + D_8018D180 = 240; } else { D_8018D114 = 1; - D_8018D178 = 0x0000000A; + D_8018D178 = 10; D_8018D180 = 0; } break; @@ -509,19 +460,19 @@ void func_8006FA94(void) { if (gScreenModeSelection == 1) { if (gModeSelection == 0) { D_8018D114 = 2; - D_8018D178 = 0x00000096; - D_8018D180 = 0x000000F0; - D_8018D2AC = 0x0000003C; + D_8018D178 = 150; + D_8018D180 = 240; + D_8018D2AC = 60; } else if (gModeSelection == 2) { D_8018D114 = 3; - D_8018D178 = 0x0000001E; - D_8018D180 = 0x0000001E; - D_8018D2AC = 0x0000003C; + D_8018D178 = 30; + D_8018D180 = 30; + D_8018D2AC = 60; } else { D_8018D114 = 4; - D_8018D178 = 0x00000028; - D_8018D180 = 0x00000028; - D_8018D2AC = 0x0000003C; + D_8018D178 = 40; + D_8018D180 = 40; + D_8018D2AC = 60; } } else if (gModeSelection == 0) { D_8018D114 = 5; @@ -534,63 +485,54 @@ void func_8006FA94(void) { case 3: if (gModeSelection == 2) { D_8018D114 = 8; - D_8018D178 = 0x00000064; - D_8018D180 = 0x00000096; - D_8018D2AC = 0x0000003C; + D_8018D178 = 100; + D_8018D180 = 150; + D_8018D2AC = 60; } else { - D_8018D180 = 9; - D_8018D178 = 0x00000064; - D_8018D180 = 0x00000096; - D_8018D2AC = 0x0000003C; + D_8018D114 = 9; + D_8018D178 = 100; + D_8018D180 = 150; + D_8018D2AC = 60; } break; case 4: if (gModeSelection == 2) { - D_8018D114 = 0x0000000A; - D_8018D178 = 0x0000001E; - D_8018D180 = 0x0000001E; + D_8018D114 = 10; + D_8018D178 = 30; + D_8018D180 = 30; + D_8018D2AC = 10; } else { - D_8018D114 = 0x0000000B; - D_8018D178 = 0x0000001E; - D_8018D180 = 0x0000001E; + D_8018D114 = 11; + D_8018D178 = 30; + D_8018D180 = 30; + D_8018D2AC = 10; } - D_8018D2AC = 0x0000000A; break; } if (gEnableDebugMode == 0) { D_8016576A = 0; D_8016579C = 0; } - var_a0 = 0; - if (gPlayerCount > 0) { - var_a0_2 = &D_8018CFB4; - var_a2 = &D_8018CFC4; - var_a1 = &D_8018CFAC; - var_v1 = &D_8018CFBC; - do { - var_a0_2 += 1; - var_v1 += 1; - var_a1 += 1; - var_a2 += 1; - var_v1->unk-1 = 0; - var_a1->unk-1 = 0; - var_a2->unk-1 = 0; - var_a0_2->unk-1 = 0; - } while ((u32) var_a0_2 < (u32) (gPlayerCount + &D_8018CFB4)); - var_a0 = 0; + for (var_a0 = 0; var_a0 < gPlayerCount; var_a0++) { + D_8018CFBC[var_a0] = 0; + D_8018CFAC[var_a0] = 0; + D_8018CFC4[var_a0] = 0; + D_8018CFB4[var_a0] = 0; } D_8018D204 = 1; D_8018D1FC = 0; D_8018D224 = 0; - D_8018D1F8 = 0; - D_8018D1F0 = 0; + D_8018D1F0 = D_8018D1F8 = 0; D_8018D228 = 0xFF; + /* D_80165628 = 0; D_80165618 = 0; D_80165608 = D_80165618; D_801655F8 = D_80165618; D_801655E8 = D_80165618; D_801655D8 = D_80165618; + */ + D_801655D8 = D_801655E8 = D_801655F8 = D_80165608 = D_80165618 = D_80165628 = 0; D_8018D160 = 0; D_8018D1DC = 0; D_8018D1C4 = 0; @@ -600,8 +542,8 @@ void func_8006FA94(void) { D_801656F0 = 0; D_801657B2 = 0; D_801657D8 = D_801657B2; - D_8018D214 = (s32) D_801657D8; - D_801657B0 = (s8) D_8018D214; + D_8018D214 = D_801657D8; + D_801657B0 = D_8018D214; D_801657AE = D_801657B0; D_8018D20C = 0; D_8018D2F8 = 0; @@ -611,10 +553,10 @@ void func_8006FA94(void) { D_8018D2BC = 0; D_8018D2B4 = D_8018D2BC; D_8018D2A4 = D_8018D2B4; - D_8018D2C8->unk0 = 0; - D_8018D2C8->unk4 = 0; - D_8018D2C8->unk8 = 0; - D_8018D2C8->unkC = 0; + D_8018D2C8[0] = 0; + D_8018D2C8[1] = 0; + D_8018D2C8[2] = 0; + D_8018D2C8[3] = 0; D_8016581C = 0; D_8016580C = 0; D_80165814 = 0; @@ -625,56 +567,15 @@ void func_8006FA94(void) { D_8018D16C = D_8018D18C; D_8018D17C = D_8018D18C; D_8018D174 = D_8018D18C; - var_v0 = gPlayerOne; - var_t0 = D_8018CF28; - var_a3 = D_8018CF50; - var_v1_2 = D_8018CE10; - var_a2_2 = &D_8018D0F0; - var_a1_2 = D_8018D050; - do { - var_a1_2->unk0 = -32.0f; - var_a2_2->unk0 = -32.0f; - var_v1_2->unk_04[2] = 0.0f; - var_v1_2->unk_04[1] = 0.0f; - var_v1_2->unk_04[0] = 0.0f; - var_a3->unk0 = var_a0; - var_t0->unk0 = var_v0; - var_v0->unk_040 = -1; - temp_v0 = var_v0 + 0xDD8; - var_t0->unk4 = temp_v0; - var_a3->unk2 = (s16) (var_a0 + 1); - var_v1_2->unk24 = 0.0f; - var_v1_2->unk28 = 0.0f; - var_v1_2->unk2C = 0.0f; - var_a2_2->unk4 = -32.0f; - var_a1_2->unk4 = -32.0f; - temp_v0->unk_040 = -1; - temp_v0_2 = temp_v0 + 0xDD8; - var_a3->unk4 = (s16) (var_a0 + 2); - var_t0->unk8 = temp_v0_2; - var_v1_2->unk44 = 0.0f; - var_v1_2->unk48 = 0.0f; - var_v1_2->unk4C = 0.0f; - var_a2_2->unk8 = -32.0f; - var_a1_2->unk8 = -32.0f; - temp_v0_2->unk_040 = -1; - temp_v0_3 = temp_v0_2 + 0xDD8; - var_t0->unkC = temp_v0_3; - var_a3->unk6 = (s16) (var_a0 + 3); - var_a0 += 4; - var_v1_2->unk64 = 0.0f; - var_v1_2->unk68 = 0.0f; - var_v1_2->unk6C = 0.0f; - var_a2_2->unkC = -32.0f; - var_a1_2->unkC = -32.0f; - temp_v0_3->unk_040 = -1; - var_v0 = temp_v0_3 + 0xDD8; - var_a1_2 += 0x10; - var_a2_2 += 0x10; - var_v1_2 += 0x80; - var_a3 += 8; - var_t0 += 0x10; - } while (var_a0 != (s16) 8); + player = gPlayerOne; + for (var_a0 = 0; var_a0 < 8; var_a0++) { + D_8018D0F0[var_a0] = D_8018D050[var_a0] = -32.0f; + D_8018CE10[var_a0].unk_04[0] = D_8018CE10[var_a0].unk_04[1] = D_8018CE10[var_a0].unk_04[2] = 0.0f; + D_8018CF50[var_a0] = var_a0; + D_8018CF28[var_a0] = player; + player->unk_040 = -1; + player++; + } } #else GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_8006FA94.s") |
