Match two funcs (#623)

This commit is contained in:
MegaMech
2024-04-21 22:58:57 -06:00
committed by GitHub
parent 85a8c6bd61
commit 43fc4e7792
3 changed files with 44 additions and 545 deletions
+44 -155
View File
@@ -1597,8 +1597,6 @@ void func_80092258(void) {
}
}
#ifdef NON_MATCHING
//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Sep-02-2023
void func_80092290(s32 arg0, s32 *arg1, s32 *arg2) {
s32 temp_v1;
s32 i;
@@ -1607,6 +1605,7 @@ void func_80092290(s32 arg0, s32 *arg1, s32 *arg2) {
s32 temp_t7;
s32 temp_t8_2;
s32 temp_t9;
s32 temp_t0;
s32 a, b, c, d;
Vtx *vtx;
@@ -1630,11 +1629,11 @@ void func_80092290(s32 arg0, s32 *arg1, s32 *arg2) {
temp_t7 = (vtx+temp_v1)->v.cn[2] * (256 - *arg2);
temp_t8_2 = (vtx+temp_v1)->v.cn[3] * (256 - *arg2);
temp_v1 = (*arg1 % 6) + 2;
a = (*arg2 * (vtx+temp_v1)->v.cn[0]);
b = (*arg2 * (vtx+temp_v1)->v.cn[1]);
c = (*arg2 * (vtx+temp_v1)->v.cn[2]);
d = (*arg2 * (vtx+temp_v1)->v.cn[3]);
temp_v1 = (((*arg1 * 2) + 2) % 6) + 2;
a = ((vtx+temp_v1)->v.cn[0] * *arg2);
b = ((vtx+temp_v1)->v.cn[1] * *arg2);
c = ((vtx+temp_v1)->v.cn[2] * *arg2);
d = ((vtx+temp_v1)->v.cn[3] * *arg2);
(vtx+idx)->v.cn[0] = (temp_t6 + a) / 256;
@@ -1648,9 +1647,7 @@ void func_80092290(s32 arg0, s32 *arg1, s32 *arg2) {
(vtx+idx+1)->v.cn[3] = (temp_t8_2 + d) / 256;
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80091750/func_80092290.s")
#endif
void func_80092500(void) {
@@ -9330,161 +9327,53 @@ void func_800A9710(struct_8018D9E0_entry *arg0) {
}
}
#ifdef MIPS_TO_C
//generated by m2c commit 3c194b80148d233bd38495ca3456dc7b201a0302 on Mar-22-2024
void func_800A97BC(struct_8018D9E0_entry *arg0) {
s32 temp_t4;
s32 temp_t7;
s8 *var_v1;
s8 *var_v1_2;
s8 temp_v0;
s8 temp_v0_2;
s8 temp_v0_3;
s8 temp_v0_4;
s8 temp_v0_5;
s8 temp_v0_6;
s8 temp_v0_7;
s8 temp_v0_8;
void func_800A97BC(struct_8018D9E0_entry* arg0) {
s32 i;
if (*D_800E86D0 != 1) {
if (*D_800E86D0 != 2) {
switch(*D_800E86D0) {
case 1:
arg0->row -= 2;
if (arg0->row < 0x60) {
arg0->row = 0x69;
*D_800E86D0 = 0;
return;
for (i = 0; i < 8; i++) {
if (i < 7) {
D_800E86C4[i] = D_800E86C4[i + 1];
} else {
if ((D_800E86C4[i - 1] == 0x10) || (D_800E86C4[i - 1] == 0)) {
D_800E86C4[i] = 0;
} else {
D_800E86C4[i] = D_800E86C4[i - 1] + 1;
}
}
}
D_800E86C4[0] = D_800E86C4[8] = 0;
}
temp_t4 = arg0->row + 2;
arg0->row = temp_t4;
if (temp_t4 >= 0x73) {
arg0->row = 0x00000069;
*D_800E86D0 = 0;
var_v1 = D_800E86C4 + 8;
do {
if ((u32) var_v1 >= (u32) (D_800E86C4 + 2)) {
var_v1->unk0 = var_v1->unk-1;
} else {
temp_v0 = var_v1->unk1;
if ((temp_v0 == 1) || (temp_v0 == 0)) {
var_v1->unk0 = 0;
} else {
var_v1->unk0 = temp_v0 - 1;
}
}
if ((u32) var_v1 >= (u32) (D_800E86C4 + 3)) {
var_v1->unk-1 = (s8) var_v1->unk-2;
} else {
temp_v0_2 = var_v1->unk0;
if ((temp_v0_2 == 1) || (temp_v0_2 == 0)) {
var_v1->unk-1 = 0;
} else {
var_v1->unk-1 = (s8) (temp_v0_2 - 1);
}
}
if ((u32) var_v1 >= (u32) (D_800E86C4 + 4)) {
var_v1->unk-2 = (s8) var_v1->unk-3;
} else {
temp_v0_3 = var_v1->unk-1;
if ((temp_v0_3 == 1) || (temp_v0_3 == 0)) {
var_v1->unk-2 = 0;
} else {
var_v1->unk-2 = (s8) (temp_v0_3 - 1);
}
}
if ((u32) var_v1 >= (u32) (D_800E86C4 + 5)) {
var_v1->unk-3 = (s8) var_v1->unk-4;
} else {
temp_v0_4 = var_v1->unk-2;
if ((temp_v0_4 == 1) || (temp_v0_4 == 0)) {
var_v1->unk-3 = 0;
} else {
var_v1->unk-3 = (s8) (temp_v0_4 - 1);
}
}
var_v1 -= 4;
} while (var_v1 != D_800E86C4);
// for (var_v1 = 0; var_v1 < 8; var_v1++) {
// huh = 8 - var_v1;
// if (D_800E86C4[huh] >= D_800E86C4[var_v1 + 2]) {
// D_800E86C4[huh] = D_800E86C4[huh - 1];
// } else {
// if ((D_800E86C4[huh + 1] == 1) || (D_800E86C4[huh + 1] == 0)) {
// D_800E86C4[huh] = 0;
// } else {
// D_800E86C4[huh] = D_800E86C4[huh + 1] + 1;
// }
// }
// }
D_800E86C4->unk8 = 0;
D_800E86C4->unk0 = D_800E86C4->unk8;
}
} else {
temp_t7 = arg0->row - 2;
arg0->row = temp_t7;
if (temp_t7 < 0x60) {
arg0->row = 0x00000069;
break;
case 2:
arg0->row += 2;
if (arg0->row >= 0x73) {
arg0->row = 0x69;
*D_800E86D0 = 0;
var_v1_2 = D_800E86C4;
do {
if ((u32) var_v1_2 < (u32) (D_800E86C4 + 7)) {
var_v1_2->unk0 = var_v1_2->unk1;
for (i = 8; i > 0; i--) {
if (i > 1) {
D_800E86C4[i] = D_800E86C4[i - 1];
} else {
temp_v0_5 = var_v1_2->unk-1;
if ((temp_v0_5 == 0x10) || (temp_v0_5 == 0)) {
var_v1_2->unk0 = 0;
if ((D_800E86C4[i + 1] == 1) || (D_800E86C4[i + 1] == 0)) {
D_800E86C4[i] = 0;
} else {
var_v1_2->unk0 = temp_v0_5 + 1;
D_800E86C4[i] = D_800E86C4[i+1] - 1;
}
}
if ((u32) var_v1_2 < (u32) (D_800E86C4 + 6)) {
var_v1_2->unk1 = (s8) var_v1_2->unk2;
} else {
temp_v0_6 = var_v1_2->unk0;
if ((temp_v0_6 == 0x10) || (temp_v0_6 == 0)) {
var_v1_2->unk1 = 0;
} else {
var_v1_2->unk1 = (s8) (temp_v0_6 + 1);
}
}
if ((u32) var_v1_2 < (u32) (D_800E86C4 + 5)) {
var_v1_2->unk2 = (s8) var_v1_2->unk3;
} else {
temp_v0_7 = var_v1_2->unk1;
if ((temp_v0_7 == 0x10) || (temp_v0_7 == 0)) {
var_v1_2->unk2 = 0;
} else {
var_v1_2->unk2 = (s8) (temp_v0_7 + 1);
}
}
if ((u32) var_v1_2 < (u32) (D_800E86C4 + 4)) {
var_v1_2->unk3 = (s8) var_v1_2->unk4;
} else {
temp_v0_8 = var_v1_2->unk2;
if ((temp_v0_8 == 0x10) || (temp_v0_8 == 0)) {
var_v1_2->unk3 = 0;
} else {
var_v1_2->unk3 = (s8) (temp_v0_8 + 1);
}
}
var_v1_2 += 4;
} while (var_v1_2 != (D_800E86C4 + 8));
// for (var_v1 = 0; var_v1 < 8; var_v1++) {
// if (D_800E86C4[var_v1] < D_800E86C4[7 - var_v1]) {
// D_800E86C4[var_v1] = D_800E86C4[var_v1 + 1];
// } else {
// if ((D_800E86C4[var_v1 - 1] == 16) || (D_800E86C4[var_v1 - 1] == 0)) {
// D_800E86C4[var_v1] = 0;
// } else {
// D_800E86C4[var_v1] = D_800E86C4[var_v1 - 1] + 1;
// }
// }
// }
D_800E86C4->unk8 = 0;
D_800E86C4->unk0 = D_800E86C4->unk8;
}
}
D_800E86C4[0] = D_800E86C4[8] = 0;
break;
default:
*D_800E86D0 = 0;
break;
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80091750/func_800A97BC.s")
#endif
}} // todo: <-- fix these brackets
// Don't know if this belongs here or inside func_800A9A98
// as a `static const`. But this matches so we'll leave