1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-04 15:04:31 +00:00

Fix various non matching issues and introduce #ifdef NON_EQUIVALENT instead of #if 0 (#207)

This commit is contained in:
Roman971 2020-06-14 05:29:59 +02:00 committed by GitHub
parent 031d946db7
commit 06fc61c83d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 297 additions and 1307 deletions

View file

@ -3120,10 +3120,10 @@ void func_80062E14(GlobalContext* globalCtx, Vec3f* v, Vec3f* arg2) {
Audio_PlaySoundGeneral(NA_SE_IT_REFLECTION_WOOD, arg2, 4, &D_801333E0, &D_801333E0, &D_801333E8);
}
#if 0 // NON_MATCHING
#ifdef NON_EQUIVALENT
// Incomplete, possibly not using the same logic
s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_actor_pos, Vec3f* at_actor_pos, Vec3f* arg5, Vec3f* arg6,
Vec3f* arg7) {
s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_actor_pos, Vec3f* at_actor_pos,
Vec3f* arg5, Vec3f* arg6, Vec3f* arg7) {
// arg5 = SP + 0xA8, unk input
// arg6 = SP + 0x90, unk output
// arg7 = SP + 0x84, unk output2
@ -3161,7 +3161,7 @@ s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_ac
phi_v0 = 0;
// ada12c: bc1f 0xada138 ~>
if (0.0f < delta_a3_a4_sp6C.y) {
if (0.0f < delta_a3_a4_sp6C.y) {
phi_v0 = 1;
}
// ada138: beqzl v0,0xada188 ~>
@ -3172,27 +3172,28 @@ s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_ac
}
phi_v1 = 0;
if (0.0f < delta_a3_a5_sp60.y) { //ada19c: bc1f 0xada1a8 ~>
if (0.0f < delta_a3_a5_sp60.y) { // ada19c: bc1f 0xada1a8 ~>
phi_v1 = 1;
}
//ada1a8: beqzl v1,0xada1f4 ~>
// ada1a8: beqzl v1,0xada1f4 ~>
if (phi_v1 && delta_a3_a5_sp60.y < actor_ac_98_12) {
if (sqrtf(SQ(delta_a3_a5_sp60.x) + SQ(delta_a3_a5_sp60.z)) < actor_ac_98_10) {
return 3;
}
}
//ada1f4
// ada1f4
sp38 = SQ(delta_a3_a4_sp6C.x) + SQ(delta_a3_a4_sp6C.z) - SQ(actor_ac_98_10); // temp_f12;
temp_f2 = SQ(delta_a4_a5_sp54.x) + SQ(delta_a4_a5_sp54.z);
if (!(fabsf(temp_f2) < 0.008f)) { // ada23c: bc1t 0xada2f0 ~>
temp_f14 = (delta_a4_a5_sp54.x + delta_a4_a5_sp54.x) * delta_a3_a4_sp6C.x + (delta_a4_a5_sp54.z + delta_a4_a5_sp54.z) * delta_a3_a4_sp6C.z;
temp_f14 = (delta_a4_a5_sp54.x + delta_a4_a5_sp54.x) * delta_a3_a4_sp6C.x +
(delta_a4_a5_sp54.z + delta_a4_a5_sp54.z) * delta_a3_a4_sp6C.z;
temp_f0 = SQ(temp_f14);
temp_f12 = (4.0f * temp_f2) * sp38;
if (temp_f0 < temp_f12) { // ada280: bc1f 0xada290 ~>
return 0;
}
//ada290
// ada290
temp_f16_2 = temp_f0 - temp_f12;
temp_f0 = sqrtf(temp_f16_2);
if (0.0f < temp_f16_2) {
@ -3208,33 +3209,34 @@ s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_ac
sp4C = (-temp_f14 - temp_f0) / (temp_f2 + temp_f2);
}
} else { // 0xada2f0
temp_f14 = ((delta_a4_a5_sp54.x + delta_a4_a5_sp54.x) * delta_a3_a4_sp6C.x) + ((delta_a4_a5_sp54.z + delta_a4_a5_sp54.z) * delta_a3_a4_sp6C.z);
temp_f14 = ((delta_a4_a5_sp54.x + delta_a4_a5_sp54.x) * delta_a3_a4_sp6C.x) +
((delta_a4_a5_sp54.z + delta_a4_a5_sp54.z) * delta_a3_a4_sp6C.z);
if (!(fabsf(temp_f14) < 0.008f)) { // ada324
phi_v0 = 0;
sp50 = -sp38 / temp_f14;
phi_v1 = 1;
} // ada340: b 0xada468
else {
if (sp38 <= 0.0f) { // ada358: bc1f 0xada460
if (sp38 <= 0.0f) { // ada358: bc1f 0xada460
phi_a0 = phi_v0;
if (phi_v0 != 0) // ada360: beqz v0,0xada388 ~>
{
phi_a0 = 0;
//ada37C
phi_a0 = 0;
// ada37C
if (delta_a3_a4_sp6C.y < actor_ac_98_12) {
phi_a0 = 1;
}
}
phi_a1 = phi_a0;
//ada38C
// ada38C
phi_a0 = phi_v1;
if (phi_v1 != 0) {
phi_a0 = 0;
phi_a0 = 0;
if (delta_a3_a5_sp60.y < actor_ac_98_12) {
phi_a0 = 1;
phi_a0 = 1;
}
}
if (phi_a1) { // ada3b4
if (phi_a1) { // ada3b4
if (phi_a0) { // ada3bc
*arg6 = delta_a3_a4_sp6C;
*arg7 = delta_a3_a5_sp60;
@ -3252,7 +3254,7 @@ s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_ac
return 1;
}
}
//ada460
// ada460
return 0;
}
}
@ -3263,10 +3265,10 @@ s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_ac
}
} else { // ada4a4
phi_a1 = 0;
if (sp50 < 0.0f) { //ada4ac
if (sp50 < 0.0f) { // ada4ac
phi_a1 = 1;
}
//ada4b8
// ada4b8
phi_a0 = phi_a1;
if (phi_a1 == 0) {
phi_a1 = 0;
@ -3274,7 +3276,7 @@ s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_ac
phi_a1 = 1;
}
}
//ada4dc
// ada4dc
phi_a2 = 0;
if (sp4C < 0.0f) {
phi_a2 = 1;
@ -3339,7 +3341,7 @@ s32 func_80062ECC(f32 actor_ac_98_10, f32 actor_ac_98_12, f32 arg2, Vec3f* ac_ac
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_80062ECC.s")
#endif // NON_MATCHING
#endif
s32 func_800635D0(s32 arg0) {
s32 result;