Removed the IOPx2 cycle hack. It's been superseded by the Wait Cycle Detection hack anyway.

Replaced the empty space with a (imo :p) more useful "Fast CDVD access" hack. 
This one will enable users to cut loading times in most games but there
are some incompatibilities as well.
HDLoader compatibility lists will list incompatible games with a "needs MODE 1" (or similar).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3595 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
ramapcsx2 2010-08-03 18:12:22 +00:00
parent 6ab55020bd
commit c2e687ad27
6 changed files with 13 additions and 12 deletions

View File

@ -46,6 +46,8 @@ static __forceinline void SetResultSize(u8 size)
static void CDVDREAD_INT(int eCycle) static void CDVDREAD_INT(int eCycle)
{ {
// Give it an arbitary FAST value. Good for ~5000kb/s in ULE when copying a file from CDVD to HDD
if (EmuConfig.Speedhacks.fastCDVD) eCycle = 3000;
PSX_INT(IopEvt_CdvdRead, eCycle); PSX_INT(IopEvt_CdvdRead, eCycle);
} }

View File

@ -489,7 +489,7 @@ struct Pcsx2Config
{ {
BITFIELD32() BITFIELD32()
bool bool
IopCycleRate_X2 :1, // enables the x2 multiplier of the IOP cyclerate fastCDVD :1, // enables fast CDVD access
IntcStat :1, // tells Pcsx2 to fast-forward through intc_stat waits. IntcStat :1, // tells Pcsx2 to fast-forward through intc_stat waits.
WaitLoop :1, // enables constant loop detection and fast-forwarding WaitLoop :1, // enables constant loop detection and fast-forwarding
vuFlagHack :1, // microVU specific flag hack vuFlagHack :1, // microVU specific flag hack

View File

@ -70,7 +70,7 @@ void Pcsx2Config::SpeedhackOptions::LoadSave( IniInterface& ini )
IniBitfield( EECycleRate ); IniBitfield( EECycleRate );
IniBitfield( VUCycleSteal ); IniBitfield( VUCycleSteal );
IniBitBool( IopCycleRate_X2 ); IniBitBool( fastCDVD );
IniBitBool( IntcStat ); IniBitBool( IntcStat );
IniBitBool( WaitLoop ); IniBitBool( WaitLoop );
IniBitBool( vuFlagHack ); IniBitBool( vuFlagHack );

View File

@ -298,7 +298,7 @@ namespace Panels
pxCheckBox* m_check_intc; pxCheckBox* m_check_intc;
pxCheckBox* m_check_waitloop; pxCheckBox* m_check_waitloop;
pxCheckBox* m_check_IOPx2; pxCheckBox* m_check_fastCDVD;
pxCheckBox* m_check_vuFlagHack; pxCheckBox* m_check_vuFlagHack;
pxCheckBox* m_check_vuBlockHack; pxCheckBox* m_check_vuBlockHack;
pxCheckBox* m_check_vuMinMax; pxCheckBox* m_check_vuMinMax;

View File

@ -195,8 +195,8 @@ Panels::SpeedHacksPanel::SpeedHacksPanel( wxWindow* parent )
m_check_waitloop = new pxCheckBox( miscHacksPanel, _("Enable Wait Loop Detection"), m_check_waitloop = new pxCheckBox( miscHacksPanel, _("Enable Wait Loop Detection"),
_("Moderate speedup for some games, with no known side effects. [Recommended]" ) ); _("Moderate speedup for some games, with no known side effects. [Recommended]" ) );
m_check_IOPx2 = new pxCheckBox( miscHacksPanel, _("IOP x2 cycle rate hack"), m_check_fastCDVD = new pxCheckBox( miscHacksPanel, _("Enable fast CDVD"),
_("Small Speedup. Works well with some games but may cause issues in others. [Not Recommended]") ); _("Fast disc access, less loading times. [Not Recommended]") );
m_check_intc->SetToolTip( pxE( ".Tooltip:Speedhacks:INTC", m_check_intc->SetToolTip( pxE( ".Tooltip:Speedhacks:INTC",
@ -211,9 +211,8 @@ Panels::SpeedHacksPanel::SpeedHacksPanel( wxWindow* parent )
L"we advance to the time of the next event or the end of the processor's timeslice, whichever comes first." L"we advance to the time of the next event or the end of the processor's timeslice, whichever comes first."
) ); ) );
m_check_IOPx2->SetToolTip( pxE( ".Tooltip:Speedhacks:IOPx2", m_check_fastCDVD->SetToolTip( pxE( ".Tooltip:Speedhacks:IOPx2",
L"Halves the cycle rate of the IOP, giving it an effective emulated speed of roughly 18 MHz. " L"Check HDLoader compatibility lists for known games that have issues with this. (Often marked as needing 'mode 1' or 'slow DVD'"
L"The speedup is very minor, so this hack is generally not recommended."
) ); ) );
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
@ -239,7 +238,7 @@ Panels::SpeedHacksPanel::SpeedHacksPanel( wxWindow* parent )
*miscHacksPanel += m_check_intc; *miscHacksPanel += m_check_intc;
*miscHacksPanel += m_check_waitloop; *miscHacksPanel += m_check_waitloop;
*miscHacksPanel += m_check_IOPx2; *miscHacksPanel += m_check_fastCDVD;
*left += eeSliderPanel | StdExpand(); *left += eeSliderPanel | StdExpand();
*left += miscHacksPanel | StdExpand(); *left += miscHacksPanel | StdExpand();
@ -311,7 +310,7 @@ void Panels::SpeedHacksPanel::AppStatusEvent_OnSettingsApplied( const Pcsx2Confi
m_check_vuMinMax ->SetValue(opts.vuMinMax); m_check_vuMinMax ->SetValue(opts.vuMinMax);
m_check_intc ->SetValue(opts.IntcStat); m_check_intc ->SetValue(opts.IntcStat);
m_check_waitloop ->SetValue(opts.WaitLoop); m_check_waitloop ->SetValue(opts.WaitLoop);
m_check_IOPx2 ->SetValue(opts.IopCycleRate_X2); m_check_fastCDVD ->SetValue(opts.fastCDVD);
EnableStuff(); EnableStuff();
@ -329,7 +328,7 @@ void Panels::SpeedHacksPanel::Apply()
opts.VUCycleSteal = m_slider_vustealer->GetValue(); opts.VUCycleSteal = m_slider_vustealer->GetValue();
opts.WaitLoop = m_check_waitloop->GetValue(); opts.WaitLoop = m_check_waitloop->GetValue();
opts.IopCycleRate_X2 = m_check_IOPx2->GetValue(); opts.fastCDVD = m_check_fastCDVD->GetValue();
opts.IntcStat = m_check_intc->GetValue(); opts.IntcStat = m_check_intc->GetValue();
opts.vuFlagHack = m_check_vuFlagHack->GetValue(); opts.vuFlagHack = m_check_vuFlagHack->GetValue();
opts.vuBlockHack = m_check_vuBlockHack->GetValue(); opts.vuBlockHack = m_check_vuBlockHack->GetValue();

View File

@ -1010,7 +1010,7 @@ void psxSetBranchImm( u32 imm )
static __forceinline u32 psxScaleBlockCycles() static __forceinline u32 psxScaleBlockCycles()
{ {
return s_psxBlockCycles * (EmuConfig.Speedhacks.IopCycleRate_X2 ? 2 : 1); return s_psxBlockCycles;
} }
static void iPsxBranchTest(u32 newpc, u32 cpuBranch) static void iPsxBranchTest(u32 newpc, u32 cpuBranch)