some matches (#391)

This commit is contained in:
MegaMech
2023-08-30 22:45:51 -06:00
committed by GitHub
parent d08a8b6b29
commit 6562421673
6 changed files with 145 additions and 675 deletions
+143 -231
View File
@@ -1782,7 +1782,7 @@ extern ? D_80163418;
extern ? D_80163438;
extern s16 D_8016344A;
extern s32 D_80163488;
extern ? D_801634F8;
//extern ? D_801634F8;
extern ? D_801634FC;
extern ? D_80163504;
extern u16 D_801646CC;
@@ -3124,7 +3124,7 @@ s16 func_8000D33C(f32 posX, f32 posY, f32 posZ, s16 wayPointIndex, s32 pathIndex
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern ? D_801634F8;
//extern ? D_801634F8;
f32 func_8000D3B8(s32 arg0) {
f32 temp_f0;
@@ -4114,142 +4114,91 @@ void func_8000F2BC(struct TrackWayPoint *arg0, size_t size) {
bzero((void *) arg0, size << 3);
}
#ifdef MIPS_TO_C
//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9
struct _struct_D_800DD9D0_0x10 {
/* 0x00 */ u16 unk0; /* inferred */
/* 0x02 */ u16 unk2; /* inferred */
/* 0x04 */ u16 unk4; /* inferred */
/* 0x06 */ u16 unk6; /* inferred */
/* 0x08 */ u16 unk8; /* inferred */
/* 0x0A */ char padA[6]; /* maybe part of unk8[4]? */
}; /* size = 0x10 */
/* 0x00 */ u16 unk0;
/* 0x02 */ u16 unk2;
/* 0x04 */ u16 unk4;
/* 0x06 */ u16 unk6;
/* 0x08 */ u16 unk8;
/* 0x0A */ char padA[6];
}; // size 0x10
extern uintptr_t *D_80163598;
void func_8000DD78(); /* extern */
void func_8000EEDC(); /* extern */
void func_8000F2BC(struct TrackWayPoint *, s32); /* extern */
void func_800100F0(s32); /* extern */
void func_80010E6C(s32); /* extern */
void func_800120C8(); /* extern */
void func_80012190(); /* extern */
void func_800127E0(); /* extern */
void func_800132F4(); /* extern */
void func_800147E0(); /* extern */
void func_80014934(); /* extern */
void func_80014A88(); /* extern */
void func_80014BDC(); /* extern */
extern s32 D_80163598;
static struct _struct_D_800DD9D0_0x10 D_800DD9D0[0]; /* unable to generate initializer */
s16 gCurrentCourseId; /* unable to generate initializer */
// An array of 21 items. The final element is for podium ceremony.
extern struct _struct_D_800DD9D0_0x10 D_800DD9D0[];
void func_8000F2DC(void) {
s16 **var_s5;
s16 **var_s6;
s16 temp_v0_3;
s32 *var_s1;
s32 *var_s1_2;
s32 *var_s1_3;
s32 temp_v0_2;
s32 var_s0;
s32 var_s0_2;
struct TrackWayPoint **var_s2;
struct TrackWayPoint **var_s2_2;
struct TrackWayPoint **var_s3;
struct TrackWayPoint **var_s3_2;
struct TrackWayPoint **var_s4;
struct TrackWayPoint **var_s4_2;
struct _struct_D_800DD9D0_0x10 *temp_v0;
u16 **var_s7;
temp_v0 = &D_800DD9D0[gCurrentCourseId];
D_80163368->unk0 = (s32) temp_v0->unk0;
D_80163368->unk4 = (s32) temp_v0->unk2;
D_80163368->unk8 = (s32) temp_v0->unk4;
D_80163368->unkC = (s32) temp_v0->unk6;
D_80163598 = get_next_available_memory_addr(temp_v0->unk8 * 4);
var_s5 = D_801645A0;
var_s7 = D_80164590;
var_s6 = D_80164580;
var_s2 = D_80164570;
var_s4 = D_80164560;
var_s3 = D_80164550;
var_s1 = D_80163368;
do {
*var_s3 = get_next_available_memory_addr(*var_s1 * 8);
*var_s4 = get_next_available_memory_addr(*var_s1 * 8);
*var_s2 = get_next_available_memory_addr(*var_s1 * 8);
*var_s6 = get_next_available_memory_addr(*var_s1 * 2);
*var_s7 = get_next_available_memory_addr(*var_s1 * 2);
temp_v0_2 = get_next_available_memory_addr(*var_s1 * 2);
var_s5 += 4;
var_s1 += 4;
var_s3 += 4;
var_s4 += 4;
var_s2 += 4;
var_s6 += 4;
var_s7 += 4;
var_s5->unk-4 = temp_v0_2;
} while ((u32) var_s5 < (u32) gPathIndexByPlayerId);
D_80164490 = *D_80164550;
D_801631D0 = *D_80164560;
D_801631D4 = *D_80164570;
D_801631D8 = *D_80164580;
struct _struct_D_800DD9D0_0x10 *ptr = &D_800DD9D0[gCurrentCourseId];
s32 temp;
s32 i;
D_80163368[0] = (s32) ptr->unk0;
D_80163368[1] = (s32) ptr->unk2;
D_80163368[2] = (s32) ptr->unk4;
D_80163368[3] = (s32) ptr->unk6;
temp = ptr->unk8;
D_80163598 = (uintptr_t *) get_next_available_memory_addr(temp * 4);
// Podium ceremony appears to allocate 1 * 8 bytes of data. Which would be aligned to 0x10.
for (i = 0; i < 4; i++) {
D_80164550[i] = get_next_available_memory_addr(D_80163368[i] * 8);
D_80164560[i] = get_next_available_memory_addr(D_80163368[i] * 8);
D_80164570[i] = get_next_available_memory_addr(D_80163368[i] * 8);
D_80164580[i] = get_next_available_memory_addr(D_80163368[i] * 2);
D_80164590[i] = get_next_available_memory_addr(D_80163368[i] * 2);
D_801645A0[i] = get_next_available_memory_addr(D_80163368[i] * 2);
}
D_80164490 = D_80164550[0];
D_801631D0 = D_80164560[0];
D_801631D4 = D_80164570[0];
D_801631D8 = D_80164580[0];
D_801631DC = *D_80164590;
var_s2_2 = D_80164570;
var_s4_2 = D_80164560;
var_s3_2 = D_80164550;
var_s1_2 = D_80163368;
D_801645E0 = *D_801645A0;
do {
func_8000F2BC(*var_s3_2, *var_s1_2);
func_8000F2BC(*var_s4_2, *var_s1_2);
func_8000F2BC(*var_s2_2, *var_s1_2);
var_s2_2 += 4;
var_s1_2 += 4;
var_s3_2 += 4;
var_s4_2 += 4;
} while ((u32) var_s2_2 < (u32) D_80164580);
var_s0 = 0;
do {
var_s0 += 1;
} while (var_s0 < 4);
var_s1_3 = D_80163368;
var_s0_2 = 0;
do {
if (*var_s1_3 >= 2) {
func_800100F0(var_s0_2);
func_80010218(var_s0_2);
func_800107C4(var_s0_2);
func_80010DBC(var_s0_2);
func_80010E6C(var_s0_2);
D_801645E0 = D_801645A0[0];
// zero allocated memory?
// @warning does not appear to zero all the above allocated variables.
for (i = 0; i < 4; i++) {
func_8000F2BC(D_80164550[i], D_80163368[i]);
func_8000F2BC(D_80164560[i], D_80163368[i]);
func_8000F2BC(D_80164570[i], D_80163368[i]);
}
// Skips several cpu cycles.
for (i = 0; i < 4; i++) {}
for (i = 0; i < 4; i++) {
if (D_80163368[i] >= 2) {
func_800100F0(i);
func_80010218(i);
func_800107C4(i);
func_80010DBC(i);
func_80010E6C(i);
}
var_s0_2 += 1;
var_s1_3 += 4;
} while (var_s0_2 != 4);
temp_v0_3 = gCurrentCourseId;
}
D_80164430 = *gWaypointCountByPathIndex;
switch (temp_v0_3) { /* irregular */
case 11:
func_800120C8();
func_800127E0();
break;
case 18:
func_80012190();
func_800132F4();
break;
case 10:
func_800147E0();
func_80014934();
func_80014A88();
func_80014BDC();
break;
switch (gCurrentCourseId) {
case 11:
func_800120C8();
func_800127E0();
break;
case 18:
func_80012190();
func_800132F4();
break;
case 10:
func_800147E0();
func_80014934();
func_80014A88();
func_80014BDC();
break;
}
func_8000DD78();
func_8000EEDC();
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000F2DC.s")
#endif
#ifdef MIPS_TO_C
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
@@ -4303,7 +4252,7 @@ extern ? D_801634D8;
extern s16 D_801634EC;
extern s32 D_801634F0;
extern s32 D_801634F4;
extern ? D_801634F8;
//extern ? D_801634F8;
extern u16 D_801637BC;
extern s16 D_80164358;
extern u16 D_8016435A;
@@ -5527,7 +5476,7 @@ extern ? D_80162EB8;
extern s16 D_801630E8;
extern s16 D_801632D0;
extern s16 D_801632E8;
extern ? D_801634F8;
//extern ? D_801634F8;
extern u16 gNearestWaypointByPlayerId;
s16 gCurrentCourseId; /* unable to generate initializer */
@@ -6997,8 +6946,8 @@ void func_80014D30(s32 cameraId, s32 pathIndex) {
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
extern s32 D_80163238;
extern s16 gNearestWaypointByCameraId;
extern s16 D_80164670;
extern s16 D_80164678;
extern s16 D_80164670[];
//extern s16 D_80164678;
extern s16 D_80164680;
extern ? D_801646C0;
extern s32 D_801646C8;
@@ -7015,8 +6964,8 @@ void func_80014DE4(s32 arg0) {
temp_v0 = arg0 * 2;
D_801646CC = 0;
temp_v1 = temp_v0 + &D_80164678;
*temp_v1 = *(&D_80164670 + temp_v0);
temp_v1 = D_80164678[temp_v0];
*temp_v1 = D_80164670[temp_v0];
temp_a1 = gModeSelection;
if ((temp_a1 != TIME_TRIALS) && ((gCupCourseSelection == CUP_COURSE_ONE) || (gDemoMode))) {
goto block_8;
@@ -10505,105 +10454,72 @@ block_146:
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001AC10.s")
#endif
#ifdef MIPS_TO_C
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
void func_8000F628(); /* extern */
void func_8003680C(void *, ?); /* extern */
extern ? D_80163410;
extern ? D_801634F8;
extern u16 D_80163410[]; // One per player?
typedef struct {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
} Test;
extern Test D_801634F8[];
void func_8001BE78(void) {
? *sp54;
? *var_s4;
? *var_v0;
s32 var_s5;
struct TrackWayPoint **var_s7;
struct TrackWayPoint *temp_s0;
u16 **var_fp;
u16 *var_s3;
u16 *var_s6;
u16 var_s2;
void *temp_s1;
Player* temp_s1;
struct TrackWayPoint* temp_s0;
s32 i;
func_8000F628();
var_v0 = &D_80163410;
var_fp = D_80164590;
var_s7 = D_80164550;
var_s3 = gNearestWaypointByPlayerId;
var_s4 = &D_801634F8;
var_s6 = gPathIndexByPlayerId;
var_s2 = 0;
var_s5 = 0;
do {
temp_s1 = var_s5 + gPlayerOne;
temp_s1->unk0 = (u16) (temp_s1->unk0 & 0xDFFF);
*var_s6 = var_s2;
var_s4->unkC = 0.0f;
var_s4->unk4 = 0.0f;
var_s4->unk0 = 0.0f;
switch (var_s2) { /* irregular */
case 0:
*var_s3 = 6;
break;
case 1:
*var_s3 = 1;
break;
case 2:
*var_s3 = 6;
break;
case 3:
*var_s3 = 1;
break;
for (i = 0; i < 4; i++) {
temp_s1 = &gPlayerOne[i];
temp_s1->unk_000 &= 0xDFFF;
gPathIndexByPlayerId[i] = i;
D_801634F8[i].unkC = 0.0f;
D_801634F8[i].unk4 = 0.0f;
D_801634F8[i].unk0 = 0.0f;
switch (i) {
case 0:
gNearestWaypointByPlayerId[i] = 6;
break;
case 1:
gNearestWaypointByPlayerId[i] = 1;
break;
case 2:
gNearestWaypointByPlayerId[i] = 6;
break;
case 3:
gNearestWaypointByPlayerId[i] = 1;
break;
}
temp_s0 = &(*var_s7)[*var_s3];
temp_s1->unk14 = (f32) temp_s0->wayPointX;
sp54 = var_v0;
temp_s1->unk18 = (f32) (func_802AE1C0((f32) temp_s0->wayPointX, 2000.0f, (f32) temp_s0->wayPointZ) + temp_s1->unk70);
temp_s1->unk1C = (f32) temp_s0->wayPointZ;
temp_s1->unk2E = (s16) **var_fp;
temp_s0 = &D_80164550[i][gNearestWaypointByPlayerId[i]];
temp_s1->pos[0] = (f32) temp_s0->wayPointX;
temp_s1->pos[1] = func_802AE1C0((f32) temp_s0->wayPointX, 2000.0f, (f32) temp_s0->wayPointZ) + temp_s1->boundingBoxSize;
temp_s1->pos[2] = (f32) temp_s0->wayPointZ;
temp_s1->unk_02C[1] = (s16) *D_80164590[i];
func_8003680C(temp_s1, 0);
var_s2 += 1;
var_s5 += 0xDD8;
var_s6 += 2;
var_s4 += 0x10;
var_s3 += 2;
var_s7 += 4;
var_fp += 4;
var_v0 += 2;
var_v0->unk-2 = 0;
} while (var_s2 != 4);
temp_s1++;
D_80163410[i] = 0;
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001BE78.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
void init_seg_8028DF00(); // extern
void func_80014DE4(?); // extern
void func_8001BE78(); // extern
extern f32 D_800ED4B4;
extern f32 D_800ED4B8;
extern f32 D_800ED4BC;
extern f32 D_800ED4C0;
extern f32 D_800ED4C4;
extern f32 D_800ED4C8;
extern f32 D_800ED4CC;
extern f32 D_800ED4D0;
extern f32 D_800ED4D4;
extern ? D_80163418;
extern ? D_80163428;
extern ? D_80163438;
extern s16 D_8016347C;
extern s16 D_8016347E;
extern s32 D_80163480;
extern s32 D_80163484;
typedef struct {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
} Struct80163418;
extern Struct80163418 D_80163418;
extern Struct80163418 D_80163428;
extern Struct80163418 D_80163438;
void func_8001C05C(void) {
f32 temp_f0;
init_seg_8028DF00();
gCurrentCourseId = 0x14;
gCurrentCourseId = COURSE_AWARD_CEREMONY;
D_8016347C = 0;
D_8016347E = 0;
D_80163480 = 0;
@@ -10611,23 +10527,19 @@ void func_8001C05C(void) {
func_8000F2DC();
func_80014DE4(0);
func_8001BE78();
temp_f0 = D_800ED4B4;
D_80163428.unk0 = temp_f0;
D_80163418.unk0 = D_800ED4B8;
D_80163438.unk0 = D_800ED4BC;
D_80163428.unk4 = temp_f0;
D_80163418.unk4 = D_800ED4C0;
D_80163438.unk4 = D_800ED4C4;
D_80163428.unk8 = temp_f0;
D_80163418.unk8 = D_800ED4C8;
D_80163438.unk8 = D_800ED4CC;
D_80163418.unk0 = -3202.475097656f;
D_80163428.unk0 = 19.166999817f;
D_80163438.unk0 = -477.623992920f;
D_80163418.unk4 = -3205.080078125f;
D_80163428.unk4 = 19.166999817f;
D_80163438.unk4 = -462.851989746f;
D_80163418.unk8 = -3199.870117188f;
D_80163428.unk8 = 19.166999817f;
D_80163438.unk8 = -492.395996094f;
D_80163418.unkC = -2409.197021484f;
D_80163428.unkC = 0.0f;
D_80163418.unkC = D_800ED4D0;
D_80163438.unkC = D_800ED4D4;
D_80163438.unkC = -355.253997803;
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001C05C.s")
#endif
#ifdef MIPS_TO_C
//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9