A NES emulator 100% written in Rust
This project is my first big coding project and also my first big emulator project.
I chose Rust because it's fast and it's by far my favorite language. Also all the code is 100% safe Rust!
The emulator is not cycle accurate, but all the games I've tried work pretty well. Based on the mappers I implemented, appart from a few exceptions, ~90% of games should work.
The program needs libsdl2 to run and libsdl2-devel to compile. It works on Linux, Windows and MacOS
Launch: ./nesoxyde [SyncMode] <iNES File>
SyncMode:
- Audio sync (default): The emulation is synced with the audio sample rate (44100Hz). Can cause frame lag.
- Video sync (-V): The emulation is synced with the video refresh rate of 60fps. Can cause audio pops and cracks.
R -> Reset
Esc -> Close emulator
1 -> Volume down
2 -> Volume up
F1 -> Save state
F2 -> Load state
Joypad:
- A -> B
- S -> A
- Z -> Select
- X -> Start
- UpArrow -> Up
- DownArrow -> Down
- LeftArrow -> Left
- RightArrow -> Right
- Make the CPU and PPU cycle accurate
- Change the sprite rendering routine to match what real hardware does
- Fix some mapper bugs (4 doesn't work with every game)