Skip to content

Commit 0a4de41

Browse files
committed
Merge branch 'main' into decouple_vga
2 parents 782fc81 + 5b947b7 commit 0a4de41

5 files changed

Lines changed: 378 additions & 98 deletions

File tree

RISC-V-Scaffold-Basys3/RISC-V-Scaffold-Basys3.xpr

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<!-- Copyright 1986-2022 Xilinx, Inc. All Rights Reserved. -->
55
<!-- Copyright 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved. -->
66

7-
<Project Product="Vivado" Version="7" Minor="71" Path="/home/arya/Documents/Github/RISC-V/RISC-V-Scaffold-Basys3/RISC-V-Scaffold-Basys3.xpr">
7+
<Project Product="Vivado" Version="7" Minor="71" Path="C:/Users/outer/OneDrive/Desktop/RISC-V/RISC-V-Scaffold-Basys3/RISC-V-Scaffold-Basys3.xpr">
88
<DefaultLaunch Dir="$PRUNDIR"/>
99
<Configuration>
1010
<Option Name="Id" Val="5ccae5db352846dd96f73584352a58b3"/>
@@ -260,15 +260,12 @@
260260
<Simulator Name="Questa">
261261
<Option Name="Description" Val="Questa Advanced Simulator"/>
262262
</Simulator>
263-
<Simulator Name="Xcelium">
264-
<Option Name="Description" Val="Xcelium Parallel Simulator"/>
265-
</Simulator>
266-
<Simulator Name="VCS">
267-
<Option Name="Description" Val="Verilog Compiler Simulator (VCS)"/>
268-
</Simulator>
269263
<Simulator Name="Riviera">
270264
<Option Name="Description" Val="Riviera-PRO Simulator"/>
271265
</Simulator>
266+
<Simulator Name="ActiveHDL">
267+
<Option Name="Description" Val="Active-HDL Simulator"/>
268+
</Simulator>
272269
</Simulators>
273270
<Runs Version="1" Minor="22">
274271
<Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7a35tcpg236-1" ConstrsSet="constrs_1" Description="Vivado Synthesis Defaults" AutoIncrementalCheckpoint="true" IncrementalCheckpoint="$PSRCDIR/utils_1/imports/synth_1/Top.dcp" WriteIncrSynthDcp="false" State="current" Dir="$PRUNDIR/synth_1" IncludeInArchive="true" IsChild="false" AutoIncrementalDir="$PSRCDIR/utils_1/imports/synth_1" AutoRQSDir="$PSRCDIR/utils_1/imports/synth_1" ParallelReportGen="true">

programs/hello.c

Lines changed: 81 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ __attribute__((naked)) void _start(void) {
77

88
int main() {
99
volatile unsigned char* frame = (volatile unsigned char*)0x0;
10+
volatile unsigned char* btns = (volatile unsigned char*)0x4B000000;
11+
12+
int paddY1 = 120;
13+
int paddY2 = 120;
14+
1015
int ballX = 160;
1116
int ballY = 120;
1217
int dX = 1;
@@ -19,40 +24,92 @@ int main() {
1924
frame[0x4000 * (320 * i + 319)] = 0xFF;
2025
}
2126

27+
int counter = 0;
28+
2229
while (1) {
23-
for (int x = -2; x <= 2; x++) {
24-
for (int y = -2; y <= 2; y++) {
25-
frame[0x4000 * (320 * (ballY + y) + ballX + x)] = 0x00;
30+
counter += 1;
31+
32+
if (counter == 8000) {
33+
counter = 0;
34+
35+
for (int x = -2; x <= 2; x++) {
36+
for (int y = -2; y <= 2; y++) {
37+
frame[0x4000 * (320 * (ballY + y) + ballX + x)] = 0x00;
38+
}
2639
}
27-
}
2840

29-
ballX += dX;
30-
ballY += dY;
41+
for (int x = -2; x <= 2; x++) {
42+
for (int y = -20; y <= 20; y++) {
43+
frame[0x4000 * (320 * (paddY1 + y) + 20 + x)] = 0x00;
44+
}
45+
}
3146

32-
if (ballX == 319 - 6) {
33-
dX = -1;
34-
}
47+
for (int x = -2; x <= 2; x++) {
48+
for (int y = -20; y <= 20; y++) {
49+
frame[0x4000 * (320 * (paddY2 + y) + 299 + x)] = 0x00;
50+
}
51+
}
3552

36-
if (ballX == 6) {
37-
dX = 1;
38-
}
53+
if (*btns & 0b0001 && paddY1 < 239 - 21) {
54+
paddY1 += 1;
55+
}
3956

40-
if (ballY == 239 - 6) {
41-
dY = -1;
42-
}
57+
if (*btns & 0b0010 && paddY1 > 21) {
58+
paddY1 -= 1;
59+
}
4360

44-
if (ballY == 6) {
45-
dY = 1;
46-
}
61+
if (*btns & 0b0100 && paddY2 < 239 - 21) {
62+
paddY2 += 1;
63+
}
4764

48-
for (int x = -2; x <= 2; x++) {
49-
for (int y = -2; y <= 2; y++) {
50-
frame[0x4000 * (320 * (ballY + y) + ballX + x)] = 0xFF;
65+
if (*btns & 0b1000 && paddY2 > 21) {
66+
paddY2 -= 1;
5167
}
52-
}
5368

54-
for (int i = 0; i < 4000; i++) {
55-
__asm__("nop");
69+
ballX += dX;
70+
ballY += dY;
71+
72+
if (ballX == 319 - 6) {
73+
dX = -1;
74+
}
75+
76+
if (ballX == 6) {
77+
dX = 1;
78+
}
79+
80+
if (ballY == 239 - 6) {
81+
dY = -1;
82+
}
83+
84+
if (ballY == 6) {
85+
dY = 1;
86+
}
87+
88+
if (ballX <= 25 && ballX >= 15 && ballY <= paddY1 + 25 && ballY >= paddY1 - 25) {
89+
dX = 1;
90+
}
91+
92+
if (ballX <= 304 && ballX >= 294 && ballY <= paddY2 + 25 && ballY >= paddY2 - 25) {
93+
dX = -1;
94+
}
95+
96+
for (int x = -2; x <= 2; x++) {
97+
for (int y = -2; y <= 2; y++) {
98+
frame[0x4000 * (320 * (ballY + y) + ballX + x)] = 0xFF;
99+
}
100+
}
101+
102+
for (int x = -2; x <= 2; x++) {
103+
for (int y = -20; y <= 20; y++) {
104+
frame[0x4000 * (320 * (paddY1 + y) + 20 + x)] = 0x03;
105+
}
106+
}
107+
108+
for (int x = -2; x <= 2; x++) {
109+
for (int y = -20; y <= 20; y++) {
110+
frame[0x4000 * (320 * (paddY2 + y) + 299 + x)] = 0xE0;
111+
}
112+
}
56113
}
57114
}
58115
}

0 commit comments

Comments
 (0)