title resource stuff

This commit is contained in:
Pistonight 2024-08-08 21:23:21 -07:00
parent 490077a463
commit 36d114214d
4 changed files with 87 additions and 14 deletions

View File

@ -88340,15 +88340,15 @@ Address,Quality,Size,Name
0x00000071010a2fa0,O,000188,_ZN4ksys2ui17LayoutResourceMgr18checkLangFontReadyEv 0x00000071010a2fa0,O,000188,_ZN4ksys2ui17LayoutResourceMgr18checkLangFontReadyEv
0x00000071010a305c,O,000136,_ZNK4ksys2ui17LayoutResourceMgr24checkExtraLangFontsReadyEv 0x00000071010a305c,O,000136,_ZNK4ksys2ui17LayoutResourceMgr24checkExtraLangFontsReadyEv
0x00000071010a30e4,O,000136,_ZN4ksys2ui17LayoutResourceMgr11loadVersionEv 0x00000071010a30e4,O,000136,_ZN4ksys2ui17LayoutResourceMgr11loadVersionEv
0x00000071010a316c,U,000372,LayoutResourceMgr::ready_1 0x00000071010a316c,W,000372,_ZN4ksys2ui17LayoutResourceMgr17checkVersionReadyEv
0x00000071010a32e0,U,001584,LayoutResourceMgr::loadALotOfResources 0x00000071010a32e0,U,001584,LayoutResourceMgr::loadALotOfResources
0x00000071010a3910,W,000064,_ZN4sead12PerfJobQueue13measureEndRunEv 0x00000071010a3910,W,000064,_ZN4sead12PerfJobQueue13measureEndRunEv
0x00000071010a3950,U,000072,LayoutResourceMgr::loadLayoutCommonArchive 0x00000071010a3950,W,000072,_ZN4ksys2ui17LayoutResourceMgr23loadCommonLayoutArchiveEPN4sead7ExpHeapE
0x00000071010a3998,U,000288,LayoutResourceMgr::loadArcResource 0x00000071010a3998,U,000288,LayoutResourceMgr::loadArcResource
0x00000071010a3ab8,U,000104,LayoutResourceMgr::deleteSOmething 0x00000071010a3ab8,U,000104,LayoutResourceMgr::deleteSOmething
0x00000071010a3b20,U,000208,LayoutResourceMgr::loadTitleResource 0x00000071010a3b20,O,000208,_ZN4ksys2ui17LayoutResourceMgr15loadTitleLayoutEPN4sead4HeapE
0x00000071010a3bf0,U,000016,LayoutResourceMgr::loadTitleResource2 0x00000071010a3bf0,O,000016,_ZN4ksys2ui17LayoutResourceMgr23loadTitleLayoutResourceEv
0x00000071010a3c00,U,000104,LayoutResourceMgr::deleteSomethingElse 0x00000071010a3c00,O,000104,_ZN4ksys2ui17LayoutResourceMgr25unloadTitleLayoutResourceEv
0x00000071010a3c68,U,000264,LayoutResourceMgr::x 0x00000071010a3c68,U,000264,LayoutResourceMgr::x
0x00000071010a3d70,U,000076,LayoutResourceMgr::x_0 0x00000071010a3d70,U,000076,LayoutResourceMgr::x_0
0x00000071010a3dbc,U,000068,LayoutResourceMgr::checkHorse 0x00000071010a3dbc,U,000068,LayoutResourceMgr::checkHorse

Can't render this file because it is too large.

View File

