summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorSynray <31429825+Synray@users.noreply.github.com>2020-04-25 19:55:19 -0700
committerGitHub <noreply@github.com>2020-04-25 22:55:19 -0400
commitff25b89b13850a9a03787671bfa3d9920d8058d0 (patch)
tree31094ea745d384e798ff30aabd5feff150d7e3e7 /src/code
parentaa91a7ee321fa27c409b2bb8e8ac5e026bdb6365 (diff)
Finish code_8007BF90 (#95)
* Finish code_8007BF90 * Review changes Co-Authored-By: Roman971 <32455037+Roman971@users.noreply.github.com> Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com>
Diffstat (limited to 'src/code')
-rw-r--r--src/code/code_8007BF90.c75
1 files changed, 67 insertions, 8 deletions
diff --git a/src/code/code_8007BF90.c b/src/code/code_8007BF90.c
index c51b222f9..51a269b87 100644
--- a/src/code/code_8007BF90.c
+++ b/src/code/code_8007BF90.c
@@ -27,7 +27,9 @@ f32 func_8007C058(f32 arg0, f32 arg1) {
return (arg1 <= fabsf(arg0)) ? arg0 : ((arg0 >= 0) ? arg1 : -arg1);
}
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF90/func_8007C0A8.s")
+f32 func_8007C0A8(f32 arg0, f32 arg1) {
+ return (fabsf(arg0) <= arg1) ? arg0 : ((arg0 >= 0) ? arg1 : -arg1);
+}
Vec3f* func_8007C0F8(Vec3f* dest, Vec3f* a, Vec3f* b) {
Vec3f v1;
@@ -70,8 +72,6 @@ Vec3f* func_8007C1AC(Vec3f* dest, struct_80045714* arg1) {
return dest;
}
-void func_8007C3F4(struct_80045714* arg0, Vec3f* arg1);
-
void func_8007C25C(Vec3f* dest, struct_80045714* arg1) {
struct_80045714 var;
@@ -82,11 +82,43 @@ void func_8007C25C(Vec3f* dest, struct_80045714* arg1) {
func_8007C1AC(dest, &var);
}
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF90/func_8007C29C.s")
+struct_80045714* func_8007C29C(struct_80045714* arg0, Vec3f* arg1) {
+ struct_80045714 sp28;
+
+ f32 distSquared;
+ f32 dist;
+
+ distSquared = SQ(arg1->x) + SQ(arg1->z);
+ dist = sqrtf(distSquared);
+
+ if ((dist == 0.0f) && (arg1->y == 0.0f)) {
+ sp28.unk_04 = 0;
+ } else {
+ sp28.unk_04 = Math_atan2f(dist, arg1->y) * 57.295776f * 182.04167f + 0.5f;
+ }
+
+ sp28.unk_00 = sqrtf(SQ(arg1->y) + distSquared);
+ if ((arg1->x == 0.0f) && (arg1->z == 0.0f)) {
+ sp28.unk_06 = 0;
+ } else {
+ sp28.unk_06 = Math_atan2f(arg1->x, arg1->z) * 57.295776f * 182.04167f + 0.5f;
+ }
+
+ *arg0 = sp28;
+
+ return arg0;
+}
+
+struct_80045714* func_8007C3F4(struct_80045714* arg0, Vec3f* arg1) {
+ struct_80045714 sp18;
+
+ func_8007C29C(&sp18, arg1);
+ sp18.unk_04 = 0x3FFF - sp18.unk_04;
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF90/func_8007C3F4.s")
+ *arg0 = sp18;
-void func_8007C29C(struct_80045714* arg0, Vec3f* arg1);
+ return arg0;
+}
void func_8007C440(struct_80045714* arg0, Vec3f* a, Vec3f* b) {
Vec3f var;
@@ -120,6 +152,33 @@ Vec3f* func_8007C4E0(Vec3f* dest, Vec3f* a, Vec3f* b) {
return dest;
}
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF90/func_8007C574.s")
+Vec3f* func_8007C574(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2) {
+ Vec3f sp24;
+ Vec3f sp18;
+
+ func_8007C4E0(&sp24, arg1, arg2);
+
+ // ~180 / pi
+ sp18.x = sp24.x * 57.295776f;
+ sp18.y = sp24.y * 57.295776f;
+ sp18.z = 0.0f;
+
+ *arg0 = sp18;
+
+ return arg0;
+}
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF90/func_8007C5E0.s")
+Vec3s* func_8007C5E0(Vec3s* arg0, Vec3f* arg1, Vec3f* arg2) {
+ Vec3f sp24;
+ Vec3s sp18;
+
+ func_8007C4E0(&sp24, arg1, arg2);
+
+ sp18.x = (((sp24.x * 57.295776f)) * 182.04167f) + 0.5f;
+ sp18.y = (((sp24.y * 57.295776f)) * 182.04167f) + 0.5f;
+ sp18.z = 0.0f;
+
+ *arg0 = sp18;
+
+ return arg0;
+}