Exemplo n.º 1
0
        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();
                }
            }
        }
Exemplo n.º 2
0
        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]);
        }
Exemplo n.º 3
0
 public byte this[GPURegister register]
 {
     get
     {
         return(_io[(byte)register]);
     }
     set
     {
         _io[(byte)register] = value;
     }
 }