mirror of
https://github.com/zeldaret/ss
synced 2026-07-11 14:48:32 -04:00
Layout arc manager
This commit is contained in:
@@ -133,6 +133,12 @@ toBeSorted/arc_managers/oarc_manager.cpp:
|
||||
.sdata start:0x80571D40 end:0x80571D68
|
||||
.sbss start:0x80575280 end:0x80575288
|
||||
|
||||
toBeSorted/arc_managers/layout_arc_manager.cpp:
|
||||
.text start:0x8006A0C0 end:0x8006A2D4
|
||||
.data start:0x8050E048 end:0x8050E054
|
||||
.sdata start:0x80571D68 end:0x80571D70
|
||||
.sbss start:0x80575288 end:0x80575290
|
||||
|
||||
toBeSorted/sceneflag_manager.cpp:
|
||||
.text start:0x800BD8C0 end:0x800BE7A8
|
||||
.sbss start:0x805753E0 end:0x805753F0
|
||||
|
||||
+14
-14
@@ -3023,17 +3023,17 @@ fn_80069EE0 = .text:0x80069EE0; // type:function size:0x6C
|
||||
fn_80069F50 = .text:0x80069F50; // type:function size:0xC
|
||||
fn_80069F60 = .text:0x80069F60; // type:function size:0x88
|
||||
fn_80069FF0 = .text:0x80069FF0; // type:function size:0xC4
|
||||
fn_8006A0C0 = .text:0x8006A0C0; // type:function size:0x44
|
||||
fn_8006A110 = .text:0x8006A110; // type:function size:0x64
|
||||
fn_8006A180 = .text:0x8006A180; // type:function size:0x14
|
||||
fn_8006A1A0 = .text:0x8006A1A0; // type:function size:0x48
|
||||
fn_8006A1F0 = .text:0x8006A1F0; // type:function size:0x8
|
||||
fn_8006A200 = .text:0x8006A200; // type:function size:0x8
|
||||
fn_8006A210 = .text:0x8006A210; // type:function size:0x8
|
||||
fn_8006A220 = .text:0x8006A220; // type:function size:0x30
|
||||
fn_8006A250 = .text:0x8006A250; // type:function size:0x8
|
||||
fn_8006A260 = .text:0x8006A260; // type:function size:0x8
|
||||
fn_8006A270 = .text:0x8006A270; // type:function size:0x64
|
||||
__ct__16LayoutArcManagerFv = .text:0x8006A0C0; // type:function size:0x44
|
||||
__dt__16LayoutArcManagerFv = .text:0x8006A110; // type:function size:0x64
|
||||
init__16LayoutArcManagerFPQ23EGG4Heap = .text:0x8006A180; // type:function size:0x14
|
||||
loadLayoutArcFromDisk__16LayoutArcManagerFPCcPQ23EGG4Heap = .text:0x8006A1A0; // type:function size:0x48
|
||||
ensureLoaded1__16LayoutArcManagerFPCc = .text:0x8006A1F0; // type:function size:0x8
|
||||
ensureLoaded2__16LayoutArcManagerFPCc = .text:0x8006A200; // type:function size:0x8
|
||||
hasEntry__16LayoutArcManagerFPCc = .text:0x8006A210; // type:function size:0x8
|
||||
decrement__16LayoutArcManagerFPCc = .text:0x8006A220; // type:function size:0x30
|
||||
getData__16LayoutArcManagerFPCcPCc = .text:0x8006A250; // type:function size:0x8
|
||||
getLoadedData__16LayoutArcManagerFPCc = .text:0x8006A260; // type:function size:0x8
|
||||
create__16LayoutArcManagerFPQ23EGG4Heap = .text:0x8006A270; // type:function size:0x64
|
||||
fn_8006A2E0 = .text:0x8006A2E0; // type:function size:0x6C
|
||||
fn_8006A350 = .text:0x8006A350; // type:function size:0xC
|
||||
fn_8006A360 = .text:0x8006A360; // type:function size:0x88
|
||||
@@ -30791,7 +30791,7 @@ lbl_8050E010 = .data:0x8050E010; // type:object size:0x10 data:string
|
||||
lbl_8050E020 = .data:0x8050E020; // type:object size:0xC data:string
|
||||
__vt__11OarcManager = .data:0x8050E02C; // type:object size:0xC
|
||||
lbl_8050E038 = .data:0x8050E038; // type:object size:0x10
|
||||
lbl_8050E048 = .data:0x8050E048; // type:object size:0xC
|
||||
__vt__16LayoutArcManager = .data:0x8050E048; // type:object size:0xC
|
||||
lbl_8050E054 = .data:0x8050E054; // type:object size:0xC
|
||||
lbl_8050E060 = .data:0x8050E060; // type:object size:0x30
|
||||
lbl_8050E090 = .data:0x8050E090; // type:object size:0x2FC
|
||||
@@ -37665,7 +37665,7 @@ lbl_80571D48 = .sdata:0x80571D48; // type:object size:0x5 data:string
|
||||
lbl_80571D50 = .sdata:0x80571D50; // type:object size:0x5 data:string
|
||||
lbl_80571D58 = .sdata:0x80571D58; // type:object size:0x5 data:string
|
||||
lbl_80571D60 = .sdata:0x80571D60; // type:object size:0x5 data:string
|
||||
lbl_80571D68 = .sdata:0x80571D68; // type:object size:0x8
|
||||
lbl_80571D68 = .sdata:0x80571D68; // type:object size:0x7 data:string
|
||||
lbl_80571D70 = .sdata:0x80571D70; // type:object size:0x4
|
||||
lbl_80571D74 = .sdata:0x80571D74; // type:object size:0x4
|
||||
lbl_80571D78 = .sdata:0x80571D78; // type:object size:0x4 data:wstring
|
||||
@@ -39824,7 +39824,7 @@ lbl_80575274 = .sbss:0x80575274; // type:object size:0x4 data:4byte
|
||||
sInstance__22CurrentStageArcManager = .sbss:0x80575278; // type:object size:0x4 data:4byte
|
||||
@GUARD@getCurrentStageDirectory__22CurrentStageArcManagerFv@sStageDirTmp = .sbss:0x8057527C; // type:object size:0x1 data:byte
|
||||
sInstance__11OarcManager = .sbss:0x80575280; // type:object size:0x4 data:4byte
|
||||
lbl_80575288 = .sbss:0x80575288; // type:object size:0x8 data:4byte
|
||||
sInstance__16LayoutArcManager = .sbss:0x80575288; // type:object size:0x8 data:4byte
|
||||
lbl_80575290 = .sbss:0x80575290; // type:object size:0x4
|
||||
lbl_80575294 = .sbss:0x80575294; // type:object size:0x4
|
||||
lbl_80575298 = .sbss:0x80575298; // type:object size:0x4 data:4byte
|
||||
|
||||
@@ -294,6 +294,7 @@ config.libs = [
|
||||
Object(NonMatching, "d/a/obj/d_a_obj_base.cpp"),
|
||||
Object(Matching, "toBeSorted/arc_managers/current_stage_arc_manager.cpp"),
|
||||
Object(Matching, "toBeSorted/arc_managers/oarc_manager.cpp"),
|
||||
Object(Matching, "toBeSorted/arc_managers/layout_arc_manager.cpp"),
|
||||
Object(Matching, "toBeSorted/save_file.cpp"),
|
||||
Object(Matching, "toBeSorted/counters/counter.cpp"),
|
||||
Object(Matching, "toBeSorted/counters/rupee_counter.cpp"),
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
#include <d/d_heap.h>
|
||||
#include <d/d_rawarchive.h>
|
||||
#include <egg/core/eggHeap.h>
|
||||
// clang-format off
|
||||
#include <sized_string.h>
|
||||
// clang-format on
|
||||
|
||||
class LayoutArcManager {
|
||||
LayoutArcManager();
|
||||
virtual ~LayoutArcManager();
|
||||
|
||||
dRawArcTable_c mArcTable;
|
||||
|
||||
static LayoutArcManager *sInstance;
|
||||
|
||||
static bool create(EGG::Heap *heap);
|
||||
|
||||
void init(EGG::Heap *heap);
|
||||
|
||||
bool loadLayoutArcFromDisk(const char *object, EGG::Heap *heap);
|
||||
void ensureLoaded1(const char *object);
|
||||
void ensureLoaded2(const char *object);
|
||||
bool hasEntry(const char *object);
|
||||
bool decrement(const char *path);
|
||||
void *getData(const char *oarcName, const char *fileName);
|
||||
void *getLoadedData(const char *path);
|
||||
};
|
||||
|
||||
LayoutArcManager *LayoutArcManager::sInstance;
|
||||
|
||||
LayoutArcManager::LayoutArcManager() {
|
||||
sInstance = this;
|
||||
}
|
||||
|
||||
LayoutArcManager::~LayoutArcManager() {
|
||||
sInstance = nullptr;
|
||||
}
|
||||
|
||||
extern char lbl_80575250;
|
||||
|
||||
void LayoutArcManager::init(EGG::Heap *heap) {
|
||||
mArcTable.init(16, &lbl_80575250, heap);
|
||||
}
|
||||
|
||||
bool LayoutArcManager::loadLayoutArcFromDisk(const char *object, EGG::Heap *heap) {
|
||||
if (heap == nullptr) {
|
||||
heap = dHeap::layoutResHeap.heap;
|
||||
}
|
||||
return mArcTable.getArcOrLoadFromDisk(object, "Layout", 0, heap);
|
||||
}
|
||||
|
||||
void LayoutArcManager::ensureLoaded1(const char *object) {
|
||||
mArcTable.ensureLoadedMaybe2(object);
|
||||
}
|
||||
|
||||
void LayoutArcManager::ensureLoaded2(const char *object) {
|
||||
mArcTable.ensureLoadedMaybe(object);
|
||||
}
|
||||
|
||||
bool LayoutArcManager::hasEntry(const char *object) {
|
||||
return mArcTable.hasEntry(object);
|
||||
}
|
||||
|
||||
bool LayoutArcManager::decrement(const char *path) {
|
||||
return mArcTable.decreaseRefCount(path);
|
||||
}
|
||||
|
||||
void *LayoutArcManager::getData(const char *oarcName, const char *fileName) {
|
||||
return mArcTable.getDataFromOarc(oarcName, fileName);
|
||||
}
|
||||
|
||||
void *LayoutArcManager::getLoadedData(const char *path) {
|
||||
return mArcTable.getLoadedArcData(path);
|
||||
}
|
||||
|
||||
bool LayoutArcManager::create(EGG::Heap *heap) {
|
||||
new (heap, 0x04) LayoutArcManager();
|
||||
|
||||
if (LayoutArcManager::sInstance == nullptr) {
|
||||
return false;
|
||||
}
|
||||
LayoutArcManager::sInstance->init(heap);
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user