mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
fixes
This commit is contained in:
parent
b246c4069b
commit
bbb3503e80
1
lib/NintendoSDK-NEX
Submodule
1
lib/NintendoSDK-NEX
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 462947c1d88d365b1c2e2de6b5beb8ca78ab056a
|
||||
|
|
@ -16,8 +16,6 @@
|
|||
static s32 cPriority = sead::Thread::cDefaultPriority + 6;
|
||||
static s32 _cDefaultPriority = sead::Thread::cDefaultPriority;
|
||||
|
||||
// NON_MATCHING: Compiler creates the first functor in the wrong place
|
||||
// https://decomp.me/scratch/fyi2M
|
||||
E3ResourceLoader::E3ResourceLoader() {
|
||||
using E3ResourceLoaderFunctor = al::FunctorV0M<E3ResourceLoader*, void (E3ResourceLoader::*)()>;
|
||||
|
||||
|
|
@ -112,7 +110,7 @@ void E3ResourceLoader::loadHomeStageResource() {
|
|||
void E3ResourceLoader::loadWorldResource() {
|
||||
al::setCurrentCategoryNameDefault();
|
||||
|
||||
const u8* byml = (al::tryGetBymlFromArcName("SystemData/WorldList", "WorldResource"));
|
||||
const u8* byml = al::tryGetBymlFromArcName("SystemData/WorldList", "WorldResource");
|
||||
al::ByamlIter byamlIter = al::ByamlIter(byml);
|
||||
|
||||
al::ByamlIter worldIter;
|
||||
|
|
@ -123,12 +121,12 @@ void E3ResourceLoader::loadWorldResource() {
|
|||
s32 size = worldResourceIter.getSize();
|
||||
|
||||
for (s32 i = 0; i < size; i++) {
|
||||
al::ByamlIter v8;
|
||||
worldResourceIter.tryGetIterByIndex(&v8, i);
|
||||
al::ByamlIter resourceIter;
|
||||
worldResourceIter.tryGetIterByIndex(&resourceIter, i);
|
||||
const char* name = nullptr;
|
||||
const char* ext = nullptr;
|
||||
v8.tryGetStringByKey(&name, "Name");
|
||||
v8.tryGetStringByKey(&ext, "Ext");
|
||||
resourceIter.tryGetStringByKey(&name, "Name");
|
||||
resourceIter.tryGetStringByKey(&ext, "Ext");
|
||||
|
||||
if (!al::findResource(name))
|
||||
al::findOrCreateResource(name, ext);
|
||||
|
|
@ -183,43 +181,16 @@ void E3ResourceLoader::tryCreateExHeap(s32 loadWorldId) {
|
|||
if (mWorldExResource)
|
||||
return;
|
||||
|
||||
if (GameDataFunction::getWorldIndexSand() == loadWorldId) {
|
||||
sead::FrameHeap* cityResource = mCityWorldHomeStageResource;
|
||||
if (GameDataFunction::getWorldIndexSand() == loadWorldId)
|
||||
tryDestroyWorldResource(mCityWorldHomeStageResource);
|
||||
|
||||
if (cityResource) {
|
||||
if (mSandWorldHomeStageResource == cityResource) {
|
||||
al::removeResourceCategory("砂ワールドホーム");
|
||||
mSandWorldHomeStageResource->destroy();
|
||||
mSandWorldHomeStageResource = nullptr;
|
||||
}
|
||||
if (mCityWorldHomeStageResource == cityResource) {
|
||||
al::removeResourceCategory("都市ワールドホーム");
|
||||
mCityWorldHomeStageResource->destroy();
|
||||
mCityWorldHomeStageResource = nullptr;
|
||||
}
|
||||
}
|
||||
else if (GameDataFunction::getWorldIndexCity() == loadWorldId)
|
||||
tryDestroyWorldResource(mSandWorldHomeStageResource);
|
||||
|
||||
} else if (GameDataFunction::getWorldIndexCity() == loadWorldId) {
|
||||
sead::FrameHeap* sandResource = mSandWorldHomeStageResource;
|
||||
mWorldExResource = sead::FrameHeap::create(0, "WorldExResource", mWorldResourceHeap, 8,
|
||||
sead::Heap::cHeapDirection_Forward, false);
|
||||
|
||||
if (sandResource) {
|
||||
al::removeResourceCategory("砂ワールドホーム");
|
||||
mSandWorldHomeStageResource->destroy();
|
||||
mSandWorldHomeStageResource = nullptr;
|
||||
|
||||
if (mCityWorldHomeStageResource == sandResource) {
|
||||
al::removeResourceCategory("都市ワールドホーム");
|
||||
mCityWorldHomeStageResource->destroy();
|
||||
mCityWorldHomeStageResource = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sead::FrameHeap* newHeap = sead::FrameHeap::create(0, "WorldExResource", mWorldResourceHeap, 8,
|
||||
sead::Heap::cHeapDirection_Forward, false);
|
||||
mWorldExResource = newHeap;
|
||||
|
||||
al::addResourceCategory("ワールド常駐", 1024, newHeap);
|
||||
al::addResourceCategory("ワールド常駐", 1024, mWorldExResource);
|
||||
}
|
||||
|
||||
void E3ResourceLoader::tryDestroyWorldResource(sead::Heap* heap) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue