func_8005E9C0 and dependencies OK

This commit is contained in:
mzxrules 2020-04-01 23:58:19 -04:00
parent 046b4ba16c
commit ddb1c99bf4
9 changed files with 2628 additions and 2768 deletions

View File

@ -1,13 +0,0 @@
glabel func_8005DF2C
/* AD50CC 8005DF2C 908E0015 */ lbu $t6, 0x15($a0)
/* AD50D0 8005DF30 00001025 */ move $v0, $zero
/* AD50D4 8005DF34 31CF0001 */ andi $t7, $t6, 1
/* AD50D8 8005DF38 15E00003 */ bnez $t7, .L8005DF48
/* AD50DC 8005DF3C 00000000 */ nop
/* AD50E0 8005DF40 03E00008 */ jr $ra
/* AD50E4 8005DF44 24020001 */ li $v0, 1
.L8005DF48:
/* AD50E8 8005DF48 03E00008 */ jr $ra
/* AD50EC 8005DF4C 00000000 */ nop

View File

@ -1,13 +0,0 @@
glabel func_8005DF50
/* AD50F0 8005DF50 908E0016 */ lbu $t6, 0x16($a0)
/* AD50F4 8005DF54 00001025 */ move $v0, $zero
/* AD50F8 8005DF58 31CF0001 */ andi $t7, $t6, 1
/* AD50FC 8005DF5C 15E00003 */ bnez $t7, .L8005DF6C
/* AD5100 8005DF60 00000000 */ nop
/* AD5104 8005DF64 03E00008 */ jr $ra
/* AD5108 8005DF68 24020001 */ li $v0, 1
.L8005DF6C:
/* AD510C 8005DF6C 03E00008 */ jr $ra
/* AD5110 8005DF70 00000000 */ nop

View File

@ -1,19 +0,0 @@
glabel func_8005DF74
/* AD5114 8005DF74 8C8E0000 */ lw $t6, ($a0)
/* AD5118 8005DF78 8CAF0008 */ lw $t7, 8($a1)
/* AD511C 8005DF7C 00001025 */ move $v0, $zero
/* AD5120 8005DF80 01CFC024 */ and $t8, $t6, $t7
/* AD5124 8005DF84 17000003 */ bnez $t8, .L8005DF94
/* AD5128 8005DF88 00000000 */ nop
/* AD512C 8005DF8C 03E00008 */ jr $ra
/* AD5130 8005DF90 24020001 */ li $v0, 1
.L8005DF94:
/* AD5134 8005DF94 03E00008 */ jr $ra
/* AD5138 8005DF98 00000000 */ nop
/* AD513C 8005DF9C AFA40000 */ sw $a0, ($sp)
/* AD5140 8005DFA0 AFA50004 */ sw $a1, 4($sp)
/* AD5144 8005DFA4 03E00008 */ jr $ra
/* AD5148 8005DFA8 AFA60008 */ sw $a2, 8($sp)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,41 @@
.text
glabel func_8006110C
/* AD82AC 8006110C 27BDFFC8 */ addiu $sp, $sp, -0x38
/* AD82B0 80061110 AFBF001C */ sw $ra, 0x1c($sp)
/* AD82B4 80061114 AFA40038 */ sw $a0, 0x38($sp)
/* AD82B8 80061118 AFA5003C */ sw $a1, 0x3c($sp)
/* AD82BC 8006111C 90CE002E */ lbu $t6, 0x2e($a2)
/* AD82C0 80061120 31CF0080 */ andi $t7, $t6, 0x80
/* AD82C4 80061124 51E0001B */ beql $t7, $zero, .L80061194
/* AD82C8 80061128 8FBF001C */ lw $ra, 0x1c($sp)
/* AD82CC 8006112C 8CC2003C */ lw $v0, 0x3c($a2)
/* AD82D0 80061130 50400018 */ beql $v0, $zero, .L80061194
/* AD82D4 80061134 8FBF001C */ lw $ra, 0x1c($sp)
/* AD82D8 80061138 90580015 */ lbu $t8, 0x15($v0)
/* AD82DC 8006113C 27A40028 */ addiu $a0, $sp, 0x28
/* AD82E0 80061140 24C50026 */ addiu $a1, $a2, 0x26
/* AD82E4 80061144 33190040 */ andi $t9, $t8, 0x40
/* AD82E8 80061148 57200012 */ bnezl $t9, .L80061194
/* AD82EC 8006114C 8FBF001C */ lw $ra, 0x1c($sp)
/* AD82F0 80061150 0C01DF97 */ jal Math_Vec3s_ToVec3f
/* AD82F4 80061154 AFA60040 */ sw $a2, 0x40($sp)
/* AD82F8 80061158 8FA70040 */ lw $a3, 0x40($sp)
/* AD82FC 8006115C 27A90028 */ addiu $t1, $sp, 0x28
/* AD8300 80061160 8FA40038 */ lw $a0, 0x38($sp)
/* AD8304 80061164 8CE50034 */ lw $a1, 0x34($a3)
/* AD8308 80061168 8CE6003C */ lw $a2, 0x3c($a3)
/* AD830C 8006116C 24E80018 */ addiu $t0, $a3, 0x18
/* AD8310 80061170 AFA80010 */ sw $t0, 0x10($sp)
/* AD8314 80061174 0C017981 */ jal func_8005E604
/* AD8318 80061178 AFA90014 */ sw $t1, 0x14($sp)
/* AD831C 8006117C 8FA70040 */ lw $a3, 0x40($sp)
/* AD8320 80061180 8CE2003C */ lw $v0, 0x3c($a3)
/* AD8324 80061184 904A0015 */ lbu $t2, 0x15($v0)
/* AD8328 80061188 354B0040 */ ori $t3, $t2, 0x40
/* AD832C 8006118C A04B0015 */ sb $t3, 0x15($v0)
/* AD8330 80061190 8FBF001C */ lw $ra, 0x1c($sp)
.L80061194:
/* AD8334 80061194 27BD0038 */ addiu $sp, $sp, 0x38
/* AD8338 80061198 03E00008 */ jr $ra
/* AD833C 8006119C 00000000 */ nop

View File

