A attempt for a fix for the Zelda TP Bloom hack

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3228 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
death2droid 2009-05-14 06:28:10 +00:00
parent 4f0fbacd78
commit d0653aa53a
7 changed files with 45 additions and 43 deletions

View File

@ -77,7 +77,7 @@ void VertexShaderManager::Shutdown()
// =======================================================================================
// Syncs the shader constant buffers with xfmem
// ----------------
void VertexShaderManager::SetConstants(bool Hack_hack1 ,float Hack_value1 ,bool Hack_hack2 ,float Hack_value2 ,bool freeLook)
void VertexShaderManager::SetConstants(bool proj_hax_1,bool Hack_hack1 ,float Hack_value1 ,bool Hack_hack2 ,float Hack_value2 ,bool freeLook)
{
//nTransformMatricesChanged[0] = 0; nTransformMatricesChanged[1] = 256;
//nNormalMatricesChanged[0] = 0; nNormalMatricesChanged[1] = 96;
@ -262,7 +262,7 @@ void VertexShaderManager::SetConstants(bool Hack_hack1 ,float Hack_value1 ,bool
g_fProjectionMatrix[8] = 0.0f;
g_fProjectionMatrix[9] = 0.0f;
g_fProjectionMatrix[10] = (Hack_hack1 ? -(Hack_value1 + xfregs.rawProjection[4]) : xfregs.rawProjection[4]);
g_fProjectionMatrix[11] = (Hack_hack2 ? -(Hack_value2 + xfregs.rawProjection[5]) : xfregs.rawProjection[5]);
g_fProjectionMatrix[11] = (Hack_hack2 ? -(Hack_value2 + xfregs.rawProjection[5]) : xfregs.rawProjection[5]) + (proj_hax_1 ? 0.1f : 0.0f);
g_fProjectionMatrix[12] = 0.0f;
g_fProjectionMatrix[13] = 0.0f;

View File

@ -28,7 +28,7 @@ public:
static void Shutdown();
// constant management
static void SetConstants(bool Hack_hack1, float Hack_value1, bool Hack_hack2, float Hack_value2, bool freeLook);
static void SetConstants(bool proj_hax_1,bool Hack_hack1, float Hack_value1, bool Hack_hack2, float Hack_value2, bool freeLook);
static void SetViewport(float* _Viewport);
static void SetViewportChanged();

View File

@ -359,14 +359,9 @@ void CUCode_AX::MixAdd(short* _pBuffer, int _iSize)
k=0;
}
const u16 updpar = Memory_Read_U16(updaddr + k);
const u16 upddata = Memory_Read_U16(updaddr + k + 2);
// some safety checks, I hope it's enough
if(updaddr > 0x80000000 && updaddr < 0x817fffff
&& updpar < 63 && updpar > 3 && upddata >= 0 // updpar > 3 because we don't want to change

View File

@ -235,7 +235,7 @@ void Flush()
if (numVertices)
{
// set global constants
VertexShaderManager::SetConstants( false, 0, false, 0, false);
VertexShaderManager::SetConstants(false, false, 0, false, 0, false);
PixelShaderManager::SetConstants();
PixelShaderCache::SetShader();

View File

@ -99,6 +99,7 @@ struct Config
int iPhackvalue;
bool bPhackvalue1, bPhackvalue2;
float fhackvalue1, fhackvalue2;
bool bProjHack1;
int iLog; // CONF_ bits
int iSaveTargetId;

View File

@ -646,38 +646,44 @@ void Config::UpdateHack()
switch(g_Config.iPhackvalue)
{
case OGL_HACK_NONE:
g_Config.bPhackvalue1 = false;
g_Config.bPhackvalue2 = false;
g_Config.bProjHack1 = 0;
g_Config.bPhackvalue1 = 0;
g_Config.bPhackvalue2 = 0;
break;
case OGL_HACK_ZELDA_TP_BLOOM_HACK:
g_Config.bPhackvalue1 = true;
g_Config.bPhackvalue1 = 1;
g_Config.bProjHack1 = 1;
break;
case OGL_HACK_SUPER_MARIO_GALAXY:
g_Config.bPhackvalue1 = true;
g_Config.bPhackvalue1 = 1;
g_Config.fhackvalue1 = 0.00006f;
g_Config.bPhackvalue2 = false;
g_Config.bPhackvalue2 = 0;
g_Config.bProjHack1 = 0;
break;
case OGL_HACK_MARIO_KART_WII:
g_Config.bPhackvalue1 = true;
g_Config.bPhackvalue1 = 1;
g_Config.fhackvalue1 = 0.00006f;
g_Config.bPhackvalue2 = false;
g_Config.bPhackvalue2 = 0;
g_Config.bProjHack1 = 0;
break;
case OGL_HACK_SONIC_AND_THE_BLACK_KNIGHT:
g_Config.bPhackvalue1 = true;
g_Config.bPhackvalue1 = 1;
g_Config.fhackvalue1 = 0.00002f;
g_Config.bPhackvalue2 = true;
g_Config.bPhackvalue2 = 1;
g_Config.fhackvalue2 = 1.999980f;
break;
case OGL_HACK_BLEACH_VERSUS_CRUSADE:
g_Config.bPhackvalue2 = true;
g_Config.bPhackvalue2 = 1;
g_Config.fhackvalue2 = 0.5f;
g_Config.bPhackvalue1 = false;
g_Config.bPhackvalue1 = 0;
g_Config.bProjHack1 = 0;
break;
case OGL_HACK_FINAL_FANTASY_CC_ECHO_OF_TIME:
g_Config.bPhackvalue1 = true;
g_Config.bPhackvalue1 = 1;
g_Config.fhackvalue1 = 0.8f;
g_Config.bPhackvalue2 = true;
g_Config.bPhackvalue2 = 1;
g_Config.fhackvalue2 = 1.2f;
g_Config.bProjHack1 = 0;
break;
}
}

View File

@ -281,7 +281,7 @@ void Flush()
Renderer::SetRenderMode(Renderer::RM_Normal);
// set global constants
VertexShaderManager::SetConstants(g_Config.bPhackvalue1, g_Config.fhackvalue1, g_Config.bPhackvalue2, g_Config.fhackvalue2, g_Config.bFreeLook);
VertexShaderManager::SetConstants(g_Config.bProjHack1,g_Config.bPhackvalue1, g_Config.fhackvalue1, g_Config.bPhackvalue2, g_Config.fhackvalue2, g_Config.bFreeLook);
PixelShaderManager::SetConstants();
// finally bind