nesfuzz/README.md

55 lines
2.8 KiB
Markdown
Raw Normal View History

2019-11-12 00:04:07 +00:00
# nestur
Nestur is an NES emulator. There are plenty of full-featured emulators out there; this is primarily an educational project but it is usable. There may still be many bugs, but I'm probably not aware of them so please submit issues.
- SDL2 is the only dependency
- no use of `unsafe`
- NTSC timing
- supports mappers 0-4 which cover ~85% of [games](http://tuxnes.sourceforge.net/nesmapper.txt)
2019-11-12 00:04:07 +00:00
2020-01-31 02:42:17 +00:00
<img src="pics/smb.png" width=250> <img src="pics/zelda_dungeon.png" width=250> <img src="pics/kirby.png" width=250> <img src="pics/dk.png" width=250> <img src="pics/smb3.png" width=250> <img src="pics/excitebike.png" width=250>
2020-01-03 00:00:18 +00:00
2020-01-31 02:37:01 +00:00
## Controls
2019-11-12 00:04:07 +00:00
```
Button | Key
___________________
| A | D |
| B | F |
| Start | Enter |
2019-11-12 00:05:27 +00:00
| Select | R-Shift|
2019-11-12 00:04:07 +00:00
| Up | Up |
| Down | Down |
| Left | Left |
| Right | Right |
-------------------
```
2020-01-07 04:51:53 +00:00
The code aims to follow the explanations from the [NES dev wiki](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 everyone who contributes to that wiki/forum, and to Michael Fogleman's [NES](https://github.com/fogleman/nes) and Scott Ferguson's [Fergulator](https://github.com/scottferg/Fergulator) for getting me unstuck at several points.
2019-11-12 00:04:07 +00:00
## Compilation and use
1. Install [Rust](https://www.rust-lang.org/tools/install)
2. Configure SDL2 for your platform:
2020-02-02 18:08:11 +00:00
- Windows: Have [Visual Studio](https://docs.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=vs-2019) installed including the "Desktop development with C++" workload. Then follow the instructions here (skipping step 4 as `SDL2.dll` is already in the repo): https://github.com/Rust-SDL2/rust-sdl2#windows-msvc.
- macOS: Install [Homebrew](https://brew.sh/) and run `brew install sdl2`
- Linux: `sudo apt-get install libsdl2-dev` (or whatever your package manager is)
2020-01-20 23:41:33 +00:00
3. `cd nestur/ && cargo build --release` (be sure to build/run with the release flag or it will run very slowly)
4. The `nestur` executable or `nestur.exe` will be in `nestur/target/release`.
5. Run with `$ ./nestur path/to/rom_filename.nes` or `> nestur.exe path\to\rom_filename.nes`.
6. If the game uses battery-backed RAM (if it can save data when turned off), a save file like `rom_filename.sav` will be created in the same folder as the ROM when the program is exited. When Nestur is run again, it will look for a file matching the ROM name, with a `.sav` extension instead of `.nes`.
2020-01-31 02:37:01 +00:00
## To do
2019-11-12 00:04:07 +00:00
- DMC audio channel, high- and low-pass filters
2020-01-02 23:50:46 +00:00
- Better GUI and distributable solution
- Save states
2019-11-12 00:04:07 +00:00
- Player 2 controller?
2020-01-07 04:45:42 +00:00
## Known problem games
2020-02-01 20:10:50 +00:00
- None currently, please report any issues
2020-01-07 04:45:42 +00:00
Please also check out [Cloaker](https://github.com/spieglt/cloaker) and [Flying Carpet](https://github.com/spieglt/flyingcarpet)!