github jsgroth/jgnes v0.1.0

latest releases: v0.6.2, v0.6.1, v0.6.0...
3 years ago

First release!

  • NTSC NES emulation with full CPU, PPU, and APU emulation (barring a few obscure behaviors that affect very few or no games)
  • Command-line and graphical user interfaces, the latter built using egui
  • Support for keyboard inputs as well as gamepad inputs via DirectInput
    • Using multiple gamepads simultaneously is not really supported yet; the emulator doesn't currently take notice of which gamepad a particular gamepad input came from
    • Input configuration is not currently supported through the CLI
    • Hotkeys are not currently configurable (Esc=Quit, F9=Toggle Fullscreen)
  • 2 different renderers, a GPU-backed renderer built using wgpu and a software-based renderer using SDL2
  • 4 different vertical sync options: On/FIFO, Off/Immediate, Fast/Mailbox, and Adaptive/FIFORelaxed
    • Fast and Adaptive are supported only with the wgpu renderer, and support varies based on platform/GPU/driver
  • Optional support for integer upscaling + linear interpolation when using the wgpu renderer, which produces an image that is sharp but clean even at higher display resolutions
  • Support for different fixed aspect ratios:
    • NTSC - 8:7 pixel aspect ratio, the way games would have looked on most 1980s TVs
    • Square Pixels - Perfect 1:1 pixel aspect ratio, the image may look slightly squished
    • 4:3 - SD screen aspect ratio, the image may look slightly stretched
    • Stretched - Aspect ratio is not fixed, image always fills the screen
  • An option to force display height to an integer multiple of the NES's native output resolution (224px)
  • Customizable overscan on each side of the screen
  • Support for the following cartridge boards, which together cover the majority of licensed NES releases:
    • NROM (iNES mapper 0)
    • UxROM (iNES mapper 2)
    • CNROM (iNES mapper 3)
    • AxROM (iNES mapper 7)
    • MMC1 (iNES mapper 1)
    • MMC2 (iNES mapper 9)
    • MMC3/MMC6 (iNES mapper 4)
      • MC-ACC variant not currently implemented
    • MMC4 (iNES mapper 10)
    • MMC5 (iNES mapper 5)
      • Additional audio channels not currently implemented

Don't miss a new jgnes release

NewReleases is sending notifications on new releases.