예제 #1
0
파일: PPU2c02.cs 프로젝트: icaroNZ/Nes
        public byte PpuRead(ushort address, bool readOnly = false)
        {
            byte data = 0x00;

            address &= 0x3FFF;

            if (_cartridge.CpuWrite(address, data))// Possible remove
            {
            }
            else if (address <= 0x1FFF)     //Pattern memory
            {
                data = _tablePattern[(address & 0x1000) >> 12, address & 0x0FFF];
            }
            else if (address >= 0x2000 && address <= 0x3EFF)      //Name table memory
            {
            }
            else if (address >= 0x3F00 && address <= 0x3FFF)      //Palette memory
            {
                address &= 0x001f;
                if (address == 0x0010)
                {
                    address = 0x0000;
                }
                if (address == 0x0014)
                {
                    address = 0x0004;
                }
                if (address == 0x0018)
                {
                    address = 0x0008;
                }
                if (address == 0x001C)
                {
                    address = 0x000C;
                }
                data = _tablePalette[address];
            }

            return(data);
        }
예제 #2
0
파일: Bus.cs 프로젝트: icaroNZ/Nes
 public void CpuWrite(ushort address, byte data)
 {
     if (_cartridge.CpuWrite(address, data))// Possible remove
     {
     }
     else if (address <= 0x1FFF)
     {
         CpuRam[address & 0x07FF] = data;
     }
     else if (address >= 0x2000 && address <= 0x3FFF)
     {
         _ppu.CpuWrite((ushort)(address & 0x0007), data);
     }
 }