summaryrefslogtreecommitdiff
path: root/src/code_8006E9C0.c
diff options
context:
space:
mode:
authorTyler McGavran <tyler.taggerung@gmail.com>2024-02-14 19:16:54 -0500
committerGitHub <noreply@github.com>2024-02-14 19:16:54 -0500
commit49ab41f0c5e39c9d28b1f1ce14d681748f0c7b3f (patch)
treed7713bc0abe6e09163502ab83e8fef3bd3953679 /src/code_8006E9C0.c
parent811e05c297ec8288ca39cb0b67206f5b060a8448 (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.c261
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")