diff --git a/README.md b/README.md
index 29f3a213..b6f2d03f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# banjo (97.3978%)
+# banjo (97.4527%)
diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg
index fedccf82..305bc9ac 100644
--- a/progress/progress_core2.svg
+++ b/progress/progress_core2.svg
@@ -17,7 +17,7 @@
core2
- 96.3339%
- 96.3339%
+ 96.4296%
+ 96.4296%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index ab4ec510..36052169 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -9,7 +9,7 @@
-
+
@@ -17,7 +17,7 @@
Banjo-Kazooie (us.v10)
- 97.3978%
- 97.3978%
+ 97.4527%
+ 97.4527%
\ No newline at end of file
diff --git a/src/core2/code_A5BC0.c b/src/core2/code_A5BC0.c
index 0afa688a..042e5c7f 100644
--- a/src/core2/code_A5BC0.c
+++ b/src/core2/code_A5BC0.c
@@ -1789,91 +1789,96 @@ s32 func_80331638(Cube *cube, f32 arg1[3], f32 arg2[3], f32 arg3, f32 arg4[3], s
return spD8;
}
-#ifndef NONMATCHING
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_803319C0.s")
-#else
-BKCollisionTri *func_803319C0(Cube *arg0, f32 arg1[3], f32 arg2, s32 arg3, f32 arg4[3], u32 arg5) {
+BKCollisionTri *func_803319C0(Cube *arg0, f32 arg1[3], f32 arg2, s32 arg3, f32 arg4[3], u32 arg5){
BKCollisionTri *var_s7;
BKCollisionTri *var_v0;
s32 var_s3;
Prop *var_s0;
-
-
- var_s7 = NULL;
- var_s0 = arg0->prop2Ptr;\
+ BKCollisionList *temp_v0_3;
+ BKVertexList *temp_a1;
+ f32 spAC[3];
+ f32 spA0[3];
+ BKModelBin *temp_v0_2;
+ BKModelBin *new_var;
+ ModelProp *mProp;
+ f32 sp88[3];
+ f32 sp7C[3];
+ Actor *temp_v0_6;
+ ActorProp *aProp = &var_s0->actorProp;
+
+ var_s7 = 0;
+ var_s0 = arg0->prop2Ptr;
for (var_s3 = arg0->prop2Cnt; var_s3 != 0; var_s3--, var_s0++) {
- if (!var_s0->markerFlag && var_s0->unk8_1 && var_s0->unk8_4) {
- ModelProp *mProp = &var_s0->modelProp;
- BKModelBin *temp_v0_2;
- BKCollisionList *temp_v0_3;
-
- temp_v0_2 = func_8030A4B4(mProp->unk0_31);
- if (temp_v0_2 != NULL) {
- temp_v0_3 = func_8033A084(temp_v0_2);
- if (temp_v0_3 != NULL) {
- f32 spAC[3];
- f32 spA0[3];
-
- spAC[0] = (f32) mProp->unk4[0];
- spAC[1] = (f32) mProp->unk4[1];
- spAC[2] = (f32) mProp->unk4[2];
- spA0[0] = 0.0f;
- spA0[1] = (f32) (mProp->unk0_15 * 2);
- spA0[2] = (f32) (mProp->unk0_7 * 2);
- var_v0 = func_802E9DD8(temp_v0_3, func_8033A148(temp_v0_2), spAC, spA0, ((f32) mProp->unkA) / 100.0, arg1, arg2, arg3, arg4);
- if (var_v0 != NULL) {
- var_s7 = var_v0;
- }
- }
- }
- } else if (var_s0->markerFlag && var_s0->unk8_3 && var_s0->unk8_4) {
- ActorProp *aProp = &var_s0->actorProp;
- BKModelBin *temp_v0_2;
- BKCollisionList *temp_v0_3;
- Actor *temp_v0_6;
- BKVertexList *temp_a1;
-
- temp_v0_2 = func_80330DE4(aProp->marker);
- if (temp_v0_2 != NULL) {
- temp_v0_3 = func_8033A084(temp_v0_2);
- if (temp_v0_3 != NULL) {
- f32 sp88[3];
- f32 sp7C[3];
-
- temp_v0_6 = marker_getActor(aProp->marker);
- temp_a1 = func_80330C74(temp_v0_6);
- sp88[0] = (f32) aProp->x;
- sp88[1] = (f32) aProp->y;
- sp88[2] = (f32) aProp->z;
-
- sp7C[0] = aProp->marker->pitch;
- sp7C[1] = aProp->marker->yaw;
- sp7C[2] = aProp->marker->roll;
-
- var_v0 = func_802E9DD8(temp_v0_3, temp_a1, sp88, sp7C, temp_v0_6->scale, arg1, arg2, arg3, arg4);
- if (var_v0 != 0) {
- var_s7 = var_v0;
- }
- }
- }
- } else if (var_s0->markerFlag) {
- ActorProp *aProp = &var_s0->actorProp;
- Struct6Cs *temp_v0_7;
-
- temp_v0_7 = aProp->marker->unk18;
- if (temp_v0_7 != NULL) {
- if (temp_v0_7->unk8 != NULL) {
- var_v0 = temp_v0_7->unk8(aProp->marker, arg1, arg2, arg3, arg4);
- if (var_v0 != 0) {
- var_s7 = var_v0;
- }
- }
+ if (((!var_s0->markerFlag) && var_s0->unk8_1) && var_s0->unk8_4)
+ {
+ mProp = &var_s0->modelProp;
+ new_var = func_8030A4B4(mProp->unk0_31);
+ if (1) { } if (1) { } if (1) { }
+ temp_v0_2 = new_var;
+ if (temp_v0_2 != 0){
+ temp_v0_3 = func_8033A084(temp_v0_2);
+ if (temp_v0_3 != 0){
+ spAC[0] = (f32) mProp->unk4[0];
+ spAC[1] = (f32) mProp->unk4[1];
+ spAC[2] = (f32) mProp->unk4[2];
+ spA0[0] = 0.0f;
+ spA0[1] = (f32) (mProp->unk0_15 * 2);
+ temp_v0_2 = temp_v0_2;
+ spA0[2] = (f32) (mProp->unk0_7 * 2);
+ var_v0 = func_802E9DD8(temp_v0_3, func_8033A148(temp_v0_2), spAC, spA0, ((f32) mProp->unkA) / 100.0, arg1, arg2, arg3, arg4);
+ if (var_v0 != 0)
+ var_s7 = var_v0;
}
}
+ } else {
+ aProp = &var_s0->actorProp;
+ if ((var_s0->markerFlag && var_s0->unk8_3) && var_s0->unk8_4)
+ {
+ temp_v0_2 = func_80330DE4(aProp->marker);
+ if (temp_v0_2 != 0)
+ {
+ new_var = func_8033A084(temp_v0_2);
+ if (new_var != 0)
+ {
+
+ temp_v0_6 = marker_getActor(aProp->marker);
+ temp_a1 = func_80330C74(temp_v0_6);
+ sp88[0] = (f32) aProp->x;
+ sp88[1] = (f32) aProp->y;
+ sp88[2] = (f32) aProp->z;
+ sp7C[0] = aProp->marker->pitch;
+ sp7C[1] = aProp->marker->yaw;
+ sp7C[2] = aProp->marker->roll;
+ var_v0 = func_802E9DD8(new_var, temp_a1, sp88, sp7C, temp_v0_6->scale, arg1, arg2, arg3, arg4);
+ if (var_v0 != 0)
+ {
+ var_s7 = var_v0;
+ }
+ }
+ }
+ }
+ else
+ if (var_s0->markerFlag)
+ {
+ Struct6Cs *temp_v0_7;
+ temp_v0_7 = aProp->marker->unk18;
+ if (temp_v0_7 != 0)
+ {
+ if (temp_v0_7->unk8 != 0)
+ {
+ var_v0 = temp_v0_7->unk8(aProp->marker, arg1, arg2, arg3, arg4);
+ if (var_v0 != 0)
+ {
+ var_s7 = var_v0;
+ }
+ }
+ }
+ }
+ }
}
+
return var_s7;
}
-#endif
f32 func_80331D20(BKSprite *sprite) {
BKSpriteFrame *frame;