diff --git a/data/decompiled.json b/data/decompiled.json index 2269662..7a32564 100644 --- a/data/decompiled.json +++ b/data/decompiled.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, "label": "decompiled", - "message": "0.2661%", + "message": "0.2738%", "color": "blue" } \ No newline at end of file diff --git a/data/main.map b/data/main.map index d7e67bf..72a8fa2 100644 --- a/data/main.map +++ b/data/main.map @@ -52755,20 +52755,20 @@ _ZN2al14NerveStateCtrl10startStateEPKNS_5NerveE=0000007100878C60=00000050=true _ZN2al14NerveStateCtrl13findStateInfoEPKNS_5NerveE=0000007100878CB0=00000044=true _ZNK2al14NerveStateCtrl17isCurrentStateEndEv=0000007100878D00=00000024=true _ZN2al14NerveStateCtrl18tryEndCurrentStateEv=0000007100878D30=0000004C=true -_ZN2al8setNerveEPNS_9IUseNerveEPKNS_5NerveE=0000007100878D80=0000002C=false -_ZN2al14setNerveAtStepEPNS_9IUseNerveEPKNS_5NerveEi=0000007100878DB0=00000068=false -_ZN2al6isStepEPKNS_9IUseNerveEi=0000007100878E20=00000034=false -_ZN2al7isNerveEPKNS_9IUseNerveEPKNS_5NerveE=0000007100878E60=00000034=false -_ZN2al12getNerveStepEPKNS_9IUseNerveE=0000007100878EA0=00000020=false -_ZN2al8getNerveEPKNS_9IUseNerveE=0000007100878EC0=0000001C=false -_ZN2al11isFirstStepEPKNS_9IUseNerveE=0000007100878EE0=00000028=false -_ZN2al10isLessStepEPKNS_9IUseNerveEi=0000007100878F10=00000034=false -_ZN2al15isLessEqualStepEPKNS_9IUseNerveEi=0000007100878F50=00000034=false -_ZN2al13isGreaterStepEPKNS_9IUseNerveEi=0000007100878F90=00000034=false -_ZN2al18isGreaterEqualStepEPKNS_9IUseNerveEi=0000007100878FD0=00000034=false -_ZN2al14isIntervalStepEPKNS_9IUseNerveEii=0000007100879010=00000044=false -_ZN2al19isIntervalOnOffStepEPKNS_9IUseNerveEii=0000007100879060=00000040=false -_ZN2al10isNewNerveEPKNS_9IUseNerveE=00000071008790A0=00000024=false +_ZN2al8setNerveEPNS_9IUseNerveEPKNS_5NerveE=0000007100878D80=0000002C=true +_ZN2al14setNerveAtStepEPNS_9IUseNerveEPKNS_5NerveEi=0000007100878DB0=00000068=true +_ZN2al6isStepEPKNS_9IUseNerveEi=0000007100878E20=00000034=true +_ZN2al7isNerveEPKNS_9IUseNerveEPKNS_5NerveE=0000007100878E60=00000034=true +_ZN2al12getNerveStepEPKNS_9IUseNerveE=0000007100878EA0=00000020=true +_ZN2al8getNerveEPKNS_9IUseNerveE=0000007100878EC0=0000001C=true +_ZN2al11isFirstStepEPKNS_9IUseNerveE=0000007100878EE0=00000028=true +_ZN2al10isLessStepEPKNS_9IUseNerveEi=0000007100878F10=00000034=true +_ZN2al15isLessEqualStepEPKNS_9IUseNerveEi=0000007100878F50=00000034=true +_ZN2al13isGreaterStepEPKNS_9IUseNerveEi=0000007100878F90=00000034=true +_ZN2al18isGreaterEqualStepEPKNS_9IUseNerveEi=0000007100878FD0=00000034=true +_ZN2al14isIntervalStepEPKNS_9IUseNerveEii=0000007100879010=00000044=true +_ZN2al19isIntervalOnOffStepEPKNS_9IUseNerveEii=0000007100879060=00000040=true +_ZN2al10isNewNerveEPKNS_9IUseNerveE=00000071008790A0=00000024=true _ZN2al13calcNerveRateEPKNS_9IUseNerveEi=00000071008790D0=00000068=false _ZN2al13calcNerveRateEPKNS_9IUseNerveEii=0000007100879140=00000068=false _ZN2al19calcNerveEaseInRateEPKNS_9IUseNerveEi=00000071008791B0=00000068=false @@ -60239,7 +60239,7 @@ _ZN2al21isMessageTagAlignLeftEPKNS_17IUseMessageSystemEii=00000071009B66E0=00000 _ZN2al23isMessageTagAlignCenterEPKNS_17IUseMessageSystemEii=00000071009B6790=000000A4=true _ZN2al23replaceMessageTagStringEPN4sead22BufferedSafeStringBaseIDsEEPKNS_17IUseMessageSystemEPKDsS8_=00000071009B6840=00000070=false _ZN2al35replaceMessageTagTimeDirectRaceTimeEPN4sead22BufferedSafeStringBaseIDsEEPKNS_17IUseMessageSystemERNS_15ReplaceTimeInfoE=00000071009B68B0=0000009C=false -_ZN2al22getSystemMessageStringEPKNS_17IUseMessageSystemEPKcS4_=00000071009B6950=00000054=false +_ZN2al22getSystemMessageStringEPKNS_17IUseMessageSystemEPKcS4_=00000071009B6950=00000054=true _ZN2al31replaceMessageTagTimeDirectDateEPN4sead22BufferedSafeStringBaseIDsEEPKNS_17IUseMessageSystemERNS_15ReplaceTimeInfoE=00000071009B69B0=0000009C=false _ZN2al37replaceMessageTagTimeDirectDateDetailEPN4sead22BufferedSafeStringBaseIDsEEPKNS_17IUseMessageSystemERNS_15ReplaceTimeInfoE=00000071009B6A50=0000009C=false _ZN2al22replaceMessageTagScoreEPN4sead22BufferedSafeStringBaseIDsEEPKNS_17IUseMessageSystemEPKDsiPKc=00000071009B6AF0=00000040=false diff --git a/lib/ActionLibrary/include/Library/Nerve/NerveUtil.hpp b/lib/ActionLibrary/include/Library/Nerve/NerveUtil.hpp new file mode 100644 index 0000000..c32f6da --- /dev/null +++ b/lib/ActionLibrary/include/Library/Nerve/NerveUtil.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include + +namespace al { + class IUseNerve; + class NerveStateBase; + class Nerve; + + void setNerve(IUseNerve*, const Nerve*); + void setNerveAtStep(IUseNerve*, const Nerve*, s32); + bool isStep(const IUseNerve*, s32); + bool isNerve(const IUseNerve*, const Nerve*); + s32 getNerveStep(const IUseNerve*); + const Nerve* getNerve(const IUseNerve*); + bool isFirstStep(const IUseNerve*); + bool isLessStep(const IUseNerve*, s32); + bool isLessEqualStep(const IUseNerve*, s32); + bool isGreaterStep(const IUseNerve*, s32); + bool isGreaterEqualStep(const IUseNerve*, s32); + bool isIntervalStep(const IUseNerve*, s32, s32); + bool isIntervalOnOffStep(const IUseNerve*, s32, s32); + bool isNewNerve(const IUseNerve*); + f32 calcNerveRate(const IUseNerve*, s32); + f32 calcNerveRate(const IUseNerve*, s32, s32); + f32 calcNerveEaseInRate(const IUseNerve*, s32); + f32 calcNerveEaseInRate(const IUseNerve*, s32, s32); + +}; // namespace al \ No newline at end of file diff --git a/lib/ActionLibrary/include/Project/Message/MessageHolder.hpp b/lib/ActionLibrary/include/Project/Message/MessageHolder.hpp index 67216e7..b494826 100644 --- a/lib/ActionLibrary/include/Project/Message/MessageHolder.hpp +++ b/lib/ActionLibrary/include/Project/Message/MessageHolder.hpp @@ -42,6 +42,7 @@ namespace al { class MessageSystem { public: MessageProjectEx* getMessageProject() const; + MessageHolder* getSystemMessageHolder(const char*, const char*) const; MessageProjectEx* mProject; // 0x00 u64 _8; diff --git a/lib/ActionLibrary/source/Library/Nerve/NerveUtil.cpp b/lib/ActionLibrary/source/Library/Nerve/NerveUtil.cpp new file mode 100644 index 0000000..2086f92 --- /dev/null +++ b/lib/ActionLibrary/source/Library/Nerve/NerveUtil.cpp @@ -0,0 +1,65 @@ +#include "Library/Nerve/NerveUtil.hpp" +#include "Library/Nerve/IUseNerve.hpp" +#include "Library/Nerve/Nerve.hpp" +#include "Library/Nerve/NerveKeeper.hpp" + +namespace al { + void setNerve(IUseNerve* pUser, const Nerve* pNerve) { + pUser->getNerveKeeper()->setNerve(pNerve); + } + + void setNerveAtStep(IUseNerve* pUser, const Nerve* pNerve, s32 step) { + if (getNerveStep(pUser) == step) { + pUser->getNerveKeeper()->setNerve(pNerve); + } + } + + bool isStep(const IUseNerve* pUser, s32 step) { + return getNerveStep(pUser) == step; + } + + bool isNerve(const IUseNerve* pUser, const Nerve* pNerve) { + return getNerve(pUser) == pNerve; + } + + s32 getNerveStep(const IUseNerve* pUser) { + return pUser->getNerveKeeper()->mNerveStep; + } + + const Nerve* getNerve(const IUseNerve* pUser) { + return pUser->getNerveKeeper()->getCurrentNerve(); + } + + bool isFirstStep(const IUseNerve* pUser) { + return getNerveStep(pUser) == 0; + } + + bool isLessStep(const IUseNerve* pUser, s32 step) { + return getNerveStep(pUser) < step; + } + + bool isLessEqualStep(const IUseNerve* pUser, s32 step) { + return getNerveStep(pUser) <= step; + } + + bool isGreaterStep(const IUseNerve* pUser, s32 step) { + return getNerveStep(pUser) > step; + } + + bool isGreaterEqualStep(const IUseNerve* pUser, s32 step) { + return getNerveStep(pUser) >= step; + } + + bool isIntervalStep(const IUseNerve* pUser, s32 min, s32 max) { + return (getNerveStep(pUser) - max) % min == 0; + } + + bool isIntervalOnOffStep(const IUseNerve* pUser, s32 min, s32 max) { + return (((getNerveStep(pUser) - max) / min) & 0x1) == 0; + } + + bool isNewNerve(const IUseNerve* pUser) { + return getNerveStep(pUser) >> 31; + } + +}; // namespace al \ No newline at end of file diff --git a/lib/ActionLibrary/source/Project/Message/MessageUtil.cpp b/lib/ActionLibrary/source/Project/Message/MessageUtil.cpp index 5543531..c98e267 100644 --- a/lib/ActionLibrary/source/Project/Message/MessageUtil.cpp +++ b/lib/ActionLibrary/source/Project/Message/MessageUtil.cpp @@ -174,4 +174,13 @@ namespace al { return !isEitherInvalid && al::isEqualString(tagGroupName, "TextAlign") && al::isEqualString(tagName, "AlignCenter"); } + + // ... + + const char* getSystemMessageString(const IUseMessageSystem* pMsg, const char* a2, + const char* a3) { + auto messageHolder = pMsg->getMessageSystem()->getSystemMessageHolder(a2, a3); + return (messageHolder != nullptr) ? messageHolder->getText(a3) : "NULL"; + } + }; // namespace al \ No newline at end of file diff --git a/lib/sead/include/container/seadFreeList.hpp b/lib/sead/include/container/seadFreeList.hpp new file mode 100644 index 0000000..eec4bbf --- /dev/null +++ b/lib/sead/include/container/seadFreeList.hpp @@ -0,0 +1,13 @@ +#pragma once + +namespace sead { + class FreeList { + public: + struct Node { + Node* mNextFree; + }; + + Node* mFree = nullptr; + void* mWork = nullptr; + }; +}; // namespace sead \ No newline at end of file diff --git a/lib/sead/include/container/seadStrTreeMap.hpp b/lib/sead/include/container/seadStrTreeMap.hpp new file mode 100644 index 0000000..df17d7f --- /dev/null +++ b/lib/sead/include/container/seadStrTreeMap.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include "container/seadFreeList.hpp" +#include "container/seadTreeMap.hpp" +#include "prim/seadSafeString.hpp" + +namespace sead { + template + class StrTreeMap : public TreeMapImpl { + public: + FreeList mFreeList; + s32 mSize = 0; + s32 mMaxSize = 0; + }; +}; // namespace sead \ No newline at end of file diff --git a/lib/sead/include/container/seadTreeMap.hpp b/lib/sead/include/container/seadTreeMap.hpp new file mode 100644 index 0000000..b130c8d --- /dev/null +++ b/lib/sead/include/container/seadTreeMap.hpp @@ -0,0 +1,12 @@ +#pragma once + +namespace sead { + template + class TreeMapNode; + + template + class TreeMapImpl { + public: + TreeMapNode* mRoot = nullptr; + }; +}; // namespace sead \ No newline at end of file