@@ -7,6 +7,11 @@ __attribute__((naked)) void _start(void) {
77
88int 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 ;
@@ -26,6 +31,34 @@ int main() {
2631 }
2732 }
2833
34+ for (int x = -2 ; x <= 2 ; x ++ ) {
35+ for (int y = -20 ; y <= 20 ; y ++ ) {
36+ frame [0x4000 * (320 * (paddY1 + y ) + 20 + x )] = 0x00 ;
37+ }
38+ }
39+
40+ for (int x = -2 ; x <= 2 ; x ++ ) {
41+ for (int y = -20 ; y <= 20 ; y ++ ) {
42+ frame [0x4000 * (320 * (paddY2 + y ) + 299 + x )] = 0x00 ;
43+ }
44+ }
45+
46+ if (* btns & 0b0001 && paddY1 < 239 - 21 ) {
47+ paddY1 += 1 ;
48+ }
49+
50+ if (* btns & 0b0010 && paddY1 > 21 ) {
51+ paddY1 -= 1 ;
52+ }
53+
54+ if (* btns & 0b0100 && paddY2 < 239 - 21 ) {
55+ paddY2 += 1 ;
56+ }
57+
58+ if (* btns & 0b1000 && paddY2 > 21 ) {
59+ paddY2 -= 1 ;
60+ }
61+
2962 ballX += dX ;
3063 ballY += dY ;
3164
@@ -45,13 +78,33 @@ int main() {
4578 dY = 1 ;
4679 }
4780
81+ if (ballX <= 25 && ballX >= 15 && ballY <= paddY1 + 25 && ballY >= paddY1 - 25 ) {
82+ dX = 1 ;
83+ }
84+
85+ if (ballX <= 304 && ballX >= 294 && ballY <= paddY2 + 25 && ballY >= paddY2 - 25 ) {
86+ dX = -1 ;
87+ }
88+
4889 for (int x = -2 ; x <= 2 ; x ++ ) {
4990 for (int y = -2 ; y <= 2 ; y ++ ) {
5091 frame [0x4000 * (320 * (ballY + y ) + ballX + x )] = 0xFF ;
5192 }
5293 }
5394
54- for (int i = 0 ; i < 4000 ; i ++ ) {
95+ for (int x = -2 ; x <= 2 ; x ++ ) {
96+ for (int y = -20 ; y <= 20 ; y ++ ) {
97+ frame [0x4000 * (320 * (paddY1 + y ) + 20 + x )] = 0x03 ;
98+ }
99+ }
100+
101+ for (int x = -2 ; x <= 2 ; x ++ ) {
102+ for (int y = -20 ; y <= 20 ; y ++ ) {
103+ frame [0x4000 * (320 * (paddY2 + y ) + 299 + x )] = 0xE0 ;
104+ }
105+ }
106+
107+ for (int i = 0 ; i < 8000 ; i ++ ) {
55108 __asm__("nop" );
56109 }
57110 }
0 commit comments