Automatic custom aspect ratio switching..?

I’m assuming that I’ve done a horrible job of explaining myself thus far and decided to start a new topic to try to address this issue. Apologies if I’m just needlessly repeating myself, but I think this issue deserves some attention and I’m not sure of the best way to go about this.

Problem: choosing “integer scale” still results in scaling artifacts with PSX emulators, occasionally. Choosing integer scale and setting a custom AR should completely eliminate scaling artifacts at all times; this is the expected behavior from choosing integer scale. The problem is that PSX games use multiple resolutions and will sometimes switch resolutions mid-game, on the fly.

Using the example of FFVII, the game switches from a resolution of 320x240 to 320x224 when displaying the overworld screen. Currently, if the user selects integer scale ON and sets it to 5x5, then the custom AR is always 1600x1200, regardless of the game’s current resolution. When the game switches to a resolution of 320x224, it still gets scaled to 1600x1200, which results in scaling artifacts on the Y axis.

To solve this, we need “automatic custom aspect ratio switching.” Instead of just taking 320x240 and scaling it by the user-selected integer scale factor, Retroarch should automatically detect the current resolution of the game, and automatically adjust the custom aspect ratio accordingly. Returning to the example of FFVII, enabling “automatic custom aspect ratio switching” and selecting an integer scale factor of 5x5 should cause the aspect ratio to automatically switch to 1600x1120 when the game switches to the overworld screen, then automatically switch back to 1600x1200 when the game’s resolution switches back to 320x240. This would ensure pixel perfect output at all times.

3 Likes

I don’t think the problem lies within RetroArch’s integer_scaling. The problem takes place before RetroArch attempts to scale up the picture (it’s present at 1x as well). The problem is the stretching the PSX cores are doing to all those native resolutions, they stretch them to whatever resolution they decide to run the game at. In your example, 224 results in 240, but you want it to keep it 224. I know the reason the PSX cores are doing this is to maintain the aspect ratio consistent across resolution changes, but that is the source of all the scaling artifacts you’re seeing.

Nevertheless, the solution you propose (switching resolutions to each native ones), is one way to fix the problem, another one would be padding all resolutions to the biggest one (which wouldn’t be as good as the former). In all the cases, I believe it would have to be implemented at the cores level. My two cents.

2 Likes

Thanks for shedding some light on this issue!

If this is a problem that needs to be addressed within the cores, where should I post a feature request? Do you happen to know?

I’d much rather have the AR change during gameplay than have ugly scaling artifacts that interfere with scanlines/shaders. I know that the Bladesoft GPU plugin for PSX emulators allows for this, but it requires a very powerful machine to run.

Re: padding vs switching resolutions; doesn’t padding still result in scaling artifacts? If we take 320x240 and pad it to 364x240 (for example), then wouldn’t you still get scaling artifacts when you scale it up to 1600x1200 or whatever?

If the game scaled 5 times has 1600x1200, 364x240 would be 1456x960 plus black bars: (72 + 1456 + 72)x(120 + 960 + 120). In the end everything would run at 1600x1200. Or, if the game runs at 1820x1200, 320x240 would be (110 + 1600 + 110)x1200 so 364x240 can run at x5 as well (1820x1200).

I suppose it would be necessary to open two separated issues on github, one for Beetle PSX (HW) and another one for PCSX ReARMed. But it never hurts to post on he thread on this forum to gain more exposure:

1 Like

Done and done. Hopefully this gets some attention soon :slight_smile:

2 Likes

Thank you for submitting these requests. Did anything come of it?

AFAIK it’s still an ongoing discussion @ Github with about a billion posts by now… I took a break from gaming for a while due to some major life events, still catching up on all that has happened since then.