libretro / libretro/RetroArch

config overrides only account for base config. Ignores intermediate overrides.

Open
#19,061 0 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

There are 4 levels to every configuration key.

  1. base retroarch.cfg
  2. core CORENAME.cfg
  3. content folder FOLDERNAME.cfg
  4. content name ROMNAME.cfg

If the key/value is set to video_scale_integer_scaling = “0” in retroarch.cfg and CORENAME.cfg sets it to “1”, Setting it back to ”0” in FOLDERNAME.cfg or ROMNAME.cfg will not be saved since it ignores intermediate values. RetroArch assumes the override isn’t an override at all and omits the setting when saving.

This wouldn’t be a problem if the overrides didn’t accumulate and RetroArch only picked a single override file closest to the content but since all are considered, it should be consistent look beyond the base config key when saving the override. Hope that made sense.

Expected behavior

The override value should be compared to an existing value immediately before it, not just the base value.

Steps to reproduce the bug
  1. save a config override named after the core for any key.
  2. save a content override for the same key but uses a base value in retroarch.cfg.
  3. the setting isn’t saved.
Version/Commit

dc8af61

Bisect Results

No response

Present in the nightly version

Yes, this is reproduced in the nightly build

Platform & operating system

macOS Tahoe 26.5 (25F71)

Affected Cores

No response

Environment information

No response

Relevant log output

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 how RetroArch saves overrides across retroarch.cfg, CORENAME.cfg, FOLDERNAME.cfg, and ROMNAME.cfg. Reproduce the described sequence with video_scale_integer_scaling, then verify that saving compares against the immediately preceding override value rather than only the base configuration.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.