diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c b/src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c index 311d5a4b24..956d35939d 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c @@ -3317,7 +3317,7 @@ void func_8017D22C(void *a0) { } -extern void func_8017D290(s32 arg0, s32 arg1); +extern void func_8017D290(); extern s32 D_801274E8; void func_8017D268(void *arg0) { @@ -3325,7 +3325,43 @@ void func_8017D268(void *arg0) { } -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017BE9C", func_8017D290); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern void func_80049CAC(s32 a0, s32 a1); +extern void func_8012F14C(s32 a0, s32 a1, s32 a2); + +void func_8017D290(s32 param_1, s16 *param_2) { + MATRIX m1; + SVECTOR svec_in; + SVECTOR svec_out; + + *(s32 *)(param_1 + 0x8) = (s16)func_80012C6C((s32)*(s16 *)(param_1 + 0x8), (s32)*(s16 *)(param_1 + 0xC), 0xa); + *(s32 *)(param_1 + 0x10) = (s16)func_80012C6C((s32)*(s16 *)(param_1 + 0x10), (s32)*(s16 *)(param_1 + 0x14), 0xa); + *(s16 *)(param_1 + 0x18) = func_80012ABC((s32)*(s16 *)(param_1 + 0x18), (s32)*(s16 *)(param_1 + 0x20), 0xa); + *(s16 *)(param_1 + 0x1A) = func_80012ABC((s32)*(s16 *)(param_1 + 0x1A), (s32)*(s16 *)(param_1 + 0x22), 0xa); + *(s16 *)(param_1 + 0x1C) = func_80012ABC((s32)*(s16 *)(param_1 + 0x1C), (s32)*(s16 *)(param_1 + 0x24), 0xa); + *(s16 *)(param_1 + 0x28) = func_80012C6C((s32)*(s16 *)(param_1 + 0x28), (s32)*(s16 *)(param_1 + 0x2E), 0xa); + *(s16 *)(param_1 + 0x2A) = func_80012C6C((s32)*(s16 *)(param_1 + 0x2A), (s32)*(s16 *)(param_1 + 0x30), 0xa); + *(s16 *)(param_1 + 0x2C) = func_80012C6C((s32)*(s16 *)(param_1 + 0x2C), (s32)*(s16 *)(param_1 + 0x32), 0xa); + + *(s32 *)(param_1 + 0x48) = (s32)*(s16 *)(param_1 + 0x28) + (s32)param_2[0]; + *(s32 *)(param_1 + 0x4C) = (s32)*(s16 *)(param_1 + 0x2A) + (s32)param_2[1]; + *(s32 *)(param_1 + 0x50) = (s32)*(s16 *)(param_1 + 0x2C) + (s32)param_2[2]; + func_80049CAC(param_1 + 0x18, (s32)&m1); + + m1.t[0] = *(s16 *)(param_1 + 0x28) + param_2[0]; + m1.t[1] = *(s16 *)(param_1 + 0x2A) + param_2[1]; + m1.t[2] = *(s16 *)(param_1 + 0x2C) + param_2[2]; + svec_in.vx = 0; + svec_in.vy = 0; + svec_in.vz = *(s32 *)(param_1 + 0x10); + ((void (*)(s32, s32, s32))func_8012F14C)((s32)&m1, (s32)&svec_in, (s32)&svec_out); + + *(s32 *)(param_1 + 0x3C) = (s32)svec_out.vx; + *(s32 *)(param_1 + 0x40) = (s32)svec_out.vy; + *(s32 *)(param_1 + 0x44) = (s32)svec_out.vz; +} + extern s32 func_8017D428(void); diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8017E4D8.c b/src/ov_SC01_008/ov_SC01_008_jr_8017E4D8.c index 43347e03d5..6dcf0caf9c 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_8017E4D8.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_8017E4D8.c @@ -2681,7 +2681,7 @@ extern void func_8017CF7C(void *a0); extern s32 func_8017CFB8(s32 a0); extern void (*D_80183220[])(void); extern void func_8017D22C(void *a0); -extern void func_8017D290(s32 arg0, s32 arg1); +extern void func_8017D290(); extern s32 D_801274E8; extern void func_8017D268(void *arg0); extern s32 func_8017D428(void); diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8017E6F0.c b/src/ov_SC01_008/ov_SC01_008_jr_8017E6F0.c index 3efe246e48..85cba8ad5b 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_8017E6F0.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_8017E6F0.c @@ -2681,7 +2681,7 @@ extern void func_8017CF7C(void *a0); extern s32 func_8017CFB8(s32 a0); extern void (*D_80183220[])(void); extern void func_8017D22C(void *a0); -extern void func_8017D290(s32 arg0, s32 arg1); +extern void func_8017D290(); extern s32 D_801274E8; extern void func_8017D268(void *arg0); extern s32 func_8017D428(void);