sprites256.ino 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include <SPI.h>
  2. #include <GD.h>
  3. #include "pickups2.h"
  4. #include "sprites256.h"
  5. struct sprite
  6. {
  7. int x;
  8. int y;
  9. char vx, vy;
  10. } sprites[256];
  11. void plot()
  12. {
  13. int i;
  14. for (i = 0; i < 256; i++) {
  15. GD.sprite(i, sprites[i].x >> 4, sprites[i].y >> 4, i % 47, 0, 0);
  16. }
  17. }
  18. #define LWALL (0 << 4)
  19. #define RWALL (384 << 4)
  20. #define TWALL (0 << 4)
  21. #define BWALL (284 << 4)
  22. void move()
  23. {
  24. int i;
  25. sprite *ps;
  26. for (i = 256, ps = sprites; i--; ps++) {
  27. if ((ps->x <= LWALL)) {
  28. ps->x = LWALL;
  29. ps->vx = -ps->vx;
  30. }
  31. if ((ps->x >= RWALL)) {
  32. ps->x = RWALL;
  33. ps->vx = -ps->vx;
  34. }
  35. if ((ps->y <= TWALL)) {
  36. ps->y = TWALL;
  37. ps->vy = -ps->vy;
  38. }
  39. if ((ps->y >= BWALL)) {
  40. ps->y = BWALL;
  41. ps->vy = -ps->vy;
  42. }
  43. ps->x += ps->vx;
  44. ps->y += ps->vy;
  45. }
  46. }
  47. void setup()
  48. {
  49. int i;
  50. GD.begin();
  51. GD.copy(RAM_PIC, sprites256_pic, sizeof(sprites256_pic));
  52. GD.copy(RAM_CHR, sprites256_chr, sizeof(sprites256_chr));
  53. GD.copy(RAM_PAL, sprites256_pal, sizeof(sprites256_pal));
  54. GD.copy(RAM_SPRIMG, pickups2_img, sizeof(pickups2_img));
  55. GD.copy(RAM_SPRPAL, pickups2_pal, sizeof(pickups2_pal));
  56. for (i = 0; i < 256; i++) {
  57. sprites[i].x = random(400 << 4);
  58. sprites[i].y = random(300 << 4);
  59. sprites[i].vx = random(-16,16);
  60. sprites[i].vy = random(-16,16);
  61. }
  62. }
  63. void loop()
  64. {
  65. plot();
  66. move();
  67. }