#include #include namespace n64 { void MMIO::Reset() { rsp.Reset(); rdp.Reset(); mi.Reset(); vi.Reset(); ai.Reset(); pi.Reset(); ri.Reset(); si.Reset(); } u32 MMIO::Read(u32 addr) { switch (addr) { case RSP_REGION: return rsp.Read(addr); case RDP_REGION: return rdp.Read(addr); case MI_REGION: return mi.Read(addr); case VI_REGION: return vi.Read(addr); case AI_REGION: return ai.Read(addr); case PI_REGION: return pi.Read(addr); case RI_REGION: return ri.Read(addr); case SI_REGION: return si.Read(addr); default: panic("Unhandled mmio read at addr {:08X}", addr); } } void MMIO::Write(const u32 addr, const u32 val) { switch (addr) { case RSP_REGION: rsp.Write(addr, val); break; case RDP_REGION: rdp.Write(addr, val); break; case MI_REGION: mi.Write(addr, val); break; case VI_REGION: vi.Write(addr, val); break; case AI_REGION: ai.Write(addr, val); break; case PI_REGION: pi.Write(addr, val); break; case RI_REGION: ri.Write(addr, val); break; case SI_REGION: si.Write(addr, val); break; default: panic("Unhandled mmio write at addr {:08X} with val {:08X}", addr, val); } } } // namespace n64