All Projects β†’ kamiyaowl β†’ Rust Nes Emulator

kamiyaowl / Rust Nes Emulator

Licence: mit
NES Emulator written in Rust

Programming Languages

c
50402 projects - #5 most used programming language
rust
11053 projects

Projects that are alternatives of or similar to Rust Nes Emulator

Rustynes
πŸ‘Ύ An NES emulator by Rust and WebAssembly
Stars: ✭ 399 (+227.05%)
Mutual labels:  nes-emulator, wasm
SaltyNES
A NES emulator in WebAssembly
Stars: ✭ 69 (-43.44%)
Mutual labels:  wasm, nes-emulator
Nes Rust
NES emulator written in Rust + WASM
Stars: ✭ 141 (+15.57%)
Mutual labels:  nes-emulator, wasm
Tinygo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
Stars: ✭ 9,068 (+7332.79%)
Mutual labels:  stm32, wasm
Easygui
Easy GUI for microcontrollers
Stars: ✭ 116 (-4.92%)
Mutual labels:  stm32
Nes.swift
An NES emulator written in Swift
Stars: ✭ 103 (-15.57%)
Mutual labels:  nes-emulator
Awesome Seed Rs
A curated list of awesome things related to Seed
Stars: ✭ 101 (-17.21%)
Mutual labels:  wasm
Faust
Functional programming language for signal processing and sound synthesis
Stars: ✭ 1,360 (+1014.75%)
Mutual labels:  wasm
Go Wasm
WebAssembly binary file parser written in go
Stars: ✭ 121 (-0.82%)
Mutual labels:  wasm
Lunatic
Lunatic is an Erlang-inspired runtime for WebAssembly
Stars: ✭ 2,074 (+1600%)
Mutual labels:  wasm
Dap42
CMSIS-DAP debugger firmware for STM32F042Fx and STM32F103xx
Stars: ✭ 115 (-5.74%)
Mutual labels:  stm32
Wasmplay
WASM Web "Framework" Playground
Stars: ✭ 105 (-13.93%)
Mutual labels:  wasm
Blurhash Rust Wasm
A Rust and WASM implementation of the blurhash algorithm
Stars: ✭ 119 (-2.46%)
Mutual labels:  wasm
Jlink arm Ob
ARM Cortex-M JLink η‡’ιŒ„ε™¨
Stars: ✭ 102 (-16.39%)
Mutual labels:  stm32
Gbemu
WebAssembly based Gameboy Emulator
Stars: ✭ 120 (-1.64%)
Mutual labels:  wasm
Wasmer Go
πŸΉπŸ•ΈοΈ WebAssembly runtime for Go
Stars: ✭ 1,365 (+1018.85%)
Mutual labels:  wasm
Kou
A minimal language compiled into wasm bytecode
Stars: ✭ 112 (-8.2%)
Mutual labels:  wasm
Stm32
STM32 CM3 Project
Stars: ✭ 119 (-2.46%)
Mutual labels:  stm32
Stm32 Dma Uart
Efficient DMA timeout mechanism for peripheral DMA configured in circular mode demonstrated on a STM32 microcontroller.
Stars: ✭ 111 (-9.02%)
Mutual labels:  stm32
Ee
EEPROM emulation for stm32.
Stars: ✭ 109 (-10.66%)
Mutual labels:  stm32

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: http://kamiya.tech/rust-nes-emulator/

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

  • [x] CPU
    • [x] Register
    • [x] Interrupt
    • [x] Official opcode
    • [x] Unofficial opcode
  • [x] Cassette(Mapper)
    • [x] NROM(Mapper0)
    • [ ] UNROM
    • [ ] MMC1
    • [ ] MMC3
  • [x] PPU
    • [x] OAM DMA
    • [x] BG
      • [x] Nametable Mirroring
      • [x] Scroll
        • [ ] Vertical Scroll Bug(#87)
    • [x] Sprite
      • [x] 8*8
      • [x] 8*16
      • [ ] Sprite 0 hit bug(#40)
  • [x] PAD
    • [x] Joypad1
  • [ ] APU
    • [ ] Pulse Wave1
    • [ ] Pulse Wave2
    • [ ] Tri Wave
    • [ ] Noise
    • [ ] DMC
  • [ ] Emulation feature
    • [x] Snapshot
    • [x] 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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].