Core-wide core options (.opt) not saved on exit on Android; only per-game "Save Game Options" persists
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
- Settings -> Configuration -> "Save Configuration on Exit" = ON,
"Use Global Core Options File" = OFF. - Ensure config/Mupen64Plus-Next/ contains ONLY Mupen64Plus-Next.opt
(no per-game .opt), with mupen64plus-43screensize = "1280x960". - Load an N64 game (Mupen64Plus-Next). Log confirms the value is read: 1280x960.
- Core Options -> Options -> set 4:3 resolution to 640x480.
- Main Menu -> Close Content (also reproduced via Quit RetroArch).
- Open Mupen64Plus-Next.opt -> mupen64plus-43screensize is STILL "1280x960".
The core-wide file was not rewritten. - 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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