haas/fall2026/comporg/projects/mab0.md
... ...
@@ -0,0 +1,70 @@
1
+# CSCS2650 Computer Organization
2
+
3
+# PROJECT: MOVE A BLOCK (mab0)
4
+
5
+## OBJECTIVE
6
+
7
+This week we turn our attention to starting to write (from scratch) code
8
+in Vircon32 assembly language.
9
+
10
+We will start with the most basic of ingredients: render a block on the
11
+screen, and allow it to move via the gamepad.
12
+
13
+## GRABIT
14
+
15
+There is a GRABIT available, containing some skeleton code, an XML file,
16
+and a Makefile, that will facilitate building the cartridge.
17
+
18
+Or: check the class repo under the `projects/` directory.
19
+
20
+## TASK
21
+
22
+Implemented from scratch, in assembly:
23
+
24
+ * select the loaded texture
25
+ * select 4 objects (regions) to display
26
+ * display the object on the screen, allowing for its control via the gamepads
27
+ * each gamepad direction should display a different object
28
+ * implement bounds checks on the screen edges, preventing the object from moving off the screen (or performing a wraparound, as desired)
29
+
30
+## SUBMISSION
31
+
32
+To be successful in this project, the following criteria (or their
33
+equivalent) must be met:
34
+
35
+ * Project must be submit on time, by the deadline.
36
+ * Late submissions will lose 33% credit per day, with the submission window closing on the 3rd day following the deadline.
37
+ * Processing must be correct based on input given and output requested
38
+ * Output, if applicable, must be correct based on values input
39
+ * Code must be nicely and consistently indented and aligned
40
+ * Code must be consistently written, to strive for readability from having a consistent style throughout
41
+ * Code must be commented
42
+ * Sufficient comments explaining the point of provided logic **MUST** be present
43
+ * Track/version the source code in your private semester repository
44
+
45
+## SUBMITTING
46
+
47
+To submit, please place your project files under the `comporg/mab0/`
48
+folder at the base of your private semester repository. I will look there
49
+for your submission.
50
+
51
+### RUBRIC
52
+
53
+I'll be evaluating the project based on the following criteria:
54
+
55
+```
56
+78:mab0:final tally of results (78/78)
57
+*:mab0:code written from scratch in Vircon32 assembly [13/13]
58
+*:mab0:code assembles cleanly, with no warnings [13/13]
59
+*:mab0:submit code, XML file, and any needed assets [13/13]
60
+*:mab0:program displays one of four regions based on direction [13/13]
61
+*:mab0:program reads the gamepad to adjust position of region [13/13]
62
+*:mab0:region when encountering screen edge will stop or wrap [13/13]
63
+```
64
+
65
+### ADDITIONALLY
66
+
67
+ * Solutions not abiding by spirit of project will be subject to a 50% overall deduction
68
+ * Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
69
+ * Solutions not utilizing indentation to promote scope and clarity or otherwise maintaining consistency in code style and presentation will be subject to a 25% overall deduction
70
+ * 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/fall2026/comporg/projects/mab1.md
... ...
@@ -0,0 +1,74 @@
1
+# CSCS2650 Computer Organization
2
+
3
+# PROJECT: MOVE A BLOCK (mab1)
4
+
5
+## OBJECTIVE
6
+
7
+This week we extend upon our simple block movement program, turning it
8
+into a fully functional one-player `PONG` game, hand-written in Vircon32
9
+Assembly Language.
10
+
11
+## GRABIT
12
+
13
+There is a GRABIT available, containing some skeleton code, an XML file,
14
+and a Makefile, that will facilitate building the cartridge.
15
+
16
+Or: check the class repo under the `projects/` directory.
17
+
18
+## TASK
19
+
20
+Implemented from scratch, in assembly:
21
+
22
+ * have texture(s), regions for a paddle and a ball
23
+ * have the ball rebound, continuing in one direction until it hits a bound
24
+ * bounds can be the top, bottom, or side of the screen (which it will reflect off of)
25
+ * bounds can also be the paddle (which it will also reflect off of)
26
+ * paddle bounds are the edges of the screen (prevent it from getting lost off the screen)
27
+ * if the paddle fails to deflect the ball and the ball moves beyond the screen, reset the ball and start again
28
+ * display the paddle and ball on the screen, allowing paddle control via the gamepad
29
+ * two gamepad directions will be necessary for moving the paddle
30
+ * implement a simple scoring system and display
31
+
32
+## SUBMISSION
33
+
34
+To be successful in this project, the following criteria (or their
35
+equivalent) must be met:
36
+
37
+ * Project must be submit on time, by the deadline.
38
+ * Late submissions will lose 33% credit per day, with the submission window closing on the 3rd day following the deadline.
39
+ * Processing must be correct based on input given and output requested
40
+ * Output, if applicable, must be correct based on values input
41
+ * Code must be nicely and consistently indented and aligned
42
+ * Code must be consistently written, to strive for readability from having a consistent style throughout
43
+ * Code must be commented
44
+ * Sufficient comments explaining the point of provided logic **MUST** be present
45
+ * Track/version the source code in your private semester repository
46
+
47
+## SUBMITTING
48
+
49
+To submit, please place your project files under the `comporg/mab1/`
50
+folder at the base of your private semester repository. I will look there
51
+for your submission.
52
+
53
+### RUBRIC
54
+
55
+I'll be evaluating the project based on the following criteria:
56
+
57
+```
58
+104:mab1:final tally of results (104/104)
59
+*:mab1:code assembles cleanly, with no warnings [13/13]
60
+*:mab1:submit code, XML file, and any needed assets [13/13]
61
+*:mab1:paddle displays, position adjusted by gamepad [13/13]
62
+*:mab1:paddle is bounded by screen edges [13/13]
63
+*:mab1:paddle can deflect ball [13/13]
64
+*:mab1:ball moves automatically, resets if it goes off screen [13/13]
65
+*:mab1:ball deflects off screen edges [13/13]
66
+*:mab1:game keeps and displays score [13/13]
67
+```
68
+
69
+### ADDITIONALLY
70
+
71
+ * Solutions not abiding by spirit of project will be subject to a 50% overall deduction
72
+ * Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
73
+ * Solutions not utilizing indentation to promote scope and clarity or otherwise maintaining consistency in code style and presentation will be subject to a 25% overall deduction
74
+ * 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/fall2026/comporg/projects/mab2.md
... ...
@@ -0,0 +1,87 @@
1
+# CSCS2650 Computer Organization
2
+
3
+# PROJECT: MAKE A BREAKOUT (mab2)
4
+
5
+## OBJECTIVE
6
+
7
+Now, take your `PONG` game, and transition it into a `BREAKOUT` game,
8
+where in addition to the paddle and ball, there are bricks present on the
9
+screen (either in rows or some pattern). The ball when colliding with a
10
+brick will rebound off of it (just as if it were a wall or paddle), but
11
+cause the brick to disappear.
12
+
13
+## GRABIT
14
+
15
+There is a GRABIT available, containing some skeleton code, an XML file,
16
+and a Makefile, that will facilitate building the cartridge.
17
+
18
+Or: check the class repo under the `projects/` directory.
19
+
20
+## TASK
21
+
22
+Implemented from scratch, in assembly:
23
+
24
+ * use more than just the BIOS texture for graphics
25
+ * have texture(s), regions for a paddle, brick(s), and a ball
26
+ * have the ball rebound, continuing in one direction until it hits a bound
27
+ * bounds can be the top, bottom, or side of the screen (which it will reflect off of)
28
+ * bounds can also be the paddle (which it will also reflect off of)
29
+ * bounds can be any of the bricks (which it will reflect off it, causing the brick to disappear)
30
+ * paddle bounds are the edges of the screen (prevent it from getting lost off the screen)
31
+ * if the paddle fails to deflect the ball and the ball moves beyond the screen, reset the ball and start again
32
+ * display the paddle and ball on the screen, allowing paddle control via the gamepad
33
+ * two gamepad directions will be necessary for moving the paddle
34
+ * display the bricks on the screen, allowing for collision with the ball (if present/visible)
35
+ * implement a simple scoring system and display (hitting and destroying a brick)
36
+
37
+Feel free to add some frills:
38
+
39
+ * power-ups
40
+ * different brick colors
41
+ * sound effects (ball hitting paddle/bricks)
42
+
43
+## SUBMISSION
44
+
45
+To be successful in this project, the following criteria (or their
46
+equivalent) must be met:
47
+
48
+ * Project must be submit on time, by the deadline.
49
+ * Late submissions will lose 33% credit per day, with the submission window closing on the 3rd day following the deadline.
50
+ * Processing must be correct based on input given and output requested
51
+ * Output, if applicable, must be correct based on values input
52
+ * Code must be nicely and consistently indented and aligned
53
+ * Code must be consistently written, to strive for readability from having a consistent style throughout
54
+ * Code must be commented
55
+ * Sufficient comments explaining the point of provided logic **MUST** be present
56
+ * Track/version the source code in your private semester repository
57
+
58
+## SUBMITTING
59
+
60
+To submit, please place your project files under the `comporg/mab2/`
61
+folder at the base of your private semester repository. I will look there
62
+for your submission.
63
+
64
+### RUBRIC
65
+
66
+I'll be evaluating the project based on the following criteria:
67
+
68
+```
69
+130:mab2:final tally of results (130/130)
70
+*:mab2:post screenshot or short video of game in class channel [13/13]
71
+*:mab2:code assembles cleanly, with no warnings [13/13]
72
+*:mab2:submit code, XML file, and any needed assets [13/13]
73
+*:mab2:paddle displays, position adjusted by gamepad [13/13]
74
+*:mab2:paddle is bounded by screen edges [13/13]
75
+*:mab2:paddle can deflect ball [13/13]
76
+*:mab2:ball moves automatically, resets if it goes off screen [13/13]
77
+*:mab2:ball deflects off screen edges, paddle, or bricks [13/13]
78
+*:mab2:brick disappears upon collision with ball [13/13]
79
+*:mab2:game keeps and displays score [13/13]
80
+```
81
+
82
+### ADDITIONALLY
83
+
84
+ * Solutions not abiding by spirit of project will be subject to a 50% overall deduction
85
+ * Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
86
+ * Solutions not utilizing indentation to promote scope and clarity or otherwise maintaining consistency in code style and presentation will be subject to a 25% overall deduction
87
+ * 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