Move the ZTP hack to the game properties (reverted all changes from r6057 to the video plugins) due to some obvious reasons. Also some fixes to the coding style.

Remove a member variable which I introduced in r5907 although it never actually got used. Restores binary compatibility (at least in that regard) to pre-r5907 video plugins, but breaks any binaries after that :P

Update FIFO watermark tightness recommendations. 1000 is quite a high value I guess, but some people seem to need it.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6060 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
NeoBrainX
2010-08-05 18:41:02 +00:00
parent 8dc01b685f
commit d5d7beb6c7
13 changed files with 118 additions and 84 deletions

View File

@ -43,9 +43,9 @@ void BPInit()
memset(&bpmem, 0, sizeof(bpmem));
bpmem.bpMask = 0xFFFFFF;
mapTexAddress = 0;
numWrites = 0;
mapTexFound = false;
mapTexAddress = 0;
numWrites = 0;
mapTexFound = false;
}
void RenderToXFB(const BPCmd &bp, const EFBRectangle &rc, float yScale, float xfbLines, u32 xfbAddr, const u32 dstWidth, const u32 dstHeight)
@ -91,39 +91,34 @@ void BPWritten(const BPCmd& bp)
// FIXME: Hangs load-state, but should fix graphic-heavy games state loading
//s_bpCritical.Enter();
//BEGIN ZTP SPEEDUP HACK CHANGES
//This hunk of code disables the usual pipeline flush for certain BP Writes
//that occur while the minimap is being drawn in Zelda: twilight princess.
//This significantly increases speed while in hyrule field. In depth discussion
//on how this Hack came to be can be found at:http://forums.dolphin-emu.com/thread-10638.html
//-fircrestsk8
if (g_ActiveConfig.bZTPSpeedHack)
{
if (!mapTexFound)
{
if (bp.address == BPMEM_TEV_COLOR_ENV || bp.address == BPMEM_TEV_ALPHA_ENV)
{
numWrites++;
if (numWrites >= 100) //seem that if 100 consecutive BP writes are called to either of these addresses in ZTP,
{ //then it is safe to assume the map texture address is currently loaded into the BP memory
mapTexAddress = (bpmem.tex[0].texImage3[0].hex << 5);
mapTexFound = true;
WARN_LOG(VIDEO, "\nZTP map texture found at address %08x\n", mapTexAddress);
}
}
else
numWrites = 0;
FlushPipeline();
}
else
{
if ( ((bpmem.tex[0].texImage3[0].hex << 5) != mapTexAddress) || !(bpmem.tevorders[0].getEnable(0)) || bp.address == BPMEM_TREF )
FlushPipeline();
}
}
else
FlushPipeline();
//END ZTP SPEEDUP HACK CHANGES
// BEGIN ZTP SPEEDUP HACK CHANGES
// This hunk of code disables the usual pipeline flush for certain BP Writes
// that occur while the minimap is being drawn in Zelda: Twilight Princess.
// This significantly increases speed while in hyrule field. In depth discussion
// on how this Hack came to be can be found at: http://forums.dolphin-emu.com/thread-10638.html
// -fircrestsk8
if (g_ActiveConfig.bZTPSpeedHack)
{
if (!mapTexFound)
{
if (bp.address != BPMEM_TEV_COLOR_ENV && bp.address != BPMEM_TEV_ALPHA_ENV)
numWrites = 0;
else if (++numWrites >= 100) // seem that if 100 consecutive BP writes are called to either of these addresses in ZTP,
{ // then it is safe to assume the map texture address is currently loaded into the BP memory
mapTexAddress = bpmem.tex[0].texImage3[0].hex << 5;
mapTexFound = true;
WARN_LOG(VIDEO, "\nZTP map texture found at address %08x\n", mapTexAddress);
}
FlushPipeline();
}
else if ( (bpmem.tex[0].texImage3[0].hex << 5) != mapTexAddress ||
bpmem.tevorders[0].getEnable(0) == 0 ||
bp.address == BPMEM_TREF)
{
FlushPipeline();
}
} // END ZTP SPEEDUP HACK
else FlushPipeline();
((u32*)&bpmem)[bp.address] = bp.newvalue;

View File

@ -96,7 +96,6 @@ void VideoConfig::Load(const char *ini_file)
iniFile.Get("Hacks", "EFBScaledCopy", &bCopyEFBScaled, true);
iniFile.Get("Hacks", "FIFOWatermarkTightness", &iFIFOWatermarkTightness, 50);
iniFile.Get("Hacks", "ProjectionHack", &iPhackvalue, 0);
iniFile.Get("Hacks", "ZTPSpeedHack", &bZTPSpeedHack, false);
iniFile.Get("Hardware", "Adapter", &iAdapter, 0);
if (iAdapter == -1)
@ -202,7 +201,6 @@ void VideoConfig::Save(const char *ini_file)
iniFile.Set("Hacks", "EFBToTextureEnable", bCopyEFBToTexture);
iniFile.Set("Hacks", "EFBScaledCopy", bCopyEFBScaled);
iniFile.Set("Hacks", "ProjectionHack", iPhackvalue);
iniFile.Set("Hacks", "ZTPSpeedHack", bZTPSpeedHack);
iniFile.Set("Hardware", "Adapter", iAdapter);

View File

@ -125,7 +125,7 @@ struct VideoConfig
float fhackvalue1, fhackvalue2;
bool bProjHack1;
float fAspectRatioHackW, fAspectRatioHackH;
bool bZTPSpeedHack;
bool bZTPSpeedHack; // The Legend of Zelda: Twilight Princess
int iLog; // CONF_ bits
int iSaveTargetId;