public void CpuWrite(UInt16 address, byte data) { if (InCpuRamRange(address)) { cpuRam[MaskCpuRam(address)] = data; } else if (InPpuRange(address)) { ppu.CpuWrite(MaskPpu(address), data); } else if (address == 0x4014) { dmaPage = data; dmaAddress = 0x00; dmaStarted = true; } else if (InControllerRange(address)) { int index = address & 0x0001; capturedController[index] = controllers[index].State; } else if (InCartridgeRange(address)) { cartridge.CpuWrite(address, data); } }