#emulator #6502 #nes

no-std runes

No-std NES emulator library and minimal emulator written purely in Rust

15 releases

new 0.2.4 Apr 18, 2019
0.2.3 Jul 9, 2018
0.2.1 Feb 5, 2018
0.1.9 Jan 22, 2018
0.1.1 Nov 19, 2017

#6 in Emulators

45 downloads per month

MIT license

138KB
3.5K SLoC

RuNES

https://img.shields.io/crates/v/runes.svg https://img.shields.io/crates/l/runes.svg

As we know, there have been a ton of NES emulator implementations in various kinds of languages (mostly C). All of these emulators come with different accuracy and portability. RuNES is an attempt to build a reasonably accurate (cycle-level accurate), light-weight and efficient emulation core library using Rust. Unlike sprocketnes or pinky, RuNES strives to provide with a clean and minimal core library without standard library (i.e., without Box, Rc, Vectors, etc.) that could be compiled and easily ported to embedded environments. Of course, a minimal but usable SDL-based GUI is also provided as a demonstration of use.

Feature

  • Core library with minimal use of the Rust core crate, and zero use of std.
  • Lightweight and clean code base.
  • Support standard 6502 instruction set (unofficial instruction will be considered in the future).
  • Load/save the machine state.
  • Cycle-level accuracy (in-progress).

Guidelines

  • Never use std in the core library.
  • At the same time, avoid unsafe as much as possible, but use it at discretion to improve performance: remove unnecessary checks within a very localized context.
  • Keep the core library code base minimal.

Build the Example Emulator

GNU/Linux

Mac OS X

No runtime deps

  • dev clap 2.29
  • dev sdl2 0.31+unsafe_textures