From 8e868dc2c35fea57c0722bc8d500424f647bd515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 12 Mar 2021 16:22:42 +0100 Subject: [PATCH] ksys: Add HavokWorkerMgr stub --- data/uking_functions.csv | 12 ++++++------ lib/sead | 2 +- src/KingSystem/System/CMakeLists.txt | 2 ++ src/KingSystem/System/HavokWorkerMgr.cpp | 13 +++++++++++++ src/KingSystem/System/HavokWorkerMgr.h | 23 +++++++++++++++++++++++ 5 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 src/KingSystem/System/HavokWorkerMgr.cpp create mode 100644 src/KingSystem/System/HavokWorkerMgr.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 5d11fee2..ba4c2e90 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -92859,13 +92859,13 @@ 0x00000071011f9a04,sub_71011F9A04,140, 0x00000071011f9a90,sub_71011F9A90,140, 0x00000071011f9b1c,sub_71011F9B1C,140, -0x00000071011f9ba8,sub_71011F9BA8,100, -0x00000071011f9c0c,sub_71011F9C0C,108, -0x00000071011f9c78,HavokWorkerMgr::createInstance,152, -0x00000071011f9d10,sub_71011F9D10,120, -0x00000071011f9d88,sub_71011F9D88,128, +0x00000071011f9ba8,sub_71011F9BA8,100,_ZN4ksys14HavokWorkerMgr18SingletonDisposer_D2Ev +0x00000071011f9c0c,sub_71011F9C0C,108,_ZN4ksys14HavokWorkerMgr18SingletonDisposer_D0Ev +0x00000071011f9c78,HavokWorkerMgr::createInstance,152,_ZN4ksys14HavokWorkerMgr14createInstanceEPN4sead4HeapE +0x00000071011f9d10,sub_71011F9D10,120,_ZN4ksys14HavokWorkerMgrD1Ev +0x00000071011f9d88,sub_71011F9D88,128,_ZN4ksys14HavokWorkerMgrD0Ev 0x00000071011f9e08,HavokWorkerMgr::initialize,656, -0x00000071011fa098,HavokWorkerMgr::getWorkerThreadId,32, +0x00000071011fa098,HavokWorkerMgr::getWorkerThreadId,32,_ZNK4ksys14HavokWorkerMgr17getWorkerThreadIdEi 0x00000071011fa0b8,Worker::ctor,112, 0x00000071011fa128,Worker::dtor,64, 0x00000071011fa168,Worker::dtorDelete,72, diff --git a/lib/sead b/lib/sead index 96285598..83c6cf26 160000 --- a/lib/sead +++ b/lib/sead @@ -1 +1 @@ -Subproject commit 96285598f5738a3e916707c535ed6d772764aae2 +Subproject commit 83c6cf26499441d7b55a89ef9ce560d23d58770d diff --git a/src/KingSystem/System/CMakeLists.txt b/src/KingSystem/System/CMakeLists.txt index 0c883f05..acf93ce8 100644 --- a/src/KingSystem/System/CMakeLists.txt +++ b/src/KingSystem/System/CMakeLists.txt @@ -2,6 +2,8 @@ target_sources(uking PRIVATE Account.cpp Account.h DebugMessage.h + HavokWorkerMgr.cpp + HavokWorkerMgr.h KingEditor.h OverlayArena.cpp OverlayArena.h diff --git a/src/KingSystem/System/HavokWorkerMgr.cpp b/src/KingSystem/System/HavokWorkerMgr.cpp new file mode 100644 index 00000000..55fdba90 --- /dev/null +++ b/src/KingSystem/System/HavokWorkerMgr.cpp @@ -0,0 +1,13 @@ +#include "KingSystem/System/HavokWorkerMgr.h" + +namespace ksys { + +SEAD_SINGLETON_DISPOSER_IMPL(HavokWorkerMgr) + +HavokWorkerMgr::~HavokWorkerMgr() = default; + +u32 HavokWorkerMgr::getWorkerThreadId(int idx) const { + return mWorkers[idx]->getId(); +} + +} // namespace ksys diff --git a/src/KingSystem/System/HavokWorkerMgr.h b/src/KingSystem/System/HavokWorkerMgr.h new file mode 100644 index 00000000..332b0b5f --- /dev/null +++ b/src/KingSystem/System/HavokWorkerMgr.h @@ -0,0 +1,23 @@ +#pragma once + +#include +#include +#include "KingSystem/Utils/Types.h" + +namespace ksys { + +class HavokWorkerMgr : public sead::WorkerMgr { + SEAD_SINGLETON_DISPOSER(HavokWorkerMgr) + HavokWorkerMgr() = default; + ~HavokWorkerMgr() override; + +public: + // TODO: implement. This is almost exactly the same as sead::WorkerMgr::initialize + // but with a custom Worker class that calls out to Havok. + void initialize(const InitializeArg& arg) override; + + u32 getWorkerThreadId(int idx) const; +}; +KSYS_CHECK_SIZE_NX150(HavokWorkerMgr, 0xd8); + +} // namespace ksys