From a104daa3e38202fea33b42a2cc5afd04759d7765 Mon Sep 17 00:00:00 2001 From: mzxrules Date: Mon, 30 Mar 2020 03:30:58 -0400 Subject: [PATCH] func_8005C5B0 ok --- .../code/z_collision_check/func_8005C5B0.s | 21 --------------- include/functions.h | 2 +- include/z64actor.h | 10 +++++++ src/code/z_collision_check.c | 27 +++++++++++++++---- 4 files changed, 33 insertions(+), 27 deletions(-) delete mode 100644 asm/non_matchings/code/z_collision_check/func_8005C5B0.s diff --git a/asm/non_matchings/code/z_collision_check/func_8005C5B0.s b/asm/non_matchings/code/z_collision_check/func_8005C5B0.s deleted file mode 100644 index dccc06f2f7..0000000000 --- a/asm/non_matchings/code/z_collision_check/func_8005C5B0.s +++ /dev/null @@ -1,21 +0,0 @@ -glabel func_8005C5B0 -/* AD3750 8005C5B0 3C0E8012 */ lui $t6, %hi(D_8011DE78) # $t6, 0x8012 -/* AD3754 8005C5B4 25CEDE78 */ addiu $t6, %lo(D_8011DE78) # addiu $t6, $t6, -0x2188 -/* AD3758 8005C5B8 AFA40000 */ sw $a0, ($sp) -/* AD375C 8005C5BC 25C80030 */ addiu $t0, $t6, 0x30 -/* AD3760 8005C5C0 00A0C825 */ move $t9, $a1 -.L8005C5C4: -/* AD3764 8005C5C4 8DD80000 */ lw $t8, ($t6) -/* AD3768 8005C5C8 25CE000C */ addiu $t6, $t6, 0xc -/* AD376C 8005C5CC 2739000C */ addiu $t9, $t9, 0xc -/* AD3770 8005C5D0 AF38FFF4 */ sw $t8, -0xc($t9) -/* AD3774 8005C5D4 8DCFFFF8 */ lw $t7, -8($t6) -/* AD3778 8005C5D8 AF2FFFF8 */ sw $t7, -8($t9) -/* AD377C 8005C5DC 8DD8FFFC */ lw $t8, -4($t6) -/* AD3780 8005C5E0 15C8FFF8 */ bne $t6, $t0, .L8005C5C4 -/* AD3784 8005C5E4 AF38FFFC */ sw $t8, -4($t9) -/* AD3788 8005C5E8 8DD80000 */ lw $t8, ($t6) -/* AD378C 8005C5EC 24020001 */ li $v0, 1 -/* AD3790 8005C5F0 03E00008 */ jr $ra -/* AD3794 8005C5F4 AF380000 */ sw $t8, ($t9) - diff --git a/include/functions.h b/include/functions.h index d17744b608..ec0a5dbec6 100644 --- a/include/functions.h +++ b/include/functions.h @@ -691,7 +691,7 @@ s32 func_8005C508(GlobalContext* globalCtx, ColliderCylinderMain* collision); s32 func_8005C540(GlobalContext* globalCtx, ColliderCylinderMain* collision); s32 func_8005C578(GlobalContext* globalCtx, ColliderCylinderMain* collision); // ? func_8005C5B0(?); -s32 func_8005C5F8(UNK_TYPE, UNK_TYPE); +s32 func_8005C5F8(GlobalContext* globalCtx, ColliderTriDim* dim); // ? func_8005C608(?); // ? func_8005C6C0(?); // ? func_8005C6F8(?); diff --git a/include/z64actor.h b/include/z64actor.h index 25e62b952f..8c1ba8618a 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -367,6 +367,16 @@ typedef struct { /* 0x0C */ ColliderJntSphItemInit* list; } ColliderJntSphInit_Actor; +typedef struct { + /* 0x00 */ Vec3f pointA; + /* 0x0C */ Vec3f pointB; + /* 0x18 */ Vec3f pointC; + /* 0x24 */ Vec3f unitNormal; + /* 0x30 */ float normalDist; +} ColliderTriDim; + + + typedef struct { /* 0x00 */ Actor* actor; diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index 238e1e9347..824d108850 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -65,18 +65,21 @@ s32 func_8005B72C(GlobalContext* globalCtx, Collider* collision, Actor* actor, C return 1; } +//Reset AT collision? void func_8005B76C(GlobalContext* globalCtx, Collider* collision) { collision->at = NULL; collision->colliderFlags &= ~0x6; } +//Reset AC collision? void func_8005B784(GlobalContext* globalCtx, Collider* collision) { collision->ac = NULL; collision->collideFlags &= ~0x82; } +//Reset OT collision? void func_8005B79C(GlobalContext* globalCtx, Collider* collision) { collision->ot = NULL; @@ -246,7 +249,7 @@ s32 func_8005BB8C(GlobalContext* globalCtx, ColliderJntSphItem* collider) { } //Set CollisionBody Property -//arg1 could be wrong type +//TODO: arg1 could be wrong type s32 func_8005BBB0(GlobalContext* globalCtx, ColliderJntSphItem* collider) { func_8005B9E8(globalCtx, &collider->body); return 1; @@ -268,7 +271,6 @@ s32 func_8005BBF8(GlobalContext* globalCtx, ColliderJntSph* collision) { } //Destruct ColliderJntSph (malloc) s32 func_8005BC28(GlobalContext* globalCtx, ColliderJntSph* collider) { - ColliderJntSphItem* next; func_8005B6A0(globalCtx, &collider->base); @@ -305,7 +307,6 @@ s32 func_8005BCC8(GlobalContext* globalCtx, ColliderJntSph* collider) { return 1; } - //ClObjJntSph? s32 func_8005BD50(GlobalContext* globalCtx, ColliderJntSph* dest, ColliderJntSphInit_Actor* src) { ColliderJntSphItem* destNext; @@ -484,6 +485,7 @@ s32 func_8005C234(GlobalContext* globalCtx, ColliderJntSph* collider) { #endif // NON_MATCHING #ifdef NON_MATCHING +//Initialize ColliderCylinderDim //matching, but needs data section imported s32 func_8005C2BC(GlobalContext* globalCtx, ColliderCylinderDim* dim) { ColliderCylinderDim init = { 0, 0, 0, 0, 0, 0 }; //TODO: this is D_8011DE6C; @@ -491,14 +493,18 @@ s32 func_8005C2BC(GlobalContext* globalCtx, ColliderCylinderDim* dim) { return 1; } #else +//Initialize ColliderCylinderDim +s32 func_8005C2BC(GlobalContext* globalCtx, ColliderCylinderDim* dim); #pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005C2BC.s") #endif // NON_MATCHING +//Destruct ColliderCylinderDim s32 func_8005C318(GlobalContext* globalCtx, ColliderCylinderDim* dim) { return 1; } +//Copy ColliderCylinderDim s32 func_8005C328(GlobalContext* globalCtx, ColliderCylinderDim* dest, ColliderCylinderDim* src) { *dest = *src; @@ -550,6 +556,7 @@ s32 ActorCollider_InitCylinder(GlobalContext* globalCtx, ColliderCylinderMain* c return 1; } +//Reset AT? ColliderCylinderMain s32 func_8005C508(GlobalContext* globalCtx, ColliderCylinderMain* collision) { func_8005B76C(globalCtx, &collision->base); @@ -557,6 +564,7 @@ s32 func_8005C508(GlobalContext* globalCtx, ColliderCylinderMain* collision) return 1; } +//Reset AC? ColliderCylinderMain s32 func_8005C540(GlobalContext* globalCtx, ColliderCylinderMain* collision) { func_8005B784(globalCtx, &collision->base); @@ -564,6 +572,7 @@ s32 func_8005C540(GlobalContext* globalCtx, ColliderCylinderMain* collision) return 1; } +//Reset OT? ColliderCylinderMain s32 func_8005C578(GlobalContext* globalCtx, ColliderCylinderMain* collision) { func_8005B79C(globalCtx, &collision->base); @@ -571,9 +580,17 @@ s32 func_8005C578(GlobalContext* globalCtx, ColliderCylinderMain* collision) return 1; } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_collision_check/func_8005C5B0.s") +extern ColliderTriDim D_8011DE78; -s32 func_8005C5F8(UNK_TYPE arg0, UNK_TYPE arg1) +//Initialize ColliderTriDim +s32 func_8005C5B0(GlobalContext* globalCtx, ColliderTriDim* dim) +{ + *dim = D_8011DE78; + return 1; +} + +//Destruct ColliderTriDim +s32 func_8005C5F8(GlobalContext* globalCtx, ColliderTriDim* dim) { return 1; }