public void WriteByte(int address, byte value) { if (address < 0x8000) { throw new InvalidOperationException("Not a GPU memory portion"); } else if (address < 0xA000) { _vram[address - 0x8000] = value; } else if (address < 0xFE00) { throw new InvalidOperationException("Not a GPU memory portion"); } else if (address < 0xFEA0) { _oam[address - 0xFE00] = value; } else { GPURegister localAddress = (GPURegister)(address - 0xFF00); _io[(byte)localAddress] = value; if (address == 0x46) { Debugger.Break(); } } }
public byte ReadByte(int address) { if (address < 0x8000) { throw new InvalidOperationException("Not a GPU memory portion"); } else if (address < 0x9FFF) { return(_vram[address - 0x8000]); } else if (address < 0xFE00) { throw new InvalidOperationException("Not a GPU memory portion"); } else if (address < 0xFEA0) { return(_oam[address - 0xFE00]); } GPURegister localAddress = (GPURegister)(address - 0xFF00); return(_io[(byte)localAddress]); }
public byte this[GPURegister register] { get { return(_io[(byte)register]); } set { _io[(byte)register] = value; } }