Exemple #1
0
        public byte CpuRead(UInt16 address, bool debugMode = false)
        {
            if (InCpuRamRange(address))
            {
                return(cpuRam[MaskCpuRam(address)]);
            }
            else if (InPpuRange(address))
            {
                return(ppu.CpuRead(MaskPpu(address), debugMode));
            }
            else if (InControllerRange(address))
            {
                int  index = address & 0x0001;
                byte data  = (byte)(BitMagic.IsBitSet(capturedController[index], 7) ? 0x01 : 0x00);

                capturedController[index] <<= 1;

                return(data);
            }
            else if (InCartridgeRange(address))
            {
                return(cartridge.CpuRead(address));
            }

            return(0x00);
        }