diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 7aac89f2..036fb830 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -124,7 +124,7 @@ toBeSorted/bitwise_flag_helper.cpp: toBeSorted/skipflag_manager.cpp: .text start:0x800BFBA0 end:0x800BFE00 - .sbss start:0x80575408 end:0x80575410 + .sbss start:0x80575408 end:0x8057540C .bss start:0x805A9C68 end:0x805A9C88 c/c_list.cpp: diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index e6b05bf0..b0af2c9b 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -4181,7 +4181,7 @@ fn_800BFA60 = .text:0x800BFA60; // type:function size:0x60 fn_800BFAC0 = .text:0x800BFAC0; // type:function size:0x50 fn_800BFB10 = .text:0x800BFB10; // type:function size:0x8C copyFromSave__15SkipflagManagerFv = .text:0x800BFBA0; // type:function size:0x44 -setCommitFlag__15SkipflagManagerFv = .text:0x800BFBF0; // type:function size:0xC +setCommitFlag__15SkipflagManagerFUs = .text:0x800BFBF0; // type:function size:0xC __ct__15SkipflagManagerFv = .text:0x800BFC00; // type:function size:0x2C unsetCommitFlag__15SkipflagManagerFv = .text:0x800BFC30; // type:function size:0xC thunk_copyFromSave__15SkipflagManagerFv = .text:0x800BFC40; // type:function size:0x4 @@ -39849,7 +39849,7 @@ lbl_805753F8 = .sbss:0x805753F8; // type:object size:0x4 data:4byte lbl_805753FC = .sbss:0x805753FC; // type:object size:0x4 data:4byte lbl_80575400 = .sbss:0x80575400; // type:object size:0x4 data:4byte lbl_80575404 = .sbss:0x80575404; // type:object size:0x4 data:4byte -lbl_80575408 = .sbss:0x80575408; // type:object size:0x8 data:4byte +sInstance__15SkipflagManager = .sbss:0x80575408; // type:object size:0x4 data:4byte lbl_80575410 = .sbss:0x80575410; // type:object size:0x8 data:4byte lbl_80575418 = .sbss:0x80575418; // type:object size:0x8 lbl_80575420 = .sbss:0x80575420; // type:object size:0x8 data:byte @@ -48237,7 +48237,7 @@ lbl_805A7AD8 = .bss:0x805A7AD8; // type:object size:0x2000 lbl_805A9AD8 = .bss:0x805A9AD8; // type:object size:0x100 lbl_805A9BD8 = .bss:0x805A9BD8; // type:object size:0x80 lbl_805A9C58 = .bss:0x805A9C58; // type:object size:0x10 -lbl_805A9C68 = .bss:0x805A9C68; // type:object size:0x20 +sSkipFlags__15SkipflagManager = .bss:0x805A9C68; // type:object size:0x20 lbl_805A9C88 = .bss:0x805A9C88; // type:object size:0x10 data:4byte lbl_805A9C98 = .bss:0x805A9C98; // type:object size:0x208 lbl_805A9EA0 = .bss:0x805A9EA0; // type:object size:0x40 data:4byte diff --git a/configure.py b/configure.py index cd1f3140..3cdbb416 100644 --- a/configure.py +++ b/configure.py @@ -274,7 +274,7 @@ config.libs = [ Object(Matching, "toBeSorted/sceneflag_manager.cpp"), Object(NonMatching, "toBeSorted/flag_space.cpp"), Object(NonMatching, "toBeSorted/misc_flag_managers.cpp"), - Object(NonMatching, "toBeSorted/skipflag_manager.cpp"), + Object(Matching, "toBeSorted/skipflag_manager.cpp"), Object(Matching, "c/c_list.cpp"), Object(Matching, "d/d_base.cpp"), Object(NonMatching, "d/d_heap.cpp"), diff --git a/src/toBeSorted/skipflag_manager.cpp b/src/toBeSorted/skipflag_manager.cpp index d2fea774..23cfe946 100644 --- a/src/toBeSorted/skipflag_manager.cpp +++ b/src/toBeSorted/skipflag_manager.cpp @@ -13,7 +13,7 @@ public: static SkipflagManager *sInstance; void copyFromSave(); - void setCommitFlag(); + void setCommitFlag(u16 flag); SkipflagManager(); void unsetCommitFlag(); void thunk_copyFromSave(); @@ -22,7 +22,9 @@ public: bool commitFlags(); }; +// 0x80575408 SkipflagManager *SkipflagManager::sInstance = nullptr; +// 0x805A9C68 u16 SkipflagManager::sSkipFlags[16] = {}; // 800bfba0 @@ -32,13 +34,12 @@ void SkipflagManager::copyFromSave() { } // 800bfbf0 -void SkipflagManager::setCommitFlag() { +void SkipflagManager::setCommitFlag(u16 flag) { mShouldCommit = true; } // 800bfc00 -SkipflagManager::SkipflagManager() : mFlagSpace(sSkipFlags, ARRAY_LENGTH(sSkipFlags)) { - mShouldCommit = false; +SkipflagManager::SkipflagManager() : mFlagSpace(sSkipFlags, ARRAY_LENGTH(sSkipFlags)), mShouldCommit(false) { } // 800bfc30 @@ -55,12 +56,12 @@ void SkipflagManager::thunk_copyFromSave() { void SkipflagManager::setFlag(u16 flag) { mFlagHelper.setFlag(flag / 16, flag % 16, mFlagSpace.getFlagPtrChecked(), mFlagSpace.mCount); - u16* savedSkipflags; + u16 savedSkipflags[0x10]; checkedMemcpy(savedSkipflags, 0x20, FileManager::sInstance->getSkipFlags(), 0x20); mFlagHelper.setFlag(flag / 16, flag % 16, savedSkipflags, 0x10); FileManager::sInstance->setSkipFlagsChecked(savedSkipflags, 0, 0x10); - setCommitFlag(); + setCommitFlag(flag); } // 800bfd20 @@ -72,7 +73,8 @@ bool SkipflagManager::checkFlag(u16 flag) { // 800bfd90 bool SkipflagManager::commitFlags() { if (mShouldCommit) { - FileManager::sInstance->setSkipFlagsChecked(mFlagSpace.getFlagPtrUnchecked(), 0, 0x10); + FileManager *instance = FileManager::sInstance; + instance->setSkipFlagsChecked(mFlagSpace.getFlagPtrUnchecked(), 0, 0x10); mShouldCommit = false; return true; }