Preserve cheats when OS_ResetSystem is used, move temporary save buffer to main memory

This commit is contained in:
Gericom
2026-03-07 13:49:51 +01:00
parent 1038a3d9cf
commit 8c8f36f5c6
14 changed files with 153 additions and 96 deletions

View File

@@ -205,6 +205,14 @@ extern "C" void loaderMain()
}
}
if (gLoaderHeader.v3.cheats != nullptr && gLoaderHeader.v3.cheats->numberOfCheats != 0)
{
// Copy cheats to vram
auto cheats = (pload_cheats_t*)malloc(gLoaderHeader.v3.cheats->length);
memcpy(cheats, gLoaderHeader.v3.cheats, gLoaderHeader.v3.cheats->length);
sLoader.SetCheats(cheats);
}
if (multiboot)
{
LOG_DEBUG("Multiboot\n");
@@ -219,19 +227,10 @@ extern "C" void loaderMain()
}
else
{
pload_cheats_t* cheats = nullptr;
if (gLoaderHeader.v3.cheats != nullptr && gLoaderHeader.v3.cheats->numberOfCheats != 0)
{
// Copy cheats to vram
cheats = (pload_cheats_t*)malloc(gLoaderHeader.v3.cheats->length);
memcpy(cheats, gLoaderHeader.v3.cheats, gLoaderHeader.v3.cheats->length);
}
sLoader.SetRomPath(gLoaderHeader.loadParams.romPath);
handleSavePath();
sLoader.SetArguments(gLoaderHeader.loadParams.arguments, gLoaderHeader.loadParams.argumentsLength);
sLoader.SetLauncherPath(gLoaderHeader.v2.launcherPath);
sLoader.SetCheats(cheats);
sLoader.Load(BootMode::Normal);
}