#pragma once #include "stdafx.h" #include "CPU.h" #include "PPU.h" #include "APU.h" #include "BaseMapper.h" #include "MemoryManager.h" #include "ControlManager.h" enum EmulationFlags { LimitFPS = 0x01, }; class Console { private: static uint32_t Flags; static uint32_t CurrentFPS; unique_ptr _cpu; unique_ptr _ppu; unique_ptr _apu; shared_ptr _mapper; unique_ptr _controlManager; unique_ptr _memoryManager; wstring _romFilename; bool _stop = false; bool _reset = false; void ResetComponents(bool softReset); public: Console(wstring filename); ~Console(); void Run(); void Stop(); void Reset(); bool RunTest(uint8_t* expectedResult); void SaveTestResult(); static bool CheckFlag(int flag); static void SetFlags(int flags); static void ClearFlags(int flags); static uint32_t GetFPS(); };