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
Properly set default video mode for PAL Wii games. #2520
Conversation
| @@ -226,7 +226,11 @@ bool CBoot::BootUp() | |||
| NOTICE_LOG(BOOT, "Booting %s", _StartupPara.m_strFilename.c_str()); | |||
|
|
|||
| g_symbolDB.Clear(); | |||
| VideoInterface::Preset(_StartupPara.bNTSC); | |||
|
|
|||
| // PAL Wii uses NTSC framerate and linecount in 60Hz/480i and Progressive/480p modes | |||
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
|
The explanation sounds fine to me; certain games rely on the system menu to set the video mode on boot. The code matches the explanation too. |
|
So this switches the video mode to 480i for PAL Wii games, when either PAL60 or progressive video mode is selected, right? Shouldn't it set the video mode to 480p when progressive video mode is enabled? Or is progressive video mode selected seperately, and currently even set to 576p? If that's the case, then this pr would possibly fix some big progressive video mode problems with PAL Wii games, as a 576p video mode kinda exists, but can't be used on console. |
| VideoInterface::Preset(_StartupPara.bNTSC); | ||
|
|
||
| // PAL Wii uses NTSC framerate and linecount in 60Hz/480i and 60Hz/480p modes | ||
| const bool bPAL60 = _StartupPara.bWii && (SConfig::GetInstance().m_SYSCONF->GetData<u8>("IPL.E60") || SConfig::GetInstance().m_SYSCONF->GetData<u8>("IPL.PGS")); |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
See dolphin-emu#2520 for a more detailed explanation.
|
LGTM. The table for Dolphin might need to be changed(4 cases, pal60 and progressive each on/off), and a table for the situation after the pr could be added. But that's not something that should delay the merge. Disclaimer: Although most of my games are pal, i don't think i have one of the affected games, so i did not test this myself. |
Properly set default video mode for PAL Wii games.
See dolphin-emu#2520 for a more detailed explanation.
To explain this I'm going to have to talk a bit about a PAL Wii's video modes, so bear with me.
A PAL Wii can be set to three possible video modes: 50Hz (576i), 60Hz (480i), and EDTV/HDTV (480p) (which is still 60Hz, just progressive instead of interlaced). These can be found in Wii Settings -> Screen -> TV Type.
On console, PAL Wii games properly respect these settings when they can. Here's a few examples.
On Dolphin these results don't look as clean, and are in fact rather inconsistent.
(Since as far as I can tell it doesn't really matter in Dolphin if a game runs interlaced or progressive, I have omitted this information from the above table.)
So why doesn't Dolphin match what the actual console does? To explain that, let's look at what settings the video modes actually correspond to: The IPL.E60 and IPL.PGS settings in the Wii's SYSCONF file.
576i -> IPL.E60 = 0, IPL.PGS = 0
480i -> IPL.E60 = 1, IPL.PGS = 0
480p -> IPL.E60 = 1, IPL.PGS = 1
The combination IPL.E60 = 0, IPL.PGS = 1 is invalid and cannot be set on a PAL Wii.
In Dolphin, these two options are in completely different configuration windows. IPL.E60 can be toggled with Config -> Wii -> Use PAL60 Mode (EuRGB60), while IPL.PGS is toggled in Graphics -> Advanced -> Enable Progressive Scan. (It might be good to move one of them next to the other, but that's not the point here.)
The way Dolphin handles these settings is to just set them in the SYSCONF and expect games to properly handle them themselves, while always defaulting to 50Hz when booting a PAL game. Unfortunately, this doesn't work out in all cases. Some games expect the System Menu to set the correct video mode for them before the game boots, while others are a bit more proactive and set themselves correctly in some or all cases. By loading the System Menu first and booting a game through that, all games behave the same they would on console when it comes to video mode.
(Do note that all of this is accurate for Wii games only. PAL Gamecube games will always boot in 50Hz mode and then, if supported, may ask the user if they want to switch to 60Hz. Some require the user to hold B during game boot for the option to appear.)
This PR changes the initial Wii game boot settings to match what the System Menu would set, so that games run in the video mode they are expected to run in.
Fixes issue 6991, this forum thread, and this forum thread. Also properly fixes issue 2251, issue 3066, and issue 5089.