示例#1
0
        public CEmulator(Byte[] aDataArray)
        {
            time = 0;

            Logger.LogNormal("Load");

            rom = new NesRom(aDataArray);               // rom?f?[?^??????????
            // To Be Fixed.
            //mem = new NesMemory( rom );		// ???????????[?h?J?n?A?h???X????rom?f?[?^???i?[
            vram = new CVram(rom);                      // ???????????[?h?J?n?A?h???X????rom?f?[?^???i?[
        }
示例#2
0
 public void Update(NesMemory mem, CVram vram)
 {
     ppuRegister.Update(mem, vram);
 }
示例#3
0
        public void Update(NesMemory mem, CVram vram)
        {
            if (mem.IsWrite(0x2000) == true)
            {
                REG2000 = mem.GetDataByte(0x2000);
                Logger.LogNormal("2000:%02x\n" + REG2000);
            }

            if (mem.IsWrite(0x2001) == true)
            {
                REG2001 = mem.GetDataByte(0x2001);
                Logger.LogNormal("2001:%02x\n" + REG2001);
            }

            if (mem.IsWrite(0x2002) == true)
            {
                REG2002 = mem.GetDataByte(0x2002);
                Logger.LogNormal("2002:%02x\n" + REG2002);
            }

            if (mem.IsWrite(0x2003) == true)
            {
                REG2003 = mem.GetDataByte(0x2003);
                Logger.LogNormal("2003:%02x\n" + REG2003);
            }

            if (mem.IsWrite(0x2004) == true)
            {
                REG2004 = mem.GetDataByte(0x2004);
                Logger.LogNormal("2004:%02x\n" + REG2004);
            }

            if (mem.IsWrite(0x2005) == true)
            {
                REG2005 = mem.GetDataByte(0x2005);
                Logger.LogNormal("2005:%02x\n" + REG2005);
            }

            if (mem.IsWrite(0x2006) == true)
            {
                REG2006 = mem.GetDataByte(0x2006);
                Logger.LogNormal("2006:%02x\n" + REG2006);

                address = ( UInt16 )((address << 8) | REG2006);
                Logger.LogNormal("address:%04x\n" + address);
            }

            if (mem.IsWrite(0x2007) == true)
            {
                REG2007 = mem.GetDataByte(0x2007);
                Logger.LogNormal("2007:%02x\n" + REG2007);

                vram.SetDataByte(address, REG2007);

                if ((REG2000 & 0x04) == 0x00)
                {
                    address += 1;
                }
                else
                {
                    address += 32;
                }

                Logger.LogNormal("address:%04x\n" + address);
            }
        }