NES.Engine.WriteMemory8 C# (CSharp) Method

WriteMemory8() public method

public WriteMemory8 ( ushort addr, byte val ) : void
addr ushort
val byte
return void
        public void WriteMemory8(ushort addr, byte val)
        {
            // Depends on where!
            if (addr < 0x2000)
            {
                // Ram w/ mirroring
                RAM[addr % 2048] = val;
            } else if ((addr >= 0x2000) && (addr < 0x4020))
            {
                // Registers
                if (addr < 0x4000)
                    addr = (ushort)(((addr - 0x2000) % 0x8) + 0x2000);

                IORegisters.WriteMemory8(addr, val);
            } else if (addr < 0x8000)
            {
                throw new NotImplementedException();
            } else if (addr <= 0xFFFF)
            {
                int desiredBank = (addr < 0xC000) ? 1 : 0;
                addr = (ushort)((addr < 0xC000) ? addr - 0x8000 : addr - 0xC000);
                desiredBank = (Cartridge.PRGROMBanks.Length == 1) ? 0 : desiredBank;
                Cartridge.PRGROMBanks[desiredBank][addr] = val;
            } else
                throw new ArgumentException();
        }

Usage Example

Ejemplo n.º 1
0
        public void Push8(byte val)
        {
            Engine.WriteMemory8((ushort)(0x0100 + SP), val);
            SP--;

            if (SP < 0)
            {
                Console.WriteLine("Warning: Stack overflow!");
            }
        }