emukidid / swiss-gc

Swiss - The swiss army knife of GameCube homebrew
GNU General Public License v2.0
1.23k stars 93 forks source link

[Feature request]: Have Games Output in 1280x480 instead of 720x480 #827

Closed GK6475 closed 11 months ago

GK6475 commented 11 months ago

Describe the feature

Currently, most GameCube games using 1:1 horizontal scaling have incorrect aspect ratios under 720x480, especially on CRTs, where turning off "Fix Resolution" in GCVideo does not make any difference. Would it be possible to add a (2x1):1 horizontal scaling feature that would 2x integer-scale the horizontal pixels of games, and center the output to 1280x480 instead of 640x480 for example? This would also reduce and/or eliminate 4:2:2 chroma artifacts. For the output, it would be best if it was true 1280x480 instead of just 1440x480, since that would scale better on CRT monitors and analog scalers. If only 1440x480 is possible, though, then that is fine too, and would still eliminate chroma artifacts. I know that the GameCube is capable of larger horizontal resolutions, and can in fact do 1440x1080i through GBI.

Add screenshots

No response

Extrems commented 11 months ago

It's not possible to reduce nor eliminate chroma artifacts.

GK6475 commented 11 months ago

Is it still not possible to double the horizontal resolution of the output for games though?

Extrems commented 11 months ago

It's possible to scale the original framebuffer to double resolution for 480i and 240p, but not 480p. It's not possible to double the actual resolution.

GK6475 commented 11 months ago

Well, is it possible to integer scale into double of the horizontal resolution? Like taking 640x2 and making it 1280? I don't mean for the game itself to render in any higher resolution than its native, I am trying to ask is it possible to have every pixel in 640px stretched to 2x its horizontal size, thereby making 1280px. This is kind of what I mean: 640px Take the above image and stretch the horizontal by exactly 2x: 1280px This would look stretched on a digital display, but through an analog scaler or CRT, it would work perfectly. Here are some real examples of how the chroma could be higher res. I used an HDMI to component converter with a Retrotink:

640px: 640 There are visible chroma artifacts. In particular, red and blue show the lack of horizontal resolution.

1280px: 1280 There are very little chroma artifacts, since the horizontal resolution was 2x integer scaled. 4:2:2 subsampling was performed on 1280px, which looks like 4:4:4 640px if the rendered content is 640px wide. If the Gamecube were to create a signal like this, then the chroma subsampling would have much less effect on the output.

Extrems commented 11 months ago

GCVideo already does this for meeting the minimum pixel clock requirements of HDMI, and the original framebuffer is still YCbCr 4:2:2, so the artifacts would remain.

GK6475 commented 11 months ago

Ok, I had no idea that the framebuffer itself was to blame. In that case, I guess nothing can be done.