Kassette is a small, focused NES emulator for desktop and the browser. It is built for people who want to load their own
legally obtained .nes files and play them with a simple menu-driven interface.
No ROMs, BIOS files, Nintendo assets, screenshots, extracted game data, disassemblies, or ROM patches are included in this repository.
- Desktop and browser frontends.
- Load local
.nesROM files from the app menu. - Keyboard and controller input.
- Customisable input bindings from
Input->Bindings.... - Pause, reset, CRT effect, and cast-shadow video filter toggles from the menu bar.
- Region-aware frame pacing for NTSC, PAL, Dendy, multi-region, and Japan/Famicom-timed cartridges.
- iNES 1.0 and NES 2.0 ROM header support for the mapper set listed in Technical Details.
Open Kassette, then choose File -> Open ROM... and select a legally obtained .nes file.
The desktop app can also be started with a ROM path by developers:
./gradlew run --args="/path/to/game.nes"See Development for local run, build, test, and distribution commands.
Controls support both keyboard and controller input. Input customisation is available from the app menu, but this feature is still in development.
Kassette currently supports these mapper families: NROM, MMC1, UxROM, CNROM, MMC3, AxROM, Color Dreams, BNROM/NINA-001, GxROM, BF909x, NINA-03/06, Jaleco JF-xx, and NINA multicart software.
This is an emulator MVP, not a cycle-perfect emulator. For the full supported ROM matrix, current emulator scope, known limitations, and architecture notes, see Technical Details.
Users must provide their own legally obtained ROM files. Do not commit ROMs or copyrighted game assets to this
repository. .nes files are ignored by .gitignore to help prevent accidental commits.