Simple NES Emulator - cs428TAs/w2023 GitHub Wiki
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
- Status Report #1 (February 4)
- Status Report #2 (February 11)
- Status Report #3 (February 18)
- Status Report #4 (February 25)
- Status Report #5 (March 4)
- Status Report #6 (March 11)
- Status Report #7 (March 18)
- Status Report #8 (March 25)
- Status Report #9 (April 1)
Deliverables 📎
Org Chart
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