More miscellaneous matches (#246)

And more mips_to_c refreshes

Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
This commit is contained in:
Tyler McGavran
2022-07-18 23:40:17 -04:00
committed by GitHub
parent bf4ca94711
commit fb010e4186
12 changed files with 1882 additions and 2755 deletions
+201 -248
View File
@@ -125,12 +125,12 @@ s32 func_800061DC(Vec3f arg0, f32 arg1, s32 arg2) {
}
#ifdef MIPS_TO_C
//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
extern ? D_80163258;
extern ? D_80163270;
extern ? D_80163288;
void func_800065D0(s32 arg0, void *arg1) {
void func_800065D0(s32 arg0, Player *player) {
Player *temp_a3;
Player *temp_a3_2;
s16 temp_t2;
@@ -142,7 +142,7 @@ void func_800065D0(s32 arg0, void *arg1) {
u16 temp_t9;
temp_v0 = arg0 * 2;
temp_t2 = (s16) ((s16) arg1->unk2E / 182) - (s16) ((s16) D_80164590[(s16) gPathIndexByPlayerId[arg0]][gNearestWaypointByPlayerId[arg0]] / 182);
temp_t2 = (s16) ((s16) player->unk_02E / 182) - (s16) ((s16) D_80164590[(s16) gPathIndexByPlayerId[arg0]][gNearestWaypointByPlayerId[arg0]] / 182);
var_t1 = temp_t2;
if (temp_t2 < 0) {
var_t1 = temp_t2 * -1;
@@ -934,7 +934,7 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800070F4.s")
#endif
#ifdef MIPS_TO_C
//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
extern ? D_801643D8;
extern ? D_801643E0;
@@ -1025,25 +1025,25 @@ void func_800074D4(void) {
var_t0 = 0;
var_a0_2 = &gPlayers[0];
do {
if ((var_a0_2->unk_000 & 0x800) != 0) {
if (var_a0_2->unk_000 & 0x800) {
(&sp68[0])[var_v0] = var_t0;
temp_t9 = &gCourseCompletionPercentByRank[var_v0];
var_v0 += 1;
*temp_t9 = -gTimePlayerLastTouchedFinishLine[var_t0].unk0;
}
if ((var_a0_2->unkDD8 & 0x800) != 0) {
if (var_a0_2->unkDD8 & 0x800) {
(&sp68[0])[var_v0] = var_t0 + 1;
temp_t8 = &gCourseCompletionPercentByRank[var_v0];
var_v0 += 1;
*temp_t8 = -gTimePlayerLastTouchedFinishLine[var_t0].unk4;
}
if ((var_a0_2->unk1BB0 & 0x800) != 0) {
if (var_a0_2->unk1BB0 & 0x800) {
(&sp68[0])[var_v0] = var_t0 + 2;
temp_t7 = &gCourseCompletionPercentByRank[var_v0];
var_v0 += 1;
*temp_t7 = -gTimePlayerLastTouchedFinishLine[var_t0].unk8;
}
if ((var_a0_2->unk2988 & 0x800) != 0) {
if (var_a0_2->unk2988 & 0x800) {
(&sp68[0])[var_v0] = var_t0 + 3;
temp_t6 = &gCourseCompletionPercentByRank[var_v0];
var_v0 += 1;
@@ -1056,25 +1056,25 @@ void func_800074D4(void) {
temp_t1 = var_v0;
var_a0_3 = &gPlayers[0];
do {
if ((var_a0_3->unk_000 & 0x800) == 0) {
if (!(var_a0_3->unk_000 & 0x800)) {
(&sp68[0])[var_v0] = var_t0_2;
temp_t6_2 = &gCourseCompletionPercentByRank[var_v0];
var_v0 += 1;
*temp_t6_2 = gCourseCompletionPercentByPlayerId[var_t0_2].unk0;
}
if ((var_a0_3->unkDD8 & 0x800) == 0) {
if (!(var_a0_3->unkDD8 & 0x800)) {
(&sp68[0])[var_v0] = var_t0_2 + 1;
temp_t9_2 = &gCourseCompletionPercentByRank[var_v0];
var_v0 += 1;
*temp_t9_2 = gCourseCompletionPercentByPlayerId[var_t0_2].unk4;
}
if ((var_a0_3->unk1BB0 & 0x800) == 0) {
if (!(var_a0_3->unk1BB0 & 0x800)) {
(&sp68[0])[var_v0] = var_t0_2 + 2;
temp_t8_2 = &gCourseCompletionPercentByRank[var_v0];
var_v0 += 1;
*temp_t8_2 = gCourseCompletionPercentByPlayerId[var_t0_2].unk8;
}
if ((var_a0_3->unk2988 & 0x800) == 0) {
if (!(var_a0_3->unk2988 & 0x800)) {
(&sp68[0])[var_v0] = var_t0_2 + 3;
temp_t7_2 = &gCourseCompletionPercentByRank[var_v0];
var_v0 += 1;
@@ -1091,7 +1091,7 @@ void func_800074D4(void) {
var_v0_2 = var_a3_2;
if (var_a3_2 < temp_t1) {
temp_a0 = &gCourseCompletionPercentByRank[var_t0_3];
if (((temp_t1 - var_a3_2) & 1) != 0) {
if ((temp_t1 - var_a3_2) & 1) {
temp_t4 = &gCourseCompletionPercentByRank[var_a3_2];
temp_f2 = *temp_t4;
temp_f0 = *temp_a0;
@@ -1151,7 +1151,7 @@ block_41:
var_v0_3 = var_a3_3;
if (var_a3_3 < 8) {
temp_a0_2 = &gCourseCompletionPercentByRank[var_t0_4];
if (((8 - var_a3_3) & 1) != 0) {
if ((8 - var_a3_3) & 1) {
temp_t4_2 = &gCourseCompletionPercentByRank[var_a3_3];
temp_f2_4 = *temp_t4_2;
temp_f0_3 = *temp_a0_2;
@@ -1454,176 +1454,147 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80007FA4.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80007D04(f32, s32, void *, s32, void *); // extern
? func_80007FA4(f32, void *, f32, void *); // extern
s32 func_800088D8(f32, s32, s16, s16, void *); // extern
? func_80030FC8(f32, void *, void *, s32, void *); // extern
? func_80031F48(f32, void *, ?, s32, void *); // extern
extern f32 D_800ECF9C;
extern f32 D_800ECFA0;
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
? func_80007D04(f32, s32, Player *, s32, Player *); /* extern */
? func_80007FA4(f32, Player *, f32, Player *); /* extern */
s32 func_800088D8(f32, s32, s16, s16, Player *); /* extern */
extern ? D_801631E0;
extern ? D_80163330;
extern ? D_80163350;
extern ? D_801634D8;
extern ? D_80164392;
extern ? D_8016440A;
s16 gCurrentCourseId; /* unable to generate initializer */
void func_80008424(s32 arg0, f32 arg1, void *arg2) {
void func_80008424(s32 arg0, f32 arg1, Player *player) {
f32 sp34;
void *sp28;
s32 sp28;
s32 sp1C;
f32 temp_f12;
f32 temp_f2;
f32 var_f0;
f32 var_f12;
s32 temp_t5;
s32 temp_v0;
s32 temp_v0_2;
s32 temp_v0_3;
s32 temp_v0_5;
s32 temp_v1;
s32 var_a1;
u16 temp_v0_4;
void *temp_a0;
void *temp_a3;
f32 phi_f0;
void *phi_a1;
f32 phi_f12;
void *phi_a3;
temp_v1 = arg2->unkBC;
temp_f12 = arg1;
temp_a3 = arg2;
temp_f2 = arg2->unk94;
phi_a3 = temp_a3;
phi_f12 = temp_f12;
phi_f12 = temp_f12;
if (((temp_v1 & 0x80) == 0) && ((temp_v1 & 0x40) == 0) && ((temp_v1 << 0xE) >= 0) && (temp_v0 = arg2->unkC, ((temp_v0 << 9) >= 0)) && ((temp_v0 << 7) >= 0) && ((temp_v0 & 2) == 0) && ((temp_v0 & 4) == 0)) {
if (gCurrentCourseId == 0x14) {
func_80007FA4(temp_f12, arg2, temp_f2, temp_a3);
temp_v1 = player->unk_0BC;
var_f12 = arg1;
temp_f2 = player->unk_094;
if (!(temp_v1 & 0x80) && !(temp_v1 & 0x40) && ((temp_v1 << 0xE) >= 0) && (temp_v0 = player->unk_00C, ((temp_v0 << 9) >= 0)) && ((temp_v0 << 7) >= 0) && !(temp_v0 & 2) && !(temp_v0 & 4)) {
if (gCurrentCourseId == 0x0014) {
func_80007FA4(var_f12, player, temp_f2, player);
return;
}
temp_t5 = arg0 * 2;
if ((*(&D_801634D8 + temp_t5) == 1) && (temp_a0 = temp_a3, ((temp_v1 & 0x80000200) == 0))) {
arg2 = temp_a3;
func_80031F48(temp_f12, temp_a0, 0x41200000, temp_t5, temp_a3);
if (arg2->unk9C == 0.0) {
arg2->unk34 = 0.0f;
arg2->unk3C = 0.0f;
return;
}
// Duplicate return node #55. Try simplifying control flow for better match
return;
}
temp_v0_2 = gCCSelection;
phi_f0 = D_800ECF9C;
if (temp_v0_2 != CC_50) {
if (temp_v0_2 != CC_100) {
if (temp_v0_2 != CC_150) {
if (temp_v0_2 != CC_EXTRA) {
}
} else {
phi_f0 = 3.75f;
}
if ((*(&D_801634D8 + temp_t5) == (s16) 1) && !(temp_v1 & 0x80000200)) {
func_80031F48(player, 10.0f);
if ((f64) player->unk_09C == 0.0) {
player->unk_034[0] = 0.0f;
player->unk_034[2] = 0.0f;
}
} else {
phi_f0 = 2.5f;
}
if (temp_f2 < phi_f0) {
temp_a3->unkBC = temp_v1 & 0xFFDFFFFF;
func_80030FC8(temp_f12, temp_a3, arg2, temp_t5, temp_a3);
return;
}
if ((temp_a3->unk0 & 0x800) != 0) {
if (temp_f2 < temp_f12) {
temp_a3->unkBC = temp_v1 & 0xFFDFFFFF;
func_80030FC8(temp_f12, temp_a3, arg2, temp_t5, temp_a3);
temp_v0_2 = gCCSelection;
var_f0 = 3.3333333f;
switch (temp_v0_2) { /* irregular */
case 1:
case 3:
break;
case 0:
var_f0 = 2.5f;
break;
case 2:
var_f0 = 3.75f;
break;
}
if (temp_f2 < var_f0) {
player->unk_0BC = temp_v1 & 0xFFDFFFFF;
func_80030FC8(player);
return;
}
temp_a3->unkBC = temp_v1 & 0xFFDFFFFF;
func_80031F48(temp_f12, temp_a3, 0x3F800000, temp_t5, temp_a3);
return;
}
if ((*(&D_801631E0 + temp_t5) == 1) && (*(&D_80163330 + temp_t5) != 1)) {
temp_v0_3 = arg0 * 4;
arg2 = temp_a3;
if (func_800088D8(temp_f12, arg0, *(&D_80164392 + temp_v0_3), *(&D_8016440A + temp_v0_3), temp_a3) == 1) {
arg2->unkBC = arg2->unkBC | 0x200000;
func_80030FC8((bitwise f32) arg2);
return;
}
arg2->unkBC = arg2->unkBC & 0xFFDFFFFF;
func_80031F48((bitwise f32) arg2, 0x3F800000);
return;
}
temp_v0_4 = *(&D_80163350 + temp_t5);
phi_a1 = 1;
if (temp_v0_4 != 0) {
if (temp_v0_4 != 1) {
if (temp_v0_4 != 2) {
if (temp_v0_4 != 3) {
goto block_41;
}
temp_a3->unkBC = temp_v1 | 0x200000;
arg1 = temp_f12;
sp34 = temp_f2;
arg2 = temp_a3;
sp1C = temp_t5;
sp28 = 1;
func_80030FC8(temp_f12, temp_a3, 1, temp_t5, temp_a3);
phi_f12 = arg1;
phi_a3 = arg2;
} else {
if (((temp_f2 / 18.0f) * 216.0f) > 20.0f) {
phi_f12 = D_800ECFA0;
}
goto block_41;
if (player->unk_000 & 0x800) {
if (temp_f2 < var_f12) {
player->unk_0BC = temp_v1 & 0xFFDFFFFF;
func_80030FC8(player);
return;
}
} else {
temp_a3->unkBC = temp_v1 & 0xFFDFFFFF;
arg1 = temp_f12;
player->unk_0BC = temp_v1 & 0xFFDFFFFF;
func_80031F48(player, 1.0f);
return;
}
if ((*(&D_801631E0 + temp_t5) == (u16) 1) && (*(&D_80163330 + temp_t5) != (u16) 1)) {
temp_v0_3 = arg0 * 4;
if (func_800088D8(var_f12, arg0, *(&D_80164392 + temp_v0_3), *(&D_8016440A + temp_v0_3), player) == 1) {
player->unk_0BC |= 0x200000;
func_80030FC8(player);
return;
}
player->unk_0BC &= 0xFFDFFFFF;
func_80031F48(player, 1.0f);
return;
}
temp_v0_4 = *(&D_80163350 + temp_t5);
switch (temp_v0_4) { /* switch 1; irregular */
case 1: /* switch 1 */
player->unk_0BC = temp_v1 & 0xFFDFFFFF;
sp34 = temp_f2;
arg2 = temp_a3;
sp1C = temp_t5;
sp28 = 1;
func_80030FC8(temp_f12, temp_a3, 1, temp_t5, temp_a3);
phi_f12 = arg1;
phi_a3 = arg2;
func_80030FC8(player);
var_a1 = 1;
var_f12 = arg1;
break;
case 3: /* switch 1 */
player->unk_0BC = temp_v1 | 0x200000;
sp34 = temp_f2;
sp1C = temp_t5;
sp28 = 1;
func_80030FC8(player);
var_a1 = 1;
var_f12 = arg1;
break;
case 2: /* switch 1 */
if (((temp_f2 / 18.0f) * 216.0f) > 20.0f) {
var_f12 = 1.6666666f;
}
/* fallthrough */
default: /* switch 1 */
case 0: /* switch 1 */
var_a1 = 0;
break;
}
if (var_a1 != 1) {
if (temp_f2 < var_f12) {
if ((D_800DC51C == (u16) 1) && (gCurrentCourseId != 0x0014)) {
func_80030FC8(player);
return;
}
temp_v0_5 = arg0 * 4;
if (*(&D_80163330 + temp_t5) == (u16) 1) {
func_80007D04(var_f12, arg0, player, temp_t5, player);
return;
}
if (func_800088D8(var_f12, arg0, *(&D_80164392 + temp_v0_5), *(&D_8016440A + temp_v0_5), player) == 1) {
player->unk_0BC |= 0x200000;
func_80030FC8(player);
return;
}
player->unk_0BC &= 0xFFDFFFFF;
func_80031F48(player, 1.0f);
return;
}
player->unk_0BC &= 0xFFDFFFFF;
if (var_f12 > 1.0f) {
func_80031F48(player, 2.0f);
return;
}
func_80031F48(player, 5.0f);
}
} else {
block_41:
phi_a1 = NULL;
}
if (phi_a1 != 1) {
if (arg2->unk94 < phi_f12) {
if ((D_800DC51C == 1) && (gCurrentCourseId != 0x14)) {
func_80030FC8(phi_f12, phi_a3, phi_a1, arg0 * 2, phi_a3);
return;
}
temp_v0_5 = arg0 * 4;
if (*(&D_80163330 + (arg0 * 2)) == 1) {
func_80007D04(phi_f12, arg0, phi_a3, arg0 * 2, phi_a3);
return;
}
arg2 = phi_a3;
if (func_800088D8(phi_f12, arg0, *(&D_80164392 + temp_v0_5), *(&D_8016440A + temp_v0_5), phi_a3) == 1) {
arg2->unkBC = arg2->unkBC | 0x200000;
func_80030FC8((bitwise f32) arg2);
return;
}
arg2->unkBC = arg2->unkBC & 0xFFDFFFFF;
func_80031F48((bitwise f32) arg2, 0x3F800000);
return;
}
phi_a3->unkBC = phi_a3->unkBC & 0xFFDFFFFF;
if (phi_f12 > 1.0f) {
func_80031F48(phi_f12, phi_a3, 0x40000000, arg0 * 2, phi_a3);
return;
}
func_80031F48(phi_f12, phi_a3, 0x40A00000, arg0 * 2, phi_a3);
// Duplicate return node #55. Try simplifying control flow for better match
return;
}
// Duplicate return node #55. Try simplifying control flow for better match
}
}
#else
@@ -3763,17 +3734,13 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D3B8.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
s32 func_8000B820(s32); // extern
? func_8000BBD8(s32, f32, s16, u16); // extern
f32 func_8000D3B8(s32, u16); // extern
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
? func_8000BBD8(s32, f32, s16, u16); /* extern */
f32 func_8000D3B8(s32, u16); /* extern */
extern ? D_80162FA0;
extern ? D_80163068;
extern s32 D_801631D8;
extern ? D_80163380;
extern s16 D_8016344A;
extern u16 D_80164430;
extern s32 D_801645E0;
s16 gCurrentCourseId; /* unable to generate initializer */
void func_8000D438(s32 arg0, u16 arg1) {
f32 sp48;
@@ -3789,74 +3756,66 @@ void func_8000D438(s32 arg0, u16 arg1) {
s16 temp_v1;
s32 temp_a0;
s32 temp_hi;
s32 temp_t0;
s32 var_a2;
s32 var_a2_2;
u16 temp_a3;
u16 temp_a3_2;
s32 phi_a2;
s32 phi_a2_2;
s32 phi_a2_3;
s32 phi_v0;
temp_a3 = arg1 & 0xFFFF;
temp_t0 = temp_a3 * 2;
temp_v1 = *(D_801645E0 + temp_t0);
temp_v1 = D_801645E0[temp_a3];
sp28 = 6;
sp1C = temp_t0;
sp1C = temp_a3 * 2;
arg1 = temp_a3;
sp26 = temp_v1;
temp_v0 = gCurrentCourseId;
var_a2 = 6;
sp2C = func_8000D3B8(6, temp_a3);
phi_a2 = 6;
if (temp_v0 != 4) {
if (temp_v0 != 0xA) {
if (temp_v0 == 0x14) {
phi_a2 = 1;
if (temp_v0 != 0x000A) {
if (temp_v0 == 0x0014) {
var_a2 = 1;
} else if (temp_v1 < 6) {
phi_a2 = 8;
var_a2 = 8;
} else if (temp_v1 >= 0x15) {
phi_a2 = 0x14;
var_a2 = 0x00000014;
}
} else {
phi_a2 = 7;
var_a2 = 7;
}
}
phi_a2_2 = phi_a2;
phi_a2_2 = phi_a2;
if (phi_a2 >= 8) {
temp_f0 = *(&D_80163068 + (arg0 * 4));
if ((temp_f0 > 0.75f) && (*(D_801631D8 + temp_t0) == 0)) {
phi_a2_2 = 7;
if (var_a2 >= 8) {
temp_f0 = D_80163068[arg0];
if ((temp_f0 > 0.75f) && (D_801631D8[temp_a3] == 0)) {
var_a2 = 7;
}
if ((temp_f0 < -0.75f) && (*(D_801631D8 + temp_t0) == 1)) {
phi_a2_2 = 7;
if ((temp_f0 < -0.75f) && (D_801631D8[temp_a3] == 1)) {
var_a2 = 7;
}
}
sp28 = phi_a2_2;
sp28 = var_a2;
arg1 = arg1;
var_a2_2 = var_a2;
temp_a3_2 = arg1;
phi_a2_3 = phi_a2_2;
if (func_8000B820(arg0) == 1) {
phi_a2_3 = 5;
var_a2_2 = 5;
}
temp_v1_2 = (arg0 * 2) + &D_80163380;
temp_v0_2 = *temp_v1_2;
if (temp_v0_2 < phi_a2_3) {
if (temp_v0_2 < var_a2_2) {
*temp_v1_2 = temp_v0_2 + 1;
}
phi_v0 = *temp_v1_2;
if (phi_a2_3 < *temp_v1_2) {
*temp_v1_2 = *temp_v1_2 - 1;
phi_v0 = *temp_v1_2;
if (var_a2_2 < *temp_v1_2) {
*temp_v1_2 -= 1;
}
temp_hi = (phi_v0 + temp_a3_2) % D_80164430;
temp_hi = (s32) (*temp_v1_2 + temp_a3_2) % (s32) D_80164430;
temp_a0 = temp_hi & 0xFFFF;
arg1 = temp_hi;
arg1 = (u16) temp_hi;
func_8000BBD8(temp_a0, sp2C, D_8016344A, temp_a3_2);
sp48 = D_80162FA0.unk0;
sp44 = D_80162FA0.unk8;
func_8000BBD8(((arg1 + 1) % D_80164430) & 0xFFFF, sp2C, D_8016344A, arg1);
D_80162FA0.unk0 = (sp48 + D_80162FA0.unk0) * 0.5f;
D_80162FA0.unk8 = (sp44 + D_80162FA0.unk8) * 0.5f;
func_8000BBD8(((s32) (arg1 + 1) % (s32) D_80164430) & 0xFFFF, sp2C, D_8016344A, arg1);
D_80162FA0.unk0 = (f32) ((sp48 + D_80162FA0.unk0) * 0.5f);
D_80162FA0.unk8 = (f32) ((sp44 + D_80162FA0.unk8) * 0.5f);
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D438.s")
@@ -3940,15 +3899,11 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D6D0.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80005FD0(f32, f32, f32 *, void *); // extern
? func_8000BBD8(u16, s32, s16, s32); // extern
s16 func_8000D2B4(f32, f32, f32, s16, s32); // extern
extern f32 D_800ED000;
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
? func_8000BBD8(u16, s32, s16, s32); /* extern */
extern ? D_80162FA0;
extern ? gWaypointCountByPathIndex;
void func_8000D940(void *arg0, s16 *arg1, f32 arg2, s32 arg3, s16 arg4) {
void func_8000D940(Vec3f arg0, s16 *arg1, f32 arg2, s32 arg3, s16 pathIndex) {
s16 spA8;
u16 spA6;
f32 spA0;
@@ -3968,71 +3923,69 @@ void func_8000D940(void *arg0, s16 *arg1, f32 arg2, s32 arg3, s16 arg4) {
f32 temp_f24;
f32 temp_f4;
f32 temp_f4_2;
s16 *temp_v0_2;
f32 var_f12;
f32 var_f14;
f32 var_f2;
s16 temp_v0;
s32 temp_a3;
s32 temp_t2;
s32 temp_v1;
struct TrackWayPoint *temp_v0_2;
u16 temp_t0;
f32 phi_f2;
f32 phi_f12;
f32 phi_f14;
sp54 = arg0->unk0;
sp58 = arg0->unk4;
temp_t0 = *(&gWaypointCountByPathIndex + (arg4 * 2));
temp_t0 = gWaypointCountByPathIndex[pathIndex];
sp5C = arg0->unk8;
temp_f24 = arg0->unk8;
temp_f20 = arg0->unk0;
temp_f22 = arg0->unk4;
sp60 = temp_t0;
temp_v0 = func_8000D2B4(temp_f20, temp_f22, temp_f24, *arg1, arg4);
sp60 = (s32) temp_t0;
temp_v0 = func_8000D2B4(temp_f20, temp_f22, temp_f24, *arg1, (s32) pathIndex);
temp_v1 = temp_v0 + temp_t0;
temp_t2 = temp_v1 - 4;
temp_a3 = (temp_v1 - 3) % temp_t0;
temp_a3 = (s32) (temp_v1 - 3) % (s32) temp_t0;
*arg1 = temp_v0;
spA8 = temp_a3;
spA6 = temp_t2 % temp_t0;
func_8000BBD8(temp_a3 & 0xFFFF, arg3, arg4, temp_a3);
spA8 = (s16) temp_a3;
spA6 = (u16) (temp_t2 % (s32) temp_t0);
func_8000BBD8(temp_a3 & 0xFFFF, arg3, pathIndex, temp_a3);
temp_f4 = D_80162FA0.unk8;
spA0 = D_80162FA0.unk0;
sp98 = temp_f4;
func_8000BBD8(spA6, arg3, arg4);
temp_v0_2 = (&D_80164550)[arg4];
temp_f18 = (((temp_v0_2 + (spA6 * 8))->unk2 + (temp_v0_2 + (spA8 * 8))->unk2) * 0.5f) - temp_f22;
func_8000BBD8(spA6, arg3, pathIndex);
temp_v0_2 = D_80164550[pathIndex];
temp_f18 = ((f32) (temp_v0_2[(s16) spA6].wayPointY + temp_v0_2[spA8].wayPointY) * 0.5f) - temp_f22;
temp_f16 = ((spA0 + D_80162FA0.unk0) * 0.5f) - temp_f20;
sp4C = temp_f18;
sp50 = temp_f16;
temp_f4_2 = ((temp_f4 + D_80162FA0.unk8) * 0.5f) - temp_f24;
sp48 = temp_f4_2;
temp_f0 = sqrtf((temp_f16 * temp_f16) + (temp_f18 * temp_f18) + (temp_f4_2 * temp_f4_2));
if (D_800ED000 < temp_f0) {
phi_f2 = ((temp_f16 * arg2) / temp_f0) + temp_f20;
phi_f12 = ((temp_f18 * arg2) / temp_f0) + temp_f22;
phi_f14 = ((sp48 * arg2) / temp_f0) + temp_f24;
if (temp_f0 > 0.01f) {
var_f2 = ((temp_f16 * arg2) / temp_f0) + temp_f20;
var_f12 = ((temp_f18 * arg2) / temp_f0) + temp_f22;
var_f14 = ((sp48 * arg2) / temp_f0) + temp_f24;
} else {
phi_f2 = temp_f20;
phi_f12 = temp_f22;
phi_f14 = temp_f24;
var_f2 = temp_f20;
var_f12 = temp_f22;
var_f14 = temp_f24;
}
arg0->unk0 = phi_f2;
arg0->unk4 = phi_f12;
arg0->unk8 = phi_f14;
func_80005FD0(phi_f12, phi_f14, &sp54, arg0);
arg0->unk0 = var_f2;
arg0->unk4 = var_f12;
arg0->unk8 = var_f14;
func_80005FD0(&sp54, arg0);
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D940.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80005FD0(f32, f32, f32 *, void *); // extern
s16 func_8000D100(f32, f32, f32, s16); // extern
extern f32 D_800ED004;
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
s16 func_8000D100(f32, f32, f32, s16); /* extern */
extern s32 D_80163598;
extern s32 D_8016359C;
void func_8000DBAC(void *arg0, s16 *arg1, f32 arg2) {
void func_8000DBAC(Vec3f arg0, s16 *arg1, f32 arg2) {
f32 sp98;
f32 sp94;
f32 sp40;
@@ -4046,13 +3999,13 @@ void func_8000DBAC(void *arg0, s16 *arg1, f32 arg2) {
f32 temp_f16;
f32 temp_f18;
f32 temp_f2;
f32 var_f12;
f32 var_f14;
s16 temp_v0;
s32 temp_a1;
s32 temp_v1;
void *temp_a0;
void *temp_a2;
f32 phi_f12;
f32 phi_f14;
temp_f12 = arg0->unk0;
temp_f14 = arg0->unk4;
@@ -4066,24 +4019,24 @@ void func_8000DBAC(void *arg0, s16 *arg1, f32 arg2) {
*arg1 = temp_v0;
temp_v1 = D_8016359C;
temp_a1 = D_80163598;
temp_a0 = (((temp_v0 + 3) % temp_v1) * 4) + temp_a1;
temp_a2 = (((temp_v0 + 4) % temp_v1) * 4) + temp_a1;
temp_f16 = ((temp_a0->unk0 + temp_a2->unk0) * 0.5f) - temp_f12;
temp_f18 = ((temp_a0->unk2 + temp_a2->unk2) * 0.5f) - temp_f2;
temp_a0 = ((s16) ((s32) (temp_v0 + 3) % temp_v1) * 4) + temp_a1;
temp_a2 = ((s16) ((s32) (temp_v0 + 4) % temp_v1) * 4) + temp_a1;
temp_f16 = ((f32) (temp_a0->unk0 + temp_a2->unk0) * 0.5f) - temp_f12;
temp_f18 = ((f32) (temp_a0->unk2 + temp_a2->unk2) * 0.5f) - temp_f2;
sp34 = temp_f16;
sp30 = temp_f18;
temp_f0 = sqrtf((temp_f16 * temp_f16) + (temp_f18 * temp_f18));
if (D_800ED004 < temp_f0) {
phi_f12 = ((temp_f16 * arg2) / temp_f0) + temp_f12;
phi_f14 = ((temp_f18 * arg2) / temp_f0) + temp_f2;
if (temp_f0 > 0.01f) {
var_f12 = ((temp_f16 * arg2) / temp_f0) + temp_f12;
var_f14 = ((temp_f18 * arg2) / temp_f0) + temp_f2;
} else {
phi_f12 = temp_f12;
phi_f14 = temp_f2;
var_f12 = temp_f12;
var_f14 = temp_f2;
}
arg0->unk0 = phi_f12;
arg0->unk8 = phi_f14;
arg0->unk0 = var_f12;
arg0->unk8 = var_f14;
arg0->unk4 = sp98;
func_80005FD0(phi_f12, phi_f14, &sp38, arg0);
func_80005FD0(&sp38, arg0);
}
#else
GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000DBAC.s")
+1066 -1176
View File
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -7,7 +7,9 @@
/* Function Prototypes */
void func_8001F980(s32*, s32*);
void func_80020000(Player*, struct Camera*, u8, u8);
u16 func_8001FB0C(Player*, Camera*, f32, f32);
u16 func_8001FD78(Player*, f32, f32, f32);
void func_80020000(Player*, Camera*, u8, u8);
void func_8002088C();
void func_80020F1C();
void func_80021244(Player*, u8, u8);
@@ -22,6 +24,7 @@ void func_80021F84(Mat4, f32);
void func_80021FF8(Mtx*, Mat4);
void func_80022180(Mtx*, Mat4);
s32 func_800224F0(s16*, s16, s16);
void func_8002276C();
void move_s32_towards(s32*, s32, f32);
void move_f32_towards(f32*, f32, f32);
void move_s16_towards(s16*, s16, f32);
+123 -131
View File
@@ -245,10 +245,10 @@ GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_80282700.s")
#endif
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80282700(f32, f32, s32, s32, f32 *, f32 *, f32 *, f32 *); // extern
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
? func_80282700(f32, f32, f32 *, f32 *, f32 *, f32 *, f32 *, f32 *); /* extern */
s32 func_802828C8(s32 arg0, s32 arg1, s32 arg2, s16 *arg3, f32 *arg4) {
s32 func_802828C8(f32 *arg0, f32 *arg1, s32 arg2, s16 *arg3, f32 *arg4) {
s32 sp94;
f32 sp90;
f32 sp8C;
@@ -268,76 +268,71 @@ s32 func_802828C8(s32 arg0, s32 arg1, s32 arg2, s16 *arg3, f32 *arg4) {
f32 sp54;
f32 sp44;
f32 sp40;
f32 *temp_a3;
f32 *temp_t9;
f32 temp_f0;
f32 var_f12;
f32 var_f14;
f32 var_f16;
s16 temp_v1;
s32 var_t1;
u16 temp_v1_2;
u16 temp_v1_3;
void *temp_v0;
void *temp_v0_2;
void *temp_v0_3;
f32 phi_f12;
f32 phi_f16;
f32 phi_f14;
s32 phi_t1;
temp_v1 = *arg3;
phi_f12 = *arg4;
phi_f16 = 0.0f;
phi_f14 = 0.0f;
phi_t1 = 0;
phi_t1 = 0;
var_f12 = *arg4;
if (temp_v1 < 0) {
phi_f12 = 0.0f;
var_f12 = 0.0f;
}
temp_v0 = arg2 + (temp_v1 * 0xC);
if ((temp_v0->unk0 == -1) || (temp_v0->unkC == -1) || (temp_v0->unk18 == -1)) {
return 1;
}
temp_v0_2 = arg2 + (temp_v1 * 0xC);
temp_a3 = &sp54;
sp54 = temp_v0_2->unk6;
sp58 = temp_v0_2->unk8;
sp5C = temp_v0_2->unkA;
sp60 = temp_v0_2->unk4 * 256.0f;
sp64 = temp_v0_2->unk12;
sp68 = temp_v0_2->unk14;
sp6C = temp_v0_2->unk16;
sp70 = temp_v0_2->unk10 * 256.0f;
sp74 = temp_v0_2->unk1E;
sp78 = temp_v0_2->unk20;
sp7C = temp_v0_2->unk22;
temp_t9 = &sp84;
sp80 = temp_v0_2->unk1C * 256.0f;
sp84 = temp_v0_2->unk2A;
sp88 = temp_v0_2->unk2C;
sp8C = temp_v0_2->unk2E;
sp54 = (f32) temp_v0_2->unk6;
sp58 = (f32) temp_v0_2->unk8;
sp5C = (f32) temp_v0_2->unkA;
sp60 = (f32) temp_v0_2->unk4 * 256.0f;
sp64 = (f32) temp_v0_2->unk12;
sp68 = (f32) temp_v0_2->unk14;
sp6C = (f32) temp_v0_2->unk16;
sp70 = (f32) temp_v0_2->unk10 * 256.0f;
sp74 = (f32) temp_v0_2->unk1E;
sp78 = (f32) temp_v0_2->unk20;
sp7C = (f32) temp_v0_2->unk22;
sp80 = (f32) temp_v0_2->unk1C * 256.0f;
sp84 = (f32) temp_v0_2->unk2A;
sp88 = (f32) temp_v0_2->unk2C;
sp8C = (f32) temp_v0_2->unk2E;
sp40 = 0.0f;
sp44 = 0.0f;
sp94 = 0;
sp90 = temp_v0_2->unk28 * 256.0f;
func_80282700(phi_f12, 0.0f, arg0, arg1, temp_a3, &sp64, &sp74, temp_t9);
sp90 = (f32) temp_v0_2->unk28 * 256.0f;
func_80282700(var_f12, 0.0f, arg0, arg1, &sp54, &sp64, &sp74, &sp84);
var_t1 = sp94;
var_f14 = sp44;
var_f16 = sp40;
temp_v0_3 = arg2 + (*arg3 * 0xC);
temp_v1_2 = temp_v0_3->unkE;
if (temp_v1_2 != 0) {
phi_f14 = 1.0f / temp_v1_2;
var_f14 = 1.0f / (f32) temp_v1_2;
}
temp_v1_3 = temp_v0_3->unk1A;
if (temp_v1_3 != 0) {
phi_f16 = 1.0f / temp_v1_3;
var_f16 = 1.0f / (f32) temp_v1_3;
}
temp_f0 = *arg4;
*arg4 = temp_f0 + ((temp_f0 * (phi_f16 - phi_f14)) + phi_f14);
*arg4 = temp_f0 + ((temp_f0 * (var_f16 - var_f14)) + var_f14);
if (*arg4 >= 1.0f) {
*arg3 = *arg3 + 1;
*arg3 += 1;
if ((arg2 + (*arg3 * 0xC))->unk24 == -1) {
*arg3 = 0;
phi_t1 = 1;
var_t1 = 1;
}
*arg4 = *arg4 - 1.0f;
*arg4 -= 1.0f;
}
return phi_t1;
return var_t1;
}
#else
GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_802828C8.s")
@@ -409,23 +404,23 @@ loop_1:
GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_80282C40.s")
#endif
s32 func_80282D90(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
s32 func_80282D90(Camera *camera, s32 arg1, s32 arg2, s32 arg3) {
s32 res;
func_802832C4(&func_80282434, arg0, 0, 0);
func_802832C4(&func_80282434, camera, 0, 0);
func_80282C40(&D_80287818, arg1, arg3);
func_80282C40(&D_80287998, arg2, arg3);
if (0) {}; // debug stub?
res = func_802828C8(arg0 + 0xC, arg0 + 0x18, &D_80287818, &D_80287B1C, &D_80287B18) |
func_802828C8(arg0, arg0 + 0x18, &D_80287998, &D_80287B1C, &D_80287B18);
res = func_802828C8(camera->lookAt, camera->up, &D_80287818, &D_80287B1C, &D_80287B18) |
func_802828C8(camera->pos, camera->up, &D_80287998, &D_80287B1C, &D_80287B18);
return res;
}
void func_80282E58(s32 arg0, s32 arg1, s32 arg2) {
void func_80282E58(Camera *camera, s32 arg1, s32 arg2) {
func_80282C40(&D_80287818, arg1, arg2);
func_802828C8(arg0 + 0xC, arg0 + 0x18, &D_80287818, &D_80287B1C, &D_80287B18);
func_802828C8(camera->lookAt, camera->up, &D_80287818, &D_80287B1C, &D_80287B18);
}
#ifdef MIPS_TO_C
@@ -545,9 +540,9 @@ void func_80283240(s16 arg0) {
}
}
s32 func_802832C4(void (*func_ptr)(s32), s32 arg1, s16 arg2, s16 arg3) {
s32 func_802832C4(void (*func_ptr)(s32), Camera *camera, s16 arg2, s16 arg3) {
if ((D_802876D2 >= arg2) && ((arg3 == -1) || (arg3 >= D_802876D2))) {
func_ptr(arg1);
func_ptr(camera);
}
return 0;
}
@@ -683,7 +678,7 @@ GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_80283430.s")
#endif
#ifdef MIPS_TO_C
//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
? func_80282F44(?, s32 *, Camera *); /* extern */
? func_80283100(s32 *, f32 *); /* extern */
s32 func_8028336C(s32 *, Camera *); /* extern */
@@ -716,10 +711,10 @@ s32 func_80283648(Camera *camera) {
func_80283428();
vec3f_copy_dupe(&sp58, camera->pos);
temp_a1 = &camera->unk;
temp_a1 = camera->lookAt;
sp34 = temp_a1;
vec3f_copy_dupe(&sp4C, temp_a1);
temp_a1_2 = &camera->angleX;
temp_a1_2 = camera->up;
sp30 = temp_a1_2;
vec3f_copy_dupe(&sp40, temp_a1_2);
temp_v1 = func_8028336C(&D_802876E0, camera) & 0xFF;
@@ -755,15 +750,15 @@ s32 func_80283648(Camera *camera) {
temp_t9 = (u32) var_f0 & 0xFFFF;
sp2C = temp_t9;
sp38 = sins((u16) temp_t9);
camera->angleX = coss((u16) sp6C) * sp38;
camera->angleY = coss(unksp2E);
camera->up[0] = coss((u16) sp6C) * sp38;
camera->up[1] = coss(unksp2E);
sp38 = sins(unksp2E);
camera->angleZ = sins((u16) sp6C) * -sp38;
camera->up[2] = sins((u16) sp6C) * -sp38;
vec3f_copy_dupe(camera->pos, &D_802876EC);
vec3f_copy_dupe(sp34, (f32 *) &D_802876E0);
if ((gGamestate == 9) && (gIsMirrorMode != 0)) {
camera->pos[0] = -camera->pos[0];
camera->unk = -camera->unk;
camera->lookAt[0] = -camera->lookAt[0];
}
}
func_80282F44(0, &D_802876E0, camera);
@@ -884,77 +879,77 @@ void func_80283D04(s32 arg0) {
play_sound2(0x49008026);
}
void func_80283D2C(s32 arg0) {
void func_80283D2C(Camera *camera) {
D_802856B8 = 120.0f;
func_802832C4(&func_80283CA8, arg0, 0, 0);
func_802832C4(&func_80283A34, arg0, 1, 1);
func_802832C4(&func_80283BF0, arg0, 0, 0);
func_802832C4(&func_80283A7C, arg0, 0x2D, 0x2D);
func_802832C4(&func_80283A7C, arg0, 0x41, 0x41);
func_802832C4(&func_80283A7C, arg0, 0x46, 0x46);
func_802832C4(&func_80283A7C, arg0, 0x5E, 0x5E);
func_802832C4(&func_80283A7C, arg0, 0x6E, 0x6E);
func_802832C4(&func_80283A7C, arg0, 0x82, 0x82);
func_802832C4(&func_80283A7C, arg0, 0x98, 0x98);
func_802832C4(&func_80283A7C, arg0, 0xA0, 0xA0);
func_802832C4(&func_80283994, arg0, D_80285D14 - 0x3C, D_80285D14 - 0x3C);
func_80282D90(arg0, &D_802856DC, &D_80285718, 0);
func_802832C4(&func_80283CA8, camera, 0, 0);
func_802832C4(&func_80283A34, camera, 1, 1);
func_802832C4(&func_80283BF0, camera, 0, 0);
func_802832C4(&func_80283A7C, camera, 0x2D, 0x2D);
func_802832C4(&func_80283A7C, camera, 0x41, 0x41);
func_802832C4(&func_80283A7C, camera, 0x46, 0x46);
func_802832C4(&func_80283A7C, camera, 0x5E, 0x5E);
func_802832C4(&func_80283A7C, camera, 0x6E, 0x6E);
func_802832C4(&func_80283A7C, camera, 0x82, 0x82);
func_802832C4(&func_80283A7C, camera, 0x98, 0x98);
func_802832C4(&func_80283A7C, camera, 0xA0, 0xA0);
func_802832C4(&func_80283994, camera, D_80285D14 - 0x3C, D_80285D14 - 0x3C);
func_80282D90(camera, &D_802856DC, &D_80285718, 0);
}
void func_80283EA0(s32 arg0) {
func_80282D90(arg0, &D_80285754, &D_80285784, 0);
void func_80283EA0(Camera *camera) {
func_80282D90(camera, &D_80285754, &D_80285784, 0);
}
void func_80283ED0(Vec3f arg0) {
vec3f_copy_dupe(arg0, &gPlayerTwo->pos[0]);
void func_80283ED0(Camera *camera) {
vec3f_copy_dupe(camera->pos, gPlayerTwo->pos);
}
void func_80283EF8(Vec3f arg0) {
func_802821A0(&arg0[0], gPlayerTwo->pos[0], 0.12f);
func_802821A0(&arg0[1], gPlayerTwo->pos[1], 0.12f);
func_802821A0(&arg0[2], gPlayerTwo->pos[2], 0.12f);
void func_80283EF8(Camera *camera) {
func_802821A0(&camera->pos[0], gPlayerTwo->pos[0], 0.12f);
func_802821A0(&camera->pos[1], gPlayerTwo->pos[1], 0.12f);
func_802821A0(&camera->pos[2], gPlayerTwo->pos[2], 0.12f);
}
void func_80283F6C(s32 arg0) {
func_802832C4(&func_80283ED0, arg0, 0, 0);
func_802832C4(&func_80283EF8, arg0, 0, -1);
func_80282E58(arg0, &D_802857B4, 0);
void func_80283F6C(Camera *camera) {
func_802832C4(&func_80283ED0, camera, 0, 0);
func_802832C4(&func_80283EF8, camera, 0, -1);
func_80282E58(camera, &D_802857B4, 0);
}
void func_80283FCC(Vec3f arg0) {
vec3f_copy_dupe(arg0, &gPlayerThree->pos[0]);
void func_80283FCC(Camera *camera) {
vec3f_copy_dupe(camera->pos, gPlayerThree->pos);
}
void func_80283FF4(Vec3f arg0) {
func_802821A0(&arg0[0], gPlayerThree->pos[0], 0.12f);
func_802821A0(&arg0[1], gPlayerThree->pos[1], 0.12f);
func_802821A0(&arg0[2], gPlayerThree->pos[2], 0.12f);
void func_80283FF4(Camera *camera) {
func_802821A0(&camera->pos[0], gPlayerThree->pos[0], 0.12f);
func_802821A0(&camera->pos[1], gPlayerThree->pos[1], 0.12f);
func_802821A0(&camera->pos[2], gPlayerThree->pos[2], 0.12f);
}
void func_80284068(s32 arg0) {
func_802832C4(&func_80283FCC, arg0, 0, 0);
func_802832C4(&func_80283FF4, arg0, 0, -1);
func_80282E58(arg0, &D_802857CC, 0);
void func_80284068(Camera *camera) {
func_802832C4(&func_80283FCC, camera, 0, 0);
func_802832C4(&func_80283FF4, camera, 0, -1);
func_80282E58(camera, &D_802857CC, 0);
}
void func_802840C8(s32 arg0) {
func_802832C4(&func_80283C14, arg0, 5, 5);
void func_802840C8(Camera *camera) {
func_802832C4(&func_80283C14, camera, 5, 5);
switch(D_802876D8) {
case 2:
func_80283EA0(arg0);
func_80283EA0(camera);
break;
case 3:
func_80283F6C(arg0);
func_80283F6C(camera);
break;
case 4:
func_80284068(arg0);
func_80284068(camera);
break;
}
}
void func_80284154(s32 arg0) {
func_80282D90(arg0, &D_80285910, &D_80285928, 0);
void func_80284154(Camera *camera) {
func_80282D90(camera, &D_80285910, &D_80285928, 0);
}
#ifdef MIPS_TO_C
@@ -974,16 +969,16 @@ void func_80284184(s32 *arg0) {
GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_80284184.s")
#endif
void func_802841E8(Vec3f arg0) {
func_80282E58(arg0, &D_80285940, 0);
vec3f_set_dupe(arg0, -3202.0f, 90.0f, -478.0f);
void func_802841E8(Camera *camera) {
func_80282E58(camera, &D_80285940, 0);
vec3f_set_dupe(camera->pos, -3202.0f, 90.0f, -478.0f);
}
void func_8028422C(s32 arg0) {
func_802832C4(&func_80283AF4, arg0, 6, 6);
func_802832C4(&func_80283B44, arg0, 0x1E, 0x1E);
func_802832C4(&func_802841E8, arg0, 0, 0);
func_802832C4(&func_80284184, arg0, 6, -1);
void func_8028422C(Camera *camera) {
func_802832C4(&func_80283AF4, camera, 6, 6);
func_802832C4(&func_80283B44, camera, 0x1E, 0x1E);
func_802832C4(&func_802841E8, camera, 0, 0);
func_802832C4(&func_80284184, camera, 6, -1);
}
void func_802842A8(s32 arg0) {
@@ -995,39 +990,36 @@ void func_802842D8(s32 arg0) {
}
#ifdef MIPS_TO_C
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
? func_80282D90(void *, ? *, ? *, ?); // extern
? func_802832C4(? *, void *, ?, ?); // extern
extern ? D_802858E0;
extern ? D_802858F8;
extern ? D_80285A00;
extern s8 D_802874F5;
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
static ? D_802858E0; /* unable to generate initializer */
static ? D_802858F8; /* unable to generate initializer */
static ? D_80285A00; /* unable to generate initializer */
void func_80284308(void *arg0) {
void func_80284308(Camera *camera) {
s32 sp30;
Player *player = &gPlayerOne;
Player *temp_v1;
f32 temp_f0;
f32 temp_f12;
f32 temp_f2;
void *temp_v0;
sp30.unk0 = D_80285A00.unk0;
sp30.unk4 = D_80285A00.unk4;
sp30.unkC = D_80285A00.unkC;
sp30.unk8 = D_80285A00.unk8;
func_802832C4(&func_80283A54, arg0, 0x8C, 0x8C);
func_80282D90(arg0, &D_802858E0, &D_802858F8, 0);
sp30.unk4 = (s32) D_80285A00.unk4;
sp30.unkC = (s32) D_80285A00.unkC;
sp30.unk8 = (s32) D_80285A00.unk8;
func_802832C4(func_80283A54, (s32) camera, 0x008C, 0x008C);
func_80282D90((s32) camera, (s32) &D_802858E0, (s32) &D_802858F8, 0);
temp_v0 = *(sp30 + (D_802874F5 * 4));
//player = gPlayerOne;
temp_f0 = temp_v0->unk14 - player->pos[0];
temp_f12 = temp_v0->unk1C - player->pos[2];
temp_f2 = temp_v0->unk18 - player->pos[1];
arg0->unkC = arg0->unkC + temp_f0;
arg0->unk0 = arg0->unk0 + temp_f0;
arg0->unk14 = arg0->unk14 + temp_f12;
arg0->unk8 = arg0->unk8 + temp_f12;
arg0->unk4 = arg0->unk4 + temp_f2;
arg0->unk10 = arg0->unk10 + temp_f2;
temp_v1 = gPlayerOne;
temp_f0 = temp_v0->unk14 - temp_v1->pos[0];
temp_f12 = temp_v0->unk1C - temp_v1->pos[2];
temp_f2 = temp_v0->unk18 - temp_v1->pos[1];
camera->lookAt[0] += temp_f0;
camera->pos[0] += temp_f0;
camera->lookAt[2] += temp_f12;
camera->pos[2] += temp_f12;
camera->pos[1] += temp_f2;
camera->lookAt[1] += temp_f2;
}
#else
GLOBAL_ASM("asm/non_matchings/code_80281FA0/func_80284308.s")
+15 -15
View File
@@ -24,11 +24,11 @@ void func_80282434(s32);
void func_80282454(Vec3f, Vec3f, f32*, s16*, s16*);
void func_80282504(Vec3f, Vec3f, f32, s16, s16);
void func_802825C8(Vec3f, Vec3f, Vec3f, Vec3s);
s32 func_80282D90(s32, s32, s32, s32);
void func_80282E58(s32, s32, s32);
s32 func_80282D90(Camera*, s32, s32, s32);
void func_80282E58(Camera*, s32, s32);
void func_80282F00(s16*, s16);
void func_80283240(s16);
s32 func_802832C4(void (*)(s32), s32, s16, s16);
s32 func_802832C4(void (*)(s32), Camera*, s16, s16);
s32 func_80283330(s32);
s32 func_80283428();
void func_80283968(s32);
@@ -55,19 +55,19 @@ void func_80283C78(s32);
void func_80283CA8(s32);
void func_80283CD0(s32);
void func_80283D04(s32);
void func_80283D2C(s32);
void func_80283EA0(s32);
void func_80283ED0(Vec3f);
void func_80283EF8(Vec3f);
void func_80283F6C(s32);
void func_80283FCC(Vec3f);
void func_80283FF4(Vec3f);
void func_80284068(s32);
void func_802840C8(s32);
void func_80284154(s32);
void func_80283D2C(Camera*);
void func_80283EA0(Camera*);
void func_80283ED0(Camera*);
void func_80283EF8(Camera*);
void func_80283F6C(Camera*);
void func_80283FCC(Camera*);
void func_80283FF4(Camera*);
void func_80284068(Camera*);
void func_802840C8(Camera*);
void func_80284154(Camera*);
void func_80284184();
void func_802841E8(Vec3f);
void func_8028422C(s32);
void func_802841E8(Camera*);
void func_8028422C(Camera*);
void func_802842A8(s32);
void func_802842D8(s32);
void func_80284418(s32 arg0);
+27 -109
View File
@@ -83,120 +83,38 @@ void crash_screen_draw_glyph(u16 *framebuffer, s32 x, s32 y, s32 glyph) {
}
}
#ifdef MIPS_TO_C
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
#ifdef NON_MATCHING
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
#define WHITE_COLOUR 0xFFFF
#define RED_COLOUR 0xF801
void crash_screen_draw_square(u16 *framebuffer) {
s32 temp_a0;
s32 temp_a1;
s32 temp_a1_2;
s32 temp_ra;
s32 temp_s0;
s32 temp_s1;
s32 temp_t0;
s32 temp_v1;
s32 phi_s2;
s32 phi_s0;
s16 *phi_v0;
s32 phi_v1;
void *phi_v0_2;
s32 phi_a1;
s32 phi_s1;
s32 phi_a0;
s32 phi_a1_2;
s32 phi_v1_2;
s32 phi_a0_2;
s32 phi_a0_3;
s32 phi_a1_3;
s32 phi_a1_4;
s32 i, j, k;
//phi_s2 = 0x28;
//phi_s0 = 0x2E;
phi_a0_2 = framebuffer;
//phi_a1_3 = arg1;
for (i = 46; i > 44; i--) {
//phi_s1 = phi_s2;
//phi_a0 = phi_a0_2;
//phi_a1_2 = phi_a1_3;
// phi_a0_3 = phi_a0_2;
//phi_a1_4 = phi_a1_3;
//if (phi_s2 < phi_s0) {
for (j = 40; j < i; j++) {
//phi_v1 = phi_s2;
//phi_v1_2 = phi_s2;
if (phi_s2 < phi_s0) {
//temp_a0 = i - j;
temp_t0 = (i - j) & 3;
//temp_ra = framebuffer + (phi_s1 * 0x280);
//phi_a0_3 = temp_a0;
if (temp_t0 != 0) {
phi_v0 = temp_ra + (phi_s2 * 2);
do { // (temp_t0 + j;) {
j++;
//temp_v1 = phi_v1 + 1;
//phi_v1 = temp_v1;
//phi_v1_2 = temp_v1;
if (i - j == 6) {
framebuffer[i * 640 + j * 2] = RED_COLOUR;
} else {
framebuffer[i * 640 + j * 2] = WHITE_COLOUR;
}
j += 2;
} while ((temp_t0 + j) != j);
phi_a1_4 = temp_v1 * 2;
if (temp_v1 != phi_s0) {
break; // goto 10
}
} else {
//block_10:
//temp_a1 = phi_v1_2 * 2;
phi_v0_2 = framebuffer[i * 640 + j * 2];
phi_a1 = temp_a1;
for (k = j + 8; k < j * 2; k += 8) {
//do {
//temp_a1_2 = phi_a1 + 8;
//phi_a1 = temp_a1_2;
//phi_a1_4 = temp_a1_2;
if (temp_a0 == 6) {
framebuffer[i * 640 + j * 2] = RED_COLOUR;
} else {
framebuffer[i * 640 + j * 2] = WHITE_COLOUR;
}
//if (temp_a0 == 6) {
// phi_v0_2->unk2 = RED_COLOUR;
//} else {
// phi_v0_2->unk2 = WHITE_COLOUR;
//}
//if (temp_a0 == 6) {
// phi_v0_2->unk4 = RED_COLOUR;
//} else {
// phi_v0_2->unk4 = WHITE_COLOUR;
//}
//if (temp_a0 == 6) {
// phi_v0_2->unk6 = RED_COLOUR;
//} else {
// phi_v0_2->unk6 = WHITE_COLOUR;
//}
//phi_v0_2 += 8;
} //while (temp_a1_2 != (phi_s0 * 2));
}
/**
* The big mismatch is the handling of the '6' used in the if statement
* In the target assembly that 6 is saved to 5 different temp registers,
* while in this non-matching decomp its only saved to one temp register.
* This seems to be related to how the innermost for loop is unrolled, but
* its not clear why the target assembley would save the same immediate to
* 5 different registers instead of just re-using one
* There's some stack related differences too, maybe that's related?
**/
void crash_screen_draw_square(u16 *framebuffer) {
s32 var_s0;
s32 var_s2;
s32 row;
s32 column;
for (var_s0 = 0x2E, var_s2 = 0x28; var_s0 > 0x2C; var_s0--, var_s2++) {
for (row = var_s2; row < var_s0; row++) {
for (column = var_s2; column < var_s0; column++) {
if ((var_s0 - var_s2) == 6) {
framebuffer[(row * 320) + column] = RED_COLOUR;
} else {
framebuffer[(row * 320) + column] = WHITE_COLOUR;
}
//temp_s1 = phi_s1 + 1;
//phi_s1 = temp_s1;
//phi_a0 = phi_a0_3;
//phi_a1_2 = phi_a1_4;
} //while (temp_s1 != phi_s0);
//temp_s0 = phi_s0 - 1;
//phi_s2 += 1;
//phi_s0 = temp_s0;
//phi_a0_2 = phi_a0;
//phi_a1_3 = phi_a1_2;
//i--;
} //while (temp_s0 != 44);
}
}
}
osWritebackDCacheAll();
osViSwapBuffer(framebuffer);
}
+1 -1
View File
@@ -3,7 +3,7 @@
#include <PR/gbi.h>
extern s32 D_02007B38[];
extern Vtx D_02007B38[];
extern Gfx D_02007650[];
extern Gfx D_020076B0[];
+9 -19
View File
@@ -269,25 +269,15 @@ Gfx D_02007B18[] = {
gsSPEndDisplayList(),
};
// gfx data?
UNUSED s32 D_02007B38[] = {
0x00000000, 0x00000000,
0x00000000, 0xffffffff,
0x00100000, 0x00000000,
0x00000000, 0xffffffff,
0x00100010, 0x00000000,
0x00000000, 0xffffffff,
0x00000010, 0x00000000,
0x00000000, 0xffffffff,
0x0000fff8, 0x00000000,
0x00000000, 0xffffffff,
0x0008fff8, 0x00000000,
0x01c00000, 0xffffffff,
0x00080000, 0x00000000,
0x01c001c0, 0xff0000ff,
0x00000000, 0x00000000,
0x000001c0, 0xff0000ff,
UNUSED Vtx D_02007B38[] = {
{{{ 0, 0, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 16, 0, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 16, 16, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 0, 16, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 0, -8, 0}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 8, -8, 0}, 0, {448, 0}, {0xff, 0xff, 0xff, 0xff}}},
{{{ 8, 0, 0}, 0, {448, 448}, {0xff, 0x00, 0x00, 0xff}}},
{{{ 0, 0, 0}, 0, { 0, 448}, {0xff, 0x00, 0x00, 0xff}}},
};
// Todo: Place all theces vertices in a single array
+436 -504
View File
File diff suppressed because it is too large Load Diff