What are save states?
Save states are snapshots of the emulator’s entire memory at a specific moment:- Instant saves - Save anywhere, even in games without built-in save systems
- Serialized memory - Captures all RAM, registers, and core state
- Slot-based - Store up to 5 manual saves + 1 autosave per game
- Independent of in-game saves - Save states don’t interfere with battery saves (SRAM)
Save states are stored per-ROM, identified by the game’s content hash. Moving or renaming a ROM file won’t lose your saves.
Quick save and load
The fastest way to save/load:Keyboard shortcuts
| Shortcut | Action |
|---|---|
F5 | Save state to current slot |
F9 | Load state from current slot |
Save state slots
Slot system
GameLord provides 5 manual save slots per game:- Slots 0-4: Manual saves accessible via quick save/load
- Slot 99: Reserved for autosave (see below)
Selecting a slot
Selecting a slot
- Open the save state menu in the game window overlay
- Click a slot number (0-4) to select it
- The selected slot is highlighted
- Press F5 to save or F9 to load that slot
Overwriting slots
Overwriting slots
- Saving to an occupied slot overwrites the previous state
- No confirmation dialog - saves are instant
- Use different slots to maintain multiple save points
Empty slots
Empty slots
- Attempting to load an empty slot does nothing
- No error message - the game continues running
- Save to a slot first before loading
Slot management UI
The save state menu shows:- Slot numbers (0-4) as clickable buttons
- Selected slot highlighted with accent color
- Save/Load buttons trigger actions on the selected slot
- Keyboard hints (F5/F9) shown on buttons
Autosave on close
GameLord automatically saves your progress when you close the game window:Autosave (slot 99) is separate from manual saves (slots 0-4). Loading a manual save doesn’t affect the autosave.
Resume on launch
When launching a game that has an autosave:- GameLord checks for slot 99 existence
- Displays a resume prompt: “Continue from last session or start fresh?”
- Resume - Loads autosave state and continues
- Start Fresh - Launches from the beginning (autosave is preserved)
SRAM (battery saves)
SRAM represents the game’s built-in save system (battery-backed saves):- Separate from save states - SRAM is the “real” in-game save
- Automatic persistence - Synced to disk when you close the game
- Per-ROM storage - Saved to
<userData>/saves/<romName>.srm - Preserved across sessions - Works exactly like original hardware
Save states capture SRAM as part of the full memory snapshot. Loading a save state also restores SRAM to its state at that moment.
When SRAM is saved
GameLord writes SRAM in two scenarios:- On close - When you close the game window (part of shutdown sequence)
- Manual request - Via API call (future feature)
Save data storage
Your save data is stored in the user data directory:- Save states - One directory per ROM (named by ROM basename)
- SRAM files - Flat structure, one
.srmfile per ROM - Portable - Safe to back up, transfer to another machine, or version control
Best practices
Use save states strategically
Use save states strategically
- Save before difficult sections (boss fights, tricky platforming)
- Create multiple saves at key story points
- Don’t rely on a single slot - use 2-3 for safety
- Autosave is great for “pick up where I left off” but not for branching
Combine save states and in-game saves
Combine save states and in-game saves
- Use in-game saves (SRAM) for long-term progress
- Use save states for short-term experimentation
- In-game saves survive save state loads (unless you load an old state)
Back up your saves
Back up your saves
- Save states and SRAM are stored as files on disk
- Copy the
savestates/andsaves/directories to back up - Restore by copying files back to
<userData>/
Serialization details
For developers and advanced users:Save state format
GameLord uses the libretro core’s serialization API:retro_serialize_size()- Query required buffer sizeretro_serialize()- Serialize core state to bufferretro_unserialize()- Deserialize buffer back to core state
- CPU registers (PC, SP, A, X, Y, flags, etc.)
- RAM (work RAM, video RAM, audio RAM)
- PPU/GPU state (scanline, cycle, registers)
- APU/SPU state (audio channels, envelopes)
- Mapper state (bank switching, IRQ counters)
- SRAM snapshot (at the moment of save)
SRAM format
SRAM files are raw binary dumps:- Exact format depends on the game cartridge
- Typically 8KB-32KB for NES/SNES games
- Larger for games with battery-backed EEPROM or FRAM
- Compatible with other emulators (e.g., RetroArch, standalone cores)
GameLord’s
.srm files are interchangeable with other libretro frontends. You can transfer saves between emulators.Troubleshooting
Save state doesn't load
Save state doesn't load
- Verify the slot actually has a saved state (check filesystem)
- Ensure you’re loading the correct ROM (saves are per-ROM)
- Try loading a different slot to rule out corruption
- Check logs for serialization errors (Help > Toggle Developer Tools)
In-game save doesn't persist
In-game save doesn't persist
- SRAM is only written on clean close (not force-quit or crash)
- Check that
<userData>/saves/directory exists and is writable - Verify the core supports SRAM (not all games have battery saves)
- Look for
.srmfile creation after closing the game
Autosave not working
Autosave not working
- Autosave uses slot 99 (separate from manual slots 0-4)
- Check
<userData>/savestates/<romName>/autosave.savexists - Autosave is only created on clean close (shutdown sequence)
- Force-quitting or crashes skip autosave creation
Lost progress after crash
Lost progress after crash
- Crashes prevent SRAM and autosave writes
- Always use manual save states (F5) in addition to in-game saves
- Save frequently to multiple slots for redundancy
- Consider enabling autosave more frequently (future feature)