github bfirsh/jsnes v2.1.0
2.1.0

7 hours ago

Highlights

MMC5 mapper support (Castlevania III and others) plus a batch of PPU, APU, and mapper accuracy fixes.

New mappers

  • Mapper 5 (MMC5) — Castlevania III, Uncharted Waters, Laser Invasion, and other late-era titles. Dual CHR bank sets, ExRAM modes, split-screen nametable, direct-CHR sprite 0 hit.

Hardware accuracy

PPU

  • Sprite evaluation rewritten for hardware-accurate OAM scan.
  • Sprite 0 hit pre-computed for the next scanline for dot-accurate timing.
  • Color emphasis bits (NTSC) mapped correctly.
  • Grayscale mask fixed (0x200x30).
  • General rendering pipeline and register accuracy improvements.

APU

  • Frame counter IRQ timing fixed for hardware accuracy.
  • Square sweep negate and overflow mute threshold corrected.

CPU

  • NMI handler now sets the I flag.

Mappers

  • MMC3: register writes decoded via mirrored address bits.
  • Mapper 180: initial PRG bank at $C000 corrected.

Controller

  • Strobe now models APU-clock-gated OUT0 updates.

Save states

CPU dataBus and controller state are now persisted. Save states from 2.0.x still load, but dataBus will be zero until the next bus operation.

Packaging

  • main/require exports now point to the UMD bundle, fixing Node/CommonJS consumers.
  • Game Genie and controller JSON serialization added to type declarations.

Don't miss a new jsnes release

NewReleases is sending notifications on new releases.