core1/code_72B0.c done
This commit is contained in:
@@ -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];
|
||||
|
Reference in New Issue
Block a user