From 630882c99e6024c7c1ebc5f7268216ad2a0f311d Mon Sep 17 00:00:00 2001 From: RocketRobz Date: Thu, 10 Mar 2022 17:16:57 -0700 Subject: [PATCH] Fix created save size --- quickmenu/arm9/source/main.cpp | 10 ++++++++-- romsel_dsimenutheme/arm9/source/main.cpp | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/quickmenu/arm9/source/main.cpp b/quickmenu/arm9/source/main.cpp index 69ba826381..8ce464506d 100644 --- a/quickmenu/arm9/source/main.cpp +++ b/quickmenu/arm9/source/main.cpp @@ -850,11 +850,14 @@ bool createDSiWareSave(const char *path, int size) { if(file) { showProgressBar = true; fwrite(&h, sizeof(FATHeader), 1, file); // Write header - for (int i = 0x8000; i < size; i += 0x8000) { + int i = 0; + while (1) { + i += 0x8000; if (i > size) i = size; progressBarLength = i/(size/192); fseek(file, i - 1, SEEK_SET); // Pad rest of the file fputc('\0', file); + if (i == size) break; } fclose(file); showProgressBar = false; @@ -2377,11 +2380,14 @@ int main(int argc, char **argv) { FILE *pFile = fopen(savepath.c_str(), orgsavesize > 0 ? "r+" : "wb"); if (pFile) { showProgressBar = true; - for (u32 i = (orgsavesize>0 ? orgsavesize : 0)+0x8000; i < savesize; i += 0x8000) { + u32 i = (orgsavesize>0 ? orgsavesize : 0); + while (1) { + i += 0x8000; if (i > savesize) i = savesize; progressBarLength = i/(savesize/192); fseek(pFile, i - 1, SEEK_SET); fputc('\0', pFile); + if (i == savesize) break; } fclose(pFile); showProgressBar = false; diff --git a/romsel_dsimenutheme/arm9/source/main.cpp b/romsel_dsimenutheme/arm9/source/main.cpp index f52aca332f..2a421bc657 100644 --- a/romsel_dsimenutheme/arm9/source/main.cpp +++ b/romsel_dsimenutheme/arm9/source/main.cpp @@ -757,11 +757,14 @@ bool createDSiWareSave(const char *path, int size) { if(file) { showProgressBar = true; fwrite(&h, sizeof(FATHeader), 1, file); // Write header - for (int i = 0x8000; i < size; i += 0x8000) { + int i = 0; + while (1) { + i += 0x8000; if (i > size) i = size; progressBarLength = i/(size/192); fseek(file, i - 1, SEEK_SET); // Pad rest of the file fputc('\0', file); + if (i == size) break; } fclose(file); showProgressBar = false; @@ -1540,11 +1543,14 @@ int main(int argc, char **argv) { FILE *pFile = fopen(savepath.c_str(), orgsavesize > 0 ? "r+" : "wb"); if (pFile) { showProgressBar = true; - for (u32 i = (orgsavesize>0 ? orgsavesize : 0)+0x8000; i < savesize; i += 0x8000) { + u32 i = (orgsavesize>0 ? orgsavesize : 0); + while (1) { + i += 0x8000; if (i > savesize) i = savesize; progressBarLength = i/(savesize/192); fseek(pFile, i - 1, SEEK_SET); fputc('\0', pFile); + if (i == savesize) break; } fclose(pFile); showProgressBar = false;