UNPKG

nes-emu

Version:

A NES emulator

66 lines (65 loc) 2.44 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 = 0x2001; describe("CPU/PPU registers interaction", () => { describe("PPUMask", () => { let ppu, memory, register; beforeEach(() => { ({ ppu, memory } = (0, _createTestContext.default)()); register = ppu.registers.ppuMask; }); it("is write-only", () => { memory.writeAt(ADDRESS, 123); register.value.should.equal(123); memory.readAt(ADDRESS).should.equal(0); }); it("can write the register", () => { register.showBackground.should.equal(0); register.emphasizeRed.should.equal(0); register.showSprites.should.equal(0); register.emphasizeGreen.should.equal(0); memory.writeAt(ADDRESS, 0b00101000); register.showBackground.should.equal(1); register.emphasizeRed.should.equal(1); register.showSprites.should.equal(0); register.emphasizeGreen.should.equal(0); }); describe("transform", () => { it("returns the same color if no transformation is applied", () => { register.transform(0xe821d9).should.equal(0xe821d9); }); it("can transform a color to grayscale", () => { register.grayscale = 1; register.transform(0xc72631).should.equal(0x5e5e5e); }); it("can transform a color emphasizing red", () => { register.emphasizeRed = 1; register.transform(0xc72631).should.equal(0x951c31); }); it("can transform a color emphasizing green", () => { register.emphasizeGreen = 1; register.transform(0xc72631).should.equal(0x952624); }); it("can transform a color emphasizing blue", () => { register.emphasizeBlue = 1; register.transform(0xc72631).should.equal(0xc71c24); }); it("can emphasize two colors at the same time", () => { register.emphasizeRed = 1; register.emphasizeBlue = 1; register.transform(0xc72631).should.equal(0xc71c31); }); it("applies emphasis bits independently of grayscale", () => { register.grayscale = 1; register.emphasizeRed = 1; register.emphasizeBlue = 1; register.transform(0xc72631).should.equal(0x5e465e); }); }); }); });