diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 690f660a..c6f3fc33 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -81914,20 +81914,20 @@ Address,Quality,Size,Name 0x0000007100f42464,U,000152, 0x0000007100f424fc,U,000008, 0x0000007100f42504,U,000008, -0x0000007100f4250c,U,000068, -0x0000007100f42550,U,000076, -0x0000007100f4259c,U,000132, -0x0000007100f42620,U,000092, -0x0000007100f4267c,U,000180,res::EntryFactory_Placement::newResource_ -0x0000007100f42730,U,000008, -0x0000007100f42738,U,000008, -0x0000007100f42740,U,000008, -0x0000007100f42748,U,000092, -0x0000007100f427a4,U,000036, -0x0000007100f427c8,U,000012, -0x0000007100f427d4,U,000008, -0x0000007100f427dc,U,000040, -0x0000007100f42804,U,000372, +0x0000007100f4250c,O,000068,_ZN4ksys3res12EntryFactoryINS0_9PlacementEED2Ev +0x0000007100f42550,O,000076,_ZN4ksys3res12EntryFactoryINS0_9PlacementEED0Ev +0x0000007100f4259c,m,000132,_ZNK4ksys3res12EntryFactoryINS0_9PlacementEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007100f42620,O,000092,_ZNK4ksys3res12EntryFactoryINS0_9PlacementEE18getRuntimeTypeInfoEv +0x0000007100f4267c,O,000180,_ZN4ksys3res12EntryFactoryINS0_9PlacementEE12newResource_EPN4sead4HeapEi +0x0000007100f42730,O,000008,_ZNK4ksys3res12EntryFactoryINS0_9PlacementEE15getResourceSizeEv +0x0000007100f42738,O,000008,_ZNK4ksys3res12EntryFactoryINS0_9PlacementEE20getLoadDataAlignmentEv +0x0000007100f42740,O,000008,_ZNK4ksys3res9Placement27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x0000007100f42748,O,000092,_ZNK4ksys3res9Placement18getRuntimeTypeInfoEv +0x0000007100f427a4,O,000036,_ZN4ksys3res9PlacementD0Ev +0x0000007100f427c8,O,000012,_ZN4ksys3res9Placement9doCreate_EPhjPN4sead4HeapE +0x0000007100f427d4,O,000008,_ZThn32_N4ksys3res9PlacementD1Ev +0x0000007100f427dc,O,000040,_ZThn32_N4ksys3res9PlacementD0Ev +0x0000007100f42804,O,000372,_ZN4ksys3res9Placement33checkDerivedRuntimeTypeInfoStaticEPKN4sead15RuntimeTypeInfo9InterfaceE 0x0000007100f42978,U,000068, 0x0000007100f429bc,U,000076, 0x0000007100f42a08,U,000132, diff --git a/src/KingSystem/Resource/CMakeLists.txt b/src/KingSystem/Resource/CMakeLists.txt index 8d4ab270..67177e15 100644 --- a/src/KingSystem/Resource/CMakeLists.txt +++ b/src/KingSystem/Resource/CMakeLists.txt @@ -111,6 +111,8 @@ target_sources(uking PRIVATE resModelResourceDivide.h resOffsetReadFileDevice.cpp resOffsetReadFileDevice.h + resPlacement.cpp + resPlacement.h resResourceMgrTask.cpp resResourceMgrTask.h resSystem.cpp diff --git a/src/KingSystem/Resource/resPlacement.cpp b/src/KingSystem/Resource/resPlacement.cpp new file mode 100644 index 00000000..d457d0ac --- /dev/null +++ b/src/KingSystem/Resource/resPlacement.cpp @@ -0,0 +1,24 @@ +#include "KingSystem/Resource/resPlacement.h" +#include "KingSystem/Resource/resEntryFactory.h" +#include "KingSystem/Resource/resSystem.h" + +namespace ksys::res { + +void Placement::registerFactory(sead::Heap* heap) { + auto* rm = sead::ResourceMgr::instance(); + if (!rm) + return; + + if (rm->getDefaultFactory() != rm->findFactory("bplacement")) + return; + + res::registerEntryFactory(new (heap) EntryFactory(1.0, sizeof(Placement)), + "bplacement"); +} + +void Placement::doCreate_(u8* buffer, u32 bufferSize, sead::Heap* heap) { + mUnknown1 = buffer; + mUnknown2 = buffer + 0x10; // Unknown Constant / offset +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resPlacement.h b/src/KingSystem/Resource/resPlacement.h new file mode 100644 index 00000000..43d0e35c --- /dev/null +++ b/src/KingSystem/Resource/resPlacement.h @@ -0,0 +1,23 @@ +#pragma once + +#include "KingSystem/Resource/resEntryFactory.h" +#include "KingSystem/Resource/resResource.h" +#include "resource/seadResource.h" + +namespace ksys::res { + +class Placement : public Resource { + SEAD_RTTI_OVERRIDE(Placement, Resource) +public: + Placement() = default; + ~Placement() override = default; + + static void registerFactory(sead::Heap* heap); + + void doCreate_(u8* buffer, u32 bufferSize, sead::Heap* heap) override; + + void* mUnknown1 = nullptr; + void* mUnknown2 = nullptr; +}; + +} // namespace ksys::res