diff --git a/CHANGES b/CHANGES index fd5c56615..277533103 100644 --- a/CHANGES +++ b/CHANGES @@ -68,6 +68,7 @@ Bugfixes: - SDL: Fix game crash check - SDL: Fix race condition with audio thread when starting - SDL: Fix showing version number + - SDL: Fix cheats not loading - Test: Fix crash when loading invalid file - Test: Fix crash when fuzzing fails to load a file - Test: Don't rely on core for frames elapsed diff --git a/src/platform/sdl/main.c b/src/platform/sdl/main.c index d949951df..d9dbfe995 100644 --- a/src/platform/sdl/main.c +++ b/src/platform/sdl/main.c @@ -14,6 +14,7 @@ #include "feature/editline/cli-el-backend.h" #endif +#include #include #include #include @@ -97,6 +98,16 @@ int main(int argc, char** argv) { return 1; } + struct mCheatDevice* device = NULL; + if (args.cheatsFile && (device = renderer.core->cheatDevice(renderer.core))) { + struct VFile* vf = VFileOpen(args.cheatsFile, O_RDONLY); + if (vf) { + mCheatDeviceClear(device); + mCheatParseFile(device, vf); + vf->close(vf); + } + } + mInputMapInit(&renderer.core->inputMap, &GBAInputInfo); mCoreInitConfig(renderer.core, PORT); applyArguments(&args, &subparser, &renderer.core->config); @@ -141,6 +152,10 @@ int main(int argc, char** argv) { mSDLDetachPlayer(&renderer.events, &renderer.player); mInputMapDeinit(&renderer.core->inputMap); + if (device) { + mCheatDeviceDestroy(device); + } + mSDLDeinit(&renderer); freeArguments(&args);