haas/spring2026/comporg/projects/mab2.md
... ...
@@ -0,0 +1,94 @@
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
+## TASK
19
+
20
+Implemented from scratch, in assembly:
21
+
22
+ * use more than just the BIOS texture for graphics
23
+ * have texture(s), regions for a paddle, brick(s), and a ball
24
+ * have the ball rebound, continuing in one direction until it hits a bound
25
+ * bounds can be the top, bottom, or side of the screen (which it will reflect off of)
26
+ * bounds can also be the paddle (which it will also reflect off of)
27
+ * bounds can be any of the bricks (which it will reflect off it, causing the brick to disappear)
28
+ * paddle bounds are the edges of the screen (prevent it from getting lost off the screen)
29
+ * if the paddle fails to deflect the ball and the ball moves beyond the screen, reset the ball and start again
30
+ * display the paddle and ball on the screen, allowing paddle control via the gamepad
31
+ * two gamepad directions will be necessary for moving the paddle
32
+ * display the bricks on the screen, allowing for collision with the ball (if present/visible)
33
+ * implement a simple scoring system and display (hitting and destroying a brick)
34
+
35
+Feel free to add some frills:
36
+
37
+ * power-ups
38
+ * different brick colors
39
+ * sound effects (ball hitting paddle/bricks)
40
+
41
+## SUBMISSION
42
+
43
+To be successful in this project, the following criteria (or their
44
+equivalent) must be met:
45
+
46
+ * Project must be submit on time, by the deadline.
47
+ * Late submissions will lose 33% credit per day, with the submission window closing on the 3rd day following the deadline.
48
+ * Processing must be correct based on input given and output requested
49
+ * Output, if applicable, must be correct based on values input
50
+ * Code must be nicely and consistently indented and aligned
51
+ * Code must be consistently written, to strive for readability from having a consistent style throughout
52
+ * Code must be commented
53
+ * Sufficient comments explaining the point of provided logic **MUST** be present
54
+ * Track/version the source code in your private semester repository
55
+ * Submit a copy of your source code to me using the **submit** tool by the deadline.
56
+
57
+## SUBMIT TOOL USAGE
58
+
59
+Let's say you have completed work on the project, and are ready to
60
+submit, you would do the following (once on LAB46, with all your data
61
+present):
62
+
63
+```
64
+lab46:~/src/SEMESTER/DESIG/mab2$ make submit
65
+```
66
+
67
+You should get some sort of confirmation indicating successful submission
68
+if all went according to plan. If not, check for typos and or locational
69
+mismatches.
70
+
71
+### RUBRIC
72
+
73
+I'll be evaluating the project based on the following criteria:
74
+
75
+```
76
+130:mab2:final tally of results (130/130)
77
+*:mab2:post screenshot or short video of game in class channel [13/13]
78
+*:mab2:code assembles cleanly, with no warnings [13/13]
79
+*:mab2:submit code, XML file, and v32 cartridge [13/13]
80
+*:mab2:paddle displays, position adjusted by gamepad [13/13]
81
+*:mab2:paddle is bounded by screen edges [13/13]
82
+*:mab2:paddle can deflect ball [13/13]
83
+*:mab2:ball moves automatically, resets if it goes off screen [13/13]
84
+*:mab2:ball deflects off screen edges, paddle, or bricks [13/13]
85
+*:mab2:brick disappears upon collision with ball [13/13]
86
+*:mab2:game keeps and displays score [13/13]
87
+```
88
+
89
+### ADDITIONALLY
90
+
91
+ * Solutions not abiding by spirit of project will be subject to a 50% overall deduction
92
+ * Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
93
+ * 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
94
+ * 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