Skip to content

gordnzhou/imnes-emulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ImNES = NES Emulator + Rust + ImGui

cover

ImNES is NES emulator implemented in Rust. It includes a debugging UI made using ImGui for desktop. The desktop UI has various features such as:

  • Inspect the CPU, PPU, and APU state, which includes registers, pattern tables and code disassembly
  • View, and enable/disable individual audio channels
  • View iNES cartridge details
  • Pause, stop, or restart the emulation, as well as adjust the game speed
  • Change key bindings for the joypad

This emulator currently supports the following mappers from iNES 1.0:

Mapper Other Names(s) Example Games
000 NROM Super Mario Bros., Donkey Kong
001 SxROM/MMC1 The Legend of Zelda, Metroid
002 UxROM Mega Man, Duck Tales
003 CNROM Arkanoid, Gradius
004 TxROM/MMC3 Super Mario Bros. 3, Kirby's Adventure
007 AxROM Battletoads, Marble Madness
066 GxROM Doraemon, Dragon Power

This repository also includes a binary in nes-emulator-sdl2 which is a standalone emulator that does not contain any UI. Running it will require SDL to be installed and linked on your local machine.

Desktop Application Setup

Before starting, make sure you have Rust installed and make sure the version is at least 1.79.0-nightly.

  • Add ROMs to the /roms folder. Save data will be automatically placed in the /saves folder with the same name as its ROM file, with a .sav extension.

  • To run the application:

cargo run -p imnes-desktop --release

By default, the joypad bindings are set to:

  • Left, Right, Up, Down - Arrow Keys
  • Start - Enter Key
  • Select - Left Shift Key
  • A Button - X Key
  • B Button - Z Key

Screenshots

smb3

dk

mm3

nestest

smb

Credits

This project wouldn't have been possible without reference from these amazing sources. Thank you!!

Future TODOs

  • 2 Player Joypad Support
  • Game Save States
  • Controller Input Support
  • Implementations for more mappers

About

A Desktop NES Emulator built using Rust and ImGui

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published