diff --git a/README.md b/README.md
index c1d81df7..b2c32311 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# banjo (98.9919%)
+# banjo (99.0163%)
diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg
index 1756c95e..c1986b63 100644
--- a/progress/progress_core2.svg
+++ b/progress/progress_core2.svg
@@ -17,7 +17,7 @@
core2
- 98.4605%
- 98.4605%
+ 98.5031%
+ 98.5031%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index 6888b26e..ca4900c6 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -9,7 +9,7 @@
-
+
@@ -17,7 +17,7 @@
Banjo-Kazooie (us.v10)
- 98.9919%
- 98.9919%
+ 99.0163%
+ 99.0163%
\ No newline at end of file
diff --git a/src/core2/code_5BEB0.c b/src/core2/code_5BEB0.c
index 46e756a3..cbc35ade 100644
--- a/src/core2/code_5BEB0.c
+++ b/src/core2/code_5BEB0.c
@@ -42,54 +42,47 @@ void mapSavestate_defrag_all(void){
}
}
-#ifndef NONMATCHING
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_5BEB0/mapSavestate_save.s")
-#else
-void mapSavestate_save(enum map_e map){
- u32 wSize;
- MapSavestate * sp38;
- s32 iBit;
- s32 bit_max;
- s32 reg_s4;
- u32* reg_v1;
- u32* valPtr;
- s32 i;
-
-
- wSize = 4;
- if(D_8037E650[map])
- free(D_8037E650[map]);
-
- D_8037E650[map] = sp38 = (MapSavestate *) malloc(4*sizeof(u32));
-
- sp38->flags = mapSpecificFlags_getAll();
-
- iBit = 0x20;
- func_80308230(1);
- func_803083B0(-1);
-
- for(reg_s4 = func_803083B0(-2); reg_s4 != -1; reg_s4 = func_803083B0(-2, valPtr)){
- if( !(iBit < wSize*sizeof(u32)*8)){
- wSize += 4;
- D_8037E650[map] = (MapSavestate *)realloc( D_8037E650[map], wSize*sizeof(u32));
- reg_v1 = ((s32)D_8037E650[map] + wSize*sizeof(u32));
- reg_v1[-1] = 0;
- reg_v1[-2] = 0;
- reg_v1[-3] = 0;
- reg_v1[-4] = 0;
- }
- valPtr = D_8037E650[map];
- valPtr[(iBit >> 5)] = (reg_s4)
- ? valPtr[(iBit >> 5)] | (1 << (iBit & 0x1f))
- : valPtr[(iBit >> 5)] & ~(1 << (iBit & 0x1f));
-
- iBit++;
-
+void mapSavestate_save(enum map_e map)
+{
+ u32 wSize;
+ s32 iBit;
+ s32 reg_s4;
+ u32 *valPtr;
+ int new_var;
+ wSize = 4;
+ if (D_8037E650[map] != 0)
+ {
+ free(D_8037E650[map]);
+ }
+ D_8037E650[map] = (MapSavestate *) malloc(4 * (sizeof(u32)));
+ valPtr = (u32 *) D_8037E650[map];
+ *valPtr = mapSpecificFlags_getAll();
+ iBit = 0x20;
+ func_80308230(1);
+ func_803083B0(-1);
+ for (reg_s4 = func_803083B0(-2); reg_s4 != (-1); reg_s4 = func_803083B0(-2))
+ {
+ new_var = sizeof(u32);
+ if (!(iBit < ((wSize * (sizeof(u32))) * 8)))
+ {
+ wSize += 4;
+ D_8037E650[map] = (MapSavestate *) realloc(D_8037E650[map], wSize * new_var);
+ valPtr = ((s32) D_8037E650[map]) + (wSize * new_var);
+ valPtr[-1] = 0;
+ new_var = 1;
+ valPtr[-2] = 0;
+ valPtr[-3] = 0;
+ if (1) if (1) if (1) if (1) if (1) if (1) if (1) ;
+ valPtr[-4] = 0;
}
- //if(sp38);
- D_8037E650[map] = actors_appendToSavestate( D_8037E650[map], (s32)D_8037E650[map] + 16*((iBit + 0x7F) >> 7));
-}
-#endif
+ valPtr = D_8037E650[map];
+ valPtr[iBit >> 5] = (reg_s4) ? (valPtr[iBit >> 5] | (1 << (iBit & 0x1f))) : (valPtr[iBit >> 5] & (~((1 ^ 0) << (iBit & 0x1f))));
+ iBit++;
+ wSize = wSize;
+ }
+
+ D_8037E650[map] = actors_appendToSavestate(D_8037E650[map], ((u32 *) D_8037E650[map]) + (4 * ((iBit + 0x7F) >> 7)));
+}
#define AS_BOOL(expr) ((expr)? TRUE : FALSE)
diff --git a/src/core2/code_A5BC0.c b/src/core2/code_A5BC0.c
index c7601348..88f06271 100644
--- a/src/core2/code_A5BC0.c
+++ b/src/core2/code_A5BC0.c
@@ -467,11 +467,11 @@ void func_8032DB2C(Cube *cube, NodeProp *arg1) {
}
}
-void func_8032DC70(void) {
+void func_8032DC70(s32 arg0) {
NodeProp *sp1C;
s32 temp_v0;
- sp1C = func_803080C8();
+ sp1C = func_803080C8(arg0);
if (sp1C != NULL) {
func_8032DB2C(func_80308224(), sp1C);
}