summaryrefslogtreecommitdiff
path: root/src/code/code_8007BF90.c
diff options
context:
space:
mode:
authorRoman971 <romanlasnier@hotmail.com>2020-03-18 01:09:21 +0100
committerRoman971 <romanlasnier@hotmail.com>2020-03-18 01:09:31 +0100
commit76eb52ab5277ad69cd0908f8492483ef5881ee75 (patch)
tree3368f674fd32ec864c8d167ee3c86b25bcb8b5f7 /src/code/code_8007BF90.c
parent2c7a339a81ddb3698bac0a3bb4238dd3e65d34ce (diff)
Various fixes/matches
- Matched all remaining functions in `__osMalloc.c`, 2 functions in `code_8007BF90.c`, 1 in `code_800A9F30.c`, 2 in `fault.c`, 1 in `fault_drawer.c`, 1 in `gfxprint.c`, 2 in `z_camera.c` - Improved most other remaining non matchings to ensure they are actually equivalent and to get them closer to matching - Added a `alloc.h` header file in the process of working on `fault.c` non matchings - Decompiled `padmgr.c` data/bss in order to improve padmgr non matchings - Removed unused `z_en_wallmas.c` data files - Moved functions confirmed to be in `z_cheap_proc.c` to their own file with that name
Diffstat (limited to 'src/code/code_8007BF90.c')
-rw-r--r--src/code/code_8007BF90.c71
1 files changed, 35 insertions, 36 deletions
diff --git a/src/code/code_8007BF90.c b/src/code/code_8007BF90.c
index 8c5347971..a7e1cca5b 100644
--- a/src/code/code_8007BF90.c
+++ b/src/code/code_8007BF90.c
@@ -1,7 +1,7 @@
#include <ultra64.h>
#include <global.h>
-void func_8007C1AC(Vec3f* dest, struct_80045714* arg1);
+Vec3f* func_8007C1AC(Vec3f* dest, struct_80045714* arg1);
f32 func_8007BF90(Vec3f* a, Vec3f* b)
{
@@ -33,49 +33,48 @@ f32 func_8007C058(f32 arg0, f32 arg1)
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF90/func_8007C0A8.s")
-#ifdef NON_MATCHING
-void func_8007C0F8(Vec3f* dest, Vec3f* a, Vec3f* b)
+Vec3f* func_8007C0F8(Vec3f* dest, Vec3f* a, Vec3f* b)
{
- f32 fVar1;
- Vec3f v;
+ Vec3f v1;
+ Vec3f v2;
+ f32 temp;
+
+ v1.x = b->x - a->x;
+ v1.y = b->y - a->y;
+ v1.z = b->z - a->z;
+
+ temp = func_8007C058(sqrtf(SQ(v1.x) + SQ(v1.y) + SQ(v1.z)), 0.01f);
- v.x = b->x - a->x;
- v.y = b->y - a->y;
- v.z = b->z - a->z;
+ v2.x = v1.x / temp;
+ v2.y = v1.y / temp;
+ v2.z = v1.z / temp;
- fVar1 = func_8007C058(sqrtf(v.x * v.x + v.y * v.y + v.z * v.z), D_8013CB80);
+ *dest = v2;
- dest->x = v.x / fVar1;
- dest->y = v.y / fVar1;
- dest->z = v.z / fVar1;
+ return dest;
}
-#else
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF90/func_8007C0F8.s")
-#endif
-#ifdef NON_MATCHING
-void func_8007C1AC(Vec3f* dest, struct_80045714* arg1)
+Vec3f* func_8007C1AC(Vec3f* dest, struct_80045714* arg1)
{
- f32 fVar1;
- f32 fVar2;
- f32 fVar3;
- f32 fVar4;
- f32 fVar5;
- f32 fVar6;
-
- fVar1 = Math_Coss(arg1->unk_04);
- fVar2 = Math_Coss(arg1->unk_06);
- fVar3 = Math_Coss(arg1->unk_04);
- fVar4 = Math_Coss(arg1->unk_06);
- fVar6 = arg1->unk_00;
- fVar5 = arg1->unk_00;
- dest->x = arg1->unk_00 * fVar3 * fVar4;
- dest->y = fVar6 * fVar1;
- dest->z = fVar5 * fVar3 * fVar2;
+ Vec3f v;
+ f32 sin4;
+ f32 cos4;
+ f32 sin6;
+ f32 cos6;
+
+ cos4 = Math_Coss(arg1->unk_04);
+ cos6 = Math_Coss(arg1->unk_06);
+ sin4 = Math_Sins(arg1->unk_04);
+ sin6 = Math_Sins(arg1->unk_06);
+
+ v.x = arg1->unk_00 * sin4 * sin6;
+ v.y = arg1->unk_00 * cos4;
+ v.z = arg1->unk_00 * sin4 * cos6;
+
+ *dest = v;
+
+ return dest;
}
-#else
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF90/func_8007C1AC.s")
-#endif
void func_8007C3F4(struct_80045714* arg0, Vec3f* arg1);