A project intending to reproduce the behavior of an actual NES by emulating each hardware component and their interactions.
- CPU fully implemented
- Bus implemented
- Cartridges implemented (we only support iNES 1.0 rom files)
- PPU fully implemented
- APU not implemented (= no sound)
- Writing NES emulator in Rust
- Nesdev.org
- NesHacker - The NES explained
- Similar projects
- In Rust : rustness_monster
- In C++/C# : mesen
git clone git@gitlab.enst.fr:net7212/2425/project-loriaux-varin.git
cd project-loriaux-varin.git
cargo build
Users are expected to provide the games by putting them in the rom_examples. The roms must be iNES files as other formats are currently not supported.
./target/debug/nes_emul
You will then be prompted to enter the name of the <rom>.nes to play
- There are some unit tests for the CPU instruction set
- Most of the actual tests were made comparing our logs to known reference logs such as nestest
- In game timer inaccurate (runs too fast)
- graphics bugs :
- sprites on the left/right borders appear on both sides
- static text scrolls with levels instead of remaining fixed
- sprites don't disappear behind other elements (eg : Mario entering a pipe)
- implement the APU
- add the possibility to use real controllers instead of keyboard
- Support more rom formats
- Create a GUI to configure Joypads, enable/disable Vsync
- WASM for browser maybe?
- Thomas Varin
- Quentin Loriaux
This project is licensed under the GNU General Public License v3.0.
Break time!
