diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 483e3aee..04d88abe 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -91495,7 +91495,7 @@ 0x00000071011abc7c,sub_71011ABC7C,8, 0x00000071011abc84,sub_71011ABC84,372, 0x00000071011abdf8,nullsub_4622,4, -0x00000071011abdfc,sub_71011ABDFC,372, +0x00000071011abdfc,sub_71011ABDFC,372,_ZN4ksys3res6ASListC1Ev 0x00000071011abf70,sub_71011ABF70,668, 0x00000071011ac20c,sub_71011AC20C,8, 0x00000071011ac214,sub_71011AC214,8, diff --git a/src/KingSystem/Resource/CMakeLists.txt b/src/KingSystem/Resource/CMakeLists.txt index aac46c92..387fdafa 100644 --- a/src/KingSystem/Resource/CMakeLists.txt +++ b/src/KingSystem/Resource/CMakeLists.txt @@ -130,6 +130,8 @@ target_sources(uking PRIVATE resResourceActorLink.h resResourceAIProgram.cpp resResourceAIProgram.h + resResourceASList.cpp + resResourceASList.h resResourceArchive.cpp resResourceArchive.h resResourceAwareness.cpp diff --git a/src/KingSystem/Resource/resResourceASList.cpp b/src/KingSystem/Resource/resResourceASList.cpp new file mode 100644 index 00000000..31880bbf --- /dev/null +++ b/src/KingSystem/Resource/resResourceASList.cpp @@ -0,0 +1,7 @@ +#include "KingSystem/Resource/resResourceASList.h" + +namespace ksys::res { + +ASList::ASList() : ParamIO("aslist", 0) {} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceASList.h b/src/KingSystem/Resource/resResourceASList.h new file mode 100644 index 00000000..b5910910 --- /dev/null +++ b/src/KingSystem/Resource/resResourceASList.h @@ -0,0 +1,81 @@ +#pragma once + +#include +#include +#include +#include +#include +#include "KingSystem/Resource/resResource.h" +#include "KingSystem/Utils/ParamIO.h" + +namespace ksys::res { + +class ASList : public ParamIO, public Resource { + SEAD_RTTI_OVERRIDE(ASList, Resource) +public: + struct ASDefine { + agl::utl::Parameter name; + agl::utl::Parameter file_name; + agl::utl::ParameterObj obj; + void* _88; + }; + KSYS_CHECK_SIZE_NX150(ASDefine, 0x88); + + struct CFDefine { + agl::utl::Parameter name; + agl::utl::ParameterObj pre_obj; + sead::Buffer posts; + agl::utl::ParameterList posts_list; + sead::Buffer excepts; + agl::utl::ParameterObj obj; + agl::utl::ParameterList excepts_list; + }; + KSYS_CHECK_SIZE_NX150(CFDefine, 0x138); + + struct AddRes { + agl::utl::Parameter _0; + agl::utl::Parameter _28; + agl::utl::Parameter _50; + agl::utl::ParameterObj obj; + }; + KSYS_CHECK_SIZE_NX150(AddRes, 0xa0); + + struct Common { + agl::utl::Parameter rate_all; + agl::utl::ParameterObj obj; + }; + KSYS_CHECK_SIZE_NX150(Common, 0x50); + + struct Buffers { + Buffers() { _0 = 0; } + + s32 _0; + sead::Buffer as_defines; + sead::Buffer cf_defines; + sead::Buffer add_reses; + }; + + ASList(); + ~ASList() override; + + void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override; + bool needsParse() const override { return true; } + bool parse_(u8* data, size_t size, sead::Heap* heap) override; + + const Buffers& getBuffers() const { return mBuffers; } + const Common& getCommon() const { return mCommon.ref(); } + +protected: + bool finishParsing_() override; + bool m7_() override; + +private: + Buffers mBuffers; + agl::utl::ParameterList mCFDefinesList; + agl::utl::ParameterList mASDefinesList; + agl::utl::ParameterList mAddResesList; + sead::StorageFor mCommon{sead::ZeroInitializeTag{}}; +}; +KSYS_CHECK_SIZE_NX150(ASList, 0x410); + +} // namespace ksys::res