#ifndef TICKS_H #define TICKS_H #include #ifdef BUILD_SDL #else #include #endif class Timer { public: using Callback = void (*)(); Timer(); ~Timer(); void setFrequency(uint16_t freq); void setDivider(uint16_t div); Callback setCallback(Callback); [[nodiscard]] uint32_t getTicks() const; [[nodiscard]] uint16_t getFrequency() const; static Timer &instance(); private: friend void timerISR(); #ifdef BUILD_SDL #else _go32_dpmi_seginfo _oldIsr{}, _newIsr{}; #endif uint32_t _ticks{0}; uint32_t _elapsed{0}; uint16_t _div{0}; uint16_t _freq{0}; void (*_callback)(){nullptr}; void update(); }; #endif