Add on screen frame counter.

This commit is contained in:
Rachel Bryk 2014-09-30 18:49:44 -04:00
parent 13fc8e7df1
commit f6c6f03cce
8 changed files with 47 additions and 4 deletions

View File

@ -172,6 +172,7 @@ void SConfig::SaveGeneralSettings(IniFile& ini)
// General // General
general->Set("LastFilename", m_LastFilename); general->Set("LastFilename", m_LastFilename);
general->Set("ShowLag", m_ShowLag); general->Set("ShowLag", m_ShowLag);
general->Set("ShowFrameCount", m_ShowFrameCount);
// ISO folders // ISO folders
// Clear removed folders // Clear removed folders
@ -379,6 +380,7 @@ void SConfig::LoadGeneralSettings(IniFile& ini)
general->Get("LastFilename", &m_LastFilename); general->Get("LastFilename", &m_LastFilename);
general->Get("ShowLag", &m_ShowLag, false); general->Get("ShowLag", &m_ShowLag, false);
general->Get("ShowFrameCount", &m_ShowFrameCount, false);
#ifdef USE_GDBSTUB #ifdef USE_GDBSTUB
general->Get("GDBPort", &(m_LocalCoreStartupParameter.iGDBPort), -1); general->Get("GDBPort", &(m_LocalCoreStartupParameter.iGDBPort), -1);
#endif #endif

View File

@ -86,6 +86,7 @@ struct SConfig : NonCopyable
std::string m_WirelessMac; std::string m_WirelessMac;
bool m_PauseMovie; bool m_PauseMovie;
bool m_ShowLag; bool m_ShowLag;
bool m_ShowFrameCount;
std::string m_strMovieAuthor; std::string m_strMovieAuthor;
unsigned int m_FrameSkip; unsigned int m_FrameSkip;

View File

@ -230,6 +230,7 @@ EVT_MENU(IDM_RECORDREADONLY, CFrame::OnRecordReadOnly)
EVT_MENU(IDM_TASINPUT, CFrame::OnTASInput) EVT_MENU(IDM_TASINPUT, CFrame::OnTASInput)
EVT_MENU(IDM_TOGGLE_PAUSEMOVIE, CFrame::OnTogglePauseMovie) EVT_MENU(IDM_TOGGLE_PAUSEMOVIE, CFrame::OnTogglePauseMovie)
EVT_MENU(IDM_SHOWLAG, CFrame::OnShowLag) EVT_MENU(IDM_SHOWLAG, CFrame::OnShowLag)
EVT_MENU(IDM_SHOWFRAMECOUNT, CFrame::OnShowFrameCount)
EVT_MENU(IDM_FRAMESTEP, CFrame::OnFrameStep) EVT_MENU(IDM_FRAMESTEP, CFrame::OnFrameStep)
EVT_MENU(IDM_SCREENSHOT, CFrame::OnScreenshot) EVT_MENU(IDM_SCREENSHOT, CFrame::OnScreenshot)
EVT_MENU(wxID_PREFERENCES, CFrame::OnConfigMain) EVT_MENU(wxID_PREFERENCES, CFrame::OnConfigMain)

View File

@ -270,6 +270,7 @@ private:
void OnTASInput(wxCommandEvent& event); void OnTASInput(wxCommandEvent& event);
void OnTogglePauseMovie(wxCommandEvent& event); void OnTogglePauseMovie(wxCommandEvent& event);
void OnShowLag(wxCommandEvent& event); void OnShowLag(wxCommandEvent& event);
void OnShowFrameCount(wxCommandEvent& event);
void OnChangeDisc(wxCommandEvent& event); void OnChangeDisc(wxCommandEvent& event);
void OnScreenshot(wxCommandEvent& event); void OnScreenshot(wxCommandEvent& event);
void OnActive(wxActivateEvent& event); void OnActive(wxActivateEvent& event);

View File

