libretro / libretro/RetroArch

Custom Aspect Ratios are not initialized to integer values when Integer Scale is ON.

Open
#13,276 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

Description

Difficult one to explain briefly. With Integer Scale ON, switching from any of the automated aspect ratios to Custom, the Custom Aspect Ratio (Width) and Custom Aspect Ratio (Height) values are not initialized to integer values, and changing them adds/subtracts the current core width/height from that initial value. This makes it impossible to actually get to an integer value without turning off integer scale and navigating to one manually.

Expected behavior

If Integer Scale is ON, and Aspect Ratio is Custom, RetroArch should do one of the following, probably option b):

a) immediately initialize the Width and Height to the nearest integer multiple.

b) wait until the first time the user changes the Width/Height values and then initialize them to the nearest integer value.

The reason for b) over a) is that if a user is just cycling through the Aspect Ratios, they may not expect their Custom Aspect Ratio settings to be overwritten. They should probably be preserved until the user intentionally changes them.

Actual behavior

The value is just populated from the config file with no consideration for whether they are sensible for this core. They are never initialized to an appropriate integer multiple for the current running content.

Steps to reproduce the bug
  1. Load some content. A good test is a Mega Drive game in Genesis Plus GX or PicoDrive.
  2. Set the Aspect Ratio to Custom and configure a Custom Aspect Ratio with Integer Scale ON, e.g. 1280 (4x) and 896 (4x).
  3. Set the Aspect Ratio back to Core provided.
  4. Load some content which your Custom Aspect Ratio is not an integer scale for. e.g. Go from 224-line Mega Drive to 192-line Master System.
  5. Make sure Aspect Ratio is still Core provided and Integer Scale is ON, no overrides messing with your settings.
  6. Switch from Core provided to Custom. Observe that the new values are not an integer multiple of the new content, e.g. 1280 (5x) and 896 (not an integer multiple of 192).
  7. Try changing the Custom Aspect Ratio (Height). e.g. For Master System, it will change in units of 192, but because the initial value of 896 was never a multiple of 192, you will only be adding or subtracting 192 from 896, Going down, that's 704, 512, 320, 128.
Bisect Results

I went back as far as I still have builds around and this occurs in all versions I've got.

Version/Commit
  • RetroArch: 1.9.13 4ffe9dc
Environment information
  • OS: Wii U
  • Compiler: libretro-build-wiiu Docker image

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

No source file or test is named. Start by reproducing the issue through RetroArch's video settings with Integer Scale enabled, comparing Core provided and Custom aspect ratios across content with different heights. Done means changing to Custom preserves values until an intentional edit and produces integer-multiple dimensions for the current content.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
computer-graphics, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
40/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.