• Stars
    star
    739
  • Rank 61,358 (Top 2 %)
  • Language
    Rust
  • License
    MIT License
  • Created about 12 years ago
  • Updated about 5 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
808
star
2

offset-allocator

A port of Sebastian Aaltonen's `OffsetAllocator` to Rust
Rust
389
star
3

zero.rs

A module for freestanding Rust programs
Rust
247
star
4

cxx-async

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

libui-rs

Rust bindings to the minimalist, native, cross-platform UI toolkit `libui`
Rust
212
star
6

vscode-powerline

Powerline theme for the Visual Studio Code status bar
CSS
65
star
7

mp4v2

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

rustfmt

An incomplete Rust pretty printer
Rust
48
star
9

planeshift

Early experimental WIP. Do not use yet!
Rust
38
star
10

compute-shader

A simple, cross-platform interface to GPU compute functionality in Rust
Rust
37
star
11

gltf-ibl-sampler-egui

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

parng

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

multilist

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

fempeg

MP2 decoder written in Rust
Rust
17
star
15

doctorjsmm

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

bevy-baked-gi

A workflow for baked global illumination in the Bevy game engine
C#
15
star
17

firefox-framerate-monitor

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

deminifier

JavaScript deminifier addon for Firefox 4
JavaScript
13
star
19

pilcrow

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

webrender-demos

Demos for WebRender
HTML
13
star
21

rust-sandbox

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

miniservo-mac

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

webrast

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

linux-drm-sharing-test

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

rtree

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

signpost

Rust interface to the OS native signpost debug facilities
Rust
10
star
27

cxx-async-prototype

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

piranha

A simple profiler for Android
OCaml
9
star
29

cxx-async-example

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

rust-irc-client

An IRC client library written in Rust
Rust
8
star
31

fast-itoa

Experimental SIMD integer-to-string conversion
Rust
7
star
32

test-async-texture-upload

Async texture upload demo for Android
Java
7
star
33

rust-spidermonkey

SpiderMonkey bindings for the Rust programming language
JavaScript
7
star
34

rust-nss

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

virtex

Sparse virtual texturing experiment
Rust
4
star
36

fennec-faststart-prototype

Tests the Fennec Native UI graphics code
Java
4
star
37

pngl

GPU-accelerated PNG decoder written in Rust
Rust
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

two-engines

Gecko/Servo comparison
HTML
4
star
42

selectron

Experiments with hardware-accelerated CSS rendering
Cuda
4
star
43

rustium

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

gfx.js

2D scene graph library for JavaScript
JavaScript
3
star
45

modmod

Simple music module player written in OCaml
OCaml
3
star
46

ocaml-oembed

OCaml library implementing the oEmbed standard
OCaml
3
star
47

android-flexible-glsurfaceview

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

giflib

Rust bindings to the venerable giflib library
Shell
2
star
49

rbot

A Rust IRC bot
Rust
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

gperftools

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

rust-oauth

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

fast-gaussian

Fast Gaussian blur demo
TypeScript
2
star
55

pcwalton.github.com

Blog
JavaScript
2
star
56

WRTextView

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

buoyancy

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

imdialog

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

sample-tree

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

bevy-gltf-pbr-extras

Advanced glTF PBR features for the Bevy game engine (iridescence, etc.)
WGSL
2
star
61

lord-drawquaad

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

NetSurf

C
1
star
63

ogg

The Xiph.org Ogg library
C
1
star
64

vorbis

The Xiph.org Vorbis library
C
1
star
65

glyphy-rs

Rust bindings to the glyphy library
Rust
1
star
66

test-universal-surface-texture

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

attic

Miscellaneous hackery.
1
star