UNPKG

nes-emu

Version:

A NES emulator

42 lines (41 loc) 1.4 kB
"use strict"; var _createTestContext = _interopRequireDefault(require("../../helpers/createTestContext")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const should = require("chai").Should(); const ADDRESS = 0x2002; describe("CPU/PPU registers interaction", () => { describe("PPUStatus", () => { let ppu, memory, register; beforeEach(() => { ({ ppu, memory } = (0, _createTestContext.default)()); register = ppu.registers.ppuStatus; }); it("is read-only", () => { register.setValue(123); memory.readAt(ADDRESS).should.equal(123); memory.writeAt(ADDRESS, 456); memory.readAt(ADDRESS).should.equal(123); }); it("can read the register", () => { memory.readAt(ADDRESS).should.equal(0b10000000); register.spriteOverflow = 1; register.sprite0Hit = 1; memory.readAt(ADDRESS).should.equal(0b01100000); }); describe("side effects", () => { it("resets the vertical blank flag on every read", () => { register.isInVBlankInterval = 1; memory.readAt(ADDRESS); register.isInVBlankInterval.should.equal(0); }); it("resets PPUAddr's latch on every read", () => { ppu.loopy.latch = true; memory.readAt(ADDRESS); ppu.registers.ppuAddr.latch.should.equal(false); }); }); }); });