StableCrimson / ferricom

Attempting to write an NES emulator in Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ferricom

Unit Tests and Coverage

Attempting to write a NES emulator in Rust

I have never written an emulator before, and Rust is a fairly new language to me. So I am very much a beginner. This isn't a project where finishing is the goal, the main point is to learn. If this project helps you write your own emulator or learn Rust, then even better.

Roadmap (WIP)

  • CPU and all instructions
  • Memory into its own module
  • ROM loading
  • PPU (Basic)
  • Input (Basic)
  • APU
  • PPU (Advanced)
  • Build for multiple platforms
  • GUI
  • Input remapping / gamepad detection
  • Save files and save states

CPU Status

227/256 opcodes implemented

  • 151 Official opcodes
  • 105 Illegal opcodes
  • Stack implemented
  • Detecting if a page is crossed
  • Branching instructions
  • Extra cycle on crossed page for certain instructions
  • Logging (Needed at this stage for test ROMs)
  • Cycle accuracy tests
  • Passes test ROMs (Instruction set)
  • CLI arg parsing

Misc To-Do

  • Inline docs and tests for cargo doc
  • Disassembler
  • Actions also run linting and formatting (Once the emulator is actually usable)
  • Semver
  • Add usage docs

Resources

About

Attempting to write an NES emulator in Rust

License:MIT License


Languages

Language:Rust 99.9%Language:Shell 0.1%