diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b11773c..8000a8dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,8 @@ add_executable(uking src/KingSystem/Resource/resResource.h src/KingSystem/Resource/resResourceActorLink.cpp src/KingSystem/Resource/resResourceActorLink.h + src/KingSystem/Resource/resResourceArchive.cpp + src/KingSystem/Resource/resResourceArchive.h src/KingSystem/Resource/resResourceDemo.cpp src/KingSystem/Resource/resResourceDemo.h src/KingSystem/Resource/resResourceLod.cpp diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 3094a57b..f3841552 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -91067,14 +91067,14 @@ 0x00000071012132cc,return_0,8, 0x00000071012132d4,return_8,8, 0x00000071012132dc,return1,16, -0x00000071012132ec,ArchiveRes::ctor,60, -0x0000007101213328,ArchiveRes::dtor,4, -0x000000710121332c,sub_710121332C,8, -0x0000007101213334,ArchiveRes::dtorDelete,36, -0x0000007101213358,sub_7101213358,40, -0x0000007101213380,ArchiveRes::doCreate,12, -0x000000710121338c,ArchiveRes::rtti1,132, -0x0000007101213410,ArchiveRes::rtti2,92, +0x00000071012132ec,ArchiveRes::ctor,60,_ZN4ksys3res7ArchiveC1Ev +0x0000007101213328,ArchiveRes::dtor,4,_ZN4ksys3res7ArchiveD1Ev +0x000000710121332c,sub_710121332C,8,_ZThn88_N4ksys3res7ArchiveD1Ev +0x0000007101213334,ArchiveRes::dtorDelete,36,_ZN4ksys3res7ArchiveD0Ev +0x0000007101213358,sub_7101213358,40,_ZThn88_N4ksys3res7ArchiveD0Ev +0x0000007101213380,ArchiveRes::doCreate,12,_ZN4ksys3res7Archive9doCreate_EPhjPN4sead4HeapE +0x000000710121338c,ArchiveRes::rtti1,132,_ZNK4ksys3res7Archive27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007101213410,ArchiveRes::rtti2,92,_ZNK4ksys3res7Archive18getRuntimeTypeInfoEv 0x000000710121346c,_ZN4sead15SharcArchiveRes19closeDirectoryImpl_EPNS_9SafeArrayIhLi32EEE,8,_ZNK4sead15SharcArchiveRes19closeDirectoryImpl_EPNS_9SafeArrayIhLi32EEE 0x00000071012135e8,sub_71012135E8,56, 0x0000007101213620,sub_7101213620,92, diff --git a/lib/sead b/lib/sead index 397b25d7..46ef57b9 160000 --- a/lib/sead +++ b/lib/sead @@ -1 +1 @@ -Subproject commit 397b25d7f0c8841972f20a59f6000f1fb5daabfe +Subproject commit 46ef57b925a24bfb54cbd679a5ecfb413be2d3dc diff --git a/src/KingSystem/Resource/resResourceArchive.cpp b/src/KingSystem/Resource/resResourceArchive.cpp new file mode 100644 index 00000000..417f66a5 --- /dev/null +++ b/src/KingSystem/Resource/resResourceArchive.cpp @@ -0,0 +1,13 @@ +#include "KingSystem/Resource/resResourceArchive.h" + +namespace ksys::res { + +Archive::Archive() = default; + +Archive::~Archive() = default; + +void Archive::doCreate_(u8* data, u32 size, sead::Heap* heap) { + sead::ArchiveRes::doCreate_(data + mDataOffset, size, heap); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceArchive.h b/src/KingSystem/Resource/resResourceArchive.h new file mode 100644 index 00000000..60550d53 --- /dev/null +++ b/src/KingSystem/Resource/resResourceArchive.h @@ -0,0 +1,23 @@ +#pragma once + +#include +#include "KingSystem/Resource/resResource.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +struct ArchiveOffset { + u32 mDataOffset = 0; +}; + +class Archive : public sead::SharcArchiveRes, public IResource, public ArchiveOffset { + SEAD_RTTI_OVERRIDE(Archive, sead::SharcArchiveRes) +public: + Archive(); + ~Archive() override; + + void doCreate_(u8* data, u32 size, sead::Heap* heap) override; +}; +KSYS_CHECK_SIZE_NX150(Archive, 0x68); + +} // namespace ksys::res