From dee99f4207581a8c3bbf224e95a91bba74f3bb6f Mon Sep 17 00:00:00 2001 From: Banjo Kazooie Date: Mon, 6 May 2024 20:35:27 -0500 Subject: [PATCH] mapSavestate_save --- README.md | 2 +- progress/progress_core2.svg | 4 +- progress/progress_total.svg | 6 +-- src/core2/code_5BEB0.c | 87 +++++++++++++++++-------------------- src/core2/code_A5BC0.c | 4 +- 5 files changed, 48 insertions(+), 55 deletions(-) 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); }