Demo of low res colour vga video for stm32f3 discovery board

Dependencies:   STM32F3-Discovery-minimal

Fork of Space_Invaders_Demo by Martin Johnson

Committer:
MartinJohnson
Date:
Wed Apr 03 22:05:56 2019 +0000
Revision:
17:833f1b69e11d
Parent:
14:3035b3271395
update library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MartinJohnson 3:93e488fbb8a2 1 #include "stm32f30x.h"
MartinJohnson 3:93e488fbb8a2 2 #include "sys.h"
MartinJohnson 3:93e488fbb8a2 3 #include "video.h"
MartinJohnson 3:93e488fbb8a2 4 #include "gdi.h"
MartinJohnson 3:93e488fbb8a2 5 #include <string.h>
MartinJohnson 3:93e488fbb8a2 6 #include <stdio.h>
MartinJohnson 3:93e488fbb8a2 7
MartinJohnson 3:93e488fbb8a2 8 int ballx=100,bally=100;
MartinJohnson 3:93e488fbb8a2 9 int ballvx=10,ballvy=8;
MartinJohnson 3:93e488fbb8a2 10 int px=400;
MartinJohnson 3:93e488fbb8a2 11
MartinJohnson 3:93e488fbb8a2 12 void bounce() {
MartinJohnson 3:93e488fbb8a2 13 int16_t accel[3];
MartinJohnson 3:93e488fbb8a2 14 MemsConfig();
MartinJohnson 3:93e488fbb8a2 15 vidClearScreen();
MartinJohnson 3:93e488fbb8a2 16 int count=0;
MartinJohnson 3:93e488fbb8a2 17 int maxcount=0;
MartinJohnson 3:93e488fbb8a2 18 char string[16];
MartinJohnson 3:93e488fbb8a2 19 while(1) {
MartinJohnson 3:93e488fbb8a2 20 gdiSetColour(3);
MartinJohnson 3:93e488fbb8a2 21 gdiRectangle(0,0,(VID_HSIZE - 1),VID_VSIZE - 1,0);
MartinJohnson 3:93e488fbb8a2 22 gdiSetColour(2);
MartinJohnson 3:93e488fbb8a2 23 gdiCircle(ballx/16,bally/16,4,0);
MartinJohnson 3:93e488fbb8a2 24 gdiSetColour(7);
MartinJohnson 14:3035b3271395 25 gdiFilledCircle(ballx/16,bally/16,3,0);
MartinJohnson 14:3035b3271395 26 // gdiCircle(ballx/16,bally/16,2,0);
MartinJohnson 14:3035b3271395 27 // gdiCircle(ballx/16,bally/16,1,0);
MartinJohnson 3:93e488fbb8a2 28
MartinJohnson 3:93e488fbb8a2 29 gdiSetColour(4);
MartinJohnson 3:93e488fbb8a2 30 gdiRectangle(px-8,VID_VSIZE-5,px+7,VID_VSIZE-2,0);
MartinJohnson 3:93e488fbb8a2 31 gdiRectangle(px-8,VID_VSIZE-4,px+7,VID_VSIZE-3,0);
MartinJohnson 3:93e488fbb8a2 32 gdiSetColour(7);
MartinJohnson 14:3035b3271395 33 sprintf(string,"Count=%d",count);
MartinJohnson 3:93e488fbb8a2 34 gdiDrawTextEx(4,4,(pu8)string,0);
MartinJohnson 14:3035b3271395 35 sprintf(string,"High=%d",maxcount);
MartinJohnson 3:93e488fbb8a2 36 gdiDrawTextEx(VID_HSIZE-6*strlen(string)-4,4,(pu8)string,0);
MartinJohnson 3:93e488fbb8a2 37
MartinJohnson 3:93e488fbb8a2 38 // sysDelayMs(5);
MartinJohnson 3:93e488fbb8a2 39 waitForRefresh();
MartinJohnson 3:93e488fbb8a2 40 vidNextBuffer();
MartinJohnson 3:93e488fbb8a2 41 ReadAccelerometer( accel );
MartinJohnson 3:93e488fbb8a2 42
MartinJohnson 14:3035b3271395 43 px=(VID_HSIZE/2+accel[1]/100)/8+7*px/8;
MartinJohnson 3:93e488fbb8a2 44 if(px<9) px=9;
MartinJohnson 3:93e488fbb8a2 45 if(px>VID_HSIZE-9) px=VID_HSIZE-9;
MartinJohnson 3:93e488fbb8a2 46 ballx+=ballvx;
MartinJohnson 3:93e488fbb8a2 47 bally+=ballvy;
MartinJohnson 3:93e488fbb8a2 48 if(ballx/16>VID_HSIZE - 6 || ballx<80) {
MartinJohnson 3:93e488fbb8a2 49 ballvx=-ballvx;
MartinJohnson 3:93e488fbb8a2 50 ballx+=ballvx;
MartinJohnson 3:93e488fbb8a2 51 }
MartinJohnson 3:93e488fbb8a2 52 if(bally<80) {
MartinJohnson 3:93e488fbb8a2 53 ballvy=-ballvy;
MartinJohnson 3:93e488fbb8a2 54 bally+=ballvy;
MartinJohnson 3:93e488fbb8a2 55 }
MartinJohnson 3:93e488fbb8a2 56 if(bally/16>VID_VSIZE - 6) {
MartinJohnson 3:93e488fbb8a2 57 if(ballx/16>px-12&&ballx/16<px+12) {
MartinJohnson 3:93e488fbb8a2 58 ballvy=-ballvy-1;
MartinJohnson 3:93e488fbb8a2 59 bally+=ballvy;
MartinJohnson 3:93e488fbb8a2 60 ballvx=ballvx+ballx/16-px;
MartinJohnson 3:93e488fbb8a2 61 count++;
MartinJohnson 3:93e488fbb8a2 62 if(count>maxcount)
MartinJohnson 3:93e488fbb8a2 63 maxcount=count;
MartinJohnson 3:93e488fbb8a2 64 }
MartinJohnson 3:93e488fbb8a2 65 else {
MartinJohnson 3:93e488fbb8a2 66 bally=100;
MartinJohnson 3:93e488fbb8a2 67 ballvy=10;
MartinJohnson 3:93e488fbb8a2 68 count=0;
MartinJohnson 3:93e488fbb8a2 69 }
MartinJohnson 3:93e488fbb8a2 70 }
MartinJohnson 3:93e488fbb8a2 71 ballvy=ballvy+1;
MartinJohnson 14:3035b3271395 72 if(buttonPress()) return;
MartinJohnson 3:93e488fbb8a2 73 }
MartinJohnson 3:93e488fbb8a2 74
MartinJohnson 3:93e488fbb8a2 75 }