Palettes demo for the Gameduino

Dependencies:   Gameduino mbed

main.cpp

Committer:
TheChrisyd
Date:
2012-12-21
Revision:
1:5b85e7f47327
Parent:
0:31287ae20f4a

File content as of revision 1:5b85e7f47327:

#include "mbed.h"
#include "GD.h"
#include "shield.h"

GDClass GD(ARD_MOSI, ARD_MISO, ARD_SCK, ARD_D9, USBTX, USBRX) ;

void spr(int x, int y, byte pal)
{
  static int sprnum = 0;
  GD.sprite(sprnum++, x, y, 0, pal, 0);
}

static unsigned int random_color()
{
  return RGB(64 + rand()%192, 64 + rand()%192, 64 + rand()%192);
}

int main()
{
  int i;

  GD.begin();
  GD.ascii();
  GD.putstr(0, 0,"Sprite palettes");

  for (i = 0; i < 256; i++)
    GD.wr(RAM_SPRIMG + i, i);

  // Fill all the palettes with random colors
  for (i = 0; i < (4 * 256); i++)
    GD.wr16(RAM_SPRPAL + (i << 1), random_color());
  for (i = 0; i < 16; i++) {
    GD.wr16(PALETTE16A + (i << 1), random_color());
    GD.wr16(PALETTE16B + (i << 1), random_color());
  }
  for (i = 0; i < 4; i++) {
    GD.wr16(PALETTE4A + (i << 1), random_color());
    GD.wr16(PALETTE4B + (i << 1), random_color());
  }
  
  GD.putstr(0, 8, "Four 256-color palettes");
  for (i = 0; i < 4; i++)
    spr(200 + 20 * i, (8 * 8), i);

  GD.putstr(0, 12, "Two 16-color palettes");
  for (i = 0; i < 2; i++) {
    spr(200 + 20 * i, (8 * 12),      0x4 | i);
    spr(200 + 20 * i, (8 * 12) + 20, 0x6 | i);
  }

  GD.putstr(0, 18, "Two 4-color palettes");
  for (i = 0; i < 2; i++) {
    spr(200 + 20 * i, (8 * 18),      0x8 | i);
    spr(200 + 20 * i, (8 * 18) + 20, 0xa | i);
    spr(200 + 20 * i, (8 * 18) + 40, 0xc | i);
    spr(200 + 20 * i, (8 * 18) + 60, 0xe | i);
  }
}