From a9aac2a5ad3badfeaee6ddaaa5c1b9ccc7e4942a Mon Sep 17 00:00:00 2001 From: robojumper Date: Fri, 3 May 2024 00:23:57 +0200 Subject: [PATCH] Small cleanups --- config/SOUE01/splits.txt | 1 + src/toBeSorted/file_manager.cpp | 26 +++++++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index cf8cb5fa..4937e0e3 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -20,6 +20,7 @@ toBeSorted/file_manager.cpp: .text start:0x80009D30 end:0x80011730 .ctors start:0x804DB648 end:0x804DB64C .data start:0x80500400 end:0x80500410 + .sdata start:0x80571848 end:0x80571850 .sbss start:0x80574FF8 end:0x80575000 .bss start:0x80580070 end:0x80580080 diff --git a/src/toBeSorted/file_manager.cpp b/src/toBeSorted/file_manager.cpp index 75959c7d..84bd84b4 100644 --- a/src/toBeSorted/file_manager.cpp +++ b/src/toBeSorted/file_manager.cpp @@ -102,7 +102,7 @@ u16 *FileManager::getStoryFlagsMut() { /* 8000AA40 */ void FileManager::setSkipFlagsChecked(u16 *flags, u32 offset, u16 count) {} // This does strncat things - append src to dest -inline void strncat(char *dest, const char *src, size_t max_len) { +inline void fake_strncat(char *dest, const char *src, size_t max_len) { if (src != nullptr) { size_t len = strlen(dest); size_t count = strlen(src); @@ -120,16 +120,14 @@ inline void strncat(char *dest, const char *src, size_t max_len) { inline void strnsth(char *dest, const char *src, size_t max_len) { if (src != dest) { dest[0] = '\0'; - strncat(dest, src, max_len); + fake_strncat(dest, src, max_len); } } /* 8000AAA0 */ void FileManager::initFile(int fileNum) { - SaveFile *file; - char buf[0x20]; mIsFileInvalid[1] = 1; - file = getFileA(); + SaveFile *file = getFileA(); if (fileNum != 0) { file = &mFileB; } @@ -142,6 +140,7 @@ inline void strnsth(char *dest, const char *src, size_t max_len) { file->selectedDowsingSlot = 0x8; file->lastUsedPouchItemSlot = 0x8; + char buf[0x20]; buf[0] = '\0'; strnsth(buf, "F405", 0x20); file->setAreaT1(buf); @@ -314,7 +313,7 @@ inline void strnsth(char *dest, const char *src, size_t max_len) { SkipData *data; bool dirty = false; u8 i; - for (data = &mpSkipData[0], i = 0; (s32)i < 3; i++, data++) { + for (data = mpSkipData, i = 0; (s32)i < 3; i++, data++) { u32 crc = calcFileCRC(data->data, sizeof(data->data)); if (crc == data->crc) { mIsFileSkipDataDirty[i] = 0; @@ -390,7 +389,7 @@ inline void strnsth(char *dest, const char *src, size_t max_len) { getRegionVersion(saved->regionCode); saved->m_0x1C = 0x1d; - file = &saved->saveFiles[0]; + file = saved->saveFiles; for (int num = 0; num < 3; num++, file++) { file->new_file = 1; u32 crc = calcFileCRC(file, sizeof(SaveFile) - sizeof(u32)); @@ -419,7 +418,7 @@ inline void strnsth(char *dest, const char *src, size_t max_len) { memset(mpSkipData, 0, 0x80); SkipData *data; int i; - for (i = 0, data = &mpSkipData[0]; i < 3; i++, data++) { + for (i = 0, data = mpSkipData; i < 3; i++, data++) { u32 crc = calcFileCRC(data->data, sizeof(data->data)); data->crc = crc; } @@ -455,7 +454,16 @@ extern "C" void fn_800C01F0(); // todo flag managers updateEmptyFileFlags(); refreshSaveFileData(); } -/* 800112D0 */ void FileManager::updateEmptyFileFlags() {} +/* 800112D0 */ void FileManager::updateEmptyFileFlags() { + SaveFile *saves = mpSavedSaveFiles->saveFiles; + for (int i = 0; i < 3; i++) { + if (saves[i].new_file == 1) { + mIsFileEmpty[i] = 1; + } else { + mIsFileEmpty[i] = 0; + } + } +} /* 80011370 */ bool FileManager::isFileEmpty(int fileNum) {} /* 80011390 */ bool FileManager::isFileDirty(int fileNum) {} /* 800113B0 */ u8 FileManager::get_0xA84C() {}