GSdx: trying to fix gaps between sprites that may still appear with d3d in native res

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1402 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
gabest11 2009-06-19 13:03:59 +00:00
parent edd6b785c1
commit df8c611084
8 changed files with 31 additions and 7 deletions

View File

@ -167,7 +167,7 @@ GSSource : public CBaseFilter, private CCritSec, public IGSSource
} }
}; };
CAutoPtr<GSSourceOutputPin> m_output; GSSourceOutputPin* m_output;
public: public:
@ -178,12 +178,17 @@ public:
, m_atpf(10000000i64 / fps) , m_atpf(10000000i64 / fps)
, m_now(0) , m_now(0)
{ {
m_output.Attach(new GSSourceOutputPin(m_size, m_atpf, this, this, hr)); m_output = new GSSourceOutputPin(m_size, m_atpf, this, this, hr);
// FIXME // FIXME
if(fps == 60) m_atpf = 166834; // = 10000000i64 / 59.94 if(fps == 60) m_atpf = 166834; // = 10000000i64 / 59.94
} }
virtual ~GSSource()
{
delete m_output;
}
DECLARE_IUNKNOWN; DECLARE_IUNKNOWN;
int GetPinCount() int GetPinCount()
@ -193,7 +198,7 @@ public:
CBasePin* GetPin(int n) CBasePin* GetPin(int n)
{ {
return n == 0 ? m_output.m_p : NULL; return n == 0 ? m_output : NULL;
} }
// IGSSource // IGSSource

View File

@ -29,6 +29,7 @@ CRC::Game CRC::m_games[] =
{0x42E05BAF, TomoyoAfter, JP}, {0x42E05BAF, TomoyoAfter, JP},
{0x7800DC84, Clannad, JP}, {0x7800DC84, Clannad, JP},
{0xA6167B59, Lamune, JP}, {0xA6167B59, Lamune, JP},
{0xDDB59F46, KyuuketsuKitanMoonties, JP},
{0xa39517ab, FFX, EU}, {0xa39517ab, FFX, EU},
{0xa39517ae, FFX, FR}, {0xa39517ae, FFX, FR},
{0x941bb7d9, FFX, DE}, {0x941bb7d9, FFX, DE},

View File

@ -31,6 +31,7 @@ public:
TomoyoAfter, TomoyoAfter,
Clannad, Clannad,
Lamune, Lamune,
KyuuketsuKitanMoonties,
FFX, FFX,
FFX2, FFX2,
FFXII, FFXII,

View File

@ -35,6 +35,8 @@ GSRenderer::GSRenderer(uint8* base, bool mt, void (*irq)(), GSDevice* dev)
m_aa1 = !!theApp.GetConfig("aa1", 0); m_aa1 = !!theApp.GetConfig("aa1", 0);
m_blur = !!theApp.GetConfig("blur", 0); m_blur = !!theApp.GetConfig("blur", 0);
if(m_nativeres) m_filter = 2;
s_n = 0; s_n = 0;
s_dump = !!theApp.GetConfig("dump", 0); s_dump = !!theApp.GetConfig("dump", 0);
s_save = !!theApp.GetConfig("save", 0); s_save = !!theApp.GetConfig("save", 0);

View File

@ -494,9 +494,9 @@ protected:
#pragma endregion #pragma endregion
#pragma region tomoyo after, clannad, lamune (palette uploaded in a point list, pure genius...) #pragma region palette uploaded in a point list, pure genius...
if(m_game.title == CRC::TomoyoAfter || m_game.title == CRC::Clannad || m_game.title == CRC::Lamune) if(m_game.title == CRC::TomoyoAfter || m_game.title == CRC::Clannad || m_game.title == CRC::Lamune || m_game.title == CRC::KyuuketsuKitanMoonties)
{ {
if(prim == GS_POINTLIST && !PRIM->TME) if(prim == GS_POINTLIST && !PRIM->TME)
{ {

View File

@ -211,6 +211,7 @@ void GSSettingsDlg::UpdateControls()
EnableWindow(GetDlgItem(m_hWnd, IDC_RESY), hw && !native); EnableWindow(GetDlgItem(m_hWnd, IDC_RESY), hw && !native);
EnableWindow(GetDlgItem(m_hWnd, IDC_RESY_EDIT), hw && !native); EnableWindow(GetDlgItem(m_hWnd, IDC_RESY_EDIT), hw && !native);
EnableWindow(GetDlgItem(m_hWnd, IDC_NATIVERES), hw); EnableWindow(GetDlgItem(m_hWnd, IDC_NATIVERES), hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_FILTER), hw && !native);
EnableWindow(GetDlgItem(m_hWnd, IDC_LOGZ), dx9 && hw); EnableWindow(GetDlgItem(m_hWnd, IDC_LOGZ), dx9 && hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_FBA), dx9 && hw); EnableWindow(GetDlgItem(m_hWnd, IDC_FBA), dx9 && hw);
EnableWindow(GetDlgItem(m_hWnd, IDC_AA1), sw); EnableWindow(GetDlgItem(m_hWnd, IDC_AA1), sw);

View File

@ -47,7 +47,14 @@ VS_OUTPUT vs_main(VS_INPUT input)
VS_OUTPUT output; VS_OUTPUT output;
output.p = float4(input.p, input.z, 0) * VertexScale - VertexOffset; // pos -= 0.05 (1/320 pixel) helps avoiding rounding problems (integral part of pos is usually 5 digits, 0.05 is about as low as we can go)
// example: ceil(afterseveralvertextransformations(y = 133)) => 134 => line 133 stays empty
// input granularity is 1/16 pixel, anything smaller than that won't step drawing up/left by one pixel
// example: 133.0625 (133 + 1/16) should start from line 134, ceil(133.0625 - 0.05) still above 133
float4 p = float4(input.p, input.z, 0) - float4(0.05f, 0.05f, 0, 0);
output.p = p * VertexScale - VertexOffset;
if(VS_TME == 1) if(VS_TME == 1)
{ {

View File

@ -39,7 +39,14 @@ VS_OUTPUT vs_main(VS_INPUT input)
VS_OUTPUT output; VS_OUTPUT output;
output.p = input.p * VertexScale - VertexOffset; // pos -= 0.05 (1/320 pixel) helps avoiding rounding problems (integral part of pos is usually 5 digits, 0.05 is about as low as we can go)
// example: ceil(afterseveralvertextransformations(y = 133)) => 134 => line 133 stays empty
// input granularity is 1/16 pixel, anything smaller than that won't step drawing up/left by one pixel
// example: 133.0625 (133 + 1/16) should start from line 134, ceil(133.0625 - 0.05) still above 133
float4 p = input.p - float4(0.05f, 0.05f, 0, 0);
output.p = p * VertexScale - VertexOffset;
if(VS_LOGZ == 1) if(VS_LOGZ == 1)
{ {