Skip to content
forked from spieglt/nestur

The NES you left outside in the rain but let dry and still kind of works

Notifications You must be signed in to change notification settings

bitemyapp/nestur

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nestur

This is an NES emulator and a work in progress. The CPU and PPU work, though there are still at least a couple bugs. I've mostly tested on Donkey Kong and Super Mario Bros. so far. There are plenty of full-featured emulators out there; this is primarily an educational project but I do want it to run well.

  • One dependency (SDL)

  • One line of unsafe (std::mem::transmute::<u8>() -> i8)

  • NTSC timing

(Warning: this pipe currently takes you to an empty room, it's not the only one, and I don't know why.)

Controls:

 Button  |   Key
___________________
|   A    |    D   |
|   B    |    F   |
| Start  |  Enter |
| Select | R-Shift|
|   Up   |   Up   |
|  Down  |  Down  |
|  Left  |  Left  |
|  Right |  Right |
-------------------

The code aims to follow the explanations from https://wiki.nesdev.com/w/index.php/NES_reference_guide where possible, especially in the PPU, and the comments quote from it often.

Thanks to Michael Fogleman's https://github.com/fogleman/nes for getting me unstuck at several points.

To do:

  • More mappers (only NROM/mapper 0 implemented so far)

  • DMC audio channel, high- and low-pass filters, APU cleanup/timing fix

  • Save/load functionality and battery-backed RAM solution

  • Player 2 controller?

About

The NES you left outside in the rain but let dry and still kind of works

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%