#pragma once #include "stdafx.h" enum class MemoryOperation { Read = 0, Write = 1, }; class MemoryRanges { private: vector _ramReadAddresses; vector _ramWriteAddresses; public: vector* GetRAMReadAddresses() { return &_ramReadAddresses; } vector* GetRAMWriteAddresses() { return &_ramWriteAddresses; } void AddHandler(MemoryOperation operation, uint16_t start, uint16_t end = 0) { if(end == 0) { end = start; } vector *addresses; if(operation == MemoryOperation::Read) { addresses = &_ramReadAddresses; } else { addresses = &_ramWriteAddresses; } for(int i = start; i <= end; i++) { addresses->push_back(i); } } }; class IMemoryHandler { public: virtual void GetMemoryRanges(MemoryRanges &ranges) = 0; virtual uint8_t ReadRAM(uint16_t addr) = 0; virtual void WriteRAM(uint16_t addr, uint8_t value) = 0; };