mirror of
https://github.com/zeldaret/ss
synced 2026-05-25 23:35:13 -04:00
oarc_manager
This commit is contained in:
@@ -127,6 +127,12 @@ toBeSorted/arc_managers/current_stage_arc_manager.cpp:
|
||||
.sbss start:0x80575278 end:0x80575280
|
||||
.bss start:0x805A0868 end:0x805A08C8
|
||||
|
||||
toBeSorted/arc_managers/oarc_manager.cpp:
|
||||
.text start:0x80069910 end:0x80069ED4
|
||||
.data start:0x8050E010 end:0x8050E038
|
||||
.sdata start:0x80571D40 end:0x80571D68
|
||||
.sbss start:0x80575280 end:0x80575288
|
||||
|
||||
toBeSorted/sceneflag_manager.cpp:
|
||||
.text start:0x800BD8C0 end:0x800BE7A8
|
||||
.sbss start:0x805753E0 end:0x805753F0
|
||||
|
||||
+27
-27
@@ -1552,7 +1552,7 @@ fn_8003D590 = .text:0x8003D590; // type:function size:0x30
|
||||
fn_8003D5C0 = .text:0x8003D5C0; // type:function size:0x4
|
||||
fn_8003D5D0 = .text:0x8003D5D0; // type:function size:0xC
|
||||
fn_8003D5E0 = .text:0x8003D5E0; // type:function size:0x68
|
||||
fn_8003D650 = .text:0x8003D650; // type:function size:0xD0
|
||||
sprintf__16SizedString<128>FPCce = .text:0x8003D650; // type:function size:0xD0
|
||||
fn_8003D720 = .text:0x8003D720; // type:function size:0x40
|
||||
fn_8003D760 = .text:0x8003D760; // type:function size:0x11C
|
||||
fn_8003D880 = .text:0x8003D880; // type:function size:0x20C
|
||||
@@ -2750,7 +2750,7 @@ destroy__14dRawArcEntry_cFPv = .text:0x80061D60; // type:function size:0x104
|
||||
loadArcFromDiskChecked__14dRawArcEntry_cFPCcPCcUcPQ23EGG4Heap = .text:0x80061E70; // type:function size:0x74
|
||||
loadArcFromDisk__14dRawArcEntry_cFPCcPCcUcPQ23EGG4Heap = .text:0x80061EF0; // type:function size:0xD0
|
||||
checkArcExistsOnDisk__14dRawArcEntry_cFPCcPCc = .text:0x80061FC0; // type:function size:0x34
|
||||
checkArcExistsOnDiskInner__14dRawArcEntry_cFPcPCcPCc = .text:0x80062000; // type:function size:0x9C
|
||||
checkArcExistsOnDiskInner__14dRawArcEntry_cFR16SizedString<128>PCcPCc = .text:0x80062000; // type:function size:0x9C
|
||||
mount__14dRawArcEntry_cFPCcPvPvUcPQ23EGG4Heap = .text:0x800620A0; // type:function size:0x104
|
||||
ensureLoadedMaybe__14dRawArcEntry_cFPv = .text:0x800621B0; // type:function size:0x14C
|
||||
onMount__14dRawArcEntry_cFPv = .text:0x80062300; // type:function size:0x5C
|
||||
@@ -3002,23 +3002,23 @@ getCurrentStageDirectory__22CurrentStageArcManagerFv = .text:0x800696B0; // type
|
||||
getRoomArcDirectory__22CurrentStageArcManagerCFi = .text:0x800697E0; // type:function size:0xB0
|
||||
create__22CurrentStageArcManagerFPQ23EGG4Heap = .text:0x80069890; // type:function size:0x64
|
||||
__sinit_\current_stage_arc_manager_cpp = .text:0x80069900; // type:function size:0x10 scope:local
|
||||
fn_80069910 = .text:0x80069910; // type:function size:0x44
|
||||
fn_80069960 = .text:0x80069960; // type:function size:0x64
|
||||
fn_800699D0 = .text:0x800699D0; // type:function size:0x14
|
||||
fn_800699F0 = .text:0x800699F0; // type:function size:0x34
|
||||
fn_80069A30 = .text:0x80069A30; // type:function size:0x48
|
||||
fn_80069A80 = .text:0x80069A80; // type:function size:0x44
|
||||
fn_80069AD0 = .text:0x80069AD0; // type:function size:0x8
|
||||
fn_80069AE0 = .text:0x80069AE0; // type:function size:0x8
|
||||
fn_80069AF0 = .text:0x80069AF0; // type:function size:0x30
|
||||
fn_80069B20 = .text:0x80069B20; // type:function size:0x8
|
||||
fn_80069B30 = .text:0x80069B30; // type:function size:0x10
|
||||
fn_80069B40 = .text:0x80069B40; // type:function size:0x10
|
||||
fn_80069B50 = .text:0x80069B50; // type:function size:0x10
|
||||
fn_80069B60 = .text:0x80069B60; // type:function size:0x178
|
||||
fn_80069CE0 = .text:0x80069CE0; // type:function size:0x178
|
||||
fn_80069E60 = .text:0x80069E60; // type:function size:0x8
|
||||
fn_80069E70 = .text:0x80069E70; // type:function size:0x64
|
||||
__ct__11OarcManagerFv = .text:0x80069910; // type:function size:0x44
|
||||
__dt__11OarcManagerFv = .text:0x80069960; // type:function size:0x64
|
||||
init__11OarcManagerFPQ23EGG4Heap = .text:0x800699D0; // type:function size:0x14
|
||||
checkIfObjectArcExistsOnDisk__11OarcManagerFPCc = .text:0x800699F0; // type:function size:0x34
|
||||
loadObjectArcFromDisk__11OarcManagerFPCcPQ23EGG4Heap = .text:0x80069A30; // type:function size:0x48
|
||||
addEntryFromSuperArc__11OarcManagerFPCcPvPQ23EGG4Heap = .text:0x80069A80; // type:function size:0x44
|
||||
ensureLoaded1__11OarcManagerFPCc = .text:0x80069AD0; // type:function size:0x8
|
||||
ensureLoaded2__11OarcManagerFPCc = .text:0x80069AE0; // type:function size:0x8
|
||||
decrement__11OarcManagerFPCc = .text:0x80069AF0; // type:function size:0x30
|
||||
getData__11OarcManagerFPCcPCc = .text:0x80069B20; // type:function size:0x8
|
||||
getMdlFromArc2__11OarcManagerFPCc = .text:0x80069B30; // type:function size:0x10
|
||||
getMdlFromArc__11OarcManagerFPCc = .text:0x80069B40; // type:function size:0x10
|
||||
getZevFromArc__11OarcManagerFPCc = .text:0x80069B50; // type:function size:0x10
|
||||
getDzbFromArc__11OarcManagerFPCcPCc = .text:0x80069B60; // type:function size:0x178
|
||||
getPlcFromArc__11OarcManagerFPCcPCc = .text:0x80069CE0; // type:function size:0x178
|
||||
getSubEntryData__11OarcManagerFPCcPCc = .text:0x80069E60; // type:function size:0x8
|
||||
create__11OarcManagerFPQ23EGG4Heap = .text:0x80069E70; // type:function size:0x64
|
||||
fn_80069EE0 = .text:0x80069EE0; // type:function size:0x6C
|
||||
fn_80069F50 = .text:0x80069F50; // type:function size:0xC
|
||||
fn_80069F60 = .text:0x80069F60; // type:function size:0x88
|
||||
@@ -30789,7 +30789,7 @@ lbl_8050DFF8 = .data:0x8050DFF8; // type:object size:0x9 data:string
|
||||
__vt__22CurrentStageArcManager = .data:0x8050E004; // type:object size:0xC
|
||||
lbl_8050E010 = .data:0x8050E010; // type:object size:0x10 data:string
|
||||
lbl_8050E020 = .data:0x8050E020; // type:object size:0xC data:string
|
||||
lbl_8050E02C = .data:0x8050E02C; // type:object size:0xC
|
||||
__vt__11OarcManager = .data:0x8050E02C; // type:object size:0xC
|
||||
lbl_8050E038 = .data:0x8050E038; // type:object size:0x10
|
||||
lbl_8050E048 = .data:0x8050E048; // type:object size:0xC
|
||||
lbl_8050E054 = .data:0x8050E054; // type:object size:0xC
|
||||
@@ -35664,7 +35664,7 @@ lbl_80541980 = .data:0x80541980; // type:object size:0x28
|
||||
lbl_805419A8 = .data:0x805419A8; // type:object size:0x40
|
||||
lbl_805419E8 = .data:0x805419E8; // type:object size:0xC data:string
|
||||
lbl_805419F4 = .data:0x805419F4; // type:object size:0xC data:string
|
||||
lbl_80541A00 = .data:0x80541A00; // type:object size:0x10
|
||||
@LOCAL@getModuleTypeString__20DynamicModuleControlCFv@REL_LOAD_TYPES = .data:0x80541A00; // type:object size:0x10
|
||||
__vt__20DynamicModuleControl = .data:0x80541A10; // type:object size:0x30
|
||||
__vt__24DynamicModuleControlBase = .data:0x80541A40; // type:object size:0x30
|
||||
lbl_80541A70 = .data:0x80541A70; // type:object size:0x808
|
||||
@@ -37660,11 +37660,11 @@ lbl_80571D20 = .sdata:0x80571D20; // type:object size:0x8
|
||||
lbl_80571D28 = .sdata:0x80571D28; // type:object size:0x8 data:string
|
||||
lbl_80571D30 = .sdata:0x80571D30; // type:object size:0x7 data:string
|
||||
lbl_80571D38 = .sdata:0x80571D38; // type:object size:0x7 data:string
|
||||
lbl_80571D40 = .sdata:0x80571D40; // type:object size:0x8
|
||||
lbl_80571D48 = .sdata:0x80571D48; // type:object size:0x8
|
||||
lbl_80571D50 = .sdata:0x80571D50; // type:object size:0x8
|
||||
lbl_80571D58 = .sdata:0x80571D58; // type:object size:0x8
|
||||
lbl_80571D60 = .sdata:0x80571D60; // type:object size:0x8
|
||||
lbl_80571D40 = .sdata:0x80571D40; // type:object size:0x7 data:string
|
||||
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_80571D70 = .sdata:0x80571D70; // type:object size:0x4
|
||||
lbl_80571D74 = .sdata:0x80571D74; // type:object size:0x4
|
||||
@@ -39823,7 +39823,7 @@ lbl_80575270 = .sbss:0x80575270; // type:object size:0x1 data:byte
|
||||
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
|
||||
lbl_80575280 = .sbss:0x80575280; // type:object size:0x8 data:4byte
|
||||
sInstance__11OarcManager = .sbss:0x80575280; // type:object size:0x4 data:4byte
|
||||
lbl_80575288 = .sbss:0x80575288; // type:object size:0x8 data:4byte
|
||||
lbl_80575290 = .sbss:0x80575290; // type:object size:0x4
|
||||
lbl_80575294 = .sbss:0x80575294; // type:object size:0x4
|
||||
|
||||
@@ -293,6 +293,7 @@ config.libs = [
|
||||
Object(NonMatching, "d/a/d_a_base.cpp"),
|
||||
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/save_file.cpp"),
|
||||
Object(Matching, "toBeSorted/counters/counter.cpp"),
|
||||
Object(Matching, "toBeSorted/counters/rupee_counter.cpp"),
|
||||
|
||||
@@ -19,8 +19,8 @@ public:
|
||||
bool destroy(void *arg);
|
||||
bool loadArcFromDiskChecked(const char *fileName, const char *dirName, u8 mountDirection, EGG::Heap *heap);
|
||||
bool loadArcFromDisk(const char *fileName, const char *dirName, u8 mountDirection, EGG::Heap *heap);
|
||||
static bool checkArcExistsOnDisk(const char *fileName, const char *dirName);
|
||||
static bool checkArcExistsOnDiskInner(char *outBuf, const char *fileName, const char *dirName);
|
||||
static BOOL checkArcExistsOnDisk(const char *fileName, const char *dirName);
|
||||
static BOOL checkArcExistsOnDiskInner(SizedString<128> &path, const char *fileName, const char *dirName);
|
||||
|
||||
int mount(const char *name, void *data, void *callbackArg, u8 mountDirection, EGG::Heap *heap);
|
||||
int onMount(void *callbackArg);
|
||||
@@ -84,12 +84,12 @@ public:
|
||||
~dRawArcTable_c();
|
||||
|
||||
bool init(u16 count, void *callbackArg, EGG::Heap *heap);
|
||||
u32 getArcOrLoadFromDisk(const char *name, const char *dirName, u8 mountDirection, EGG::Heap *heap);
|
||||
bool addEntryFromSuperArc(const char *name, void *data, u8 mountDirection, EGG::Heap *heap);
|
||||
BOOL getArcOrLoadFromDisk(const char *name, const char *dirName, u8 mountDirection, EGG::Heap *heap);
|
||||
BOOL addEntryFromSuperArc(const char *name, void *data, u8 mountDirection, EGG::Heap *heap);
|
||||
int ensureLoadedMaybe2(const char *name);
|
||||
int ensureLoadedMaybe(const char *name);
|
||||
bool hasEntry(const char *name);
|
||||
u32 decreaseRefCount(const char *name);
|
||||
BOOL decreaseRefCount(const char *name);
|
||||
void *getDataFromOarc(const char *name, const char *path);
|
||||
void *getSubEntryData(const char *name, const char *path);
|
||||
void *getLoadedArcData(const char *name);
|
||||
|
||||
@@ -17,6 +17,10 @@ struct SizedString {
|
||||
mChars[0] = '\0';
|
||||
}
|
||||
|
||||
SizedString(const char *src) {
|
||||
operator=(src);
|
||||
}
|
||||
|
||||
char mChars[Size];
|
||||
|
||||
char *operator&() {
|
||||
|
||||
+8
-11
@@ -1,6 +1,8 @@
|
||||
#include <d/d_dvd.h>
|
||||
#include <m/m_dvd.h>
|
||||
|
||||
// clang-format off
|
||||
#include <sized_string.h>
|
||||
// clang-format on
|
||||
namespace dDvd {
|
||||
|
||||
/** 800520f0 */
|
||||
@@ -19,25 +21,20 @@ loader_c::loader_c() {
|
||||
/** 80052130 */
|
||||
loader_c::~loader_c() {}
|
||||
|
||||
// sprintf2
|
||||
extern "C" void fn_8003D650(char *out, const char *fmt, ...);
|
||||
|
||||
/** 80052170 */
|
||||
void *loader_c::request(const char *path, u8 mountDirection, EGG::Heap *heap) {
|
||||
char buf[128];
|
||||
|
||||
if (mpBuffer != nullptr) {
|
||||
return mpBuffer;
|
||||
}
|
||||
if (mpCommand == 0) {
|
||||
mSize = -1;
|
||||
mpHeap = heap != nullptr ? heap : mDvd::getArchiveHeap();
|
||||
buf[0] = '\0';
|
||||
fn_8003D650(buf, "US%s", path);
|
||||
if (!mDvd::IsExistPath(buf)) {
|
||||
fn_8003D650(buf, "%s", path);
|
||||
SizedString<128> buf;
|
||||
buf.sprintf("US%s", path);
|
||||
if (!mDvd::IsExistPath(&buf)) {
|
||||
buf.sprintf("%s", path);
|
||||
}
|
||||
mpCommand = mDvd_toMainRam_normal_c::create(buf, mountDirection, heap);
|
||||
mpCommand = mDvd_toMainRam_normal_c::create(&buf, mountDirection, heap);
|
||||
}
|
||||
if (mpCommand != nullptr && mpCommand->mStatus != 0) {
|
||||
mpBuffer = mpCommand->mDataPtr;
|
||||
|
||||
+13
-15
@@ -120,11 +120,10 @@ bool dRawArcEntry_c::destroy(void *arg) {
|
||||
|
||||
bool dRawArcEntry_c::loadArcFromDiskChecked(const char *fileName, const char *dirName, u8 mountDirection,
|
||||
EGG::Heap *heap) {
|
||||
char arcPath[128];
|
||||
arcPath[0] = '\0';
|
||||
SizedString<128> path;
|
||||
|
||||
if (checkArcExistsOnDiskInner(arcPath, fileName, dirName)) {
|
||||
return loadArcFromDisk(fileName, arcPath, mountDirection, heap);
|
||||
if (checkArcExistsOnDiskInner(path, fileName, dirName)) {
|
||||
return loadArcFromDisk(fileName, &path, mountDirection, heap);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -138,20 +137,19 @@ bool dRawArcEntry_c::loadArcFromDisk(const char *arcName, const char *arcPath, u
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dRawArcEntry_c::checkArcExistsOnDisk(const char *fileName, const char *dirName) {
|
||||
char path[128];
|
||||
path[0] = '\0';
|
||||
BOOL dRawArcEntry_c::checkArcExistsOnDisk(const char *fileName, const char *dirName) {
|
||||
SizedString<128> path;
|
||||
return checkArcExistsOnDiskInner(path, fileName, dirName);
|
||||
}
|
||||
|
||||
// sprintf2
|
||||
extern "C" void fn_8003D650(char *out, const char *fmt, ...);
|
||||
|
||||
bool dRawArcEntry_c::checkArcExistsOnDiskInner(char *outBuf, const char *fileName, const char *dirName) {
|
||||
fn_8003D650(outBuf, "/US/%s/%s.arc", dirName, fileName);
|
||||
if (!mDvd::IsExistPath(outBuf)) {
|
||||
fn_8003D650(outBuf, "/%s/%s.arc", dirName, fileName);
|
||||
if (!mDvd::IsExistPath(outBuf)) {
|
||||
BOOL dRawArcEntry_c::checkArcExistsOnDiskInner(SizedString<128> &path, const char *fileName, const char *dirName) {
|
||||
path.sprintf("/US/%s/%s.arc", dirName, fileName);
|
||||
if (!mDvd::IsExistPath(&path)) {
|
||||
path.sprintf("/%s/%s.arc", dirName, fileName);
|
||||
if (!mDvd::IsExistPath(&path)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -249,7 +247,7 @@ bool dRawArcTable_c::init(u16 count, void *callbackArg, EGG::Heap *heap) {
|
||||
return true;
|
||||
}
|
||||
|
||||
u32 dRawArcTable_c::getArcOrLoadFromDisk(const char *name, const char *dirName, u8 mountDirection, EGG::Heap *heap) {
|
||||
BOOL dRawArcTable_c::getArcOrLoadFromDisk(const char *name, const char *dirName, u8 mountDirection, EGG::Heap *heap) {
|
||||
dRawArcEntry_c *entry = findEntry(name);
|
||||
if (entry == nullptr) {
|
||||
entry = findEmptySlot();
|
||||
@@ -266,7 +264,7 @@ u32 dRawArcTable_c::getArcOrLoadFromDisk(const char *name, const char *dirName,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool dRawArcTable_c::addEntryFromSuperArc(const char *name, void *data, u8 mountDirection, EGG::Heap *heap) {
|
||||
BOOL dRawArcTable_c::addEntryFromSuperArc(const char *name, void *data, u8 mountDirection, EGG::Heap *heap) {
|
||||
dRawArcEntry_c *entry = findEntry(name);
|
||||
if (entry == nullptr) {
|
||||
entry = findEmptySlot();
|
||||
@@ -303,7 +301,7 @@ bool dRawArcTable_c::hasEntry(const char *name) {
|
||||
return findEntry(name) != nullptr;
|
||||
}
|
||||
|
||||
u32 dRawArcTable_c::decreaseRefCount(const char *name) {
|
||||
BOOL dRawArcTable_c::decreaseRefCount(const char *name) {
|
||||
dRawArcEntry_c *entry = findEntry(name);
|
||||
if (entry == nullptr) {
|
||||
return false;
|
||||
|
||||
@@ -54,8 +54,6 @@ void CurrentStageArcManager::init(EGG::Heap *heap) {
|
||||
mArcTable.init(18, &lbl_80575250, heap);
|
||||
}
|
||||
|
||||
// sprintf
|
||||
extern "C" void fn_8001F820(char *str, const char *src, ...);
|
||||
|
||||
bool CurrentStageArcManager::setStage(const char *newStage) {
|
||||
mStageName = newStage;
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
#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 OarcManager {
|
||||
OarcManager();
|
||||
virtual ~OarcManager();
|
||||
|
||||
dRawArcTable_c mArcTable;
|
||||
|
||||
static OarcManager *sInstance;
|
||||
|
||||
static bool create(EGG::Heap *heap);
|
||||
|
||||
void init(EGG::Heap *heap);
|
||||
|
||||
bool checkIfObjectArcExistsOnDisk(const char *object);
|
||||
bool loadObjectArcFromDisk(const char *object, EGG::Heap *heap);
|
||||
bool addEntryFromSuperArc(const char *object, void *data, EGG::Heap *heap);
|
||||
void ensureLoaded1(const char *object);
|
||||
void ensureLoaded2(const char *object);
|
||||
bool decrement(const char *path);
|
||||
void *getData(const char *oarcName, const char *fileName);
|
||||
|
||||
void *getMdlFromArc2(const char *oarcName);
|
||||
void *getMdlFromArc(const char *oarcName);
|
||||
void *getZevFromArc(const char *oarcName);
|
||||
void *getDzbFromArc(const char *oarcName, const char *fileName);
|
||||
void *getPlcFromArc(const char *oarcName, const char *fileName);
|
||||
void *getSubEntryData(const char *oarcName, const char *fileName);
|
||||
};
|
||||
|
||||
OarcManager *OarcManager::sInstance;
|
||||
|
||||
OarcManager::OarcManager() {
|
||||
sInstance = this;
|
||||
}
|
||||
|
||||
OarcManager::~OarcManager() {
|
||||
sInstance = nullptr;
|
||||
}
|
||||
|
||||
extern char lbl_80575250;
|
||||
|
||||
void OarcManager::init(EGG::Heap *heap) {
|
||||
mArcTable.init(200, &lbl_80575250, heap);
|
||||
}
|
||||
|
||||
bool OarcManager::checkIfObjectArcExistsOnDisk(const char *object) {
|
||||
return dRawArcEntry_c::checkArcExistsOnDisk(object, "Object");
|
||||
}
|
||||
|
||||
bool OarcManager::loadObjectArcFromDisk(const char *object, EGG::Heap *heap) {
|
||||
if (heap == nullptr) {
|
||||
heap = dHeap::work2Heap.heap;
|
||||
}
|
||||
return mArcTable.getArcOrLoadFromDisk(object, "Object", 0, heap);
|
||||
}
|
||||
|
||||
bool OarcManager::addEntryFromSuperArc(const char *object, void *data, EGG::Heap *heap) {
|
||||
if (heap == nullptr) {
|
||||
heap = EGG::Heap::sCurrentHeap;
|
||||
}
|
||||
return mArcTable.addEntryFromSuperArc(object, data, 0, heap);
|
||||
}
|
||||
|
||||
void OarcManager::ensureLoaded1(const char *object) {
|
||||
mArcTable.ensureLoadedMaybe2(object);
|
||||
}
|
||||
|
||||
void OarcManager::ensureLoaded2(const char *object) {
|
||||
mArcTable.ensureLoadedMaybe(object);
|
||||
}
|
||||
|
||||
bool OarcManager::decrement(const char *path) {
|
||||
return mArcTable.decreaseRefCount(path);
|
||||
}
|
||||
|
||||
void *OarcManager::getData(const char *oarcName, const char *fileName) {
|
||||
return mArcTable.getDataFromOarc(oarcName, fileName);
|
||||
}
|
||||
|
||||
void *OarcManager::getMdlFromArc2(const char *oarcName) {
|
||||
return mArcTable.getDataFromOarc(oarcName, "g3d/model.brres");
|
||||
}
|
||||
|
||||
void *OarcManager::getMdlFromArc(const char *oarcName) {
|
||||
return mArcTable.getSubEntryData(oarcName, "g3d/model.brres");
|
||||
}
|
||||
|
||||
void *OarcManager::getZevFromArc(const char *oarcName) {
|
||||
return mArcTable.getDataFromOarc(oarcName, "dat/zev.dat");
|
||||
}
|
||||
|
||||
void *OarcManager::getDzbFromArc(const char *oarcName, const char *fileName) {
|
||||
SizedString<32> str = "dzb/";
|
||||
str += fileName;
|
||||
str += ".dzb";
|
||||
return mArcTable.getDataFromOarc(oarcName, &str);
|
||||
}
|
||||
|
||||
void *OarcManager::getPlcFromArc(const char *oarcName, const char *fileName) {
|
||||
SizedString<32> str = "dat/";
|
||||
str += fileName;
|
||||
str += ".plc";
|
||||
return mArcTable.getDataFromOarc(oarcName, &str);
|
||||
}
|
||||
|
||||
void *OarcManager::getSubEntryData(const char *oarcName, const char *fileName) {
|
||||
return mArcTable.getSubEntryData(oarcName, fileName);
|
||||
}
|
||||
|
||||
bool OarcManager::create(EGG::Heap *heap) {
|
||||
new (heap, 0x04) OarcManager();
|
||||
|
||||
if (OarcManager::sInstance == nullptr) {
|
||||
return false;
|
||||
}
|
||||
OarcManager::sInstance->init(heap);
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user