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

View File

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

View File

@ -71,14 +71,11 @@ EXPORT_C GSsetBaseMem(uint8* mem)
EXPORT_C_(INT32) GSinit() EXPORT_C_(INT32) GSinit()
{ {
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return 0; return 0;
} }
EXPORT_C GSshutdown() EXPORT_C GSshutdown()
{ {
AFX_MANAGE_STATE(AfxGetStaticModuleState());
} }
EXPORT_C GSclose() EXPORT_C GSclose()
@ -87,36 +84,51 @@ EXPORT_C GSclose()
s_gs = NULL; s_gs = NULL;
#ifdef _WINDOWS
if(SUCCEEDED(s_hr)) if(SUCCEEDED(s_hr))
{ {
::CoUninitialize(); ::CoUninitialize();
s_hr = E_FAIL; s_hr = E_FAIL;
} }
#endif
} }
static INT32 GSopen(void* dsp, char* title, int mt, int renderer) static INT32 GSopen(void* dsp, char* title, int mt, int renderer)
{ {
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(!GSUtil::CheckDirectX() || !GSUtil::CheckSSE())
{
return -1;
}
GSclose(); GSclose();
GSRendererSettings rs; GSRendererSettings rs;
rs.m_interlace = AfxGetApp()->GetProfileInt(_T("Settings"), _T("interlace"), 0); int threads = 1;
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 = 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) 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; 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)) if(!s_gs->Create(title))
{ {
GSclose(); 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) EXPORT_C_(INT32) GSopen(void* dsp, char* title, int mt)
{ {
#ifdef _WINDOWS
AFX_MANAGE_STATE(AfxGetStaticModuleState()); AFX_MANAGE_STATE(AfxGetStaticModuleState());
#endif
int renderer; int renderer;
if(mt == 2) if(mt == 2)
@ -164,7 +178,7 @@ EXPORT_C_(INT32) GSopen(void* dsp, char* title, int mt)
else else
{ {
// normal init // normal init
renderer = AfxGetApp()->GetProfileInt(_T("Settings"), _T("renderer"), 0); renderer = theApp.GetConfig("renderer", 0);
} }
return GSopen(dsp, title, mt, renderer); return GSopen(dsp, title, mt, renderer);
@ -212,6 +226,20 @@ EXPORT_C GSgifTransfer3(uint8* mem, uint32 size)
EXPORT_C GSvsync(int field) 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); s_gs->VSync(field);
} }
@ -220,8 +248,9 @@ EXPORT_C_(uint32) GSmakeSnapshot(char* path)
return s_gs->MakeSnapshot(string(path) + "gsdx"); 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) EXPORT_C_(int) GSfreeze(int mode, GSFreezeData* data)
@ -244,6 +273,8 @@ EXPORT_C_(int) GSfreeze(int mode, GSFreezeData* data)
EXPORT_C GSconfigure() EXPORT_C GSconfigure()
{ {
#ifdef _WINDOWS
AFX_MANAGE_STATE(AfxGetStaticModuleState()); AFX_MANAGE_STATE(AfxGetStaticModuleState());
GSSettingsDlg dlg; GSSettingsDlg dlg;
@ -253,21 +284,14 @@ EXPORT_C GSconfigure()
GSshutdown(); GSshutdown();
GSinit(); GSinit();
} }
#endif
} }
EXPORT_C_(INT32) GStest() EXPORT_C_(INT32) GStest()
{ {
return 0; 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() EXPORT_C GSabout()
@ -294,6 +318,8 @@ EXPORT_C GSsetFrameSkip(int frameskip)
s_gs->SetFrameSkip(frameskip); s_gs->SetFrameSkip(frameskip);
} }
#ifdef _WINDOWS
EXPORT_C GSReplay(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow) EXPORT_C GSReplay(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{ {
int renderer = -1; int renderer = -1;
@ -597,3 +623,4 @@ EXPORT_C GSBenchmark(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow
fclose(file); fclose(file);
} }
#endif

View File

@ -1163,7 +1163,7 @@ struct GSPrivRegSet
#pragma pack(pop) #pragma pack(pop)
enum {KEYPRESS=1, KEYRELEASE=2}; 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}; enum {FREEZE_LOAD=0, FREEZE_SAVE=1, FREEZE_SIZE=2};
struct GSFreezeData {int size; uint8* data;}; struct GSFreezeData {int size; uint8* data;};

View File

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

View File

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

View File

@ -20,6 +20,7 @@
*/ */
#include "stdafx.h" #include "stdafx.h"
#include "GSdx.h"
#include "GSDevice9.h" #include "GSDevice9.h"
#include "resource.h" #include "resource.h"
@ -102,7 +103,7 @@ bool GSDevice9::Create(HWND hWnd, bool vsync)
m_d3d->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &m_d3dcaps); 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; if(!Reset(1, 1, fs)) return false;
@ -110,7 +111,7 @@ bool GSDevice9::Create(HWND hWnd, bool vsync)
// shaders // 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) 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...) // 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 mw = theApp.GetConfig("ModeWidth", 0);
int mh = AfxGetApp()->GetProfileInt(_T("Settings"), _T("ModeHeight"), 0); int mh = theApp.GetConfig("ModeHeight", 0);
int mrr = AfxGetApp()->GetProfileInt(_T("Settings"), _T("ModeRefreshRate"), 0); int mrr = theApp.GetConfig("ModeRefreshRate", 0);
if(fs && mw > 0 && mh > 0 && mrr >= 0) if(fs && mw > 0 && mh > 0 && mrr >= 0)
{ {

View File

@ -21,6 +21,7 @@
#pragma once #pragma once
#include "GSdx.h"
#include "GSWnd.h" #include "GSWnd.h"
#include "GSState.h" #include "GSState.h"
#include "GSVertexList.h" #include "GSVertexList.h"
@ -43,56 +44,10 @@ class GSRendererBase : public GSState, protected GSRendererSettings
protected: protected:
bool m_osd; 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: public:
GSWnd m_wnd; GSWnd m_wnd;
GSCapture m_capture;
string m_snapshot;
public: public:
GSRendererBase(uint8* base, bool mt, void (*irq)(), const GSRendererSettings& rs) GSRendererBase(uint8* base, bool mt, void (*irq)(), const GSRendererSettings& rs)
@ -108,9 +63,59 @@ public:
m_blur = rs.m_blur; 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 bool Create(const string& title) = 0;
virtual void VSync(int field) = 0; virtual void VSync(int field) = 0;
virtual bool MakeSnapshot(const string& path) = 0;
}; };
template<class Device> class GSRenderer : public GSRendererBase 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: public:
Device m_dev; Device m_dev;
@ -407,18 +397,15 @@ public:
bool s_save; bool s_save;
bool s_savez; bool s_savez;
string m_snapshot;
GSCapture m_capture;
public: public:
GSRenderer(uint8* base, bool mt, void (*irq)(), const GSRendererSettings& rs, bool psrr) GSRenderer(uint8* base, bool mt, void (*irq)(), const GSRendererSettings& rs, bool psrr)
: GSRendererBase(base, mt, irq, rs) : GSRendererBase(base, mt, irq, rs)
, m_psrr(psrr) , m_psrr(psrr)
{ {
s_n = 0; s_n = 0;
s_dump = !!AfxGetApp()->GetProfileInt(_T("Debug"), _T("dump"), 0); s_dump = !!theApp.GetConfig("dump", 0);
s_save = !!AfxGetApp()->GetProfileInt(_T("Debug"), _T("save"), 0); s_save = !!theApp.GetConfig("save", 0);
s_savez = !!AfxGetApp()->GetProfileInt(_T("Debug"), _T("savez"), 0); s_savez = !!theApp.GetConfig("savez", 0);
} }
bool Create(const string& title) bool Create(const string& title)
@ -446,8 +433,6 @@ public:
m_perfmon.Put(GSPerfMon::Frame); m_perfmon.Put(GSPerfMon::Frame);
ProcessWindowMessages();
field = field ? 1 : 0; field = field ? 1 : 0;
if(!Merge(field)) return; if(!Merge(field)) return;
@ -530,16 +515,6 @@ public:
DoCapture(); 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 void MinMaxUV(int w, int h, GSVector4i& r) {r = GSVector4i(0, 0, w, h);}
virtual bool CanUpscale() {return !m_nativeres;} virtual bool CanUpscale() {return !m_nativeres;}
}; };

