summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2026-09-28 03:39:31 +0200
committerLéo Lam <leo@leolam.fr>2026-10-06 03:19:39 +0200
commit9d6a597e91fac5ecdca3f9903f90c7bdf5accd96 (patch)
tree0019b105b53ec817ebf677e484e475a0bc2cedf2
parent98f0c80f1d0b9d3ca19f0b38efcb597ee65d9dc0 (diff)
Actor: ActorFactory is game, CurrentResNameMgr is ksys
ActorFactory's static initialiser fills its table with uking actor ctors. CurrentResNameMgr (0x71010b770c) links in KingSystem/System right before GameConfig. (AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
-rw-r--r--data/uking_functions.csv26
-rw-r--r--src/Game/Actor/CMakeLists.txt2
-rw-r--r--src/Game/Actor/actActorFactory.cpp (renamed from src/KingSystem/ActorSystem/actActorFactory.cpp)12
-rw-r--r--src/Game/Actor/actActorFactory.h27
-rw-r--r--src/KingSystem/ActorSystem/CMakeLists.txt2
-rw-r--r--src/KingSystem/ActorSystem/actActorCreator.h13
-rw-r--r--src/KingSystem/ActorSystem/actActorFactory.h29
-rw-r--r--src/KingSystem/Resource/Actor/resResourceAIProgram.cpp2
-rw-r--r--src/KingSystem/Resource/CMakeLists.txt2
-rw-r--r--src/KingSystem/System/CMakeLists.txt2
-rw-r--r--src/KingSystem/System/CurrentResNameMgr.cpp (renamed from src/KingSystem/Resource/resCurrentResNameMgr.cpp)6
-rw-r--r--src/KingSystem/System/CurrentResNameMgr.h (renamed from src/KingSystem/Resource/resCurrentResNameMgr.h)4
12 files changed, 66 insertions, 61 deletions
diff --git a/data/uking_functions.csv b/data/uking_functions.csv
index f8bd60e8..759108c0 100644
--- a/data/uking_functions.csv
+++ b/data/uking_functions.csv
@@ -44846,15 +44846,15 @@ Address,Quality,Size,Name
0x00000071006cb0e4,U,000056,AI_F_AI_BowlPin
0x00000071006cb11c,U,000004,nullsub_5404
0x00000071006cb120,U,001872,sinitActors
-0x00000071006cb870,O,000100,_ZN4ksys3act18ActorFactoryHolder18SingletonDisposer_D1Ev
-0x00000071006cb8d4,O,000108,_ZN4ksys3act18ActorFactoryHolder18SingletonDisposer_D0Ev
-0x00000071006cb940,O,000160,_ZN4ksys3act18ActorFactoryHolder14createInstanceEPN4sead4HeapE
-0x00000071006cb9e0,O,000020,_ZN4ksys3act18ActorFactoryHolderD1Ev
-0x00000071006cb9f4,O,000052,_ZN4ksys3act18ActorFactoryHolderD0Ev
-0x00000071006cba28,O,000056,_ZN4ksys3act18ActorFactoryHolder4initEPN4sead4HeapE
+0x00000071006cb870,O,000100,_ZN5uking3act18ActorFactoryHolder18SingletonDisposer_D1Ev
+0x00000071006cb8d4,O,000108,_ZN5uking3act18ActorFactoryHolder18SingletonDisposer_D0Ev
+0x00000071006cb940,O,000160,_ZN5uking3act18ActorFactoryHolder14createInstanceEPN4sead4HeapE
+0x00000071006cb9e0,O,000020,_ZN5uking3act18ActorFactoryHolderD1Ev
+0x00000071006cb9f4,O,000052,_ZN5uking3act18ActorFactoryHolderD0Ev
+0x00000071006cba28,O,000056,_ZN5uking3act18ActorFactoryHolder4initEPN4sead4HeapE
0x00000071006cba60,U,000412,constructActor
-0x00000071006cbbfc,O,000004,_ZN4ksys3act12ActorFactory5dummyEv
-0x00000071006cbc00,O,000004,_ZN4ksys3act12ActorFactory6dummy2Ev
+0x00000071006cbbfc,O,000004,_ZN5uking3act12ActorFactory5dummyEv
+0x00000071006cbc00,O,000004,_ZN5uking3act12ActorFactory6dummy2Ev
0x00000071006cbc04,U,000016,AI::initBehaviors
0x00000071006cbc14,U,000056,AI_F_Behavior_SetEnableResetToInitialState
0x00000071006cbc4c,U,000056,AI_F_Behavior_SetWindForceScale
@@ -89239,11 +89239,11 @@ Address,Quality,Size,Name
0x00000071010b7600,U,000056,
0x00000071010b7638,U,000092,
0x00000071010b7694,U,000120,
-0x00000071010b770c,O,000056,_ZN4ksys3res17CurrentResNameMgr18SingletonDisposer_D1Ev
-0x00000071010b7744,O,000092,_ZN4ksys3res17CurrentResNameMgr18SingletonDisposer_D0Ev
-0x00000071010b77a0,O,000120,_ZN4ksys3res17CurrentResNameMgr14createInstanceEPN4sead4HeapE
-0x00000071010b7818,O,000004,_ZN4ksys3res17CurrentResNameMgr4initEPN4sead4HeapE
-0x00000071010b781c,O,000032,_ZNK4ksys3res17CurrentResNameMgr17getCurrentResNameEv
+0x00000071010b770c,O,000056,_ZN4ksys17CurrentResNameMgr18SingletonDisposer_D1Ev
+0x00000071010b7744,O,000092,_ZN4ksys17CurrentResNameMgr18SingletonDisposer_D0Ev
+0x00000071010b77a0,O,000120,_ZN4ksys17CurrentResNameMgr14createInstanceEPN4sead4HeapE
+0x00000071010b7818,O,000004,_ZN4ksys17CurrentResNameMgr4initEPN4sead4HeapE
+0x00000071010b781c,O,000032,_ZNK4ksys17CurrentResNameMgr17getCurrentResNameEv
0x00000071010b783c,U,000004,j__ZN4sead16ExceptionHandler10initializeEv
0x00000071010b7840,U,000224,
0x00000071010b7920,U,000444,GameConfig::initProperties
diff --git a/src/Game/Actor/CMakeLists.txt b/src/Game/Actor/CMakeLists.txt
index 7a61adbc..a48223b9 100644
--- a/src/Game/Actor/CMakeLists.txt
+++ b/src/Game/Actor/CMakeLists.txt
@@ -16,6 +16,8 @@ target_sources(uking PRIVATE
aiAiFactories.h
aiQueryFactories.cpp
aiQueryFactories.h
+ actActorFactory.cpp
+ actActorFactory.h
actDragon.cpp
actDragon.h
actPlayerCreateMgr.cpp
diff --git a/src/KingSystem/ActorSystem/actActorFactory.cpp b/src/Game/Actor/actActorFactory.cpp
index 6a835f3f..16f2b916 100644
--- a/src/KingSystem/ActorSystem/actActorFactory.cpp
+++ b/src/Game/Actor/actActorFactory.cpp
@@ -1,7 +1,7 @@
-#include "KingSystem/ActorSystem/actActorFactory.h"
+#include "Game/Actor/actActorFactory.h"
#include "KingSystem/ActorSystem/actActorCreator.h"
-namespace ksys::act {
+namespace uking::act {
SEAD_SINGLETON_DISPOSER_IMPL(ActorFactoryHolder)
@@ -10,12 +10,12 @@ void ActorFactory::dummy() {}
void ActorFactory::dummy2() {}
ActorFactoryHolder::~ActorFactoryHolder() {
- ActorCreator::deleteInstance();
+ ksys::act::ActorCreator::deleteInstance();
}
void ActorFactoryHolder::init(sead::Heap* heap) {
- ActorCreator::createInstance(heap);
- ActorCreator::instance()->setActorFactory(&mFactory);
+ ksys::act::ActorCreator::createInstance(heap);
+ ksys::act::ActorCreator::instance()->setActorFactory(&mFactory);
}
-} // namespace ksys::act
+} // namespace uking::act
diff --git a/src/Game/Actor/actActorFactory.h b/src/Game/Actor/actActorFactory.h
new file mode 100644
index 00000000..3514f114
--- /dev/null
+++ b/src/Game/Actor/actActorFactory.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include <heap/seadDisposer.h>
+#include "KingSystem/ActorSystem/actActorCreator.h"
+
+namespace uking::act {
+
+class ActorFactory : public ksys::act::IActorFactory {
+public:
+ void dummy() override;
+ ksys::act::BaseProc* createActor(const ksys::act::ActorCreateArg& arg) override;
+ void dummy2() override;
+};
+
+class ActorFactoryHolder {
+ SEAD_SINGLETON_DISPOSER(ActorFactoryHolder)
+ ActorFactoryHolder() = default;
+ virtual ~ActorFactoryHolder();
+
+public:
+ void init(sead::Heap* heap);
+
+private:
+ ActorFactory mFactory;
+};
+
+} // namespace uking::act
diff --git a/src/KingSystem/ActorSystem/CMakeLists.txt b/src/KingSystem/ActorSystem/CMakeLists.txt
index 258cde69..1a549493 100644
--- a/src/KingSystem/ActorSystem/CMakeLists.txt
+++ b/src/KingSystem/ActorSystem/CMakeLists.txt
@@ -31,8 +31,6 @@ target_sources(uking PRIVATE
actActorCreator.h
actActorEditorNode.cpp
actActorEditorNode.h
- actActorFactory.cpp
- actActorFactory.h
actActorHeapUtil.cpp
actActorHeapUtil.h
actActorLimiter.cpp
diff --git a/src/KingSystem/ActorSystem/actActorCreator.h b/src/KingSystem/ActorSystem/actActorCreator.h
index 7560230d..cc1d1657 100644
--- a/src/KingSystem/ActorSystem/actActorCreator.h
+++ b/src/KingSystem/ActorSystem/actActorCreator.h
@@ -17,11 +17,18 @@ class Object;
namespace ksys::act {
class Actor;
-class ActorFactory;
+struct ActorCreateArg;
class BaseProc;
struct BaseProcCreateArg;
class BaseProcHandle;
+class IActorFactory {
+public:
+ virtual void dummy() = 0;
+ virtual BaseProc* createActor(const ActorCreateArg& arg) = 0;
+ virtual void dummy2() = 0;
+};
+
class ActorCreator {
SEAD_SINGLETON_DISPOSER(ActorCreator)
ActorCreator();
@@ -39,7 +46,7 @@ public:
void enableDistanceUnloadChecks();
void eraseActor(Actor* actor);
- void setActorFactory(ActorFactory* factory) { mActorFactory = factory; }
+ void setActorFactory(IActorFactory* factory) { mActorFactory = factory; }
bool get5a() const { return _5a; }
sead::OffsetList<Actor>& getActorList() { return mActorList; }
@@ -81,7 +88,7 @@ private:
this, &ActorCreator::doCreateProc};
TaskRemoveCallbackT<ActorCreator> mTaskRemovedDelegate{this, &ActorCreator::onTaskRemoved};
sead::CriticalSection mActorListCS;
- ActorFactory* mActorFactory;
+ IActorFactory* mActorFactory;
};
KSYS_CHECK_SIZE_NX150(ActorCreator, 0xf0);
diff --git a/src/KingSystem/ActorSystem/actActorFactory.h b/src/KingSystem/ActorSystem/actActorFactory.h
deleted file mode 100644
index 6fed82f4..00000000
--- a/src/KingSystem/ActorSystem/actActorFactory.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#pragma once
-
-#include <heap/seadDisposer.h>
-
-namespace ksys::act {
-
-struct ActorCreateArg;
-class BaseProc;
-
-class ActorFactory {
-public:
- virtual void dummy();
- virtual BaseProc* createActor(const ActorCreateArg& arg);
- virtual void dummy2();
-};
-
-class ActorFactoryHolder {
- SEAD_SINGLETON_DISPOSER(ActorFactoryHolder)
- ActorFactoryHolder() = default;
- virtual ~ActorFactoryHolder();
-
-public:
- void init(sead::Heap* heap);
-
-private:
- ActorFactory mFactory;
-};
-
-} // namespace ksys::act
diff --git a/src/KingSystem/Resource/Actor/resResourceAIProgram.cpp b/src/KingSystem/Resource/Actor/resResourceAIProgram.cpp
index bbe70ba1..1e0454d0 100644
--- a/src/KingSystem/Resource/Actor/resResourceAIProgram.cpp
+++ b/src/KingSystem/Resource/Actor/resResourceAIProgram.cpp
@@ -3,7 +3,7 @@
#include <utility/aglParameter.h>
#include "KingSystem/ActorSystem/actAiActionBase.h"
#include "KingSystem/ActorSystem/actAiClassDef.h"
-#include "KingSystem/Resource/resCurrentResNameMgr.h"
+#include "KingSystem/System/CurrentResNameMgr.h"
#include "KingSystem/Utils/HeapUtil.h"
namespace ksys::res {
diff --git a/src/KingSystem/Resource/CMakeLists.txt b/src/KingSystem/Resource/CMakeLists.txt
index 67177e15..1a9e5b28 100644
--- a/src/KingSystem/Resource/CMakeLists.txt
+++ b/src/KingSystem/Resource/CMakeLists.txt
@@ -94,8 +94,6 @@ target_sources(uking PRIVATE
resControlTask.h
resCounter.cpp
resCounter.h
- resCurrentResNameMgr.cpp
- resCurrentResNameMgr.h
resEntryFactory.cpp
resEntryFactory.h
resGameResourceSystem.cpp
diff --git a/src/KingSystem/System/CMakeLists.txt b/src/KingSystem/System/CMakeLists.txt
index 835eb40f..a2eb28ba 100644
--- a/src/KingSystem/System/CMakeLists.txt
+++ b/src/KingSystem/System/CMakeLists.txt
@@ -13,6 +13,8 @@ target_sources(uking PRIVATE
CameraEditor.cpp
CameraEditor.h
CoreInfo.h
+ CurrentResNameMgr.cpp
+ CurrentResNameMgr.h
DebugFinder.cpp
DebugFinder.h
DebugMessage.h
diff --git a/src/KingSystem/Resource/resCurrentResNameMgr.cpp b/src/KingSystem/System/CurrentResNameMgr.cpp
index f949afb7..53e7e755 100644
--- a/src/KingSystem/Resource/resCurrentResNameMgr.cpp
+++ b/src/KingSystem/System/CurrentResNameMgr.cpp
@@ -1,6 +1,6 @@
-#include "KingSystem/Resource/resCurrentResNameMgr.h"
+#include "KingSystem/System/CurrentResNameMgr.h"
-namespace ksys::res {
+namespace ksys {
SEAD_SINGLETON_DISPOSER_IMPL(CurrentResNameMgr)
@@ -10,4 +10,4 @@ sead::SafeString CurrentResNameMgr::getCurrentResName() const {
return sead::SafeString::cEmptyString;
}
-} // namespace ksys::res
+} // namespace ksys
diff --git a/src/KingSystem/Resource/resCurrentResNameMgr.h b/src/KingSystem/System/CurrentResNameMgr.h
index b46487b7..dcdb261e 100644
--- a/src/KingSystem/Resource/resCurrentResNameMgr.h
+++ b/src/KingSystem/System/CurrentResNameMgr.h
@@ -4,7 +4,7 @@
#include <prim/seadSafeString.h>
#include "KingSystem/Utils/Types.h"
-namespace ksys::res {
+namespace ksys {
/// Current Resource Name Manager?
/// Stubbed in release builds.
@@ -18,4 +18,4 @@ public:
};
KSYS_CHECK_SIZE_NX150(CurrentResNameMgr, 0x20);
-} // namespace ksys::res
+} // namespace ksys