diff --git a/README.md b/README.md
index c00362d7..e226844a 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# banjo (96.0688%)
+# banjo (96.1105%)
diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg
index 430514a3..999792d3 100644
--- a/progress/progress_core2.svg
+++ b/progress/progress_core2.svg
@@ -17,7 +17,7 @@
core2
- 94.8840%
- 94.8840%
+ 94.9567%
+ 94.9567%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index b3730f96..5f302ea1 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -9,7 +9,7 @@
-
+
@@ -17,7 +17,7 @@
Banjo-Kazooie (us.v10)
- 96.0688%
- 96.0688%
+ 96.1105%
+ 96.1105%
\ No newline at end of file
diff --git a/src/core2/code_5FD90.c b/src/core2/code_5FD90.c
index 5264e66f..49108b15 100644
--- a/src/core2/code_5FD90.c
+++ b/src/core2/code_5FD90.c
@@ -719,29 +719,21 @@ Struct_core2_5FD90_0 *func_802E879C(Struct_core2_5FD90_0 *arg0, Struct_core2_5FD
return spD0;
}
-
-#ifndef NONMATCHING
-BKCollisionTri *func_802E8E88(BKCollisionList *collision_list, BKVertexList *vtx_list, f32 arg2[3], f32 arg3[3], f32 arg4, f32 arg5[3], s32 arg6, s32 arg7);
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_5FD90/func_802E8E88.s")
-#else
BKCollisionTri *func_802E8E88(BKCollisionList *collision_list, BKVertexList *vtx_list, f32 arg2[3], f32 arg3[3], f32 arg4, f32 arg5[3], s32 arg6, s32 arg7){
- s32 spC4;
- s32 spC0;
+ Struct_core2_5FD90_0 * spC4;
+ Struct_core2_5FD90_0 * spC0;
f32 spB4[3];
- f32 sp98[3];
- f32 sp8C[3];
- f32 sp78[3];
+
f32 temp_f20;
- s32 temp_s0;
- void *temp_s5;
- void *temp_s5_2;
- void *temp_v0;
- void *temp_v0_2;
f32 phi_f22;
f32 phi_f24;
s32 phi_s0;
+
+ f32 sp98[3];
+ f32 sp8C[3];
Struct_core2_5FD90_0 *phi_s5;
- void *phi_s5_2;
+ Struct_core2_5FD90_0 *phi_v0;
+ f32 sp78[3];
sp78[0] = arg3[0] - arg2[0];
sp78[1] = arg3[1] - arg2[1];
@@ -765,23 +757,23 @@ BKCollisionTri *func_802E8E88(BKCollisionList *collision_list, BKVertexList *vtx
phi_f22 = 0.0f;
phi_f24 = 1.0f;
for(phi_s0 = 0; phi_s0 < arg6; phi_s0++){
- temp_f20 = (f64) (phi_f22 + phi_f24) / 2.0;
- sp98[0] = (spB4[0] * temp_f20) + arg2[0];
- sp98[1] = (spB4[1] * temp_f20) + arg2[1];
- sp98[2] = (spB4[2] * temp_f20) + arg2[2];
- phi_s5 = func_802E879C(spC4, spC0, &sp98, arg4, &sp8C);
- if (phi_s5 != NULL) {
+ temp_f20 = (phi_f22 + phi_f24) * 0.5;
+ sp98[0] = arg2[0] + (spB4[0] * temp_f20);
+ sp98[1] = arg2[1] + (spB4[1] * temp_f20);
+ sp98[2] = arg2[2] + (spB4[2] * temp_f20);
+ phi_v0 = func_802E879C(spC4, spC0, sp98, arg4, sp8C);
+ if (phi_v0 != NULL) {
arg5[0] = sp8C[0];
arg5[1] = sp8C[1];
arg5[2] = sp8C[2];
phi_f24 = temp_f20;
+ phi_s5 = phi_v0;
} else {
arg3[0] = sp98[0];
arg3[1] = sp98[1];
arg3[2] = sp98[2];
phi_f22 = temp_f20;
}
- phi_s5 = phi_s5_2;
}
if (phi_s5 == NULL) {
return NULL;
@@ -790,7 +782,6 @@ BKCollisionTri *func_802E8E88(BKCollisionList *collision_list, BKVertexList *vtx
func_802E6D20(phi_s5->unk24, vtx_list);
return phi_s5->unk24;
}
-#endif
s32 func_802E9118(BKCollisionList * collision_list, BKVertexList *vtx_list, f32 arg2[3], s32 arg3, f32 arg4, f32 arg5[3], f32 arg6[3], f32 arg7, f32 arg8[3], s32 arg9, s32 argA) {
f32 sp4C[3];