#pragma once #include "stdafx.h" #include "../Utilities/VirtualFile.h" #include "../Utilities/SimpleLock.h" class Cpu; class Ppu; class BaseCartridge; class MemoryManager; class Debugger; class DebugHud; class VideoRenderer; class VideoDecoder; class NotificationManager; enum class MemoryOperationType; class Console : public std::enable_shared_from_this { private: shared_ptr _cpu; shared_ptr _ppu; shared_ptr _memoryManager; shared_ptr _cart; shared_ptr _debugger; shared_ptr _notificationManager; shared_ptr _videoRenderer; shared_ptr _videoDecoder; shared_ptr _debugHud; SimpleLock _runLock; atomic _stopFlag; public: void Initialize(); void Run(); void Stop(); void LoadRom(VirtualFile romFile, VirtualFile patchFile); shared_ptr GetVideoRenderer(); shared_ptr GetVideoDecoder(); shared_ptr GetNotificationManager(); shared_ptr GetDebugHud(); shared_ptr GetCpu(); shared_ptr GetPpu(); shared_ptr GetCartridge(); shared_ptr GetMemoryManager(); shared_ptr GetDebugger(bool allowStart = true); void ProcessCpuRead(uint32_t addr, uint8_t value, MemoryOperationType type); void ProcessCpuWrite(uint32_t addr, uint8_t value, MemoryOperationType type); };