rustness_monster
rustness_monster copied to clipboard
NES / Dendy emulator
NES Emulator
My tiny COVID-19 project
This is yet another emulator of NES platform written in rust. The project is far from being complete, but it can play first-gen NES games, including platformers.
I've tried it with:
- Super Mario Bros (horizontal scroll)
- Ice climber (vertical scroll)
- Popeye
- Baloon fight
- Donkey Kong
- Pacman
I also wrote a mini ebook on this topic. Check it out.
Running instructions
Prerequisites
- rustc
- cargo
- git
Installation
Macos:
brew install sdl2
git clone [email protected]:bugzmanov/rustness_monster.git
Linux:
- install sdl2
- Clone repo
git clone [email protected]:bugzmanov/rustness_monster.git
Windows via WSL2:
- install sdl2 to linux
- Clone repo to linux
git clone [email protected]:bugzmanov/rustness_monster.git
- Install any modern x11 server to windows e.g. VcXsrv. Note that old versions of Xming won't work because of outdated OpenGL support.
- Run the following commands (change DISPLAY variable to your X11 server parameters)
export LIBGL_ALWAYS_INDIRECT=1
export DISPLAY=192.168.0.5:0.0
Running the game
cargo run --release -p native <path_to_rom>
Control
-
Keyboard:
Control Keyboard Arrows Arrows A,B a, s Start Enter Select Space -
Joystick
- Assumes joytick based controll if joystick is connected upon emulator start
Plan
- [x] CPU
- [x] ROM
- [x] Basic support
- [x] Mapper 0
- [ ] Mapper 1
- [x] Bus, Interrupts
- [x] PPU
- [x] Registers
- [x] DMA
- [x] Rendering
- [x] Scorlling
- [50%] Sprite 0
- [x] Controllers
- [x] Keyboard
- [x] Joystick
- [ ] APU