SDL: Display internal FPS/VPS seperately

This commit is contained in:
Connor McLaughlin 2019-09-28 01:09:31 +10:00
parent 1400534127
commit 8aed0cc174
4 changed files with 16 additions and 5 deletions

View file

@ -483,9 +483,12 @@ void SDLInterface::RenderMainMenuBar()
ImGui::EndMenu(); ImGui::EndMenu();
} }
ImGui::SetCursorPosX(ImGui::GetIO().DisplaySize.x - 80.0f); ImGui::SetCursorPosX(ImGui::GetIO().DisplaySize.x - 170.0f);
ImGui::Text("FPS: %.2f", m_fps); ImGui::Text("FPS: %.2f", m_fps);
ImGui::SetCursorPosX(ImGui::GetIO().DisplaySize.x - 80.0f);
ImGui::Text("VPS: %.2f", m_vps);
ImGui::EndMainMenuBar(); ImGui::EndMainMenuBar();
} }
@ -581,12 +584,14 @@ void SDLInterface::Run()
// update fps counter // update fps counter
{ {
m_fps_counter++;
const double time = m_fps_timer.GetTimeSeconds(); const double time = m_fps_timer.GetTimeSeconds();
if (time >= 0.25f) if (time >= 0.25f)
{ {
m_fps = static_cast<float>(m_fps_counter / time); m_vps = static_cast<float>(static_cast<double>(m_system->GetFrameNumber() - m_last_frame_number) / time);
m_fps_counter = 0; m_last_frame_number = m_system->GetFrameNumber();
m_fps = static_cast<float>(
static_cast<double>(m_system->GetInternalFrameNumber() - m_last_internal_frame_number) / time);
m_last_internal_frame_number = m_system->GetInternalFrameNumber();
m_fps_timer.Reset(); m_fps_timer.Reset();
} }
} }

View file

@ -78,7 +78,9 @@ private:
std::shared_ptr<DigitalController> m_controller; std::shared_ptr<DigitalController> m_controller;
float m_vps = 0.0f;
float m_fps = 0.0f; float m_fps = 0.0f;
u32 m_fps_counter = 0; u32 m_last_frame_number = 0;
u32 m_last_internal_frame_number = 0;
Timer m_fps_timer; Timer m_fps_timer;
}; };

View file

@ -499,6 +499,7 @@ void GPU::WriteGP1(u32 value)
{ {
m_crtc_state.regs.display_address_start = param & CRTCState::Regs::DISPLAY_ADDRESS_START_MASK; m_crtc_state.regs.display_address_start = param & CRTCState::Regs::DISPLAY_ADDRESS_START_MASK;
Log_DebugPrintf("Display address start <- 0x%08X", m_crtc_state.regs.display_address_start); Log_DebugPrintf("Display address start <- 0x%08X", m_crtc_state.regs.display_address_start);
m_system->IncrementInternalFrameNumber();
} }
break; break;

View file

@ -31,7 +31,9 @@ public:
HostInterface* GetHostInterface() const { return m_host_interface; } HostInterface* GetHostInterface() const { return m_host_interface; }
u32 GetFrameNumber() const { return m_frame_number; } u32 GetFrameNumber() const { return m_frame_number; }
u32 GetInternalFrameNumber() const { return m_internal_frame_number; }
void IncrementFrameNumber() { m_frame_number++; } void IncrementFrameNumber() { m_frame_number++; }
void IncrementInternalFrameNumber() { m_internal_frame_number++; }
bool Initialize(); bool Initialize();
void Reset(); void Reset();
@ -68,4 +70,5 @@ private:
std::unique_ptr<Timers> m_timers; std::unique_ptr<Timers> m_timers;
std::unique_ptr<SPU> m_spu; std::unique_ptr<SPU> m_spu;
u32 m_frame_number = 1; u32 m_frame_number = 1;
u32 m_internal_frame_number = 1;
}; };