From d060e3a50c987d10799ccc739bdbf9d7d7a13c10 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Thu, 6 Feb 2025 18:24:59 +0100 Subject: implement settings --- lib/nes/common/fps-counter.hh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lib/nes/common/fps-counter.hh (limited to 'lib/nes/common/fps-counter.hh') diff --git a/lib/nes/common/fps-counter.hh b/lib/nes/common/fps-counter.hh new file mode 100644 index 0000000..96db98c --- /dev/null +++ b/lib/nes/common/fps-counter.hh @@ -0,0 +1,23 @@ +#pragma once + +#include "nes/common/types.hh" +#include + +namespace nes +{ + /// Counts frames. + class fps_counter + { + static constexpr auto buffer_size = u32{ 20 }; + + u32 frame_times_[buffer_size]{}; // The time until the next frame for the last frames. + u32 buffer_position_{ 0 }; // Position in the ring buffer. + u32 buffered_fps_{ 0 }; // Delay updates to FPS to one update per round in the ring buffer. + + public: + explicit fps_counter() = default; + + auto frame(std::chrono::microseconds elapsed_time) -> void; + auto get_fps() const -> u32 { return buffered_fps_; } + }; +} // namespace nes \ No newline at end of file -- cgit v1.3.1