Table of Contents

Corning Community College

CSCS2650 Computer Organization

Nigh-on Excellent Semester-programming-experience (nesX)

Objective

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.

Task

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/

Choose your path

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:

EoCE NES game

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.

Submission

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: