How to use the jsnes.NES function in jsnes

To help you get started, we’ve selected a few jsnes examples, based on popular ways it is used in public projects.

github bfirsh / jsnes-web / src / Emulator.js View on Github external
          "Buffer underrun, running another frame to try and catch up"

        // desiredSize will be 2048, and the NES produces 1468 samples on each
        // frame so we might need a second frame to be run. Give up after that
        // though -- the system is not catching up
        if (this.speakers.buffer.size() < desiredSize) {
          console.log("Still buffer underrun, running a second frame");

    this.nes = new NES({
      onFrame: this.screen.setBuffer,
      onStatusUpdate: console.log,
      onAudioSample: this.speakers.writeSample,
      sampleRate: this.speakers.getSampleRate()

    // For debugging. (["nes"] instead of .nes to avoid VS Code type errors.)
    window["nes"] = this.nes;

    this.frameTimer = new FrameTimer({
      onGenerateFrame: Raven.wrap(this.nes.frame),
      onWriteFrame: Raven.wrap(this.screen.writeBuffer)

    // Set up gamepad and keyboard
    this.gamepadController = new GamepadController({