Hey guys,
Are you assuming 1:1 pixel aspect (or 1.33:1 in anamorphic widescreen) when you're copying from external to the final window? (Referring to NTSC/480p here, obviously PAL is different). If so, that's actually incorrect. The Wii does *not* display square pixels over NTSC or 480p.
Problem is, a game's graphics engine programmer who knows about the proper pixel aspect will adjust his render aspect to compensate for the slightly non-square pixels. If you then assume 1:1 pixels and a 4:3 displayed image (or similarly for widescreen) in Dolphin, his game will look squished, because you're not acting like the hardware did.
If you want the actual numbers for a Wii...
NTSC mode, assuming a 640x480 frame:
- Fullscreen pixel aspect is 0.9421875:1
- Widescreen pixel aspect is 1.25625:1
- Fullscreen image aspect is 1.25625:1
- Widescreen image aspect is 1.675:1
All 640x480@60hz modes are roughly the same. 480p and EURGB60 are a hair wider, but not enough to matter if you want to keep it down to just the two adjustments I'm talking about here. I can regurgitate those numbers too if anyone does care.
In PAL, assuming a 640x528 frame:
- Fullscreen pixel aspect is 1.158125:1
- Widescreen pixel aspect is 1:540625:1
- Fullscreen image aspect is 1.40378:1
- Widescreen image aspect is 1.86742:1
Note that PAL had a totally wrong aspect to begin with, even before adjusting for pixel aspect, since the Wii frame buffer can't hold the full 640x576. PAL images on a Wii wouldn't be 1.3333:1 or 1.7778:1, even with square pixels.
I think there are some display modes I'm not accounting for here, which use slightly different pixel or image aspects. These are just the ones I know about. I may be thinking of PS2, actually, so maybe this really is all.
So... what to do?
Easiest solution is to say screw it and deal with the slightly-wide images. I can't get behind this option.
Next up, the so-so solution on the user's side is to switch to windowed mode, enable stretch-to-fit, and diddle the window until the aspect looks right. Not a great solution, but it works. Still, full-screen mode is so much nicer...
So, for full-screen, I think the easiest fix in code would be to offer a simple, numerical, advanced-user-style, "scale to screen" setting, with two factors, one for horizontal and one for vertical. Less than 1.0 pillarboxes or letterboxes, and more than 1.0 crops. That gives complete control to those who know how to use it.
Slightly better would be to add a dropdown next to those numbers with a few standard presets, plus "Custom" for those who want to enter the numbers by hand. The presets could be written in For-Dummies style, e.g. "Fix for Slightly Too Wide / Fix for Slightly Too Tall / Custom Fix".
I'm not sure there's a super-duper fix-all solution. A lot of programmers never try to accommodate the oddball pixel aspects, so you can't just fix it across the board with one change. I think a manual option is the only good choice.
Anyway, food for thought. It's non-critical, but I figured I'd throw it out there and see if anyone thinks it's an interesting problem to solve.
Are you assuming 1:1 pixel aspect (or 1.33:1 in anamorphic widescreen) when you're copying from external to the final window? (Referring to NTSC/480p here, obviously PAL is different). If so, that's actually incorrect. The Wii does *not* display square pixels over NTSC or 480p.
Problem is, a game's graphics engine programmer who knows about the proper pixel aspect will adjust his render aspect to compensate for the slightly non-square pixels. If you then assume 1:1 pixels and a 4:3 displayed image (or similarly for widescreen) in Dolphin, his game will look squished, because you're not acting like the hardware did.
If you want the actual numbers for a Wii...
NTSC mode, assuming a 640x480 frame:
- Fullscreen pixel aspect is 0.9421875:1
- Widescreen pixel aspect is 1.25625:1
- Fullscreen image aspect is 1.25625:1
- Widescreen image aspect is 1.675:1
All 640x480@60hz modes are roughly the same. 480p and EURGB60 are a hair wider, but not enough to matter if you want to keep it down to just the two adjustments I'm talking about here. I can regurgitate those numbers too if anyone does care.
In PAL, assuming a 640x528 frame:
- Fullscreen pixel aspect is 1.158125:1
- Widescreen pixel aspect is 1:540625:1
- Fullscreen image aspect is 1.40378:1
- Widescreen image aspect is 1.86742:1
Note that PAL had a totally wrong aspect to begin with, even before adjusting for pixel aspect, since the Wii frame buffer can't hold the full 640x576. PAL images on a Wii wouldn't be 1.3333:1 or 1.7778:1, even with square pixels.
I think there are some display modes I'm not accounting for here, which use slightly different pixel or image aspects. These are just the ones I know about. I may be thinking of PS2, actually, so maybe this really is all.
So... what to do?
Easiest solution is to say screw it and deal with the slightly-wide images. I can't get behind this option.

Next up, the so-so solution on the user's side is to switch to windowed mode, enable stretch-to-fit, and diddle the window until the aspect looks right. Not a great solution, but it works. Still, full-screen mode is so much nicer...
So, for full-screen, I think the easiest fix in code would be to offer a simple, numerical, advanced-user-style, "scale to screen" setting, with two factors, one for horizontal and one for vertical. Less than 1.0 pillarboxes or letterboxes, and more than 1.0 crops. That gives complete control to those who know how to use it.
Slightly better would be to add a dropdown next to those numbers with a few standard presets, plus "Custom" for those who want to enter the numbers by hand. The presets could be written in For-Dummies style, e.g. "Fix for Slightly Too Wide / Fix for Slightly Too Tall / Custom Fix".
I'm not sure there's a super-duper fix-all solution. A lot of programmers never try to accommodate the oddball pixel aspects, so you can't just fix it across the board with one change. I think a manual option is the only good choice.
Anyway, food for thought. It's non-critical, but I figured I'd throw it out there and see if anyone thinks it's an interesting problem to solve.