@ -1588,7 +1588,7 @@ void func_800CC8B4(Vec3f* a, Vec3f* b, Vec3f* c, float* nx, float* ny, float* nz
// ? func_800CF7D0(?); // ? func_800CF7D0(?);
// ? func_800CFC6C(?); // ? func_800CFC6C(?);
// ? func_800CFC8C(?); // ? func_800CFC8C(?);
// ? func_800CFCAC(?); s32 func_800CFCAC(PosRadius* a, PosRadius* b, f32* unk, f32* dist);
// ? func_800CFD84(?); // ? func_800CFD84(?);
// ? func_800CFDA4(?); // ? func_800CFDA4(?);
// ? func_800CFF14(?); // ? func_800CFF14(?);

View File

@ -332,11 +332,15 @@ typedef struct {
} ColliderJntSphDimUnk; //size = 0x08 } ColliderJntSphDimUnk; //size = 0x08
typedef struct { typedef struct {
ColliderJntSphDimUnk unk_00;
Vec3s pos; Vec3s pos;
s16 radius; s16 radius;
float unk_10; } PosRadius;
s8 unk_14;
typedef struct {
/* 0x00 */ ColliderJntSphDimUnk unk_00;
/* 0x08 */ PosRadius posr;
/* 0x10 */ float unk_10;
/* 0x14 */ s8 unk_14;
} ColliderJntSphItemDim; //size = 0x18 } ColliderJntSphItemDim; //size = 0x18
typedef struct { typedef struct {

View File

@ -1084,11 +1084,30 @@ s32 Actor_CollisionCheck_SetOT(GlobalContext* globalCtx, CollisionCheckContext*
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DD5C.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DD5C.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DF2C.s") s32 func_8005DF2C(ColliderBody* body) {
if ((body->toucherFlags & 1) == 0) {
return 1;
}
return 0;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DF50.s") s32 func_8005DF50(ColliderBody* body) {
if ((body->bumperFlags & 1) == 0) {
return 1;
}
return 0;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DF74.s") s32 func_8005DF74(ColliderBody* left, ColliderBody* right) {
if ((left->toucher.flags & right->bumper.flags) == 0) {
return 1;
}
return 0;
}
void func_8005DF9C(UNK_TYPE arg0, UNK_TYPE arg1, UNK_TYPE arg2) {
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DFAC.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005DFAC.s")
@ -1100,8 +1119,71 @@ s32 Actor_CollisionCheck_SetOT(GlobalContext* globalCtx, CollisionCheckContext*
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005E800.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005E800.s")
s32 func_8005E81C(GlobalContext* globalContext,
ColliderJntSph* left, ColliderJntSphItem* leftItem, Vec3f* leftv,
ColliderJntSph* right, ColliderJntSphItem* rightItem, Vec3f* rightv, Vec3f* unk);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005E81C.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005E81C.s")
//Check ColliderJntSph to ColliderJntSph
void func_8005E9C0(GlobalContext* globalCtx, CollisionCheckContext* check, Collider* l, Collider* r) {
ColliderJntSph* left;
ColliderJntSph* right;
ColliderJntSphItem* lItem;
ColliderJntSphItem* rItem;
f32 sp8C;
f32 sp88;
f32 temp_f0;
Vec3f sp78;
Vec3f sp6C;
Vec3f sp60;
left = (ColliderJntSph*)l;
right = (ColliderJntSph*)r;
if (left->count > 0) {
if (left->list != NULL) {
if (right->count > 0) {
if (right->list != NULL) {
for (lItem = left->list; lItem < left->list + left->count; lItem++) {
if (func_8005DF2C(&lItem->body) != 1) {
for (rItem = right->list; rItem < right->list + right->count; rItem++) {
if (func_8005DF50(&rItem->body) != 1) {
if (func_8005DF74(&lItem->body, &rItem->body) != 1) {
if (func_800CFCAC(&lItem->dim.posr, &rItem->dim.posr, &sp8C, &sp88) == 1) {
sp6C.x = lItem->dim.posr.pos.x;
sp6C.y = lItem->dim.posr.pos.y;
sp6C.z = lItem->dim.posr.pos.z;
sp60.x = rItem->dim.posr.pos.x;
sp60.y = rItem->dim.posr.pos.y;
sp60.z = rItem->dim.posr.pos.z;
if (!(fabsf(sp88) < 0.008f)) {
temp_f0 = rItem->dim.posr.radius / sp88;
sp78.x = (((sp6C.x - sp60.x) * temp_f0) + sp60.x);
sp78.y = (((sp6C.y - sp60.y) * temp_f0) + sp60.y);
sp78.z = (((sp6C.z - sp60.z) * temp_f0) + sp60.z);
}
else {
Math_Vec3f_Copy(&sp78, &sp6C);
}
func_8005E81C(globalCtx, left, lItem, &sp6C, right, rItem, &sp60, &sp78);
if ((right->base.maskB & 0x40) == 0) {
return;
}
}
}
}
}
}
}
}
}
}
}
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005EC6C.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8006110C.s")
extern void (*D_8011DF5C[])(GlobalContext*, CollisionCheckContext*, Collider*); extern void (*D_8011DF5C[])(GlobalContext*, CollisionCheckContext*, Collider*);
void func_800611A0(GlobalContext* globalCtx, CollisionCheckContext* check) { void func_800611A0(GlobalContext* globalCtx, CollisionCheckContext* check) {
Collider** col; Collider** col;