mGBA: game won't save — how to fix GBA save types and RTC
mGBA can emulate every Game Boy Advance save method — but only if the save type is set correctly for each game. A wrong setting means the game silently discards every save, or the save file exists but loads to a blank screen.
You hit one of these:
- The in-game "Save" option works but the next time you open mGBA the save is gone
- The game shows "The data could not be read" or takes you back to a new-game screen on load
- Pokémon FireRed/Emerald/Ruby/Sapphire — save works but the clock is always wrong or the Berry glitch fires
- The
.savfile appears on disk but mGBA ignores it or loads blank data - Saving works in one session but vanishes after you close and reopen the emulator
Why this happens: Original GBA cartridges used four different save hardware types (SRAM, Flash 64K, Flash 128K, EEPROM 512B/8KB). mGBA defaults to automatic detection, which works for most games but occasionally guesses wrong — especially on licensed re-releases, ROM hacks, or less-common titles. When the detected type doesn't match what the game writes, bytes go to the wrong addresses and the save corrupts or disappears. Real-time clock (RTC) games like Pokémon Ruby/Sapphire/Emerald add a second layer: the clock must also be set once inside the emulator or time-dependent events break.
Re-test after completing each step.
Solutions
solution #1485
Override the automatic save-type detection and manually set the correct type for your game. This resolves the majority of GBA save failures.
- Open mGBA and load your game. Go to Tools → Game Overrides (on Windows/Linux) or the equivalent platform menu. A dialog opens with per-game settings.
- Look up the correct save type for your ROM. The most reliable source is the mGBA compatibility list or the No-Intro database. Common save types by game:
- Pokémon FireRed / LeafGreen: Flash 128K
- Pokémon Ruby / Sapphire / Emerald: Flash 128K + RTC
- Pokémon Mystery Dungeon: Flash 64K
- The Legend of Zelda: A Link to the Past / Four Swords: SRAM
- Metroid Fusion / Zero Mission: Flash 128K
- Golden Sun: Flash 64K
- Most other titles: SRAM (safest default if unsure)
- In the Game Overrides dialog, change the Save Type dropdown to the correct type for your game. Click OK/Save to apply the override.
- Delete the old corrupted save file. The
.savfile lives in the same folder as your ROM (or in the Save Files folder specified in mGBA settings). Delete or rename it — a corrupted save from the wrong type cannot be repaired; you must start fresh. - Reload the game and make a new save. Close mGBA completely, reopen it, load the game, and save at an in-game save point. Close mGBA again and reopen to confirm the save loads correctly.
Note: if the game continues to fail with Flash 128K, try Flash 64K. Some translated or patched ROMs were built against a different flash size than the original cartridge.
solution #1486
For Pokémon Ruby, Sapphire, and Emerald (and any other game using the real-time clock), you must also enable and set the RTC inside mGBA or time-dependent events will break and the Berry glitch will corrupt your save.
- Confirm RTC is enabled for your game. In Tools → Game Overrides, make sure Real Time Clock is checked (enabled). This setting is off by default for most games and must be turned on per title.
- Set the in-game clock. Pokémon Ruby/Sapphire/Emerald prompt you to set the clock on first boot after a fresh save. If you are loading an old save, go to the Pokémon Centre PC in-game and talk to the Clock Reset app, or simply start a new save with RTC enabled and set it at the intro screen.
- Verify the Berry glitch is not already triggered. On Ruby/Sapphire the Berry glitch fires when the internal clock runs backwards or is stuck at zero. If you see a message about Berry growth being disrupted, you will need to run the official Nintendo Berry Program patch (a separate GBA ROM distributed by Nintendo). Search for "Berry Glitch Fix" on Pokémon fan wikis — mGBA alone cannot repair a glitch already saved.
- For Pokémon Emerald: RTC works slightly differently — the game uses it for the cycling of day/night, Pokémon appearances, and lottery events. With RTC enabled and the clock set correctly these should all work in real time. If events still seem frozen, check mGBA → Emulation → Sync to System Clock is enabled.
- Save type for Pokémon Ruby/Sapphire/Emerald must be Flash 128K (see S1). Having RTC enabled but the wrong save type will still corrupt the save. Confirm both settings are correct in Game Overrides before starting a new save.
solution #1487
If saves write but disappear between sessions, mGBA is saving to a temporary or non-persistent path, or the save directory changed between versions. Set an explicit, permanent save directory.
- Open mGBA → Preferences (Tools → Settings on Windows/Linux) → Paths. Find the Saves (or "Save Files") field. If it is blank or set to "same directory as ROM," this is the likely source of the problem — especially if your ROM folder is on an external drive, a cloud-synced folder, or has restricted write permissions.
- Set a permanent save directory to a folder your user account fully owns: e.g.
C:\Users\YourName\Documents\mGBA\Saveson Windows, or~/mGBA/Saveson Linux/Mac. Create the folder if it doesn't exist, then paste the path into the Saves field and click OK/Apply. - Copy any existing .sav files from the old location to the new directory. The save filename matches the ROM filename (e.g.
PokemonEmerald.sav). If you have multiple copies, take the newest one. - Reload the game and verify the save loads. Make a new save, close mGBA, reopen, and confirm the save survives the restart. If it does, the path was the issue.
- Check for antivirus or cloud-sync interference. Dropbox, OneDrive, and Google Drive sometimes lock
.savfiles mid-write, causing the save to appear as zero bytes. If your save directory is inside a synced folder, move it outside the sync boundary.
Comments (0)
Sign in to_leave_comment