Space invaders with a nRF2401A wireless joypad

Dependencies:   Gameduino mbed nRF2401A

Fork of Gameduino_Invaders_game by Chris Dick

Gameduino and an nRF2401A hooked up to an mbed on an mbeduino:

/media/uploads/TheChrisyd/2014-03-08_22.53.54.jpg

Files at this revision

API Documentation at this revision

Comitter:
TheChrisyd
Date:
Thu Dec 20 21:33:52 2012 +0000
Parent:
1:f44175dd69fd
Child:
3:9b01f67c7e15
Commit message:
Shields aren't destroyed when hit, life sprites aren't displaying properly.

Changed in this revision

GD.cpp Show diff for this revision Revisions of this file
GD.h Show diff for this revision Revisions of this file
Gameduino.lib Show annotated file Show diff for this revision Revisions of this file
arduino.c Show diff for this revision Revisions of this file
arduino.h Show diff for this revision Revisions of this file
font8x8.h Show diff for this revision Revisions of this file
game.cpp Show annotated file Show diff for this revision Revisions of this file
game.h Show annotated file Show diff for this revision Revisions of this file
graphics.cpp Show annotated file Show diff for this revision Revisions of this file
graphics.h Show annotated file Show diff for this revision Revisions of this file
j1.h Show annotated file Show diff for this revision Revisions of this file
joystick.cpp Show annotated file Show diff for this revision Revisions of this file
joystick.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
samples.h Show annotated file Show diff for this revision Revisions of this file
shield.h Show annotated file Show diff for this revision Revisions of this file
sound.cpp Show annotated file Show diff for this revision Revisions of this file
sound.h Show annotated file Show diff for this revision Revisions of this file
utils.cpp Show annotated file Show diff for this revision Revisions of this file
utils.h Show annotated file Show diff for this revision Revisions of this file
--- a/GD.cpp	Sat Sep 29 13:01:42 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,337 +0,0 @@
-/*
- * Copyright (c) 2011 by James Bowman <jamesb@excamera.com>
- * Gameduino library for mbed. Ported from Arduino by Chris Dick
- *
- */
-#include "GD.h"
-
-GDClass GD;
-DigitalOut cs(ARD_D9);
-SPI spi(ARD_MOSI, ARD_MISO, ARD_SCK); // mosi, miso, sclk
-Serial pc(USBTX, USBRX);
-
-
-
-void GDClass::begin() {
-    wait_ms(250); // give Gameduino time to boot
-    cs = 1;
-    spi.format(8,0);
-    spi.frequency(8000000);
-
-
-    //SPSR = (1 << SPI2X);
-
-    GD.wr(J1_RESET, 1);           // HALT coprocessor
-    __wstart(RAM_SPR);            // Hide all sprites
-    for (int i = 0; i < 512; i++)
-        GD.xhide();
-    __end();
-    fill(RAM_PIC, 0, 1024 * 10);  // Zero all character RAM
-    fill(RAM_SPRPAL, 0, 2048);    // Sprite palletes black
-    fill(RAM_SPRIMG, 0, 64 * 256);   // Clear all sprite data
-    fill(VOICES, 0, 256);         // Silence
-    fill(PALETTE16A, 0, 128);     // Black 16-, 4-palletes and COMM
-
-    GD.wr16(SCROLL_X, 0);
-    GD.wr16(SCROLL_Y, 0);
-    GD.wr(JK_MODE, 0);
-    GD.wr(SPR_DISABLE, 0);
-    GD.wr(SPR_PAGE, 0);
-    GD.wr(IOMODE, 0);
-    GD.wr16(BG_COLOR, 0);
-    GD.wr16(SAMPLE_L, 0);
-    GD.wr16(SAMPLE_R, 0);
-    GD.wr16(SCREENSHOT_Y, 0);
-    GD.wr(MODULATOR, 64);
-}
-
-void GDClass::end() {
-    cs = 1;
-}
-
-void GDClass::__start(unsigned int addr) { // start an SPI transaction to addr
-    cs = 0;
-    spi.write(highByte(addr));
-    spi.write(lowByte(addr));
-}
-
-void GDClass::__wstart(unsigned int addr) { // start an SPI write transaction to addr
-    __start(0x8000|addr);
-}
-
-void GDClass::__wstartspr(unsigned int sprnum) {
-    __start((0x8000 | RAM_SPR) + (sprnum << 2));
-    spr = 0;
-}
-
-void GDClass::__end() { // end the SPI transaction
-    cs = 1;
-}
-
-byte GDClass::rd(unsigned int addr) {
-    __start(addr);
-    byte r = spi.write(0);
-    __end();
-    return r;
-}
-
-void GDClass::wr(unsigned int addr, byte v) {
-    __wstart(addr);
-    spi.write(v);
-    __end();
-}
-
-unsigned int GDClass::rd16(unsigned int addr) {
-    unsigned int r;
-
-    __start(addr);
-    r = spi.write(0);
-    r |= (spi.write(0) << 8);
-    __end();
-    return r;
-}
-
-void GDClass::wr16(unsigned int addr, unsigned int v) {
-    __wstart(addr);
-    spi.write(lowByte(v));
-    spi.write(highByte(v));
-    __end();
-}
-
-void GDClass::fill(int addr, byte v, unsigned int count) {
-    __wstart(addr);
-    while (count--)
-        spi.write(v);
-    __end();
-}
-
-void GDClass::copy(unsigned int addr, PROGMEM prog_uchar *src, int count) {
-    __wstart(addr);
-    while (count--) {
-        spi.write(*src++);
-    }
-    __end();
-}
-
-void GDClass::microcode(PROGMEM prog_uchar *src, int count) {
-    wr(J1_RESET, 1);
-    copy(J1_CODE, src, count);
-    wr(J1_RESET, 0);
-}
-
-void GDClass::setpal(int pal, unsigned int rgb) {
-    wr16(RAM_PAL + (pal << 1), rgb);
-}
-
-void GDClass::sprite(int spr, int x, int y, byte image, byte palette, byte rot, byte jk) {
-    __wstart(RAM_SPR + (spr << 2));
-    spi.write(lowByte(x));
-    spi.write((palette << 4) | (rot << 1) | (highByte(x) & 1));
-    spi.write(lowByte(y));
-    spi.write((jk << 7) | (image << 1) | (highByte(y) & 1));
-    __end();
-}
-
-void GDClass::xsprite(int ox, int oy, int x, int y, byte image, byte palette, byte rot, byte jk) {
-    if (rot & 2)
-        x = -16-x;
-    if (rot & 4)
-        y = -16-y;
-    if (rot & 1) {
-        int s;
-        s = x;
-        x = y;
-        y = s;
-    }
-    ox += x;
-    oy += y;
-    spi.write(lowByte(ox));
-    spi.write((palette << 4) | (rot << 1) | (highByte(ox) & 1));
-    spi.write(lowByte(oy));
-    spi.write((jk << 7) | (image << 1) | (highByte(oy) & 1));
-    spr++;
-}
-
-void GDClass::xhide() {
-    spi.write(lowByte(400));
-    spi.write(highByte(400));
-    spi.write(lowByte(400));
-    spi.write(highByte(400));
-    spr++;
-}
-
-void GDClass::plots(int ox, int oy, PROGMEM sprplot *psp, byte count, byte rot, byte jk) {
-    while (count--) {
-        struct sprplot sp;
-        sp = *psp++;
-        GD.xsprite(ox, oy, sp.x, sp.y, sp.image, sp.palette, rot, jk);
-    }
-}
-
-void GDClass::sprite2x2(int spr, int x, int y, byte image, byte palette, byte rot, byte jk) {
-    __wstart(0x3000 + (spr << 2));
-    GD.xsprite(x, y, -16, -16, image + 0, palette, rot, jk);
-    GD.xsprite(x, y,   0, -16, image + 1, palette, rot, jk);
-    GD.xsprite(x, y, -16,   0, image + 2, palette, rot, jk);
-    GD.xsprite(x, y,   0,   0, image + 3, palette, rot, jk);
-    __end();
-}
-
-void GDClass::waitvblank() {
-    // Wait for the VLANK to go from 0 to 1: this is the start
-    // of the vertical blanking interval.
-
-    while (rd(VBLANK) == 1)
-        ;
-    while (rd(VBLANK) == 0)
-        ;
-}
-
-/* Fixed ascii font, useful for debug */
-
-#include "font8x8.h"
-static byte stretch[16] = {
-    0x00, 0x03, 0x0c, 0x0f,
-    0x30, 0x33, 0x3c, 0x3f,
-    0xc0, 0xc3, 0xcc, 0xcf,
-    0xf0, 0xf3, 0xfc, 0xff
-};
-
-
-void GDClass::ascii() {
-    long i;
-    for (i = 0; i < 768; i++) {
-        int b = font8x8[i];
-        int h = stretch[b >> 4];
-        int l = stretch[b & 0xf];
-        GD.wr(0x1000 + (16 * ' ') + (2 * i), h);
-        GD.wr(0x1000 + (16 * ' ') + (2 * i) + 1, l);
-    }
-    for (i = 0x20; i < 0x80; i++) {
-        GD.setpal(4 * i + 0, TRANSPARENT);
-        GD.setpal(4 * i + 3, RGB(255,255,255));
-    }
-    GD.fill(RAM_PIC, ' ', 4096);
-}
-
-void GDClass::putstr(int x, int y, const char *s) {
-    GD.__wstart((y << 6) + x);
-    while (*s)
-        spi.write(*s++);
-    GD.__end();
-}
-
-void GDClass::voice(int v, byte wave, unsigned int freq, byte lamp, byte ramp) {
-    __wstart(VOICES + (v << 2));
-    spi.write(lowByte(freq));
-    spi.write(highByte(freq) | (wave << 7));
-    spi.write(lamp);
-    spi.write(ramp);
-    __end();
-}
-
-void GDClass::screenshot(unsigned int frame) {
-    int yy, xx;
-    byte undone[38];  // 300-long bitmap of lines pending
-
-    // initialize to 300 ones
-    memset(undone, 0xff, 37);
-    undone[37] = 0xf;
-    int nundone = 300;
-
-    pc.printf("d%", 0xa5);   // sync byte
-    pc.printf("d%", lowByte(frame));
-    pc.printf("d%", highByte(frame));
-
-    while (nundone) {
-        // find a pending line a short distance ahead of the raster
-        int hwline = GD.rd16(SCREENSHOT_Y) & 0x1ff;
-        for (yy = (hwline + 7) % 300; ((undone[yy>>3] >> (yy&7)) & 1) == 0; yy = (yy + 1) % 300)
-            ;
-        GD.wr16(SCREENSHOT_Y, 0x8000 | yy);   // ask for it
-
-        // housekeeping while waiting: mark line done and send yy
-        undone[yy>>3] ^= (1 << (yy&7));
-        nundone--;
-        pc.printf("d%", lowByte(yy));
-        pc.printf("d%", highByte(yy));
-        while ((GD.rd(SCREENSHOT_Y + 1) & 0x80) == 0)
-            ;
-
-        // Now send the line, compressing zero pixels
-        uint16_t zeroes = 0;
-        for (xx = 0; xx < 800; xx += 2) {
-            uint16_t v = GD.rd16(SCREENSHOT + xx);
-            if (v == 0) {
-                zeroes++;
-            } else {
-                if (zeroes) {
-                    pc.printf("d%", lowByte(zeroes));
-                    pc.printf("d%", (0x80 | highByte(zeroes)));
-                    zeroes = 0;
-                }
-                pc.printf("d%", lowByte(v));
-                pc.printf("d%", highByte(v));
-            }
-        }
-        if (zeroes) {
-            pc.printf("d%", lowByte(zeroes));
-            pc.printf("d%", (0x80 | highByte(zeroes)));
-        }
-    }
-    GD.wr16(SCREENSHOT_Y, 0);   // restore screen to normal
-}
-
-class GDflashbits {
-
-public:
-    void begin(PROGMEM prog_uchar *s) {
-        src = s;
-        mask = 0x01;
-    }
-
-    byte get1(void) {
-        byte r = ( *src & mask) !=0;
-        mask <<= 1;
-        if (!( 0xFF & mask)) {
-            mask = 1;
-            src++;
-        }
-        return r;
-    }
-
-    unsigned short getn(byte n) {
-        unsigned short r = 0;
-        while (n--) {
-            r <<= 1;
-            r |= get1();
-        }
-        return r;
-    }
-
-private:
-    PROGMEM prog_uchar *src;
-    byte mask;
-};
-
-static GDflashbits GDFB;
-
-void GDClass::uncompress(unsigned int addr, PROGMEM prog_uchar *src) {
-    GDFB.begin(src);
-    byte b_off = GDFB.getn(4);
-    byte b_len = GDFB.getn(4);
-    byte minlen = GDFB.getn(2);
-    unsigned short items = GDFB.getn(16);
-    while (items--) {
-        if (GDFB.get1() == 0) {
-            GD.wr(addr++, GDFB.getn(8));
-        } else {
-            int offset = -GDFB.getn(b_off) - 1;
-            int l = GDFB.getn(b_len) + minlen;
-            while (l--) {
-                GD.wr(addr, GD.rd(addr + offset));
-                addr++;
-            }
-        }
-    }
-}
--- a/GD.h	Sat Sep 29 13:01:42 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2011 by James Bowman <jamesb@excamera.com>
- *  Gameduino library for mbed. Ported from Arduino by Chris Dick
- *
- */
- 
-#ifndef GAMEDUINO
-#define GAMEDUINO
-#include "shield.h"
-#include "mbed.h"
-#include "arduino.h"
-
-
-
-
-
-struct sprplot {
-    char x, y;
-    int image, palette;
-};
-
-class GDClass {
-public:
-    static void begin();
-    static void end();
-    static void __start(unsigned int addr);
-    static void __wstart(unsigned int addr);
-    static void __end(void);
-    static byte rd(unsigned int addr);
-    static void wr(unsigned int addr, byte v);
-    static unsigned int rd16(unsigned int addr);
-    static void wr16(unsigned int addr, unsigned int v);
-    static void fill(int addr, byte v, unsigned int count);
-    static void copy(unsigned int addr, PROGMEM prog_uchar *src, int count);
-
-    static void setpal(int pal, unsigned int rgb);
-    static void sprite(int spr, int x, int y, byte image, byte palette, byte rot = 0, byte jk = 0);
-    static void sprite2x2(int spr, int x, int y, byte image, byte palette, byte rot = 0, byte jk = 0);
-    static void waitvblank();
-    static void microcode(PROGMEM prog_uchar *src, int count);
-    static void uncompress(unsigned int addr, PROGMEM prog_uchar *src);
-
-    static void voice(int v, byte wave, unsigned int freq, byte lamp, byte ramp);
-    static void ascii();
-    static void putstr(int x, int y, const char *s);
-
-    static void screenshot(unsigned int frame);
-
-    void __wstartspr(unsigned int spr = 0);
-    void xsprite(int ox, int oy, int x, int y, byte image, byte palette, byte rot = 0, byte jk = 0);
-    void xhide();
-    void plots(int ox, int oy, PROGMEM sprplot *psp, byte count, byte rot, byte jk);
-    byte spr;   // Current sprite, incremented by xsprite/xhide above
-};
-
-#define GD_HAS_PLOTS    1     // have the 'GD.plots' method
-
-extern GDClass GD;
-
-#define RGB(r,g,b) ((((r) >> 3) << 10) | (((g) >> 3) << 5) | ((b) >> 3))
-#define TRANSPARENT (1 << 15) // transparent for chars and sprites
-
-#define RAM_PIC     0x0000    // Screen Picture, 64 x 64 = 4096 ints
-#define RAM_CHR     0x1000    // Screen Characters, 256 x 16 = 4096 ints
-#define RAM_PAL     0x2000    // Screen Character Palette, 256 x 8 = 2048 ints
-
-#define IDENT         0x2800
-#define REV           0x2801
-#define FRAME         0x2802
-#define VBLANK        0x2803
-#define SCROLL_X      0x2804
-#define SCROLL_Y      0x2806
-#define JK_MODE       0x2808
-#define J1_RESET      0x2809
-#define SPR_DISABLE   0x280a
-#define SPR_PAGE      0x280b
-#define IOMODE        0x280c
-
-#define BG_COLOR      0x280e
-#define SAMPLE_L      0x2810
-#define SAMPLE_R      0x2812
-
-#define MODULATOR     0x2814
-
-#define SCREENSHOT_Y  0x281e
-
-#define PALETTE16A 0x2840   // 16-color palette RAM A, 32 ints
-#define PALETTE16B 0x2860   // 16-color palette RAM B, 32 ints
-#define PALETTE4A  0x2880   // 4-color palette RAM A, 8 ints
-#define PALETTE4B  0x2888   // 4-color palette RAM A, 8 ints
-#define COMM       0x2890   // Communication buffer
-#define COLLISION  0x2900   // Collision detection RAM, 256 ints
-#define VOICES     0x2a00   // Voice controls
-#define J1_CODE    0x2b00   // J1 coprocessor microcode RAM
-#define SCREENSHOT 0x2c00   // screenshot line RAM
-
-#define RAM_SPR     0x3000    // Sprite Control, 512 x 4 = 2048 ints
-#define RAM_SPRPAL  0x3800    // Sprite Palettes, 4 x 256 = 2048 ints
-#define RAM_SPRIMG  0x4000    // Sprite Image, 64 x 256 = 16384 ints
-
-#ifndef GET_FAR_ADDRESS // at some point this will become official... https://savannah.nongnu.org/patch/?6352
-#define GET_FAR_ADDRESS(var) (var)
-#endif
-#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Gameduino.lib	Thu Dec 20 21:33:52 2012 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/TheChrisyd/code/Gameduino/#141b6d4c3c30
--- a/arduino.c	Sat Sep 29 13:01:42 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-#include "arduino.h"
-
-long time_counter;
-Ticker ticker;
-
-long millis(void) {
-    return time_counter/1000;
-}
-long micros(void) {
-    return time_counter;
-}
-
-void one_micro(void) {
-    time_counter += 10;
-}
-
-void arduino_setup(void) {
-    ticker.attach_us( &one_micro, 10 );
-}
-
-byte lowByte(short int low) {
-    byte bytelow = 0;
-    bytelow = (low & 0xFF);
-    return bytelow;
-}
-
-byte highByte(short int high) {
-    byte bytehigh = 0;
-    bytehigh = ((high >> 8) & 0xFF);
-    return bytehigh;
-}
-
-long random(int number) {
-    return (rand()%number);
-}
-
-int random(int numberone, int numbertwo) {
-    int random = 0;
-    if ((numberone < 0) && (numbertwo < 0)) {
-        numberone = numberone * -1;
-        numbertwo = numbertwo * -1;
-        random = -1 * (rand()%(numberone + numbertwo));
-    }
-    if ((numbertwo < 0) && (numberone >= 0)) {
-        numbertwo = numbertwo * -1;
-        random = (rand()%(numberone + numbertwo)) - numbertwo;
-    }
-    if ((numberone < 0) && (numbertwo >= 0)) {
-        numberone = numberone * -1;
-        random = (rand()%(numberone + numbertwo)) - numberone;
-    } else {
-        random = (rand()%(numberone + numbertwo)) - min(numberone, numbertwo);
-    }
-    return random;
-}
--- a/arduino.h	Sat Sep 29 13:01:42 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#ifndef ARDUINO_H
-#define ARDUINO_H 
-
-#include "mbed.h"
-#include "shield.h"
-
-
-typedef unsigned char prog_uint8_t;
-typedef unsigned int prog_uint16_t;
-typedef unsigned char byte;
-typedef bool boolean;
-typedef unsigned char prog_uchar;
-typedef signed char prog_char;
-
-#define pgm_read_word_near(x) (*(const unsigned int*)x)
-#define pgm_read_int_near(x) (*(const int*)x)
-#define pgm_read_int(x) (*(const int*)x)
-#define pgm_read_byte(x) (*(const char*)x)
-#define pgm_read_byte_near(x) (*(const char*)x)
-
-#define PROGMEM const
-
-#define randomSeed(x) srand(x)
-#define min(a,b) ((a)<(b)?(a):(b))
-#define max(a,b) ((a)>(b)?(a):(b))
-#define delay(x) (wait_ms(x))
-long millis(void);
-long micros(void);
-void arduino_setup(void);
-void one_mirco(void);
-byte lowByte(short int low);
-byte highByte(short int high);
-long random(int number);
-int random(int numberone, int numbertwo);
-#endif    
--- a/font8x8.h	Sat Sep 29 13:01:42 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-static PROGMEM prog_uchar font8x8[] = {
-
-0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x18,  0x18,  0x18,  0x18,  0x18,  0x00,  0x18,  0x00, 
-0x6c,  0x6c,  0x6c,  0x00,  0x00,  0x00,  0x00,  0x00,  0x36,  0x36,  0x7f,  0x36,  0x7f,  0x36,  0x36,  0x00, 
-0x0c,  0x3f,  0x68,  0x3e,  0x0b,  0x7e,  0x18,  0x00,  0x60,  0x66,  0x0c,  0x18,  0x30,  0x66,  0x06,  0x00, 
-0x38,  0x6c,  0x6c,  0x38,  0x6d,  0x66,  0x3b,  0x00,  0x0c,  0x18,  0x30,  0x00,  0x00,  0x00,  0x00,  0x00, 
-0x0c,  0x18,  0x30,  0x30,  0x30,  0x18,  0x0c,  0x00,  0x30,  0x18,  0x0c,  0x0c,  0x0c,  0x18,  0x30,  0x00, 
-0x00,  0x18,  0x7e,  0x3c,  0x7e,  0x18,  0x00,  0x00,  0x00,  0x18,  0x18,  0x7e,  0x18,  0x18,  0x00,  0x00, 
-0x00,  0x00,  0x00,  0x00,  0x00,  0x18,  0x18,  0x30,  0x00,  0x00,  0x00,  0x7e,  0x00,  0x00,  0x00,  0x00, 
-0x00,  0x00,  0x00,  0x00,  0x00,  0x18,  0x18,  0x00,  0x00,  0x06,  0x0c,  0x18,  0x30,  0x60,  0x00,  0x00, 
-0x3c,  0x66,  0x6e,  0x7e,  0x76,  0x66,  0x3c,  0x00,  0x18,  0x38,  0x18,  0x18,  0x18,  0x18,  0x7e,  0x00, 
-0x3c,  0x66,  0x06,  0x0c,  0x18,  0x30,  0x7e,  0x00,  0x3c,  0x66,  0x06,  0x1c,  0x06,  0x66,  0x3c,  0x00, 
-0x0c,  0x1c,  0x3c,  0x6c,  0x7e,  0x0c,  0x0c,  0x00,  0x7e,  0x60,  0x7c,  0x06,  0x06,  0x66,  0x3c,  0x00, 
-0x1c,  0x30,  0x60,  0x7c,  0x66,  0x66,  0x3c,  0x00,  0x7e,  0x06,  0x0c,  0x18,  0x30,  0x30,  0x30,  0x00, 
-0x3c,  0x66,  0x66,  0x3c,  0x66,  0x66,  0x3c,  0x00,  0x3c,  0x66,  0x66,  0x3e,  0x06,  0x0c,  0x38,  0x00, 
-0x00,  0x00,  0x18,  0x18,  0x00,  0x18,  0x18,  0x00,  0x00,  0x00,  0x18,  0x18,  0x00,  0x18,  0x18,  0x30, 
-0x0c,  0x18,  0x30,  0x60,  0x30,  0x18,  0x0c,  0x00,  0x00,  0x00,  0x7e,  0x00,  0x7e,  0x00,  0x00,  0x00, 
-0x30,  0x18,  0x0c,  0x06,  0x0c,  0x18,  0x30,  0x00,  0x3c,  0x66,  0x0c,  0x18,  0x18,  0x00,  0x18,  0x00, 
-
-0x3c,  0x66,  0x6e,  0x6a,  0x6e,  0x60,  0x3c,  0x00,  0x3c,  0x66,  0x66,  0x7e,  0x66,  0x66,  0x66,  0x00, 
-0x7c,  0x66,  0x66,  0x7c,  0x66,  0x66,  0x7c,  0x00,  0x3c,  0x66,  0x60,  0x60,  0x60,  0x66,  0x3c,  0x00, 
-0x78,  0x6c,  0x66,  0x66,  0x66,  0x6c,  0x78,  0x00,  0x7e,  0x60,  0x60,  0x7c,  0x60,  0x60,  0x7e,  0x00, 
-0x7e,  0x60,  0x60,  0x7c,  0x60,  0x60,  0x60,  0x00,  0x3c,  0x66,  0x60,  0x6e,  0x66,  0x66,  0x3c,  0x00, 
-0x66,  0x66,  0x66,  0x7e,  0x66,  0x66,  0x66,  0x00,  0x7e,  0x18,  0x18,  0x18,  0x18,  0x18,  0x7e,  0x00, 
-0x3e,  0x0c,  0x0c,  0x0c,  0x0c,  0x6c,  0x38,  0x00,  0x66,  0x6c,  0x78,  0x70,  0x78,  0x6c,  0x66,  0x00, 
-0x60,  0x60,  0x60,  0x60,  0x60,  0x60,  0x7e,  0x00,  0x63,  0x77,  0x7f,  0x6b,  0x6b,  0x63,  0x63,  0x00, 
-0x66,  0x66,  0x76,  0x7e,  0x6e,  0x66,  0x66,  0x00,  0x3c,  0x66,  0x66,  0x66,  0x66,  0x66,  0x3c,  0x00, 
-0x7c,  0x66,  0x66,  0x7c,  0x60,  0x60,  0x60,  0x00,  0x3c,  0x66,  0x66,  0x66,  0x6a,  0x6c,  0x36,  0x00, 
-0x7c,  0x66,  0x66,  0x7c,  0x6c,  0x66,  0x66,  0x00,  0x3c,  0x66,  0x60,  0x3c,  0x06,  0x66,  0x3c,  0x00, 
-0x7e,  0x18,  0x18,  0x18,  0x18,  0x18,  0x18,  0x00,  0x66,  0x66,  0x66,  0x66,  0x66,  0x66,  0x3c,  0x00, 
-0x66,  0x66,  0x66,  0x66,  0x66,  0x3c,  0x18,  0x00,  0x63,  0x63,  0x6b,  0x6b,  0x7f,  0x77,  0x63,  0x00, 
-0x66,  0x66,  0x3c,  0x18,  0x3c,  0x66,  0x66,  0x00,  0x66,  0x66,  0x66,  0x3c,  0x18,  0x18,  0x18,  0x00, 
-0x7e,  0x06,  0x0c,  0x18,  0x30,  0x60,  0x7e,  0x00,  0x7c,  0x60,  0x60,  0x60,  0x60,  0x60,  0x7c,  0x00, 
-0x00,  0x60,  0x30,  0x18,  0x0c,  0x06,  0x00,  0x00,  0x3e,  0x06,  0x06,  0x06,  0x06,  0x06,  0x3e,  0x00, 
-0x18,  0x3c,  0x66,  0x42,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xff, 
-
-0x1c,  0x36,  0x30,  0x7c,  0x30,  0x30,  0x7e,  0x00,  0x00,  0x00,  0x3c,  0x06,  0x3e,  0x66,  0x3e,  0x00, 
-0x60,  0x60,  0x7c,  0x66,  0x66,  0x66,  0x7c,  0x00,  0x00,  0x00,  0x3c,  0x66,  0x60,  0x66,  0x3c,  0x00, 
-0x06,  0x06,  0x3e,  0x66,  0x66,  0x66,  0x3e,  0x00,  0x00,  0x00,  0x3c,  0x66,  0x7e,  0x60,  0x3c,  0x00, 
-0x1c,  0x30,  0x30,  0x7c,  0x30,  0x30,  0x30,  0x00,  0x00,  0x00,  0x3e,  0x66,  0x66,  0x3e,  0x06,  0x3c, 
-0x60,  0x60,  0x7c,  0x66,  0x66,  0x66,  0x66,  0x00,  0x18,  0x00,  0x38,  0x18,  0x18,  0x18,  0x3c,  0x00, 
-0x18,  0x00,  0x38,  0x18,  0x18,  0x18,  0x18,  0x70,  0x60,  0x60,  0x66,  0x6c,  0x78,  0x6c,  0x66,  0x00, 
-0x38,  0x18,  0x18,  0x18,  0x18,  0x18,  0x3c,  0x00,  0x00,  0x00,  0x36,  0x7f,  0x6b,  0x6b,  0x63,  0x00, 
-0x00,  0x00,  0x7c,  0x66,  0x66,  0x66,  0x66,  0x00,  0x00,  0x00,  0x3c,  0x66,  0x66,  0x66,  0x3c,  0x00, 
-0x00,  0x00,  0x7c,  0x66,  0x66,  0x7c,  0x60,  0x60,  0x00,  0x00,  0x3e,  0x66,  0x66,  0x3e,  0x06,  0x07, 
-0x00,  0x00,  0x6c,  0x76,  0x60,  0x60,  0x60,  0x00,  0x00,  0x00,  0x3e,  0x60,  0x3c,  0x06,  0x7c,  0x00, 
-0x30,  0x30,  0x7c,  0x30,  0x30,  0x30,  0x1c,  0x00,  0x00,  0x00,  0x66,  0x66,  0x66,  0x66,  0x3e,  0x00, 
-0x00,  0x00,  0x66,  0x66,  0x66,  0x3c,  0x18,  0x00,  0x00,  0x00,  0x63,  0x6b,  0x6b,  0x7f,  0x36,  0x00, 
-0x00,  0x00,  0x66,  0x3c,  0x18,  0x3c,  0x66,  0x00,  0x00,  0x00,  0x66,  0x66,  0x66,  0x3e,  0x06,  0x3c, 
-0x00,  0x00,  0x7e,  0x0c,  0x18,  0x30,  0x7e,  0x00,  0x0c,  0x18,  0x18,  0x70,  0x18,  0x18,  0x0c,  0x00, 
-0x18,  0x18,  0x18,  0x00,  0x18,  0x18,  0x18,  0x00,  0x30,  0x18,  0x18,  0x0e,  0x18,  0x18,  0x30,  0x00, 
-0x31,  0x6b,  0x46,  0x00,  0x00,  0x00,  0x00,  0x00,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff,  0xff, 
-};
--- a/game.cpp	Sat Sep 29 13:01:42 2012 +0000
+++ b/game.cpp	Thu Dec 20 21:33:52 2012 +0000
@@ -1,6 +1,6 @@
 #include "game.h"
 
-
+extern GDClass GD;
 SPI spigame(ARD_MOSI, ARD_MISO, ARD_SCK); // mosi, miso, sclk
 /*---------------------------------------------
   Trivia: There is NO random number generator
@@ -114,7 +114,6 @@
 static unsigned int previousPlayerScore, previousHighScore;
 void redrawScores()
 {
-
   previousPlayerScore = previousHighScore = 0xffff;
 }
 
@@ -282,7 +281,7 @@
     if (status == S_DYING) {
       ypos = y;
       updateSprite(GR_BULLET,1);
-      GD.wr16(SCROLL_Y,GD.rd16(SCROLL_Y)+1);
+      //GD.wr16(SCROLL_Y,GD.rd16(SCROLL_Y)+1);
     }
   }
   // See if the bullet hit anything
--- a/game.h	Sat Sep 29 13:01:42 2012 +0000
+++ b/game.h	Thu Dec 20 21:33:52 2012 +0000
@@ -1,25 +1,25 @@
-//#include <SPI.h>
-#include "GD.h"
-#include "joystick.h"
-#include "shield.h"
-#include "mbed.h"
-#include "arduino.h"
-/*---------------------------------------------
-  Data types
----------------------------------------------*/
-typedef char int8;
-
-/*---------------------------------------------
-  Header files
----------------------------------------------*/
-#include "utils.h"
-#include "graphics.h"
-#include "sound.h"
-
-/*---------------------------------------------
-  Game functions
----------------------------------------------*/
-void initGame();     // Called once from setup()
-void updateGame();   // Called from loop() to update the game
-
-extern Joystick joystick;
+//#include <SPI.h>
+#include "GD.h"
+#include "joystick.h"
+#include "shield.h"
+#include "mbed.h"
+#include "arduino.h"
+/*---------------------------------------------
+  Data types
+---------------------------------------------*/
+typedef char int8;
+
+/*---------------------------------------------
+  Header files
+---------------------------------------------*/
+#include "utils.h"
+#include "graphics.h"
+#include "sound.h"
+
+/*---------------------------------------------
+  Game functions
+---------------------------------------------*/
+void initGame();     // Called once from setup()
+void updateGame();   // Called from loop() to update the game
+
+extern Joystick joystick;
--- a/graphics.cpp	Sat Sep 29 13:01:42 2012 +0000
+++ b/graphics.cpp	Thu Dec 20 21:33:52 2012 +0000
@@ -1,394 +1,395 @@
-#include "game.h"
-
-SPI spigraphics(ARD_MOSI, ARD_MISO, ARD_SCK); // mosi, miso, sclk
-
-typedef prog_uint8_t char_data;
-typedef prog_uint16_t sprite_data;
-
-/*---------------------------------------------
-  Graphics - made by typing in the hex... :-)
----------------------------------------------*/
-static PROGMEM sprite_data invaderT[] = {
-  0x0c00,  0x0c00,
-  0x1e00,  0x1e00,
-  0x3f00,  0x3f00,
-  0x6d80,  0x6d80,
-  0x7f80,  0x7f80,
-  0x1200,  0x2d00,
-  0x2d00,  0x4080,
-  0x5280,  0x2100
-};
-static PROGMEM sprite_data invaderM[] = {
-  0x2080,  0x2080,
-  0x9120,  0x1100,
-  0xbfa0,  0x3f80,
-  0xeee0,  0x6ec0,
-  0xffe0,  0xffe0,
-  0x7fc0,  0xbfa0,
-  0x2080,  0xa0a0,
-  0x4040,  0x1b00
-};
-static PROGMEM sprite_data invaderB[] = {
-  0x0f00,  0x0f00, 
-  0x7fe0,  0x7fe0,
-  0xfff0,  0xfff0,
-  0xe670,  0xe670,
-  0xfff0,  0xfff0,
-  0x1980,  0x1980,
-  0x36c0,  0x6660,
-  0xc030,  0x30c0
-};
-static PROGMEM sprite_data invader_explosion[] = {
-  0x0880,
-  0x4510,
-  0x2020,
-  0x1040,
-  0xc018,
-  0x1040,
-  0x2520,
-  0x4890
-};
-static PROGMEM sprite_data player[] = {
-  0x0200,  0x1004,  0x0200,
-  0x0700,  0x8219,  0x0010,
-  0x0700,  0x10c0,  0x02a0,
-  0x7ff0,  0x0202,  0x1200,
-  0xfff8,  0x4b31,  0x01b0,
-  0xfff8,  0x21c4,  0x45a8,
-  0xfff8,  0x1ff0,  0x1fe4,
-  0xfff8,  0x37f2,  0x3ff5
-};
-static PROGMEM sprite_data bullet[] = {
-  0x0200,
-  0x0200,
-  0x0200,
-  0x0200,
-  0x0000,
-  0x0000,
-  0x0000,
-  0x0000
-};
-static PROGMEM sprite_data bullet_blast[] = {
-  0x1120,
-  0x0440,
-  0x0fc0,
-  0x1fe0,
-  0x1fe0,
-  0x0fc0,
-  0x0480,
-  0x1220
-};
-static PROGMEM sprite_data saucer[] = {
-  0x0000,  0x1281,  0x4800,
-  0x07e0,  0x0806,  0x1000,
-  0x1ff8,  0x51e3,  0x0000,
-  0x3ffc,  0x03f9,  0xc800,
-  0x6db6,  0x0754,  0xe400,
-  0xffff,  0x11f1,  0x8000,
-  0x399c,  0x40a3,  0x1000,
-  0x1008,  0x1110,  0x8000
-};
-static PROGMEM sprite_data saucerScore[] = {
-  0x007c,  0x1038,  0x107c,  0x7c38,
-  0x0040,  0x3044,  0x3040,  0x0444,
-  0x0078,  0x104c,  0x1078,  0x084c,
-  0x0004,  0x1054,  0x1004,  0x1854,
-  0x0004,  0x1064,  0x1004,  0x0464,
-  0x0044,  0x1044,  0x1044,  0x4444,
-  0x0038,  0x3838,  0x3838,  0x3838,
-  0x0000,  0x0000,  0x0000,  0x0000
-};
-static PROGMEM sprite_data saucerZero[] = {
-  0x3800,
-  0x4400,
-  0x4c00,
-  0x5400,
-  0x6400,
-  0x4400,
-  0x3800,
-  0x0000
-};
-static PROGMEM sprite_data zigzagBomb[] = {
-  0x0200,  0x0400,  0x0200,  0x0100,
-  0x0400,  0x0300,  0x0100,  0x0200,
-  0x0200,  0x0100,  0x0200,  0x0400,
-  0x0100,  0x0200,  0x0400,  0x0200,
-  0x0200,  0x0400,  0x0200,  0x0100,
-  0x0400,  0x0200,  0x0100,  0x0200,
-  0x0100,  0x0100,  0x0200,  0x0400,
-  0x0000,  0x0000,  0x0000,  0x0000
-};
-static PROGMEM sprite_data barBomb[] = {
-  0x0200,  0x0200,  0x0200,  0x0700,
-  0x0200,  0x0200,  0x0200,  0x0200,
-  0x0200,  0x0200,  0x0700,  0x0200,
-  0x0200,  0x0700,  0x0200,  0x0200,
-  0x0200,  0x0200,  0x0200,  0x0200,
-  0x0700,  0x0200,  0x0200,  0x0200,
-  0x0000,  0x0000,  0x0000,  0x0000,
-  0x0000,  0x0000,  0x0000,  0x0000
-};
-static PROGMEM sprite_data diagBomb[] = {
-  0x0200,  0x0200,  0x0200,  0x0300,
-  0x0200,  0x0200,  0x0200,  0x0600,
-  0x0200,  0x0600,  0x0200,  0x0200,
-  0x0200,  0x0300,  0x0200,  0x0300,
-  0x0200,  0x0200,  0x0200,  0x0600,
-  0x0200,  0x0600,  0x0200,  0x0200,
-  0x0200,  0x0300,  0x0200,  0x0200,
-  0x0000,  0x0000,  0x0000,  0x0000
-};
-static PROGMEM sprite_data bomb_blast[] = {
-  0x0100,
-  0x0440,
-  0x01a0,
-  0x03c0,
-  0x05c0,
-  0x03e0,
-  0x05c0,
-  0x02a0
-};
-
-static PROGMEM sprite_data shield[] = {
-  0x0fff, 0xc000,
-  0x1fff, 0xe000,
-  0x3fff, 0xf000,
-  0x7fff, 0xf800,
-  0xffff, 0xfc00,
-  0xffff, 0xfc00,
-  0xffff, 0xfc00,
-  0xffff, 0xfc00,
-  0xffff, 0xfc00,
-  0xffff, 0xfc00,
-  0xffff, 0xfc00,
-  0xffff, 0xfc00,
-  0xfe03, 0xfc00,
-  0xfc01, 0xfc00,
-  0xf800, 0xfc00,
-  0xf800, 0xfc00
-};
-
-/*---------------------------------------------
-  Turn raw data into Gameduino sprites
-  
-  We're using four color sprites so each
-  sprite can contain four images. This
-  function interleaves the data...
----------------------------------------------*/
-void makeSprite(byte index, byte height, const sprite_data* g1, byte s1=1,  const sprite_data* g2=0, byte s2=0,  const sprite_data* g3=0, byte s3=0,  const sprite_data* g4=0, byte s4=0)
-{
-  const unsigned int topBit = 0x8000;
-  unsigned int d1=0,d2=0,d3=0,d4=0;
-  unsigned int dest = RAM_SPRIMG+(index*256);
-  for (byte i=0; i<height; ++i) {              // Space invaders are only 8 pixels tall
-    d1 = *g1;                          g1 += s1;
-    if (g2) { d2 = *g2;  g2 += s2;  }
-    if (g3) { d3 = *g3;  g3 += s3;  }
-    if (g4) { d4 = *g4;  g4 += s4;  }
-    for (byte j=0; j<16; ++j) {
-      unsigned int m1 = (d1&topBit)>>15;
-      unsigned int m2 = (d2&topBit)>>13;
-      unsigned int m3 = (d3&topBit)>>11;
-      unsigned int m4 = (d4&topBit)>>9;
-      GD.wr(dest++,m1+m2+m3+m4);
-      d1 <<= 1;
-      d2 <<= 1;
-      d3 <<= 1;
-      d4 <<= 1;
-    }
-  }
-}
-void makeInvader(byte gr, const sprite_data *data)
-{
-  makeSprite(gr,8,data,2,data+1,2,invader_explosion,1);
-}
-void makeSp3(byte gr, const sprite_data *d)
-{
-  makeSprite(gr,8, d,3, d+1,3, d+2,3);
-}
-void makeSp4(byte gr, const sprite_data *d)
-{
-  makeSprite(gr,8, d,4, d+1,4, d+2,4, d+3,4);
-}
-
-/*---------------------------------------------
-  Char data
----------------------------------------------*/
-static PROGMEM char_data floorChar[] = {
-  0x00,
-  0x00,
-  0x00,
-  0x00,
-  0x00,
-  0x00,
-  0xff,
-  0x00
-};
-static PROGMEM char_data playerLeft[] = {
-  0x02,
-  0x07,
-  0x07,
-  0x7f,
-  0xff,
-  0xff,
-  0xff,
-  0xff
-};
-static PROGMEM char_data playerRight[] = {
-  0x00,
-  0x00,
-  0x00,
-  0xf0,
-  0xf8,
-  0xf8,
-  0xf8,
-  0xf8
-};
-
-/*---------------------------------------------
-  Make a character
----------------------------------------------*/
-static PROGMEM prog_uint8_t stretch[16] = {
-  0x00, 0x03, 0x0c, 0x0f,
-  0x30, 0x33, 0x3c, 0x3f,
-  0xc0, 0xc3, 0xcc, 0xcf,
-  0xf0, 0xf3, 0xfc, 0xff
-};
-static void makeChar(byte index, const char_data *ch, unsigned int color)
-{
-  // Bitmap
-  GD.__wstart(RAM_CHR+(16*index));
-  for (int i=0; i<8; i++) {
-    byte b = *ch++;
-    spigraphics.write((*stretch+(b >> 4)));
-    spigraphics.write((*stretch+(b & 15)));
-  }
-  GD.__end();
-  // Colors
-  GD.setpal((4*index)+3, color);
-}
-
-/*---------------------------------------------
-  Make all the game sprites
----------------------------------------------*/
-void makeGraphics()
-{
-  // Sprites
-  makeInvader(GR_INVADER_T,invaderT);
-  makeInvader(GR_INVADER_M,invaderM);
-  makeInvader(GR_INVADER_B,invaderB);
-  makeSp3(GR_PLAYER,player);
-  makeSprite(GR_BULLET,8,bullet,1,bullet_blast,1);
-  makeSprite(GR_BULLET,8,bullet,1,bullet_blast,1, saucerZero,1);
-  makeSp3(GR_SAUCER,saucer);
-  makeSp4(GR_BOMB_ZIGZAG,zigzagBomb);
-  makeSp4(GR_BOMB_BARS,  barBomb);
-  makeSp4(GR_BOMB_DIAG,  diagBomb);
-  makeSp4(GR_SAUCER_SCORE,saucerScore);
-  makeSprite(GR_BOMB_OTHER,8,bomb_blast,1);
-  GD.wr16(PALETTE4A+0,0x8000);  // Transparent
-  GD.wr16(PALETTE4A+2,0x7fff);  // White
-  // Charset
-  GD.ascii();
-  //const unsigned int red = 0x7c00;
-  const unsigned int green = 0x03e0;
-  makeChar(CH_FLOOR,floorChar,green);
-  makeChar(CH_PLAYERL,playerLeft,green);
-  makeChar(CH_PLAYERR,playerRight,green);
-}
-
-
-/*---------------------------------------------------
-  The shields are sprites but we use them as bitmaps
-  so we need to be able to shoot/bomb/rebuild them
-  on demand.
----------------------------------------------------*/
-void remakeShields()
-{
-  for (int i=0; i<4; ++i) {
-    makeSprite(GR_SHIELD1+i,16,shield,2,shield+1,2);
-  }
-}
-
-int8 zapShield(int n, int8 x, bool withBullet)
-{
-  int y = 0;
-  if ((n >= 0) and (n <= 3)) {
-    n += GR_SHIELD1;
-    const unsigned int spriteMem = RAM_SPRIMG+(n*256);
-    int col = x+6;    // The pixels in the bullet are in column 6 of the graphic
-    if (col < 0 ) col = 0;
-    if (col > 31) col = 31;
-    // Scan the shield and find the top/bottom pixel in column 'x'
-    byte pixelMask = 0x03;
-    if (col > 15) {
-      pixelMask = 0x0c;
-      col &= 15;
-    }
-    unsigned int s = spriteMem+col;
-    const sprite_data *blastMap = bullet_blast;
-    if (withBullet) {
-      // Go from the top, find lowest pixel
-      for (int8 r=0; r<16; ++r) {
-        if ((GD.rd(s)&pixelMask)!=0) {
-          y = r;
-        }
-        s += 16;
-      }
-      x += 3;
-      y -= 5;
-    }
-    else {
-      // Go from the bottom, find highest pixel
-      y = 16;
-      s += 256;
-      int8 offset = 3;
-      for (int8 r=0; r<16; ++r) {
-        s -= 16;
-        // Bombs are wider...we check three columns
-        if ((GD.rd(s)&pixelMask)!=0) {
-          y = 15-r;
-          offset = 2;
-        }
-        else if ((col!=0) and ((GD.rd(s-1)&pixelMask)!=0)) {
-          y = 15-r;
-          offset = 1;
-        }
-        else if ((col!=31) and ((GD.rd(s+1)&pixelMask)!=0)) {
-          y = 15-r;
-          offset = 3;
-        }
-      }
-      x += offset;
-      y -= 4;
-      blastMap = bomb_blast;
-    }
-    // Blast a hole in it
-    for (int8 j=0; j<8; ++j) {  // 8 lines tall
-      const int py = y+j;
-      if ((py>=0) and (py<=15)) {
-        unsigned int blastMask = 0x1000;
-        unsigned int blastGraphic = pgm_read_word_near(blastMap);
-        for (int8 i=0; i<8; ++i) {    // 8 pixels wide...
-          if ((blastGraphic&blastMask)!=0) {
-            // Set shield pixel to 0 where there's a 1 in the source graphic
-            int px = x+i;
-            if ((px>=0) and (px<=31)) {
-              byte pixelMask = 0xfc;
-              if (px > 15) {
-                px &= 15;
-                pixelMask = 0xf3;
-              }
-              unsigned int s = spriteMem+(py*16)+px;
-              GD.wr(s,GD.rd(s)&pixelMask);
-            }
-          }
-          blastMask >>= 1;
-        }
-      }
-      ++blastMap;
-    }
-    
-  }
-  return y;
-}
+#include "game.h"
+
+SPI spigraphics(ARD_MOSI, ARD_MISO, ARD_SCK); // mosi, miso, sclk
+
+typedef prog_uint8_t char_data;
+typedef prog_uint16_t sprite_data;
+
+extern GDClass GD;
+/*---------------------------------------------
+  Graphics - made by typing in the hex... :-)
+---------------------------------------------*/
+static PROGMEM sprite_data invaderT[] = {
+  0x0c00,  0x0c00,
+  0x1e00,  0x1e00,
+  0x3f00,  0x3f00,
+  0x6d80,  0x6d80,
+  0x7f80,  0x7f80,
+  0x1200,  0x2d00,
+  0x2d00,  0x4080,
+  0x5280,  0x2100
+};
+static PROGMEM sprite_data invaderM[] = {
+  0x2080,  0x2080,
+  0x9120,  0x1100,
+  0xbfa0,  0x3f80,
+  0xeee0,  0x6ec0,
+  0xffe0,  0xffe0,
+  0x7fc0,  0xbfa0,
+  0x2080,  0xa0a0,
+  0x4040,  0x1b00
+};
+static PROGMEM sprite_data invaderB[] = {
+  0x0f00,  0x0f00, 
+  0x7fe0,  0x7fe0,
+  0xfff0,  0xfff0,
+  0xe670,  0xe670,
+  0xfff0,  0xfff0,
+  0x1980,  0x1980,
+  0x36c0,  0x6660,
+  0xc030,  0x30c0
+};
+static PROGMEM sprite_data invader_explosion[] = {
+  0x0880,
+  0x4510,
+  0x2020,
+  0x1040,
+  0xc018,
+  0x1040,
+  0x2520,
+  0x4890
+};
+static PROGMEM sprite_data player[] = {
+  0x0200,  0x1004,  0x0200,
+  0x0700,  0x8219,  0x0010,
+  0x0700,  0x10c0,  0x02a0,
+  0x7ff0,  0x0202,  0x1200,
+  0xfff8,  0x4b31,  0x01b0,
+  0xfff8,  0x21c4,  0x45a8,
+  0xfff8,  0x1ff0,  0x1fe4,
+  0xfff8,  0x37f2,  0x3ff5
+};
+static PROGMEM sprite_data bullet[] = {
+  0x0200,
+  0x0200,
+  0x0200,
+  0x0200,
+  0x0000,
+  0x0000,
+  0x0000,
+  0x0000
+};
+static PROGMEM sprite_data bullet_blast[] = {
+  0x1120,
+  0x0440,
+  0x0fc0,
+  0x1fe0,
+  0x1fe0,
+  0x0fc0,
+  0x0480,
+  0x1220
+};
+static PROGMEM sprite_data saucer[] = {
+  0x0000,  0x1281,  0x4800,
+  0x07e0,  0x0806,  0x1000,
+  0x1ff8,  0x51e3,  0x0000,
+  0x3ffc,  0x03f9,  0xc800,
+  0x6db6,  0x0754,  0xe400,
+  0xffff,  0x11f1,  0x8000,
+  0x399c,  0x40a3,  0x1000,
+  0x1008,  0x1110,  0x8000
+};
+static PROGMEM sprite_data saucerScore[] = {
+  0x007c,  0x1038,  0x107c,  0x7c38,
+  0x0040,  0x3044,  0x3040,  0x0444,
+  0x0078,  0x104c,  0x1078,  0x084c,
+  0x0004,  0x1054,  0x1004,  0x1854,
+  0x0004,  0x1064,  0x1004,  0x0464,
+  0x0044,  0x1044,  0x1044,  0x4444,
+  0x0038,  0x3838,  0x3838,  0x3838,
+  0x0000,  0x0000,  0x0000,  0x0000
+};
+static PROGMEM sprite_data saucerZero[] = {
+  0x3800,
+  0x4400,
+  0x4c00,
+  0x5400,
+  0x6400,
+  0x4400,
+  0x3800,
+  0x0000
+};
+static PROGMEM sprite_data zigzagBomb[] = {
+  0x0200,  0x0400,  0x0200,  0x0100,
+  0x0400,  0x0300,  0x0100,  0x0200,
+  0x0200,  0x0100,  0x0200,  0x0400,
+  0x0100,  0x0200,  0x0400,  0x0200,
+  0x0200,  0x0400,  0x0200,  0x0100,
+  0x0400,  0x0200,  0x0100,  0x0200,
+  0x0100,  0x0100,  0x0200,  0x0400,
+  0x0000,  0x0000,  0x0000,  0x0000
+};
+static PROGMEM sprite_data barBomb[] = {
+  0x0200,  0x0200,  0x0200,  0x0700,
+  0x0200,  0x0200,  0x0200,  0x0200,
+  0x0200,  0x0200,  0x0700,  0x0200,
+  0x0200,  0x0700,  0x0200,  0x0200,
+  0x0200,  0x0200,  0x0200,  0x0200,
+  0x0700,  0x0200,  0x0200,  0x0200,
+  0x0000,  0x0000,  0x0000,  0x0000,
+  0x0000,  0x0000,  0x0000,  0x0000
+};
+static PROGMEM sprite_data diagBomb[] = {
+  0x0200,  0x0200,  0x0200,  0x0300,
+  0x0200,  0x0200,  0x0200,  0x0600,
+  0x0200,  0x0600,  0x0200,  0x0200,
+  0x0200,  0x0300,  0x0200,  0x0300,
+  0x0200,  0x0200,  0x0200,  0x0600,
+  0x0200,  0x0600,  0x0200,  0x0200,
+  0x0200,  0x0300,  0x0200,  0x0200,
+  0x0000,  0x0000,  0x0000,  0x0000
+};
+static PROGMEM sprite_data bomb_blast[] = {
+  0x0100,
+  0x0440,
+  0x01a0,
+  0x03c0,
+  0x05c0,
+  0x03e0,
+  0x05c0,
+  0x02a0
+};
+
+static PROGMEM sprite_data shield[] = {
+  0x0fff, 0xc000,
+  0x1fff, 0xe000,
+  0x3fff, 0xf000,
+  0x7fff, 0xf800,
+  0xffff, 0xfc00,
+  0xffff, 0xfc00,
+  0xffff, 0xfc00,
+  0xffff, 0xfc00,
+  0xffff, 0xfc00,
+  0xffff, 0xfc00,
+  0xffff, 0xfc00,
+  0xffff, 0xfc00,
+  0xfe03, 0xfc00,
+  0xfc01, 0xfc00,
+  0xf800, 0xfc00,
+  0xf800, 0xfc00
+};
+
+/*---------------------------------------------
+  Turn raw data into Gameduino sprites
+  
+  We're using four color sprites so each
+  sprite can contain four images. This
+  function interleaves the data...
+---------------------------------------------*/
+void makeSprite(byte index, byte height, const sprite_data* g1, byte s1=1,  const sprite_data* g2=0, byte s2=0,  const sprite_data* g3=0, byte s3=0,  const sprite_data* g4=0, byte s4=0)
+{
+  const unsigned int topBit = 0x8000;
+  unsigned int d1=0,d2=0,d3=0,d4=0;
+  unsigned int dest = RAM_SPRIMG+(index*256);
+  for (byte i=0; i<height; ++i) {              // Space invaders are only 8 pixels tall
+    d1 = *g1;                          g1 += s1;
+    if (g2) { d2 = *g2;  g2 += s2;  }
+    if (g3) { d3 = *g3;  g3 += s3;  }
+    if (g4) { d4 = *g4;  g4 += s4;  }
+    for (byte j=0; j<16; ++j) {
+      unsigned int m1 = (d1&topBit)>>15;
+      unsigned int m2 = (d2&topBit)>>13;
+      unsigned int m3 = (d3&topBit)>>11;
+      unsigned int m4 = (d4&topBit)>>9;
+      GD.wr(dest++,m1+m2+m3+m4);
+      d1 <<= 1;
+      d2 <<= 1;
+      d3 <<= 1;
+      d4 <<= 1;
+    }
+  }
+}
+void makeInvader(byte gr, const sprite_data *data)
+{
+  makeSprite(gr,8,data,2,data+1,2,invader_explosion,1);
+}
+void makeSp3(byte gr, const sprite_data *d)
+{
+  makeSprite(gr,8, d,3, d+1,3, d+2,3);
+}
+void makeSp4(byte gr, const sprite_data *d)
+{
+  makeSprite(gr,8, d,4, d+1,4, d+2,4, d+3,4);
+}
+
+/*---------------------------------------------
+  Char data
+---------------------------------------------*/
+static PROGMEM char_data floorChar[] = {
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0xff,
+  0x00
+};
+static PROGMEM char_data playerLeft[] = {
+  0x02,
+  0x07,
+  0x07,
+  0x7f,
+  0xff,
+  0xff,
+  0xff,
+  0xff
+};
+static PROGMEM char_data playerRight[] = {
+  0x00,
+  0x00,
+  0x00,
+  0xf0,
+  0xf8,
+  0xf8,
+  0xf8,
+  0xf8
+};
+
+/*---------------------------------------------
+  Make a character
+---------------------------------------------*/
+static PROGMEM prog_uint8_t stretch[16] = {
+  0x00, 0x03, 0x0c, 0x0f,
+  0x30, 0x33, 0x3c, 0x3f,
+  0xc0, 0xc3, 0xcc, 0xcf,
+  0xf0, 0xf3, 0xfc, 0xff
+};
+static void makeChar(byte index, const char_data *ch, unsigned int color)
+{
+  // Bitmap
+  GD.__wstart(RAM_CHR+(16*index));
+  for (int i=0; i<8; i++) {
+    byte b = *ch++;
+    spigraphics.write((*stretch+(b >> 4)));
+    spigraphics.write((*stretch+(b & 15)));
+  }
+  GD.__end();
+  // Colors
+  GD.setpal((4*index)+3, color);
+}
+
+/*---------------------------------------------
+  Make all the game sprites
+---------------------------------------------*/
+void makeGraphics()
+{
+  // Sprites
+  makeInvader(GR_INVADER_T,invaderT);
+  makeInvader(GR_INVADER_M,invaderM);
+  makeInvader(GR_INVADER_B,invaderB);
+  makeSp3(GR_PLAYER,player);
+  makeSprite(GR_BULLET,8,bullet,1,bullet_blast,1);
+  makeSprite(GR_BULLET,8,bullet,1,bullet_blast,1, saucerZero,1);
+  makeSp3(GR_SAUCER,saucer);
+  makeSp4(GR_BOMB_ZIGZAG,zigzagBomb);
+  makeSp4(GR_BOMB_BARS,  barBomb);
+  makeSp4(GR_BOMB_DIAG,  diagBomb);
+  makeSp4(GR_SAUCER_SCORE,saucerScore);
+  makeSprite(GR_BOMB_OTHER,8,bomb_blast,1);
+  GD.wr16(PALETTE4A+0,0x8000);  // Transparent
+  GD.wr16(PALETTE4A+2,0x7fff);  // White
+  // Charset
+  GD.ascii();
+  //const unsigned int red = 0x7c00;
+  const unsigned int green = 0x03e0;
+  makeChar(CH_FLOOR,floorChar,green);
+  makeChar(CH_PLAYERL,playerLeft,green);
+  makeChar(CH_PLAYERR,playerRight,green);
+}
+
+
+/*---------------------------------------------------
+  The shields are sprites but we use them as bitmaps
+  so we need to be able to shoot/bomb/rebuild them
+  on demand.
+---------------------------------------------------*/
+void remakeShields()
+{
+  for (int i=0; i<4; ++i) {
+    makeSprite(GR_SHIELD1+i,16,shield,2,shield+1,2);
+  }
+}
+
+int8 zapShield(int n, int8 x, bool withBullet)
+{
+  int y = 0;
+  if ((n >= 0) and (n <= 3)) {
+    n += GR_SHIELD1;
+    const unsigned int spriteMem = RAM_SPRIMG+(n*256);
+    int col = x+6;    // The pixels in the bullet are in column 6 of the graphic
+    if (col < 0 ) col = 0;
+    if (col > 31) col = 31;
+    // Scan the shield and find the top/bottom pixel in column 'x'
+    byte pixelMask = 0x03;
+    if (col > 15) {
+      pixelMask = 0x0c;
+      col &= 15;
+    }
+    unsigned int s = spriteMem+col;
+    const sprite_data *blastMap = bullet_blast;
+    if (withBullet) {
+      // Go from the top, find lowest pixel
+      for (int8 r=0; r<16; ++r) {
+        if ((GD.rd(s)&pixelMask)!=0) {
+          y = r;
+        }
+        s += 16;
+      }
+      x += 3;
+      y -= 5;
+    }
+    else {
+      // Go from the bottom, find highest pixel
+      y = 16;
+      s += 256;
+      int8 offset = 3;
+      for (int8 r=0; r<16; ++r) {
+        s -= 16;
+        // Bombs are wider...we check three columns
+        if ((GD.rd(s)&pixelMask)!=0) {
+          y = 15-r;
+          offset = 2;
+        }
+        else if ((col!=0) and ((GD.rd(s-1)&pixelMask)!=0)) {
+          y = 15-r;
+          offset = 1;
+        }
+        else if ((col!=31) and ((GD.rd(s+1)&pixelMask)!=0)) {
+          y = 15-r;
+          offset = 3;
+        }
+      }
+      x += offset;
+      y -= 4;
+      blastMap = bomb_blast;
+    }
+    // Blast a hole in it
+    for (int8 j=0; j<8; ++j) {  // 8 lines tall
+      const int py = y+j;
+      if ((py>=0) and (py<=15)) {
+        unsigned int blastMask = 0x1000;
+        unsigned int blastGraphic = pgm_read_word_near(blastMap);
+        for (int8 i=0; i<8; ++i) {    // 8 pixels wide...
+          if ((blastGraphic&blastMask)!=0) {
+            // Set shield pixel to 0 where there's a 1 in the source graphic
+            int px = x+i;
+            if ((px>=0) and (px<=31)) {
+              byte pixelMask = 0xfc;
+              if (px > 15) {
+                px &= 15;
+                pixelMask = 0xf3;
+              }
+              unsigned int s = spriteMem+(py*16)+px;
+              GD.wr(s,GD.rd(s)&pixelMask);
+            }
+          }
+          blastMask >>= 1;
+        }
+      }
+      ++blastMap;
+    }
+    
+  }
+  return y;
+}
--- a/graphics.h	Sat Sep 29 13:01:42 2012 +0000
+++ b/graphics.h	Thu Dec 20 21:33:52 2012 +0000
@@ -1,65 +1,65 @@
-/*---------------------------------------------
-  Send all graphics to the Gameduino
----------------------------------------------*/
-#ifndef INVADER_GRAPHICS
-#define INVADER_GRAPHICS
-#include "shield.h"
-#include "mbed.h"
-#include "arduino.h"
-void makeGraphics();
-
-/*---------------------------------------------
-  Identifiers for custom chars
----------------------------------------------*/
-enum char_id {
-  CH_FLOOR=128,
-  CH_PLAYERL,
-  CH_PLAYERR
-};
-/*---------------------------------------------
-  Identifiers for each sprite graphic
-  
-  Sprites are made in four color mode so
-  each 'sprite' can have four images inside
-  it.
- 
-  The first image is usually the 'normal'
-  (eg. player/saucer) one and the third is
-  usually blank (so you can hide the sprite).
- 
-  The other two are used for animations
-  (eg. invaders) and explosions (eg. player)
----------------------------------------------*/
-enum graphic_id {
-  // Invader sprites - Top, Middle, Bottom, two animation frames each...
-  GR_INVADER_T,
-  GR_INVADER_M,
-  GR_INVADER_B,
-  GR_BOMB_ZIGZAG,  // Zigzag bomb
-  GR_BOMB_BARS,    // The bomb with rolling horizontal bars across it
-  GR_BOMB_DIAG,    // The bomb with diagonal bars across it
-  GR_BOMB_OTHER,   // Other bomb graphics (explosion and blank)
-  // The player (with bullet)
-  GR_PLAYER,
-  GR_BULLET,       // nb. Has a '0' in frame 2 (for the saucer...)
-  // The saucer at the top
-  GR_SAUCER,
-  GR_SAUCER_SCORE,
-  // Shields
-  GR_SHIELD1,
-  GR_SHIELD2,
-  GR_SHIELD3,
-  GR_SHIELD4
-};
-
-/*---------------------------------------------
-  Functions for wrecking/rebuilding shields
----------------------------------------------*/
-void remakeShields();
-
-// Damage the shield with either a bomb or a bullet (ie. above/below)
-// n=shield number [0..4], x is relative to the shield's top-left corner
-int8 zapShield(byte n, int8 x, bool withBullet);  // Return Y coordinate of blast
-
-#endif
-
+/*---------------------------------------------
+  Send all graphics to the Gameduino
+---------------------------------------------*/
+#ifndef INVADER_GRAPHICS
+#define INVADER_GRAPHICS
+#include "shield.h"
+#include "mbed.h"
+#include "arduino.h"
+void makeGraphics();
+
+/*---------------------------------------------
+  Identifiers for custom chars
+---------------------------------------------*/
+enum char_id {
+  CH_FLOOR=128,
+  CH_PLAYERL,
+  CH_PLAYERR
+};
+/*---------------------------------------------
+  Identifiers for each sprite graphic
+  
+  Sprites are made in four color mode so
+  each 'sprite' can have four images inside
+  it.
+ 
+  The first image is usually the 'normal'
+  (eg. player/saucer) one and the third is
+  usually blank (so you can hide the sprite).
+ 
+  The other two are used for animations
+  (eg. invaders) and explosions (eg. player)
+---------------------------------------------*/
+enum graphic_id {
+  // Invader sprites - Top, Middle, Bottom, two animation frames each...
+  GR_INVADER_T,
+  GR_INVADER_M,
+  GR_INVADER_B,
+  GR_BOMB_ZIGZAG,  // Zigzag bomb
+  GR_BOMB_BARS,    // The bomb with rolling horizontal bars across it
+  GR_BOMB_DIAG,    // The bomb with diagonal bars across it
+  GR_BOMB_OTHER,   // Other bomb graphics (explosion and blank)
+  // The player (with bullet)
+  GR_PLAYER,
+  GR_BULLET,       // nb. Has a '0' in frame 2 (for the saucer...)
+  // The saucer at the top
+  GR_SAUCER,
+  GR_SAUCER_SCORE,
+  // Shields
+  GR_SHIELD1,
+  GR_SHIELD2,
+  GR_SHIELD3,
+  GR_SHIELD4
+};
+
+/*---------------------------------------------
+  Functions for wrecking/rebuilding shields
+---------------------------------------------*/
+void remakeShields();
+
+// Damage the shield with either a bomb or a bullet (ie. above/below)
+// n=shield number [0..4], x is relative to the shield's top-left corner
+int8 zapShield(byte n, int8 x, bool withBullet);  // Return Y coordinate of blast
+
+#endif
+
--- a/j1.h	Sat Sep 29 13:01:42 2012 +0000
+++ b/j1.h	Thu Dec 20 21:33:52 2012 +0000
@@ -1,99 +1,99 @@
-static PROGMEM prog_uchar copper_code[] = {
-0xBE,0x15,
-0xF3,0xFF,
-0x00,0x66,
-0x00,0x60,
-0x0C,0x7C,
-0x23,0x60,
-0x0F,0x71,
-0x01,0x80,
-0x0F,0x72,
-0x81,0x60,
-0x00,0x6C,
-0x80,0x61,
-0x87,0x55,
-0x83,0x55,
-0x00,0x6E,
-0x0F,0x74,
-0x81,0x61,
-0x00,0x6E,
-0x81,0x61,
-0x87,0x55,
-0x85,0x55,
-0x85,0x15,
-0xFF,0xFF,
-0x82,0x55,
-0x0F,0x77,
-0x96,0xA8,
-0x89,0x15,
-0x99,0x55,
-0x83,0x15,
-0x9B,0x55,
-0x01,0x80,
-0x99,0x55,
-0x03,0x62,
-0x96,0xA8,
-0x90,0x15,
-0x9B,0x55,
-0x0F,0x77,
-0x9D,0x55,
-0x9D,0x55,
-0x00,0x6E,
-0x0F,0x74,
-0x9E,0x55,
-0xA5,0x55,
-0xA5,0x15,
-0x81,0x55,
-0x92,0xA8,
-0x83,0x55,
-0x00,0x67,
-0x00,0x66,
-0xBD,0x35,
-0x81,0x60,
-0x92,0xA8,
-0x85,0x55,
-0x00,0xBF,
-0x03,0x62,
-0x83,0x55,
-0x81,0x60,
-0x11,0xA8,
-0x85,0x55,
-0x13,0xA8,
-0x85,0x55,
-0x0C,0x70,
-0x2C,0x81,
-0x96,0x55,
-0xC4,0x35,
-0x90,0xA8,
-0xA1,0x55,
-0xDA,0x15,
-0x41,0x80,
-0xA3,0x55,
-0xCE,0x35,
-0x99,0x55,
-0x87,0x55,
-0x89,0x55,
-0x96,0x55,
-0xCE,0x35,
-0x03,0x80,
-0x9F,0x55,
-0x42,0x80,
-0xA3,0x55,
-0xD5,0x35,
-0x9E,0x55,
-0x9D,0x55,
-0xA5,0x55,
-0x85,0x55,
-0x43,0x80,
-0xA3,0x55,
-0xDA,0x35,
-0xA9,0x55,
-0x90,0x55,
-0xAC,0x55,
-0xFF,0xFF,
-0x82,0x55,
-0x98,0xA8,
-0x90,0x55,
-0xBE,0x15,
-0x0C,0x70,
+static PROGMEM prog_uchar copper_code[] = {
+0xBE,0x15,
+0xF3,0xFF,
+0x00,0x66,
+0x00,0x60,
+0x0C,0x7C,
+0x23,0x60,
+0x0F,0x71,
+0x01,0x80,
+0x0F,0x72,
+0x81,0x60,
+0x00,0x6C,
+0x80,0x61,
+0x87,0x55,
+0x83,0x55,
+0x00,0x6E,
+0x0F,0x74,
+0x81,0x61,
+0x00,0x6E,
+0x81,0x61,
+0x87,0x55,
+0x85,0x55,
+0x85,0x15,
+0xFF,0xFF,
+0x82,0x55,
+0x0F,0x77,
+0x96,0xA8,
+0x89,0x15,
+0x99,0x55,
+0x83,0x15,
+0x9B,0x55,
+0x01,0x80,
+0x99,0x55,
+0x03,0x62,
+0x96,0xA8,
+0x90,0x15,
+0x9B,0x55,
+0x0F,0x77,
+0x9D,0x55,
+0x9D,0x55,
+0x00,0x6E,
+0x0F,0x74,
+0x9E,0x55,
+0xA5,0x55,
+0xA5,0x15,
+0x81,0x55,
+0x92,0xA8,
+0x83,0x55,
+0x00,0x67,
+0x00,0x66,
+0xBD,0x35,
+0x81,0x60,
+0x92,0xA8,
+0x85,0x55,
+0x00,0xBF,
+0x03,0x62,
+0x83,0x55,
+0x81,0x60,
+0x11,0xA8,
+0x85,0x55,
+0x13,0xA8,
+0x85,0x55,
+0x0C,0x70,
+0x2C,0x81,
+0x96,0x55,
+0xC4,0x35,
+0x90,0xA8,
+0xA1,0x55,
+0xDA,0x15,
+0x41,0x80,
+0xA3,0x55,
+0xCE,0x35,
+0x99,0x55,
+0x87,0x55,
+0x89,0x55,
+0x96,0x55,
+0xCE,0x35,
+0x03,0x80,
+0x9F,0x55,
+0x42,0x80,
+0xA3,0x55,
+0xD5,0x35,
+0x9E,0x55,
+0x9D,0x55,
+0xA5,0x55,
+0x85,0x55,
+0x43,0x80,
+0xA3,0x55,
+0xDA,0x35,
+0xA9,0x55,
+0x90,0x55,
+0xAC,0x55,
+0xFF,0xFF,
+0x82,0x55,
+0x98,0xA8,
+0x90,0x55,
+0xBE,0x15,
+0x0C,0x70,
 };
\ No newline at end of file
--- a/joystick.cpp	Sat Sep 29 13:01:42 2012 +0000
+++ b/joystick.cpp	Thu Dec 20 21:33:52 2012 +0000
@@ -1,305 +1,305 @@
-/*------------------------------------------------------------
-  Universal joystick driver for Gameduino
-  
-  http://www.artlum.com/gameduino/gameduino.html#joystick
-------------------------------------------------------------*/
-#include "joystick.h"
-#include "GD.h"
-//#include <SPI.h>
-//#include <GD.h>
-
-// Change this line to enable your customized
-// joystick configuration
-// "1" = custom configuration
-// "0" = default (Sparkfun joystick)
-//
-#define CUSTOM_JOYSTICK 0
-
-
-#if CUSTOM_JOYSTICK
-/*------------------------------------------------------------------
- Custom joystick configuration. This is what you need to
- hack to get your joystick working.
-
- The joystick layout can be customized by commenting
- or uncommenting the lines below.
- 
- Notes
- -----
- To specify an analog pin for a button add "A0" to
- the pin number, eg. Analog pin 4 is "A0+4"
-
- When connecting a Joystick to an Arduino:
-  * Digital pins 0/1 are used for system stuff.
-  * Gameduino uses pins 2/9/10/11/13 for SPI interface
- 
- That leaves digital pins 3/4/5/6/7/8/10 free, plus
- all the analog pins (which work as digital pins, too!)
-------------------------------------------------------------------*/
-
-// eg. The following layout is good for an NES controller
-
-// Connect the four buttons to pins 3/4/5/6
-#define BUTTON_A_PIN 3
-#define BUTTON_B_PIN 4
-//#define BUTTON_C_PIN ?
-//#define BUTTON_X_PIN ?
-//#define BUTTON_Y_PIN ?
-//#define BUTTON_Z_PIN ?
-#define BUTTON_ST_PIN 5
-#define BUTTON_SEL_PIN 6
-
-// Connect the DPAD L/R/U/D to analog pins 2/3/4/5
-#define STICK_LEFT_PIN  (A0+2)
-#define STICK_RIGHT_PIN (A0+3)
-#define STICK_UP_PIN    (A0+4)
-#define STICK_DOWN_PIN  (A0+5)
-
-// Analog input is disabled...
-//#define ANALOG_X_PIN ?
-//#define ANALOG_Y_PIN ?
-
-// Make the DPAD emulate an analog joystick
-#define DIGITAL_EMULATE_ANALOG
-//#define ANALOG_EMULATE_DIGITAL
-
-#else
-/*------------------------------------------------------------------
-  Default: Sparkfun joystick
-------------------------------------------------------------------*/
-#define BUTTON_A_PIN 3
-#define BUTTON_B_PIN 4
-// #define BUTTON_C_PIN ?
-// nb. Button X is pin 7 if you've hacked your board
-#define BUTTON_X_PIN 2
-// #define BUTTON_Y_PIN ?
-// #define BUTTON_Z_PIN ?
-#define BUTTON_ST_PIN 5
-#define BUTTON_SEL_PIN 6
-
-// Digital joystick/DPAD
-//#define STICK_LEFT_PIN  11
-//#define STICK_RIGHT_PIN 12
-//#define STICK_UP_PIN    13
-//#define STICK_DOWN_PIN  14
-
-// Analog joystick is enabled
-#define ANALOG_X_PIN 0
-#define ANALOG_Y_PIN 1
-
-// Enable digital joystick emulation
-// #define DIGITAL_EMULATE_ANALOG
-#define ANALOG_EMULATE_DIGITAL
-
-#endif
-
-/*------------------------------------------------------
-  Stop hacking now...!
-  
-  There are no user-servicable parts below this line
-------------------------------------------------------*/
-#define STICK_LEFT_BIT    0x01
-#define STICK_RIGHT_BIT   0x02
-#define STICK_UP_BIT      0x04
-#define STICK_DOWN_BIT    0x08
-#define ANALOG_STICK_BIT  0x80
-#define STICK_INFO_MASK (ANALOG_STICK_BIT)
-
-/*---------------------------------------------
-  Joystick reader
----------------------------------------------*/
-static PROGMEM prog_uchar joystickPinList[] = {
-#ifdef BUTTON_A_PIN
-  BUTTON_A_PIN
-#endif
-#ifdef BUTTON_B_PIN
-  , BUTTON_B_PIN
-#endif
-#ifdef BUTTON_C_PIN
-  , BUTTON_C_PIN
-#endif
-#ifdef BUTTON_X_PIN
-  , BUTTON_X_PIN
-#endif
-#ifdef BUTTON_Y_PIN
-  , BUTTON_Y_PIN
-#endif
-#ifdef BUTTON_Z_PIN
-  , BUTTON_Z_PIN
-#endif
-#ifdef BUTTON_ST_PIN
-  , BUTTON_ST_PIN
-#endif
-#ifdef BUTTON_SEL_PIN
-  , BUTTON_SEL_PIN
-#endif
-#ifdef STICK_LEFT_PIN
-  , STICK_LEFT_PIN,
-    STICK_RIGHT_PIN,
-    STICK_UP_PIN,
-    STICK_DOWN_PIN
-#endif
-};
-Joystick::Joystick()
-{
-  // set up digital pins for dpad and buttons
-   // const prog_uchar *pin = joystickPinList;
-  for (byte i=0; i<sizeof(joystickPinList); ++i) {
-    byte p = pgm_read_byte(joystickPinList+i);
-    //pinMode(p,INPUT);
-    //digitalWrite(p,HIGH);
-  }
-  stickX = stickY = 0;
-  xCal = yCal = 0;
-  buttons = prev = dpad = 0;
-
-#ifdef ANALOG_X_PIN
-  dpad |= ANALOG_STICK_BIT;
-#endif
-}
-bool Joystick::hasAnalogStick()
-{
-  return (dpad&ANALOG_STICK_BIT)!=0;
-}
-void Joystick::recalibrate()
-{
-  read();
-  xCal = stickX;
-  yCal = stickY;
-}
-static char stickCalc(int a, char cal)
-{
-  //a = ((analogRead(a)-512)/4)-cal;
-  if (a < -128) a = -128;
-  if (a >  127) a =  127;
-  return char(a);
-}
-void Joystick::read()
-{
-  // Joystick buttons
-  prev = buttons;
-  buttons = 0;
-  #ifdef BUTTON_A_PIN
-   // if (digitalRead(BUTTON_A_PIN)==LOW) {  buttons |= buttonA;      }
-  #endif
-  #ifdef BUTTON_B_PIN
-  //  if (digitalRead(BUTTON_B_PIN)==LOW) {  buttons |= buttonB;      }
-  #endif
-  #ifdef BUTTON_C_PIN
-//    if (digitalRead(BUTTON_C_PIN)==LOW) {  buttons |= buttonC;      }
-  #endif
-  #ifdef BUTTON_X_PIN
-  //  if (digitalRead(BUTTON_X_PIN)==LOW) {  buttons |= buttonX;      }
-  #endif
-  #ifdef BUTTON_Y_PIN
-//    if (digitalRead(BUTTON_Y_PIN)==LOW) {  buttons |= buttonY;      }
-  #endif
-  #ifdef BUTTON_Z_PIN
- //   if (digitalRead(BUTTON_Z_PIN)==LOW) {  buttons |= buttonZ;      }
-  #endif
-  #ifdef BUTTON_SEL_PIN
-  //  if (digitalRead(BUTTON_SEL_PIN)==LOW){ buttons |= buttonSelect; }
-  #endif
-  #ifdef BUTTON_ST_PIN
-  //  if (digitalRead(BUTTON_ST_PIN)==LOW){  buttons |= buttonStart;  }
-  #endif
-
-  // Digital joystick/dpad
-  dpad &= STICK_INFO_MASK;   // The top bits are informational...preserve them
-  #ifdef STICK_LEFT_PIN
-  //  if (!digitalRead(STICK_LEFT_PIN))  { dpad |= STICK_LEFT_BIT;  }
-  //  if (!digitalRead(STICK_RIGHT_PIN)) { dpad |= STICK_RIGHT_BIT; }
-  //  if (!digitalRead(STICK_UP_PIN))    { dpad |= STICK_UP_BIT;    }
-  //  if (!digitalRead(STICK_DOWN_PIN))  { dpad |= STICK_DOWN_BIT;  }
-    #ifdef DIGITAL_EMULATE_ANALOG
-      stickX = 0;
-      if      (dpad&STICK_LEFT_BIT)  { stickX = -127; }
-      else if (dpad&STICK_RIGHT_BIT) { stickX =  127; }
-      stickY = 0;
-      if      (dpad&STICK_UP_BIT)    { stickY =  127; }
-      else if (dpad&STICK_DOWN_BIT)  { stickY = -127; }
-    #endif
-  #endif
-
-  // Analog stick
-  #ifdef ANALOG_X_PIN
-    stickX = stickCalc(ANALOG_X_PIN,xCal);
-  #endif
-  #ifdef ANALOG_Y_PIN
-    stickY = stickCalc(ANALOG_Y_PIN,yCal);
-  #endif
-  #ifdef ANALOG_EMULATE_DIGITAL
-    if      (stickX < -40) { dpad |= STICK_LEFT_BIT;  }
-    else if (stickX >  40) { dpad |= STICK_RIGHT_BIT; }
-    if      (stickY >  40) { dpad |= STICK_UP_BIT;    }
-    else if (stickY < -40) { dpad |= STICK_DOWN_BIT;  }
-  #endif
-}
-
-/*--------------------------------------------------------
-  Useful function to show joystick status on screen.
-
-  Note: You won't make your program any smaller by
-    removing this - the Arduino compiler is really,
-    really good at discarding unused code.
-
-    ie.    If you're not calling Joystick::dump() then it
-    doesn't take up any space. Try it and see...!
---------------------------------------------------------*/
-// Formatted output of joystick position
-static void jpos(int v, char *s, char t)
-{
-  *s++ = t;
-  *s++ = ':';
-  boolean neg = (v<0);
-  if (neg) {
-    v = -v;
-  }
-  char *o = s;
-  int m = 1000;
-  while (m != 0) {
-    int d = v/m;
-    *o++ = d+'0';
-    v -= d*m;
-    m /= 10;
-  }
-  *o-- = 0;
-  // Remove leading zeros
-  while ((s<o) and (*s=='0')) {
-    *s++ = ' ';
-  }
-  if (neg) {
-    s[-1] = '-';
-  }
-}
-void Joystick::dump(int sx, int sy)
-{
-  char temp[32];
-  if (hasAnalogStick()) {
-    jpos(analogX(),temp,'X');
-    GD.putstr(sx,sy++,temp);
-    jpos(analogY(),temp,'Y');
-    GD.putstr(sx,sy++,temp);
-  }
-  temp[0] = 'D';
-  temp[1] = ':';
-  char *s = temp+2;
-  *s++ = left()  ?'L':'.';
-  *s++ = right() ?'R':'.';
-  *s++ = up()    ?'U':'.';
-  *s++ = down()  ?'D':'.';
-  *s = 0;
-  GD.putstr(sx,sy++,temp);
-  temp[0] = 'B';
-  s = temp+2;
-  *s++ = (buttons&buttonSelect)?'L':'.';
-  *s++ = (buttons&buttonStart)?'S':'.';
-  *s++ = (buttons&buttonZ)?'Z':'.';
-  *s++ = (buttons&buttonY)?'Y':'.';
-  *s++ = (buttons&buttonX)?'X':'.';
-  *s++ = (buttons&buttonC)?'C':'.';
-  *s++ = (buttons&buttonB)?'B':'.';
-  *s++ = (buttons&buttonA)?'A':'.';
-  *s = 0;
-  GD.putstr(sx,sy++,temp);
+/*------------------------------------------------------------
+  Universal joystick driver for Gameduino
+  
+  http://www.artlum.com/gameduino/gameduino.html#joystick
+------------------------------------------------------------*/
+#include "joystick.h"
+#include "GD.h"
+//#include <SPI.h>
+//#include <GD.h>
+
+// Change this line to enable your customized
+// joystick configuration
+// "1" = custom configuration
+// "0" = default (Sparkfun joystick)
+//
+#define CUSTOM_JOYSTICK 0
+extern GDClass GD;
+
+#if CUSTOM_JOYSTICK
+/*------------------------------------------------------------------
+ Custom joystick configuration. This is what you need to
+ hack to get your joystick working.
+
+ The joystick layout can be customized by commenting
+ or uncommenting the lines below.
+ 
+ Notes
+ -----
+ To specify an analog pin for a button add "A0" to
+ the pin number, eg. Analog pin 4 is "A0+4"
+
+ When connecting a Joystick to an Arduino:
+  * Digital pins 0/1 are used for system stuff.
+  * Gameduino uses pins 2/9/10/11/13 for SPI interface
+ 
+ That leaves digital pins 3/4/5/6/7/8/10 free, plus
+ all the analog pins (which work as digital pins, too!)
+------------------------------------------------------------------*/
+
+// eg. The following layout is good for an NES controller
+
+// Connect the four buttons to pins 3/4/5/6
+#define BUTTON_A_PIN 3
+#define BUTTON_B_PIN 4
+//#define BUTTON_C_PIN ?
+//#define BUTTON_X_PIN ?
+//#define BUTTON_Y_PIN ?
+//#define BUTTON_Z_PIN ?
+#define BUTTON_ST_PIN 5
+#define BUTTON_SEL_PIN 6
+
+// Connect the DPAD L/R/U/D to analog pins 2/3/4/5
+#define STICK_LEFT_PIN  (A0+2)
+#define STICK_RIGHT_PIN (A0+3)
+#define STICK_UP_PIN    (A0+4)
+#define STICK_DOWN_PIN  (A0+5)
+
+// Analog input is disabled...
+//#define ANALOG_X_PIN ?
+//#define ANALOG_Y_PIN ?
+
+// Make the DPAD emulate an analog joystick
+#define DIGITAL_EMULATE_ANALOG
+//#define ANALOG_EMULATE_DIGITAL
+
+#else
+/*------------------------------------------------------------------
+  Default: Sparkfun joystick
+------------------------------------------------------------------*/
+#define BUTTON_A_PIN 3
+#define BUTTON_B_PIN 4
+// #define BUTTON_C_PIN ?
+// nb. Button X is pin 7 if you've hacked your board
+#define BUTTON_X_PIN 2
+// #define BUTTON_Y_PIN ?
+// #define BUTTON_Z_PIN ?
+#define BUTTON_ST_PIN 5
+#define BUTTON_SEL_PIN 6
+
+// Digital joystick/DPAD
+//#define STICK_LEFT_PIN  11
+//#define STICK_RIGHT_PIN 12
+//#define STICK_UP_PIN    13
+//#define STICK_DOWN_PIN  14
+
+// Analog joystick is enabled
+#define ANALOG_X_PIN 0
+#define ANALOG_Y_PIN 1
+
+// Enable digital joystick emulation
+// #define DIGITAL_EMULATE_ANALOG
+#define ANALOG_EMULATE_DIGITAL
+
+#endif
+
+/*------------------------------------------------------
+  Stop hacking now...!
+  
+  There are no user-servicable parts below this line
+------------------------------------------------------*/
+#define STICK_LEFT_BIT    0x01
+#define STICK_RIGHT_BIT   0x02
+#define STICK_UP_BIT      0x04
+#define STICK_DOWN_BIT    0x08
+#define ANALOG_STICK_BIT  0x80
+#define STICK_INFO_MASK (ANALOG_STICK_BIT)
+
+/*---------------------------------------------
+  Joystick reader
+---------------------------------------------*/
+static PROGMEM prog_uchar joystickPinList[] = {
+#ifdef BUTTON_A_PIN
+  BUTTON_A_PIN
+#endif
+#ifdef BUTTON_B_PIN
+  , BUTTON_B_PIN
+#endif
+#ifdef BUTTON_C_PIN
+  , BUTTON_C_PIN
+#endif
+#ifdef BUTTON_X_PIN
+  , BUTTON_X_PIN
+#endif
+#ifdef BUTTON_Y_PIN
+  , BUTTON_Y_PIN
+#endif
+#ifdef BUTTON_Z_PIN
+  , BUTTON_Z_PIN
+#endif
+#ifdef BUTTON_ST_PIN
+  , BUTTON_ST_PIN
+#endif
+#ifdef BUTTON_SEL_PIN
+  , BUTTON_SEL_PIN
+#endif
+#ifdef STICK_LEFT_PIN
+  , STICK_LEFT_PIN,
+    STICK_RIGHT_PIN,
+    STICK_UP_PIN,
+    STICK_DOWN_PIN
+#endif
+};
+Joystick::Joystick()
+{
+  // set up digital pins for dpad and buttons
+   // const prog_uchar *pin = joystickPinList;
+  for (byte i=0; i<sizeof(joystickPinList); ++i) {
+    byte p = pgm_read_byte(joystickPinList+i);
+    //pinMode(p,INPUT);
+    //digitalWrite(p,HIGH);
+  }
+  stickX = stickY = 0;
+  xCal = yCal = 0;
+  buttons = prev = dpad = 0;
+
+#ifdef ANALOG_X_PIN
+  dpad |= ANALOG_STICK_BIT;
+#endif
+}
+bool Joystick::hasAnalogStick()
+{
+  return (dpad&ANALOG_STICK_BIT)!=0;
+}
+void Joystick::recalibrate()
+{
+  read();
+  xCal = stickX;
+  yCal = stickY;
+}
+static char stickCalc(int a, char cal)
+{
+  //a = ((analogRead(a)-512)/4)-cal;
+  if (a < -128) a = -128;
+  if (a >  127) a =  127;
+  return char(a);
+}
+void Joystick::read()
+{
+  // Joystick buttons
+  prev = buttons;
+  buttons = 0;
+  #ifdef BUTTON_A_PIN
+   // if (digitalRead(BUTTON_A_PIN)==LOW) {  buttons |= buttonA;      }
+  #endif
+  #ifdef BUTTON_B_PIN
+  //  if (digitalRead(BUTTON_B_PIN)==LOW) {  buttons |= buttonB;      }
+  #endif
+  #ifdef BUTTON_C_PIN
+//    if (digitalRead(BUTTON_C_PIN)==LOW) {  buttons |= buttonC;      }
+  #endif
+  #ifdef BUTTON_X_PIN
+  //  if (digitalRead(BUTTON_X_PIN)==LOW) {  buttons |= buttonX;      }
+  #endif
+  #ifdef BUTTON_Y_PIN
+//    if (digitalRead(BUTTON_Y_PIN)==LOW) {  buttons |= buttonY;      }
+  #endif
+  #ifdef BUTTON_Z_PIN
+ //   if (digitalRead(BUTTON_Z_PIN)==LOW) {  buttons |= buttonZ;      }
+  #endif
+  #ifdef BUTTON_SEL_PIN
+  //  if (digitalRead(BUTTON_SEL_PIN)==LOW){ buttons |= buttonSelect; }
+  #endif
+  #ifdef BUTTON_ST_PIN
+  //  if (digitalRead(BUTTON_ST_PIN)==LOW){  buttons |= buttonStart;  }
+  #endif
+
+  // Digital joystick/dpad
+  dpad &= STICK_INFO_MASK;   // The top bits are informational...preserve them
+  #ifdef STICK_LEFT_PIN
+  //  if (!digitalRead(STICK_LEFT_PIN))  { dpad |= STICK_LEFT_BIT;  }
+  //  if (!digitalRead(STICK_RIGHT_PIN)) { dpad |= STICK_RIGHT_BIT; }
+  //  if (!digitalRead(STICK_UP_PIN))    { dpad |= STICK_UP_BIT;    }
+  //  if (!digitalRead(STICK_DOWN_PIN))  { dpad |= STICK_DOWN_BIT;  }
+    #ifdef DIGITAL_EMULATE_ANALOG
+      stickX = 0;
+      if      (dpad&STICK_LEFT_BIT)  { stickX = -127; }
+      else if (dpad&STICK_RIGHT_BIT) { stickX =  127; }
+      stickY = 0;
+      if      (dpad&STICK_UP_BIT)    { stickY =  127; }
+      else if (dpad&STICK_DOWN_BIT)  { stickY = -127; }
+    #endif
+  #endif
+
+  // Analog stick
+  #ifdef ANALOG_X_PIN
+    stickX = stickCalc(ANALOG_X_PIN,xCal);
+  #endif
+  #ifdef ANALOG_Y_PIN
+    stickY = stickCalc(ANALOG_Y_PIN,yCal);
+  #endif
+  #ifdef ANALOG_EMULATE_DIGITAL
+    if      (stickX < -40) { dpad |= STICK_LEFT_BIT;  }
+    else if (stickX >  40) { dpad |= STICK_RIGHT_BIT; }
+    if      (stickY >  40) { dpad |= STICK_UP_BIT;    }
+    else if (stickY < -40) { dpad |= STICK_DOWN_BIT;  }
+  #endif
+}
+
+/*--------------------------------------------------------
+  Useful function to show joystick status on screen.
+
+  Note: You won't make your program any smaller by
+    removing this - the Arduino compiler is really,
+    really good at discarding unused code.
+
+    ie.    If you're not calling Joystick::dump() then it
+    doesn't take up any space. Try it and see...!
+--------------------------------------------------------*/
+// Formatted output of joystick position
+static void jpos(int v, char *s, char t)
+{
+  *s++ = t;
+  *s++ = ':';
+  boolean neg = (v<0);
+  if (neg) {
+    v = -v;
+  }
+  char *o = s;
+  int m = 1000;
+  while (m != 0) {
+    int d = v/m;
+    *o++ = d+'0';
+    v -= d*m;
+    m /= 10;
+  }
+  *o-- = 0;
+  // Remove leading zeros
+  while ((s<o) and (*s=='0')) {
+    *s++ = ' ';
+  }
+  if (neg) {
+    s[-1] = '-';
+  }
+}
+void Joystick::dump(int sx, int sy)
+{
+  char temp[32];
+  if (hasAnalogStick()) {
+    jpos(analogX(),temp,'X');
+    GD.putstr(sx,sy++,temp);
+    jpos(analogY(),temp,'Y');
+    GD.putstr(sx,sy++,temp);
+  }
+  temp[0] = 'D';
+  temp[1] = ':';
+  char *s = temp+2;
+  *s++ = left()  ?'L':'.';
+  *s++ = right() ?'R':'.';
+  *s++ = up()    ?'U':'.';
+  *s++ = down()  ?'D':'.';
+  *s = 0;
+  GD.putstr(sx,sy++,temp);
+  temp[0] = 'B';
+  s = temp+2;
+  *s++ = (buttons&buttonSelect)?'L':'.';
+  *s++ = (buttons&buttonStart)?'S':'.';
+  *s++ = (buttons&buttonZ)?'Z':'.';
+  *s++ = (buttons&buttonY)?'Y':'.';
+  *s++ = (buttons&buttonX)?'X':'.';
+  *s++ = (buttons&buttonC)?'C':'.';
+  *s++ = (buttons&buttonB)?'B':'.';
+  *s++ = (buttons&buttonA)?'A':'.';
+  *s = 0;
+  GD.putstr(sx,sy++,temp);
 }
\ No newline at end of file
--- a/joystick.h	Sat Sep 29 13:01:42 2012 +0000
+++ b/joystick.h	Thu Dec 20 21:33:52 2012 +0000
@@ -1,73 +1,73 @@
-#ifndef JOYSTICK_INCLUDED
-#define JOYSTICK_INCLUDED
-/*------------------------------------------------------------
-  Universal joystick driver for Gameduino
-  
-    http://www.artlum.com/gameduino/gameduino.html#joystick
-
-    Important: Read the file "read_me_first.txt" *before*
-    writing any code. Do it NOW!
-    
-    Thanks go to 'Guy" for his contributions to this
-------------------------------------------------------------*/
-
-//#include "WProgram.h"
-#include "arduino.h"
-class Joystick {
-  byte buttons;      // State of buttons, packed into a byte
-  byte prev;         // State of the buttons on previous read
-  byte dpad;         // State of Up/Down/Left/Right buttons plus some control flags
-  signed char stickX,stickY;// Analogue x/y position
-  char xCal,yCal;    // Calibration
-public:
-  // The constructor sets up the Arduino pins for input
-  // and calibrates the joystick using the current position
-  Joystick();
-
-  // Read the current state
-  void read();
-
-  // Return "true" if analog X/Y position is available
-  bool hasAnalogStick();
-
-// Digital joystick functions
-  enum button_name {
-    buttonA      = 0x01,
-    buttonB      = 0x02,  
-    buttonC      = 0x04,
-    buttonX      = 0x08,  
-    buttonY      = 0x10,  
-    buttonZ      = 0x20,  
-    buttonStart  = 0x40,
-    buttonSelect = 0x80
-  };
-    // Test a named button
-    // nb. You can combine button names to test multiple buttons at the same time
-  bool isPressed(byte n)  { return (buttons&n)!=0;  }
- 
-  // This tells you if a button changed between the last two calls to "read()"
-  bool changed(byte n) { return bool((buttons^prev)&n); }
-  
-  // Joystick up/down/left/right (or analog stick)
-  bool left()  { return (dpad&0x01)!=0; }
-  bool right() { return (dpad&0x02)!=0; }
-  bool up()    { return (dpad&0x04)!=0; }
-  bool down()  { return (dpad&0x08)!=0; }
-
-
-// Analog joystick functions
-
-   // Force the analog joystick to recalibrate itself
-  void recalibrate();
-
-  // Current joystick position in range [-128..127]
-  char analogX()  { return stickX; }
-  char analogY()  { return stickY; }
- 
-// For debugging - show all state onscreen at (x,y)
-  void dump(int x, int y);
-};
-
-
-// JOYSTICK_INCLUDED
-#endif
+#ifndef JOYSTICK_INCLUDED
+#define JOYSTICK_INCLUDED
+/*------------------------------------------------------------
+  Universal joystick driver for Gameduino
+  
+    http://www.artlum.com/gameduino/gameduino.html#joystick
+
+    Important: Read the file "read_me_first.txt" *before*
+    writing any code. Do it NOW!
+    
+    Thanks go to 'Guy" for his contributions to this
+------------------------------------------------------------*/
+
+//#include "WProgram.h"
+#include "arduino.h"
+class Joystick {
+  byte buttons;      // State of buttons, packed into a byte
+  byte prev;         // State of the buttons on previous read
+  byte dpad;         // State of Up/Down/Left/Right buttons plus some control flags
+  signed char stickX,stickY;// Analogue x/y position
+  char xCal,yCal;    // Calibration
+public:
+  // The constructor sets up the Arduino pins for input
+  // and calibrates the joystick using the current position
+  Joystick();
+
+  // Read the current state
+  void read();
+
+  // Return "true" if analog X/Y position is available
+  bool hasAnalogStick();
+
+// Digital joystick functions
+  enum button_name {
+    buttonA      = 0x01,
+    buttonB      = 0x02,  
+    buttonC      = 0x04,
+    buttonX      = 0x08,  
+    buttonY      = 0x10,  
+    buttonZ      = 0x20,  
+    buttonStart  = 0x40,
+    buttonSelect = 0x80
+  };
+    // Test a named button
+    // nb. You can combine button names to test multiple buttons at the same time
+  bool isPressed(byte n)  { return (buttons&n)!=0;  }
+ 
+  // This tells you if a button changed between the last two calls to "read()"
+  bool changed(byte n) { return bool((buttons^prev)&n); }
+  
+  // Joystick up/down/left/right (or analog stick)
+  bool left()  { return (dpad&0x01)!=0; }
+  bool right() { return (dpad&0x02)!=0; }
+  bool up()    { return (dpad&0x04)!=0; }
+  bool down()  { return (dpad&0x08)!=0; }
+
+
+// Analog joystick functions
+
+   // Force the analog joystick to recalibrate itself
+  void recalibrate();
+
+  // Current joystick position in range [-128..127]
+  char analogX()  { return stickX; }
+  char analogY()  { return stickY; }
+ 
+// For debugging - show all state onscreen at (x,y)
+  void dump(int x, int y);
+};
+
+
+// JOYSTICK_INCLUDED
+#endif
--- a/main.cpp	Sat Sep 29 13:01:42 2012 +0000
+++ b/main.cpp	Thu Dec 20 21:33:52 2012 +0000
@@ -1,53 +1,52 @@
-#include "mbed.h"
-#include "GD.h"
-
-
-/*---------------------------------------------------------
-  A Space Invaders clone for Gameduino
-
-  http://www.artlum.com/gameduino/gameduino.html#invaders
-
-  Version 0.9 alpha - Still seme things to add
-  but I'm out of memory!
-
-  Edit "joystick.cpp" if you have a custom joystick.
----------------------------------------------------------*/
-
-#include <SPI.h>
-#include <GD.h>
-#include "game.h"
-#include "arduino.h"
-
-void setup() {
-    GD.begin();
-    makeGraphics();
-    Coprocessor::reset(samplePlaybackBuffer);
-    randomSeed(GD.rd(FRAME));
-    resetGameSounds();
-    initGame();
-}
-
-void loop() {
-    GD.waitvblank();
-    updateGame();
-    updateGameSounds();
-
-    // Debugging/info
-    if (0) {
-        joystick.dump(0,33);   // Show the joystick state
-        int yline = Coprocessor::yline();
-        showNumber(yline,0,31);
-    }
-    // Screenshot when you press the select button
-    if (0 and joystick.isPressed(Joystick::buttonSelect)) {
-        sendScreenshot();
-    }
-}
-
-
-int main() {
-    setup();
-    while (1) {
-        loop();
-    }
+#include "mbed.h"
+#include "GD.h"
+#include "shield.h"
+GDClass GD(ARD_MOSI, ARD_MISO, ARD_SCK, ARD_D9, USBTX, USBRX) ;
+
+/*---------------------------------------------------------
+  A Space Invaders clone for Gameduino
+
+  http://www.artlum.com/gameduino/gameduino.html#invaders
+
+  Version 0.9 alpha - Still seme things to add
+  but I'm out of memory!
+
+  Edit "joystick.cpp" if you have a custom joystick.
+---------------------------------------------------------*/
+
+#include "game.h"
+#include "arduino.h"
+
+void setup() {
+    GD.begin();
+    makeGraphics();
+    Coprocessor::reset(samplePlaybackBuffer);
+    //randomSeed(GD.rd(FRAME));
+    resetGameSounds();
+    initGame();
+}
+
+void loop() {
+    GD.waitvblank();
+    updateGame();
+    updateGameSounds();
+
+    // Debugging/info
+    if (0) {
+        joystick.dump(0,33);   // Show the joystick state
+        int yline = Coprocessor::yline();
+        showNumber(yline,0,31);
+    }
+    // Screenshot when you press the select button
+    if (0 and joystick.isPressed(Joystick::buttonSelect)) {
+        sendScreenshot();
+    }
+}
+
+
+int main() {
+    setup();
+    while (1) {
+        loop();
+    }
 }
\ No newline at end of file
--- a/samples.h	Sat Sep 29 13:01:42 2012 +0000
+++ b/samples.h	Thu Dec 20 21:33:52 2012 +0000
@@ -1,917 +1,917 @@
-static PROGMEM prog_uchar shoot_snd[2369] = {
-    0x0D,0x08,0xEE,0x0D,0x0B,0xE4,0x15,0x0F,0xC9,0x0B,0x21,0xE1,0x05,0x23,0xD7,0xE2,
-    0x39,0xE3,0xF4,0x35,0xCA,0xFE,0x38,0xCB,0xFF,0x26,0xC4,0x20,0x19,0xC4,0x2A,0x17,
-    0xBF,0x01,0x38,0xDC,0x01,0x20,0xC8,0x1B,0x09,0xD6,0x30,0xF0,0xD1,0x37,0xFE,0xE2,
-    0x28,0xE7,0xD2,0x34,0x0B,0xC7,0x27,0x1C,0xC2,0x01,0x39,0xD0,0xFA,0x2F,0xCB,0x15,
-    0x1E,0xC4,0x04,0x37,0xD6,0xE7,0x34,0xE3,0xF7,0x30,0xE0,0xD4,0x38,0xF1,0xDA,0x3E,
-    0xDD,0xDF,0x3A,0x01,0xC1,0x24,0x12,0xC9,0x33,0xF5,0xE4,0x34,0xE7,0xCF,0x34,0xFD,
-    0xCD,0x40,0xE9,0xD8,0x3E,0xE0,0xDB,0x36,0x10,0xC3,0x0B,0x2D,0xCB,0xF4,0x38,0xEF,
-    0xCF,0x31,0x0C,0xC9,0x22,0x02,0xD3,0x2E,0x06,0xCD,0x28,0x0E,0xC1,0x1B,0x23,0xC3,
-    0x14,0x21,0xCC,0x24,0x06,0xC4,0x25,0x1D,0xC8,0x11,0x2D,0xBF,0x15,0x1A,0xC9,0x25,
-    0x17,0xBE,0x0C,0x34,0xD1,0x13,0x13,0xC1,0x11,0x36,0xD7,0xE2,0x3C,0xDD,0xEB,0x39,
-    0xE6,0xCF,0x22,0x28,0xC9,0xF6,0x39,0xD9,0xF1,0x3A,0xD2,0xEA,0x3B,0xCD,0x01,0x35,
-    0xBF,0x11,0x2B,0xBE,0x17,0x2C,0xBF,0x14,0x1D,0xC2,0x11,0x34,0xD5,0xEC,0x3E,0xD7,
-    0xDB,0x3C,0xE5,0xE4,0x34,0xFF,0xC4,0x27,0x14,0xC3,0x24,0x1D,0xC5,0x03,0x38,0xD1,
-    0x02,0x28,0xC4,0x15,0x1A,0xC8,0x22,0x1E,0xC2,0x1D,0x1C,0xC0,0x19,0x25,0xCD,0x02,
-    0x2E,0xD6,0xEC,0x40,0xDA,0xE4,0x3C,0xCC,0x00,0x36,0xC0,0x17,0x1A,0xC6,0x2A,0xFC,
-    0xD9,0x2F,0xED,0xE3,0x31,0xFC,0xC5,0x2C,0x0D,0xCA,0x38,0xF9,0xC4,0x2F,0x08,0xD3,
-    0x1E,0x1E,0xC8,0xFA,0x3B,0xD8,0xF1,0x27,0xD7,0x08,0x30,0xD0,0xE4,0x3F,0xDC,0xEB,
-    0x3C,0xCF,0xFC,0x37,0xCE,0xE3,0x3B,0xF7,0xE2,0x2F,0xEA,0xCE,0x33,0xF3,0xD6,0x3F,
-    0xEF,0xD0,0x40,0xF6,0xD0,0x30,0xE8,0xD8,0x3C,0xF5,0xE4,0x2C,0xF0,0xC7,0x29,0x1C,
-    0xC0,0x27,0x0D,0xC3,0x31,0x0E,0xCE,0x17,0x21,0xC8,0xFC,0x36,0xDB,0xDC,0x32,0x0F,
-    0xC5,0x16,0x1F,0xD0,0x0E,0x22,0xCF,0xFE,0x37,0xE6,0xCA,0x28,0x16,0xC8,0x24,0x1A,
-    0xC1,0x1D,0x0E,0xD1,0x35,0xF4,0xCF,0x3A,0xF8,0xD3,0x23,0x0F,0xC5,0x17,0x27,0xC6,
-    0x0D,0x33,0xD8,0xDF,0x37,0xEA,0xD3,0x3A,0xF7,0xD9,0x2E,0xF4,0xDC,0x2B,0xE6,0xE5,
-    0x36,0xF2,0xDE,0x2C,0xF3,0xC9,0x33,0x08,0xCC,0x1F,0x20,0xCB,0xF9,0x3A,0xDD,0xE6,
-    0x30,0xF3,0xCA,0x31,0x05,0xCC,0x3F,0xEE,0xCD,0x41,0xEB,0xDA,0x35,0xFB,0xC8,0x1C,
-    0x24,0xC1,0x16,0x2A,0xC3,0x11,0x24,0xD3,0xFA,0x30,0xD9,0xE5,0x3F,0xD5,0xEA,0x42,
-    0xCE,0xF8,0x35,0xC8,0x0B,0x30,0xC2,0x05,0x26,0xD0,0x00,0x32,0xE0,0xE8,0x35,0xDD,
-    0xE5,0x3B,0xD9,0xE7,0x43,0xD7,0xEC,0x33,0xD5,0xE9,0x36,0xFF,0xC9,0x2C,0x03,0xC7,
-    0x3E,0xFC,0xCC,0x28,0x13,0xCA,0x05,0x33,0xD5,0xF0,0x31,0xED,0xCE,0x34,0x03,0xCB,
-    0x35,0x0E,0xC5,0x07,0x32,0xCA,0xFF,0x39,0xCA,0xF3,0x31,0xEE,0xDA,0x37,0xF5,0xCC,
-    0x40,0xE9,0xD5,0x37,0x04,0xC5,0x13,0x2C,0xC5,0x08,0x38,0xDA,0xD9,0x34,0xFF,0xCC,
-    0x20,0x21,0xCD,0xFA,0x39,0xCA,0xFD,0x30,0xC6,0x13,0x2C,0xC9,0x07,0x1E,0xD1,0x07,
-    0x2E,0xDA,0x00,0x23,0xCC,0x07,0x1D,0xD3,0x26,0xFD,0xDA,0x2F,0xED,0xDA,0x2A,0x13,
-    0xC0,0x1C,0x25,0xC1,0x1B,0x1A,0xCA,0x0A,0x26,0xDB,0x07,0x26,0xCA,0xF5,0x39,0xED,
-    0xD0,0x2C,0x0B,0xC6,0x28,0x19,0xC8,0x02,0x33,0xD6,0xEC,0x3C,0xE5,0xD3,0x2B,0x19,
-    0xBF,0x25,0x13,0xBD,0x35,0xFF,0xD1,0x37,0xEE,0xD4,0x3F,0xEA,0xDC,0x3C,0xD4,0xF5,
-    0x2F,0xD1,0x09,0x23,0xCB,0x0D,0x33,0xC3,0x04,0x2C,0xD1,0xF5,0x33,0xF1,0xCC,0x31,
-    0x0E,0xCF,0x1C,0x0D,0xD0,0x1D,0x11,0xD2,0x1F,0x06,0xCF,0x27,0x1C,0xBF,0x1F,0x11,
-    0xC4,0x2D,0x0E,0xCE,0x0F,0x35,0xD6,0xEB,0x36,0xCC,0xF2,0x34,0xE6,0xE4,0x30,0x01,
-    0xC7,0x21,0x21,0xCE,0xFB,0x30,0xD3,0xE4,0x3C,0xEF,0xED,0x26,0xE8,0xD4,0x32,0x06,
-    0xC7,0x2C,0x16,0xCF,0x0E,0x1C,0xCB,0x03,0x37,0xC9,0xF6,0x36,0xDC,0x04,0x22,0xD3,
-    0xE9,0x3A,0xEF,0xD2,0x34,0x05,0xC6,0x11,0x30,0xC3,0x0E,0x30,0xC1,0x1A,0x21,0xC8,
-    0xFC,0x2F,0xE2,0xE6,0x3A,0xD9,0xE9,0x3E,0xD3,0xF0,0x3D,0xEE,0xCA,0x25,0x1A,0xBC,
-    0x14,0x29,0xD6,0x12,0x18,0xCC,0x10,0x1A,0xD1,0x1E,0xFD,0xDC,0x35,0xF5,0xD3,0x2B,
-    0xF4,0xE4,0x2D,0xD6,0xFD,0x33,0xDD,0xDF,0x36,0x00,0xC3,0x3B,0xF6,0xC6,0x2F,0x0D,
-    0xD1,0x18,0x29,0xC8,0xF8,0x36,0xE6,0xCE,0x37,0x06,0xC5,0x25,0x22,0xCB,0x03,0x29,
-    0xCA,0x16,0x1A,0xC9,0x1F,0x0B,0xCD,0x28,0x1D,0xC0,0x1C,0x12,0xC1,0x1D,0x23,0xD5,
-    0xFE,0x38,0xDB,0xD7,0x31,0xEE,0xEA,0x2E,0xEE,0xD0,0x36,0xFE,0xD9,0x2F,0xE6,0xE6,
-    0x36,0xE3,0xD7,0x43,0xED,0xD3,0x34,0xEF,0xD6,0x2B,0x11,0xCE,0x23,0x11,0xBA,0x2C,
-    0x15,0xBD,0x26,0x11,0xCD,0x13,0x30,0xD1,0xE6,0x3D,0xEE,0xDA,0x28,0xFE,0xC3,0x32,
-    0x0C,0xC7,0x3C,0xF6,0xCB,0x38,0xFC,0xCA,0x2A,0x0E,0xD7,0x1E,0x0A,0xC4,0x1C,0x23,
-    0xBD,0x23,0x1B,0xC4,0x31,0x09,0xC0,0x22,0x21,0xCD,0x04,0x20,0xCD,0x0F,0x28,0xD0,
-    0x12,0x1B,0xC4,0x1A,0x28,0xBB,0x1A,0x1E,0xBE,0x2A,0x1B,0xBC,0x20,0x17,0xCE,0x18,
-    0x19,0xD1,0x0A,0x28,0xC7,0x07,0x29,0xCE,0x18,0x1E,0xBD,0x0F,0x32,0xCE,0x06,0x21,
-    0xD1,0xF7,0x35,0xE1,0xDD,0x45,0xE6,0xD8,0x34,0xE8,0xDF,0x2E,0xFF,0xD2,0x2B,0x03,
-    0xC9,0x33,0xF3,0xE2,0x30,0xDE,0xF9,0x2C,0xD7,0xEF,0x2E,0xD9,0xF2,0x42,0xD4,0xEE,
-    0x3D,0xC6,0xEE,0x38,0xE0,0xEF,0x31,0xF5,0xC5,0x2E,0x18,0xC5,0x1D,0x0B,0xD7,0x1B,
-    0x16,0xCA,0x0D,0x32,0xCC,0xF8,0x34,0xE4,0xCF,0x35,0x04,0xC9,0x2A,0x1E,0xC7,0x0C,
-    0x21,0xCE,0x17,0x0A,0xC9,0x2A,0x1E,0xC3,0x21,0x11,0xBD,0x2B,0x1A,0xC9,0x1D,0x0F,
-    0xCA,0x0F,0x2D,0xD0,0x04,0x31,0xC7,0xF7,0x3A,0xF1,0xC4,0x2A,0x13,0xC5,0x21,0x1F,
-    0xD1,0x05,0x25,0xCB,0x05,0x35,0xCC,0xF3,0x3A,0xED,0xCF,0x2F,0xFA,0xD3,0x41,0xF1,
-    0xC8,0x3E,0xEB,0xDD,0x3D,0xD5,0xE6,0x46,0xDC,0xE4,0x31,0xD3,0xFE,0x3D,0xCB,0xF8,
-    0x28,0xD2,0x0D,0x27,0xD3,0xEB,0x3D,0xF2,0xCA,0x2D,0x11,0xCC,0x14,0x1D,0xC2,0x1E,
-    0x20,0xC3,0x2A,0x0B,0xBE,0x27,0x1C,0xCC,0xFD,0x3E,0xD9,0xDC,0x41,0xE3,0xE1,0x29,
-    0x00,0xC6,0x24,0x1E,0xCA,0x2A,0x09,0xC1,0x0A,0x3A,0xD5,0xEC,0x3F,0xD1,0xE3,0x34,
-    0xEC,0xE7,0x2E,0xF2,0xE6,0x29,0xE8,0xCF,0x38,0x07,0xD3,0x22,0x11,0xC7,0x00,0x39,
-    0xD2,0x07,0x2D,0xBF,0x09,0x25,0xD0,0x14,0x1B,0xCF,0x02,0x37,0xD7,0xE5,0x36,0xD5,
-    0xFE,0x33,0xC5,0x05,0x2C,0xCA,0x13,0x1C,0xC6,0x19,0x2A,0xCE,0xFE,0x27,0xD8,0xF2,
-    0x31,0xE2,0xF3,0x32,0xD1,0xE5,0x42,0xDC,0xF1,0x38,0xCA,0xF7,0x30,0xD7,0xF1,0x2D,
-    0xF2,0xD8,0x36,0x04,0xCA,0x28,0xF3,0xD3,0x28,0x1A,0xCF,0x0F,0x2C,0xBD,0x10,0x23,
-    0xC1,0x28,0x16,0xBF,0x2C,0x06,0xC7,0x22,0x23,0xCE,0xF4,0x36,0xD3,0xFE,0x2F,0xC9,
-    0xFF,0x34,0xE6,0xDE,0x2A,0xF2,0xD5,0x33,0xF2,0xD9,0x2E,0x18,0xCA,0x01,0x32,0xC8,
-    0x08,0x2E,0xC6,0xFF,0x28,0xE0,0xEE,0x34,0x03,0xC4,0x0F,0x34,0xCB,0xFA,0x32,0xD7,
-    0xE9,0x31,0xF9,0xD7,0x2D,0xED,0xDE,0x34,0xE6,0xE5,0x32,0x03,0xCC,0x13,0x29,0xC5,
-    0x08,0x2B,0xC9,0x09,0x1F,0xDA,0x11,0x1C,0xD5,0xF3,0x32,0xFD,0xC8,0x18,0x27,0xCF,
-    0xF0,0x37,0xFA,0xC7,0x1B,0x1D,0xD7,0x0D,0x23,0xCB,0xFB,0x32,0xDD,0xF5,0x28,0xE0,
-    0xF0,0x24,0xE5,0x03,0x23,0xDC,0xE0,0x33,0xF7,0xE3,0x2C,0xE9,0xE3,0x29,0x05,0xCA,
-    0x1F,0x0B,0xD5,0x2C,0xF9,0xDE,0x2E,0xF2,0xD4,0x2C,0x01,0xD0,0x20,0x19,0xD6,0x0E,
-    0x11,0xCD,0x06,0x31,0xDF,0xFC,0x1D,0xD9,0x09,0x20,0xDC,0xED,0x34,0xE4,0xDC,0x37,
-    0xE6,0xF0,0x2F,0xD8,0xF1,0x2B,0xDB,0xFF,0x26,0xE0,0xF0,0x29,0xEE,0xD6,0x2F,0x0B,
-    0xD0,0x0E,0x25,0xD0,0x02,0x28,0xCC,0x18,0x1E,0xC7,0x0C,0x23,0xE1,0xEA,0x32,0xF9,
-    0xD2,0x29,0xF5,0xE7,0x23,0xFB,0xD2,0x1B,0x1E,0xD0,0x1D,0x0F,0xCB,0x03,0x32,0xE7,
-    0xE3,0x36,0xDE,0xE6,0x2D,0xF5,0xDC,0x1F,0x17,0xCD,0x1E,0x0E,0xC8,0x15,0x1D,0xDF,
-    0x00,0x26,0xD9,0xF8,0x28,0xD3,0x05,0x2E,0xD6,0xF4,0x24,0xF2,0xDB,0x24,0x0A,0xD6,
-    0x2C,0xF2,0xD9,0x32,0xF3,0xDB,0x1F,0xFF,0xE3,0x1F,0x04,0xDB,0x1D,0x03,0xD9,0x23,
-    0xFF,0xDA,0x29,0xF7,0xE4,0x23,0xE8,0xE9,0x29,0xFF,0xD6,0x18,0x19,0xD6,0x0F,0x10,
-    0xD6,0x1C,0x0E,0xCF,0x1F,0x0B,0xD7,0x26,0x05,0xD1,0x0B,0x2A,0xDD,0xF0,0x31,0xD7,
-    0xF4,0x27,0xDE,0xED,0x2C,0x02,0xDE,0x23,0xF6,0xD0,0x29,0x05,0xDA,0x1B,0x0C,0xDA,
-    0x0C,0x1F,0xD2,0x0A,0x24,0xCF,0x13,0x18,0xCD,0x0C,0x1E,0xE2,0xF8,0x26,0xEB,0xDB,
-    0x29,0x00,0xE8,0x1F,0xF5,0xDC,0x1C,0x09,0xD9,0x23,0x0A,0xCF,0x12,0x1B,0xE1,0xF3,
-    0x2C,0xE8,0xF0,0x26,0xE5,0xE2,0x23,0x0C,0xD5,0x22,0x07,0xCF,0x24,0x08,0xD8,0x1D,
-    0x06,0xE2,0x17,0x04,0xD9,0x12,0x1F,0xD4,0xFD,0x27,0xEC,0xE2,0x2A,0xFF,0xD7,0x22,
-    0x03,0xD9,0x0C,0x20,0xDA,0x06,0x24,0xD0,0x02,0x1F,0xDC,0x13,0x0F,0xD3,0x21,0x03,
-    0xD5,0x1C,0x13,0xDB,0xFD,0x28,0xEA,0xDE,0x23,0x0E,0xD6,0x19,0x11,0xCE,0x16,0x0C,
-    0xDC,0x1C,0x08,0xDC,0x13,0x0D,0xDF,0x07,0x26,0xE1,0xF0,0x1F,0xE9,0xFB,0x1C,0xEB,
-    0xE5,0x28,0xF9,0xE3,0x24,0xF4,0xE0,0x1C,0x1B,0xD2,0xFC,0x21,0xE6,0xEF,0x21,0x09,
-    0xD6,0x06,0x22,0xE5,0xEA,0x23,0xFF,0xDE,0x19,0x13,0xD8,0xFF,0x1D,0xE8,0xFF,0x1C,
-    0xDD,0xF6,0x2B,0xEA,0xEE,0x1E,0xEA,0xF7,0x1B,0xF1,0xE5,0x1F,0x08,0xDC,0x21,0xFA,
-    0xDF,0x1A,0x02,0xE1,0x09,0x1F,0xDF,0x04,0x1C,0xDE,0xEF,0x21,0x0A,0xD9,0x0A,0x1C,
-    0xE3,0xEB,0x26,0x05,0xD7,0x16,0x0B,0xDB,0x0B,0x1D,0xE5,0xF5,0x22,0xF4,0xDD,0x1A,
-    0x11,0xD4,0x15,0x12,0xDA,0x06,0x24,0xEB,0xE4,0x25,0xED,0xF4,0x23,0xDF,0xFC,0x22,
-    0xDF,0xFF,0x1F,0xE2,0xFC,0x1C,0xE8,0xFA,0x19,0xEB,0xF3,0x25,0xF2,0xE2,0x1E,0xFE,
-    0xE6,0x15,0x0B,0xDD,0x11,0x11,0xD5,0x17,0x10,0xDC,0x19,0x00,0xDF,0x14,0x10,0xE3,
-    0x00,0x20,0xE1,0xF9,0x21,0xEA,0xE9,0x1E,0x0D,0xD7,0x0C,0x13,0xE6,0x0B,0x0E,0xE1,
-    0xFE,0x23,0xE3,0xFB,0x1F,0xDE,0xFE,0x1B,0xEA,0xFB,0x1B,0xEC,0xF3,0x18,0xF0,0xEE,
-    0x1D,0x07,0xE1,0x0A,0x0E,0xDF,0x0E,0x17,0xDD,0x0E,0x12,0xDA,0x06,0x17,0xE7,0x0A,
-    0x0A,0xE2,0x0F,0x0E,0xE4,0x01,0x1B,0xEE,0xEC,0x1E,0x01,0xDA,0x10,0x15,0xE4,0xF7,
-    0x20,0xF3,0xED,0x1B,0xF4,0xE8,0x1B,0x0C,0xDC,0x07,0x19,0xE9,0xEF,0x1E,0xFE,0xE5,
-    0x14,0x04,0xE5,0x09,0x17,0xEA,0xEE,0x20,0xF7,0xE6,0x21,0xF7,0xE3,0x1A,0x03,0xE7,
-    0x13,0x0D,0xDF,0x01,0x1D,0xEE,0xEA,0x1D,0x01,0xDF,0x0A,0x1C,0xE2,0xF9,0x1D,0xE8,
-    0x02,0x15,0xE9,0xF1,0x1D,0xFA,0xE6,0x17,0x09,0xE1,0x03,0x19,0xE3,0x04,0x19,0xE0,
-    0x09,0x14,0xE2,0x01,0x18,0xEC,0xF5,0x1A,0xEE,0xF7,0x1D,0xF0,0xE6,0x17,0x0F,0xE1,
-    0x0E,0x0F,0xDD,0x06,0x17,0xF1,0xEB,0x14,0x11,0xE2,0xFC,0x1A,0xF2,0xEF,0x18,0xFA,
-    0xE9,0x1D,0xFA,0xE7,0x15,0x06,0xE4,0x03,0x1A,0xE6,0x02,0x17,0xE6,0xF4,0x1B,0xFB,
-    0xE4,0x1E,0xF9,0xE7,0x1A,0xF9,0xEA,0x13,0x11,0xE0,0x02,0x18,0xE7,0xFC,0x16,0xF2,
-    0xF0,0x1A,0xF9,0xE8,0x15,0x01,0xE8,0x0F,0x0D,0xE6,0xF6,0x20,0xFB,0xE3,0x19,0xFB,
-    0xE6,0x17,0x02,0xEC,0x11,0x01,0xE8,0x0F,0x06,0xE8,0x13,0x0A,0xDF,0x0B,0x0F,0xE7,
-    0x05,0x17,0xEB,0xF8,0x15,0xEF,0xEF,0x19,0x04,0xE9,0x10,0x04,0xE2,0x0B,0x13,0xEC,
-    0x00,0x15,0xEA,0xF8,0x19,0xEC,0xF9,0x1A,0xEF,0xF2,0x14,0xFD,0xEA,0x06,0x19,0xEE,
-    0xF2,0x18,0xF6,0xEA,0x13,0x0F,0xE7,0xFB,0x1A,0xF5,0xED,0x17,0xF9,0xEA,0x14,0x07,
-    0xE7,0x09,0x0E,0xE4,0x0B,0x0F,0xE4,0x0F,0x0A,0xE4,0x0C,0x09,0xEA,0x0E,0x08,0xE9,
-    0x08,0x08,0xED,0xFF,0x15,0xF6,0xEC,0x16,0x05,0xE3,0x09,0x0D,0xEB,0x03,0x15,0xEC,
-    0xF6,0x16,0xEF,0xF9,0x16,0xF8,0xEE,0x08,0x12,0xED,0xFE,0x0E,0xEC,0x06,0x09,0xEE,
-    0x08,0x0C,0xE8,0x06,0x12,0xE7,0x00,0x15,0xF1,0xF2,0x15,0xFD,0xE9,0x14,0x03,0xEB,
-    0x0D,0x00,0xEE,0x0D,0x08,0xED,0xFB,0x17,0xFB,0xE7,0x10,0x06,0xE9,0x05,0x15,0xED,
-    0xF4,0x14,0xF7,0xF5,0x12,0xFD,0xE9,0x0D,0x09,0xED,0x07,0x07,0xEE,0xFA,0x14,0xFC,
-    0xF1,0x10,0xF8,0xF2,0x13,0x03,0xE8,0x00,0x16,0xF7,0xED,0x10,0x04,0xE9,0x0C,0x0C,
-    0xEA,0x02,0x12,0xF5,0xEE,0x0F,0x0A,0xE8,0x01,0x13,0xF2,0xF2,0x12,0x02,0xEC,0x0A,
-    0x0B,0xEA,0x00,0x14,0xED,0xFD,0x12,0xEE,0xF9,0x12,0xFC,0xED,0x07,0x13,0xEE,0xF6,
-    0x14,0xF8,0xEE,0x0D,0x07,0xEA,0x05,0x0E,0xEF,0x03,0x08,0xEE,0x04,0x10,0xF2,0xF0,
-    0x10,0x0A,0xE9,0xFD,0x13,0xF4,0xF4,0x13,0xF9,0xF2,0x10,0x04,0xEB,0x05,0x0E,0xEE,
-    0xFE,0x0E,0xF4,0xF7,0x11,0xFC,0xEF,0x0D,0x09,0xEE,0xFA,0x13,0xFB,0xEC,0x10,0x02,
-    0xEA,0x04,0x12,0xF6,0xEF,0x0E,0x09,0xEC,0x02,0x0C,0xF1,0xFF,0x0D,0xF2,0xF9,0x12,
-    0xF7,0xF3,0x0F,0xFF,0xEF,0x09,0x0B,0xF0,0xF8,0x12,0xFC,0xED,0x0A,0x0B,0xED,0xFF,
-    0x10,0xF3,0xFC,0x0E,0xF8,0xF3,0x0E,0xFF,0xF0,0x0E,0x00,0xEF,0x01,0x0E,0xFD,0xF0,
-    0x08,0x09,0xF1,0x01,0x0C,0xF0,0xFC,0x0F,0xF8,0xF2,0x0E,0x05,0xEB,0x09,0x08,0xEE,
-    0x08,0x06,0xF3,0xF7,0x0C,0x07,0xEB,0x06,0x0A,0xEE,0xFC,0x0E,0x01,0xEF,0x05,0x0F,
-    0xF0,0xFB,0x0C,0xF3,0xFF,0x0B,0xF4,0xFA,0x0D,0xFB,0xF3,0x0B,0x03,0xEF,0x06,0x0D,
-    0xF0,0xF8,0x0F,0xFE,0xF0,0x04,0x0D,0xF3,0xFB,0x0E,0xF8,0xF3,0x0C,0x05,0xEF,0xFE,
-    0x10,0xF7,0xF6,0x0E,0xFB,0xF2,0x0A,0x06,0xF1,0x03,0x0B,0xF1,0x02,0x08,0xF1,0x04,
-    0x08,0xF3,0x03,0x07,0xF2,0x00,0x0D,0xF7,0xF4,0x0C,0x05,0xF1,0x02,0x0A,0xF4,0xFC,
-    0x0B,0xFB,0xF3,0x09,0x0B,0xF0,0xFB,0x0D,0xF9,0xF7,0x0C,0xFC,0xF5,0x0B,0xFA,0xFA,
-    0x0B,0xFA,0xF5,0x0A,0x06,0xF1,0x00,0x0A,0xF6,0xFD,0x09,0xFB,0xF6,0x06,0x0B,0xF4,
-    0xF9,0x0B,0xFB,0xF7,0x0B,0xFF,0xF2,0x08,0x06,0xF4,0xFD,0x09,0xFF,0xF4,0x05,0x08,
-    0xF4,0xFD,0x0B,0xFA,0xF7,0x0A,0xFF,0xF4,0x06,0x08,0xF4,0xFB,0x0C,0xFB,0xF7,0x0B,
-    0xFE,0xF3,0x07,0x06,0xF4,0xFE,0x0B,0xF8,0xF9,0x09,0xFD,0xF5,0x07,0x06,0xF5,0xFC,
-    0x09,0xFD,0xF5,0x08,0x04,0xF2,0x04,0x06,0xF5,0xFC,0x09,0x00,0xF5,0x03,0x09,0xF6,
-    0xF8,0x0A,0x03,0xF4,0xFF,0x09,0xFB,0xF6,0x05,0x07,0xF9,0xF8,0x06,0x03,0xF7,0xFD,
-    0x00
-};
-
-static PROGMEM prog_uchar aliendeath_snd[2808] = {
-    0x14,0x1D,0xD9,0xFE,0x19,0xE0,0xF0,0x23,0x0B,0xDC,0x06,0x15,0xE2,0x02,0x1E,0xE9,
-    0xE8,0x18,0x16,0xE3,0xF6,0x1F,0xEC,0xF1,0x20,0xF4,0xE9,0x13,0x01,0xDD,0x0D,0x13,
-    0xE0,0x13,0x35,0xE8,0xDC,0x0D,0xE7,0xDC,0x15,0x21,0x22,0x13,0xF6,0xC9,0xCF,0x0B,
-    0xFF,0x17,0x4D,0x2B,0xD6,0xBE,0xC7,0xBE,0xFC,0x41,0x38,0x44,0x24,0xCD,0xB3,0xD0,
-    0x08,0x0D,0x2B,0x4B,0x21,0xD6,0xBC,0xC6,0xC4,0xFE,0x3D,0x3A,0x44,0x2A,0xC9,0xBB,
-    0xD9,0xD5,0xFF,0x35,0x43,0x36,0xF2,0xC9,0xC1,0xC3,0xFF,0x2A,0x2F,0x46,0x36,0xD8,
-    0xB7,0xCB,0xC4,0xE3,0x31,0x40,0x3C,0x3A,0xED,0xB4,0xCC,0xE1,0xE4,0x20,0x41,0x3E,
-    0x24,0xE4,0xBE,0xC1,0xE6,0xF1,0x17,0x42,0x43,0x1F,0xDA,0xC8,0xBA,0xD8,0x10,0x1A,
-    0x34,0x4B,0x2C,0xD5,0xBE,0xC8,0xBC,0xF2,0x2F,0x33,0x3C,0x43,0x00,0xBC,0xC0,0xDE,
-    0xDB,0xF4,0x32,0x3C,0x3E,0x1B,0xDF,0xC2,0xB9,0xEC,0xFA,0x07,0x3B,0x3F,0x31,0xFF,
-    0xD0,0xB6,0xCF,0xF0,0xEF,0x25,0x40,0x38,0x30,0xF3,0xC1,0xB7,0xD8,0xF8,0xFB,0x2B,
-    0x3F,0x3D,0x1F,0xD8,0xC3,0xBE,0xC7,0x0C,0x1D,0x21,0x40,0x44,0x14,0xC4,0xC1,0xC1,
-    0xC6,0x09,0x23,0x24,0x3D,0x41,0x15,0xD7,0xC4,0xB8,0xD4,0x01,0xFF,0x2B,0x42,0x35,
-    0x2F,0xF1,0xBB,0xBA,0xD2,0xE4,0xF7,0x2B,0x3E,0x37,0x42,0x0A,0xBD,0xBC,0xCB,0xCC,
-    0xE6,0x1E,0x3F,0x37,0x3E,0x34,0xE0,0xB6,0xC1,0xD1,0xD5,0xF5,0x2E,0x3B,0x36,0x40,
-    0x2B,0xD3,0xB6,0xC1,0xC2,0xE0,0x13,0x30,0x30,0x3D,0x43,0x0E,0xCC,0xBE,0xC3,0xBD,
-    0xE8,0x20,0x1B,0x32,0x40,0x41,0x1C,0xCB,0xBE,0xC2,0xBE,0xDD,0x1D,0x26,0x22,0x3D,
-    0x41,0x28,0xE6,0xBD,0xC1,0xBC,0xD0,0x12,0x17,0x17,0x3B,0x3F,0x34,0x0D,0xD8,0xC0,
-    0xB8,0xCC,0xF3,0xFC,0x0D,0x30,0x3E,0x30,0x35,0x15,0xC9,0xBB,0xC0,0xC5,0xE1,0x15,
-    0x20,0x1F,0x3C,0x3A,0x2A,0x0B,0xD4,0xBE,0xB7,0xCF,0xEF,0xFA,0x21,0x27,0x2B,0x3F,
-    0x38,0x12,0xD9,0xC3,0xBA,0xC2,0xE8,0xF5,0x0C,0x30,0x2E,0x2D,0x3B,0x2C,0xF9,0xCC,
-    0xBF,0xBA,0xCE,0xEF,0xFC,0x1C,0x26,0x25,0x3C,0x37,0x1C,0xFC,0xD3,0xBC,0xBA,0xD0,
-    0xE8,0xF9,0x1D,0x2D,0x24,0x2F,0x3D,0x2A,0xFD,0xD5,0xC2,0xB8,0xC4,0xE7,0xF9,0x08,
-    0x27,0x31,0x27,0x34,0x3C,0x1B,0xE4,0xC1,0xBE,0xB7,0xCE,0xF8,0x02,0x0E,0x23,0x32,
-    0x2C,0x2C,0x3A,0x1E,0xE3,0xBE,0xBE,0xBA,0xC3,0xF7,0x14,0x0F,0x14,0x2A,0x33,0x26,
-    0x31,0x2D,0xF9,0xCC,0xBE,0xBD,0xBA,0xDD,0x0C,0x0D,0x14,0x27,0x21,0x20,0x34,0x31,
-    0x12,0xF8,0xD5,0xBA,0xBA,0xCA,0xE1,0xFA,0x16,0x26,0x13,0x12,0x30,0x2F,0x1F,0x28,
-    0x12,0xD4,0xBC,0xBF,0xBC,0xCF,0x00,0x15,0x0D,0x1A,0x24,0x17,0x1B,0x2F,0x2C,0x15,
-    0x04,0xE5,0xC1,0xBD,0xC0,0xCD,0xEE,0x0E,0x26,0x1D,0x10,0x20,0x1F,0x19,0x29,0x25,
-    0x0B,0xF2,0xD4,0xBF,0xBC,0xCA,0xE4,0xF8,0x10,0x24,0x1C,0x10,0x1C,0x1D,0x18,0x26,
-    0x21,0x0A,0xFB,0xE0,0xC5,0xBB,0xC3,0xDD,0xEF,0x08,0x22,0x1C,0x12,0x1B,0x17,0x10,
-    0x1B,0x28,0x1C,0x0B,0x04,0xE3,0xC2,0xC0,0xC3,0xCD,0xE8,0x0C,0x21,0x18,0x19,0x1E,
-    0x0A,0x08,0x1E,0x1F,0x17,0x1A,0x11,0xFA,0xE4,0xD0,0xC1,0xC0,0xD2,0xED,0xFD,0x10,
-    0x22,0x19,0x11,0x18,0x0F,0x07,0x16,0x1F,0x15,0x12,0x15,0x03,0xE5,0xD2,0xCA,0xC3,
-    0xC7,0xE3,0xFE,0x09,0x14,0x1F,0x1C,0x10,0x0F,0x10,0x07,0x0C,0x1C,0x19,0x11,0x13,
-    0x09,0xF3,0xE3,0xCF,0xC1,0xCC,0xD9,0xE2,0xFB,0x14,0x17,0x17,0x1C,0x13,0x09,0x0D,
-    0x0B,0x05,0x10,0x1A,0x13,0x0E,0x11,0x06,0xF7,0xEB,0xD6,0xC6,0xC8,0xD6,0xE2,0xF0,
-    0x04,0x17,0x1D,0x17,0x13,0x15,0x0C,0x04,0x08,0x05,0x03,0x0E,0x16,0x11,0x0C,0x0B,
-    0x08,0xFD,0xEF,0xDE,0xD5,0xCC,0xCE,0xDD,0xEA,0xF5,0x07,0x17,0x1A,0x16,0x18,0x16,
-    0x0A,0x08,0x0A,0x02,0xFF,0x05,0x0A,0x0B,0x11,0x10,0x07,0x05,0x05,0xFD,0xF4,0xE9,
-    0xD9,0xCF,0xD4,0xDC,0xE1,0xED,0xFF,0x0C,0x11,0x16,0x1A,0x13,0x0E,0x0F,0x0A,0x06,
-    0x07,0x05,0xFF,0x01,0x06,0x05,0x08,0x10,0x0F,0x08,0x04,0x04,0xFD,0xF8,0xFA,0xF1,
-    0xE2,0xDA,0xDC,0xDE,0xE2,0xED,0xF4,0xF8,0x05,0x10,0x13,0x13,0x15,0x12,0x0C,0x0A,
-    0x08,0x04,0x04,0x04,0x00,0xFE,0x00,0x01,0xFE,0x00,0x04,0x06,0x08,0x09,0x06,0x00,
-    0x00,0xFF,0xFC,0xF8,0xFE,0xFE,0xE7,0xCD,0xC5,0xD9,0xF5,0x0B,0x1D,0x3F,0x2F,0xF5,
-    0xDA,0xED,0x2A,0x0F,0xE2,0xE4,0x1C,0x24,0xEA,0xDD,0x07,0x33,0xFD,0xD9,0xF0,0x2E,
-    0x14,0xDB,0xDE,0x19,0x2B,0xE9,0xD5,0xFD,0x34,0xFF,0xD4,0xE5,0x2A,0x1E,0xDD,0xD9,
-    0x0E,0x34,0xEE,0xD4,0xEF,0x33,0x11,0xD9,0xDF,0x1A,0x32,0xEA,0xD6,0xF6,0x37,0x0A,
-    0xD7,0xE0,0x20,0x2D,0xE5,0xD6,0xFB,0x3B,0x04,0xD5,0xDF,0x24,0x2D,0xE1,0xD6,0xFC,
-    0x3E,0x03,0xD4,0xDF,0x22,0x2E,0xE1,0xD7,0xF5,0x3B,0x08,0xD7,0xDD,0x1B,0x35,0xE4,
-    0xD6,0xF2,0x3C,0x11,0xD7,0xDD,0x11,0x3B,0xED,0xD6,0xE6,0x33,0x21,0xD8,0xD8,0x04,
-    0x43,0xFA,0xD5,0xE0,0x23,0x31,0xE0,0xD8,0xEF,0x3D,0x12,0xD6,0xDA,0x0D,0x41,0xF1,
-    0xD7,0xE2,0x29,0x2D,0xDD,0xD8,0xF1,0x41,0x0F,0xD4,0xDC,0x0A,0x41,0xF2,0xD6,0xE0,
-    0x28,0x33,0xDC,0xD9,0xED,0x39,0x1A,0xD7,0xDA,0xFF,0x45,0xFF,0xD4,0xDE,0x14,0x3D,
-    0xEB,0xD8,0xE2,0x2A,0x31,0xDC,0xDA,0xEC,0x39,0x1F,0xD6,0xDB,0xF9,0x41,0x09,0xD5,
-    0xDB,0x07,0x46,0xF6,0xD6,0xE0,0x15,0x3F,0xEA,0xD7,0xE2,0x26,0x35,0xDF,0xDA,0xE5,
-    0x32,0x2C,0xD8,0xDC,0xEC,0x38,0x21,0xD5,0xDC,0xF4,0x3D,0x15,0xD5,0xDC,0xF9,0x42,
-    0x0C,0xD4,0xDE,0xFE,0x45,0x05,0xD3,0xDF,0x02,0x45,0xFF,0xD3,0xE1,0x06,0x43,0xFC,
-    0xD3,0xE1,0x09,0x42,0xFB,0xD5,0xE0,0x0A,0x41,0xFA,0xD5,0xE0,0x0A,0x42,0xFA,0xD5,
-    0xDF,0x09,0x43,0xFC,0xD5,0xDF,0x05,0x45,0x01,0xD3,0xDF,0x00,0x44,0x08,0xD3,0xDF,
-    0xFB,0x42,0x10,0xD3,0xDE,0xF5,0x3D,0x1A,0xD5,0xDE,0xEF,0x36,0x25,0xDA,0xDC,0xEA,
-    0x2B,0x2F,0xE1,0xDA,0xE6,0x1E,0x39,0xEA,0xD7,0xE4,0x11,0x41,0xF8,0xD4,0xE1,0x02,
-    0x44,0x08,0xD1,0xE1,0xF5,0x3E,0x1C,0xD3,0xE0,0xEB,0x2F,0x31,0xDC,0xDB,0xE6,0x1C,
-    0x3E,0xEE,0xD5,0xE3,0x06,0x42,0x07,0xD3,0xE1,0xF5,0x3A,0x22,0xD7,0xDD,0xEA,0x24,
-    0x38,0xE8,0xD7,0xE6,0x0A,0x40,0x04,0xD2,0xE2,0xF5,0x37,0x26,0xD8,0xDE,0xEA,0x1B,
-    0x3C,0xF0,0xD5,0xE5,0xFF,0x3F,0x14,0xD2,0xE1,0xED,0x26,0x35,0xE6,0xD8,0xE6,0x06,
-    0x40,0x0C,0xD3,0xE2,0xEF,0x2A,0x32,0xE3,0xD8,0xE6,0x08,0x3F,0x0B,0xD4,0xE2,0xEF,
-    0x2A,0x35,0xE5,0xD8,0xE7,0x03,0x3D,0x11,0xD5,0xE1,0xEB,0x22,0x3A,0xED,0xD6,0xE7,
-    0xFA,0x38,0x20,0xD8,0xDE,0xEA,0x11,0x3F,0x02,0xD3,0xE5,0xF2,0x28,0x33,0xE7,0xD6,
-    0xE8,0xFE,0x39,0x1E,0xD7,0xDF,0xEA,0x11,0x3F,0x03,0xD2,0xE5,0xED,0x22,0x3A,0xED,
-    0xD5,0xE7,0xF5,0x32,0x2C,0xDF,0xDB,0xE8,0xFF,0x3B,0x1C,0xD7,0xE0,0xEA,0x0B,0x3F,
-    0x0C,0xD3,0xE4,0xEB,0x15,0x3E,0xFF,0xD2,0xE6,0xEE,0x1D,0x3B,0xF7,0xD4,0xE7,0xF1,
-    0x24,0x38,0xF0,0xD4,0xE8,0xF4,0x27,0x33,0xEC,0xD6,0xEA,0xF6,0x2A,0x31,0xE8,0xD7,
-    0xEB,0xF6,0x2C,0x30,0xE7,0xD7,0xEA,0xF6,0x2C,0x30,0xE8,0xD7,0xEA,0xF6,0x29,0x32,
-    0xEB,0xD4,0xEA,0xF5,0x25,0x35,0xF0,0xD3,0xE9,0xF3,0x1F,0x39,0xF9,0xD2,0xE7,0xF1,
-    0x15,0x3B,0x04,0xD2,0xE5,0xF0,0x0C,0x3B,0x11,0xD6,0xE0,0xEF,0x03,0x36,0x20,0xDC,
-    0xDB,0xED,0xFA,0x2C,0x2F,0xE8,0xD7,0xEB,0xF3,0x1E,0x39,0xFB,0xD4,0xE6,0xF0,0x0B,
-    0x3A,0x14,0xD8,0xDE,0xEE,0xFE,0x2E,0x2C,0xE6,0xD6,0xEB,0xF5,0x1A,0x3A,0x00,0xD4,
-    0xE3,0xF1,0x05,0x36,0x1F,0xDD,0xDA,0xEE,0xF8,0x21,0x38,0xF6,0xD4,0xE5,0xF3,0x07,
-    0x38,0x1C,0xDC,0xDA,0xED,0xF9,0x1F,0x38,0xF9,0xD5,0xE3,0xF3,0x04,0x33,0x24,0xE2,
-    0xD9,0xEA,0xF8,0x14,0x3A,0x09,0xD7,0xDF,0xF1,0xFD,0x25,0x35,0xF0,0xD6,0xE5,0xF5,
-    0x05,0x33,0x25,0xDF,0xDA,0xEB,0xF7,0x0E,0x3B,0x12,0xD8,0xDE,0xEF,0xFB,0x18,0x3A,
-    0x02,0xD7,0xE1,0xF2,0xFD,0x20,0x37,0xF6,0xD7,0xE3,0xF5,0xFF,0x25,0x34,0xED,0xD8,
-    0xE4,0xF6,0x00,0x29,0x31,0xEA,0xDA,0xE5,0xF6,0x02,0x2A,0x30,0xE9,0xD8,0xE5,0xF7,
-    0x01,0x29,0x30,0xEC,0xD9,0xE3,0xF8,0x00,0x26,0x34,0xEE,0xD9,0xE2,0xF5,0x00,0x1F,
-    0x39,0xF6,0xD7,0xE2,0xF2,0xFF,0x15,0x3B,0x06,0xD6,0xDF,0xEE,0xFF,0x0B,0x37,0x19,
-    0xDA,0xDD,0xEA,0xFD,0x05,0x2D,0x2C,0xE6,0xDA,0xE6,0xF8,0x00,0x1C,0x3A,0xFB,0xD9,
-    0xE2,0xF0,0xFF,0x0A,0x37,0x1A,0xDD,0xDE,0xE7,0xFB,0x01,0x22,0x35,0xF5,0xD7,0xE4,
-    0xF2,0xFF,0x0B,0x36,0x1C,0xDC,0xDD,0xE9,0xFB,0x00,0x1C,0x38,0xFB,0xD8,0xE2,0xEF,
-    0x01,0x04,0x2D,0x29,0xE6,0xDA,0xE5,0xF7,0x00,0x0D,0x36,0x15,0xDC,0xDD,0xE8,0xFC,
-    0x01,0x18,0x38,0x04,0xD8,0xE0,0xEC,0xFF,0x02,0x1F,0x36,0xF9,0xD6,0xE4,0xEF,0x00,
-    0x02,0x24,0x35,0xF3,0xD7,0xE5,0xF0,0x02,0x01,0x24,0x34,0xF1,0xD7,0xE6,0xEF,0x01,
-    0x02,0x21,0x33,0xF6,0xD7,0xE5,0xEF,0x00,0x02,0x1D,0x35,0x00,0xD7,0xE1,0xEE,0xFE,
-    0x02,0x14,0x35,0x0F,0xD9,0xDD,0xED,0xFB,0x02,0x0B,0x30,0x21,0xE2,0xD9,0xE7,0xF6,
-    0x02,0x05,0x23,0x30,0xF9,0xD6,0xE1,0xEF,0xFF,0x03,0x11,0x34,0x16,0xDF,0xDC,0xE8,
-    0xF7,0x04,0x04,0x21,0x34,0xF8,0xD7,0xE3,0xED,0xFD,0x04,0x09,0x2E,0x24,0xE5,0xD9,
-    0xE7,0xF3,0x01,0x04,0x11,0x33,0x11,0xDC,0xDE,0xEA,0xF6,0x03,0x04,0x18,0x34,0x06,
-    0xDA,0xE0,0xEC,0xFA,0x04,0x05,0x1B,0x31,0x03,0xDA,0xDE,0xED,0xFA,0x03,0x06,0x18,
-    0x32,0x06,0xD9,0xDF,0xEC,0xFB,0x03,0x04,0x13,0x30,0x11,0xDD,0xDB,0xEB,0xF8,0x01,
-    0x06,0x0B,0x2B,0x20,0xE7,0xD9,0xE7,0xF4,0xFF,0x07,0x05,0x1E,0x2D,0xFB,0xDA,0xE1,
-    0xEF,0xFA,0x05,0x05,0x0D,0x2D,0x1A,0xE4,0xDA,0xE8,0xF6,0xFE,0x06,0x07,0x18,0x2E,
-    0x06,0xDA,0xDD,0xEB,0xFC,0x02,0x05,0x07,0x20,0x2C,0xF8,0xD8,0xE1,0xEE,0xFD,0x03,
-    0x06,0x08,0x22,0x2A,0xF4,0xD7,0xE2,0xF0,0xFD,0x01,0x06,0x09,0x1E,0x2C,0xF9,0xD7,
-    0xE1,0xEE,0xFB,0x02,0x07,0x06,0x18,0x2E,0x04,0xDA,0xDF,0xEA,0xFA,0x01,0x06,0x07,
-    0x0D,0x2A,0x19,0xE6,0xDA,0xE4,0xF4,0xFF,0x04,0x08,0x07,0x1A,0x2B,0x03,0xDA,0xDF,
-    0xEC,0xF8,0x01,0x04,0x07,0x0A,0x21,0x24,0xF4,0xD8,0xE2,0xF1,0xFB,0x01,0x06,0x06,
-    0x0A,0x24,0x21,0xF0,0xD8,0xE5,0xF1,0xFC,0x03,0x05,0x06,0x09,0x20,0x23,0xF4,0xD9,
-    0xE3,0xEF,0xFC,0x03,0x04,0x06,0x06,0x17,0x26,0x05,0xDC,0xDE,0xED,0xF8,0x00,0x02,
-    0x07,0x07,0x0B,0x21,0x1C,0xEE,0xD9,0xE4,0xF2,0xFE,0x03,0x04,0x06,0x06,0x0F,0x24,
-    0x13,0xE5,0xD8,0xE8,0xF4,0xFE,0x05,0x06,0x07,0x05,0x0F,0x24,0x11,0xE5,0xDA,0xE8,
-    0xF5,0xFF,0x03,0x06,0x08,0x05,0x0A,0x1F,0x1A,0xF1,0xDA,0xE2,0xF1,0xFD,0x04,0x06,
-    0x07,0x06,0x04,0x13,0x22,0x0A,0xE1,0xDA,0xE9,0xF7,0x00,0x05,0x06,0x06,0x05,0x05,
-    0x16,0x22,0x02,0xDE,0xDD,0xE9,0xF7,0x01,0x05,0x07,0x06,0x05,0x04,0x12,0x21,0x0A,
-    0xE3,0xDB,0xE9,0xF6,0xFF,0x04,0x06,0x06,0x06,0x04,0x07,0x1B,0x1B,0xF5,0xDA,0xE1,
-    0xEE,0xFA,0x03,0x06,0x06,0x05,0x05,0x03,0x09,0x1D,0x17,0xF1,0xDB,0xE2,0xEF,0xFB,
-    0x03,0x05,0x06,0x05,0x04,0x04,0x07,0x15,0x1C,0x00,0xDF,0xDE,0xEC,0xF6,0x00,0x05,
-    0x06,0x06,0x05,0x04,0x03,0x07,0x19,0x19,0xF7,0xDB,0xE1,0xEF,0xFA,0x01,0x05,0x06,
-    0x06,0x05,0x05,0x03,0x04,0x14,0x1B,0x01,0xE1,0xDD,0xEB,0xF8,0x00,0x04,0x07,0x06,
-    0x04,0x04,0x03,0x00,0x06,0x16,0x17,0xFB,0xE0,0xE0,0xED,0xF9,0x02,0x05,0x06,0x06,
-    0x04,0x03,0x03,0x00,0x01,0x0E,0x1A,0x0B,0xE9,0xDC,0xE6,0xF5,0xFE,0x03,0x06,0x07,
-    0x06,0x04,0x02,0x01,0x00,0x00,0x0A,0x18,0x10,0xF2,0xDE,0xE3,0xF1,0xFC,0x03,0x05,
-    0x05,0x06,0x05,0x03,0x02,0x01,0xFF,0xFF,0x0A,0x18,0x0F,0xF2,0xDF,0xE3,0xF1,0xFC,
-    0x03,0x06,0x07,0x05,0x04,0x02,0x01,0x00,0x00,0xFF,0x01,0x0C,0x16,0x0D,0xF2,0xE0,
-    0xE4,0xF1,0xFD,0x04,0x06,0x05,0x05,0x04,0x02,0x01,0x00,0x00,0x00,0xFE,0x01,0x0C,
-    0x15,0x0D,0xF4,0xE1,0xE4,0xF0,0xFB,0x01,0x05,0x05,0x04,0x04,0x03,0x02,0x02,0x00,
-    0xFF,0xFF,0xFF,0x00,0x07,0x13,0x12,0xFE,0xE7,0xE2,0xEB,0xF7,0x00,0x04,0x05,0x05,
-    0x04,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0xFF,0x01,0x09,0x11,0x10,0xFD,0xE7,
-    0xE1,0xEB,0xF8,0x00,0x04,0x06,0x05,0x03,0x03,0x02,0x00,0xFF,0xFF,0x00,0xFF,0xFF,
-    0xFF,0x00,0x00,0x02,0x09,0x11,0x10,0xFF,0xEA,0xE2,0xE9,0xF6,0xFE,0x04,0x06,0x06,
-    0x05,0x02,0x01,0x01,0x00,0x00,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0x00,0x05,
-    0x0C,0x10,0x0C,0xFB,0xEA,0xE4,0xEC,0xF6,0xFE,0x03,0x05,0x06,0x05,0x04,0x03,0x01,
-    0x01,0xFF,0xFF,0xFF,0xFE,0xFE,0xFD,0xFE,0xFE,0xFE,0xFF,0xFF,0xFE,0xFF,0x01,0x07,
-    0x0B,0x0D,0x06,0xF6,0xEA,0xE6,0xEE,0xF8,0x02,0x05,0x06,0x06,0x04,0x04,0x01,0x01,
-    0x00,0xFE,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFE,0xFE,0xFD,0xFE,
-    0xFF,0xFF,0xFF,0xFF,0x02,0x08,0x0A,0x09,0x05,0xF9,0xF0,0xEA,0xEC,0xF7,0xFF,0x03,
-    0x06,0x06,0x05,0x05,0x02,0x07,0x0E,0xF9,0xF6,0xF7,0xFD,0x09,0xF9,0xF9,0xFC,0x09,
-    0x01,0xF9,0xFB,0x05,0x08,0xF8,0xFB,0xFE,0x0A,0xFB,0xF8,0xFC,0x07,0x03,0xF8,0xFB,
-    0x02,0x09,0xF8,0xF9,0xFD,0x09,0xFD,0xF8,0xFB,0x06,0x05,0xF9,0xFC,0x00,0x09,0xFB,
-    0xFB,0xFB,0x06,0x01,0xFA,0xFA,0xFF,0x08,0xFC,0xFB,0xFA,0x07,0x03,0xFB,0xFA,0x01,
-    0x09,0xFC,0xF9,0xFB,0x0A,0x01,0xF8,0xFA,0x02,0x08,0xF9,0xFC,0xFB,0x08,0x00,0xFB,
-    0xFA,0xFE,0x0A,0xFC,0xFB,0xF9,0x09,0x03,0xF8,0xFA,0xFF,0x0A,0xFB,0xFB,0xFB,0x05,
-    0x04,0xFA,0xFC,0xFC,0x0B,0xFF,0xF9,0xF9,0x04,0x06,0xF9,0xFD,0xFB,0x08,0x02,0xFB,
-    0xF9,0xFE,0x0A,0xFC,0xFA,0xFA,0x06,0x04,0xFA,0xFD,0xFA,0x09,0x00,0xFA,0xFA,0x00,
-    0x0A,0xFA,0xFD,0xFA,0x04,0x06,0xFA,0xFB,0xFA,0x0A,0x00,0xF8,0xFC,0xFE,0x09,0xFD,
-    0xFB,0xF9,0x03,0x09,0xF7,0xFC,0xFB,0x05,0x05,0xFB,0xFB,0xFC,0x0A,0xFF,0xFA,0xFC,
-    0xFD,0x0A,0xFE,0xFA,0xFB,0x02,0x07,0xFB,0xFD,0xF9,0x05,0x07,0xF8,0xFD,0xFB,0x04,
-    0x05,0xFA,0xFA,0xFD,0x09,0xFF,0xFB,0xFC,0xFC,0x0B,0xFE,0xFA,0xFD,0xFD,0x09,0xFE,
-    0xFA,0xFB,0x00,0x07,0xFC,0xFC,0xF9,0x03,0x08,0xF9,0xFD,0xF9,0x03,0x08,0xF8,0xFD,
-    0xFB,0x02,0x08,0xFA,0xFC,0xFC,0x03,0x05,0xFB,0xFB,0xFC,0x05,0x04,0xFB,0xFB,0xFB,
-    0x06,0x03,0xFB,0xFC,0xFA,0x07,0x03,0xFA,0xFE,0xFA,0x06,0x04,0xF9,0xFE,0xF9,0x06,
-    0x05,0xF8,0x00,0xFA,0x05,0x06,0xF8,0xFF,0xFA,0x03,0x07,0xF8,0xFF,0xFA,0x02,0x08,
-    0xFA,0xFE,0xFB,0x00,0x08,0xFB,0xFD,0xFB,0xFE,0x07,0xFE,0xFD,0xFB,0xFD,0x07,0x01,
-    0xFB,0xFB,0xFC,0x05,0x03,0xFB,0xFD,0xFC,0x02,0x06,0xFB,0xFC,0xFC,0xFF,0x08,0xFC,
-    0xFB,0xFC,0xFD,0x08,0xFF,0xFB,0xFC,0xFD,0x06,0x01,0xFC,0xFD,0xFC,0x02,0x06,0xFC,
-    0xFC,0xFC,0x00,0x08,0xFC,0xFC,0xFE,0xFC,0x07,0x00,0xFB,0xFE,0xFC,0x03,0x05,0xFC,
-    0xFD,0xFC,0xFF,0x08,0xFD,0xFC,0xFD,0xFD,0x04,0x02,0xFC,0xFD,0xFC,0x01,0x06,0xFC,
-    0xFC,0xFD,0xFE,0x05,0x00,0xFB,0xFD,0xFC,0x02,0x05,0xFB,0xFE,0xFC,0xFF,0x06,0xFF,
-    0xFC,0xFD,0xFC,0x04,0x04,0xFB,0xFE,0xFC,0xFE,0x06,0xFF,0xFC,0xFD,0xFC,0x03,0x04,
-    0xFD,0xFD,0xFD,0xFE,0x05,0x01,0xFC,0xFE,0xFD,0x01,0x04,0xFE,0xFC,0xFE,0xFE,0x03,
-    0x02,0xFC,0xFE,0xFD,0xFE,0x05,0x00,0xFB,0xFE,0xFD,0x01,0x04,0xFD,0xFC,0xFE,0xFD,
-    0x03,0x03,0xFC,0xFD,0xFE,0xFF,0x04,0x01,0xFB,0xFD,0xFE,0x00,0x04,0xFF,0xFB,0xFE,
-    0xFE,0x01,0x03,0xFE,0xFB,0xFE,0xFE,0x01,0x03,0xFD,0xFC,0xFE,0xFF,0x03,0x02,0xFC,
-    0xFD,0xFE,0xFE,0x03,0x01,0xFC,0xFE,0xFE,0xFE,0x04,0x00,0xFB,0xFE,0xFE,0x00,0x04,
-    0xFE,0xFD,0xFE,0xFD,0x00,0x03,0xFE,0xFD,0xFD,0xFD,0x01,0x02,0xFE,0xFD,0xFE,0xFE,
-    0x01,0x02,0xFF,0xFD,0xFE,0xFE,0x01,0x03,0xFE,0xFD,0xFE,0xFE,0x01,0x02,0xFF,0xFD,
-    0xFE,0xFE,0x00,0x01,0xFF,0xFD,0xFE,0xFF,0x00,0x02,0x00,0xFD,0xFE,0xFF,0xFF,0x01,
-    0x01,0xFD,0xFE,0xFF,0xFE,0x01,0x00,0xFD,0xFE,0xFF,0xFF,0x00,0x02,0xFE,0xFD,0xFF,
-    0xFE,0x00,0x02,0xFE,0xFE,0xFF,0xFE,0xFF,0x01,0x00,0xFE,0xFE,0xFE,0xFF,0x01,0x01,
-    0xFF,0xFE,0xFE,0xFF,0x00,0x01,0xFF,0xFE,0xFE,0xFE,0xFF,0x01,0x00,0xFE,0xFE,0xFE,
-    0xFF,0x00,0x00,0xFF,0xFE,0xFE,0xFF,0x00,0x00,0xFF,0xFE,0xFF,0xFF,0xFF,0x01,0x01,
-    0xFF,0xFE,0xFE,0xFF,0xFF,0x01,0x00,0xFE,0xFE,0xFE,0xFE,0x00,0x00,0xFF,0xFE,0xFE,
-    0xFF,0xFF,0x00,0x00,0xFF,0xFE,0xFF,0xFF,0xFF,0x00,0x00,0xFE,0xFE,0xFF,0xFE,0xFF,
-    0x01,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0x01,0xFF,0xFE,0xFF,0xFF,0xFE,0xFF,0x00,0xFF,
-    0xFE,0xFF,0xFE,0xFE,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFE,0xFF,
-    0xFF,0xFF,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFE,0xFF,0xFF,0xFF,
-    0x00,0x00,0xFF,0xFE,0xFF,0xFE,0xFE,0xFF
-};
-static PROGMEM prog_uchar playerdeath_snd[5627] = {
-    0x00,0x02,0x09,0x10,0x15,0x16,0x0D,0x03,0xF9,0xEC,0xE4,0xE5,0xE9,0xEB,0xF7,0x04,
-    0x05,0x04,0x09,0x12,0x14,0x0D,0x00,0xF5,0xF5,0xF7,0x02,0x09,0x03,0x03,0x08,0x12,
-    0x1A,0x1C,0x1A,0x15,0x0A,0xF8,0xDF,0xC8,0xC0,0xC2,0xC5,0xCD,0xE3,0xF4,0xFE,0x03,
-    0x09,0x1B,0x25,0x26,0x20,0x1A,0x1E,0x30,0x3D,0x3D,0x3D,0x3B,0x2C,0x1D,0x0C,0xEF,
-    0xD6,0xD4,0xD4,0xD3,0xDA,0xD9,0xCA,0xC0,0xC0,0xC0,0xC4,0xC8,0xDA,0xFE,0x13,0x22,
-    0x30,0x38,0x39,0x2F,0x21,0x0A,0xE3,0xC4,0xBF,0xC2,0xBE,0xCD,0xEF,0x03,0x17,0x2A,
-    0x36,0x31,0x1A,0x0E,0x0E,0x0E,0x10,0x01,0xE1,0xCB,0xC5,0xCF,0xDE,0xF2,0x10,0x1F,
-    0x25,0x1E,0x10,0x0D,0x11,0x1A,0x1A,0x10,0x0B,0x1D,0x38,0x3E,0x3C,0x3D,0x3C,0x2E,
-    0x09,0xD9,0xC1,0xBE,0xCA,0xE7,0xFD,0x12,0x19,0x11,0x03,0xF5,0xE8,0xD6,0xD2,0xD5,
-    0xD3,0xE4,0x02,0x0C,0xFF,0xE9,0xDE,0xE7,0xF9,0x0D,0x17,0x26,0x39,0x3A,0x22,0xF4,
-    0xCB,0xBF,0xC3,0xD5,0xF9,0x1D,0x2A,0x13,0xEC,0xD7,0xD2,0xCE,0xC9,0xC6,0xCD,0xEC,
-    0x20,0x3D,0x3D,0x3D,0x3B,0x3D,0x36,0x22,0xF6,0xC6,0xC0,0xC1,0xC0,0xC0,0xCF,0xE6,
-    0xE3,0xE2,0xF2,0xFD,0xFD,0xFB,0x07,0x1F,0x36,0x3D,0x3C,0x3D,0x3B,0x3B,0x3C,0x3C,
-    0x3D,0x22,0xF8,0xD5,0xBF,0xC1,0xBF,0xC5,0xED,0xFF,0xEF,0xD8,0xC8,0xD6,0xE6,0xEF,
-    0xF2,0xF4,0xFA,0x09,0x2C,0x3D,0x3B,0x3C,0x3B,0x29,0x03,0xEC,0xF1,0x08,0x1D,0x23,
-    0x0D,0xDC,0xBE,0xC1,0xBF,0xC0,0xBE,0xC8,0xF7,0x27,0x3C,0x3A,0x3B,0x33,0x16,0xFF,
-    0xE1,0xC1,0xBF,0xBF,0xC0,0xBE,0xD4,0x0E,0x25,0x23,0x31,0x3B,0x3C,0x39,0x28,0x26,
-    0x37,0x3B,0x3A,0x3A,0x19,0xF5,0xF5,0x08,0x1E,0x2A,0x21,0x0E,0xFD,0xF3,0xED,0xEC,
-    0xF1,0xF6,0xF9,0xEA,0xCE,0xC6,0xDA,0xF1,0x01,0x09,0x15,0x30,0x3C,0x3A,0x3B,0x3A,
-    0x39,0x3E,0x24,0xF1,0xD1,0xCD,0xDF,0xF7,0x14,0x2F,0x2C,0x0B,0xDD,0xC2,0xBF,0xC1,
-    0xC8,0xDC,0xF9,0x08,0x0E,0x17,0x18,0x01,0xE0,0xCF,0xD1,0xD0,0xD6,0xDF,0xE0,0xE8,
-    0xEC,0xE9,0xE6,0xDB,0xD5,0xDC,0xE8,0x01,0x1F,0x32,0x30,0x1D,0x09,0x05,0x06,0xFD,
-    0xF0,0xEA,0xF5,0x17,0x36,0x3C,0x35,0x2C,0x22,0x11,0xFF,0xF6,0xEF,0xF1,0xFD,0x05,
-    0x0A,0x0F,0x0F,0x10,0x0F,0x0B,0x0C,0x13,0x19,0x1B,0x1B,0x19,0x13,0x0F,0x07,0xFC,
-    0xF4,0xF2,0xF0,0xF1,0xF4,0xF2,0xEB,0xE5,0xE3,0xE5,0xE7,0xE7,0xEF,0xFE,0x05,0x0A,
-    0x12,0x17,0x16,0x12,0x0C,0x02,0xF1,0xDD,0xD0,0xCF,0xD6,0xE4,0xF4,0xFD,0x07,0x10,
-    0x15,0x12,0x07,0x02,0x01,0x03,0x04,0xFB,0xEC,0xE3,0xE0,0xE4,0xEB,0xF3,0xFD,0x04,
-    0x07,0x04,0x06,0x10,0x13,0x13,0x0A,0xFB,0xF6,0x00,0x17,0x2C,0x39,0x3C,0x3B,0x3A,
-    0x20,0xF0,0xCA,0xC1,0xD6,0xEA,0xF2,0xFB,0xFE,0xF9,0xED,0xDE,0xD3,0xCA,0xC7,0xD0,
-    0xE0,0xFE,0x1F,0x26,0x16,0x00,0xF7,0xF9,0xFF,0x04,0x07,0x10,0x1C,0x1D,0x06,0xEC,
-    0xD5,0xC9,0xCF,0xDA,0xF1,0x0E,0x19,0x0B,0xF2,0xE5,0xEA,0xEE,0xE8,0xE4,0xE8,0xFF,
-    0x21,0x3A,0x3C,0x35,0x2B,0x25,0x1D,0x11,0xF5,0xCE,0xC2,0xC3,0xC3,0xC3,0xD3,0xE8,
-    0xE4,0xE4,0xF2,0xFB,0xFD,0xFB,0x06,0x1B,0x2F,0x3D,0x3B,0x3C,0x36,0x34,0x3B,0x39,
-    0x39,0x21,0xFD,0xDA,0xBF,0xC2,0xC0,0xC7,0xEC,0xFC,0xED,0xD5,0xC8,0xD5,0xE7,0xF1,
-    0xF2,0xF5,0xFA,0x08,0x2B,0x3C,0x3A,0x3B,0x3A,0x28,0x03,0xEC,0xF2,0x08,0x1D,0x23,
-    0x0E,0xDF,0xC2,0xC5,0xC3,0xC4,0xC2,0xCC,0xFB,0x28,0x3C,0x3A,0x3B,0x30,0x14,0xFE,
-    0xDE,0xC1,0xC0,0xC1,0xC2,0xBF,0xD6,0x10,0x27,0x24,0x32,0x3A,0x3B,0x37,0x25,0x23,
-    0x34,0x37,0x37,0x37,0x16,0xF2,0xF3,0x05,0x1A,0x27,0x1E,0x0C,0xFB,0xF0,0xEB,0xE9,
-    0xEC,0xF2,0xF4,0xE5,0xCC,0xC3,0xD9,0xF0,0xFE,0x08,0x14,0x2F,0x39,0x37,0x38,0x37,
-    0x37,0x3A,0x23,0xF0,0xCE,0xCA,0xDB,0xF3,0x13,0x31,0x2E,0x09,0xDA,0xBF,0xBF,0xC0,
-    0xC0,0xD6,0xF5,0x05,0x0C,0x15,0x17,0x00,0xDA,0xC8,0xCA,0xC9,0xD0,0xDC,0xDB,0xE2,
-    0xE8,0xE5,0xE1,0xD1,0xC9,0xD4,0xE3,0x04,0x2B,0x3C,0x38,0x23,0x0C,0x07,0x06,0xF6,
-    0xE4,0xDA,0xE7,0x16,0x38,0x39,0x39,0x38,0x39,0x2D,0x15,0x05,0xF5,0xF1,0xFB,0x04,
-    0x08,0x06,0x04,0x04,0x02,0x01,0x02,0xFF,0x00,0x01,0x01,0x02,0x02,0x01,0x02,0x03,
-    0x01,0x00,0x01,0x03,0x02,0x00,0xFF,0x00,0xFE,0xFC,0xFC,0xFA,0xFC,0xFE,0xFB,0xF8,
-    0xFA,0xF9,0xF6,0xF7,0xF6,0xF8,0xF7,0xF7,0xF7,0xF6,0xF8,0xF7,0xF8,0xF5,0xF5,0xF7,
-    0xF6,0xF6,0xF7,0xF6,0xF7,0xF6,0xF7,0xF8,0xF7,0xF7,0xF8,0xF7,0xF8,0xF4,0xEA,0xE6,
-    0xE5,0xE5,0xF7,0x14,0x19,0x05,0xEF,0xE0,0xD8,0xDA,0xE1,0xF8,0x22,0x3B,0x39,0x3A,
-    0x38,0x11,0xE5,0xE1,0xEE,0xED,0xE2,0xD6,0xCF,0xCE,0xCA,0xC7,0xC8,0xC7,0xC7,0xCE,
-    0xFD,0x35,0x41,0x3F,0x3F,0x37,0x33,0x29,0x0C,0xF3,0xE5,0xDC,0xDB,0xD1,0xC5,0xD9,
-    0xF7,0xFC,0xF3,0xE9,0xE2,0xE4,0xEC,0xF9,0x0B,0x1B,0x34,0x44,0x41,0x42,0x3F,0x42,
-    0x2F,0xFC,0xD3,0xC6,0xC7,0xC8,0xC5,0xD2,0xF1,0xFB,0xF7,0xF4,0xEF,0xEE,0xEE,0xEE,
-    0xF1,0xF3,0xF6,0xFA,0xFC,0xFC,0xFE,0xF1,0xD7,0xCB,0xCE,0xDA,0xEF,0x06,0x1A,0x2A,
-    0x36,0x3B,0x40,0x3F,0x3E,0x40,0x3B,0x43,0x11,0xCC,0xC6,0xC8,0xC8,0xCE,0xF2,0x07,
-    0xF6,0xE0,0xCD,0xCA,0xC9,0xCA,0xCE,0xD4,0xD7,0xCD,0xCC,0xE6,0x02,0x08,0xFE,0x01,
-    0x1C,0x38,0x3D,0x2A,0x15,0x05,0xFC,0xF8,0xF7,0xF9,0xF8,0xEB,0xDA,0xD8,0xF6,0x21,
-    0x31,0x26,0x19,0x1C,0x1A,0x0C,0x0B,0x13,0x14,0x17,0x29,0x34,0x30,0x31,0x2B,0x12,
-    0xF7,0xE1,0xD2,0xCD,0xD0,0xD3,0xD9,0xDE,0xDA,0xDE,0xE6,0xF6,0x0E,0x12,0x0D,0x08,
-    0x03,0x00,0xFF,0xFE,0xFC,0xFC,0xF4,0xF9,0x0A,0x11,0x0F,0x0C,0x0A,0x07,0x06,0x05,
-    0x05,0x07,0x07,0x07,0x08,0x07,0x07,0x05,0x05,0x06,0x07,0x08,0x08,0x07,0x06,0x02,
-    0xFF,0xFE,0x05,0x0C,0x0C,0x09,0x05,0x02,0x01,0xFC,0xFC,0x01,0x02,0x01,0x00,0xFF,
-    0x00,0x00,0xFA,0xEB,0xE7,0xFD,0x10,0x1B,0x20,0x17,0x0C,0x03,0xFD,0xF9,0xF7,0xF6,
-    0xF7,0xF9,0xF9,0xF9,0xFA,0xFC,0xFE,0xFE,0xFF,0x00,0x01,0x01,0x00,0x01,0x00,0x01,
-    0xFA,0xE9,0xD8,0xDC,0xF4,0x03,0x09,0x09,0x08,0x09,0x17,0x2D,0x3A,0x3C,0x3D,0x37,
-    0x24,0x0C,0xF3,0xEA,0xE5,0xDD,0xE7,0xFB,0x03,0x06,0x0C,0x02,0xED,0xDC,0xD2,0xCC,
-    0xC9,0xC8,0xCB,0xD6,0xE5,0x02,0x28,0x38,0x30,0x21,0x0F,0x02,0xFB,0xF8,0xF8,0xFB,
-    0xFD,0x01,0x01,0xF4,0xED,0xF5,0xF9,0xFB,0x11,0x32,0x3F,0x32,0x1F,0x19,0x16,0x10,
-    0x1A,0x2C,0x2C,0x2D,0x30,0x1F,0x06,0xF1,0xE1,0xDA,0xD9,0xDC,0xE0,0xE4,0xE9,0xEC,
-    0xEF,0xF2,0xF5,0xED,0xDC,0xD3,0xD2,0xDD,0xF9,0x19,0x27,0x29,0x36,0x41,0x41,0x41,
-    0x43,0x35,0x21,0x12,0xF6,0xDA,0xCD,0xCA,0xCB,0xCA,0xCC,0xE0,0xF7,0xFE,0xF6,0xED,
-    0xF4,0x10,0x28,0x27,0x20,0x19,0x17,0x22,0x2D,0x22,0x03,0xE0,0xD2,0xD4,0xE1,0xFF,
-    0x15,0x14,0x08,0xF9,0xE9,0xE1,0xDD,0xD6,0xD2,0xD6,0xE6,0x0E,0x37,0x42,0x40,0x3F,
-    0x40,0x3A,0x1F,0x06,0xF9,0xF4,0xFF,0x0F,0x0F,0x02,0xF7,0xF0,0xED,0xEC,0xF0,0xF1,
-    0xF4,0xF8,0xFA,0xFC,0xFE,0x00,0x01,0x03,0x02,0xF4,0xDF,0xD4,0xD5,0xE2,0xF5,0x08,
-    0x19,0x27,0x3A,0x40,0x3E,0x40,0x3F,0x41,0x24,0x03,0xFB,0xF8,0x06,0x15,0x10,0x00,
-    0xE5,0xCD,0xCB,0xCC,0xCB,0xCF,0xE4,0xFD,0x0D,0x0F,0x08,0x09,0x00,0xEF,0xE4,0xDB,
-    0xDC,0xDB,0xD6,0xE2,0xFD,0x0F,0x12,0x11,0x0F,0x0D,0x0C,0x0C,0x0C,0x0F,0x10,0x10,
-    0x11,0x12,0x15,0x15,0x15,0x15,0x15,0x13,0x12,0x11,0x0F,0x0F,0x0D,0x0C,0x0C,0x09,
-    0xFE,0xEA,0xDA,0xD6,0xDD,0xEB,0xFA,0x11,0x30,0x3E,0x3D,0x3D,0x3D,0x3B,0x23,0xFE,
-    0xE5,0xE5,0xFC,0x1A,0x30,0x33,0x1B,0xEF,0xCF,0xC8,0xCA,0xC9,0xCA,0xC7,0xCE,0xF6,
-    0x23,0x39,0x32,0x22,0x17,0x02,0xEF,0xE1,0xDB,0xDB,0xDF,0xE3,0xE2,0xE2,0xE2,0xE0,
-    0xE3,0xF5,0x16,0x2E,0x30,0x28,0x28,0x37,0x3C,0x39,0x35,0x1E,0x05,0xFA,0xFF,0x03,
-    0x05,0x0F,0x12,0x0A,0xFF,0xF5,0xF0,0xEF,0xF1,0xF4,0xF5,0xF7,0xFA,0xF8,0xFB,0x02,
-    0x03,0xFC,0xF5,0xFA,0x03,0x09,0x0A,0x08,0x06,0x05,0x0A,0x10,0x17,0x1E,0x1E,0x14,
-    0x0C,0x04,0xFA,0xF7,0xF7,0xF2,0xF4,0xFE,0x00,0x02,0x03,0x00,0xF8,0xF0,0xE8,0xDC,
-    0xD7,0xDD,0xE5,0xE4,0xE9,0xFA,0x0C,0x13,0x0E,0x0D,0x15,0x18,0x18,0x18,0x10,0x00,
-    0xEF,0xE9,0xE9,0xE7,0xEF,0xF3,0xEF,0xEE,0xF5,0x00,0x03,0xFB,0xF3,0xF5,0xFC,0x08,
-    0x23,0x34,0x35,0x32,0x2D,0x1C,0x00,0xEB,0xDD,0xCD,0xC7,0xC6,0xC9,0xD1,0xE1,0xF0,
-    0xF8,0xF6,0xEE,0xE7,0xE5,0xE3,0xE5,0xEE,0xFD,0x0E,0x1A,0x21,0x2C,0x37,0x32,0x2D,
-    0x2B,0x1D,0x12,0x0B,0xF8,0xE3,0xD8,0xCF,0xC6,0xC6,0xD3,0xE4,0xF4,0xF9,0xF5,0xEE,
-    0xF3,0x08,0x18,0x17,0x12,0x0D,0x0A,0x14,0x1B,0x15,0xFD,0xE0,0xD6,0xD5,0xDE,0xF3,
-    0x05,0x06,0x01,0xFA,0xEC,0xE5,0xE0,0xD8,0xD4,0xD9,0xE8,0x08,0x28,0x36,0x39,0x31,
-    0x2D,0x29,0x11,0xFD,0xF2,0xED,0xF9,0x07,0x06,0xFC,0xF2,0xEB,0xE9,0xEA,0xEA,0xED,
-    0xF0,0xF2,0xF5,0xF7,0xFA,0xFC,0xFC,0xFF,0xFC,0xEE,0xDB,0xD1,0xD2,0xDD,0xEF,0x00,
-    0x11,0x1F,0x31,0x37,0x36,0x37,0x36,0x37,0x1B,0xFB,0xF2,0xEF,0xFE,0x0D,0x08,0xF9,
-    0xDE,0xC6,0xC4,0xC6,0xC4,0xCA,0xDF,0xF6,0x08,0x07,0x02,0x02,0xF8,0xE8,0xDD,0xD6,
-    0xD6,0xD4,0xCF,0xDB,0xF6,0x05,0x08,0x08,0x06,0x03,0x02,0x03,0x05,0x08,0x09,0x09,
-    0x0A,0x0C,0x0B,0x0D,0x0E,0x0D,0x0E,0x0C,0x0B,0x0A,0x08,0x08,0x05,0x05,0x04,0x02,
-    0xF8,0xE4,0xD6,0xD1,0xD7,0xE6,0xF7,0x0E,0x2C,0x39,0x38,0x38,0x39,0x37,0x21,0xFB,
-    0xE1,0xDF,0xF7,0x16,0x2B,0x2F,0x15,0xE6,0xC7,0xC2,0xC4,0xC3,0xC4,0xC2,0xC6,0xEF,
-    0x23,0x37,0x32,0x22,0x14,0x00,0xEB,0xDA,0xD4,0xD2,0xD7,0xDC,0xD9,0xDA,0xD6,0xD6,
-    0xDB,0xEE,0x18,0x35,0x38,0x2E,0x2A,0x34,0x37,0x36,0x37,0x26,0x07,0xFA,0xFF,0x02,
-    0x05,0x12,0x18,0x0C,0xFC,0xEF,0xE7,0xE7,0xE7,0xEB,0xEE,0xF2,0xF6,0xF4,0xF7,0xFE,
-    0x02,0x01,0x00,0x04,0x09,0x0B,0x0B,0x07,0x05,0x03,0x03,0x02,0x01,0x02,0x03,0x02,
-    0x01,0x03,0x02,0x02,0x02,0x01,0x02,0x01,0x01,0x00,0xFC,0xFD,0xFD,0xFD,0xF4,0xE4,
-    0xE8,0xF6,0xF6,0xEB,0xE9,0xF4,0xF9,0xF7,0xF4,0xFF,0x1E,0x33,0x36,0x37,0x30,0x11,
-    0xED,0xDE,0xDC,0xE4,0xFA,0xFB,0xED,0xE7,0xDF,0xD1,0xC6,0xC5,0xC8,0xD0,0xE1,0x07,
-    0x2F,0x37,0x35,0x35,0x31,0x1F,0x00,0xED,0xDB,0xC5,0xC3,0xC4,0xC6,0xC3,0xD4,0xFD,
-    0x0C,0x01,0xEB,0xE8,0xFB,0x08,0x0F,0x11,0x12,0x0E,0x11,0x21,0x2A,0x1E,0x04,0xFD,
-    0x02,0x00,0x07,0x10,0x0F,0x0A,0x04,0x00,0xFE,0xFF,0xFE,0xFF,0x02,0x03,0x05,0x07,
-    0x07,0x0B,0x0B,0x0A,0x0A,0x07,0x07,0x07,0x07,0x06,0x05,0x04,0x01,0xFD,0xF5,0xEA,
-    0xEC,0xF4,0x06,0x1A,0x1F,0x1A,0x10,0x08,0xFF,0x02,0x0F,0x12,0x08,0xF9,0xEE,0xE6,
-    0xE3,0xE2,0xE1,0xE1,0xE1,0xEA,0xF1,0xF3,0xF4,0xF4,0xF2,0xF3,0xF5,0xF5,0xF7,0xF7,
-    0xF8,0xF8,0xF9,0xFA,0xFA,0xFB,0xFB,0xFB,0xFB,0xFC,0xFD,0xFC,0xFC,0xFD,0x01,0xFE,
-    0xF6,0xFB,0x01,0xF9,0xE8,0xDB,0xE1,0xFE,0x16,0x18,0x1A,0x24,0x26,0x16,0xFD,0xEA,
-    0xDF,0xE0,0xE8,0x04,0x2C,0x3D,0x3A,0x39,0x30,0x0C,0xE6,0xD2,0xCA,0xC8,0xD6,0xEC,
-    0xF8,0x05,0x0A,0x02,0xF6,0xEB,0xEE,0xF9,0xFE,0xF6,0xEB,0xE4,0xDF,0xDE,0xDC,0xD7,
-    0xD2,0xCF,0xD3,0xDE,0xF0,0x11,0x2F,0x3A,0x3A,0x39,0x3B,0x3B,0x3A,0x3B,0x38,0x38,
-    0x34,0x16,0xEF,0xD0,0xC5,0xCC,0xE7,0x08,0x19,0x15,0xFF,0xED,0xDD,0xCF,0xC9,0xC8,
-    0xC8,0xC9,0xC7,0xCB,0xDD,0xED,0xF4,0xFE,0x10,0x26,0x37,0x3B,0x32,0x1F,0x0F,0x04,
-    0x05,0x1F,0x38,0x3A,0x3A,0x36,0x16,0xED,0xCD,0xC7,0xC9,0xCB,0xEA,0x17,0x34,0x3B,
-    0x2D,0x0C,0xF3,0xE8,0xD1,0xC6,0xC8,0xC7,0xC9,0xC6,0xDE,0x13,0x27,0x1F,0x1C,0x25,
-    0x32,0x36,0x23,0x11,0x08,0xF0,0xDC,0xD8,0xD6,0xD3,0xD4,0xE5,0x0F,0x36,0x39,0x36,
-    0x35,0x31,0x2D,0x16,0xFE,0xEC,0xDF,0xE4,0xFC,0x28,0x3B,0x38,0x37,0x38,0x2E,0x0C,
-    0xE4,0xC9,0xC4,0xC9,0xDD,0x01,0x14,0x11,0x0D,0x0E,0x0F,0x05,0xE6,0xCA,0xC9,0xCF,
-    0xD5,0xE6,0xFC,0x03,0xF2,0xE5,0xEF,0xF7,0xEE,0xE4,0xEB,0x0A,0x2D,0x3A,0x39,0x2F,
-    0x18,0x0B,0x0C,0x03,0xF3,0xF4,0x06,0x1C,0x2C,0x29,0x12,0x02,0xF8,0xF2,0xED,0xEA,
-    0xEA,0xEB,0xEF,0xF2,0xF2,0xE9,0xDA,0xE4,0xF3,0xF2,0xFA,0x10,0x28,0x2D,0x19,0x0D,
-    0x11,0x0D,0xFC,0xE8,0xDB,0xDE,0xF2,0x05,0x12,0x29,0x36,0x37,0x34,0x1B,0xF3,0xDF,
-    0xE0,0xEB,0x00,0x1A,0x20,0x14,0x09,0xFB,0xDC,0xC7,0xC5,0xC8,0xE2,0x03,0x11,0x09,
-    0xF4,0xDE,0xD0,0xD6,0xD6,0xCB,0xC8,0xCB,0xDC,0xFC,0x19,0x28,0x2A,0x22,0x23,0x2D,
-    0x36,0x37,0x31,0x1E,0x04,0xEE,0xD3,0xC6,0xC9,0xC8,0xCC,0xE1,0x0A,0x2E,0x37,0x34,
-    0x2E,0x2E,0x35,0x2D,0x10,0xF1,0xDA,0xD0,0xD8,0xF3,0x1F,0x36,0x36,0x31,0x20,0x0B,
-    0xF4,0xE3,0xDE,0xF2,0x15,0x2F,0x38,0x31,0x11,0xEA,0xDA,0xDD,0xEA,0xF3,0xF4,0xE4,
-    0xCA,0xC5,0xC8,0xC7,0xC8,0xC7,0xD3,0xE3,0xF1,0x0F,0x28,0x32,0x30,0x2C,0x35,0x37,
-    0x36,0x36,0x35,0x36,0x1B,0xEE,0xD1,0xC7,0xDE,0xFA,0x07,0x16,0x18,0x04,0xE8,0xCE,
-    0xC8,0xD2,0xDC,0xEA,0x05,0x15,0x19,0x20,0x26,0x25,0x1D,0x10,0xFF,0xDE,0xCA,0xC8,
-    0xC9,0xC8,0xCD,0xF3,0x0C,0x04,0xFC,0x06,0x1B,0x20,0x16,0x0F,0x1E,0x32,0x36,0x34,
-    0x37,0x2F,0x1D,0x12,0x01,0xEF,0xE1,0xD9,0xE5,0xF9,0xFE,0xFD,0x01,0x0A,0x10,0x06,
-    0xF7,0xE5,0xE2,0xEE,0xED,0xE2,0xD7,0xD7,0xEC,0x00,0x0D,0x21,0x2F,0x34,0x31,0x26,
-    0x12,0x04,0x01,0xFE,0x0C,0x29,0x35,0x33,0x35,0x2C,0x01,0xDE,0xD2,0xC6,0xC9,0xDB,
-    0xE9,0xEF,0xF9,0xF2,0xD8,0xC8,0xC7,0xD3,0xDF,0xED,0xF9,0xF6,0xF6,0xF6,0xED,0xE7,
-    0xD8,0xCC,0xD2,0xD5,0xDF,0xF9,0x19,0x2A,0x2A,0x29,0x29,0x20,0x04,0xEF,0xE7,0xE8,
-    0xFE,0x16,0x29,0x2F,0x20,0x0E,0x06,0x03,0xF8,0xE1,0xDC,0xE9,0xF2,0xFE,0xFE,0xFA,
-    0x00,0x09,0x16,0x1B,0x15,0x0C,0x0F,0x1E,0x2D,0x37,0x35,0x34,0x34,0x34,0x30,0x19,
-    0x07,0xF7,0xE5,0xE2,0xDB,0xCB,0xC6,0xD1,0xDB,0xD6,0xCC,0xC7,0xD5,0xEA,0xF7,0x07,
-    0x14,0x23,0x32,0x2F,0x29,0x23,0x12,0xFF,0xEA,0xD2,0xC9,0xD0,0xD7,0xE2,0xFA,0x18,
-    0x2E,0x2E,0x1B,0x03,0xEE,0xEA,0xF2,0xFB,0x00,0xF2,0xD4,0xC6,0xC7,0xC7,0xC9,0xC9,
-    0xD6,0xF5,0x11,0x24,0x33,0x35,0x35,0x32,0x20,0x12,0x08,0x08,0x12,0x14,0x0B,0xFD,
-    0xED,0xE6,0xDB,0xCD,0xC9,0xD3,0xF4,0x10,0x1F,0x22,0x15,0x0D,0x0A,0x0A,0x17,0x18,
-    0x05,0xED,0xDB,0xD6,0xE7,0x05,0x14,0x12,0x13,0x18,0x14,0x0C,0xFC,0xE9,0xE4,0xDF,
-    0xDD,0xEC,0xFD,0x04,0x02,0xFE,0xF8,0xF4,0xFB,0xFC,0xEE,0xDB,0xCC,0xC8,0xCA,0xE0,
-    0x09,0x21,0x22,0x23,0x2C,0x28,0x14,0x0B,0x11,0x1A,0x21,0x1A,0x00,0xDA,0xC5,0xC7,
-    0xC7,0xCB,0xEA,0x0B,0x14,0x1D,0x21,0x16,0x09,0xFE,0xFF,0xFF,0xF2,0xEA,0xE7,0xE1,
-    0xDC,0xE8,0x04,0x1A,0x24,0x23,0x1E,0x14,0x03,0xF0,0xE8,0xF5,0x13,0x2D,0x2F,0x27,
-    0x13,0xF9,0xF0,0xE8,0xDE,0xDD,0xF1,0x11,0x29,0x36,0x2C,0x13,0xFF,0xF6,0xE9,0xD1,
-    0xC6,0xC9,0xC7,0xCF,0xF7,0x1B,0x22,0x1C,0x18,0x18,0x16,0x12,0x0B,0x02,0xF6,0xDB,
-    0xC8,0xC7,0xC8,0xC9,0xCE,0xE4,0xFA,0x1B,0x34,0x36,0x34,0x2F,0x32,0x37,0x32,0x27,
-    0x1F,0x12,0x08,0x09,0x03,0x01,0x11,0x22,0x23,0x16,0x03,0xE8,0xD8,0xD3,0xCD,0xD3,
-    0xDB,0xDE,0xE8,0xEE,0xF1,0xF6,0xFC,0x02,0x05,0x0C,0x18,0x1B,0x0B,0xF0,0xD5,0xCB,
-    0xD9,0xF6,0x08,0x09,0x06,0x01,0xFF,0xF3,0xE4,0xDC,0xDD,0xEC,0xFE,0x15,0x28,0x28,
-    0x16,0x07,0x06,0x00,0xEE,0xE7,0xF0,0xF6,0xFD,0x05,0x04,0x01,0x05,0x0C,0x07,0xF4,
-    0xDA,0xCA,0xD3,0xEA,0x02,0x13,0x17,0x14,0x0B,0x0C,0x18,0x1C,0x10,0x01,0xF9,0xF2,
-    0xED,0xF0,0x02,0x13,0x11,0x03,0xF7,0xF6,0xF7,0xF3,0xF1,0xF8,0x0B,0x21,0x27,0x22,
-    0x20,0x1E,0x1F,0x19,0x0B,0x00,0x00,0x07,0x0D,0x20,0x2B,0x2A,0x24,0x1C,0x10,0x01,
-    0xFB,0xF9,0xF5,0xF4,0xE5,0xCC,0xC7,0xC8,0xC7,0xC7,0xC8,0xC7,0xCD,0xE7,0xFF,0x14,
-    0x21,0x26,0x2D,0x2C,0x2A,0x2C,0x27,0x1D,0x0A,0xEC,0xD1,0xCA,0xCB,0xCC,0xDD,0xFC,
-    0x1A,0x29,0x26,0x15,0x00,0xF9,0x01,0x06,0x03,0xF9,0xE6,0xD9,0xD4,0xD7,0xD9,0xDC,
-    0xEA,0x01,0x19,0x25,0x2F,0x2E,0x23,0x19,0x08,0xF6,0xEA,0xEB,0xF5,0xFA,0xFE,0x04,
-    0x05,0x04,0xF9,0xEC,0xEC,0xF7,0x0C,0x18,0x18,0x12,0x05,0x03,0x08,0x13,0x21,0x1E,
-    0x0C,0xF5,0xE1,0xD6,0xE0,0xFA,0x0B,0x10,0x18,0x20,0x1A,0x11,0x04,0xF3,0xEC,0xE3,
-    0xDC,0xE7,0xF3,0xF9,0xFC,0x00,0x01,0xFD,0x02,0x03,0xF4,0xE3,0xD5,0xCF,0xD5,0xEB,
-    0x0C,0x1E,0x1D,0x1C,0x25,0x22,0x12,0x0C,0x13,0x1F,0x25,0x1F,0x08,0xE2,0xCC,0xC9,
-    0xCA,0xD5,0xF1,0x0B,0x13,0x1B,0x1C,0x12,0x06,0xFD,0xFF,0x00,0xF4,0xEB,0xE9,0xE4,
-    0xDE,0xE9,0x04,0x19,0x24,0x22,0x1D,0x14,0x02,0xEF,0xE8,0xF5,0x12,0x2C,0x2E,0x26,
-    0x12,0xF9,0xEF,0xE8,0xDE,0xDE,0xF1,0x10,0x28,0x35,0x2B,0x11,0xFF,0xF7,0xE9,0xD3,
-    0xC9,0xCC,0xCB,0xD4,0xFB,0x1D,0x24,0x1E,0x19,0x1A,0x18,0x15,0x0E,0x04,0xF8,0xDD,
-    0xCB,0xC9,0xCA,0xCA,0xD0,0xE5,0xFA,0x1C,0x34,0x37,0x34,0x30,0x33,0x36,0x31,0x26,
-    0x1E,0x11,0x07,0x08,0x01,0x01,0x11,0x24,0x26,0x17,0x02,0xE8,0xD9,0xD4,0xCC,0xD2,
-    0xDA,0xDC,0xE7,0xEE,0xEF,0xF5,0xFC,0x03,0x06,0x0D,0x18,0x1A,0x07,0xE6,0xCF,0xCA,
-    0xD3,0xF4,0x09,0x09,0x07,0xFB,0xF0,0xE2,0xD2,0xCA,0xD5,0xEB,0x04,0x23,0x35,0x33,
-    0x1E,0x0C,0x0A,0x03,0xF3,0xF0,0xFB,0xFF,0x06,0x0C,0x07,0x06,0x0B,0x13,0x10,0xFC,
-    0xDC,0xCA,0xD7,0xF3,0x10,0x1D,0x17,0x0A,0xFF,0x02,0x0F,0x1A,0x15,0x07,0x03,0xF9,
-    0xE6,0xE1,0xEF,0x04,0x0A,0xFD,0xEF,0xEF,0xF5,0xF8,0xF9,0xFD,0x16,0x32,0x34,0x33,
-    0x30,0x28,0x22,0x15,0x02,0xF4,0xF6,0xF8,0xF7,0x06,0x11,0x12,0x0B,0xFE,0xF3,0xEA,
-    0xEE,0xF8,0xFE,0xFF,0xEA,0xCC,0xC7,0xC8,0xC8,0xCA,0xCB,0xCB,0xCB,0xE6,0x08,0x20,
-    0x2C,0x28,0x28,0x25,0x2A,0x34,0x32,0x33,0x27,0x02,0xDA,0xC7,0xC9,0xCB,0xCA,0xD8,
-    0xFB,0x1F,0x30,0x28,0x11,0x08,0x12,0x15,0x09,0x03,0xFF,0xF5,0xF9,0x08,0x0D,0x04,
-    0x03,0x11,0x1F,0x24,0x1F,0x07,0xF2,0xE6,0xD1,0xC6,0xC8,0xC8,0xC9,0xC8,0xDF,0x11,
-    0x30,0x34,0x32,0x2E,0x32,0x33,0x33,0x28,0x07,0xE9,0xDC,0xE5,0x03,0x25,0x34,0x2F,
-    0x1E,0x03,0xE2,0xCC,0xC8,0xCD,0xDF,0xFB,0x18,0x2A,0x24,0x18,0x14,0x10,0x04,0xE7,
-    0xCD,0xC9,0xC9,0xC8,0xD5,0xF5,0x14,0x1B,0x11,0x0B,0x01,0xF4,0xEB,0xE8,0xF2,0x03,
-    0x03,0xF1,0xDD,0xD4,0xDF,0xF0,0xFB,0x05,0x1A,0x32,0x32,0x33,0x2E,0x1C,0x13,0x0C,
-    0x13,0x21,0x22,0x15,0x0C,0xFF,0xE6,0xD5,0xD7,0xE8,0xF7,0xF6,0xE0,0xCC,0xC9,0xCA,
-    0xC9,0xCC,0xD2,0xDE,0xE9,0xF8,0x18,0x33,0x35,0x33,0x28,0x1E,0x19,0x1C,0x23,0x16,
-    0x01,0xF5,0xE7,0xDF,0xE7,0xF5,0xF2,0xE3,0xD5,0xCB,0xD4,0xE8,0xFC,0x0C,0x0C,0x03,
-    0x03,0x13,0x29,0x33,0x28,0x10,0xF6,0xD9,0xCB,0xCD,0xCD,0xD5,0xE8,0xF3,0xF9,0x0A,
-    0x23,0x33,0x28,0x13,0x05,0xFC,0x01,0x0F,0x14,0x06,0xED,0xD9,0xD8,0xEF,0x0F,0x21,
-    0x18,0x0C,0x05,0xF9,0xEF,0xF4,0x0B,0x19,0x15,0x14,0x0D,0x05,0x06,0x0B,0x10,0x12,
-    0x13,0x0B,0xFB,0xF2,0xF5,0xFA,0xF6,0xF6,0x02,0x09,0x0B,0x1A,0x2D,0x33,0x2D,0x10,
-    0xF0,0xDD,0xCB,0xC9,0xCD,0xCF,0xDB,0xF4,0x0F,0x21,0x26,0x22,0x13,0x06,0xF5,0xD6,
-    0xC9,0xCC,0xCC,0xCC,0xCB,0xCD,0xDC,0xF1,0xFB,0x09,0x1F,0x2C,0x2F,0x29,0x2B,0x34,
-    0x33,0x33,0x33,0x31,0x17,0xFD,0xFB,0xF9,0xF7,0xFC,0x02,0xFB,0xEB,0xD8,0xC9,0xCA,
-    0xC9,0xD4,0xEB,0xF1,0xEC,0xF1,0x01,0x13,0x18,0x0B,0x01,0xF9,0xEB,0xE9,0xEA,0xE6,
-    0xEB,0xFA,0x07,0x0C,0x06,0xF7,0xF1,0xF6,0xFE,0x03,0x05,0x05,0xF7,0xE7,0xE3,0xE0,
-    0xE1,0xE2,0xEB,0xFD,0x03,0x00,0xF9,0x04,0x1B,0x25,0x1F,0x18,0x1D,0x1F,0x1A,0x18,
-    0x29,0x34,0x33,0x31,0x1B,0xFB,0xE6,0xDE,0xDD,0xEC,0x0B,0x2A,0x34,0x2A,0x16,0xF7,
-    0xE4,0xDC,0xDC,0xE9,0xF5,0xF0,0xE6,0xD5,0xC9,0xCA,0xCD,0xCC,0xCF,0xE5,0xFA,0x04,
-    0x03,0xFA,0xED,0xEC,0xF8,0x06,0x12,0x18,0x1A,0x18,0x12,0x02,0xF1,0xE4,0xDD,0xE2,
-    0xF3,0x17,0x32,0x35,0x34,0x22,0x06,0xF5,0xEF,0xF6,0xF4,0xE9,0xE8,0xE7,0xE6,0xF3,
-    0x0B,0x1D,0x18,0x08,0x00,0xF6,0xEB,0xEA,0xFE,0x15,0x20,0x2D,0x35,0x2F,0x21,0x17,
-    0x13,0x14,0x11,0xFF,0xEC,0xDA,0xCB,0xCD,0xCC,0xD0,0xF3,0x0F,0x14,0x0F,0x0B,0x14,
-    0x1E,0x1D,0x17,0x14,0x12,0x16,0x2A,0x32,0x31,0x31,0x32,0x23,0xFE,0xDB,0xC9,0xD1,
-    0xE6,0xFC,0x08,0xFF,0xE2,0xCC,0xCB,0xCA,0xCC,0xCE,0xD5,0xE8,0xF3,0xFB,0x06,0x11,
-    0x13,0x05,0xF7,0xF0,0xE1,0xD1,0xD3,0xE6,0xFD,0x10,0x19,0x19,0x0F,0xF9,0xED,0xEE,
-    0xF5,0xFD,0x02,0x02,0xF8,0xE2,0xD3,0xDB,0xF0,0xFE,0xF9,0xFA,0x0A,0x12,0x0D,0x06,
-    0x0C,0x20,0x2C,0x25,0x17,0x0D,0x07,0x07,0x0A,0x12,0x2B,0x36,0x32,0x32,0x2C,0x1B,
-    0x05,0xF0,0xE1,0xE3,0xF5,0x0F,0x23,0x28,0x18,0xF4,0xD6,0xCC,0xCD,0xCF,0xCE,0xCF,
-    0xCE,0xCF,0xCD,0xD6,0xE5,0xE9,0xF2,0xFB,0x07,0x19,0x26,0x29,0x17,0xFB,0xEA,0xDE,
-    0xD9,0xE1,0xE8,0xEA,0xF2,0x04,0x0D,0x17,0x22,0x28,0x2E,0x25,0x16,0x13,0x20,0x30,
-    0x34,0x2F,0x17,0xF4,0xDE,0xDD,0xF4,0x0D,0x13,0x13,0x15,0x09,0xF5,0xF1,0xFA,0x03,
-    0x01,0xED,0xDD,0xD5,0xDB,0xF0,0x01,0x0A,0x13,0x27,0x34,0x32,0x33,0x32,0x33,0x29,
-    0x07,0xE5,0xD1,0xCE,0xD2,0xE2,0xFA,0x15,0x2C,0x34,0x26,0x08,0xF7,0xF7,0xFB,0xF7,
-    0xF0,0xE4,0xD5,0xCF,0xDD,0xF9,0x0E,0x0E,0x05,0x05,0x08,0x06,0x03,0xFF,0x05,0x11,
-    0x17,0x1A,0x0E,0xF3,0xE3,0xE3,0xEF,0xFE,0x07,0x0A,0x07,0xF7,0xE7,0xDA,0xD7,0xE1,
-    0xE7,0xEC,0xEC,0xE6,0xE3,0xE8,0xFA,0x09,0x10,0x13,0x18,0x2A,0x33,0x32,0x32,0x2C,
-    0x22,0x0D,0xFA,0xF1,0xF3,0xF9,0xFD,0x00,0x02,0x01,0xFC,0xEF,0xEC,0xF6,0x03,0x08,
-    0xFF,0xE6,0xD2,0xD0,0xD2,0xDE,0xED,0xF7,0xF7,0xF0,0xF7,0x00,0xFE,0xF2,0xED,0xF8,
-    0x0A,0x19,0x23,0x1C,0x09,0xFF,0xF5,0xEB,0xEC,0xEB,0xE8,0xE7,0xE0,0xDC,0xE6,0xFB,
-    0x0C,0x0C,0x09,0x0E,0x13,0x11,0x0F,0x1B,0x2B,0x31,0x30,0x24,0x13,0x07,0x0A,0x13,
-    0x16,0x19,0x19,0x12,0x0D,0x05,0xF7,0xE4,0xDC,0xE0,0xE3,0xEC,0xFD,0x09,0x07,0xFE,
-    0xF5,0xF8,0x01,0x0A,0x0E,0x0A,0x02,0x03,0x06,0x04,0x0B,0x19,0x21,0x1B,0x10,0xFE,
-    0xEA,0xDA,0xD2,0xD3,0xDD,0xF7,0x13,0x23,0x21,0x16,0x0B,0x05,0x00,0xF2,0xE2,0xD6,
-    0xD1,0xDC,0xF7,0x11,0x24,0x23,0x1A,0x12,0x05,0xFA,0xF9,0xFC,0xFF,0xFE,0xF3,0xDD,
-    0xD4,0xD5,0xD7,0xE3,0xEF,0xF9,0x0E,0x23,0x2C,0x2E,0x2A,0x29,0x27,0x1C,0x18,0x11,
-    0x01,0xF6,0xF8,0xFC,0xFD,0x04,0x0B,0x0F,0x10,0x0B,0xFC,0xEF,0xE8,0xE0,0xDB,0xD7,
-    0xD3,0xD3,0xD6,0xE8,0x02,0x0F,0x0F,0x0C,0x14,0x1E,0x20,0x1E,0x17,0x10,0x06,0xF8,
-    0xF5,0xF8,0xFE,0x03,0x02,0xFC,0xFB,0xFF,0xFF,0xFB,0xFF,0x0D,0x1A,0x1A,0x10,0x02,
-    0xF2,0xEB,0xF1,0xFA,0x02,0x00,0xF4,0xE9,0xDB,0xD5,0xD6,0xD5,0xD9,0xE7,0xF8,0x04,
-    0x0B,0x0A,0x08,0x09,0x0A,0x0D,0x0F,0x15,0x1B,0x18,0x10,0x05,0xFC,0xF7,0xEF,0xEB,
-    0xE7,0xEC,0xF6,0xFF,0x0A,0x12,0x1C,0x22,0x1D,0x1A,0x19,0x12,0x03,0xF2,0xE5,0xDF,
-    0xE0,0xEC,0xF9,0xFF,0x05,0x04,0x03,0x04,0x01,0x01,0x00,0x04,0x12,0x20,0x29,0x27,
-    0x18,0x04,0xF7,0xEB,0xE7,0xEA,0xED,0xF3,0xFB,0xFD,0xF5,0xF1,0xF6,0xFE,0xFE,0xF8,
-    0xF5,0xF3,0xF3,0xF3,0xFC,0x09,0x0B,0x05,0xFF,0x02,0x06,0x09,0x08,0x08,0x0F,0x14,
-    0x13,0x10,0x0E,0x05,0xF9,0xF3,0xEF,0xF3,0xFB,0x02,0x06,0x04,0x01,0xF9,0xF3,0xF5,
-    0xF8,0xFA,0xF4,0xEB,0xE6,0xE8,0xF6,0x05,0x0E,0x0E,0x0E,0x13,0x14,0x13,0x0E,0x06,
-    0x00,0xF4,0xE8,0xE5,0xEA,0xF3,0xF9,0xFC,0xFF,0x04,0x07,0x00,0xFD,0x01,0x04,0x04,
-    0xF8,0xE6,0xD9,0xD6,0xDB,0xE8,0xF7,0x03,0x08,0x06,0x07,0x07,0x01,0xFB,0xF6,0xFD,
-    0x0A,0x14,0x17,0x0F,0x03,0xFB,0xF7,0xF4,0xF5,0xF5,0xF4,0xF2,0xEB,0xE5,0xE8,0xF5,
-    0x02,0x05,0x05,0x09,0x0C,0x0C,0x0D,0x14,0x1C,0x21,0x21,0x18,0x0B,0x01,0x02,0x06,
-    0x07,0x0B,0x0B,0x08,0x07,0x04,0xFC,0xF0,0xE8,0xE7,0xE8,0xED,0xF8,0x00,0xFD,0xF6,
-    0xF2,0xF6,0xFF,0x07,0x0A,0x06,0x02,0x02,0x03,0x01,0x05,0x10,0x14,0x0F,0x06,0xFA,
-    0xEB,0xE0,0xDC,0xDE,0xE8,0xFB,0x11,0x1D,0x1C,0x14,0x0B,0x07,0x02,0xF7,0xE9,0xDF,
-    0xDD,0xE5,0xF9,0x0F,0x1D,0x1C,0x14,0x0D,0x02,0xF9,0xF9,0xFB,0xFD,0xFD,0xF4,0xE3,
-    0xDA,0xDB,0xDD,0xE7,0xF2,0xFB,0x0C,0x1D,0x23,0x25,0x23,0x21,0x1E,0x17,0x14,0x0E,
-    0x01,0xF8,0xFA,0xFD,0xFF,0x04,0x0A,0x0E,0x0E,0x09,0xFD,0xF2,0xEC,0xE6,0xE2,0xDE,
-    0xDA,0xD9,0xDD,0xEB,0x01,0x0D,0x0C,0x0A,0x10,0x18,0x1A,0x18,0x12,0x0D,0x03,0xF8,
-    0xF5,0xF8,0xFE,0x03,0x02,0xFC,0xFC,0xFE,0xFE,0xFB,0xFE,0x0A,0x14,0x14,0x0D,0x01,
-    0xF2,0xEE,0xF3,0xFA,0x00,0xFF,0xF5,0xEA,0xDE,0xDB,0xDC,0xDB,0xDD,0xEA,0xF9,0x04,
-    0x0A,0x08,0x07,0x08,0x09,0x0C,0x0D,0x11,0x17,0x14,0x0C,0x02,0xFA,0xF5,0xED,0xE6,
-    0xE3,0xE7,0xF2,0xFF,0x0B,0x14,0x19,0x1D,0x19,0x15,0x15,0x10,0x04,0xF3,0xE6,0xDE,
-    0xE0,0xEF,0xFF,0x07,0x0C,0x09,0x04,0x02,0xFE,0xFA,0xF6,0xFB,0x07,0x15,0x20,0x22,
-    0x18,0x0A,0x01,0xF7,0xF0,0xEE,0xEB,0xEC,0xF0,0xEE,0xE9,0xEC,0xF6,0x00,0xFF,0xFA,
-    0xF9,0xFA,0xFC,0x00,0x07,0x0D,0x0A,0x01,0xFD,0xFE,0x02,0x08,0x08,0x09,0x0F,0x11,
-    0x0D,0x09,0x0B,0x09,0x01,0xF8,0xF0,0xEE,0xF4,0xFD,0x05,0x09,0x0C,0x09,0x02,0x02,
-    0x04,0x01,0xF8,0xEF,0xE9,0xEA,0xF4,0x02,0x0B,0x09,0x08,0x04,0xFC,0xF9,0xF4,0xF0,
-    0xEB,0xE4,0xDF,0xDF,0xE8,0xF2,0xF8,0xFC,0x01,0x09,0x12,0x11,0x0E,0x0D,0x0B,0x03,
-    0xF6,0xEA,0xE3,0xE2,0xE9,0xF5,0x02,0x10,0x19,0x1C,0x19,0x0F,0x07,0x02,0x00,0x04,
-    0x0B,0x0D,0x08,0x01,0xF7,0xF2,0xF6,0xFD,0x01,0x01,0x00,0xFD,0xF5,0xEC,0xE7,0xEC,
-    0xF3,0xF9,0x01,0x05,0x07,0x0A,0x0C,0x0E,0x0E,0x10,0x11,0x0B,0x03,0xFE,0xF9,0xF3,
-    0xF2,0xF6,0xF8,0xFC,0x03,0x0C,0x12,0x11,0x05,0xFB,0xF7,0xF6,0xF4,0xF1,0xEC,0xE9,
-    0xEC,0xF6,0x04,0x0B,0x0A,0x06,0x04,0x02,0xFC,0xF8,0xF9,0xFA,0xF5,0xEC,0xE6,0xE5,
-    0xE7,0xED,0xF6,0xFE,0x08,0x12,0x18,0x18,0x18,0x1D,0x1F,0x19,0x13,0x0D,0x06,0x01,
-    0x04,0x04,0x04,0x04,0x00,0xFD,0xFC,0xF7,0xEE,0xE7,0xE7,0xEA,0xF0,0xF5,0xFA,0xFA,
-    0xFA,0xFE,0x06,0x0A,0x07,0x07,0x06,0x03,0xFE,0xF8,0xF4,0xF1,0xEF,0xEC,0xEC,0xEF,
-    0xF7,0x01,0x06,0x09,0x0E,0x16,0x19,0x15,0x12,0x12,0x0E,0x07,0x02,0xFF,0xFB,0xFD,
-    0x02,0x09,0x0C,0x0A,0x02,0xFC,0xF8,0xF0,0xE8,0xE6,0xE9,0xEF,0xF6,0xFB,0x00,0x01,
-    0x01,0x03,0x05,0x07,0x09,0x0C,0x0B,0x05,0x01,0xFF,0x01,0x03,0x03,0xFE,0xF8,0xF4,
-    0xF1,0xF5,0xFB,0x03,0x0A,0x0B,0x07,0x04,0x06,0x0C,0x0D,0x08,0xFE,0xF6,0xF0,0xF0,
-    0xF8,0x01,0x06,0x05,0x05,0x02,0xFA,0xF5,0xF6,0xF9,0xF9,0xF8,0xF6,0xEF,0xEC,0xF0,
-    0xF7,0xFC,0xFD,0x00,0x05,0x0A,0x0E,0x0F,0x0C,0x07,0x02,0xFA,0xF3,0xEC,0xE7,0xE7,
-    0xEB,0xF7,0x05,0x0D,0x0E,0x0C,0x0D,0x0F,0x0F,0x09,0x04,0x00,0x00,0x04,0x08,0x09,
-    0x06,0x06,0x06,0x07,0x05,0xFF,0xF9,0xF8,0xF9,0xF6,0xF5,0xF7,0xF6,0xF7,0xF6,0xF7,
-    0xF8,0xF9,0xFC,0x00,0x03,0x06,0x0A,0x0D,0x0B,0x0B,0x0C,0x0C,0x0B,0x08,0x02,0xFA,
-    0xF3,0xED,0xEC,0xF2,0xFA,0x00,0x01,0xFF,0xFB,0xFB,0xFC,0xFD,0xFC,0xFB,0xFA,0xFA,
-    0xF8,0xF9,0xFD,0x03,0x04,0x01,0xFF,0xFF,0x03,0x07,0x07,0x05,0x06,0x06,0x03,0x00,
-    0xFD,0xFA,0xF8,0xF6,0xF6,0xFA,0x01,0x0A,0x0B,0x06,0xFE,0xF9,0xF9,0xFA,0xFE,0x01,
-    0x01,0xFF,0xFD,0xFA,0xF8,0xF9,0xFA,0xFC,0xFE,0xFF,0xFF,0xFF,0xFD,0xFA,0xF8,0xF9,
-    0x00,0x06,0x0A,0x09,0x06,0x02,0xFF,0xFB,0xF7,0xF6,0xF6,0xF7,0xFE,0x07,0x0F,0x14,
-    0x11,0x0D,0x09,0x03,0xFF,0xFE,0xFD,0xFC,0xFA,0xF6,0xF2,0xF2,0xF7,0xFD,0x00,0xFF,
-    0xFD,0xFF,0x02,0x05,0x09,0x09,0x08,0x0A,0x0E,0x10,0x0F,0x0A,0x03,0xFF,0xFB,0xF5,
-    0xF3,0xF4,0xF6,0xFB,0xFC,0xFB,0xFC,0x00,0x02,0x02,0xFF,0xFD,0xFC,0xFD,0xFE,0xFE,
-    0xFF,0xFD,0xFB,0xFC,0x01,0x06,0x08,0x06,0x03,0x00,0xFC,0xFA,0xFA,0xFD,0x03,0x03,
-    0x02,0xFF,0xFB,0xF6,0xF5,0xF7,0xF9,0xFE,0x02,0x02,0x01,0xFF,0xFE,0xFD,0xFC,0xFA,
-    0xF8,0xF7,0xF9,0xFE,0x04,0x07,0x07,0x06,0x05,0x03,0xFF,0xFD,0xFA,0xF7,0xF8,0xF7,
-    0xF5,0xF5,0xF6,0xF9,0xFB,0xFA,0xFB,0xFC,0xFF,0x02,0x05,0x07,0x06,0x04,0x04,0x06,
-    0x09,0x0C,0x0A,0x09,0x07,0x02,0xFF,0xFD,0xFC,0xFD,0xFE,0xFE,0xFC,0xFD,0xFC,0xFB,
-    0xFA,0xFC,0x01,0x04,0x04,0x03,0x04,0x03,0x04,0x04,0x03,0x03,0x01,0x00,0xFF,0xFD,
-    0xFA,0xFA,0xFD,0x00,0x02,0x02,0x00,0xFE,0xFC,0xFA,0xF9,0xF8,0xF7,0xF6,0xF9,0xFA,
-    0xFC,0x00,0x03,0x05,0x04,0x04,0x05,0x04,0x03,0x01,0x00,0x01,0x04,0x08,0x0A,0x0B,
-    0x0B,0x0A,0x05,0xFF,0xF9,0xF6,0xF8,0xFB,0xFF,0x01,0x01,0xFE,0xF9,0xF8,0xF8,0xF7,
-    0xF5,0xF5,0xF8,0xFA,0xFF,0x02,0x04,0x04,0x02,0x00,0xFF,0xFE,0xFD,0xFD,0xFD,0xFC,
-    0xFB,0xFA,0xF9,0xFA,0xF9,0xFB,0xFD,0x01,0x04,0x05,0x04,0x02,0x01,0x00,0x01,0x02,
-    0x04,0x03,0x00,0xFD,0xFC,0xFB,0xFD,0x00,0x01,0x03,0x04,0x03,0x03,0x02,0x01,0xFF,
-    0xFD,0xFD,0xFE,0x02,0x05,0x06,0x06,0x04,0xFF,0xFB,0xF7,0xF4,0xF3,0xF3,0xF6,0xF8,
-    0xFB,0xFF,0x02,0x02,0x01,0xFF,0x00,0x00,0xFF,0xFD,0xFA,0xF9,0xF7,0xF5,0xF6,0xF7,
-    0xF9,0xFC,0xFF,0x01,0x04,0x07,0x07,0x08,0x07,0x08,0x09,0x09,0x08,0x08,0x05,0x01,
-    0xFF,0xFD,0xFB,0xFC,0xFF,0x00,0x01,0x01,0xFD,0xFB,0xFA,0xFA,0xF9,0xF7,0xF6,0xF7,
-    0xF8,0xFB,0x00,0x03,0x03,0x03,0x02,0x04,0x06,0x07,0x04,0x01,0xFF,0xFB,0xF9,0xFA,
-    0xFB,0xFC,0xFD,0xFE,0xFE,0xFF,0x00,0x01,0x01,0x00,0x02,0x04,0x05,0x05,0x04,0x02,
-    0x02,0x01,0xFF,0xFE,0xFC,0xFB,0xFA,0xFA,0xFB,0xFB,0xFD,0xFD,0xFC,0xFC,0xFD,0xFE,
-    0xFD,0xFE,0xFE,0xFF,0x00,0x01,0x03,0x04,0x04,0x05,0x04,0x03,0x01,0xFF,0xFE,0xFF,
-    0xFF,0x00,0xFF,0xFE,0xFC,0xFB,0xFC,0xFE,0xFF,0xFF,0xFE,0xFD,0xFC,0xFB,0xFC,0xFE,
-    0xFF,0xFD,0xFD,0xFE,0xFE,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x01,0x00,
-    0xFF,0x00,0x01,0x03,0x03,0x03,0x01,0xFF,0xFE,0xFD,0xFE,0xFF,0x00,0x01,0x01,0x00,
-    0xFF,0xFF,0xFE,0xFF,0x00,0xFE,0xFC,0xFA,0xF9,0xFA,0xFB,0xFC,0xFE,0xFF,0x01,0x01,
-    0x02,0x04,0x03,0x02,0x00,0xFF,0xFD,0xFD,0xFC,0xFC,0xFB,0xFC,0xFE,0xFF,0x00,0x01,
-    0x01,0x02,0x02,0x01,0xFF,0x00,0x02,0x02,0x03,0x02,0x01,0xFF,0xFF,0xFE,0xFF,0xFE,
-    0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFE,0xFD,0xFE,0xFE,0xFD,0xFE,0xFF,0xFF,0x00,
-    0x01,0x01,0x00,0x01,0x00,0xFF,0xFE,0xFD,0xFD,0xFE,0xFE,0xFD,0xFE,0xFF,0x00,0x01,
-    0x00,0x01,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFE,0xFE,0xFE,
-    0xFF,0xFE,0xFE,0xFD,0xFE,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,
-    0x00,0xFF,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0xFF,0xFE,0xFE,0xFF,
-    0xFE,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0x00,0x01,0x00,0xFF,0xFF,0xFE,0xFF,0xFF,0x00,
-    0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0xFF,0x00,0xFF,0xFE,0xFD,0xFC,0xFD,0xFD,0xFC,0xFD,
-    0xFF,0x00,0x01,0x01,0x00,0x00,0xFF,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFC,0xFC,0xFD,
-    0xFF,0xFF,0x00,0x01,0x02,0x02,0x03,0x02,0x02,0x01,0x02,0x01,0x02,0x02,0x01,0x00,
-    0xFF,0xFE,0xFD,0xFE,0xFE,0xFF,0x00,0xFF,0xFF,0xFE,0xFD,0xFE,0xFD,0xFD,0xFC,0xFC,
-    0xFD,0xFD,0xFF,0x00,0xFF,0x00,0xFF,0x01,0x02,0x02,0x01,0x00,0x00,0xFE,0xFD,0xFD,
-    0xFE,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x01,0x02,0x01,0x01,0x00,
-    0x00,0xFF,0xFF,0xFE,0xFE,0xFC,0xFD,0xFD,0xFC,0xFD,0xFF,0xFF,0xFE,0xFD,0xFE,0xFF,
-    0xFE,0xFF,0xFE,0xFF,0xFF,0x00,0x01,0x02,0x01,0x02,0x02,0x01,0x00,0x00,0xFF,0x00,
-    0xFF,0x00,0xFF,0xFE,0xFE,0xFD,0xFE,0xFE,0xFF,0xFE,0xFF,0xFE,0xFE,0xFD,0xFE,0xFE,
-    0xFF,0xFE,0xFD,0xFE,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,
-    0xFF,0x00,0x00,0x01,0x02,0x01,0x00,0xFF,0xFE,0xFE,0xFE,0xFF,0x00,0x00,0x00,0x00,
-    0xFF,0xFE,0xFE,0xFF,0x00,0xFF,0xFD,0xFC,0xFB,0xFC,0xFD,0xFE,0xFE,0xFF,0x00,0x00,
-    0x01,0x02,0x02,0x01,0xFF,0x00,0xFE,0xFD,0xFD,0xFE,0xFD,0xFE,0xFE,0xFF,0xFF,0x00,
-    0x00,0x01,0x00,0xFF,0xFF,0x00,0x00,0x00,0x01,0x00,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE,
-    0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFE,0xFF,0xFF,0x00,0xFF,
-    0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFE,0xFD,0xFE,0xFE,0xFE,0xFF,0xFE,0xFF,0x00,
-    0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,
-    0xFF,0x00,0xFF,0xFE,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,
-    0xFF,0xFF,0x00,0x00,0x01,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,
-    0xFE,0xFF,0xFE,0xFE,0xFF,0xFE,0xFF,0x00,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0x00,
-    0x00,0xFF,0xFE,0xFF,0xFE,0xFE,0xFF,0xFE,0xFE,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,
-    0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFE,0xFE,0xFF,0xFE,0xFD,0xFE,0xFE,0xFF,0x00,0xFF,
-    0x00,0xFF,0x00,0xFF,0x00,0x01,0x00,0xFF,0xFF,0xFE,0xFE,0xFF,0x00,0xFF,0x00,0xFF,
-    0x00,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,
-    0xFE,0xFF,0xFE,0xFD,0xFE,0xFD,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0xFF,0x00,0x00,
-    0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x00,0xFF,0xFE,
-    0xFF,0xFE,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,
-    0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF
-};
-static PROGMEM prog_uchar beat1_snd[588] = {
-    0xF9,0xEA,0xDA,0xCC,0xC3,0xC3,0xCB,0xD8,0xE6,0xF4,0x01,0x0E,0x1D,0x28,0x31,0x37,
-    0x3B,0x3C,0x3B,0x3C,0x3C,0x3B,0x3B,0x37,0x30,0x2C,0x25,0x1F,0x1A,0x10,0x0A,0x02,
-    0xFB,0xF8,0xF2,0xEB,0xE5,0xE1,0xDD,0xDA,0xDB,0xE3,0xEA,0xEA,0xED,0xEA,0xE1,0xD8,
-    0xD1,0xC7,0xBE,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,
-    0xBD,0xBC,0xBE,0xC5,0xCE,0xD7,0xDE,0xE6,0xEE,0xF8,0xFD,0x04,0x0D,0x14,0x1E,0x25,
-    0x2B,0x30,0x37,0x3C,0x3B,0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3C,0x3C,0x3C,
-    0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x34,0x2E,
-    0x2D,0x28,0x20,0x1C,0x0E,0xFC,0xEB,0xDA,0xD0,0xCC,0xCE,0xD4,0xDC,0xE7,0xEF,0xF6,
-    0xFC,0x01,0x05,0x0A,0x0D,0x0D,0x0E,0x0A,0x08,0x06,0x00,0xFC,0xFA,0xF4,0xEE,0xE6,
-    0xE0,0xD8,0xD1,0xCC,0xC3,0xBD,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,
-    0xBC,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBD,0xBC,0xBD,
-    0xBC,0xBD,0xBC,0xBC,0xBD,0xBC,0xBD,0xBC,0xC0,0xC9,0xD4,0xE0,0xEC,0xF8,0x01,0x0D,
-    0x14,0x1D,0x29,0x32,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3C,0x3C,
-    0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,
-    0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x38,0x28,0x14,0x02,0xF4,0xED,0xEF,0xF4,0xFA,
-    0x00,0x09,0x12,0x1B,0x20,0x24,0x2A,0x2D,0x2E,0x2D,0x2C,0x28,0x25,0x22,0x1C,0x16,
-    0x0E,0x06,0xFF,0xF9,0xEF,0xE9,0xE2,0xDA,0xD2,0xCA,0xC6,0xBD,0xBC,0xBD,0xBC,0xBD,
-    0xBC,0xBF,0xC1,0xBE,0xBD,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBC,0xBC,0xBC,
-    0xBC,0xBC,0xBC,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBD,0xBD,0xC2,0xCB,0xD7,
-    0xE0,0xE8,0xF4,0xFD,0x04,0x0C,0x16,0x1F,0x26,0x2B,0x35,0x3B,0x3B,0x3C,0x3B,0x3C,
-    0x3B,0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3C,0x3C,0x3B,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
-    0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,0x3A,0x35,0x31,0x2B,0x27,0x1C,0x08,0xF9,0xEA,0xDF,
-    0xDD,0xDD,0xE5,0xED,0xF4,0xFC,0x04,0x0B,0x13,0x1A,0x1D,0x1F,0x1F,0x1F,0x1E,0x1C,
-    0x16,0x10,0x0D,0x05,0xFE,0xFB,0xF4,0xEE,0xE5,0xDC,0xD5,0xCC,0xC8,0xC0,0xBC,0xBD,
-    0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBD,0xBE,0xBD,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBC,
-    0xBC,0xBC,0xBC,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBC,0xBD,0xBC,0xC2,
-    0xCE,0xD7,0xE2,0xEC,0xF4,0xFD,0x06,0x12,0x1A,0x22,0x2C,0x35,0x3B,0x3C,0x3B,0x3C,
-    0x3B,0x3C,0x3B,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3C,0x3C,0x3C,0x3C,
-    0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3B,0x39,0x30,0x22,
-    0x0C,0xFD,0xEF,0xE6,0xE7,0xE7,0xF1,0xFA,0xFF,0x0B,0x12,0x1A,0x22,0x25,0x28,0x2B,
-    0x2D,0x28,0x23,0x1D,0x19,0x13,0x0C,0x06,0xFF,0xFB,0xF3,0xE9,0xE4,0xDC,0xD3,0xCD,
-    0xC7,0xBF,0xBC,0xBD,0xBD,0xBD,0xBE,0xBD,0xBE,0xC1,0xC3,0xC3,0xBE,0xBD,0xBE,0xBD,
-    0xBE,0xBE,0xBF,0xBE,0xBF,0xBF,0xC0,0xBF,0xC0,0xC0,0xC1,0xC0,0xC1,0xC2,0xC2,0xC1,
-    0xC2,0xC1,0xC5,0xCE,0xD9,0xE4,0xED,0xF7,0x00,0x09,0x13,0x19,0x22,0x2D,0x34,0x3C,
-    0x41,0x40,0x40,0x41,0x40,0x3F,0x3F,0x40,0x3F,0x3F,0x3E,0x3F,0x3E,0x3D,0x3E,0x3E,
-    0x3D,0x3C,0x3D,0x3D,0x3C,0x3B,0x3C,0x3C,0x3B,0x3A,0x3B,0x3A,0x3B,0x3B,0x39,0x34,
-    0x2E,0x29,0x26,0x21,0x1B,0x17,0x13,0x10,0x0A,0x04,0x01,0xFF
-};
-static PROGMEM prog_uchar beat2_snd[527] = {
-    0xFE,0xF3,0xE4,0xD5,0xCA,0xC7,0xCD,0xD6,0xE4,0xF3,0xFE,0x0C,0x1A,0x24,0x2F,0x36,
-    0x3A,0x3E,0x41,0x40,0x3F,0x3D,0x3B,0x38,0x32,0x2C,0x27,0x22,0x1B,0x17,0x0F,0x08,
-    0x04,0xFD,0xF8,0xF2,0xEB,0xE6,0xDF,0xDE,0xE2,0xE5,0xEB,0xF0,0xEF,0xEF,0xE9,0xE0,
-    0xD9,0xD1,0xC5,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC2,0xC1,0xC2,0xC1,0xC1,0xC2,0xC1,
-    0xC2,0xC1,0xC4,0xCB,0xD1,0xD9,0xE3,0xE8,0xF3,0xFD,0x02,0x09,0x13,0x1B,0x24,0x2A,
-    0x2F,0x35,0x3B,0x42,0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x42,0x42,0x42,0x42,0x42,
-    0x42,0x42,0x42,0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x42,0x41,0x42,0x3B,0x37,0x35,
-    0x2F,0x2B,0x26,0x23,0x1F,0x18,0x14,0x0F,0x0D,0x09,0x04,0x00,0xFC,0xF9,0xF4,0xF1,
-    0xEE,0xEA,0xE9,0xE5,0xE2,0xDE,0xCF,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC3,
-    0xCC,0xD5,0xE2,0xEA,0xF2,0xF9,0xFC,0x01,0x02,0x01,0x02,0xFF,0xFC,0xF8,0xF5,0xF5,
-    0xEF,0xEB,0xE7,0xE0,0xDA,0xD6,0xD2,0xCE,0xCB,0xC7,0xC4,0xC2,0xC1,0xC2,0xC6,0xCF,
-    0xD8,0xDA,0xD9,0xD9,0xD4,0xCC,0xC6,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC1,
-    0xC1,0xC1,0xC1,0xC2,0xC1,0xC6,0xCE,0xD6,0xDD,0xE6,0xF1,0xFB,0x02,0x0A,0x13,0x1E,
-    0x27,0x30,0x3A,0x41,0x42,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
-    0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
-    0x41,0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x40,0x3A,0x39,0x32,0x2B,0x26,0x22,0x1C,
-    0x16,0x12,0x0E,0x08,0x04,0x03,0x00,0xFA,0xF8,0xF5,0xEF,0xE6,0xD2,0xC3,0xC1,0xC1,
-    0xC2,0xC1,0xC2,0xC1,0xC3,0xCC,0xD6,0xE1,0xEA,0xF2,0xF9,0xFB,0xFD,0xFE,0xFF,0x00,
-    0xFE,0xFC,0xFA,0xF9,0xF1,0xEB,0xE8,0xE4,0xDD,0xD8,0xD4,0xCC,0xC7,0xC2,0xC1,0xC2,
-    0xC1,0xC2,0xC1,0xC2,0xC2,0xC6,0xCA,0xCB,0xCB,0xC5,0xC1,0xC2,0xC1,0xC2,0xC1,0xC1,
-    0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC1,0xC2,0xC1,0xC2,0xC1,0xC3,0xCB,0xD4,
-    0xDE,0xE9,0xF3,0xFA,0x02,0x0C,0x14,0x1E,0x27,0x2E,0x36,0x3E,0x42,0x41,0x42,0x42,
-    0x41,0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
-    0x42,0x42,0x42,0x41,0x42,0x41,0x42,0x42,0x41,0x42,0x41,0x42,0x3E,0x39,0x35,0x2F,
-    0x2B,0x28,0x21,0x1C,0x1A,0x14,0x0F,0x0E,0x06,0x01,0x02,0xFD,0xFA,0xF6,0xF2,0xF1,
-    0xEB,0xDC,0xCA,0xC1,0xC2,0xC1,0xC1,0xC2,0xC2,0xC7,0xD2,0xDD,0xE9,0xF2,0xF9,0x01,
-    0x06,0x09,0x0D,0x0B,0x0B,0x0A,0x07,0x05,0xFF,0xFA,0xF4,0xED,0xEB,0xE6,0xDD,0xDA,
-    0xD7,0xD0,0xCA,0xC8,0xC4,0xC1,0xC2,0xC1,0xC2,0xC8,0xCE,0xD5,0xD7,0xD5,0xD3,0xCC,
-    0xC7,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,
-    0xC2,0xC8,0xD3,0xD9,0xE1,0xEC,0xF5,0xFE,0x05,0x0F,0x18,0x21,0x29,0x31,0x39,0x40,
-    0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
-    0x42,0x42,0x42,0x42,0x42,0x42,0x41,0x40,0x41,0x41,0x40,0x3F,0x40,0x40,0x40,0x3F,
-    0x3C,0x36,0x31,0x2D,0x29,0x26,0x22,0x1A,0x19,0x16,0x0C,0x0B,0x05,0xFF,0x00
-};
-static PROGMEM prog_uchar beat3_snd[554] = {
-    0x05,0x04,0xF7,0xE8,0xDB,0xCF,0xCB,0xD3,0xDD,0xEA,0xF9,0x05,0x11,0x1D,0x27,0x31,
-    0x38,0x40,0x44,0x43,0x45,0x43,0x44,0x40,0x3C,0x37,0x30,0x2C,0x25,0x21,0x1A,0x12,
-    0x0C,0x05,0x03,0xFB,0xF5,0xF0,0xE9,0xE4,0xE0,0xE4,0xEA,0xEF,0xF4,0xF5,0xF2,0xEB,
-    0xE7,0xDD,0xD4,0xCB,0xC5,0xC6,0xC5,0xC6,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,
-    0xC6,0xC5,0xC6,0xCC,0xD2,0xDB,0xE3,0xE9,0xF2,0xFC,0x03,0x0A,0x12,0x1A,0x20,0x26,
-    0x2E,0x36,0x3B,0x42,0x44,0x44,0x45,0x44,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
-    0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x44,0x45,0x44,0x45,0x44,0x40,0x3C,0x36,
-    0x33,0x2F,0x29,0x26,0x22,0x1E,0x19,0x16,0x11,0x0C,0x0C,0x07,0x05,0x02,0xFF,0xFB,
-    0xF7,0xF5,0xF1,0xED,0xEB,0xE6,0xE4,0xE3,0xE1,0xDE,0xDB,0xD9,0xD7,0xD5,0xD3,0xD2,
-    0xCA,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC8,0xD4,0xE1,0xEB,0xF3,0xF9,
-    0x00,0x05,0x07,0x09,0x09,0x0B,0x0A,0x09,0x08,0x05,0x04,0xFE,0xFE,0xFA,0xF3,0xF2,
-    0xED,0xE8,0xE5,0xE3,0xDE,0xD8,0xD6,0xD7,0xDE,0xE7,0xEE,0xF4,0xF4,0xF1,0xED,0xE7,
-    0xE2,0xDB,0xD3,0xCD,0xC7,0xC5,0xC6,0xC5,0xC6,0xC5,0xC5,0xC6,0xC6,0xC9,0xCF,0xD6,
-    0xDD,0xE3,0xEB,0xF4,0xFE,0x04,0x0A,0x13,0x1D,0x24,0x2C,0x34,0x3C,0x43,0x45,0x44,
-    0x45,0x44,0x45,0x45,0x45,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
-    0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x44,0x45,
-    0x43,0x3E,0x37,0x33,0x30,0x2A,0x27,0x22,0x1E,0x18,0x11,0x0E,0x09,0x06,0x02,0x00,
-    0xFB,0xF5,0xF5,0xEE,0xEA,0xEA,0xE3,0xE1,0xDE,0xDA,0xD6,0xD3,0xD3,0xD1,0xCB,0xC6,
-    0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC7,0xD2,0xDE,0xE7,0xF1,0xF5,0xF8,
-    0xFE,0x01,0x03,0x05,0x03,0x00,0xFF,0xFB,0xF7,0xF3,0xF0,0xEA,0xE5,0xE1,0xDE,0xDA,
-    0xD5,0xD1,0xCD,0xC9,0xC6,0xC6,0xC6,0xCF,0xD6,0xDC,0xE0,0xDE,0xDC,0xD6,0xD0,0xC9,
-    0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC8,0xCF,
-    0xD5,0xDD,0xE5,0xEF,0xF8,0x01,0x09,0x11,0x1B,0x23,0x2B,0x34,0x3B,0x43,0x45,0x44,
-    0x45,0x44,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
-    0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x44,0x45,0x44,0x45,0x44,0x3F,
-    0x39,0x37,0x32,0x2B,0x27,0x24,0x20,0x1E,0x18,0x14,0x0E,0x09,0x06,0x07,0x02,0xFD,
-    0xFC,0xF6,0xF0,0xEA,0xE6,0xE4,0xE2,0xE0,0xDE,0xDC,0xDA,0xD6,0xD3,0xCD,0xC5,0xC6,
-    0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC5,0xCB,0xD7,0xE4,0xEF,0xF9,0x02,0x05,0x06,0x08,
-    0x0A,0x0C,0x0C,0x0C,0x0A,0x07,0x05,0x01,0xFE,0xF8,0xF3,0xF0,0xEE,0xE7,0xE1,0xDE,
-    0xD9,0xD5,0xD1,0xD1,0xD0,0xD5,0xDD,0xE3,0xE6,0xE6,0xE8,0xE3,0xDD,0xD9,0xD0,0xC9,
-    0xC6,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC6,0xC5,0xCA,0xD1,0xD8,0xDF,
-    0xE8,0xF2,0xFB,0x04,0x08,0x11,0x1B,0x24,0x2D,0x31,0x38,0x41,0x44,0x43,0x43,0x42,
-    0x43,0x42,0x43,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,
-    0x43,0x42,0x43,0x42,0x42,0x41,0x42,0x41,0x42,0x42,0x41,0x40,0x3C,0x38,0x31,0x2C,
-    0x28,0x20,0x1D,0x1A,0x13,0x0F,0x0B,0x07,0x02,0xFF
-};
-static PROGMEM prog_uchar beat4_snd[594] = {
-    0x03,0x06,0x06,0x05,0x06,0xFF,0xF0,0xE2,0xD4,0xCD,0xCD,0xD6,0xE4,0xF0,0xFE,0x0C,
-    0x16,0x24,0x2F,0x37,0x3D,0x41,0x44,0x43,0x43,0x44,0x42,0x40,0x3C,0x36,0x31,0x2A,
-    0x25,0x1E,0x16,0x11,0x0A,0x05,0xFF,0xF9,0xF3,0xEC,0xE8,0xE3,0xE0,0xE6,0xEB,0xF2,
-    0xF4,0xF2,0xF0,0xE7,0xDE,0xD6,0xCC,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC4,0xC5,0xC4,
-    0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xCC,0xD6,0xDD,0xE3,0xED,0xF8,0xFE,0x04,0x0C,
-    0x12,0x1A,0x23,0x29,0x31,0x37,0x3E,0x43,0x44,0x43,0x43,0x44,0x43,0x44,0x43,0x44,
-    0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x44,0x43,
-    0x44,0x41,0x3C,0x3A,0x35,0x2E,0x2A,0x25,0x21,0x1D,0x19,0x13,0x10,0x0A,0x05,0x04,
-    0x02,0xFF,0xF9,0xF7,0xF4,0xF1,0xED,0xE9,0xE5,0xE3,0xE1,0xDB,0xD4,0xD3,0xD1,0xD0,
-    0xD0,0xCD,0xCD,0xCC,0xCB,0xC9,0xCA,0xC9,0xC8,0xC9,0xC5,0xC7,0xC9,0xC7,0xC5,0xC4,
-    0xC5,0xC4,0xC4,0xC5,0xC4,0xC5,0xC4,0xC6,0xD1,0xDF,0xED,0xFA,0x03,0x0A,0x10,0x17,
-    0x1A,0x20,0x24,0x22,0x22,0x21,0x20,0x1B,0x19,0x17,0x13,0x0F,0x06,0x04,0x03,0x00,
-    0xFA,0xF4,0xF3,0xEC,0xE7,0xE9,0xEF,0xF7,0xFF,0x03,0x03,0xFF,0xFB,0xF6,0xEE,0xE6,
-    0xDF,0xD6,0xD4,0xD0,0xCA,0xC9,0xC6,0xC5,0xC7,0xC7,0xCC,0xCF,0xD3,0xD9,0xDE,0xE7,
-    0xEE,0xF6,0xFE,0x04,0x0E,0x14,0x1D,0x24,0x2C,0x35,0x39,0x42,0x44,0x43,0x44,0x43,
-    0x44,0x43,0x44,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
-    0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x44,0x43,0x44,0x40,0x3A,0x34,
-    0x2F,0x2B,0x26,0x23,0x1C,0x15,0x12,0x0B,0x06,0x03,0x00,0xFB,0xF5,0xF1,0xED,0xE9,
-    0xE5,0xE3,0xE1,0xDC,0xDA,0xD6,0xD2,0xD2,0xCF,0xCA,0xC8,0xC6,0xC5,0xC5,0xC4,0xC5,
-    0xC4,0xC5,0xC4,0xC4,0xC4,0xC4,0xC4,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,
-    0xC5,0xC4,0xC5,0xCF,0xDD,0xEA,0xF5,0xFD,0x04,0x05,0x09,0x0D,0x10,0x11,0x10,0x0D,
-    0x0C,0x08,0x05,0x04,0x00,0xFC,0xF8,0xF4,0xF0,0xEC,0xE8,0xE4,0xDF,0xDC,0xDA,0xD9,
-    0xDF,0xE8,0xF1,0xF5,0xF5,0xF4,0xEE,0xE6,0xDF,0xD6,0xD1,0xCA,0xC4,0xC5,0xC4,0xC5,
-    0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xCB,0xD1,0xD7,0xE0,0xE9,0xEF,0xF9,0x02,0x06,0x0F,
-    0x19,0x21,0x29,0x33,0x3B,0x40,0x44,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
-    0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
-    0x44,0x44,0x43,0x44,0x44,0x44,0x43,0x40,0x3C,0x37,0x32,0x2D,0x29,0x24,0x1F,0x1A,
-    0x14,0x10,0x0D,0x09,0x05,0x03,0xFD,0xF6,0xF2,0xEE,0xEA,0xE6,0xE3,0xE2,0xDD,0xDA,
-    0xD7,0xD3,0xD2,0xD0,0xCB,0xC9,0xC6,0xC5,0xC5,0xC4,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,
-    0xC4,0xC4,0xC4,0xC4,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC4,0xC5,0xC4,0xCB,0xD9,
-    0xE7,0xF2,0xFA,0x02,0x05,0x07,0x0C,0x0F,0x11,0x11,0x0E,0x0D,0x09,0x05,0x04,0x01,
-    0xFD,0xF9,0xF5,0xF1,0xED,0xE9,0xE6,0xE1,0xDC,0xDA,0xD9,0xDD,0xE5,0xEF,0xF5,0xF5,
-    0xF5,0xF0,0xE8,0xE1,0xD8,0xD3,0xCC,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,
-    0xC5,0xC9,0xD0,0xD5,0xDD,0xE7,0xEE,0xF6,0x00,0x05,0x0C,0x16,0x1F,0x26,0x30,0x39,
-    0x3F,0x43,0x44,0x43,0x44,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
-    0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
-    0x44,0x44,0x41,0x3D,0x39,0x33,0x2E,0x2B,0x26,0x20,0x1B,0x16,0x11,0x0E,0x0B,0x06,
-    0x04,0x00
-};
-static PROGMEM prog_uchar saucer_snd[1266] = {
-    0x0C,0x10,0x1D,0x31,0x27,0x0A,0xF2,0xE5,0xCC,0xD2,0xE9,0x05,0x12,0x17,0x2E,0x2A,
-    0x10,0xF5,0xE8,0xD0,0xD0,0xE6,0x02,0x12,0x16,0x2E,0x2C,0x11,0xF7,0xE8,0xCD,0xCD,
-    0xE5,0x04,0x12,0x18,0x30,0x2A,0x0F,0xF7,0xE3,0xCA,0xD1,0xEB,0x07,0x11,0x1F,0x33,
-    0x24,0x07,0xF2,0xD9,0xC8,0xD9,0xF6,0x0B,0x15,0x2A,0x33,0x17,0xFA,0xE7,0xCC,0xCE,
-    0xE7,0x03,0x12,0x1F,0x35,0x23,0x03,0xF1,0xD4,0xC9,0xDE,0xFB,0x0E,0x19,0x32,0x2B,
-    0x0A,0xF7,0xD9,0xC8,0xD8,0xF6,0x0C,0x17,0x30,0x30,0x0E,0xF8,0xDD,0xC8,0xD5,0xF4,
-    0x0A,0x17,0x31,0x2F,0x0E,0xF9,0xDA,0xC6,0xD8,0xF7,0x0A,0x1B,0x35,0x29,0x0B,0xF4,
-    0xD2,0xC7,0xDE,0xFD,0x0D,0x23,0x36,0x20,0x04,0xEB,0xCA,0xCB,0xEC,0x03,0x12,0x2F,
-    0x32,0x13,0xFC,0xDA,0xC6,0xD9,0xF9,0x0B,0x20,0x38,0x23,0x05,0xEA,0xC8,0xCD,0xEE,
-    0x04,0x19,0x35,0x2C,0x0E,0xF3,0xCE,0xC6,0xE6,0x00,0x11,0x34,0x31,0x11,0xFA,0xD2,
-    0xC6,0xE0,0xFD,0x0E,0x30,0x36,0x13,0xF9,0xD2,0xC6,0xE2,0xFC,0x10,0x35,0x33,0x11,
-    0xF6,0xCF,0xC6,0xE8,0xFD,0x16,0x39,0x2B,0x0D,0xEF,0xC7,0xCD,0xF0,0x01,0x23,0x39,
-    0x21,0x05,0xDE,0xC2,0xD9,0xFA,0x0B,0x32,0x32,0x13,0xF8,0xC9,0xC8,0xEB,0x00,0x21,
-    0x39,0x22,0x06,0xDC,0xBF,0xDF,0xF8,0x13,0x39,0x2B,0x10,0xE9,0xC0,0xD5,0xF2,0x0B,
-    0x32,0x33,0x15,0xF3,0xC7,0xCB,0xF1,0x06,0x2C,0x36,0x18,0xF9,0xC8,0xCA,0xEF,0x04,
-    0x2C,0x37,0x19,0xF7,0xC6,0xCB,0xF0,0x05,0x31,0x34,0x15,0xF1,0xC2,0xD3,0xF1,0x0D,
-    0x39,0x2C,0x11,0xE3,0xC0,0xDF,0xF4,0x1A,0x3C,0x23,0x06,0xD1,0xC5,0xE9,0xFD,0x2F,
-    0x35,0x1A,0xEF,0xC2,0xD8,0xF0,0x15,0x39,0x27,0x07,0xD3,0xC5,0xE9,0x01,0x30,0x33,
-    0x14,0xEA,0xBF,0xDD,0xF7,0x22,0x39,0x1C,0xFB,0xC3,0xD3,0xF2,0x14,0x3B,0x23,0x01,
-    0xCC,0xCE,0xED,0x10,0x38,0x29,0x05,0xCB,0xD1,0xE8,0x10,0x39,0x26,0x06,0xC9,0xCF,
-    0xED,0x14,0x39,0x25,0xFB,0xC7,0xD6,0xED,0x1F,0x38,0x1E,0xF1,0xC4,0xDB,0xF9,0x29,
-    0x35,0x16,0xDC,0xC7,0xE5,0x07,0x35,0x2E,0x01,0xC9,0xD2,0xF2,0x1E,0x39,0x1C,0xE2,
-    0xC5,0xE3,0x06,0x34,0x2E,0xFE,0xCC,0xD0,0xF7,0x22,0x36,0x15,0xDB,0xC9,0xE5,0x17,
-    0x36,0x25,0xE9,0xC8,0xDF,0x05,0x35,0x2C,0xF4,0xCC,0xD4,0x03,0x2E,0x30,0xFB,0xCB,
-    0xD7,0xFC,0x2A,0x34,0xFE,0xCF,0xD3,0xF9,0x30,0x33,0xFC,0xCD,0xD2,0x02,0x31,0x2E,
-    0xF6,0xCA,0xD7,0x0A,0x34,0x27,0xEA,0xC7,0xE1,0x15,0x37,0x1A,0xDD,0xCB,0xEB,0x23,
-    0x3A,0x03,0xCE,0xD6,0xFF,0x31,0x2E,0xE7,0xCA,0xE4,0x19,0x38,0x10,0xD4,0xCD,0xFD,
-    0x32,0x2C,0xE6,0xCB,0xE7,0x20,0x35,0x05,0xCD,0xD7,0x0C,0x36,0x1E,0xD3,0xD1,0xFA,
-    0x32,0x2C,0xDD,0xCE,0xEC,0x2C,0x34,0xE9,0xCF,0xE4,0x23,0x37,0xF2,0xD0,0xE1,0x1E,
-    0x38,0xF4,0xCE,0xE2,0x1E,0x3B,0xF3,0xCA,0xE8,0x1F,0x38,0xF2,0xC5,0xEE,0x27,0x2D,
-    0xEC,0xC9,0xF3,0x33,0x22,0xDA,0xD3,0x02,0x35,0x15,0xD0,0xD7,0x1A,0x37,0xF6,0xCC,
-    0xED,0x29,0x26,0xE3,0xD0,0x03,0x37,0x0C,0xCC,0xE1,0x29,0x2C,0xE1,0xCD,0x09,0x37,
-    0x02,0xCB,0xEC,0x2C,0x22,0xD8,0xD7,0x17,0x2F,0xF0,0xCC,0x03,0x33,0x07,0xCA,0xF0,
-    0x2F,0x19,0xD4,0xDB,0x28,0x24,0xDF,0xD6,0x1A,0x2D,0xE2,0xD5,0x16,0x2C,0xEC,0xCE,
-    0x14,0x2F,0xE7,0xD5,0x14,0x29,0xEC,0xD1,0x19,0x2B,0xDF,0xDA,0x21,0x1E,0xDB,0xE3,
-    0x24,0x18,0xD5,0xEB,0x2E,0x0A,0xCC,0x00,0x31,0xEF,0xD3,0x1B,0x22,0xDA,0xE5,0x2B,
-    0x0A,0xD0,0x04,0x2C,0xE9,0xDA,0x24,0x16,0xD2,0xFA,0x2E,0xEE,0xDA,0x21,0x11,0xD5,
-    0x05,0x25,0xE5,0xE5,0x2A,0x00,0xD5,0x16,0x19,0xD9,0xFD,0x2A,0xDF,0xED,0x26,0xF8,
-    0xDA,0x23,0x0A,0xD0,0x1D,0x0D,0xDE,0x09,0x1B,0xDC,0xFE,0x29,0xD3,0x02,0x26,0xD6,
-    0x04,0x1D,0xDE,0x03,0x1A,0xE2,0x02,0x18,0xE1,0x05,0x15,0xE1,0x0B,0x0E,0xE0,0x17,
-    0x01,0xE3,0x22,0xEE,0xEE,0x29,0xDD,0xFF,0x22,0xD7,0x13,0x07,0xE5,0x21,0xE3,0xFE,
-    0x20,0xD6,0x17,0xFE,0xEB,0x23,0xDA,0x0F,0x0A,0xE5,0x23,0xDC,0x0F,0x06,0xE7,0x23,
-    0xDC,0x18,0xF6,0xF2,0x1A,0xE0,0x1E,0xE7,0x0C,0xFF,0xF2,0x14,0xE3,0x1A,0xE9,0x0E,
-    0xF8,0xFD,0x0C,0xE9,0x1C,0xE2,0x18,0xF2,0xFC,0x12,0xDF,0x23,0xE2,0x0D,0x07,0xE2,
-    0x24,0xDC,0x11,0x0A,0xE1,0x22,0xE0,0x0A,0x13,0xD8,0x20,0xF4,0xF2,0x20,0xD9,0x0D,
-    0x18,0xD3,0x1B,0x08,0xDD,0x20,0xF3,0xEE,0x1F,0xE8,0xFB,0x1B,0xE4,0xFF,0x1A,0xE4,
-    0x00,0x1C,0xE2,0xFB,0x25,0xDB,0xF8,0x2E,0xD5,0xFA,0x26,0xE2,0xF3,0x21,0xF7,0xDC,
-    0x2B,0xFE,0xD4,0x20,0x0E,0xD8,0x06,0x26,0xDB,0xEE,0x2B,0xF7,0xDA,0x1B,0x15,0xD6,
-    0xFE,0x2C,0xEA,0xDA,0x25,0x14,0xD1,0xFB,0x2F,0xF0,0xD5,0x1D,0x1E,0xD7,0xEC,0x2C,
-    0x05,0xCF,0x07,0x2D,0xEC,0xD3,0x1D,0x25,0xD8,0xE1,0x2B,0x15,0xD2,0xF0,0x2C,0x0A,
-    0xD2,0xF4,0x31,0x07,0xC9,0xFD,0x32,0x02,0xD0,0xF7,0x31,0x07,0xC9,0xF8,0x33,0x0D,
-    0xCB,0xE8,0x34,0x16,0xD4,0xDE,0x25,0x24,0xDC,0xDB,0x15,0x2E,0xEB,0xD1,0x05,0x33,
-    0x05,0xCE,0xEB,0x29,0x22,0xDC,0xD7,0x0E,0x34,0xFC,0xCD,0xEC,0x2F,0x24,0xD9,0xD0,
-    0x0E,0x3B,0xFE,0xC8,0xEA,0x29,0x28,0xE6,0xD0,0xF8,0x34,0x1C,0xD3,0xD4,0x11,0x36,
-    0x06,0xD1,0xDA,0x1B,0x3A,0xF4,0xCB,0xE8,0x20,0x37,0xF1,0xC6,0xEC,0x23,0x34,0xF4,
-    0xC5,0xEA,0x24,0x33,0xF7,0xC7,0xE6,0x1E,0x36,0x00,0xC6,0xE1,0x16,0x38,0x0E,0xCB,
-    0xD7,0x07,0x3B,0x1C,0xD7,0xD0,0xF5,0x2D,0x2E,0xF1,0xC8,0xE2,0x19,0x3B,0x0D,0xCE,
-    0xD3,0x00,0x34,0x29,0xEA,0xC7,0xE4,0x1A,0x3C,0x0F,0xD1,0xD3,0xF7,0x2A,0x34,0xF4,
-    0xCC,0xDE,0x07,0x34,0x26,0xE5,0xC8,0xE6,0x15,0x37,0x1D,0xDA,0xCB,0xED,0x18,0x3B,
-    0x16,0xD4,0xCF,0xEC,0x1E,0x3C,0x11,0xD8,0xCB,0xEA,0x22,0x39,0x15,0xD7,0xC9,0xEE,
-    0x19,0x37,0x1D,0xDE,0xCB,0xE2,0x12,0x39,0x25,0xEC,0xC6,0xDD,0x01,0x31,0x31,0x00,
-    0xCD,0xCE,0xF6,0x22,0x36,0x18,0xDF,0xC7,0xE2,0x0E,0x34,0x2B,0xFC,0xCA,0xD2,0xF4,
-    0x26,0x36,0x1A,0xE2,0xC4,0xE1,0x07,0x32,0x2E,0x0A,0xCD,0xCB,0xED,0x13,0x39,0x27,
-    0xFB,0xC4,0xD8,0xEF,0x1D,0x3B,0x1D,0xF5,0xC1,0xD9,0xF6,0x22,0x38,0x1D,0xEF,0xC0,
-    0xDE,0xF3,0x23,0x37,0x1D,0xF5,0xBF,0xDC,0xF0,0x1D,0x3B,0x1D,0x00,0xC3,0xD2,0xF0,
-    0x10,0x3D,0x22,0x0A,0xCF,0xC7,0xED,0x00,0x36,0x2E,0x14,0xE1,0xBE,0xE6,0xF5,0x22,
-    0x39,0x1F,0xFB,0xC4,0xD2,0xF0,0x08,0x37,0x2D,0x0F,0xE4,0xBF,0xE2,0xF7,0x1D,0x3A,
-    0x20,0x07,0xCC,0xC6,0xED,0xFC,0x2E,0x36,0x18,0xFA,0xC3,0xCF,0xF2,0x04,0x33,0x32,
-    0x12,0xF2,0xC2,0xD3,0xF4,0x08,0x34,0x30,0x11,0xEF,0xC3,0xD4,0xF4,0x08,0x33,0x30,
-    0x13,0xF2,0xC3,0xD1,0xF4,0x02,0x30,0x33,0x17,0xFB,0xC6,0xCB,0xED,0x00,0x23,0x39,
-    0x21,0x01,0xD8,0xC2,0xE3,0xFB,0x13,0x3A,0x29,0x0F,0xEA,0xC1,0xD5,0xF3,0x06,0x2A,
-    0x38,0x19,0x00,0xD4,0xC3,0xE5,0xFC,0x13,0x36,0x2D,0x0E,0xF1,0xC8,0xCC,0xEF,0x03,
-    0x1E,0x39,0x22,0x08,0xE5,0xC3,0xD5,0xF6,0x07,0x24,0x38,0x1C,0x06,0xDD,0xC2,0xD9,
-    0xF9,0x09,0x26,0x38,0x1B,0x04,0xDE,0xC3,0xD8,0xF9,0x09,0x24,0x39,0x1C,0x05,0xE2,
-    0xC4,0xD3,0xF4,0x0A,0x1E,0x39,0x23,0x07,0xED,0xC8,0xCC,0xEC,0x05,0x14,0x33,0x2E,
-    0x0C,0xFA,0xD4,0xC7,0xE1,0xFD,0x0C,0x25,0x38,0x1A,0x03,0xE6,0xC6,0xD0,0xEF,0x08,
-    0x15,0x31,0x2F,0x0F,0xF9,0xD7,0xC6,0xD9,0xF9,0x0D,0x1B,0x34,0x28,0x08,0xF3,0xD2,
-    0xC8,0xE2,0x00,0x0F,0x21,0x37,0x20,0x03,0xEC,0xCD,0xCC,0xE3,0x02,0x10,0x21,0x38,
-    0x20,0x06,0xEF,0xCC,0xCB,0xE1,0x00,0x0F,0x1E,0x36,0x23,0x08,0xF3,0xD2,0xC9,0xDF,
-    0xFA,0x01
-};
+static PROGMEM prog_uchar shoot_snd[2369] = {
+	0x0D,0x08,0xEE,0x0D,0x0B,0xE4,0x15,0x0F,0xC9,0x0B,0x21,0xE1,0x05,0x23,0xD7,0xE2,
+	0x39,0xE3,0xF4,0x35,0xCA,0xFE,0x38,0xCB,0xFF,0x26,0xC4,0x20,0x19,0xC4,0x2A,0x17,
+	0xBF,0x01,0x38,0xDC,0x01,0x20,0xC8,0x1B,0x09,0xD6,0x30,0xF0,0xD1,0x37,0xFE,0xE2,
+	0x28,0xE7,0xD2,0x34,0x0B,0xC7,0x27,0x1C,0xC2,0x01,0x39,0xD0,0xFA,0x2F,0xCB,0x15,
+	0x1E,0xC4,0x04,0x37,0xD6,0xE7,0x34,0xE3,0xF7,0x30,0xE0,0xD4,0x38,0xF1,0xDA,0x3E,
+	0xDD,0xDF,0x3A,0x01,0xC1,0x24,0x12,0xC9,0x33,0xF5,0xE4,0x34,0xE7,0xCF,0x34,0xFD,
+	0xCD,0x40,0xE9,0xD8,0x3E,0xE0,0xDB,0x36,0x10,0xC3,0x0B,0x2D,0xCB,0xF4,0x38,0xEF,
+	0xCF,0x31,0x0C,0xC9,0x22,0x02,0xD3,0x2E,0x06,0xCD,0x28,0x0E,0xC1,0x1B,0x23,0xC3,
+	0x14,0x21,0xCC,0x24,0x06,0xC4,0x25,0x1D,0xC8,0x11,0x2D,0xBF,0x15,0x1A,0xC9,0x25,
+	0x17,0xBE,0x0C,0x34,0xD1,0x13,0x13,0xC1,0x11,0x36,0xD7,0xE2,0x3C,0xDD,0xEB,0x39,
+	0xE6,0xCF,0x22,0x28,0xC9,0xF6,0x39,0xD9,0xF1,0x3A,0xD2,0xEA,0x3B,0xCD,0x01,0x35,
+	0xBF,0x11,0x2B,0xBE,0x17,0x2C,0xBF,0x14,0x1D,0xC2,0x11,0x34,0xD5,0xEC,0x3E,0xD7,
+	0xDB,0x3C,0xE5,0xE4,0x34,0xFF,0xC4,0x27,0x14,0xC3,0x24,0x1D,0xC5,0x03,0x38,0xD1,
+	0x02,0x28,0xC4,0x15,0x1A,0xC8,0x22,0x1E,0xC2,0x1D,0x1C,0xC0,0x19,0x25,0xCD,0x02,
+	0x2E,0xD6,0xEC,0x40,0xDA,0xE4,0x3C,0xCC,0x00,0x36,0xC0,0x17,0x1A,0xC6,0x2A,0xFC,
+	0xD9,0x2F,0xED,0xE3,0x31,0xFC,0xC5,0x2C,0x0D,0xCA,0x38,0xF9,0xC4,0x2F,0x08,0xD3,
+	0x1E,0x1E,0xC8,0xFA,0x3B,0xD8,0xF1,0x27,0xD7,0x08,0x30,0xD0,0xE4,0x3F,0xDC,0xEB,
+	0x3C,0xCF,0xFC,0x37,0xCE,0xE3,0x3B,0xF7,0xE2,0x2F,0xEA,0xCE,0x33,0xF3,0xD6,0x3F,
+	0xEF,0xD0,0x40,0xF6,0xD0,0x30,0xE8,0xD8,0x3C,0xF5,0xE4,0x2C,0xF0,0xC7,0x29,0x1C,
+	0xC0,0x27,0x0D,0xC3,0x31,0x0E,0xCE,0x17,0x21,0xC8,0xFC,0x36,0xDB,0xDC,0x32,0x0F,
+	0xC5,0x16,0x1F,0xD0,0x0E,0x22,0xCF,0xFE,0x37,0xE6,0xCA,0x28,0x16,0xC8,0x24,0x1A,
+	0xC1,0x1D,0x0E,0xD1,0x35,0xF4,0xCF,0x3A,0xF8,0xD3,0x23,0x0F,0xC5,0x17,0x27,0xC6,
+	0x0D,0x33,0xD8,0xDF,0x37,0xEA,0xD3,0x3A,0xF7,0xD9,0x2E,0xF4,0xDC,0x2B,0xE6,0xE5,
+	0x36,0xF2,0xDE,0x2C,0xF3,0xC9,0x33,0x08,0xCC,0x1F,0x20,0xCB,0xF9,0x3A,0xDD,0xE6,
+	0x30,0xF3,0xCA,0x31,0x05,0xCC,0x3F,0xEE,0xCD,0x41,0xEB,0xDA,0x35,0xFB,0xC8,0x1C,
+	0x24,0xC1,0x16,0x2A,0xC3,0x11,0x24,0xD3,0xFA,0x30,0xD9,0xE5,0x3F,0xD5,0xEA,0x42,
+	0xCE,0xF8,0x35,0xC8,0x0B,0x30,0xC2,0x05,0x26,0xD0,0x00,0x32,0xE0,0xE8,0x35,0xDD,
+	0xE5,0x3B,0xD9,0xE7,0x43,0xD7,0xEC,0x33,0xD5,0xE9,0x36,0xFF,0xC9,0x2C,0x03,0xC7,
+	0x3E,0xFC,0xCC,0x28,0x13,0xCA,0x05,0x33,0xD5,0xF0,0x31,0xED,0xCE,0x34,0x03,0xCB,
+	0x35,0x0E,0xC5,0x07,0x32,0xCA,0xFF,0x39,0xCA,0xF3,0x31,0xEE,0xDA,0x37,0xF5,0xCC,
+	0x40,0xE9,0xD5,0x37,0x04,0xC5,0x13,0x2C,0xC5,0x08,0x38,0xDA,0xD9,0x34,0xFF,0xCC,
+	0x20,0x21,0xCD,0xFA,0x39,0xCA,0xFD,0x30,0xC6,0x13,0x2C,0xC9,0x07,0x1E,0xD1,0x07,
+	0x2E,0xDA,0x00,0x23,0xCC,0x07,0x1D,0xD3,0x26,0xFD,0xDA,0x2F,0xED,0xDA,0x2A,0x13,
+	0xC0,0x1C,0x25,0xC1,0x1B,0x1A,0xCA,0x0A,0x26,0xDB,0x07,0x26,0xCA,0xF5,0x39,0xED,
+	0xD0,0x2C,0x0B,0xC6,0x28,0x19,0xC8,0x02,0x33,0xD6,0xEC,0x3C,0xE5,0xD3,0x2B,0x19,
+	0xBF,0x25,0x13,0xBD,0x35,0xFF,0xD1,0x37,0xEE,0xD4,0x3F,0xEA,0xDC,0x3C,0xD4,0xF5,
+	0x2F,0xD1,0x09,0x23,0xCB,0x0D,0x33,0xC3,0x04,0x2C,0xD1,0xF5,0x33,0xF1,0xCC,0x31,
+	0x0E,0xCF,0x1C,0x0D,0xD0,0x1D,0x11,0xD2,0x1F,0x06,0xCF,0x27,0x1C,0xBF,0x1F,0x11,
+	0xC4,0x2D,0x0E,0xCE,0x0F,0x35,0xD6,0xEB,0x36,0xCC,0xF2,0x34,0xE6,0xE4,0x30,0x01,
+	0xC7,0x21,0x21,0xCE,0xFB,0x30,0xD3,0xE4,0x3C,0xEF,0xED,0x26,0xE8,0xD4,0x32,0x06,
+	0xC7,0x2C,0x16,0xCF,0x0E,0x1C,0xCB,0x03,0x37,0xC9,0xF6,0x36,0xDC,0x04,0x22,0xD3,
+	0xE9,0x3A,0xEF,0xD2,0x34,0x05,0xC6,0x11,0x30,0xC3,0x0E,0x30,0xC1,0x1A,0x21,0xC8,
+	0xFC,0x2F,0xE2,0xE6,0x3A,0xD9,0xE9,0x3E,0xD3,0xF0,0x3D,0xEE,0xCA,0x25,0x1A,0xBC,
+	0x14,0x29,0xD6,0x12,0x18,0xCC,0x10,0x1A,0xD1,0x1E,0xFD,0xDC,0x35,0xF5,0xD3,0x2B,
+	0xF4,0xE4,0x2D,0xD6,0xFD,0x33,0xDD,0xDF,0x36,0x00,0xC3,0x3B,0xF6,0xC6,0x2F,0x0D,
+	0xD1,0x18,0x29,0xC8,0xF8,0x36,0xE6,0xCE,0x37,0x06,0xC5,0x25,0x22,0xCB,0x03,0x29,
+	0xCA,0x16,0x1A,0xC9,0x1F,0x0B,0xCD,0x28,0x1D,0xC0,0x1C,0x12,0xC1,0x1D,0x23,0xD5,
+	0xFE,0x38,0xDB,0xD7,0x31,0xEE,0xEA,0x2E,0xEE,0xD0,0x36,0xFE,0xD9,0x2F,0xE6,0xE6,
+	0x36,0xE3,0xD7,0x43,0xED,0xD3,0x34,0xEF,0xD6,0x2B,0x11,0xCE,0x23,0x11,0xBA,0x2C,
+	0x15,0xBD,0x26,0x11,0xCD,0x13,0x30,0xD1,0xE6,0x3D,0xEE,0xDA,0x28,0xFE,0xC3,0x32,
+	0x0C,0xC7,0x3C,0xF6,0xCB,0x38,0xFC,0xCA,0x2A,0x0E,0xD7,0x1E,0x0A,0xC4,0x1C,0x23,
+	0xBD,0x23,0x1B,0xC4,0x31,0x09,0xC0,0x22,0x21,0xCD,0x04,0x20,0xCD,0x0F,0x28,0xD0,
+	0x12,0x1B,0xC4,0x1A,0x28,0xBB,0x1A,0x1E,0xBE,0x2A,0x1B,0xBC,0x20,0x17,0xCE,0x18,
+	0x19,0xD1,0x0A,0x28,0xC7,0x07,0x29,0xCE,0x18,0x1E,0xBD,0x0F,0x32,0xCE,0x06,0x21,
+	0xD1,0xF7,0x35,0xE1,0xDD,0x45,0xE6,0xD8,0x34,0xE8,0xDF,0x2E,0xFF,0xD2,0x2B,0x03,
+	0xC9,0x33,0xF3,0xE2,0x30,0xDE,0xF9,0x2C,0xD7,0xEF,0x2E,0xD9,0xF2,0x42,0xD4,0xEE,
+	0x3D,0xC6,0xEE,0x38,0xE0,0xEF,0x31,0xF5,0xC5,0x2E,0x18,0xC5,0x1D,0x0B,0xD7,0x1B,
+	0x16,0xCA,0x0D,0x32,0xCC,0xF8,0x34,0xE4,0xCF,0x35,0x04,0xC9,0x2A,0x1E,0xC7,0x0C,
+	0x21,0xCE,0x17,0x0A,0xC9,0x2A,0x1E,0xC3,0x21,0x11,0xBD,0x2B,0x1A,0xC9,0x1D,0x0F,
+	0xCA,0x0F,0x2D,0xD0,0x04,0x31,0xC7,0xF7,0x3A,0xF1,0xC4,0x2A,0x13,0xC5,0x21,0x1F,
+	0xD1,0x05,0x25,0xCB,0x05,0x35,0xCC,0xF3,0x3A,0xED,0xCF,0x2F,0xFA,0xD3,0x41,0xF1,
+	0xC8,0x3E,0xEB,0xDD,0x3D,0xD5,0xE6,0x46,0xDC,0xE4,0x31,0xD3,0xFE,0x3D,0xCB,0xF8,
+	0x28,0xD2,0x0D,0x27,0xD3,0xEB,0x3D,0xF2,0xCA,0x2D,0x11,0xCC,0x14,0x1D,0xC2,0x1E,
+	0x20,0xC3,0x2A,0x0B,0xBE,0x27,0x1C,0xCC,0xFD,0x3E,0xD9,0xDC,0x41,0xE3,0xE1,0x29,
+	0x00,0xC6,0x24,0x1E,0xCA,0x2A,0x09,0xC1,0x0A,0x3A,0xD5,0xEC,0x3F,0xD1,0xE3,0x34,
+	0xEC,0xE7,0x2E,0xF2,0xE6,0x29,0xE8,0xCF,0x38,0x07,0xD3,0x22,0x11,0xC7,0x00,0x39,
+	0xD2,0x07,0x2D,0xBF,0x09,0x25,0xD0,0x14,0x1B,0xCF,0x02,0x37,0xD7,0xE5,0x36,0xD5,
+	0xFE,0x33,0xC5,0x05,0x2C,0xCA,0x13,0x1C,0xC6,0x19,0x2A,0xCE,0xFE,0x27,0xD8,0xF2,
+	0x31,0xE2,0xF3,0x32,0xD1,0xE5,0x42,0xDC,0xF1,0x38,0xCA,0xF7,0x30,0xD7,0xF1,0x2D,
+	0xF2,0xD8,0x36,0x04,0xCA,0x28,0xF3,0xD3,0x28,0x1A,0xCF,0x0F,0x2C,0xBD,0x10,0x23,
+	0xC1,0x28,0x16,0xBF,0x2C,0x06,0xC7,0x22,0x23,0xCE,0xF4,0x36,0xD3,0xFE,0x2F,0xC9,
+	0xFF,0x34,0xE6,0xDE,0x2A,0xF2,0xD5,0x33,0xF2,0xD9,0x2E,0x18,0xCA,0x01,0x32,0xC8,
+	0x08,0x2E,0xC6,0xFF,0x28,0xE0,0xEE,0x34,0x03,0xC4,0x0F,0x34,0xCB,0xFA,0x32,0xD7,
+	0xE9,0x31,0xF9,0xD7,0x2D,0xED,0xDE,0x34,0xE6,0xE5,0x32,0x03,0xCC,0x13,0x29,0xC5,
+	0x08,0x2B,0xC9,0x09,0x1F,0xDA,0x11,0x1C,0xD5,0xF3,0x32,0xFD,0xC8,0x18,0x27,0xCF,
+	0xF0,0x37,0xFA,0xC7,0x1B,0x1D,0xD7,0x0D,0x23,0xCB,0xFB,0x32,0xDD,0xF5,0x28,0xE0,
+	0xF0,0x24,0xE5,0x03,0x23,0xDC,0xE0,0x33,0xF7,0xE3,0x2C,0xE9,0xE3,0x29,0x05,0xCA,
+	0x1F,0x0B,0xD5,0x2C,0xF9,0xDE,0x2E,0xF2,0xD4,0x2C,0x01,0xD0,0x20,0x19,0xD6,0x0E,
+	0x11,0xCD,0x06,0x31,0xDF,0xFC,0x1D,0xD9,0x09,0x20,0xDC,0xED,0x34,0xE4,0xDC,0x37,
+	0xE6,0xF0,0x2F,0xD8,0xF1,0x2B,0xDB,0xFF,0x26,0xE0,0xF0,0x29,0xEE,0xD6,0x2F,0x0B,
+	0xD0,0x0E,0x25,0xD0,0x02,0x28,0xCC,0x18,0x1E,0xC7,0x0C,0x23,0xE1,0xEA,0x32,0xF9,
+	0xD2,0x29,0xF5,0xE7,0x23,0xFB,0xD2,0x1B,0x1E,0xD0,0x1D,0x0F,0xCB,0x03,0x32,0xE7,
+	0xE3,0x36,0xDE,0xE6,0x2D,0xF5,0xDC,0x1F,0x17,0xCD,0x1E,0x0E,0xC8,0x15,0x1D,0xDF,
+	0x00,0x26,0xD9,0xF8,0x28,0xD3,0x05,0x2E,0xD6,0xF4,0x24,0xF2,0xDB,0x24,0x0A,0xD6,
+	0x2C,0xF2,0xD9,0x32,0xF3,0xDB,0x1F,0xFF,0xE3,0x1F,0x04,0xDB,0x1D,0x03,0xD9,0x23,
+	0xFF,0xDA,0x29,0xF7,0xE4,0x23,0xE8,0xE9,0x29,0xFF,0xD6,0x18,0x19,0xD6,0x0F,0x10,
+	0xD6,0x1C,0x0E,0xCF,0x1F,0x0B,0xD7,0x26,0x05,0xD1,0x0B,0x2A,0xDD,0xF0,0x31,0xD7,
+	0xF4,0x27,0xDE,0xED,0x2C,0x02,0xDE,0x23,0xF6,0xD0,0x29,0x05,0xDA,0x1B,0x0C,0xDA,
+	0x0C,0x1F,0xD2,0x0A,0x24,0xCF,0x13,0x18,0xCD,0x0C,0x1E,0xE2,0xF8,0x26,0xEB,0xDB,
+	0x29,0x00,0xE8,0x1F,0xF5,0xDC,0x1C,0x09,0xD9,0x23,0x0A,0xCF,0x12,0x1B,0xE1,0xF3,
+	0x2C,0xE8,0xF0,0x26,0xE5,0xE2,0x23,0x0C,0xD5,0x22,0x07,0xCF,0x24,0x08,0xD8,0x1D,
+	0x06,0xE2,0x17,0x04,0xD9,0x12,0x1F,0xD4,0xFD,0x27,0xEC,0xE2,0x2A,0xFF,0xD7,0x22,
+	0x03,0xD9,0x0C,0x20,0xDA,0x06,0x24,0xD0,0x02,0x1F,0xDC,0x13,0x0F,0xD3,0x21,0x03,
+	0xD5,0x1C,0x13,0xDB,0xFD,0x28,0xEA,0xDE,0x23,0x0E,0xD6,0x19,0x11,0xCE,0x16,0x0C,
+	0xDC,0x1C,0x08,0xDC,0x13,0x0D,0xDF,0x07,0x26,0xE1,0xF0,0x1F,0xE9,0xFB,0x1C,0xEB,
+	0xE5,0x28,0xF9,0xE3,0x24,0xF4,0xE0,0x1C,0x1B,0xD2,0xFC,0x21,0xE6,0xEF,0x21,0x09,
+	0xD6,0x06,0x22,0xE5,0xEA,0x23,0xFF,0xDE,0x19,0x13,0xD8,0xFF,0x1D,0xE8,0xFF,0x1C,
+	0xDD,0xF6,0x2B,0xEA,0xEE,0x1E,0xEA,0xF7,0x1B,0xF1,0xE5,0x1F,0x08,0xDC,0x21,0xFA,
+	0xDF,0x1A,0x02,0xE1,0x09,0x1F,0xDF,0x04,0x1C,0xDE,0xEF,0x21,0x0A,0xD9,0x0A,0x1C,
+	0xE3,0xEB,0x26,0x05,0xD7,0x16,0x0B,0xDB,0x0B,0x1D,0xE5,0xF5,0x22,0xF4,0xDD,0x1A,
+	0x11,0xD4,0x15,0x12,0xDA,0x06,0x24,0xEB,0xE4,0x25,0xED,0xF4,0x23,0xDF,0xFC,0x22,
+	0xDF,0xFF,0x1F,0xE2,0xFC,0x1C,0xE8,0xFA,0x19,0xEB,0xF3,0x25,0xF2,0xE2,0x1E,0xFE,
+	0xE6,0x15,0x0B,0xDD,0x11,0x11,0xD5,0x17,0x10,0xDC,0x19,0x00,0xDF,0x14,0x10,0xE3,
+	0x00,0x20,0xE1,0xF9,0x21,0xEA,0xE9,0x1E,0x0D,0xD7,0x0C,0x13,0xE6,0x0B,0x0E,0xE1,
+	0xFE,0x23,0xE3,0xFB,0x1F,0xDE,0xFE,0x1B,0xEA,0xFB,0x1B,0xEC,0xF3,0x18,0xF0,0xEE,
+	0x1D,0x07,0xE1,0x0A,0x0E,0xDF,0x0E,0x17,0xDD,0x0E,0x12,0xDA,0x06,0x17,0xE7,0x0A,
+	0x0A,0xE2,0x0F,0x0E,0xE4,0x01,0x1B,0xEE,0xEC,0x1E,0x01,0xDA,0x10,0x15,0xE4,0xF7,
+	0x20,0xF3,0xED,0x1B,0xF4,0xE8,0x1B,0x0C,0xDC,0x07,0x19,0xE9,0xEF,0x1E,0xFE,0xE5,
+	0x14,0x04,0xE5,0x09,0x17,0xEA,0xEE,0x20,0xF7,0xE6,0x21,0xF7,0xE3,0x1A,0x03,0xE7,
+	0x13,0x0D,0xDF,0x01,0x1D,0xEE,0xEA,0x1D,0x01,0xDF,0x0A,0x1C,0xE2,0xF9,0x1D,0xE8,
+	0x02,0x15,0xE9,0xF1,0x1D,0xFA,0xE6,0x17,0x09,0xE1,0x03,0x19,0xE3,0x04,0x19,0xE0,
+	0x09,0x14,0xE2,0x01,0x18,0xEC,0xF5,0x1A,0xEE,0xF7,0x1D,0xF0,0xE6,0x17,0x0F,0xE1,
+	0x0E,0x0F,0xDD,0x06,0x17,0xF1,0xEB,0x14,0x11,0xE2,0xFC,0x1A,0xF2,0xEF,0x18,0xFA,
+	0xE9,0x1D,0xFA,0xE7,0x15,0x06,0xE4,0x03,0x1A,0xE6,0x02,0x17,0xE6,0xF4,0x1B,0xFB,
+	0xE4,0x1E,0xF9,0xE7,0x1A,0xF9,0xEA,0x13,0x11,0xE0,0x02,0x18,0xE7,0xFC,0x16,0xF2,
+	0xF0,0x1A,0xF9,0xE8,0x15,0x01,0xE8,0x0F,0x0D,0xE6,0xF6,0x20,0xFB,0xE3,0x19,0xFB,
+	0xE6,0x17,0x02,0xEC,0x11,0x01,0xE8,0x0F,0x06,0xE8,0x13,0x0A,0xDF,0x0B,0x0F,0xE7,
+	0x05,0x17,0xEB,0xF8,0x15,0xEF,0xEF,0x19,0x04,0xE9,0x10,0x04,0xE2,0x0B,0x13,0xEC,
+	0x00,0x15,0xEA,0xF8,0x19,0xEC,0xF9,0x1A,0xEF,0xF2,0x14,0xFD,0xEA,0x06,0x19,0xEE,
+	0xF2,0x18,0xF6,0xEA,0x13,0x0F,0xE7,0xFB,0x1A,0xF5,0xED,0x17,0xF9,0xEA,0x14,0x07,
+	0xE7,0x09,0x0E,0xE4,0x0B,0x0F,0xE4,0x0F,0x0A,0xE4,0x0C,0x09,0xEA,0x0E,0x08,0xE9,
+	0x08,0x08,0xED,0xFF,0x15,0xF6,0xEC,0x16,0x05,0xE3,0x09,0x0D,0xEB,0x03,0x15,0xEC,
+	0xF6,0x16,0xEF,0xF9,0x16,0xF8,0xEE,0x08,0x12,0xED,0xFE,0x0E,0xEC,0x06,0x09,0xEE,
+	0x08,0x0C,0xE8,0x06,0x12,0xE7,0x00,0x15,0xF1,0xF2,0x15,0xFD,0xE9,0x14,0x03,0xEB,
+	0x0D,0x00,0xEE,0x0D,0x08,0xED,0xFB,0x17,0xFB,0xE7,0x10,0x06,0xE9,0x05,0x15,0xED,
+	0xF4,0x14,0xF7,0xF5,0x12,0xFD,0xE9,0x0D,0x09,0xED,0x07,0x07,0xEE,0xFA,0x14,0xFC,
+	0xF1,0x10,0xF8,0xF2,0x13,0x03,0xE8,0x00,0x16,0xF7,0xED,0x10,0x04,0xE9,0x0C,0x0C,
+	0xEA,0x02,0x12,0xF5,0xEE,0x0F,0x0A,0xE8,0x01,0x13,0xF2,0xF2,0x12,0x02,0xEC,0x0A,
+	0x0B,0xEA,0x00,0x14,0xED,0xFD,0x12,0xEE,0xF9,0x12,0xFC,0xED,0x07,0x13,0xEE,0xF6,
+	0x14,0xF8,0xEE,0x0D,0x07,0xEA,0x05,0x0E,0xEF,0x03,0x08,0xEE,0x04,0x10,0xF2,0xF0,
+	0x10,0x0A,0xE9,0xFD,0x13,0xF4,0xF4,0x13,0xF9,0xF2,0x10,0x04,0xEB,0x05,0x0E,0xEE,
+	0xFE,0x0E,0xF4,0xF7,0x11,0xFC,0xEF,0x0D,0x09,0xEE,0xFA,0x13,0xFB,0xEC,0x10,0x02,
+	0xEA,0x04,0x12,0xF6,0xEF,0x0E,0x09,0xEC,0x02,0x0C,0xF1,0xFF,0x0D,0xF2,0xF9,0x12,
+	0xF7,0xF3,0x0F,0xFF,0xEF,0x09,0x0B,0xF0,0xF8,0x12,0xFC,0xED,0x0A,0x0B,0xED,0xFF,
+	0x10,0xF3,0xFC,0x0E,0xF8,0xF3,0x0E,0xFF,0xF0,0x0E,0x00,0xEF,0x01,0x0E,0xFD,0xF0,
+	0x08,0x09,0xF1,0x01,0x0C,0xF0,0xFC,0x0F,0xF8,0xF2,0x0E,0x05,0xEB,0x09,0x08,0xEE,
+	0x08,0x06,0xF3,0xF7,0x0C,0x07,0xEB,0x06,0x0A,0xEE,0xFC,0x0E,0x01,0xEF,0x05,0x0F,
+	0xF0,0xFB,0x0C,0xF3,0xFF,0x0B,0xF4,0xFA,0x0D,0xFB,0xF3,0x0B,0x03,0xEF,0x06,0x0D,
+	0xF0,0xF8,0x0F,0xFE,0xF0,0x04,0x0D,0xF3,0xFB,0x0E,0xF8,0xF3,0x0C,0x05,0xEF,0xFE,
+	0x10,0xF7,0xF6,0x0E,0xFB,0xF2,0x0A,0x06,0xF1,0x03,0x0B,0xF1,0x02,0x08,0xF1,0x04,
+	0x08,0xF3,0x03,0x07,0xF2,0x00,0x0D,0xF7,0xF4,0x0C,0x05,0xF1,0x02,0x0A,0xF4,0xFC,
+	0x0B,0xFB,0xF3,0x09,0x0B,0xF0,0xFB,0x0D,0xF9,0xF7,0x0C,0xFC,0xF5,0x0B,0xFA,0xFA,
+	0x0B,0xFA,0xF5,0x0A,0x06,0xF1,0x00,0x0A,0xF6,0xFD,0x09,0xFB,0xF6,0x06,0x0B,0xF4,
+	0xF9,0x0B,0xFB,0xF7,0x0B,0xFF,0xF2,0x08,0x06,0xF4,0xFD,0x09,0xFF,0xF4,0x05,0x08,
+	0xF4,0xFD,0x0B,0xFA,0xF7,0x0A,0xFF,0xF4,0x06,0x08,0xF4,0xFB,0x0C,0xFB,0xF7,0x0B,
+	0xFE,0xF3,0x07,0x06,0xF4,0xFE,0x0B,0xF8,0xF9,0x09,0xFD,0xF5,0x07,0x06,0xF5,0xFC,
+	0x09,0xFD,0xF5,0x08,0x04,0xF2,0x04,0x06,0xF5,0xFC,0x09,0x00,0xF5,0x03,0x09,0xF6,
+	0xF8,0x0A,0x03,0xF4,0xFF,0x09,0xFB,0xF6,0x05,0x07,0xF9,0xF8,0x06,0x03,0xF7,0xFD,
+	0x00
+};
+
+static PROGMEM prog_uchar aliendeath_snd[2808] = {
+	0x14,0x1D,0xD9,0xFE,0x19,0xE0,0xF0,0x23,0x0B,0xDC,0x06,0x15,0xE2,0x02,0x1E,0xE9,
+	0xE8,0x18,0x16,0xE3,0xF6,0x1F,0xEC,0xF1,0x20,0xF4,0xE9,0x13,0x01,0xDD,0x0D,0x13,
+	0xE0,0x13,0x35,0xE8,0xDC,0x0D,0xE7,0xDC,0x15,0x21,0x22,0x13,0xF6,0xC9,0xCF,0x0B,
+	0xFF,0x17,0x4D,0x2B,0xD6,0xBE,0xC7,0xBE,0xFC,0x41,0x38,0x44,0x24,0xCD,0xB3,0xD0,
+	0x08,0x0D,0x2B,0x4B,0x21,0xD6,0xBC,0xC6,0xC4,0xFE,0x3D,0x3A,0x44,0x2A,0xC9,0xBB,
+	0xD9,0xD5,0xFF,0x35,0x43,0x36,0xF2,0xC9,0xC1,0xC3,0xFF,0x2A,0x2F,0x46,0x36,0xD8,
+	0xB7,0xCB,0xC4,0xE3,0x31,0x40,0x3C,0x3A,0xED,0xB4,0xCC,0xE1,0xE4,0x20,0x41,0x3E,
+	0x24,0xE4,0xBE,0xC1,0xE6,0xF1,0x17,0x42,0x43,0x1F,0xDA,0xC8,0xBA,0xD8,0x10,0x1A,
+	0x34,0x4B,0x2C,0xD5,0xBE,0xC8,0xBC,0xF2,0x2F,0x33,0x3C,0x43,0x00,0xBC,0xC0,0xDE,
+	0xDB,0xF4,0x32,0x3C,0x3E,0x1B,0xDF,0xC2,0xB9,0xEC,0xFA,0x07,0x3B,0x3F,0x31,0xFF,
+	0xD0,0xB6,0xCF,0xF0,0xEF,0x25,0x40,0x38,0x30,0xF3,0xC1,0xB7,0xD8,0xF8,0xFB,0x2B,
+	0x3F,0x3D,0x1F,0xD8,0xC3,0xBE,0xC7,0x0C,0x1D,0x21,0x40,0x44,0x14,0xC4,0xC1,0xC1,
+	0xC6,0x09,0x23,0x24,0x3D,0x41,0x15,0xD7,0xC4,0xB8,0xD4,0x01,0xFF,0x2B,0x42,0x35,
+	0x2F,0xF1,0xBB,0xBA,0xD2,0xE4,0xF7,0x2B,0x3E,0x37,0x42,0x0A,0xBD,0xBC,0xCB,0xCC,
+	0xE6,0x1E,0x3F,0x37,0x3E,0x34,0xE0,0xB6,0xC1,0xD1,0xD5,0xF5,0x2E,0x3B,0x36,0x40,
+	0x2B,0xD3,0xB6,0xC1,0xC2,0xE0,0x13,0x30,0x30,0x3D,0x43,0x0E,0xCC,0xBE,0xC3,0xBD,
+	0xE8,0x20,0x1B,0x32,0x40,0x41,0x1C,0xCB,0xBE,0xC2,0xBE,0xDD,0x1D,0x26,0x22,0x3D,
+	0x41,0x28,0xE6,0xBD,0xC1,0xBC,0xD0,0x12,0x17,0x17,0x3B,0x3F,0x34,0x0D,0xD8,0xC0,
+	0xB8,0xCC,0xF3,0xFC,0x0D,0x30,0x3E,0x30,0x35,0x15,0xC9,0xBB,0xC0,0xC5,0xE1,0x15,
+	0x20,0x1F,0x3C,0x3A,0x2A,0x0B,0xD4,0xBE,0xB7,0xCF,0xEF,0xFA,0x21,0x27,0x2B,0x3F,
+	0x38,0x12,0xD9,0xC3,0xBA,0xC2,0xE8,0xF5,0x0C,0x30,0x2E,0x2D,0x3B,0x2C,0xF9,0xCC,
+	0xBF,0xBA,0xCE,0xEF,0xFC,0x1C,0x26,0x25,0x3C,0x37,0x1C,0xFC,0xD3,0xBC,0xBA,0xD0,
+	0xE8,0xF9,0x1D,0x2D,0x24,0x2F,0x3D,0x2A,0xFD,0xD5,0xC2,0xB8,0xC4,0xE7,0xF9,0x08,
+	0x27,0x31,0x27,0x34,0x3C,0x1B,0xE4,0xC1,0xBE,0xB7,0xCE,0xF8,0x02,0x0E,0x23,0x32,
+	0x2C,0x2C,0x3A,0x1E,0xE3,0xBE,0xBE,0xBA,0xC3,0xF7,0x14,0x0F,0x14,0x2A,0x33,0x26,
+	0x31,0x2D,0xF9,0xCC,0xBE,0xBD,0xBA,0xDD,0x0C,0x0D,0x14,0x27,0x21,0x20,0x34,0x31,
+	0x12,0xF8,0xD5,0xBA,0xBA,0xCA,0xE1,0xFA,0x16,0x26,0x13,0x12,0x30,0x2F,0x1F,0x28,
+	0x12,0xD4,0xBC,0xBF,0xBC,0xCF,0x00,0x15,0x0D,0x1A,0x24,0x17,0x1B,0x2F,0x2C,0x15,
+	0x04,0xE5,0xC1,0xBD,0xC0,0xCD,0xEE,0x0E,0x26,0x1D,0x10,0x20,0x1F,0x19,0x29,0x25,
+	0x0B,0xF2,0xD4,0xBF,0xBC,0xCA,0xE4,0xF8,0x10,0x24,0x1C,0x10,0x1C,0x1D,0x18,0x26,
+	0x21,0x0A,0xFB,0xE0,0xC5,0xBB,0xC3,0xDD,0xEF,0x08,0x22,0x1C,0x12,0x1B,0x17,0x10,
+	0x1B,0x28,0x1C,0x0B,0x04,0xE3,0xC2,0xC0,0xC3,0xCD,0xE8,0x0C,0x21,0x18,0x19,0x1E,
+	0x0A,0x08,0x1E,0x1F,0x17,0x1A,0x11,0xFA,0xE4,0xD0,0xC1,0xC0,0xD2,0xED,0xFD,0x10,
+	0x22,0x19,0x11,0x18,0x0F,0x07,0x16,0x1F,0x15,0x12,0x15,0x03,0xE5,0xD2,0xCA,0xC3,
+	0xC7,0xE3,0xFE,0x09,0x14,0x1F,0x1C,0x10,0x0F,0x10,0x07,0x0C,0x1C,0x19,0x11,0x13,
+	0x09,0xF3,0xE3,0xCF,0xC1,0xCC,0xD9,0xE2,0xFB,0x14,0x17,0x17,0x1C,0x13,0x09,0x0D,
+	0x0B,0x05,0x10,0x1A,0x13,0x0E,0x11,0x06,0xF7,0xEB,0xD6,0xC6,0xC8,0xD6,0xE2,0xF0,
+	0x04,0x17,0x1D,0x17,0x13,0x15,0x0C,0x04,0x08,0x05,0x03,0x0E,0x16,0x11,0x0C,0x0B,
+	0x08,0xFD,0xEF,0xDE,0xD5,0xCC,0xCE,0xDD,0xEA,0xF5,0x07,0x17,0x1A,0x16,0x18,0x16,
+	0x0A,0x08,0x0A,0x02,0xFF,0x05,0x0A,0x0B,0x11,0x10,0x07,0x05,0x05,0xFD,0xF4,0xE9,
+	0xD9,0xCF,0xD4,0xDC,0xE1,0xED,0xFF,0x0C,0x11,0x16,0x1A,0x13,0x0E,0x0F,0x0A,0x06,
+	0x07,0x05,0xFF,0x01,0x06,0x05,0x08,0x10,0x0F,0x08,0x04,0x04,0xFD,0xF8,0xFA,0xF1,
+	0xE2,0xDA,0xDC,0xDE,0xE2,0xED,0xF4,0xF8,0x05,0x10,0x13,0x13,0x15,0x12,0x0C,0x0A,
+	0x08,0x04,0x04,0x04,0x00,0xFE,0x00,0x01,0xFE,0x00,0x04,0x06,0x08,0x09,0x06,0x00,
+	0x00,0xFF,0xFC,0xF8,0xFE,0xFE,0xE7,0xCD,0xC5,0xD9,0xF5,0x0B,0x1D,0x3F,0x2F,0xF5,
+	0xDA,0xED,0x2A,0x0F,0xE2,0xE4,0x1C,0x24,0xEA,0xDD,0x07,0x33,0xFD,0xD9,0xF0,0x2E,
+	0x14,0xDB,0xDE,0x19,0x2B,0xE9,0xD5,0xFD,0x34,0xFF,0xD4,0xE5,0x2A,0x1E,0xDD,0xD9,
+	0x0E,0x34,0xEE,0xD4,0xEF,0x33,0x11,0xD9,0xDF,0x1A,0x32,0xEA,0xD6,0xF6,0x37,0x0A,
+	0xD7,0xE0,0x20,0x2D,0xE5,0xD6,0xFB,0x3B,0x04,0xD5,0xDF,0x24,0x2D,0xE1,0xD6,0xFC,
+	0x3E,0x03,0xD4,0xDF,0x22,0x2E,0xE1,0xD7,0xF5,0x3B,0x08,0xD7,0xDD,0x1B,0x35,0xE4,
+	0xD6,0xF2,0x3C,0x11,0xD7,0xDD,0x11,0x3B,0xED,0xD6,0xE6,0x33,0x21,0xD8,0xD8,0x04,
+	0x43,0xFA,0xD5,0xE0,0x23,0x31,0xE0,0xD8,0xEF,0x3D,0x12,0xD6,0xDA,0x0D,0x41,0xF1,
+	0xD7,0xE2,0x29,0x2D,0xDD,0xD8,0xF1,0x41,0x0F,0xD4,0xDC,0x0A,0x41,0xF2,0xD6,0xE0,
+	0x28,0x33,0xDC,0xD9,0xED,0x39,0x1A,0xD7,0xDA,0xFF,0x45,0xFF,0xD4,0xDE,0x14,0x3D,
+	0xEB,0xD8,0xE2,0x2A,0x31,0xDC,0xDA,0xEC,0x39,0x1F,0xD6,0xDB,0xF9,0x41,0x09,0xD5,
+	0xDB,0x07,0x46,0xF6,0xD6,0xE0,0x15,0x3F,0xEA,0xD7,0xE2,0x26,0x35,0xDF,0xDA,0xE5,
+	0x32,0x2C,0xD8,0xDC,0xEC,0x38,0x21,0xD5,0xDC,0xF4,0x3D,0x15,0xD5,0xDC,0xF9,0x42,
+	0x0C,0xD4,0xDE,0xFE,0x45,0x05,0xD3,0xDF,0x02,0x45,0xFF,0xD3,0xE1,0x06,0x43,0xFC,
+	0xD3,0xE1,0x09,0x42,0xFB,0xD5,0xE0,0x0A,0x41,0xFA,0xD5,0xE0,0x0A,0x42,0xFA,0xD5,
+	0xDF,0x09,0x43,0xFC,0xD5,0xDF,0x05,0x45,0x01,0xD3,0xDF,0x00,0x44,0x08,0xD3,0xDF,
+	0xFB,0x42,0x10,0xD3,0xDE,0xF5,0x3D,0x1A,0xD5,0xDE,0xEF,0x36,0x25,0xDA,0xDC,0xEA,
+	0x2B,0x2F,0xE1,0xDA,0xE6,0x1E,0x39,0xEA,0xD7,0xE4,0x11,0x41,0xF8,0xD4,0xE1,0x02,
+	0x44,0x08,0xD1,0xE1,0xF5,0x3E,0x1C,0xD3,0xE0,0xEB,0x2F,0x31,0xDC,0xDB,0xE6,0x1C,
+	0x3E,0xEE,0xD5,0xE3,0x06,0x42,0x07,0xD3,0xE1,0xF5,0x3A,0x22,0xD7,0xDD,0xEA,0x24,
+	0x38,0xE8,0xD7,0xE6,0x0A,0x40,0x04,0xD2,0xE2,0xF5,0x37,0x26,0xD8,0xDE,0xEA,0x1B,
+	0x3C,0xF0,0xD5,0xE5,0xFF,0x3F,0x14,0xD2,0xE1,0xED,0x26,0x35,0xE6,0xD8,0xE6,0x06,
+	0x40,0x0C,0xD3,0xE2,0xEF,0x2A,0x32,0xE3,0xD8,0xE6,0x08,0x3F,0x0B,0xD4,0xE2,0xEF,
+	0x2A,0x35,0xE5,0xD8,0xE7,0x03,0x3D,0x11,0xD5,0xE1,0xEB,0x22,0x3A,0xED,0xD6,0xE7,
+	0xFA,0x38,0x20,0xD8,0xDE,0xEA,0x11,0x3F,0x02,0xD3,0xE5,0xF2,0x28,0x33,0xE7,0xD6,
+	0xE8,0xFE,0x39,0x1E,0xD7,0xDF,0xEA,0x11,0x3F,0x03,0xD2,0xE5,0xED,0x22,0x3A,0xED,
+	0xD5,0xE7,0xF5,0x32,0x2C,0xDF,0xDB,0xE8,0xFF,0x3B,0x1C,0xD7,0xE0,0xEA,0x0B,0x3F,
+	0x0C,0xD3,0xE4,0xEB,0x15,0x3E,0xFF,0xD2,0xE6,0xEE,0x1D,0x3B,0xF7,0xD4,0xE7,0xF1,
+	0x24,0x38,0xF0,0xD4,0xE8,0xF4,0x27,0x33,0xEC,0xD6,0xEA,0xF6,0x2A,0x31,0xE8,0xD7,
+	0xEB,0xF6,0x2C,0x30,0xE7,0xD7,0xEA,0xF6,0x2C,0x30,0xE8,0xD7,0xEA,0xF6,0x29,0x32,
+	0xEB,0xD4,0xEA,0xF5,0x25,0x35,0xF0,0xD3,0xE9,0xF3,0x1F,0x39,0xF9,0xD2,0xE7,0xF1,
+	0x15,0x3B,0x04,0xD2,0xE5,0xF0,0x0C,0x3B,0x11,0xD6,0xE0,0xEF,0x03,0x36,0x20,0xDC,
+	0xDB,0xED,0xFA,0x2C,0x2F,0xE8,0xD7,0xEB,0xF3,0x1E,0x39,0xFB,0xD4,0xE6,0xF0,0x0B,
+	0x3A,0x14,0xD8,0xDE,0xEE,0xFE,0x2E,0x2C,0xE6,0xD6,0xEB,0xF5,0x1A,0x3A,0x00,0xD4,
+	0xE3,0xF1,0x05,0x36,0x1F,0xDD,0xDA,0xEE,0xF8,0x21,0x38,0xF6,0xD4,0xE5,0xF3,0x07,
+	0x38,0x1C,0xDC,0xDA,0xED,0xF9,0x1F,0x38,0xF9,0xD5,0xE3,0xF3,0x04,0x33,0x24,0xE2,
+	0xD9,0xEA,0xF8,0x14,0x3A,0x09,0xD7,0xDF,0xF1,0xFD,0x25,0x35,0xF0,0xD6,0xE5,0xF5,
+	0x05,0x33,0x25,0xDF,0xDA,0xEB,0xF7,0x0E,0x3B,0x12,0xD8,0xDE,0xEF,0xFB,0x18,0x3A,
+	0x02,0xD7,0xE1,0xF2,0xFD,0x20,0x37,0xF6,0xD7,0xE3,0xF5,0xFF,0x25,0x34,0xED,0xD8,
+	0xE4,0xF6,0x00,0x29,0x31,0xEA,0xDA,0xE5,0xF6,0x02,0x2A,0x30,0xE9,0xD8,0xE5,0xF7,
+	0x01,0x29,0x30,0xEC,0xD9,0xE3,0xF8,0x00,0x26,0x34,0xEE,0xD9,0xE2,0xF5,0x00,0x1F,
+	0x39,0xF6,0xD7,0xE2,0xF2,0xFF,0x15,0x3B,0x06,0xD6,0xDF,0xEE,0xFF,0x0B,0x37,0x19,
+	0xDA,0xDD,0xEA,0xFD,0x05,0x2D,0x2C,0xE6,0xDA,0xE6,0xF8,0x00,0x1C,0x3A,0xFB,0xD9,
+	0xE2,0xF0,0xFF,0x0A,0x37,0x1A,0xDD,0xDE,0xE7,0xFB,0x01,0x22,0x35,0xF5,0xD7,0xE4,
+	0xF2,0xFF,0x0B,0x36,0x1C,0xDC,0xDD,0xE9,0xFB,0x00,0x1C,0x38,0xFB,0xD8,0xE2,0xEF,
+	0x01,0x04,0x2D,0x29,0xE6,0xDA,0xE5,0xF7,0x00,0x0D,0x36,0x15,0xDC,0xDD,0xE8,0xFC,
+	0x01,0x18,0x38,0x04,0xD8,0xE0,0xEC,0xFF,0x02,0x1F,0x36,0xF9,0xD6,0xE4,0xEF,0x00,
+	0x02,0x24,0x35,0xF3,0xD7,0xE5,0xF0,0x02,0x01,0x24,0x34,0xF1,0xD7,0xE6,0xEF,0x01,
+	0x02,0x21,0x33,0xF6,0xD7,0xE5,0xEF,0x00,0x02,0x1D,0x35,0x00,0xD7,0xE1,0xEE,0xFE,
+	0x02,0x14,0x35,0x0F,0xD9,0xDD,0xED,0xFB,0x02,0x0B,0x30,0x21,0xE2,0xD9,0xE7,0xF6,
+	0x02,0x05,0x23,0x30,0xF9,0xD6,0xE1,0xEF,0xFF,0x03,0x11,0x34,0x16,0xDF,0xDC,0xE8,
+	0xF7,0x04,0x04,0x21,0x34,0xF8,0xD7,0xE3,0xED,0xFD,0x04,0x09,0x2E,0x24,0xE5,0xD9,
+	0xE7,0xF3,0x01,0x04,0x11,0x33,0x11,0xDC,0xDE,0xEA,0xF6,0x03,0x04,0x18,0x34,0x06,
+	0xDA,0xE0,0xEC,0xFA,0x04,0x05,0x1B,0x31,0x03,0xDA,0xDE,0xED,0xFA,0x03,0x06,0x18,
+	0x32,0x06,0xD9,0xDF,0xEC,0xFB,0x03,0x04,0x13,0x30,0x11,0xDD,0xDB,0xEB,0xF8,0x01,
+	0x06,0x0B,0x2B,0x20,0xE7,0xD9,0xE7,0xF4,0xFF,0x07,0x05,0x1E,0x2D,0xFB,0xDA,0xE1,
+	0xEF,0xFA,0x05,0x05,0x0D,0x2D,0x1A,0xE4,0xDA,0xE8,0xF6,0xFE,0x06,0x07,0x18,0x2E,
+	0x06,0xDA,0xDD,0xEB,0xFC,0x02,0x05,0x07,0x20,0x2C,0xF8,0xD8,0xE1,0xEE,0xFD,0x03,
+	0x06,0x08,0x22,0x2A,0xF4,0xD7,0xE2,0xF0,0xFD,0x01,0x06,0x09,0x1E,0x2C,0xF9,0xD7,
+	0xE1,0xEE,0xFB,0x02,0x07,0x06,0x18,0x2E,0x04,0xDA,0xDF,0xEA,0xFA,0x01,0x06,0x07,
+	0x0D,0x2A,0x19,0xE6,0xDA,0xE4,0xF4,0xFF,0x04,0x08,0x07,0x1A,0x2B,0x03,0xDA,0xDF,
+	0xEC,0xF8,0x01,0x04,0x07,0x0A,0x21,0x24,0xF4,0xD8,0xE2,0xF1,0xFB,0x01,0x06,0x06,
+	0x0A,0x24,0x21,0xF0,0xD8,0xE5,0xF1,0xFC,0x03,0x05,0x06,0x09,0x20,0x23,0xF4,0xD9,
+	0xE3,0xEF,0xFC,0x03,0x04,0x06,0x06,0x17,0x26,0x05,0xDC,0xDE,0xED,0xF8,0x00,0x02,
+	0x07,0x07,0x0B,0x21,0x1C,0xEE,0xD9,0xE4,0xF2,0xFE,0x03,0x04,0x06,0x06,0x0F,0x24,
+	0x13,0xE5,0xD8,0xE8,0xF4,0xFE,0x05,0x06,0x07,0x05,0x0F,0x24,0x11,0xE5,0xDA,0xE8,
+	0xF5,0xFF,0x03,0x06,0x08,0x05,0x0A,0x1F,0x1A,0xF1,0xDA,0xE2,0xF1,0xFD,0x04,0x06,
+	0x07,0x06,0x04,0x13,0x22,0x0A,0xE1,0xDA,0xE9,0xF7,0x00,0x05,0x06,0x06,0x05,0x05,
+	0x16,0x22,0x02,0xDE,0xDD,0xE9,0xF7,0x01,0x05,0x07,0x06,0x05,0x04,0x12,0x21,0x0A,
+	0xE3,0xDB,0xE9,0xF6,0xFF,0x04,0x06,0x06,0x06,0x04,0x07,0x1B,0x1B,0xF5,0xDA,0xE1,
+	0xEE,0xFA,0x03,0x06,0x06,0x05,0x05,0x03,0x09,0x1D,0x17,0xF1,0xDB,0xE2,0xEF,0xFB,
+	0x03,0x05,0x06,0x05,0x04,0x04,0x07,0x15,0x1C,0x00,0xDF,0xDE,0xEC,0xF6,0x00,0x05,
+	0x06,0x06,0x05,0x04,0x03,0x07,0x19,0x19,0xF7,0xDB,0xE1,0xEF,0xFA,0x01,0x05,0x06,
+	0x06,0x05,0x05,0x03,0x04,0x14,0x1B,0x01,0xE1,0xDD,0xEB,0xF8,0x00,0x04,0x07,0x06,
+	0x04,0x04,0x03,0x00,0x06,0x16,0x17,0xFB,0xE0,0xE0,0xED,0xF9,0x02,0x05,0x06,0x06,
+	0x04,0x03,0x03,0x00,0x01,0x0E,0x1A,0x0B,0xE9,0xDC,0xE6,0xF5,0xFE,0x03,0x06,0x07,
+	0x06,0x04,0x02,0x01,0x00,0x00,0x0A,0x18,0x10,0xF2,0xDE,0xE3,0xF1,0xFC,0x03,0x05,
+	0x05,0x06,0x05,0x03,0x02,0x01,0xFF,0xFF,0x0A,0x18,0x0F,0xF2,0xDF,0xE3,0xF1,0xFC,
+	0x03,0x06,0x07,0x05,0x04,0x02,0x01,0x00,0x00,0xFF,0x01,0x0C,0x16,0x0D,0xF2,0xE0,
+	0xE4,0xF1,0xFD,0x04,0x06,0x05,0x05,0x04,0x02,0x01,0x00,0x00,0x00,0xFE,0x01,0x0C,
+	0x15,0x0D,0xF4,0xE1,0xE4,0xF0,0xFB,0x01,0x05,0x05,0x04,0x04,0x03,0x02,0x02,0x00,
+	0xFF,0xFF,0xFF,0x00,0x07,0x13,0x12,0xFE,0xE7,0xE2,0xEB,0xF7,0x00,0x04,0x05,0x05,
+	0x04,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0xFF,0x01,0x09,0x11,0x10,0xFD,0xE7,
+	0xE1,0xEB,0xF8,0x00,0x04,0x06,0x05,0x03,0x03,0x02,0x00,0xFF,0xFF,0x00,0xFF,0xFF,
+	0xFF,0x00,0x00,0x02,0x09,0x11,0x10,0xFF,0xEA,0xE2,0xE9,0xF6,0xFE,0x04,0x06,0x06,
+	0x05,0x02,0x01,0x01,0x00,0x00,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0x00,0x05,
+	0x0C,0x10,0x0C,0xFB,0xEA,0xE4,0xEC,0xF6,0xFE,0x03,0x05,0x06,0x05,0x04,0x03,0x01,
+	0x01,0xFF,0xFF,0xFF,0xFE,0xFE,0xFD,0xFE,0xFE,0xFE,0xFF,0xFF,0xFE,0xFF,0x01,0x07,
+	0x0B,0x0D,0x06,0xF6,0xEA,0xE6,0xEE,0xF8,0x02,0x05,0x06,0x06,0x04,0x04,0x01,0x01,
+	0x00,0xFE,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0xFE,0xFE,0xFD,0xFE,
+	0xFF,0xFF,0xFF,0xFF,0x02,0x08,0x0A,0x09,0x05,0xF9,0xF0,0xEA,0xEC,0xF7,0xFF,0x03,
+	0x06,0x06,0x05,0x05,0x02,0x07,0x0E,0xF9,0xF6,0xF7,0xFD,0x09,0xF9,0xF9,0xFC,0x09,
+	0x01,0xF9,0xFB,0x05,0x08,0xF8,0xFB,0xFE,0x0A,0xFB,0xF8,0xFC,0x07,0x03,0xF8,0xFB,
+	0x02,0x09,0xF8,0xF9,0xFD,0x09,0xFD,0xF8,0xFB,0x06,0x05,0xF9,0xFC,0x00,0x09,0xFB,
+	0xFB,0xFB,0x06,0x01,0xFA,0xFA,0xFF,0x08,0xFC,0xFB,0xFA,0x07,0x03,0xFB,0xFA,0x01,
+	0x09,0xFC,0xF9,0xFB,0x0A,0x01,0xF8,0xFA,0x02,0x08,0xF9,0xFC,0xFB,0x08,0x00,0xFB,
+	0xFA,0xFE,0x0A,0xFC,0xFB,0xF9,0x09,0x03,0xF8,0xFA,0xFF,0x0A,0xFB,0xFB,0xFB,0x05,
+	0x04,0xFA,0xFC,0xFC,0x0B,0xFF,0xF9,0xF9,0x04,0x06,0xF9,0xFD,0xFB,0x08,0x02,0xFB,
+	0xF9,0xFE,0x0A,0xFC,0xFA,0xFA,0x06,0x04,0xFA,0xFD,0xFA,0x09,0x00,0xFA,0xFA,0x00,
+	0x0A,0xFA,0xFD,0xFA,0x04,0x06,0xFA,0xFB,0xFA,0x0A,0x00,0xF8,0xFC,0xFE,0x09,0xFD,
+	0xFB,0xF9,0x03,0x09,0xF7,0xFC,0xFB,0x05,0x05,0xFB,0xFB,0xFC,0x0A,0xFF,0xFA,0xFC,
+	0xFD,0x0A,0xFE,0xFA,0xFB,0x02,0x07,0xFB,0xFD,0xF9,0x05,0x07,0xF8,0xFD,0xFB,0x04,
+	0x05,0xFA,0xFA,0xFD,0x09,0xFF,0xFB,0xFC,0xFC,0x0B,0xFE,0xFA,0xFD,0xFD,0x09,0xFE,
+	0xFA,0xFB,0x00,0x07,0xFC,0xFC,0xF9,0x03,0x08,0xF9,0xFD,0xF9,0x03,0x08,0xF8,0xFD,
+	0xFB,0x02,0x08,0xFA,0xFC,0xFC,0x03,0x05,0xFB,0xFB,0xFC,0x05,0x04,0xFB,0xFB,0xFB,
+	0x06,0x03,0xFB,0xFC,0xFA,0x07,0x03,0xFA,0xFE,0xFA,0x06,0x04,0xF9,0xFE,0xF9,0x06,
+	0x05,0xF8,0x00,0xFA,0x05,0x06,0xF8,0xFF,0xFA,0x03,0x07,0xF8,0xFF,0xFA,0x02,0x08,
+	0xFA,0xFE,0xFB,0x00,0x08,0xFB,0xFD,0xFB,0xFE,0x07,0xFE,0xFD,0xFB,0xFD,0x07,0x01,
+	0xFB,0xFB,0xFC,0x05,0x03,0xFB,0xFD,0xFC,0x02,0x06,0xFB,0xFC,0xFC,0xFF,0x08,0xFC,
+	0xFB,0xFC,0xFD,0x08,0xFF,0xFB,0xFC,0xFD,0x06,0x01,0xFC,0xFD,0xFC,0x02,0x06,0xFC,
+	0xFC,0xFC,0x00,0x08,0xFC,0xFC,0xFE,0xFC,0x07,0x00,0xFB,0xFE,0xFC,0x03,0x05,0xFC,
+	0xFD,0xFC,0xFF,0x08,0xFD,0xFC,0xFD,0xFD,0x04,0x02,0xFC,0xFD,0xFC,0x01,0x06,0xFC,
+	0xFC,0xFD,0xFE,0x05,0x00,0xFB,0xFD,0xFC,0x02,0x05,0xFB,0xFE,0xFC,0xFF,0x06,0xFF,
+	0xFC,0xFD,0xFC,0x04,0x04,0xFB,0xFE,0xFC,0xFE,0x06,0xFF,0xFC,0xFD,0xFC,0x03,0x04,
+	0xFD,0xFD,0xFD,0xFE,0x05,0x01,0xFC,0xFE,0xFD,0x01,0x04,0xFE,0xFC,0xFE,0xFE,0x03,
+	0x02,0xFC,0xFE,0xFD,0xFE,0x05,0x00,0xFB,0xFE,0xFD,0x01,0x04,0xFD,0xFC,0xFE,0xFD,
+	0x03,0x03,0xFC,0xFD,0xFE,0xFF,0x04,0x01,0xFB,0xFD,0xFE,0x00,0x04,0xFF,0xFB,0xFE,
+	0xFE,0x01,0x03,0xFE,0xFB,0xFE,0xFE,0x01,0x03,0xFD,0xFC,0xFE,0xFF,0x03,0x02,0xFC,
+	0xFD,0xFE,0xFE,0x03,0x01,0xFC,0xFE,0xFE,0xFE,0x04,0x00,0xFB,0xFE,0xFE,0x00,0x04,
+	0xFE,0xFD,0xFE,0xFD,0x00,0x03,0xFE,0xFD,0xFD,0xFD,0x01,0x02,0xFE,0xFD,0xFE,0xFE,
+	0x01,0x02,0xFF,0xFD,0xFE,0xFE,0x01,0x03,0xFE,0xFD,0xFE,0xFE,0x01,0x02,0xFF,0xFD,
+	0xFE,0xFE,0x00,0x01,0xFF,0xFD,0xFE,0xFF,0x00,0x02,0x00,0xFD,0xFE,0xFF,0xFF,0x01,
+	0x01,0xFD,0xFE,0xFF,0xFE,0x01,0x00,0xFD,0xFE,0xFF,0xFF,0x00,0x02,0xFE,0xFD,0xFF,
+	0xFE,0x00,0x02,0xFE,0xFE,0xFF,0xFE,0xFF,0x01,0x00,0xFE,0xFE,0xFE,0xFF,0x01,0x01,
+	0xFF,0xFE,0xFE,0xFF,0x00,0x01,0xFF,0xFE,0xFE,0xFE,0xFF,0x01,0x00,0xFE,0xFE,0xFE,
+	0xFF,0x00,0x00,0xFF,0xFE,0xFE,0xFF,0x00,0x00,0xFF,0xFE,0xFF,0xFF,0xFF,0x01,0x01,
+	0xFF,0xFE,0xFE,0xFF,0xFF,0x01,0x00,0xFE,0xFE,0xFE,0xFE,0x00,0x00,0xFF,0xFE,0xFE,
+	0xFF,0xFF,0x00,0x00,0xFF,0xFE,0xFF,0xFF,0xFF,0x00,0x00,0xFE,0xFE,0xFF,0xFE,0xFF,
+	0x01,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0x01,0xFF,0xFE,0xFF,0xFF,0xFE,0xFF,0x00,0xFF,
+	0xFE,0xFF,0xFE,0xFE,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFE,0xFF,
+	0xFF,0xFF,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFE,0xFF,0xFF,0xFF,
+	0x00,0x00,0xFF,0xFE,0xFF,0xFE,0xFE,0xFF
+};
+static PROGMEM prog_uchar playerdeath_snd[5627] = {
+	0x00,0x02,0x09,0x10,0x15,0x16,0x0D,0x03,0xF9,0xEC,0xE4,0xE5,0xE9,0xEB,0xF7,0x04,
+	0x05,0x04,0x09,0x12,0x14,0x0D,0x00,0xF5,0xF5,0xF7,0x02,0x09,0x03,0x03,0x08,0x12,
+	0x1A,0x1C,0x1A,0x15,0x0A,0xF8,0xDF,0xC8,0xC0,0xC2,0xC5,0xCD,0xE3,0xF4,0xFE,0x03,
+	0x09,0x1B,0x25,0x26,0x20,0x1A,0x1E,0x30,0x3D,0x3D,0x3D,0x3B,0x2C,0x1D,0x0C,0xEF,
+	0xD6,0xD4,0xD4,0xD3,0xDA,0xD9,0xCA,0xC0,0xC0,0xC0,0xC4,0xC8,0xDA,0xFE,0x13,0x22,
+	0x30,0x38,0x39,0x2F,0x21,0x0A,0xE3,0xC4,0xBF,0xC2,0xBE,0xCD,0xEF,0x03,0x17,0x2A,
+	0x36,0x31,0x1A,0x0E,0x0E,0x0E,0x10,0x01,0xE1,0xCB,0xC5,0xCF,0xDE,0xF2,0x10,0x1F,
+	0x25,0x1E,0x10,0x0D,0x11,0x1A,0x1A,0x10,0x0B,0x1D,0x38,0x3E,0x3C,0x3D,0x3C,0x2E,
+	0x09,0xD9,0xC1,0xBE,0xCA,0xE7,0xFD,0x12,0x19,0x11,0x03,0xF5,0xE8,0xD6,0xD2,0xD5,
+	0xD3,0xE4,0x02,0x0C,0xFF,0xE9,0xDE,0xE7,0xF9,0x0D,0x17,0x26,0x39,0x3A,0x22,0xF4,
+	0xCB,0xBF,0xC3,0xD5,0xF9,0x1D,0x2A,0x13,0xEC,0xD7,0xD2,0xCE,0xC9,0xC6,0xCD,0xEC,
+	0x20,0x3D,0x3D,0x3D,0x3B,0x3D,0x36,0x22,0xF6,0xC6,0xC0,0xC1,0xC0,0xC0,0xCF,0xE6,
+	0xE3,0xE2,0xF2,0xFD,0xFD,0xFB,0x07,0x1F,0x36,0x3D,0x3C,0x3D,0x3B,0x3B,0x3C,0x3C,
+	0x3D,0x22,0xF8,0xD5,0xBF,0xC1,0xBF,0xC5,0xED,0xFF,0xEF,0xD8,0xC8,0xD6,0xE6,0xEF,
+	0xF2,0xF4,0xFA,0x09,0x2C,0x3D,0x3B,0x3C,0x3B,0x29,0x03,0xEC,0xF1,0x08,0x1D,0x23,
+	0x0D,0xDC,0xBE,0xC1,0xBF,0xC0,0xBE,0xC8,0xF7,0x27,0x3C,0x3A,0x3B,0x33,0x16,0xFF,
+	0xE1,0xC1,0xBF,0xBF,0xC0,0xBE,0xD4,0x0E,0x25,0x23,0x31,0x3B,0x3C,0x39,0x28,0x26,
+	0x37,0x3B,0x3A,0x3A,0x19,0xF5,0xF5,0x08,0x1E,0x2A,0x21,0x0E,0xFD,0xF3,0xED,0xEC,
+	0xF1,0xF6,0xF9,0xEA,0xCE,0xC6,0xDA,0xF1,0x01,0x09,0x15,0x30,0x3C,0x3A,0x3B,0x3A,
+	0x39,0x3E,0x24,0xF1,0xD1,0xCD,0xDF,0xF7,0x14,0x2F,0x2C,0x0B,0xDD,0xC2,0xBF,0xC1,
+	0xC8,0xDC,0xF9,0x08,0x0E,0x17,0x18,0x01,0xE0,0xCF,0xD1,0xD0,0xD6,0xDF,0xE0,0xE8,
+	0xEC,0xE9,0xE6,0xDB,0xD5,0xDC,0xE8,0x01,0x1F,0x32,0x30,0x1D,0x09,0x05,0x06,0xFD,
+	0xF0,0xEA,0xF5,0x17,0x36,0x3C,0x35,0x2C,0x22,0x11,0xFF,0xF6,0xEF,0xF1,0xFD,0x05,
+	0x0A,0x0F,0x0F,0x10,0x0F,0x0B,0x0C,0x13,0x19,0x1B,0x1B,0x19,0x13,0x0F,0x07,0xFC,
+	0xF4,0xF2,0xF0,0xF1,0xF4,0xF2,0xEB,0xE5,0xE3,0xE5,0xE7,0xE7,0xEF,0xFE,0x05,0x0A,
+	0x12,0x17,0x16,0x12,0x0C,0x02,0xF1,0xDD,0xD0,0xCF,0xD6,0xE4,0xF4,0xFD,0x07,0x10,
+	0x15,0x12,0x07,0x02,0x01,0x03,0x04,0xFB,0xEC,0xE3,0xE0,0xE4,0xEB,0xF3,0xFD,0x04,
+	0x07,0x04,0x06,0x10,0x13,0x13,0x0A,0xFB,0xF6,0x00,0x17,0x2C,0x39,0x3C,0x3B,0x3A,
+	0x20,0xF0,0xCA,0xC1,0xD6,0xEA,0xF2,0xFB,0xFE,0xF9,0xED,0xDE,0xD3,0xCA,0xC7,0xD0,
+	0xE0,0xFE,0x1F,0x26,0x16,0x00,0xF7,0xF9,0xFF,0x04,0x07,0x10,0x1C,0x1D,0x06,0xEC,
+	0xD5,0xC9,0xCF,0xDA,0xF1,0x0E,0x19,0x0B,0xF2,0xE5,0xEA,0xEE,0xE8,0xE4,0xE8,0xFF,
+	0x21,0x3A,0x3C,0x35,0x2B,0x25,0x1D,0x11,0xF5,0xCE,0xC2,0xC3,0xC3,0xC3,0xD3,0xE8,
+	0xE4,0xE4,0xF2,0xFB,0xFD,0xFB,0x06,0x1B,0x2F,0x3D,0x3B,0x3C,0x36,0x34,0x3B,0x39,
+	0x39,0x21,0xFD,0xDA,0xBF,0xC2,0xC0,0xC7,0xEC,0xFC,0xED,0xD5,0xC8,0xD5,0xE7,0xF1,
+	0xF2,0xF5,0xFA,0x08,0x2B,0x3C,0x3A,0x3B,0x3A,0x28,0x03,0xEC,0xF2,0x08,0x1D,0x23,
+	0x0E,0xDF,0xC2,0xC5,0xC3,0xC4,0xC2,0xCC,0xFB,0x28,0x3C,0x3A,0x3B,0x30,0x14,0xFE,
+	0xDE,0xC1,0xC0,0xC1,0xC2,0xBF,0xD6,0x10,0x27,0x24,0x32,0x3A,0x3B,0x37,0x25,0x23,
+	0x34,0x37,0x37,0x37,0x16,0xF2,0xF3,0x05,0x1A,0x27,0x1E,0x0C,0xFB,0xF0,0xEB,0xE9,
+	0xEC,0xF2,0xF4,0xE5,0xCC,0xC3,0xD9,0xF0,0xFE,0x08,0x14,0x2F,0x39,0x37,0x38,0x37,
+	0x37,0x3A,0x23,0xF0,0xCE,0xCA,0xDB,0xF3,0x13,0x31,0x2E,0x09,0xDA,0xBF,0xBF,0xC0,
+	0xC0,0xD6,0xF5,0x05,0x0C,0x15,0x17,0x00,0xDA,0xC8,0xCA,0xC9,0xD0,0xDC,0xDB,0xE2,
+	0xE8,0xE5,0xE1,0xD1,0xC9,0xD4,0xE3,0x04,0x2B,0x3C,0x38,0x23,0x0C,0x07,0x06,0xF6,
+	0xE4,0xDA,0xE7,0x16,0x38,0x39,0x39,0x38,0x39,0x2D,0x15,0x05,0xF5,0xF1,0xFB,0x04,
+	0x08,0x06,0x04,0x04,0x02,0x01,0x02,0xFF,0x00,0x01,0x01,0x02,0x02,0x01,0x02,0x03,
+	0x01,0x00,0x01,0x03,0x02,0x00,0xFF,0x00,0xFE,0xFC,0xFC,0xFA,0xFC,0xFE,0xFB,0xF8,
+	0xFA,0xF9,0xF6,0xF7,0xF6,0xF8,0xF7,0xF7,0xF7,0xF6,0xF8,0xF7,0xF8,0xF5,0xF5,0xF7,
+	0xF6,0xF6,0xF7,0xF6,0xF7,0xF6,0xF7,0xF8,0xF7,0xF7,0xF8,0xF7,0xF8,0xF4,0xEA,0xE6,
+	0xE5,0xE5,0xF7,0x14,0x19,0x05,0xEF,0xE0,0xD8,0xDA,0xE1,0xF8,0x22,0x3B,0x39,0x3A,
+	0x38,0x11,0xE5,0xE1,0xEE,0xED,0xE2,0xD6,0xCF,0xCE,0xCA,0xC7,0xC8,0xC7,0xC7,0xCE,
+	0xFD,0x35,0x41,0x3F,0x3F,0x37,0x33,0x29,0x0C,0xF3,0xE5,0xDC,0xDB,0xD1,0xC5,0xD9,
+	0xF7,0xFC,0xF3,0xE9,0xE2,0xE4,0xEC,0xF9,0x0B,0x1B,0x34,0x44,0x41,0x42,0x3F,0x42,
+	0x2F,0xFC,0xD3,0xC6,0xC7,0xC8,0xC5,0xD2,0xF1,0xFB,0xF7,0xF4,0xEF,0xEE,0xEE,0xEE,
+	0xF1,0xF3,0xF6,0xFA,0xFC,0xFC,0xFE,0xF1,0xD7,0xCB,0xCE,0xDA,0xEF,0x06,0x1A,0x2A,
+	0x36,0x3B,0x40,0x3F,0x3E,0x40,0x3B,0x43,0x11,0xCC,0xC6,0xC8,0xC8,0xCE,0xF2,0x07,
+	0xF6,0xE0,0xCD,0xCA,0xC9,0xCA,0xCE,0xD4,0xD7,0xCD,0xCC,0xE6,0x02,0x08,0xFE,0x01,
+	0x1C,0x38,0x3D,0x2A,0x15,0x05,0xFC,0xF8,0xF7,0xF9,0xF8,0xEB,0xDA,0xD8,0xF6,0x21,
+	0x31,0x26,0x19,0x1C,0x1A,0x0C,0x0B,0x13,0x14,0x17,0x29,0x34,0x30,0x31,0x2B,0x12,
+	0xF7,0xE1,0xD2,0xCD,0xD0,0xD3,0xD9,0xDE,0xDA,0xDE,0xE6,0xF6,0x0E,0x12,0x0D,0x08,
+	0x03,0x00,0xFF,0xFE,0xFC,0xFC,0xF4,0xF9,0x0A,0x11,0x0F,0x0C,0x0A,0x07,0x06,0x05,
+	0x05,0x07,0x07,0x07,0x08,0x07,0x07,0x05,0x05,0x06,0x07,0x08,0x08,0x07,0x06,0x02,
+	0xFF,0xFE,0x05,0x0C,0x0C,0x09,0x05,0x02,0x01,0xFC,0xFC,0x01,0x02,0x01,0x00,0xFF,
+	0x00,0x00,0xFA,0xEB,0xE7,0xFD,0x10,0x1B,0x20,0x17,0x0C,0x03,0xFD,0xF9,0xF7,0xF6,
+	0xF7,0xF9,0xF9,0xF9,0xFA,0xFC,0xFE,0xFE,0xFF,0x00,0x01,0x01,0x00,0x01,0x00,0x01,
+	0xFA,0xE9,0xD8,0xDC,0xF4,0x03,0x09,0x09,0x08,0x09,0x17,0x2D,0x3A,0x3C,0x3D,0x37,
+	0x24,0x0C,0xF3,0xEA,0xE5,0xDD,0xE7,0xFB,0x03,0x06,0x0C,0x02,0xED,0xDC,0xD2,0xCC,
+	0xC9,0xC8,0xCB,0xD6,0xE5,0x02,0x28,0x38,0x30,0x21,0x0F,0x02,0xFB,0xF8,0xF8,0xFB,
+	0xFD,0x01,0x01,0xF4,0xED,0xF5,0xF9,0xFB,0x11,0x32,0x3F,0x32,0x1F,0x19,0x16,0x10,
+	0x1A,0x2C,0x2C,0x2D,0x30,0x1F,0x06,0xF1,0xE1,0xDA,0xD9,0xDC,0xE0,0xE4,0xE9,0xEC,
+	0xEF,0xF2,0xF5,0xED,0xDC,0xD3,0xD2,0xDD,0xF9,0x19,0x27,0x29,0x36,0x41,0x41,0x41,
+	0x43,0x35,0x21,0x12,0xF6,0xDA,0xCD,0xCA,0xCB,0xCA,0xCC,0xE0,0xF7,0xFE,0xF6,0xED,
+	0xF4,0x10,0x28,0x27,0x20,0x19,0x17,0x22,0x2D,0x22,0x03,0xE0,0xD2,0xD4,0xE1,0xFF,
+	0x15,0x14,0x08,0xF9,0xE9,0xE1,0xDD,0xD6,0xD2,0xD6,0xE6,0x0E,0x37,0x42,0x40,0x3F,
+	0x40,0x3A,0x1F,0x06,0xF9,0xF4,0xFF,0x0F,0x0F,0x02,0xF7,0xF0,0xED,0xEC,0xF0,0xF1,
+	0xF4,0xF8,0xFA,0xFC,0xFE,0x00,0x01,0x03,0x02,0xF4,0xDF,0xD4,0xD5,0xE2,0xF5,0x08,
+	0x19,0x27,0x3A,0x40,0x3E,0x40,0x3F,0x41,0x24,0x03,0xFB,0xF8,0x06,0x15,0x10,0x00,
+	0xE5,0xCD,0xCB,0xCC,0xCB,0xCF,0xE4,0xFD,0x0D,0x0F,0x08,0x09,0x00,0xEF,0xE4,0xDB,
+	0xDC,0xDB,0xD6,0xE2,0xFD,0x0F,0x12,0x11,0x0F,0x0D,0x0C,0x0C,0x0C,0x0F,0x10,0x10,
+	0x11,0x12,0x15,0x15,0x15,0x15,0x15,0x13,0x12,0x11,0x0F,0x0F,0x0D,0x0C,0x0C,0x09,
+	0xFE,0xEA,0xDA,0xD6,0xDD,0xEB,0xFA,0x11,0x30,0x3E,0x3D,0x3D,0x3D,0x3B,0x23,0xFE,
+	0xE5,0xE5,0xFC,0x1A,0x30,0x33,0x1B,0xEF,0xCF,0xC8,0xCA,0xC9,0xCA,0xC7,0xCE,0xF6,
+	0x23,0x39,0x32,0x22,0x17,0x02,0xEF,0xE1,0xDB,0xDB,0xDF,0xE3,0xE2,0xE2,0xE2,0xE0,
+	0xE3,0xF5,0x16,0x2E,0x30,0x28,0x28,0x37,0x3C,0x39,0x35,0x1E,0x05,0xFA,0xFF,0x03,
+	0x05,0x0F,0x12,0x0A,0xFF,0xF5,0xF0,0xEF,0xF1,0xF4,0xF5,0xF7,0xFA,0xF8,0xFB,0x02,
+	0x03,0xFC,0xF5,0xFA,0x03,0x09,0x0A,0x08,0x06,0x05,0x0A,0x10,0x17,0x1E,0x1E,0x14,
+	0x0C,0x04,0xFA,0xF7,0xF7,0xF2,0xF4,0xFE,0x00,0x02,0x03,0x00,0xF8,0xF0,0xE8,0xDC,
+	0xD7,0xDD,0xE5,0xE4,0xE9,0xFA,0x0C,0x13,0x0E,0x0D,0x15,0x18,0x18,0x18,0x10,0x00,
+	0xEF,0xE9,0xE9,0xE7,0xEF,0xF3,0xEF,0xEE,0xF5,0x00,0x03,0xFB,0xF3,0xF5,0xFC,0x08,
+	0x23,0x34,0x35,0x32,0x2D,0x1C,0x00,0xEB,0xDD,0xCD,0xC7,0xC6,0xC9,0xD1,0xE1,0xF0,
+	0xF8,0xF6,0xEE,0xE7,0xE5,0xE3,0xE5,0xEE,0xFD,0x0E,0x1A,0x21,0x2C,0x37,0x32,0x2D,
+	0x2B,0x1D,0x12,0x0B,0xF8,0xE3,0xD8,0xCF,0xC6,0xC6,0xD3,0xE4,0xF4,0xF9,0xF5,0xEE,
+	0xF3,0x08,0x18,0x17,0x12,0x0D,0x0A,0x14,0x1B,0x15,0xFD,0xE0,0xD6,0xD5,0xDE,0xF3,
+	0x05,0x06,0x01,0xFA,0xEC,0xE5,0xE0,0xD8,0xD4,0xD9,0xE8,0x08,0x28,0x36,0x39,0x31,
+	0x2D,0x29,0x11,0xFD,0xF2,0xED,0xF9,0x07,0x06,0xFC,0xF2,0xEB,0xE9,0xEA,0xEA,0xED,
+	0xF0,0xF2,0xF5,0xF7,0xFA,0xFC,0xFC,0xFF,0xFC,0xEE,0xDB,0xD1,0xD2,0xDD,0xEF,0x00,
+	0x11,0x1F,0x31,0x37,0x36,0x37,0x36,0x37,0x1B,0xFB,0xF2,0xEF,0xFE,0x0D,0x08,0xF9,
+	0xDE,0xC6,0xC4,0xC6,0xC4,0xCA,0xDF,0xF6,0x08,0x07,0x02,0x02,0xF8,0xE8,0xDD,0xD6,
+	0xD6,0xD4,0xCF,0xDB,0xF6,0x05,0x08,0x08,0x06,0x03,0x02,0x03,0x05,0x08,0x09,0x09,
+	0x0A,0x0C,0x0B,0x0D,0x0E,0x0D,0x0E,0x0C,0x0B,0x0A,0x08,0x08,0x05,0x05,0x04,0x02,
+	0xF8,0xE4,0xD6,0xD1,0xD7,0xE6,0xF7,0x0E,0x2C,0x39,0x38,0x38,0x39,0x37,0x21,0xFB,
+	0xE1,0xDF,0xF7,0x16,0x2B,0x2F,0x15,0xE6,0xC7,0xC2,0xC4,0xC3,0xC4,0xC2,0xC6,0xEF,
+	0x23,0x37,0x32,0x22,0x14,0x00,0xEB,0xDA,0xD4,0xD2,0xD7,0xDC,0xD9,0xDA,0xD6,0xD6,
+	0xDB,0xEE,0x18,0x35,0x38,0x2E,0x2A,0x34,0x37,0x36,0x37,0x26,0x07,0xFA,0xFF,0x02,
+	0x05,0x12,0x18,0x0C,0xFC,0xEF,0xE7,0xE7,0xE7,0xEB,0xEE,0xF2,0xF6,0xF4,0xF7,0xFE,
+	0x02,0x01,0x00,0x04,0x09,0x0B,0x0B,0x07,0x05,0x03,0x03,0x02,0x01,0x02,0x03,0x02,
+	0x01,0x03,0x02,0x02,0x02,0x01,0x02,0x01,0x01,0x00,0xFC,0xFD,0xFD,0xFD,0xF4,0xE4,
+	0xE8,0xF6,0xF6,0xEB,0xE9,0xF4,0xF9,0xF7,0xF4,0xFF,0x1E,0x33,0x36,0x37,0x30,0x11,
+	0xED,0xDE,0xDC,0xE4,0xFA,0xFB,0xED,0xE7,0xDF,0xD1,0xC6,0xC5,0xC8,0xD0,0xE1,0x07,
+	0x2F,0x37,0x35,0x35,0x31,0x1F,0x00,0xED,0xDB,0xC5,0xC3,0xC4,0xC6,0xC3,0xD4,0xFD,
+	0x0C,0x01,0xEB,0xE8,0xFB,0x08,0x0F,0x11,0x12,0x0E,0x11,0x21,0x2A,0x1E,0x04,0xFD,
+	0x02,0x00,0x07,0x10,0x0F,0x0A,0x04,0x00,0xFE,0xFF,0xFE,0xFF,0x02,0x03,0x05,0x07,
+	0x07,0x0B,0x0B,0x0A,0x0A,0x07,0x07,0x07,0x07,0x06,0x05,0x04,0x01,0xFD,0xF5,0xEA,
+	0xEC,0xF4,0x06,0x1A,0x1F,0x1A,0x10,0x08,0xFF,0x02,0x0F,0x12,0x08,0xF9,0xEE,0xE6,
+	0xE3,0xE2,0xE1,0xE1,0xE1,0xEA,0xF1,0xF3,0xF4,0xF4,0xF2,0xF3,0xF5,0xF5,0xF7,0xF7,
+	0xF8,0xF8,0xF9,0xFA,0xFA,0xFB,0xFB,0xFB,0xFB,0xFC,0xFD,0xFC,0xFC,0xFD,0x01,0xFE,
+	0xF6,0xFB,0x01,0xF9,0xE8,0xDB,0xE1,0xFE,0x16,0x18,0x1A,0x24,0x26,0x16,0xFD,0xEA,
+	0xDF,0xE0,0xE8,0x04,0x2C,0x3D,0x3A,0x39,0x30,0x0C,0xE6,0xD2,0xCA,0xC8,0xD6,0xEC,
+	0xF8,0x05,0x0A,0x02,0xF6,0xEB,0xEE,0xF9,0xFE,0xF6,0xEB,0xE4,0xDF,0xDE,0xDC,0xD7,
+	0xD2,0xCF,0xD3,0xDE,0xF0,0x11,0x2F,0x3A,0x3A,0x39,0x3B,0x3B,0x3A,0x3B,0x38,0x38,
+	0x34,0x16,0xEF,0xD0,0xC5,0xCC,0xE7,0x08,0x19,0x15,0xFF,0xED,0xDD,0xCF,0xC9,0xC8,
+	0xC8,0xC9,0xC7,0xCB,0xDD,0xED,0xF4,0xFE,0x10,0x26,0x37,0x3B,0x32,0x1F,0x0F,0x04,
+	0x05,0x1F,0x38,0x3A,0x3A,0x36,0x16,0xED,0xCD,0xC7,0xC9,0xCB,0xEA,0x17,0x34,0x3B,
+	0x2D,0x0C,0xF3,0xE8,0xD1,0xC6,0xC8,0xC7,0xC9,0xC6,0xDE,0x13,0x27,0x1F,0x1C,0x25,
+	0x32,0x36,0x23,0x11,0x08,0xF0,0xDC,0xD8,0xD6,0xD3,0xD4,0xE5,0x0F,0x36,0x39,0x36,
+	0x35,0x31,0x2D,0x16,0xFE,0xEC,0xDF,0xE4,0xFC,0x28,0x3B,0x38,0x37,0x38,0x2E,0x0C,
+	0xE4,0xC9,0xC4,0xC9,0xDD,0x01,0x14,0x11,0x0D,0x0E,0x0F,0x05,0xE6,0xCA,0xC9,0xCF,
+	0xD5,0xE6,0xFC,0x03,0xF2,0xE5,0xEF,0xF7,0xEE,0xE4,0xEB,0x0A,0x2D,0x3A,0x39,0x2F,
+	0x18,0x0B,0x0C,0x03,0xF3,0xF4,0x06,0x1C,0x2C,0x29,0x12,0x02,0xF8,0xF2,0xED,0xEA,
+	0xEA,0xEB,0xEF,0xF2,0xF2,0xE9,0xDA,0xE4,0xF3,0xF2,0xFA,0x10,0x28,0x2D,0x19,0x0D,
+	0x11,0x0D,0xFC,0xE8,0xDB,0xDE,0xF2,0x05,0x12,0x29,0x36,0x37,0x34,0x1B,0xF3,0xDF,
+	0xE0,0xEB,0x00,0x1A,0x20,0x14,0x09,0xFB,0xDC,0xC7,0xC5,0xC8,0xE2,0x03,0x11,0x09,
+	0xF4,0xDE,0xD0,0xD6,0xD6,0xCB,0xC8,0xCB,0xDC,0xFC,0x19,0x28,0x2A,0x22,0x23,0x2D,
+	0x36,0x37,0x31,0x1E,0x04,0xEE,0xD3,0xC6,0xC9,0xC8,0xCC,0xE1,0x0A,0x2E,0x37,0x34,
+	0x2E,0x2E,0x35,0x2D,0x10,0xF1,0xDA,0xD0,0xD8,0xF3,0x1F,0x36,0x36,0x31,0x20,0x0B,
+	0xF4,0xE3,0xDE,0xF2,0x15,0x2F,0x38,0x31,0x11,0xEA,0xDA,0xDD,0xEA,0xF3,0xF4,0xE4,
+	0xCA,0xC5,0xC8,0xC7,0xC8,0xC7,0xD3,0xE3,0xF1,0x0F,0x28,0x32,0x30,0x2C,0x35,0x37,
+	0x36,0x36,0x35,0x36,0x1B,0xEE,0xD1,0xC7,0xDE,0xFA,0x07,0x16,0x18,0x04,0xE8,0xCE,
+	0xC8,0xD2,0xDC,0xEA,0x05,0x15,0x19,0x20,0x26,0x25,0x1D,0x10,0xFF,0xDE,0xCA,0xC8,
+	0xC9,0xC8,0xCD,0xF3,0x0C,0x04,0xFC,0x06,0x1B,0x20,0x16,0x0F,0x1E,0x32,0x36,0x34,
+	0x37,0x2F,0x1D,0x12,0x01,0xEF,0xE1,0xD9,0xE5,0xF9,0xFE,0xFD,0x01,0x0A,0x10,0x06,
+	0xF7,0xE5,0xE2,0xEE,0xED,0xE2,0xD7,0xD7,0xEC,0x00,0x0D,0x21,0x2F,0x34,0x31,0x26,
+	0x12,0x04,0x01,0xFE,0x0C,0x29,0x35,0x33,0x35,0x2C,0x01,0xDE,0xD2,0xC6,0xC9,0xDB,
+	0xE9,0xEF,0xF9,0xF2,0xD8,0xC8,0xC7,0xD3,0xDF,0xED,0xF9,0xF6,0xF6,0xF6,0xED,0xE7,
+	0xD8,0xCC,0xD2,0xD5,0xDF,0xF9,0x19,0x2A,0x2A,0x29,0x29,0x20,0x04,0xEF,0xE7,0xE8,
+	0xFE,0x16,0x29,0x2F,0x20,0x0E,0x06,0x03,0xF8,0xE1,0xDC,0xE9,0xF2,0xFE,0xFE,0xFA,
+	0x00,0x09,0x16,0x1B,0x15,0x0C,0x0F,0x1E,0x2D,0x37,0x35,0x34,0x34,0x34,0x30,0x19,
+	0x07,0xF7,0xE5,0xE2,0xDB,0xCB,0xC6,0xD1,0xDB,0xD6,0xCC,0xC7,0xD5,0xEA,0xF7,0x07,
+	0x14,0x23,0x32,0x2F,0x29,0x23,0x12,0xFF,0xEA,0xD2,0xC9,0xD0,0xD7,0xE2,0xFA,0x18,
+	0x2E,0x2E,0x1B,0x03,0xEE,0xEA,0xF2,0xFB,0x00,0xF2,0xD4,0xC6,0xC7,0xC7,0xC9,0xC9,
+	0xD6,0xF5,0x11,0x24,0x33,0x35,0x35,0x32,0x20,0x12,0x08,0x08,0x12,0x14,0x0B,0xFD,
+	0xED,0xE6,0xDB,0xCD,0xC9,0xD3,0xF4,0x10,0x1F,0x22,0x15,0x0D,0x0A,0x0A,0x17,0x18,
+	0x05,0xED,0xDB,0xD6,0xE7,0x05,0x14,0x12,0x13,0x18,0x14,0x0C,0xFC,0xE9,0xE4,0xDF,
+	0xDD,0xEC,0xFD,0x04,0x02,0xFE,0xF8,0xF4,0xFB,0xFC,0xEE,0xDB,0xCC,0xC8,0xCA,0xE0,
+	0x09,0x21,0x22,0x23,0x2C,0x28,0x14,0x0B,0x11,0x1A,0x21,0x1A,0x00,0xDA,0xC5,0xC7,
+	0xC7,0xCB,0xEA,0x0B,0x14,0x1D,0x21,0x16,0x09,0xFE,0xFF,0xFF,0xF2,0xEA,0xE7,0xE1,
+	0xDC,0xE8,0x04,0x1A,0x24,0x23,0x1E,0x14,0x03,0xF0,0xE8,0xF5,0x13,0x2D,0x2F,0x27,
+	0x13,0xF9,0xF0,0xE8,0xDE,0xDD,0xF1,0x11,0x29,0x36,0x2C,0x13,0xFF,0xF6,0xE9,0xD1,
+	0xC6,0xC9,0xC7,0xCF,0xF7,0x1B,0x22,0x1C,0x18,0x18,0x16,0x12,0x0B,0x02,0xF6,0xDB,
+	0xC8,0xC7,0xC8,0xC9,0xCE,0xE4,0xFA,0x1B,0x34,0x36,0x34,0x2F,0x32,0x37,0x32,0x27,
+	0x1F,0x12,0x08,0x09,0x03,0x01,0x11,0x22,0x23,0x16,0x03,0xE8,0xD8,0xD3,0xCD,0xD3,
+	0xDB,0xDE,0xE8,0xEE,0xF1,0xF6,0xFC,0x02,0x05,0x0C,0x18,0x1B,0x0B,0xF0,0xD5,0xCB,
+	0xD9,0xF6,0x08,0x09,0x06,0x01,0xFF,0xF3,0xE4,0xDC,0xDD,0xEC,0xFE,0x15,0x28,0x28,
+	0x16,0x07,0x06,0x00,0xEE,0xE7,0xF0,0xF6,0xFD,0x05,0x04,0x01,0x05,0x0C,0x07,0xF4,
+	0xDA,0xCA,0xD3,0xEA,0x02,0x13,0x17,0x14,0x0B,0x0C,0x18,0x1C,0x10,0x01,0xF9,0xF2,
+	0xED,0xF0,0x02,0x13,0x11,0x03,0xF7,0xF6,0xF7,0xF3,0xF1,0xF8,0x0B,0x21,0x27,0x22,
+	0x20,0x1E,0x1F,0x19,0x0B,0x00,0x00,0x07,0x0D,0x20,0x2B,0x2A,0x24,0x1C,0x10,0x01,
+	0xFB,0xF9,0xF5,0xF4,0xE5,0xCC,0xC7,0xC8,0xC7,0xC7,0xC8,0xC7,0xCD,0xE7,0xFF,0x14,
+	0x21,0x26,0x2D,0x2C,0x2A,0x2C,0x27,0x1D,0x0A,0xEC,0xD1,0xCA,0xCB,0xCC,0xDD,0xFC,
+	0x1A,0x29,0x26,0x15,0x00,0xF9,0x01,0x06,0x03,0xF9,0xE6,0xD9,0xD4,0xD7,0xD9,0xDC,
+	0xEA,0x01,0x19,0x25,0x2F,0x2E,0x23,0x19,0x08,0xF6,0xEA,0xEB,0xF5,0xFA,0xFE,0x04,
+	0x05,0x04,0xF9,0xEC,0xEC,0xF7,0x0C,0x18,0x18,0x12,0x05,0x03,0x08,0x13,0x21,0x1E,
+	0x0C,0xF5,0xE1,0xD6,0xE0,0xFA,0x0B,0x10,0x18,0x20,0x1A,0x11,0x04,0xF3,0xEC,0xE3,
+	0xDC,0xE7,0xF3,0xF9,0xFC,0x00,0x01,0xFD,0x02,0x03,0xF4,0xE3,0xD5,0xCF,0xD5,0xEB,
+	0x0C,0x1E,0x1D,0x1C,0x25,0x22,0x12,0x0C,0x13,0x1F,0x25,0x1F,0x08,0xE2,0xCC,0xC9,
+	0xCA,0xD5,0xF1,0x0B,0x13,0x1B,0x1C,0x12,0x06,0xFD,0xFF,0x00,0xF4,0xEB,0xE9,0xE4,
+	0xDE,0xE9,0x04,0x19,0x24,0x22,0x1D,0x14,0x02,0xEF,0xE8,0xF5,0x12,0x2C,0x2E,0x26,
+	0x12,0xF9,0xEF,0xE8,0xDE,0xDE,0xF1,0x10,0x28,0x35,0x2B,0x11,0xFF,0xF7,0xE9,0xD3,
+	0xC9,0xCC,0xCB,0xD4,0xFB,0x1D,0x24,0x1E,0x19,0x1A,0x18,0x15,0x0E,0x04,0xF8,0xDD,
+	0xCB,0xC9,0xCA,0xCA,0xD0,0xE5,0xFA,0x1C,0x34,0x37,0x34,0x30,0x33,0x36,0x31,0x26,
+	0x1E,0x11,0x07,0x08,0x01,0x01,0x11,0x24,0x26,0x17,0x02,0xE8,0xD9,0xD4,0xCC,0xD2,
+	0xDA,0xDC,0xE7,0xEE,0xEF,0xF5,0xFC,0x03,0x06,0x0D,0x18,0x1A,0x07,0xE6,0xCF,0xCA,
+	0xD3,0xF4,0x09,0x09,0x07,0xFB,0xF0,0xE2,0xD2,0xCA,0xD5,0xEB,0x04,0x23,0x35,0x33,
+	0x1E,0x0C,0x0A,0x03,0xF3,0xF0,0xFB,0xFF,0x06,0x0C,0x07,0x06,0x0B,0x13,0x10,0xFC,
+	0xDC,0xCA,0xD7,0xF3,0x10,0x1D,0x17,0x0A,0xFF,0x02,0x0F,0x1A,0x15,0x07,0x03,0xF9,
+	0xE6,0xE1,0xEF,0x04,0x0A,0xFD,0xEF,0xEF,0xF5,0xF8,0xF9,0xFD,0x16,0x32,0x34,0x33,
+	0x30,0x28,0x22,0x15,0x02,0xF4,0xF6,0xF8,0xF7,0x06,0x11,0x12,0x0B,0xFE,0xF3,0xEA,
+	0xEE,0xF8,0xFE,0xFF,0xEA,0xCC,0xC7,0xC8,0xC8,0xCA,0xCB,0xCB,0xCB,0xE6,0x08,0x20,
+	0x2C,0x28,0x28,0x25,0x2A,0x34,0x32,0x33,0x27,0x02,0xDA,0xC7,0xC9,0xCB,0xCA,0xD8,
+	0xFB,0x1F,0x30,0x28,0x11,0x08,0x12,0x15,0x09,0x03,0xFF,0xF5,0xF9,0x08,0x0D,0x04,
+	0x03,0x11,0x1F,0x24,0x1F,0x07,0xF2,0xE6,0xD1,0xC6,0xC8,0xC8,0xC9,0xC8,0xDF,0x11,
+	0x30,0x34,0x32,0x2E,0x32,0x33,0x33,0x28,0x07,0xE9,0xDC,0xE5,0x03,0x25,0x34,0x2F,
+	0x1E,0x03,0xE2,0xCC,0xC8,0xCD,0xDF,0xFB,0x18,0x2A,0x24,0x18,0x14,0x10,0x04,0xE7,
+	0xCD,0xC9,0xC9,0xC8,0xD5,0xF5,0x14,0x1B,0x11,0x0B,0x01,0xF4,0xEB,0xE8,0xF2,0x03,
+	0x03,0xF1,0xDD,0xD4,0xDF,0xF0,0xFB,0x05,0x1A,0x32,0x32,0x33,0x2E,0x1C,0x13,0x0C,
+	0x13,0x21,0x22,0x15,0x0C,0xFF,0xE6,0xD5,0xD7,0xE8,0xF7,0xF6,0xE0,0xCC,0xC9,0xCA,
+	0xC9,0xCC,0xD2,0xDE,0xE9,0xF8,0x18,0x33,0x35,0x33,0x28,0x1E,0x19,0x1C,0x23,0x16,
+	0x01,0xF5,0xE7,0xDF,0xE7,0xF5,0xF2,0xE3,0xD5,0xCB,0xD4,0xE8,0xFC,0x0C,0x0C,0x03,
+	0x03,0x13,0x29,0x33,0x28,0x10,0xF6,0xD9,0xCB,0xCD,0xCD,0xD5,0xE8,0xF3,0xF9,0x0A,
+	0x23,0x33,0x28,0x13,0x05,0xFC,0x01,0x0F,0x14,0x06,0xED,0xD9,0xD8,0xEF,0x0F,0x21,
+	0x18,0x0C,0x05,0xF9,0xEF,0xF4,0x0B,0x19,0x15,0x14,0x0D,0x05,0x06,0x0B,0x10,0x12,
+	0x13,0x0B,0xFB,0xF2,0xF5,0xFA,0xF6,0xF6,0x02,0x09,0x0B,0x1A,0x2D,0x33,0x2D,0x10,
+	0xF0,0xDD,0xCB,0xC9,0xCD,0xCF,0xDB,0xF4,0x0F,0x21,0x26,0x22,0x13,0x06,0xF5,0xD6,
+	0xC9,0xCC,0xCC,0xCC,0xCB,0xCD,0xDC,0xF1,0xFB,0x09,0x1F,0x2C,0x2F,0x29,0x2B,0x34,
+	0x33,0x33,0x33,0x31,0x17,0xFD,0xFB,0xF9,0xF7,0xFC,0x02,0xFB,0xEB,0xD8,0xC9,0xCA,
+	0xC9,0xD4,0xEB,0xF1,0xEC,0xF1,0x01,0x13,0x18,0x0B,0x01,0xF9,0xEB,0xE9,0xEA,0xE6,
+	0xEB,0xFA,0x07,0x0C,0x06,0xF7,0xF1,0xF6,0xFE,0x03,0x05,0x05,0xF7,0xE7,0xE3,0xE0,
+	0xE1,0xE2,0xEB,0xFD,0x03,0x00,0xF9,0x04,0x1B,0x25,0x1F,0x18,0x1D,0x1F,0x1A,0x18,
+	0x29,0x34,0x33,0x31,0x1B,0xFB,0xE6,0xDE,0xDD,0xEC,0x0B,0x2A,0x34,0x2A,0x16,0xF7,
+	0xE4,0xDC,0xDC,0xE9,0xF5,0xF0,0xE6,0xD5,0xC9,0xCA,0xCD,0xCC,0xCF,0xE5,0xFA,0x04,
+	0x03,0xFA,0xED,0xEC,0xF8,0x06,0x12,0x18,0x1A,0x18,0x12,0x02,0xF1,0xE4,0xDD,0xE2,
+	0xF3,0x17,0x32,0x35,0x34,0x22,0x06,0xF5,0xEF,0xF6,0xF4,0xE9,0xE8,0xE7,0xE6,0xF3,
+	0x0B,0x1D,0x18,0x08,0x00,0xF6,0xEB,0xEA,0xFE,0x15,0x20,0x2D,0x35,0x2F,0x21,0x17,
+	0x13,0x14,0x11,0xFF,0xEC,0xDA,0xCB,0xCD,0xCC,0xD0,0xF3,0x0F,0x14,0x0F,0x0B,0x14,
+	0x1E,0x1D,0x17,0x14,0x12,0x16,0x2A,0x32,0x31,0x31,0x32,0x23,0xFE,0xDB,0xC9,0xD1,
+	0xE6,0xFC,0x08,0xFF,0xE2,0xCC,0xCB,0xCA,0xCC,0xCE,0xD5,0xE8,0xF3,0xFB,0x06,0x11,
+	0x13,0x05,0xF7,0xF0,0xE1,0xD1,0xD3,0xE6,0xFD,0x10,0x19,0x19,0x0F,0xF9,0xED,0xEE,
+	0xF5,0xFD,0x02,0x02,0xF8,0xE2,0xD3,0xDB,0xF0,0xFE,0xF9,0xFA,0x0A,0x12,0x0D,0x06,
+	0x0C,0x20,0x2C,0x25,0x17,0x0D,0x07,0x07,0x0A,0x12,0x2B,0x36,0x32,0x32,0x2C,0x1B,
+	0x05,0xF0,0xE1,0xE3,0xF5,0x0F,0x23,0x28,0x18,0xF4,0xD6,0xCC,0xCD,0xCF,0xCE,0xCF,
+	0xCE,0xCF,0xCD,0xD6,0xE5,0xE9,0xF2,0xFB,0x07,0x19,0x26,0x29,0x17,0xFB,0xEA,0xDE,
+	0xD9,0xE1,0xE8,0xEA,0xF2,0x04,0x0D,0x17,0x22,0x28,0x2E,0x25,0x16,0x13,0x20,0x30,
+	0x34,0x2F,0x17,0xF4,0xDE,0xDD,0xF4,0x0D,0x13,0x13,0x15,0x09,0xF5,0xF1,0xFA,0x03,
+	0x01,0xED,0xDD,0xD5,0xDB,0xF0,0x01,0x0A,0x13,0x27,0x34,0x32,0x33,0x32,0x33,0x29,
+	0x07,0xE5,0xD1,0xCE,0xD2,0xE2,0xFA,0x15,0x2C,0x34,0x26,0x08,0xF7,0xF7,0xFB,0xF7,
+	0xF0,0xE4,0xD5,0xCF,0xDD,0xF9,0x0E,0x0E,0x05,0x05,0x08,0x06,0x03,0xFF,0x05,0x11,
+	0x17,0x1A,0x0E,0xF3,0xE3,0xE3,0xEF,0xFE,0x07,0x0A,0x07,0xF7,0xE7,0xDA,0xD7,0xE1,
+	0xE7,0xEC,0xEC,0xE6,0xE3,0xE8,0xFA,0x09,0x10,0x13,0x18,0x2A,0x33,0x32,0x32,0x2C,
+	0x22,0x0D,0xFA,0xF1,0xF3,0xF9,0xFD,0x00,0x02,0x01,0xFC,0xEF,0xEC,0xF6,0x03,0x08,
+	0xFF,0xE6,0xD2,0xD0,0xD2,0xDE,0xED,0xF7,0xF7,0xF0,0xF7,0x00,0xFE,0xF2,0xED,0xF8,
+	0x0A,0x19,0x23,0x1C,0x09,0xFF,0xF5,0xEB,0xEC,0xEB,0xE8,0xE7,0xE0,0xDC,0xE6,0xFB,
+	0x0C,0x0C,0x09,0x0E,0x13,0x11,0x0F,0x1B,0x2B,0x31,0x30,0x24,0x13,0x07,0x0A,0x13,
+	0x16,0x19,0x19,0x12,0x0D,0x05,0xF7,0xE4,0xDC,0xE0,0xE3,0xEC,0xFD,0x09,0x07,0xFE,
+	0xF5,0xF8,0x01,0x0A,0x0E,0x0A,0x02,0x03,0x06,0x04,0x0B,0x19,0x21,0x1B,0x10,0xFE,
+	0xEA,0xDA,0xD2,0xD3,0xDD,0xF7,0x13,0x23,0x21,0x16,0x0B,0x05,0x00,0xF2,0xE2,0xD6,
+	0xD1,0xDC,0xF7,0x11,0x24,0x23,0x1A,0x12,0x05,0xFA,0xF9,0xFC,0xFF,0xFE,0xF3,0xDD,
+	0xD4,0xD5,0xD7,0xE3,0xEF,0xF9,0x0E,0x23,0x2C,0x2E,0x2A,0x29,0x27,0x1C,0x18,0x11,
+	0x01,0xF6,0xF8,0xFC,0xFD,0x04,0x0B,0x0F,0x10,0x0B,0xFC,0xEF,0xE8,0xE0,0xDB,0xD7,
+	0xD3,0xD3,0xD6,0xE8,0x02,0x0F,0x0F,0x0C,0x14,0x1E,0x20,0x1E,0x17,0x10,0x06,0xF8,
+	0xF5,0xF8,0xFE,0x03,0x02,0xFC,0xFB,0xFF,0xFF,0xFB,0xFF,0x0D,0x1A,0x1A,0x10,0x02,
+	0xF2,0xEB,0xF1,0xFA,0x02,0x00,0xF4,0xE9,0xDB,0xD5,0xD6,0xD5,0xD9,0xE7,0xF8,0x04,
+	0x0B,0x0A,0x08,0x09,0x0A,0x0D,0x0F,0x15,0x1B,0x18,0x10,0x05,0xFC,0xF7,0xEF,0xEB,
+	0xE7,0xEC,0xF6,0xFF,0x0A,0x12,0x1C,0x22,0x1D,0x1A,0x19,0x12,0x03,0xF2,0xE5,0xDF,
+	0xE0,0xEC,0xF9,0xFF,0x05,0x04,0x03,0x04,0x01,0x01,0x00,0x04,0x12,0x20,0x29,0x27,
+	0x18,0x04,0xF7,0xEB,0xE7,0xEA,0xED,0xF3,0xFB,0xFD,0xF5,0xF1,0xF6,0xFE,0xFE,0xF8,
+	0xF5,0xF3,0xF3,0xF3,0xFC,0x09,0x0B,0x05,0xFF,0x02,0x06,0x09,0x08,0x08,0x0F,0x14,
+	0x13,0x10,0x0E,0x05,0xF9,0xF3,0xEF,0xF3,0xFB,0x02,0x06,0x04,0x01,0xF9,0xF3,0xF5,
+	0xF8,0xFA,0xF4,0xEB,0xE6,0xE8,0xF6,0x05,0x0E,0x0E,0x0E,0x13,0x14,0x13,0x0E,0x06,
+	0x00,0xF4,0xE8,0xE5,0xEA,0xF3,0xF9,0xFC,0xFF,0x04,0x07,0x00,0xFD,0x01,0x04,0x04,
+	0xF8,0xE6,0xD9,0xD6,0xDB,0xE8,0xF7,0x03,0x08,0x06,0x07,0x07,0x01,0xFB,0xF6,0xFD,
+	0x0A,0x14,0x17,0x0F,0x03,0xFB,0xF7,0xF4,0xF5,0xF5,0xF4,0xF2,0xEB,0xE5,0xE8,0xF5,
+	0x02,0x05,0x05,0x09,0x0C,0x0C,0x0D,0x14,0x1C,0x21,0x21,0x18,0x0B,0x01,0x02,0x06,
+	0x07,0x0B,0x0B,0x08,0x07,0x04,0xFC,0xF0,0xE8,0xE7,0xE8,0xED,0xF8,0x00,0xFD,0xF6,
+	0xF2,0xF6,0xFF,0x07,0x0A,0x06,0x02,0x02,0x03,0x01,0x05,0x10,0x14,0x0F,0x06,0xFA,
+	0xEB,0xE0,0xDC,0xDE,0xE8,0xFB,0x11,0x1D,0x1C,0x14,0x0B,0x07,0x02,0xF7,0xE9,0xDF,
+	0xDD,0xE5,0xF9,0x0F,0x1D,0x1C,0x14,0x0D,0x02,0xF9,0xF9,0xFB,0xFD,0xFD,0xF4,0xE3,
+	0xDA,0xDB,0xDD,0xE7,0xF2,0xFB,0x0C,0x1D,0x23,0x25,0x23,0x21,0x1E,0x17,0x14,0x0E,
+	0x01,0xF8,0xFA,0xFD,0xFF,0x04,0x0A,0x0E,0x0E,0x09,0xFD,0xF2,0xEC,0xE6,0xE2,0xDE,
+	0xDA,0xD9,0xDD,0xEB,0x01,0x0D,0x0C,0x0A,0x10,0x18,0x1A,0x18,0x12,0x0D,0x03,0xF8,
+	0xF5,0xF8,0xFE,0x03,0x02,0xFC,0xFC,0xFE,0xFE,0xFB,0xFE,0x0A,0x14,0x14,0x0D,0x01,
+	0xF2,0xEE,0xF3,0xFA,0x00,0xFF,0xF5,0xEA,0xDE,0xDB,0xDC,0xDB,0xDD,0xEA,0xF9,0x04,
+	0x0A,0x08,0x07,0x08,0x09,0x0C,0x0D,0x11,0x17,0x14,0x0C,0x02,0xFA,0xF5,0xED,0xE6,
+	0xE3,0xE7,0xF2,0xFF,0x0B,0x14,0x19,0x1D,0x19,0x15,0x15,0x10,0x04,0xF3,0xE6,0xDE,
+	0xE0,0xEF,0xFF,0x07,0x0C,0x09,0x04,0x02,0xFE,0xFA,0xF6,0xFB,0x07,0x15,0x20,0x22,
+	0x18,0x0A,0x01,0xF7,0xF0,0xEE,0xEB,0xEC,0xF0,0xEE,0xE9,0xEC,0xF6,0x00,0xFF,0xFA,
+	0xF9,0xFA,0xFC,0x00,0x07,0x0D,0x0A,0x01,0xFD,0xFE,0x02,0x08,0x08,0x09,0x0F,0x11,
+	0x0D,0x09,0x0B,0x09,0x01,0xF8,0xF0,0xEE,0xF4,0xFD,0x05,0x09,0x0C,0x09,0x02,0x02,
+	0x04,0x01,0xF8,0xEF,0xE9,0xEA,0xF4,0x02,0x0B,0x09,0x08,0x04,0xFC,0xF9,0xF4,0xF0,
+	0xEB,0xE4,0xDF,0xDF,0xE8,0xF2,0xF8,0xFC,0x01,0x09,0x12,0x11,0x0E,0x0D,0x0B,0x03,
+	0xF6,0xEA,0xE3,0xE2,0xE9,0xF5,0x02,0x10,0x19,0x1C,0x19,0x0F,0x07,0x02,0x00,0x04,
+	0x0B,0x0D,0x08,0x01,0xF7,0xF2,0xF6,0xFD,0x01,0x01,0x00,0xFD,0xF5,0xEC,0xE7,0xEC,
+	0xF3,0xF9,0x01,0x05,0x07,0x0A,0x0C,0x0E,0x0E,0x10,0x11,0x0B,0x03,0xFE,0xF9,0xF3,
+	0xF2,0xF6,0xF8,0xFC,0x03,0x0C,0x12,0x11,0x05,0xFB,0xF7,0xF6,0xF4,0xF1,0xEC,0xE9,
+	0xEC,0xF6,0x04,0x0B,0x0A,0x06,0x04,0x02,0xFC,0xF8,0xF9,0xFA,0xF5,0xEC,0xE6,0xE5,
+	0xE7,0xED,0xF6,0xFE,0x08,0x12,0x18,0x18,0x18,0x1D,0x1F,0x19,0x13,0x0D,0x06,0x01,
+	0x04,0x04,0x04,0x04,0x00,0xFD,0xFC,0xF7,0xEE,0xE7,0xE7,0xEA,0xF0,0xF5,0xFA,0xFA,
+	0xFA,0xFE,0x06,0x0A,0x07,0x07,0x06,0x03,0xFE,0xF8,0xF4,0xF1,0xEF,0xEC,0xEC,0xEF,
+	0xF7,0x01,0x06,0x09,0x0E,0x16,0x19,0x15,0x12,0x12,0x0E,0x07,0x02,0xFF,0xFB,0xFD,
+	0x02,0x09,0x0C,0x0A,0x02,0xFC,0xF8,0xF0,0xE8,0xE6,0xE9,0xEF,0xF6,0xFB,0x00,0x01,
+	0x01,0x03,0x05,0x07,0x09,0x0C,0x0B,0x05,0x01,0xFF,0x01,0x03,0x03,0xFE,0xF8,0xF4,
+	0xF1,0xF5,0xFB,0x03,0x0A,0x0B,0x07,0x04,0x06,0x0C,0x0D,0x08,0xFE,0xF6,0xF0,0xF0,
+	0xF8,0x01,0x06,0x05,0x05,0x02,0xFA,0xF5,0xF6,0xF9,0xF9,0xF8,0xF6,0xEF,0xEC,0xF0,
+	0xF7,0xFC,0xFD,0x00,0x05,0x0A,0x0E,0x0F,0x0C,0x07,0x02,0xFA,0xF3,0xEC,0xE7,0xE7,
+	0xEB,0xF7,0x05,0x0D,0x0E,0x0C,0x0D,0x0F,0x0F,0x09,0x04,0x00,0x00,0x04,0x08,0x09,
+	0x06,0x06,0x06,0x07,0x05,0xFF,0xF9,0xF8,0xF9,0xF6,0xF5,0xF7,0xF6,0xF7,0xF6,0xF7,
+	0xF8,0xF9,0xFC,0x00,0x03,0x06,0x0A,0x0D,0x0B,0x0B,0x0C,0x0C,0x0B,0x08,0x02,0xFA,
+	0xF3,0xED,0xEC,0xF2,0xFA,0x00,0x01,0xFF,0xFB,0xFB,0xFC,0xFD,0xFC,0xFB,0xFA,0xFA,
+	0xF8,0xF9,0xFD,0x03,0x04,0x01,0xFF,0xFF,0x03,0x07,0x07,0x05,0x06,0x06,0x03,0x00,
+	0xFD,0xFA,0xF8,0xF6,0xF6,0xFA,0x01,0x0A,0x0B,0x06,0xFE,0xF9,0xF9,0xFA,0xFE,0x01,
+	0x01,0xFF,0xFD,0xFA,0xF8,0xF9,0xFA,0xFC,0xFE,0xFF,0xFF,0xFF,0xFD,0xFA,0xF8,0xF9,
+	0x00,0x06,0x0A,0x09,0x06,0x02,0xFF,0xFB,0xF7,0xF6,0xF6,0xF7,0xFE,0x07,0x0F,0x14,
+	0x11,0x0D,0x09,0x03,0xFF,0xFE,0xFD,0xFC,0xFA,0xF6,0xF2,0xF2,0xF7,0xFD,0x00,0xFF,
+	0xFD,0xFF,0x02,0x05,0x09,0x09,0x08,0x0A,0x0E,0x10,0x0F,0x0A,0x03,0xFF,0xFB,0xF5,
+	0xF3,0xF4,0xF6,0xFB,0xFC,0xFB,0xFC,0x00,0x02,0x02,0xFF,0xFD,0xFC,0xFD,0xFE,0xFE,
+	0xFF,0xFD,0xFB,0xFC,0x01,0x06,0x08,0x06,0x03,0x00,0xFC,0xFA,0xFA,0xFD,0x03,0x03,
+	0x02,0xFF,0xFB,0xF6,0xF5,0xF7,0xF9,0xFE,0x02,0x02,0x01,0xFF,0xFE,0xFD,0xFC,0xFA,
+	0xF8,0xF7,0xF9,0xFE,0x04,0x07,0x07,0x06,0x05,0x03,0xFF,0xFD,0xFA,0xF7,0xF8,0xF7,
+	0xF5,0xF5,0xF6,0xF9,0xFB,0xFA,0xFB,0xFC,0xFF,0x02,0x05,0x07,0x06,0x04,0x04,0x06,
+	0x09,0x0C,0x0A,0x09,0x07,0x02,0xFF,0xFD,0xFC,0xFD,0xFE,0xFE,0xFC,0xFD,0xFC,0xFB,
+	0xFA,0xFC,0x01,0x04,0x04,0x03,0x04,0x03,0x04,0x04,0x03,0x03,0x01,0x00,0xFF,0xFD,
+	0xFA,0xFA,0xFD,0x00,0x02,0x02,0x00,0xFE,0xFC,0xFA,0xF9,0xF8,0xF7,0xF6,0xF9,0xFA,
+	0xFC,0x00,0x03,0x05,0x04,0x04,0x05,0x04,0x03,0x01,0x00,0x01,0x04,0x08,0x0A,0x0B,
+	0x0B,0x0A,0x05,0xFF,0xF9,0xF6,0xF8,0xFB,0xFF,0x01,0x01,0xFE,0xF9,0xF8,0xF8,0xF7,
+	0xF5,0xF5,0xF8,0xFA,0xFF,0x02,0x04,0x04,0x02,0x00,0xFF,0xFE,0xFD,0xFD,0xFD,0xFC,
+	0xFB,0xFA,0xF9,0xFA,0xF9,0xFB,0xFD,0x01,0x04,0x05,0x04,0x02,0x01,0x00,0x01,0x02,
+	0x04,0x03,0x00,0xFD,0xFC,0xFB,0xFD,0x00,0x01,0x03,0x04,0x03,0x03,0x02,0x01,0xFF,
+	0xFD,0xFD,0xFE,0x02,0x05,0x06,0x06,0x04,0xFF,0xFB,0xF7,0xF4,0xF3,0xF3,0xF6,0xF8,
+	0xFB,0xFF,0x02,0x02,0x01,0xFF,0x00,0x00,0xFF,0xFD,0xFA,0xF9,0xF7,0xF5,0xF6,0xF7,
+	0xF9,0xFC,0xFF,0x01,0x04,0x07,0x07,0x08,0x07,0x08,0x09,0x09,0x08,0x08,0x05,0x01,
+	0xFF,0xFD,0xFB,0xFC,0xFF,0x00,0x01,0x01,0xFD,0xFB,0xFA,0xFA,0xF9,0xF7,0xF6,0xF7,
+	0xF8,0xFB,0x00,0x03,0x03,0x03,0x02,0x04,0x06,0x07,0x04,0x01,0xFF,0xFB,0xF9,0xFA,
+	0xFB,0xFC,0xFD,0xFE,0xFE,0xFF,0x00,0x01,0x01,0x00,0x02,0x04,0x05,0x05,0x04,0x02,
+	0x02,0x01,0xFF,0xFE,0xFC,0xFB,0xFA,0xFA,0xFB,0xFB,0xFD,0xFD,0xFC,0xFC,0xFD,0xFE,
+	0xFD,0xFE,0xFE,0xFF,0x00,0x01,0x03,0x04,0x04,0x05,0x04,0x03,0x01,0xFF,0xFE,0xFF,
+	0xFF,0x00,0xFF,0xFE,0xFC,0xFB,0xFC,0xFE,0xFF,0xFF,0xFE,0xFD,0xFC,0xFB,0xFC,0xFE,
+	0xFF,0xFD,0xFD,0xFE,0xFE,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x01,0x00,
+	0xFF,0x00,0x01,0x03,0x03,0x03,0x01,0xFF,0xFE,0xFD,0xFE,0xFF,0x00,0x01,0x01,0x00,
+	0xFF,0xFF,0xFE,0xFF,0x00,0xFE,0xFC,0xFA,0xF9,0xFA,0xFB,0xFC,0xFE,0xFF,0x01,0x01,
+	0x02,0x04,0x03,0x02,0x00,0xFF,0xFD,0xFD,0xFC,0xFC,0xFB,0xFC,0xFE,0xFF,0x00,0x01,
+	0x01,0x02,0x02,0x01,0xFF,0x00,0x02,0x02,0x03,0x02,0x01,0xFF,0xFF,0xFE,0xFF,0xFE,
+	0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFE,0xFD,0xFE,0xFE,0xFD,0xFE,0xFF,0xFF,0x00,
+	0x01,0x01,0x00,0x01,0x00,0xFF,0xFE,0xFD,0xFD,0xFE,0xFE,0xFD,0xFE,0xFF,0x00,0x01,
+	0x00,0x01,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFE,0xFE,0xFE,
+	0xFF,0xFE,0xFE,0xFD,0xFE,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,
+	0x00,0xFF,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0xFF,0xFE,0xFE,0xFF,
+	0xFE,0xFF,0xFF,0xFF,0xFE,0xFE,0xFF,0x00,0x01,0x00,0xFF,0xFF,0xFE,0xFF,0xFF,0x00,
+	0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0xFF,0x00,0xFF,0xFE,0xFD,0xFC,0xFD,0xFD,0xFC,0xFD,
+	0xFF,0x00,0x01,0x01,0x00,0x00,0xFF,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFC,0xFC,0xFD,
+	0xFF,0xFF,0x00,0x01,0x02,0x02,0x03,0x02,0x02,0x01,0x02,0x01,0x02,0x02,0x01,0x00,
+	0xFF,0xFE,0xFD,0xFE,0xFE,0xFF,0x00,0xFF,0xFF,0xFE,0xFD,0xFE,0xFD,0xFD,0xFC,0xFC,
+	0xFD,0xFD,0xFF,0x00,0xFF,0x00,0xFF,0x01,0x02,0x02,0x01,0x00,0x00,0xFE,0xFD,0xFD,
+	0xFE,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x01,0x02,0x01,0x01,0x00,
+	0x00,0xFF,0xFF,0xFE,0xFE,0xFC,0xFD,0xFD,0xFC,0xFD,0xFF,0xFF,0xFE,0xFD,0xFE,0xFF,
+	0xFE,0xFF,0xFE,0xFF,0xFF,0x00,0x01,0x02,0x01,0x02,0x02,0x01,0x00,0x00,0xFF,0x00,
+	0xFF,0x00,0xFF,0xFE,0xFE,0xFD,0xFE,0xFE,0xFF,0xFE,0xFF,0xFE,0xFE,0xFD,0xFE,0xFE,
+	0xFF,0xFE,0xFD,0xFE,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,
+	0xFF,0x00,0x00,0x01,0x02,0x01,0x00,0xFF,0xFE,0xFE,0xFE,0xFF,0x00,0x00,0x00,0x00,
+	0xFF,0xFE,0xFE,0xFF,0x00,0xFF,0xFD,0xFC,0xFB,0xFC,0xFD,0xFE,0xFE,0xFF,0x00,0x00,
+	0x01,0x02,0x02,0x01,0xFF,0x00,0xFE,0xFD,0xFD,0xFE,0xFD,0xFE,0xFE,0xFF,0xFF,0x00,
+	0x00,0x01,0x00,0xFF,0xFF,0x00,0x00,0x00,0x01,0x00,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE,
+	0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFE,0xFF,0xFF,0x00,0xFF,
+	0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFE,0xFD,0xFE,0xFE,0xFE,0xFF,0xFE,0xFF,0x00,
+	0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,
+	0xFF,0x00,0xFF,0xFE,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,
+	0xFF,0xFF,0x00,0x00,0x01,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,
+	0xFE,0xFF,0xFE,0xFE,0xFF,0xFE,0xFF,0x00,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFF,0x00,
+	0x00,0xFF,0xFE,0xFF,0xFE,0xFE,0xFF,0xFE,0xFE,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,
+	0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFE,0xFE,0xFF,0xFE,0xFD,0xFE,0xFE,0xFF,0x00,0xFF,
+	0x00,0xFF,0x00,0xFF,0x00,0x01,0x00,0xFF,0xFF,0xFE,0xFE,0xFF,0x00,0xFF,0x00,0xFF,
+	0x00,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,
+	0xFE,0xFF,0xFE,0xFD,0xFE,0xFD,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0xFF,0x00,0x00,
+	0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x00,0xFF,0xFE,
+	0xFF,0xFE,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,
+	0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF
+};
+static PROGMEM prog_uchar beat1_snd[588] = {
+	0xF9,0xEA,0xDA,0xCC,0xC3,0xC3,0xCB,0xD8,0xE6,0xF4,0x01,0x0E,0x1D,0x28,0x31,0x37,
+	0x3B,0x3C,0x3B,0x3C,0x3C,0x3B,0x3B,0x37,0x30,0x2C,0x25,0x1F,0x1A,0x10,0x0A,0x02,
+	0xFB,0xF8,0xF2,0xEB,0xE5,0xE1,0xDD,0xDA,0xDB,0xE3,0xEA,0xEA,0xED,0xEA,0xE1,0xD8,
+	0xD1,0xC7,0xBE,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,
+	0xBD,0xBC,0xBE,0xC5,0xCE,0xD7,0xDE,0xE6,0xEE,0xF8,0xFD,0x04,0x0D,0x14,0x1E,0x25,
+	0x2B,0x30,0x37,0x3C,0x3B,0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3C,0x3C,0x3C,
+	0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x34,0x2E,
+	0x2D,0x28,0x20,0x1C,0x0E,0xFC,0xEB,0xDA,0xD0,0xCC,0xCE,0xD4,0xDC,0xE7,0xEF,0xF6,
+	0xFC,0x01,0x05,0x0A,0x0D,0x0D,0x0E,0x0A,0x08,0x06,0x00,0xFC,0xFA,0xF4,0xEE,0xE6,
+	0xE0,0xD8,0xD1,0xCC,0xC3,0xBD,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,
+	0xBC,0xBC,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBC,0xBD,0xBC,0xBD,
+	0xBC,0xBD,0xBC,0xBC,0xBD,0xBC,0xBD,0xBC,0xC0,0xC9,0xD4,0xE0,0xEC,0xF8,0x01,0x0D,
+	0x14,0x1D,0x29,0x32,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x3C,0x3C,
+	0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,
+	0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3C,0x38,0x28,0x14,0x02,0xF4,0xED,0xEF,0xF4,0xFA,
+	0x00,0x09,0x12,0x1B,0x20,0x24,0x2A,0x2D,0x2E,0x2D,0x2C,0x28,0x25,0x22,0x1C,0x16,
+	0x0E,0x06,0xFF,0xF9,0xEF,0xE9,0xE2,0xDA,0xD2,0xCA,0xC6,0xBD,0xBC,0xBD,0xBC,0xBD,
+	0xBC,0xBF,0xC1,0xBE,0xBD,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBC,0xBC,0xBC,
+	0xBC,0xBC,0xBC,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBD,0xBD,0xC2,0xCB,0xD7,
+	0xE0,0xE8,0xF4,0xFD,0x04,0x0C,0x16,0x1F,0x26,0x2B,0x35,0x3B,0x3B,0x3C,0x3B,0x3C,
+	0x3B,0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3C,0x3C,0x3B,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
+	0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,0x3A,0x35,0x31,0x2B,0x27,0x1C,0x08,0xF9,0xEA,0xDF,
+	0xDD,0xDD,0xE5,0xED,0xF4,0xFC,0x04,0x0B,0x13,0x1A,0x1D,0x1F,0x1F,0x1F,0x1E,0x1C,
+	0x16,0x10,0x0D,0x05,0xFE,0xFB,0xF4,0xEE,0xE5,0xDC,0xD5,0xCC,0xC8,0xC0,0xBC,0xBD,
+	0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBD,0xBE,0xBD,0xBC,0xBC,0xBD,0xBC,0xBC,0xBC,0xBC,
+	0xBC,0xBC,0xBC,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBD,0xBC,0xBC,0xBD,0xBC,0xC2,
+	0xCE,0xD7,0xE2,0xEC,0xF4,0xFD,0x06,0x12,0x1A,0x22,0x2C,0x35,0x3B,0x3C,0x3B,0x3C,
+	0x3B,0x3C,0x3B,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3C,0x3C,0x3C,0x3C,
+	0x3C,0x3C,0x3C,0x3C,0x3B,0x3C,0x3C,0x3B,0x3C,0x3B,0x3C,0x3B,0x3B,0x39,0x30,0x22,
+	0x0C,0xFD,0xEF,0xE6,0xE7,0xE7,0xF1,0xFA,0xFF,0x0B,0x12,0x1A,0x22,0x25,0x28,0x2B,
+	0x2D,0x28,0x23,0x1D,0x19,0x13,0x0C,0x06,0xFF,0xFB,0xF3,0xE9,0xE4,0xDC,0xD3,0xCD,
+	0xC7,0xBF,0xBC,0xBD,0xBD,0xBD,0xBE,0xBD,0xBE,0xC1,0xC3,0xC3,0xBE,0xBD,0xBE,0xBD,
+	0xBE,0xBE,0xBF,0xBE,0xBF,0xBF,0xC0,0xBF,0xC0,0xC0,0xC1,0xC0,0xC1,0xC2,0xC2,0xC1,
+	0xC2,0xC1,0xC5,0xCE,0xD9,0xE4,0xED,0xF7,0x00,0x09,0x13,0x19,0x22,0x2D,0x34,0x3C,
+	0x41,0x40,0x40,0x41,0x40,0x3F,0x3F,0x40,0x3F,0x3F,0x3E,0x3F,0x3E,0x3D,0x3E,0x3E,
+	0x3D,0x3C,0x3D,0x3D,0x3C,0x3B,0x3C,0x3C,0x3B,0x3A,0x3B,0x3A,0x3B,0x3B,0x39,0x34,
+	0x2E,0x29,0x26,0x21,0x1B,0x17,0x13,0x10,0x0A,0x04,0x01,0xFF
+};
+static PROGMEM prog_uchar beat2_snd[527] = {
+	0xFE,0xF3,0xE4,0xD5,0xCA,0xC7,0xCD,0xD6,0xE4,0xF3,0xFE,0x0C,0x1A,0x24,0x2F,0x36,
+	0x3A,0x3E,0x41,0x40,0x3F,0x3D,0x3B,0x38,0x32,0x2C,0x27,0x22,0x1B,0x17,0x0F,0x08,
+	0x04,0xFD,0xF8,0xF2,0xEB,0xE6,0xDF,0xDE,0xE2,0xE5,0xEB,0xF0,0xEF,0xEF,0xE9,0xE0,
+	0xD9,0xD1,0xC5,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC2,0xC1,0xC2,0xC1,0xC1,0xC2,0xC1,
+	0xC2,0xC1,0xC4,0xCB,0xD1,0xD9,0xE3,0xE8,0xF3,0xFD,0x02,0x09,0x13,0x1B,0x24,0x2A,
+	0x2F,0x35,0x3B,0x42,0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x42,0x42,0x42,0x42,0x42,
+	0x42,0x42,0x42,0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x42,0x41,0x42,0x3B,0x37,0x35,
+	0x2F,0x2B,0x26,0x23,0x1F,0x18,0x14,0x0F,0x0D,0x09,0x04,0x00,0xFC,0xF9,0xF4,0xF1,
+	0xEE,0xEA,0xE9,0xE5,0xE2,0xDE,0xCF,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC3,
+	0xCC,0xD5,0xE2,0xEA,0xF2,0xF9,0xFC,0x01,0x02,0x01,0x02,0xFF,0xFC,0xF8,0xF5,0xF5,
+	0xEF,0xEB,0xE7,0xE0,0xDA,0xD6,0xD2,0xCE,0xCB,0xC7,0xC4,0xC2,0xC1,0xC2,0xC6,0xCF,
+	0xD8,0xDA,0xD9,0xD9,0xD4,0xCC,0xC6,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC1,
+	0xC1,0xC1,0xC1,0xC2,0xC1,0xC6,0xCE,0xD6,0xDD,0xE6,0xF1,0xFB,0x02,0x0A,0x13,0x1E,
+	0x27,0x30,0x3A,0x41,0x42,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+	0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+	0x41,0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x40,0x3A,0x39,0x32,0x2B,0x26,0x22,0x1C,
+	0x16,0x12,0x0E,0x08,0x04,0x03,0x00,0xFA,0xF8,0xF5,0xEF,0xE6,0xD2,0xC3,0xC1,0xC1,
+	0xC2,0xC1,0xC2,0xC1,0xC3,0xCC,0xD6,0xE1,0xEA,0xF2,0xF9,0xFB,0xFD,0xFE,0xFF,0x00,
+	0xFE,0xFC,0xFA,0xF9,0xF1,0xEB,0xE8,0xE4,0xDD,0xD8,0xD4,0xCC,0xC7,0xC2,0xC1,0xC2,
+	0xC1,0xC2,0xC1,0xC2,0xC2,0xC6,0xCA,0xCB,0xCB,0xC5,0xC1,0xC2,0xC1,0xC2,0xC1,0xC1,
+	0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC1,0xC2,0xC1,0xC2,0xC1,0xC3,0xCB,0xD4,
+	0xDE,0xE9,0xF3,0xFA,0x02,0x0C,0x14,0x1E,0x27,0x2E,0x36,0x3E,0x42,0x41,0x42,0x42,
+	0x41,0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+	0x42,0x42,0x42,0x41,0x42,0x41,0x42,0x42,0x41,0x42,0x41,0x42,0x3E,0x39,0x35,0x2F,
+	0x2B,0x28,0x21,0x1C,0x1A,0x14,0x0F,0x0E,0x06,0x01,0x02,0xFD,0xFA,0xF6,0xF2,0xF1,
+	0xEB,0xDC,0xCA,0xC1,0xC2,0xC1,0xC1,0xC2,0xC2,0xC7,0xD2,0xDD,0xE9,0xF2,0xF9,0x01,
+	0x06,0x09,0x0D,0x0B,0x0B,0x0A,0x07,0x05,0xFF,0xFA,0xF4,0xED,0xEB,0xE6,0xDD,0xDA,
+	0xD7,0xD0,0xCA,0xC8,0xC4,0xC1,0xC2,0xC1,0xC2,0xC8,0xCE,0xD5,0xD7,0xD5,0xD3,0xCC,
+	0xC7,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,0xC1,0xC2,
+	0xC2,0xC8,0xD3,0xD9,0xE1,0xEC,0xF5,0xFE,0x05,0x0F,0x18,0x21,0x29,0x31,0x39,0x40,
+	0x42,0x41,0x42,0x41,0x42,0x41,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+	0x42,0x42,0x42,0x42,0x42,0x42,0x41,0x40,0x41,0x41,0x40,0x3F,0x40,0x40,0x40,0x3F,
+	0x3C,0x36,0x31,0x2D,0x29,0x26,0x22,0x1A,0x19,0x16,0x0C,0x0B,0x05,0xFF,0x00
+};
+static PROGMEM prog_uchar beat3_snd[554] = {
+	0x05,0x04,0xF7,0xE8,0xDB,0xCF,0xCB,0xD3,0xDD,0xEA,0xF9,0x05,0x11,0x1D,0x27,0x31,
+	0x38,0x40,0x44,0x43,0x45,0x43,0x44,0x40,0x3C,0x37,0x30,0x2C,0x25,0x21,0x1A,0x12,
+	0x0C,0x05,0x03,0xFB,0xF5,0xF0,0xE9,0xE4,0xE0,0xE4,0xEA,0xEF,0xF4,0xF5,0xF2,0xEB,
+	0xE7,0xDD,0xD4,0xCB,0xC5,0xC6,0xC5,0xC6,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,
+	0xC6,0xC5,0xC6,0xCC,0xD2,0xDB,0xE3,0xE9,0xF2,0xFC,0x03,0x0A,0x12,0x1A,0x20,0x26,
+	0x2E,0x36,0x3B,0x42,0x44,0x44,0x45,0x44,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,
+	0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x44,0x45,0x44,0x45,0x44,0x40,0x3C,0x36,
+	0x33,0x2F,0x29,0x26,0x22,0x1E,0x19,0x16,0x11,0x0C,0x0C,0x07,0x05,0x02,0xFF,0xFB,
+	0xF7,0xF5,0xF1,0xED,0xEB,0xE6,0xE4,0xE3,0xE1,0xDE,0xDB,0xD9,0xD7,0xD5,0xD3,0xD2,
+	0xCA,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC8,0xD4,0xE1,0xEB,0xF3,0xF9,
+	0x00,0x05,0x07,0x09,0x09,0x0B,0x0A,0x09,0x08,0x05,0x04,0xFE,0xFE,0xFA,0xF3,0xF2,
+	0xED,0xE8,0xE5,0xE3,0xDE,0xD8,0xD6,0xD7,0xDE,0xE7,0xEE,0xF4,0xF4,0xF1,0xED,0xE7,
+	0xE2,0xDB,0xD3,0xCD,0xC7,0xC5,0xC6,0xC5,0xC6,0xC5,0xC5,0xC6,0xC6,0xC9,0xCF,0xD6,
+	0xDD,0xE3,0xEB,0xF4,0xFE,0x04,0x0A,0x13,0x1D,0x24,0x2C,0x34,0x3C,0x43,0x45,0x44,
+	0x45,0x44,0x45,0x45,0x45,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+	0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x44,0x45,
+	0x43,0x3E,0x37,0x33,0x30,0x2A,0x27,0x22,0x1E,0x18,0x11,0x0E,0x09,0x06,0x02,0x00,
+	0xFB,0xF5,0xF5,0xEE,0xEA,0xEA,0xE3,0xE1,0xDE,0xDA,0xD6,0xD3,0xD3,0xD1,0xCB,0xC6,
+	0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC7,0xD2,0xDE,0xE7,0xF1,0xF5,0xF8,
+	0xFE,0x01,0x03,0x05,0x03,0x00,0xFF,0xFB,0xF7,0xF3,0xF0,0xEA,0xE5,0xE1,0xDE,0xDA,
+	0xD5,0xD1,0xCD,0xC9,0xC6,0xC6,0xC6,0xCF,0xD6,0xDC,0xE0,0xDE,0xDC,0xD6,0xD0,0xC9,
+	0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC8,0xCF,
+	0xD5,0xDD,0xE5,0xEF,0xF8,0x01,0x09,0x11,0x1B,0x23,0x2B,0x34,0x3B,0x43,0x45,0x44,
+	0x45,0x44,0x45,0x44,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+	0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x44,0x45,0x44,0x45,0x44,0x45,0x44,0x3F,
+	0x39,0x37,0x32,0x2B,0x27,0x24,0x20,0x1E,0x18,0x14,0x0E,0x09,0x06,0x07,0x02,0xFD,
+	0xFC,0xF6,0xF0,0xEA,0xE6,0xE4,0xE2,0xE0,0xDE,0xDC,0xDA,0xD6,0xD3,0xCD,0xC5,0xC6,
+	0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC5,0xCB,0xD7,0xE4,0xEF,0xF9,0x02,0x05,0x06,0x08,
+	0x0A,0x0C,0x0C,0x0C,0x0A,0x07,0x05,0x01,0xFE,0xF8,0xF3,0xF0,0xEE,0xE7,0xE1,0xDE,
+	0xD9,0xD5,0xD1,0xD1,0xD0,0xD5,0xDD,0xE3,0xE6,0xE6,0xE8,0xE3,0xDD,0xD9,0xD0,0xC9,
+	0xC6,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC5,0xC6,0xC6,0xC5,0xCA,0xD1,0xD8,0xDF,
+	0xE8,0xF2,0xFB,0x04,0x08,0x11,0x1B,0x24,0x2D,0x31,0x38,0x41,0x44,0x43,0x43,0x42,
+	0x43,0x42,0x43,0x42,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x42,
+	0x43,0x42,0x43,0x42,0x42,0x41,0x42,0x41,0x42,0x42,0x41,0x40,0x3C,0x38,0x31,0x2C,
+	0x28,0x20,0x1D,0x1A,0x13,0x0F,0x0B,0x07,0x02,0xFF
+};
+static PROGMEM prog_uchar beat4_snd[594] = {
+	0x03,0x06,0x06,0x05,0x06,0xFF,0xF0,0xE2,0xD4,0xCD,0xCD,0xD6,0xE4,0xF0,0xFE,0x0C,
+	0x16,0x24,0x2F,0x37,0x3D,0x41,0x44,0x43,0x43,0x44,0x42,0x40,0x3C,0x36,0x31,0x2A,
+	0x25,0x1E,0x16,0x11,0x0A,0x05,0xFF,0xF9,0xF3,0xEC,0xE8,0xE3,0xE0,0xE6,0xEB,0xF2,
+	0xF4,0xF2,0xF0,0xE7,0xDE,0xD6,0xCC,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC4,0xC5,0xC4,
+	0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xCC,0xD6,0xDD,0xE3,0xED,0xF8,0xFE,0x04,0x0C,
+	0x12,0x1A,0x23,0x29,0x31,0x37,0x3E,0x43,0x44,0x43,0x43,0x44,0x43,0x44,0x43,0x44,
+	0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x44,0x43,
+	0x44,0x41,0x3C,0x3A,0x35,0x2E,0x2A,0x25,0x21,0x1D,0x19,0x13,0x10,0x0A,0x05,0x04,
+	0x02,0xFF,0xF9,0xF7,0xF4,0xF1,0xED,0xE9,0xE5,0xE3,0xE1,0xDB,0xD4,0xD3,0xD1,0xD0,
+	0xD0,0xCD,0xCD,0xCC,0xCB,0xC9,0xCA,0xC9,0xC8,0xC9,0xC5,0xC7,0xC9,0xC7,0xC5,0xC4,
+	0xC5,0xC4,0xC4,0xC5,0xC4,0xC5,0xC4,0xC6,0xD1,0xDF,0xED,0xFA,0x03,0x0A,0x10,0x17,
+	0x1A,0x20,0x24,0x22,0x22,0x21,0x20,0x1B,0x19,0x17,0x13,0x0F,0x06,0x04,0x03,0x00,
+	0xFA,0xF4,0xF3,0xEC,0xE7,0xE9,0xEF,0xF7,0xFF,0x03,0x03,0xFF,0xFB,0xF6,0xEE,0xE6,
+	0xDF,0xD6,0xD4,0xD0,0xCA,0xC9,0xC6,0xC5,0xC7,0xC7,0xCC,0xCF,0xD3,0xD9,0xDE,0xE7,
+	0xEE,0xF6,0xFE,0x04,0x0E,0x14,0x1D,0x24,0x2C,0x35,0x39,0x42,0x44,0x43,0x44,0x43,
+	0x44,0x43,0x44,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+	0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x43,0x44,0x43,0x44,0x40,0x3A,0x34,
+	0x2F,0x2B,0x26,0x23,0x1C,0x15,0x12,0x0B,0x06,0x03,0x00,0xFB,0xF5,0xF1,0xED,0xE9,
+	0xE5,0xE3,0xE1,0xDC,0xDA,0xD6,0xD2,0xD2,0xCF,0xCA,0xC8,0xC6,0xC5,0xC5,0xC4,0xC5,
+	0xC4,0xC5,0xC4,0xC4,0xC4,0xC4,0xC4,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,
+	0xC5,0xC4,0xC5,0xCF,0xDD,0xEA,0xF5,0xFD,0x04,0x05,0x09,0x0D,0x10,0x11,0x10,0x0D,
+	0x0C,0x08,0x05,0x04,0x00,0xFC,0xF8,0xF4,0xF0,0xEC,0xE8,0xE4,0xDF,0xDC,0xDA,0xD9,
+	0xDF,0xE8,0xF1,0xF5,0xF5,0xF4,0xEE,0xE6,0xDF,0xD6,0xD1,0xCA,0xC4,0xC5,0xC4,0xC5,
+	0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xCB,0xD1,0xD7,0xE0,0xE9,0xEF,0xF9,0x02,0x06,0x0F,
+	0x19,0x21,0x29,0x33,0x3B,0x40,0x44,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+	0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+	0x44,0x44,0x43,0x44,0x44,0x44,0x43,0x40,0x3C,0x37,0x32,0x2D,0x29,0x24,0x1F,0x1A,
+	0x14,0x10,0x0D,0x09,0x05,0x03,0xFD,0xF6,0xF2,0xEE,0xEA,0xE6,0xE3,0xE2,0xDD,0xDA,
+	0xD7,0xD3,0xD2,0xD0,0xCB,0xC9,0xC6,0xC5,0xC5,0xC4,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,
+	0xC4,0xC4,0xC4,0xC4,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC4,0xC5,0xC4,0xCB,0xD9,
+	0xE7,0xF2,0xFA,0x02,0x05,0x07,0x0C,0x0F,0x11,0x11,0x0E,0x0D,0x09,0x05,0x04,0x01,
+	0xFD,0xF9,0xF5,0xF1,0xED,0xE9,0xE6,0xE1,0xDC,0xDA,0xD9,0xDD,0xE5,0xEF,0xF5,0xF5,
+	0xF5,0xF0,0xE8,0xE1,0xD8,0xD3,0xCC,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,0xC4,0xC5,
+	0xC5,0xC9,0xD0,0xD5,0xDD,0xE7,0xEE,0xF6,0x00,0x05,0x0C,0x16,0x1F,0x26,0x30,0x39,
+	0x3F,0x43,0x44,0x43,0x44,0x43,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+	0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+	0x44,0x44,0x41,0x3D,0x39,0x33,0x2E,0x2B,0x26,0x20,0x1B,0x16,0x11,0x0E,0x0B,0x06,
+	0x04,0x00
+};
+static PROGMEM prog_uchar saucer_snd[1266] = {
+	0x0C,0x10,0x1D,0x31,0x27,0x0A,0xF2,0xE5,0xCC,0xD2,0xE9,0x05,0x12,0x17,0x2E,0x2A,
+	0x10,0xF5,0xE8,0xD0,0xD0,0xE6,0x02,0x12,0x16,0x2E,0x2C,0x11,0xF7,0xE8,0xCD,0xCD,
+	0xE5,0x04,0x12,0x18,0x30,0x2A,0x0F,0xF7,0xE3,0xCA,0xD1,0xEB,0x07,0x11,0x1F,0x33,
+	0x24,0x07,0xF2,0xD9,0xC8,0xD9,0xF6,0x0B,0x15,0x2A,0x33,0x17,0xFA,0xE7,0xCC,0xCE,
+	0xE7,0x03,0x12,0x1F,0x35,0x23,0x03,0xF1,0xD4,0xC9,0xDE,0xFB,0x0E,0x19,0x32,0x2B,
+	0x0A,0xF7,0xD9,0xC8,0xD8,0xF6,0x0C,0x17,0x30,0x30,0x0E,0xF8,0xDD,0xC8,0xD5,0xF4,
+	0x0A,0x17,0x31,0x2F,0x0E,0xF9,0xDA,0xC6,0xD8,0xF7,0x0A,0x1B,0x35,0x29,0x0B,0xF4,
+	0xD2,0xC7,0xDE,0xFD,0x0D,0x23,0x36,0x20,0x04,0xEB,0xCA,0xCB,0xEC,0x03,0x12,0x2F,
+	0x32,0x13,0xFC,0xDA,0xC6,0xD9,0xF9,0x0B,0x20,0x38,0x23,0x05,0xEA,0xC8,0xCD,0xEE,
+	0x04,0x19,0x35,0x2C,0x0E,0xF3,0xCE,0xC6,0xE6,0x00,0x11,0x34,0x31,0x11,0xFA,0xD2,
+	0xC6,0xE0,0xFD,0x0E,0x30,0x36,0x13,0xF9,0xD2,0xC6,0xE2,0xFC,0x10,0x35,0x33,0x11,
+	0xF6,0xCF,0xC6,0xE8,0xFD,0x16,0x39,0x2B,0x0D,0xEF,0xC7,0xCD,0xF0,0x01,0x23,0x39,
+	0x21,0x05,0xDE,0xC2,0xD9,0xFA,0x0B,0x32,0x32,0x13,0xF8,0xC9,0xC8,0xEB,0x00,0x21,
+	0x39,0x22,0x06,0xDC,0xBF,0xDF,0xF8,0x13,0x39,0x2B,0x10,0xE9,0xC0,0xD5,0xF2,0x0B,
+	0x32,0x33,0x15,0xF3,0xC7,0xCB,0xF1,0x06,0x2C,0x36,0x18,0xF9,0xC8,0xCA,0xEF,0x04,
+	0x2C,0x37,0x19,0xF7,0xC6,0xCB,0xF0,0x05,0x31,0x34,0x15,0xF1,0xC2,0xD3,0xF1,0x0D,
+	0x39,0x2C,0x11,0xE3,0xC0,0xDF,0xF4,0x1A,0x3C,0x23,0x06,0xD1,0xC5,0xE9,0xFD,0x2F,
+	0x35,0x1A,0xEF,0xC2,0xD8,0xF0,0x15,0x39,0x27,0x07,0xD3,0xC5,0xE9,0x01,0x30,0x33,
+	0x14,0xEA,0xBF,0xDD,0xF7,0x22,0x39,0x1C,0xFB,0xC3,0xD3,0xF2,0x14,0x3B,0x23,0x01,
+	0xCC,0xCE,0xED,0x10,0x38,0x29,0x05,0xCB,0xD1,0xE8,0x10,0x39,0x26,0x06,0xC9,0xCF,
+	0xED,0x14,0x39,0x25,0xFB,0xC7,0xD6,0xED,0x1F,0x38,0x1E,0xF1,0xC4,0xDB,0xF9,0x29,
+	0x35,0x16,0xDC,0xC7,0xE5,0x07,0x35,0x2E,0x01,0xC9,0xD2,0xF2,0x1E,0x39,0x1C,0xE2,
+	0xC5,0xE3,0x06,0x34,0x2E,0xFE,0xCC,0xD0,0xF7,0x22,0x36,0x15,0xDB,0xC9,0xE5,0x17,
+	0x36,0x25,0xE9,0xC8,0xDF,0x05,0x35,0x2C,0xF4,0xCC,0xD4,0x03,0x2E,0x30,0xFB,0xCB,
+	0xD7,0xFC,0x2A,0x34,0xFE,0xCF,0xD3,0xF9,0x30,0x33,0xFC,0xCD,0xD2,0x02,0x31,0x2E,
+	0xF6,0xCA,0xD7,0x0A,0x34,0x27,0xEA,0xC7,0xE1,0x15,0x37,0x1A,0xDD,0xCB,0xEB,0x23,
+	0x3A,0x03,0xCE,0xD6,0xFF,0x31,0x2E,0xE7,0xCA,0xE4,0x19,0x38,0x10,0xD4,0xCD,0xFD,
+	0x32,0x2C,0xE6,0xCB,0xE7,0x20,0x35,0x05,0xCD,0xD7,0x0C,0x36,0x1E,0xD3,0xD1,0xFA,
+	0x32,0x2C,0xDD,0xCE,0xEC,0x2C,0x34,0xE9,0xCF,0xE4,0x23,0x37,0xF2,0xD0,0xE1,0x1E,
+	0x38,0xF4,0xCE,0xE2,0x1E,0x3B,0xF3,0xCA,0xE8,0x1F,0x38,0xF2,0xC5,0xEE,0x27,0x2D,
+	0xEC,0xC9,0xF3,0x33,0x22,0xDA,0xD3,0x02,0x35,0x15,0xD0,0xD7,0x1A,0x37,0xF6,0xCC,
+	0xED,0x29,0x26,0xE3,0xD0,0x03,0x37,0x0C,0xCC,0xE1,0x29,0x2C,0xE1,0xCD,0x09,0x37,
+	0x02,0xCB,0xEC,0x2C,0x22,0xD8,0xD7,0x17,0x2F,0xF0,0xCC,0x03,0x33,0x07,0xCA,0xF0,
+	0x2F,0x19,0xD4,0xDB,0x28,0x24,0xDF,0xD6,0x1A,0x2D,0xE2,0xD5,0x16,0x2C,0xEC,0xCE,
+	0x14,0x2F,0xE7,0xD5,0x14,0x29,0xEC,0xD1,0x19,0x2B,0xDF,0xDA,0x21,0x1E,0xDB,0xE3,
+	0x24,0x18,0xD5,0xEB,0x2E,0x0A,0xCC,0x00,0x31,0xEF,0xD3,0x1B,0x22,0xDA,0xE5,0x2B,
+	0x0A,0xD0,0x04,0x2C,0xE9,0xDA,0x24,0x16,0xD2,0xFA,0x2E,0xEE,0xDA,0x21,0x11,0xD5,
+	0x05,0x25,0xE5,0xE5,0x2A,0x00,0xD5,0x16,0x19,0xD9,0xFD,0x2A,0xDF,0xED,0x26,0xF8,
+	0xDA,0x23,0x0A,0xD0,0x1D,0x0D,0xDE,0x09,0x1B,0xDC,0xFE,0x29,0xD3,0x02,0x26,0xD6,
+	0x04,0x1D,0xDE,0x03,0x1A,0xE2,0x02,0x18,0xE1,0x05,0x15,0xE1,0x0B,0x0E,0xE0,0x17,
+	0x01,0xE3,0x22,0xEE,0xEE,0x29,0xDD,0xFF,0x22,0xD7,0x13,0x07,0xE5,0x21,0xE3,0xFE,
+	0x20,0xD6,0x17,0xFE,0xEB,0x23,0xDA,0x0F,0x0A,0xE5,0x23,0xDC,0x0F,0x06,0xE7,0x23,
+	0xDC,0x18,0xF6,0xF2,0x1A,0xE0,0x1E,0xE7,0x0C,0xFF,0xF2,0x14,0xE3,0x1A,0xE9,0x0E,
+	0xF8,0xFD,0x0C,0xE9,0x1C,0xE2,0x18,0xF2,0xFC,0x12,0xDF,0x23,0xE2,0x0D,0x07,0xE2,
+	0x24,0xDC,0x11,0x0A,0xE1,0x22,0xE0,0x0A,0x13,0xD8,0x20,0xF4,0xF2,0x20,0xD9,0x0D,
+	0x18,0xD3,0x1B,0x08,0xDD,0x20,0xF3,0xEE,0x1F,0xE8,0xFB,0x1B,0xE4,0xFF,0x1A,0xE4,
+	0x00,0x1C,0xE2,0xFB,0x25,0xDB,0xF8,0x2E,0xD5,0xFA,0x26,0xE2,0xF3,0x21,0xF7,0xDC,
+	0x2B,0xFE,0xD4,0x20,0x0E,0xD8,0x06,0x26,0xDB,0xEE,0x2B,0xF7,0xDA,0x1B,0x15,0xD6,
+	0xFE,0x2C,0xEA,0xDA,0x25,0x14,0xD1,0xFB,0x2F,0xF0,0xD5,0x1D,0x1E,0xD7,0xEC,0x2C,
+	0x05,0xCF,0x07,0x2D,0xEC,0xD3,0x1D,0x25,0xD8,0xE1,0x2B,0x15,0xD2,0xF0,0x2C,0x0A,
+	0xD2,0xF4,0x31,0x07,0xC9,0xFD,0x32,0x02,0xD0,0xF7,0x31,0x07,0xC9,0xF8,0x33,0x0D,
+	0xCB,0xE8,0x34,0x16,0xD4,0xDE,0x25,0x24,0xDC,0xDB,0x15,0x2E,0xEB,0xD1,0x05,0x33,
+	0x05,0xCE,0xEB,0x29,0x22,0xDC,0xD7,0x0E,0x34,0xFC,0xCD,0xEC,0x2F,0x24,0xD9,0xD0,
+	0x0E,0x3B,0xFE,0xC8,0xEA,0x29,0x28,0xE6,0xD0,0xF8,0x34,0x1C,0xD3,0xD4,0x11,0x36,
+	0x06,0xD1,0xDA,0x1B,0x3A,0xF4,0xCB,0xE8,0x20,0x37,0xF1,0xC6,0xEC,0x23,0x34,0xF4,
+	0xC5,0xEA,0x24,0x33,0xF7,0xC7,0xE6,0x1E,0x36,0x00,0xC6,0xE1,0x16,0x38,0x0E,0xCB,
+	0xD7,0x07,0x3B,0x1C,0xD7,0xD0,0xF5,0x2D,0x2E,0xF1,0xC8,0xE2,0x19,0x3B,0x0D,0xCE,
+	0xD3,0x00,0x34,0x29,0xEA,0xC7,0xE4,0x1A,0x3C,0x0F,0xD1,0xD3,0xF7,0x2A,0x34,0xF4,
+	0xCC,0xDE,0x07,0x34,0x26,0xE5,0xC8,0xE6,0x15,0x37,0x1D,0xDA,0xCB,0xED,0x18,0x3B,
+	0x16,0xD4,0xCF,0xEC,0x1E,0x3C,0x11,0xD8,0xCB,0xEA,0x22,0x39,0x15,0xD7,0xC9,0xEE,
+	0x19,0x37,0x1D,0xDE,0xCB,0xE2,0x12,0x39,0x25,0xEC,0xC6,0xDD,0x01,0x31,0x31,0x00,
+	0xCD,0xCE,0xF6,0x22,0x36,0x18,0xDF,0xC7,0xE2,0x0E,0x34,0x2B,0xFC,0xCA,0xD2,0xF4,
+	0x26,0x36,0x1A,0xE2,0xC4,0xE1,0x07,0x32,0x2E,0x0A,0xCD,0xCB,0xED,0x13,0x39,0x27,
+	0xFB,0xC4,0xD8,0xEF,0x1D,0x3B,0x1D,0xF5,0xC1,0xD9,0xF6,0x22,0x38,0x1D,0xEF,0xC0,
+	0xDE,0xF3,0x23,0x37,0x1D,0xF5,0xBF,0xDC,0xF0,0x1D,0x3B,0x1D,0x00,0xC3,0xD2,0xF0,
+	0x10,0x3D,0x22,0x0A,0xCF,0xC7,0xED,0x00,0x36,0x2E,0x14,0xE1,0xBE,0xE6,0xF5,0x22,
+	0x39,0x1F,0xFB,0xC4,0xD2,0xF0,0x08,0x37,0x2D,0x0F,0xE4,0xBF,0xE2,0xF7,0x1D,0x3A,
+	0x20,0x07,0xCC,0xC6,0xED,0xFC,0x2E,0x36,0x18,0xFA,0xC3,0xCF,0xF2,0x04,0x33,0x32,
+	0x12,0xF2,0xC2,0xD3,0xF4,0x08,0x34,0x30,0x11,0xEF,0xC3,0xD4,0xF4,0x08,0x33,0x30,
+	0x13,0xF2,0xC3,0xD1,0xF4,0x02,0x30,0x33,0x17,0xFB,0xC6,0xCB,0xED,0x00,0x23,0x39,
+	0x21,0x01,0xD8,0xC2,0xE3,0xFB,0x13,0x3A,0x29,0x0F,0xEA,0xC1,0xD5,0xF3,0x06,0x2A,
+	0x38,0x19,0x00,0xD4,0xC3,0xE5,0xFC,0x13,0x36,0x2D,0x0E,0xF1,0xC8,0xCC,0xEF,0x03,
+	0x1E,0x39,0x22,0x08,0xE5,0xC3,0xD5,0xF6,0x07,0x24,0x38,0x1C,0x06,0xDD,0xC2,0xD9,
+	0xF9,0x09,0x26,0x38,0x1B,0x04,0xDE,0xC3,0xD8,0xF9,0x09,0x24,0x39,0x1C,0x05,0xE2,
+	0xC4,0xD3,0xF4,0x0A,0x1E,0x39,0x23,0x07,0xED,0xC8,0xCC,0xEC,0x05,0x14,0x33,0x2E,
+	0x0C,0xFA,0xD4,0xC7,0xE1,0xFD,0x0C,0x25,0x38,0x1A,0x03,0xE6,0xC6,0xD0,0xEF,0x08,
+	0x15,0x31,0x2F,0x0F,0xF9,0xD7,0xC6,0xD9,0xF9,0x0D,0x1B,0x34,0x28,0x08,0xF3,0xD2,
+	0xC8,0xE2,0x00,0x0F,0x21,0x37,0x20,0x03,0xEC,0xCD,0xCC,0xE3,0x02,0x10,0x21,0x38,
+	0x20,0x06,0xEF,0xCC,0xCB,0xE1,0x00,0x0F,0x1E,0x36,0x23,0x08,0xF3,0xD2,0xC9,0xDF,
+	0xFA,0x01
+};
--- a/shield.h	Sat Sep 29 13:01:42 2012 +0000
+++ b/shield.h	Thu Dec 20 21:33:52 2012 +0000
@@ -1,48 +1,48 @@
-#define ARD_D0 p27
-#define ARD_D1 p28
-#define ARD_D2 p29
-#define ARD_D3 p21
-#define ARD_D4 p30
-#define ARD_D5 p22
-#define ARD_D6 p23
-#define ARD_D7 p11
-#define ARD_D8 p12
-#define ARD_D9 p24
-#define ARD_D10 p25
-#define ARD_D11 p5
-#define ARD_D12 p6
-#define ARD_D13 p7
-
-#define ARD_D14 ARD_A0
-#define ARD_D15 ARD_A1
-#define ARD_D16 ARD_A2
-#define ARD_D17 ARD_A3
-#define ARD_D18 ARD_SDA
-#define ARD_D19 ARD_SCL
-
-#define ARD_A0 p15
-#define ARD_A1 p16
-#define ARD_A2 p17
-#define ARD_A3 p18
-#define ARD_A4 p19
-#define ARD_A5 p20
-
-#define ARD_PWM0 ARD_D3
-#define ARD_PWM1 ARD_D5
-#define ARD_PWM2 ARD_D6
-#define ARD_PWM3 ARD_D9
-#define ARD_PWM4 ARD_D10
-#define ARD_PWM5 p26
-
-#define ARD_RX ARD_D0
-#define ARD_TX ARD_D1
-#define ARD_SDA p9
-#define ARD_SCL p10
-#define ARD_MOSI p5
-#define ARD_MISO p6
-#define ARD_SCK p7
-/*
-DigitalOut shield_d13(ARD_D13);
-
-AnalogIn shield_a0(ARD_A0);
+#define ARD_D0 p27
+#define ARD_D1 p28
+#define ARD_D2 p29
+#define ARD_D3 p21
+#define ARD_D4 p30
+#define ARD_D5 p22
+#define ARD_D6 p23
+#define ARD_D7 p11
+#define ARD_D8 p12
+#define ARD_D9 p24
+#define ARD_D10 p25
+#define ARD_D11 p5
+#define ARD_D12 p6
+#define ARD_D13 p7
+
+#define ARD_D14 ARD_A0
+#define ARD_D15 ARD_A1
+#define ARD_D16 ARD_A2
+#define ARD_D17 ARD_A3
+#define ARD_D18 ARD_SDA
+#define ARD_D19 ARD_SCL
+
+#define ARD_A0 p15
+#define ARD_A1 p16
+#define ARD_A2 p17
+#define ARD_A3 p18
+#define ARD_A4 p19
+#define ARD_A5 p20
+
+#define ARD_PWM0 ARD_D3
+#define ARD_PWM1 ARD_D5
+#define ARD_PWM2 ARD_D6
+#define ARD_PWM3 ARD_D9
+#define ARD_PWM4 ARD_D10
+#define ARD_PWM5 p26
+
+#define ARD_RX ARD_D0
+#define ARD_TX ARD_D1
+#define ARD_SDA p9
+#define ARD_SCL p10
+#define ARD_MOSI p5
+#define ARD_MISO p6
+#define ARD_SCK p7
+/*
+DigitalOut shield_d13(ARD_D13);
+
+AnalogIn shield_a0(ARD_A0);
 */
\ No newline at end of file
--- a/sound.cpp	Sat Sep 29 13:01:42 2012 +0000
+++ b/sound.cpp	Thu Dec 20 21:33:52 2012 +0000
@@ -1,89 +1,89 @@
-/*------------------------------------------------------------------
-  Game sounds
-------------------------------------------------------------------*/
-#include "game.h"
-#include "samples.h"
-
-
-/*------------------------------------------------------------------
-  Set these flags to start a sound playing
-------------------------------------------------------------------*/
-bool playerShootSound;
-bool alienDeathSound;
-bool playerDeathSound;
-bool alienBeatSound;
-bool saucerSound,stopSaucerSnd,saucerDieSound;
-static byte alienBeat;
-
-#if SYNTHSOUNDS
-SoundPlayer soundPlayer;
-Sound shootSound;
-#endif
-
-/*------------------------------------------------------------------
-  Sound functions
-------------------------------------------------------------------*/
-void resetGameSounds()
-{
-  SoundController::reset();
-  playerShootSound = false;
-  alienDeathSound = false;
-  playerDeathSound = false;
-  alienBeatSound = false;
-  saucerSound = stopSaucerSnd = saucerDieSound = false;
-  alienBeat = 0;
-}
-
-void updateGameSounds()
-{
-  if (1) {
-    if (playerShootSound) {
-      playerShootSound = false;
-      SoundController::playSample((prog_char*)shoot_snd, sizeof(shoot_snd),0);
-    }
-    if (alienDeathSound) {
-      alienDeathSound = false;
-      SoundController::playSample((prog_char*)aliendeath_snd, sizeof(aliendeath_snd),1);
-    }
-    if (playerDeathSound) {
-      playerDeathSound = false;
-      SoundController::playSample((prog_char*)playerdeath_snd, sizeof(playerdeath_snd),1);
-    }
-    if (saucerSound) {
-      saucerSound = false;
-      SoundController::playSample((prog_char*)saucer_snd, -sizeof(saucer_snd),2);
-    }
-    if (stopSaucerSnd) {
-      stopSaucerSnd = false;
-      SoundController::playSample((prog_char*)0,0,2);
-    }
-    if (saucerDieSound) {
-      saucerDieSound = false;
-      SoundController::playSample((prog_char*)playerdeath_snd, sizeof(playerdeath_snd),2);
-    }
-    if (alienBeatSound) {
-      alienBeatSound = false;
-      prog_char *b = 0;  unsigned int n = 0;
-      switch (alienBeat&3) {
-        case 0:  b = (prog_char*)beat1_snd;  n = sizeof(beat1_snd);  break;
-        case 1:  b = (prog_char*)beat2_snd;  n = sizeof(beat2_snd);  break;
-        case 2:  b = (prog_char*)beat3_snd;  n = sizeof(beat3_snd);  break;
-        case 3:  b = (prog_char*)beat4_snd;  n = sizeof(beat4_snd);  break;
-      }
-      SoundController::playSample(b,n,3);
-      ++alienBeat;
-    }
-    SoundController::update();
-  }
-#if SYNTHSOUNDS
-  else {
-    if (playerShootSound) {
-      playerShootSound = false;
-      shootSound.adsr = ADSR(10,15,100,36);
-      soundPlayer.setVolume(200).setSound(shootSound).play(440,100);
-    }
-    SoundController::update();
-  }
-#endif
-  
-}
+/*------------------------------------------------------------------
+  Game sounds
+------------------------------------------------------------------*/
+#include "game.h"
+#include "samples.h"
+
+
+/*------------------------------------------------------------------
+  Set these flags to start a sound playing
+------------------------------------------------------------------*/
+bool playerShootSound;
+bool alienDeathSound;
+bool playerDeathSound;
+bool alienBeatSound;
+bool saucerSound,stopSaucerSnd,saucerDieSound;
+static byte alienBeat;
+
+#if SYNTHSOUNDS
+SoundPlayer soundPlayer;
+Sound shootSound;
+#endif
+
+/*------------------------------------------------------------------
+  Sound functions
+------------------------------------------------------------------*/
+void resetGameSounds()
+{
+  SoundController::reset();
+  playerShootSound = false;
+  alienDeathSound = false;
+  playerDeathSound = false;
+  alienBeatSound = false;
+  saucerSound = stopSaucerSnd = saucerDieSound = false;
+  alienBeat = 0;
+}
+
+void updateGameSounds()
+{
+  if (1) {
+    if (playerShootSound) {
+      playerShootSound = false;
+      SoundController::playSample((prog_char*)shoot_snd, sizeof(shoot_snd),0);
+    }
+    if (alienDeathSound) {
+      alienDeathSound = false;
+      SoundController::playSample((prog_char*)aliendeath_snd, sizeof(aliendeath_snd),1);
+    }
+    if (playerDeathSound) {
+      playerDeathSound = false;
+      SoundController::playSample((prog_char*)playerdeath_snd, sizeof(playerdeath_snd),1);
+    }
+    if (saucerSound) {
+      saucerSound = false;
+      SoundController::playSample((prog_char*)saucer_snd, -sizeof(saucer_snd),2);
+    }
+    if (stopSaucerSnd) {
+      stopSaucerSnd = false;
+      SoundController::playSample((prog_char*)0,0,2);
+    }
+    if (saucerDieSound) {
+      saucerDieSound = false;
+      SoundController::playSample((prog_char*)playerdeath_snd, sizeof(playerdeath_snd),2);
+    }
+    if (alienBeatSound) {
+      alienBeatSound = false;
+      prog_char *b = 0;  unsigned int n = 0;
+      switch (alienBeat&3) {
+        case 0:  b = (prog_char*)beat1_snd;  n = sizeof(beat1_snd);  break;
+        case 1:  b = (prog_char*)beat2_snd;  n = sizeof(beat2_snd);  break;
+        case 2:  b = (prog_char*)beat3_snd;  n = sizeof(beat3_snd);  break;
+        case 3:  b = (prog_char*)beat4_snd;  n = sizeof(beat4_snd);  break;
+      }
+      SoundController::playSample(b,n,3);
+      ++alienBeat;
+    }
+    SoundController::update();
+  }
+#if SYNTHSOUNDS
+  else {
+    if (playerShootSound) {
+      playerShootSound = false;
+      shootSound.adsr = ADSR(10,15,100,36);
+      soundPlayer.setVolume(200).setSound(shootSound).play(440,100);
+    }
+    SoundController::update();
+  }
+#endif
+  
+}
--- a/sound.h	Sat Sep 29 13:01:42 2012 +0000
+++ b/sound.h	Thu Dec 20 21:33:52 2012 +0000
@@ -1,18 +1,18 @@
-/*------------------------------------------------------------------
-  Game sounds
-------------------------------------------------------------------*/
-// Where to put the sample playback buffer
-static const unsigned int samplePlaybackBuffer = 0x7f00;
-
-// Reset all sounds
-void resetGameSounds();
-
-// Update all sounds
-void updateGameSounds();
-
-// Set these flags to true to play the corresponding sound
-extern bool playerShootSound;
-extern bool alienDeathSound;
-extern bool playerDeathSound;
-extern bool alienBeatSound;
-extern bool saucerSound,stopSaucerSnd,saucerDieSound;
+/*------------------------------------------------------------------
+  Game sounds
+------------------------------------------------------------------*/
+// Where to put the sample playback buffer
+static const unsigned int samplePlaybackBuffer = 0x7f00;
+
+// Reset all sounds
+void resetGameSounds();
+
+// Update all sounds
+void updateGameSounds();
+
+// Set these flags to true to play the corresponding sound
+extern bool playerShootSound;
+extern bool alienDeathSound;
+extern bool playerDeathSound;
+extern bool alienBeatSound;
+extern bool saucerSound,stopSaucerSnd,saucerDieSound;
--- a/utils.cpp	Sat Sep 29 13:01:42 2012 +0000
+++ b/utils.cpp	Thu Dec 20 21:33:52 2012 +0000
@@ -1,488 +1,490 @@
-//#include <SPI.h>
-
-#include "utils.h"
-SPI spiutils(ARD_MOSI, ARD_MISO, ARD_SCK); // mosi, miso, sclk
-Serial pcu(USBTX, USBRX); 
-/*---------------------------------------------
-  Coprocessor controller
----------------------------------------------*/
-enum {
-  COPPERCTRL = COMM,
-  COPPERLISTSTART = COPPERCTRL,
-  SAMPLEREADPOS   = COPPERCTRL+2,
-  SAMPLEREADPAGE  = COPPERCTRL+4,
-  COPPERLISTPTR   = COPPERCTRL+6,
-  YLINEECHO       = COPPERCTRL+8,
-  DUMMYCOPPERLIST = COPPERCTRL+10
-};
-
-// Available commands
-enum copper_commands {
-  cp_halt='@',
-  cp_wait,
-  cp_write8,
-  cp_write16,
-  cp_copy
-};
-
-#include "j1.h"
-void crash()
-{
-  unsigned int p;
-  while (1) {
-    GD.wr(0,p++);
-  }
-}
-static unsigned int samplePage_, listStart_;
-void Coprocessor::reset(unsigned int spg)
-{
-  samplePage_ = spg;
-  GD.wr(J1_RESET, 1);       // Halt the coprocessor
-  GD.copy(J1_CODE, copper_code, sizeof(copper_code));
-  for (unsigned int i=J1_CODE; i<J1_CODE+256; i+=2) {
-    unsigned int w = GD.rd16(i);
-    if      (w == 0xbf00)      { GD.wr16(i,spg+0x8000); }
-    else if (w == COMM+0x8000) { listStart_ = i;        }
-  }
-  CopperlistBuilder d;      // Set up a fake copperlist
-  GD.wr(DUMMYCOPPERLIST,cp_halt);
-  GD.wr16(listStart_,DUMMYCOPPERLIST+0x8000);
-  GD.wr16(SAMPLEREADPAGE,samplePage_);
-  SoundController::reset();
-  GD.wr(J1_RESET, 0);      // Go!
-  delay(10);
-  SoundController::update();
-}
-
-void Coprocessor::setCopperlist(unsigned int addr)
-{
-  GD.wr(J1_RESET, 1);       // Halt the coprocessor
-  GD.wr16(listStart_,addr+0x8000);
-  GD.wr(J1_RESET, 0);      // Go!
-}
-
-int Coprocessor::yline()
-{
-  return GD.rd16(YLINEECHO);
-}
-unsigned int Coprocessor::samplePage()
-{
-  return samplePage_;
-}
-byte Coprocessor::sampleReadPos()
-{
-  return GD.rd(SAMPLEREADPOS);
-}
-
-// CopperlistBuilder
-void CopperlistBuilder::put(byte b)
-{
-  GD.wr(out++,b);
-}
-void CopperlistBuilder::put16(unsigned int v)
-{
-  put(lowByte(v));
-  put(highByte(v));
-}
-
-void CopperlistBuilder::begin(unsigned int dest)
-{
-  out = start = dest;
-#if 0
-  // Debugging...
-  write(0,65);
-  write(1,66);
-  write(2,67);
-  write(3,68);
-  write(4,69);
-  copy(0,64,4);
-  copy(64,128,3);
-  copy(128,131,5);
-#endif
-}
-void CopperlistBuilder::wait(int line)
-{
-  if (line > 0) {
-    put(cp_wait);
-    put16(line);
-  }
-}
-void CopperlistBuilder::write(unsigned int addr, byte val)
-{
-  put(cp_write8);
-  put(val);
-  put16(addr);
-}
-void CopperlistBuilder::write16(unsigned int addr, unsigned int val)
-{
-  put(cp_write16);
-  put16(val);
-  put16(addr);
-}
-void CopperlistBuilder::copy(unsigned int src, unsigned int dst, unsigned int numBytes)
-{
-  if (numBytes > 0) {
-    put(cp_copy);
-    put16(src);
-    put16(dst);
-    put16(numBytes);
-  }
-}
-void CopperlistBuilder::end(bool executeNow)
-{
-  put(cp_halt);      // Nice end to the list
-  if (executeNow) {
-    Coprocessor::setCopperlist(start);
-  }
-}
-
-unsigned int CopperlistBuilder::position()
-{
-  return out;
-}
-
-/*---------------------------------------------
-  Sound
----------------------------------------------*/
-// The amount of space to leave in the buffer
-#define BUFFERGAP 8
-
-/*---------------------------------------------
-  Sample playback
----------------------------------------------*/
-static byte sampleWritePos;
-static prog_char *sampleStart0, *samplePos0, *sampleEnd0;
-static prog_char *sampleStart1, *samplePos1, *sampleEnd1;
-static prog_char *sampleStart2, *samplePos2, *sampleEnd2;
-static prog_char *sampleStart3, *samplePos3, *sampleEnd3;
-static bool repeatSample0, repeatSample1, repeatSample2, repeatSample3;
-
-static void writeSamples(byte num)
-{
-  if (num > 0) {
-    GD.__wstart(Coprocessor::samplePage()+sampleWritePos);
-    prog_char *s0=samplePos0, *se0=sampleEnd0;
-    prog_char *s1=samplePos1, *se1=sampleEnd1;
-    prog_char *s2=samplePos2, *se2=sampleEnd2;
-    prog_char *s3=samplePos3, *se3=sampleEnd3;
-    for (byte i=0; i<num; ++i) {
-      int val = 0;
-      if (s0) {
-        val += (char)pgm_read_byte(s0++);
-        if (s0 == se0) {
-          s0 = (repeatSample0)? sampleStart0: 0;
-        }
-      }
-      if (s1) {
-        val += (char)pgm_read_byte(s1++);
-        if (s1 == se1) {
-          s1 = (repeatSample1)? sampleStart1: 0;
-        }
-      }
-      if (s2) {
-        val += (char)pgm_read_byte(s2++);
-        if (s2 == se2) {
-          s2 = (repeatSample2)? sampleStart2: 0;
-        }
-      }
-      if (s3) {
-        val += (char)pgm_read_byte(s3++);
-        if (s3 == se3) {
-          s3 = (repeatSample3)? sampleStart3: 0;
-        }
-      }
-      spiutils.write(val>>2);
-    }
-    GD.__end();
-    samplePos0 = s0;
-    samplePos1 = s1;
-    samplePos2 = s2;
-    samplePos3 = s3;
-    sampleWritePos += num;
-  }
-}
-
-void SoundController::playSample(prog_char *s, int n, byte ch)
-{
-  bool repeat = (n < 0);
-  if (repeat) {
-    n = -n;
-  }
-  switch (ch) {
-    case 0:   sampleStart0 = s;
-              samplePos0 = s;
-              sampleEnd0 = s+n;
-              repeatSample0 = repeat;
-              break;
-    case 1:   sampleStart1 = s;
-              samplePos1 = s;
-              sampleEnd1 = s+n;
-              repeatSample1 = repeat;
-              break;
-    case 2:   sampleStart2 = s;
-              samplePos2 = s;
-              sampleEnd2 = s+n;
-              repeatSample2 = repeat;
-              break;
-    case 3:   sampleStart3 = s;
-              samplePos3 = s;
-              sampleEnd3 = s+n;
-              repeatSample3 = repeat;
-              break;
-  }
-}
-
-#if SYNTHSOUNDS
-/*---------------------------------------------
-  Synthesized sounds
----------------------------------------------*/
-static SoundPlayer *soundPlayerList=0;
-ADSR::ADSR(byte a, byte d, byte s, byte r) : attack(a), decay(d), sustain(s), release(r)
-{
-}
-byte ADSR::evaluate(unsigned int t, unsigned int r)
-{
-  if (t > r) {
-    // In release phase...
-    t -= r;
-    if (t > release) {
-      return 0;
-    }
-    t = sustain*(release-t);
-    return t/release;
-  }
-  else if (t >= (attack+decay)) {
-    // In sustain phase
-    return sustain;
-  }
-  else if (t > attack) {
-    // In decay phase
-    t -= attack;
-    t = (255-sustain)*t;
-    return 255-(t/decay);
-  }
-  else if (t > 0) {
-    // In attack phase
-    return (t*255)/attack;
-  }
-  return 0;
-}
-
-SoundPlayer::SoundPlayer()
-{
-  volume = 255;
-  active = false;
-  isLinked = false;
-}
-SoundPlayer& SoundPlayer::setVolume(byte v)
-{
-  volume = v;
-  return *this;
-}
-SoundPlayer& SoundPlayer::setSound(const Sound& s)
-{
-  sound = s;
-  return *this;
-}
-void SoundPlayer::play(unsigned int p, unsigned int d)
-{
-  if (!isLinked) {
-    // Add me to the list of sounds to be updated
-    isLinked = true;
-    link = soundPlayerList;
-    soundPlayerList = this;
-  }
-  ticks = 0;
-  pitch = p;
-  duration = d;
-  releasing = false;
-  active = true;
-}
-void SoundPlayer::release()
-{
-  releasing = true;
-  duration = ticks;
-}
-void SoundPlayer::update()
-{
-  if (active) {
-    if (releasing) {
-      if (++ticks > (duration+sound.adsr.release)) {
-        stop();
-      }
-    }
-    else {
-      if (ticks!=infinite) {
-        ++ticks;
-      }
-      if ((ticks==duration) and (duration!=infinite)) {
-        release();
-      }
-    }
-    if (active) {
-      GD.__wstart(VOICES);
-      spimain.write(lowByte(pitch));
-      spimain.write(highByte(pitch));
-      unsigned int b = sound.adsr.evaluate(ticks,duration);
-      b = highByte(b*volume);
-      //spimain.write(b);
-      //spimain.write(b);
-      GD.__end();
-    }
-  }
-}
-void SoundPlayer::stop()
-{
-  if (active) {
-    active = false;
-    GD.__wstart(VOICES+2);
-    spimain.write(0);
-    spimain.write(0);
-    GD.__end();
-  }
-}
-#endif
-/*---------------------------------------------
-  SoundController object
----------------------------------------------*/
-void SoundController::reset()
-{
-  samplePos0 = 0;
-  samplePos1 = 0;
-  samplePos2 = 0;
-  samplePos3 = 0;
-  GD.__wstart(Coprocessor::samplePage());
-  for (int i=0; i<256; ++i) {
-    spiutils.write(0);
-  }
-  GD.__end();
-#if SYNTHSOUNDS
-SoundPlayer *p = soundPlayerList;
-  while (p) {
-    p->stop();
-    p->isLinked = false;
-    p = p->link;
-  }
-#endif
-}
-
-void SoundController::update()
-{
-#if SYNTHSOUNDS
-  {  // Synthesized sounds
-    byte b = '0';
-    SoundPlayer *p = soundPlayerList;
-    while (p) {
-      ++b;
-      p->update();
-      p = p->link;
-    }
-    GD.wr(0,b);
-  }
-#endif
-  { // Sampled sounds
-    unsigned int rp = Coprocessor::sampleReadPos();
-    unsigned int wp = sampleWritePos;
-    unsigned int emptySpace = (rp-wp)&255;
-    if (emptySpace > BUFFERGAP) {
-      emptySpace -= BUFFERGAP;
-      if ((wp+emptySpace) > 256) {
-        // Write would overflow the buffer - need to split it into two
-        unsigned int b = 256-wp;
-        writeSamples(b);
-        writeSamples(emptySpace-b);
-      }
-      else {
-        // Can write a single block
-        writeSamples(emptySpace);
-      }
-    }
-  }
-}
-
-
-/*------------------------------------------------------------
-  Useful little functions
-------------------------------------------------------------*/
-void showNumber(int n, byte x, byte y)
-{
-  char temp[8];
-  boolean neg = (n<0);
-  if (neg) {
-    n = -n;
-  }
-  char *o = temp;
-  int m = 10000;
-  while (m != 0) {
-    int d = n/m;
-    *o++ = d+'0';
-    n -= d*m;
-    m /= 10;
-  }
-  *o-- = 0;
-  // Remove leading zeros
-  char *s = temp;
-  while ((s<o) and (*s=='0')) {
-    *s++ = ' ';
-  }
-  if (neg) {
-    *--s = '-';
-  }
-  GD.__wstart((64*y)+x);
-  while (*s) {
-    spiutils.write(*s++);
-  }
-  GD.__end();
-}
-
-static void hexDigit(byte b)
-{
-  b = (b&0x0f)+'0';
-  if (b > '9') {
-    b += 'a'-('9'+1);
-  }
-  spiutils.write(b);
-}
-static void hexPair(byte b)
-{
-  hexDigit(b>>4);
-  hexDigit(b);
-}
-void showHexNumber(unsigned int n, byte x, byte y)
-{
-  GD.__wstart((64*y)+x);
-  hexPair(highByte(n));
-  hexPair(lowByte(n));
-  GD.__end();
-}
-void writeColor(int c)
-{
-  // Colors are five bits - encode in base 32
-  c = (c&31)+'0';
-  if (c > '9') {
-    c += 'A'-('9'+1);
-  }
-  pcu.printf("%d", c);
-}
-void sendScreenshot()
-{
-  pcu.baud(115200);
-  for (int i=0; i<300; ++i) {
-    // Ask for the line...
-    GD.wr16(SCREENSHOT_Y, 0x8000|i);
-    // Wait for it to appear
-    while ((GD.rd(SCREENSHOT_Y+1)&0x80)==0) {
-      delay(1);
-    }
-    // Send the line of pixels to the serial port
-    for (int x=0; x<400; ++x) {
-      uint16_t pixel = GD.rd16(SCREENSHOT+(x*2));
-      writeColor(pixel>>10);  // Red
-      writeColor(pixel>>5);   // Green
-      writeColor(pixel);      // Blue
-    }
-    pcu.printf("\n");
-  }
-  // Restore sanity
-  GD.wr16(SCREENSHOT_Y, 0);
-}
+//#include <SPI.h>
+
+#include "utils.h"
+#include "shield.h"
+extern GDClass GD;
+SPI spiutils(ARD_MOSI, ARD_MISO, ARD_SCK); // mosi, miso, sclk
+Serial pcu(USBTX, USBRX); 
+/*---------------------------------------------
+  Coprocessor controller
+---------------------------------------------*/
+enum {
+  COPPERCTRL = COMM,
+  COPPERLISTSTART = COPPERCTRL,
+  SAMPLEREADPOS   = COPPERCTRL+2,
+  SAMPLEREADPAGE  = COPPERCTRL+4,
+  COPPERLISTPTR   = COPPERCTRL+6,
+  YLINEECHO       = COPPERCTRL+8,
+  DUMMYCOPPERLIST = COPPERCTRL+10
+};
+
+// Available commands
+enum copper_commands {
+  cp_halt='@',
+  cp_wait,
+  cp_write8,
+  cp_write16,
+  cp_copy
+};
+
+#include "j1.h"
+void crash()
+{
+  unsigned int p;
+  while (1) {
+    GD.wr(0,p++);
+  }
+}
+static unsigned int samplePage_, listStart_;
+void Coprocessor::reset(unsigned int spg)
+{
+  samplePage_ = spg;
+  GD.wr(J1_RESET, 1);       // Halt the coprocessor
+  GD.copy(J1_CODE, copper_code, sizeof(copper_code));
+  for (unsigned int i=J1_CODE; i<J1_CODE+256; i+=2) {
+    unsigned int w = GD.rd16(i);
+    if      (w == 0xbf00)      { GD.wr16(i,spg+0x8000); }
+    else if (w == COMM+0x8000) { listStart_ = i;        }
+  }
+  CopperlistBuilder d;      // Set up a fake copperlist
+  GD.wr(DUMMYCOPPERLIST,cp_halt);
+  GD.wr16(listStart_,DUMMYCOPPERLIST+0x8000);
+  GD.wr16(SAMPLEREADPAGE,samplePage_);
+  SoundController::reset();
+  GD.wr(J1_RESET, 0);      // Go!
+  delay(10);
+  SoundController::update();
+}
+
+void Coprocessor::setCopperlist(unsigned int addr)
+{
+  GD.wr(J1_RESET, 1);       // Halt the coprocessor
+  GD.wr16(listStart_,addr+0x8000);
+  GD.wr(J1_RESET, 0);      // Go!
+}
+
+int Coprocessor::yline()
+{
+  return GD.rd16(YLINEECHO);
+}
+unsigned int Coprocessor::samplePage()
+{
+  return samplePage_;
+}
+byte Coprocessor::sampleReadPos()
+{
+  return GD.rd(SAMPLEREADPOS);
+}
+
+// CopperlistBuilder
+void CopperlistBuilder::put(byte b)
+{
+  GD.wr(out++,b);
+}
+void CopperlistBuilder::put16(unsigned int v)
+{
+  put(lowByte(v));
+  put(highByte(v));
+}
+
+void CopperlistBuilder::begin(unsigned int dest)
+{
+  out = start = dest;
+#if 0
+  // Debugging...
+  write(0,65);
+  write(1,66);
+  write(2,67);
+  write(3,68);
+  write(4,69);
+  copy(0,64,4);
+  copy(64,128,3);
+  copy(128,131,5);
+#endif
+}
+void CopperlistBuilder::wait(int line)
+{
+  if (line > 0) {
+    put(cp_wait);
+    put16(line);
+  }
+}
+void CopperlistBuilder::write(unsigned int addr, byte val)
+{
+  put(cp_write8);
+  put(val);
+  put16(addr);
+}
+void CopperlistBuilder::write16(unsigned int addr, unsigned int val)
+{
+  put(cp_write16);
+  put16(val);
+  put16(addr);
+}
+void CopperlistBuilder::copy(unsigned int src, unsigned int dst, unsigned int numBytes)
+{
+  if (numBytes > 0) {
+    put(cp_copy);
+    put16(src);
+    put16(dst);
+    put16(numBytes);
+  }
+}
+void CopperlistBuilder::end(bool executeNow)
+{
+  put(cp_halt);      // Nice end to the list
+  if (executeNow) {
+    Coprocessor::setCopperlist(start);
+  }
+}
+
+unsigned int CopperlistBuilder::position()
+{
+  return out;
+}
+
+/*---------------------------------------------
+  Sound
+---------------------------------------------*/
+// The amount of space to leave in the buffer
+#define BUFFERGAP 8
+
+/*---------------------------------------------
+  Sample playback
+---------------------------------------------*/
+static byte sampleWritePos;
+static prog_char *sampleStart0, *samplePos0, *sampleEnd0;
+static prog_char *sampleStart1, *samplePos1, *sampleEnd1;
+static prog_char *sampleStart2, *samplePos2, *sampleEnd2;
+static prog_char *sampleStart3, *samplePos3, *sampleEnd3;
+static bool repeatSample0, repeatSample1, repeatSample2, repeatSample3;
+
+static void writeSamples(byte num)
+{
+  if (num > 0) {
+    GD.__wstart(Coprocessor::samplePage()+sampleWritePos);
+    prog_char *s0=samplePos0, *se0=sampleEnd0;
+    prog_char *s1=samplePos1, *se1=sampleEnd1;
+    prog_char *s2=samplePos2, *se2=sampleEnd2;
+    prog_char *s3=samplePos3, *se3=sampleEnd3;
+    for (byte i=0; i<num; ++i) {
+      int val = 0;
+      if (s0) {
+        val += (char)pgm_read_byte(s0++);
+        if (s0 == se0) {
+          s0 = (repeatSample0)? sampleStart0: 0;
+        }
+      }
+      if (s1) {
+        val += (char)pgm_read_byte(s1++);
+        if (s1 == se1) {
+          s1 = (repeatSample1)? sampleStart1: 0;
+        }
+      }
+      if (s2) {
+        val += (char)pgm_read_byte(s2++);
+        if (s2 == se2) {
+          s2 = (repeatSample2)? sampleStart2: 0;
+        }
+      }
+      if (s3) {
+        val += (char)pgm_read_byte(s3++);
+        if (s3 == se3) {
+          s3 = (repeatSample3)? sampleStart3: 0;
+        }
+      }
+      spiutils.write(val>>2);
+    }
+    GD.__end();
+    samplePos0 = s0;
+    samplePos1 = s1;
+    samplePos2 = s2;
+    samplePos3 = s3;
+    sampleWritePos += num;
+  }
+}
+
+void SoundController::playSample(prog_char *s, int n, byte ch)
+{
+  bool repeat = (n < 0);
+  if (repeat) {
+    n = -n;
+  }
+  switch (ch) {
+    case 0:   sampleStart0 = s;
+              samplePos0 = s;
+              sampleEnd0 = s+n;
+              repeatSample0 = repeat;
+              break;
+    case 1:   sampleStart1 = s;
+              samplePos1 = s;
+              sampleEnd1 = s+n;
+              repeatSample1 = repeat;
+              break;
+    case 2:   sampleStart2 = s;
+              samplePos2 = s;
+              sampleEnd2 = s+n;
+              repeatSample2 = repeat;
+              break;
+    case 3:   sampleStart3 = s;
+              samplePos3 = s;
+              sampleEnd3 = s+n;
+              repeatSample3 = repeat;
+              break;
+  }
+}
+
+#if SYNTHSOUNDS
+/*---------------------------------------------
+  Synthesized sounds
+---------------------------------------------*/
+static SoundPlayer *soundPlayerList=0;
+ADSR::ADSR(byte a, byte d, byte s, byte r) : attack(a), decay(d), sustain(s), release(r)
+{
+}
+byte ADSR::evaluate(unsigned int t, unsigned int r)
+{
+  if (t > r) {
+    // In release phase...
+    t -= r;
+    if (t > release) {
+      return 0;
+    }
+    t = sustain*(release-t);
+    return t/release;
+  }
+  else if (t >= (attack+decay)) {
+    // In sustain phase
+    return sustain;
+  }
+  else if (t > attack) {
+    // In decay phase
+    t -= attack;
+    t = (255-sustain)*t;
+    return 255-(t/decay);
+  }
+  else if (t > 0) {
+    // In attack phase
+    return (t*255)/attack;
+  }
+  return 0;
+}
+
+SoundPlayer::SoundPlayer()
+{
+  volume = 255;
+  active = false;
+  isLinked = false;
+}
+SoundPlayer& SoundPlayer::setVolume(byte v)
+{
+  volume = v;
+  return *this;
+}
+SoundPlayer& SoundPlayer::setSound(const Sound& s)
+{
+  sound = s;
+  return *this;
+}
+void SoundPlayer::play(unsigned int p, unsigned int d)
+{
+  if (!isLinked) {
+    // Add me to the list of sounds to be updated
+    isLinked = true;
+    link = soundPlayerList;
+    soundPlayerList = this;
+  }
+  ticks = 0;
+  pitch = p;
+  duration = d;
+  releasing = false;
+  active = true;
+}
+void SoundPlayer::release()
+{
+  releasing = true;
+  duration = ticks;
+}
+void SoundPlayer::update()
+{
+  if (active) {
+    if (releasing) {
+      if (++ticks > (duration+sound.adsr.release)) {
+        stop();
+      }
+    }
+    else {
+      if (ticks!=infinite) {
+        ++ticks;
+      }
+      if ((ticks==duration) and (duration!=infinite)) {
+        release();
+      }
+    }
+    if (active) {
+      GD.__wstart(VOICES);
+      spimain.write(lowByte(pitch));
+      spimain.write(highByte(pitch));
+      unsigned int b = sound.adsr.evaluate(ticks,duration);
+      b = highByte(b*volume);
+      //spimain.write(b);
+      //spimain.write(b);
+      GD.__end();
+    }
+  }
+}
+void SoundPlayer::stop()
+{
+  if (active) {
+    active = false;
+    GD.__wstart(VOICES+2);
+    spimain.write(0);
+    spimain.write(0);
+    GD.__end();
+  }
+}
+#endif
+/*---------------------------------------------
+  SoundController object
+---------------------------------------------*/
+void SoundController::reset()
+{
+  samplePos0 = 0;
+  samplePos1 = 0;
+  samplePos2 = 0;
+  samplePos3 = 0;
+  GD.__wstart(Coprocessor::samplePage());
+  for (int i=0; i<256; ++i) {
+    spiutils.write(0);
+  }
+  GD.__end();
+#if SYNTHSOUNDS
+SoundPlayer *p = soundPlayerList;
+  while (p) {
+    p->stop();
+    p->isLinked = false;
+    p = p->link;
+  }
+#endif
+}
+
+void SoundController::update()
+{
+#if SYNTHSOUNDS
+  {  // Synthesized sounds
+    byte b = '0';
+    SoundPlayer *p = soundPlayerList;
+    while (p) {
+      ++b;
+      p->update();
+      p = p->link;
+    }
+    GD.wr(0,b);
+  }
+#endif
+  { // Sampled sounds
+    unsigned int rp = Coprocessor::sampleReadPos();
+    unsigned int wp = sampleWritePos;
+    unsigned int emptySpace = (rp-wp)&255;
+    if (emptySpace > BUFFERGAP) {
+      emptySpace -= BUFFERGAP;
+      if ((wp+emptySpace) > 256) {
+        // Write would overflow the buffer - need to split it into two
+        unsigned int b = 256-wp;
+        writeSamples(b);
+        writeSamples(emptySpace-b);
+      }
+      else {
+        // Can write a single block
+        writeSamples(emptySpace);
+      }
+    }
+  }
+}
+
+
+/*------------------------------------------------------------
+  Useful little functions
+------------------------------------------------------------*/
+void showNumber(int n, byte x, byte y)
+{
+  char temp[8];
+  boolean neg = (n<0);
+  if (neg) {
+    n = -n;
+  }
+  char *o = temp;
+  int m = 10000;
+  while (m != 0) {
+    int d = n/m;
+    *o++ = d+'0';
+    n -= d*m;
+    m /= 10;
+  }
+  *o-- = 0;
+  // Remove leading zeros
+  char *s = temp;
+  while ((s<o) and (*s=='0')) {
+    *s++ = ' ';
+  }
+  if (neg) {
+    *--s = '-';
+  }
+  GD.__wstart((64*y)+x);
+  while (*s) {
+    spiutils.write(*s++);
+  }
+  GD.__end();
+}
+
+static void hexDigit(byte b)
+{
+  b = (b&0x0f)+'0';
+  if (b > '9') {
+    b += 'a'-('9'+1);
+  }
+  spiutils.write(b);
+}
+static void hexPair(byte b)
+{
+  hexDigit(b>>4);
+  hexDigit(b);
+}
+void showHexNumber(unsigned int n, byte x, byte y)
+{
+  GD.__wstart((64*y)+x);
+  hexPair(highByte(n));
+  hexPair(lowByte(n));
+  GD.__end();
+}
+void writeColor(int c)
+{
+  // Colors are five bits - encode in base 32
+  c = (c&31)+'0';
+  if (c > '9') {
+    c += 'A'-('9'+1);
+  }
+  pcu.printf("%d", c);
+}
+void sendScreenshot()
+{
+  pcu.baud(115200);
+  for (int i=0; i<300; ++i) {
+    // Ask for the line...
+    GD.wr16(SCREENSHOT_Y, 0x8000|i);
+    // Wait for it to appear
+    while ((GD.rd(SCREENSHOT_Y+1)&0x80)==0) {
+      delay(1);
+    }
+    // Send the line of pixels to the serial port
+    for (int x=0; x<400; ++x) {
+      uint16_t pixel = GD.rd16(SCREENSHOT+(x*2));
+      writeColor(pixel>>10);  // Red
+      writeColor(pixel>>5);   // Green
+      writeColor(pixel);      // Blue
+    }
+    pcu.printf("\n");
+  }
+  // Restore sanity
+  GD.wr16(SCREENSHOT_Y, 0);
+}
--- a/utils.h	Sat Sep 29 13:01:42 2012 +0000
+++ b/utils.h	Thu Dec 20 21:33:52 2012 +0000
@@ -1,232 +1,232 @@
-#ifndef COM_ARTLUM_GDUTILS_INCLUDED
-#define COM_ARTLUM_GDUTILS_INCLUDED
-#include "arduino.h"
-#include "GD.h"
-//#include "WProgram.h"
-
-/*---------------------------------------------------
-  Coprocessor controller - makes it easy to do
-  raster effects (eg. split screens) without
-  writing any FORTH.
-  
-  The way this works is that you build a list of
-  instructions in memory (a "copperlist") and
-  the coprocessor will execute the list on every
-  video frame.
-  
-  Code samples:
-  
-  void setup() {
-    ...
-    // Make a copperlist to change a palette color on line 100
-    // The copperlist is stored on the Gameduino at address 0x3f80
-    Coprocessor::reset();
-    CopperlistBuilder cp;
-    cp.begin(0x3f80);
-    cp.wait(100);
-    cp.write16(PALETTE4A, 0x7fff);
-    cp.end();  // And start using the new copperlist
-  }
- 
-  Modifying an existing copperlist:
-  
-  // Make a copperlist to set the horizontal scroll register
-  // on line 220 and modify the copperlist.
-  // a) Build the list
-  unsigned int XscrollInst;
-  void setup() {
-    ...
-    CopperlistBuilder cp;
-    cp.begin(0x3f80);
-    cp.wait(220);
-    XscrollInst = cp.position();    // Get current output location
-    cp.write16(SCROLL_X, 0);
-    cp.end();
-  }
-  // b) Modify the list with current 'xscroll'
-  void loop() {
-    CopperlistBuilder cp;
-    cp.begin(XscrollInst)           // Where the 'write16()' instruction is
-    cp.write16(SCROLL_X, xscroll);  // Overwrite the previous instruction
-  }
-
-  Notes: 
-  The Coprocessor object uses the "COMM" block
-  of memory at 0x2980 so don't mess with it.
-
-  The coprocessor also provides support for the
-  sound functions below.
----------------------------------------------------*/
-class Coprocessor {
-public:
-  // This initializes everything and load the coprocessor code.
-  // You should call this in your setup() function after "GD.begin();"
-  //
-  // The sample page is the page of Gameduino memory to
-  // use as a buffer for sample playback. It *must* be
-  // on a page boundry (ie. bottom 8 bits are 0) and
-  // the whole page will be used so you can't use it
-  // for anything else.
-  static void reset(unsigned int samplePage=0x3f00);  // Default: Use memory from 0x3f00 to 0x3fff
-  
-  // Select a copperlist. The list will start running on the next video frame.
-  // nb. The "CopperlistBuilder::end()" function normally calls this automatically
-  // (unless you tell it not to...)
-  static void setCopperlist(unsigned int addr);
-  
-  // Where the sample playback page is located
-  static unsigned int samplePage();
-
-  // Where the coprocessor is currently reading samples
-  // from in the sample page. Use this info to keep the
-  // page full of fresh sample data for playback
-  static byte sampleReadPos();
-
-  // A copy of the coprocessor YLINE register
-  static int yline();
-};
-
-// This object helps you make a copperlist in memory
-class CopperlistBuilder {
-  unsigned int out,start;
-  void put(byte);
-  void put16(unsigned int);
-public:
-  // Available commands are:
-  // * Wait for a raster line
-  // * Write a byte to a memory location
-  // * Write a 16-bit word to a memory location
-  // * Copy a block of memory from one place to another
-  void begin(unsigned int dest);
-    void wait(int line);
-    void write(unsigned int addr, byte val);
-    void write16(unsigned int addr, unsigned int val);
-    void copy(unsigned int src, unsigned int dst, unsigned int numBytes);
-  void end(bool executeNow=true);
-
-  // Where I'm currently outputting
-  unsigned int position();
-};
-
-
-/*------------------------------------------------------------------
-  Sound functions - play synthesized sounds and sound samples
-  
-  These functions require support from the Coprocessor object
-  above. If you load different microcode they'll stop working...
-------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------
-  Synthesized sounds
-------------------------------------------------------------------*/
-#define SYNTHSOUNDS 0
-#if SYNTHSOUNDS
-// ADSR volume envelope
-struct ADSR {
-  byte attack;      // Attack time (in clock ticks)
-  byte decay;       // Decay time (in clock ticks)
-  byte sustain;     // Sustain level [0..255]
-  byte release;     // Release time (in clock ticks)
-  ADSR(byte a=4, byte d=4, byte s=90, byte r=30);
-  byte evaluate(unsigned int elapsedTime, unsigned int releaseTime);
-};
-
-// Change pitch of a sound as it plays
-struct PitchModulator {
-  // Vibrato
-  byte vibratoDelay;   // Delay before vibrato starts (in clock ticks)
-  byte vibrato;        // Amount of vibrato (percentage of note pitch)
-  char vibratoDelta;   // Added to 'vibrato' every clock tick 
-  // Pitch Sweep
-  byte sweepDelay;     // Delay before sweep starts (in clock ticks)
-  byte sweep;
-  char sweepDelta;
-  PitchModulator() {
-    vibratoDelay = 0;
-    vibrato = 0;
-    vibratoDelta = 0;
-  }
-  int evaluate(int startpitch, unsigned int time);
-};
-
-// All the parameters for a sound
-struct Sound {
-  ADSR adsr;
-  PitchModulator pm;
-};
-
-class SoundPlayer {
-  // Playback parameters
-  Sound sound;
-  byte volume;
-  unsigned int pitch;
-  unsigned int duration;
-  // Internal vars
-  unsigned int ticks;
-  bool active, releasing;
-  // Sound players form a linked list
-  bool isLinked;
-  SoundPlayer *link;
-  // The SoundPlayer is updated from SoundController
-  void update();
-  friend class SoundController;
-  // You can't copy me...
-  SoundPlayer(const SoundPlayer&);
-  void operator=(const SoundPlayer&);
-public:
-  SoundPlayer();
-  
-  // Set the sound parameters
-  SoundPlayer& setSound(const Sound&);
-
-  // Set playback volume in range [0..255], default = 255
-  SoundPlayer& setVolume(byte);
- 
-  // Play a sound, pitch in Hz, duration in clock ticks.
-  // If duration is 'infinite' then the sound plays until you call 'release()'
-  // One "clock tick" is equivalent to one call to "SoundController::update()"
-  enum { infinite=0x7fff };
-  void play(unsigned int pitchHz, unsigned int duration=infinite);
-  
-  // Make the current sound enter the 'release' phase
-  void release();
-  
-  // Stop sound playback immediately
-  void stop();
-};
-#endif
-
-/*------------------------------------------------------------------
-  Main sound controller object
-------------------------------------------------------------------*/
-struct SoundController {
-  // Reset all sounds, return to silence
-  static void reset();
-
-  // Update all sound - call this at least once every video frame.
-  // The frequency at which you call this function is one "clock tick" for synthesised sounds
-  static void update();
-
-  // Play a sound sample from program memory
-  // Samples are eight bits and will be played at
-  // the system sample rate (see "Coprocessor").
-  // if "numBytes" is negative, the sample will repeat until you play
-  // another sample on the channel (eg. pass a null pointer to "playSample()"...)
-  static void playSample(prog_char*, int numBytes, byte channel);
-};
-
-
-
-/*------------------------------------------------------------
-  Useful little functions
-------------------------------------------------------------*/
-// Show a number on screen
-void showNumber(int n, byte x, byte y);
-void showHexNumber(unsigned int n, byte x, byte y);
-
-// Send screenshot to serial port
-
-void sendScreenshot();
-
-// COM_ARTLUM_GDUTILS_INCLUDED
-#endif
+#ifndef COM_ARTLUM_GDUTILS_INCLUDED
+#define COM_ARTLUM_GDUTILS_INCLUDED
+#include "arduino.h"
+#include "GD.h"
+//#include "WProgram.h"
+
+/*---------------------------------------------------
+  Coprocessor controller - makes it easy to do
+  raster effects (eg. split screens) without
+  writing any FORTH.
+  
+  The way this works is that you build a list of
+  instructions in memory (a "copperlist") and
+  the coprocessor will execute the list on every
+  video frame.
+  
+  Code samples:
+  
+  void setup() {
+    ...
+    // Make a copperlist to change a palette color on line 100
+    // The copperlist is stored on the Gameduino at address 0x3f80
+    Coprocessor::reset();
+    CopperlistBuilder cp;
+    cp.begin(0x3f80);
+    cp.wait(100);
+    cp.write16(PALETTE4A, 0x7fff);
+    cp.end();  // And start using the new copperlist
+  }
+ 
+  Modifying an existing copperlist:
+  
+  // Make a copperlist to set the horizontal scroll register
+  // on line 220 and modify the copperlist.
+  // a) Build the list
+  unsigned int XscrollInst;
+  void setup() {
+    ...
+    CopperlistBuilder cp;
+    cp.begin(0x3f80);
+    cp.wait(220);
+    XscrollInst = cp.position();    // Get current output location
+    cp.write16(SCROLL_X, 0);
+    cp.end();
+  }
+  // b) Modify the list with current 'xscroll'
+  void loop() {
+    CopperlistBuilder cp;
+    cp.begin(XscrollInst)           // Where the 'write16()' instruction is
+    cp.write16(SCROLL_X, xscroll);  // Overwrite the previous instruction
+  }
+
+  Notes: 
+  The Coprocessor object uses the "COMM" block
+  of memory at 0x2980 so don't mess with it.
+
+  The coprocessor also provides support for the
+  sound functions below.
+---------------------------------------------------*/
+class Coprocessor {
+public:
+  // This initializes everything and load the coprocessor code.
+  // You should call this in your setup() function after "GD.begin();"
+  //
+  // The sample page is the page of Gameduino memory to
+  // use as a buffer for sample playback. It *must* be
+  // on a page boundry (ie. bottom 8 bits are 0) and
+  // the whole page will be used so you can't use it
+  // for anything else.
+  static void reset(unsigned int samplePage=0x3f00);  // Default: Use memory from 0x3f00 to 0x3fff
+  
+  // Select a copperlist. The list will start running on the next video frame.
+  // nb. The "CopperlistBuilder::end()" function normally calls this automatically
+  // (unless you tell it not to...)
+  static void setCopperlist(unsigned int addr);
+  
+  // Where the sample playback page is located
+  static unsigned int samplePage();
+
+  // Where the coprocessor is currently reading samples
+  // from in the sample page. Use this info to keep the
+  // page full of fresh sample data for playback
+  static byte sampleReadPos();
+
+  // A copy of the coprocessor YLINE register
+  static int yline();
+};
+
+// This object helps you make a copperlist in memory
+class CopperlistBuilder {
+  unsigned int out,start;
+  void put(byte);
+  void put16(unsigned int);
+public:
+  // Available commands are:
+  // * Wait for a raster line
+  // * Write a byte to a memory location
+  // * Write a 16-bit word to a memory location
+  // * Copy a block of memory from one place to another
+  void begin(unsigned int dest);
+    void wait(int line);
+    void write(unsigned int addr, byte val);
+    void write16(unsigned int addr, unsigned int val);
+    void copy(unsigned int src, unsigned int dst, unsigned int numBytes);
+  void end(bool executeNow=true);
+
+  // Where I'm currently outputting
+  unsigned int position();
+};
+
+
+/*------------------------------------------------------------------
+  Sound functions - play synthesized sounds and sound samples
+  
+  These functions require support from the Coprocessor object
+  above. If you load different microcode they'll stop working...
+------------------------------------------------------------------*/
+
+/*------------------------------------------------------------------
+  Synthesized sounds
+------------------------------------------------------------------*/
+#define SYNTHSOUNDS 0
+#if SYNTHSOUNDS
+// ADSR volume envelope
+struct ADSR {
+  byte attack;      // Attack time (in clock ticks)
+  byte decay;       // Decay time (in clock ticks)
+  byte sustain;     // Sustain level [0..255]
+  byte release;     // Release time (in clock ticks)
+  ADSR(byte a=4, byte d=4, byte s=90, byte r=30);
+  byte evaluate(unsigned int elapsedTime, unsigned int releaseTime);
+};
+
+// Change pitch of a sound as it plays
+struct PitchModulator {
+  // Vibrato
+  byte vibratoDelay;   // Delay before vibrato starts (in clock ticks)
+  byte vibrato;        // Amount of vibrato (percentage of note pitch)
+  char vibratoDelta;   // Added to 'vibrato' every clock tick 
+  // Pitch Sweep
+  byte sweepDelay;     // Delay before sweep starts (in clock ticks)
+  byte sweep;
+  char sweepDelta;
+  PitchModulator() {
+    vibratoDelay = 0;
+    vibrato = 0;
+    vibratoDelta = 0;
+  }
+  int evaluate(int startpitch, unsigned int time);
+};
+
+// All the parameters for a sound
+struct Sound {
+  ADSR adsr;
+  PitchModulator pm;
+};
+
+class SoundPlayer {
+  // Playback parameters
+  Sound sound;
+  byte volume;
+  unsigned int pitch;
+  unsigned int duration;
+  // Internal vars
+  unsigned int ticks;
+  bool active, releasing;
+  // Sound players form a linked list
+  bool isLinked;
+  SoundPlayer *link;
+  // The SoundPlayer is updated from SoundController
+  void update();
+  friend class SoundController;
+  // You can't copy me...
+  SoundPlayer(const SoundPlayer&);
+  void operator=(const SoundPlayer&);
+public:
+  SoundPlayer();
+  
+  // Set the sound parameters
+  SoundPlayer& setSound(const Sound&);
+
+  // Set playback volume in range [0..255], default = 255
+  SoundPlayer& setVolume(byte);
+ 
+  // Play a sound, pitch in Hz, duration in clock ticks.
+  // If duration is 'infinite' then the sound plays until you call 'release()'
+  // One "clock tick" is equivalent to one call to "SoundController::update()"
+  enum { infinite=0x7fff };
+  void play(unsigned int pitchHz, unsigned int duration=infinite);
+  
+  // Make the current sound enter the 'release' phase
+  void release();
+  
+  // Stop sound playback immediately
+  void stop();
+};
+#endif
+
+/*------------------------------------------------------------------
+  Main sound controller object
+------------------------------------------------------------------*/
+struct SoundController {
+  // Reset all sounds, return to silence
+  static void reset();
+
+  // Update all sound - call this at least once every video frame.
+  // The frequency at which you call this function is one "clock tick" for synthesised sounds
+  static void update();
+
+  // Play a sound sample from program memory
+  // Samples are eight bits and will be played at
+  // the system sample rate (see "Coprocessor").
+  // if "numBytes" is negative, the sample will repeat until you play
+  // another sample on the channel (eg. pass a null pointer to "playSample()"...)
+  static void playSample(prog_char*, int numBytes, byte channel);
+};
+
+
+
+/*------------------------------------------------------------
+  Useful little functions
+------------------------------------------------------------*/
+// Show a number on screen
+void showNumber(int n, byte x, byte y);
+void showHexNumber(unsigned int n, byte x, byte y);
+
+// Send screenshot to serial port
+
+void sendScreenshot();
+
+// COM_ARTLUM_GDUTILS_INCLUDED
+#endif