Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Output 640x480? #17

Closed
FiZiX opened this issue May 24, 2018 · 10 comments
Closed

Output 640x480? #17

FiZiX opened this issue May 24, 2018 · 10 comments

Comments

@FiZiX
Copy link

FiZiX commented May 24, 2018

Hello, I'm using a plug-n-play GameCube HDMI adapter (GCPlug). I'm then using a simple HDMI to DVI adapter to output to a 4:3 LCD computer monitor. Is there any way to force GCVideo to output 640x480 instead of 720x480 so it displays nicely on my 4:3 monitor?

@ikorb
Copy link
Owner

ikorb commented May 24, 2018

No, GCVideo does not implement any horizontal scaling.

@ikorb ikorb closed this as completed May 24, 2018
@FiZiX
Copy link
Author

FiZiX commented May 25, 2018

I'm sure this is due to a lack of understanding on my part but I didn't think I was asking for horizontal scaling. Doesn't the GameCube output 640x480 natively? If so, couldn't GCVideo output at the same resolution without additional processing?

@justinvh
Copy link

justinvh commented May 25, 2018

I'm sure this is due to a lack of understanding on my part but I didn't think I was asking for horizontal scaling. Doesn't the GameCube output 640x480 natively? If so, couldn't GCVideo output at the same resolution without additional processing?

Just to help you out a bit @FiZiX -- NTSC DV is by definition is 720x480 and the GameCube natively outputs 720x480 (NTSC). As for the comment on 640x480. The GPU framebuffer limits were 640x528 (RGB8Z24/RGBA6Z24), 640x264 (RGB565Z16 MSAA), or 1024x640 (YUV 8-bit 4:2:0). So, what you're asking for is horizontal scaling since the actual encoding is 720x480.

@FiZiX
Copy link
Author

FiZiX commented May 25, 2018

@justinvh Thanks for the explanation. I guess my confusion stems from the fact that GCVideo often says the input resolution is 640x480 but the output 720x480. This can be seen in SWISS and 240p Test Suite. Of course, these are both homebrew apps so maybe official software doesn't use these resolutions.

@ikorb
Copy link
Owner

ikorb commented May 25, 2018

Official software uses a variety of resolutions (e.g. 666x448 in Mario Kart), but simply dropping the left and right part of the picture to get a 640x480 image would result in a distorted image - 640x480 is commonly used with square pixels, but the Gamecube's pixels are rectangular.

@ChrisK2
Copy link

ChrisK2 commented Jul 30, 2019

Okay, I'm running into a similar issue using a GameCube HDMI Adapter. As I understood it, you are padding (adding black pixels to whatever comes from the gamecube) to get to a horizontal resolution of 720px. Let's say the GameCube outputs 640x480, which is expected to be displayed in 4:3. But due to the added black bars, the Image is not 4:3 anymore. With my TV I now have two options: Squeeze it to 4:3 or stretch it to 16:9, since the resolution 720x480px is always expected to be scaled to 4:3 or 16:9.

Game renders 4:3, TV displays at 4:3, result is a squeezed image:
IMG_6479

Game renders 4:3, TV displays at 16:9, result is a stretched image:
IMG_6480

Game renders 16:9, TV displays at 16:9, result is a squeezed image:
IMG_6481

Since my TV has no option to display the image aspect-ratio as-is, it's impossible to have an image with a correct aspect-ratio.

So, with scaling not possible, the only way to fix this would be an option to output the resolution from the gamecube as-is (and hope the TVs can deal with it).

@ikorb
Copy link
Owner

ikorb commented Jul 30, 2019

"Let's say the GameCube outputs 640x480, which is expected to be displayed in 4:3." - but it does not, the hardware uses BT.601 signal timings, which means it outputs 720x480, expected to be displayed in 4:3 or 16:9. The game may choose to render some of them black using a hardware optimization to reduce the required fill rate, which shows up as a lower input resolution, but unless the game was coded incorrectly, this does not change the pixel aspect ratio (= the rectangular shape of the pixels).

Try using the composite output on the same TV, you should get the same result as in the first picture.

@ChrisK2
Copy link

ChrisK2 commented Jul 31, 2019

I did, and indeed got similar results:

IMG_6487

IMG_6488

So my follow up question now is: I don't remember the aspect ratio being off on a CRT. Does a CRT somehow crop off the empty areas, which modern composite ADCs don't do? Or did I just never notice the AR being off?

@ikorb
Copy link
Owner

ikorb commented Jul 31, 2019

You either had a misadjusted CRT or you never noticed - a curved CRT tends to hide minor geometry errors. And yes, consumer CRT TVs almost always cropped the outer edges of the picture, it's called overscan. It's also the reason why Gamecube games tend to use black borders all around, they rendered a slightly smaller image to save resources because they knew the player would likely never see that part of the image anyway.

@patters-match
Copy link

patters-match commented Jun 25, 2020

I just discovered that Swiss allows you to override horizontal resolution, not only vertical. You can force a game such as Zelda Wind Waker which has vertical black bars in its native res (660x480p) to 704x480p which is the minimum size that results in a full frame picture at 16:9 on my TV. Looking carefully at bitmap artwork such as the Zelda title logo I don't see any obvious degradation or scaling artifacts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants