libretro / libretro/RetroArch

Core-wide core options (.opt) not saved on exit on Android; only per-game "Save Game Options" persists

Open
#19,215 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

Is there an existing issue for this?
  • This is a bug in RetroArch frontend
  • I have searched the existing issues
Description

On Android, RetroArch reads a core-wide core-options file
(config/Mupen64Plus-Next/Mupen64Plus-Next.opt) at load, but never writes it back
when options are changed and content is closed/quit — even with "Save
Configuration on Exit" ON and "Use Global Core Options File" OFF. As a result
GLideN64 settings for Mupen64Plus-Next appear to reset, because no change made
via the menu is ever persisted to the core-wide file.
Confirmed with a minimal repro (below): an existing Mupen64Plus-Next.opt with
43screensize="1280x960", no per-game override present. Changing 43screensize to
640x480 in the menu and doing Close Content leaves the file unchanged
("1280x960"). Only "Manage Core Options -> Save Game Options" (a synchronous
write to a per-game .opt) persists anything. The folder is writable
(per-game .opt files save there fine), so this is not a permissions issue. A
debug log of the close shows content teardown with no config/core-options write.

Expected behavior

Changing a core option in the menu and then closing content / quitting should
write config/Mupen64Plus-Next/Mupen64Plus-Next.opt (global toggle OFF), so
changes persist across launches for all content run with that core.

Steps to reproduce the bug
  1. Settings -> Configuration -> "Save Configuration on Exit" = ON,
    "Use Global Core Options File" = OFF.
  2. Ensure config/Mupen64Plus-Next/ contains ONLY Mupen64Plus-Next.opt
    (no per-game .opt), with mupen64plus-43screensize = "1280x960".
  3. Load an N64 game (Mupen64Plus-Next). Log confirms the value is read: 1280x960.
  4. Core Options -> Options -> set 4:3 resolution to 640x480.
  5. Main Menu -> Close Content (also reproduced via Quit RetroArch).
  6. Open Mupen64Plus-Next.opt -> mupen64plus-43screensize is STILL "1280x960".
    The core-wide file was not rewritten.
  7. Contrast: Manage Core Options -> Save Game Options DOES create/persist a
    per-game .opt, confirming writes work and only the automatic
    core-wide save fails.
Version/Commit

1.22.2 (Git 69a4f0e), built Nov 20 2025

Bisect Results

Unknown — I have not tested older versions to identify when it broke.

Present in the nightly version

I don't know

Platform & operating system

Android 13, Retroid Pocket 4 Pro (GPU Mali-G77 MC9, OpenGL ES 3.2)

Affected Cores

Mupen64Plus-Next (GLES3 build: mupen64plus_next_gles3_libretro_android.so).
Note: this is a frontend save-path issue, not a core bug — RetroArch owns
writing .opt files.

Environment information
  • "Use Global Core Options File" = OFF; "Save Configuration on Exit" = ON
  • Config/playlists on internal storage: /storage/emulated/0/RetroArch/
  • System/saves/states on SD card: /storage/FAE7-6CC3/EMULATION/EMULATOR_DATA/RetroArch/
  • Overrides active (log: "[Override] Redirecting save file…")
  • Per-game .opt saves fine (synchronous); core-wide .opt is read but never written on exit.
Relevant log output
https://gist.github.com/norman-zon/bdf210e78a2deccef96bd45cb0c656a2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing RetroArch's core-options handling from content teardown and the automatic core-wide save path, using the linked debug log and the existing Manage Core Options → Save Game Options path as references. Confirm the Android case writes Mupen64Plus-Next/Mupen64Plus-Next.opt on content close or quit while preserving the existing per-game save behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, c
Domain
backend, mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.