Example #1
0
  @Override
  public final synchronized void setFrame(
      final int[] nextframe, final int[] bgcolors, boolean dotcrawl) {
    // todo: stop running video filters while paused!
    // also move video filters into a worker thread because they
    // don't really depend on emulation state at all. Yes this is going to
    // cause more lag but it will hopefully get back up to playable speed with NTSC filter

    frametimes[frametimeptr] = nes.getFrameTime();
    ++frametimeptr;
    frametimeptr %= frametimes.length;

    if (frametimeptr == 0) {
      long averageframes = 0;
      for (long l : frametimes) {
        averageframes += l;
      }
      averageframes /= frametimes.length;
      fps = 1E9 / averageframes;
      this.setTitle(
          String.format(
              "HalfNES %s - %s, %2.2f fps" + ((frameskip > 0) ? " frameskip " + frameskip : ""),
              NES.VERSION,
              nes.getCurrentRomName(),
              fps));
    }
    if (nes.framecount % (frameskip + 1) == 0) {
      frame = renderer.render(nextframe, bgcolors, dotcrawl);
      render();
    }
  }