From b7bf72272f27e8c882bd2efdbb11bb70c430454b Mon Sep 17 00:00:00 2001 From: CovenEsme <84377742+CovenEsme@users.noreply.github.com> Date: Sat, 27 Apr 2024 13:45:07 +0100 Subject: [PATCH] Misc flag mgr ctors -> 100% --- config/SOUE01/splits.txt | 3 +++ src/toBeSorted/misc_flag_managers.cpp | 25 +++++++++++++++++-------- src/toBeSorted/sceneflag_manager.cpp | 2 +- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index dc15c545..78cb40ca 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -108,6 +108,9 @@ toBeSorted/sceneflag_manager.cpp: toBeSorted/misc_flag_managers.cpp: .text start:0x800BE7B0 end:0x800BEE00 + .data start:0x80510CDC end:0x80510D04 + .sbss start:0x805753F0 end:0x805753FC + .bss start:0x805A7AD8 end:0x805A9AD8 toBeSorted/flag_space.cpp: .text start:0x800BEE00 end:0x800BEF90 diff --git a/src/toBeSorted/misc_flag_managers.cpp b/src/toBeSorted/misc_flag_managers.cpp index 312d105f..e908dd73 100644 --- a/src/toBeSorted/misc_flag_managers.cpp +++ b/src/toBeSorted/misc_flag_managers.cpp @@ -33,16 +33,15 @@ bool CommittableFlagManager::commitIfNecessary() { } class TBoxFlagManager : public CommittableFlagManager { - // class TBoxFlagManager { - // bool mNeedsCommit; - // u32 pad; +public: FlagSpace mFlagSpace; u16 mSceneIndex; BitwiseFlagHelper mFlagHelper; - static u16 *sFlags; + static u16 sTBoxFlags[2]; + + static TBoxFlagManager *sInstance; -public: virtual void doCommit() override; bool checkUncommittedFlag(u16 flag); TBoxFlagManager(); @@ -58,6 +57,9 @@ public: } }; +TBoxFlagManager *TBoxFlagManager::sInstance = nullptr; +u16 TBoxFlagManager::sTBoxFlags[2] = {}; + void TBoxFlagManager::doCommit() { if (mSceneIndex != 0xFFFF) { FileManager::getInstance()->setTBoxFlags(mFlagSpace.getFlagPtrUnchecked(), mSceneIndex * 2, 2); @@ -68,7 +70,7 @@ bool TBoxFlagManager::checkUncommittedFlag(u16 flag) { return mFlagHelper.checkFlag(flag / 16, flag % 16, mFlagSpace.getFlagPtrUnchecked(), mFlagSpace.mCount); } -TBoxFlagManager::TBoxFlagManager() : CommittableFlagManager(false), mFlagSpace(sFlags, 2) { +TBoxFlagManager::TBoxFlagManager() : CommittableFlagManager(false), mFlagSpace(sTBoxFlags, ARRAY_LENGTH(sTBoxFlags)) { mSceneIndex = 0xFFFF; } @@ -104,7 +106,9 @@ public: BitwiseFlagHelper mFlagHelper; u16 mSceneIndex; - static u16 *sFlags; + static u16 sEnemyDefeatFlags[4096]; + + static EnemyDefeatManager *sInstance; void clearSavedFlags(); bool checkUncommittedFlag(u16 flag); @@ -123,6 +127,9 @@ public: void setFlag(u16 flag); }; +EnemyDefeatManager *EnemyDefeatManager::sInstance = nullptr; +u16 EnemyDefeatManager::sEnemyDefeatFlags[4096] = {}; + void EnemyDefeatManager::clearSavedFlags() { u16 empty[0x1000]; memset(empty, 0, 0x2000); @@ -137,7 +144,9 @@ bool EnemyDefeatManager::checkUncommittedFlag(u16 flag) { } } -EnemyDefeatManager::EnemyDefeatManager() : CommittableFlagManager(false), mFlagSpace(sFlags, 12 /* later */) {} +EnemyDefeatManager::EnemyDefeatManager() : CommittableFlagManager(false), mFlagSpace(sEnemyDefeatFlags, ARRAY_LENGTH(sEnemyDefeatFlags)) { + +} void EnemyDefeatManager::init() { mSceneIndex = 0; diff --git a/src/toBeSorted/sceneflag_manager.cpp b/src/toBeSorted/sceneflag_manager.cpp index 3443133c..1cef7560 100644 --- a/src/toBeSorted/sceneflag_manager.cpp +++ b/src/toBeSorted/sceneflag_manager.cpp @@ -17,7 +17,7 @@ public: static u16 sTempFlags[4]; static u16 sSceneFlags[8]; static u16 sZoneFlags[0xFC]; - // public: + static SceneflagManager *sInstance; void doNothing(); void setShouldCommit(u16 flag);