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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions