UI bugfix for speedhacks being improperly applied even when speedhacks were disabled.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3857 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2010-09-29 13:48:36 +00:00
parent a02057292b
commit 21a147563e
4 changed files with 28 additions and 20 deletions

View File

@ -338,9 +338,9 @@ struct Pcsx2Config
OPHFlagHack :1; // Skips MPEG videos (Katamari and other games need this)
BITFIELD_END
// all gamefixes are disabled by default.
GamefixOptions() : bitset( 0 ) {}
GamefixOptions();
void LoadSave( IniInterface& conf );
GamefixOptions& DisableAll();
void Set( const wxString& list, bool enabled=true );
void Clear( const wxString& list ) { Set( list, false ); }
@ -378,6 +378,7 @@ struct Pcsx2Config
SpeedhackOptions();
void LoadSave( IniInterface& conf );
SpeedhackOptions& DisableAll();
bool operator ==( const SpeedhackOptions& right ) const
{

View File

@ -37,9 +37,7 @@ void TraceLogFilters::LoadSave( IniInterface& ini )
Pcsx2Config::SpeedhackOptions::SpeedhackOptions()
{
bitset = 0;
EECycleRate = 0;
VUCycleSteal = 0;
DisableAll();
// Set recommended speedhacks to enabled by default. They'll still be off globally on resets.
WaitLoop = true;
@ -47,6 +45,15 @@ Pcsx2Config::SpeedhackOptions::SpeedhackOptions()
vuFlagHack = true;
}
Pcsx2Config::SpeedhackOptions& Pcsx2Config::SpeedhackOptions::DisableAll()
{
bitset = 0;
EECycleRate = 0;
VUCycleSteal = 0;
return *this;
}
void Pcsx2Config::SpeedhackOptions::LoadSave( IniInterface& ini )
{
SpeedhackOptions defaults;
@ -255,6 +262,18 @@ const __fi wxChar* EnumToString( GamefixId id )
return tbl_GamefixNames[id];
}
// all gamefixes are disabled by default.
Pcsx2Config::GamefixOptions::GamefixOptions()
{
DisableAll();
}
Pcsx2Config::GamefixOptions& Pcsx2Config::GamefixOptions::DisableAll()
{
bitset = 0;
return *this;
}
// Enables a full list of gamefixes. The list can be either comma or pipe-delimited.
// Example: "XGKick,IpuWait" or "EEtiming,FpuCompare"
// If an unrecognized tag is encountered, a warning is printed to the console, but no error

View File

@ -174,18 +174,6 @@ static __fi void IopTestEvent( IopEventId n, void (*callback)() )
psxSetNextBranch( psxRegs.sCycle[n], psxRegs.eCycle[n] );
}
static __fi void sifHackInterrupt()
{
// No reason -- just that sometimes the SIF fell asleep, and this wakes it up.
iopIntcIrq( 3 ); // IOP DMAC int
//hwIntcIrq(INTC_SBUS); // EE's SIF BUS notifier... maybe or maybe not needed?
// hack is rescheduled as needed by the event handler (depending on if it's actively
// signalling an interrupt or not).. better there than here.
//PSX_INT( IopEvt_SIFhack, 128 );
}
static __fi void _psxTestInterrupts()
{
IopTestEvent(IopEvt_SIF0, sif0Interrupt); // SIF0

View File

@ -272,7 +272,7 @@ void AppCoreThread::ApplySettings( const Pcsx2Config& src )
const CommandlineOverrides& overrides( wxGetApp().Overrides );
if( overrides.DisableSpeedhacks || !g_Conf->EnableSpeedHacks )
fixup.Speedhacks = Pcsx2Config::SpeedhackOptions();
fixup.Speedhacks = Pcsx2Config::SpeedhackOptions().DisableAll();
if( overrides.ApplyCustomGamefixes )
{
@ -280,7 +280,7 @@ void AppCoreThread::ApplySettings( const Pcsx2Config& src )
fixup.Gamefixes.Set( id, overrides.Gamefixes.Get(id) );
}
else if( !g_Conf->EnableGameFixes )
fixup.Gamefixes = Pcsx2Config::GamefixOptions();
fixup.Gamefixes = Pcsx2Config::GamefixOptions().DisableAll();
wxString gameCRC;
wxString gameSerial;