mirror of
https://github.com/zeldaret/ss
synced 2026-05-23 23:05:20 -04:00
some crc
This commit is contained in:
+12
-12
@@ -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
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user