Added options to enable/disable Block Merging and DList Cache into game specific settings.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6203 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
4ec8f97154
commit
412ce56f83
|
@ -48,6 +48,7 @@ SCoreStartupParameter::SCoreStartupParameter()
|
||||||
bEnableCheats(false),
|
bEnableCheats(false),
|
||||||
bRunCompareServer(false), bRunCompareClient(false),
|
bRunCompareServer(false), bRunCompareClient(false),
|
||||||
bMMU(false), bMMUBAT(false), iTLBHack(0), bAlternateRFI(false),
|
bMMU(false), bMMUBAT(false), iTLBHack(0), bAlternateRFI(false),
|
||||||
|
bMergeBlocks(false),
|
||||||
SelectedLanguage(0), bWii(false),
|
SelectedLanguage(0), bWii(false),
|
||||||
bConfirmStop(false), bHideCursor(false),
|
bConfirmStop(false), bHideCursor(false),
|
||||||
bAutoHideCursor(false), bUsePanicHandlers(true),
|
bAutoHideCursor(false), bUsePanicHandlers(true),
|
||||||
|
@ -74,6 +75,7 @@ void SCoreStartupParameter::LoadDefaults()
|
||||||
bMMUBAT = false;
|
bMMUBAT = false;
|
||||||
iTLBHack = 0;
|
iTLBHack = 0;
|
||||||
bAlternateRFI = false;
|
bAlternateRFI = false;
|
||||||
|
bMergeBlocks = false;
|
||||||
SelectedLanguage = 0;
|
SelectedLanguage = 0;
|
||||||
bWii = false;
|
bWii = false;
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,7 @@ struct SCoreStartupParameter
|
||||||
bool bUseFastMem;
|
bool bUseFastMem;
|
||||||
bool bLockThreads;
|
bool bLockThreads;
|
||||||
bool bEnableCheats;
|
bool bEnableCheats;
|
||||||
|
bool bMergeBlocks;
|
||||||
|
|
||||||
bool bRunCompareServer;
|
bool bRunCompareServer;
|
||||||
bool bRunCompareClient;
|
bool bRunCompareClient;
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "PPCSymbolDB.h"
|
#include "PPCSymbolDB.h"
|
||||||
#include "SignatureDB.h"
|
#include "SignatureDB.h"
|
||||||
#include "PPCAnalyst.h"
|
#include "PPCAnalyst.h"
|
||||||
|
#include "../ConfigManager.h"
|
||||||
|
|
||||||
// Analyzes PowerPC code in memory to find functions
|
// Analyzes PowerPC code in memory to find functions
|
||||||
// After running, for each function we will know what functions it calls
|
// After running, for each function we will know what functions it calls
|
||||||
|
@ -454,6 +455,10 @@ u32 Flatten(u32 address, int *realsize, BlockStats *st, BlockRegStats *gpa, Bloc
|
||||||
if (numFollows > FUNCTION_FOLLOWING_THRESHOLD)
|
if (numFollows > FUNCTION_FOLLOWING_THRESHOLD)
|
||||||
follow = false;
|
follow = false;
|
||||||
|
|
||||||
|
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bMergeBlocks) {
|
||||||
|
follow = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!follow)
|
if (!follow)
|
||||||
{
|
{
|
||||||
if (opinfo->flags & FL_ENDBLOCK) //right now we stop early
|
if (opinfo->flags & FL_ENDBLOCK) //right now we stop early
|
||||||
|
|
|
@ -110,6 +110,7 @@ bool BootCore(const std::string& _rFilename)
|
||||||
game_ini.Get("Core", "BAT", &StartUp.bMMUBAT, StartUp.bMMUBAT);
|
game_ini.Get("Core", "BAT", &StartUp.bMMUBAT, StartUp.bMMUBAT);
|
||||||
game_ini.Get("Core", "TLBHack", &StartUp.iTLBHack, StartUp.iTLBHack);
|
game_ini.Get("Core", "TLBHack", &StartUp.iTLBHack, StartUp.iTLBHack);
|
||||||
game_ini.Get("Core", "AlternateRFI", &StartUp.bAlternateRFI, StartUp.bAlternateRFI);
|
game_ini.Get("Core", "AlternateRFI", &StartUp.bAlternateRFI, StartUp.bAlternateRFI);
|
||||||
|
game_ini.Get("Core", "BlockMerging", &StartUp.bMergeBlocks, StartUp.bMergeBlocks);
|
||||||
// Wii settings
|
// Wii settings
|
||||||
if (StartUp.bWii)
|
if (StartUp.bWii)
|
||||||
{
|
{
|
||||||
|
|
|
@ -298,6 +298,8 @@ void CISOProperties::CreateGUIControls(bool IsWad)
|
||||||
TLBHack->SetToolTip(wxT("Fast version of the MMU. Does not work for every game."));
|
TLBHack->SetToolTip(wxT("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 = new wxCheckBox(m_GameConfig, ID_RFI, _("Alternate RFI"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||||
AlternateRFI->SetToolTip(wxT("If a game hangs, works only in the Interpreter or Dolphin crashes, this option may fix the game."));
|
AlternateRFI->SetToolTip(wxT("If a game hangs, works only in the Interpreter or Dolphin crashes, this option may fix the game."));
|
||||||
|
BlockMerging = new wxCheckBox(m_GameConfig, ID_MERGEBLOCKS, _("Enable Block Merging"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||||
|
|
||||||
// Wii Console
|
// Wii Console
|
||||||
sbWiiOverrides = new wxStaticBoxSizer(wxVERTICAL, m_GameConfig, _("Wii Console"));
|
sbWiiOverrides = new wxStaticBoxSizer(wxVERTICAL, m_GameConfig, _("Wii Console"));
|
||||||
EnableProgressiveScan = new wxCheckBox(m_GameConfig, ID_ENABLEPROGRESSIVESCAN, _("Enable Progressive Scan"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
EnableProgressiveScan = new wxCheckBox(m_GameConfig, ID_ENABLEPROGRESSIVESCAN, _("Enable Progressive Scan"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||||
|
@ -325,6 +327,7 @@ void CISOProperties::CreateGUIControls(bool IsWad)
|
||||||
UseXFB = new wxCheckBox(m_GameConfig, ID_USEXFB, _("Use XFB"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
UseXFB = new wxCheckBox(m_GameConfig, ID_USEXFB, _("Use XFB"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||||
UseZTPSpeedupHack = new wxCheckBox(m_GameConfig, ID_ZTP_SPEEDUP, _("ZTP hack"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
UseZTPSpeedupHack = new wxCheckBox(m_GameConfig, ID_ZTP_SPEEDUP, _("ZTP hack"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||||
UseZTPSpeedupHack->SetToolTip(wxT("Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for ANY other game."));
|
UseZTPSpeedupHack->SetToolTip(wxT("Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for ANY other game."));
|
||||||
|
DListCache = new wxCheckBox(m_GameConfig, ID_DLISTCACHE, _("DList Cache"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator);
|
||||||
// Hack
|
// Hack
|
||||||
Hacktext = new wxStaticText(m_GameConfig, ID_HACK_TEXT, _("Projection Hack for: "), wxDefaultPosition, wxDefaultSize);
|
Hacktext = new wxStaticText(m_GameConfig, ID_HACK_TEXT, _("Projection Hack for: "), wxDefaultPosition, wxDefaultSize);
|
||||||
arrayStringFor_Hack.Add(_("None"));
|
arrayStringFor_Hack.Add(_("None"));
|
||||||
|
@ -359,6 +362,7 @@ void CISOProperties::CreateGUIControls(bool IsWad)
|
||||||
sbCoreOverrides->Add(MMUBAT, 0, wxEXPAND|wxLEFT, 5);
|
sbCoreOverrides->Add(MMUBAT, 0, wxEXPAND|wxLEFT, 5);
|
||||||
sbCoreOverrides->Add(TLBHack, 0, wxEXPAND|wxLEFT, 5);
|
sbCoreOverrides->Add(TLBHack, 0, wxEXPAND|wxLEFT, 5);
|
||||||
sbCoreOverrides->Add(AlternateRFI, 0, wxEXPAND|wxLEFT, 5);
|
sbCoreOverrides->Add(AlternateRFI, 0, wxEXPAND|wxLEFT, 5);
|
||||||
|
sbCoreOverrides->Add(BlockMerging, 0, wxEXPAND|wxLEFT, 5);
|
||||||
sbWiiOverrides->Add(EnableProgressiveScan, 0, wxEXPAND|wxLEFT, 5);
|
sbWiiOverrides->Add(EnableProgressiveScan, 0, wxEXPAND|wxLEFT, 5);
|
||||||
sbWiiOverrides->Add(EnableWideScreen, 0, wxEXPAND|wxLEFT, 5);
|
sbWiiOverrides->Add(EnableWideScreen, 0, wxEXPAND|wxLEFT, 5);
|
||||||
sbVideoOverrides->Add(ForceFiltering, 0, wxEXPAND|wxLEFT, 5);
|
sbVideoOverrides->Add(ForceFiltering, 0, wxEXPAND|wxLEFT, 5);
|
||||||
|
@ -368,6 +372,7 @@ void CISOProperties::CreateGUIControls(bool IsWad)
|
||||||
sbVideoOverrides->Add(DstAlphaPass, 0, wxEXPAND|wxLEFT, 5);
|
sbVideoOverrides->Add(DstAlphaPass, 0, wxEXPAND|wxLEFT, 5);
|
||||||
sbVideoOverrides->Add(UseXFB, 0, wxEXPAND|wxLEFT, 5);
|
sbVideoOverrides->Add(UseXFB, 0, wxEXPAND|wxLEFT, 5);
|
||||||
sbVideoOverrides->Add(UseZTPSpeedupHack, 0, wxEXPAND|wxLEFT, 5);
|
sbVideoOverrides->Add(UseZTPSpeedupHack, 0, wxEXPAND|wxLEFT, 5);
|
||||||
|
sbVideoOverrides->Add(DListCache, 0, wxEXPAND|wxLEFT, 5);
|
||||||
|
|
||||||
wxFlexGridSizer* fifosizer = new wxFlexGridSizer(2, 2, 0, 0);
|
wxFlexGridSizer* fifosizer = new wxFlexGridSizer(2, 2, 0, 0);
|
||||||
fifosizer->Add(Hacktext, 0, wxLEFT, 5);
|
fifosizer->Add(Hacktext, 0, wxLEFT, 5);
|
||||||
|
@ -842,6 +847,11 @@ void CISOProperties::LoadGameConfig()
|
||||||
else
|
else
|
||||||
AlternateRFI->Set3StateValue(wxCHK_UNDETERMINED);
|
AlternateRFI->Set3StateValue(wxCHK_UNDETERMINED);
|
||||||
|
|
||||||
|
if (GameIni.Get("Core", "BlockMerging", &bTemp))
|
||||||
|
BlockMerging->Set3StateValue((wxCheckBoxState)bTemp);
|
||||||
|
else
|
||||||
|
BlockMerging->Set3StateValue(wxCHK_UNDETERMINED);
|
||||||
|
|
||||||
if (GameIni.Get("Wii", "ProgressiveScan", &bTemp))
|
if (GameIni.Get("Wii", "ProgressiveScan", &bTemp))
|
||||||
EnableProgressiveScan->Set3StateValue((wxCheckBoxState)bTemp);
|
EnableProgressiveScan->Set3StateValue((wxCheckBoxState)bTemp);
|
||||||
else
|
else
|
||||||
|
@ -887,6 +897,11 @@ void CISOProperties::LoadGameConfig()
|
||||||
else
|
else
|
||||||
UseZTPSpeedupHack->Set3StateValue(wxCHK_UNDETERMINED);
|
UseZTPSpeedupHack->Set3StateValue(wxCHK_UNDETERMINED);
|
||||||
|
|
||||||
|
if (GameIni.Get("Video", "DlistCachingEnable", &bTemp))
|
||||||
|
DListCache->Set3StateValue((wxCheckBoxState)bTemp);
|
||||||
|
else
|
||||||
|
DListCache->Set3StateValue(wxCHK_UNDETERMINED);
|
||||||
|
|
||||||
if (GameIni.Get("Video", "FIFOWatermarkTightness", &sTemp))
|
if (GameIni.Get("Video", "FIFOWatermarkTightness", &sTemp))
|
||||||
WMTightness->SetValue(wxString(sTemp.c_str(), *wxConvCurrent));
|
WMTightness->SetValue(wxString(sTemp.c_str(), *wxConvCurrent));
|
||||||
else
|
else
|
||||||
|
@ -943,6 +958,11 @@ bool CISOProperties::SaveGameConfig()
|
||||||
else
|
else
|
||||||
GameIni.Set("Core", "AlternateRFI", AlternateRFI->Get3StateValue());
|
GameIni.Set("Core", "AlternateRFI", AlternateRFI->Get3StateValue());
|
||||||
|
|
||||||
|
if (BlockMerging->Get3StateValue() == wxCHK_UNDETERMINED)
|
||||||
|
GameIni.DeleteKey("Core", "BlockMerging");
|
||||||
|
else
|
||||||
|
GameIni.Set("Core", "BlockMerging", BlockMerging->Get3StateValue());
|
||||||
|
|
||||||
if (EnableProgressiveScan->Get3StateValue() == wxCHK_UNDETERMINED)
|
if (EnableProgressiveScan->Get3StateValue() == wxCHK_UNDETERMINED)
|
||||||
GameIni.DeleteKey("Wii", "ProgressiveScan");
|
GameIni.DeleteKey("Wii", "ProgressiveScan");
|
||||||
else
|
else
|
||||||
|
@ -988,6 +1008,11 @@ bool CISOProperties::SaveGameConfig()
|
||||||
else
|
else
|
||||||
GameIni.Set("Video", "ZTPSpeedupHack", UseZTPSpeedupHack->Get3StateValue());
|
GameIni.Set("Video", "ZTPSpeedupHack", UseZTPSpeedupHack->Get3StateValue());
|
||||||
|
|
||||||
|
if (DListCache->Get3StateValue() == wxCHK_UNDETERMINED)
|
||||||
|
GameIni.DeleteKey("Video", "DlistCachingEnable");
|
||||||
|
else
|
||||||
|
GameIni.Set("Video", "DlistCachingEnable", DListCache->Get3StateValue());
|
||||||
|
|
||||||
if (Hack->GetSelection() == -1)
|
if (Hack->GetSelection() == -1)
|
||||||
GameIni.DeleteKey("Video", "ProjectionHack");
|
GameIni.DeleteKey("Video", "ProjectionHack");
|
||||||
else
|
else
|
||||||
|
|
|
@ -85,13 +85,14 @@ class CISOProperties : public wxDialog
|
||||||
wxStaticText *OverrideText;
|
wxStaticText *OverrideText;
|
||||||
// Core
|
// Core
|
||||||
wxCheckBox *CPUThread, *SkipIdle, *MMU, *MMUBAT, *TLBHack;
|
wxCheckBox *CPUThread, *SkipIdle, *MMU, *MMUBAT, *TLBHack;
|
||||||
wxCheckBox *AlternateRFI;
|
wxCheckBox *AlternateRFI, *BlockMerging;
|
||||||
// Wii
|
// Wii
|
||||||
wxCheckBox *EnableProgressiveScan, *EnableWideScreen;
|
wxCheckBox *EnableProgressiveScan, *EnableWideScreen;
|
||||||
// Video
|
// Video
|
||||||
wxCheckBox *ForceFiltering,
|
wxCheckBox *ForceFiltering,
|
||||||
*EFBCopyDisable, *EFBToTextureEnable,
|
*EFBCopyDisable, *EFBToTextureEnable,
|
||||||
*SafeTextureCache, *DstAlphaPass, *UseXFB, *UseZTPSpeedupHack;
|
*SafeTextureCache, *DstAlphaPass, *UseXFB, *UseZTPSpeedupHack,
|
||||||
|
*DListCache;
|
||||||
wxStaticText *Hacktext;
|
wxStaticText *Hacktext;
|
||||||
wxArrayString arrayStringFor_Hack;
|
wxArrayString arrayStringFor_Hack;
|
||||||
wxChoice *Hack;
|
wxChoice *Hack;
|
||||||
|
@ -169,6 +170,7 @@ class CISOProperties : public wxDialog
|
||||||
ID_MMUBAT,
|
ID_MMUBAT,
|
||||||
ID_TLBHACK,
|
ID_TLBHACK,
|
||||||
ID_RFI,
|
ID_RFI,
|
||||||
|
ID_MERGEBLOCKS,
|
||||||
ID_FORCEFILTERING,
|
ID_FORCEFILTERING,
|
||||||
ID_EFBCOPYDISABLE,
|
ID_EFBCOPYDISABLE,
|
||||||
ID_EFBTOTEXTUREENABLE,
|
ID_EFBTOTEXTUREENABLE,
|
||||||
|
@ -176,6 +178,7 @@ class CISOProperties : public wxDialog
|
||||||
ID_DSTALPHAPASS,
|
ID_DSTALPHAPASS,
|
||||||
ID_USEXFB,
|
ID_USEXFB,
|
||||||
ID_ZTP_SPEEDUP,
|
ID_ZTP_SPEEDUP,
|
||||||
|
ID_DLISTCACHE,
|
||||||
ID_HACK_TEXT,
|
ID_HACK_TEXT,
|
||||||
ID_HACK,
|
ID_HACK,
|
||||||
ID_WMTIGHTNESS_TEXT,
|
ID_WMTIGHTNESS_TEXT,
|
||||||
|
|
|
@ -151,6 +151,8 @@ void VideoConfig::GameIniLoad(const char *ini_file)
|
||||||
iniFile.Get("Video", "UseNativeMips", &bUseNativeMips);
|
iniFile.Get("Video", "UseNativeMips", &bUseNativeMips);
|
||||||
if (iniFile.Exists("Video", "ZTPSpeedupHack"))
|
if (iniFile.Exists("Video", "ZTPSpeedupHack"))
|
||||||
iniFile.Get("Video", "ZTPSpeedupHack", &bZTPSpeedHack);
|
iniFile.Get("Video", "ZTPSpeedupHack", &bZTPSpeedHack);
|
||||||
|
if (iniFile.Exists("Video", "DlistCachingEnable"))
|
||||||
|
iniFile.Get("Video", "DlistCachingEnable", &bDlistCachingEnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VideoConfig::Save(const char *ini_file)
|
void VideoConfig::Save(const char *ini_file)
|
||||||
|
|
Loading…
Reference in New Issue