mirror of https://github.com/PCSX2/pcsx2.git
Removed the mVU block hack. This hack didn't help speed a lot (generally only about 2% if at all) but it caused slow downs and bugs in some games.
People enabled it for a performance boost and often got the reverse, so now it's gone. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5103 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
3bbb2d6ed3
commit
bc4ce5b1bf
|
@ -381,7 +381,6 @@ struct Pcsx2Config
|
||||||
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
|
||||||
vuBlockHack :1, // microVU specific block flag no-propagation hack
|
|
||||||
vuThread :1; // Enable Threaded VU1
|
vuThread :1; // Enable Threaded VU1
|
||||||
BITFIELD_END
|
BITFIELD_END
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,6 @@ void Pcsx2Config::SpeedhackOptions::LoadSave( IniInterface& ini )
|
||||||
IniBitBool( IntcStat );
|
IniBitBool( IntcStat );
|
||||||
IniBitBool( WaitLoop );
|
IniBitBool( WaitLoop );
|
||||||
IniBitBool( vuFlagHack );
|
IniBitBool( vuFlagHack );
|
||||||
IniBitBool( vuBlockHack );
|
|
||||||
IniBitBool( vuThread );
|
IniBitBool( vuThread );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -922,9 +922,8 @@ bool AppConfig::IsOkApplyPreset(int n)
|
||||||
case 4 : //set EE cyclerate to 2 clicks (maximum)
|
case 4 : //set EE cyclerate to 2 clicks (maximum)
|
||||||
eeUsed?0:(eeUsed=true, EmuOptions.Speedhacks.EECycleRate = 2);
|
eeUsed?0:(eeUsed=true, EmuOptions.Speedhacks.EECycleRate = 2);
|
||||||
|
|
||||||
case 3 : //Set VU cycle steal to 1 click, enable (m)vuBlockHack, set VU clamp mode to 'none'
|
case 3 : //Set VU cycle steal to 1 click, set VU clamp mode to 'none'
|
||||||
vuUsed?0:(vuUsed=true, EmuOptions.Speedhacks.VUCycleSteal = 1);
|
vuUsed?0:(vuUsed=true, EmuOptions.Speedhacks.VUCycleSteal = 1);
|
||||||
EmuOptions.Speedhacks.vuBlockHack = true;
|
|
||||||
EmuOptions.Cpu.Recompiler.vuOverflow =
|
EmuOptions.Cpu.Recompiler.vuOverflow =
|
||||||
EmuOptions.Cpu.Recompiler.vuExtraOverflow =
|
EmuOptions.Cpu.Recompiler.vuExtraOverflow =
|
||||||
EmuOptions.Cpu.Recompiler.vuSignOverflow = false; //VU Clamp mode to 'none'
|
EmuOptions.Cpu.Recompiler.vuSignOverflow = false; //VU Clamp mode to 'none'
|
||||||
|
|
|
@ -334,7 +334,6 @@ namespace Panels
|
||||||
pxCheckBox* m_check_waitloop;
|
pxCheckBox* m_check_waitloop;
|
||||||
pxCheckBox* m_check_fastCDVD;
|
pxCheckBox* m_check_fastCDVD;
|
||||||
pxCheckBox* m_check_vuFlagHack;
|
pxCheckBox* m_check_vuFlagHack;
|
||||||
pxCheckBox* m_check_vuBlockHack;
|
|
||||||
pxCheckBox* m_check_vuThread;
|
pxCheckBox* m_check_vuThread;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -163,9 +163,6 @@ Panels::SpeedHacksPanel::SpeedHacksPanel( wxWindow* parent )
|
||||||
m_check_vuFlagHack = new pxCheckBox( vuHacksPanel, _("mVU Flag Hack"),
|
m_check_vuFlagHack = new pxCheckBox( vuHacksPanel, _("mVU Flag Hack"),
|
||||||
_("Good Speedup and High Compatibility; may cause bad graphics... [Recommended]" ) );
|
_("Good Speedup and High Compatibility; may cause bad graphics... [Recommended]" ) );
|
||||||
|
|
||||||
m_check_vuBlockHack = new pxCheckBox( vuHacksPanel, _("mVU Block Hack"),
|
|
||||||
_("Good Speedup and High Compatibility; may cause bad graphics, SPS, etc...") );
|
|
||||||
|
|
||||||
m_check_vuThread = new pxCheckBox( vuHacksPanel, _("MTVU (Multi-Threaded microVU1)"),
|
m_check_vuThread = new pxCheckBox( vuHacksPanel, _("MTVU (Multi-Threaded microVU1)"),
|
||||||
_("Good Speedup and High Compatibility; may cause hanging... [Recommended if 3+ cores]") );
|
_("Good Speedup and High Compatibility; may cause hanging... [Recommended if 3+ cores]") );
|
||||||
|
|
||||||
|
@ -174,11 +171,6 @@ Panels::SpeedHacksPanel::SpeedHacksPanel( wxWindow* parent )
|
||||||
L"This is safe most of the time, and Super VU does something similar by default."
|
L"This is safe most of the time, and Super VU does something similar by default."
|
||||||
) );
|
) );
|
||||||
|
|
||||||
m_check_vuBlockHack->SetToolTip( pxEt( "!ContextTip:Speedhacks:vuBlockHack",
|
|
||||||
L"Assumes that very far into future blocks will not need old flag instance data. "
|
|
||||||
L"This should be pretty safe. It is unknown if this breaks any game..."
|
|
||||||
) );
|
|
||||||
|
|
||||||
m_check_vuThread->SetToolTip( pxEt( "!ContextTip:Speedhacks:vuThread",
|
m_check_vuThread->SetToolTip( pxEt( "!ContextTip:Speedhacks:vuThread",
|
||||||
L"Runs VU1 on its own thread (microVU1-only). Generally a speedup on CPUs with 3 or more cores. "
|
L"Runs VU1 on its own thread (microVU1-only). Generally a speedup on CPUs with 3 or more cores. "
|
||||||
L"This is safe for most games, but a few games are incompatible and may hang. "
|
L"This is safe for most games, but a few games are incompatible and may hang. "
|
||||||
|
@ -234,7 +226,6 @@ Panels::SpeedHacksPanel::SpeedHacksPanel( wxWindow* parent )
|
||||||
*vuSliderPanel += m_msg_vustealer | sliderFlags;
|
*vuSliderPanel += m_msg_vustealer | sliderFlags;
|
||||||
|
|
||||||
*vuHacksPanel += m_check_vuFlagHack;
|
*vuHacksPanel += m_check_vuFlagHack;
|
||||||
*vuHacksPanel += m_check_vuBlockHack;
|
|
||||||
*vuHacksPanel += m_check_vuThread;
|
*vuHacksPanel += m_check_vuThread;
|
||||||
//*vuHacksPanel += 57; // Aligns left and right boxes in default language and font size
|
//*vuHacksPanel += 57; // Aligns left and right boxes in default language and font size
|
||||||
|
|
||||||
|
@ -313,7 +304,6 @@ void Panels::SpeedHacksPanel::ApplyConfigToGui( AppConfig& configToApply, int fl
|
||||||
SetVUcycleSliderMsg();
|
SetVUcycleSliderMsg();
|
||||||
|
|
||||||
m_check_vuFlagHack ->SetValue(opts.vuFlagHack);
|
m_check_vuFlagHack ->SetValue(opts.vuFlagHack);
|
||||||
m_check_vuBlockHack ->SetValue(opts.vuBlockHack);
|
|
||||||
m_check_vuThread ->SetValue(opts.vuThread);
|
m_check_vuThread ->SetValue(opts.vuThread);
|
||||||
m_check_intc ->SetValue(opts.IntcStat);
|
m_check_intc ->SetValue(opts.IntcStat);
|
||||||
m_check_waitloop ->SetValue(opts.WaitLoop);
|
m_check_waitloop ->SetValue(opts.WaitLoop);
|
||||||
|
@ -343,7 +333,6 @@ void Panels::SpeedHacksPanel::Apply()
|
||||||
opts.fastCDVD = m_check_fastCDVD->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.vuThread = m_check_vuThread->GetValue();
|
opts.vuThread = m_check_vuThread->GetValue();
|
||||||
|
|
||||||
// If the user has a command line override specified, we need to disable it
|
// If the user has a command line override specified, we need to disable it
|
||||||
|
|
|
@ -290,7 +290,7 @@ __fi void mVUsetupFlags(mV, microFlagCycles& mFC) {
|
||||||
branch = 0; \
|
branch = 0; \
|
||||||
} \
|
} \
|
||||||
else if (branch == 5) { /*JR/JARL*/ \
|
else if (branch == 5) { /*JR/JARL*/ \
|
||||||
if(!CHECK_VU_BLOCKHACK && (sCount+found<4)) { \
|
if(sCount+found<4) { \
|
||||||
mVUregs.needExactMatch |= 7; \
|
mVUregs.needExactMatch |= 7; \
|
||||||
} \
|
} \
|
||||||
break; \
|
break; \
|
||||||
|
|
|
@ -359,13 +359,6 @@ static const bool doJumpAsSameProgram = 0; // Set to 1 to treat jumps as same pr
|
||||||
// This hack only updates the Status Flag on blocks that will read it.
|
// This hack only updates the Status Flag on blocks that will read it.
|
||||||
// Most blocks do not read status flags, so this is a big speedup.
|
// Most blocks do not read status flags, so this is a big speedup.
|
||||||
|
|
||||||
// Block Flag Instance No-Propagation Hack
|
|
||||||
#define CHECK_VU_BLOCKHACK (EmuConfig.Speedhacks.vuBlockHack)
|
|
||||||
// There are times when it is unknown if future blocks will need old
|
|
||||||
// flag instance data (due to indirect jumps). This hack assumes
|
|
||||||
// that they won't need old flag data. This effectively removes a lot
|
|
||||||
// of end-of-block flag instance shuffling, causing nice speedups.
|
|
||||||
|
|
||||||
// Min/Max Speed Hack
|
// Min/Max Speed Hack
|
||||||
#define CHECK_VU_MINMAXHACK 0 //(EmuConfig.Speedhacks.vuMinMax)
|
#define CHECK_VU_MINMAXHACK 0 //(EmuConfig.Speedhacks.vuMinMax)
|
||||||
// This hack uses SSE min/max instructions instead of emulated "logical min/max"
|
// This hack uses SSE min/max instructions instead of emulated "logical min/max"
|
||||||
|
|
Loading…
Reference in New Issue