Skip to content

Commit cdfb97c

Browse files
authored
allow sram size mismatch (#290)
1 parent 993503d commit cdfb97c

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/States.cpp

+9-3
Original file line numberDiff line numberDiff line change
@@ -495,17 +495,23 @@ void States::loadSRAM(libretro::Core* core)
495495
void* data = util::loadFile(_logger, sramPath, &fileSize);
496496
if (data != NULL)
497497
{
498+
void* memory = core->getMemoryData(RETRO_MEMORY_SAVE_RAM);
498499
if (fileSize == sramSize)
499500
{
500-
void* memory = core->getMemoryData(RETRO_MEMORY_SAVE_RAM);
501-
memcpy(memory, data, sramSize);
502501
_logger->info(TAG "Loaded %lu bytes of Save RAM from disk", fileSize);
503502
}
503+
else if (fileSize <= sramSize)
504+
{
505+
_logger->warn(TAG "Loaded %lu bytes of Save RAM from disk, wanted %lu", fileSize, sramSize);
506+
}
504507
else
505508
{
506-
_logger->error(TAG "Save RAM size mismatch, wanted %lu, got %lu from disk", sramSize, fileSize);
509+
_logger->warn(TAG "Loaded %lu bytes of Save RAM from disk, truncated from %lu", sramSize, fileSize);
510+
fileSize = sramSize;
507511
}
508512

513+
memcpy(memory, data, fileSize);
514+
509515
if (_saveInterval > 0)
510516
_lastSaveData = data;
511517
else

0 commit comments

Comments
 (0)