#emulator #nes #nintendo

bin+lib yane

An N.E.S. emulator and emulation library.

7 releases

new 0.2.2 Mar 9, 2025
0.2.1 Mar 9, 2025
0.1.3 Mar 5, 2025

#84 in Emulators

Download history 454/week @ 2025-03-01

454 downloads per month

MIT license

265KB
5.5K SLoC

Y.A.N.E. - Yet Another N.E.S. Emulator

Nintendo Entertainment System emulator and emulation library.

Crates.io Rust Docs.rs

Can be used as either a standalone emulator or as a ready-out-of-the-box rust crate for emulating an N.E.S. See examples for more examples.

Usage as an app

Download the correct release for your operating system and add it to your $PATH. If cargo's install directory is already in your $PATH, you can simply run cargo install yane.

> cargo install yane
...
> yane -h
An N.E.S. emulator.

Usage: yane [COMMAND]

Commands:
  setup      Initialize the configuration files at $HOME/.yane/
  ines       Load and run an iNES (.nes) file
  savestate  Load and run a savestate (.yane.bin) file.
  help       Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version
> yane ines path/to/my/rom.nes --muted --debug --keymap-file=my/custom/keymap.yaml

Usage as a library

// Load an iNes (.ines) file
let ines = include_bytes!("./my_game.nes");
// Create a new N.E.S. console with the game inserted
let mut nes = Nes::with_cartridge(Cartridge::from_bytes(ines, None));
let config = Config::default();
// Advance the N.E.S. by 1 frame (i.e. until the VBlank interval)
nes.advance_frame(&config);
// Reset the N.E.S.
nes.reset();

See the documentation on the library portion or the examples folder for more.

Dependencies

~50MB
~890K SLoC