rust-nes-emulator
NES Emulator written in Rust
Super Mario Bros. | Donkey Kong | Mario Bros. |
---|---|---|
Let's Play
rustc 1.39.0-nightly required (for embedded optimization...)
Desktop Application
High Performance.
$ cd desktop
$ cargo run --release
Build on Docker
$ docker-compose run build-desktop-release
WebAssembly Application
Build locally
environment(for ubuntu)
$ sudo apt install nodejs npm
$ sudo npm install -g n
$ sudo n 10.15.1
$ cargo install wasm-pack
build
$ cd wasm
$ wasm-pack build --release
$ npm install
$ npm run build
Build on Docker
$ docker-compose run build-wasm-release
$ docker-compose run build-wasm-webpage
Embedded for stm32f769
STM32F769I-DISCO - STMicroelectronics
Work in Progress...
The following are derived repositories that are analyzing and implementing improvements to the performance issues.
kamiyaowl/rust-nes-emulator-embedded - GitHub
Build locally
environment(for ubuntu)
$ rustup install nightly
$ rustup run nightly rustup target add thumbv6m-none-eabi thumbv7m-none-eabi thumbv7em-none-eabi thumbv7em-none-eabihf
$ sudo apt install gcc-arm-none-eabi gcc g++
build
$ cd embedded
$ rustup run nightly cargo build --release
$ make clean && make
Build on Docker
$ docker-compose run build-embedded-lib
$ docker-compose run build-mbed
Build Artifacts
Screenshot (Operation checked)
Super Mario Bros.
Donkey Kong
Mario Bros.
Ice Climber.
nestest (unofficial opcode)
nestest (official opcode)
Hello World
Feature & Known Issue
- CPU
- Register
- Interrupt
- Official opcode
- Unofficial opcode
- Cassette(Mapper)
- NROM(Mapper0)
- UNROM
- MMC1
- MMC3
- PPU
- OAM DMA
- BG
- Nametable Mirroring
- Scroll
- Vertical Scroll Bug(#87)
- Sprite
- 8*8
- 8*16
- Sprite 0 hit bug(#40)
- PAD
- Joypad1
- APU
- Pulse Wave1
- Pulse Wave2
- Tri Wave
- Noise
- DMC
- Emulation feature
- Snapshot
- Restore
- ROM Selection Bootloader
Test ROMs
Thank you for the wonderful !
path | from | url |
---|---|---|
roms/other/hello.nes | コンソールゲーム機研究所 | http://hp.vector.co.jp/authors/VA042397/nes/sample.html |
roms/nes-test-roms | christopherpow/nes-test-roms - GitHub | https://github.com/christopherpow/nes-test-roms |