@ -213,6 +213,8 @@ wxMenuBar* CFrame::CreateMenu()
movieMenu->Check(IDM_TOGGLE_PAUSEMOVIE, SConfig::GetInstance().m_PauseMovie); movieMenu->Check(IDM_TOGGLE_PAUSEMOVIE, SConfig::GetInstance().m_PauseMovie);
movieMenu->AppendCheckItem(IDM_SHOWLAG, _("Show lag counter")); movieMenu->AppendCheckItem(IDM_SHOWLAG, _("Show lag counter"));
movieMenu->Check(IDM_SHOWLAG, SConfig::GetInstance().m_ShowLag); movieMenu->Check(IDM_SHOWLAG, SConfig::GetInstance().m_ShowLag);
movieMenu->AppendCheckItem(IDM_SHOWFRAMECOUNT, _("Show frame counter"));
movieMenu->Check(IDM_SHOWFRAMECOUNT, SConfig::GetInstance().m_ShowFrameCount);
movieMenu->Check(IDM_RECORDREADONLY, true); movieMenu->Check(IDM_RECORDREADONLY, true);
menubar->Append(movieMenu, _("&Movie")); menubar->Append(movieMenu, _("&Movie"));
@ -717,6 +719,12 @@ void CFrame::OnShowLag(wxCommandEvent& WXUNUSED (event))
SConfig::GetInstance().SaveSettings(); SConfig::GetInstance().SaveSettings();
} }
void CFrame::OnShowFrameCount(wxCommandEvent& WXUNUSED (event))
{
SConfig::GetInstance().m_ShowFrameCount = !SConfig::GetInstance().m_ShowFrameCount;
SConfig::GetInstance().SaveSettings();
}
void CFrame::OnFrameStep(wxCommandEvent& event) void CFrame::OnFrameStep(wxCommandEvent& event)
{ {
bool wasPaused = (Core::GetState() == Core::CORE_PAUSE); bool wasPaused = (Core::GetState() == Core::CORE_PAUSE);

View File

@ -91,6 +91,7 @@ enum
IDM_TASINPUT, IDM_TASINPUT,
IDM_TOGGLE_PAUSEMOVIE, IDM_TOGGLE_PAUSEMOVIE,
IDM_SHOWLAG, IDM_SHOWLAG,
IDM_SHOWFRAMECOUNT,
IDM_FRAMESTEP, IDM_FRAMESTEP,
IDM_SCREENSHOT, IDM_SCREENSHOT,
IDM_BROWSE, IDM_BROWSE,

View File

@ -896,9 +896,23 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, co
D3D::context->RSSetViewports(1, &vp); D3D::context->RSSetViewports(1, &vp);
// Finish up the current frame, print some stats // Finish up the current frame, print some stats
if (g_ActiveConfig.bShowFPS) if (g_ActiveConfig.bShowFPS || SConfig::GetInstance().m_ShowFrameCount)
{ {
std::string fps = StringFromFormat("FPS: %d\n", m_fps_counter.m_fps); std::string fps = "";
if (g_ActiveConfig.bShowFPS)
fps = StringFromFormat("FPS: %d", m_fps_counter.m_fps);
if (g_ActiveConfig.bShowFPS && SConfig::GetInstance().m_ShowFrameCount)
fps += " - ";
if (SConfig::GetInstance().m_ShowFrameCount)
{
fps += StringFromFormat("Frame: %d", Movie::g_currentFrame);
if (Movie::IsPlayingInput())
fps += StringFromFormat(" / %d", Movie::g_totalFrames);
}
fps += "\n";
D3D::font.DrawTextScaled(0, 0, 20, 0.0f, 0xFF00FFFF, fps); D3D::font.DrawTextScaled(0, 0, 20, 0.0f, 0xFF00FFFF, fps);
} }

View File

@ -709,8 +709,23 @@ void Renderer::DrawDebugInfo()
// Draw various messages on the screen, like FPS, statistics, etc. // Draw various messages on the screen, like FPS, statistics, etc.
std::string debug_info; std::string debug_info;
if (g_ActiveConfig.bShowFPS) if (g_ActiveConfig.bShowFPS || SConfig::GetInstance().m_ShowFrameCount)
debug_info += StringFromFormat("FPS: %d\n", m_fps_counter.m_fps); {
std::string fps = "";
if (g_ActiveConfig.bShowFPS)
debug_info += StringFromFormat("FPS: %d", m_fps_counter.m_fps);
if (g_ActiveConfig.bShowFPS && SConfig::GetInstance().m_ShowFrameCount)
debug_info += " - ";
if (SConfig::GetInstance().m_ShowFrameCount)
{
debug_info += StringFromFormat("Frame: %d", Movie::g_currentFrame);
if (Movie::IsPlayingInput())
debug_info += StringFromFormat(" / %d", Movie::g_totalFrames);
}
debug_info += "\n";
}
if (SConfig::GetInstance().m_ShowLag) if (SConfig::GetInstance().m_ShowLag)
debug_info += StringFromFormat("Lag: %" PRIu64 "\n", Movie::g_currentLagCount); debug_info += StringFromFormat("Lag: %" PRIu64 "\n", Movie::g_currentLagCount);