mirror of https://github.com/zeldaret/botw.git
ksys: Add StarterPackMgr
This commit is contained in:
parent
8812e80809
commit
dfeb87fd3d
|
@ -49437,7 +49437,7 @@ Address,Quality,Size,Name
|
||||||
0x00000071007d02a0,U,000092,uking::StageSelect::rtti2
|
0x00000071007d02a0,U,000092,uking::StageSelect::rtti2
|
||||||
0x00000071007d02fc,U,000008,uking::StageSelect::activeReenter
|
0x00000071007d02fc,U,000008,uking::StageSelect::activeReenter
|
||||||
0x00000071007d0304,U,000008,uking::StageSelect::moveReenter
|
0x00000071007d0304,U,000008,uking::StageSelect::moveReenter
|
||||||
0x00000071007d030c,U,000428,_ZN4sead16RegionLanguageID5text_Ei
|
0x00000071007d030c,O,000428,_ZN4sead16RegionLanguageID5text_Ei
|
||||||
0x00000071007d04b8,U,000004,j__ZdlPv_354
|
0x00000071007d04b8,U,000004,j__ZdlPv_354
|
||||||
0x00000071007d04bc,U,000240,
|
0x00000071007d04bc,U,000240,
|
||||||
0x00000071007d05ac,U,000004,j__ZdlPv_355
|
0x00000071007d05ac,U,000004,j__ZdlPv_355
|
||||||
|
@ -51469,9 +51469,9 @@ Address,Quality,Size,Name
|
||||||
0x0000007100844878,O,000036,_ZN5uking2ai15PlayerRideHorseD0Ev
|
0x0000007100844878,O,000036,_ZN5uking2ai15PlayerRideHorseD0Ev
|
||||||
0x000000710084489c,U,000428,_ZN3aal9ShapeType5text_Ei
|
0x000000710084489c,U,000428,_ZN3aal9ShapeType5text_Ei
|
||||||
0x0000007100844a48,U,000004,j__ZdlPv_367
|
0x0000007100844a48,U,000004,j__ZdlPv_367
|
||||||
0x0000007100844a4c,U,000240,_ZN4sead15FixedSafeStringILi95EEaSERKNS_14SafeStringBaseIcEE
|
0x0000007100844a4c,O,000240,_ZN4sead15FixedSafeStringILi95EEaSERKNS_14SafeStringBaseIcEE
|
||||||
0x0000007100844b3c,U,000004,j__ZdlPv_368
|
0x0000007100844b3c,U,000004,j__ZdlPv_368
|
||||||
0x0000007100844b40,U,000240,_ZN4sead19FixedSafeStringBaseIcLi95EEaSERKNS_14SafeStringBaseIcEE
|
0x0000007100844b40,O,000240,_ZN4sead19FixedSafeStringBaseIcLi95EEaSERKNS_14SafeStringBaseIcEE
|
||||||
0x0000007100844c30,O,000048,_ZN5uking2ai10PlayerRootC1ERKN4ksys3act2ai10ActionBase7InitArgE
|
0x0000007100844c30,O,000048,_ZN5uking2ai10PlayerRootC1ERKN4ksys3act2ai10ActionBase7InitArgE
|
||||||
0x0000007100844c60,U,000060,_ZN5uking2ai10PlayerRoot5calc_Ev
|
0x0000007100844c60,U,000060,_ZN5uking2ai10PlayerRoot5calc_Ev
|
||||||
0x0000007100844c9c,U,000076,_ZN5uking2ai10PlayerRoot6enter_EPN4ksys3act2ai15InlineParamPackE
|
0x0000007100844c9c,U,000076,_ZN5uking2ai10PlayerRoot6enter_EPN4ksys3act2ai15InlineParamPackE
|
||||||
|
@ -53048,12 +53048,12 @@ Address,Quality,Size,Name
|
||||||
0x00000071008a5adc,U,000064,DungeonPackMgr::__auto0
|
0x00000071008a5adc,U,000064,DungeonPackMgr::__auto0
|
||||||
0x00000071008a5b1c,U,000068,
|
0x00000071008a5b1c,U,000068,
|
||||||
0x00000071008a5b60,U,000008,DungeonPackMgr::startedLoadAndFailed
|
0x00000071008a5b60,U,000008,DungeonPackMgr::startedLoadAndFailed
|
||||||
0x00000071008a5b68,U,000076,EntryFactorySARC::dtorDelete
|
0x00000071008a5b68,O,000076,_ZN4ksys3res12EntryFactoryINS0_7ArchiveEED0Ev
|
||||||
0x00000071008a5bb4,U,000132,EntryFactorySARC::rtti1
|
0x00000071008a5bb4,m,000132,_ZNK4ksys3res12EntryFactoryINS0_7ArchiveEE27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||||
0x00000071008a5c38,U,000092,EntryFactorySARC::rtti2
|
0x00000071008a5c38,O,000092,_ZNK4ksys3res12EntryFactoryINS0_7ArchiveEE18getRuntimeTypeInfoEv
|
||||||
0x00000071008a5c94,U,000152,EntryFactorySARC::newResource
|
0x00000071008a5c94,O,000152,_ZN4ksys3res12EntryFactoryINS0_7ArchiveEE12newResource_EPN4sead4HeapEi
|
||||||
0x00000071008a5d2c,U,000008,EntryFactorySARC::getResourceSize
|
0x00000071008a5d2c,O,000008,_ZNK4ksys3res12EntryFactoryINS0_7ArchiveEE15getResourceSizeEv
|
||||||
0x00000071008a5d34,U,000008,EntryFactorySARC::getLoadDataAlignment
|
0x00000071008a5d34,O,000008,_ZNK4ksys3res12EntryFactoryINS0_7ArchiveEE20getLoadDataAlignmentEv
|
||||||
0x00000071008a5d3c,U,000096,
|
0x00000071008a5d3c,U,000096,
|
||||||
0x00000071008a5d9c,U,000104,
|
0x00000071008a5d9c,U,000104,
|
||||||
0x00000071008a5e04,U,000312,E3Mgr::createInstance
|
0x00000071008a5e04,U,000312,E3Mgr::createInstance
|
||||||
|
@ -80079,32 +80079,32 @@ Address,Quality,Size,Name
|
||||||
0x0000007100eda824,U,000288,System::m2
|
0x0000007100eda824,U,000288,System::m2
|
||||||
0x0000007100eda944,U,000092,System::m3
|
0x0000007100eda944,U,000092,System::m3
|
||||||
0x0000007100eda9a0,U,000008,System::m62
|
0x0000007100eda9a0,U,000008,System::m62
|
||||||
0x0000007100eda9a8,U,000204,StarterPackMgr::destroyInstance
|
0x0000007100eda9a8,O,000204,_ZN4ksys14StarterPackMgr18SingletonDisposer_D1Ev
|
||||||
0x0000007100edaa74,U,000036,StarterPackMgr::destroyInstanceDtor
|
0x0000007100edaa74,O,000036,_ZN4ksys14StarterPackMgr18SingletonDisposer_D0Ev
|
||||||
0x0000007100edaa98,U,000128,StarterPackMgr::createInstance
|
0x0000007100edaa98,O,000128,_ZN4ksys14StarterPackMgr14createInstanceEPN4sead4HeapE
|
||||||
0x0000007100edab18,U,000244,StarterPackMgr::ctor
|
0x0000007100edab18,O,000244,_ZN4ksys14StarterPackMgrC1Ev
|
||||||
0x0000007100edac0c,U,000356,StarterPackMgr::registerPackFactoryAndMakeOverlayArena
|
0x0000007100edac0c,O,000356,_ZN4ksys14StarterPackMgr38registerPackFactoryAndMakeOverlayArenaEb
|
||||||
0x0000007100edad70,U,000112,StarterPackMgr::deleteArenaAndHeapAndUnregisterFactory
|
0x0000007100edad70,O,000112,_ZN4ksys14StarterPackMgr38deleteArenaAndHeapAndUnregisterFactoryEv
|
||||||
0x0000007100edade0,U,000196,StarterPackMgr::loadBootupGraphicsPack
|
0x0000007100edade0,O,000196,_ZN4ksys14StarterPackMgr22loadBootupGraphicsPackEv
|
||||||
0x0000007100edaea4,U,000332,StarterPackMgr::loadBootupPacks
|
0x0000007100edaea4,O,000332,_ZN4ksys14StarterPackMgr15loadBootupPacksEv
|
||||||
0x0000007100edaff0,U,000196,StarterPackMgr::loadTitlePack
|
0x0000007100edaff0,O,000196,_ZN4ksys14StarterPackMgr13loadTitlePackEv
|
||||||
0x0000007100edb0b4,U,000332,StarterPackMgr::loadTitleBGPacks
|
0x0000007100edb0b4,O,000332,_ZN4ksys14StarterPackMgr16loadTitleBGPacksEv
|
||||||
0x0000007100edb200,U,000032,StarterPackMgr::loadAocMainFieldPack
|
0x0000007100edb200,O,000032,_ZN4ksys14StarterPackMgr20loadAocMainFieldPackEv
|
||||||
0x0000007100edb220,U,000072,StarterPackMgr::unloadBootupGraphicsPack
|
0x0000007100edb220,O,000072,_ZN4ksys14StarterPackMgr24unloadBootupGraphicsPackEv
|
||||||
0x0000007100edb268,U,000036,StarterPackMgr::bootupGraphicsPackReady
|
0x0000007100edb268,O,000036,_ZN4ksys14StarterPackMgr23bootupGraphicsPackReadyEv
|
||||||
0x0000007100edb28c,U,000116,StarterPackMgr::setPackToBootupGraphics
|
0x0000007100edb28c,O,000116,_ZN4ksys14StarterPackMgr23setPackToBootupGraphicsEv
|
||||||
0x0000007100edb300,U,000080,StarterPackMgr::unloadBootupAndBootupLangPack
|
0x0000007100edb300,O,000080,_ZN4ksys14StarterPackMgr29unloadBootupAndBootupLangPackEv
|
||||||
0x0000007100edb350,U,000088,StarterPackMgr::bootupPacksReady
|
0x0000007100edb350,O,000088,_ZN4ksys14StarterPackMgr16bootupPacksReadyEv
|
||||||
0x0000007100edb3a8,U,000132,StarterPackMgr::setPackToBootupPack
|
0x0000007100edb3a8,O,000132,_ZN4ksys14StarterPackMgr19setPackToBootupPackEv
|
||||||
0x0000007100edb42c,U,000072,StarterPackMgr::unloadTitlePack
|
0x0000007100edb42c,O,000072,_ZN4ksys14StarterPackMgr15unloadTitlePackEv
|
||||||
0x0000007100edb474,U,000036,StarterPackMgr::isTitlePackReady
|
0x0000007100edb474,O,000036,_ZN4ksys14StarterPackMgr16isTitlePackReadyEv
|
||||||
0x0000007100edb498,U,000036,StarterPackMgr::isTitlePackK
|
0x0000007100edb498,O,000036,_ZN4ksys14StarterPackMgr12isTitlePackKEv
|
||||||
0x0000007100edb4bc,U,000116,StarterPackMgr::setPackToTitlePack
|
0x0000007100edb4bc,O,000116,_ZN4ksys14StarterPackMgr18setPackToTitlePackEv
|
||||||
0x0000007100edb530,U,000180,StarterPackMgr::setPackToTitleBGPack
|
0x0000007100edb530,O,000180,_ZN4ksys14StarterPackMgr20setPackToTitleBGPackEv
|
||||||
0x0000007100edb5e4,U,000156,StarterPackMgr::unloadTitleBGAndAocMainFieldPacksAndStuff
|
0x0000007100edb5e4,O,000156,_ZN4ksys14StarterPackMgr41unloadTitleBGAndAocMainFieldPacksAndStuffEv
|
||||||
0x0000007100edb680,U,000008,StarterPackMgr::failedLoadTitlePack
|
0x0000007100edb680,O,000008,_ZN4ksys14StarterPackMgr19failedLoadTitlePackEv
|
||||||
0x0000007100edb688,U,000044,StarterPackMgr::x
|
0x0000007100edb688,O,000044,_ZN4ksys14StarterPackMgr17getBootupLangPackEv
|
||||||
0x0000007100edb6b4,U,000044,StarterPackMgr::getTitleBGLangPack
|
0x0000007100edb6b4,O,000044,_ZN4ksys14StarterPackMgr18getTitleBGLangPackEv
|
||||||
0x0000007100edb6e0,U,000204,
|
0x0000007100edb6e0,U,000204,
|
||||||
0x0000007100edb7ac,U,000100,
|
0x0000007100edb7ac,U,000100,
|
||||||
0x0000007100edb810,U,000108,
|
0x0000007100edb810,U,000108,
|
||||||
|
@ -93174,7 +93174,7 @@ Address,Quality,Size,Name
|
||||||
0x0000007101208c0c,U,001288,res::ResourceMgrTask::submitLoadRequest
|
0x0000007101208c0c,U,001288,res::ResourceMgrTask::submitLoadRequest
|
||||||
0x0000007101209114,U,000292,res::ResourceMgrTask::copyExtensionAndRemoveS
|
0x0000007101209114,U,000292,res::ResourceMgrTask::copyExtensionAndRemoveS
|
||||||
0x0000007101209238,U,002240,res::ResourceMgrTask::submitLoadForSyncRequest
|
0x0000007101209238,U,002240,res::ResourceMgrTask::submitLoadForSyncRequest
|
||||||
0x0000007101209af8,U,000016,
|
0x0000007101209af8,O,000016,_ZN4ksys3res15ResourceMgrTask7setPackEPNS0_6HandleE
|
||||||
0x0000007101209b08,U,000332,res::ResourceMgrTask::submitUnloadRequest
|
0x0000007101209b08,U,000332,res::ResourceMgrTask::submitUnloadRequest
|
||||||
0x0000007101209c54,U,000388,res::ResourceMgrTask::requestUnloadForSync
|
0x0000007101209c54,U,000388,res::ResourceMgrTask::requestUnloadForSync
|
||||||
0x0000007101209dd8,O,000128,_ZN4ksys3res15ResourceMgrTask12registerUnitEPNS0_12ResourceUnitE
|
0x0000007101209dd8,O,000128,_ZN4ksys3res15ResourceMgrTask12registerUnitEPNS0_12ResourceUnitE
|
||||||
|
@ -93319,7 +93319,7 @@ Address,Quality,Size,Name
|
||||||
0x0000007101213144,U,000016,isResourceMgrOom
|
0x0000007101213144,U,000016,isResourceMgrOom
|
||||||
0x0000007101213154,O,000032,_ZN4ksys3res20registerEntryFactoryEPNS0_16EntryFactoryBaseERKN4sead14SafeStringBaseIcEE
|
0x0000007101213154,O,000032,_ZN4ksys3res20registerEntryFactoryEPNS0_16EntryFactoryBaseERKN4sead14SafeStringBaseIcEE
|
||||||
0x0000007101213174,O,000024,_ZN4ksys3res22unregisterEntryFactoryEPNS0_16EntryFactoryBaseE
|
0x0000007101213174,O,000024,_ZN4ksys3res22unregisterEntryFactoryEPNS0_16EntryFactoryBaseE
|
||||||
0x000000710121318c,U,000024,res::setResourceMgrPack
|
0x000000710121318c,O,000024,_ZN4ksys3res18setResourceMgrPackEPNS0_6HandleE
|
||||||
0x00000071012131a4,U,000016,res::clearAllCaches
|
0x00000071012131a4,U,000016,res::clearAllCaches
|
||||||
0x00000071012131b4,U,000016,res::clearAllCaches2
|
0x00000071012131b4,U,000016,res::clearAllCaches2
|
||||||
0x00000071012131c4,U,000016,res::clearAllCaches3
|
0x00000071012131c4,U,000016,res::clearAllCaches3
|
||||||
|
@ -93331,9 +93331,9 @@ Address,Quality,Size,Name
|
||||||
0x0000007101213290,O,000008,_ZN4ksys3res18stubbedLogFunctionEv
|
0x0000007101213290,O,000008,_ZN4ksys3res18stubbedLogFunctionEv
|
||||||
0x0000007101213298,O,000008,_ZN4ksys3res11returnFalseEv
|
0x0000007101213298,O,000008,_ZN4ksys3res11returnFalseEv
|
||||||
0x00000071012132a0,O,000008,_ZN4ksys3res12returnFalse2ERKN4sead14SafeStringBaseIcEE
|
0x00000071012132a0,O,000008,_ZN4ksys3res12returnFalse2ERKN4sead14SafeStringBaseIcEE
|
||||||
0x00000071012132a8,U,000004,nullsub_4703
|
0x00000071012132a8,O,000004,_ZN4ksys3res21registerPackExtensionEbRKN4sead14SafeStringBaseIcEE
|
||||||
0x00000071012132ac,U,000008,return_0__
|
0x00000071012132ac,U,000008,return_0__
|
||||||
0x00000071012132b4,U,000004,nullsub_4704
|
0x00000071012132b4,O,000004,_ZN4ksys3res11stubbedBoolEb
|
||||||
0x00000071012132b8,U,000004,nullsub_4705
|
0x00000071012132b8,U,000004,nullsub_4705
|
||||||
0x00000071012132bc,U,000004,nullsub_4706
|
0x00000071012132bc,U,000004,nullsub_4706
|
||||||
0x00000071012132c0,U,000004,res::writeResourceListToCsv
|
0x00000071012132c0,U,000004,res::writeResourceListToCsv
|
||||||
|
|
Can't render this file because it is too large.
|
2
lib/sead
2
lib/sead
|
@ -1 +1 @@
|
||||||
Subproject commit 89ce7b37a6d54e3b34ef517c21ecaeaa3cf8be29
|
Subproject commit 1befe5e418df5f7fa443939dc50426407d064401
|
|
@ -0,0 +1,10 @@
|
||||||
|
class GameConfig {
|
||||||
|
public:
|
||||||
|
static GameConfig* getInstance() { return sInstancePtr; }
|
||||||
|
|
||||||
|
char mPadding[0x419];
|
||||||
|
bool mField419;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static GameConfig* sInstancePtr;
|
||||||
|
};
|
|
@ -17,6 +17,8 @@ public:
|
||||||
~Archive() override;
|
~Archive() override;
|
||||||
|
|
||||||
void doCreate_(u8* data, u32 size, sead::Heap* heap) override;
|
void doCreate_(u8* data, u32 size, sead::Heap* heap) override;
|
||||||
|
|
||||||
|
static constexpr size_t cLoadDataAlignment = 0x80;
|
||||||
};
|
};
|
||||||
KSYS_CHECK_SIZE_NX150(Archive, 0x68);
|
KSYS_CHECK_SIZE_NX150(Archive, 0x68);
|
||||||
|
|
||||||
|
|
|
@ -238,6 +238,10 @@ void ResourceMgrTask::setFlag2000Or5000(s32 type) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ResourceMgrTask::resetFlag20000() {
|
||||||
|
mFlags.reset(Flag::_20000);
|
||||||
|
}
|
||||||
|
|
||||||
bool ResourceMgrTask::isFlag4Set() const {
|
bool ResourceMgrTask::isFlag4Set() const {
|
||||||
return mFlags.isOn(Flag::_4);
|
return mFlags.isOn(Flag::_4);
|
||||||
}
|
}
|
||||||
|
@ -701,4 +705,9 @@ void ResourceMgrTask::removeOverlayArena(OverlayArena* arena) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ResourceMgrTask::setPack(Handle* pack) {
|
||||||
|
mPackHandle = pack;
|
||||||
|
res::stubbedLogFunction();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ksys::res
|
} // namespace ksys::res
|
||||||
|
|
|
@ -137,6 +137,7 @@ public:
|
||||||
|
|
||||||
void controlField9c0d88(bool off);
|
void controlField9c0d88(bool off);
|
||||||
void setFlag2000Or5000(s32 type);
|
void setFlag2000Or5000(s32 type);
|
||||||
|
void resetFlag20000();
|
||||||
|
|
||||||
void copyLoadRequest(ILoadRequest* request, const sead::SafeString& path,
|
void copyLoadRequest(ILoadRequest* request, const sead::SafeString& path,
|
||||||
const ILoadRequest& source_request);
|
const ILoadRequest& source_request);
|
||||||
|
@ -264,6 +265,10 @@ public:
|
||||||
ResourceUnitDelegatePair& getUnitInitLoadFn() { return mUnitInitLoadFn; }
|
ResourceUnitDelegatePair& getUnitInitLoadFn() { return mUnitInitLoadFn; }
|
||||||
auto& getUnitAdjustHeapFn() { return mUnitAdjustHeapFn; }
|
auto& getUnitAdjustHeapFn() { return mUnitAdjustHeapFn; }
|
||||||
|
|
||||||
|
OverlayArena* getArenaForResourceL() { return &mArenaForResourceL; }
|
||||||
|
|
||||||
|
void setPack(Handle* pack);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum class Flag {
|
enum class Flag {
|
||||||
_1 = 1,
|
_1 = 1,
|
||||||
|
@ -274,6 +279,7 @@ private:
|
||||||
_1000 = 0x1000,
|
_1000 = 0x1000,
|
||||||
_2000 = 0x2000,
|
_2000 = 0x2000,
|
||||||
_4000 = 0x4000,
|
_4000 = 0x4000,
|
||||||
|
_20000 = 0x20000,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class CacheControlFlag : u8 {
|
enum class CacheControlFlag : u8 {
|
||||||
|
|
|
@ -36,4 +36,12 @@ s32 getDefaultAlignment() {
|
||||||
return 8;
|
return 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void registerPackExtension(bool has_extension, const sead::SafeString& extension) {}
|
||||||
|
|
||||||
|
void stubbedBool(bool) {}
|
||||||
|
|
||||||
|
void setResourceMgrPack(Handle* pack) {
|
||||||
|
ResourceMgrTask::instance()->setPack(pack);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ksys::res
|
} // namespace ksys::res
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <prim/seadSafeString.h>
|
#include <prim/seadSafeString.h>
|
||||||
|
#include "resHandle.h"
|
||||||
|
|
||||||
namespace ksys::res {
|
namespace ksys::res {
|
||||||
|
|
||||||
|
@ -27,4 +28,14 @@ bool returnFalse3(const sead::SafeString& path);
|
||||||
|
|
||||||
s32 getDefaultAlignment();
|
s32 getDefaultAlignment();
|
||||||
|
|
||||||
|
// In release builds, this function does nothing.
|
||||||
|
// TODO: figure out what this is used for. Stubbed log function?
|
||||||
|
void registerPackExtension(bool has_extension, const sead::SafeString& extension);
|
||||||
|
|
||||||
|
// In release builds, this function does nothing.
|
||||||
|
// TODO: figure out what this is used for. Stubbed log function?
|
||||||
|
void stubbedBool(bool);
|
||||||
|
|
||||||
|
void setResourceMgrPack(Handle* pack);
|
||||||
|
|
||||||
} // namespace ksys::res
|
} // namespace ksys::res
|
||||||
|
|
|
@ -32,6 +32,8 @@ target_sources(uking PRIVATE
|
||||||
Revision.h
|
Revision.h
|
||||||
StageInfo.cpp
|
StageInfo.cpp
|
||||||
StageInfo.h
|
StageInfo.h
|
||||||
|
StarterPackMgr.cpp
|
||||||
|
StarterPackMgr.h
|
||||||
StringBoard.h
|
StringBoard.h
|
||||||
SystemPauseMgr.cpp
|
SystemPauseMgr.cpp
|
||||||
SystemPauseMgr.h
|
SystemPauseMgr.h
|
||||||
|
|
|
@ -0,0 +1,236 @@
|
||||||
|
#include "KingSystem/System/StarterPackMgr.h"
|
||||||
|
|
||||||
|
namespace ksys {
|
||||||
|
SEAD_SINGLETON_DISPOSER_IMPL(StarterPackMgr)
|
||||||
|
|
||||||
|
StarterPackMgr::StarterPackMgr() = default;
|
||||||
|
|
||||||
|
StarterPackMgr::~StarterPackMgr() = default;
|
||||||
|
|
||||||
|
void StarterPackMgr::registerPackFactoryAndMakeOverlayArena(bool reduced_heap_size) {
|
||||||
|
if (!mExpHeap) {
|
||||||
|
res::registerEntryFactory(&mArchiveFac, "pack");
|
||||||
|
sead::Heap* heap = res::ResourceMgrTask::instance()->getArenaForResourceL()->getHeap();
|
||||||
|
u64 heap_size;
|
||||||
|
if (!reduced_heap_size) {
|
||||||
|
heap_size = 0xe100000;
|
||||||
|
} else {
|
||||||
|
heap_size = 0x1400000;
|
||||||
|
}
|
||||||
|
mExpHeap = sead::ExpHeap::create(heap_size, "StarterPackMgr", heap, -8,
|
||||||
|
sead::Heap::cHeapDirection_Forward, true);
|
||||||
|
mOverlayArena = new (mExpHeap, 8) OverlayArena;
|
||||||
|
OverlayArena::InitArg arg;
|
||||||
|
arg.size = mExpHeap->getMaxAllocatableSize(8);
|
||||||
|
arg.use_best_fit_alloc_mode = false;
|
||||||
|
arg.set_flag_1 = true;
|
||||||
|
arg.set_flag_8 = true;
|
||||||
|
arg.name = "StarterPackMgr";
|
||||||
|
arg.heap = mExpHeap;
|
||||||
|
arg.heap2 = nullptr;
|
||||||
|
arg._6 = false;
|
||||||
|
arg.set_flag_10 = false;
|
||||||
|
mOverlayArena->init(arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::deleteArenaAndHeapAndUnregisterFactory() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
if (mOverlayArena) {
|
||||||
|
delete mOverlayArena;
|
||||||
|
mOverlayArena = nullptr;
|
||||||
|
}
|
||||||
|
if (mExpHeap) {
|
||||||
|
mExpHeap->destroy();
|
||||||
|
mExpHeap = nullptr;
|
||||||
|
}
|
||||||
|
res::unregisterEntryFactory(&mArchiveFac);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::loadBootupGraphicsPack() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
sead::SafeString extension = ".pack";
|
||||||
|
res::registerPackExtension(true, extension);
|
||||||
|
|
||||||
|
res::LoadRequest load_req;
|
||||||
|
load_req.mRequester = "StarterPackMgr";
|
||||||
|
load_req._8 = true;
|
||||||
|
load_req._26 = false;
|
||||||
|
load_req.mArena = mOverlayArena;
|
||||||
|
|
||||||
|
mBootupGfxPack.requestLoad("Pack/Bootup_Graphics.pack", &load_req, nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::loadBootupPacks() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
sead::SafeString extension = ".pack";
|
||||||
|
res::registerPackExtension(true, extension);
|
||||||
|
|
||||||
|
res::LoadRequest load_req;
|
||||||
|
load_req.mRequester = "StarterPackMgr";
|
||||||
|
load_req._8 = true;
|
||||||
|
load_req._26 = false;
|
||||||
|
load_req.mArena = mOverlayArena;
|
||||||
|
|
||||||
|
mBootupPack.requestLoad("Pack/Bootup.pack", &load_req, nullptr);
|
||||||
|
sead::FixedSafeString<128> lang_pack;
|
||||||
|
sead::RegionLanguageID region_lang = sead::EnvUtil::getRegionLanguage();
|
||||||
|
lang_pack.format("Pack/Bootup_%s.pack", region_lang.text());
|
||||||
|
mBootupLangPack.requestLoad(lang_pack, &load_req, nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::loadTitlePack() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
sead::SafeString extension = ".pack";
|
||||||
|
res::registerPackExtension(true, extension);
|
||||||
|
|
||||||
|
res::LoadRequest load_req;
|
||||||
|
load_req.mRequester = "StarterPackMgr";
|
||||||
|
load_req._8 = true;
|
||||||
|
load_req._26 = false;
|
||||||
|
load_req.mArena = mOverlayArena;
|
||||||
|
|
||||||
|
mTitlePack.requestLoad("Pack/Title.pack", &load_req, nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::loadTitleBGPacks() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
sead::SafeString extension = ".pack";
|
||||||
|
res::registerPackExtension(true, extension);
|
||||||
|
|
||||||
|
res::LoadRequest load_req;
|
||||||
|
load_req.mRequester = "StarterPackMgr";
|
||||||
|
load_req._8 = true;
|
||||||
|
load_req._26 = false;
|
||||||
|
load_req.mArena = mOverlayArena;
|
||||||
|
|
||||||
|
mTitleBGPack.requestLoad("Pack/TitleBG.pack", &load_req, nullptr);
|
||||||
|
sead::FixedSafeString<128> lang_pack;
|
||||||
|
sead::RegionLanguageID region_lang = sead::EnvUtil::getRegionLanguage();
|
||||||
|
lang_pack.format("Pack/TitleBG_%s.pack", region_lang.text());
|
||||||
|
mTitleBGLangPack.requestLoad(lang_pack, &load_req, nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::loadAocMainFieldPack() {
|
||||||
|
if (uking::aoc::Manager::instance())
|
||||||
|
uking::aoc::Manager::instance()->loadAocMainFieldPack(mOverlayArena);
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::unloadBootupGraphicsPack() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
res::setResourceMgrPack(nullptr);
|
||||||
|
mBootupGfxPack.requestUnload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StarterPackMgr::bootupGraphicsPackReady() {
|
||||||
|
return GameConfig::getInstance()->mField419 || mBootupGfxPack.isReadyOrNeedsParse();
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::setPackToBootupGraphics() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
mBootupGfxPack.parseResource(nullptr);
|
||||||
|
res::registerPackExtension(false, "");
|
||||||
|
res::setResourceMgrPack(&mBootupGfxPack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::unloadBootupAndBootupLangPack() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
res::setResourceMgrPack(nullptr);
|
||||||
|
mBootupPack.requestUnload();
|
||||||
|
mBootupLangPack.requestUnload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StarterPackMgr::bootupPacksReady() {
|
||||||
|
return GameConfig::getInstance()->mField419 ||
|
||||||
|
(mBootupPack.isReadyOrNeedsParse() && mBootupLangPack.isReadyOrNeedsParse());
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::setPackToBootupPack() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
mBootupPack.parseResource(nullptr);
|
||||||
|
mBootupLangPack.parseResource(nullptr);
|
||||||
|
res::registerPackExtension(false, "");
|
||||||
|
res::setResourceMgrPack(&mBootupPack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::unloadTitlePack() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
res::setResourceMgrPack(nullptr);
|
||||||
|
mTitlePack.requestUnload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StarterPackMgr::isTitlePackReady() {
|
||||||
|
return GameConfig::getInstance()->mField419 || mTitlePack.isReadyOrNeedsParse();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool StarterPackMgr::isTitlePackK() {
|
||||||
|
return GameConfig::getInstance()->mField419 || mTitlePack.hasParsedResource();
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::setPackToTitlePack() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
mTitlePack.parseResource(nullptr);
|
||||||
|
res::registerPackExtension(false, "");
|
||||||
|
res::setResourceMgrPack(&mTitlePack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::setPackToTitleBGPack() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
mTitleBGPack.waitForReady();
|
||||||
|
mTitleBGPack.parseResource(nullptr);
|
||||||
|
mTitleBGLangPack.waitForReady();
|
||||||
|
mTitleBGLangPack.parseResource(nullptr);
|
||||||
|
|
||||||
|
if (uking::aoc::Manager::instance())
|
||||||
|
uking::aoc::Manager::instance()->registerAocMainFieldPack();
|
||||||
|
|
||||||
|
res::registerPackExtension(false, "");
|
||||||
|
res::setResourceMgrPack(&mTitleBGPack);
|
||||||
|
res::stubbedBool(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::unloadTitleBGAndAocMainFieldPacksAndStuff() {
|
||||||
|
if (!GameConfig::getInstance()->mField419) {
|
||||||
|
res::setResourceMgrPack(nullptr);
|
||||||
|
mTitleBGPack.requestUnload();
|
||||||
|
mTitleBGLangPack.requestUnload();
|
||||||
|
|
||||||
|
if (uking::aoc::Manager::instance())
|
||||||
|
uking::aoc::Manager::instance()->unloadAocMainFieldPack();
|
||||||
|
|
||||||
|
for (int x = 0; x < 5; x++)
|
||||||
|
res::ResourceMgrTask::instance()->waitForTaskQueuesToEmpty();
|
||||||
|
|
||||||
|
res::ResourceMgrTask::instance()->resetFlag20000();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StarterPackMgr::failedLoadTitlePack() {
|
||||||
|
mTitlePack.requestedLoad();
|
||||||
|
}
|
||||||
|
|
||||||
|
res::Handle* StarterPackMgr::getTitleBGLangPack() {
|
||||||
|
if (!mTitleBGLangPack.hasParsedResource())
|
||||||
|
return nullptr;
|
||||||
|
return &mTitleBGLangPack;
|
||||||
|
}
|
||||||
|
|
||||||
|
res::Handle* StarterPackMgr::getBootupLangPack() {
|
||||||
|
if (!mBootupLangPack.hasParsedResource())
|
||||||
|
return nullptr;
|
||||||
|
return &mBootupLangPack;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace ksys
|
|
@ -0,0 +1,62 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <devenv/seadEnvUtil.h>
|
||||||
|
#include <heap/seadExpHeap.h>
|
||||||
|
#include <prim/seadSafeString.h>
|
||||||
|
#include "Game/DLC/aocManager.h"
|
||||||
|
#include "KingSystem/Framework/GameConfig.h"
|
||||||
|
#include "KingSystem/Resource/resEntryFactory.h"
|
||||||
|
#include "KingSystem/Resource/resHandle.h"
|
||||||
|
#include "KingSystem/Resource/resLoadRequest.h"
|
||||||
|
#include "KingSystem/Resource/resResourceArchive.h"
|
||||||
|
#include "KingSystem/Resource/resResourceMgrTask.h"
|
||||||
|
#include "KingSystem/Resource/resSystem.h"
|
||||||
|
#include "KingSystem/System/OverlayArena.h"
|
||||||
|
#include "KingSystem/Utils/Types.h"
|
||||||
|
|
||||||
|
namespace ksys {
|
||||||
|
|
||||||
|
class StarterPackMgr {
|
||||||
|
SEAD_SINGLETON_DISPOSER(StarterPackMgr)
|
||||||
|
StarterPackMgr();
|
||||||
|
~StarterPackMgr();
|
||||||
|
|
||||||
|
public:
|
||||||
|
void registerPackFactoryAndMakeOverlayArena(bool reduced_heap_size);
|
||||||
|
void deleteArenaAndHeapAndUnregisterFactory();
|
||||||
|
void loadBootupGraphicsPack();
|
||||||
|
void loadBootupPacks();
|
||||||
|
void loadTitlePack();
|
||||||
|
void loadTitleBGPacks();
|
||||||
|
void loadAocMainFieldPack();
|
||||||
|
void unloadBootupGraphicsPack();
|
||||||
|
bool bootupGraphicsPackReady();
|
||||||
|
void setPackToBootupGraphics();
|
||||||
|
void unloadBootupAndBootupLangPack();
|
||||||
|
bool bootupPacksReady();
|
||||||
|
void setPackToBootupPack();
|
||||||
|
void unloadTitlePack();
|
||||||
|
bool isTitlePackReady();
|
||||||
|
bool isTitlePackK();
|
||||||
|
void setPackToTitlePack();
|
||||||
|
void setPackToTitleBGPack();
|
||||||
|
void unloadTitleBGAndAocMainFieldPacksAndStuff();
|
||||||
|
void failedLoadTitlePack();
|
||||||
|
res::Handle* getBootupLangPack();
|
||||||
|
res::Handle* getTitleBGLangPack();
|
||||||
|
|
||||||
|
private:
|
||||||
|
res::Handle mBootupGfxPack;
|
||||||
|
res::Handle mBootupPack;
|
||||||
|
res::Handle mUnusedPack;
|
||||||
|
res::Handle mBootupLangPack;
|
||||||
|
res::Handle mTitlePack;
|
||||||
|
res::Handle mTitleBGPack;
|
||||||
|
res::Handle mTitleBGLangPack;
|
||||||
|
OverlayArena* mOverlayArena = nullptr;
|
||||||
|
sead::ExpHeap* mExpHeap = nullptr;
|
||||||
|
res::EntryFactory<res::Archive> mArchiveFac;
|
||||||
|
};
|
||||||
|
KSYS_CHECK_SIZE_NX150(StarterPackMgr, 0x348);
|
||||||
|
|
||||||
|
} // namespace ksys
|
Loading…
Reference in New Issue