UNPKG

nes-emu

Version:

A NES emulator

36 lines (32 loc) 1.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _registers = require("../../registers"); /** * PPU Control Register (> write) * * Contains various flags controlling PPU operation. * Connected to `LoopyRegister`. */ class PPUCtrl extends _registers.WriteOnlyInMemoryRegister { constructor() { super(); this.addReadOnlyField("vramAddressIncrement32", 2).addReadOnlyField("patternTableAddressIdFor8x8Sprites", 3).addReadOnlyField("patternTableAddressIdForBackground", 4).addReadOnlyField("spriteSizeId", 5).addReadOnlyField("generateNmiAtStartOfVBlank", 7); } /** Sets the actual value and updates scrolling metadata. */ writeAt(__, byte) { this.setValue(byte); this.context.ppu.loopy.onPPUCtrlWrite(byte); } /** Returns the `PPUAddr` increment per CPU read/write of `PPUData`. */ get vramAddressIncrement() { return this.vramAddressIncrement32 ? 32 : 1; } /** Returns true if sprites are 8x16. Otherwise, they're 8x8. */ get isIn8x16Mode() { return this.spriteSizeId === 1; } } exports.default = PPUCtrl;