From 1224909fb174b86cb6a1be5947a9863e3bfd4ad2 Mon Sep 17 00:00:00 2001 From: Sour Date: Sun, 17 Feb 2019 15:02:33 -0500 Subject: [PATCH] UI: Added frame/fps counters --- Core/BaseRenderer.cpp | 25 +++++++++++-------------- Core/Console.cpp | 5 +++++ Core/Console.h | 2 ++ Windows/Renderer.cpp | 4 ++-- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/Core/BaseRenderer.cpp b/Core/BaseRenderer.cpp index 4d96285..742b1c9 100644 --- a/Core/BaseRenderer.cpp +++ b/Core/BaseRenderer.cpp @@ -2,6 +2,7 @@ #include #include "BaseRenderer.h" #include "Console.h" +#include "Ppu.h" #include "MessageManager.h" BaseRenderer::BaseRenderer(shared_ptr console, bool registerAsMessageManager) @@ -118,8 +119,8 @@ void BaseRenderer::ShowFpsCounter(int lineNumber) int yPos = 13 + 24 * lineNumber; if(_fpsTimer.GetElapsedMS() > 1000) { //Update fps every sec - //TODO - uint32_t frameCount = 0; //_console->GetFrameCount(); + shared_ptr ppu = _console->GetPpu(); + uint32_t frameCount = ppu ? ppu->GetState().FrameCount : 0; if(_lastFrameCount > frameCount) { _currentFPS = 0; } else { @@ -161,24 +162,20 @@ void BaseRenderer::ShowGameTimer(int lineNumber) DrawString(ss.str(), _screenWidth - 95, yPos, 250, 235, 215);*/ } -void BaseRenderer::ShowLagCounter(int lineNumber) -{ - //TODO - /*int yPos = 13 + 24 * lineNumber; - string lagCounter = MessageManager::Localize("Lag") + ": " + std::to_string(_console->GetLagCounter()); - DrawString(lagCounter, _screenWidth - 123, yPos, 250, 235, 215);*/ -} - void BaseRenderer::ShowFrameCounter(int lineNumber) { - //TODO - /*int yPos = 13 + 24 * lineNumber; - string lagCounter = MessageManager::Localize("Frame") + ": " + std::to_string(_console->GetFrameCount()); - DrawString(lagCounter, _screenWidth - 146, yPos, 250, 235, 215);*/ + int yPos = 13 + 24 * lineNumber; + shared_ptr ppu = _console->GetPpu(); + + string frameCounter = MessageManager::Localize("Frame") + ": " + std::to_string(ppu ? ppu->GetState().FrameCount : 0); + DrawString(frameCounter, _screenWidth - 146, yPos, 250, 235, 215); } void BaseRenderer::DrawCounters() { + int lineNumber = 0; + ShowFpsCounter(lineNumber++); + ShowFrameCounter(lineNumber++); //TODO /*int lineNumber = 0; EmulationSettings* settings = _console->GetSettings(); diff --git a/Core/Console.cpp b/Core/Console.cpp index b27034e..32c33a5 100644 --- a/Core/Console.cpp +++ b/Core/Console.cpp @@ -167,6 +167,11 @@ shared_ptr Console::GetDebugger(bool autoStart) return debugger; } +bool Console::IsRunning() +{ + return _cpu != nullptr; +} + void Console::ProcessCpuRead(uint32_t addr, uint8_t value, MemoryOperationType type) { if(_debugger) { diff --git a/Core/Console.h b/Core/Console.h index 3bc892a..0619197 100644 --- a/Core/Console.h +++ b/Core/Console.h @@ -58,6 +58,8 @@ public: shared_ptr GetCartridge(); shared_ptr GetMemoryManager(); shared_ptr GetDebugger(bool autoStart = true); + + bool IsRunning(); void ProcessCpuRead(uint32_t addr, uint8_t value, MemoryOperationType type); void ProcessCpuWrite(uint32_t addr, uint8_t value, MemoryOperationType type); diff --git a/Windows/Renderer.cpp b/Windows/Renderer.cpp index 84f0012..75400dc 100644 --- a/Windows/Renderer.cpp +++ b/Windows/Renderer.cpp @@ -626,10 +626,10 @@ void Renderer::Render() if(paused) { DrawPauseScreen(disableOverlay); } - + */ if(_console->IsRunning()) { DrawCounters(); - }*/ + } DrawToasts();