From c71784b42031491463199d65a5920508c5bcaa1d Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sat, 27 Apr 2024 15:48:55 -0400 Subject: [PATCH] added a couple symbols, address comments --- config/SOUE01/symbols.txt | 16 ++++++++-------- src/toBeSorted/misc_flag_managers.cpp | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 19eb19be..b6d1720c 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -4189,8 +4189,8 @@ setFlag__15SkipflagManagerFUs = .text:0x800BFC50; // type:function size:0xD0 checkFlag__15SkipflagManagerFUs = .text:0x800BFD20; // type:function size:0x68 commitFlags__15SkipflagManagerFv = .text:0x800BFD90; // type:function size:0x70 fn_800BFE00 = .text:0x800BFE00; // type:function size:0x294 -fn_800C00A0 = .text:0x800C00A0; // type:function size:0x40 -fn_800C00E0 = .text:0x800C00E0; // type:function size:0x40 +__dt__15TBoxFlagManagerFv = .text:0x800C00A0; // type:function size:0x40 +__dt__18EnemyDefeatManagerFv = .text:0x800C00E0; // type:function size:0x40 fn_800C0120 = .text:0x800C0120; // type:function size:0x58 fn_800C0180 = .text:0x800C0180; // type:function size:0x58 fn_800C01E0 = .text:0x800C01E0; // type:function size:0x8 @@ -31012,8 +31012,8 @@ lbl_80510C14 = .data:0x80510C14; // type:object size:0x14 lbl_80510C28 = .data:0x80510C28; // type:object size:0x3C lbl_80510C64 = .data:0x80510C64; // type:object size:0x3C lbl_80510CA0 = .data:0x80510CA0; // type:object size:0x3C -lbl_80510CDC = .data:0x80510CDC; // type:object size:0x14 -lbl_80510CF0 = .data:0x80510CF0; // type:object size:0x14 +__vt__18EnemyDefeatManager = .data:0x80510CDC; // type:object size:0x14 +__vt__15TBoxFlagManager = .data:0x80510CF0; // type:object size:0x14 __vt__9FlagSpace = .data:0x80510D04; // type:object size:0xC lbl_80510D10 = .data:0x80510D10; // type:object size:0x38 data:4byte lbl_80510D48 = .data:0x80510D48; // type:object size:0x18 @@ -39843,9 +39843,9 @@ lbl_805753D0 = .sbss:0x805753D0; // type:object size:0x8 data:4byte lbl_805753D8 = .sbss:0x805753D8; // type:object size:0x8 data:4byte sInstance__16SceneflagManager = .sbss:0x805753E0; // type:object size:0x4 data:4byte sTempFlags__16SceneflagManager = .sbss:0x805753E8; // type:object size:0x8 -lbl_805753F0 = .sbss:0x805753F0; // type:object size:0x4 data:4byte -lbl_805753F4 = .sbss:0x805753F4; // type:object size:0x4 -lbl_805753F8 = .sbss:0x805753F8; // type:object size:0x4 data:4byte +sInstance__15TBoxFlagManager = .sbss:0x805753F0; // type:object size:0x4 data:4byte +sTBoxFlags__15TBoxFlagManager = .sbss:0x805753F4; // type:object size:0x4 +sInstance__18EnemyDefeatManager = .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 @@ -48233,7 +48233,7 @@ lbl_805A78B8 = .bss:0x805A78B8; // type:object size:0xC lbl_805A78C4 = .bss:0x805A78C4; // type:object size:0xC data:4byte lbl_805A78D0 = .bss:0x805A78D0; // type:object size:0x10 lbl_805A78E0 = .bss:0x805A78E0; // type:object size:0x1F8 -lbl_805A7AD8 = .bss:0x805A7AD8; // type:object size:0x2000 +sEnemyDefeatFlags__18EnemyDefeatManager = .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 diff --git a/src/toBeSorted/misc_flag_managers.cpp b/src/toBeSorted/misc_flag_managers.cpp index 4abcd7f4..a3e8f264 100644 --- a/src/toBeSorted/misc_flag_managers.cpp +++ b/src/toBeSorted/misc_flag_managers.cpp @@ -21,6 +21,7 @@ public: } }; +/* 0x800BE7B0 */ bool CommittableFlagManager::commitIfNecessary() { if (mNeedsCommit) { doCommit(); @@ -59,22 +60,27 @@ public: TBoxFlagManager *TBoxFlagManager::sInstance = nullptr; u16 TBoxFlagManager::sTBoxFlags[2] = {}; +/* 0x800BE810 */ void TBoxFlagManager::doCommit() { if (mSceneIndex != 0xFFFF) { FileManager::getInstance()->setTBoxFlags(mFlagSpace.getFlagPtrUnchecked(), mSceneIndex * 2, 2); } } +/* 0x800BE870 */ bool TBoxFlagManager::checkUncommittedFlag(u16 flag) { return mFlagHelper.checkFlag(flag / 16, flag % 16, mFlagSpace.getFlagPtrUnchecked(), mFlagSpace.mCount); } +/* 0x800BE8E0 */ TBoxFlagManager::TBoxFlagManager() : CommittableFlagManager(false), mFlagSpace(sTBoxFlags, ARRAY_LENGTH(sTBoxFlags)) { mSceneIndex = 0xFFFF; } +/* 0x800BE920 */ void TBoxFlagManager::init() {} +/* 0x800BE930 */ void TBoxFlagManager::copyFromSave(s16 sceneIndex) { u16 idx = sceneIndex; mSceneIndex = idx; @@ -82,16 +88,19 @@ void TBoxFlagManager::copyFromSave(s16 sceneIndex) { mFlagSpace.copyFromSaveFile2(flags + (idx * 2), 0, 2); } +/* 0x800BE990 */ bool TBoxFlagManager::checkFlag(u16 sceneIndex, u16 flag) { s32 actualFlag = (flag + sceneIndex * 0x20); return mFlagHelper.checkFlag(actualFlag / 16, flag % 16, FileManager::getInstance()->getTBoxFlagsConst(), getFlagCount()); } +/* 0x800BEA30 */ u16 TBoxFlagManager::getFlagCount() const { return 0x200; } +/* 0x800BEA40 */ void TBoxFlagManager::setFlag(u16 flag) { if (checkUncommittedFlag2(flag) != 1) { mFlagHelper.setFlag(flag / 16, flag % 16, mFlagSpace.getFlagPtrChecked(), mFlagSpace.mCount); @@ -99,6 +108,8 @@ void TBoxFlagManager::setFlag(u16 flag) { } } +// NOTE: Not actually Enemy Defeat. +// This is a little more than that, it keeps track of live objects based on their id as a whole class EnemyDefeatManager : public CommittableFlagManager { public: FlagSpace mFlagSpace; @@ -129,12 +140,14 @@ public: EnemyDefeatManager *EnemyDefeatManager::sInstance = nullptr; u16 EnemyDefeatManager::sEnemyDefeatFlags[4096] = {}; +/* 0x800BEAC0 */ void EnemyDefeatManager::clearSavedFlags() { u16 empty[0x1000]; memset(empty, 0, 0x2000); FileManager::getInstance()->setEnemyDefeatFlags(empty, 0, 0x1000); } +/* 0x800BEB00 */ bool EnemyDefeatManager::checkUncommittedFlag(u16 flag) { if (checkIsValidFlag(flag)) { return mFlagHelper.checkFlag(flag / 16, flag % 16, mFlagSpace.getFlagPtrUnchecked(), mFlagSpace.mCount); @@ -143,14 +156,17 @@ bool EnemyDefeatManager::checkUncommittedFlag(u16 flag) { } } +/* 0x800BEB80 */ EnemyDefeatManager::EnemyDefeatManager() : CommittableFlagManager(false), mFlagSpace(sEnemyDefeatFlags, ARRAY_LENGTH(sEnemyDefeatFlags)) {} +/* 0x800BEBC0 */ void EnemyDefeatManager::init() { mSceneIndex = 0; clearAll(); } +/* 0x800BEBD0 */ void EnemyDefeatManager::copyFromSave(u16 sceneIndex) { mSceneIndex = sceneIndex; u16 count = mFlagSpace.mCount; @@ -158,6 +174,7 @@ void EnemyDefeatManager::copyFromSave(u16 sceneIndex) { mFlagSpace.copyFromSaveFile(flags, 0, count); } +/* 0x800BEC30 */ void EnemyDefeatManager::updateFlagIndex(u16 sceneIndex) { if (mSceneIndex == sceneIndex) { return; @@ -166,15 +183,18 @@ void EnemyDefeatManager::updateFlagIndex(u16 sceneIndex) { clearAll(); } +/* 0x800BEC50 */ void EnemyDefeatManager::clearAll() { clearSavedFlags(); mFlagSpace.unsetAll(); } +/* 0x800BEC90 */ bool EnemyDefeatManager::checkIsValidFlag(u16 flag) { return flag < 0xFFFF; } +/* 0x800BECB0 */ bool EnemyDefeatManager::checkFlag(u16 flag) { if (!checkIsValidFlag(flag)) { return false; @@ -184,10 +204,12 @@ bool EnemyDefeatManager::checkFlag(u16 flag) { } } +/* 0x800BED50 */ u16 EnemyDefeatManager::getFlagCount() const { return 0x1000; } +/* 0x800BED60 */ void EnemyDefeatManager::setFlag(u16 flag) { if (checkUncommittedFlag2(flag) != 1 && checkIsValidFlag(flag)) { mFlagHelper.setFlag(flag / 16, flag % 16, mFlagSpace.getFlagPtrChecked(), mFlagSpace.mCount);