#pragma once #include "stdafx.h" #include "SNES/CartTypes.h" #include "Debugger/DebugTypes.h" #include "Debugger/Debugger.h" #include "Shared/Interfaces/IConsole.h" #include "Utilities/Timer.h" #include "Utilities/VirtualFile.h" #include "Utilities/SimpleLock.h" #include "Shared/RomInfo.h" class Cpu; class Ppu; class Spc; class BaseCartridge; class MemoryManager; class InternalRegisters; class ControlManager; class IControlManager; class DmaController; class Debugger; class DebugHud; class SoundMixer; class VideoRenderer; class VideoDecoder; class NotificationManager; class EmuSettings; class SaveStateManager; class RewindManager; class BatteryManager; class CheatManager; class MovieManager; class FrameLimiter; class DebugStats; class Msu1; class Emulator; enum class MemoryOperationType; enum class SnesMemoryType; enum class EventType; enum class ConsoleRegion; enum class ConsoleType; class Console final : public std::enable_shared_from_this, public IConsole { private: shared_ptr _cpu; shared_ptr _ppu; shared_ptr _spc; shared_ptr _memoryManager; shared_ptr _cart; shared_ptr _internalRegisters; shared_ptr _controlManager; shared_ptr _dmaController; shared_ptr _msu1; EmuSettings* _settings; Emulator* _emu; vector _spcPlaylist; uint32_t _spcTrackNumber = 0; uint32_t _masterClockRate; ConsoleRegion _region; bool _frameRunning = false; void UpdateRegion(); public: Console(Emulator* emu); ~Console(); void Initialize(); void Release(); void OnBeforeRun() override; void Stop() override; void Reset() override; void RunFrame() override; void RunSingleFrame() override; void ProcessEndOfFrame(); LoadRomResult LoadRom(VirtualFile& romFile) override; void Init() override; uint64_t GetMasterClock() override; uint32_t GetMasterClockRate(); ConsoleRegion GetRegion(); ConsoleType GetConsoleType() override; void Serialize(Serializer& s) override; shared_ptr GetCpu(); shared_ptr GetPpu(); shared_ptr GetSpc(); shared_ptr GetCartridge(); shared_ptr GetMemoryManager(); shared_ptr GetInternalRegisters(); shared_ptr GetControlManager() override; shared_ptr GetDmaController(); shared_ptr GetMsu1(); Emulator* GetEmulator(); bool IsRunning(); AddressInfo GetAbsoluteAddress(AddressInfo relAddress) override; AddressInfo GetRelativeAddress(AddressInfo absAddress, CpuType cpuType) override; double GetFrameDelay() override; double GetFps() override; PpuFrameInfo GetPpuFrame() override; vector GetCpuTypes() override; void SaveBattery() override; BaseVideoFilter* GetVideoFilter() override; RomFormat GetRomFormat() override; AudioTrackInfo GetAudioTrackInfo() override; void ProcessAudioPlayerAction(AudioPlayerActionParams p) override; };