From 50a8a8c5e32bd582983acc239fce1935abd10d6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Wed, 19 Aug 2020 21:00:50 +0200 Subject: [PATCH] ksys/act: Implement BaseProc::x00000071011ba9fc --- data/uking_functions.csv | 1 + src/KingSystem/ActorSystem/actBaseProc.cpp | 19 +++++++++++++++++++ src/KingSystem/ActorSystem/actBaseProc.h | 1 + src/KingSystem/ActorSystem/actBaseProcMgr.h | 1 + 4 files changed, 22 insertions(+) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 4a0a304f..1453e4bf 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89471,6 +89471,7 @@ 0x00000071011ba364,ActorBase::jobInvoked,564, 0x00000071011ba598,ActorBase::updateState,1076,_ZN4ksys3act8BaseProc18processStateUpdateEh! 0x00000071011ba9cc,ActorBase::afterUpdateState,48,_ZN4ksys3act8BaseProc17afterUpdateState_Ev +0x00000071011BA9FC,_ZN4ksys3act8BaseProc17x00000071011ba9fcEv,0xBC,_ZN4ksys3act8BaseProc17x00000071011ba9fcEv 0x00000071011baab8,ActorBase::setProcStateFlag,124, 0x00000071011bab34,ActorBase::acquire,196, 0x00000071011babf8,ActorBase::release,36, diff --git a/src/KingSystem/ActorSystem/actBaseProc.cpp b/src/KingSystem/ActorSystem/actBaseProc.cpp index ed50eef2..0e4cd1b4 100644 --- a/src/KingSystem/ActorSystem/actBaseProc.cpp +++ b/src/KingSystem/ActorSystem/actBaseProc.cpp @@ -408,4 +408,23 @@ void BaseProc::handleJobPriorityChangeRequest_() { } } +bool BaseProc::x00000071011ba9fc() { + if (BaseProcMgr::instance()->getStatus() != BaseProcMgr::Status::ProcessingUpdateStateList) + return false; + + if (mFlags.isOn(Flags::_80)) + return mFlags.isOn(Flags::_100); + + mFlags.set(Flags::_80); + + if (mFlags.isOff(Flags::Initialized) || mStateFlags.isOn(StateFlags::RequestDelete) || + mStateFlags.isOn(StateFlags::RequestSleep) || mStateFlags.isOff(StateFlags::_a) || + !canWakeUp_()) { + return false; + } + + mFlags.set(Flags::_100); + return true; +} + } // namespace ksys::act diff --git a/src/KingSystem/ActorSystem/actBaseProc.h b/src/KingSystem/ActorSystem/actBaseProc.h index 325e8dac..5b378e5e 100644 --- a/src/KingSystem/ActorSystem/actBaseProc.h +++ b/src/KingSystem/ActorSystem/actBaseProc.h @@ -160,6 +160,7 @@ protected: _2 = 2, RequestSleep = 4, RequestWakeUp = 8, + _a = _2 | RequestWakeUp, RequestChangeCalcJobPriority = 0x10, _20 = 0x20, _40 = 0x40, diff --git a/src/KingSystem/ActorSystem/actBaseProcMgr.h b/src/KingSystem/ActorSystem/actBaseProcMgr.h index 95d79f9b..87fd4e19 100644 --- a/src/KingSystem/ActorSystem/actBaseProcMgr.h +++ b/src/KingSystem/ActorSystem/actBaseProcMgr.h @@ -159,6 +159,7 @@ public: void incrementPendingDeletions() { mNumPendingDeletions.increment(); } void decrementPendingDeletions() { mNumPendingDeletions.decrement(); } + Status getStatus() const { return mStatus; } u32 getNumJobTypes() const { return mNumJobTypes; } private: