Data | Notice |
---|---|
04/10 | Note Board. |
27/09 | Instructions about the simulator. |
06/09 | Report of group deliveries with CPUs. |
23/08 | Report of group deliveries. |
23/08 | Consolidated list of Groups. |
02/08 | Group formation and link to the git repository, reply in Google Classroom (I sent invitations to all those enrolled until today). |
10/07 | There will be no class in the week of SECOMP (05-10 / 08). |
10/07 | Don't miss the important dates of the Graduation calendar. |
Introduction to the development of hardware emulators / simulators. Specifically this semester, the class will develop an emulator based on the NES.
The objective of the course is to develop a project large enough that students need to work in groups, share tasks, organize deliveries and plan development. It is important to understand the context and how the components are interconnected to develop a large system, especially when it comes to different hardware components that need to be simulated.
Documentation available online as links below:
The course will include deliveries / presentations of group work. The size of the groups will be up to 4 students, defined in the first class of the semester. The groups must make a fortnightly presentation of the progress of the project, where the last evaluation of the month will result in a score to compose the evaluation of the group. Each student's contribution will be assessed by producing code in the group's repository. There is no exam in the discipline. The average of the students will be the average of the marks of each evaluation. The dates of all evaluations are on the calendar at the bottom of this page.
This is a 12 credit course with 4 face-to-face credits on Fridays from 19:00 pm to 23:00 pm. Attendance is mandatory in classes, where the activities will be presented / delivered. The remaining 8 hours must be done in agreement with the group members.
To implement a game and understand the infrastructure, read the assembly programming and NES game creation tutorials.
The game should be presented on 30/08, during class. Prefer the emulator mednafen. Your game must have sprites, colors, beep (sound) and 1 controller. You must make your delivery through your group's git repository and place a run.sh or run.bat script with the command that runs the emulator and its game.
Your processor must be emulated in a programming language of your choice. An emulator is software capable of reading a processor's binary program and executing the behavior of the target processor. In this way, you need to emulate the 6502, being able to complete the behavior of each of its instructions, its file format (from NES) and also the memory model (which addresses are which peripherals). Generally speaking, the emulator code is similar to the code below:
void emulates () {memoria = LeArquivoCartucho (); pc = MemoryInitialPosition; while (1) {instruction = LeMemoria (pc); decoded = DecodeInstruction (instruction); switch (decoded) {case ...: break; default: printf ("invalid instruction"); } PrintLineDebug (); }}
Your code should print a debug line according to the repository, for each instruction executed. These debug lines will be used to validate your emulator. You must also generate some memory files in the cartridge format to test your emulator.
Implement the PPU and run your Game of the Month 1. The goal is to advance the development of your emulator and ensure that all the functionality related to the screen is ready. You can implement other features to ensure the game works.
Final delivery. Your emulator must be able to run your game completely and also another existing game (no peer game). Recommended games to demonstrate: DonkeyKong and Super Mario
Class | Data | Activity |
---|---|---|
1 | 02 / ago | First day of school. Presentation of discipline and formation of groups. (Slides) |
- | 09 / ago | SECOMP - there will be no activities |
2 | 16 / ago | Delivery 1 - Follow-up |
3 | 23 / ago | |
4 | 30 / ago | Delivery 2 - Evaluation |
5 | 06 / set | |
6 | 13 / set | Delivery 3 - Follow-up |
7 | 20 / set | |
8 | 27 / set | Delivery 4 - Evaluation |
9 | 04 / out | |
10 | 11 / out | Delivery 5 - Follow-up |
11 | 18 / out | |
12 | 25 / out | |
13 | 01 / Nov | Delivery 6 - Evaluation |
14 | 08 / Nov | Delivery 7 - Follow-up |
15 / Nov | There will be no activities | |
15 | 22 / Nov | Delivery 8 - Evaluation |
27 / Nov | (Wednesday) Public presentation of semester projects | |
29 / Nov | There will be no activities |