-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathb58_project.txt
175 lines (132 loc) · 6.41 KB
/
b58_project.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
CSCB58 Project File: Winter 2018
Team Member A
-------------
First Name: Haosen
Last Name: Xu
Student Number: 1002631976
UofT E-mail Address: haosen.xu@mail.utoronto.ca
Team Member B
-------------
First Name: Jason
Last Name: Fong
Student Number: 1002672146
UofT E-mail Address: jasonc.fong@mail.utoronto.ca
Project Details
---------------
Project Title: Air Pong
Project Description:
A Two-Dimensional game with two players. Each player controls a paddle which
are located at opposite ends of the screen. The user controls each paddle by
moving them either up or down along the range of their nets. The goal of this
game is to score a goal inside the opposite player’s net. To do this, each
player must prevent the ball from entering their net by hitting it with their
paddle to reach the other player’s net. Whenever the player manages to get the
ball inside the opponent’s net, they will gain 1 point. There are also randomly
generated squares on the screen. Whenever a ball comes into contact with these
squares, the last player that made contact with the ball gains 1 point. Each
time the ball comes into contact with a paddle, it accelerates at a rate. A
counter will start counting down, when the game starts. Once time is over,
the player with the most points wins.
Video URL: Included in project file uploaded to Markus
Code URL: https://github.com/jfong701/CSCB58-Project
Proposal
--------
What do you plan to have completed by the end of the first lab session?:
In the first lab session, we aim to begin drawing the basic shapes needed in
our design, the walls, paddles, ball, and score adjuster. We will try to
collect user input through keys to move the paddles, and have the ball
initialized as well. Additionally, we plan to get some basic game logic
working in the form of initializing score counters, and creating a reset
switch.
What do you plan to have completed by the end of the second lab session?:
In the second lab session, we plan to implement score counting when the ball
travels through the goal area, and outputting this score to the hex displays.
Additionally, we will work on implementing logic for collisions between the
ball and paddle, and the ball and the wall, and between the ball and the score
adjuster power up. We will also generate the score adjuster power up to appear
at a random time.
What do you plan to have completed by the end of the third lab session?:
By the third lab session, we hope to have the program fully complete. In this
session, we will focus on debugging and fixing any bugs that were missed on
previous sessions.
What is your backup plan if things don’t work out as planned?:
If we do not manage to complete what was planned for the lab sessions, we will
book a study room through Makerspace each week in order to ensure the
progression of the project keeps up with the schedule planned.
What hardware will you need beyond the DE2 board?
(be sure to e-mail Brian if it’s anything beyond the basics to make sure
there’s enough to go around):
We will be using a VGA Monitor in addition to the FPGA board.
Motivations
-----------
How does this project relate to the material covered in CSCB58?:
This project relates to the material covered in CSCB58 by making extensive use
of hardware concepts covered in previous labs. Specifically, we will be using
the hex displays and adders to calculate and output the score, as well as
registers to store score information, and other game information. Additionally,
we will use the clock and rate divider to control the speed of objects on
screen, and to display this game on the monitor through VGA.
Why is this project interesting/cool (for CSCB58 students, and for non CSCB58
students?):
For CSCB58 students, this project is interesting because we will be
reimplementing many ideas covered in our previous labs and combining them
together. (Rate divider, hex display, VGA drawing)
For non CSCB58 students, they may find this project interesting because this
project is a game, and games are interesting and fun. Air Pong provides an
interesting blend of the arcade games of Air Hockey, Pong, with the added twist
of a score power up.
Why did you personally choose this project?:
We chose this project personally, because we like gaming and thought it would
be fun and interesting to apply what we learned in CSCB58 to the gaming genre.
Attributions
------------
Provide a complete list of any external resources your project used
(attributions should also be included in your
code).:
Core Pong and VGA logic: https://github.com/felixmo/Pong
Custom PLL for video clock: https://github.com/chiusin97525/Game-Console
Updates
-------
Week 1:
New this lab:
- Drew 4 walls (left-upper, left-lower, right-upper, right-lower) on VGA
- Updated positioning of left and right paddles.
- Updated ball collision logic for paddles to accomodate new positioning
- Added ball collision logic for the walls.
Bugs:
- Upper-right wall has a possible bug in the collision logic for the lower
section. Ball passes through it sometimes.
-------------------------------------------------------------------------------
Week 2:
Fixed:
- collision logic for right-upper and right-lower walls
- removed unneeded wires
Added:
- Pause functionality (activated with SW[0])
- Drew a pause icon
- speed of the ball (horizontal) is increased when hitting a side wall.
- started adding powerup functionality, as of now the current power ups are
being controlled through switches. (through SW[1])
Bugs:
- Experimented with ball colour changing, although the behaviour of colours
are not as expected. (ball changes colour as it moves vertically)
-------------------------------------------------------------------------------
Week 3:
Fixed:
Added:
- Graphics of "P1 Win" or "P2 Win" on screen when a player wins.
- LEDs now light up above the keys used for player control, this ensures that
if key presses are not registered, the player is aware of it.
Bugs:
- Experiemented with randomly generated power ups displayed on screen,
(currently not working)
-------------------------------------------------------------------------------
Week 4 (Presentation):
Fixed: Power up functionality, more detail in Added.
Added:
- Score graphics: Score of players are displayed on screen through VGA.
- Power ups: Interact with game logic and graphics. Power up locations
are on a fixed location on screen. Power ups are:
- turning the ball dark grey (invisiball)
- accelerating the ball speed (speed up)
- removing the opponents wall (remove_wall)