#pragma once #include "MemoryHandler.h" #include #include #include #include class SPRegistersReg { protected: SPRegistersReg(uint32_t * SignalProcessorInterface); public: uint32_t & SP_MEM_ADDR_REG; uint32_t & SP_DRAM_ADDR_REG; uint32_t & SP_RD_LEN_REG; uint32_t & SP_WR_LEN_REG; uint32_t & SP_STATUS_REG; uint32_t & SP_DMA_FULL_REG; uint32_t & SP_DMA_BUSY_REG; uint32_t & SP_SEMAPHORE_REG; uint32_t & SP_PC_REG; uint32_t & SP_IBIST_REG; private: SPRegistersReg(); SPRegistersReg(const SPRegistersReg&); SPRegistersReg& operator=(const SPRegistersReg&); }; class CRegisters; class CMipsMemoryVM; class CN64System; class SPRegistersHandler : public MemoryHandler, public SPRegistersReg, private CGameSettings, private CDebugSettings, private CLogging { public: SPRegistersHandler(CN64System & N64System, CMipsMemoryVM & MMU, CRegisters & Reg); bool Read32(uint32_t Address, uint32_t & Value); bool Write32(uint32_t Address, uint32_t Value, uint32_t Mask); private: SPRegistersHandler(); SPRegistersHandler(const SPRegistersHandler &); SPRegistersHandler & operator=(const SPRegistersHandler &); void SP_DMA_READ(); CN64System & m_System; CMipsMemoryVM & m_MMU; CRegisters & m_Reg; uint32_t & m_RspIntrReg; uint32_t & m_PC; };