diff --git a/src/backend/core/mmio/PIF.cpp b/src/backend/core/mmio/PIF.cpp index bb94b296..cf344359 100644 --- a/src/backend/core/mmio/PIF.cpp +++ b/src/backend/core/mmio/PIF.cpp @@ -59,29 +59,31 @@ FORCE_INLINE size_t getSaveSize(SaveType saveType) { } void PIF::LoadEeprom(SaveType saveType, fs::path path) { - if (eeprom) - free(eeprom); + if(saveType == SAVE_EEPROM_16k || saveType == SAVE_EEPROM_4k) { + if (eeprom) + free(eeprom); - eepromSize = getSaveSize(saveType); - eeprom = (u8*)calloc(eepromSize, 1); - eepromPath = path.replace_extension(".eeprom").string(); - FILE* f = fopen(eepromPath.c_str(), "rb"); - if (!f) { - f = fopen(eepromPath.c_str(), "wb"); - fwrite(eeprom, 1, eepromSize, f); + eepromSize = getSaveSize(saveType); + eeprom = (u8 *) calloc(eepromSize, 1); + eepromPath = path.replace_extension(".eeprom").string(); + FILE *f = fopen(eepromPath.c_str(), "rb"); + if (!f) { + f = fopen(eepromPath.c_str(), "wb"); + fwrite(eeprom, 1, eepromSize, f); + fclose(f); + f = fopen(eepromPath.c_str(), "rb"); + } + + fseek(f, 0, SEEK_END); + size_t actualSize = ftell(f); + fseek(f, 0, SEEK_SET); + if (actualSize != eepromSize) { + Util::panic("Corrupt eeprom!"); + } + + fread(eeprom, 1, eepromSize, f); fclose(f); - f = fopen(eepromPath.c_str(), "rb"); } - - fseek(f, 0, SEEK_END); - size_t actualSize = ftell(f); - fseek(f, 0, SEEK_SET); - if (actualSize != eepromSize) { - Util::panic("Corrupt eeprom!"); - } - - fread(eeprom, 1, eepromSize, f); - fclose(f); } PIF::~PIF() {