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
wgpuand 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
wgpurenderer, 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