pcsx2: tlb: add a new gamefix hack for goemon

This commit is contained in:
Gregory Hainaut 2014-06-08 18:00:37 +02:00
parent 8148148932
commit 2e8f56fc86
3 changed files with 12 additions and 2 deletions

View File

@ -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();

View File

@ -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 );
}

View File

@ -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();