From 75eaf5608f438554e3b436422ff7ec21ab12c930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Wed, 23 Sep 2020 01:14:55 +0200 Subject: [PATCH] ksys/res: Start adding LoadRequest --- data/uking_functions.csv | 12 ++--- src/KingSystem/Resource/CMakeLists.txt | 2 + src/KingSystem/Resource/resLoadRequest.cpp | 16 ++++++ src/KingSystem/Resource/resLoadRequest.h | 63 ++++++++++++++++++++++ 4 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 src/KingSystem/Resource/resLoadRequest.cpp create mode 100644 src/KingSystem/Resource/resLoadRequest.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 1a82a58d..fb9cef5e 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -90780,9 +90780,9 @@ 0x00000071012014f4,ResourceBase::rtti2,92,_ZNK4ksys3res8Resource18getRuntimeTypeInfoEv 0x0000007101201550,nullsub_5570,4, 0x0000007101201554,sub_7101201554,324,_GLOBAL__sub_I_resHandle.cpp! -0x0000007101201698,ResourceLoadArgBase::dtorDelete,4, -0x000000710120169c,ResourceLoadArg::ctor,136, -0x0000007101201724,ResourceLoadArg::ctor2,112, +0x0000007101201698,ResourceLoadArgBase::dtorDelete,4,_ZN4ksys3res12ILoadRequestD0Ev +0x000000710120169c,ResourceLoadArg::ctor,136,_ZN4ksys3res11LoadRequestC1Ev +0x0000007101201724,ResourceLoadArg::ctor2,112,_ZN4ksys3res11LoadRequestC1Eijb 0x0000007101201794,ResourceLoadArg2::ctor,64, 0x00000071012017d4,ResourceLoadArg3::ctor,60, 0x0000007101201810,Res::ctor,72,_ZN4ksys3res6HandleC1Ev @@ -90814,8 +90814,8 @@ 0x0000007101202880,Res::i,148, 0x0000007101202914,Res::makeEmptyString,32, 0x0000007101202934,Res::parse,204, -0x0000007101202a00,ResourceLoadArgBase::rtti1,112, -0x0000007101202a70,ResourceLoadArgBase::rtti2,92, +0x0000007101202a00,ResourceLoadArgBase::rtti1,112,_ZNK4ksys3res12ILoadRequest27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007101202a70,ResourceLoadArgBase::rtti2,92,_ZNK4ksys3res12ILoadRequest18getRuntimeTypeInfoEv 0x0000007101202acc,Res::rtti1,112, 0x0000007101202b3c,Res::rtti2,92, 0x0000007101202b98,ResourceLoadArg::rtti1,204, @@ -90827,7 +90827,7 @@ 0x0000007101202e00,ResourceLoadArg2::dtorDelete,4, 0x0000007101202e04,ResourceLoadArg3::rtti1,204, 0x0000007101202ed0,ResourceLoadArg3::rtti2,92, -0x0000007101202f2c,ResourceLoadArgBase::dtor,20, +0x0000007101202f2c,ResourceLoadArgBase::dtor,20,_ZN4ksys3res12ILoadRequestD1Ev 0x0000007101202f40,ResourceLoadArg3::dtorDelete,4, 0x0000007101202f44,sub_7101202F44,140, 0x0000007101202fd0,sub_7101202FD0,32, diff --git a/src/KingSystem/Resource/CMakeLists.txt b/src/KingSystem/Resource/CMakeLists.txt index 645a074c..0098d6c6 100644 --- a/src/KingSystem/Resource/CMakeLists.txt +++ b/src/KingSystem/Resource/CMakeLists.txt @@ -88,6 +88,8 @@ target_sources(uking PRIVATE resEntryFactory.h resHandle.cpp resHandle.h + resLoadRequest.cpp + resLoadRequest.h resResource.cpp resResource.h diff --git a/src/KingSystem/Resource/resLoadRequest.cpp b/src/KingSystem/Resource/resLoadRequest.cpp new file mode 100644 index 00000000..f2ff8a14 --- /dev/null +++ b/src/KingSystem/Resource/resLoadRequest.cpp @@ -0,0 +1,16 @@ +#include "KingSystem/Resource/resLoadRequest.h" + +namespace ksys::res { + +ILoadRequest::~ILoadRequest() { + ; +} + +LoadRequest::LoadRequest() = default; + +LoadRequest::LoadRequest(s32 load_data_alignment, u32 arg_c, bool arg_20) + : _20(arg_20), mLoadDataAlignment(load_data_alignment) { + _c = arg_c; +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resLoadRequest.h b/src/KingSystem/Resource/resLoadRequest.h new file mode 100644 index 00000000..035f812f --- /dev/null +++ b/src/KingSystem/Resource/resLoadRequest.h @@ -0,0 +1,63 @@ +#pragma once + +#include +#include +#include +#include "KingSystem/Utils/Types.h" + +namespace sead { +class FileDevice; +} + +namespace ksys { +class OverlayArena; +} + +namespace ksys::res { + +class EntryFactoryBase; +class Handle; + +class ILoadRequest { + SEAD_RTTI_BASE(ILoadRequest) +public: + virtual ~ILoadRequest(); + + bool _8 = false; + u32 _c = 1; + sead::SafeString mRequester; +}; +KSYS_CHECK_SIZE_NX150(ILoadRequest, 0x20); + +// FIXME: incomplete +class LoadRequest : public ILoadRequest { + SEAD_RTTI_OVERRIDE(LoadRequest, ILoadRequest) +public: + LoadRequest(); + LoadRequest(s32 load_data_alignment, u32 arg_c, bool arg_20); + ~LoadRequest() override = default; + + bool _20 = false; + bool _21 = false; + bool _22 = false; + bool mCanFallBackToNonArchiveLoad = true; + bool _24 = false; + bool mLoadCompressed = true; + bool _26 = true; + bool _27 = true; + bool _28 = true; + s32 mLoadDataAlignment = 0; + u32 mAllocSize = 0; + u32 _34 = 0; + sead::FileDevice* mFileDevice = nullptr; + EntryFactoryBase* mEntryFactory = nullptr; + sead::FileDevice* mAocFileDevice = nullptr; + OverlayArena* mArena = nullptr; + Handle* mPackHandle = nullptr; + void* _60 = nullptr; + void* _68 = nullptr; + sead::SafeString mPath; +}; +KSYS_CHECK_SIZE_NX150(LoadRequest, 0x80); + +} // namespace ksys::res