2013-06-09 06:07:17 +00:00
|
|
|
#pragma once
|
2006-06-15 04:19:30 +00:00
|
|
|
|
2012-07-29 22:09:44 +00:00
|
|
|
#include <boost/signals2.hpp>
|
2007-01-11 02:44:56 +00:00
|
|
|
#include <string>
|
2009-04-18 00:24:32 +00:00
|
|
|
#include <memory>
|
2006-06-15 04:19:30 +00:00
|
|
|
#include "win32/Window.h"
|
2006-08-14 00:05:53 +00:00
|
|
|
#include "win32/StatusBar.h"
|
2008-08-24 21:28:42 +00:00
|
|
|
#include "SettingsDialogProvider.h"
|
2006-06-15 04:19:30 +00:00
|
|
|
#include "OutputWnd.h"
|
2011-05-19 04:42:46 +00:00
|
|
|
#include "AviStream.h"
|
2014-10-06 00:42:04 -04:00
|
|
|
#include "StatsOverlayWindow.h"
|
2006-06-15 04:19:30 +00:00
|
|
|
#ifdef DEBUGGER_INCLUDED
|
|
|
|
#include "Debugger.h"
|
2013-06-09 06:07:17 +00:00
|
|
|
#include "FrameDebugger/FrameDebugger.h"
|
2006-06-15 04:19:30 +00:00
|
|
|
#endif
|
2014-10-05 01:41:06 -04:00
|
|
|
#include "../Profiler.h"
|
2007-12-01 04:08:34 +00:00
|
|
|
#include "../PS2VM.h"
|
2006-06-15 04:19:30 +00:00
|
|
|
|
2012-07-29 22:09:44 +00:00
|
|
|
class CMainWindow : public Framework::Win32::CWindow, public boost::signals2::trackable
|
2006-06-15 04:19:30 +00:00
|
|
|
{
|
|
|
|
public:
|
2007-12-01 04:08:34 +00:00
|
|
|
CMainWindow(CPS2VM&, char*);
|
2006-06-15 04:19:30 +00:00
|
|
|
~CMainWindow();
|
|
|
|
int Loop();
|
|
|
|
|
|
|
|
protected:
|
2014-10-06 00:36:38 -04:00
|
|
|
long OnTimer(WPARAM) override;
|
|
|
|
long OnCommand(unsigned short, unsigned short, HWND) override;
|
|
|
|
long OnActivateApp(bool, unsigned long) override;
|
|
|
|
long OnSize(unsigned int, unsigned int, unsigned int) override;
|
2014-10-06 00:42:04 -04:00
|
|
|
long OnMove(int, int) override;
|
2006-06-15 04:19:30 +00:00
|
|
|
|
|
|
|
private:
|
2011-05-19 04:42:46 +00:00
|
|
|
class CScopedVmPauser
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CScopedVmPauser(CPS2VM&);
|
|
|
|
virtual ~CScopedVmPauser();
|
|
|
|
|
|
|
|
private:
|
|
|
|
CPS2VM& m_virtualMachine;
|
|
|
|
bool m_paused;
|
|
|
|
};
|
|
|
|
|
2012-03-15 04:21:36 +00:00
|
|
|
class COpenCommand
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~COpenCommand() {}
|
|
|
|
virtual void Execute(CMainWindow*) = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
class CBootCdRomOpenCommand : public COpenCommand
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual void Execute(CMainWindow*);
|
|
|
|
};
|
|
|
|
|
|
|
|
class CLoadElfOpenCommand : public COpenCommand
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CLoadElfOpenCommand(const char*);
|
|
|
|
virtual void Execute(CMainWindow*);
|
|
|
|
|
|
|
|
private:
|
|
|
|
std::string m_fileName;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef std::shared_ptr<COpenCommand> OpenCommandPtr;
|
2009-04-18 00:24:32 +00:00
|
|
|
|
2006-06-15 04:19:30 +00:00
|
|
|
void OpenELF();
|
|
|
|
void BootCDROM();
|
2012-03-15 04:21:36 +00:00
|
|
|
void BootDiskImage();
|
2011-05-19 04:42:46 +00:00
|
|
|
void RecordAvi();
|
2006-06-15 04:19:30 +00:00
|
|
|
void ResumePause();
|
|
|
|
void Reset();
|
|
|
|
void PauseWhenFocusLost();
|
|
|
|
void SaveState();
|
|
|
|
void LoadState();
|
|
|
|
void ChangeStateSlot(unsigned int);
|
2012-12-28 19:22:08 +00:00
|
|
|
void ChangeViewMode(CGSHandler::PRESENTATION_MODE);
|
2006-06-15 04:19:30 +00:00
|
|
|
void ShowDebugger();
|
2013-06-09 06:07:17 +00:00
|
|
|
void ShowFrameDebugger();
|
|
|
|
void DumpNextFrame();
|
2014-06-26 23:39:29 -04:00
|
|
|
void ToggleGsDraw();
|
2006-06-15 04:19:30 +00:00
|
|
|
void ShowSysInfo();
|
|
|
|
void ShowAbout();
|
2012-03-15 04:21:36 +00:00
|
|
|
void ShowSettingsDialog(CSettingsDialogProvider*);
|
2006-06-15 04:19:30 +00:00
|
|
|
void ShowRendererSettings();
|
2012-03-15 04:21:36 +00:00
|
|
|
void ShowControllerSettings();
|
2006-07-18 12:08:40 +00:00
|
|
|
void ShowVfsManager();
|
|
|
|
void ShowMcManager();
|
2006-06-15 04:19:30 +00:00
|
|
|
|
|
|
|
void LoadELF(const char*);
|
|
|
|
void RefreshLayout();
|
2014-10-06 00:42:04 -04:00
|
|
|
void RefreshStatsOverlayLayout();
|
2007-02-20 21:16:34 +00:00
|
|
|
void PrintVersion(TCHAR*, size_t);
|
2006-06-15 04:19:30 +00:00
|
|
|
void PrintStatusTextA(const char*, ...);
|
2007-02-20 21:16:34 +00:00
|
|
|
void SetStatusText(const TCHAR*);
|
2006-06-15 04:19:30 +00:00
|
|
|
void CreateAccelerators();
|
|
|
|
|
|
|
|
void CreateDebugMenu();
|
2013-06-09 06:07:17 +00:00
|
|
|
static boost::filesystem::path GetFrameDumpDirectoryPath();
|
2006-06-15 04:19:30 +00:00
|
|
|
|
|
|
|
void CreateStateSlotMenu();
|
2013-06-09 06:07:17 +00:00
|
|
|
static boost::filesystem::path GetStateDirectoryPath();
|
|
|
|
boost::filesystem::path GenerateStatePath() const;
|
2006-06-15 04:19:30 +00:00
|
|
|
void UpdateUI();
|
|
|
|
|
2012-03-15 04:21:36 +00:00
|
|
|
void OnNewFrame(uint32);
|
2014-10-05 01:41:06 -04:00
|
|
|
|
2008-08-24 21:28:42 +00:00
|
|
|
void OnOutputWndSizeChange();
|
2006-12-26 05:43:34 +00:00
|
|
|
void OnExecutableChange();
|
2006-06-15 04:19:30 +00:00
|
|
|
|
2012-03-15 04:21:36 +00:00
|
|
|
CPS2VM& m_virtualMachine;
|
2007-12-01 04:08:34 +00:00
|
|
|
|
2012-09-06 06:32:15 +00:00
|
|
|
unsigned int m_frames;
|
2012-03-15 04:21:36 +00:00
|
|
|
uint32 m_drawCallCount;
|
2012-09-06 06:32:15 +00:00
|
|
|
HACCEL m_accTable;
|
2006-06-15 04:19:30 +00:00
|
|
|
|
2012-09-06 06:32:15 +00:00
|
|
|
unsigned int m_stateSlot;
|
2006-06-15 04:19:30 +00:00
|
|
|
|
2012-09-06 06:32:15 +00:00
|
|
|
bool m_pauseFocusLost;
|
|
|
|
bool m_deactivatePause;
|
2006-06-15 04:19:30 +00:00
|
|
|
|
2012-03-15 04:21:36 +00:00
|
|
|
OpenCommandPtr m_lastOpenCommand;
|
2009-04-18 00:24:32 +00:00
|
|
|
|
2011-05-19 04:42:46 +00:00
|
|
|
CAviStream m_aviStream;
|
|
|
|
bool m_recordingAvi;
|
|
|
|
uint8* m_recordBuffer;
|
|
|
|
HANDLE m_recordAviMutex;
|
|
|
|
unsigned int m_recordBufferWidth;
|
|
|
|
unsigned int m_recordBufferHeight;
|
|
|
|
|
2014-10-06 00:36:38 -04:00
|
|
|
Framework::Win32::CStatusBar m_statusBar;
|
2012-09-06 06:32:15 +00:00
|
|
|
COutputWnd* m_outputWnd;
|
2014-10-06 00:42:04 -04:00
|
|
|
CStatsOverlayWindow m_statsOverlayWnd;
|
2006-06-15 04:19:30 +00:00
|
|
|
#ifdef DEBUGGER_INCLUDED
|
2013-06-09 06:07:17 +00:00
|
|
|
std::unique_ptr<CDebugger> m_debugger;
|
|
|
|
std::unique_ptr<CFrameDebugger> m_frameDebugger;
|
2006-06-15 04:19:30 +00:00
|
|
|
#endif
|
2014-10-05 01:41:06 -04:00
|
|
|
|
2012-09-06 06:32:15 +00:00
|
|
|
static double m_statusBarPanelWidths[2];
|
2006-06-15 04:19:30 +00:00
|
|
|
};
|