#19215·RetroArch

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

Author: norman-zonCreated Jul 16, 2026Updated Sep 18, 2026

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

bash
https://gist.github.com/norman-zon/bdf210e78a2deccef96bd45cb0c656a2