nes-emu
Version:
A NES emulator
24 lines (22 loc) • 865 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _registers = require("../../registers");
var _constants = require("../constants");
/** Sets the high 3 bits of the Triangle channel's timer and its length counter. */
class TriangleLCLTimerHigh extends _registers.WriteOnlyInMemoryRegister {
constructor() {
super();
this.addReadOnlyField("timerHigh", 0, 3).addReadOnlyField("lengthCounterLoad", 3, 5);
}
/** Updates the length counter and schedules a linear length counter update (next quarter beat). */
writeAt(__, byte) {
this.setValue(byte);
const triangle = this.context.apu.channels.triangle;
triangle.lengthCounter.counter = _constants.lengthTable[this.lengthCounterLoad];
triangle.linearLengthCounter.reloadFlag = true;
}
}
exports.default = TriangleLCLTimerHigh;