func_8005F5B0 decompiled, not matching

This commit is contained in:
mzxrules 2020-04-04 18:28:49 -04:00
parent b55f19bb70
commit 8ed3f463be
2 changed files with 42 additions and 2 deletions

View File

@ -1577,7 +1577,7 @@ void func_800CC8B4(Vec3f* a, Vec3f* b, Vec3f* c, float* nx, float* ny, float* nz
// ? func_800CE084(?);
// ? func_800CE15C(?);
// ? func_800CE25C(?);
// ? func_800CE3C0(?);
void func_800CE3C0(UNK_TYPE* dest, Vec3f* vA, Vec3f* vB, Vec3f* vC);
// ? func_800CE46C(?);
// ? func_800CE4B8(?);
// ? func_800CE600(?);

View File

@ -1448,7 +1448,6 @@ void func_8005EC6C(GlobalContext* globalCtx, CollisionCheckContext* check, Colli
}
}
//Check ColliderCylinder to ColliderJntSph
void func_8005EEE0(GlobalContext* globalCtx, CollisionCheckContext* check, Collider* l, Collider* r) {
ColliderCylinder* left = (ColliderCylinder*)l;
@ -1580,7 +1579,48 @@ void func_8005F39C(GlobalContext* globalCtx, CollisionCheckContext* check, Colli
}
}
extern UNK_TYPE D_8015E230;
extern UNK_TYPE D_8015E268;
#ifdef NON_MATCHING
//Check ColliderJntSph to ColliderQuad
//Regalloc issue with addition section
void func_8005F5B0(GlobalContext* globalCtx, CollisionCheckContext* check, Collider* l, Collider* r) {
ColliderJntSph* left = (ColliderJntSph*)l;
ColliderQuad* right = (ColliderQuad*)r;
Vec3f sp7C;
ColliderJntSphItem* lItem;
Vec3f sp6C;
Vec3f sp60;
if (left->count > 0 && left->list != NULL) {
if (func_8005DF50(&right->body) == 1) {
return;
}
func_800CE3C0(&D_8015E230, &right->dim.quad[2], &right->dim.quad[3], &right->dim.quad[1]);
func_800CE3C0(&D_8015E268, &right->dim.quad[1], &right->dim.quad[0], &right->dim.quad[2]);
for (lItem = left->list; lItem < left->list + left->count; lItem++) {
if (func_8005DF2C(&lItem->body) == 1) {
continue;
}
if (func_8005DF74(&lItem->body, &right->body) == 1) {
continue;
}
if (func_800CE934(&lItem->dim.posr, &D_8015E230, &sp7C) == 1 || func_800CE934(&lItem->dim.posr, &D_8015E268, &sp7C) == 1) {
Math_Vec3s_ToVec3f(&sp6C, &lItem->dim.posr.pos);
sp60.x = (right->dim.quad[2].x + right->dim.quad[3].x + right->dim.quad[1].x + right->dim.quad[0].x) * (1.0f / 4);//* 0.25f;
sp60.y = (right->dim.quad[2].y + right->dim.quad[3].y + right->dim.quad[1].y + right->dim.quad[0].y) * (1.0f / 4);//* 0.25f;
sp60.z = (right->dim.quad[2].z + right->dim.quad[3].z + right->dim.quad[1].z + right->dim.quad[0].z) * (1.0f / 4);//* 0.25f;
func_8005E81C(globalCtx, &left->base, &lItem->body, &sp6C, &right->base, &right->body, &sp60, &sp7C);
return;
}
}
}
}
#else
void func_8005F5B0(GlobalContext* globalCtx, CollisionCheckContext* check, Collider* l, Collider* r);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005F5B0.s")
#endif
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005F7D0.s")