Simple NES Emulator - cs428TAs/w2023 GitHub Wiki

NES

Overview

For those not familiar with software emulation, an emulator is anything that allows programs and software written for some specific piece of hardware to work on another. An NES emulator seeks to perform all the various hardware functions that the original Nintendo Entertainment System does when a Read-Only Memory cartridge (ROM) is loaded, thereby allowing old games to run on virtually any hardware. This is done completely in software. Because the NES is relatively simple, it should be theoretically possible to have a working prototype with a game running by the end of the semester.

We have opted to write our emulator in C++ to take advantage of a class-based structure reflecting NES hardware architecture.

The source code for our project can be found here.

Resources

As this has been done to death, documentation for the NES is very plentiful.

Status Reports

Deliverables 📎

Org Chart

NESOrgChart

Roles and Responsibilities

Project Manager

  • Together with the chief architect, maintains a reasonable schedule to keep the project on track
  • Decides project scope and acceptance criteria
  • Delineates tasks between team members
  • Records team's progress in weekly status reports

Chief Architect

  • Maintains a bird's eye view of the overall architecture
  • Is the expert in general NES system behavior
  • Informs the project manager on cost estimates for various tasks and engineer progress
  • Assists in linking together disparate parts of the system
  • Reports to Project Manager regarding project scope

Engineer

  • Gain knowledge in a specific area of NES hardware (CPU, PPU, I/O, ROM management, etc.)
  • Divided among teams according to project needs
  • Report to Chief Architect regarding functionality and integration

Members

  • Jake Hamzawi (HamSesh), Project Manager
  • Michael Norris (NotStanley4330), Chief Architect
  • Jonah Bateman (Kahoot 3), Engineer
  • Cameron Clark (Reason4Respawn), Engineer
  • PJ Rape (ptrj96), Engineer
  • Jacob Rawlings (Culker), Engineer