EmuCR Feeds
Email Us

jgnes v0.4.0 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.4.0 changelog:
Additional mappers implemented:
BNROM (iNES mapper 34)
NINA-001 (also iNES mapper 34)
GxROM (iNES mapper 66)
Jaleco JF-11 / JF-14 (iNES mapper 140)
Bandai FCG-1 / FCG-2 (iNES mapper 16, submapper 4)
Bandai LZ93D50 w/ X24C01 EEPROM chip (iNES mapper 159)
Bandai LZ93D50 w/ X24C02 EEPROM chip or no writable memory (iNES mapper 16, submapper 5)
Bandai LZ93D50 w/ 8KB SRAM (iNES mapper 153)
Additional mapper features implemented:
Konami VRC6 expansion audio is now slightly amplified linearly; before this change, audio output from this mapper was very quiet compared to the builtin APU audio and other boards with expansion audio
Web frontend made much more featureful:
Allow loading different ROM files without needing to refresh the page
Add a reset button
Add aspect ratio (NTSC / Square pixels) and image filtering options (Nearest neighbor / Linear 1x/2x/3x); the linear 2x/3x options are implemented using CPU scaling because WebGL does not support GPU compute shaders
Implement audio using the AudioWorklet API
Implement audio sync to prevent the emulator from running too fast on high refresh rate displays
Implement persistent save files using local storage, and add a button to download the save file for the currently running game
Fix window scaling so that the window size accounts for DPI scale factor
Disallow opposing directional inputs to be pressed simultaneously (left+right or up+down); allowing these can cause severe glitches in some games (e.g. Zelda 2 and Battletoads). If opposing inputs are pressed simultaneously, left/up will be sent to the emulated NES rather than right or down
Add a .nes file filter to the file picker dialog (previously there was no filter at all)
When the page is loaded, hide the UI and display "Loading..." until the WASM is loaded and all event listeners are added
Add an option to all frontends to allow silencing the triangle wave audio channel when it is outputting waves at ultrasonic frequencies, which can reduce audio popping in some games (e.g. Mega Man 2)
Enable link-time optimizations for published release builds to significantly reduce executable binary sizes
Implement a hack to fix the GUI scaling factor from defaulting to 4.5 on the Steam Deck, which made the GUI completely unusable
A few minor performance improvements:
Refactor audio downsampling code to avoid needing to do floating point multiplications and divisions on every emulated CPU cycle
In the PPU code, add a bit set storing which pixels contain any sprites to avoid needing to loop over all sprites on the scanline on pixels that don't contain any sprites
Change the square wave channel sweep units to only recompute the target period when one of their inputs changes, either the sweep config or the phase timer period

Download: jgnes v0.4.0
Source: Here



Random Related Topic Refresh Related Topic

Random Related Topic Loading...

0 Comments

Post a Comment

Can't post a comment? Try This!