My NES is a portable, open source, low level NES/Famicom emulator written in C#. The compatibility of My NES is very high, running most games without any bugs.
The aim of the project is to reproduce any hardware quirks that games may rely on as elegantly as possible. My NES doesn't employ any game specific hacks or hash checks (Aside from filling in pot holes left behind by the iNES file format).
- Powerful Launcher that uses NesCart DB and SQLite databases to organize roms.
- Uses NesCart DB to show and use accurate game information.
- Ability to save snapshots of current game.
- Run game in windowed or fullscreen mode with useful video options like keep aspect ratio.
- Ability to record sound.
- Multilingual interface.
- Save and load state ability.
- Accuracy, My Nes pass almost all known nes tests by emulating the real hardware behaviors without any kind of emulation hack.
- Compatibility, My Nes support more than 100 board/mapper which mean thousands of games are playable.
- Multithreaded Emulator, the emulation process run in thread separated from renderer threads. This may improve performance especially with multi core cpus.
- CPU 6502:All CPU 6502 instructions implemented including the so called illegal opcodes.
- Interrupts: Implement exact interrupt timings like interrupt check before the last instruction behavior
- PPU: Implement the Picture Processor Unit as described in the wiki docs http://wiki.nesdev.com/w/index.php/PPU_rendering with exact timing
- Palettes: Implement the palette generator of NTSC video as described at http://wiki.nesdev.com/w/index.php/NTSC_video
- TV Formats:NTSC, PALB and DENDY.
- Sound: Implement all Nes 5 sound channels, MMC5 external sound channels and VRC6 external sound channels. Also the DC Blocker filter is applied to the output.
- Sound Playback And Record: Fixed to 44100 Hz - 16 bit - Mono. Applied for playback and record. Sound record depends on emulation speed not on sound playback so record doesn't affected if the emulator run fast or slow.
- Mappers And Boards: Implement about 97% of known and documented mappers
- Controllers: 4 players joypads, Zapper and VSUnisystem DIP. Note that you'll need to connect Zapper or 4 Player in settings manually in order to use it