Merge pull request #2622 from AdmiralCurtiss/homebrew-video-modes

Fix Homebrew region inconsistency exposed by #2596.
This commit is contained in:
skidau 2015-06-20 11:49:57 +10:00
commit c18662432f
2 changed files with 16 additions and 9 deletions

View File

@ -166,21 +166,24 @@ bool CBoot::EmulatedBS2_GC(bool skipAppLoader)
bool CBoot::SetupWiiMemory(DiscIO::IVolume::ECountry country) bool CBoot::SetupWiiMemory(DiscIO::IVolume::ECountry country)
{ {
static const CountrySetting SETTING_EUROPE = {"EUR", "PAL", "EU", "LE"}; static const CountrySetting SETTING_EUROPE = {"EUR", "PAL", "EU", "LE"};
static const CountrySetting SETTING_USA = {"USA", "NTSC", "US", "LU"};
static const CountrySetting SETTING_JAPAN = {"JPN", "NTSC", "JP", "LJ"};
static const CountrySetting SETTING_KOREA = {"KOR", "NTSC", "KR", "LKH"};
static const std::map<DiscIO::IVolume::ECountry, const CountrySetting> country_settings = { static const std::map<DiscIO::IVolume::ECountry, const CountrySetting> country_settings = {
{DiscIO::IVolume::COUNTRY_EUROPE, SETTING_EUROPE}, {DiscIO::IVolume::COUNTRY_EUROPE, SETTING_EUROPE},
{DiscIO::IVolume::COUNTRY_USA, {"USA", "NTSC", "US", "LU"}}, {DiscIO::IVolume::COUNTRY_USA, SETTING_USA},
{DiscIO::IVolume::COUNTRY_JAPAN, {"JPN", "NTSC", "JP", "LJ"}}, {DiscIO::IVolume::COUNTRY_JAPAN, SETTING_JAPAN},
{DiscIO::IVolume::COUNTRY_KOREA, {"KOR", "NTSC", "KR", "LKH"}}, {DiscIO::IVolume::COUNTRY_KOREA, SETTING_KOREA},
//TODO: Determine if Taiwan have their own specific settings. //TODO: Determine if Taiwan have their own specific settings.
// Also determine if there are other specific settings // Also determine if there are other specific settings
// for other countries. // for other countries.
{DiscIO::IVolume::COUNTRY_TAIWAN, {"JPN", "NTSC", "JP", "LJ"}} {DiscIO::IVolume::COUNTRY_TAIWAN, SETTING_JAPAN}
}; };
auto entryPos = country_settings.find(country); auto entryPos = country_settings.find(country);
const CountrySetting& country_setting = const CountrySetting& country_setting =
(entryPos != country_settings.end()) ? (entryPos != country_settings.end()) ?
entryPos->second : entryPos->second :
SETTING_EUROPE; //Default to EUROPE (SConfig::GetInstance().bNTSC ? SETTING_USA : SETTING_EUROPE); // default to USA or EUR depending on game's video mode
SettingsHandler gen; SettingsHandler gen;
std::string serno; std::string serno;

View File

@ -717,17 +717,21 @@ bool SConfig::AutoSetup(EBootBS2 _BootBS2)
else if (!strcasecmp(Extension.c_str(), ".elf")) else if (!strcasecmp(Extension.c_str(), ".elf"))
{ {
bWii = CBoot::IsElfWii(m_strFilename); bWii = CBoot::IsElfWii(m_strFilename);
set_region_dir = USA_DIR; // TODO: Right now GC homebrew boots in NTSC and Wii homebrew in PAL.
// This is intentional so that Wii homebrew can boot in both 50Hz and 60Hz, without forcing all GC homebrew to 50Hz.
// In the future, it probably makes sense to add a Region setting for homebrew somewhere in the emulator config.
bNTSC = bWii ? false : true;
set_region_dir = bNTSC ? USA_DIR : EUR_DIR;
m_BootType = BOOT_ELF; m_BootType = BOOT_ELF;
bNTSC = true;
} }
else if (!strcasecmp(Extension.c_str(), ".dol")) else if (!strcasecmp(Extension.c_str(), ".dol"))
{ {
CDolLoader dolfile(m_strFilename); CDolLoader dolfile(m_strFilename);
bWii = dolfile.IsWii(); bWii = dolfile.IsWii();
set_region_dir = USA_DIR; // TODO: See the ELF code above.
bNTSC = bWii ? false : true;
set_region_dir = bNTSC ? USA_DIR : EUR_DIR;
m_BootType = BOOT_DOL; m_BootType = BOOT_DOL;
bNTSC = true;
} }
else if (!strcasecmp(Extension.c_str(), ".dff")) else if (!strcasecmp(Extension.c_str(), ".dff"))
{ {