GSdx: now I think only the window classes of mfc are left to be replaced (main window, config dialog), trying to get familiar with wx...

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1219 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
gabest11 2009-05-18 11:08:04 +00:00
parent 3f9a45c8aa
commit 5f392aba63
17 changed files with 291 additions and 249 deletions

View File

@ -20,6 +20,7 @@
*/
#include "stdafx.h"
#include "GSdx.h"
#include "GSUtil.h"
#include "GPURendererSW.h"
#include "GSDevice7.h"
@ -52,30 +53,22 @@ EXPORT_C_(uint32) PSEgetLibVersion()
EXPORT_C_(int32) GPUinit()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO
return 0;
}
EXPORT_C_(int32) GPUshutdown()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO
return 0;
}
EXPORT_C_(int32) GPUclose()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
delete s_gpu;
s_gpu = NULL;
#ifdef _WINDOWS
if(SUCCEEDED(s_hr))
{
::CoUninitialize();
@ -83,32 +76,47 @@ EXPORT_C_(int32) GPUclose()
s_hr = E_FAIL;
}
#endif
return 0;
}
EXPORT_C_(int32) GPUopen(HWND hWnd)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(!GSUtil::CheckDirectX() || !GSUtil::CheckSSE())
{
return -1;
}
GPUclose();
GPURendererSettings rs;
rs.m_filter = AfxGetApp()->GetProfileInt(_T("GPUSettings"), _T("filter"), 0);
rs.m_dither = AfxGetApp()->GetProfileInt(_T("GPUSettings"), _T("dithering"), 1);
rs.m_aspectratio = AfxGetApp()->GetProfileInt(_T("GPUSettings"), _T("AspectRatio"), 1);
rs.m_vsync = !!AfxGetApp()->GetProfileInt(_T("GPUSettings"), _T("vsync"), FALSE);
rs.m_scale.x = AfxGetApp()->GetProfileInt(_T("GPUSettings"), _T("scale_x"), 0);
rs.m_scale.y = AfxGetApp()->GetProfileInt(_T("GPUSettings"), _T("scale_y"), 0);
int threads = 1;
int renderer = 1;
int threads = AfxGetApp()->GetProfileInt(_T("GPUSettings"), _T("swthreads"), 1);
#ifdef _WINDOWS
int renderer = AfxGetApp()->GetProfileInt(_T("GPUSettings"), _T("Renderer"), 1);
AFX_MANAGE_STATE(AfxGetStaticModuleState());
s_hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(!GSUtil::CheckDirectX())
{
return -1;
}
#endif
if(!GSUtil::CheckSSE())
{
return -1;
}
rs.m_filter = theApp.GetConfig("filter", 0);
rs.m_dither = theApp.GetConfig("dithering", 1);
rs.m_aspectratio = theApp.GetConfig("AspectRatio", 1);
rs.m_vsync = !!theApp.GetConfig("vsync", 0);
rs.m_scale.x = theApp.GetConfig("scale_x", 0);
rs.m_scale.y = theApp.GetConfig("scale_y", 0);
threads = theApp.GetConfig("swthreads", 1);
renderer = theApp.GetConfig("Renderer", 1);
switch(renderer)
{
@ -119,8 +127,6 @@ EXPORT_C_(int32) GPUopen(HWND hWnd)
// TODO: case 3: s_gpu = new GPURendererNull<GSDeviceNull>(rs, threads); break;
}
s_hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(!s_gpu->Create(hWnd))
{
GPUclose();
@ -133,6 +139,9 @@ EXPORT_C_(int32) GPUopen(HWND hWnd)
EXPORT_C_(int32) GPUconfigure()
{
#ifdef _WINDOWS
AFX_MANAGE_STATE(AfxGetStaticModuleState());
GPUSettingsDlg dlg;
@ -143,13 +152,13 @@ EXPORT_C_(int32) GPUconfigure()
GPUinit();
}
#endif
return 0;
}
EXPORT_C_(int32) GPUtest()
{
// TODO
return 0;
}

View File

@ -381,6 +381,15 @@ public:
virtual bool MakeSnapshot(const string& path)
{
return m_dev.SaveCurrent(format("%s_%s", path.c_str(), CTime::GetCurrentTime().Format(_T("%Y%m%d%H%M%S"))) + ".bmp");
time_t t = time(NULL);
char buff[16];
if(!strftime(buff, sizeof(buff), "%Y%m%d%H%M%S", localtime(&t)))
{
return false;
}
return m_dev.SaveCurrent(format("%s_%s.bmp", path.c_str(), buff));
}
};

View File

