mirror of https://github.com/zeldaret/oot.git
func_8005E9C0 and dependencies OK
This commit is contained in:
parent
046b4ba16c
commit
ddb1c99bf4
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
@ -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
|
||||
|
|
@ -1588,7 +1588,7 @@ void func_800CC8B4(Vec3f* a, Vec3f* b, Vec3f* c, float* nx, float* ny, float* nz
|
|||
// ? func_800CF7D0(?);
|
||||
// ? func_800CFC6C(?);
|
||||
// ? func_800CFC8C(?);
|
||||
// ? func_800CFCAC(?);
|
||||
s32 func_800CFCAC(PosRadius* a, PosRadius* b, f32* unk, f32* dist);
|
||||
// ? func_800CFD84(?);
|
||||
// ? func_800CFDA4(?);
|
||||
// ? func_800CFF14(?);
|
||||
|
|
|
@ -332,11 +332,15 @@ typedef struct {
|
|||
} ColliderJntSphDimUnk; //size = 0x08
|
||||
|
||||
typedef struct {
|
||||
ColliderJntSphDimUnk unk_00;
|
||||
Vec3s pos;
|
||||
s16 radius;
|
||||
float unk_10;
|
||||
s8 unk_14;
|
||||
} PosRadius;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ ColliderJntSphDimUnk unk_00;
|
||||
/* 0x08 */ PosRadius posr;
|
||||
/* 0x10 */ float unk_10;
|
||||
/* 0x14 */ s8 unk_14;
|
||||
} ColliderJntSphItemDim; //size = 0x18
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -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_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")
|
||||
|
||||
|
@ -1100,8 +1119,71 @@ s32 Actor_CollisionCheck_SetOT(GlobalContext* globalCtx, CollisionCheckContext*
|
|||
|
||||
#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")
|
||||
|
||||
//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*);
|
||||
void func_800611A0(GlobalContext* globalCtx, CollisionCheckContext* check) {
|
||||
Collider** col;
|
||||
|
|
Loading…
Reference in New Issue