Skip to content

Latest commit

 

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CrabNES

An NES emulator written in Rust, including a GUI debug mode.

image

Features

  • Multithreading
  • Memory decomp + editor
  • Pattern tables viewer
  • Debug UI powered by egui
  • CLI ROM loading
  • Expandable mapper support
  • Built-in screenshotting

Demo

demo.webm

Supported Mappers

Mapper support will grow in the future.

Currently implemented:

  • Mapper 0 (NROM)

In progress:

  • Mapper 1

Philosophy

CrabNES was written as an educational learning project for myself.

I originally wanted to dig deeper into the Rust programming language by building projects. As someone who already wrote a Game Boy emulator over a year ago, an NES emulator was the perfect project for this role as it was already on my list.

My primary focus with this emulator was memory safety. Coming from C++, I wanted to build an emulator that was immune to things like segfaults and dangling points. Rust proved to be a fantastic language for this purpose, especially due to its excellent developer experience which made it a blast to use.

Usage

Emulator Keyboard
Toggle Debug Mode m
Take Screenshot o

In debug mode, you can use the Cartridge Loader to select a valid ROM and load it into the emulator.

Tip

You can optionally provide a path to this ROM as an argument when executing the binary. When the emulator boots, it will automatically load this ROM.

Controller Mapping

NES Keyboard
A Z
B X
Select Shift
Start Enter
D-pad Arrows

Building

Pre-built binaries for Windows, macOS, and Linux are already available in the releases section.

To compile a binary yourself, simply run cargo build --release.

Authors

License

MIT

About

An NES emulator written in Rust featuring a GUI debug mode.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages