From e1a0f8884a0a7adff476b770da97842ed2e89d9f Mon Sep 17 00:00:00 2001 From: rice1964 Date: Fri, 11 Sep 2009 05:50:02 +0000 Subject: D3D: Projection hack feature. Have also moved related functions and constant definitions from OGL to VideoCommon, will clean up the code better if it works for D3D. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4252 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/VideoCommon/Src/GlobalControl.cpp | 69 +++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'Source/Core/VideoCommon/Src/GlobalControl.cpp') diff --git a/Source/Core/VideoCommon/Src/GlobalControl.cpp b/Source/Core/VideoCommon/Src/GlobalControl.cpp index 00cd8710a0..2dbb13901b 100644 --- a/Source/Core/VideoCommon/Src/GlobalControl.cpp +++ b/Source/Core/VideoCommon/Src/GlobalControl.cpp @@ -77,3 +77,72 @@ bool Projection_GetWidescreen() { return g_Widescreen; } + + +void UpdateProjectionHack(int iPhackvalue) +{ + bool bProjHack1=0, bPhackvalue1=0, bPhackvalue2=0; + float fhackvalue1=0, fhackvalue2=0; + switch(iPhackvalue) + { + case PROJECTION_HACK_NONE: + bProjHack1 = 0; + bPhackvalue1 = 0; + bPhackvalue2 = 0; + break; + case PROJECTION_HACK_ZELDA_TP_BLOOM_HACK: + bPhackvalue1 = 1; + bProjHack1 = 1; + break; + case PROJECTION_HACK_SONIC_AND_THE_BLACK_KNIGHT: + bPhackvalue1 = 1; + fhackvalue1 = 0.00002f; + bPhackvalue2 = 1; + fhackvalue2 = 1.999980f; + break; + case PROJECTION_HACK_BLEACH_VERSUS_CRUSADE: + bPhackvalue2 = 1; + fhackvalue2 = 0.5f; + bPhackvalue1 = 0; + bProjHack1 = 0; + break; + case PROJECTION_HACK_FINAL_FANTASY_CC_ECHO_OF_TIME: + bPhackvalue1 = 1; + fhackvalue1 = 0.8f; + bPhackvalue2 = 1; + fhackvalue2 = 1.2f; + bProjHack1 = 0; + break; + case PROJECTION_HACK_HARVESTMOON_MM: + bPhackvalue1 = 1; + fhackvalue1 = 0.0075f; + bPhackvalue2 = 0; + bProjHack1 = 0; + case PROJECTION_HACK_BATEN_KAITOS: + bPhackvalue1 = 1; + fhackvalue1 = 0.0026f; + bPhackvalue2 = 1; + fhackvalue2 = 1.9974f; + bProjHack1 = 1; + break; + case PROJECTION_HACK_BATEN_KAITOS_ORIGIN: + bPhackvalue1 = 1; + fhackvalue1 = 0.0012f; + bPhackvalue2 = 1; + fhackvalue2 = 1.9988f; + bProjHack1 = 1; + break; + case PROJECTION_HACK_SKIES_OF_ARCADIA: + bPhackvalue1 = 1; + fhackvalue1 = 0.04f; + bPhackvalue2 = 0; + bProjHack1 = 0; + break; + } + + // Set the projections hacks + Projection_SetHack0(bProjHack1); + Projection_SetHack1(ProjectionHack(bPhackvalue1 == 0 ? false : true, fhackvalue1)); + Projection_SetHack2(ProjectionHack(bPhackvalue2 == 0 ? false : true, fhackvalue2)); +} + -- cgit v1.2.3