nes-emu
Version:
A NES emulator
40 lines (38 loc) • 1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _registers = require("../../registers");
var _helpers = require("../../helpers");
/**
* OAM Data Port (<> read/write)
*
* Write OAM data here. Writes will increment `OAMAddr` after the write.
*/
class OAMData extends _registers.InMemoryRegister {
/** Reads a value from PPU's internal OAM. */
readAt() {
const {
ppu
} = this.context;
const oamAddress = ppu.registers.oamAddr.value;
return ppu.oamRam[oamAddress];
}
/** Writes a `byte` to PPU's internal OAM and increments `OAMAddr`. */
writeAt(__, byte) {
const {
ppu
} = this.context;
const oamAddress = ppu.registers.oamAddr.value;
ppu.oamRam[oamAddress] = byte;
this._incrementAddress();
}
_incrementAddress() {
const {
oamAddr
} = this.context.ppu.registers;
oamAddr.setValue(_helpers.Byte.force8Bit(oamAddr.value + 1));
}
}
exports.default = OAMData;