@ -130,8 +130,6 @@ BOOL GPUSettingsDlg::OnInitDialog()
{
__super::OnInitDialog();
CWinApp* pApp = AfxGetApp();
D3DCAPS9 caps;
memset(&caps, 0, sizeof(caps));
caps.PixelShaderVersion = D3DPS_VERSION(0, 0);
@ -154,9 +152,9 @@ BOOL GPUSettingsDlg::OnInitDialog()
if(CComPtr<IDirect3D9> d3d = Direct3DCreate9(D3D_SDK_VERSION))
{
uint32 ModeWidth = pApp->GetProfileInt(_T("Settings"), _T("ModeWidth"), 0);
uint32 ModeHeight = pApp->GetProfileInt(_T("Settings"), _T("ModeHeight"), 0);
uint32 ModeRefreshRate = pApp->GetProfileInt(_T("Settings"), _T("ModeRefreshRate"), 0);
uint32 ModeWidth = theApp.GetConfig("ModeWidth", 0);
uint32 ModeHeight = theApp.GetConfig("ModeHeight", 0);
uint32 ModeRefreshRate = theApp.GetConfig("ModeRefreshRate", 0);
uint32 nModes = d3d->GetAdapterModeCount(D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8);
@ -194,12 +192,12 @@ BOOL GPUSettingsDlg::OnInitDialog()
renderers.push_back(g_renderers[i]);
}
GSSetting::InitComboBox(&renderers[0], renderers.size(), m_renderer, pApp->GetProfileInt(_T("GPUSettings"), _T("Renderer"), 1));
GSSetting::InitComboBox(g_psversion, countof(g_psversion), m_psversion, pApp->GetProfileInt(_T("Settings"), _T("PixelShaderVersion2"), D3DPS_VERSION(2, 0)), caps.PixelShaderVersion);
GSSetting::InitComboBox(g_filter, countof(g_filter), m_filter, pApp->GetProfileInt(_T("GPUSettings"), _T("filter"), 0));
GSSetting::InitComboBox(g_dithering, countof(g_dithering), m_dithering, pApp->GetProfileInt(_T("GPUSettings"), _T("dithering"), 1));
GSSetting::InitComboBox(g_aspectratio, countof(g_aspectratio), m_aspectratio, pApp->GetProfileInt(_T("GPUSettings"), _T("AspectRatio"), 1));
GSSetting::InitComboBox(g_internalresolution, countof(g_internalresolution), m_internalresolution, pApp->GetProfileInt(_T("GPUSettings"), _T("scale_x"), 0) | (pApp->GetProfileInt(_T("GPUSettings"), _T("scale_y"), 0) << 2));
GSSetting::InitComboBox(&renderers[0], renderers.size(), m_renderer, theApp.GetConfig("Renderer", 1));
GSSetting::InitComboBox(g_psversion, countof(g_psversion), m_psversion, theApp.GetConfig("PixelShaderVersion2", D3DPS_VERSION(2, 0)), caps.PixelShaderVersion);
GSSetting::InitComboBox(g_filter, countof(g_filter), m_filter, theApp.GetConfig("filter", 0));
GSSetting::InitComboBox(g_dithering, countof(g_dithering), m_dithering, theApp.GetConfig("dithering", 1));
GSSetting::InitComboBox(g_aspectratio, countof(g_aspectratio), m_aspectratio, theApp.GetConfig("AspectRatio", 1));
GSSetting::InitComboBox(g_internalresolution, countof(g_internalresolution), m_internalresolution, theApp.GetConfig("scale_x", 0) | (theApp.GetConfig("scale_y", 0) << 2));
OnCbnSelchangeCombo1();
@ -207,7 +205,7 @@ BOOL GPUSettingsDlg::OnInitDialog()
//
m_swthreads.SetRange(1, 16);
m_swthreads.SetPos(pApp->GetProfileInt(_T("GPUSettings"), _T("swthreads"), 1));
m_swthreads.SetPos(theApp.GetConfig("swthreads", 1));
//
@ -219,53 +217,51 @@ BOOL GPUSettingsDlg::OnInitDialog()
void GPUSettingsDlg::OnOK()
{
CWinApp* pApp = AfxGetApp();
UpdateData();
if(m_resolution.GetCurSel() >= 0)
{
D3DDISPLAYMODE& mode = *(D3DDISPLAYMODE*)m_resolution.GetItemData(m_resolution.GetCurSel());
pApp->WriteProfileInt(_T("Settings"), _T("ModeWidth"), mode.Width);
pApp->WriteProfileInt(_T("Settings"), _T("ModeHeight"), mode.Height);
pApp->WriteProfileInt(_T("Settings"), _T("ModeRefreshRate"), mode.RefreshRate);
theApp.SetConfig("ModeWidth", (int)mode.Width);
theApp.SetConfig("ModeHeight", (int)mode.Height);
theApp.SetConfig("ModeRefreshRate", (int)mode.RefreshRate);
}
if(m_renderer.GetCurSel() >= 0)
{
pApp->WriteProfileInt(_T("GPUSettings"), _T("Renderer"), (DWORD)m_renderer.GetItemData(m_renderer.GetCurSel()));
theApp.SetConfig("Renderer", (int)m_renderer.GetItemData(m_renderer.GetCurSel()));
}
if(m_psversion.GetCurSel() >= 0)
{
pApp->WriteProfileInt(_T("Settings"), _T("PixelShaderVersion2"), (DWORD)m_psversion.GetItemData(m_psversion.GetCurSel()));
theApp.SetConfig("PixelShaderVersion2", (int)m_psversion.GetItemData(m_psversion.GetCurSel()));
}
if(m_filter.GetCurSel() >= 0)
{
pApp->WriteProfileInt(_T("GPUSettings"), _T("filter"), (DWORD)m_filter.GetItemData(m_filter.GetCurSel()));
theApp.SetConfig("filter", (int)m_filter.GetItemData(m_filter.GetCurSel()));
}
if(m_dithering.GetCurSel() >= 0)
{
pApp->WriteProfileInt(_T("GPUSettings"), _T("dithering"), (DWORD)m_dithering.GetItemData(m_dithering.GetCurSel()));
theApp.SetConfig("dithering", (int)m_dithering.GetItemData(m_dithering.GetCurSel()));
}
if(m_aspectratio.GetCurSel() >= 0)
{
pApp->WriteProfileInt(_T("GPUSettings"), _T("AspectRatio"), (DWORD)m_aspectratio.GetItemData(m_aspectratio.GetCurSel()));
theApp.SetConfig("AspectRatio", (int)m_aspectratio.GetItemData(m_aspectratio.GetCurSel()));
}
if(m_internalresolution.GetCurSel() >= 0)
{
DWORD value = (DWORD)m_internalresolution.GetItemData(m_internalresolution.GetCurSel());
int value = (int)m_internalresolution.GetItemData(m_internalresolution.GetCurSel());
pApp->WriteProfileInt(_T("GPUSettings"), _T("scale_x"), value & 3);
pApp->WriteProfileInt(_T("GPUSettings"), _T("scale_y"), (value >> 2) & 3);
theApp.SetConfig("scale_x", value & 3);
theApp.SetConfig("scale_y", (value >> 2) & 3);
}
pApp->WriteProfileInt(_T("GPUSettings"), _T("swthreads"), m_swthreads.GetPos());
theApp.SetConfig("swthreads", m_swthreads.GetPos());
__super::OnOK();
}

View File

@ -71,14 +71,11 @@ EXPORT_C GSsetBaseMem(uint8* mem)
EXPORT_C_(INT32) GSinit()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return 0;
}
EXPORT_C GSshutdown()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
}
EXPORT_C GSclose()
@ -87,36 +84,51 @@ EXPORT_C GSclose()
s_gs = NULL;
#ifdef _WINDOWS
if(SUCCEEDED(s_hr))
{
::CoUninitialize();
s_hr = E_FAIL;
}
#endif
}
static INT32 GSopen(void* dsp, char* title, int mt, int renderer)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(!GSUtil::CheckDirectX() || !GSUtil::CheckSSE())
{
return -1;
}
GSclose();
GSRendererSettings rs;
rs.m_interlace = AfxGetApp()->GetProfileInt(_T("Settings"), _T("interlace"), 0);
rs.m_aspectratio = AfxGetApp()->GetProfileInt(_T("Settings"), _T("aspectratio"), 1);
rs.m_filter = AfxGetApp()->GetProfileInt(_T("Settings"), _T("filter"), 1);
rs.m_vsync = !!AfxGetApp()->GetProfileInt(_T("Settings"), _T("vsync"), FALSE);
rs.m_nativeres = !!AfxGetApp()->GetProfileInt(_T("Settings"), _T("nativeres"), FALSE);
rs.m_aa1 = !!AfxGetApp()->GetProfileInt(_T("Settings"), _T("aa1"), FALSE);
rs.m_blur = !!AfxGetApp()->GetProfileInt(_T("Settings"), _T("blur"), FALSE);
int threads = 1;
int threads = AfxGetApp()->GetProfileInt(_T("Settings"), _T("swthreads"), 1);
#ifdef _WINDOWS
s_hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(!GSUtil::CheckDirectX())
{
return -1;
}
#endif
if(!GSUtil::CheckSSE())
{
return -1;
}
rs.m_interlace = theApp.GetConfig("interlace", 0);
rs.m_aspectratio = theApp.GetConfig("aspectratio", 1);
rs.m_filter = theApp.GetConfig("filter", 1);
rs.m_vsync = !!theApp.GetConfig("vsync", 0);
rs.m_nativeres = !!theApp.GetConfig("nativeres", 0);
rs.m_aa1 = !!theApp.GetConfig("aa1", 0);
rs.m_blur = !!theApp.GetConfig("blur", 0);
threads = theApp.GetConfig("swthreads", 1);
switch(renderer)
{
@ -131,8 +143,6 @@ static INT32 GSopen(void* dsp, char* title, int mt, int renderer)
case 7: s_gs = new GSRendererNull<GSDeviceNull>(s_basemem, !!mt, s_irq, rs); break;
}
s_hr = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(!s_gs->Create(title))
{
GSclose();
@ -151,8 +161,12 @@ static INT32 GSopen(void* dsp, char* title, int mt, int renderer)
EXPORT_C_(INT32) GSopen(void* dsp, char* title, int mt)
{
#ifdef _WINDOWS
AFX_MANAGE_STATE(AfxGetStaticModuleState());
#endif
int renderer;
if(mt == 2)
@ -164,7 +178,7 @@ EXPORT_C_(INT32) GSopen(void* dsp, char* title, int mt)
else
{
// normal init
renderer = AfxGetApp()->GetProfileInt(_T("Settings"), _T("renderer"), 0);
renderer = theApp.GetConfig("renderer", 0);
}
return GSopen(dsp, title, mt, renderer);
@ -212,6 +226,20 @@ EXPORT_C GSgifTransfer3(uint8* mem, uint32 size)
EXPORT_C GSvsync(int field)
{
#ifdef _WINDOWS
MSG msg;
memset(&msg, 0, sizeof(msg));
while(msg.message != WM_QUIT && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
#endif
s_gs->VSync(field);
}
@ -220,8 +248,9 @@ EXPORT_C_(uint32) GSmakeSnapshot(char* path)
return s_gs->MakeSnapshot(string(path) + "gsdx");
}
EXPORT_C GSkeyEvent(keyEvent* ev)
EXPORT_C GSkeyEvent(GSKeyEventData* e)
{
s_gs->KeyEvent(e);
}
EXPORT_C_(int) GSfreeze(int mode, GSFreezeData* data)
@ -244,6 +273,8 @@ EXPORT_C_(int) GSfreeze(int mode, GSFreezeData* data)
EXPORT_C GSconfigure()
{
#ifdef _WINDOWS
AFX_MANAGE_STATE(AfxGetStaticModuleState());
GSSettingsDlg dlg;
@ -253,21 +284,14 @@ EXPORT_C GSconfigure()
GSshutdown();
GSinit();
}
#endif
}
EXPORT_C_(INT32) GStest()
{
return 0;
// TODO
/*
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CComPtr<ID3D10Device> dev;
return SUCCEEDED(D3D10CreateDevice(NULL, D3D10_DRIVER_TYPE_HARDWARE, NULL, 0, D3D10_SDK_VERSION, &dev)) ? 0 : -1;
*/
}
EXPORT_C GSabout()
@ -294,6 +318,8 @@ EXPORT_C GSsetFrameSkip(int frameskip)
s_gs->SetFrameSkip(frameskip);
}
#ifdef _WINDOWS
EXPORT_C GSReplay(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{
int renderer = -1;
@ -597,3 +623,4 @@ EXPORT_C GSBenchmark(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow
fclose(file);
}
#endif

View File

@ -1163,7 +1163,7 @@ struct GSPrivRegSet
#pragma pack(pop)
enum {KEYPRESS=1, KEYRELEASE=2};
struct keyEvent {uint32 key, event;};
struct GSKeyEventData {uint32 key, type;};
enum {FREEZE_LOAD=0, FREEZE_SAVE=1, FREEZE_SIZE=2};
struct GSFreezeData {int size; uint8* data;};

View File

@ -21,6 +21,7 @@
#include "stdafx.h"
#include <afxpriv.h>
#include "GSdx.h"
#include "GSCaptureDlg.h"
// GSCaptureDlg dialog
@ -29,9 +30,9 @@ IMPLEMENT_DYNAMIC(GSCaptureDlg, CDialog)
GSCaptureDlg::GSCaptureDlg(CWnd* pParent /*=NULL*/)
: CDialog(GSCaptureDlg::IDD, pParent)
{
m_width = AfxGetApp()->GetProfileInt(_T("Capture"), _T("Width"), 640);
m_height = AfxGetApp()->GetProfileInt(_T("Capture"), _T("Height"), 480);
m_filename = AfxGetApp()->GetProfileString(_T("Capture"), _T("FileName"));
m_width = theApp.GetConfig("CaptureWidth", 640);
m_height = theApp.GetConfig("CaptureHeight", 480);
m_filename = theApp.GetConfig("CaptureFileName", "").c_str();
}
GSCaptureDlg::~GSCaptureDlg()
@ -123,7 +124,7 @@ BOOL GSCaptureDlg::OnInitDialog()
//
CString DisplayNameToFind = AfxGetApp()->GetProfileString(_T("Capture"), _T("VideoCodecDisplayName"));
CString DisplayNameToFind = theApp.GetConfig("CaptureVideoCodecDisplayName", "").c_str();
for(int i = 0; i < m_codeclist.GetCount(); i++)
{
@ -230,10 +231,10 @@ void GSCaptureDlg::OnBnClickedOk()
m_enc = c.filter;
AfxGetApp()->WriteProfileInt(_T("Capture"), _T("Width"), m_width);
AfxGetApp()->WriteProfileInt(_T("Capture"), _T("Height"), m_height);
AfxGetApp()->WriteProfileString(_T("Capture"), _T("FileName"), m_filename);
AfxGetApp()->WriteProfileString(_T("Capture"), _T("VideoCodecDisplayName"), CString(c.DisplayName));
theApp.SetConfig("CaptureWidth", m_width);
theApp.SetConfig("CaptureHeight", m_height);
theApp.SetConfig("CaptureFileName", m_filename);
theApp.SetConfig("CaptureVideoCodecDisplayName", CString(c.DisplayName));
OnOK();
}

View File

@ -82,6 +82,7 @@ CRC::Game CRC::m_games[] =
{0xC19A374E, SoTC, US},
{0x7D8F539A, SoTC, EU},
{0x3122B508, OnePieceGrandAdventure, US},
{0x8DF14A24, OnePieceGrandAdventure, Unknown},
{0x6F8545DB, ICO, US},
{0xB01A4C95, ICO, JP},
{0x5C991F4E, ICO, Unknown},

View File

@ -20,6 +20,7 @@
*/
#include "stdafx.h"
#include "GSdx.h"
#include "GSDevice9.h"
#include "resource.h"
@ -102,7 +103,7 @@ bool GSDevice9::Create(HWND hWnd, bool vsync)
m_d3d->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &m_d3dcaps);
bool fs = AfxGetApp()->GetProfileInt(_T("Settings"), _T("ModeWidth"), 0) > 0;
bool fs = theApp.GetConfig("ModeWidth", 0) > 0;
if(!Reset(1, 1, fs)) return false;
@ -110,7 +111,7 @@ bool GSDevice9::Create(HWND hWnd, bool vsync)
// shaders
DWORD psver = AfxGetApp()->GetProfileInt(_T("Settings"), _T("PixelShaderVersion2"), D3DPS_VERSION(2, 0));
uint32 psver = (uint32)theApp.GetConfig("PixelShaderVersion2", D3DPS_VERSION(2, 0));
if(psver > m_d3dcaps.PixelShaderVersion)
{
@ -262,9 +263,9 @@ bool GSDevice9::Reset(int w, int h, bool fs)
// m_pp.Flags |= D3DPRESENTFLAG_VIDEO; // enables tv-out (but I don't think anyone would still use a regular tv...)
int mw = AfxGetApp()->GetProfileInt(_T("Settings"), _T("ModeWidth"), 0);
int mh = AfxGetApp()->GetProfileInt(_T("Settings"), _T("ModeHeight"), 0);
int mrr = AfxGetApp()->GetProfileInt(_T("Settings"), _T("ModeRefreshRate"), 0);
int mw = theApp.GetConfig("ModeWidth", 0);
int mh = theApp.GetConfig("ModeHeight", 0);
int mrr = theApp.GetConfig("ModeRefreshRate", 0);
if(fs && mw > 0 && mh > 0 && mrr >= 0)
{

View File

@ -21,6 +21,7 @@
#pragma once
#include "GSdx.h"
#include "GSWnd.h"
#include "GSState.h"
#include "GSVertexList.h"
@ -43,56 +44,10 @@ class GSRendererBase : public GSState, protected GSRendererSettings
protected:
bool m_osd;
void ProcessWindowMessages()
{
MSG msg;
memset(&msg, 0, sizeof(msg));
while(msg.message != WM_QUIT && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if(OnMessage(msg))
{
continue;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
virtual bool OnMessage(const MSG& msg)
{
if(msg.message == WM_KEYDOWN)
{
int step = (::GetAsyncKeyState(VK_SHIFT) & 0x8000) ? -1 : 1;
switch(msg.wParam)
{
case VK_F5:
m_interlace = (m_interlace + 7 + step) % 7;
return true;
case VK_F6:
m_aspectratio = (m_aspectratio + 3 + step) % 3;
return true;
case VK_F7:
m_wnd.SetWindowText(_T("PCSX2"));
m_osd = !m_osd;
return true;
case VK_DELETE:
m_aa1 = !m_aa1;
return true;
case VK_END:
m_blur = !m_blur;
return true;
}
}
return false;
}
public:
GSWnd m_wnd;
GSCapture m_capture;
string m_snapshot;
public:
GSRendererBase(uint8* base, bool mt, void (*irq)(), const GSRendererSettings& rs)
@ -108,9 +63,59 @@ public:
m_blur = rs.m_blur;
};
void KeyEvent(GSKeyEventData* e)
{
if(e->type == KEYPRESS)
{
// TODO: linux
int step = (::GetAsyncKeyState(VK_SHIFT) & 0x8000) ? -1 : 1;
switch(e->key)
{
case VK_F5:
m_interlace = (m_interlace + 7 + step) % 7;
return;
case VK_F6:
m_aspectratio = (m_aspectratio + 3 + step) % 3;
return;
case VK_F7:
m_wnd.SetWindowText(_T("PCSX2"));
m_osd = !m_osd;
return;
case VK_F12:
if(m_capture.IsCapturing()) m_capture.EndCapture();
else m_capture.BeginCapture(GetFPS());
return;
case VK_DELETE:
m_aa1 = !m_aa1;
return;
case VK_END:
m_blur = !m_blur;
return;
}
}
}
bool MakeSnapshot(const string& path)
{
if(m_snapshot.empty())
{
time_t t = time(NULL);
char buff[16];
if(strftime(buff, sizeof(buff), "%Y%m%d%H%M%S", localtime(&t)))
{
m_snapshot = format("%s_%s", path.c_str(), buff);
}
}
return true;
}
virtual bool Create(const string& title) = 0;
virtual void VSync(int field) = 0;
virtual bool MakeSnapshot(const string& path) = 0;
};
template<class Device> class GSRenderer : public GSRendererBase
@ -382,21 +387,6 @@ protected:
}
}
virtual bool OnMessage(const MSG& msg)
{
if(msg.message == WM_KEYDOWN)
{
switch(msg.wParam)
{
case VK_F12:
if(m_capture.IsCapturing()) m_capture.EndCapture();
else m_capture.BeginCapture(GetFPS());
return true;
}
}
return __super::OnMessage(msg);
}
public:
Device m_dev;
@ -407,18 +397,15 @@ public:
bool s_save;
bool s_savez;
string m_snapshot;
GSCapture m_capture;
public:
GSRenderer(uint8* base, bool mt, void (*irq)(), const GSRendererSettings& rs, bool psrr)
: GSRendererBase(base, mt, irq, rs)
, m_psrr(psrr)
{
s_n = 0;
s_dump = !!AfxGetApp()->GetProfileInt(_T("Debug"), _T("dump"), 0);
s_save = !!AfxGetApp()->GetProfileInt(_T("Debug"), _T("save"), 0);
s_savez = !!AfxGetApp()->GetProfileInt(_T("Debug"), _T("savez"), 0);
s_dump = !!theApp.GetConfig("dump", 0);
s_save = !!theApp.GetConfig("save", 0);
s_savez = !!theApp.GetConfig("savez", 0);
}
bool Create(const string& title)
@ -446,8 +433,6 @@ public:
m_perfmon.Put(GSPerfMon::Frame);
ProcessWindowMessages();
field = field ? 1 : 0;
if(!Merge(field)) return;
@ -530,16 +515,6 @@ public:
DoCapture();
}
bool MakeSnapshot(const string& path)
{
if(m_snapshot.empty())
{
m_snapshot = format("%s_%s", path.c_str(), CTime::GetCurrentTime().Format(_T("%Y%m%d%H%M%S")));
}
return true;
}
virtual void MinMaxUV(int w, int h, GSVector4i& r) {r = GSVector4i(0, 0, w, h);}
virtual bool CanUpscale() {return !m_nativeres;}
};

