User Tools

Site Tools


Sidebar

projects

ntr0 (due 20220119)
pct1 (bonus; due 20220119)
wcp1 (due 20220119)
pct2 (due 20220126)
tic2 (due 20220126)
wcp2 (due 20220126)
pct3 (bonus; due 20220202)
tic3 (due 20220202)
wcp3 (due 20220202)
pct4 (due 20220209)
tic4 (due 20220209)
wcp4 (due 20220209)
gfo0 (due 20220216)
pct5 (bonus; due 20220216)
tic5 (due 20220216)
wcp5 (due 20220216)
bwp1 (bonus; due 20220302)
pct6 (due 20220302)
tic6 (due 20220302)
wcp6 (due 20220302)
pct7 (bonus; due 20220309)
tic7 (due 20220309)
wcp7 (due 20220309)
pct8 (due 20220316)
tic8 (due 20220316)
wcp8 (due 20220316)
gfo1 (due 20220323)
pct9 (bonus; due 20220323)
tic9 (due 20220323)
wcp9 (due 20220323)
bwp2 (bonus; due 20220406)
pctA (due 20220406)
ticA (due 20220406)
wcpA (due 20220406)
pctB (bonus; due 20220413)
ticB (due 20220413)
wcpB (due 20220413)
pctC (due 20220420)
ticC (due 20220420)
wcpC (due 20220420)
gfo2 (due 20220427)
pctD (bonus; due 20220427)
wcpD (bonus; due 20220427)
pctE (bonus; due 20220504)
wcpE (bonus; due 20220504)
EoCE (due 20220512)
haas:spring2022:comporg:projects:ticx

This is an old revision of the document!


Corning Community College

CSCS2650 Computer Organization

Testing and Investigating Computing (ticX)

Objective

To immerse yourself in relevant and important aspects the nature of the CPU, utilizing it to implement experiments and other activities, 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 pertinent to this class (to be implemented and run in the TIC80 simulator):

  • reading through a tutorial, web page, howto, or other technical documentation
  • discussing the content (in the class discord)
  • experimenting/playing with the content in your own code
  • no warnings, syntax errors, logical errors, or runtime errors

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 tic2 snake demo in TIC80 1 13
3 tic3 create a pong game 2 26
4 tic4 extend to breakout game 2 26
5 tic5 manual palette and persistence 3 39
6 tic6 3 39
7 tic7 4 52
8 tic8 4 52
9 tic9 5 65
10 ticA 5 65
11 ticB 6 78
12 ticC 6 78

topic: palette and persistence

Through playing with memory via the peek and poke functions and referencing the TIC-80 memory map, we can effect run-time and automatic changes to facilities in TIC-80 without needing to manual set something in the development environment.

Two items of focus here:

  • persistent memory: 1kiB of read/write cartridge-based memory that can be used for things like saving game progress, scores, or in our current case: color settings.
  • palette memory: those 16 colors available to us? Totally stored in memory. What's more, we can change each palette color to be one of 16.7 million available colors. Even better, letting TIC80 do it from within a program.

I want you to make a color setting program in TIC80, one that lets the user set the color of one palette color (you can pick which one, aside from #0, that you'd like to target).

On the TIC80 screen should be the following information:

  • current component selected (red, green, or blue)
  • current red level (0-255)
  • current green level (0-255)
  • current blue level (0-255)
  • “press 'Z' to save color” message
  • a tile filled entirely with the palette color that is being changed, also displayed, allowing for a real-time view of the current color being mixed (might want to scale it 4x for even better visability- but don't overlap with the other on-screen text).

Controls:

  • up to you, but should somehow be explanatory (comments, on-screen directions). You can use arrow keys, mouse, etc.
    • each color component is individually adjusted, and can fall within a range of 0-255 (don't let things go outside this range).
  • 'Z' will save the current red/green/blue values to persistent memory.

On program startup: read the red/green/blue values from persistent memory (the very first time, it'll probably be 0, 0, 0), but this will allow you to “resume” where you previously were.

topic: full palette

A similar program to the first time around, but this time you will present the user with full control of the entire palette (all 16 colors). Individual R/G/B component settings, individual palette colors. Save/load to persistent memory.

Also, I'd like further sophistication to definitely be present, not just some rudimentary up/down to select component, left/right to adjust -/+ by some value.

Implement red, green, blue mouse sliders (some line that you can click and drag, or click on some point: and the point on the line represents the 0-255 value). Sort of like how you'd find in some graphics program.

Exposure to mouse stuff is important to know, so yeah: there we go.

Submission

TOTAL:ticX:final tally of results (TOTAL/TOTAL)
*:ticX:assimilate indicated and related content [PTS/PTS]
*:ticX:asked, responded, worked through any questions [PTS/PTS]
*:ticX:reveal of interesting insight, knowledge gained [PTS/PTS]
*:ticX:discussion regarding content, related resources [PTS/PTS]
*:ticX:experimentation, playing, reporting insights gained [PTS/PTS]
*:ticX:state what your code is going to do [PTS/PTS]
*:ticX:implementation of example or your own variant [PTS/PTS]
*:ticX:contribute content to class notes page [PTS/PTS]
*:ticX:no warnings, compiler notes for code [PTS/PTS]
*:ticX:no syntax errors in code [PTS/PTS]
*:ticX:no logical errors in code [PTS/PTS]
*:ticX:no runtime errors for code [PTS/PTS]
*:ticX:submitted code aligns with intent, author statement [PTS/PTS]

Additionally:

  • Solutions not abiding by spirit of project will be subject to a 25% overall deduction
  • Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
  • Solutions not utilizing indentation to promote scope and clarity will be subject to a 25% overall deduction
  • Solutions not organized and easy to read (assume a terminal at least 90 characters wide, 40 characters tall) are subject to a 25% overall deduction
haas/spring2022/comporg/projects/ticx.1643748987.txt.gz · Last modified: 2022/02/01 20:56 by wedge