Skip to content

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

Description

@norman-zon

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions