core1/code_72B0.c done

This commit is contained in:
Banjo Kazooie
2022-10-15 00:25:33 -05:00
parent 237a00e999
commit 2a5d6a0842
15 changed files with 199 additions and 87 deletions

View File

@@ -6,10 +6,10 @@ int func_802458E0(f32 arg0[3], Actor *arg1, s32 arg2);
extern bool func_80320DB0(f32[3], f32, f32[3], u32);
extern bool func_80323240(struct56s *, f32, f32[3]);
extern f32 ml_vec3f_dot_product(f32[3], f32[3]);
extern Struct66s *func_80320B98(f32[3], f32[3], f32[3], u32);
/* .rodata */
extern f64 D_802776C8;
extern BKCollisionTri *func_80320B98(f32[3], f32[3], f32[3], u32);
extern BKCollisionTri *func_80320C94(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 arg4, u32 arg5);
extern f32 func_8031C5D4(struct0*);
extern void func_8031C5AC(struct0 *, f32 *);
/* .bss */
u8 pad_D_8027EF20[0x10];
@@ -20,22 +20,22 @@ void func_80244CD0(f32 arg0[3], u32 arg1) {
f32 sp34[3];
f32 sp28[3];
f32 sp1C[3];
Struct66s *temp_v0;
BKCollisionTri *temp_v0;
ml_vec3f_copy(sp28, arg0);
ml_vec3f_copy(sp1C, arg0);
sp28[1] += 100.0f;
sp1C[1] -= 500.0f;
temp_v0 = func_80320B98(sp28, sp1C, sp34, arg1);
if ((temp_v0 != NULL) && (!(sp34[1] < 0.0f) || (temp_v0->unk8 & 0x10000)) && (arg0[1] < sp1C[1])) {
if ((temp_v0 != NULL) && (!(sp34[1] < 0.0f) || (temp_v0->flags & 0x10000)) && (arg0[1] < sp1C[1])) {
arg0[1] = sp1C[1];
}
}
Struct66s *func_80244D94(f32 arg0[3], f32 arg1[3], f32 arg2[3], u32 arg3, f32 arg4) {
BKCollisionTri *func_80244D94(f32 arg0[3], f32 arg1[3], f32 arg2[3], u32 arg3, f32 arg4) {
f32 sp2C[3];
f32 sp20[3];
Struct66s *sp1C;
BKCollisionTri *sp1C;
ml_vec3f_copy(sp20, arg1);
ml_vec3f_diff_copy(sp2C, sp20, arg0);
@@ -52,9 +52,42 @@ Struct66s *func_80244D94(f32 arg0[3], f32 arg1[3], f32 arg2[3], u32 arg3, f32 ar
return sp1C;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_72B0/func_80244E54.s")
BKCollisionTri *func_80244E54(f32 arg0[3], f32 arg1[3], f32 arg2[3], u32 arg3, f32 arg4, f32 arg5){
f32 sp34[3];
f32 sp28[3];
BKCollisionTri *sp24;
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_72B0/func_80244F00.s")
ml_vec3f_copy(sp34, arg0);
ml_vec3f_copy(sp28, arg1);
sp34[1] += arg5;
sp28[1] += arg5;
sp24 = func_80244D94(sp34, sp28, arg2, arg3, arg4);
if(sp24 == NULL)
return 0;
sp28[1] -= arg5;
ml_vec3f_copy(arg1, sp28);
return sp24;
}
void func_80244F00(f32 arg0[3], f32 arg1, f32 arg2, s32 arg3, u32 arg4){
f32 sp34[3];
f32 sp28[3];
f32 pad;
sp28[0] = arg0[0];
sp28[1] = arg0[1] + arg2;
sp28[2] = arg0[2];
if(func_80320DB0(sp28, arg1, sp34, arg4)){
arg0[0] += 1.3f*sp34[0];
arg0[1] += 1.3f*sp34[1];
arg0[2] += 1.3f*sp34[2];
if(arg3){
func_80244CD0(arg0, arg4);
}
}
}
void func_80244FC0(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3, s32 arg4, u32 arg5) {
f32 sp44[3];
@@ -117,8 +150,8 @@ void func_802451A4(f32 arg0[3], f32 arg1[3], f32 arg2[3], f32 arg3[3], f32 arg4[
D_8027EF30 = ml_vec3f_dot_product(arg4, sp30);
}
phi_v0 = (D_8027EF30 < 0.0f) ? -1 : 1;
ml_vec3f_yaw_rotate_copy(sp48, arg4,(phi_v0 * sp28) * D_802776C8);
phi_f12 = -ml_vec3f_dot_product(&sp48, &sp54);
ml_vec3f_yaw_rotate_copy(sp48, arg4,(phi_v0 * sp28) * 45.0);
phi_f12 = -ml_vec3f_dot_product(sp48, sp54);
phi_f12 = MAX(5.0f, phi_f12);
arg1[0] += phi_f12 * sp48[0];
arg1[1] += phi_f12 * sp48[1];
@@ -188,15 +221,93 @@ int func_8024549C(f32 arg0[3], f32 arg1){
return sp1C;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_72B0/func_80245524.s")
bool func_80245524(f32 arg0[3], void *arg1, s32 *arg2, f32 *arg3){
*arg2 = func_8034C630(arg1);
if(*arg2 == NULL){
*arg3 = arg0[1];
return FALSE;
}
*arg3 = arg0[1] - (f32)func_8034E698(*arg2);
return TRUE;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_72B0/func_8024559C.s")
s32 func_8024559C(f32 arg0[3], s32 *arg1, f32 *arg2){
void *var_v0;
f32 sp18[3];
*arg1 = 0;
*arg2 = arg0[1];
ml_vec3f_copy(sp18, arg0);
var_v0 = func_8024549C(sp18, 20.0f);
if(var_v0 == 0){
return 0;
}
return func_80245524(sp18, var_v0, arg1, arg2);
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_72B0/func_8024560C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_72B0/func_8024575C.s")
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_72B0/func_802457C4.s")
void func_8024560C(f32 arg0[3], struct0 *arg1, UNK_TYPE(s32) arg2, u8 *arg3, f32 arg4[3]){
f32 sp44[3];
f32 sp40;
f32 temp_f12;
u8 temp_v0;
func_8031C618(arg1, arg0);
func_8031C638(arg1, arg2);
func_8031C44C(arg1);
sp40 = func_8031C5D4(arg1);
func_8031C5AC(arg1, sp44);
temp_v0 = *arg3;
*arg3 = 0;
if (!(sp44[1] < 0.44)) {
if (arg0[1] <= sp40) {
arg0[1] = sp40;
*arg3 = 1;
}
else if ((temp_v0 != 0) && (arg4[1] < 0.0f)) {
if (sp44[1] < 0.9) {
if (arg0[1] < (sp40 + 30.0f)) {
arg0[1] = sp40;
*arg3 = 1;
}
} else if (arg0[1] < (sp40 + 5.0f)) {
arg0[1] = sp40;
*arg3 = 1;
}
}
}
}
BKCollisionTri *func_8024575C(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 arg4, u32 arg5){
if(arg2 < ml_vec3f_distance(arg0, arg1)){
return NULL;
}
return func_80320C94(arg0, arg1, arg2, arg3, arg4, arg5);
}
BKCollisionTri *func_802457C4(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3, f32 arg4[3], s32 arg5, u32 arg6){
BKCollisionTri *var_v1;
f32 sp38[3];
f32 sp2C[3];
sp38[0] = arg0[0];
sp38[1] = arg0[1] + arg2;
sp38[2] = arg0[2];
sp2C[0] = arg1[0];
sp2C[1] = arg1[1] + arg2;
sp2C[2] = arg1[2];
var_v1 = func_80320C94(sp38, sp2C, arg3, arg4, arg5, arg6);
if(var_v1 != NULL){
arg1[0] = sp2C[0];
arg1[1] = sp2C[1] - arg2;
arg1[2] = sp2C[2];
}
return var_v1;
}
void func_8024587C(BKCollisionTri *dst, BKCollisionTri *src){
dst->unk0[0] = src->unk0[0];

View File

@@ -4,7 +4,9 @@
extern f32 D_80275908;
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_80245980.s")
s32 func_80245980(f32 arg0){
return arg0*65536.0f;
}
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_7F60/func_802459A0.s")

View File

@@ -5,7 +5,7 @@
extern void func_802BEA4C(f32[3], f32[3], f32, f32[3]);
extern void func_802BEBE8(f32[3], f32[3], f32, f32[3]);
extern void func_802BEAAC(f32[3], f32[3], f32, f32[3], f32[3], f32[3], f32[3]);
extern Struct66s *func_80320B98(f32[3], f32[3], f32[3], s32);
extern BKCollisionTri *func_80320B98(f32[3], f32[3], f32[3], s32);
f32 func_802BB938(f32[3], f32[3]);
f32 func_802BBD48(void);
f32 func_802BBEA4(f32 arg0[3], f32 arg1[3], f32 arg2, s32 arg3, s32 arg4);
@@ -194,7 +194,7 @@ f32 func_802BBEA4(f32 arg0[3], f32 arg1[3], f32 arg2, s32 arg3, s32 arg4) {
f32 sp4C[3];
f32 phi_f2;
f32 sp3C[3];
Struct66s *sp38;
BKCollisionTri *sp38;
s32 i;
if (arg3 == 0) {
@@ -207,7 +207,7 @@ f32 func_802BBEA4(f32 arg0[3], f32 arg1[3], f32 arg2, s32 arg3, s32 arg4) {
sp38 = func_80320B98(arg0, sp4C, sp3C, arg4);
if (sp38 != NULL) {
phi_f2 = ml_vec3f_distance(arg0, &sp4C);
D_8037D8D0.unk0[D_8037D8D0.unk30] = sp38->unk8;
D_8037D8D0.unk0[D_8037D8D0.unk30] = sp38->flags;
} else {
phi_f2 = arg2;
D_8037D8D0.unk0[D_8037D8D0.unk30] = 0;

View File

@@ -11,8 +11,8 @@ extern f32 func_803243D0(struct56s *arg0, f32 arg1[3]);
extern void func_802CAF14(u32*, s32, bool);
extern void func_8032D510(Cube *, Gfx **, Mtx **, Vtx **);
extern ActorProp *func_803322F0(Cube *, ActorMarker *, f32, s32, s32 *);
extern Struct66s *func_803319C0(Cube *cube, f32 position[3], f32 radius, f32 arg2[3], u32 flags);
extern Struct66s *func_80331638(Cube *cube, f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 arg2[3], s32, u32 flags);
extern BKCollisionTri *func_803319C0(Cube *cube, f32 position[3], f32 radius, f32 arg2[3], u32 flags);
extern BKCollisionTri *func_80331638(Cube *cube, f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 arg2[3], s32, u32 flags);
typedef struct {
s32 unk0;
@@ -542,7 +542,7 @@ void func_80303664(s32 arg0[3], s32 arg1[3]){
arg1[2] = D_80381FA0.max[2];
}
//Struct66s *
//BKCollisionTri *
void * func_803036A0(f32 volume_p1[3], f32 volume_p2[3], f32 arg2[3], u32 arg3) {
s32 cube_indx[3];
s32 min[3];
@@ -594,17 +594,17 @@ void * func_80303800(f32 volume_p1[3], f32 volume_p2[3], f32 arg2[3], u32 arg3)
return NULL;
}
//Struct66s *
//BKCollisionTri *
#ifndef NONMATCHING
Struct66s * func_80303960(f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 arg3[3], s32 arg4, u32 flags);
BKCollisionTri * func_80303960(f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 arg3[3], s32 arg4, u32 flags);
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_7AF80/func_80303960.s")
#else
Struct66s * func_80303960(f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 arg3[3], s32 arg4, u32 flags) {
BKCollisionTri * func_80303960(f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 arg3[3], s32 arg4, u32 flags) {
s32 cube_indx[3];
s32 min[3];
s32 max[3];
Struct66s *temp_v0;
Struct66s *var_s5;
BKCollisionTri *temp_v0;
BKCollisionTri *var_s5;
var_s5 = NULL;
cube_volumeToIndices(min, max, volume_p1, volume_p2, radius + D_80381FA0.unk4);
@@ -626,13 +626,13 @@ Struct66s * func_80303960(f32 volume_p1[3], f32 volume_p2[3], f32 radius, f32 ar
}
#endif
//Struct66s *
Struct66s * func_80303AF0(f32 position[3], f32 radius, f32 arg2[3], u32 arg3) {
//BKCollisionTri *
BKCollisionTri * func_80303AF0(f32 position[3], f32 radius, f32 arg2[3], u32 arg3) {
s32 cube_indx[3];
s32 min[3];
s32 max[3];
Struct66s *temp_v0;
Struct66s *var_s5;
BKCollisionTri *temp_v0;
BKCollisionTri *var_s5;
var_s5 = NULL;
cube_volumeToIndices(min, max, position, position, radius + D_80381FA0.unk4);

View File

@@ -5,9 +5,9 @@
extern void func_80303F7C(ActorMarker *, f32, s32, s32);
extern ActorProp *func_80303FE4(ActorMarker *, f32, s32);
typedef Struct66s * (*Method_Core2_999A0_0)(f32[3], f32[3], f32[3], u32);
typedef Struct66s * (*Method_Core2_999A0_1)(f32[3], f32[3], f32, f32[3], s32, u32);
typedef Struct66s * (*Method_Core2_999A0_2)(f32[3], f32, f32[3], u32);
typedef BKCollisionTri * (*Method_Core2_999A0_0)(f32[3], f32[3], f32[3], u32);
typedef BKCollisionTri * (*Method_Core2_999A0_1)(f32[3], f32[3], f32, f32[3], s32, u32);
typedef BKCollisionTri * (*Method_Core2_999A0_2)(f32[3], f32, f32[3], u32);
typedef void * (*Method_Core2_999A0_3)(void);
typedef struct {
@@ -25,7 +25,7 @@ struct {
}D_80383230;
/* .public */
Struct66s *func_80320B98(f32 arg0[3], f32 arg1[3], f32 arg2[3], u32 arg3);
BKCollisionTri *func_80320B98(f32 arg0[3], f32 arg1[3], f32 arg2[3], u32 arg3);
void func_80320B44(Method_Core2_999A0_0 arg0, Method_Core2_999A0_1 arg1, Method_Core2_999A0_2 arg2, Method_Core2_999A0_3 arg3);
/* .code */
@@ -103,10 +103,10 @@ void func_80320B84(void){
D_80383230.unk84 = NULL;
}
Struct66s *func_80320B98(f32 arg0[3], f32 arg1[3], f32 arg2[3], u32 arg3) {
BKCollisionTri *func_80320B98(f32 arg0[3], f32 arg1[3], f32 arg2[3], u32 arg3) {
Struct_core2_999A0_0 *var_s0;
Struct66s * temp_v0_2;
Struct66s * var_s7;
BKCollisionTri * temp_v0_2;
BKCollisionTri * var_s7;
var_s7 = NULL;
D_80383230.unk84 = NULL;
@@ -126,10 +126,10 @@ Struct66s *func_80320B98(f32 arg0[3], f32 arg1[3], f32 arg2[3], u32 arg3) {
return var_s7;
}
Struct66s *func_80320C94(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 arg4, u32 arg5) {
BKCollisionTri *func_80320C94(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 arg4, u32 arg5) {
Struct_core2_999A0_0 *var_s0;
Struct66s * temp_v0_2;
Struct66s * var_s7;
BKCollisionTri * temp_v0_2;
BKCollisionTri * var_s7;
var_s7 = NULL;
D_80383230.unk84 = NULL;
@@ -149,10 +149,10 @@ Struct66s *func_80320C94(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 ar
return var_s7;
}
Struct66s *func_80320DB0(f32 arg0[3], f32 arg1, f32 arg2[3], u32 arg3) {
BKCollisionTri *func_80320DB0(f32 arg0[3], f32 arg1, f32 arg2[3], u32 arg3) {
Struct_core2_999A0_0 *var_s0;
Struct66s * temp_v0_2;
Struct66s * var_s7;
BKCollisionTri * temp_v0_2;
BKCollisionTri * var_s7;
var_s7 = NULL;
D_80383230.unk84 = NULL;

View File

@@ -12,7 +12,7 @@ extern f32 func_8033229C(ActorMarker *marker);
extern f32 func_80309B24(f32 [3]);
extern f32 ml_vec3f_dot_product(f32[3], f32[3]);
extern f32 ml_vec3f_distance_squared(f32[3], f32[3]);
extern Struct66s *func_80320C94(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 arg4, u32 arg5);
extern BKCollisionTri *func_80320C94(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 arg4, u32 arg5);
/* .h */
typedef bool (*method_core2_A4D00_0)(Actor *, f32[3], s32, s32);
@@ -20,7 +20,7 @@ typedef bool (*method_core2_A4D00_0)(Actor *, f32[3], s32, s32);
typedef struct {
f32 unk0[3];
f32 unkC[3];
Struct66s * unk18;
BKCollisionTri * unk18;
f32 unk1C[3];
f32 unk28[3];
f32 unk34[3];

View File

@@ -1785,9 +1785,9 @@ s32 func_80331638(Cube *cube, f32 arg1[3], f32 arg2[3], f32 arg3, f32 arg4[3], s
#ifndef NONMATCHING
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_803319C0.s")
#else
Struct66s *func_803319C0(Cube *arg0, f32 arg1[3], f32 arg2, s32 arg3, f32 arg4[3], u32 arg5) {
Struct66s *var_s7;
Struct66s *var_v0;
BKCollisionTri *func_803319C0(Cube *arg0, f32 arg1[3], f32 arg2, s32 arg3, f32 arg4[3], u32 arg5) {
BKCollisionTri *var_s7;
BKCollisionTri *var_v0;
s32 var_s3;
Prop *var_s0;

View File

@@ -9,10 +9,10 @@ extern f32 func_8031C5E4(struct0*);
extern void func_8031C5FC(struct0 *, f32);
extern void func_80244FC0(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3, s32 arg4, u32 arg5);
extern s32 func_80244E54(f32[3], f32[3], f32 [3], u32, f32, f32);
extern Struct66s *func_802457C4(f32[3], f32[3], f32, f32, f32[3], s32, u32);
extern BKCollisionTri *func_802457C4(f32[3], f32[3], f32, f32, f32[3], s32, u32);
extern f32 func_80255D70(f32 arg0);
extern s32 func_8029463C(void);
extern Struct66s *func_80320C94(f32[3], f32[3], f32, f32[3], s32, u32);
extern BKCollisionTri *func_80320C94(f32[3], f32[3], f32, f32[3], s32, u32);
void func_80294378(s32 arg0);
void func_80294384(s32 arg0);
@@ -21,7 +21,7 @@ void func_80294390(void);
typedef struct {
f32 unk0[3];
f32 unkC[3];
Struct66s *unk18;
BKCollisionTri *unk18;
f32 unk1C[3];
f32 unk28[3];
f32 unk34[3];

View File

@@ -59,16 +59,16 @@ func_8034C3D0(BKModel *arg0, s32 arg1, s32 vtx_xform_id, s32 arg3){
v0->unk6 = vtx_xform_id;
v0->unk0 = arg0;
v0->unk4 = arg1;
D_80372030[v0->unk6].unk0(&v0->pad8[0], arg3, v0->unk0, v0->unk4);
D_80372030[v0->unk6].unk0(&v0->unk8, arg3, v0->unk0, v0->unk4);
}
void * func_8034C448(s32 arg0){
Struct70s *func_8034C448(s32 arg0){
struct1Ds *iPtr;
struct1Ds *endPtr = vector_getEnd(D_80386140.unk4);
for(iPtr = vector_getBegin(D_80386140.unk4); iPtr < endPtr; iPtr++){
if(iPtr->unk6 == 8 && iPtr->unk4 == arg0)
return &iPtr->pad8[0];
return &iPtr->unk8;
}
return NULL;
}
@@ -94,29 +94,29 @@ s16 func_8034C50C(s32 arg0) {
}
Struct6Ds * func_8034C528(s32 arg0){
Struct70s *func_8034C528(s32 arg0){
struct1Ds *iPtr;
struct1Ds *endPtr = vector_getEnd(D_80386140.unk4);
for(iPtr = vector_getBegin(D_80386140.unk4); iPtr < endPtr; iPtr++){
if(iPtr->unk6 == 2 && iPtr->unk4 == arg0)
return &iPtr->pad8[0];
return &iPtr->unk8;
}
return NULL;
}
Struct73s *func_8034C5AC(s32 arg0){
Struct70s *func_8034C5AC(s32 arg0){
struct1Ds *iPtr;
struct1Ds *endPtr = vector_getEnd(D_80386140.unk4);
for(iPtr = vector_getBegin(D_80386140.unk4); iPtr < endPtr; iPtr++){
if(iPtr->unk6 == 3 && iPtr->unk4 == arg0)
return &iPtr->pad8[0];
return &iPtr->unk8;
}
return NULL;
}
void * func_8034C630(s32 arg0){
Struct70s *func_8034C630(s32 arg0){
struct1Ds *iPtr;
struct1Ds *endPtr = vector_getEnd(D_80386140.unk4);
@@ -124,7 +124,7 @@ void * func_8034C630(s32 arg0){
if( (iPtr->unk6 == 3)
&& func_802E9FEC(func_8033F2AC(iPtr->unk0), iPtr->unk4, arg0)
){
return &iPtr->pad8[0];
return &iPtr->unk8;
}
}
return NULL;
@@ -169,12 +169,12 @@ void func_8034C6DC(BKModel *arg0){
}
}
void * func_8034C8D8(void){
void func_8034C8D8(void){
struct1Ds *iPtr;
struct1Ds *endPtr = vector_getEnd(D_80386140.unk4);
for(iPtr = vector_getBegin(D_80386140.unk4); iPtr < endPtr; iPtr++){
D_80372030[iPtr->unk6].unk8(&iPtr->pad8[0]);
D_80372030[iPtr->unk6].unk8(&iPtr->unk8);
}
vector_free(D_80386140.unk4);
}
@@ -193,7 +193,7 @@ void * func_8034C9D4(void){
struct1Ds *endPtr = vector_getEnd(D_80386140.unk4);
for(iPtr = vector_getBegin(D_80386140.unk4); iPtr < endPtr; iPtr++){
D_80372030[iPtr->unk6].unk4(&iPtr->pad8[0], iPtr->unk0, iPtr->unk4);
D_80372030[iPtr->unk6].unk4(&iPtr->unk8, iPtr->unk0, iPtr->unk4);
}
}