Coder Social home page Coder Social logo

nesys's Introduction

NESYS

NES Emulator written in Rust. Hopefully will be able to run both ordinarily as well as in the browser using WebAssembly.

Roadmap

Key Milestones

  • Parse iNES files
  • Create Cartridges (iNES + Mapper interface)
  • CPU
    • Set Up Memory Map
    • Hardware Structures (registers)
    • Core Loop / Basic Functionality
      • Read / Write RAM
      • Addressing Modes
      • Fetch - Decode - Execute
    • Official Opcodes Implemented
    • Handle Interrupts
  • PPU
    • Set Up Basic Rendering Context (HTMLCanvas + SDL)
    • Implement Registers + Memory Map them
    • Implement DMA
    • Generate NMI -> CPU
    • Core rendering loop
      • Background Rendering
      • Sprite Rendering - currently not hardware accurate
      • Proper Background / Foreground blending
    • Sprite Zero Hit
    • Misc PPU flags (emphasize RGB, Greyscale, etc...)
  • APU
    • Implement Registers + Memory Map them
    • Frame Timer IRQ
    • Set Up Basic Sound Output Context (SDL)
    • Channels
      • Pulse 1
      • Pulse 2
      • Triangle
      • Noise
      • DMC
    • DMC DMA
  • Joypads
    • Basic Controller
    • Zapper - still needs work
    • NES Four Score
  • WebAssembly support
    • Compile core to wasm
    • Add HTMLCanvas based PPU implementation
    • Add Web-based APU implementation

It must be blatantly obvious that the project is in a very nascent stage. It will take a long time to get this done.

The roadmaps are inspired from the ANESE repo.

nesys's People

Contributors

rahulc29 avatar

Watchers

 avatar

Forkers

akshat-sahijpal

nesys's Issues

Generalise Register Write Instructions

Currently, register loading is performed in ld${register_name}_${address_mode}(&mut self, params...) : generalise it to ld${register_name}(&mut self, address_mode: AddressMode).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.