Added an option in the game properties to disable the VBeam speed hack. This option may fix games which currently have an unusual FPS rate. For example, this option fixes the crackly audio in Tales of Symphonia. Leave this option turned off unless you're noticing problems related to the FPS rate because it might slow down the emulator.
Removed the Alternate RFI option as it is no longer needed. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6888 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
58cb35fe01
commit
12249296a1
|
@ -308,7 +308,7 @@ void SConfig::LoadSettings()
|
|||
ini.Get("Core", "RunCompareClient", &m_LocalCoreStartupParameter.bRunCompareClient, false);
|
||||
ini.Get("Core", "MMU", &m_LocalCoreStartupParameter.bMMU, false);
|
||||
ini.Get("Core", "TLBHack", &m_LocalCoreStartupParameter.iTLBHack, 0);
|
||||
ini.Get("Core", "AlternateRFI", &m_LocalCoreStartupParameter.bAlternateRFI, false);
|
||||
ini.Get("Core", "VBeam", &m_LocalCoreStartupParameter.bVBeam, false);
|
||||
ini.Get("Core", "FastDiscSpeed", &m_LocalCoreStartupParameter.bFastDiscSpeed, false);
|
||||
ini.Get("Core", "BAT", &m_LocalCoreStartupParameter.bMMUBAT, false);
|
||||
ini.Get("Core", "FrameLimit", &m_Framelimit, 1); // auto frame limit by default
|
||||
|
|
|
@ -49,7 +49,7 @@ SCoreStartupParameter::SCoreStartupParameter()
|
|||
bEnableCheats(false),
|
||||
bMergeBlocks(false),
|
||||
bRunCompareServer(false), bRunCompareClient(false),
|
||||
bMMU(false), bMMUBAT(false), iTLBHack(0), bAlternateRFI(false),
|
||||
bMMU(false), bMMUBAT(false), iTLBHack(0), bVBeam(false),
|
||||
bFastDiscSpeed(false),
|
||||
SelectedLanguage(0), bWii(false),
|
||||
bConfirmStop(false), bHideCursor(false),
|
||||
|
@ -77,7 +77,7 @@ void SCoreStartupParameter::LoadDefaults()
|
|||
bMMU = false;
|
||||
bMMUBAT = false;
|
||||
iTLBHack = 0;
|
||||
bAlternateRFI = false;
|
||||
bVBeam = false;
|
||||
bFastDiscSpeed = false;
|
||||
bMergeBlocks = false;
|
||||
SelectedLanguage = 0;
|
||||
|
|
|
@ -84,7 +84,7 @@ struct SCoreStartupParameter
|
|||
bool bMMU;
|
||||
bool bMMUBAT;
|
||||
int iTLBHack;
|
||||
bool bAlternateRFI;
|
||||
bool bVBeam;
|
||||
bool bFastDiscSpeed;
|
||||
|
||||
int SelectedLanguage;
|
||||
|
|
|
@ -832,7 +832,7 @@ void Update()
|
|||
}
|
||||
|
||||
if (++m_VBeamPos > s_lineCount)
|
||||
m_VBeamPos = (NewVBeamPos > s_lineCount) ? 1 : NewVBeamPos;
|
||||
m_VBeamPos = (NewVBeamPos > s_lineCount || Core::g_CoreStartupParameter.bVBeam) ? 1 : NewVBeamPos;
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
|
|
|
@ -2800,7 +2800,7 @@ DEFINE_LUA_FUNCTION(emulua_loadrom, "filename")
|
|||
game_ini.Get("Core", "MMU", &StartUp.bMMU, StartUp.bMMU);
|
||||
game_ini.Get("Core", "BAT", &StartUp.bMMUBAT, StartUp.bMMUBAT);
|
||||
game_ini.Get("Core", "TLBHack", &StartUp.iTLBHack, StartUp.iTLBHack);
|
||||
game_ini.Get("Core", "AlternateRFI", &StartUp.bAlternateRFI, StartUp.bAlternateRFI);
|
||||
game_ini.Get("Core", "VBeam", &StartUp.bVBeam, StartUp.bVBeam);
|
||||
game_ini.Get("Core", "FastDiscSpeed", &StartUp.bFastDiscSpeed, StartUp.bFastDiscSpeed);
|
||||
// Wii settings
|
||||
if (StartUp.bWii)
|
||||
|
|
|
@ -70,10 +70,7 @@ void Jit64::rfi(UGeckoInstruction inst)
|
|||
OR(32, M(&MSR), R(EAX));
|
||||
// NPC = SRR0;
|
||||
MOV(32, R(EAX), M(&SRR0));
|
||||
if (Core::g_CoreStartupParameter.bAlternateRFI)
|
||||
WriteExitDestInEAX();
|
||||
else
|
||||
WriteRfiExitDestInEAX();
|
||||
WriteRfiExitDestInEAX();
|
||||
}
|
||||
|
||||
void Jit64::bx(UGeckoInstruction inst)
|
||||
|
|
|
@ -1859,10 +1859,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit, bool UseProfile, bool Mak
|
|||
Jit->MOV(32, M(&MSR), R(EAX));
|
||||
// NPC = SRR0;
|
||||
Jit->MOV(32, R(EAX), M(&SRR0));
|
||||
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bAlternateRFI)
|
||||
Jit->WriteExitDestInOpArg(R(EAX));
|
||||
else
|
||||
Jit->WriteRfiExitDestInOpArg(R(EAX));
|
||||
Jit->WriteRfiExitDestInOpArg(R(EAX));
|
||||
break;
|
||||
}
|
||||
case FPExceptionCheckStart: {
|
||||
|
|
|
@ -68,7 +68,7 @@ namespace BootManager
|
|||
struct ConfigCache
|
||||
{
|
||||
bool valid, bCPUThread, bSkipIdle, bEnableFPRF, bMMU, bMMUBAT,
|
||||
bAlternateRFI, bFastDiscSpeed, bMergeBlocks;
|
||||
bVBeam, bFastDiscSpeed, bMergeBlocks;
|
||||
int iTLBHack;
|
||||
};
|
||||
static ConfigCache config_cache;
|
||||
|
@ -119,7 +119,7 @@ bool BootCore(const std::string& _rFilename)
|
|||
config_cache.bMMU = StartUp.bMMU;
|
||||
config_cache.bMMUBAT = StartUp.bMMUBAT;
|
||||
config_cache.iTLBHack = StartUp.iTLBHack;
|
||||
config_cache.bAlternateRFI = StartUp.bAlternateRFI;
|
||||
config_cache.bVBeam = StartUp.bVBeam;
|
||||
config_cache.bFastDiscSpeed = StartUp.bFastDiscSpeed;
|
||||
config_cache.bMergeBlocks = StartUp.bMergeBlocks;
|
||||
// General settings
|
||||
|
@ -129,7 +129,7 @@ bool BootCore(const std::string& _rFilename)
|
|||
game_ini.Get("Core", "MMU", &StartUp.bMMU, StartUp.bMMU);
|
||||
game_ini.Get("Core", "BAT", &StartUp.bMMUBAT, StartUp.bMMUBAT);
|
||||
game_ini.Get("Core", "TLBHack", &StartUp.iTLBHack, StartUp.iTLBHack);
|
||||
game_ini.Get("Core", "AlternateRFI", &StartUp.bAlternateRFI, StartUp.bAlternateRFI);
|
||||
game_ini.Get("Core", "VBeam", &StartUp.bVBeam, StartUp.bVBeam);
|
||||
game_ini.Get("Core", "FastDiscSpeed", &StartUp.bFastDiscSpeed, StartUp.bFastDiscSpeed);
|
||||
game_ini.Get("Core", "BlockMerging", &StartUp.bMergeBlocks, StartUp.bMergeBlocks);
|
||||
// Wii settings
|
||||
|
@ -180,7 +180,7 @@ void Stop()
|
|||
StartUp.bMMU = config_cache.bMMU;
|
||||
StartUp.bMMUBAT = config_cache.bMMUBAT;
|
||||
StartUp.iTLBHack = config_cache.iTLBHack;
|
||||
StartUp.bAlternateRFI = config_cache.bAlternateRFI;
|
||||
StartUp.bVBeam = config_cache.bVBeam;
|
||||
StartUp.bFastDiscSpeed = config_cache.bFastDiscSpeed;
|
||||
StartUp.bMergeBlocks = config_cache.bMergeBlocks;
|
||||
}
|
||||
|
|
|
@ -310,8 +310,8 @@ void CISOProperties::CreateGUIControls(bool IsWad)
|
|||
MMUBAT->SetToolTip(_("Enables Block Address Translation (BAT); a function of the Memory Management Unit. Accurate to the hardware, but slow to emulate. (ON = Compatible, OFF = Fast)"));
|
||||
TLBHack = new wxCheckBox(m_GameConfig, ID_TLBHACK, _("MMU Speed Hack"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||
TLBHack->SetToolTip(_("Fast version of the MMU. Does not work for every game."));
|
||||
AlternateRFI = new wxCheckBox(m_GameConfig, ID_RFI, _("Alternate RFI"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||
AlternateRFI->SetToolTip(_("If a game hangs, works only in the Interpreter or Dolphin crashes, this option may fix the game."));
|
||||
VBeam = new wxCheckBox(m_GameConfig, ID_RFI, _("Disable VBeam Speed Hack"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||
VBeam->SetToolTip(_("If the FPS is erratic, this option may help. (ON = Compatible, OFF = Fast)"));
|
||||
FastDiscSpeed = new wxCheckBox(m_GameConfig, ID_DISCSPEED, _("Speed up Disc Transfer Rate"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||
FastDiscSpeed->SetToolTip(_("Enable fast disc access. Needed for a few games. (ON = Fast, OFF = Compatible)"));
|
||||
BlockMerging = new wxCheckBox(m_GameConfig, ID_MERGEBLOCKS, _("Enable Block Merging"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||
|
@ -375,7 +375,7 @@ void CISOProperties::CreateGUIControls(bool IsWad)
|
|||
sbCoreOverrides->Add(MMU, 0, wxEXPAND|wxLEFT, 5);
|
||||
sbCoreOverrides->Add(MMUBAT, 0, wxEXPAND|wxLEFT, 5);
|
||||
sbCoreOverrides->Add(TLBHack, 0, wxEXPAND|wxLEFT, 5);
|
||||
sbCoreOverrides->Add(AlternateRFI, 0, wxEXPAND|wxLEFT, 5);
|
||||
sbCoreOverrides->Add(VBeam, 0, wxEXPAND|wxLEFT, 5);
|
||||
sbCoreOverrides->Add(FastDiscSpeed, 0, wxEXPAND|wxLEFT, 5);
|
||||
sbCoreOverrides->Add(BlockMerging, 0, wxEXPAND|wxLEFT, 5);
|
||||
sbWiiOverrides->Add(EnableProgressiveScan, 0, wxEXPAND|wxLEFT, 5);
|
||||
|
@ -843,10 +843,10 @@ void CISOProperties::LoadGameConfig()
|
|||
else
|
||||
TLBHack->Set3StateValue(wxCHK_UNDETERMINED);
|
||||
|
||||
if (GameIni.Get("Core", "AlternateRFI", &bTemp))
|
||||
AlternateRFI->Set3StateValue((wxCheckBoxState)bTemp);
|
||||
if (GameIni.Get("Core", "VBeam", &bTemp))
|
||||
VBeam->Set3StateValue((wxCheckBoxState)bTemp);
|
||||
else
|
||||
AlternateRFI->Set3StateValue(wxCHK_UNDETERMINED);
|
||||
VBeam->Set3StateValue(wxCHK_UNDETERMINED);
|
||||
|
||||
if (GameIni.Get("Core", "FastDiscSpeed", &bTemp))
|
||||
FastDiscSpeed->Set3StateValue((wxCheckBoxState)bTemp);
|
||||
|
@ -959,10 +959,10 @@ bool CISOProperties::SaveGameConfig()
|
|||
else
|
||||
GameIni.Set("Core", "TLBHack", TLBHack->Get3StateValue());
|
||||
|
||||
if (AlternateRFI->Get3StateValue() == wxCHK_UNDETERMINED)
|
||||
GameIni.DeleteKey("Core", "AlternateRFI");
|
||||
if (VBeam->Get3StateValue() == wxCHK_UNDETERMINED)
|
||||
GameIni.DeleteKey("Core", "VBeam");
|
||||
else
|
||||
GameIni.Set("Core", "AlternateRFI", AlternateRFI->Get3StateValue());
|
||||
GameIni.Set("Core", "VBeam", VBeam->Get3StateValue());
|
||||
|
||||
if (FastDiscSpeed->Get3StateValue() == wxCHK_UNDETERMINED)
|
||||
GameIni.DeleteKey("Core", "FastDiscSpeed");
|
||||
|
|
|
@ -85,7 +85,7 @@ class CISOProperties : public wxDialog
|
|||
wxStaticText *OverrideText;
|
||||
// Core
|
||||
wxCheckBox *CPUThread, *SkipIdle, *MMU, *MMUBAT, *TLBHack;
|
||||
wxCheckBox *AlternateRFI, *FastDiscSpeed, *BlockMerging;
|
||||
wxCheckBox *VBeam, *FastDiscSpeed, *BlockMerging;
|
||||
// Wii
|
||||
wxCheckBox *EnableProgressiveScan, *EnableWideScreen;
|
||||
// Video
|
||||
|
|
Loading…
Reference in New Issue