This commit is contained in:
robojumper
2024-05-02 00:10:44 +02:00
parent cc3b62d6c1
commit 210e350ee0
6 changed files with 292 additions and 86 deletions
+12 -12
View File
@@ -229,19 +229,19 @@ fn_80009970 = .text:0x80009970; // type:function size:0x34
getStoryFlags0__8SaveFileFv = .text:0x800099B0; // type:function size:0x8
getStoryFlags1__8SaveFileCFv = .text:0x800099C0; // type:function size:0x8
getItemFlags0__8SaveFileFv = .text:0x800099D0; // type:function size:0x8
getItemFlags1__8SaveFileFv = .text:0x800099E0; // type:function size:0x8
getItemFlags1__8SaveFileCFv = .text:0x800099E0; // type:function size:0x8
getDungeonFlags0__8SaveFileFv = .text:0x800099F0; // type:function size:0x8
getDungeonFlags1__8SaveFileFv = .text:0x80009A00; // type:function size:0x8
getDungeonFlags1__8SaveFileCFv = .text:0x80009A00; // type:function size:0x8
getSceneFlags0__8SaveFileFv = .text:0x80009A10; // type:function size:0x8
getSceneFlags1__8SaveFileFv = .text:0x80009A20; // type:function size:0x8
getSceneFlags1__8SaveFileCFv = .text:0x80009A20; // type:function size:0x8
getTboxFlags0__8SaveFileFv = .text:0x80009A30; // type:function size:0x8
getTboxFlags1__8SaveFileFv = .text:0x80009A40; // type:function size:0x8
getTboxFlags1__8SaveFileCFv = .text:0x80009A40; // type:function size:0x8
getTempFlags0__8SaveFileFv = .text:0x80009A50; // type:function size:0x8
getTempFlags1__8SaveFileFv = .text:0x80009A60; // type:function size:0x8
getTempFlags1__8SaveFileCFv = .text:0x80009A60; // type:function size:0x8
getZoneFlags0__8SaveFileFv = .text:0x80009A70; // type:function size:0x8
getZoneFlags1__8SaveFileFv = .text:0x80009A80; // type:function size:0x8
getUnkFlags0__8SaveFileFv = .text:0x80009A90; // type:function size:0x8
getUnkFlags1__8SaveFileFv = .text:0x80009AA0; // type:function size:0x8
getZoneFlags1__8SaveFileCFv = .text:0x80009A80; // type:function size:0x8
getEnemyFlags0__8SaveFileFv = .text:0x80009A90; // type:function size:0x8
getEnemyFlags1__8SaveFileCFv = .text:0x80009AA0; // type:function size:0x8
getPlayerName__8SaveFileFv = .text:0x80009AB0; // type:function size:0x8
setAreaT1__8SaveFileFPc = .text:0x80009AC0; // type:function size:0x11C
getAreaT1__8SaveFileFv = .text:0x80009BE0; // type:function size:0x8
@@ -410,7 +410,7 @@ saveFileAToSelectedFile__11FileManagerFv = .text:0x8000EF80; // type:function si
saveFileAToFile__11FileManagerFi = .text:0x8000EF90; // type:function size:0x794
copyCurrentToFileB__11FileManagerFv = .text:0x8000F730; // type:function size:0x6B4
copySelectedFileSkipData__11FileManagerFv = .text:0x8000FDF0; // type:function size:0xC
copySkipData__11FileManagerFi = .text:0x8000FE00; // type:function size:0xA8
copySkipData__11FileManagerFUc = .text:0x8000FE00; // type:function size:0xA8
setInfo_FileB__11FileManagerFv = .text:0x8000FEB0; // type:function size:0xAC
clearFileA__11FileManagerFv = .text:0x8000FF60; // type:function size:0x94
initBlankSaveFiles__11FileManagerFv = .text:0x80010000; // type:function size:0x154
@@ -424,14 +424,14 @@ getCurrentFile__11FileManagerFv = .text:0x80011210; // type:function size:0x40
getSkipFlags2__11FileManagerFv = .text:0x80011250; // type:function size:0xC
getFileA__11FileManagerFv = .text:0x80011260; // type:function size:0x8
getFileB__11FileManagerFv = .text:0x80011270; // type:function size:0x8
calcFileCRC__11FileManagerFPC8SaveFileUi = .text:0x80011280; // type:function size:0xC
calcFileCRC__11FileManagerFPCvUi = .text:0x80011280; // type:function size:0xC
updateEmptyFiles__11FileManagerFv = .text:0x80011290; // type:function size:0x34
updateEmptyFileFlags__11FileManagerFv = .text:0x800112D0; // type:function size:0x9C
isFileEmpty__11FileManagerFi = .text:0x80011370; // type:function size:0x20
isFileUnk3__11FileManagerFi = .text:0x80011390; // type:function size:0x20
isFileDirty__11FileManagerFi = .text:0x80011390; // type:function size:0x20
get_0xA84C__11FileManagerFv = .text:0x800113B0; // type:function size:0xC
checkRegionCode__11FileManagerFv = .text:0x800113C0; // type:function size:0x78
checkFileCRC__11FileManagerFi = .text:0x80011440; // type:function size:0x50
checkFileCRC__11FileManagerFUc = .text:0x80011440; // type:function size:0x50
isFileInactive__11FileManagerCFv = .text:0x80011490; // type:function size:0x6C
setPlayerInfoFileA__11FileManagerFv = .text:0x80011500; // type:function size:0xE0
setT3Info__11FileManagerFP7mVec3_cP7mAng3_c = .text:0x800115E0; // type:function size:0xD8
+1 -1
View File
@@ -33,7 +33,7 @@ namespace mHeap {
u32 unk);
/* 802f1450 */ int getGameHeapNum();
/* 802f1460 */ EGG::ExpHeap *createGameHeap(s32 heapNum, size_t size, EGG::Heap *parentHeap);
/* 802f1510 */ EGG::Heap *createGameHeap1(s32 size, EGG::Heap *parentHeap);
/* 802f1510 */ EGG::ExpHeap *createGameHeap1(s32 size, EGG::Heap *parentHeap);
/* 802f1560 */ EGG::ExpHeap *createArchiveHeap(size_t size, EGG::Heap *parentHeap);
/* 802f1590 */ EGG::ExpHeap *createCommandHeap(size_t size, EGG::Heap *parentHeap);
/* 802f15c0 */ EGG::ExpHeap *createDylinkHeap(size_t size, EGG::Heap *parentHeap);
+24 -9
View File
@@ -8,14 +8,29 @@
enum ITEM_ID {};
enum SAVE_ITEM_ID {};
class SkipData {
public:
/** 0x00 */ u16 data[16];
/** 0x20 */ u32 crc;
};
class SavedSaveFiles {
public:
/** 0x00 */ char regionCode[4];
/** 0x04 */ u8 unk1[0x1C - 0x04];
/** 0x1C */ u32 m_0x1C;
/** 0x20 */ SaveFile saveFiles[3];
/** 0xfb60 */ SkipData skipData[3];
/** 0xfbcc */ u8 unk2[0xfbe0 - 0xfb60];
};
class FileManager {
public:
/* 0x0000 */ void *mpSavedSaveFiles;
/* 0x0004 */ void *mpSkipData; // skip data Arrary (3 entries )
/* 0x0000 */ SavedSaveFiles *mpSavedSaveFiles;
/* 0x0004 */ SkipData *mpSkipData; // skip data Arrary (3 entries )
/* 0x0008 */ SaveFile mFileA;
/* 0x53C8 */ SaveFile mFileB;
/* 0xA788 */ u16 mSkipFlags[16];
/* 0xA7A8 */ u32 mSkipFlagsCRC;
/* 0xA788 */ SkipData mSkipData;
/* 0xA7AC */ wchar_t mHeroNames[3][9]; // each name is 9 wchars
/* 0xA7E2 */ wchar_t mHeroName[9]; // The current Hero Name
/* 0xA7F4 */ char mCurrentArea[32];
@@ -219,7 +234,7 @@ public:
/* 8000D040 */ u8 getSkykeepPuzzleTile(u32 spot);
/* 8000D0B0 */ void checkFileStatus();
/* 8000D1D0 */ void checkSkipDataCRCs();
/* 8000D1D0 */ bool checkSkipDataCRCs();
/* 8000D270 */ void saveOrClearSelectedFileToFileA();
/* 8000D280 */ void saveOrClearToFileA(int fileNum);
/* 8000D9C0 */ void copyFileBToCurrentFile();
@@ -230,7 +245,7 @@ public:
/* 8000EF90 */ void saveFileAToFile(int fileNum);
/* 8000F730 */ void copyCurrentToFileB();
/* 8000FDF0 */ void copySelectedFileSkipData();
/* 8000FE00 */ void copySkipData(int fileNum);
/* 8000FE00 */ void copySkipData(u8 fileNum);
/* 8000FEB0 */ void setInfo_FileB();
/* 8000FF60 */ void clearFileA();
@@ -247,14 +262,14 @@ public:
/* 80011250 */ u16 *getSkipFlags2();
/* 80011260 */ SaveFile *getFileA();
/* 80011270 */ SaveFile *getFileB();
/* 80011280 */ void calcFileCRC(const SaveFile *file, u32 length);
/* 80011280 */ u32 calcFileCRC(const void *data, u32 length);
/* 80011290 */ void updateEmptyFiles();
/* 800112D0 */ void updateEmptyFileFlags();
/* 80011370 */ bool isFileEmpty(int fileNum);
/* 80011390 */ bool isFileUnk3(int fileNum);
/* 80011390 */ bool isFileDirty(int fileNum);
/* 800113B0 */ u8 get_0xA84C();
/* 800113C0 */ bool checkRegionCode();
/* 80011440 */ bool checkFileCRC(int fileNum);
/* 80011440 */ bool checkFileCRC(u8 fileNum);
/* 80011490 */ bool isFileInactive() const;
/* 80011500 */ void setPlayerInfoFileA();
/* 800115E0 */ void setT3Info(mVec3_c *pos, mAng3_c *rot);
+21 -21
View File
@@ -9,7 +9,7 @@
// non-offical name
struct SaveFile {
public:
/* 0x 0000 */ char field_0x0000[0x8 - 0x0];
/* 0x 0000 */ s64 playTime;
/* 0x 0008 */ s64 savedTime;
/* 0x 0010 */ mVec3_c pos_t1;
/* 0x 001c */ mVec3_c pos_t2;
@@ -17,11 +17,11 @@ public:
/* 0x 0034 */ mVec3_c beacon_pos[32][5];
/* 0x 07b4 */ s32 beedleShopPathSegment;
/* 0x 07b8 */ f32 beedlShopPathSegFrac;
/* 0x 07bc */ char field_0x07BC[0x7c0 - 0x7bc];
/* 0x 07bc */ u32 field_0x07BC;
/* 0x 07c0 */ s32 pouch_items[8];
/* 0x 07e0 */ s32 item_check_items[60];
/* 0x 08d0 */ int file_area_index;
/* 0x 08d4 */ s16 player_name[8];
/* 0x 08d4 */ wchar_t player_name[8];
/* 0x 08e4 */ u16 story_flags[128];
/* 0x 09e4 */ u16 item_flags[64];
/* 0x 0a64 */ u16 dungeon_flags[8][22];
@@ -34,15 +34,15 @@ public:
/* 0x 302c */ u16 hitByEnemyCounts[100];
/* 0x 30f4 */ u16 temp_flags[4];
/* 0x 30fc */ u16 zone_flags[252];
/* 0x 32f4 */ u16 unk_flags[4096]; // size guessed? (saw memset)
/* 0x 52f4 */ s16 air_potion_timer;
/* 0x 52f6 */ s16 air_potion_plus_timer;
/* 0x 52f8 */ s16 stamina_potion_timer;
/* 0x 52fa */ s16 stamina_potion_plus_timer;
/* 0x 52fc */ s16 gaurdian_potion_timer;
/* 0x 52fe */ s16 gaurdian_potion_plus_timer;
/* 0x 5300 */ s16 field_0x5300;
/* 0x 5302 */ s16 health_capacity;
/* 0x 32f4 */ u16 enemy_flags[4096];
/* 0x 52f4 */ u16 air_potion_timer;
/* 0x 52f6 */ u16 air_potion_plus_timer;
/* 0x 52f8 */ u16 stamina_potion_timer;
/* 0x 52fa */ u16 stamina_potion_plus_timer;
/* 0x 52fc */ u16 gaurdian_potion_timer;
/* 0x 52fe */ u16 gaurdian_potion_plus_timer;
/* 0x 5300 */ u16 field_0x5300;
/* 0x 5302 */ u16 health_capacity;
/* 0x 5304 */ u16 unused_heart_related;
/* 0x 5306 */ u16 current_health;
/* 0x 5308 */ u16 room_id_t1;
@@ -88,20 +88,20 @@ public:
/* 800099b0 */ u16 *getStoryFlags0();
/* 800099c0 */ const u16 *getStoryFlags1() const;
/* 800099d0 */ u16 *getItemFlags0();
/* 800099e0 */ u16 *getItemFlags1();
/* 800099e0 */ const u16 *getItemFlags1() const;
/* 800099F0 */ u16 *getDungeonFlags0();
/* 80009A00 */ u16 *getDungeonFlags1();
/* 80009A00 */ const u16 *getDungeonFlags1() const;
/* 80009A10 */ u16 *getSceneFlags0();
/* 80009A20 */ u16 *getSceneFlags1();
/* 80009A20 */ const u16 *getSceneFlags1() const;
/* 80009A30 */ u16 *getTboxFlags0();
/* 80009A40 */ u16 *getTboxFlags1();
/* 80009A40 */ const u16 *getTboxFlags1() const;
/* 80009A50 */ u16 *getTempFlags0();
/* 80009A60 */ u16 *getTempFlags1();
/* 80009A60 */ const u16 *getTempFlags1() const;
/* 80009A70 */ u16 *getZoneFlags0();
/* 80009A80 */ u16 *getZoneFlags1();
/* 80009A90 */ u16 *getUnkFlags0();
/* 80009AA0 */ u16 *getUnkFlags1();
/* 80009AB0 */ s16 *getPlayerName(); // UTF16-BE
/* 80009A80 */ const u16 *getZoneFlags1() const;
/* 80009A90 */ u16 *getEnemyFlags0();
/* 80009AA0 */ const u16 *getEnemyFlags1() const;
/* 80009AB0 */ wchar_t *getPlayerName(); // UTF16-BE
/* 80009AC0 */ void setAreaT1(char *name);
/* 80009BE0 */ char *getAreaT1();
/* 80009BF0 */ void setAreaT2(char *name);
+214 -23
View File
@@ -1,25 +1,27 @@
#include "toBeSorted/file_manager.h"
#include "f/f_base.h"
#include <m/m_heap.h>
#include "libc.h"
// #include "libc.h"
#include <MSL_C/string.h>
// This class here makes no sense and the name might
// be a total misnomer, but this gets the sinit section correct
class UnkClass {
public:
UnkClass();
/* vtable at 80500400 */
virtual ~UnkClass();
static UnkClass sInstance;
};
// This seems really pointless since the class only has a virtual destructor
// and no members but /shrug
UnkClass UnkClass::sInstance;
/* 80574FF8 */ UnkClass UnkClass::sInstance;
UnkClass::UnkClass() {}
UnkClass::~UnkClass() {}
/* 80009D30 */ UnkClass::UnkClass() {}
/* 80009D40 */ UnkClass::~UnkClass() {}
FileManager *FileManager::sInstance;
/* 80574FFC */ FileManager *FileManager::sInstance;
extern "C" {
/* 80009D80 */ void fn_80009D80() {} // return
@@ -39,8 +41,9 @@ extern "C" {
mHeroName[0] = '\0';
mCurrentArea[0] = '\0';
sInstance = this;
mpSavedSaveFiles = mHeap::g_gameHeaps[0]->alloc(0xfbe0, 0x20);
mpSkipData = mHeap::g_gameHeaps[0]->alloc(0x80, 0x20);
// TODO these should probably use the new operators?
mpSavedSaveFiles = (SavedSaveFiles*) mHeap::g_gameHeaps[0]->alloc(sizeof(SavedSaveFiles), 0x20);
mpSkipData = (SkipData*) mHeap::g_gameHeaps[0]->alloc(0x80, 0x20);
fn_8000A2E0();
}
/* 80009EE0 */ // mVec3();
@@ -96,7 +99,58 @@ u16* FileManager::getStoryFlagsMut() {
/* 8000AA30 */ u16* FileManager::getSkipFlags() {}
/* 8000AA40 */ void FileManager::setSkipFlagsChecked(u16* flags, u32 offset, u16 count) {}
/* 8000AAA0 */ void FileManager::initFile(int fileNum) {}
inline void strncat(char *dest, const char *src, size_t count) {
if (dest != src) {
dest[0] = '\0';
if (src != nullptr) {
size_t len = strlen(dest);
size_t count = strlen(src);
count = len + count + 1 >= 0x20 ? 0x1f - len : count;
strncpy(dest + len, src, count)[count] = '\0';
}
}
}
/* 8000AAA0 */ void FileManager::initFile(int fileNum) {
SaveFile *file;
char buf[0x20];
mIsFileInvalid[1] = 1;
file = getFileA();
if (fileNum != 0) {
file = &mFileB;
}
file->new_file = 0;
file->health_capacity = 0x18;
file->unused_heart_related = 0x18;
file->current_health = 0x18;
file->shield_pouch_slot = 8;
file->equipped_b_item = 0xb;
file->selectedDowsingSlot = 0x8;
file->lastUsedPouchItemSlot = 0x8;
buf[0] = '\0';
strncat(buf, "F405", 0x20);
/*
buf[0] = '\0';
// TODO looks like an inlined strncat,
// hence the needless comparison to a .data string
// Not sure how we can do this?
// strncat(buf, etc, 0x20);
if (etc != buf) {
buf[0] = '\0';
if (etc != nullptr) {
size_t len = strlen(buf);
size_t count = strlen(etc);
count = len + count + 1 >= 0x20 ? 0x1f - len : count;
strncpy(buf + len, etc, count)[count] = '\0';
}
}*/
file->setAreaT1(buf);
file->room_id_t1 = 0;
file->forced_layer_t1 = 0;
file->entrance_t1_load_flag = 1;
}
/* 8000ABD0 */ void FileManager::setCurrentHealthCapacity(s16 health) {}
/* 8000AC00 */ s16 FileManager::getCurrentHealthCapacity() {}
@@ -229,29 +283,163 @@ u16* FileManager::getStoryFlagsMut() {
/* 8000CFE0 */ void FileManager::setSkykeepPuzzle(u32 spot, u8 tile) {}
/* 8000D040 */ u8 FileManager::getSkykeepPuzzleTile(u32 spot) {}
/* 8000D0B0 */ void FileManager::checkFileStatus() {}
/* 8000D1D0 */ void FileManager::checkSkipDataCRCs() {}
/* 8000D270 */ void FileManager::saveOrClearSelectedFileToFileA() {}
/* 8000D0B0 */ void FileManager::checkFileStatus() {
mIsFileInvalid[2] = 0;
SkipData *data;
SavedSaveFiles *files = mpSavedSaveFiles;
if (!checkRegionCode()) {
mIsFileInvalid[2] = 1;
}
if (files->m_0x1C != 0x1d) {
mIsFileInvalid[2] = 1;
}
for (u8 i = 0; i < 3; i++) {
if (checkFileCRC(i) == 0) {
mIsFileDataDirty[i] = 1;
} else {
mIsFileDataDirty[i] = 0;
}
}
int i;
for (i = 0, data = files->skipData; i < 3; i++, data++) {
u32 crc = calcFileCRC(data->data, sizeof(data->data));
if (crc != data->crc) {
fn_80009DA0(data);
data->crc = calcFileCRC(data->data, sizeof(data->data));
}
}
}
/* 8000D1D0 */ bool FileManager::checkSkipDataCRCs() {
SkipData *data;
bool dirty = false;
int i;
for (data = &mpSkipData[0], i = 0; i < 3; i++, data++) {
u32 crc = calcFileCRC(data->data, sizeof(data->data));
if (crc == data->crc) {
mIsFileSkipDataDirty[i & 0xff] = 0;
} else {
mIsFileSkipDataDirty[i & 0xff] = 1;
dirty = true;
}
}
return dirty;
}
/* 8000D270 */ void FileManager::saveOrClearSelectedFileToFileA() {
saveOrClearToFileA(mSelectedFile);
}
/* 8000D280 */ void FileManager::saveOrClearToFileA(int fileNum) {}
/* 8000D9C0 */ void FileManager::copyFileBToCurrentFile() {}
/* 8000E060 */ void FileManager::copyFileAToSelectedFile() {}
/* 8000E060 */ void FileManager::copyFileAToSelectedFile() {
copyFileAToFile(mSelectedFile);
}
/* 8000E070 */ void FileManager::copyFileAToFile(int fileNum) {}
/* 8000E7C0 */ void FileManager::copyFile(int from, int to) {}
/* 8000EF80 */ void FileManager::saveFileAToSelectedFile() {}
/* 8000EF80 */ void FileManager::saveFileAToSelectedFile() {
saveFileAToFile(mSelectedFile);
}
/* 8000EF90 */ void FileManager::saveFileAToFile(int fileNum) {}
/* 8000F730 */ void FileManager::copyCurrentToFileB() {}
/* 8000FDF0 */ void FileManager::copySelectedFileSkipData() {}
/* 8000FE00 */ void FileManager::copySkipData(int fileNum) {}
/* 8000FDF0 */ void FileManager::copySelectedFileSkipData() {
copySkipData(mSelectedFile);
}
/* 8000FE00 */ void FileManager::copySkipData(u8 fileNum) {
if (fileNum < 3) {
SkipData *curr = &mSkipData;
SkipData *data = mpSkipData;
curr->crc = calcFileCRC(&curr->data, sizeof(mSkipData.data));
data[fileNum] = *curr;
}
}
/* 8000FEB0 */ void FileManager::setInfo_FileB() {}
/* 8000FF60 */ void FileManager::clearFileA() {}
/* 8000FF60 */ void FileManager::clearFileA() {
SkipData *data;
SaveFile *file = getFileA();
memset(file, 0, sizeof(SaveFile));
file->new_file = 1;
file->checksum = calcFileCRC(file, sizeof(SaveFile) - sizeof(u32));
data = &mSkipData;
memset(&data->data, 0, sizeof(SkipData));
data->crc = calcFileCRC(data->data, sizeof(mSkipData.data));
}
/* 80010000 */ void FileManager::initBlankSaveFiles() {}
/* 80010160 */ void FileManager::initSkipData() {}
/* 80010000 */ void FileManager::initBlankSaveFiles() {
memset(mpSavedSaveFiles, 0, 0xfbe0);
mSelectedFile = 0;
memset(mIsFileEmpty, 0, 3);
SkipData *data;
SaveFile *file;
SavedSaveFiles *saved = mpSavedSaveFiles;
mHeroNames[0][0] = '\0';
mPlayTime[0] = 0;
mCurrentHealth[0] = 0;
mCurrentHealthCapacity[0] = 0;
mHeroNames[1][0] = '\0';
mPlayTime[1] = 0;
mCurrentHealth[1] = 0;
mCurrentHealthCapacity[1] = 0;
mHeroNames[2][0] = '\0';
mPlayTime[2] = 0;
mCurrentHealth[2] = 0;
mCurrentHealthCapacity[2] = 0;
getRegionVersion(saved->regionCode);
saved->m_0x1C = 0x1d;
file = &saved->saveFiles[0];
for (int num = 0; num < 3; num++, file++) {
file->new_file = 1;
u32 crc = calcFileCRC(file, sizeof(SaveFile) - sizeof(u32));
file->checksum = crc;
}
int i;
for (i = 0, data = saved->skipData; i < 3; i++, data++) {
u32 crc = calcFileCRC(data->data, sizeof(data->data));
data->crc = crc;
}
clearFileA();
mIsFileUnk1[1] = 0;
mIsFileUnk1[2] = 0;
mIsFileInvalid[0] = 0;
mIsFileInvalid[1] = 0;
m_0xA84C = 0;
mIsFileInvalid[2] = 0;
mIsFileDataDirty[0] = 0;
mIsFileDataDirty[1] = 0;
mIsFileDataDirty[2] = 0;
initSkipData();
}
/* 80010160 */ void FileManager::initSkipData() {
memset(mpSkipData, 0, 0x80);
SkipData *data;
int i;
for (i = 0, data = &mpSkipData[0]; i < 3; i++, data++) {
u32 crc = calcFileCRC(data->data, sizeof(data->data));
data->crc = crc;
}
mIsFileSkipDataDirty[0] = 0;
mIsFileSkipDataDirty[1] = 0;
mIsFileSkipDataDirty[2] = 0;
}
/* 800101F0 */ void FileManager::unsetFileANewFile() {}
/* 80010220 */ void FileManager::saveT1SaveInfo(u8 entranceT1LoadFlag) {}
/* 80010350 */ void FileManager::copyFileSkipData(int fileNum) {}
/* 80010440 */ void FileManager::clearTempFileData() {}
extern "C" void fn_800C01F0(); // todo flag managers
/* 80010440 */ void FileManager::clearTempFileData() {
memset(&mFileA, 0, sizeof(SaveFile));
memset(&mFileB, 0, sizeof(SaveFile));
memset(&mSkipData, 0, sizeof(SkipData));
fn_800C01F0();
}
/* 800104A0 */ void FileManager::saveAfterCredits() {}
/* 80011210 */ SaveFile* FileManager::getCurrentFile() {
@@ -264,14 +452,17 @@ u16* FileManager::getStoryFlagsMut() {
/* 80011270 */ SaveFile* FileManager::getFileB() {
return &mFileB;
}
/* 80011280 */ void FileManager::calcFileCRC(const SaveFile* file, u32 length) {}
/* 80011290 */ void FileManager::updateEmptyFiles() {}
/* 80011280 */ u32 FileManager::calcFileCRC(const void *data, u32 length) {}
/* 80011290 */ void FileManager::updateEmptyFiles() {
updateEmptyFileFlags();
refreshSaveFileData();
}
/* 800112D0 */ void FileManager::updateEmptyFileFlags() {}
/* 80011370 */ bool FileManager::isFileEmpty(int fileNum) {}
/* 80011390 */ bool FileManager::isFileUnk3(int fileNum) {}
/* 80011390 */ bool FileManager::isFileDirty(int fileNum) {}
/* 800113B0 */ u8 FileManager::get_0xA84C() {}
/* 800113C0 */ bool FileManager::checkRegionCode() {}
/* 80011440 */ bool FileManager::checkFileCRC(int fileNum) {}
/* 80011440 */ bool FileManager::checkFileCRC(u8 fileNum) {}
/* 80011490 */
bool FileManager::isFileInactive() const {
fBase_c* actor = fManager_c::searchBaseByGroupType(1, nullptr);
+20 -20
View File
@@ -5,7 +5,7 @@
u16* SaveFile::getStoryFlags0() {
return story_flags;
}
// 0x800099c0 getStoryFlags1__8SaveFileFv
// 0x800099c0 getStoryFlags1__8SaveFileCFv
const u16* SaveFile::getStoryFlags1() const {
return story_flags;
}
@@ -13,60 +13,60 @@ const u16* SaveFile::getStoryFlags1() const {
u16* SaveFile::getItemFlags0() {
return item_flags;
}
// 0x800099e0 getItemFlags1__8SaveFileFv
u16* SaveFile::getItemFlags1() {
// 0x800099e0 getItemFlags1__8SaveFileCFv
const u16* SaveFile::getItemFlags1() const {
return item_flags;
}
// 0x800099F0 getDungeonFlags0__8SaveFileFv
u16* SaveFile::getDungeonFlags0() {
return dungeon_flags[0];
}
// 0x80009A00 getDungeonFlags1__8SaveFileFv
u16* SaveFile::getDungeonFlags1() {
// 0x80009A00 getDungeonFlags1__8SaveFileCFv
const u16* SaveFile::getDungeonFlags1() const {
return dungeon_flags[0];
}
// 0x80009A10 getSceneFlags0__8SaveFileFv
u16* SaveFile::getSceneFlags0() {
return scene_flags;
}
// 0x80009A20 getSceneFlags1__8SaveFileFv
u16* SaveFile::getSceneFlags1() {
// 0x80009A20 getSceneFlags1__8SaveFileCFv
const u16* SaveFile::getSceneFlags1() const {
return scene_flags;
}
// 0x80009A30 getTboxFlags0__8SaveFileFv
u16* SaveFile::getTboxFlags0() {
return tbox_flags;
}
// 0x80009A40 getTboxFlags1__8SaveFileFv
u16* SaveFile::getTboxFlags1() {
// 0x80009A40 getTboxFlags1__8SaveFileCFv
const u16* SaveFile::getTboxFlags1() const {
return tbox_flags;
}
// 0x80009A50 getTempFlags0__8SaveFileFv
u16* SaveFile::getTempFlags0() {
return temp_flags;
}
// 0x80009A60 getTempFlags1__8SaveFileFv
u16* SaveFile::getTempFlags1() {
// 0x80009A60 getTempFlags1__8SaveFileCFv
const u16* SaveFile::getTempFlags1() const {
return temp_flags;
}
// 0x80009A70 getZoneFlags0__8SaveFileFv
u16* SaveFile::getZoneFlags0() {
return zone_flags;
}
// 0x80009A80 getZoneFlags1__8SaveFileFv
u16* SaveFile::getZoneFlags1() {
// 0x80009A80 getZoneFlags1__8SaveFileCFv
const u16* SaveFile::getZoneFlags1() const {
return zone_flags;
}
// 0x80009A90 getUnkFlags0__8SaveFileFv
u16* SaveFile::getUnkFlags0() {
return unk_flags;
// 0x80009A90 getEnemyFlags0__8SaveFileFv
u16* SaveFile::getEnemyFlags0() {
return enemy_flags;
}
// 0x80009AA0 getUnkFlags1__8SaveFileFv
u16* SaveFile::getUnkFlags1() {
return unk_flags;
// 0x80009AA0 getEnemyFlags1__8SaveFileCFv
const u16* SaveFile::getEnemyFlags1() const {
return enemy_flags;
}
// 0x80009AB0 getPlayerName__8SaveFileFv
s16* SaveFile::getPlayerName() {
wchar_t* SaveFile::getPlayerName() {
return player_name;
}