View File

@ -677,8 +677,8 @@ public:
{
if(!m_nativeres)
{
m_width = AfxGetApp()->GetProfileInt(_T("Settings"), _T("resx"), m_width);
m_height = AfxGetApp()->GetProfileInt(_T("Settings"), _T("resy"), m_height);
m_width = theApp.GetConfig("resx", m_width);
m_height = theApp.GetConfig("resy", m_height);
}
m_tc = new TextureCache(this);

View File

@ -27,8 +27,8 @@
GSRendererHW9::GSRendererHW9(uint8* base, bool mt, void (*irq)(), const GSRendererSettings& rs)
: GSRendererHW<Device, Vertex, TextureCache>(base, mt, irq, rs, false)
{
m_fba.enabled = !!AfxGetApp()->GetProfileInt(_T("Settings"), _T("fba"), TRUE);
m_logz = !!AfxGetApp()->GetProfileInt(_T("Settings"), _T("logz"), FALSE);
m_fba.enabled = !!theApp.GetConfig("fba", 1);
m_logz = !!theApp.GetConfig("logz", 0);
InitVertexKick<GSRendererHW9>();
}

View File

@ -141,8 +141,6 @@ BOOL GSSettingsDlg::OnInitDialog()
{
__super::OnInitDialog();
CWinApp* pApp = AfxGetApp();
D3DCAPS9 caps;
memset(&caps, 0, sizeof(caps));
caps.PixelShaderVersion = D3DPS_VERSION(0, 0);
@ -165,9 +163,9 @@ BOOL GSSettingsDlg::OnInitDialog()
if(CComPtr<IDirect3D9> d3d = Direct3DCreate9(D3D_SDK_VERSION))
{
uint32 ModeWidth = pApp->GetProfileInt(_T("Settings"), _T("ModeWidth"), 0);
uint32 ModeHeight = pApp->GetProfileInt(_T("Settings"), _T("ModeHeight"), 0);
uint32 ModeRefreshRate = pApp->GetProfileInt(_T("Settings"), _T("ModeRefreshRate"), 0);
uint32 ModeWidth = theApp.GetConfig("ModeWidth", 0);
uint32 ModeHeight = theApp.GetConfig("ModeHeight", 0);
uint32 ModeRefreshRate = theApp.GetConfig("ModeRefreshRate", 0);
uint32 nModes = d3d->GetAdapterModeCount(D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8);
@ -204,27 +202,27 @@ BOOL GSSettingsDlg::OnInitDialog()
renderers.push_back(g_renderers[i]);
}
GSSetting::InitComboBox(&renderers[0], renderers.size(), m_renderer, pApp->GetProfileInt(_T("Settings"), _T("Renderer"), 0));
GSSetting::InitComboBox(g_psversion, countof(g_psversion), m_psversion, pApp->GetProfileInt(_T("Settings"), _T("PixelShaderVersion2"), D3DPS_VERSION(2, 0)), caps.PixelShaderVersion);
GSSetting::InitComboBox(g_interlace, countof(g_interlace), m_interlace, pApp->GetProfileInt(_T("Settings"), _T("Interlace"), 0));
GSSetting::InitComboBox(g_aspectratio, countof(g_aspectratio), m_aspectratio, pApp->GetProfileInt(_T("Settings"), _T("AspectRatio"), 1));
GSSetting::InitComboBox(&renderers[0], renderers.size(), m_renderer, theApp.GetConfig("Renderer", 0));
GSSetting::InitComboBox(g_psversion, countof(g_psversion), m_psversion, theApp.GetConfig("PixelShaderVersion2", D3DPS_VERSION(2, 0)), caps.PixelShaderVersion);
GSSetting::InitComboBox(g_interlace, countof(g_interlace), m_interlace, theApp.GetConfig("Interlace", 0));
GSSetting::InitComboBox(g_aspectratio, countof(g_aspectratio), m_aspectratio, theApp.GetConfig("AspectRatio", 1));
OnCbnSelchangeCombo1();
//
m_filter = pApp->GetProfileInt(_T("Settings"), _T("filter"), 1);
m_vsync = !!pApp->GetProfileInt(_T("Settings"), _T("vsync"), FALSE);
m_logz = !!pApp->GetProfileInt(_T("Settings"), _T("logz"), FALSE);
m_fba = !!pApp->GetProfileInt(_T("Settings"), _T("fba"), TRUE);
m_aa1 = !!pApp->GetProfileInt(_T("Settings"), _T("aa1"), FALSE);
m_blur = !!pApp->GetProfileInt(_T("Settings"), _T("blur"), FALSE);
m_filter = theApp.GetConfig("filter", 1);
m_vsync = !!theApp.GetConfig("vsync", 0);
m_logz = !!theApp.GetConfig("logz", 0);
m_fba = !!theApp.GetConfig("fba", 1);
m_aa1 = !!theApp.GetConfig("aa1", 0);
m_blur = !!theApp.GetConfig("blur", 0);
m_resx.SetRange(512, 4096);
m_resy.SetRange(512, 4096);
m_resx.SetPos(pApp->GetProfileInt(_T("Settings"), _T("resx"), 1024));
m_resy.SetPos(pApp->GetProfileInt(_T("Settings"), _T("resy"), 1024));
m_nativeres = !!pApp->GetProfileInt(_T("Settings"), _T("nativeres"), FALSE);
m_resx.SetPos(theApp.GetConfig("resx", 1024));
m_resy.SetPos(theApp.GetConfig("resy", 1024));
m_nativeres = !!theApp.GetConfig("nativeres", 0);
m_resx.EnableWindow(!m_nativeres);
m_resy.EnableWindow(!m_nativeres);
@ -232,7 +230,7 @@ BOOL GSSettingsDlg::OnInitDialog()
m_resyedit.EnableWindow(!m_nativeres);
m_swthreads.SetRange(1, 16);
m_swthreads.SetPos(pApp->GetProfileInt(_T("Settings"), _T("swthreads"), 1));
m_swthreads.SetPos(theApp.GetConfig("swthreads", 1));
//
@ -244,50 +242,48 @@ BOOL GSSettingsDlg::OnInitDialog()
void GSSettingsDlg::OnOK()
{
CWinApp* pApp = AfxGetApp();
UpdateData();
if(m_resolution.GetCurSel() >= 0)
{
D3DDISPLAYMODE& mode = *(D3DDISPLAYMODE*)m_resolution.GetItemData(m_resolution.GetCurSel());
pApp->WriteProfileInt(_T("Settings"), _T("ModeWidth"), mode.Width);
pApp->WriteProfileInt(_T("Settings"), _T("ModeHeight"), mode.Height);
pApp->WriteProfileInt(_T("Settings"), _T("ModeRefreshRate"), mode.RefreshRate);
theApp.SetConfig("ModeWidth", (int)mode.Width);
theApp.SetConfig("ModeHeight", (int)mode.Height);
theApp.SetConfig("ModeRefreshRate", (int)mode.RefreshRate);
}
if(m_renderer.GetCurSel() >= 0)
{
pApp->WriteProfileInt(_T("Settings"), _T("Renderer"), (uint32)m_renderer.GetItemData(m_renderer.GetCurSel()));
theApp.SetConfig("Renderer", (uint32)m_renderer.GetItemData(m_renderer.GetCurSel()));
}
if(m_psversion.GetCurSel() >= 0)
{
pApp->WriteProfileInt(_T("Settings"), _T("PixelShaderVersion2"), (uint32)m_psversion.GetItemData(m_psversion.GetCurSel()));
theApp.SetConfig("PixelShaderVersion2", (uint32)m_psversion.GetItemData(m_psversion.GetCurSel()));
}
if(m_interlace.GetCurSel() >= 0)
{
pApp->WriteProfileInt(_T("Settings"), _T("Interlace"), (uint32)m_interlace.GetItemData(m_interlace.GetCurSel()));
theApp.SetConfig("Interlace", (uint32)m_interlace.GetItemData(m_interlace.GetCurSel()));
}
if(m_aspectratio.GetCurSel() >= 0)
{
pApp->WriteProfileInt(_T("Settings"), _T("AspectRatio"), (uint32)m_aspectratio.GetItemData(m_aspectratio.GetCurSel()));
theApp.SetConfig("AspectRatio", (uint32)m_aspectratio.GetItemData(m_aspectratio.GetCurSel()));
}
pApp->WriteProfileInt(_T("Settings"), _T("filter"), m_filter);
pApp->WriteProfileInt(_T("Settings"), _T("vsync"), m_vsync);
pApp->WriteProfileInt(_T("Settings"), _T("logz"), m_logz);
pApp->WriteProfileInt(_T("Settings"), _T("fba"), m_fba);
pApp->WriteProfileInt(_T("Settings"), _T("aa1"), m_aa1);
pApp->WriteProfileInt(_T("Settings"), _T("blur"), m_blur);
theApp.SetConfig("filter", m_filter);
theApp.SetConfig("vsync", m_vsync);
theApp.SetConfig("logz", m_logz);
theApp.SetConfig("fba", m_fba);
theApp.SetConfig("aa1", m_aa1);
theApp.SetConfig("blur", m_blur);
pApp->WriteProfileInt(_T("Settings"), _T("resx"), m_resx.GetPos());
pApp->WriteProfileInt(_T("Settings"), _T("resy"), m_resy.GetPos());
pApp->WriteProfileInt(_T("Settings"), _T("swthreads"), m_swthreads.GetPos());
pApp->WriteProfileInt(_T("Settings"), _T("nativeres"), m_nativeres);
theApp.SetConfig("resx", m_resx.GetPos());
theApp.SetConfig("resy", m_resy.GetPos());
theApp.SetConfig("swthreads", m_swthreads.GetPos());
theApp.SetConfig("nativeres", m_nativeres);
__super::OnOK();
}

View File

@ -182,6 +182,8 @@ public:
GSVector4i fit(int preset) const;
#ifdef _WINDOWS
operator LPCRECT() const
{
return (LPCRECT)this;
@ -192,6 +194,8 @@ public:
return (LPRECT)this;
}
#endif
//
uint32 rgba32() const

View File

@ -20,6 +20,7 @@
*/
#include "StdAfx.h"
#include "GSdx.h"
#include "GSWnd.h"
BEGIN_MESSAGE_MAP(GSWnd, CWnd)
@ -51,7 +52,7 @@ bool GSWnd::Create(const string& title)
r = CRect(r.CenterPoint() - CSize(s.cx / 2, s.cy / 2), s);
LPCTSTR wc = AfxRegisterWndClass(CS_VREDRAW|CS_HREDRAW|CS_DBLCLKS, AfxGetApp()->LoadStandardCursor(IDC_ARROW), 0, 0);
LPCTSTR wc = AfxRegisterWndClass(CS_VREDRAW|CS_HREDRAW|CS_DBLCLKS, theApp.LoadStandardCursor(IDC_ARROW), 0, 0);
return !!CreateEx(0, wc, title.c_str(), WS_OVERLAPPEDWINDOW, r, NULL, 0);
}

View File

@ -51,15 +51,12 @@
// details.
//
BEGIN_MESSAGE_MAP(GSdxApp, CWinApp)
END_MESSAGE_MAP()
GSdxApp theApp;
GSdxApp::GSdxApp()
{
}
GSdxApp theApp;
BOOL GSdxApp::InitInstance()
{
__super::InitInstance();
@ -97,3 +94,23 @@ BOOL GSdxApp::InitInstance()
return TRUE;
}
string GSdxApp::GetConfig(const char* entry, const char* value)
{
return string(GetProfileString("Settings", entry, value));
}
void GSdxApp::SetConfig(const char* entry, const char* value)
{
WriteProfileString("Settings", entry, value);
}
int GSdxApp::GetConfig(const char* entry, int value)
{
return GetProfileInt("Settings", entry, value);
}
void GSdxApp::SetConfig(const char* entry, int value)
{
WriteProfileInt("Settings", entry, value);
}

View File

@ -21,17 +21,18 @@
#pragma once
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
class GSdxApp : public CWinApp
{
protected:
virtual BOOL InitInstance();
public:
GSdxApp();
public:
virtual BOOL InitInstance();
DECLARE_MESSAGE_MAP()
string GetConfig(const char* entry, const char* value);
void SetConfig(const char* entry, const char* value);
int GetConfig(const char* entry, int value);
void SetConfig(const char* entry, int value);
};
extern GSdxApp theApp;

View File

@ -6,6 +6,8 @@
#pragma warning(disable: 4996 4995 4324 4100)
#ifdef _WINDOWS
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#endif
@ -35,11 +37,13 @@
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
//#include <afxmt.h>
#endif
// stdc
#include <math.h>
#include <time.h>
#include <string>
#include <vector>
@ -71,17 +75,17 @@ typedef signed long long int64;
#define EXPORT_C_(type) extern "C" __declspec(dllexport) type __stdcall
#ifndef RESTRICT
#ifdef __INTEL_COMPILER
#ifdef __INTEL_COMPILER
#define RESTRICT restrict
#elif _MSC_VER >= 1400 // TODO: gcc
#elif _MSC_VER >= 1400 // TODO: gcc
#define RESTRICT __restrict
#else
#else
#define RESTRICT
#endif
#endif
#endif
#ifdef __x86_64__
#define _M_AMD64
#define _M_AMD64
#endif
extern "C" uint64 __rdtsc(); // TODO: gcc