diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 376d4e36..8a5bd0a1 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -93183,23 +93183,23 @@ 0x00000071012bb0fc,EventResourceLoadArg::b,368,_ZN4ksys3res11ControlTask12prepareImpl_EPNS_4util11TaskRequestE 0x00000071012bb26c,EventResourceLoadArg::null1,4,_ZN4ksys3res11ControlTask6onRun_Ev 0x00000071012bb270,EventResourceLoadArg::c,32,_ZN4ksys3res11ControlTask14preRemoveImpl_Ev -0x00000071012bb290,sub_71012BB290,156, -0x00000071012bb32c,sub_71012BB32C,20, -0x00000071012bb340,nullsub_4782,4, -0x00000071012bb344,sub_71012BB344,52, -0x00000071012bb378,sub_71012BB378,260, -0x00000071012bb47c,nullsub_4783,4, -0x00000071012bb480,sub_71012BB480,32, +0x00000071012bb290,sub_71012BB290,156,_ZN4ksys3res10MemoryTaskC1EPN4sead4HeapE +0x00000071012bb32c,sub_71012BB32C,20,_ZN4ksys3res10MemoryTaskD2Ev +0x00000071012bb340,nullsub_4782,4,_ZN4ksys3res14MemoryTaskDataD2Ev +0x00000071012bb344,sub_71012BB344,52,_ZN4ksys3res10MemoryTaskD0Ev +0x00000071012bb378,sub_71012BB378,260,_ZN4ksys3res10MemoryTask12prepareImpl_EPNS_4util11TaskRequestE +0x00000071012bb47c,nullsub_4783,4,_ZN4ksys3res10MemoryTask6onRun_Ev +0x00000071012bb480,sub_71012BB480,32,_ZN4ksys3res10MemoryTask14preRemoveImpl_Ev 0x00000071012bb4a0,EventResourceLoadArg::rtti1,288,_ZNK4ksys3res11ControlTask27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071012bb5c0,EventResourceLoadArg::rtti2,92,_ZNK4ksys3res11ControlTask18getRuntimeTypeInfoEv -0x00000071012bb61c,sub_71012BB61C,288, -0x00000071012bb73c,sub_71012BB73C,92, +0x00000071012bb61c,sub_71012BB61C,288,_ZNK4ksys3res10MemoryTask27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x00000071012bb73c,sub_71012BB73C,92,_ZNK4ksys3res10MemoryTask18getRuntimeTypeInfoEv 0x00000071012bb798,sub_71012BB798,204,_ZNK4ksys3res15ControlTaskData27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE 0x00000071012bb864,sub_71012BB864,92,_ZNK4ksys3res15ControlTaskData18getRuntimeTypeInfoEv 0x00000071012bb8c0,sub_71012BB8C0,52,_ZN4ksys3res15ControlTaskDataD0Ev -0x00000071012bb8f4,sub_71012BB8F4,204, -0x00000071012bb9c0,sub_71012BB9C0,92, -0x00000071012bba1c,j__ZdlPv_1295,4, +0x00000071012bb8f4,sub_71012BB8F4,204,_ZNK4ksys3res14MemoryTaskData27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x00000071012bb9c0,sub_71012BB9C0,92,_ZNK4ksys3res14MemoryTaskData18getRuntimeTypeInfoEv +0x00000071012bba1c,j__ZdlPv_1295,4,_ZN4ksys3res14MemoryTaskDataD0Ev 0x00000071012bba20,sub_71012BBA20,48, 0x00000071012bba50,sub_71012BBA50,144, 0x00000071012bbae0,sub_71012BBAE0,20, diff --git a/src/KingSystem/Resource/CMakeLists.txt b/src/KingSystem/Resource/CMakeLists.txt index 87918287..f5424b11 100644 --- a/src/KingSystem/Resource/CMakeLists.txt +++ b/src/KingSystem/Resource/CMakeLists.txt @@ -86,6 +86,8 @@ target_sources(uking PRIVATE resCache.h resCacheCriticalSection.cpp resCacheCriticalSection.h + resControlTask.cpp + resControlTask.h resCurrentResNameMgr.cpp resCurrentResNameMgr.h resEntryFactory.cpp @@ -94,8 +96,8 @@ target_sources(uking PRIVATE resHandle.h resLoadRequest.cpp resLoadRequest.h - resControlTask.cpp - resControlTask.h + resMemoryTask.cpp + resMemoryTask.h resOffsetReadFileDevice.cpp resOffsetReadFileDevice.h resResourceMgrTask.cpp diff --git a/src/KingSystem/Resource/resMemoryTask.cpp b/src/KingSystem/Resource/resMemoryTask.cpp new file mode 100644 index 00000000..3f580852 --- /dev/null +++ b/src/KingSystem/Resource/resMemoryTask.cpp @@ -0,0 +1,23 @@ +#include "KingSystem/Resource/resMemoryTask.h" +#include "KingSystem/Resource/resSystem.h" + +namespace ksys::res { + +MemoryTask::MemoryTask(sead::Heap* heap) : util::ManagedTask(heap) {} + +void MemoryTask::onRun_() {} + +void MemoryTask::prepareImpl_(util::TaskRequest* req_) { + auto* req = static_cast(req_); + mData._8 = req->mData_8; + mData._c = req->mData_c; + mData.mStr = req->mData_mStr; + setUserData(); +} + +void MemoryTask::preRemoveImpl_() { + if (returnFalse()) + stubbedLogFunction(); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resMemoryTask.h b/src/KingSystem/Resource/resMemoryTask.h new file mode 100644 index 00000000..874120a9 --- /dev/null +++ b/src/KingSystem/Resource/resMemoryTask.h @@ -0,0 +1,48 @@ +#pragma once + +#include +#include "KingSystem/Utils/Thread/ManagedTask.h" +#include "KingSystem/Utils/Thread/TaskData.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +class MemoryTaskData : public util::TaskData { + SEAD_RTTI_OVERRIDE(MemoryTaskData, util::TaskData) +public: + virtual ~MemoryTaskData() = default; + + bool _8 = false; + s32 _c = -1; + sead::FixedSafeString<128> mStr; +}; +KSYS_CHECK_SIZE_NX150(MemoryTaskData, 0xa8); + +class MemoryTask : public util::ManagedTask { + SEAD_RTTI_OVERRIDE(MemoryTask, util::ManagedTask) +public: + explicit MemoryTask(sead::Heap* heap); + ~MemoryTask() override { ; } + +private: + void onRun_() override; + void prepareImpl_(util::TaskRequest* req) override; + void preRemoveImpl_() override; + + void setUserData() { util::ManagedTask::setUserData(&mData); } + + MemoryTaskData mData; +}; +KSYS_CHECK_SIZE_NX150(MemoryTask, 0x168); + +class MemoryTaskRequest : public util::TaskRequest { + SEAD_RTTI_OVERRIDE(MemoryTaskRequest, util::TaskRequest) +public: + MemoryTaskRequest() = default; + + bool mData_8 = false; + s32 mData_c = -1; + sead::FixedSafeString<128> mData_mStr; +}; + +} // namespace ksys::res