mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-06-23 17:35:30 -04:00
some matches (#391)
This commit is contained in:
+143
-231
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user