Project64: Add CN64Rom::IsPal
This commit is contained in:
parent
0bff53e11c
commit
f5c2c33149
|
@ -300,7 +300,7 @@ void DiskBMUpdate()
|
|||
else
|
||||
{
|
||||
//Read Data
|
||||
if (((g_Reg->ASIC_CUR_TK >> 16) & 0x1FFF) == 6 && g_Reg->ASIC_CUR_SECTOR == 0 && g_Disk->GetCountry() != Country::UnknownCountry)
|
||||
if (((g_Reg->ASIC_CUR_TK >> 16) & 0x1FFF) == 6 && g_Reg->ASIC_CUR_SECTOR == 0 && g_Disk->GetCountry() != Country_Unknown)
|
||||
{
|
||||
//Copy Protection if Retail Disk
|
||||
g_Reg->ASIC_STATUS &= ~DD_STATUS_DATA_RQ;
|
||||
|
|
|
@ -601,15 +601,15 @@ bool CN64System::SelectAndLoadFileImageIPL(Country country, bool combo)
|
|||
LanguageStringID IPLROMError;
|
||||
switch (country)
|
||||
{
|
||||
case Country::Japan:
|
||||
case Country_Japan:
|
||||
IPLROMPathSetting = File_DiskIPLPath;
|
||||
IPLROMError = MSG_IPL_REQUIRED;
|
||||
break;
|
||||
case Country::USA:
|
||||
case Country_NorthAmerica:
|
||||
IPLROMPathSetting = File_DiskIPLUSAPath;
|
||||
IPLROMError = MSG_USA_IPL_REQUIRED;
|
||||
break;
|
||||
case Country::UnknownCountry:
|
||||
case Country_Unknown:
|
||||
default:
|
||||
IPLROMPathSetting = File_DiskIPLTOOLPath;
|
||||
IPLROMError = MSG_TOOL_IPL_REQUIRED;
|
||||
|
@ -990,7 +990,7 @@ void CN64System::InitRegisters(bool bPostPif, CMipsMemoryVM & MMU)
|
|||
//Start 64DD in Reset State and Motor Not Spinning
|
||||
m_Reg.ASIC_STATUS = DD_STATUS_RST_STATE | DD_STATUS_MTR_N_SPIN;
|
||||
m_Reg.ASIC_ID_REG = 0x00030000;
|
||||
if (g_DDRom && (g_DDRom->CicChipID() == CIC_NUS_DDTL || (g_Disk && g_Disk->GetCountry() == Country::UnknownCountry)))
|
||||
if (g_DDRom && (g_DDRom->CicChipID() == CIC_NUS_DDTL || (g_Disk && g_Disk->GetCountry() == Country_Unknown)))
|
||||
m_Reg.ASIC_ID_REG = 0x00040000;
|
||||
|
||||
//m_Reg.REVISION_REGISTER = 0x00000511;
|
||||
|
@ -1018,11 +1018,8 @@ void CN64System::InitRegisters(bool bPostPif, CMipsMemoryVM & MMU)
|
|||
m_Reg.m_GPR[29].DW = 0xFFFFFFFFA4001FF0;
|
||||
m_Reg.m_GPR[30].DW = 0x0000000000000000;
|
||||
|
||||
switch (g_Rom->GetCountry())
|
||||
if (g_Rom->IsPal())
|
||||
{
|
||||
case Germany: case french: case Italian:
|
||||
case Europe: case Spanish: case Australia:
|
||||
case X_PAL: case Y_PAL:
|
||||
switch (g_Rom->CicChipID())
|
||||
{
|
||||
case CIC_UNKNOWN:
|
||||
|
@ -1051,9 +1048,9 @@ void CN64System::InitRegisters(bool bPostPif, CMipsMemoryVM & MMU)
|
|||
m_Reg.m_GPR[20].DW = 0x0000000000000000;
|
||||
m_Reg.m_GPR[23].DW = 0x0000000000000006;
|
||||
m_Reg.m_GPR[31].DW = 0xFFFFFFFFA4001554;
|
||||
break;
|
||||
case NTSC_BETA: case X_NTSC: case USA: case Japan:
|
||||
default:
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (g_Rom->CicChipID())
|
||||
{
|
||||
case CIC_UNKNOWN:
|
||||
|
|
|
@ -816,12 +816,12 @@ Country CN64Disk::GetDiskCountryCode()
|
|||
switch (*(uint32_t*)&GetDiskAddressSys()[0])
|
||||
{
|
||||
case DISK_COUNTRY_JPN:
|
||||
return Japan;
|
||||
return Country_Japan;
|
||||
case DISK_COUNTRY_USA:
|
||||
return USA;
|
||||
return Country_NorthAmerica;
|
||||
case DISK_COUNTRY_DEV:
|
||||
default:
|
||||
return UnknownCountry;
|
||||
return Country_Unknown;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ CN64Rom::CN64Rom() :
|
|||
m_ROMImageBase(NULL),
|
||||
m_RomFileSize(0),
|
||||
m_ErrorMsg(EMPTY_STRING),
|
||||
m_Country(UnknownCountry),
|
||||
m_Country(Country_Unknown),
|
||||
m_CicChip(CIC_UNKNOWN)
|
||||
{
|
||||
}
|
||||
|
@ -849,18 +849,7 @@ void CN64Rom::SaveRomSettingID(bool temp)
|
|||
g_Settings->SaveString(Game_GameName, m_RomName.c_str());
|
||||
g_Settings->SaveString(Game_IniKey, m_RomIdent.c_str());
|
||||
g_Settings->SaveString(Game_UniqueSaveDir, stdstr_f("%s-%s", m_RomName.c_str(), m_MD5.c_str()).c_str());
|
||||
|
||||
switch (GetCountry())
|
||||
{
|
||||
case Germany: case french: case Italian:
|
||||
case Europe: case Spanish: case Australia:
|
||||
case X_PAL: case Y_PAL:
|
||||
g_Settings->SaveDword(Game_SystemType, SYSTEM_PAL);
|
||||
break;
|
||||
default:
|
||||
g_Settings->SaveDword(Game_SystemType, SYSTEM_NTSC);
|
||||
break;
|
||||
}
|
||||
g_Settings->SaveDword(Game_SystemType, IsPal() ? SYSTEM_PAL : SYSTEM_NTSC);
|
||||
}
|
||||
|
||||
void CN64Rom::ClearRomSettingID()
|
||||
|
@ -874,6 +863,23 @@ void CN64Rom::SetError(LanguageStringID ErrorMsg)
|
|||
m_ErrorMsg = ErrorMsg;
|
||||
}
|
||||
|
||||
bool CN64Rom::IsPal()
|
||||
{
|
||||
switch (m_Country)
|
||||
{
|
||||
case Country_Germany:
|
||||
case Country_French:
|
||||
case Country_Italian:
|
||||
case Country_Europe:
|
||||
case Country_Spanish:
|
||||
case Country_Australia:
|
||||
case Country_EuropeanX_PAL:
|
||||
case Country_EuropeanY_PAL:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void CN64Rom::UnallocateRomImage()
|
||||
{
|
||||
m_RomFile.Close();
|
||||
|
|
|
@ -34,6 +34,7 @@ public:
|
|||
const std::string & GetRomName() const { return m_RomName; }
|
||||
const std::string & GetFileName() const { return m_FileName; }
|
||||
Country GetCountry() const { return m_Country; }
|
||||
bool IsPal();
|
||||
void UnallocateRomImage();
|
||||
|
||||
//Get a message id for the reason that you failed to load the rom
|
||||
|
|
|
@ -123,19 +123,19 @@ DWORD CALLBACK RomInfoProc(HWND hDlg, DWORD uMsg, DWORD wParam, DWORD lParam)
|
|||
|
||||
switch (RomHeader[0x3D])
|
||||
{
|
||||
case NTSC_BETA: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Beta"); break;
|
||||
case X_NTSC: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"NTSC"); break;
|
||||
case Germany: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Germany"); break;
|
||||
case USA: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"America"); break;
|
||||
case french: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"France"); break;
|
||||
case Italian: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Italy"); break;
|
||||
case Japan: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Japan"); break;
|
||||
case Europe: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Europe"); break;
|
||||
case Spanish: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Spain"); break;
|
||||
case Australia: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Australia"); break;
|
||||
case X_PAL: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"PAL"); break;
|
||||
case Y_PAL: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"PAL"); break;
|
||||
case 0: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"None"); break;
|
||||
case Country_NTSC_BETA: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Beta"); break;
|
||||
case Country_Asian_NTSC: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"NTSC"); break;
|
||||
case Country_Germany: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Germany"); break;
|
||||
case Country_NorthAmerica: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"America"); break;
|
||||
case Country_French: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"France"); break;
|
||||
case Country_Italian: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Italy"); break;
|
||||
case Country_Japan: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Japan"); break;
|
||||
case Country_Europe: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Europe"); break;
|
||||
case Country_Spanish: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Spain"); break;
|
||||
case Country_Australia: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Australia"); break;
|
||||
case Country_EuropeanX_PAL: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"PAL"); break;
|
||||
case Country_EuropeanY_PAL: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"PAL"); break;
|
||||
case Country_Unknown: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"None"); break;
|
||||
default:
|
||||
SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, stdstr_f(" Unknown %c (%02X)", RomHeader[0x3D], RomHeader[0x3D]).ToUTF16().c_str());
|
||||
}
|
||||
|
@ -203,19 +203,19 @@ DWORD CALLBACK RomInfoProc(HWND hDlg, DWORD uMsg, DWORD wParam, DWORD lParam)
|
|||
|
||||
switch (DiskHeader[0x00])
|
||||
{
|
||||
case NTSC_BETA: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Beta"); break;
|
||||
case X_NTSC: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"NTSC"); break;
|
||||
case Germany: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Germany"); break;
|
||||
case USA: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"America"); break;
|
||||
case french: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"France"); break;
|
||||
case Italian: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Italy"); break;
|
||||
case Japan: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Japan"); break;
|
||||
case Europe: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Europe"); break;
|
||||
case Spanish: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Spain"); break;
|
||||
case Australia: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Australia"); break;
|
||||
case X_PAL: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"PAL"); break;
|
||||
case Y_PAL: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"PAL"); break;
|
||||
case 0: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"None"); break;
|
||||
case Country_NTSC_BETA: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Beta"); break;
|
||||
case Country_Asian_NTSC: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"NTSC"); break;
|
||||
case Country_Germany: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Germany"); break;
|
||||
case Country_NorthAmerica: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"America"); break;
|
||||
case Country_French: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"France"); break;
|
||||
case Country_Italian: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Italy"); break;
|
||||
case Country_Japan: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Japan"); break;
|
||||
case Country_Europe: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Europe"); break;
|
||||
case Country_Spanish: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Spain"); break;
|
||||
case Country_Australia: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"Australia"); break;
|
||||
case Country_EuropeanX_PAL: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"PAL"); break;
|
||||
case Country_EuropeanY_PAL: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"PAL"); break;
|
||||
case Country_Unknown: SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, L"None"); break;
|
||||
default:
|
||||
SetDlgItemTextW(hDlg, IDC_INFO_COUNTRY, stdstr_f(" Unknown %c (%02X)", DiskHeader[0x03], DiskHeader[0x03]).ToUTF16().c_str());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue