FRDM-KL25Z with Nokia 3110 type LCD display Using accelerometer to make movements

Dependencies:   MMA8451Q N3310LCD mbed

Fork of FRDM_MMA8451Q by mbed official

Files at this revision

API Documentation at this revision

Comitter:
SomeRandomBloke
Date:
Sun Mar 24 15:24:26 2013 +0000
Parent:
11:90d35ac294af
Commit message:
updates

Changed in this revision

N3310LCD.lib 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
splash.h Show annotated file Show diff for this revision Revisions of this file
--- a/N3310LCD.lib	Thu Mar 21 21:53:58 2013 +0000
+++ b/N3310LCD.lib	Sun Mar 24 15:24:26 2013 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/SomeRandomBloke/code/N3310LCD/#e6c002c680a6
+http://mbed.org/users/SomeRandomBloke/code/N3310LCD/#9808f63fd2fe
--- a/main.cpp	Thu Mar 21 21:53:58 2013 +0000
+++ b/main.cpp	Sun Mar 24 15:24:26 2013 +0000
@@ -13,7 +13,7 @@
 
 // menu starting points
 #define MENU_X    10        // 0-83
-#define MENU_Y    0        // 0-5
+#define MENU_Y    1        // 0-5
 
 #define MENU_ITEMS 4
 
@@ -22,7 +22,7 @@
 void about(N3310LCD* lcd, Joystick* jstick);
 void draw(N3310LCD* lcd, Joystick* jstick);
 void snakeGame(N3310LCD* lcd, Joystick* jstick);
-void backlight(N3310LCD* lcd, Joystick* jstick);
+void setup(N3310LCD* lcd, Joystick* jstick);
 void waitforOKKey(N3310LCD* lcd, Joystick* jstick);
 uint8_t checkKeypressed( Joystick* jstick);
 
@@ -30,27 +30,27 @@
 char menu_items[MENU_ITEMS][12] = {
     "SKETCH",
     "SNAKE",
-    "BACKLIGHT",
+    "SETUP",
     "ABOUT"
 };
 
 void (*menu_funcs[MENU_ITEMS])(N3310LCD*,Joystick*) = {
     draw,
     snakeGame,
-    backlight,
+    setup,
     about
 };
 
 
 void about(N3310LCD* lcd, Joystick* jstick)
 {
-    lcd->writeString(0, 0,  "mbed-a-sketch", NORMAL);
-    lcd->writeString(12, 1, "driven by", NORMAL);
-    lcd->writeString(10, 2, "KL25Z mbed", NORMAL);
-    lcd->writeString(0, 3,  "By AD Lindsay", NORMAL);
+    lcd->writeString(6, 0,  "mbed and LCD", NORMAL);
+    lcd->writeString(0, 1, "demos on KL25Z", NORMAL);
+    lcd->writeString(36, 2, "By", NORMAL);
+    lcd->writeString(0, 3,  "Andrew Lindsay", NORMAL);
 }
 
-void backlight(N3310LCD* lcd, Joystick* jstick)
+void setup(N3310LCD* lcd, Joystick* jstick)
 {
     lcd->writeString( 0, 1, "Toggle", NORMAL);
     lcd->writeString( 0, 2, "Backlight", NORMAL);
@@ -111,32 +111,20 @@
     float cValues[3] = { 0.0, 0.0, 0.0 };
     int16_t xI, yI;
     int16_t xInc, yInc;
-
-    centreBoard( &acc, cValues );
-    lcd->cls();
-
-    // Take 100 readings to get stable centre point
-    /*    for( int i = 0; i < 100; i++ ) {
-            float axis[3] = { 0.0, 0.0, 0.0 };
-            acc.getAccAllAxis( axis );
-            cValues[0] += axis[0];
-            cValues[1] += axis[1];
-        }
-
-        cValues[0] /= 100.0;
-        cValues[1] /= 100.0;
-    */
-    // Draw a rectangle
-    lcd->drawRectangle(0,0,83,47, PIXEL_ON);
-
     int8_t px = 42;
     int8_t py = 24;
     int8_t nx = px;
     int8_t ny = py;
 
-    lcd->setPixel( px, py, PIXEL_ON );
+    lcd->drawBitmap(0, 0, splashSketch, 84, 48);
+    wait( 5 );
 
+    centreBoard( &acc, cValues );
+    lcd->cls();
 
+    // Draw a rectangle
+    lcd->drawRectangle(0,0,83,47, PIXEL_ON);
+    lcd->setPixel( px, py, PIXEL_ON );
 
     // Exit on joystick pressed
     bool exitFlag = false;
@@ -176,7 +164,7 @@
 }
 
 #define MAX_SNAKE_LEN 400
-#define MAX_FOOD 10
+#define MAX_FOOD 5
 #define SNAKE_X 0
 #define SNAKE_Y 1
 #define DIR_N 1
@@ -194,6 +182,7 @@
 
 void initSnake( void )
 {
+    snakeLen = 10;
     for( int i=0; i< MAX_SNAKE_LEN; i++ ) {
         snake[i][SNAKE_X] = -1;
         snake[i][SNAKE_Y] = -1;
@@ -244,7 +233,9 @@
         snake[i][SNAKE_Y] = nY;
     }
 
-    drawSnake(lcd);
+    // Plot head at new position as this is only part that is moving
+    lcd->setPixel( snake[0][SNAKE_X], snake[0][SNAKE_Y], PIXEL_ON );
+    
     if( growLength > 0 && snakeLen < MAX_SNAKE_LEN ) {
         // Dont clear tail, add point to tail
         snake[snakeLen][SNAKE_X] = oX;
@@ -256,16 +247,53 @@
     }
 }
 
+bool isOnSnake( int8_t sX, int8_t sY )
+{
+    bool onSnake = false;
+//    pc.printf("isOnSnake sX = %d, sY = %d \n", *sX, *sY );
+    for( int i = 0; i< snakeLen; i++ ) {
+        if( snake[i][SNAKE_X] == sX && snake[i][SNAKE_Y] == sY ) {
+            onSnake = true;
+            break;
+        }
+    }
+    return onSnake;
+}
+
 bool checkCollision( uint8_t dir)
 {
     bool collisionFlag = false;
+    int8_t nX = snake[0][SNAKE_X];
+    int8_t nY = snake[0][SNAKE_Y];
+    
+    switch( dir) {
+        case DIR_N:
+            nY--;
+            break;
+        case DIR_E:
+            nX++;
+            break;
+        case DIR_S:
+            nY++;
+            break;
+        case DIR_W:
+            nX--;
+            break;    
+    }
+    if( isOnSnake( nX, nY ) )
+        return true;
 
+    if( snake[0][SNAKE_X] <= 0 || snake[0][SNAKE_X] >= 83 || 
+        snake[0][SNAKE_Y] <= 0 || snake[0][SNAKE_Y] >= 47 )
+        return true;
+        
     return collisionFlag;
 }
 
 
 void initFood()
 {
+    foodCount = 0;
     for( uint8_t i = 0; i< MAX_FOOD; i++ ) {
         food[i][FOOD_X] = -1;
         food[i][FOOD_Y] = -1;
@@ -277,42 +305,25 @@
 bool checkFood(uint8_t dir)
 {
     bool foodFlag = false;
-pc.printf("CHECK: X %d, Y %d\n",snake[0][SNAKE_X], snake[0][SNAKE_Y]);
     for( int i = 0; i < MAX_FOOD; i++ ) {
-pc.printf("FOOD: X %d, Y %d\n",food[i][FOOD_X], food[i][FOOD_Y]);
-    
         if( snake[0][SNAKE_X] == food[i][FOOD_X] && snake[0][SNAKE_Y] == food[i][FOOD_Y] ) {
             foodFlag = true;
             food[i][FOOD_X] = -1;
             food[i][FOOD_Y] = -1;
             foodCount--;
-pc.printf("FOOD!\n");
             break;
         }
     }
     return foodFlag;
 }
 
-bool isOnSnake( int8_t *sX, int8_t *sY )
-{
-    bool onSnake = false;
-    pc.printf("isOnSnake sX = %d, sY = %d \n", *sX, *sY );
-    for( int i = 0; i< snakeLen; i++ ) {
-        if( snake[i][SNAKE_X] == *sX && snake[i][SNAKE_Y] == *sY ) {
-            onSnake = true;
-            break;
-        }
-    }
-    return onSnake;
-}
-
 
 void getRandomPosition( int8_t *rX, int8_t *rY )
 {
     *rX = ((rand() % 100)*82)/100+1;
     *rY = ((rand() % 100)*46)/100+1;
 
-    while( isOnSnake( rX, rY )) {
+    while( isOnSnake( *rX, *rY )) {
         *rX = ((rand() % 100)*82)/100+1;
         *rY = ((rand() % 100)*46)/100+1;
     }
@@ -321,10 +332,8 @@
 
 void storeFood( int8_t fX, int8_t fY )
 {
-    pc.printf("Store fX = %d, fY = %d \n", fX, fY );
     for( int i = 0; i< MAX_FOOD; i++ ) {
         if( food[i][FOOD_X] < 0 ) {
-        pc.printf("Store in %d\n",i);
             food[i][FOOD_X] = fX;
             food[i][FOOD_Y] = fY;
             break;
@@ -344,10 +353,7 @@
         lcd->setPixel( fX, fY, PIXEL_ON );
         storeFood( fX, fY );
         foodCount++;
-
-        pc.printf("fX = %d, fY = %d \n", fX, fY );
     }
-
 }
 
 void snakeGame(N3310LCD* lcd, Joystick* jstick)
@@ -358,6 +364,9 @@
     int16_t xI, yI; //, zI;
     int16_t xInc, yInc;
 
+    lcd->drawBitmap(0, 0, splashSnake, 84, 48);
+    wait( 3 );
+    
     centreBoard( &acc, cValues );
 
     lcd->cls();
@@ -387,13 +396,6 @@
             wait(0.2);
         }
     */
-//    int8_t px = 42;
-//    int8_t py = 25;
-//    int8_t nx = px;
-//    int8_t ny = py;
-
-//    lcd->setPixel( px, py, PIXEL_ON );
-
 
     // Exit on joystick pressed
     bool exitFlag = false;
@@ -429,6 +431,10 @@
         // TODO Check if we've collided with anything
         if( checkCollision(snakeDirection) ) {
             // Collision detected!!
+            lcd->writeString(30, 2, "GAME", NORMAL);
+            lcd->writeString(30, 3, "OVER", NORMAL);
+            exitFlag = true;
+            continue;
         }
 
         if( checkFood(snakeDirection) ) {
@@ -436,7 +442,7 @@
             // Indicate that snake is to grow during next moves
             snakeGrowth = 10;
 
-            // Handle new food bing added to area
+            // Drop more food into area
             dropFood(lcd);
         }
 
@@ -502,8 +508,8 @@
     // demo stuff
     // autoDemo(&lcd);
 
-//    lcd.drawBitmap(0, 0, splash, 84, 48);
-//    wait( 5 );
+    lcd.drawBitmap(0, 0, splashMain, 84, 48);
+    wait( 3 );
     lcd.cls();
 
     initMenu(&lcd);
--- a/splash.h	Thu Mar 21 21:53:58 2013 +0000
+++ b/splash.h	Sun Mar 24 15:24:26 2013 +0000
@@ -3,33 +3,33 @@
 // http://en.radzio.dxp.pl/bitmap_converter/
 //------------------------------------------------------------------------------
 
-unsigned char splash [] = {
+unsigned char splashMain [] = {
 0xC0, 0x20, 0x10, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0xE1, 0xE1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0xE1, 0xE1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04,
-0x08, 0x10, 0x20, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x0C, 0x06, 0x06, 0x06, 0xFE,
-0xF8, 0x0C, 0x06, 0x06, 0x06, 0xFE, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x06, 0x06, 0x06, 0x0E,
-0xFC, 0xF0, 0x00, 0x00, 0xF0, 0xFC, 0x6C, 0x66, 0x66, 0x66, 0x66, 0x6C, 0x7C, 0x70, 0x00, 0x00,
-0xF0, 0xFC, 0x0E, 0x06, 0x06, 0x06, 0x0C, 0xFF, 0xFF, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
-0x00, 0x00, 0x8C, 0xCC, 0xC6, 0xC6, 0x66, 0x66, 0x66, 0xFE, 0xFC, 0x00, 0x00, 0x60, 0x60, 0x60,
-0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00,
-0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x0F, 0x0F, 0x06,
-0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E,
-0x06, 0x02, 0x00, 0x00, 0x01, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x06, 0x0F, 0x0F, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x0F, 0x08,
+0x01, 0xE1, 0xE1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xE1,
+0xE1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04,
+0x08, 0x10, 0x20, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x0C, 0x06, 0x06, 0x06, 0xFE, 0xF8, 0x0C, 0x06, 0x06,
+0x06, 0xFE, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x06, 0x06, 0x06, 0x0E, 0xFC, 0xF0, 0x00, 0x00,
+0xF0, 0xFC, 0x6C, 0x66, 0x66, 0x66, 0x66, 0x6C, 0x7C, 0x70, 0x00, 0x00, 0xF0, 0xFC, 0x0E, 0x06,
+0x06, 0x06, 0x0C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F,
+0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x0F, 0x0F, 0x06, 0x0C, 0x0C, 0x0C, 0x0E,
+0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x02, 0x00, 0x00,
+0x01, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x06, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xC0, 0x80, 0x00,
-0x00, 0xFE, 0xFE, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0xC0, 0xC0, 0x60, 0x60,
-0x60, 0x60, 0xC0, 0xC0, 0x00, 0x00, 0x60, 0xFC, 0xFE, 0x60, 0x60, 0x00, 0x00, 0x00, 0xC0, 0xC0,
-0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xFE, 0xFE, 0xC0, 0x60, 0x60, 0x60, 0xE0, 0xC0,
-0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
-0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x67, 0xC6, 0xC6, 0xC6, 0xCC,
-0xCC, 0x7C, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0x07, 0x0F, 0x3D, 0xF0, 0xE0, 0x80, 0x00, 0x1F,
-0x7F, 0x66, 0xC6, 0xC6, 0xC6, 0xC6, 0xE6, 0x67, 0x27, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0xC0, 0x00,
-0x00, 0x1F, 0x7F, 0xE0, 0xC0, 0xC0, 0xC0, 0xE0, 0x71, 0x31, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
-0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
+0x60, 0x60, 0x60, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xC0,
+0xC0, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0x60, 0x60, 0x60, 0xE0, 0x80, 0xC0, 0x60, 0x60, 0x60,
+0xE0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x1F, 0x7F, 0xE0, 0xC0, 0xC0, 0xC0, 0x60, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0x7F, 0x66, 0xC6,
+0xC6, 0xC6, 0xC6, 0xE6, 0x67, 0x27, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0x7F, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0x60,
+0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0xFF, 0x03, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40,
 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
@@ -37,3 +37,74 @@
 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x03, 
 };
+
+unsigned char splashSnake [] = {
+0xC0, 0x20, 0x10, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0xC1, 0xC1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0xC1, 0xC1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04,
+0x08, 0x10, 0x20, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x18, 0x0C, 0x0C, 0x0C, 0xFC, 0xF0, 0x18, 0x0C,
+0x0C, 0x0C, 0xFC, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x0C, 0x0C, 0x0C, 0x1C, 0xF8, 0xE0, 0x00,
+0x00, 0xE0, 0xF8, 0xD8, 0xCC, 0xCC, 0xCC, 0xCC, 0xD8, 0xF8, 0xE0, 0x00, 0x00, 0xE0, 0xF8, 0x1C,
+0x0C, 0x0C, 0x0C, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00,
+0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x1F, 0x1F, 0x0C, 0x18, 0x18, 0x18,
+0x1C, 0x0F, 0x03, 0x00, 0x00, 0x03, 0x0F, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0C, 0x04, 0x00,
+0x00, 0x03, 0x0F, 0x1C, 0x18, 0x18, 0x18, 0x0C, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x60,
+0x60, 0x60, 0xC0, 0x80, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x00,
+0x00, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00,
+0x00, 0x80, 0xC0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23,
+0x67, 0xC6, 0xC6, 0xC6, 0xCC, 0xCC, 0x7C, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xFF, 0xFF, 0x00, 0x00, 0x78, 0xFC, 0xCC, 0xCC, 0xC6, 0xC6, 0x66, 0x7F, 0xFF, 0x80, 0x00,
+0x00, 0xFF, 0xFF, 0x06, 0x07, 0x0F, 0x3D, 0xF0, 0xE0, 0x80, 0x00, 0x1F, 0x7F, 0x66, 0xC6, 0xC6,
+0xC6, 0xC6, 0xE6, 0x67, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xFF, 0x03, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40,
+0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x03, 
+};
+
+unsigned char splashSketch [] = {
+0xC0, 0x20, 0x10, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xC1, 0xC1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0xC1, 0xC1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04,
+0x08, 0x10, 0x20, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x18, 0x0C, 0x0C, 0x0C,
+0xFC, 0xF0, 0x18, 0x0C, 0x0C, 0x0C, 0xFC, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x0C, 0x0C, 0x0C,
+0x1C, 0xF8, 0xE0, 0x00, 0x00, 0xE0, 0xF8, 0xD8, 0xCC, 0xCC, 0xCC, 0xCC, 0xD8, 0xF8, 0xE0, 0x00,
+0x00, 0xE0, 0xF8, 0x1C, 0x0C, 0x0C, 0x0C, 0x18, 0xFF, 0xFF, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+0xC0, 0x00, 0x00, 0x18, 0x98, 0x8C, 0x8C, 0xCC, 0xCC, 0xCC, 0xFC, 0xF8, 0x00, 0x00, 0xC0, 0xC0,
+0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F,
+0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x1F, 0x1F,
+0x0C, 0x18, 0x18, 0x18, 0x1C, 0x0F, 0x03, 0x00, 0x00, 0x03, 0x0F, 0x0C, 0x18, 0x18, 0x18, 0x18,
+0x1C, 0x0C, 0x04, 0x00, 0x00, 0x03, 0x0F, 0x1C, 0x18, 0x18, 0x18, 0x0C, 0x1F, 0x1F, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x19, 0x19, 0x18, 0x18, 0x0C, 0x0F, 0x1F,
+0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xC0,
+0x80, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0xC0, 0xC0,
+0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x00, 0x00, 0x60, 0xFC, 0xFE, 0x60, 0x60, 0x00, 0x00, 0x00,
+0xC0, 0xC0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xFE, 0xFE, 0xC0, 0x60, 0x60, 0x60,
+0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x67, 0xC6, 0xC6,
+0xC6, 0xCC, 0xCC, 0x7C, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0x07, 0x0F, 0x3D, 0xF0, 0xE0, 0x80,
+0x00, 0x1F, 0x7F, 0x66, 0xC6, 0xC6, 0xC6, 0xC6, 0xE6, 0x67, 0x27, 0x00, 0x00, 0x7F, 0xFF, 0xC0,
+0xC0, 0x00, 0x00, 0x1F, 0x7F, 0xE0, 0xC0, 0xC0, 0xC0, 0xE0, 0x71, 0x31, 0x00, 0x00, 0xFF, 0xFF,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xFF, 0x03, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40,
+0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x03, 
+};
+