Custom Aspect Ratios are not initialized to integer values when Integer Scale is ON.
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
- Load some content. A good test is a Mega Drive game in Genesis Plus GX or PicoDrive.
- Set the Aspect Ratio to Custom and configure a Custom Aspect Ratio with Integer Scale ON, e.g. 1280 (4x) and 896 (4x).
- Set the Aspect Ratio back to Core provided.
- 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.
- Make sure Aspect Ratio is still Core provided and Integer Scale is ON, no overrides messing with your settings.
- 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).
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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