Skip to content

kamiyaowl/rust-nes-emulator

Repository files navigation

rust-nes-emulator

Test Deploy Build for Windows

NES Emulator written in Rust

Super Mario Bros. Donkey Kong Mario Bros.
mario-gif donkey-gif mariobros-gif

Let's Play

rustc 1.39.0-nightly required (for embedded optimization...)

Desktop Application

High Performance.

desktop

$ cd desktop
$ cargo run --release

Build on Docker

$ docker-compose run build-desktop-release

WebAssembly Application

wasm

Playgound

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

embedded

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

see Github Actions#Deploy.


Screenshot (Operation checked)

Super Mario Bros.

mario

Donkey Kong

donkey

Mario Bros.

mariobros

Ice Climber.

iceclimber

nestest (unofficial opcode)

nestest_extra

nestest (official opcode)

nestest_normal

Hello World

hello


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