mirror of https://github.com/PCSX2/pcsx2.git
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:
parent
6ab55020bd
commit
c2e687ad27
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 );
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue