8000FD0 decomp and various (#247)

* 80005FD0 decomp and various changes
This commit is contained in:
MegaMech
2022-07-27 01:25:50 -06:00
committed by GitHub
parent fb010e4186
commit db95b4b9e8
15 changed files with 149 additions and 618 deletions
+146 -283
View File
@@ -8,6 +8,7 @@
#include "code_80005FD0.h"
#include "code_80027D00.h"
#include "variables.h"
#include <actor_types.h>
s16 func_80005FD0(Vec3f arg0, Vec3f arg1) {
s16 temp_ret;
@@ -2105,70 +2106,54 @@ block_25:
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000929C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_8000DF8C(s32); // extern
? func_8000EF20(); // extern
? func_80012AC0(); // extern
? func_800133C4(); // extern
? func_8001487C(); // extern
? func_800149D0(); // extern
? func_80014B24(); // extern
? func_80014C78(); // extern
void func_8000DF8C(s32); // extern
void func_8000EF20(); // extern
void func_80012AC0(); // extern
void func_800133C4(); // extern
void func_8001487C(); // extern
void func_800149D0(); // extern
void func_80014B24(); // extern
void func_80014C78(); // extern
extern s32 D_8016337C;
extern s32 gModeSelection;
void func_800097E0(void) {
s16 temp_v0;
s32 temp_s0;
s32 temp_s0_2;
s32 phi_s0;
s32 phi_s0_2;
s16 phi_v0;
s32 i;
s32 j;
s32 unk = 0;
func_8000EF20();
D_8016337C = D_8016337C + 1;
temp_v0 = gCurrentCourseId;
phi_s0 = 0;
phi_s0_2 = 0;
phi_v0 = temp_v0;
if (temp_v0 == 0x14) {
do {
func_8000DF8C(phi_s0);
temp_s0 = phi_s0 + 1;
phi_s0 = temp_s0;
} while (temp_s0 != 7);
D_8016337C++;
if (gCurrentCourseId == 20) {
for (i = 0; i < 7; i++) {
func_8000DF8C(i);
}
return;
}
if ((D_8016337C & 1) != 0) {
if (D_8016337C & 1) {
if (gModeSelection == VERSUS) {
do {
func_8000DF8C(phi_s0_2);
temp_s0_2 = phi_s0_2 + 1;
phi_s0_2 = temp_s0_2;
} while (temp_s0_2 != 7);
phi_v0 = gCurrentCourseId;
}
if (phi_v0 != 0xA) {
if (phi_v0 != 0xB) {
if (phi_v0 != 0x12) {
return;
}
func_800133C4();
return;
for (i = 0; i < 7; i++) {
func_8000DF8C(i);
}
func_80012AC0();
return;
}
func_8001487C();
func_800149D0();
func_80014B24();
func_80014C78();
// Duplicate return node #14. Try simplifying control flow for better match
switch(gCurrentCourseId) {
case 11:
func_80012AC0();
break;
case 18:
func_800133C4();
break;
case 10:
func_8001487C();
func_800149D0();
func_80014B24();
func_80014C78();
break;
}
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800097E0.s")
#endif
#ifdef MIPS_TO_C
//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9
@@ -2274,30 +2259,30 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800099EC.s")
#ifdef MIPS_TO_C
//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9
? func_80008424(s32, ?32, Player *); /* extern */
? func_8000929C(s32, Player *); /* extern */
? func_800099EC(s32, Player *); /* extern */
? func_8000B140(s32); /* extern */
s32 func_8000B7E4(s32, u16); /* extern */
? func_8000BBD8(s32, ?32, s16, f32 *); /* extern */
? func_8000D3B8(s32); /* extern */
? func_8000D438(s32, u16); /* extern */
? func_80011E38(s32); /* extern */
? func_80012DC0(s32, Player *); /* extern */
? func_80013054(); /* extern */
? func_800131DC(s32); /* extern */
? func_80013854(Player *); /* extern */
? func_800148C4(s32, Player *); /* extern */
? func_8001490C(s32, u16 *, f32 *, u16 *); /* extern */
? func_80014A18(s32, Player *); /* extern */
? func_80014A60(s32); /* extern */
? func_80014B6C(s32, Player *); /* extern */
? func_80014BB4(s32); /* extern */
? func_80014CC0(s32, Player *); /* extern */
? func_80014D08(s32); /* extern */
? func_8001AC10(s32); /* extern */
? func_8003680C(Player *, s16, Player *, s16, Player *); /* extern */
? set_places(); /* extern */
// ? func_80008424(s32, ?32, Player *); /* extern */
// ? func_8000929C(s32, Player *); /* extern */
// ? func_800099EC(s32, Player *); /* extern */
// ? func_8000B140(s32); /* extern */
// s32 func_8000B7E4(s32, u16); /* extern */
// ? func_8000BBD8(s32, ?32, s16, f32 *); /* extern */
// ? func_8000D3B8(s32); /* extern */
// ? func_8000D438(s32, u16); /* extern */
// ? func_80011E38(s32); /* extern */
// ? func_80012DC0(s32, Player *); /* extern */
// ? func_80013054(); /* extern */
// ? func_800131DC(s32); /* extern */
// ? func_80013854(Player *); /* extern */
// ? func_800148C4(s32, Player *); /* extern */
// ? func_8001490C(s32, u16 *, f32 *, u16 *); /* extern */
// ? func_80014A18(s32, Player *); /* extern */
// ? func_80014A60(s32); /* extern */
// ? func_80014B6C(s32, Player *); /* extern */
// ? func_80014BB4(s32); /* extern */
// ? func_80014CC0(s32, Player *); /* extern */
// ? func_80014D08(s32); /* extern */
// ? func_8001AC10(s32); /* extern */
// ? func_8003680C(Player *, s16, Player *, s16, Player *); /* extern */
// ? set_places(); /* extern */
extern ? D_0D009418;
extern ? D_0D009568;
extern ? D_0D0096B8;
@@ -4468,153 +4453,89 @@ void func_8000DF8C(s32 arg0) {
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000DF8C.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_801641F8;
extern ? D_801642D8;
struct unk_41F8 {
s32 unk0;
s32 unk4;
s32 unk8;
u16 unkC;
u16 unkE;
s16 unk10;
s32 unk14;
s32 unk18;
};
extern struct unk_41F8 D_801641F8[];
? func_8000ED14(s16 arg0, s16 arg1) {
? *temp_a2;
? *phi_a2;
s32 phi_v0;
s32 func_8000ED14(s32, s16);
s32 func_8000ED14(s32 arg0, s16 arg1) {
s32 i;
s32 a2 = 0;
phi_a2 = &D_801641F8;
phi_v0 = 0;
loop_1:
if (phi_a2->unkC == 0) {
phi_a2->unkC = 1;
phi_a2->unkE = arg0;
phi_a2->unk10 = arg1;
phi_a2->unk14 = 0;
phi_v0 = 1;
} else {
temp_a2 = phi_a2 + 0x1C;
phi_a2 = temp_a2;
if (temp_a2 != &D_801642D8) {
goto loop_1;
for (i = 0; i < 8; i++) {
if (D_801641F8[i].unkC == 0) {
D_801641F8[i].unkC = 1;
D_801641F8[i].unkE = arg0;
D_801641F8[i].unk10 = arg1;
D_801641F8[i].unk14 = 0;
a2 = 1;
break;
}
}
if (phi_v0 == 0) {
if (a2 == 0) {
return -2;
}
return 0;
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000ED14.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_8000ED14(?); // extern
extern ? gActorList;
extern struct Actor gActorList[ACTOR_LIST_SIZE];
s32 func_8000ED80(s32 arg0) {
if (*(&gActorList + (arg0 * 0x70)) != 8) {
struct Actor *actor = &gActorList[arg0];
if (actor->type != 8) {
return -1;
}
return func_8000ED14(0);
return func_8000ED14(arg0, 0);
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000ED80.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_8000ED14(?); // extern
extern ? gActorList;
s32 func_8000EDC8(s32 arg0) {
if (*(&gActorList + (arg0 * 0x70)) != 7) {
struct Actor *actor = &gActorList[arg0];
if (actor->type != 7) {
return -1;
}
return func_8000ED14(1);
return func_8000ED14(arg0, 1);
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000EDC8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_8000ED14(?); // extern
extern ? gActorList;
s32 func_8000EE10(s32 arg0) {
if (*(&gActorList + (arg0 * 0x70)) != 0x2A) {
struct Actor *actor = &gActorList[arg0];
if (actor->type != 42) {
return -1;
}
return func_8000ED14(2);
return func_8000ED14(arg0, 2);
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000EE10.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_801641F8;
extern ? D_801642D8;
void func_8000EE58(s32 arg0) {
? *temp_v1;
void *temp_v0;
void *temp_v0_2;
void *temp_v0_3;
? *phi_v1;
struct unk_41F8 *phi;
s32 i;
phi_v1 = &D_801641F8;
do {
temp_v0 = phi_v1 + 0x1C;
if (arg0 == phi_v1->unkE) {
phi_v1->unkC = 0;
phi_v1->unkE = 0x3E8;
for (i = 0; i < 8; i++) {
phi = &D_801641F8[i];
if (arg0 == phi->unkE) {
phi->unkC = 0;
phi->unkE = 1000;
}
if (arg0 == phi_v1->unk2A) {
temp_v0->unkC = 0;
temp_v0->unkE = 0x3E8;
}
temp_v0_2 = phi_v1 + 0x38;
if (arg0 == phi_v1->unk46) {
temp_v0_2->unkC = 0;
temp_v0_2->unkE = 0x3E8;
}
temp_v0_3 = phi_v1 + 0x54;
if (arg0 == phi_v1->unk62) {
temp_v0_3->unkC = 0;
temp_v0_3->unkE = 0x3E8;
}
temp_v1 = phi_v1 + 0x70;
phi_v1 = temp_v1;
} while (temp_v1 != &D_801642D8);
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000EE58.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_801641F8;
extern ? D_801642D8;
void func_8000EEDC(void) {
? *temp_v1;
? *phi_v1;
struct unk_41F8 *phi;
s32 i;
phi_v1 = &D_801641F8;
do {
temp_v1 = phi_v1 + 0x70;
temp_v1->unk-48 = 0;
temp_v1->unk-46 = 0x3E8;
temp_v1->unk-2C = 0;
temp_v1->unk-2A = 0x3E8;
temp_v1->unk-10 = 0;
temp_v1->unk-E = 0x3E8;
temp_v1->unk-64 = 0;
temp_v1->unk-62 = 0x3E8;
phi_v1 = temp_v1;
} while (temp_v1 != &D_801642D8);
for (i = 0; i < 8; i++) {
phi = &D_801641F8[i];
phi->unkC = 0;
phi->unkE = 1000;
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000EEDC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
@@ -4694,9 +4615,7 @@ block_14:
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000EF20.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern s16 D_80164670;
extern s16 D_80164670;
extern s16 D_80164672;
extern s16 D_80164674;
extern s16 D_80164676;
@@ -4715,9 +4634,6 @@ void func_8000F0E0(void) {
D_80164676 = 0;
D_8016467E = 0;
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000F0E0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
@@ -7852,20 +7768,26 @@ loop_4:
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800146B8.s")
#endif
typedef struct {
s32 innards[0xD];
} somestruct;
//extern s32 D_80163984;
extern somestruct D_80163818[];
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
//? func_800139E4(f32, f32, ?, ?, ? *, s16 *); // extern
extern f64 D_800ED1B8;
extern f64 D_800ED1C0;
extern f64 D_800ED1C8;
extern s32 D_80163818;
//extern s32 D_80163818;
void func_800139E4(f32 arg0, f32 arg1, s32 arg2, f32 arg3, somestruct *arg4, struct TrackWayPoint *arg5);
void func_800147E0(void) {
f64 temp_f0;
s32 phi_a2;
f64 temp_f0 = (gCCSelection * D_800ED1B8) / 216.0;
s32 phi_a2 = 7;
temp_f0 = (gCCSelection * D_800ED1B8) / 216.0;
phi_a2 = 7;
//phi_a2 = 7;
//temp_f0 = (gCCSelection * D_800ED1B8) / 216.0;
if (gModeSelection == TIME_TRIALS) {
phi_a2 = 8;
}
@@ -7875,37 +7797,21 @@ void func_800147E0(void) {
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800147E0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80013D20(? *); // extern
extern ? D_80163818;
extern ? D_80163984;
void func_80013D20(void*); // extern
void func_8001487C(void) {
? *temp_s0;
? *phi_s0;
phi_s0 = &D_80163818;
do {
func_80013D20(phi_s0);
temp_s0 = phi_s0 + 0x34;
phi_s0 = temp_s0;
} while (temp_s0 != &D_80163984);
s32 loopIndex;
for(loopIndex = 0; loopIndex < 7; loopIndex++) {
func_80013D20(&D_80163818[loopIndex]);
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001487C.s")
#endif
void func_80013F7C(s32 playerId, Player *player, void *arg2, f32 arg3, f32 arg4, s32 arg5, u32 arg6);
extern s32 D_80163818;
void func_800148C4(s32 arg0, s32 arg1) {
func_80013F7C(arg0, arg1, &D_80163818, 55.0f, 12.5f, 7, 0x51018003);
}
extern s32 D_80163818;
void func_8001490C(s32 arg0) {
func_800146B8(arg0, 7, &D_80163818);
}
@@ -7933,34 +7839,21 @@ void func_80014934(void) {
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014934.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80013D20(? *); // extern
extern ? D_80163988;
extern ? D_80163AF4;
extern somestruct D_80163988[];
void func_800149D0(void) {
? *temp_s0;
? *phi_s0;
s32 i;
phi_s0 = &D_80163988;
do {
func_80013D20(phi_s0);
temp_s0 = phi_s0 + 0x34;
phi_s0 = temp_s0;
} while (temp_s0 != &D_80163AF4);
for (i = 0; i < 7; i++) {
func_80013D20(&D_80163988[i]);
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800149D0.s")
#endif
extern s32 D_80163988;
void func_80014A18(s32 arg0, s32 arg1) {
func_80013F7C(arg0, arg1, &D_80163988, 70.0f, 12.5f, 7, 0x51018002);
}
extern s32 D_80163988;
void func_80014A60(s32 arg0) {
func_800146B8(arg0, 7, &D_80163988);
@@ -7989,35 +7882,20 @@ void func_80014A88(void) {
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014A88.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80013D20(? *); // extern
extern ? D_80163AF8;
extern ? D_80163C64;
extern somestruct D_80163AF8[];
void func_80014B24(void) {
? *temp_s0;
? *phi_s0;
s32 i;
phi_s0 = &D_80163AF8;
do {
func_80013D20(phi_s0);
temp_s0 = phi_s0 + 0x34;
phi_s0 = temp_s0;
} while (temp_s0 != &D_80163C64);
for (i = 0; i < 7; i++) {
func_80013D20(&D_80163AF8[i]);
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014B24.s")
#endif
extern s32 D_80163AF8;
void func_80014B6C(s32 arg0, s32 arg1) {
func_80013F7C(arg0, arg1, &D_80163AF8, 55.0f, 12.5f, 7, 0x51018004);
}
extern s32 D_80163AF8;
void func_80014BB4(s32 arg0) {
func_800146B8(arg0, 7, &D_80163AF8);
}
@@ -8045,35 +7923,20 @@ void func_80014BDC(void) {
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014BDC.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80013D20(? *); // extern
extern ? D_80163C68;
extern ? D_80163DD4;
extern somestruct D_80163C68[];
void func_80014C78(void) {
? *temp_s0;
? *phi_s0;
s32 i;
phi_s0 = &D_80163C68;
do {
func_80013D20(phi_s0);
temp_s0 = phi_s0 + 0x34;
phi_s0 = temp_s0;
} while (temp_s0 != &D_80163DD4);
for (i = 0; i < 7; i++) {
func_80013D20(&D_80163C68[i]);
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014C78.s")
#endif
extern s32 D_80163C68;
void func_80014CC0(s32 arg0, s32 arg1) {
func_80013F7C(arg0, arg1, &D_80163C68, 11.5f, 8.5f, 7, 0x51018005);
}
extern s32 D_80163C68;
void func_80014D08(s32 arg0) {
func_800146B8(arg0, 7, &D_80163C68);
}
@@ -8303,7 +8166,7 @@ UNUSED void func_8001530C(void) {
}
#ifdef MIPS_TO_C
#ifdef NON_MATCHING
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
//? func_80015390(Camera *, Player *, ?, s32); /* extern */
void func_80015390(Camera*, Player*, s32,s32);
+2 -2
View File
@@ -745,7 +745,7 @@ void update_race_position_data(void) {
void func_8028F474(void) {
s32 i;
switch (D_800DC510) {
switch (D_800DC510) {
case 3:
case 4:
case 5:
@@ -757,7 +757,7 @@ void func_8028F474(void) {
case 2:
func_800097E0();
break;
}
}
}
void func_8028F4E8(void) {