UNPKG

nes-emu

Version:

A NES emulator

25 lines (24 loc) 954 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = vBlankLine; var _constants = _interopRequireDefault(require("../../constants")); var _constants2 = require("../../cpu/constants"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** Runs on scanline 241, which starts the VBlank period and can trigger NMIs. */ function vBlankLine(_ref) { let { ppu } = _ref; if (ppu.cycle === _constants.default.PPU_CYCLE_VBLANK - 1) { ppu.registers.ppuStatus.isInVBlankInterval = 1; // some games with tight loops (like Bomberman) need to "see" the VBlank flag before jumping to the NMI handler return _constants.default.BREAK_FLAG; } if (ppu.cycle === _constants.default.PPU_CYCLE_VBLANK) { ppu.registers.ppuStatus.isInVBlankInterval = 1; if (ppu.registers.ppuCtrl.generateNmiAtStartOfVBlank) return _constants2.interrupts.NMI; } return null; }