View File

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

View File

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

View File

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

View File

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

View File

@ -20,6 +20,7 @@
*/ */
#include "StdAfx.h" #include "StdAfx.h"
#include "GSdx.h"
#include "GSWnd.h" #include "GSWnd.h"
BEGIN_MESSAGE_MAP(GSWnd, CWnd) 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); 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); return !!CreateEx(0, wc, title.c_str(), WS_OVERLAPPEDWINDOW, r, NULL, 0);
} }

View File

@ -51,15 +51,12 @@
// details. // details.
// //
BEGIN_MESSAGE_MAP(GSdxApp, CWinApp) GSdxApp theApp;
END_MESSAGE_MAP()
GSdxApp::GSdxApp() GSdxApp::GSdxApp()
{ {
} }
GSdxApp theApp;
BOOL GSdxApp::InitInstance() BOOL GSdxApp::InitInstance()
{ {
__super::InitInstance(); __super::InitInstance();
@ -96,4 +93,24 @@ BOOL GSdxApp::InitInstance()
m_pszProfileName = _tcsdup((LPCTSTR)path); m_pszProfileName = _tcsdup((LPCTSTR)path);
return TRUE; 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 #pragma once
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
class GSdxApp : public CWinApp class GSdxApp : public CWinApp
{ {
protected:
virtual BOOL InitInstance();
public: public:
GSdxApp(); GSdxApp();
public: string GetConfig(const char* entry, const char* value);
virtual BOOL InitInstance(); void SetConfig(const char* entry, const char* value);
int GetConfig(const char* entry, int value);
DECLARE_MESSAGE_MAP() void SetConfig(const char* entry, int value);
}; };
extern GSdxApp theApp;

View File

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