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; } }
public void updateMemory(MemoryStore memory, int max) { this.memory = memory; this.updated = true; this.max = max; }
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; } }