2023-10-08

jgnes v0.6.2

jgnes v0.6.2 is released. A cross-platform NES emulator. Has a native frontend built using SDL2 as well as a web frontend that compiles to WASM and runs in the browser.

jgnes Feature Status:
Implemented:
Cycle-based 6502 CPU emulation, PPU emulation (graphics), and APU emulation (audio)
The most commonly used cartridge boards (aka mappers)
NROM
The most common NROM variants (UxROM / CNROM / AxROM)
MMC1
MMC3/MMC6
Some less commonly used cartridge boards
MMC2/MMC4
MMC5 including expansion audio
Konami VRC2 / VRC4 / VRC6 / VRC7, including VRC6 expansion audio
VRC7 FM synth expansion audio is not implemented; only one game used it, Lagrange Point
Sunsoft 5A / 5B / FME-7, including 5B expansion audio
Codemasters unlicensed board
Color Dreams unlicensed board
Bandai FCG-1 / FCG-2 / LZ93D50
The LZ93D50 variant that uses the Datach Joint ROM system is not implemented (iNES mapper 157)
Jaleco JF-11 / JF-14
GxROM
BNROM
NINA-001
P1 & P2 input with support for keyboard input and DirectInput gamepad input
Support for 3 different forced aspect ratios (NTSC, 1:1 pixel aspect ratio, 4:3 screen aspect ratio), plus an option for stretched/none
Overscan customization
A GPU-backed renderer based on wgpu with an option for integer upscaling + linear interpolation, producing a sharp but clean image even at higher resolutions and non-8:7 aspect ratios
Save & load state
Not Implemented:
Unofficial CPU opcodes
Cycle-accurate rendering effects of enabling rendering mid-scanline
DMC DMA cycle stealing and dummy reads, an obscure hardware quirk that affects very very few if any games
Color palette customization; the NES hardware directly outputs an NTSC video signal rather than RGB pixel grids, so any mapping from NES colors to RGB colors is an approximation at best
Lots of mappers, most notably Namco's custom mappers
Fast forward or rewind
Support for PAL/EU releases (the processor timings are different compared to NTSC US/JP)
Support for any controller port peripherals (e.g. the Zapper)

jgnes v0.6.2 changelog:
Upgraded wgpu to 0.17.2 to pick up a bugfix for the DirectX 12 backend where resizing the window would completely crash the program. This bug apparently did not affect the other wgpu backends
Replaced the VRC7 expansion audio implementation with a stripped-down version of the YM2413/OPLL implementation from my Sega Master System emulator, which should be more accurate and also much more efficient
Implemented the NES PPU's grayscale bit, which was only used in a single officially released game: Noah's Ark (EU) uses it for the water effect covering the bottom of the screen
Made audio buffer size configurable instead of hardcoded

Download: jgnes v0.6.2
Source: Here

0 Comments

Post a Comment