diff --git a/README.md b/README.md
index 48043974..f218b69e 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# banjo (97.2254%)
+# banjo (97.2554%)
diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg
index e18909f9..d0e05c94 100644
--- a/progress/progress_core2.svg
+++ b/progress/progress_core2.svg
@@ -17,7 +17,7 @@
core2
- 96.0335%
- 96.0335%
+ 96.0858%
+ 96.0858%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index 2fc1fce5..51370b10 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -17,7 +17,7 @@
Banjo-Kazooie (us.v10)
- 97.2254%
- 97.2254%
+ 97.2554%
+ 97.2554%
\ No newline at end of file
diff --git a/src/core2/code_A5BC0.c b/src/core2/code_A5BC0.c
index 484eb7a5..0d77b3dc 100644
--- a/src/core2/code_A5BC0.c
+++ b/src/core2/code_A5BC0.c
@@ -60,10 +60,6 @@ u8 pad_8036E7B4[0xC] = {0}; //PROBABLY INDICATES FILE BREAK
ModelCache *modelCache = NULL; //D_8036E7C0 //model pointer array pointer
u8 *D_8036E7C4 = NULL;
ActorMarker *D_8036E7C8 = NULL;
-s32 D_8036E7CC = 0;
-Struct6Cs D_8036E7D0 = {NULL, NULL, NULL, func_80330974};
-s16 D_8036E7E0[] = {0x2D2, 0x2DD, 0x580, 0x6D1, 0x6D6, 0x6D7, 0x364, 0x2E8, 0x309, 0x30A, 0x704, 0x30D, 0x6C7, -1};
-s16 D_8036E7FC[] ={-1};
/* .bss */
s32 D_803833F0[3];
@@ -77,7 +73,7 @@ s32 D_8038340C;
f32 D_80383410[3];
ActorMarker *D_8038341C;
s32 D_80383420;
-u8 D_80383428[0x1C];
+u8 D_80383428[0x1C];
s32 D_80383444;
int D_80383448;
s32 D_80383450[0x40];
@@ -1310,58 +1306,45 @@ void func_803305AC(void){
D_80383444 = 0;
}
-#ifndef NONMATCHING
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_803306C8.s")
-#else
-extern s32 D_8036E7CC;
void func_803306C8(s32 arg0) {
- s32 sp54;
- s32 temp_a0;
- u32 temp_fp;
- s32 temp_lo;
- s32 temp_s0;
- s32 temp_t7;
- s32 temp_v0;
- s32 var_s0;
- s32 var_s0_2;
- s32 var_s0_3;
- s32 var_s1;
+ static s32 D_8036E7CC = 0;
ModelCache *var_a2;
+ s32 temp_a0;
+ s32 sp54;
+ s32 temp_fp;
+ s32 var_s0_2;
+ s32 var_s1;
temp_fp = func_8023DB5C() - func_80255B08(arg0);
func_80254BD0(&sp54, 1);
- if (sp54 <= 256000) {
- var_s1 = 0;
- for(var_s1 = 0; var_s1 < ((arg0 == 1) ? 0x28 : 0x3D4); var_s1++) {
- var_a2 = modelCache + D_8036E7CC;
- if ((var_a2->unk10 < temp_fp)
- || ((arg0 == 3) && ((D_80383444 == 0) || (D_8036E7CC != D_80383444)))
- ) {
- var_s0_2 = FALSE;
- if (var_a2->modelPtr != NULL) {
- assetcache_release(var_a2->modelPtr);
- var_s0_2 = TRUE;
- var_a2->modelPtr = NULL;
- var_a2 = modelCache + D_8036E7CC;
- }
- if (var_a2->unk4 != NULL) {
- var_s0_2 = TRUE;
- func_8033B338(&var_a2->unk4, &var_a2->unk8);
- }
- if ((arg0 != 1) && (var_s0_2 == 1) && (func_80254BC4(1))) {
- return;
- }
+ if(sp54 > 256000) return;
+
+ for(var_s1 = 0; var_s1 < ((arg0 == 1) ? 0x28 : 0x3D4); var_s1++, D_8036E7CC = (D_8036E7CC >= 0x3D4) ? 0 : D_8036E7CC + 1) {
+ var_a2 = modelCache + D_8036E7CC;
+
+ if (((s32)var_a2->unk10 < temp_fp)
+ || ((arg0 == 3) && ((D_80383444 == 0) || (D_8036E7CC != D_80383444)))
+ ) {
+ var_s0_2 = FALSE;
+ if (var_a2->modelPtr != NULL) {
+ assetcache_release(var_a2->modelPtr);
+ modelCache[D_8036E7CC].modelPtr = NULL;
+ var_s0_2 = TRUE;
}
+ var_a2 = modelCache + D_8036E7CC;
- if (D_8036E7CC >= 0x3D4) {
- D_8036E7CC = 0;
- } else {
- D_8036E7CC += 1;
+ if (var_a2->unk4 != NULL) {
+ if (!D_8036E7CC);
+
+ var_s0_2 = TRUE;
+ func_8033B338(&var_a2->unk4, &var_a2->unk8);
+ }
+ if ((arg0 != 1) && (var_s0_2 == 1) && (func_80254BC4(1))) {
+ return;
}
}
}
}
-#endif
extern void *func_802EBAE0(UNK_TYPE(s32), f32 position[3], f32 rotation[3], f32 scale, UNK_TYPE(s32), UNK_TYPE(s32), UNK_TYPE(s32), f32, UNK_TYPE(s32));
BKModelBin *func_80330DE4(ActorMarker *this);
@@ -1421,6 +1404,7 @@ s32 func_80330974(ActorMarker *marker, s32 arg1, f32 arg2, s32 arg3) {
}
Struct6Cs *func_80330B10(void){
+ static Struct6Cs D_8036E7D0 = {NULL, NULL, NULL, func_80330974};
return &D_8036E7D0;
}
@@ -2109,6 +2093,8 @@ void func_8033283C(s32 arg0, s32 arg1, s32 arg2) {
}
void func_80332894(void) {
+ static s16 D_8036E7E0[] = {0x2D2, 0x2DD, 0x580, 0x6D1, 0x6D6, 0x6D7, 0x364, 0x2E8, 0x309, 0x30A, 0x704, 0x30D, 0x6C7, -1};
+ static s16 D_8036E7FC[] ={-1};
s32 size;
s32 i;