diff --git a/plugins/GSdx/GSCrc.cpp b/plugins/GSdx/GSCrc.cpp index 5109e03e1c..145307ede8 100644 --- a/plugins/GSdx/GSCrc.cpp +++ b/plugins/GSdx/GSCrc.cpp @@ -323,6 +323,9 @@ CRC::Game CRC::m_games[] = {0xA60C2E65, Yakuza2, EU, 0}, {0x800E3E5A, Yakuza2, EU, 0}, {0x97E9C87E, Yakuza2, US, 0}, + {0x9000252A, SkyGunner, JP, 0}, + {0xA9461CB2, SkyGunner, US, 0}, + {0x6848699B, JamesBondEverythingOrNothing, US, 0}, }; hash_map CRC::m_map; diff --git a/plugins/GSdx/GSCrc.h b/plugins/GSdx/GSCrc.h index 9a4a9cd10c..faddeb7b65 100644 --- a/plugins/GSdx/GSCrc.h +++ b/plugins/GSdx/GSCrc.h @@ -125,7 +125,8 @@ public: Kunoichi, Yakuza, Yakuza2, - + SkyGunner, + JamesBondEverythingOrNothing, TitleCount, }; diff --git a/plugins/GSdx/GSState.cpp b/plugins/GSdx/GSState.cpp index 19f24f21d5..30365a7b5c 100644 --- a/plugins/GSdx/GSState.cpp +++ b/plugins/GSdx/GSState.cpp @@ -309,9 +309,10 @@ GSVector4i GSState::GetFrameRect(int i) int w = r.width(); int h = r.height(); - if(m_game.title == CRC::DevilMayCry3 && (m_game.region == CRC::US || m_game.region == CRC::JP)) + //Fixme: These games have an extra black bar at bottom of screen + if((m_game.title == CRC::DevilMayCry3 || m_game.title == CRC::SkyGunner) && (m_game.region == CRC::US || m_game.region == CRC::JP)) { - h = 448; + h = 448; // } if(m_regs->SMODE2.INT && m_regs->SMODE2.FFMD && h > 1) h >>= 1; @@ -3181,6 +3182,34 @@ bool GSC_Yakuza2(const GSFrameInfo& fi, int& skip) return true; } +bool GSC_SkyGunner(const GSFrameInfo& fi, int& skip) +{ + if(skip == 0) + { + + if(!fi.TME && !(fi.FBP == 0x0 || fi.FBP == 0x00800 || fi.FBP == 0x008c0 || fi.FBP == 0x03e00) && fi.FPSM == PSM_PSMCT32 && (fi.TBP0 == 0x0 || fi.TBP0 == 0x01800) && fi.TPSM == PSM_PSMCT32) + { + skip = 1; //Huge Vram usage + } + } + + return true; +} + +bool GSC_JamesBondEverythingOrNothing(const GSFrameInfo& fi, int& skip) +{ + if(skip == 0) + { + + if(fi.TME && (fi.FBP < 0x02000 && !(fi.FBP == 0x0 || fi.FBP == 0x00e00)) && fi.FPSM == PSM_PSMCT32 && (fi.TBP0 > 0x01c00 && fi.TBP0 < 0x03000) && fi.TPSM == PSM_PSMT8) + { + skip = 1; //Huge Vram usage + } + } + + return true; +} + //#define USE_DYNAMIC_CRC_HACK #ifdef USE_DYNAMIC_CRC_HACK @@ -3404,6 +3433,8 @@ bool GSState::IsBadFrame(int& skip, int UserHacks_SkipDraw) map[CRC::Kunoichi] = GSC_Kunoichi; map[CRC::Yakuza] = GSC_Yakuza; map[CRC::Yakuza2] = GSC_Yakuza2; + map[CRC::SkyGunner] = GSC_SkyGunner; + map[CRC::JamesBondEverythingOrNothing] = GSC_JamesBondEverythingOrNothing; } // TODO: just set gsc in SetGameCRC once diff --git a/plugins/GSdx/res/fxaa.fx b/plugins/GSdx/res/fxaa.fx index 5e460f1bbd..095d289197 100644 --- a/plugins/GSdx/res/fxaa.fx +++ b/plugins/GSdx/res/fxaa.fx @@ -1,6 +1,7 @@ #ifdef SHADER_MODEL // make safe to include in resource file to enforce dependency #define FXAA_PC 1 +#define FXAA_QUALITY__SUBPIX 0.0 #if SHADER_MODEL >= 0x400