From d681c65480683b8c161a2ff2c5028f033ee83b76 Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Thu, 10 Aug 2023 11:32:03 +0200 Subject: [PATCH] UnkFlagStuff cleanup --- config/SOUE01/splits.txt | 2 +- config/SOUE01/symbols.txt | 2 +- configure.py | 2 +- include/toBeSorted/unk_flag_stuff.h | 20 +++++++---- src/{ => toBeSorted}/unk_flag_stuff.cpp | 47 ++++++++----------------- 5 files changed, 31 insertions(+), 42 deletions(-) rename src/{ => toBeSorted}/unk_flag_stuff.cpp (50%) diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 31ad024d..e7528857 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -18,7 +18,7 @@ d/d_base.cpp: .text start:0x80050800 end:0x80050A14 .data start:0x80503380 end:0x805033CC -unk_flag_stuff.cpp: +toBeSorted/unk_flag_stuff.cpp: .text start:0x800BEF90 end:0x800BF200 Runtime/__init_cpp_exceptions.cpp: diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 9c11e81d..3887aa2b 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -4143,7 +4143,7 @@ prepareIndexShiftMask__12UnkFlagStuffFUsUiPUsPUcPUs = .text:0x800BEFD0; // type: maskForIdx__12UnkFlagStuffFUs = .text:0x800BF050; // type:function size:0x50 getCounterOrFlag__12UnkFlagStuffFUsPUsUi = .text:0x800BF0A0; // type:function size:0x68 setCounterOrFlag__12UnkFlagStuffFUsPUsUiUi = .text:0x800BF110; // type:function size:0x9C -unk__12UnkFlagStuffFUsUi = .text:0x800BF1B0; // type:function size:0x50 +checkFlagValid__12UnkFlagStuffFUsUi = .text:0x800BF1B0; // type:function size:0x50 fn_800BF200 = .text:0x800BF200; // type:function size:0x14 fn_800BF220 = .text:0x800BF220; // type:function size:0x20 fn_800BF240 = .text:0x800BF240; // type:function size:0x24 diff --git a/configure.py b/configure.py index b146c6b3..4234d344 100644 --- a/configure.py +++ b/configure.py @@ -7,7 +7,7 @@ LIBS = [ "host": False, "objects": [ ["Runtime/__init_cpp_exceptions.cpp", False], - ["unk_flag_stuff.cpp", True], + ["toBeSorted/unk_flag_stuff.cpp", True], ["d/d_base.cpp", False], ["d/a/d_a_base.cpp", False], ["toBeSorted/save_file.cpp", False], diff --git a/include/toBeSorted/unk_flag_stuff.h b/include/toBeSorted/unk_flag_stuff.h index 30ba69f9..38d73fbd 100644 --- a/include/toBeSorted/unk_flag_stuff.h +++ b/include/toBeSorted/unk_flag_stuff.h @@ -3,12 +3,20 @@ #include "types.h" struct UnkFlagDefinition { - u8 shift; - u8 mask; + u8 mIndex; + u8 mShiftMask; }; -struct UnkFlagStuff { - u16 definitionsCount; - UnkFlagDefinition* definitions; +class UnkFlagStuff { + u16 mDefinitionsCount; + UnkFlagDefinition* mpDefinitions; +public: + u16 calculateMask(s32 shift); + void doNothing(u32 unused); + UnkFlagStuff(u16 count, UnkFlagDefinition* definitions); + void prepareIndexShiftMask(u16 counterIdx, u32 flagCount, u16* pIndex, u8* pShift, u16* pMask); + u16 maskForIdx(u16 index); + u32 getCounterOrFlag(u16 counterIdx, u16* pData, u32 flagCount); + void setCounterOrFlag(u16 counterIdx, u16* pData, u32 flagCount, u32 value); + u32 checkFlagValid(u16 counterIdx, u32 flagCount); }; - diff --git a/src/unk_flag_stuff.cpp b/src/toBeSorted/unk_flag_stuff.cpp similarity index 50% rename from src/unk_flag_stuff.cpp rename to src/toBeSorted/unk_flag_stuff.cpp index b68696dd..e755a7a5 100644 --- a/src/unk_flag_stuff.cpp +++ b/src/toBeSorted/unk_flag_stuff.cpp @@ -1,25 +1,6 @@ #pragma once -#include - -struct UnkFlagDefinition { - u8 index; - u8 shiftMask; -}; - -class UnkFlagStuff { -u16 definitionsCount; -UnkFlagDefinition* definitions; -public: - u16 calculateMask(s32 shift); - void doNothing(u32 unused); - UnkFlagStuff(u16 count, UnkFlagDefinition* definitions); - void prepareIndexShiftMask(u16 counterIdx, u32 unused, u16* indexPtr, u8* shiftPtr, u16* maskPtr); - u16 maskForIdx(u16 index); - u32 getCounterOrFlag(u16 counterIdx, u16* dataPtr, u32 param4); - void setCounterOrFlag(u16 counterIdx, u16* dataPtr, u32 flagCount, u32 value); - u32 unk(u16 param1, u32 param2); -}; +#include u16 UnkFlagStuff::calculateMask(s32 shift) { return (2 << (shift & 0xF)) - 1; @@ -28,21 +9,21 @@ u16 UnkFlagStuff::calculateMask(s32 shift) { void UnkFlagStuff::doNothing(u32 unused) {} UnkFlagStuff::UnkFlagStuff(u16 count, UnkFlagDefinition* definitions) { - this->definitionsCount = count; - this->definitions = definitions; + this->mDefinitionsCount = count; + this->mpDefinitions = definitions; } void UnkFlagStuff::prepareIndexShiftMask(u16 counterIdx, u32 unused, u16* indexPtr, u8* shiftPtr, u16* maskPtr) { doNothing(counterIdx); - *indexPtr = definitions[counterIdx].index; - *shiftPtr = definitions[counterIdx].shiftMask >> 4; - *maskPtr = calculateMask(definitions[counterIdx].shiftMask); + *indexPtr = mpDefinitions[counterIdx].mIndex; + *shiftPtr = mpDefinitions[counterIdx].mShiftMask >> 4; + *maskPtr = calculateMask(mpDefinitions[counterIdx].mShiftMask); } u16 UnkFlagStuff::maskForIdx(u16 index) { doNothing(index); - return calculateMask(definitions[index].shiftMask); + return calculateMask(mpDefinitions[index].mShiftMask); } u32 UnkFlagStuff::getCounterOrFlag(u16 counterIdx, u16* dataPtr, u32 param4) { @@ -62,21 +43,21 @@ void UnkFlagStuff::setCounterOrFlag(u16 counterIdx, u16* dataPtr, u32 flagCount, dataPtr[index] = (u16)(value << shift) | dataPtr[index]; } -inline bool check(int a, int b) { +inline bool isLessThan(int a, int b) { return a <= b; } -u32 UnkFlagStuff::unk(u16 param1, u32 param2) { - if (definitions == nullptr) { +u32 UnkFlagStuff::checkFlagValid(u16 counterIdx, u32 flagCount) { + if (mpDefinitions == nullptr) { return 0; } - if (definitionsCount <= param1 || definitions[param1].index == 0xFF) { + if (mDefinitionsCount <= counterIdx || mpDefinitions[counterIdx].mIndex == 0xFF) { return 0; } else { - if (!check(param2, definitions[param1].index)) { - return 1; - } else { + if (isLessThan(flagCount, mpDefinitions[counterIdx].mIndex)) { return 0; + } else { + return 1; } } }