Example #1
0
        public PPU(NESCore nes)
        {
            this.nes = nes;
            int vRAM = 0;
            if (nes.rom.vROM == 0 || nes.rom.mapper == 19 || nes.rom.mapper == 210)
                vRAM += 8;
            PPUMemory = new MemoryStore(4, nes.rom.vROM, vRAM, true); //4 hardwired to make doing extra nametables less insane.

            switch (nes.nesRegion)
            {
                default:
                case SystemType.NTSC:
                    vblankEnd = 261;
                    break;
                case SystemType.PAL:
                    vblankEnd = 311;
                    break;
            }
            horzFlipTable = new byte[256];
            for (int i = 0; i < 256; i++)
            {
                horzFlipTable[i] = 0;
                if ((i & 0x80) != 0)
                    horzFlipTable[i] |= 0x01;
                if ((i & 0x40) != 0)
                    horzFlipTable[i] |= 0x02;
                if ((i & 0x20) != 0)
                    horzFlipTable[i] |= 0x04;
                if ((i & 0x10) != 0)
                    horzFlipTable[i] |= 0x08;
                if ((i & 0x08) != 0)
                    horzFlipTable[i] |= 0x10;
                if ((i & 0x04) != 0)
                    horzFlipTable[i] |= 0x20;
                if ((i & 0x02) != 0)
                    horzFlipTable[i] |= 0x40;
                if ((i & 0x01) != 0)
                    horzFlipTable[i] |= 0x80;
            }
        }
Example #2
0
 public void updateMemory(MemoryStore memory, int max)
 {
     this.memory = memory;
     this.updated = true;
     this.max = max;
 }
Example #3
0
        public SPPU(NESCore nes)
        {
            this.nes = nes;
            int vRAM = 0;
            if (nes.rom.vROM == 0 || nes.rom.mapper == 19 || nes.rom.mapper == 210)
                vRAM += 8;
            PPUMemory = new MemoryStore(4, nes.rom.vROM, vRAM, true); //4 hardwired to make doing extra nametables less insane.

            for (int i = 0; i < 256; i++)
                zeroGray[i] = 0x3F;

            switch (nes.nesRegion)
            {
                default:
                case SystemType.NTSC:
                    vblankEnd = 261;
                    break;
                case SystemType.PAL:
                    vblankEnd = 312;
                    break;

            }
        }