diff --git a/pcsx2/Config.h b/pcsx2/Config.h index 1df6036f7b..8796bdcd58 100644 --- a/pcsx2/Config.h +++ b/pcsx2/Config.h @@ -56,6 +56,7 @@ enum GamefixId Fix_VIF1Stall, Fix_GIFReverse, Fix_FMVinSoftware, + Fix_GoemonTlbMiss, GamefixId_COUNT }; @@ -349,7 +350,8 @@ struct Pcsx2Config VIFFIFOHack :1, // Pretends to fill the non-existant VIF FIFO Buffer. VIF1StallHack :1, // Like above, processes FIFO data before the stall is allowed (to make sure data goes over). GIFReverseHack :1, // Allows PATH3 to continue even if the FIFO is reversed. - FMVinSoftwareHack:1; // Toggle in and out of software rendering when an FMV runs. + FMVinSoftwareHack:1, // Toggle in and out of software rendering when an FMV runs. + GoemonTlbHack:1; // Gomeon tlb miss hack. The game need to access unmapped virtual address. Instead to handle it as exception, tlb are preloaded at startup BITFIELD_END GamefixOptions(); diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp index 1d6e48bfd1..243685e1d9 100644 --- a/pcsx2/Pcsx2Config.cpp +++ b/pcsx2/Pcsx2Config.cpp @@ -258,6 +258,7 @@ const wxChar *const tbl_GamefixNames[] = L"VIF1Stall", L"GIFReverse", L"FMVinSoftware", + L"GoemonTlb", }; const __fi wxChar* EnumToString( GamefixId id ) @@ -319,6 +320,7 @@ void Pcsx2Config::GamefixOptions::Set( GamefixId id, bool enabled ) case Fix_VIF1Stall: VIF1StallHack = enabled; break; case Fix_GIFReverse: GIFReverseHack = enabled; break; case Fix_FMVinSoftware: FMVinSoftwareHack = enabled; break; + case Fix_GoemonTlbMiss: GoemonTlbHack = enabled; break; jNO_DEFAULT; } @@ -344,6 +346,7 @@ bool Pcsx2Config::GamefixOptions::Get( GamefixId id ) const case Fix_VIF1Stall: return VIF1StallHack; case Fix_GIFReverse: return GIFReverseHack; case Fix_FMVinSoftware: return FMVinSoftwareHack; + case Fix_GoemonTlbMiss: return GoemonTlbHack; jNO_DEFAULT; } @@ -369,6 +372,7 @@ void Pcsx2Config::GamefixOptions::LoadSave( IniInterface& ini ) IniBitBool( VIF1StallHack ); IniBitBool( GIFReverseHack ); IniBitBool( FMVinSoftwareHack ); + IniBitBool( GoemonTlbHack ); } diff --git a/pcsx2/gui/Panels/GameFixesPanel.cpp b/pcsx2/gui/Panels/GameFixesPanel.cpp index 20c234ce49..138fe72156 100644 --- a/pcsx2/gui/Panels/GameFixesPanel.cpp +++ b/pcsx2/gui/Panels/GameFixesPanel.cpp @@ -99,6 +99,10 @@ Panels::GameFixesPanel::GameFixesPanel( wxWindow* parent ) { _("Switch to GSdx software rendering when a FMV plays"), wxEmptyString + }, + { + _("Preload TLB hack to avoid tlb miss on Goemon"), + wxEmptyString } }; @@ -113,7 +117,7 @@ Panels::GameFixesPanel::GameFixesPanel( wxWindow* parent ) ) ); - m_check_Enable->SetToolTip(_("Gamefixes can work around wrong emulation in some titles. \nThey may also cause compatibility or performance issues.\n\nThe safest way to make sure that all game fixes are completely disabled.")).SetSubPadding( 1 ); + m_check_Enable->SetToolTip(pxE(L"Gamefixes can work around wrong emulation in some titles. \nThey may also cause compatibility or performance issues.\n\nThe safest way to make sure that all game fixes are completely disabled.")).SetSubPadding( 1 ); m_check_Enable->SetValue( g_Conf->EnableGameFixes ); *this += m_check_Enable | StdExpand();