Corning Community College
CSCS2650 Computer Organization
To immerse yourself in relevant and important aspects the nature of the CPU, the C-assembly-machine code connection, and getting to play with all of it under the guise of a simple system.
Each week, throughout the semester, the aim will be to focus on various activities related to implementing some functionality for NES ROMs (to be run in an emulator):
The overall aim is to enable you to challenge yourself, explore areas and concepts you are not familiar with, and grow as a programmer and problem solver. I don't want to see you just doing things the way you are familiar with (simply because you've always done them that way).
The outline of semester progress:
week | project | chapter | points per item (PTS) | TOTAL |
---|---|---|---|---|
2 | nes0 | https://timcheeseman.com/nesdev/2016/01/18/hello-world-part-one.html | 1 | 13 |
3 | nes1 | https://timcheeseman.com/nesdev/2016/01/22/hello-world-part-two.html | 2 | 26 |
4 | nes2 | https://timcheeseman.com/nesdev/2016/02/06/color-in-motion.html | 2 | 26 |
5 | nes3 | https://timcheeseman.com/nesdev/2016/02/22/sprites-and-input.html | 3 | 39 |
6 | nes4 | create a 2 player pong game (1 player may be automated) | 3 | 39 |
7 | nes5 | choose your path (see below): learn 6502 ASM (hello) or start on larger NES game | 4 | 52 |
8 | nes6 | choose your path (ASM colors, NES game) | 4 | 52 |
9 | nes7 | choose your path (sprites/input, NES game) | 5 | 65 |
10 | nes8 | choose your path (ASM pong, NES game) | 5 | 65 |
11 | nes9 | EoCE NES game (ASM or C) | 6 | 78 |
12 | nesA | EoCE NES game (ASM or C) | 6 | 78 |
Also be sure to peruse the other posts at: https://timcheeseman.com/nesdev/
Now that we have established a level of functionality using the existing set of tools, we have a choice to make. And this choice can be made individually:
The cadence for the assembly approach is pretty straightforward: we've pretty much implemented a thing a week. You'd pursue the same for that sequence of accomplishments.
As for the NES game effort, clearly you wouldn't be expected to produce something complete in the course of a week, so instead, I would like a snapshot:
We'll cap off the semester with a more involved NES game, which could be a further modification/evolution of whatever work you've done already, or an opportunity to start anew. We'll do this through to the end.
I will also open things up to the possibility of working in groups (no more than 3!), provided each person has an awareness of all aspects of the code, and equally participates in the development effort. Documentation/comments/snapshots will be important, demonstrating you are keeping at the task.
TOTAL:nesX:final tally of results (TOTAL/TOTAL) *:nesX:assimilate indicated and related content [PTS/PTS] *:nesX:asked, responded, worked through any questions [PTS/PTS] *:nesX:reveal of interesting insight, knowledge gained [PTS/PTS] *:nesX:discussion regarding content, related resources [PTS/PTS] *:nesX:experimentation, playing, reporting insights gained [PTS/PTS] *:nesX:state what your code is going to do [PTS/PTS] *:nesX:implementation of example or your own variant [PTS/PTS] *:nesX:contribute content to class notes page [PTS/PTS] *:nesX:no warnings, compiler notes for code [PTS/PTS] *:nesX:no syntax errors in code [PTS/PTS] *:nesX:no logical errors in code [PTS/PTS] *:nesX:no runtime errors for code [PTS/PTS] *:nesX:submitted code aligns with intent, author statement [PTS/PTS]
Additionally: