mirror of
https://github.com/n64decomp/mk64
synced 2026-08-09 02:25:46 -04:00
Jump Table Related Disassembly (#60)
* Part 1, Commit 1 of 24 audio/effects Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 2 of 24 audio/external Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 3 of 24 audio/heap Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 4 of 24 audio/port_eu Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 5 of 24 audio/seqplayer Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 6 of 24 code_80005FD0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 7 of 24 code_8001C4D0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 8 of 24 code_80027D00 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 9 of 24 code_800393C0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 10 of 24 code_8003DC40 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 11 of 24 code_800431B0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 12 of 24 code_80057C60 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 13 of 24 code_8006E9C0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 14 of 24 code_80071F00 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 15 of 24 code_80086E70 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 16 of 24 code_8008C1D0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 17 of 24 code_80091750 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 18 of 24 code_800AF9B0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 19 of 24 code_8028DF00 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 20 of 24 code_80290C20 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 21 of 24 code_802B0210 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 22 of 24 code_actors Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 23 of 24 memory Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 1, Commit 24 of 24 os/__osException Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 1 of 20 audio/effects.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 2 of 20 audio/external.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 3 of 24 audio/heap.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 4 of 20 audio/port_eu.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 5 of 20 audio/seqplayer.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 6 of 20 code_80005FD0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 7 of 20 code_8001C4D0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 8 of 20 code_80027D00.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 9 of 20 code_8003DC40.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 10 of 20 code_800431B0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 11 of 20 code_80057C60.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 12 of 20 code_8006E9C0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 13 of 20 code_80071F00.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 14 of 20 code_80086E70.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 15 of 20 code_80091750.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 16 of 20 code_800AF9B0.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 17 of 20 code_80290C20.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 18 of 20 code_802B0210.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 19 of 20 code_80296A50.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 2, Commit 20 of 20 memory.c Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 3, Commit 1 of 4 code_8008C1D0 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 3, Commit 2 of 4 code_8028DF00 Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 3, Commit 3 of 4 math_util Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Part 3, Commit 4 of 4 crash_screen Signed-off-by: Taggerung <tyler.taggerung@gmail.com> * Recreated disassemblies with a context file Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
This commit is contained in:
+113
-7
@@ -313,15 +313,121 @@ GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE5BC.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_800BE5E0:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
extern ? D_803B7088;
|
||||
|
||||
Unable to determine jump table for jr instruction at func_800BE5E0.s line 11.
|
||||
f32 func_800BE5E0(void *arg0) {
|
||||
f32 temp_f0;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f2;
|
||||
f32 temp_f6;
|
||||
s16 temp_a2;
|
||||
s16 temp_v1_3;
|
||||
u8 temp_v0;
|
||||
u8 temp_v1;
|
||||
void *temp_v1_2;
|
||||
s16 phi_a2;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_v1 = arg0->unk1;
|
||||
temp_v0 = arg0->unk0;
|
||||
switch (temp_v1) {
|
||||
case 0:
|
||||
return 0.0f;
|
||||
case 1:
|
||||
if ((temp_v0 & 0x40) != 0) {
|
||||
arg0->unk1 = 5;
|
||||
} else {
|
||||
case 2:
|
||||
arg0->unk2 = 0;
|
||||
arg0->unk1 = 3;
|
||||
case 3:
|
||||
loop_6:
|
||||
temp_v1_2 = arg0->unk20 + (arg0->unk2 * 4);
|
||||
arg0->unk4 = temp_v1_2->unk0;
|
||||
temp_a2 = arg0->unk4;
|
||||
if (temp_a2 != -3) {
|
||||
if (temp_a2 != -2) {
|
||||
if (temp_a2 != -1) {
|
||||
if (temp_a2 == 0) {
|
||||
arg0->unk1 = 0;
|
||||
} else {
|
||||
if (temp_a2 >= 4) {
|
||||
arg0->unk4 = ((temp_a2 * D_803B7088.unkC) / D_803B7088.unk0) / 4;
|
||||
}
|
||||
phi_a2 = arg0->unk4;
|
||||
if (arg0->unk4 == 0) {
|
||||
arg0->unk4 = 1;
|
||||
phi_a2 = arg0->unk4;
|
||||
}
|
||||
temp_v1_3 = arg0->unk2;
|
||||
arg0->unk1 = 4;
|
||||
temp_f6 = (arg0->unk20 + (temp_v1_3 * 4))->unk2;
|
||||
arg0->unk2 = temp_v1_3 + 1;
|
||||
arg0->unk18 = temp_f6 / 32767.0f;
|
||||
temp_f0 = arg0->unk18;
|
||||
arg0->unk18 = temp_f0 * temp_f0;
|
||||
arg0->unkC = (arg0->unk18 - arg0->unk14) / phi_a2;
|
||||
}
|
||||
} else {
|
||||
arg0->unk1 = 5;
|
||||
}
|
||||
} else {
|
||||
arg0->unk2 = temp_v1_2->unk2;
|
||||
goto loop_6;
|
||||
}
|
||||
} else {
|
||||
arg0->unk1 = 1;
|
||||
}
|
||||
if (arg0->unk1 == 4) {
|
||||
case 4:
|
||||
arg0->unk4 = arg0->unk4 - 1;
|
||||
arg0->unk14 = arg0->unk14 + arg0->unkC;
|
||||
if (arg0->unk4 <= 0) {
|
||||
arg0->unk1 = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
block_30:
|
||||
if ((temp_v0 & 0x20) != 0) {
|
||||
arg0->unk1 = 6;
|
||||
arg0->unk0 = temp_v0 & 0xFFDF;
|
||||
}
|
||||
if ((temp_v0 & 0x10) != 0) {
|
||||
arg0->unk1 = 7;
|
||||
arg0->unk0 = temp_v0 & 0xFFEF;
|
||||
}
|
||||
temp_f2 = arg0->unk14;
|
||||
if (temp_f2 < 0.0f) {
|
||||
return 0.0f;
|
||||
}
|
||||
if (temp_f2 > 1.0f) {
|
||||
return 1.0f;
|
||||
}
|
||||
return temp_f2;
|
||||
case 6:
|
||||
case 7:
|
||||
temp_f0_2 = arg0->unk8;
|
||||
arg0->unk14 = arg0->unk14 - arg0->unk10;
|
||||
if ((temp_f0_2 != 0.0f) && (temp_v1 == 6)) {
|
||||
if (arg0->unk14 < temp_f0_2) {
|
||||
arg0->unk14 = temp_f0_2;
|
||||
arg0->unk4 = 0x80;
|
||||
arg0->unk1 = 8;
|
||||
}
|
||||
} else if (arg0->unk14 < 0.00001f) {
|
||||
arg0->unk14 = 0.0f;
|
||||
arg0->unk1 = 0;
|
||||
}
|
||||
goto block_30;
|
||||
case 8:
|
||||
arg0->unk4 = arg0->unk4 - 1;
|
||||
if (arg0->unk4 == 0) {
|
||||
arg0->unk1 = 7;
|
||||
}
|
||||
goto block_30;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/audio/effects/func_800BE5E0.s")
|
||||
#endif
|
||||
|
||||
+1466
-63
File diff suppressed because it is too large
Load Diff
+109
-7
@@ -849,15 +849,117 @@ GLOBAL_ASM("asm/non_matchings/audio/heap/func_800B9FB8.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_800BA00C:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_800B9FB8(); /* extern */
|
||||
? func_800BA250(); /* extern */
|
||||
? func_800BEF2C(? *); /* extern */
|
||||
extern ? D_803B1510;
|
||||
extern ? D_803B1A30;
|
||||
extern ? D_803B7088;
|
||||
|
||||
Unable to determine jump table for jr instruction at func_800BA00C.s line 17.
|
||||
s32 func_800BA00C(void) {
|
||||
? *temp_s0;
|
||||
s32 *temp_v1;
|
||||
s32 temp_a0;
|
||||
s32 temp_a2;
|
||||
s32 temp_v0;
|
||||
s32 temp_v0_4;
|
||||
s32 temp_v0_5;
|
||||
s32 temp_v0_6;
|
||||
u8 temp_t6;
|
||||
void *temp_v0_2;
|
||||
void *temp_v0_3;
|
||||
? *phi_s0;
|
||||
s32 phi_v1;
|
||||
s32 phi_a0;
|
||||
s32 phi_a2;
|
||||
s32 *phi_v1_2;
|
||||
s32 phi_v0;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_t6 = D_803B0500;
|
||||
switch (temp_t6) {
|
||||
case 5:
|
||||
phi_s0 = &D_803B1510;
|
||||
do {
|
||||
func_800BEF2C(phi_s0);
|
||||
temp_s0 = phi_s0 + 0x148;
|
||||
phi_s0 = temp_s0;
|
||||
} while (temp_s0 != &D_803B1A30);
|
||||
D_803B0504 = 4;
|
||||
D_803B0500 += -1;
|
||||
break;
|
||||
case 4:
|
||||
temp_v0 = D_803B0504;
|
||||
if (temp_v0 != 0) {
|
||||
D_803B0504 = temp_v0 - 1;
|
||||
func_800B9FB8();
|
||||
} else {
|
||||
temp_a2 = D_803B70B0;
|
||||
phi_v1 = 0;
|
||||
phi_a0 = 0;
|
||||
phi_a2 = temp_a2;
|
||||
if (temp_a2 > 0) {
|
||||
do {
|
||||
temp_a0 = phi_a0 + 1;
|
||||
temp_v0_2 = D_803B1508 + phi_v1;
|
||||
phi_a0 = temp_a0;
|
||||
if (((temp_v0_2->unkB0 >> 0x1F) != 0) && (temp_v0_2->unk59 != 0)) {
|
||||
temp_v0_2->unk68 = D_803B7088.unk18;
|
||||
temp_v0_3 = D_803B1508 + phi_v1;
|
||||
temp_v0_3->unk58 = temp_v0_3->unk58 | 0x10;
|
||||
phi_a2 = D_803B70B0;
|
||||
}
|
||||
phi_v1 += 0xC0;
|
||||
} while (temp_a0 < phi_a2);
|
||||
}
|
||||
D_803B0504 = 0x10;
|
||||
D_803B0500 += -1;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
temp_v0_4 = D_803B0504;
|
||||
phi_v1_2 = &D_803B7180;
|
||||
if (temp_v0_4 != 0) {
|
||||
D_803B0504 = temp_v0_4 - 1;
|
||||
func_800B9FB8();
|
||||
} else {
|
||||
do {
|
||||
phi_v0 = 0;
|
||||
loop_18:
|
||||
*(*phi_v1_2 + phi_v0) = 0;
|
||||
(*phi_v1_2 + phi_v0)->unk2 = 0;
|
||||
(*phi_v1_2 + phi_v0)->unk4 = 0;
|
||||
temp_v0_5 = phi_v0 + 8;
|
||||
(*phi_v1_2 + phi_v0)->unk6 = 0;
|
||||
phi_v0 = temp_v0_5;
|
||||
if (temp_v0_5 != 0xA00) {
|
||||
goto loop_18;
|
||||
}
|
||||
temp_v1 = phi_v1_2 + 4;
|
||||
phi_v1_2 = temp_v1;
|
||||
} while (temp_v1 != &D_803B718C);
|
||||
D_803B0504 = 4;
|
||||
D_803B0500 += -1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
temp_v0_6 = D_803B0504;
|
||||
if (temp_v0_6 != 0) {
|
||||
D_803B0504 = temp_v0_6 - 1;
|
||||
} else {
|
||||
D_803B0500 += -1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
func_800BA250();
|
||||
D_803B0500 = 0;
|
||||
break;
|
||||
}
|
||||
if (D_803B0500 < 3) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/audio/heap/func_800BA00C.s")
|
||||
#endif
|
||||
|
||||
+100
-7
@@ -407,15 +407,108 @@ GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBC24.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_800CBCB0:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_800CB818(void *); /* extern */
|
||||
extern ? D_80193820;
|
||||
extern ? D_803B1510;
|
||||
extern ? D_803B5EF0;
|
||||
|
||||
Unable to determine jump table for jr instruction at func_800CBCB0.s line 116.
|
||||
void func_800CBCB0(u32 arg0) {
|
||||
s32 temp_s1;
|
||||
s32 temp_t1;
|
||||
s32 temp_t8;
|
||||
u8 temp_a0;
|
||||
u8 temp_a1;
|
||||
u8 temp_v0;
|
||||
u8 temp_v1_2;
|
||||
void *temp_s0;
|
||||
void *temp_v0_2;
|
||||
void *temp_v1;
|
||||
s32 phi_v0;
|
||||
s32 phi_s1;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_t8 = arg0 & 0xFF;
|
||||
temp_s1 = (arg0 >> 8) & 0xFF;
|
||||
phi_v0 = temp_s1;
|
||||
phi_s1 = temp_s1;
|
||||
if (temp_t8 != temp_s1) {
|
||||
do {
|
||||
temp_s0 = &D_80193820 + ((phi_v0 & 0xFF) * 8);
|
||||
temp_a0 = temp_s0->unk0;
|
||||
temp_t1 = (phi_s1 + 1) & 0xFF;
|
||||
phi_s1 = temp_t1;
|
||||
if ((temp_a0 & 0xF0) == 0xF0) {
|
||||
func_800CB818(temp_s0);
|
||||
} else {
|
||||
temp_v0 = temp_s0->unk1;
|
||||
if (temp_v0 < 4) {
|
||||
temp_v1 = &D_803B1510 + (temp_v0 * 0x148);
|
||||
if ((temp_a0 & 0x80) != 0) {
|
||||
func_800CB818(temp_s0);
|
||||
} else if ((temp_a0 & 0x40) != 0) {
|
||||
if (temp_a0 != 0x41) {
|
||||
if (temp_a0 != 0x46) {
|
||||
if (temp_a0 != 0x47) {
|
||||
if (temp_a0 != 0x48) {
|
||||
|
||||
} else {
|
||||
temp_v1->unkC = temp_s0->unk4;
|
||||
}
|
||||
} else {
|
||||
temp_v1->unk8 = temp_s0->unk4 * 0x30;
|
||||
}
|
||||
} else {
|
||||
(temp_v1 + temp_s0->unk3)->unk7 = temp_s0->unk4;
|
||||
}
|
||||
} else {
|
||||
temp_v1->unk0 = temp_v1->unk0 | 4;
|
||||
temp_v1->unk28 = temp_s0->unk4;
|
||||
}
|
||||
} else if ((temp_v1->unk0 >> 0x1F) != 0) {
|
||||
temp_a1 = temp_s0->unk2;
|
||||
if (temp_a1 < 0x10) {
|
||||
temp_v0_2 = (temp_v1 + (temp_a1 * 4))->unk30;
|
||||
if (temp_v0_2 != &D_803B5EF0) {
|
||||
switch (temp_a0) {
|
||||
case 1:
|
||||
temp_v0_2->unk1 = temp_v0_2->unk1 | 0x40;
|
||||
temp_v0_2->unk20 = temp_s0->unk4;
|
||||
break;
|
||||
case 2:
|
||||
temp_v0_2->unk1 = temp_v0_2->unk1 | 0x40;
|
||||
temp_v0_2->unk24 = temp_s0->unk4;
|
||||
break;
|
||||
case 3:
|
||||
temp_v0_2->unk1 = temp_v0_2->unk1 | 0x20;
|
||||
temp_v0_2->unk9 = temp_s0->unk4;
|
||||
break;
|
||||
case 4:
|
||||
temp_v0_2->unk1 = temp_v0_2->unk1 | 0x80;
|
||||
temp_v0_2->unk30 = temp_s0->unk4;
|
||||
break;
|
||||
case 5:
|
||||
temp_v0_2->unk4 = temp_s0->unk4;
|
||||
break;
|
||||
case 6:
|
||||
temp_v1_2 = temp_s0->unk3;
|
||||
if (temp_v1_2 < 8) {
|
||||
(temp_v0_2 + temp_v1_2)->unk58 = temp_s0->unk4;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
temp_v0_2->unk0 = ((temp_s0->unk4 * 0x10) & 0x10) | (temp_v0_2->unk0 & 0xFFEF);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
temp_s0->unk0 = 0;
|
||||
phi_v0 = temp_t1;
|
||||
} while (temp_t8 != temp_t1);
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/audio/port_eu/func_800CBCB0.s")
|
||||
#endif
|
||||
|
||||
+1265
-21
File diff suppressed because it is too large
Load Diff
+1378
-57
File diff suppressed because it is too large
Load Diff
+376
-14
@@ -22,15 +22,204 @@ extern Player *D_800DC4E8;
|
||||
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_8001C4D0:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_80014DE4(s32, s32, s32, Camera *); /* extern */
|
||||
? func_802B7F7C(Camera *, f32 *, s16 *, Camera *); /* extern */
|
||||
extern ? D_80150130;
|
||||
extern ? D_80152300;
|
||||
extern ? D_80164498;
|
||||
extern ? D_80164678;
|
||||
extern ? D_801649D8;
|
||||
extern ? D_801649E8;
|
||||
extern ? D_801649F8;
|
||||
extern ? D_80164A08;
|
||||
extern ? D_80164A18;
|
||||
extern ? D_80164A38;
|
||||
extern ? D_80164A48;
|
||||
extern ? D_80164A78;
|
||||
extern ? D_80164A90;
|
||||
extern ? D_80164AA0;
|
||||
static ? D_800DDB30; /* unable to generate initializer */
|
||||
static s32 D_800ED50C = 0x4139999A; /* const */
|
||||
static s32 D_800ED510 = 0x4199999A; /* const */
|
||||
static s32 D_800ED514 = 0x4139999A; /* const */
|
||||
static s32 D_800ED518 = 0x4199999A; /* const */
|
||||
static s32 D_800ED51C = 0x4119999A; /* const */
|
||||
static s32 D_800ED520 = 0x4139999A; /* const */
|
||||
static s32 D_800ED524 = 0x4199999A; /* const */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_8001C4D0.s line 21.
|
||||
void func_8001C4D0(f32 x, f32 y, f32 z, s16 rot, u32 arg4, s32 cameraId) {
|
||||
void *sp30;
|
||||
s32 sp2C;
|
||||
s32 sp28;
|
||||
f32 *sp24;
|
||||
f32 *sp20;
|
||||
f32 *sp1C;
|
||||
f32 *temp_t1;
|
||||
f32 *temp_t2;
|
||||
f32 *temp_t3;
|
||||
f32 *temp_v0_2;
|
||||
f32 *temp_v0_3;
|
||||
f32 *temp_v0_4;
|
||||
f32 *temp_v0_5;
|
||||
s16 *temp_a0;
|
||||
s32 temp_t6;
|
||||
s32 temp_t6_2;
|
||||
s32 temp_v0;
|
||||
void *temp_v1;
|
||||
f32 *phi_v0;
|
||||
s16 phi_v1;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_t6 = cameraId * 2;
|
||||
*(&D_80152300 + temp_t6) = arg4;
|
||||
switch (arg4) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 3:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
D_80164A89 = 0;
|
||||
cameras[cameraId].posX = x;
|
||||
cameras[cameraId].posY = y;
|
||||
cameras[cameraId].posZ = z;
|
||||
cameras[cameraId].rotZ = 0;
|
||||
cameras[cameraId].unk2 = 150.0f;
|
||||
cameras[cameraId].unk1 = y - 3.0;
|
||||
cameras[cameraId].unk = 0.0f;
|
||||
cameras[cameraId].angleX = 0.0f;
|
||||
cameras[cameraId].angleZ = 0.0f;
|
||||
cameras[cameraId].angleY = 1.0f;
|
||||
cameras[cameraId].unkB0 = 0;
|
||||
cameras[cameraId].unk25 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unkAE = cameraId;
|
||||
temp_t6_2 = cameraId * 4;
|
||||
*(&D_801649D8 + temp_t6_2) = 20.0f;
|
||||
*(&D_801649E8 + temp_t6_2) = 10.0f;
|
||||
*(&D_801649F8 + temp_t6_2) = 7.0f;
|
||||
D_80164A2C = 0;
|
||||
D_80164A30 = 30.0f;
|
||||
temp_t1 = temp_t6_2 + &D_80164A38;
|
||||
temp_t2 = temp_t6_2 + &D_80164A48;
|
||||
*temp_t1 = 0.0f;
|
||||
*temp_t2 = 0.0f;
|
||||
*(&D_80164A90 + temp_t6_2) = 0.0f;
|
||||
*(&D_80164AA0 + temp_t6_2) = 0.0f;
|
||||
temp_t3 = temp_t6_2 + &D_80164A78;
|
||||
*temp_t3 = *(&D_800DDB30 + (D_800DC52C * 4));
|
||||
*(&D_80164A18 + temp_t6_2) = 0;
|
||||
*(&D_80164A08 + temp_t6_2) = 0;
|
||||
*(&D_80164498 + temp_t6_2) = 0.0f;
|
||||
cameras[cameraId].unk24_and_a_half = 0;
|
||||
cameras[cameraId].unk22 = 0.0f;
|
||||
temp_v1 = D_800DC4DC + (cameraId * 0xDD8);
|
||||
cameras[cameraId].unk2C = temp_v1->unk2E;
|
||||
cameras[cameraId].unk28 = temp_v1->unk2E;
|
||||
temp_v0 = D_800DC52C;
|
||||
if (temp_v0 != 0) {
|
||||
if (temp_v0 != 1) {
|
||||
if (temp_v0 != 2) {
|
||||
if (temp_v0 != 3) {
|
||||
|
||||
} else if (gModeSelection == 3) {
|
||||
cameras[cameraId].unk4 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk7 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk8 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk5 = 0x4139999A;
|
||||
cameras[cameraId].unk6 = -0x3DE60000;
|
||||
cameras[cameraId].unk9 = 0x4199999A;
|
||||
} else {
|
||||
cameras[cameraId].unk4 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk7 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk8 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk5 = 0x41100000;
|
||||
cameras[cameraId].unk6 = -0x3DE00000;
|
||||
cameras[cameraId].unk9 = 0x41900000;
|
||||
}
|
||||
} else {
|
||||
goto block_7;
|
||||
}
|
||||
} else if (gModeSelection == 3) {
|
||||
cameras[cameraId].unk4 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk7 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk8 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk5 = 0x4139999A;
|
||||
cameras[cameraId].unk6 = -0x3DE60000;
|
||||
cameras[cameraId].unk9 = 0x4199999A;
|
||||
} else {
|
||||
cameras[cameraId].unk4 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk7 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk8 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk9 = (bitwise s32) 30.0f;
|
||||
cameras[cameraId].unk5 = 0x4119999A;
|
||||
cameras[cameraId].unk6 = -0x3DF40000;
|
||||
}
|
||||
} else {
|
||||
block_7:
|
||||
if (gModeSelection == 3) {
|
||||
cameras[cameraId].unk4 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk7 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk8 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk5 = 0x4139999A;
|
||||
cameras[cameraId].unk6 = -0x3DE60000;
|
||||
cameras[cameraId].unk9 = 0x4199999A;
|
||||
D_80164A88 = 0;
|
||||
} else {
|
||||
cameras[cameraId].unk4 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk7 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk8 = (bitwise s32) 0.0f;
|
||||
cameras[cameraId].unk5 = 0x41180000;
|
||||
cameras[cameraId].unk6 = -0x3DB80000;
|
||||
cameras[cameraId].unk9 = 0x428C0000;
|
||||
}
|
||||
}
|
||||
sp28 = temp_t6_2;
|
||||
sp2C = temp_t6;
|
||||
sp30 = &cameras[cameraId];
|
||||
sp24 = temp_t1;
|
||||
sp20 = temp_t2;
|
||||
sp1C = temp_t3;
|
||||
func_80014DE4(cameraId, temp_t6_2, temp_t6, &cameras[cameraId]);
|
||||
temp_a0 = temp_t6 + &D_80164678;
|
||||
if (*temp_a0 == 0) {
|
||||
if (D_80164A28 == 1) {
|
||||
temp_v0_2 = temp_t6_2 + &D_80150130;
|
||||
*temp_v0_2 = 80.0f;
|
||||
phi_v0 = temp_v0_2;
|
||||
} else {
|
||||
temp_v0_3 = temp_t6_2 + &D_80150130;
|
||||
*temp_v0_3 = 40.0f;
|
||||
phi_v0 = temp_v0_3;
|
||||
}
|
||||
cameras[cameraId].unk30 = *phi_v0;
|
||||
}
|
||||
phi_v1 = *temp_a0;
|
||||
if (*temp_a0 == 1) {
|
||||
temp_v0_4 = temp_t6_2 + &D_80150130;
|
||||
if (D_80164A28 == 1) {
|
||||
*temp_v0_4 = 100.0f;
|
||||
} else {
|
||||
*temp_v0_4 = 60.0f;
|
||||
}
|
||||
cameras[cameraId].unk30 = *temp_v0_4;
|
||||
phi_v1 = *temp_a0;
|
||||
}
|
||||
if (phi_v1 == 2) {
|
||||
temp_v0_5 = temp_t6_2 + &D_80150130;
|
||||
if (D_80164A28 == 1) {
|
||||
*temp_v0_5 = 100.0f;
|
||||
} else {
|
||||
*temp_v0_5 = 60.0f;
|
||||
}
|
||||
cameras[cameraId].unk30 = *temp_v0_5;
|
||||
*temp_t1 = 20.0f;
|
||||
*temp_t2 = 1.5f;
|
||||
*temp_t3 = 1.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
func_802B7F7C(&cameras[cameraId], &cameras[cameraId].unk, &cameras[cameraId].rotX, &cameras[cameraId]);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_8001C4D0/func_8001C4D0.s")
|
||||
#endif
|
||||
@@ -1191,15 +1380,188 @@ GLOBAL_ASM("asm/non_matchings/code_8001C4D0/func_8001EE98.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_8001F394:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_800225CC(f32, f32 *, ?, ?, s32); /* extern */
|
||||
extern ? D_80164498;
|
||||
extern ? D_80164A08;
|
||||
|
||||
Unable to determine jump table for jr instruction at func_8001F394.s line 94.
|
||||
void func_8001F394(Player *player, f32 *arg1) {
|
||||
s32 playerId;
|
||||
s32 sp1C;
|
||||
f32 *temp_a0;
|
||||
f32 *temp_a0_2;
|
||||
f32 *temp_a0_3;
|
||||
f32 *temp_a0_4;
|
||||
f32 *temp_a0_5;
|
||||
f32 *temp_a0_6;
|
||||
f32 temp_f0;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f0_3;
|
||||
f32 temp_f0_4;
|
||||
f32 temp_f0_5;
|
||||
f32 temp_f0_6;
|
||||
s32 *temp_v1;
|
||||
s32 temp_t3;
|
||||
s32 temp_v0;
|
||||
s32 temp_v0_2;
|
||||
s32 temp_v0_3;
|
||||
s32 temp_v0_4;
|
||||
s32 temp_v0_5;
|
||||
f32 *phi_a0;
|
||||
f32 phi_f2;
|
||||
f32 phi_f0;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
if (player == D_800DC4DC) {
|
||||
playerId = 0;
|
||||
}
|
||||
if (player == D_800DC4E0) {
|
||||
playerId = 1;
|
||||
}
|
||||
if (player == D_800DC4E4) {
|
||||
playerId = 2;
|
||||
}
|
||||
if (player == D_800DC4E8) {
|
||||
playerId = 3;
|
||||
}
|
||||
temp_t3 = playerId * 4;
|
||||
temp_v1 = temp_t3 + &D_80164A08;
|
||||
if (*temp_v1 == 0) {
|
||||
if (player->unk_00C & 0x40000) {
|
||||
*temp_v1 = 1;
|
||||
}
|
||||
if ((player->unk_0BC & 0x2000) == 0x2000) {
|
||||
*temp_v1 = 2;
|
||||
}
|
||||
if ((player->unk_0BC & 0x100000) == 0x100000) {
|
||||
*temp_v1 = 3;
|
||||
}
|
||||
if ((player->unk_00C & 0x100) == 0x100) {
|
||||
*temp_v1 = 4;
|
||||
}
|
||||
temp_v0 = player->unk_0BC;
|
||||
if (((temp_v0 & 0x80) == 0x80) || ((temp_v0 & 0x40) == 0x40)) {
|
||||
*temp_v1 = 5;
|
||||
}
|
||||
*(&D_80164498 + temp_t3) = 0.0f;
|
||||
}
|
||||
switch (*temp_v1) {
|
||||
case 1:
|
||||
temp_a0 = temp_t3 + &D_80164498;
|
||||
phi_a0 = temp_a0;
|
||||
if (player->unk_00C & 0x40000) {
|
||||
sp1C = temp_t3;
|
||||
func_800225CC(0.0f, temp_a0, 0x41A00000, 0x3E4CCCCD, temp_t3);
|
||||
} else {
|
||||
temp_f0 = *temp_a0;
|
||||
if (temp_f0 > 1.0f) {
|
||||
*temp_a0 = temp_f0 - 1.0f;
|
||||
} else {
|
||||
*temp_v1 = 0;
|
||||
block_51:
|
||||
*phi_a0 = 0.0f;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if ((player->unk_0BC & 0x2000) == 0x2000) {
|
||||
if (player->unk_0DC != 0) {
|
||||
sp1C = temp_t3;
|
||||
func_800225CC(0.0f, temp_t3 + &D_80164498, 0x41000000, 0x3E4CCCCD, temp_t3);
|
||||
}
|
||||
} else {
|
||||
temp_a0_2 = temp_t3 + &D_80164498;
|
||||
temp_f0_2 = *temp_a0_2;
|
||||
phi_a0 = temp_a0_2;
|
||||
if (temp_f0_2 > 1.0f) {
|
||||
*temp_a0_2 = temp_f0_2 - 2.0f;
|
||||
} else {
|
||||
*temp_v1 = 0;
|
||||
goto block_51;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
temp_v0_2 = player->unk_0BC;
|
||||
temp_a0_3 = temp_t3 + &D_80164498;
|
||||
phi_a0 = temp_a0_3;
|
||||
if (((temp_v0_2 & 0x100000) == 0x100000) && ((temp_v0_2 & 8) == 8)) {
|
||||
sp1C = temp_t3;
|
||||
func_800225CC(0.0f, temp_a0_3, 0x41A00000, 0x3DCCCCCD, temp_t3);
|
||||
} else {
|
||||
temp_f0_3 = *temp_a0_3;
|
||||
if (temp_f0_3 > 1.0f) {
|
||||
*temp_a0_3 = temp_f0_3 - 1.0f;
|
||||
} else {
|
||||
*temp_v1 = 0;
|
||||
goto block_51;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
temp_a0_4 = temp_t3 + &D_80164498;
|
||||
phi_a0 = temp_a0_4;
|
||||
if ((player->unk_00C & 0x100) == 0x100) {
|
||||
sp1C = temp_t3;
|
||||
func_800225CC(0.0f, temp_a0_4, 0x41C80000, 0x3F800000, temp_t3);
|
||||
} else {
|
||||
temp_f0_4 = *temp_a0_4;
|
||||
if (temp_f0_4 > 1.0f) {
|
||||
*temp_a0_4 = temp_f0_4 - 2.0f;
|
||||
} else {
|
||||
*temp_v1 = 0;
|
||||
goto block_51;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
temp_v0_3 = player->unk_0BC;
|
||||
temp_a0_5 = temp_t3 + &D_80164498;
|
||||
phi_a0 = temp_a0_5;
|
||||
if (((temp_v0_3 & 0x80) == 0x80) || ((temp_v0_3 & 0x40) == 0x40)) {
|
||||
sp1C = temp_t3;
|
||||
func_800225CC(0.0f, temp_a0_5, 0x41900000, 0x3E4CCCCD, temp_t3);
|
||||
} else {
|
||||
temp_f0_5 = *temp_a0_5;
|
||||
if (temp_f0_5 > 1.0f) {
|
||||
*temp_a0_5 = temp_f0_5 - 2.0f;
|
||||
} else {
|
||||
*temp_v1 = 0;
|
||||
goto block_51;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
temp_v0_4 = D_800DC52C;
|
||||
if (temp_v0_4 != 0) {
|
||||
if ((temp_v0_4 != 1) && (temp_v0_4 != 2) && (temp_v0_4 != 3)) {
|
||||
phi_f2 = sp34;
|
||||
} else {
|
||||
phi_f0 = func_80014EE4(*arg1, playerId, MIPS2C_ERROR(Read from unset register $a2));
|
||||
goto block_66;
|
||||
}
|
||||
} else {
|
||||
temp_v0_5 = D_80164A28;
|
||||
if (temp_v0_5 == 1) {
|
||||
*(&D_80164498 + (playerId * 4)) = 40.0f;
|
||||
}
|
||||
temp_a0_6 = (playerId * 4) + &D_80164498;
|
||||
if (temp_v0_5 == 2) {
|
||||
temp_f0_6 = *temp_a0_6;
|
||||
if (temp_f0_6 >= 0.0f) {
|
||||
*temp_a0_6 = temp_f0_6 - 0.8;
|
||||
}
|
||||
if (*temp_a0_6 <= 0.0f) {
|
||||
D_80164A28 = 0;
|
||||
*temp_a0_6 = 0.0f;
|
||||
}
|
||||
}
|
||||
phi_f0 = func_80014EE4(*arg1, playerId, MIPS2C_ERROR(Read from unset register $a2));
|
||||
block_66:
|
||||
phi_f2 = phi_f0;
|
||||
}
|
||||
*arg1 = phi_f2;
|
||||
cameras[playerId].unk30 = phi_f2;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_8001C4D0/func_8001F394.s")
|
||||
#endif
|
||||
|
||||
+454
-7
@@ -98,15 +98,462 @@ GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80027DA8.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_80027EDC:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_800C8F80(s32, ?, s8); /* extern */
|
||||
? func_800C9018(s32, ?, s8); /* extern */
|
||||
? func_800CA288(s32, ?, s8); /* extern */
|
||||
? func_800CA2B8(s32, s8); /* extern */
|
||||
? func_800CA2E4(s32, ?, s8); /* extern */
|
||||
? func_800CA30C(s32, s8); /* extern */
|
||||
extern ? D_80164438;
|
||||
extern ? D_80165300;
|
||||
u16 gCurrentCourseId; /* unable to generate initializer */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_80027EDC.s line 369.
|
||||
void func_80027EDC(u16 *arg0, s8 arg1) {
|
||||
s16 *sp1C;
|
||||
s16 *temp_v0_10;
|
||||
s16 *temp_v0_12;
|
||||
s16 *temp_v0_13;
|
||||
s16 *temp_v0_15;
|
||||
s16 *temp_v0_16;
|
||||
s16 *temp_v0_17;
|
||||
s16 *temp_v0_18;
|
||||
s16 *temp_v0_20;
|
||||
s16 *temp_v0_21;
|
||||
s16 *temp_v0_23;
|
||||
s16 *temp_v0_24;
|
||||
s16 *temp_v0_25;
|
||||
s16 *temp_v0_27;
|
||||
s16 *temp_v0_28;
|
||||
s16 *temp_v0_30;
|
||||
s16 *temp_v0_31;
|
||||
s16 *temp_v0_33;
|
||||
s16 *temp_v0_34;
|
||||
s16 *temp_v0_36;
|
||||
s16 *temp_v0_37;
|
||||
s16 *temp_v0_39;
|
||||
s16 *temp_v0_3;
|
||||
s16 *temp_v0_40;
|
||||
s16 *temp_v0_41;
|
||||
s16 *temp_v0_42;
|
||||
s16 *temp_v0_44;
|
||||
s16 *temp_v0_45;
|
||||
s16 *temp_v0_47;
|
||||
s16 *temp_v0_48;
|
||||
s16 *temp_v0_4;
|
||||
s16 *temp_v0_6;
|
||||
s16 *temp_v0_7;
|
||||
s16 *temp_v0_9;
|
||||
s16 temp_a0;
|
||||
s16 temp_v0_11;
|
||||
s16 temp_v0_14;
|
||||
s16 temp_v0_19;
|
||||
s16 temp_v0_22;
|
||||
s16 temp_v0_26;
|
||||
s16 temp_v0_29;
|
||||
s16 temp_v0_2;
|
||||
s16 temp_v0_32;
|
||||
s16 temp_v0_35;
|
||||
s16 temp_v0_38;
|
||||
s16 temp_v0_43;
|
||||
s16 temp_v0_46;
|
||||
s16 temp_v0_5;
|
||||
s16 temp_v0_8;
|
||||
s32 temp_a0_2;
|
||||
s32 temp_t2;
|
||||
s32 temp_t6;
|
||||
s32 temp_v1;
|
||||
s32 temp_v1_10;
|
||||
s32 temp_v1_11;
|
||||
s32 temp_v1_12;
|
||||
s32 temp_v1_13;
|
||||
s32 temp_v1_14;
|
||||
s32 temp_v1_2;
|
||||
s32 temp_v1_3;
|
||||
s32 temp_v1_4;
|
||||
s32 temp_v1_5;
|
||||
s32 temp_v1_6;
|
||||
s32 temp_v1_7;
|
||||
s32 temp_v1_8;
|
||||
s32 temp_v1_9;
|
||||
s8 temp_a2;
|
||||
u16 temp_t5;
|
||||
u16 temp_t9;
|
||||
u16 temp_v0;
|
||||
s16 phi_a0;
|
||||
s8 phi_a2;
|
||||
s16 *phi_v0;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_v0 = *arg0;
|
||||
temp_a2 = arg1;
|
||||
phi_a2 = temp_a2;
|
||||
if (((temp_v0 & 0x4000) == 0x4000) && ((temp_v0 & 0x100) != 0x100)) {
|
||||
temp_t9 = gCurrentCourseId;
|
||||
switch (temp_t9) { /* switch 1 */
|
||||
case 0: /* switch 1 */
|
||||
temp_v1 = temp_a2 * 2;
|
||||
temp_v0_2 = *(&D_80164438 + temp_v1);
|
||||
if ((temp_v0_2 >= 0x19B) && (temp_v0_2 < 0x1B9)) {
|
||||
temp_v0_3 = temp_v1 + &D_80165300;
|
||||
if (*temp_v0_3 != 1) {
|
||||
sp1C = temp_v0_3;
|
||||
func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_4 = temp_v1 + &D_80165300;
|
||||
if (*temp_v0_4 != 0) {
|
||||
sp1C = temp_v0_4;
|
||||
func_800CA2B8(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_4;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 1: /* switch 1 */
|
||||
temp_v1_2 = temp_a2 * 2;
|
||||
temp_v0_5 = *(&D_80164438 + temp_v1_2);
|
||||
if ((temp_v0_5 >= 0xA0) && (temp_v0_5 < 0xB4)) {
|
||||
temp_v0_6 = temp_v1_2 + &D_80165300;
|
||||
if (*temp_v0_6 != 1) {
|
||||
sp1C = temp_v0_6;
|
||||
func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1_2 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_7 = temp_v1_2 + &D_80165300;
|
||||
if (*temp_v0_7 != 0) {
|
||||
sp1C = temp_v0_7;
|
||||
func_800CA2B8(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_7;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 2: /* switch 1 */
|
||||
temp_v1_3 = temp_a2 * 2;
|
||||
temp_v0_8 = *(&D_80164438 + temp_v1_3);
|
||||
if ((temp_v0_8 >= 0x29) && (temp_v0_8 < 0x1D2)) {
|
||||
temp_v0_9 = temp_v1_3 + &D_80165300;
|
||||
if (*temp_v0_9 != 1) {
|
||||
sp1C = temp_v0_9;
|
||||
func_800CA288(temp_a2 & 0xFF, 0x41, temp_a2);
|
||||
}
|
||||
*(temp_v1_3 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_10 = temp_v1_3 + &D_80165300;
|
||||
if (*temp_v0_10 != 0) {
|
||||
sp1C = temp_v0_10;
|
||||
func_800CA2B8(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_10;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 3: /* switch 1 */
|
||||
temp_v1_4 = temp_a2 * 2;
|
||||
temp_v0_11 = *(&D_80164438 + temp_v1_4);
|
||||
if ((temp_v0_11 >= 0x180) && (temp_v0_11 < 0x1E1)) {
|
||||
temp_v0_12 = temp_v1_4 + &D_80165300;
|
||||
if (*temp_v0_12 != 1) {
|
||||
sp1C = temp_v0_12;
|
||||
func_800CA288(temp_a2 & 0xFF, 0x41, temp_a2);
|
||||
}
|
||||
*(temp_v1_4 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_13 = temp_v1_4 + &D_80165300;
|
||||
if (*temp_v0_13 != 0) {
|
||||
sp1C = temp_v0_13;
|
||||
func_800CA2B8(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_13;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 8: /* switch 1 */
|
||||
temp_v1_5 = temp_a2 * 2;
|
||||
temp_v0_14 = *(&D_80164438 + temp_v1_5);
|
||||
if ((temp_v0_14 >= 0x145) && (temp_v0_14 < 0x18B)) {
|
||||
temp_v0_15 = temp_v1_5 + &D_80165300;
|
||||
if (*temp_v0_15 != 1) {
|
||||
sp1C = temp_v0_15;
|
||||
func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1_5 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_16 = temp_v1_5 + &D_80165300;
|
||||
if (*temp_v0_16 != 0) {
|
||||
sp1C = temp_v0_16;
|
||||
func_800CA2B8(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_16;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 10: /* switch 1 */
|
||||
if ((temp_v0 & 0x800) != 0x800) {
|
||||
temp_t6 = temp_a2 * 2;
|
||||
temp_v0_17 = temp_t6 + &D_80165300;
|
||||
if (*temp_v0_17 != 1) {
|
||||
sp1C = temp_v0_17;
|
||||
func_800CA288(temp_a2 & 0xFF, 0x1E, temp_a2);
|
||||
}
|
||||
*(temp_t6 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_18 = (temp_a2 * 2) + &D_80165300;
|
||||
if (*temp_v0_18 != 0) {
|
||||
sp1C = temp_v0_18;
|
||||
func_800CA2B8(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_18;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 12: /* switch 1 */
|
||||
temp_v1_6 = temp_a2 * 2;
|
||||
temp_v0_19 = *(&D_80164438 + temp_v1_6);
|
||||
if ((temp_v0_19 >= 0x11C) && (temp_v0_19 < 0x209)) {
|
||||
temp_v0_20 = temp_v1_6 + &D_80165300;
|
||||
if (*temp_v0_20 != 1) {
|
||||
sp1C = temp_v0_20;
|
||||
func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1_6 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_21 = temp_v1_6 + &D_80165300;
|
||||
if (*temp_v0_21 != 0) {
|
||||
sp1C = temp_v0_21;
|
||||
func_800CA2B8(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_21;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 18: /* switch 1 */
|
||||
temp_v1_7 = temp_a2 * 2;
|
||||
temp_v0_22 = *(&D_80164438 + temp_v1_7);
|
||||
if (((temp_v0_22 >= 0) && (temp_v0_22 < 0x65)) || ((temp_v0_22 >= 0x14A) && (temp_v0_22 < 0x21F))) {
|
||||
temp_v0_25 = temp_v1_7 + &D_80165300;
|
||||
if (*temp_v0_25 != 2) {
|
||||
sp1C = temp_v0_25;
|
||||
func_800C8F80(temp_a2 & 0xFF, 0x170802D, temp_a2);
|
||||
}
|
||||
*(temp_v1_7 + &D_80165300) = 2;
|
||||
return;
|
||||
}
|
||||
if ((temp_v0_22 >= 0x288) && (temp_v0_22 < 0x305)) {
|
||||
temp_v0_23 = temp_v1_7 + &D_80165300;
|
||||
if (*temp_v0_23 != 1) {
|
||||
sp1C = temp_v0_23;
|
||||
func_800CA288(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1_7 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_24 = temp_v1_7 + &D_80165300;
|
||||
temp_a0 = *temp_v0_24;
|
||||
phi_a0 = temp_a0;
|
||||
if (temp_a0 != 0) {
|
||||
if (temp_a0 == 1) {
|
||||
temp_a0_2 = temp_a2 & 0xFF;
|
||||
sp1C = temp_v0_24;
|
||||
arg1 = temp_a2;
|
||||
func_800CA2B8(temp_a0_2, temp_a2);
|
||||
phi_a0 = *temp_v0_24;
|
||||
phi_a2 = arg1;
|
||||
}
|
||||
if (phi_a0 == 2) {
|
||||
sp1C = temp_v1_7 + &D_80165300;
|
||||
func_800C9018(phi_a2 & 0xFF, 0x170802D, phi_a2);
|
||||
}
|
||||
phi_v0 = temp_v1_7 + &D_80165300;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
temp_t5 = gCurrentCourseId;
|
||||
switch (temp_t5) { /* switch 2 */
|
||||
case 0: /* switch 2 */
|
||||
temp_v1_8 = temp_a2 * 2;
|
||||
temp_v0_26 = *(&D_80164438 + temp_v1_8);
|
||||
if ((temp_v0_26 >= 0x19B) && (temp_v0_26 < 0x1B9)) {
|
||||
temp_v0_27 = temp_v1_8 + &D_80165300;
|
||||
if (*temp_v0_27 != 1) {
|
||||
sp1C = temp_v0_27;
|
||||
func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1_8 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_28 = temp_v1_8 + &D_80165300;
|
||||
if (*temp_v0_28 != 0) {
|
||||
sp1C = temp_v0_28;
|
||||
func_800CA30C(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_28;
|
||||
block_127:
|
||||
*phi_v0 = 0;
|
||||
}
|
||||
default: /* switch 2 */
|
||||
default: /* switch 1 */
|
||||
return;
|
||||
case 1: /* switch 2 */
|
||||
temp_v1_9 = temp_a2 * 2;
|
||||
temp_v0_29 = *(&D_80164438 + temp_v1_9);
|
||||
if ((temp_v0_29 >= 0xA0) && (temp_v0_29 < 0xB4)) {
|
||||
temp_v0_30 = temp_v1_9 + &D_80165300;
|
||||
if (*temp_v0_30 != 1) {
|
||||
sp1C = temp_v0_30;
|
||||
func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1_9 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_31 = temp_v1_9 + &D_80165300;
|
||||
if (*temp_v0_31 != 0) {
|
||||
sp1C = temp_v0_31;
|
||||
func_800CA30C(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_31;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 2: /* switch 2 */
|
||||
temp_v1_10 = temp_a2 * 2;
|
||||
temp_v0_32 = *(&D_80164438 + temp_v1_10);
|
||||
if ((temp_v0_32 >= 0x29) && (temp_v0_32 < 0x1D2)) {
|
||||
temp_v0_33 = temp_v1_10 + &D_80165300;
|
||||
if (*temp_v0_33 != 1) {
|
||||
sp1C = temp_v0_33;
|
||||
func_800CA2E4(temp_a2 & 0xFF, 0x41, temp_a2);
|
||||
}
|
||||
*(temp_v1_10 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_34 = temp_v1_10 + &D_80165300;
|
||||
if (*temp_v0_34 != 0) {
|
||||
sp1C = temp_v0_34;
|
||||
func_800CA30C(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_34;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 3: /* switch 2 */
|
||||
temp_v1_11 = temp_a2 * 2;
|
||||
temp_v0_35 = *(&D_80164438 + temp_v1_11);
|
||||
if ((temp_v0_35 >= 0x180) && (temp_v0_35 < 0x1E1)) {
|
||||
temp_v0_36 = temp_v1_11 + &D_80165300;
|
||||
if (*temp_v0_36 != 1) {
|
||||
sp1C = temp_v0_36;
|
||||
func_800CA2E4(temp_a2 & 0xFF, 0x41, temp_a2);
|
||||
}
|
||||
*(temp_v1_11 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_37 = temp_v1_11 + &D_80165300;
|
||||
if (*temp_v0_37 != 0) {
|
||||
sp1C = temp_v0_37;
|
||||
func_800CA30C(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_37;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 8: /* switch 2 */
|
||||
temp_v1_12 = temp_a2 * 2;
|
||||
temp_v0_38 = *(&D_80164438 + temp_v1_12);
|
||||
if ((temp_v0_38 >= 0x145) && (temp_v0_38 < 0x18B)) {
|
||||
temp_v0_39 = temp_v1_12 + &D_80165300;
|
||||
if (*temp_v0_39 != 1) {
|
||||
sp1C = temp_v0_39;
|
||||
func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1_12 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_40 = temp_v1_12 + &D_80165300;
|
||||
if (*temp_v0_40 != 0) {
|
||||
sp1C = temp_v0_40;
|
||||
func_800CA30C(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_40;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 10: /* switch 2 */
|
||||
if ((temp_v0 & 0x800) != 0x800) {
|
||||
temp_t2 = temp_a2 * 2;
|
||||
temp_v0_41 = temp_t2 + &D_80165300;
|
||||
if (*temp_v0_41 != 1) {
|
||||
sp1C = temp_v0_41;
|
||||
func_800CA2E4(temp_a2 & 0xFF, 0x1E, temp_a2);
|
||||
}
|
||||
*(temp_t2 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_42 = (temp_a2 * 2) + &D_80165300;
|
||||
if (*temp_v0_42 != 0) {
|
||||
sp1C = temp_v0_42;
|
||||
func_800CA30C(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_42;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 12: /* switch 2 */
|
||||
temp_v1_13 = temp_a2 * 2;
|
||||
temp_v0_43 = *(&D_80164438 + temp_v1_13);
|
||||
if ((temp_v0_43 >= 0x11C) && (temp_v0_43 < 0x209)) {
|
||||
temp_v0_44 = temp_v1_13 + &D_80165300;
|
||||
if (*temp_v0_44 != 1) {
|
||||
sp1C = temp_v0_44;
|
||||
func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1_13 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_45 = temp_v1_13 + &D_80165300;
|
||||
if (*temp_v0_45 != 0) {
|
||||
sp1C = temp_v0_45;
|
||||
func_800CA30C(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_45;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 18: /* switch 2 */
|
||||
temp_v1_14 = temp_a2 * 2;
|
||||
temp_v0_46 = *(&D_80164438 + temp_v1_14);
|
||||
if ((temp_v0_46 >= 0x288) && (temp_v0_46 < 0x305)) {
|
||||
temp_v0_47 = temp_v1_14 + &D_80165300;
|
||||
if (*temp_v0_47 != 1) {
|
||||
sp1C = temp_v0_47;
|
||||
func_800CA2E4(temp_a2 & 0xFF, 0x55, temp_a2);
|
||||
}
|
||||
*(temp_v1_14 + &D_80165300) = 1;
|
||||
return;
|
||||
}
|
||||
temp_v0_48 = temp_v1_14 + &D_80165300;
|
||||
if (*temp_v0_48 != 0) {
|
||||
sp1C = temp_v0_48;
|
||||
func_800CA30C(temp_a2 & 0xFF, temp_a2);
|
||||
phi_v0 = temp_v0_48;
|
||||
goto block_127;
|
||||
}
|
||||
/* Duplicate return node #128. Try simplifying control flow for better match */
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80027D00/func_80027EDC.s")
|
||||
#endif
|
||||
|
||||
+53
-7
@@ -240,15 +240,61 @@ GLOBAL_ASM("asm/non_matchings/code_8003DC40/func_8003F138.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_8003F46C:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_8002A5F4(void *, f32, ?, f32); /* extern */
|
||||
? func_8003E048(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
|
||||
? func_8003E37C(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
|
||||
? func_8003E6EC(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
|
||||
? func_8003E9EC(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
|
||||
? func_8003EE2C(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
|
||||
? func_8003F138(Player *, void *, f32 *, f32 *, f32 *, f32 *); /* extern */
|
||||
u16 gCurrentCourseId; /* unable to generate initializer */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_8003F46C.s line 77.
|
||||
void func_8003F46C(Player *arg0, void *arg1, s32 *arg4, f32 *arg5, f32 *arg6, f32 *arg7, f32 *arg6, f32 *arg7) {
|
||||
u16 temp_t9;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
arg1->unk0 = -arg0->unk_140;
|
||||
arg1->unk4 = -arg0->unk_144;
|
||||
arg1->unk8 = -arg0->unk_148;
|
||||
if ((arg0->unk_144 < 0.0f) && ((arg0->unk_0CA & 2) == 0)) {
|
||||
*arg7 += arg1->unk0 * arg0->unk_124 * 1.0f;
|
||||
*arg6 += arg1->unk4 * arg0->unk_124 * 1.0f;
|
||||
*arg7 += arg1->unk8 * arg0->unk_124 * 1.0f;
|
||||
func_8002A5F4(arg1, *arg6, 0x3F99999A, 0.0f);
|
||||
arg0->kartHopJerk = 0.0f;
|
||||
arg0->kartHopAcceleration = 0.0f;
|
||||
arg0->kartHopVelocity = 0.0f;
|
||||
return;
|
||||
}
|
||||
temp_t9 = gCurrentCourseId;
|
||||
switch (temp_t9) {
|
||||
case 0:
|
||||
func_8003E048(arg0, arg1, arg6, arg7, arg6, arg7);
|
||||
break;
|
||||
case 1:
|
||||
case 6:
|
||||
func_8003E37C(arg0, arg1, arg6, arg7, arg6, arg7);
|
||||
break;
|
||||
case 2:
|
||||
func_8003E6EC(arg0, arg1, arg6, arg7, arg6, arg7);
|
||||
break;
|
||||
case 8:
|
||||
func_8003E9EC(arg0, arg1, arg6, arg7, arg6, arg7);
|
||||
break;
|
||||
case 14:
|
||||
func_8003EE2C(arg0, arg1, arg6, arg7, arg6, arg7);
|
||||
break;
|
||||
case 18:
|
||||
func_8003F138(arg0, arg1, arg6, arg7, arg6, arg7);
|
||||
break;
|
||||
default:
|
||||
func_8003E048(arg0, arg1, arg6, arg7, arg6, arg7);
|
||||
break;
|
||||
}
|
||||
if (arg0->unk_0BC & 0x10000) {
|
||||
arg0->unk_DAC = 0.5f;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_8003DC40/func_8003F46C.s")
|
||||
#endif
|
||||
|
||||
+177
-14
@@ -6185,15 +6185,105 @@ GLOBAL_ASM("asm/non_matchings/code_800431B0/func_800507D8.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_800508C0:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_8004C024(s16, ?, s16, s32, s32, s32, s32); /* extern */
|
||||
? func_8004C148(?, s16, s16, s32, s32, s32, s32); /* extern */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_800508C0.s line 125.
|
||||
void func_800508C0(void) {
|
||||
s32 sp54;
|
||||
s32 sp50;
|
||||
u32 sp4C;
|
||||
s32 sp48;
|
||||
u16 sp42;
|
||||
u16 sp40;
|
||||
u16 sp3E;
|
||||
s32 temp_v1;
|
||||
s16 phi_s0;
|
||||
u16 phi_s0_2;
|
||||
s32 phi_s1;
|
||||
s32 phi_s2;
|
||||
u16 phi_s0_3;
|
||||
s32 phi_s1_2;
|
||||
s32 phi_s2_2;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
if (gModeSelection == 1) {
|
||||
phi_s0 = D_80164378;
|
||||
} else {
|
||||
phi_s0 = D_80164360;
|
||||
}
|
||||
temp_v1 = lapCount[phi_s0];
|
||||
sp4C = func_80050644(phi_s0 & 0xFFFF, &sp54, &sp50);
|
||||
if (temp_v1 > 0) {
|
||||
if (temp_v1 == 1) {
|
||||
phi_s0_2 = 0;
|
||||
phi_s1 = 0;
|
||||
phi_s2 = 0xFF;
|
||||
} else {
|
||||
if (temp_v1 == 2) {
|
||||
phi_s1 = 0xFF;
|
||||
} else {
|
||||
phi_s1 = 0;
|
||||
}
|
||||
phi_s0_2 = 0xFF;
|
||||
phi_s2 = 0;
|
||||
}
|
||||
sp48 = temp_v1;
|
||||
func_8004C024(0x20, 0x12, 0x104, phi_s0_2 & 0xFFFF, phi_s1, phi_s2, 0xFF);
|
||||
func_8004C148(0x124, 0x12, 0xCC, phi_s0_2 & 0xFFFF, phi_s1, phi_s2, 0xFF);
|
||||
func_8004C024(0x20, 0xDE, 0x104, phi_s0_2 & 0xFFFF, phi_s1, phi_s2, 0xFF);
|
||||
func_8004C148(0x20, 0x12, 0xCC, phi_s0_2 & 0xFFFF, phi_s1, phi_s2, 0xFF);
|
||||
sp42 = phi_s0_2;
|
||||
sp40 = phi_s1;
|
||||
sp3E = phi_s2;
|
||||
}
|
||||
phi_s0_3 = sp42;
|
||||
phi_s1_2 = sp40;
|
||||
phi_s2_2 = sp3E;
|
||||
if ((lapCount[phi_s0] >= 0) && (lapCount[phi_s0] < 3)) {
|
||||
if (lapCount[phi_s0] != 0) {
|
||||
if (lapCount[phi_s0] != 1) {
|
||||
if (lapCount[phi_s0] != 2) {
|
||||
|
||||
} else {
|
||||
phi_s1_2 = 0;
|
||||
goto block_20;
|
||||
}
|
||||
} else {
|
||||
phi_s1_2 = 0xFF;
|
||||
block_20:
|
||||
phi_s0_3 = 0xFF;
|
||||
phi_s2_2 = 0;
|
||||
}
|
||||
} else {
|
||||
phi_s0_3 = 0;
|
||||
phi_s1_2 = 0;
|
||||
phi_s2_2 = 0xFF;
|
||||
}
|
||||
switch (sp4C) {
|
||||
case 1:
|
||||
func_8004C024(0x20, 0x12, sp54, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
return;
|
||||
case 2:
|
||||
func_8004C024(0x20, 0x12, 0x104, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
func_8004C148(0x124, 0x12, sp50, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
return;
|
||||
case 3:
|
||||
func_8004C024(0x20, 0x12, 0x104, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
func_8004C148(0x124, 0x12, 0xCC, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
func_8004C024(sp54 + 0x20, 0xDE, 0x104 - sp54, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
return;
|
||||
case 4:
|
||||
func_8004C024(0x20, 0x12, 0x104, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
func_8004C148(0x124, 0x12, 0xCC, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
func_8004C024(0x20, 0xDE, 0x104, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
func_8004C148(0x20, sp50 + 0x12, 0xCC - sp50, phi_s0_3 & 0xFFFF, phi_s1_2, phi_s2_2, 0xFF);
|
||||
/* Duplicate return node #27. Try simplifying control flow for better match */
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
default:
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_800431B0/func_800508C0.s")
|
||||
#endif
|
||||
@@ -7765,15 +7855,88 @@ GLOBAL_ASM("asm/non_matchings/code_800431B0/func_800534A4.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_800534E8:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
extern ? D_80165CBC;
|
||||
static ? D_800E4638; /* unable to generate initializer; const */
|
||||
static ? D_800E4640; /* unable to generate initializer; const */
|
||||
static ? D_800E4650; /* unable to generate initializer; const */
|
||||
static ? D_800E4658; /* unable to generate initializer; const */
|
||||
static ? D_800E4668; /* unable to generate initializer; const */
|
||||
static ? D_800E4670; /* unable to generate initializer; const */
|
||||
static ? D_800E4680; /* unable to generate initializer; const */
|
||||
static ? D_800E4688; /* unable to generate initializer; const */
|
||||
static ? D_800E4698; /* unable to generate initializer; const */
|
||||
static ? D_800E46A0; /* unable to generate initializer; const */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_800534E8.s line 14.
|
||||
void func_800534E8(s32 arg0) {
|
||||
Gfx *temp_v0;
|
||||
Gfx *temp_v0_10;
|
||||
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;
|
||||
u16 temp_t7;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_t7 = *(&D_80165CBC + (arg0 * 0xE0));
|
||||
switch (temp_t7) {
|
||||
case 0:
|
||||
temp_v0 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0 + 8;
|
||||
temp_v0->words.w0 = 0x3860010;
|
||||
temp_v0->words.w1 = &D_800E4640;
|
||||
temp_v0_2 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0_2 + 8;
|
||||
temp_v0_2->words.w0 = 0x3880010;
|
||||
temp_v0_2->words.w1 = &D_800E4638;
|
||||
return;
|
||||
case 1:
|
||||
temp_v0_3 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0_3 + 8;
|
||||
temp_v0_3->words.w0 = 0x3860010;
|
||||
temp_v0_3->words.w1 = &D_800E4658;
|
||||
temp_v0_4 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0_4 + 8;
|
||||
temp_v0_4->words.w0 = 0x3880010;
|
||||
temp_v0_4->words.w1 = &D_800E4650;
|
||||
return;
|
||||
case 2:
|
||||
temp_v0_5 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0_5 + 8;
|
||||
temp_v0_5->words.w0 = 0x3860010;
|
||||
temp_v0_5->words.w1 = &D_800E4670;
|
||||
temp_v0_6 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0_6 + 8;
|
||||
temp_v0_6->words.w0 = 0x3880010;
|
||||
temp_v0_6->words.w1 = &D_800E4668;
|
||||
return;
|
||||
case 3:
|
||||
temp_v0_7 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0_7 + 8;
|
||||
temp_v0_7->words.w0 = 0x3860010;
|
||||
temp_v0_7->words.w1 = &D_800E4688;
|
||||
temp_v0_8 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0_8 + 8;
|
||||
temp_v0_8->words.w0 = 0x3880010;
|
||||
temp_v0_8->words.w1 = &D_800E4680;
|
||||
return;
|
||||
case 4:
|
||||
temp_v0_9 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0_9 + 8;
|
||||
temp_v0_9->words.w0 = 0x3860010;
|
||||
temp_v0_9->words.w1 = &D_800E46A0;
|
||||
temp_v0_10 = gDisplayListHead;
|
||||
gDisplayListHead = temp_v0_10 + 8;
|
||||
temp_v0_10->words.w0 = 0x3880010;
|
||||
temp_v0_10->words.w1 = &D_800E4698;
|
||||
/* fallthrough */
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_800431B0/func_800534E8.s")
|
||||
#endif
|
||||
|
||||
+3103
-140
File diff suppressed because it is too large
Load Diff
+861
-21
@@ -338,15 +338,235 @@ GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_8006EF60.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_8006F008:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_8006EEE8(s16); /* extern */
|
||||
s32 func_802A84F4(? *, ?, ?, s16); /* extern */
|
||||
extern ? D_0F0D0E50;
|
||||
extern ? gTextureExhaust0;
|
||||
extern ? gTextureExhaust1;
|
||||
extern ? gTextureExhaust2;
|
||||
extern ? gTextureExhaust3;
|
||||
extern ? gTextureExhaust4;
|
||||
extern ? gTextureExhaust5;
|
||||
s16 gCurrentCourseId; /* unable to generate initializer */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_8006F008.s line 57.
|
||||
void func_8006F008(void) {
|
||||
s16 temp_a0;
|
||||
s8 temp_v0;
|
||||
u32 phi_a0;
|
||||
s16 phi_t9;
|
||||
s16 *phi_v1;
|
||||
s16 *phi_t0;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
D_801655C8 = 0;
|
||||
D_8018D01C = 1.0f;
|
||||
if (gIsMirrorMode != 0) {
|
||||
D_8018D01C = -1.0f;
|
||||
}
|
||||
D_8018D2C0 = 0x101;
|
||||
D_8018D2D8 = 0xAA;
|
||||
D_8018D300 = 0xFF;
|
||||
D_8018D308 = 0xFF;
|
||||
temp_a0 = gCurrentCourseId;
|
||||
D_8018D310 = 0xFF;
|
||||
D_8018D318 = 0xFF;
|
||||
phi_a0 = temp_a0;
|
||||
if (temp_a0 < 0x14) {
|
||||
func_8006EEE8(temp_a0);
|
||||
phi_a0 = gCurrentCourseId;
|
||||
}
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
switch (phi_a0) {
|
||||
case 0:
|
||||
D_8018D220 = func_802A84F4(&gTextureExhaust5, 0x443, 0x1000, 0xFF);
|
||||
D_8018D2A0 = 0.022f;
|
||||
D_8018D2E0 = 6;
|
||||
D_8018D2E8 = 0x1C;
|
||||
D_8018D2C0 = 0x104;
|
||||
D_8018D2D8 = 0xAA;
|
||||
D_80165718 = 0;
|
||||
D_80165720 = 5;
|
||||
D_80165728 = -0xF0;
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
break;
|
||||
case 1:
|
||||
D_8018D2A0 = 0.022f;
|
||||
D_8018D2C0 = 0x109;
|
||||
D_8018D2E0 = 0x13;
|
||||
phi_t9 = 0x25;
|
||||
block_26:
|
||||
D_8018D2E8 = phi_t9;
|
||||
break;
|
||||
case 2:
|
||||
D_8018D2C0 = 0x109;
|
||||
D_8018D2A0 = 0.0174f;
|
||||
D_8018D2E0 = 0xC;
|
||||
D_8018D2E8 = 0x30;
|
||||
break;
|
||||
case 3:
|
||||
D_80165880 = func_802A84F4(&D_0F0D0E50, 0x4CC2, 0xD980, 0xFF);
|
||||
D_8018D2A0 = 0.016f;
|
||||
D_8018D2C0 = 0x106;
|
||||
D_8018D2E0 = 0x37;
|
||||
D_8018D2E8 = 0x27;
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
break;
|
||||
case 4:
|
||||
D_8018D220 = func_802A84F4(&gTextureExhaust0, 0x479, 0xC00, 0xFF);
|
||||
D_8018D2A0 = 0.018f;
|
||||
D_8018D2E0 = 0x3D;
|
||||
D_8018D2E8 = 0x26;
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
break;
|
||||
case 5:
|
||||
D_8018D2C0 = 0x106;
|
||||
D_8018D2A0 = 0.016f;
|
||||
D_8018D2E0 = 0x24;
|
||||
D_8018D2E8 = 0x28;
|
||||
D_8018D300 = 0x48;
|
||||
D_8018D308 = 0x64;
|
||||
D_8018D310 = 0xFF;
|
||||
break;
|
||||
case 6:
|
||||
D_8018D220 = func_802A84F4(&gTextureExhaust3, 0x3C8, 0x1000, 0xFF);
|
||||
D_8018D2A0 = 0.014f;
|
||||
D_8018D2C0 = 0x10C;
|
||||
D_8018D2E0 = 0x28;
|
||||
D_8018D2E8 = 0x15;
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
break;
|
||||
case 7:
|
||||
D_8018D220 = func_802A84F4(&gTextureExhaust4, 0x3F8, 0x1000, 0xFF);
|
||||
D_8018D2C0 = 0x106;
|
||||
D_8018D2A0 = 0.014f;
|
||||
D_8018D2E0 = 0x25;
|
||||
D_8018D2E8 = 0x32;
|
||||
D_80165718 = -0x40;
|
||||
D_80165720 = 5;
|
||||
D_80165728 = -0x14A;
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
break;
|
||||
case 8:
|
||||
D_8018D220 = func_802A84F4(&gTextureExhaust2, 0x4F4, 0xC00, 0xFF);
|
||||
D_8018D2A0 = 0.0155f;
|
||||
D_8018D2C0 = 0x10F;
|
||||
D_8018D2E0 = 0x2D;
|
||||
D_8018D2E8 = 0x3C;
|
||||
D_80165718 = -0x8C;
|
||||
D_80165720 = -0x2C;
|
||||
D_80165728 = -0xD7;
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
break;
|
||||
case 9:
|
||||
D_8018D220 = func_802A84F4(&gTextureExhaust0, 0x479, 0xC00, 0xFF);
|
||||
D_8018D2A0 = 0.0155f;
|
||||
D_8018D2C0 = 0x10F;
|
||||
D_8018D2E0 = 0x12;
|
||||
D_8018D2E8 = 0x24;
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
break;
|
||||
case 10:
|
||||
D_8018D2A0 = 0.013f;
|
||||
D_8018D2C0 = 0xFC;
|
||||
D_8018D2E0 = 0x39;
|
||||
D_8018D2E8 = 0x2C;
|
||||
break;
|
||||
case 11:
|
||||
D_8018D2C0 = 0x107;
|
||||
D_8018D2D8 = 0xA5;
|
||||
D_8018D220 = func_802A84F4(&gTextureExhaust5, 0x443, 0x1000, 0xFF);
|
||||
D_8018D2A0 = 0.015f;
|
||||
D_8018D2E0 = 0x37;
|
||||
D_8018D2E8 = 0x1B;
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
break;
|
||||
case 12:
|
||||
D_8018D220 = func_802A84F4(&gTextureExhaust1, 0x485, 0xC00, 0xFF);
|
||||
D_8018D2A0 = 0.015f;
|
||||
D_8018D2C0 = 0x106;
|
||||
D_8018D2E0 = 0x34;
|
||||
D_8018D2E8 = 0x21;
|
||||
D_8018D300 = 0x48;
|
||||
D_8018D308 = 0x64;
|
||||
D_8018D310 = 0xFF;
|
||||
phi_v1 = &D_8018D2C0;
|
||||
phi_t0 = &D_8018D2D8;
|
||||
break;
|
||||
case 13:
|
||||
D_8018D2A0 = 0.0103f;
|
||||
D_8018D2C0 = 0x105;
|
||||
D_8018D2D8 = 0xA6;
|
||||
D_8018D2E0 = 0x27;
|
||||
D_8018D2E8 = 0x37;
|
||||
break;
|
||||
case 14:
|
||||
D_8018D2A0 = 0.0155f;
|
||||
D_8018D2C0 = 0x106;
|
||||
D_8018D2E0 = 0x35;
|
||||
D_8018D2E8 = 0x23;
|
||||
break;
|
||||
case 15:
|
||||
D_8018D2A0 = 0.0335f;
|
||||
D_8018D2E0 = 0x20;
|
||||
D_8018D2E8 = 0x20;
|
||||
break;
|
||||
case 16:
|
||||
D_8018D2A0 = 0.0445f;
|
||||
D_8018D2E0 = 0x20;
|
||||
D_8018D2E8 = 0x20;
|
||||
break;
|
||||
case 17:
|
||||
D_8018D2A0 = 0.0285f;
|
||||
D_8018D2E0 = 0x20;
|
||||
D_8018D2E8 = 0x20;
|
||||
break;
|
||||
case 18:
|
||||
D_8018D2A0 = 0.0155f;
|
||||
D_8018D2C0 = 0xFF;
|
||||
D_8018D2E0 = 0x1D;
|
||||
D_8018D2E8 = 0x2F;
|
||||
break;
|
||||
case 19:
|
||||
D_8018D2A0 = 0.0257f;
|
||||
D_8018D2E0 = 0x20;
|
||||
phi_t9 = 0x1F;
|
||||
goto block_26;
|
||||
}
|
||||
if (gIsMirrorMode != 0) {
|
||||
D_8018D2E0 = D_8018D2B0 - D_8018D2E0;
|
||||
}
|
||||
temp_v0 = D_8018EDF3;
|
||||
if (temp_v0 == 4) {
|
||||
phi_v1->unk0 = 0xA0;
|
||||
phi_t0->unk0 = 0x78;
|
||||
return;
|
||||
}
|
||||
if (temp_v0 == 3) {
|
||||
phi_v1->unk0 = 0xEB;
|
||||
phi_t0->unk0 = 0xAF;
|
||||
return;
|
||||
}
|
||||
if (temp_v0 == 2) {
|
||||
if (gCurrentCourseId != 0xA) {
|
||||
phi_v1->unk2 = 0x109;
|
||||
phi_v1->unk0 = phi_v1->unk2;
|
||||
} else {
|
||||
phi_v1->unk2 = 0xFF;
|
||||
phi_v1->unk0 = phi_v1->unk2;
|
||||
}
|
||||
phi_t0->unk0 = 0x41;
|
||||
phi_t0->unk2 = 0xB4;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_8006F008.s")
|
||||
#endif
|
||||
@@ -987,15 +1207,88 @@ GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_800704A0.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_8007055C:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? find_unused_obj_index(void *); /* extern */
|
||||
? func_80070328(? *); /* extern */
|
||||
? func_800704A0(? *); /* extern */
|
||||
? func_8008C23C(); /* extern */
|
||||
extern ? D_8018CC80;
|
||||
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 */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_8007055C.s line 17.
|
||||
void func_8007055C(void) {
|
||||
s32 temp_s1;
|
||||
u16 temp_t6;
|
||||
s32 phi_s4;
|
||||
s32 phi_s0;
|
||||
s32 phi_s1;
|
||||
s32 phi_s1_2;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_t6 = gCurrentCourseId;
|
||||
switch (temp_t6) {
|
||||
case 0:
|
||||
func_80070328(&D_800E6C10);
|
||||
break;
|
||||
case 4:
|
||||
func_80070328(&D_800E6AA8);
|
||||
break;
|
||||
case 5:
|
||||
phi_s4 = 0x19;
|
||||
phi_s0 = 0;
|
||||
if (D_8018EDF3 == 1) {
|
||||
phi_s4 = 0x32;
|
||||
}
|
||||
phi_s1 = 0;
|
||||
phi_s1_2 = 0;
|
||||
if (phi_s4 > 0) {
|
||||
do {
|
||||
find_unused_obj_index(&D_8018CC80 + (D_8018D1F8 * 4) + phi_s0);
|
||||
temp_s1 = phi_s1 + 1;
|
||||
phi_s0 += 4;
|
||||
phi_s1 = temp_s1;
|
||||
phi_s1_2 = temp_s1;
|
||||
} while (temp_s1 != phi_s4);
|
||||
}
|
||||
D_8018D1F8 += phi_s1_2;
|
||||
D_8018D1F0 = phi_s1_2;
|
||||
break;
|
||||
case 6:
|
||||
func_80070328(&D_800E6B00);
|
||||
break;
|
||||
case 7:
|
||||
func_80070328(&D_800E6B38);
|
||||
break;
|
||||
case 8:
|
||||
func_80070328(&D_800E6A38);
|
||||
break;
|
||||
case 9:
|
||||
func_80070328(&D_800E6AA8);
|
||||
break;
|
||||
case 10:
|
||||
func_800704A0(&D_800E6C80);
|
||||
break;
|
||||
case 11:
|
||||
func_80070328(&D_800E6C10);
|
||||
break;
|
||||
case 12:
|
||||
func_80070328(&D_800E6BA8);
|
||||
break;
|
||||
case 13:
|
||||
func_800704A0(&D_800E6C80);
|
||||
break;
|
||||
case 14:
|
||||
func_800704A0(&D_800E6DE0);
|
||||
break;
|
||||
}
|
||||
func_8008C23C();
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_8007055C.s")
|
||||
#endif
|
||||
@@ -1024,15 +1317,562 @@ GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_80070714.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_80070780:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? find_unused_obj_index(s32 *); /* extern */
|
||||
? func_80070714(); /* extern */
|
||||
? func_80071F6C(? *); /* extern */
|
||||
? func_800723A4(s32, ?, s16 *, ? **); /* extern */
|
||||
? func_80073444(s32, ? *, ? *, ?, s32); /* extern */
|
||||
? func_800770F0(s32); /* extern */
|
||||
? func_800887C0(s32); /* extern */
|
||||
extern ? D_06007BB8;
|
||||
extern ? D_06007DB8;
|
||||
extern ? *D_80165758;
|
||||
extern ? D_80165C18;
|
||||
extern ? D_80183EB0;
|
||||
extern ? D_80183EC8;
|
||||
extern ? D_80183EDC;
|
||||
extern ? D_80183F34;
|
||||
extern ? D_80183F3C;
|
||||
extern ? D_80183F50;
|
||||
extern ? D_8018C030;
|
||||
extern ? D_8018C0B0;
|
||||
extern ? D_8018C278;
|
||||
extern ? D_8018C404;
|
||||
extern ? D_8018C5F0;
|
||||
extern ? D_8018C6B0;
|
||||
extern ? D_8018D1A0;
|
||||
extern ? D_8018D1B3;
|
||||
extern ? D_8018D1C4;
|
||||
static ? D_800E5728; /* unable to generate initializer; const */
|
||||
static ? D_800E5854; /* unable to generate initializer; const */
|
||||
static ? D_800E5894; /* unable to generate initializer; const */
|
||||
static ? D_800E58EC; /* unable to generate initializer; const */
|
||||
static ? D_800E5E14; /* unable to generate initializer; const */
|
||||
static ? D_800E5EE6; /* unable to generate initializer; const */
|
||||
static u16 D_800E5EE8; /* type too large by 2; unable to generate initializer; const */
|
||||
static ? D_800E5FD0; /* unable to generate initializer; const */
|
||||
static ? D_800E6360; /* unable to generate initializer; const */
|
||||
static ? D_800E641A; /* unable to generate initializer; const */
|
||||
u16 gCurrentCourseId; /* unable to generate initializer */
|
||||
u16 D_800E5E8C[0x2D]; /* unable to generate initializer; const */
|
||||
u16 D_800E5F80[0x28]; /* unable to generate initializer; const */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_80070780.s line 19.
|
||||
void func_80070780(void) {
|
||||
void *sp4C;
|
||||
u16 *sp48;
|
||||
u16 *sp44;
|
||||
? *temp_s0_4;
|
||||
? *temp_s2_2;
|
||||
f32 temp_f0;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f0_3;
|
||||
f32 temp_f0_4;
|
||||
f32 temp_f0_5;
|
||||
f32 temp_f2;
|
||||
f32 temp_f2_2;
|
||||
s32 *temp_s0_15;
|
||||
s32 *temp_s0_16;
|
||||
s32 *temp_s0_17;
|
||||
s32 *temp_s1;
|
||||
s32 *temp_s1_2;
|
||||
s32 *temp_s1_3;
|
||||
s32 *temp_s1_4;
|
||||
s32 *temp_s1_5;
|
||||
s32 *temp_s2;
|
||||
s32 *temp_s2_3;
|
||||
s32 temp_s0;
|
||||
s32 temp_s0_10;
|
||||
s32 temp_s0_14;
|
||||
s32 temp_s0_2;
|
||||
s32 temp_s0_3;
|
||||
s32 temp_s0_5;
|
||||
s32 temp_s0_6;
|
||||
s32 temp_s0_7;
|
||||
s32 temp_s0_8;
|
||||
s32 temp_s0_9;
|
||||
s32 temp_s3;
|
||||
s32 temp_s3_2;
|
||||
s32 temp_s3_3;
|
||||
s32 temp_s3_4;
|
||||
s32 temp_s3_5;
|
||||
s32 temp_s3_6;
|
||||
s32 temp_v0;
|
||||
s32 temp_v0_11;
|
||||
s8 *temp_s0_11;
|
||||
s8 *temp_s0_12;
|
||||
s8 *temp_s0_13;
|
||||
s8 temp_v0_10;
|
||||
u16 *temp_v1_2;
|
||||
u16 *temp_v1_3;
|
||||
u16 *temp_v1_4;
|
||||
u16 temp_t6;
|
||||
void *temp_v0_12;
|
||||
void *temp_v0_2;
|
||||
void *temp_v0_3;
|
||||
void *temp_v0_4;
|
||||
void *temp_v0_5;
|
||||
void *temp_v0_6;
|
||||
void *temp_v0_7;
|
||||
void *temp_v0_8;
|
||||
void *temp_v0_9;
|
||||
void *temp_v1;
|
||||
s32 *phi_s0;
|
||||
s32 phi_s3;
|
||||
s32 *phi_s1;
|
||||
s32 phi_s2;
|
||||
s32 phi_s3_2;
|
||||
s32 *phi_s2_2;
|
||||
? *phi_s1_2;
|
||||
s32 phi_s3_3;
|
||||
? *phi_s0_2;
|
||||
s32 *phi_s1_3;
|
||||
u16 *phi_v1;
|
||||
s32 *phi_s2_3;
|
||||
? *phi_s1_4;
|
||||
s32 *phi_s1_5;
|
||||
u16 *phi_v1_2;
|
||||
s32 *phi_s2_4;
|
||||
s32 *phi_s1_6;
|
||||
u16 *phi_v1_3;
|
||||
s32 *phi_s1_7;
|
||||
s32 *phi_s2_5;
|
||||
s32 *phi_s0_3;
|
||||
s32 phi_s3_4;
|
||||
s32 *phi_s0_4;
|
||||
s32 phi_s3_5;
|
||||
s8 *phi_s0_5;
|
||||
s32 *phi_s1_8;
|
||||
s8 *phi_s0_6;
|
||||
s32 *phi_s1_9;
|
||||
s8 *phi_s0_7;
|
||||
s32 *phi_s1_10;
|
||||
s32 *phi_s1_11;
|
||||
? *phi_s2_6;
|
||||
s32 *phi_s0_8;
|
||||
s32 *phi_s1_12;
|
||||
s32 *phi_s0_9;
|
||||
s32 *phi_s0_10;
|
||||
s32 *phi_s1_13;
|
||||
s32 *phi_s1_14;
|
||||
s32 *phi_s2_7;
|
||||
s32 phi_s3_6;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_t6 = gCurrentCourseId;
|
||||
switch (temp_t6) {
|
||||
case 0:
|
||||
if (D_800DC50C != 9) {
|
||||
if (gModeSelection == 0) {
|
||||
func_80070714();
|
||||
}
|
||||
phi_s0 = &D_8018C630;
|
||||
phi_s3 = 0;
|
||||
if (D_80165738 > 0) {
|
||||
do {
|
||||
find_unused_obj_index(phi_s0);
|
||||
func_800723A4(*phi_s0, 0);
|
||||
temp_s3 = phi_s3 + 1;
|
||||
phi_s0 += 4;
|
||||
phi_s3 = temp_s3;
|
||||
} while (temp_s3 < D_80165738);
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
}
|
||||
default:
|
||||
return;
|
||||
case 2:
|
||||
D_80165750 = 0xB;
|
||||
D_80165758 = &D_800E5894;
|
||||
temp_v0 = gCCSelection;
|
||||
if (temp_v0 != 0) {
|
||||
if (temp_v0 != 1) {
|
||||
if (temp_v0 != 2) {
|
||||
if (temp_v0 != 3) {
|
||||
|
||||
}
|
||||
} else {
|
||||
D_80165750 = 0xC;
|
||||
D_80165758 = &D_800E58EC;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
D_80165750 = 8;
|
||||
D_80165758 = &D_800E5854;
|
||||
}
|
||||
phi_s1 = &D_80183EA0;
|
||||
phi_s3_2 = 0;
|
||||
if (D_80165750 > 0) {
|
||||
phi_s2 = 0;
|
||||
do {
|
||||
temp_s0 = *phi_s1;
|
||||
func_800723A4(temp_s0, 0, &D_80165750, &D_80165758);
|
||||
temp_v1 = D_80165758 + phi_s2;
|
||||
temp_s3_2 = phi_s3_2 + 1;
|
||||
temp_v0_2 = &D_80165C18 + (temp_s0 * 0xE0);
|
||||
temp_v0_2->unk10 = temp_v1->unk0 * D_8018D01C;
|
||||
temp_v0_2->unk18 = temp_v1->unk2;
|
||||
temp_v0_2->unkD5 = temp_v1->unk4;
|
||||
temp_v0_2->unkA0 = temp_v1->unk6;
|
||||
phi_s1 += 4;
|
||||
phi_s2 += 8;
|
||||
phi_s3_2 = temp_s3_2;
|
||||
} while (temp_s3_2 < D_80165750);
|
||||
}
|
||||
temp_s0_2 = D_80183F28;
|
||||
func_800723A4(temp_s0_2, 0, &D_80165750, &D_80165758);
|
||||
temp_v0_3 = &D_80165C18 + (temp_s0_2 * 0xE0);
|
||||
temp_v0_3->unk8 = 80.0f;
|
||||
temp_v0_3->unk4 = D_8018D01C * -68.0;
|
||||
temp_v0_3->unkC = -1840.0f;
|
||||
phi_s2_2 = &D_8018BFA8;
|
||||
phi_s1_2 = &D_800E5728;
|
||||
phi_s3_3 = 0;
|
||||
do {
|
||||
temp_s0_3 = *phi_s2_2;
|
||||
func_800723A4(temp_s0_3, 0);
|
||||
temp_v0_4 = &D_80165C18 + (temp_s0_3 * 0xE0);
|
||||
temp_s3_3 = phi_s3_3 + 1;
|
||||
temp_v0_4->unk8 = phi_s1_2->unk2;
|
||||
temp_v0_4->unk4 = phi_s1_2->unk0 * D_8018D01C;
|
||||
temp_v0_4->unkC0 = 0;
|
||||
temp_v0_4->unkC = phi_s1_2->unk4;
|
||||
phi_s2_2 += 4;
|
||||
phi_s3_3 = temp_s3_3;
|
||||
if ((phi_s3_3 & 1) != 0) {
|
||||
temp_v0_4->unkC0 = 0x8000;
|
||||
}
|
||||
phi_s1_2 += 6;
|
||||
} while (temp_s3_3 < 4);
|
||||
phi_s0_2 = &D_8018C030;
|
||||
do {
|
||||
func_80071F6C(phi_s0_2);
|
||||
temp_s0_4 = phi_s0_2 + 4;
|
||||
phi_s0_2 = temp_s0_4;
|
||||
} while (temp_s0_4 != &D_8018C0B0);
|
||||
return;
|
||||
case 3:
|
||||
if (D_800DC50C != 9) {
|
||||
temp_s0_5 = D_80183EA0.unk0;
|
||||
func_80073444(temp_s0_5, &D_06007BB8, &D_06007DB8, 0x20, 0x40);
|
||||
temp_v0_5 = &D_80165C18 + (temp_s0_5 * 0xE0);
|
||||
temp_v0_5->unkB2 = 0;
|
||||
temp_v0_5->unkB4 = 0;
|
||||
temp_v0_5->unkB6 = 0x8000;
|
||||
func_800723A4(D_80183EA0.unk4, 0);
|
||||
func_800723A4(D_80183EA0.unk8, 0);
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 4:
|
||||
phi_s1_3 = &D_80183EA0;
|
||||
do {
|
||||
func_800723A4(*phi_s1_3, 0);
|
||||
temp_s1 = phi_s1_3 + 4;
|
||||
phi_s1_3 = temp_s1;
|
||||
} while (temp_s1 < &D_80183EB0);
|
||||
phi_s2_3 = &D_80183F28;
|
||||
if (D_800DC50C != 9) {
|
||||
phi_v1 = D_800E5E8C;
|
||||
phi_s1_4 = &D_800E5E14;
|
||||
do {
|
||||
temp_s0_6 = *phi_s2_3;
|
||||
sp44 = phi_v1;
|
||||
func_800723A4(temp_s0_6, 0);
|
||||
temp_f2 = D_8018D01C;
|
||||
temp_f0 = phi_s1_4->unk0 * temp_f2;
|
||||
temp_v0_6 = &D_80165C18 + (temp_s0_6 * 0xE0);
|
||||
temp_v0_6->unk10 = temp_f0;
|
||||
temp_v0_6->unk4 = temp_f0;
|
||||
temp_f0_2 = phi_s1_4->unk2 + 6.0;
|
||||
temp_v1_2 = phi_v1 + 6;
|
||||
temp_v0_6->unk44 = temp_f0_2;
|
||||
temp_v0_6->unk8 = temp_f0_2;
|
||||
temp_f0_3 = phi_s1_4->unk4;
|
||||
temp_v0_6->unkD5 = phi_s1_4->unk6;
|
||||
temp_v0_6->unk9E = phi_v1->unk4;
|
||||
temp_v0_6->unk18 = temp_f0_3;
|
||||
temp_v0_6->unkC = temp_f0_3;
|
||||
temp_v0_6->unk9C = phi_v1->unk0 * temp_f2;
|
||||
phi_v1 = temp_v1_2;
|
||||
phi_s2_3 += 4;
|
||||
phi_s1_4 += 8;
|
||||
} while (temp_v1_2 != &D_800E5EE6);
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 5:
|
||||
phi_s1_5 = &D_8018C1B0;
|
||||
do {
|
||||
find_unused_obj_index(phi_s1_5);
|
||||
temp_s1_2 = phi_s1_5 + 4;
|
||||
phi_s1_5 = temp_s1_2;
|
||||
} while (temp_s1_2 < &D_8018C278);
|
||||
phi_s1_6 = &D_80183EA0;
|
||||
if (D_800DC50C != 9) {
|
||||
phi_v1_2 = &D_800E5EE8;
|
||||
phi_s2_4 = &D_80183F28;
|
||||
do {
|
||||
temp_s0_7 = *phi_s2_4;
|
||||
sp44 = phi_v1_2;
|
||||
func_800723A4(temp_s0_7, 0);
|
||||
temp_v0_7 = &D_80165C18 + (temp_s0_7 * 0xE0);
|
||||
temp_s0_8 = *phi_s1_6;
|
||||
temp_v0_7->unk10 = phi_v1_2->unk0 * D_8018D01C;
|
||||
temp_v0_7->unk18 = phi_v1_2->unk4;
|
||||
temp_v0_7->unk14 = phi_v1_2->unk2 + 5.0 + 3.0;
|
||||
func_800723A4(temp_s0_8, 0);
|
||||
temp_v0_8 = &D_80165C18 + (temp_s0_8 * 0xE0);
|
||||
temp_v1_3 = phi_v1_2 + 8;
|
||||
temp_v0_8->unkD5 = phi_v1_2->unk6;
|
||||
temp_v0_8->unk10 = phi_v1_2->unk0 * D_8018D01C;
|
||||
temp_v0_8->unk14 = phi_v1_2->unk2 + 3.0;
|
||||
temp_v0_8->unk18 = phi_v1_2->unk4;
|
||||
phi_v1_2 = temp_v1_3;
|
||||
phi_s2_4 += 4;
|
||||
phi_s1_6 += 4;
|
||||
} while (temp_v1_3 != D_800E5F80);
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 6:
|
||||
phi_s1_7 = &D_80183EA0;
|
||||
if (D_800DC50C != 9) {
|
||||
phi_v1_3 = D_800E5F80;
|
||||
do {
|
||||
temp_s0_9 = *phi_s1_7;
|
||||
sp48 = phi_v1_3;
|
||||
func_800723A4(temp_s0_9, 0);
|
||||
temp_f2_2 = D_8018D01C;
|
||||
temp_v0_9 = &D_80165C18 + (temp_s0_9 * 0xE0);
|
||||
temp_f0_4 = phi_v1_3->unk0 * temp_f2_2;
|
||||
temp_v1_4 = phi_v1_3 + 8;
|
||||
temp_v0_9->unk10 = temp_f0_4;
|
||||
temp_v0_9->unk4 = temp_f0_4;
|
||||
temp_f0_5 = phi_v1_3->unk4;
|
||||
temp_v0_9->unk1C = phi_v1_3->unk2 * temp_f2_2;
|
||||
temp_v0_9->unk18 = temp_f0_5;
|
||||
temp_v0_9->unkC = temp_f0_5;
|
||||
temp_v0_9->unk24 = phi_v1_3->unk6;
|
||||
phi_v1_3 = temp_v1_4;
|
||||
phi_s1_7 += 4;
|
||||
} while (temp_v1_4 != &D_800E5FD0);
|
||||
}
|
||||
phi_s2_5 = &D_80183F28;
|
||||
do {
|
||||
temp_s0_10 = *phi_s2_5;
|
||||
func_800723A4(temp_s0_10, 0);
|
||||
temp_s2 = phi_s2_5 + 4;
|
||||
phi_s2_5 = temp_s2;
|
||||
if (phi_s2_5 < &D_80183F3C) {
|
||||
(&D_80165C18 + (temp_s0_10 * 0xE0))->unkD5 = 0;
|
||||
} else {
|
||||
(&D_80165C18 + (temp_s0_10 * 0xE0))->unkD5 = 1;
|
||||
}
|
||||
} while (temp_s2 != &D_80183F50);
|
||||
return;
|
||||
case 7:
|
||||
if (D_800DC50C != 9) {
|
||||
if (gModeSelection == 0) {
|
||||
func_80070714();
|
||||
}
|
||||
phi_s0_3 = &D_8018C630;
|
||||
phi_s3_4 = 0;
|
||||
if (D_80165738 > 0) {
|
||||
do {
|
||||
find_unused_obj_index(phi_s0_3);
|
||||
func_800723A4(*phi_s0_3, 0);
|
||||
temp_s3_4 = phi_s3_4 + 1;
|
||||
phi_s0_3 += 4;
|
||||
phi_s3_4 = temp_s3_4;
|
||||
} while (temp_s3_4 < D_80165738);
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 8:
|
||||
if (D_800DC50C != 9) {
|
||||
if (gModeSelection == 0) {
|
||||
func_80070714();
|
||||
}
|
||||
D_80165898 = 0;
|
||||
func_800723A4(D_80183EA0.unk0, 0);
|
||||
phi_s0_4 = &D_8018C630;
|
||||
phi_s3_5 = 0;
|
||||
if (D_80165738 > 0) {
|
||||
do {
|
||||
find_unused_obj_index(phi_s0_4);
|
||||
func_800723A4(*phi_s0_4, 0);
|
||||
temp_s3_5 = phi_s3_5 + 1;
|
||||
phi_s0_4 += 4;
|
||||
phi_s3_5 = temp_s3_5;
|
||||
} while (temp_s3_5 < D_80165738);
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 9:
|
||||
if (D_800DC50C != 9) {
|
||||
temp_v0_10 = D_8018EDF3;
|
||||
phi_s1_8 = &D_80183EA0;
|
||||
if ((temp_v0_10 == 1) || ((temp_v0_10 == 2) && (gModeSelection == 2))) {
|
||||
temp_v0_11 = gCCSelection;
|
||||
if (temp_v0_11 != 0) {
|
||||
if (temp_v0_11 != 1) {
|
||||
if (temp_v0_11 != 2) {
|
||||
if (temp_v0_11 != 3) {
|
||||
|
||||
} else {
|
||||
D_8018D1C8 = 5;
|
||||
D_8018D1D0 = 8;
|
||||
D_8018D1D8 = 8;
|
||||
}
|
||||
} else {
|
||||
D_8018D1C8 = 5;
|
||||
D_8018D1D0 = 8;
|
||||
D_8018D1D8 = 0xA;
|
||||
}
|
||||
} else {
|
||||
D_8018D1C8 = 5;
|
||||
D_8018D1D0 = 8;
|
||||
D_8018D1D8 = 8;
|
||||
}
|
||||
} else {
|
||||
D_8018D1C8 = 4;
|
||||
D_8018D1D0 = 6;
|
||||
goto block_75;
|
||||
}
|
||||
} else {
|
||||
D_8018D1C8 = 4;
|
||||
D_8018D1D0 = 6;
|
||||
block_75:
|
||||
D_8018D1D8 = 6;
|
||||
}
|
||||
phi_s0_5 = &D_8018D198;
|
||||
do {
|
||||
*phi_s0_5 = 0;
|
||||
find_unused_obj_index(phi_s1_8);
|
||||
temp_s0_11 = phi_s0_5 + 1;
|
||||
phi_s0_5 = temp_s0_11;
|
||||
phi_s1_8 += 4;
|
||||
} while (temp_s0_11 < &D_8018D1A0);
|
||||
phi_s0_6 = &D_8018D1A8;
|
||||
phi_s1_9 = &D_80183EA0;
|
||||
do {
|
||||
*phi_s0_6 = 0;
|
||||
find_unused_obj_index(phi_s1_9);
|
||||
temp_s0_12 = phi_s0_6 + 1;
|
||||
phi_s0_6 = temp_s0_12;
|
||||
phi_s1_9 += 4;
|
||||
} while (temp_s0_12 < &D_8018D1B3);
|
||||
phi_s0_7 = &D_8018D1B8;
|
||||
phi_s1_10 = &D_80183EA0;
|
||||
do {
|
||||
*phi_s0_7 = 0;
|
||||
find_unused_obj_index(phi_s1_10);
|
||||
temp_s0_13 = phi_s0_7 + 1;
|
||||
phi_s0_7 = temp_s0_13;
|
||||
phi_s1_10 += 4;
|
||||
} while (temp_s0_13 < &D_8018D1C4);
|
||||
phi_s1_11 = &D_8018C1B0;
|
||||
phi_s2_6 = &D_800E6360;
|
||||
do {
|
||||
find_unused_obj_index(phi_s1_11);
|
||||
temp_s0_14 = *phi_s1_11;
|
||||
func_800723A4(temp_s0_14, 0);
|
||||
temp_v0_12 = &D_80165C18 + (temp_s0_14 * 0xE0);
|
||||
sp4C = temp_v0_12;
|
||||
temp_v0_12->unkC = phi_s2_6->unk4;
|
||||
temp_v0_12->unk4 = phi_s2_6->unk0 * D_8018D01C;
|
||||
func_800887C0(temp_s0_14);
|
||||
temp_s2_2 = phi_s2_6 + 6;
|
||||
temp_v0_12->unk0 = 0.7f;
|
||||
phi_s1_11 += 4;
|
||||
phi_s2_6 = temp_s2_2;
|
||||
} while (temp_s2_2 < &D_800E641A);
|
||||
phi_s0_8 = &D_8018C3F0;
|
||||
do {
|
||||
find_unused_obj_index(phi_s0_8);
|
||||
temp_s0_15 = phi_s0_8 + 4;
|
||||
phi_s0_8 = temp_s0_15;
|
||||
} while (temp_s0_15 != &D_8018C5F0);
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 11:
|
||||
if (D_800DC50C != 9) {
|
||||
find_unused_obj_index(&D_8018CF10);
|
||||
func_800723A4(D_8018CF10, 0);
|
||||
phi_s1_12 = &D_8018C1B0;
|
||||
do {
|
||||
find_unused_obj_index(phi_s1_12);
|
||||
temp_s1_3 = phi_s1_12 + 4;
|
||||
phi_s1_12 = temp_s1_3;
|
||||
} while (temp_s1_3 < &D_8018C278);
|
||||
phi_s0_9 = &D_8018C3F0;
|
||||
do {
|
||||
find_unused_obj_index(phi_s0_9);
|
||||
temp_s0_16 = phi_s0_9 + 4;
|
||||
phi_s0_9 = temp_s0_16;
|
||||
} while (temp_s0_16 < &D_8018C404);
|
||||
phi_s0_10 = &D_8018C630;
|
||||
do {
|
||||
find_unused_obj_index(phi_s0_10);
|
||||
temp_s0_17 = phi_s0_10 + 4;
|
||||
phi_s0_10 = temp_s0_17;
|
||||
} while (temp_s0_17 != &D_8018C6B0);
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 12:
|
||||
phi_s1_13 = &D_80183EA0;
|
||||
do {
|
||||
func_800723A4(*phi_s1_13, 0);
|
||||
temp_s1_4 = phi_s1_13 + 4;
|
||||
phi_s1_13 = temp_s1_4;
|
||||
} while (temp_s1_4 != &D_80183EDC);
|
||||
return;
|
||||
case 13:
|
||||
phi_s1_14 = &D_80183EA0;
|
||||
if (D_800DC50C != 9) {
|
||||
do {
|
||||
func_800723A4(*phi_s1_14, 0);
|
||||
temp_s1_5 = phi_s1_14 + 4;
|
||||
phi_s1_14 = temp_s1_5;
|
||||
} while (temp_s1_5 < &D_80183EC8);
|
||||
phi_s2_7 = &D_80183F28;
|
||||
do {
|
||||
func_800723A4(*phi_s2_7, 0);
|
||||
temp_s2_3 = phi_s2_7 + 4;
|
||||
phi_s2_7 = temp_s2_3;
|
||||
} while (temp_s2_3 != &D_80183F34);
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 18:
|
||||
phi_s3_6 = 0;
|
||||
do {
|
||||
func_800770F0(phi_s3_6);
|
||||
temp_s3_6 = phi_s3_6 + 1;
|
||||
phi_s3_6 = temp_s3_6;
|
||||
} while (temp_s3_6 != 8);
|
||||
/* Duplicate return node #106. Try simplifying control flow for better match */
|
||||
return;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_80070780.s")
|
||||
#endif
|
||||
|
||||
+3138
-301
File diff suppressed because it is too large
Load Diff
+98
-7
@@ -2658,15 +2658,106 @@ GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008BFC0.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_8008BFFC:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_80086F60(); /* extern */
|
||||
? func_80088228(); /* extern */
|
||||
? func_80088364(); /* extern */
|
||||
? func_8008B620(); /* extern */
|
||||
? func_8008B6A4(); /* extern */
|
||||
extern ? D_80165C18;
|
||||
|
||||
Unable to determine jump table for jr instruction at func_8008BFFC.s line 17.
|
||||
void func_8008BFFC(s32 arg0) {
|
||||
s16 temp_v0;
|
||||
s16 temp_v0_2;
|
||||
s16 temp_v0_3;
|
||||
s16 temp_v0_4;
|
||||
s16 temp_v0_5;
|
||||
s16 temp_v0_6;
|
||||
u8 temp_t8;
|
||||
void *temp_v1;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_v1 = (arg0 * 0xE0) + &D_80165C18;
|
||||
temp_t8 = temp_v1->unkDE;
|
||||
switch (temp_t8) {
|
||||
case 1:
|
||||
if (temp_v1->unkAE == 1) {
|
||||
func_8008B620();
|
||||
return;
|
||||
}
|
||||
default:
|
||||
return;
|
||||
case 2:
|
||||
temp_v0 = temp_v1->unkAE;
|
||||
if ((temp_v0 != 0) && (temp_v0 == 1)) {
|
||||
func_8008B6A4();
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #31. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 3:
|
||||
temp_v0_2 = temp_v1->unkAE;
|
||||
if ((temp_v0_2 != 0) && (temp_v0_2 == 1)) {
|
||||
func_8008B620();
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #31. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 4:
|
||||
temp_v0_3 = temp_v1->unkAE;
|
||||
if (temp_v0_3 != 0) {
|
||||
if (temp_v0_3 != 1) {
|
||||
if (temp_v0_3 != 2) {
|
||||
return;
|
||||
}
|
||||
func_80086F60();
|
||||
return;
|
||||
}
|
||||
func_8008B620();
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #31. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 5:
|
||||
temp_v0_4 = temp_v1->unkAE;
|
||||
if (temp_v0_4 != 0) {
|
||||
if (temp_v0_4 != 1) {
|
||||
if (temp_v0_4 != 2) {
|
||||
return;
|
||||
}
|
||||
func_80086F60();
|
||||
return;
|
||||
}
|
||||
func_8008B620();
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #31. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 6:
|
||||
temp_v0_5 = temp_v1->unkAE;
|
||||
if ((temp_v0_5 != 0) && (temp_v0_5 == 1)) {
|
||||
func_8008B620();
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #31. Try simplifying control flow for better match */
|
||||
return;
|
||||
case 7:
|
||||
temp_v0_6 = temp_v1->unkAE;
|
||||
if (temp_v0_6 != 0) {
|
||||
if (temp_v0_6 != 1) {
|
||||
if (temp_v0_6 != 2) {
|
||||
return;
|
||||
}
|
||||
func_80088364();
|
||||
/* Duplicate return node #31. Try simplifying control flow for better match */
|
||||
return;
|
||||
}
|
||||
func_80088228();
|
||||
return;
|
||||
}
|
||||
/* Duplicate return node #31. Try simplifying control flow for better match */
|
||||
return;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008BFFC.s")
|
||||
#endif
|
||||
|
||||
+3168
-62
File diff suppressed because it is too large
Load Diff
+6674
-315
File diff suppressed because it is too large
Load Diff
+1680
-42
File diff suppressed because it is too large
Load Diff
+1737
-49
File diff suppressed because it is too large
Load Diff
+1995
-124
File diff suppressed because it is too large
Load Diff
+1338
-49
File diff suppressed because it is too large
Load Diff
+119
-67
@@ -63,11 +63,12 @@ void crash_screen_draw_glyph(u16 *framebuffer, s32 x, s32 y, s32 glyph) {
|
||||
}
|
||||
}
|
||||
|
||||
GLOBAL_ASM("asm/non_matchings/crash_screen/crash_screen.s")
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? osViSwapBuffer(s32); /* extern */
|
||||
? osWritebackDCacheAll(s32, s32, s16, s16); /* extern */
|
||||
|
||||
/*
|
||||
|
||||
void crash_screen_draw_square(uint_ptr arg0, s32 arg1) {
|
||||
void crash_screen_draw_square(s32 arg0, s32 arg1) {
|
||||
s32 temp_a0;
|
||||
s32 temp_a1;
|
||||
s32 temp_a1_2;
|
||||
@@ -103,26 +104,26 @@ void crash_screen_draw_square(uint_ptr arg0, s32 arg1) {
|
||||
phi_a1_4 = phi_a1_3;
|
||||
if (phi_s2 < phi_s0) {
|
||||
do {
|
||||
phi_v1 = phi_s2;
|
||||
phi_v1_2 = phi_s2;
|
||||
if (phi_s2 < phi_s0) {
|
||||
temp_a0 = phi_s0 - phi_s2;
|
||||
temp_t0 = temp_a0 & 3;
|
||||
temp_ra = arg0 + (phi_s1 * 0x280);
|
||||
phi_v1_2 = phi_s2;
|
||||
phi_a0_3 = temp_a0;
|
||||
if (temp_t0 != 0) {
|
||||
phi_v0 = temp_ra + (phi_s2 * 2);
|
||||
phi_v1 = phi_s2;
|
||||
do {
|
||||
temp_v1 = phi_v1 + 1;
|
||||
phi_v1 = temp_v1;
|
||||
phi_v1_2 = temp_v1;
|
||||
if (temp_a0 == 6) {
|
||||
*phi_v0 = 0xF801;
|
||||
} else {
|
||||
*phi_v0 = 0xFFFF;
|
||||
}
|
||||
phi_v0 += 2;
|
||||
phi_v1 = temp_v1;
|
||||
} while ((temp_t0 + phi_s2) != temp_v1);
|
||||
phi_v1_2 = temp_v1;
|
||||
phi_a0_3 = temp_a0;
|
||||
phi_a1_4 = temp_v1 * 2;
|
||||
if (temp_v1 != phi_s0) {
|
||||
goto block_10;
|
||||
@@ -134,6 +135,8 @@ block_10:
|
||||
phi_a1 = temp_a1;
|
||||
do {
|
||||
temp_a1_2 = phi_a1 + 8;
|
||||
phi_a1 = temp_a1_2;
|
||||
phi_a1_4 = temp_a1_2;
|
||||
if (temp_a0 == 6) {
|
||||
phi_v0_2->unk0 = 0xF801;
|
||||
} else {
|
||||
@@ -155,9 +158,6 @@ block_10:
|
||||
phi_v0_2->unk6 = 0xFFFF;
|
||||
}
|
||||
phi_v0_2 += 8;
|
||||
phi_a1 = temp_a1_2;
|
||||
phi_a0_3 = temp_a0;
|
||||
phi_a1_4 = temp_a1_2;
|
||||
} while (temp_a1_2 != (phi_s0 * 2));
|
||||
}
|
||||
}
|
||||
@@ -176,8 +176,18 @@ block_10:
|
||||
osWritebackDCacheAll(phi_a0, phi_a1_2, 0xF801, 0xFFFF);
|
||||
osViSwapBuffer(arg0);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/crash_screen/crash_screen_draw_square.s")
|
||||
#endif
|
||||
|
||||
void crash_screen_draw_info(uint_ptr arg0, void *arg1) {
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? crash_screen_draw_glyph(s32, s32, s32, u32); /* extern */
|
||||
? osViSwapBuffer(s32); /* extern */
|
||||
? osWritebackDCacheAll(); /* extern */
|
||||
extern s32 D_800DC670;
|
||||
|
||||
void crash_screen_draw_info(s32 arg0, void *arg1) {
|
||||
s32 temp_a2;
|
||||
s32 temp_s0;
|
||||
s32 temp_s1;
|
||||
@@ -229,52 +239,54 @@ loop_3:
|
||||
}
|
||||
temp_t0 = phi_t0 + 0x14;
|
||||
phi_t0 = temp_t0;
|
||||
} while ((temp_t0 < 0x3C) != 0);
|
||||
} while (temp_t0 < 0x3C);
|
||||
temp_s0 = (D_800DC670 * 0x18) + 0x35;
|
||||
func_800040C0(arg0, 0x6C, temp_s0, arg1->unk14 & 0xF);
|
||||
func_800040C0(arg0, 0x74, temp_s0, 0x10U);
|
||||
crash_screen_draw_glyph(arg0, 0x6C, temp_s0, arg1->unk14 & 0xF);
|
||||
crash_screen_draw_glyph(arg0, 0x74, temp_s0, 0x10);
|
||||
temp_s2 = arg1 + 0x20;
|
||||
phi_s1 = 0xB4;
|
||||
phi_s4 = temp_s2->unkFC;
|
||||
phi_s1_2 = 0xB4;
|
||||
phi_s1_3 = 0xB4;
|
||||
do {
|
||||
func_800040C0(arg0, phi_s1, temp_s0, phi_s4 & 0xF);
|
||||
crash_screen_draw_glyph(arg0, phi_s1, temp_s0, phi_s4 & 0xF);
|
||||
temp_s1 = phi_s1 - 8;
|
||||
phi_s1 = temp_s1;
|
||||
phi_s4 = phi_s4 >> 4;
|
||||
} while ((temp_s1 < 0x7C) == 0);
|
||||
temp_s1_2 = ((u32) temp_s2->unk100 >> 2) & 0x1F;
|
||||
func_800040C0(arg0, 0xBC, temp_s0, 0x10U);
|
||||
func_800040C0(arg0, 0xC4, temp_s0, temp_s1_2 >> 4);
|
||||
func_800040C0(arg0, 0xCC, temp_s0, temp_s1_2 & 0xF);
|
||||
phi_s1_2 = 0xB4;
|
||||
} while (temp_s1 >= 0x7C);
|
||||
temp_s1_2 = (temp_s2->unk100 >> 2) & 0x1F;
|
||||
crash_screen_draw_glyph(arg0, 0xBC, temp_s0, 0x10);
|
||||
crash_screen_draw_glyph(arg0, 0xC4, temp_s0, temp_s1_2 >> 4);
|
||||
crash_screen_draw_glyph(arg0, 0xCC, temp_s0, temp_s1_2 & 0xF);
|
||||
phi_s4_2 = temp_s2->unkE4;
|
||||
do {
|
||||
func_800040C0(arg0, phi_s1_2, 0x49, phi_s4_2 & 0xF);
|
||||
crash_screen_draw_glyph(arg0, phi_s1_2, 0x49, phi_s4_2 & 0xF);
|
||||
temp_s1_3 = phi_s1_2 - 8;
|
||||
temp_t3 = phi_s4_2 >> 4;
|
||||
phi_s1_2 = temp_s1_3;
|
||||
phi_s4_2 = temp_t3;
|
||||
} while ((temp_s1_3 < 0x7C) == 0);
|
||||
temp_t4 = temp_s2->unkFC & ~3;
|
||||
phi_s1_3 = 0xB4;
|
||||
phi_s4_3 = temp_t3;
|
||||
if (temp_t4 >= 0x80000001U) {
|
||||
phi_s1_3 = 0xB4;
|
||||
phi_s4_3 = temp_t3;
|
||||
if (temp_t4 < 0x803FFF7FU) {
|
||||
phi_s1_3 = 0xB4;
|
||||
phi_s4_3 = *temp_t4;
|
||||
}
|
||||
} while (temp_s1_3 >= 0x7C);
|
||||
temp_t4 = temp_s2->unkFC & ~3;
|
||||
if ((temp_t4 >= 0x80000001) && (temp_t4 < 0x803FFF7F)) {
|
||||
phi_s4_3 = *temp_t4;
|
||||
}
|
||||
do {
|
||||
func_800040C0(arg0, phi_s1_3, 0x5D, phi_s4_3 & 0xF);
|
||||
crash_screen_draw_glyph(arg0, phi_s1_3, 0x5D, phi_s4_3 & 0xF);
|
||||
temp_s1_4 = phi_s1_3 - 8;
|
||||
phi_s1_3 = temp_s1_4;
|
||||
phi_s4_3 = phi_s4_3 >> 4;
|
||||
} while ((temp_s1_4 < 0x7C) == 0);
|
||||
} while (temp_s1_4 >= 0x7C);
|
||||
osWritebackDCacheAll();
|
||||
osViSwapBuffer(arg0);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/crash_screen/crash_screen_draw_info.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
void *__osGetCurrFaultedThread(); /* extern */
|
||||
|
||||
void *get_faulted_thread(void) {
|
||||
s32 temp_v0_2;
|
||||
@@ -284,9 +296,9 @@ void *get_faulted_thread(void) {
|
||||
void *phi_v1;
|
||||
|
||||
temp_v0 = __osGetCurrFaultedThread();
|
||||
phi_v1 = temp_v0;
|
||||
if (temp_v0->unk4 != -1) {
|
||||
phi_v0 = temp_v0->unk4;
|
||||
phi_v1 = temp_v0;
|
||||
loop_2:
|
||||
if ((phi_v0 > 0) && (phi_v0 < 0x80) && ((phi_v1->unk12 & 3) != 0)) {
|
||||
return phi_v1;
|
||||
@@ -303,12 +315,31 @@ loop_2:
|
||||
block_7:
|
||||
return NULL;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/crash_screen/get_faulted_thread.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? crash_screen_draw_info(s32, s32); /* extern */
|
||||
? crash_screen_draw_square(s32); /* extern */
|
||||
s32 get_faulted_thread(); /* extern */
|
||||
? osRecvMesg(? *, ? *, ?); /* extern */
|
||||
? osSetEventMesg(?, ? *, ?); /* extern */
|
||||
? read_controllers(); /* extern */
|
||||
extern void *D_800DC4BC;
|
||||
extern s32 D_800DC670;
|
||||
extern ? D_800DC6FC;
|
||||
extern ? D_80162D40;
|
||||
extern s32 D_80162D60;
|
||||
extern s32 D_80162D64;
|
||||
extern s32 pFramebuffer;
|
||||
|
||||
void thread9_crash_screen(s32 arg0) {
|
||||
? sp44;
|
||||
s32 temp_v0;
|
||||
s32 temp_v1;
|
||||
u16 temp_v0_2;
|
||||
void *temp_v0;
|
||||
|
||||
osSetEventMesg(0xC, &D_80162D40, 0x10);
|
||||
osSetEventMesg(0xA, &D_80162D40, 0x10);
|
||||
@@ -320,49 +351,70 @@ loop_1:
|
||||
if (temp_v0 == 0) {
|
||||
goto loop_1;
|
||||
}
|
||||
if (D_800DC670 != 0) {
|
||||
goto block_10;
|
||||
}
|
||||
crash_screen_draw_square(pFramebuffer);
|
||||
if (D_800DC670 == 0) {
|
||||
crash_screen_draw_square(pFramebuffer);
|
||||
do {
|
||||
loop_4:
|
||||
read_controllers();
|
||||
temp_v0_2 = D_800DC4BC->unk6;
|
||||
if (temp_v0_2 == 0) {
|
||||
goto loop_4;
|
||||
read_controllers();
|
||||
temp_v0_2 = D_800DC4BC->unk6;
|
||||
if (temp_v0_2 == 0) {
|
||||
goto loop_4;
|
||||
}
|
||||
temp_v1 = D_80162D60;
|
||||
if (temp_v0_2 == *(&D_800DC6FC + (temp_v1 * 2))) {
|
||||
D_80162D60 = temp_v1 + 1;
|
||||
} else {
|
||||
D_80162D60 = 0;
|
||||
}
|
||||
} while (*(&D_800DC6FC + (D_80162D60 * 2)) != 0xFFFF);
|
||||
crash_screen_draw_info(pFramebuffer, D_80162D64);
|
||||
}
|
||||
temp_v1 = D_80162D60;
|
||||
if (temp_v0_2 != *(&D_800DC6FC + (temp_v1 * 2))) {
|
||||
goto block_7;
|
||||
}
|
||||
D_80162D60 = (s32) (temp_v1 + 1);
|
||||
goto block_8;
|
||||
block_7:
|
||||
D_80162D60 = 0;
|
||||
block_8:
|
||||
if (*(&D_800DC6FC + (D_80162D60 * 2)) != 0xFFFF) {
|
||||
goto loop_4;
|
||||
}
|
||||
crash_screen_draw_info(pFramebuffer, D_80162D64);
|
||||
block_10:
|
||||
if (D_800DC670 >= 5) {
|
||||
goto loop_1;
|
||||
}
|
||||
D_800DC670 = (s32) (D_800DC670 + 1);
|
||||
D_800DC670 += 1;
|
||||
goto loop_1;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/crash_screen/thread9_crash_screen.s")
|
||||
#endif
|
||||
|
||||
// crash_screen_set_framebuffer
|
||||
void func_800046AC(uintptr_t framebuffer) {
|
||||
pFramebuffer = framebuffer;
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
extern s32 pFramebuffer;
|
||||
|
||||
void func_800046AC(s32 arg0) {
|
||||
pFramebuffer = arg0;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/crash_screen/func_800046AC.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? osCreateMesgQueue(? *, ? *, ?); /* extern */
|
||||
? osCreateThread(? *, ?, ? *, ?, ? *, s32); /* extern */
|
||||
extern ? D_80162790;
|
||||
extern ? D_80162D40;
|
||||
extern ? D_80162D58;
|
||||
extern ? thread9_crash_screen;
|
||||
|
||||
void create_debug_thread(void) {
|
||||
osCreateMesgQueue(&D_80162D40, &D_80162D58, 1);
|
||||
osCreateThread(&D_80162790, 9, thread9_crash_screen, 0, &D_80162D40, 0x7F);
|
||||
osCreateThread(&D_80162790, 9, &thread9_crash_screen, 0, &D_80162D40, 0x7F);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/crash_screen/create_debug_thread.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? osStartThread(? *); /* extern */
|
||||
extern ? D_80162790;
|
||||
|
||||
void start_debug_thread(void) {
|
||||
osStartThread(&D_80162790);
|
||||
}
|
||||
|
||||
*/
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/crash_screen/start_debug_thread.s")
|
||||
#endif
|
||||
|
||||
+1910
-23
File diff suppressed because it is too large
Load Diff
+582
-21
@@ -789,29 +789,197 @@ GLOBAL_ASM("asm/non_matchings/memory/func_802A8F14.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_802A8F80:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
static ? D_802B8D58; /* unable to generate initializer */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_802A8F80.s line 24.
|
||||
void func_802A8F80(s32 arg0, s32 arg1, s8 arg2) {
|
||||
s32 sp58;
|
||||
s32 sp48;
|
||||
s32 sp44;
|
||||
s32 sp40;
|
||||
s32 temp_a1;
|
||||
s32 temp_t5;
|
||||
s32 temp_t8;
|
||||
s32 temp_t9;
|
||||
u8 temp_a0;
|
||||
u8 temp_a0_2;
|
||||
s32 phi_v1;
|
||||
s32 phi_v0;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
sp58.unk0 = D_802B8D58.unk0;
|
||||
sp58.unk4 = D_802B8D58.unk4;
|
||||
phi_v0 = 0;
|
||||
phi_v0 = 0;
|
||||
switch (arg2) {
|
||||
case 26:
|
||||
sp44 = 0x20;
|
||||
sp40 = 0;
|
||||
phi_v1 = 0x20;
|
||||
block_9:
|
||||
sp48 = phi_v1;
|
||||
break;
|
||||
case 44:
|
||||
sp44 = 0x20;
|
||||
sp40 = 0;
|
||||
phi_v1 = 0x20;
|
||||
phi_v0 = 0x100;
|
||||
goto block_9;
|
||||
case 27:
|
||||
sp44 = 0x20;
|
||||
sp40 = 0;
|
||||
phi_v1 = 0x40;
|
||||
goto block_9;
|
||||
case 28:
|
||||
sp44 = 0x40;
|
||||
sp40 = 0;
|
||||
phi_v1 = 0x20;
|
||||
goto block_9;
|
||||
case 29:
|
||||
sp44 = 0x20;
|
||||
sp40 = 3;
|
||||
phi_v1 = 0x20;
|
||||
goto block_9;
|
||||
case 30:
|
||||
sp44 = 0x20;
|
||||
sp40 = 3;
|
||||
phi_v1 = 0x40;
|
||||
goto block_9;
|
||||
case 31:
|
||||
sp44 = 0x40;
|
||||
sp40 = 3;
|
||||
phi_v1 = 0x20;
|
||||
goto block_9;
|
||||
}
|
||||
temp_a1 = D_802BA274;
|
||||
temp_a0 = *(temp_a1 + arg1);
|
||||
temp_t9 = temp_a1 + 1;
|
||||
D_802BA274 = temp_t9;
|
||||
temp_a0_2 = *(temp_t9 + arg1);
|
||||
D_802BA274 = temp_t9 + 1;
|
||||
*(arg0 + (D_802BA270 * 8)) = sp58;
|
||||
(arg0 + (D_802BA270 * 8))->unk4 = sp5C;
|
||||
D_802BA270 += 1;
|
||||
*(arg0 + (D_802BA270 * 8)) = (sp40 << 0x15) | 0xF5000000 | 0x100000 | ((((sp48 * 2) + 7) >> 3) << 9) | phi_v0;
|
||||
(arg0 + (D_802BA270 * 8))->unk4 = ((temp_a0_2 & 0xF) << 0x12) | (((temp_a0_2 & 0xF0) >> 4) << 0xE) | ((temp_a0 & 0xF) << 8) | (((temp_a0 & 0xF0) >> 4) * 0x10);
|
||||
temp_t5 = D_802BA270 + 1;
|
||||
temp_t8 = temp_t5 * 8;
|
||||
D_802BA270 = temp_t5;
|
||||
*(arg0 + temp_t8) = 0xF2000000;
|
||||
(arg0 + (D_802BA270 * 8))->unk4 = ((sp48 - 1) << 0xE) | ((sp44 - 1) * 4);
|
||||
D_802BA270 += 1;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/memory/func_802A8F80.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function func_802A91E4:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
static ? D_802B8D60; /* unable to generate initializer */
|
||||
static ? D_802B8D68; /* unable to generate initializer */
|
||||
|
||||
Unable to determine jump table for jr instruction at func_802A91E4.s line 27.
|
||||
void func_802A91E4(s32 arg0, s32 arg1, s8 arg2) {
|
||||
s32 sp48;
|
||||
s32 sp40;
|
||||
s32 sp2C;
|
||||
s32 sp28;
|
||||
s32 sp24;
|
||||
s32 temp_t1;
|
||||
s32 temp_t6;
|
||||
s32 temp_t6_2;
|
||||
s32 temp_t8;
|
||||
s32 temp_t9;
|
||||
s32 temp_t9_2;
|
||||
s32 temp_v1;
|
||||
u32 temp_t2;
|
||||
u32 temp_t6_3;
|
||||
u8 temp_a2;
|
||||
u8 temp_a3;
|
||||
s32 phi_v0;
|
||||
u32 phi_v0_2;
|
||||
u32 phi_a2;
|
||||
u32 phi_v1;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
sp48.unk0 = D_802B8D60.unk0;
|
||||
sp48.unk4 = D_802B8D60.unk4;
|
||||
sp40.unk0 = D_802B8D68.unk0;
|
||||
sp40.unk4 = D_802B8D68.unk4;
|
||||
switch (arg2) {
|
||||
case 32:
|
||||
sp28 = 0x20;
|
||||
sp24 = 0;
|
||||
phi_v0 = 0x20;
|
||||
block_8:
|
||||
sp2C = phi_v0;
|
||||
break;
|
||||
case 33:
|
||||
sp28 = 0x20;
|
||||
sp24 = 0;
|
||||
phi_v0 = 0x40;
|
||||
goto block_8;
|
||||
case 34:
|
||||
sp28 = 0x40;
|
||||
sp24 = 0;
|
||||
phi_v0 = 0x20;
|
||||
goto block_8;
|
||||
case 35:
|
||||
sp28 = 0x20;
|
||||
sp24 = 3;
|
||||
phi_v0 = 0x20;
|
||||
goto block_8;
|
||||
case 36:
|
||||
sp28 = 0x20;
|
||||
sp24 = 3;
|
||||
phi_v0 = 0x40;
|
||||
goto block_8;
|
||||
case 37:
|
||||
sp28 = 0x40;
|
||||
sp24 = 3;
|
||||
phi_v0 = 0x20;
|
||||
goto block_8;
|
||||
}
|
||||
temp_v1 = D_802BA274;
|
||||
temp_a2 = *(arg1 + temp_v1);
|
||||
temp_t9 = temp_v1 + 1;
|
||||
D_802BA274 = temp_t9;
|
||||
temp_t8 = temp_t9 + 1;
|
||||
D_802BA274 = temp_t8;
|
||||
temp_a3 = *(temp_t8 + arg1);
|
||||
D_802BA274 = temp_t8 + 1;
|
||||
temp_t6 = sp24 << 0x15;
|
||||
*(arg0 + (D_802BA270 * 8)) = temp_t6 | 0xFD000000 | 0x100000;
|
||||
(arg0 + (D_802BA270 * 8))->unk4 = (temp_a2 << 0xB) + 0x5000000;
|
||||
temp_t9_2 = D_802BA270 + 1;
|
||||
D_802BA270 = temp_t9_2;
|
||||
*(arg0 + (temp_t9_2 * 8)) = sp48;
|
||||
(arg0 + (D_802BA270 * 8))->unk4 = sp4C;
|
||||
D_802BA270 += 1;
|
||||
*(arg0 + (D_802BA270 * 8)) = temp_t6 | 0xF5000000 | 0x100000 | (temp_a3 & 0xF);
|
||||
temp_t1 = ((temp_a3 & 0xF0) >> 4) << 0x18;
|
||||
(arg0 + (D_802BA270 * 8))->unk4 = temp_t1;
|
||||
temp_t6_2 = D_802BA270 + 1;
|
||||
D_802BA270 = temp_t6_2;
|
||||
*(arg0 + (temp_t6_2 * 8)) = sp40;
|
||||
(arg0 + (D_802BA270 * 8))->unk4 = sp44;
|
||||
temp_t6_3 = (sp2C * 2) >> 3;
|
||||
D_802BA270 += 1;
|
||||
temp_t2 = (sp2C * sp28) - 1;
|
||||
phi_v1 = 0x7FF;
|
||||
if (temp_t2 < 0x7FF) {
|
||||
phi_v1 = temp_t2;
|
||||
}
|
||||
if (temp_t6_3 == 0) {
|
||||
phi_v0_2 = 1;
|
||||
} else {
|
||||
phi_v0_2 = temp_t6_3;
|
||||
}
|
||||
phi_a2 = temp_t6_3;
|
||||
if (temp_t6_3 == 0) {
|
||||
phi_a2 = 1;
|
||||
}
|
||||
*(arg0 + (D_802BA270 * 8)) = 0xF3000000;
|
||||
(arg0 + (D_802BA270 * 8))->unk4 = ((phi_v0_2 + 0x7FF) / phi_a2) | temp_t1 | (phi_v1 << 0xC);
|
||||
D_802BA270 += 1;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/memory/func_802A91E4.s")
|
||||
#endif
|
||||
@@ -1069,15 +1237,408 @@ GLOBAL_ASM("asm/non_matchings/memory/func_802A99A4.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
/*
|
||||
Failed to decompile function display_list_unpack:
|
||||
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
|
||||
? func_802A884C(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A8940(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A89C0(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A8A04(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A8A70(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A8ADC(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A8B48(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8BB4(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8C20(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8C8C(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8CF8(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8D64(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8DD0(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8E3C(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8EA8(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8F14(s32, s32, s32, s32 *); /* extern */
|
||||
? func_802A8F80(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A91E4(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A94D8(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A9544(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A95B0(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A9674(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A9714(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A980C(s32, s32, s8, s32 *); /* extern */
|
||||
? func_802A99A4(s32, s32, s8, s32 *); /* extern */
|
||||
? set_segment_base_addr(?, s32); /* extern */
|
||||
|
||||
Unable to determine jump table for jr instruction at display_list_unpack.s line 52.
|
||||
void display_list_unpack(u32 arg0, s32 arg1, s32 arg2) {
|
||||
s32 sp2C;
|
||||
s32 temp_s0;
|
||||
s32 temp_s1;
|
||||
s32 temp_v1;
|
||||
u8 temp_a0;
|
||||
s32 *phi_a3;
|
||||
|
||||
There must be a read of a variable in the same block as
|
||||
the instruction, which has a name starting with "jtbl"/"jpt_".
|
||||
*/
|
||||
temp_s0 = gSegmentTable[arg0 >> 0x18] + (arg0 & 0xFFFFFF) + 0x80000000;
|
||||
temp_s1 = gHeapEndPtr - (((arg1 + 0xF) & ~0xF) + 8);
|
||||
gHeapEndPtr = temp_s1;
|
||||
D_802BA270 = 0;
|
||||
sp2C = temp_s1;
|
||||
D_802BA274 = 0;
|
||||
phi_a3 = &D_802BA274;
|
||||
loop_1:
|
||||
temp_v1 = *phi_a3;
|
||||
temp_a0 = *(temp_v1 + temp_s0);
|
||||
*phi_a3 = temp_v1 + 1;
|
||||
if (temp_a0 != 0xFF) {
|
||||
switch (temp_a0) {
|
||||
case 0x0:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x1:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x2:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x3:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x4:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x5:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x6:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x7:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x8:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x9:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0xA:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0xB:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0xC:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0xD:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0xE:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0xF:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x10:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x11:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x12:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x13:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x14:
|
||||
func_802A884C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x15:
|
||||
func_802A8B48(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x16:
|
||||
func_802A8BB4(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x17:
|
||||
func_802A8C20(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x2E:
|
||||
func_802A8C8C(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x53:
|
||||
func_802A8CF8(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x18:
|
||||
func_802A8D64(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x19:
|
||||
func_802A8DD0(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x2F:
|
||||
func_802A8E3C(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x54:
|
||||
func_802A8EA8(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x55:
|
||||
func_802A8F14(temp_s1, temp_s0, arg2, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x1A:
|
||||
func_802A8F80(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x2C:
|
||||
func_802A8F80(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x1B:
|
||||
func_802A8F80(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x1C:
|
||||
func_802A8F80(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x1D:
|
||||
func_802A8F80(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x1E:
|
||||
func_802A8F80(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x1F:
|
||||
func_802A8F80(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x20:
|
||||
func_802A91E4(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x21:
|
||||
func_802A91E4(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x22:
|
||||
func_802A91E4(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x23:
|
||||
func_802A91E4(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x24:
|
||||
func_802A91E4(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x25:
|
||||
func_802A91E4(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x26:
|
||||
func_802A94D8(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x27:
|
||||
func_802A9544(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x28:
|
||||
func_802A95B0(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x33:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x34:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x35:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x36:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x37:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x38:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x39:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x3A:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x3B:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x3C:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x3D:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x3E:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x3F:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x40:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x41:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x42:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x43:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x44:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x45:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x46:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x47:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x48:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x49:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x4A:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x4B:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x4C:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x4D:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x4E:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x4F:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x50:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x51:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x52:
|
||||
func_802A9674(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x29:
|
||||
func_802A9714(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x58:
|
||||
func_802A980C(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x30:
|
||||
func_802A99A4(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x2D:
|
||||
func_802A8ADC(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x2A:
|
||||
func_802A89C0(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x56:
|
||||
func_802A8A04(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x57:
|
||||
func_802A8A70(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
case 0x2B:
|
||||
func_802A8940(temp_s1, temp_s0, temp_a0, phi_a3);
|
||||
phi_a3 = &D_802BA274;
|
||||
break;
|
||||
}
|
||||
goto loop_1;
|
||||
}
|
||||
set_segment_base_addr(7, sp2C);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/memory/display_list_unpack.s")
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user