Chris Dick
/
Gameduino_Sprites256_demo
Sprite control demo for the Gameduino
Diff: main.cpp
- Revision:
- 0:572558ddc4fe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Dec 21 14:15:01 2012 +0000 @@ -0,0 +1,86 @@ +#include "mbed.h" +#include "GD.h" +#include "arduino.h" + + +#include "pickups2.h" +#include "sprites256.h" +#include "shield.h" + +GDClass GD(ARD_MOSI, ARD_MISO, ARD_SCK, ARD_D9, USBTX, USBRX) ; + +struct sprite { + int x; + int y; + int vx, vy; +} sprites[256]; + +void plot() { + int i; + for (i = 0; i < 256; i++) { + GD.sprite(i, sprites[i].x >> 4, sprites[i].y >> 4, i % 47, 0, 0); + } +} + +#define LWALL (0 << 4) +#define RWALL (384 << 4) +#define TWALL (0 << 4) +#define BWALL (284 << 4) + +void move() { + int i; + sprite *ps; + + for (i = 256, ps = sprites; i--; ps++) { + if ((ps->x <= LWALL)) { + ps->x = LWALL; + ps->vx = -ps->vx; + } + if ((ps->x >= RWALL)) { + ps->x = RWALL; + ps->vx = -ps->vx; + } + if ((ps->y <= TWALL)) { + ps->y = TWALL; + ps->vy = -ps->vy; + } + if ((ps->y >= BWALL)) { + ps->y = BWALL; + ps->vy = -ps->vy; + } + ps->x += ps->vx; + ps->y += ps->vy; + } +} + +void setup() { + int i; + + GD.begin(); + + GD.copy(RAM_PIC, sprites256_pic, sizeof(sprites256_pic)); + GD.copy(RAM_CHR, sprites256_chr, sizeof(sprites256_chr)); + GD.copy(RAM_PAL, sprites256_pal, sizeof(sprites256_pal)); + + GD.copy(RAM_SPRIMG, pickups2_img, sizeof(pickups2_img)); + GD.copy(RAM_SPRPAL, pickups2_pal, sizeof(pickups2_pal)); + + for (i = 0; i < 256; i++) { + sprites[i].x = random(400 << 4); + sprites[i].y = random(300 << 4); + sprites[i].vx = random(-16,16); + sprites[i].vy = random(-16,16); + } +} + +void loop() { + plot(); + move(); +} + +int main() { + setup(); + while (1) { + loop(); + } +} \ No newline at end of file