nes-emu
Version:
A NES emulator
36 lines (32 loc) • 1.12 kB
JavaScript
;
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;