github jsgroth/jgnes v0.6.0

latest releases: v0.6.2, v0.6.1
2 years ago
  • Core changes
    • Support for PAL (EU) timings and output resolution/frequency
      • PAL mode outputs at 256x240 instead of 256x224, runs the CPU/PPU/APU at different speeds, outputs video at ~50Hz instead of ~60Hz, and a few other changes
      • By default the emulator will attempt to detect NTSC vs. PAL from the ROM header, but there is also a new option to force either NTSC or PAL while ignoring what is in the header
      • Added a new aspect ratio option for PAL (11:8 pixel aspect ratio at PAL output resolution)
      • Added a new option to emulate the PAL black border, which crops the output resolution from 256x240 to 252x239 (removing the top scanline + the 2 columns on each edge)
    • Implemented all unofficial/illegal 6502 CPU opcodes except for 3 buggy/unstable opcodes that are not useful (specifically $93, $9B, $9F)
      • Only a few officially licensed games used any unofficial opcodes (e.g. Super Cars and Puzznic) but some ROM hacks and homebrew software make use of them
      • Executing an illegal KIL opcode will now halt the CPU until reset instead of causing the emulator to terminate with an error
    • Added an option to disable sprite flickering by removing the hardware's 8-sprite-per-scanline limit
      • Note this can cause visual glitches in games that used the limit to intentionally hide sprites (e.g. Castlevania II and Ninja Gaiden)
  • Frontend changes
    • Added a scanlines option that supports rendering with no scanlines (current behavior), dimmed scanlines, or black scanlines; requires integer height scaling and at least 2x native NES resolution to render correctly
    • Added an option for a configurable blur shader that can produce a cleaner soft image than using linear filtering with 1x internal scaling
    • Fixed a bug in the wgpu renderer where there would sometimes be a visible seam from the top-left corner of the viewport to the bottom-right corner depending on whether the window height was even or odd; it was particularly noticeable with nearest-neighbor filtering
    • Slight improvements to audio playback that should reduce audio lag and reduce stuttering when audio sync is enabled in some configurations
    • Updated input/hotkey configuration menu to allow changing input/hotkey bindings while the emulator is running
  • Web changes
    • Configuration is now saved in local storage instead of reset on every page load
    • 2x/3x image prescaling is now implemented much more efficiently by utilizing a GPU shader, same as the native frontend
    • Added a fullscreen toggle
    • Added support for a build that renders using WebGPU instead of WebGL2, controlled by building without default features (or using the JGNES_WEBGPU env var with build.sh). This reduces the WASM file size by roughly 75% (!) but doesn't work in most browsers yet
    • Tweaks to audio playback that should reduce audio skips when audio sync is enabled at high refresh rates
    • Layout and styling improvements

Don't miss a new jgnes release

NewReleases is sending notifications on new releases.