• Stars
    star
    739
  • Rank 58,964 (Top 2 %)
  • Language
    Rust
  • License
    MIT License
  • Created over 11 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

NES emulator written in Rust

sprocketnes is an emulator for the Nintendo Entertainment System written in the Rust programming language.

Its purpose is to serve as a technology demonstration to show how the Rust programming language is suitable for systems software such as emulators. It has many shortcomings and is not intended to be a production-quality emulator. sprocketnes is also designed to be a relatively clean example codebase, showing off various Rust idioms.

The NES was chosen for this project because:

  • It's familiar to most hackers.

  • It's a reasonably simple system to emulate.

  • Because of its popularity, its workings are relatively well-documented.

  • It's CPU-bound, so it can serve as a benchmark to help optimize Rust code.

  • The audio requires some measure of real-time operation, which tests Rust's real-time capabilities.

The main controls are as follows:

  • A: Z

  • B: X

  • Start: Enter

  • Select: Right shift

  • D-Pad: Arrows

Other keys:

  • Save state: S

  • Load state: L

  • Quit: Escape

If you want to build sprocketnes, you will first need the Speex codec library installed; on the Mac you can install it with brew install speex.

To build (add --release if you actually want playable speed):

cargo build

There are numerous demos and games available for free for use with this emulator at http://nesdev.com/.

Enjoy!

More Repositories

1

rust-media

A free, comprehensive, and portable video/audio streaming library for Rust
Rust
757
star
2

zero.rs

A module for freestanding Rust programs
Rust
247
star
3

libui-rs

Rust bindings to the minimalist, native, cross-platform UI toolkit `libui`
Rust
211
star
4

cxx-async

Simple interoperability between C++ coroutines and asynchronous Rust
Rust
206
star
5

vscode-powerline

Powerline theme for the Visual Studio Code status bar
CSS
58
star
6

mp4v2

MP4v2 Library: This library provides functions to read, create, and modify mp4 files
C++
52
star
7

rustfmt

An incomplete Rust pretty printer
Rust
48
star
8

planeshift

Early experimental WIP. Do not use yet!
Rust
37
star
9

compute-shader

A simple, cross-platform interface to GPU compute functionality in Rust
Rust
36
star
10

parng

A parallel, SIMD-optimized PNG decoder written in Rust
Rust
23
star
11

gltf-ibl-sampler-egui

An artist-friendly skybox generator wrapping the glTF IBL Sampler
C
20
star
12

multilist

Safe, intrusive doubly-linked lists for Rust
Rust
17
star
13

fempeg

MP2 decoder written in Rust
Rust
17
star
14

doctorjsmm

DoctorJS--, simple type inference for JavaScript
JavaScript
16
star
15

firefox-framerate-monitor

Simple Jetpack-based framerate monitor for Firefox
JavaScript
14
star
16

deminifier

JavaScript deminifier addon for Firefox 4
JavaScript
13
star
17

pilcrow

Work-in-progress Unicode paragraph layout library written in Rust
Rust
13
star
18

webrender-demos

Demos for WebRender
HTML
13
star
19

rust-sandbox

Sandboxing support for Rust, using the native OS facilities
Rust
13
star
20

miniservo-mac

Tiny browser chrome for Servo using CEF for testing
C++
12
star
21

webrast

Experimental, high-performance GPU-accelerated rasterizer for common Web content
Rust
11
star
22

linux-drm-sharing-test

A demo of cross-process texture sharing on Linux using DRI/DRM directly
C
11
star
23

rtree

Safe, zero-overhead doubly-linked trees in Rust
Rust
10
star
24

cxx-async-prototype

Asynchronous C++ interoperability for Rust
C++
10
star
25

piranha

A simple profiler for Android
OCaml
9
star
26

cxx-async-example

A minimal example server to demonstrate use of `cxx-async`
C++
8
star
27

rust-irc-client

An IRC client library written in Rust
Rust
8
star
28

test-async-texture-upload

Async texture upload demo for Android
Java
7
star
29

bevy-baked-gi

A library and workflow for baked global illumination in the Bevy game engine
C#
7
star
30

rust-spidermonkey

SpiderMonkey bindings for the Rust programming language
JavaScript
7
star
31

signpost

Rust interface to the OS native signpost debug facilities
Rust
7
star
32

fast-itoa

Experimental SIMD integer-to-string conversion
Rust
6
star
33

rust-nss

Rust bindings to the Network Security Services library used in Firefox and Chrome
Rust
5
star
34

virtex

Sparse virtual texturing experiment
Rust
4
star
35

fennec-faststart-prototype

Tests the Fennec Native UI graphics code
Java
4
star
36

pngl

GPU-accelerated PNG decoder written in Rust
Rust
4
star
37

two-engines

Gecko/Servo comparison
HTML
4
star
38

rust-ao

Rust bindings to the libao audio output library
Rust
4
star
39

memory-meter

Minimalist memory meter addon for Firefox 4
JavaScript
4
star
40

iowaittop

Tiny I/O measurement tool for Android
C
4
star
41

selectron

Experiments with hardware-accelerated CSS rendering
Cuda
4
star
42

rustium

Rust language bindings for the Chromium Embedded Framework
Rust
3
star
43

gfx.js

2D scene graph library for JavaScript
JavaScript
3
star
44

modmod

Simple music module player written in OCaml
OCaml
3
star
45

ocaml-oembed

OCaml library implementing the oEmbed standard
OCaml
3
star
46

android-flexible-glsurfaceview

A more flexible replacement for Android's GLSurfaceView
Java
3
star
47

giflib

Rust bindings to the venerable giflib library
Shell
2
star
48

rbot

A Rust IRC bot
Rust
2
star
49

WRTextView

EXPERIMENTAL, DO NOT USE YET
Objective-C
2
star
50

netsurf-buildsystem

The build system from the NetSurf project
Perl
2
star
51

sharkctl

Library to allow programmatic control of Shark on Mac OS X 10.6 Snow Leopard
C
2
star
52

pcwalton.github.com

Blog
JavaScript
2
star
53

rust-oauth

A Rust client-side implementation of the OAuth standard
Rust
2
star
54

gperftools

Fork of Google's performance tools for better profiling on ARM
C++
2
star
55

fast-gaussian

Fast Gaussian blur demo
TypeScript
2
star
56

imdialog

Partial dialog(1) replacement backed by ImGui, written in Rust
Rust
2
star
57

buoyancy

A fast CSS float placement algorithm for Servo
Rust
2
star
58

sample-tree

A macOS script to run sample(1) on a process and all its children
Rust
2
star
59

lord-drawquaad

A minimalist Rust library for drawing full-screen textured quads in OpenGL 3.3+
Rust
1
star
60

NetSurf

C
1
star
61

offset-allocator

A port of Sebastian Aaltonen's `OffsetAllocator` to Rust
Rust
1
star
62

ogg

The Xiph.org Ogg library
C
1
star
63

vorbis

The Xiph.org Vorbis library
C
1
star
64

glyphy-rs

Rust bindings to the glyphy library
Rust
1
star
65

test-universal-surface-texture

A workaround for the lack of SurfaceTexture on Android Honeycomb and below
Java
1
star
66

attic

Miscellaneous hackery.
1
star