Chris Dick
/
Gameduino_Sprites256_demo
Sprite control demo for the Gameduino
main.cpp@0:572558ddc4fe, 2012-12-21 (annotated)
- Committer:
- TheChrisyd
- Date:
- Fri Dec 21 14:15:01 2012 +0000
- Revision:
- 0:572558ddc4fe
working version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
TheChrisyd | 0:572558ddc4fe | 1 | #include "mbed.h" |
TheChrisyd | 0:572558ddc4fe | 2 | #include "GD.h" |
TheChrisyd | 0:572558ddc4fe | 3 | #include "arduino.h" |
TheChrisyd | 0:572558ddc4fe | 4 | |
TheChrisyd | 0:572558ddc4fe | 5 | |
TheChrisyd | 0:572558ddc4fe | 6 | #include "pickups2.h" |
TheChrisyd | 0:572558ddc4fe | 7 | #include "sprites256.h" |
TheChrisyd | 0:572558ddc4fe | 8 | #include "shield.h" |
TheChrisyd | 0:572558ddc4fe | 9 | |
TheChrisyd | 0:572558ddc4fe | 10 | GDClass GD(ARD_MOSI, ARD_MISO, ARD_SCK, ARD_D9, USBTX, USBRX) ; |
TheChrisyd | 0:572558ddc4fe | 11 | |
TheChrisyd | 0:572558ddc4fe | 12 | struct sprite { |
TheChrisyd | 0:572558ddc4fe | 13 | int x; |
TheChrisyd | 0:572558ddc4fe | 14 | int y; |
TheChrisyd | 0:572558ddc4fe | 15 | int vx, vy; |
TheChrisyd | 0:572558ddc4fe | 16 | } sprites[256]; |
TheChrisyd | 0:572558ddc4fe | 17 | |
TheChrisyd | 0:572558ddc4fe | 18 | void plot() { |
TheChrisyd | 0:572558ddc4fe | 19 | int i; |
TheChrisyd | 0:572558ddc4fe | 20 | for (i = 0; i < 256; i++) { |
TheChrisyd | 0:572558ddc4fe | 21 | GD.sprite(i, sprites[i].x >> 4, sprites[i].y >> 4, i % 47, 0, 0); |
TheChrisyd | 0:572558ddc4fe | 22 | } |
TheChrisyd | 0:572558ddc4fe | 23 | } |
TheChrisyd | 0:572558ddc4fe | 24 | |
TheChrisyd | 0:572558ddc4fe | 25 | #define LWALL (0 << 4) |
TheChrisyd | 0:572558ddc4fe | 26 | #define RWALL (384 << 4) |
TheChrisyd | 0:572558ddc4fe | 27 | #define TWALL (0 << 4) |
TheChrisyd | 0:572558ddc4fe | 28 | #define BWALL (284 << 4) |
TheChrisyd | 0:572558ddc4fe | 29 | |
TheChrisyd | 0:572558ddc4fe | 30 | void move() { |
TheChrisyd | 0:572558ddc4fe | 31 | int i; |
TheChrisyd | 0:572558ddc4fe | 32 | sprite *ps; |
TheChrisyd | 0:572558ddc4fe | 33 | |
TheChrisyd | 0:572558ddc4fe | 34 | for (i = 256, ps = sprites; i--; ps++) { |
TheChrisyd | 0:572558ddc4fe | 35 | if ((ps->x <= LWALL)) { |
TheChrisyd | 0:572558ddc4fe | 36 | ps->x = LWALL; |
TheChrisyd | 0:572558ddc4fe | 37 | ps->vx = -ps->vx; |
TheChrisyd | 0:572558ddc4fe | 38 | } |
TheChrisyd | 0:572558ddc4fe | 39 | if ((ps->x >= RWALL)) { |
TheChrisyd | 0:572558ddc4fe | 40 | ps->x = RWALL; |
TheChrisyd | 0:572558ddc4fe | 41 | ps->vx = -ps->vx; |
TheChrisyd | 0:572558ddc4fe | 42 | } |
TheChrisyd | 0:572558ddc4fe | 43 | if ((ps->y <= TWALL)) { |
TheChrisyd | 0:572558ddc4fe | 44 | ps->y = TWALL; |
TheChrisyd | 0:572558ddc4fe | 45 | ps->vy = -ps->vy; |
TheChrisyd | 0:572558ddc4fe | 46 | } |
TheChrisyd | 0:572558ddc4fe | 47 | if ((ps->y >= BWALL)) { |
TheChrisyd | 0:572558ddc4fe | 48 | ps->y = BWALL; |
TheChrisyd | 0:572558ddc4fe | 49 | ps->vy = -ps->vy; |
TheChrisyd | 0:572558ddc4fe | 50 | } |
TheChrisyd | 0:572558ddc4fe | 51 | ps->x += ps->vx; |
TheChrisyd | 0:572558ddc4fe | 52 | ps->y += ps->vy; |
TheChrisyd | 0:572558ddc4fe | 53 | } |
TheChrisyd | 0:572558ddc4fe | 54 | } |
TheChrisyd | 0:572558ddc4fe | 55 | |
TheChrisyd | 0:572558ddc4fe | 56 | void setup() { |
TheChrisyd | 0:572558ddc4fe | 57 | int i; |
TheChrisyd | 0:572558ddc4fe | 58 | |
TheChrisyd | 0:572558ddc4fe | 59 | GD.begin(); |
TheChrisyd | 0:572558ddc4fe | 60 | |
TheChrisyd | 0:572558ddc4fe | 61 | GD.copy(RAM_PIC, sprites256_pic, sizeof(sprites256_pic)); |
TheChrisyd | 0:572558ddc4fe | 62 | GD.copy(RAM_CHR, sprites256_chr, sizeof(sprites256_chr)); |
TheChrisyd | 0:572558ddc4fe | 63 | GD.copy(RAM_PAL, sprites256_pal, sizeof(sprites256_pal)); |
TheChrisyd | 0:572558ddc4fe | 64 | |
TheChrisyd | 0:572558ddc4fe | 65 | GD.copy(RAM_SPRIMG, pickups2_img, sizeof(pickups2_img)); |
TheChrisyd | 0:572558ddc4fe | 66 | GD.copy(RAM_SPRPAL, pickups2_pal, sizeof(pickups2_pal)); |
TheChrisyd | 0:572558ddc4fe | 67 | |
TheChrisyd | 0:572558ddc4fe | 68 | for (i = 0; i < 256; i++) { |
TheChrisyd | 0:572558ddc4fe | 69 | sprites[i].x = random(400 << 4); |
TheChrisyd | 0:572558ddc4fe | 70 | sprites[i].y = random(300 << 4); |
TheChrisyd | 0:572558ddc4fe | 71 | sprites[i].vx = random(-16,16); |
TheChrisyd | 0:572558ddc4fe | 72 | sprites[i].vy = random(-16,16); |
TheChrisyd | 0:572558ddc4fe | 73 | } |
TheChrisyd | 0:572558ddc4fe | 74 | } |
TheChrisyd | 0:572558ddc4fe | 75 | |
TheChrisyd | 0:572558ddc4fe | 76 | void loop() { |
TheChrisyd | 0:572558ddc4fe | 77 | plot(); |
TheChrisyd | 0:572558ddc4fe | 78 | move(); |
TheChrisyd | 0:572558ddc4fe | 79 | } |
TheChrisyd | 0:572558ddc4fe | 80 | |
TheChrisyd | 0:572558ddc4fe | 81 | int main() { |
TheChrisyd | 0:572558ddc4fe | 82 | setup(); |
TheChrisyd | 0:572558ddc4fe | 83 | while (1) { |
TheChrisyd | 0:572558ddc4fe | 84 | loop(); |
TheChrisyd | 0:572558ddc4fe | 85 | } |
TheChrisyd | 0:572558ddc4fe | 86 | } |