summaryrefslogtreecommitdiffstats
path: root/hardware/software/pong3/pong3.c
diff options
context:
space:
mode:
Diffstat (limited to 'hardware/software/pong3/pong3.c')
-rw-r--r--hardware/software/pong3/pong3.c151
1 files changed, 0 insertions, 151 deletions
diff --git a/hardware/software/pong3/pong3.c b/hardware/software/pong3/pong3.c
deleted file mode 100644
index 63ae56c..0000000
--- a/hardware/software/pong3/pong3.c
+++ /dev/null
@@ -1,151 +0,0 @@
-#include <io.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include "system.h"
-
-#define msleep(msec) usleep(1000*msec);
-
-static void
-gpu_write (unsigned int reg, unsigned int data)
-{
- IOWR (GPU_0_BASE, reg << 2, data);
-}
-
-static int
-find_intersection (int x, int y, int xd, int yd, int t)
-{
-
- // super lazy - we should use the power of MATHS
-
- while (x != t)
- {
- x += xd;
- y += yd;
-
- if (y < 0)
- y = 0;
- if (y > 479)
- y = 479;
- if ((y == 479) || (y == 0))
- yd = -yd;
-
- if ((x == 639) || (x == 0))
- xd = -xd;
- }
-
- return y;
-}
-
-static int
-dir (int a, int b)
-{
- if (a > b)
- return 1;
- if (a < b)
- return -1;
- return 0;
-}
-
-static void
-move_bat (int *b, int db)
-{
-
- *b += dir (db, *b);
- if (*b < 20)
- *b = 20;
- if (*b > 459)
- *b = 459;
-
-}
-
-static void
-load_sprite (void)
-{
- // RRR GGG BBB
- // set the sprite color 111 010 000 - orange
- gpu_write (4, 0x01D0);
-
- // squirt the bromium logo into the sprite
- gpu_write (0x10, 0x00C0);
- gpu_write (0x11, 0x03E0);
- gpu_write (0x12, 0x0FF8);
- gpu_write (0x13, 0x1FFE);
- gpu_write (0x14, 0x3FC7);
- gpu_write (0x15, 0x3F83);
- gpu_write (0x16, 0x3933);
- gpu_write (0x17, 0x3987);
- gpu_write (0x18, 0x3D37);
- gpu_write (0x19, 0x3D37);
- gpu_write (0x1a, 0x3D87);
- gpu_write (0x1b, 0x3FFF);
- gpu_write (0x1c, 0x1FFE);
- gpu_write (0x1d, 0x07F8);
- gpu_write (0x1e, 0x01E0);
- gpu_write (0x1f, 0x00C0);
-}
-
-int
-main (void)
-{
- int x, y, xd, yd;
- int bat0, dbat0;
- int bat1, dbat1;
- int missed = 0;
-
- printf ("Working...\n");
- msleep (500);
- srand (12392184);
-
- bat0 = 100;
- bat1 = 200;
-
- load_sprite ();
-
- while (1)
- {
- x = 1;
- y = 1;
- xd = 1;
- yd = 1;
-
- dbat0 = find_intersection (x + xd, y + yd, xd, yd, 0);
- dbat1 = find_intersection (x + xd, y + yd, xd, yd, 639);
-
- while (!missed)
- {
- x += xd;
- y += yd;
- if (y < 0)
- y = 0;
- if (y > 479)
- y = 479;
- if ((y == 479) || (y == 0))
- yd = -yd;
-
- if ((x == 639) || (x == 0))
- {
- xd = -xd;
- yd = rand () % 7;
- yd -= 3;
- dbat0 = find_intersection (x + xd, y + yd, xd, yd, 0);
- dbat1 = find_intersection (x + xd, y + yd, xd, yd, 639);
- }
-
- move_bat (&bat0, dbat0);
- move_bat (&bat1, dbat1);
-
-
- gpu_write (0, x);
- gpu_write (1, y);
-
- gpu_write (2, bat0);
- gpu_write (3, bat1);
-
- msleep (2);
- }
- }
-}
-
-//-------------------------------------------------------------------------