- Added a macro that disables any upscale hacks.
- More work on the dx10 renderer upscale hacks.

PCSX2:
- Changed a warning so it reads more like a notice :p

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2366 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
ramapcsx2 2009-12-20 02:50:34 +00:00
parent 1a54ff0bb9
commit c86fc2c9b9
6 changed files with 68 additions and 36 deletions

View File

@ -168,9 +168,10 @@ bool i18n_SetLanguage( int wxLangId )
if( !IsEnglish(wxLangId) && !locale->AddCatalog( L"pcsx2main" ) )
{
Console.Warning( L"SetLanguage: Cannot find pcsx2main.mo file for language '%s' [%s]",
/*Console.Warning( L"SetLanguage: Cannot find pcsx2main.mo file for language '%s' [%s]",
wxLocale::GetLanguageName( locale->GetLanguage() ).c_str(), locale->GetCanonicalName().c_str()
);
);*/
Console.Warning("SetLanguage is not implemented yet, using English.");
return false;
}

View File

@ -222,8 +222,6 @@ bool GSRenderer::Merge(int field)
{
r += GSVector4i(0, 1).xyxy();
}
r += GSVector4i(1, 1, -1, -1); //crop a few of the outermost pixels, which are often buggy.
GSVector4 scale = GSVector4(tex[i]->GetScale()).xyxy();

View File

@ -46,6 +46,7 @@ void GSRendererDX10::VertexKick(bool skip)
dst.vi[0] = m_v.vi[0];
dst.vi[1] = m_v.vi[1];
#ifdef USE_UPSCALE_HACKS
if(tme && fst)
{
//GSVector4::storel(&dst.ST, m_v.GetUV());
@ -57,49 +58,56 @@ void GSRendererDX10::VertexKick(bool skip)
if (multiplier > 1) {
Udiff = m_v.UV.U & 4095;
Vdiff = m_v.UV.V & 4095;
if (Udiff != 0){
if (Udiff >= 4080) {/*printf("U+ %d %d\n", Udiff, m_v.UV.U);*/ Uadjust = -1; }
else if (Udiff <= 16) {/*printf("U- %d %d\n", Udiff, m_v.UV.U);*/ Uadjust = 1; }
}
if (Vdiff != 0){
if (Vdiff >= 4080) {/*printf("V+ %d %d\n", Vdiff, m_v.UV.V);*/ Vadjust = -1; }
else if (Vdiff <= 16) {/*printf("V- %d %d\n", Vdiff, m_v.UV.V);*/ Vadjust = 1; }
}
Udiff = m_v.UV.U & 255;
Vdiff = m_v.UV.V & 255;
if (Udiff != 0){
if (Udiff > 247) Uadjust = -1; //Mana Khemia 2
else if (Udiff < 9) Uadjust = 1; //Ar Tonelico 2
else
{
//float jaja = (float)m_v.UV.U / (float)(m_context->TEX0.TW*64);
//int test = (int)jaja ;
//float result = jaja-(float)test;
//
//if (result < 0.031251f || m_v.UV.U == 272 || m_v.UV.U == 400){
// Uadjust = 16; //Wild Arms Engine, still problems with Odin Sphere
//}
//else
Uadjust = 0;
}
if (Udiff >= 248) { Uadjust = -1; }
else if (Udiff <= 8) { Uadjust = 1; }
}
else Uadjust = 0;
if (Vdiff != 0){
if (Vdiff > 247) Vadjust = -1;
else if (Vdiff < 9) Vadjust = 1;
else
{
//float jaja = (float)m_v.UV.V / (float)(m_context->TEX0.TH*64);
//int test = (int)jaja ;
//float result = jaja-(float)test;
//
//if (result < 0.031251f || m_v.UV.V == 272 || m_v.UV.V == 400){
// Vadjust = 16; //Wild Arms Engine, still problems with Odin Sphere
//}
//else
Vadjust = 0;
}
if (Vdiff >= 248) { Vadjust = -1; }
else if (Vdiff <= 8) { Vadjust = 1; }
}
Udiff = m_v.UV.U & 15;
Vdiff = m_v.UV.V & 15;
if (Udiff != 0){
if (Udiff >= 15) { Uadjust = -1; }
else if (Udiff <= 1) { Uadjust = 1; }
}
if (Vdiff != 0){
if (Vdiff >= 15) { Vadjust = -1; }
else if (Vdiff <= 1) { Vadjust = 1; }
}
else Vadjust = 0;
}
dst.ST.S = (float)m_v.UV.U - Uadjust;
dst.ST.T = (float)m_v.UV.V - Vadjust;
}
else if (tme)
{
// Wip :p
//dst.XYZ.X += 5;
//dst.XYZ.Y += 5;
}
#else
if(tme && fst)
{
GSVector4::storel(&dst.ST, m_v.GetUV());
}
#endif
int count = 0;

View File

@ -624,6 +624,7 @@ GSTextureCache::Source* GSTextureCache::CreateSource(const GIFRegTEX0& TEX0, con
GSVector4 dr(0, 0, w, h);
#ifdef USE_UPSCALE_HACKS
float multiplier = (float) m_renderer->upscale_Multiplier()-1;
//dr += a few pixels, to fight blur/brightness layers beeing more offset the more we upscale
if(w > dstsize.x)
@ -643,7 +644,22 @@ GSTextureCache::Source* GSTextureCache::CreateSource(const GIFRegTEX0& TEX0, con
dr += GSVector4 (0.0f, 0.25f*multiplier, 0.0f, 0.25f*multiplier);
}
else dr += GSVector4 (0.0f, 0.5f*multiplier, 0.0f, 0.5f*multiplier);
#else
if(w > dstsize.x)
{
scale.x = (float)dstsize.x / tw;
dr.z = (float)dstsize.x * scale.x / dst->m_texture->GetScale().x;
w = dstsize.x;
}
if(h > dstsize.y)
{
scale.y = (float)dstsize.y / th;
dr.w = (float)dstsize.y * scale.y / dst->m_texture->GetScale().y;
h = dstsize.y;
}
#endif
GSVector4 sr(0, 0, w, h);
GSTexture* st = src->m_texture ? src->m_texture : dst->m_texture;

View File

@ -96,5 +96,12 @@ GSVector4i GSVector4i::fit(int preset) const
r = *this;
}
#ifdef USE_UPSCALE_HACKS //don't show outermost pixels, they're often buggy
r.x-=1;
r.y-=1;
r.z+=1;
r.w+=1;
#endif
return r;
}

View File

@ -123,6 +123,8 @@ typedef signed long long int64;
#define D3DCOLORWRITEENABLE_RGBA (D3DCOLORWRITEENABLE_RED | D3DCOLORWRITEENABLE_GREEN | D3DCOLORWRITEENABLE_BLUE | D3DCOLORWRITEENABLE_ALPHA)
#define USE_UPSCALE_HACKS //Hacks intended to fix upscaling / rendering glitches in HW renderers
// dxsdk beta missing these:
#define D3D11_SHADER_MACRO D3D10_SHADER_MACRO
#define ID3D11Blob ID3D10Blob