@ -1,8 +1,13 @@
#pragma once #pragma once
#include <container/seadTList.h> #include <container/seadTList.h>
#include <prim/seadSafeString.h>
#include "KingSystem/Utils/Types.h" #include "KingSystem/Utils/Types.h"
namespace sead {
class ExpHeap;
}
namespace ksys::ui { namespace ksys::ui {
class ArcResourceMgr { class ArcResourceMgr {
@ -10,6 +15,8 @@ public:
ArcResourceMgr() = default; ArcResourceMgr() = default;
virtual ~ArcResourceMgr(); virtual ~ArcResourceMgr();
virtual void loadArchive(sead::ExpHeap* heap, const sead::SafeString& path);
private: private:
// TODO: fields // TODO: fields
/* sead::TList */ /* sead::TList */

View File

@ -150,4 +150,45 @@ void LayoutResourceMgr::loadVersion() {
mVersionHandle->requestLoad("System/Version.txt", &req, nullptr); mVersionHandle->requestLoad("System/Version.txt", &req, nullptr);
} }
// non-matching
bool LayoutResourceMgr::checkVersionReady() {
if (!mVersionHandle) {
if (!mVersionHandle->isReady()) {
return false;
}
auto* resource = sead::DynamicCast<sead::DirectResource>(mVersionHandle->getResource());
instance()->mVersionString = reinterpret_cast<char*>(resource->getRawData());
if (mVersionHandle) {
delete mVersionHandle;
mVersionHandle = nullptr;
}
}
return true;
}
void LayoutResourceMgr::loadCommonLayoutArchive(sead::ExpHeap* heap) {
mArcResourceMgr->loadArchive(heap, "Layout/Common.sblarc");
}
void LayoutResourceMgr::loadTitleLayout(sead::Heap* heap) {
mTitleLayout.allocate(heap);
res::LoadRequest req;
req.mRequester = "ui::LayoutResourceMgr";
req.mLoadDataAlignment = 0x1000;
req._22 = false;
req._26 = false;
req._c = 2;
res::Handle::Status status = res::Handle::Status::NoFile;
mTitleLayout.getHandle().requestLoad("Layout/Title.blarc", &req, &status);
}
bool LayoutResourceMgr::loadTitleLayoutResource() {
return loadArcResource(mTitleLayout, "Title");
}
void LayoutResourceMgr::unloadTitleLayoutResource() {
mTitleLayout.deallocate();
}
} // namespace ksys::ui } // namespace ksys::ui

View File

@ -6,8 +6,8 @@
#include <thread/seadCriticalSection.h> #include <thread/seadCriticalSection.h>
#include "KingSystem/Resource/resHandle.h" #include "KingSystem/Resource/resHandle.h"
#include "KingSystem/Utils/Types.h" #include "KingSystem/Utils/Types.h"
#include "KingSystem/System/UI/ArcResourceMgr.h"
#include "ArcResourceMgr.h" #include "KingSystem/System/UI/ArcResource.h"
namespace nn::pl { namespace nn::pl {
enum SharedFontType : int { Unknown = 0 }; enum SharedFontType : int { Unknown = 0 };
@ -21,6 +21,31 @@ class LayoutResourceMgr {
SEAD_SINGLETON_DISPOSER(LayoutResourceMgr) SEAD_SINGLETON_DISPOSER(LayoutResourceMgr)
LayoutResourceMgr() = default; LayoutResourceMgr() = default;
virtual ~LayoutResourceMgr(); virtual ~LayoutResourceMgr();
private:
class Archive {
public:
void allocate(sead::Heap* heap) {
mHandle = new (heap) res::Handle;
_sizeA8Buf = new (heap) u8[0xA8];
}
void deallocate() {
if (mResource) {
delete mResource;
mResource = nullptr;
} else {
delete mHandle;
delete[] _sizeA8Buf;
}
mHandle = nullptr;
_sizeA8Buf = nullptr;
}
res::Handle& getHandle() { return *mHandle; }
private:
res::Handle* mHandle = nullptr;
ArcResource* mResource = nullptr;
u8* _sizeA8Buf = nullptr;
};
public: public:
@ -31,16 +56,16 @@ public:
bool checkLangFontReady(); bool checkLangFontReady();
bool checkExtraLangFontsReady() const; bool checkExtraLangFontsReady() const;
void loadVersion(); void loadVersion();
bool checkVersionReady();
void loadCommonLayoutArchive(sead::ExpHeap* heap);
void loadTitleLayout(sead::Heap* heap);
bool loadTitleLayoutResource();
void unloadTitleLayoutResource();
bool loadArcResource(Archive& archive, const char* name);
private: private:
class Archive {
public:
res::Handle* mHandle = nullptr;
void* _8 = nullptr;
void* _sizeA8Buf = nullptr;
};
res::Handle* mMsgPackHandle = nullptr; res::Handle* mMsgPackHandle = nullptr;
res::Handle* mLangFontHandle = nullptr; res::Handle* mLangFontHandle = nullptr;
res::Handle* mVersionHandle = nullptr; res::Handle* mVersionHandle = nullptr;