diff --git a/README.md b/README.md
index 6e858f5b..f314d34e 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# banjo (91.0021%)
+# banjo (91.0749%)
diff --git a/progress/progress_core1.svg b/progress/progress_core1.svg
index 503a1016..130d4c41 100644
--- a/progress/progress_core1.svg
+++ b/progress/progress_core1.svg
@@ -9,7 +9,7 @@
-
+
@@ -17,7 +17,7 @@
core1
- 83.8974%
- 83.8974%
+ 84.1199%
+ 84.1199%
\ No newline at end of file
diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg
index 9bca07fb..e4c05de8 100644
--- a/progress/progress_core2.svg
+++ b/progress/progress_core2.svg
@@ -17,7 +17,7 @@
core2
- 88.6047%
- 88.6047%
+ 88.6752%
+ 88.6752%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index 90a93d09..100e808e 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -17,7 +17,7 @@
Banjo-Kazooie (us.v10)
- 91.0021%
- 91.0021%
+ 91.0749%
+ 91.0749%
\ No newline at end of file
diff --git a/src/core1/code_EAF0.c b/src/core1/code_EAF0.c
index ec6d1713..7527af93 100644
--- a/src/core1/code_EAF0.c
+++ b/src/core1/code_EAF0.c
@@ -306,7 +306,7 @@ void func_8024D2B0(f32 arg0[4], f32 arg1[4], f32 arg2[4], f32 arg3[4]){
#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024D374.s")
-void func_8024D8F4(Cube *cube) {
+bool func_8024D8F4(Cube *cube) {
f32 sp24[3];
f32 sp18[3];
@@ -316,11 +316,31 @@ void func_8024D8F4(Cube *cube) {
sp18[0] = sp24[0] + 1300.0f;
sp18[1] = sp24[1] + 1300.0f;
sp18[2] = sp24[2] + 1300.0f;
- func_8024D374(sp24, sp18);
+ return func_8024D374(sp24, sp18);
}
+bool func_8024D9B0(Cube *cube) {
+ f32 sp34[3];
+ f32 sp28[3];
+ f32 sp1C[3];
-#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024D9B0.s")
+ if (cube->x == -0x10) {
+ return TRUE;
+ }
+ sp1C[0] = (f32) ((cube->x * 1000) + 500) - D_80280EB0[0];
+ sp1C[1] = (f32) ((cube->y * 1000) + 500) - D_80280EB0[1];
+ sp1C[2] = (f32) ((cube->z * 1000) + 500) - D_80280EB0[2];
+ if (LENGTH_SQ_VEC3F(sp1C) > 1.6e7f) {
+ return FALSE;
+ }
+ sp34[0] = (f32) ((cube->x * 1000) - 150);
+ sp34[1] = (f32) ((cube->y * 1000) - 150);
+ sp34[2] = (f32) ((cube->z * 1000) - 150);
+ sp28[0] = sp34[0] + 1300.0f;
+ sp28[1] = sp34[1] + 1300.0f;
+ sp28[2] = sp34[2] + 1300.0f;
+ return func_8024D374(sp34, sp28);
+}
bool func_8024DB50(f32 arg0[3], f32 arg1) {
f32 sp3C[3];
@@ -355,7 +375,9 @@ bool func_8024DD0C(f32 arg0[3]){
return func_8024DC04(arg0[0], arg0[1], arg0[2]);
}
-#pragma GLOBAL_ASM("asm/nonmatchings/core1/code_EAF0/func_8024DD34.s")
+bool func_8024DD34(f32 arg0, f32 arg1, f32 arg2) {
+ return ((D_80280ED0[2][0]*arg0 + D_80280ED0[2][1]*arg1 + D_80280ED0[2][2]*arg2 + D_80280ED0[2][3]) <= 0.0f);
+}
Mtx *func_8024DD90(void){
return &D_80280F98;
diff --git a/src/core2/code_75480.c b/src/core2/code_75480.c
index 169553a0..3e3321f3 100644
--- a/src/core2/code_75480.c
+++ b/src/core2/code_75480.c
@@ -3,8 +3,8 @@
#include "variables.h"
/* .data */
+extern f32 D_80369890[];
extern s32 D_803698B4;
-
/* .bss */
struct8s *D_80381570[4];
@@ -61,4 +61,57 @@ void func_802FC630(s32 ag0, struct8s* arg1){
D_803698B4 = 0;
}
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_75480/func_802FC644.s")
+void func_802FC644(void) {
+ f32 temp_f0;
+ struct8s *temp_s2;
+ s32 var_s1;
+
+ temp_s2 = D_80381570[0];
+ if (D_803698B4) {
+ switch (temp_s2->unk0) {
+ default:
+ break;
+
+ case 1:
+ temp_f0 = D_80369890[temp_s2->unk18];
+ temp_s2->unk1C += temp_s2->unk14 * temp_f0;
+ if (temp_f0 == 0.0) {
+ temp_s2->unk10 = 3.0f;
+ temp_s2->unk0 = 2;
+ } else {
+ temp_s2->unk18++;
+ }
+ break;
+
+ case 2:
+ if (getGameMode() != GAME_MODE_4_PAUSED) {
+ temp_s2->unk10 -= time_getDelta();
+ if (temp_s2->unk10 < 0.0f) {
+ temp_s2->unk0 = 3;
+ for(var_s1 = 1; var_s1 < D_803698B4; var_s1++){
+ func_802FC5C8(4, D_80381570[var_s1]);
+ func_802FB020(D_80381570[var_s1], temp_s2->unk0);
+ }
+ }
+ }
+ break;
+
+ case 3:
+ if (temp_s2->unk1C < -20.0f) {
+ func_802FB020(temp_s2, 0);
+ break;
+ } else {
+ temp_s2->unk18 = MAX(0, temp_s2->unk18 - 1);
+ temp_f0 = D_80369890[temp_s2->unk18];
+ temp_s2->unk1C -= temp_s2->unk14 * temp_f0;
+ }
+ break;
+ }
+
+ for(var_s1 = 1; var_s1 < D_803698B4; var_s1++){
+ if (temp_s2->unk0 == 2) {
+ D_80381570[var_s1]->unk0 = temp_s2->unk0;
+ }
+ }
+ }
+}