Charcell lcd driver: Preparations for switching to non-immediate LCD updates, using lcd_update() like on bitmap targets. * Added proper clipping. * Simplified simulator code.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12979 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/plugin.c b/apps/plugin.c
index de04269..52d4312 100644
--- a/apps/plugin.c
+++ b/apps/plugin.c
@@ -66,6 +66,7 @@
 
     /* lcd */
     lcd_set_contrast,
+    lcd_update,
     lcd_clear_display,
     lcd_setmargins,
     lcd_getstringsize,
@@ -114,7 +115,6 @@
     lcd_puts_scroll_style,
     &lcd_framebuffer[0][0],
     lcd_blit,
-    lcd_update,
     lcd_update_rect,
     gui_scrollbar_draw,
     font_get,
diff --git a/apps/plugin.h b/apps/plugin.h
index 7688057..cb076f5 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -110,12 +110,12 @@
 #define PLUGIN_MAGIC 0x526F634B /* RocK */
 
 /* increase this every time the api struct changes */
-#define PLUGIN_API_VERSION 50
+#define PLUGIN_API_VERSION 51
 
 /* update this to latest version if a change to the api struct breaks
    backwards compatibility (and please take the opportunity to sort in any
    new function which are "waiting" at the end of the function table) */
-#define PLUGIN_MIN_API_VERSION 50
+#define PLUGIN_MIN_API_VERSION 51
 
 /* plugin return codes */
 enum plugin_status {
@@ -134,6 +134,7 @@
 
     /* lcd */
     void (*lcd_set_contrast)(int x);
+    void (*lcd_update)(void);
     void (*lcd_clear_display)(void);
     void (*lcd_setmargins)(int x, int y);
     int  (*lcd_getstringsize)(const unsigned char *str, int *w, int *h);
@@ -191,7 +192,6 @@
     fb_data* lcd_framebuffer;
     void (*lcd_blit) (const fb_data* data, int x, int by, int width,
                       int bheight, int stride);
-    void (*lcd_update)(void);
     void (*lcd_update_rect)(int x, int y, int width, int height);
     void (*gui_scrollbar_draw)(struct screen * screen, int x, int y,
                                int width, int height, int items,
diff --git a/firmware/drivers/lcd-charcell.c b/firmware/drivers/lcd-charcell.c
index 76f7cf1..5ddef99 100644
--- a/firmware/drivers/lcd-charcell.c
+++ b/firmware/drivers/lcd-charcell.c
@@ -38,42 +38,21 @@
 
 #define NO_PATTERN (-1)
 
-#define SCROLL_MODE_OFF   0
-#define SCROLL_MODE_RUN   1
-
-/* track usage of user-definable characters */
-struct pattern_info {
-    short count;
-    unsigned short xchar;
-};
-
-struct cursor_info {
-    unsigned char hw_char;
-    bool enabled;
-    bool visible;
-    int x;
-    int y;
-    int divider;
-    int downcount;
-};
-
 static int find_xchar(unsigned long ucs);
 
 /** globals **/
 
 /* The "frame"buffer */
-static unsigned char lcd_buffer[LCD_WIDTH][LCD_HEIGHT];
-#ifdef SIMULATOR
-unsigned char hardware_buffer_lcd[LCD_WIDTH][LCD_HEIGHT];
-#endif
-
-static int xmargin = 0;
-static int ymargin = 0;
+unsigned char lcd_charbuffer[LCD_HEIGHT][LCD_WIDTH];
+struct pattern_info lcd_patterns[MAX_HW_PATTERNS];
+struct cursor_info lcd_cursor;
 
 static unsigned char xfont_variable[VARIABLE_XCHARS][HW_PATTERN_SIZE];
 static bool xfont_variable_locked[VARIABLE_XCHARS];
-static struct pattern_info hw_pattern[MAX_HW_PATTERNS];
-static struct cursor_info cursor;
+static int xspace; /* stores xhcar id of ' ' - often needed */
+
+static int xmargin = 0;
+static int ymargin = 0;
 
 /* scrolling */
 static volatile int scrolling_lines=0; /* Bitpattern of which lines are scrolling */
@@ -98,8 +77,9 @@
 {
     lcd_init_device();
     lcd_charset_init();
-    memset(hw_pattern, 0, sizeof(hw_pattern));
-    memset(lcd_buffer, xchar_info[find_xchar(' ')].hw_char, sizeof(lcd_buffer));
+    memset(lcd_patterns, 0, sizeof(lcd_patterns));
+    xspace = find_xchar(' ');
+    memset(lcd_charbuffer, xchar_info[xspace].hw_char, sizeof(lcd_charbuffer));
 
     create_thread(scroll_thread, scroll_stack,
                   sizeof(scroll_stack), scroll_name
@@ -165,8 +145,8 @@
 {
     int i;
 
-    for (i = 0; i < hw_pattern_count; i++)
-        if (hw_pattern[i].xchar == xchar)
+    for (i = 0; i < lcd_pattern_count; i++)
+        if (lcd_patterns[i].xchar == xchar)
             return i;
 
     return NO_PATTERN;
@@ -193,27 +173,14 @@
         substitute = xchar_info[xchar].hw_char;
 
         for (x = 0; x < LCD_WIDTH; x++)
-        {
             for (y = 0; y < LCD_HEIGHT; y++)
-            {
-                if (pat == lcd_buffer[x][y])
-                {
-                    lcd_buffer[x][y] = substitute;
-#ifdef SIMULATOR
-                    hardware_buffer_lcd[x][y] = substitute;
-#else
-                    lcd_put_hw_char(x, y, substitute);
-#endif
-                }
-            }
-        }
-        if (cursor.enabled && pat == cursor.hw_char)
-            cursor.hw_char = substitute;
+                if (pat == lcd_charbuffer[y][x])
+                    lcd_charbuffer[y][x] = substitute;
 
-        hw_pattern[pat].count = 0;
-#ifdef SIMULATOR
-        lcd_update();
-#endif
+        if (lcd_cursor.enabled && pat == lcd_cursor.hw_char)
+            lcd_cursor.hw_char = substitute;
+
+        lcd_patterns[pat].count = 0;
     }
 }
 
@@ -223,30 +190,30 @@
 
     int pat = last_used_pat; /* start from last used pattern */
     int least_pat = pat;     /* pattern with least priority */
-    int least_priority = xchar_info[hw_pattern[pat].xchar].priority;
+    int least_priority = xchar_info[lcd_patterns[pat].xchar].priority;
     int i;
 
-    for (i = 0; i < hw_pattern_count; i++)
+    for (i = 0; i < lcd_pattern_count; i++)
     {
-        if (++pat >= hw_pattern_count)  /* Keep 'pat' within limits */
+        if (++pat >= lcd_pattern_count)  /* Keep 'pat' within limits */
             pat = 0;
             
-        if (hw_pattern[pat].count == 0)
+        if (lcd_patterns[pat].count == 0)
         {
-            hw_pattern[pat].xchar = xchar;
+            lcd_patterns[pat].xchar = xchar;
             last_used_pat = pat;
             return pat;
         }
-        if (xchar_info[hw_pattern[pat].xchar].priority < least_priority)
+        if (xchar_info[lcd_patterns[pat].xchar].priority < least_priority)
         {
-            least_priority = xchar_info[hw_pattern[pat].xchar].priority;
+            least_priority = xchar_info[lcd_patterns[pat].xchar].priority;
             least_pat = pat;
         }
     }
     if (xchar_info[xchar].priority > least_priority) /* prioritized char */
     {
-        lcd_free_pat(hw_pattern[least_pat].xchar);
-        hw_pattern[least_pat].xchar = xchar;
+        lcd_free_pat(lcd_patterns[least_pat].xchar);
+        lcd_patterns[least_pat].xchar = xchar;
         last_used_pat = least_pat;
         return least_pat;
     }
@@ -267,9 +234,10 @@
             if (pat == NO_PATTERN)           /* failed: just use substitute */
                 return xchar_info[xchar].hw_char;
             else                             /* define pattern */
-                lcd_define_hw_pattern(pat, xchar_to_glyph(xchar));
+                memcpy(lcd_patterns[pat].pattern, xchar_to_glyph(xchar),
+                       HW_PATTERN_SIZE);
         }
-        hw_pattern[pat].count++;             /* increase reference count */
+        lcd_patterns[pat].count++;             /* increase reference count */
         return pat;
     }
     else                                     /* hardware char */
@@ -278,18 +246,12 @@
 
 static void lcd_putxchar(int x, int y, int xchar)
 {
-    int lcd_char = lcd_buffer[x][y];
+    int lcd_char = lcd_charbuffer[y][x];
 
-    if (lcd_char < hw_pattern_count)         /* old char was soft */
-        hw_pattern[lcd_char].count--;        /* decrease old reference count */
+    if (lcd_char < lcd_pattern_count)         /* old char was soft */
+        lcd_patterns[lcd_char].count--;        /* decrease old reference count */
 
-    lcd_buffer[x][y] = lcd_char = map_xchar(xchar);
-#ifdef SIMULATOR
-    hardware_buffer_lcd[x][y] = lcd_char;
-    lcd_update();
-#else
-    lcd_put_hw_char(x, y, lcd_char);
-#endif
+    lcd_charbuffer[y][x] = map_xchar(xchar);
 }
 
 /** user-definable pattern handling **/
@@ -332,7 +294,10 @@
         memcpy(xfont_variable[index & 0x7fff], pattern, HW_PATTERN_SIZE);
         pat = xchar_to_pat(xchar);
         if (pat != NO_PATTERN)
-            lcd_define_hw_pattern(pat, pattern);
+        {
+            memcpy(lcd_patterns[pat].pattern, pattern, HW_PATTERN_SIZE);
+            lcd_update(); //FIXME: remove when lcd_update() calls are checked all over
+        }
     }
 }
 
@@ -342,14 +307,15 @@
 void lcd_clear_display(void)
 {
     int x, y;
-    int xchar = find_xchar(' ');
 
     lcd_stop_scroll();
     lcd_remove_cursor();
 
     for (x = 0; x < LCD_WIDTH; x++)
         for (y = 0; y < LCD_HEIGHT; y++)
-            lcd_putxchar(x, y, xchar);
+            lcd_putxchar(x, y, xspace);
+
+    lcd_update(); //FIXME: remove when lcd_update() calls are checked all over
 }
 
 /* Put an unicode character at the given position */
@@ -359,38 +325,34 @@
         return;
 
     lcd_putxchar(x, y, find_xchar(ucs));
+    lcd_update(); //FIXME: remove when lcd_update() calls are checked all over
 }
 
 /* Show cursor (alternating with existing character) at the given position */
 void lcd_put_cursor(int x, int y, unsigned long cursor_ucs)
 {
     if ((unsigned)x >= LCD_WIDTH || (unsigned)y >= LCD_HEIGHT
-        || cursor.enabled)
+        || lcd_cursor.enabled)
         return;
 
-    cursor.enabled = true;
-    cursor.visible = false;
-    cursor.hw_char = map_xchar(find_xchar(cursor_ucs));
-    cursor.x = x;
-    cursor.y = y;
-    cursor.downcount = 0;
-    cursor.divider = 4;
+    lcd_cursor.enabled = true;
+    lcd_cursor.visible = false;
+    lcd_cursor.hw_char = map_xchar(find_xchar(cursor_ucs));
+    lcd_cursor.x = x;
+    lcd_cursor.y = y;
+    lcd_cursor.downcount = 0;
+    lcd_cursor.divider = 4;
 }
 
 /* Remove the cursor */
 void lcd_remove_cursor(void)
 {
-    if (cursor.enabled)
+    if (lcd_cursor.enabled)
     {
-        if (cursor.hw_char < hw_pattern_count)  /* soft char, unmap */
-            hw_pattern[cursor.hw_char].count--;
+        if (lcd_cursor.hw_char < lcd_pattern_count)  /* soft char, unmap */
+            lcd_patterns[lcd_cursor.hw_char].count--;
 
-        cursor.enabled = false;
-#ifdef SIMULATOR
-        hardware_buffer_lcd[cursor.x][cursor.y] = lcd_buffer[cursor.x][cursor.y];
-#else
-        lcd_put_hw_char(cursor.x, cursor.y, lcd_buffer[cursor.x][cursor.y]);
-#endif
+        lcd_cursor.enabled = lcd_cursor.visible = false;
     }
 }
 
@@ -409,7 +371,7 @@
             ofs--;
             continue;
         }
-        lcd_putc(x++, y, ucs);
+        lcd_putxchar(x++, y, find_xchar(ucs));
     }
     return x;
 }
@@ -417,7 +379,11 @@
 /* Put a string at a given position */
 void lcd_putsxy(int x, int y, const unsigned char *str)
 {
+    if ((unsigned)y >= LCD_HEIGHT)
+        return;
+
     lcd_putsxyofs(x, y, 0, str);
+    lcd_update(); //FIXME: remove when lcd_update() calls are checked all over
 }
 
 /*** Line oriented text output ***/
@@ -431,15 +397,20 @@
 /* Put a string at a given char position,  skipping first offset chars */
 void lcd_puts_offset(int x, int y, const unsigned char *str, int offset)
 {
-    /* make sure scrolling is turned off on the line we are updating */
-    scrolling_lines &= ~(1 << y);
-
     x += xmargin;
     y += ymargin;
 
+    if ((unsigned)y >= LCD_HEIGHT)
+        return;
+
+    /* make sure scrolling is turned off on the line we are updating */
+    scrolling_lines &= ~(1 << y);
+
     x = lcd_putsxyofs(x, y, offset, str);
     while (x < LCD_WIDTH)
-        lcd_putc(x++, y, ' ');
+        lcd_putxchar(x++, y, xspace);
+
+    lcd_update(); //FIXME: remove when lcd_update() calls are checked all over
 }
 
 /** scrolling **/
@@ -536,12 +507,14 @@
     struct scrollinfo* s;
     int index;
     int xpos, ypos;
+    bool update;
 
     /* initialize scroll struct array */
     scrolling_lines = 0;
 
     while (1)
     {
+        update = false;
         for (index = 0; index < SCROLLABLE_LINES; index++)
         {
             /* really scroll? */
@@ -585,27 +558,20 @@
                     s->offset -= s->len;
             }
             lcd_putsxyofs(xpos, ypos, s->offset, s->line);
+            update = true;
         }
-        if (cursor.enabled)
+        if (lcd_cursor.enabled)
         {
-            if (--cursor.downcount < 0)
+            if (--lcd_cursor.downcount < 0)
             {
-                int lcd_char;
-
-                cursor.downcount = cursor.divider;
-                cursor.visible = !cursor.visible;
-                lcd_char = cursor.visible ? cursor.hw_char
-                         : lcd_buffer[cursor.x][cursor.y];
-#ifdef SIMULATOR
-                hardware_buffer_lcd[cursor.x][cursor.y] = lcd_char;
-#else
-                lcd_put_hw_char(cursor.x, cursor.y, lcd_char);
-#endif
+                lcd_cursor.downcount = lcd_cursor.divider;
+                lcd_cursor.visible = !lcd_cursor.visible;
+                update = true;
             }
         }
-#ifdef SIMULATOR
-        lcd_update();
-#endif
+        if (update)
+            lcd_update();
+
         sleep(scroll_ticks);
     }
 }
diff --git a/firmware/drivers/lcd-charset-player.c b/firmware/drivers/lcd-charset-player.c
index 24c0f65..8218535 100644
--- a/firmware/drivers/lcd-charset-player.c
+++ b/firmware/drivers/lcd-charset-player.c
@@ -22,7 +22,7 @@
 
 #include "lcd-charcell.h"
 
-int hw_pattern_count;  /* actual number of user-definable hw patterns */
+int lcd_pattern_count;  /* actual number of user-definable hw patterns */
 
 const struct xchar_info *xchar_info;
 int xchar_info_size;  /* number of entries */       
@@ -1237,13 +1237,13 @@
 {
     if (is_new_player())
     {
-        hw_pattern_count = 8;
+        lcd_pattern_count = 8;
         xchar_info = xchar_info_newlcd;
         xchar_info_size = sizeof(xchar_info_newlcd)/sizeof(struct xchar_info);
     }
     else /* old lcd */
     {
-        hw_pattern_count = 4;
+        lcd_pattern_count = 4;
         xchar_info = xchar_info_oldlcd;
         xchar_info_size = sizeof(xchar_info_oldlcd)/sizeof(struct xchar_info);
     }
diff --git a/firmware/export/lcd-charcell.h b/firmware/export/lcd-charcell.h
index 9a93cf1..0684f9c 100644
--- a/firmware/export/lcd-charcell.h
+++ b/firmware/export/lcd-charcell.h
@@ -17,6 +17,20 @@
  *
  ****************************************************************************/
 
+/* target dependent - to be adjusted for other charcell targets */
+#define HW_PATTERN_SIZE 7  /* number of bytes per pattern */
+#define MAX_HW_PATTERNS 8  /* max. number of user-definable hw patterns */
+
+struct cursor_info {
+    unsigned char hw_char;
+    bool enabled;
+    bool visible;
+    int x;
+    int y;
+    int divider;
+    int downcount;
+};
+
 /* map unicode characters to hardware or extended lcd characters */
 struct xchar_info {
     unsigned short ucs;
@@ -28,10 +42,18 @@
     unsigned char hw_char;    /* direct or substitute */
 };
 
-/* target dependent - to be adjusted for other charcell targets */
-#define HW_PATTERN_SIZE 7  /* number of bytes per pattern */
-#define MAX_HW_PATTERNS 8  /* max. number of user-definable hw patterns */
-extern int hw_pattern_count;  /* actual number of user-definable hw patterns */
+/* track usage of user-definable characters */
+struct pattern_info {
+    short count;
+    unsigned short xchar;
+    unsigned char pattern[HW_PATTERN_SIZE];
+};
+
+extern int lcd_pattern_count;  /* actual number of user-definable hw patterns */
+
+extern unsigned char lcd_charbuffer[LCD_HEIGHT][LCD_WIDTH];
+extern struct pattern_info lcd_patterns[MAX_HW_PATTERNS];
+extern struct cursor_info lcd_cursor;
 
 extern const struct xchar_info *xchar_info;
 extern int xchar_info_size;      /* number of entries */
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h
index 48de53a..68f0961 100644
--- a/firmware/export/lcd.h
+++ b/firmware/export/lcd.h
@@ -64,6 +64,7 @@
 extern int  lcd_getymargin(void);
 extern int  lcd_getstringsize(const unsigned char *str, int *w, int *h);
 
+extern void lcd_update(void);
 extern void lcd_clear_display(void);
 extern void lcd_putsxy(int x, int y, const unsigned char *string);
 extern void lcd_puts(int x, int y, const unsigned char *string);
@@ -79,7 +80,6 @@
 extern void lcd_puts_scroll(int x, int y, const unsigned char* string);
 extern void lcd_puts_scroll_style(int x, int y, const unsigned char* string,
                                   int style);
-extern void lcd_icon(int icon, bool enable);
 
 #if defined(HAVE_LCD_COLOR) && !defined(SIMULATOR)
 extern void lcd_yuv_blit(unsigned char * const src[3],
@@ -87,12 +87,11 @@
                          int x, int y, int width, int height);
 #endif
 
-#if defined(SIMULATOR) || defined(HAVE_LCD_BITMAP)
+#ifdef HAVE_LCD_BITMAP
 /* performance function */
 extern void lcd_blit(const fb_data* data, int x, int by, int width,
                      int bheight, int stride);
 
-extern void lcd_update(void);
 /* update a fraction of the screen */
 extern void lcd_update_rect(int x, int y, int width, int height);
 
@@ -101,10 +100,6 @@
 /* update a fraction of the screen */
 extern void lcd_remote_update_rect(int x, int y, int width, int height);
 #endif
-
-#else
-  #define lcd_update()
-  #define lcd_update_rect(x,y,w,h)
 #endif
 
 #ifdef HAVE_LCD_CHARCELLS
@@ -132,9 +127,8 @@
     ICON_PARAM
 };
 
+void lcd_icon(int icon, bool enable);
 void lcd_double_height(bool on);
-void lcd_put_hw_char(int x, int y, unsigned char hw_char);
-void lcd_define_hw_pattern(int which, const char *pattern);
 void lcd_define_pattern(unsigned long ucs, const char *pattern);
 unsigned long lcd_get_locked_pattern(void);
 void lcd_unlock_pattern(unsigned long ucs);
diff --git a/firmware/target/sh/archos/player/lcd-player.c b/firmware/target/sh/archos/player/lcd-player.c
index 7018b22..8f59901 100644
--- a/firmware/target/sh/archos/player/lcd-player.c
+++ b/firmware/target/sh/archos/player/lcd-player.c
@@ -23,6 +23,7 @@
 #include "hwcompat.h"
 #include "system.h"
 #include "lcd.h"
+#include "lcd-charcell.h"
 
 #define OLD_LCD_CRAM         ((char)0xB0) /* Characters */
 #define OLD_LCD_PRAM         ((char)0x80) /*  Patterns  */
@@ -69,17 +70,6 @@
                              : NEW_LCD_SET_DOUBLE_HEIGHT);
 }
 
-void lcd_put_hw_char(int x, int y, unsigned char hw_char)
-{
-    lcd_write_command_e(LCD_CURSOR(x, y), hw_char);
-}
-
-void lcd_define_hw_pattern (int which, const char *pattern)
-{
-    lcd_write_command(lcd_pram | (which << 3));
-    lcd_write_data(pattern, 7);
-}
-
 void lcd_icon(int icon, bool enable)
 {
     static const struct {
@@ -233,3 +223,29 @@
     }
     lcd_set_contrast(lcd_default_contrast());
 }
+
+/*** Update functions ***/
+
+void lcd_update(void)
+{
+    int y;
+    
+    for (y = 0; y < lcd_pattern_count; y++)
+    {
+        if (lcd_patterns[y].count > 0)
+        {
+            lcd_write_command(lcd_pram | (y << 3));
+            lcd_write_data(lcd_patterns[y].pattern, 7);
+        }
+    }
+    for (y = 0; y < LCD_HEIGHT; y++)
+    {
+        lcd_write_command(LCD_CURSOR(0, y));
+        lcd_write_data(lcd_charbuffer[y], LCD_WIDTH);
+    }
+    if (lcd_cursor.visible)
+    {
+        lcd_write_command_e(LCD_CURSOR(lcd_cursor.x, lcd_cursor.y),
+                            lcd_cursor.hw_char);
+    }
+}
diff --git a/uisimulator/common/font-player.c b/uisimulator/common/font-player.c
index e85304d..03bb9dd 100644
--- a/uisimulator/common/font-player.c
+++ b/uisimulator/common/font-player.c
@@ -16,533 +16,531 @@
  ****************************************************************************/
 
 #include "font-player.h"
-
 #include "hwcompat.h"
 
-
-unsigned char font_new_player[256][5] = {
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 04 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 05 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 06 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 07 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 08 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 09 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0a */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0b */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0c */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0d */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0e */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0f */
-	{ 0x3e, 0x1c, 0x1c, 0x08, 0x08 }, /* 10 */
-	{ 0x08, 0x08, 0x1c, 0x1c, 0x3e }, /* 11 */
-	{ 0x02, 0x04, 0x08, 0x10, 0x20 }, /* 12 */
-	{ 0x00, 0x4f, 0x00, 0x4f, 0x00 }, /* 13 */
-	{ 0x06, 0x0f, 0x7f, 0x01, 0x7f }, /* 14 */
-	{ 0x48, 0x56, 0x55, 0x35, 0x09 }, /* 15 */
-	{ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c }, /* 16 */
-	{ 0x10, 0x38, 0x54, 0x10, 0x1f }, /* 17 */
-	{ 0x04, 0x02, 0x7f, 0x02, 0x04 }, /* 18 */
-	{ 0x10, 0x20, 0x7f, 0x20, 0x10 }, /* 19 */
-	{ 0x7f, 0x3e, 0x1c, 0x08, 0x7f }, /* 1a */
-	{ 0x7f, 0x08, 0x1c, 0x3e, 0x7f }, /* 1b */
-	{ 0x7f, 0x08, 0x2a, 0x1c, 0x08 }, /* 1c */
-	{ 0x08, 0x1c, 0x2a, 0x08, 0x7f }, /* 1d */
-	{ 0x02, 0x0e, 0x3e, 0x0e, 0x02 }, /* 1e */
-	{ 0x20, 0x38, 0x3e, 0x38, 0x20 }, /* 1f */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 20 */
-	{ 0x00, 0x00, 0x4f, 0x00, 0x00 }, /* 21 */
-	{ 0x00, 0x07, 0x00, 0x07, 0x00 }, /* 22 */
-	{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, /* 23 */
-	{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, /* 24 */
-	{ 0x23, 0x13, 0x08, 0x64, 0x62 }, /* 25 */
-	{ 0x36, 0x49, 0x55, 0x22, 0x50 }, /* 26 */
-	{ 0x00, 0x05, 0x03, 0x00, 0x00 }, /* 27 */
-	{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, /* 28 */
-	{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, /* 29 */
-	{ 0x14, 0x08, 0x3e, 0x08, 0x14 }, /* 2a */
-	{ 0x08, 0x08, 0x3e, 0x08, 0x08 }, /* 2b */
-	{ 0x00, 0x50, 0x30, 0x00, 0x00 }, /* 2c */
-	{ 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 2d */
-	{ 0x00, 0x30, 0x30, 0x00, 0x00 }, /* 2e */
-	{ 0x20, 0x10, 0x08, 0x04, 0x02 }, /* 2f */
-	{ 0x3e, 0x51, 0x49, 0x45, 0x3e }, /* 30 */
-	{ 0x00, 0x42, 0x7f, 0x40, 0x00 }, /* 31 */
-	{ 0x42, 0x61, 0x51, 0x49, 0x46 }, /* 32 */
-	{ 0x21, 0x41, 0x45, 0x4b, 0x31 }, /* 33 */
-	{ 0x18, 0x14, 0x12, 0x7f, 0x10 }, /* 34 */
-	{ 0x27, 0x45, 0x45, 0x45, 0x39 }, /* 35 */
-	{ 0x3c, 0x4a, 0x49, 0x49, 0x30 }, /* 36 */
-	{ 0x01, 0x01, 0x71, 0x0d, 0x03 }, /* 37 */
-	{ 0x36, 0x49, 0x49, 0x49, 0x36 }, /* 38 */
-	{ 0x06, 0x49, 0x49, 0x29, 0x1e }, /* 39 */
-	{ 0x00, 0x36, 0x36, 0x00, 0x00 }, /* 3a */
-	{ 0x00, 0x5b, 0x3b, 0x00, 0x00 }, /* 3b */
-	{ 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 3c */
-	{ 0x14, 0x14, 0x14, 0x14, 0x14 }, /* 3d */
-	{ 0x00, 0x41, 0x22, 0x14, 0x08 }, /* 3e */
-	{ 0x02, 0x01, 0x51, 0x09, 0x06 }, /* 3f */
-	{ 0x32, 0x49, 0x79, 0x41, 0x3e }, /* 40 */
-	{ 0x7e, 0x11, 0x11, 0x11, 0x7e }, /* 41 */
-	{ 0x7f, 0x49, 0x49, 0x49, 0x36 }, /* 42 */
-	{ 0x3e, 0x41, 0x41, 0x41, 0x22 }, /* 43 */
-	{ 0x7f, 0x41, 0x41, 0x22, 0x1c }, /* 44 */
-	{ 0x7f, 0x49, 0x49, 0x49, 0x41 }, /* 45 */
-	{ 0x7f, 0x09, 0x09, 0x09, 0x01 }, /* 46 */
-	{ 0x3e, 0x41, 0x49, 0x49, 0x7a }, /* 47 */
-	{ 0x7f, 0x08, 0x08, 0x08, 0x7f }, /* 48 */
-	{ 0x00, 0x41, 0x7f, 0x41, 0x00 }, /* 49 */
-	{ 0x20, 0x41, 0x41, 0x3f, 0x01 }, /* 4a */
-	{ 0x7f, 0x08, 0x14, 0x22, 0x41 }, /* 4b */
-	{ 0x7f, 0x40, 0x40, 0x40, 0x40 }, /* 4c */
-	{ 0x7f, 0x02, 0x0c, 0x02, 0x7f }, /* 4d */
-	{ 0x7f, 0x04, 0x08, 0x10, 0x7f }, /* 4e */
-	{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, /* 4f */
-	{ 0x7f, 0x09, 0x09, 0x09, 0x06 }, /* 50 */
-	{ 0x3e, 0x41, 0x41, 0x21, 0x5e }, /* 51 */
-	{ 0x7f, 0x09, 0x19, 0x29, 0x46 }, /* 52 */
-	{ 0x26, 0x49, 0x49, 0x49, 0x32 }, /* 53 */
-	{ 0x01, 0x01, 0x7f, 0x01, 0x01 }, /* 54 */
-	{ 0x3f, 0x40, 0x40, 0x40, 0x3f }, /* 55 */
-	{ 0x1f, 0x20, 0x40, 0x20, 0x1f }, /* 56 */
-	{ 0x3f, 0x40, 0x38, 0x40, 0x3f }, /* 57 */
-	{ 0x63, 0x14, 0x08, 0x14, 0x63 }, /* 58 */
-	{ 0x03, 0x04, 0x78, 0x04, 0x03 }, /* 59 */
-	{ 0x61, 0x51, 0x49, 0x45, 0x43 }, /* 5a */
-	{ 0x00, 0x7f, 0x41, 0x41, 0x00 }, /* 5b */
-	{ 0x15, 0x16, 0x7c, 0x16, 0x15 }, /* 5c */
-	{ 0x00, 0x41, 0x41, 0x7f, 0x00 }, /* 5d */
-	{ 0x04, 0x02, 0x01, 0x02, 0x04 }, /* 5e */
-	{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 5f */
-	{ 0x00, 0x01, 0x02, 0x04, 0x00 }, /* 60 */
-	{ 0x20, 0x54, 0x54, 0x54, 0x78 }, /* 61 */
-	{ 0x7f, 0x48, 0x44, 0x44, 0x38 }, /* 62 */
-	{ 0x38, 0x44, 0x44, 0x44, 0x20 }, /* 63 */
-	{ 0x38, 0x44, 0x44, 0x48, 0x7f }, /* 64 */
-	{ 0x38, 0x54, 0x54, 0x54, 0x18 }, /* 65 */
-	{ 0x08, 0x7e, 0x09, 0x01, 0x02 }, /* 66 */
-	{ 0x0c, 0x52, 0x52, 0x52, 0x3e }, /* 67 */
-	{ 0x7f, 0x08, 0x04, 0x04, 0x78 }, /* 68 */
-	{ 0x00, 0x44, 0x7d, 0x40, 0x00 }, /* 69 */
-	{ 0x20, 0x40, 0x44, 0x3d, 0x00 }, /* 6a */
-	{ 0x7f, 0x10, 0x28, 0x44, 0x00 }, /* 6b */
-	{ 0x00, 0x41, 0x7f, 0x40, 0x00 }, /* 6c */
-	{ 0x7c, 0x04, 0x18, 0x04, 0x78 }, /* 6d */
-	{ 0x7c, 0x08, 0x04, 0x04, 0x78 }, /* 6e */
-	{ 0x38, 0x44, 0x44, 0x44, 0x38 }, /* 6f */
-	{ 0x7c, 0x14, 0x14, 0x14, 0x08 }, /* 70 */
-	{ 0x08, 0x14, 0x14, 0x18, 0x7c }, /* 71 */
-	{ 0x7c, 0x08, 0x04, 0x04, 0x08 }, /* 72 */
-	{ 0x48, 0x54, 0x54, 0x54, 0x20 }, /* 73 */
-	{ 0x04, 0x3f, 0x44, 0x40, 0x20 }, /* 74 */
-	{ 0x3c, 0x40, 0x40, 0x20, 0x7c }, /* 75 */
-	{ 0x1c, 0x20, 0x40, 0x20, 0x1c }, /* 76 */
-	{ 0x3c, 0x40, 0x30, 0x40, 0x3c }, /* 77 */
-	{ 0x44, 0x28, 0x10, 0x28, 0x44 }, /* 78 */
-	{ 0x4c, 0x50, 0x50, 0x50, 0x3c }, /* 79 */
-	{ 0x44, 0x64, 0x54, 0x4c, 0x44 }, /* 7a */
-	{ 0x00, 0x08, 0x36, 0x41, 0x00 }, /* 7b */
-	{ 0x00, 0x00, 0x7f, 0x00, 0x00 }, /* 7c */
-	{ 0x00, 0x41, 0x36, 0x08, 0x00 }, /* 7d */
-	{ 0x08, 0x08, 0x2a, 0x1c, 0x08 }, /* 7e */
-	{ 0x08, 0x1c, 0x2a, 0x08, 0x08 }, /* 7f */
-	{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 80 */
-	{ 0x60, 0x60, 0x60, 0x60, 0x60 }, /* 81 */
-	{ 0x70, 0x70, 0x70, 0x70, 0x70 }, /* 82 */
-	{ 0x78, 0x78, 0x78, 0x78, 0x78 }, /* 83 */
-	{ 0x7c, 0x7c, 0x7c, 0x7c, 0x7c }, /* 84 */
-	{ 0x7e, 0x7e, 0x7e, 0x7e, 0x7e }, /* 85 */
-	{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, /* 86 */
-	{ 0x08, 0x2a, 0x1c, 0x2a, 0x08 }, /* 87 */
-	{ 0x7f, 0x00, 0x00, 0x00, 0x7f }, /* 88 */
-	{ 0x7f, 0x7f, 0x00, 0x00, 0x7f }, /* 89 */
-	{ 0x7f, 0x7f, 0x7f, 0x00, 0x7f }, /* 8a */
-	{ 0x00, 0x7f, 0x00, 0x00, 0x00 }, /* 8b */
-	{ 0x00, 0x7f, 0x7f, 0x00, 0x00 }, /* 8c */
-	{ 0x00, 0x7f, 0x7f, 0x7f, 0x00 }, /* 8d */
-	{ 0x00, 0x7f, 0x7f, 0x7f, 0x7f }, /* 8e */
-	{ 0x3e, 0x3e, 0x3e, 0x3e, 0x3e }, /* 8f */
-	{ 0x1c, 0x3e, 0x3e, 0x3e, 0x1c }, /* 90 */
-	{ 0x7f, 0x41, 0x41, 0x41, 0x7f }, /* 91 */
-	{ 0x7f, 0x5b, 0x41, 0x5f, 0x7f }, /* 92 */
-	{ 0x7f, 0x4d, 0x55, 0x59, 0x7f }, /* 93 */
-	{ 0x20, 0x40, 0x3c, 0x04, 0x04 }, /* 94 */
-	{ 0x44, 0x44, 0x5f, 0x44, 0x44 }, /* 95 */
-	{ 0x22, 0x14, 0x08, 0x14, 0x22 }, /* 96 */
-	{ 0x08, 0x08, 0x2a, 0x08, 0x08 }, /* 97 */
-	{ 0x45, 0x29, 0x11, 0x29, 0x45 }, /* 98 */
-	{ 0x1d, 0x15, 0x17, 0x00, 0x00 }, /* 99 */
-	{ 0x15, 0x15, 0x1f, 0x00, 0x00 }, /* 9a */
-	{ 0x17, 0x08, 0x74, 0x56, 0x5d }, /* 9b */
-	{ 0x17, 0x08, 0x24, 0x32, 0x79 }, /* 9c */
-	{ 0x35, 0x1f, 0x28, 0x34, 0x7a }, /* 9d */
-	{ 0x08, 0x14, 0x2a, 0x14, 0x22 }, /* 9e */
-	{ 0x22, 0x14, 0x2a, 0x14, 0x08 }, /* 9f */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* a0 */
-	{ 0x70, 0x50, 0x70, 0x00, 0x00 }, /* a1 */
-	{ 0x00, 0x00, 0x0f, 0x01, 0x01 }, /* a2 */
-	{ 0x40, 0x40, 0x78, 0x00, 0x00 }, /* a3 */
-	{ 0x10, 0x20, 0x40, 0x00, 0x00 }, /* a4 */
-	{ 0x00, 0x18, 0x18, 0x00, 0x00 }, /* a5 */
-	{ 0x0a, 0x0a, 0x4a, 0x2a, 0x1e }, /* a6 */
-	{ 0x04, 0x44, 0x34, 0x14, 0x0c }, /* a7 */
-	{ 0x20, 0x10, 0x78, 0x04, 0x00 }, /* a8 */
-	{ 0x18, 0x08, 0x4c, 0x48, 0x38 }, /* a9 */
-	{ 0x48, 0x48, 0x78, 0x48, 0x48 }, /* aa */
-	{ 0x48, 0x28, 0x18, 0x7c, 0x08 }, /* ab */
-	{ 0x08, 0x7c, 0x08, 0x28, 0x18 }, /* ac */
-	{ 0x40, 0x48, 0x48, 0x78, 0x40 }, /* ad */
-	{ 0x54, 0x54, 0x54, 0x7c, 0x00 }, /* ae */
-	{ 0x18, 0x00, 0x58, 0x40, 0x38 }, /* af */
-	{ 0x08, 0x08, 0x08, 0x08, 0x08 }, /* b0 */
-	{ 0x01, 0x41, 0x3d, 0x09, 0x07 }, /* b1 */
-	{ 0x10, 0x08, 0x7c, 0x02, 0x01 }, /* b2 */
-	{ 0x0e, 0x02, 0x43, 0x22, 0x1e }, /* b3 */
-	{ 0x42, 0x42, 0x7e, 0x42, 0x42 }, /* b4 */
-	{ 0x22, 0x12, 0x0a, 0x7f, 0x02 }, /* b5 */
-	{ 0x42, 0x3f, 0x02, 0x42, 0x3e }, /* b6 */
-	{ 0x0a, 0x0a, 0x7f, 0x0a, 0x0a }, /* b7 */
-	{ 0x08, 0x46, 0x42, 0x22, 0x1e }, /* b8 */
-	{ 0x04, 0x03, 0x42, 0x3e, 0x02 }, /* b9 */
-	{ 0x42, 0x42, 0x42, 0x42, 0x7e }, /* ba */
-	{ 0x02, 0x07, 0x42, 0x3f, 0x02 }, /* bb */
-	{ 0x4a, 0x4a, 0x40, 0x20, 0x10 }, /* bc */
-	{ 0x42, 0x22, 0x12, 0x2a, 0x46 }, /* bd */
-	{ 0x02, 0x3f, 0x42, 0x4a, 0x46 }, /* be */
-	{ 0x06, 0x48, 0x40, 0x20, 0x1e }, /* bf */
-	{ 0x08, 0x46, 0x4a, 0x32, 0x1e }, /* c0 */
-	{ 0x0a, 0x4a, 0x3e, 0x09, 0x08 }, /* c1 */
-	{ 0x0e, 0x00, 0x4e, 0x20, 0x1e }, /* c2 */
-	{ 0x04, 0x45, 0x3d, 0x05, 0x04 }, /* c3 */
-	{ 0x00, 0x7f, 0x08, 0x10, 0x00 }, /* c4 */
-	{ 0x44, 0x24, 0x1f, 0x04, 0x04 }, /* c5 */
-	{ 0x40, 0x42, 0x42, 0x42, 0x40 }, /* c6 */
-	{ 0x42, 0x2a, 0x12, 0x2a, 0x06 }, /* c7 */
-	{ 0x22, 0x12, 0x7b, 0x16, 0x22 }, /* c8 */
-	{ 0x00, 0x40, 0x20, 0x1f, 0x00 }, /* c9 */
-	{ 0x78, 0x00, 0x02, 0x04, 0x78 }, /* ca */
-	{ 0x3f, 0x44, 0x44, 0x44, 0x44 }, /* cb */
-	{ 0x02, 0x42, 0x42, 0x22, 0x1e }, /* cc */
-	{ 0x04, 0x02, 0x04, 0x08, 0x30 }, /* cd */
-	{ 0x32, 0x02, 0x7f, 0x02, 0x32 }, /* ce */
-	{ 0x02, 0x12, 0x22, 0x52, 0x0e }, /* cf */
-	{ 0x00, 0x2a, 0x2a, 0x2a, 0x40 }, /* d0 */
-	{ 0x38, 0x24, 0x22, 0x20, 0x70 }, /* d1 */
-	{ 0x40, 0x28, 0x10, 0x28, 0x06 }, /* d2 */
-	{ 0x0a, 0x3e, 0x4a, 0x4a, 0x4a }, /* d3 */
-	{ 0x04, 0x7f, 0x04, 0x14, 0x0c }, /* d4 */
-	{ 0x40, 0x42, 0x42, 0x7e, 0x40 }, /* d5 */
-	{ 0x4a, 0x4a, 0x4a, 0x4a, 0x7e }, /* d6 */
-	{ 0x04, 0x05, 0x45, 0x25, 0x1c }, /* d7 */
-	{ 0x1f, 0x40, 0x20, 0x1f, 0x00 }, /* d8 */
-	{ 0x7c, 0x00, 0x7e, 0x40, 0x30 }, /* d9 */
-	{ 0x7e, 0x40, 0x20, 0x10, 0x08 }, /* da */
-	{ 0x7f, 0x41, 0x41, 0x41, 0x7f }, /* db */
-	{ 0x0e, 0x02, 0x42, 0x22, 0x1e }, /* dc */
-	{ 0x42, 0x42, 0x40, 0x20, 0x18 }, /* dd */
-	{ 0x02, 0x04, 0x01, 0x02, 0x00 }, /* de */
-	{ 0x07, 0x05, 0x07, 0x00, 0x00 }, /* df */
-	{ 0x38, 0x44, 0x48, 0x30, 0x4c }, /* e0 */
-	{ 0x7c, 0x2a, 0x2a, 0x2a, 0x14 }, /* e1 */
-	{ 0x02, 0x4c, 0x30, 0x0c, 0x02 }, /* e2 */
-	{ 0x44, 0x3c, 0x04, 0x7c, 0x44 }, /* e3 */
-	{ 0x63, 0x55, 0x49, 0x41, 0x41 }, /* e4 */
-	{ 0x38, 0x44, 0x4c, 0x54, 0x24 }, /* e5 */
-	{ 0x40, 0x3e, 0x10, 0x10, 0x1e }, /* e6 */
-	{ 0x04, 0x04, 0x3c, 0x44, 0x44 }, /* e7 */
-	{ 0x49, 0x55, 0x7f, 0x55, 0x49 }, /* e8 */
-	{ 0x3c, 0x4a, 0x4a, 0x4a, 0x3c }, /* e9 */
-	{ 0x58, 0x64, 0x04, 0x64, 0x58 }, /* ea */
-	{ 0x3a, 0x45, 0x45, 0x45, 0x39 }, /* eb */
-	{ 0x60, 0x50, 0x20, 0x50, 0x30 }, /* ec */
-	{ 0x08, 0x54, 0x3e, 0x15, 0x08 }, /* ed */
-	{ 0x14, 0x2a, 0x2a, 0x2a, 0x00 }, /* ee */
-	{ 0x7c, 0x0a, 0x09, 0x09, 0x06 }, /* ef */
-	{ 0x08, 0x04, 0x08, 0x10, 0x08 }, /* f0 */
-	{ 0x14, 0x0a, 0x14, 0x28, 0x14 }, /* f1 */
-	{ 0x24, 0x3b, 0x2a, 0x7e, 0x2a }, /* f2 */
-	{ 0x40, 0x3f, 0x15, 0x15, 0x7f }, /* f3 */
-	{ 0x46, 0x20, 0x1f, 0x20, 0x46 }, /* f4 */
-	{ 0x24, 0x14, 0x7f, 0x18, 0x24 }, /* f5 */
-	{ 0x24, 0x14, 0x7f, 0x14, 0x24 }, /* f6 */
-	{ 0x44, 0x6a, 0x79, 0x6a, 0x44 }, /* f7 */
-	{ 0x40, 0x44, 0x7f, 0x44, 0x40 }, /* f8 */
-	{ 0x7f, 0x49, 0x49, 0x49, 0x7f }, /* f9 */
-	{ 0x14, 0x14, 0x7c, 0x14, 0x12 }, /* fa */
-	{ 0x44, 0x3c, 0x14, 0x14, 0x74 }, /* fb */
-	{ 0x7c, 0x14, 0x1c, 0x14, 0x7c }, /* fc */
-	{ 0x2a, 0x55, 0x2a, 0x55, 0x2a }, /* fd */
-	{ 0x55, 0x2a, 0x55, 0x2a, 0x55 }, /* fe */
-	{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }  /* ff */
+static unsigned char font_player_newlcd[256][7] = {
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 04 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 05 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 06 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 07 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 08 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 09 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0a */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0b */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0c */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0d */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0e */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0f */
+    { 0x00, 0x10, 0x1c, 0x1f, 0x1c, 0x10, 0x00 }, /* 10 */
+    { 0x00, 0x01, 0x07, 0x1f, 0x07, 0x01, 0x00 }, /* 11 */
+    { 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00 }, /* 12 */
+    { 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x0a }, /* 13 */
+    { 0x0f, 0x1d, 0x1d, 0x0d, 0x05, 0x05, 0x05 }, /* 14 */
+    { 0x07, 0x08, 0x0e, 0x11, 0x0e, 0x02, 0x1c }, /* 15 */
+    { 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00 }, /* 16 */
+    { 0x01, 0x01, 0x05, 0x09, 0x1f, 0x08, 0x04 }, /* 17 */
+    { 0x04, 0x0e, 0x15, 0x04, 0x04, 0x04, 0x04 }, /* 18 */
+    { 0x04, 0x04, 0x04, 0x04, 0x15, 0x0e, 0x04 }, /* 19 */
+    { 0x11, 0x19, 0x1d, 0x1f, 0x1d, 0x19, 0x11 }, /* 1a */
+    { 0x11, 0x13, 0x17, 0x1f, 0x17, 0x13, 0x11 }, /* 1b */
+    { 0x10, 0x14, 0x12, 0x1f, 0x12, 0x14, 0x10 }, /* 1c */
+    { 0x01, 0x05, 0x09, 0x1f, 0x09, 0x05, 0x01 }, /* 1d */
+    { 0x00, 0x1f, 0x0e, 0x0e, 0x04, 0x04, 0x00 }, /* 1e */
+    { 0x00, 0x04, 0x04, 0x0e, 0x0e, 0x1f, 0x00 }, /* 1f */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 20 */
+    { 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x04 }, /* 21 */
+    { 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00 }, /* 22 */
+    { 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a }, /* 23 */
+    { 0x04, 0x0f, 0x14, 0x0e, 0x05, 0x1e, 0x04 }, /* 24 */
+    { 0x18, 0x19, 0x02, 0x04, 0x08, 0x13, 0x03 }, /* 25 */
+    { 0x0c, 0x12, 0x14, 0x08, 0x15, 0x12, 0x0d }, /* 26 */
+    { 0x0c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 }, /* 27 */
+    { 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02 }, /* 28 */
+    { 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08 }, /* 29 */
+    { 0x00, 0x04, 0x15, 0x0e, 0x15, 0x04, 0x00 }, /* 2a */
+    { 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00 }, /* 2b */
+    { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x08 }, /* 2c */
+    { 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 }, /* 2d */
+    { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00 }, /* 2e */
+    { 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00 }, /* 2f */
+    { 0x0e, 0x11, 0x13, 0x15, 0x19, 0x11, 0x0e }, /* 30 */
+    { 0x04, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 31 */
+    { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x08, 0x1f }, /* 32 */
+    { 0x1f, 0x02, 0x04, 0x02, 0x01, 0x11, 0x0e }, /* 33 */
+    { 0x02, 0x06, 0x0a, 0x12, 0x1f, 0x02, 0x02 }, /* 34 */
+    { 0x1f, 0x10, 0x1e, 0x01, 0x01, 0x11, 0x0e }, /* 35 */
+    { 0x06, 0x08, 0x10, 0x1e, 0x11, 0x11, 0x0e }, /* 36 */
+    { 0x1f, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04 }, /* 37 */
+    { 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e }, /* 38 */
+    { 0x0e, 0x11, 0x11, 0x0f, 0x01, 0x02, 0x0c }, /* 39 */
+    { 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x00 }, /* 3a */
+    { 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x04, 0x08 }, /* 3b */
+    { 0x02, 0x04, 0x08, 0x10, 0x08, 0x04, 0x02 }, /* 3c */
+    { 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00 }, /* 3d */
+    { 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08 }, /* 3e */
+    { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x00, 0x04 }, /* 3f */
+    { 0x0e, 0x11, 0x01, 0x0d, 0x15, 0x15, 0x0e }, /* 40 */
+    { 0x0e, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11 }, /* 41 */
+    { 0x1e, 0x11, 0x11, 0x1e, 0x11, 0x11, 0x1e }, /* 42 */
+    { 0x0e, 0x11, 0x10, 0x10, 0x10, 0x11, 0x0e }, /* 43 */
+    { 0x1c, 0x12, 0x11, 0x11, 0x11, 0x12, 0x1c }, /* 44 */
+    { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x1f }, /* 45 */
+    { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x10 }, /* 46 */
+    { 0x0e, 0x11, 0x10, 0x17, 0x11, 0x11, 0x0f }, /* 47 */
+    { 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 }, /* 48 */
+    { 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 49 */
+    { 0x0f, 0x02, 0x02, 0x02, 0x02, 0x12, 0x0c }, /* 4a */
+    { 0x11, 0x12, 0x14, 0x18, 0x14, 0x12, 0x11 }, /* 4b */
+    { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f }, /* 4c */
+    { 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11 }, /* 4d */
+    { 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x11 }, /* 4e */
+    { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 4f */
+    { 0x1e, 0x11, 0x11, 0x1e, 0x10, 0x10, 0x10 }, /* 50 */
+    { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x12, 0x0d }, /* 51 */
+    { 0x1e, 0x11, 0x11, 0x1e, 0x14, 0x12, 0x11 }, /* 52 */
+    { 0x0e, 0x11, 0x10, 0x0e, 0x01, 0x11, 0x0e }, /* 53 */
+    { 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 54 */
+    { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 55 */
+    { 0x11, 0x11, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 56 */
+    { 0x11, 0x11, 0x11, 0x15, 0x15, 0x15, 0x0a }, /* 57 */
+    { 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 }, /* 58 */
+    { 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04, 0x04 }, /* 59 */
+    { 0x1f, 0x01, 0x02, 0x04, 0x08, 0x10, 0x1f }, /* 5a */
+    { 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e }, /* 5b */
+    { 0x11, 0x0a, 0x1f, 0x04, 0x1f, 0x04, 0x04 }, /* 5c */
+    { 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e }, /* 5d */
+    { 0x04, 0x0a, 0x11, 0x00, 0x00, 0x00, 0x00 }, /* 5e */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* 5f */
+    { 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 }, /* 60 */
+    { 0x00, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 61 */
+    { 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1e }, /* 62 */
+    { 0x00, 0x00, 0x0e, 0x10, 0x10, 0x11, 0x0e }, /* 63 */
+    { 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x0f }, /* 64 */
+    { 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 65 */
+    { 0x06, 0x09, 0x08, 0x1c, 0x08, 0x08, 0x08 }, /* 66 */
+    { 0x00, 0x0f, 0x11, 0x11, 0x0f, 0x01, 0x0e }, /* 67 */
+    { 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 68 */
+    { 0x04, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e }, /* 69 */
+    { 0x02, 0x00, 0x06, 0x02, 0x02, 0x12, 0x0c }, /* 6a */
+    { 0x10, 0x10, 0x12, 0x14, 0x18, 0x14, 0x12 }, /* 6b */
+    { 0x0c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 6c */
+    { 0x00, 0x00, 0x1a, 0x15, 0x15, 0x11, 0x11 }, /* 6d */
+    { 0x00, 0x00, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 6e */
+    { 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 6f */
+    { 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x10, 0x10 }, /* 70 */
+    { 0x00, 0x00, 0x0d, 0x13, 0x0f, 0x01, 0x01 }, /* 71 */
+    { 0x00, 0x00, 0x16, 0x19, 0x10, 0x10, 0x10 }, /* 72 */
+    { 0x00, 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* 73 */
+    { 0x08, 0x08, 0x1c, 0x08, 0x08, 0x09, 0x06 }, /* 74 */
+    { 0x00, 0x00, 0x11, 0x11, 0x11, 0x13, 0x0d }, /* 75 */
+    { 0x00, 0x00, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 76 */
+    { 0x00, 0x00, 0x11, 0x11, 0x15, 0x15, 0x0a }, /* 77 */
+    { 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 }, /* 78 */
+    { 0x00, 0x00, 0x11, 0x11, 0x0f, 0x01, 0x1e }, /* 79 */
+    { 0x00, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* 7a */
+    { 0x02, 0x04, 0x04, 0x08, 0x04, 0x04, 0x02 }, /* 7b */
+    { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 7c */
+    { 0x08, 0x04, 0x04, 0x02, 0x04, 0x04, 0x08 }, /* 7d */
+    { 0x00, 0x04, 0x02, 0x1f, 0x02, 0x04, 0x00 }, /* 7e */
+    { 0x00, 0x04, 0x08, 0x1f, 0x08, 0x04, 0x00 }, /* 7f */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* 80 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f }, /* 81 */
+    { 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f }, /* 82 */
+    { 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f }, /* 83 */
+    { 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* 84 */
+    { 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* 85 */
+    { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* 86 */
+    { 0x00, 0x0a, 0x04, 0x1f, 0x04, 0x0a, 0x00 }, /* 87 */
+    { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 }, /* 88 */
+    { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 }, /* 89 */
+    { 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d }, /* 8a */
+    { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 8b */
+    { 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c }, /* 8c */
+    { 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e }, /* 8d */
+    { 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f }, /* 8e */
+    { 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00 }, /* 8f */
+    { 0x00, 0x0e, 0x1f, 0x1f, 0x1f, 0x0e, 0x00 }, /* 90 */
+    { 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f }, /* 91 */
+    { 0x1f, 0x1b, 0x13, 0x1b, 0x1b, 0x11, 0x1f }, /* 92 */
+    { 0x1f, 0x11, 0x1d, 0x1b, 0x17, 0x11, 0x1f }, /* 93 */
+    { 0x00, 0x00, 0x07, 0x04, 0x04, 0x14, 0x08 }, /* 94 */
+    { 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00, 0x1f }, /* 95 */
+    { 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x00 }, /* 96 */
+    { 0x00, 0x04, 0x00, 0x1f, 0x00, 0x04, 0x00 }, /* 97 */
+    { 0x1f, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 }, /* 98 */
+    { 0x1c, 0x04, 0x1c, 0x10, 0x1c, 0x00, 0x00 }, /* 99 */
+    { 0x1c, 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x00 }, /* 9a */
+    { 0x11, 0x12, 0x17, 0x09, 0x17, 0x04, 0x07 }, /* 9b */
+    { 0x11, 0x12, 0x14, 0x09, 0x13, 0x07, 0x01 }, /* 9c */
+    { 0x18, 0x09, 0x1a, 0x0d, 0x1b, 0x17, 0x01 }, /* 9d */
+    { 0x00, 0x05, 0x0a, 0x14, 0x0a, 0x05, 0x00 }, /* 9e */
+    { 0x00, 0x14, 0x0a, 0x05, 0x0a, 0x14, 0x00 }, /* 9f */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* a0 */
+    { 0x00, 0x00, 0x00, 0x00, 0x1c, 0x14, 0x1c }, /* a1 */
+    { 0x07, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00 }, /* a2 */
+    { 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x1c }, /* a3 */
+    { 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04 }, /* a4 */
+    { 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00 }, /* a5 */
+    { 0x00, 0x1f, 0x01, 0x1f, 0x01, 0x02, 0x04 }, /* a6 */
+    { 0x00, 0x00, 0x1f, 0x01, 0x06, 0x04, 0x08 }, /* a7 */
+    { 0x00, 0x00, 0x02, 0x04, 0x0c, 0x14, 0x04 }, /* a8 */
+    { 0x00, 0x00, 0x04, 0x1f, 0x11, 0x01, 0x06 }, /* a9 */
+    { 0x00, 0x00, 0x00, 0x1f, 0x04, 0x04, 0x1f }, /* aa */
+    { 0x00, 0x00, 0x02, 0x1f, 0x06, 0x0a, 0x12 }, /* ab */
+    { 0x00, 0x00, 0x08, 0x1f, 0x09, 0x0a, 0x08 }, /* ac */
+    { 0x00, 0x00, 0x00, 0x0e, 0x02, 0x02, 0x1f }, /* ad */
+    { 0x00, 0x00, 0x1e, 0x02, 0x1e, 0x02, 0x1e }, /* ae */
+    { 0x00, 0x00, 0x00, 0x15, 0x15, 0x01, 0x06 }, /* af */
+    { 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 }, /* b0 */
+    { 0x1f, 0x01, 0x05, 0x06, 0x04, 0x04, 0x08 }, /* b1 */
+    { 0x01, 0x02, 0x04, 0x0c, 0x14, 0x04, 0x04 }, /* b2 */
+    { 0x04, 0x1f, 0x11, 0x11, 0x01, 0x02, 0x04 }, /* b3 */
+    { 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04, 0x1f }, /* b4 */
+    { 0x02, 0x1f, 0x02, 0x06, 0x0a, 0x12, 0x02 }, /* b5 */
+    { 0x08, 0x1f, 0x09, 0x09, 0x09, 0x09, 0x12 }, /* b6 */
+    { 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x04, 0x04 }, /* b7 */
+    { 0x00, 0x0f, 0x09, 0x11, 0x01, 0x02, 0x0c }, /* b8 */
+    { 0x08, 0x0f, 0x12, 0x02, 0x02, 0x02, 0x04 }, /* b9 */
+    { 0x00, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x1f }, /* ba */
+    { 0x0a, 0x1f, 0x0a, 0x02, 0x02, 0x02, 0x04 }, /* bb */
+    { 0x00, 0x18, 0x00, 0x18, 0x01, 0x02, 0x1c }, /* bc */
+    { 0x00, 0x1f, 0x01, 0x02, 0x04, 0x0a, 0x11 }, /* bd */
+    { 0x08, 0x1f, 0x09, 0x0a, 0x08, 0x08, 0x07 }, /* be */
+    { 0x00, 0x11, 0x11, 0x09, 0x01, 0x02, 0x0c }, /* bf */
+    { 0x00, 0x0f, 0x09, 0x15, 0x03, 0x02, 0x0c }, /* c0 */
+    { 0x02, 0x1c, 0x04, 0x1f, 0x04, 0x04, 0x08 }, /* c1 */
+    { 0x00, 0x15, 0x15, 0x15, 0x01, 0x02, 0x04 }, /* c2 */
+    { 0x0e, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x08 }, /* c3 */
+    { 0x08, 0x08, 0x08, 0x0c, 0x0a, 0x08, 0x08 }, /* c4 */
+    { 0x04, 0x04, 0x1f, 0x04, 0x04, 0x08, 0x10 }, /* c5 */
+    { 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* c6 */
+    { 0x00, 0x1f, 0x01, 0x0a, 0x04, 0x0a, 0x10 }, /* c7 */
+    { 0x04, 0x1f, 0x02, 0x04, 0x0e, 0x15, 0x04 }, /* c8 */
+    { 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x08 }, /* c9 */
+    { 0x00, 0x04, 0x02, 0x11, 0x11, 0x11, 0x11 }, /* ca */
+    { 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x0f }, /* cb */
+    { 0x00, 0x1f, 0x01, 0x01, 0x01, 0x02, 0x0c }, /* cc */
+    { 0x00, 0x08, 0x14, 0x02, 0x01, 0x01, 0x00 }, /* cd */
+    { 0x04, 0x1f, 0x04, 0x04, 0x15, 0x15, 0x04 }, /* ce */
+    { 0x00, 0x1f, 0x01, 0x01, 0x0a, 0x04, 0x02 }, /* cf */
+    { 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x01 }, /* d0 */
+    { 0x00, 0x04, 0x08, 0x10, 0x11, 0x1f, 0x01 }, /* d1 */
+    { 0x00, 0x01, 0x01, 0x0a, 0x04, 0x0a, 0x10 }, /* d2 */
+    { 0x00, 0x1f, 0x08, 0x1f, 0x08, 0x08, 0x07 }, /* d3 */
+    { 0x08, 0x08, 0x1f, 0x09, 0x0a, 0x08, 0x08 }, /* d4 */
+    { 0x00, 0x0e, 0x02, 0x02, 0x02, 0x02, 0x1f }, /* d5 */
+    { 0x00, 0x1f, 0x01, 0x1f, 0x01, 0x01, 0x1f }, /* d6 */
+    { 0x0e, 0x00, 0x1f, 0x01, 0x01, 0x02, 0x04 }, /* d7 */
+    { 0x12, 0x12, 0x12, 0x12, 0x12, 0x04, 0x08 }, /* d8 */
+    { 0x00, 0x04, 0x14, 0x14, 0x15, 0x15, 0x16 }, /* d9 */
+    { 0x00, 0x10, 0x10, 0x11, 0x12, 0x14, 0x18 }, /* da */
+    { 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1f }, /* db */
+    { 0x00, 0x1f, 0x11, 0x11, 0x01, 0x02, 0x04 }, /* dc */
+    { 0x00, 0x18, 0x00, 0x01, 0x01, 0x02, 0x1c }, /* dd */
+    { 0x04, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00 }, /* de */
+    { 0x1c, 0x14, 0x1c, 0x00, 0x00, 0x00, 0x00 }, /* df */
+    { 0x00, 0x00, 0x09, 0x15, 0x12, 0x12, 0x0d }, /* e0 */
+    { 0x00, 0x0e, 0x11, 0x1e, 0x11, 0x1e, 0x10 }, /* e1 */
+    { 0x00, 0x11, 0x0a, 0x0a, 0x04, 0x04, 0x08 }, /* e2 */
+    { 0x00, 0x00, 0x1f, 0x0a, 0x0a, 0x0a, 0x13 }, /* e3 */
+    { 0x1f, 0x10, 0x08, 0x04, 0x08, 0x10, 0x1f }, /* e4 */
+    { 0x00, 0x00, 0x0f, 0x14, 0x12, 0x11, 0x0e }, /* e5 */
+    { 0x00, 0x09, 0x09, 0x09, 0x0f, 0x08, 0x10 }, /* e6 */
+    { 0x00, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x03 }, /* e7 */
+    { 0x1f, 0x04, 0x0e, 0x15, 0x0e, 0x04, 0x1f }, /* e8 */
+    { 0x00, 0x0e, 0x11, 0x1f, 0x11, 0x11, 0x0e }, /* e9 */
+    { 0x00, 0x00, 0x0e, 0x11, 0x11, 0x0a, 0x1b }, /* ea */
+    { 0x0f, 0x10, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* eb */
+    { 0x00, 0x00, 0x00, 0x00, 0x0b, 0x15, 0x1a }, /* ec */
+    { 0x02, 0x04, 0x0e, 0x15, 0x0e, 0x04, 0x08 }, /* ed */
+    { 0x00, 0x0e, 0x10, 0x0e, 0x10, 0x0e, 0x00 }, /* ee */
+    { 0x06, 0x09, 0x11, 0x1e, 0x10, 0x10, 0x10 }, /* ef */
+    { 0x00, 0x00, 0x08, 0x15, 0x02, 0x00, 0x00 }, /* f0 */
+    { 0x00, 0x08, 0x15, 0x0a, 0x15, 0x02, 0x00 }, /* f1 */
+    { 0x08, 0x0f, 0x12, 0x0f, 0x0a, 0x1f, 0x02 }, /* f2 */
+    { 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x09, 0x11 }, /* f3 */
+    { 0x04, 0x15, 0x15, 0x04, 0x04, 0x0a, 0x11 }, /* f4 */
+    { 0x04, 0x04, 0x1d, 0x06, 0x0e, 0x15, 0x04 }, /* f5 */
+    { 0x04, 0x04, 0x1f, 0x04, 0x0e, 0x15, 0x04 }, /* f6 */
+    { 0x04, 0x0a, 0x11, 0x0e, 0x04, 0x0e, 0x1f }, /* f7 */
+    { 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x1f }, /* f8 */
+    { 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f }, /* f9 */
+    { 0x00, 0x01, 0x1e, 0x04, 0x1f, 0x04, 0x04 }, /* fa */
+    { 0x00, 0x00, 0x1f, 0x08, 0x0f, 0x09, 0x11 }, /* fb */
+    { 0x00, 0x00, 0x1f, 0x15, 0x1f, 0x11, 0x11 }, /* fc */
+    { 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a }, /* fd */
+    { 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15 }, /* fe */
+    { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* ff */
+};
+static unsigned char font_player_oldlcd[256][7] = {
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */
+    { 0x0e, 0x11, 0x17, 0x15, 0x17, 0x10, 0x0e }, /* 04 */
+    { 0x06, 0x09, 0x08, 0x1e, 0x08, 0x08, 0x1f }, /* 05 */
+    { 0x04, 0x0f, 0x14, 0x0e, 0x05, 0x1e, 0x04 }, /* 06 */
+    { 0x11, 0x0a, 0x1f, 0x04, 0x1f, 0x04, 0x04 }, /* 07 */
+    { 0x08, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 08 */
+    { 0x02, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 09 */
+    { 0x08, 0x04, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* 0a */
+    { 0x08, 0x04, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* 0b */
+    { 0x08, 0x04, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* 0c */
+    { 0x0f, 0x10, 0x10, 0x10, 0x0f, 0x02, 0x0e }, /* 0d */
+    { 0x10, 0x10, 0x17, 0x14, 0x1e, 0x04, 0x04 }, /* 0e */
+    { 0x01, 0x0e, 0x13, 0x15, 0x19, 0x0e, 0x10 }, /* 0f */
+    { 0x00, 0x02, 0x0e, 0x15, 0x15, 0x0e, 0x08 }, /* 10 */
+    { 0x1c, 0x10, 0x17, 0x1d, 0x07, 0x06, 0x05 }, /* 11 */
+    { 0x04, 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x11 }, /* 12 */
+    { 0x04, 0x0a, 0x04, 0x01, 0x0f, 0x11, 0x0f }, /* 13 */
+    { 0x00, 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x1f }, /* 14 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* 15 */
+    { 0x0e, 0x04, 0x1f, 0x15, 0x1f, 0x04, 0x0e }, /* 16 */
+    { 0x1f, 0x11, 0x11, 0x10, 0x10, 0x10, 0x10 }, /* 17 */
+    { 0x04, 0x04, 0x0a, 0x0a, 0x11, 0x11, 0x11 }, /* 18 */
+    { 0x0e, 0x11, 0x11, 0x11, 0x0a, 0x0a, 0x1b }, /* 19 */
+    { 0x1f, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a }, /* 1a */
+    { 0x15, 0x15, 0x15, 0x15, 0x0e, 0x04, 0x04 }, /* 1b */
+    { 0x1f, 0x08, 0x04, 0x02, 0x04, 0x08, 0x1f }, /* 1c */
+    { 0x0e, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x0e }, /* 1d */
+    { 0x1f, 0x11, 0x00, 0x0e, 0x00, 0x11, 0x1f }, /* 1e */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 1f */
+    { 0x0f, 0x14, 0x14, 0x1f, 0x14, 0x14, 0x17 }, /* 20 */
+    { 0x00, 0x00, 0x1a, 0x05, 0x0f, 0x14, 0x0f }, /* 21 */
+    { 0x0c, 0x12, 0x16, 0x11, 0x11, 0x16, 0x10 }, /* 22 */
+    { 0x02, 0x04, 0x1f, 0x10, 0x1c, 0x10, 0x1f }, /* 23 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 24 */
+    { 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x04 }, /* 25 */
+    { 0x1b, 0x09, 0x12, 0x00, 0x00, 0x00, 0x00 }, /* 26 */
+    { 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a }, /* 27 */
+    { 0x00, 0x11, 0x0e, 0x0a, 0x0e, 0x11, 0x00 }, /* 28 */
+    { 0x18, 0x19, 0x02, 0x04, 0x08, 0x13, 0x03 }, /* 29 */
+    { 0x08, 0x14, 0x14, 0x09, 0x15, 0x12, 0x0d }, /* 2a */
+    { 0x0c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 }, /* 2b */
+    { 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02 }, /* 2c */
+    { 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08 }, /* 2d */
+    { 0x04, 0x15, 0x0e, 0x04, 0x0e, 0x15, 0x04 }, /* 2e */
+    { 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00 }, /* 2f */
+    { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x08 }, /* 30 */
+    { 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 }, /* 31 */
+    { 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00 }, /* 32 */
+    { 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00 }, /* 33 */
+    { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 34 */
+    { 0x04, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 35 */
+    { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x08, 0x1f }, /* 36 */
+    { 0x1f, 0x02, 0x04, 0x02, 0x01, 0x11, 0x0e }, /* 37 */
+    { 0x02, 0x06, 0x0a, 0x12, 0x1f, 0x02, 0x02 }, /* 38 */
+    { 0x1f, 0x10, 0x1e, 0x01, 0x01, 0x11, 0x0e }, /* 39 */
+    { 0x06, 0x08, 0x10, 0x1e, 0x11, 0x11, 0x0e }, /* 3a */
+    { 0x1f, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04 }, /* 3b */
+    { 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e }, /* 3c */
+    { 0x0e, 0x11, 0x11, 0x0f, 0x01, 0x02, 0x0c }, /* 3d */
+    { 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x00 }, /* 3e */
+    { 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x04, 0x08 }, /* 3f */
+    { 0x03, 0x06, 0x0c, 0x18, 0x0c, 0x06, 0x03 }, /* 40 */
+    { 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00 }, /* 41 */
+    { 0x18, 0x0c, 0x06, 0x03, 0x06, 0x0c, 0x18 }, /* 42 */
+    { 0x0e, 0x11, 0x01, 0x02, 0x04, 0x00, 0x04 }, /* 43 */
+    { 0x04, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 44 */
+    { 0x04, 0x0a, 0x11, 0x11, 0x1f, 0x11, 0x11 }, /* 45 */
+    { 0x1e, 0x11, 0x11, 0x1e, 0x11, 0x11, 0x1e }, /* 46 */
+    { 0x0e, 0x11, 0x10, 0x10, 0x10, 0x11, 0x0e }, /* 47 */
+    { 0x1c, 0x12, 0x11, 0x11, 0x11, 0x12, 0x1c }, /* 48 */
+    { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x1f }, /* 49 */
+    { 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x10, 0x10 }, /* 4a */
+    { 0x0e, 0x10, 0x10, 0x17, 0x11, 0x11, 0x0e }, /* 4b */
+    { 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 }, /* 4c */
+    { 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 4d */
+    { 0x0f, 0x02, 0x02, 0x02, 0x02, 0x12, 0x0c }, /* 4e */
+    { 0x11, 0x12, 0x14, 0x18, 0x14, 0x12, 0x11 }, /* 4f */
+    { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f }, /* 50 */
+    { 0x11, 0x1b, 0x15, 0x11, 0x11, 0x11, 0x11 }, /* 51 */
+    { 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x11 }, /* 52 */
+    { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 53 */
+    { 0x1e, 0x11, 0x11, 0x1e, 0x10, 0x10, 0x10 }, /* 54 */
+    { 0x0e, 0x11, 0x11, 0x11, 0x11, 0x12, 0x0d }, /* 55 */
+    { 0x1e, 0x11, 0x11, 0x1e, 0x14, 0x12, 0x11 }, /* 56 */
+    { 0x0e, 0x11, 0x10, 0x0e, 0x01, 0x11, 0x0e }, /* 57 */
+    { 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 }, /* 58 */
+    { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 59 */
+    { 0x11, 0x11, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 5a */
+    { 0x11, 0x11, 0x11, 0x11, 0x11, 0x15, 0x0a }, /* 5b */
+    { 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 }, /* 5c */
+    { 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04, 0x04 }, /* 5d */
+    { 0x1f, 0x01, 0x02, 0x04, 0x08, 0x10, 0x1f }, /* 5e */
+    { 0x0a, 0x00, 0x04, 0x0a, 0x11, 0x1f, 0x11 }, /* 5f */
+    { 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 60 */
+    { 0x0d, 0x12, 0x00, 0x19, 0x15, 0x13, 0x11 }, /* 61 */
+    { 0x0a, 0x00, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 62 */
+    { 0x0e, 0x10, 0x0e, 0x11, 0x0e, 0x01, 0x0e }, /* 63 */
+    { 0x04, 0x00, 0x04, 0x08, 0x10, 0x11, 0x0e }, /* 64 */
+    { 0x00, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 65 */
+    { 0x10, 0x10, 0x1e, 0x11, 0x11, 0x11, 0x1e }, /* 66 */
+    { 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x0f }, /* 67 */
+    { 0x01, 0x01, 0x0f, 0x11, 0x11, 0x11, 0x0f }, /* 68 */
+    { 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0f }, /* 69 */
+    { 0x03, 0x04, 0x0f, 0x04, 0x04, 0x04, 0x04 }, /* 6a */
+    { 0x00, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x0e }, /* 6b */
+    { 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 6c */
+    { 0x04, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e }, /* 6d */
+    { 0x02, 0x00, 0x06, 0x02, 0x02, 0x12, 0x0c }, /* 6e */
+    { 0x08, 0x08, 0x09, 0x0a, 0x0c, 0x0a, 0x09 }, /* 6f */
+    { 0x0c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e }, /* 70 */
+    { 0x00, 0x00, 0x1a, 0x15, 0x15, 0x15, 0x15 }, /* 71 */
+    { 0x00, 0x00, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* 72 */
+    { 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 73 */
+    { 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x10, 0x10 }, /* 74 */
+    { 0x00, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x01 }, /* 75 */
+    { 0x00, 0x00, 0x0b, 0x0c, 0x08, 0x08, 0x08 }, /* 76 */
+    { 0x00, 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* 77 */
+    { 0x04, 0x04, 0x0f, 0x04, 0x04, 0x04, 0x03 }, /* 78 */
+    { 0x00, 0x00, 0x11, 0x11, 0x11, 0x13, 0x0d }, /* 79 */
+    { 0x00, 0x00, 0x11, 0x11, 0x11, 0x0a, 0x04 }, /* 7a */
+    { 0x00, 0x00, 0x11, 0x11, 0x11, 0x15, 0x0a }, /* 7b */
+    { 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 }, /* 7c */
+    { 0x00, 0x00, 0x11, 0x11, 0x0f, 0x01, 0x1e }, /* 7d */
+    { 0x00, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* 7e */
+    { 0x0a, 0x00, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 7f */
+    { 0x00, 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* 80 */
+    { 0x0d, 0x12, 0x00, 0x16, 0x19, 0x11, 0x11 }, /* 81 */
+    { 0x00, 0x0a, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* 82 */
+    { 0x08, 0x04, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 83 */
+    { 0x00, 0x0f, 0x10, 0x10, 0x0f, 0x02, 0x04 }, /* 84 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00 }, /* 85 */
+    { 0x00, 0x00, 0x04, 0x0e, 0x1f, 0x00, 0x00 }, /* 86 */
+    { 0x00, 0x00, 0x1f, 0x0e, 0x04, 0x00, 0x00 }, /* 87 */
+    { 0x02, 0x06, 0x0e, 0x1e, 0x0e, 0x06, 0x02 }, /* 88 */
+    { 0x08, 0x0c, 0x0e, 0x0f, 0x0e, 0x0c, 0x08 }, /* 89 */
+    { 0x1c, 0x1f, 0x13, 0x10, 0x10, 0x10, 0x10 }, /* 8a */
+    { 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15 }, /* 8b */
+    { 0x08, 0x04, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8c */
+    { 0x02, 0x04, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8d */
+    { 0x04, 0x0a, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8e */
+    { 0x0d, 0x12, 0x0e, 0x11, 0x1f, 0x11, 0x11 }, /* 8f */
+    { 0x08, 0x04, 0x1f, 0x10, 0x1e, 0x10, 0x1f }, /* 90 */
+    { 0x04, 0x0a, 0x1f, 0x10, 0x1c, 0x10, 0x1f }, /* 91 */
+    { 0x0a, 0x00, 0x1f, 0x10, 0x1c, 0x10, 0x1f }, /* 92 */
+    { 0x08, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x0e }, /* 93 */
+    { 0x02, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x0e }, /* 94 */
+    { 0x0c, 0x0a, 0x09, 0x1d, 0x09, 0x0a, 0x0c }, /* 95 */
+    { 0x08, 0x04, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 96 */
+    { 0x02, 0x04, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 97 */
+    { 0x04, 0x0a, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 98 */
+    { 0x0d, 0x12, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* 99 */
+    { 0x08, 0x04, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 9a */
+    { 0x02, 0x04, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* 9b */
+    { 0x02, 0x04, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 9c */
+    { 0x04, 0x0a, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 9d */
+    { 0x0d, 0x12, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* 9e */
+    { 0x04, 0x0a, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* 9f */
+    { 0x0a, 0x00, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* a0 */
+    { 0x02, 0x04, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* a1 */
+    { 0x04, 0x0a, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* a2 */
+    { 0x0a, 0x00, 0x00, 0x0c, 0x04, 0x04, 0x0e }, /* a3 */
+    { 0x02, 0x04, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* a4 */
+    { 0x04, 0x0a, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* a5 */
+    { 0x0d, 0x12, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* a6 */
+    { 0x02, 0x04, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* a7 */
+    { 0x04, 0x04, 0x0f, 0x10, 0x10, 0x0f, 0x04 }, /* a8 */
+    { 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03 }, /* a9 */
+    { 0x0a, 0x04, 0x0b, 0x0c, 0x08, 0x08, 0x08 }, /* aa */
+    { 0x0a, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f }, /* ab */
+    { 0x0a, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* ac */
+    { 0x0a, 0x04, 0x0e, 0x11, 0x1f, 0x10, 0x0e }, /* ad */
+    { 0x04, 0x0a, 0x04, 0x11, 0x11, 0x13, 0x0d }, /* ae */
+    { 0x02, 0x04, 0x11, 0x11, 0x0f, 0x01, 0x0e }, /* af */
+    { 0x02, 0x0f, 0x02, 0x0e, 0x12, 0x12, 0x0e }, /* b0 */
+    { 0x02, 0x04, 0x0f, 0x10, 0x10, 0x10, 0x0f }, /* b1 */
+    { 0x0e, 0x11, 0x1f, 0x10, 0x0e, 0x04, 0x06 }, /* b2 */
+    { 0x0e, 0x01, 0x0f, 0x11, 0x0f, 0x02, 0x03 }, /* b3 */
+    { 0x04, 0x00, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* b4 */
+    { 0x02, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* b5 */
+    { 0x02, 0x04, 0x0e, 0x10, 0x0e, 0x01, 0x1e }, /* b6 */
+    { 0x02, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* b7 */
+    { 0x0c, 0x04, 0x06, 0x0c, 0x04, 0x04, 0x0e }, /* b8 */
+    { 0x04, 0x0e, 0x1f, 0x1f, 0x1b, 0x04, 0x0e }, /* b9 */
+    { 0x0a, 0x04, 0x16, 0x19, 0x11, 0x11, 0x11 }, /* ba */
+    { 0x09, 0x09, 0x08, 0x1e, 0x08, 0x08, 0x06 }, /* bb */
+    { 0x05, 0x05, 0x0c, 0x14, 0x14, 0x14, 0x0c }, /* bc */
+    { 0x0a, 0x04, 0x1f, 0x02, 0x04, 0x08, 0x1f }, /* bd */
+    { 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* be */
+    { 0x0f, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01 }, /* bf */
+    { 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* c0 */
+    { 0x1f, 0x00, 0x0e, 0x10, 0x17, 0x11, 0x0e }, /* c1 */
+    { 0x1f, 0x00, 0x0f, 0x11, 0x0f, 0x01, 0x0e }, /* c2 */
+    { 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04, 0x0c }, /* c3 */
+    { 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x0e, 0x04 }, /* c4 */
+    { 0x04, 0x00, 0x0e, 0x04, 0x04, 0x04, 0x0e }, /* c5 */
+    { 0x00, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e }, /* c6 */
+    { 0x05, 0x0a, 0x11, 0x11, 0x11, 0x11, 0x0e }, /* c7 */
+    { 0x09, 0x12, 0x0e, 0x11, 0x11, 0x11, 0x0e }, /* c8 */
+    { 0x09, 0x12, 0x00, 0x11, 0x11, 0x13, 0x0d }, /* c9 */
+    { 0x09, 0x12, 0x00, 0x0e, 0x11, 0x11, 0x0e }, /* ca */
+    { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x0f }, /* cb */
+    { 0x10, 0x10, 0x10, 0x10, 0x10, 0x01, 0x1e }, /* cc */
+    { 0x00, 0x1b, 0x1f, 0x1f, 0x0e, 0x04, 0x00 }, /* cd */
+    { 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18 }, /* ce */
+    { 0x0e, 0x11, 0x04, 0x0a, 0x1b, 0x1f, 0x00 }, /* cf */
+    { 0x0a, 0x15, 0x04, 0x07, 0x00, 0x11, 0x0a }, /* d0 */
+    { 0x0f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f }, /* d1 */
+    { 0x01, 0x03, 0x1d, 0x11, 0x1d, 0x03, 0x01 }, /* d2 */
+    { 0x0e, 0x11, 0x11, 0x1f, 0x1b, 0x1b, 0x1f }, /* d3 */
+    { 0x00, 0x01, 0x02, 0x0a, 0x04, 0x04, 0x00 }, /* d4 */
+    { 0x04, 0x0e, 0x1f, 0x00, 0x1f, 0x0e, 0x04 }, /* d5 */
+    { 0x02, 0x02, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e }, /* d6 */
+    { 0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b }, /* d7 */
+    { 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b }, /* d8 */
+    { 0x04, 0x0f, 0x04, 0x04, 0x04, 0x03, 0x06 }, /* d9 */
+    { 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b }, /* da */
+    { 0x00, 0x04, 0x0e, 0x1f, 0x0e, 0x04, 0x00 }, /* db */
+    { 0x00, 0x00, 0x1f, 0x1b, 0x15, 0x11, 0x1f }, /* dc */
+    { 0x0e, 0x0e, 0x04, 0x1f, 0x0e, 0x0e, 0x0a }, /* dd */
+    { 0x00, 0x00, 0x00, 0x00, 0x0a, 0x04, 0x0a }, /* de */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f }, /* df */
+    { 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f }, /* e0 */
+    { 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f }, /* e1 */
+    { 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* e2 */
+    { 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* e3 */
+    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04 }, /* e4 */
+    { 0x04, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x04 }, /* e5 */
+    { 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x04, 0x1f }, /* e6 */
+    { 0x00, 0x07, 0x03, 0x05, 0x08, 0x10, 0x00 }, /* e7 */
+    { 0x00, 0x10, 0x08, 0x05, 0x03, 0x07, 0x00 }, /* e8 */
+    { 0x09, 0x06, 0x0e, 0x01, 0x0f, 0x11, 0x0f }, /* e9 */
+    { 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ea */
+    { 0x00, 0x00, 0x10, 0x08, 0x04, 0x04, 0x04 }, /* eb */
+    { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f }, /* ec */
+    { 0x1f, 0x18, 0x14, 0x12, 0x15, 0x18, 0x1f }, /* ed */
+    { 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* ee */
+    { 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 }, /* ef */
+    { 0x00, 0x03, 0x07, 0x0c, 0x18, 0x1c, 0x1c }, /* f0 */
+    { 0x1c, 0x10, 0x1c, 0x07, 0x1c, 0x04, 0x07 }, /* f1 */
+    { 0x00, 0x1e, 0x03, 0x09, 0x19, 0x09, 0x1d }, /* f2 */
+    { 0x1e, 0x01, 0x19, 0x05, 0x09, 0x1d, 0x01 }, /* f3 */
+    { 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00 }, /* f4 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0f }, /* f5 */
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e }, /* f6 */
+    { 0x04, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00 }, /* f7 */
+    { 0x07, 0x03, 0x05, 0x08, 0x10, 0x10, 0x0f }, /* f8 */
+    { 0x04, 0x0e, 0x1f, 0x11, 0x11, 0x15, 0x1f }, /* f9 */
+    { 0x1f, 0x03, 0x1a, 0x02, 0x1a, 0x02, 0x1e }, /* fa */
+    { 0x00, 0x0e, 0x1f, 0x11, 0x1f, 0x0e, 0x00 }, /* fb */
+    { 0x03, 0x05, 0x09, 0x09, 0x0b, 0x1b, 0x18 }, /* fc */
+    { 0x1f, 0x03, 0x05, 0x09, 0x15, 0x03, 0x1f }, /* fd */
+    { 0x10, 0x10, 0x10, 0x10, 0x10, 0x1c, 0x1c }, /* fe */
+    { 0x1c, 0x1c, 0x10, 0x10, 0x10, 0x10, 0x10 }, /* ff */
 };
 
-unsigned char font_old_player[256][5] = {
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */
-	{ 0x3e, 0x41, 0x5d, 0x55, 0x1e }, /* 04 */
-	{ 0x48, 0x7e, 0x49, 0x49, 0x42 }, /* 05 */
-	{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, /* 06 */
-	{ 0x15, 0x16, 0x7c, 0x16, 0x15 }, /* 07 */
-	{ 0x38, 0x55, 0x56, 0x54, 0x18 }, /* 08 */
-	{ 0x38, 0x54, 0x56, 0x55, 0x18 }, /* 09 */
-	{ 0x38, 0x41, 0x42, 0x20, 0x78 }, /* 0a */
-	{ 0x00, 0x49, 0x7a, 0x40, 0x00 }, /* 0b */
-	{ 0x30, 0x49, 0x4a, 0x48, 0x30 }, /* 0c */
-	{ 0x0e, 0x51, 0x51, 0x71, 0x11 }, /* 0d */
-	{ 0x1f, 0x10, 0x7c, 0x14, 0x04 }, /* 0e */
-	{ 0x5c, 0x32, 0x2a, 0x26, 0x1d }, /* 0f */
-	{ 0x18, 0x64, 0x3c, 0x26, 0x18 }, /* 10 */
-	{ 0x0f, 0x09, 0x7d, 0x34, 0x5c }, /* 11 */
-	{ 0x70, 0x2a, 0x2d, 0x2a, 0x70 }, /* 12 */
-	{ 0x20, 0x52, 0x55, 0x52, 0x78 }, /* 13 */
-	{ 0x60, 0x58, 0x46, 0x58, 0x60 }, /* 14 */
-	{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 15 */
-	{ 0x1c, 0x55, 0x7f, 0x55, 0x1c }, /* 16 */
-	{ 0x7f, 0x01, 0x01, 0x01, 0x07 }, /* 17 */
-	{ 0x70, 0x0c, 0x03, 0x0c, 0x70 }, /* 18 */
-	{ 0x4e, 0x71, 0x01, 0x71, 0x4e }, /* 19 */
-	{ 0x01, 0x7f, 0x01, 0x7f, 0x01 }, /* 1a */
-	{ 0x0f, 0x10, 0x7f, 0x10, 0x0f }, /* 1b */
-	{ 0x41, 0x63, 0x55, 0x49, 0x41 }, /* 1c */
-	{ 0x3e, 0x49, 0x49, 0x49, 0x3e }, /* 1d */
-	{ 0x63, 0x49, 0x49, 0x49, 0x63 }, /* 1e */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 1f */
-	{ 0x7e, 0x09, 0x7f, 0x49, 0x49 }, /* 20 */
-	{ 0x24, 0x54, 0x78, 0x54, 0x58 }, /* 21 */
-	{ 0x7e, 0x01, 0x25, 0x26, 0x18 }, /* 22 */
-	{ 0x7c, 0x54, 0x56, 0x45, 0x44 }, /* 23 */
-	{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 24 */
-	{ 0x00, 0x00, 0x5f, 0x00, 0x00 }, /* 25 */
-	{ 0x05, 0x03, 0x00, 0x05, 0x03 }, /* 26 */
-	{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, /* 27 */
-	{ 0x22, 0x1c, 0x14, 0x1c, 0x22 }, /* 28 */
-	{ 0x23, 0x13, 0x08, 0x64, 0x62 }, /* 29 */
-	{ 0x36, 0x49, 0x56, 0x20, 0x58 }, /* 2a */
-	{ 0x00, 0x05, 0x03, 0x00, 0x00 }, /* 2b */
-	{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, /* 2c */
-	{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, /* 2d */
-	{ 0x22, 0x14, 0x7f, 0x14, 0x22 }, /* 2e */
-	{ 0x08, 0x08, 0x3e, 0x08, 0x08 }, /* 2f */
-	{ 0x00, 0x50, 0x30, 0x00, 0x00 }, /* 30 */
-	{ 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 31 */
-	{ 0x00, 0x30, 0x30, 0x00, 0x00 }, /* 32 */
-	{ 0x20, 0x10, 0x08, 0x04, 0x02 }, /* 33 */
-	{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, /* 34 */
-	{ 0x00, 0x42, 0x7f, 0x40, 0x00 }, /* 35 */
-	{ 0x42, 0x61, 0x51, 0x49, 0x46 }, /* 36 */
-	{ 0x21, 0x41, 0x45, 0x4b, 0x31 }, /* 37 */
-	{ 0x18, 0x14, 0x12, 0x7f, 0x10 }, /* 38 */
-	{ 0x27, 0x45, 0x45, 0x45, 0x39 }, /* 39 */
-	{ 0x3c, 0x4a, 0x49, 0x49, 0x30 }, /* 3a */
-	{ 0x01, 0x01, 0x71, 0x0d, 0x03 }, /* 3b */
-	{ 0x36, 0x49, 0x49, 0x49, 0x36 }, /* 3c */
-	{ 0x06, 0x49, 0x49, 0x29, 0x1e }, /* 3d */
-	{ 0x00, 0x36, 0x36, 0x00, 0x00 }, /* 3e */
-	{ 0x00, 0x56, 0x36, 0x00, 0x00 }, /* 3f */
-	{ 0x08, 0x1c, 0x36, 0x63, 0x41 }, /* 40 */
-	{ 0x14, 0x14, 0x14, 0x14, 0x14 }, /* 41 */
-	{ 0x41, 0x63, 0x36, 0x1c, 0x08 }, /* 42 */
-	{ 0x02, 0x01, 0x51, 0x09, 0x06 }, /* 43 */
-	{ 0x00, 0x00, 0x7d, 0x00, 0x00 }, /* 44 */
-	{ 0x7c, 0x12, 0x11, 0x12, 0x7c }, /* 45 */
-	{ 0x7f, 0x49, 0x49, 0x49, 0x36 }, /* 46 */
-	{ 0x3e, 0x41, 0x41, 0x41, 0x22 }, /* 47 */
-	{ 0x7f, 0x41, 0x41, 0x22, 0x1c }, /* 48 */
-	{ 0x7f, 0x49, 0x49, 0x49, 0x41 }, /* 49 */
-	{ 0x7f, 0x09, 0x09, 0x09, 0x01 }, /* 4a */
-	{ 0x3e, 0x41, 0x49, 0x49, 0x38 }, /* 4b */
-	{ 0x7f, 0x08, 0x08, 0x08, 0x7f }, /* 4c */
-	{ 0x00, 0x41, 0x7f, 0x41, 0x00 }, /* 4d */
-	{ 0x20, 0x41, 0x41, 0x3f, 0x01 }, /* 4e */
-	{ 0x7f, 0x08, 0x14, 0x22, 0x41 }, /* 4f */
-	{ 0x7f, 0x40, 0x40, 0x40, 0x40 }, /* 50 */
-	{ 0x7f, 0x02, 0x04, 0x02, 0x7f }, /* 51 */
-	{ 0x7f, 0x04, 0x08, 0x10, 0x7f }, /* 52 */
-	{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, /* 53 */
-	{ 0x7f, 0x09, 0x09, 0x09, 0x06 }, /* 54 */
-	{ 0x3e, 0x41, 0x41, 0x21, 0x5e }, /* 55 */
-	{ 0x7f, 0x09, 0x19, 0x29, 0x46 }, /* 56 */
-	{ 0x26, 0x49, 0x49, 0x49, 0x32 }, /* 57 */
-	{ 0x01, 0x01, 0x7f, 0x01, 0x01 }, /* 58 */
-	{ 0x3f, 0x40, 0x40, 0x40, 0x3f }, /* 59 */
-	{ 0x1f, 0x20, 0x40, 0x20, 0x1f }, /* 5a */
-	{ 0x3f, 0x40, 0x20, 0x40, 0x3f }, /* 5b */
-	{ 0x63, 0x14, 0x08, 0x14, 0x63 }, /* 5c */
-	{ 0x03, 0x04, 0x78, 0x04, 0x03 }, /* 5d */
-	{ 0x61, 0x51, 0x49, 0x45, 0x43 }, /* 5e */
-	{ 0x70, 0x29, 0x24, 0x29, 0x70 }, /* 5f */
-	{ 0x38, 0x45, 0x44, 0x45, 0x38 }, /* 60 */
-	{ 0x7a, 0x09, 0x11, 0x22, 0x79 }, /* 61 */
-	{ 0x3c, 0x41, 0x40, 0x41, 0x3c }, /* 62 */
-	{ 0x0a, 0x55, 0x55, 0x55, 0x28 }, /* 63 */
-	{ 0x30, 0x48, 0x45, 0x40, 0x20 }, /* 64 */
-	{ 0x20, 0x54, 0x54, 0x54, 0x78 }, /* 65 */
-	{ 0x7f, 0x44, 0x44, 0x44, 0x38 }, /* 66 */
-	{ 0x38, 0x44, 0x44, 0x44, 0x44 }, /* 67 */
-	{ 0x38, 0x44, 0x44, 0x44, 0x7f }, /* 68 */
-	{ 0x38, 0x54, 0x54, 0x54, 0x58 }, /* 69 */
-	{ 0x00, 0x04, 0x7e, 0x05, 0x05 }, /* 6a */
-	{ 0x08, 0x54, 0x54, 0x54, 0x3c }, /* 6b */
-	{ 0x7f, 0x08, 0x04, 0x04, 0x78 }, /* 6c */
-	{ 0x00, 0x44, 0x7d, 0x40, 0x00 }, /* 6d */
-	{ 0x20, 0x40, 0x44, 0x3d, 0x00 }, /* 6e */
-	{ 0x00, 0x7f, 0x10, 0x28, 0x44 }, /* 6f */
-	{ 0x00, 0x41, 0x7f, 0x40, 0x00 }, /* 70 */
-	{ 0x7c, 0x04, 0x78, 0x04, 0x78 }, /* 71 */
-	{ 0x7c, 0x08, 0x04, 0x04, 0x78 }, /* 72 */
-	{ 0x38, 0x44, 0x44, 0x44, 0x38 }, /* 73 */
-	{ 0x7c, 0x14, 0x14, 0x14, 0x08 }, /* 74 */
-	{ 0x08, 0x14, 0x14, 0x14, 0x7c }, /* 75 */
-	{ 0x00, 0x7c, 0x08, 0x04, 0x04 }, /* 76 */
-	{ 0x48, 0x54, 0x54, 0x54, 0x20 }, /* 77 */
-	{ 0x00, 0x04, 0x3f, 0x44, 0x44 }, /* 78 */
-	{ 0x3c, 0x40, 0x40, 0x20, 0x7c }, /* 79 */
-	{ 0x1c, 0x20, 0x40, 0x20, 0x1c }, /* 7a */
-	{ 0x3c, 0x40, 0x20, 0x40, 0x3c }, /* 7b */
-	{ 0x44, 0x28, 0x10, 0x28, 0x44 }, /* 7c */
-	{ 0x4c, 0x50, 0x50, 0x50, 0x3c }, /* 7d */
-	{ 0x44, 0x64, 0x54, 0x4c, 0x44 }, /* 7e */
-	{ 0x20, 0x55, 0x54, 0x55, 0x78 }, /* 7f */
-	{ 0x30, 0x4a, 0x48, 0x4a, 0x30 }, /* 80 */
-	{ 0x7a, 0x11, 0x09, 0x0a, 0x71 }, /* 81 */
-	{ 0x38, 0x42, 0x40, 0x22, 0x78 }, /* 82 */
-	{ 0x20, 0x55, 0x56, 0x54, 0x78 }, /* 83 */
-	{ 0x0c, 0x12, 0x52, 0x32, 0x12 }, /* 84 */
-	{ 0x20, 0x00, 0x20, 0x00, 0x20 }, /* 85 */
-	{ 0x10, 0x18, 0x1c, 0x18, 0x10 }, /* 86 */
-	{ 0x04, 0x0c, 0x1c, 0x0c, 0x04 }, /* 87 */
-	{ 0x08, 0x1c, 0x3e, 0x7f, 0x00 }, /* 88 */
-	{ 0x00, 0x7f, 0x3e, 0x1c, 0x08 }, /* 89 */
-	{ 0x7f, 0x03, 0x03, 0x06, 0x06 }, /* 8a */
-	{ 0x55, 0x2a, 0x55, 0x2a, 0x55 }, /* 8b */
-	{ 0x78, 0x15, 0x16, 0x14, 0x78 }, /* 8c */
-	{ 0x78, 0x14, 0x16, 0x15, 0x78 }, /* 8d */
-	{ 0x78, 0x16, 0x15, 0x16, 0x78 }, /* 8e */
-	{ 0x7a, 0x15, 0x15, 0x16, 0x79 }, /* 8f */
-	{ 0x7c, 0x55, 0x56, 0x54, 0x44 }, /* 90 */
-	{ 0x7c, 0x56, 0x55, 0x46, 0x44 }, /* 91 */
-	{ 0x7c, 0x55, 0x54, 0x45, 0x44 }, /* 92 */
-	{ 0x00, 0x45, 0x7e, 0x44, 0x00 }, /* 93 */
-	{ 0x00, 0x44, 0x7e, 0x45, 0x00 }, /* 94 */
-	{ 0x08, 0x7f, 0x49, 0x22, 0x1c }, /* 95 */
-	{ 0x38, 0x45, 0x46, 0x44, 0x38 }, /* 96 */
-	{ 0x38, 0x44, 0x46, 0x45, 0x38 }, /* 97 */
-	{ 0x38, 0x46, 0x45, 0x46, 0x38 }, /* 98 */
-	{ 0x3a, 0x45, 0x45, 0x46, 0x39 }, /* 99 */
-	{ 0x3c, 0x41, 0x42, 0x40, 0x3c }, /* 9a */
-	{ 0x3c, 0x40, 0x42, 0x41, 0x3c }, /* 9b */
-	{ 0x20, 0x54, 0x56, 0x55, 0x78 }, /* 9c */
-	{ 0x20, 0x56, 0x55, 0x56, 0x78 }, /* 9d */
-	{ 0x22, 0x55, 0x55, 0x56, 0x79 }, /* 9e */
-	{ 0x38, 0x56, 0x55, 0x56, 0x18 }, /* 9f */
-	{ 0x38, 0x55, 0x54, 0x55, 0x18 }, /* a0 */
-	{ 0x00, 0x48, 0x7a, 0x41, 0x00 }, /* a1 */
-	{ 0x00, 0x4a, 0x79, 0x42, 0x00 }, /* a2 */
-	{ 0x00, 0x49, 0x78, 0x41, 0x00 }, /* a3 */
-	{ 0x30, 0x48, 0x4a, 0x49, 0x30 }, /* a4 */
-	{ 0x30, 0x4a, 0x49, 0x4a, 0x30 }, /* a5 */
-	{ 0x32, 0x49, 0x49, 0x4a, 0x31 }, /* a6 */
-	{ 0x38, 0x40, 0x42, 0x21, 0x78 }, /* a7 */
-	{ 0x18, 0x24, 0x67, 0x24, 0x24 }, /* a8 */
-	{ 0x00, 0x00, 0x00, 0x7f, 0x41 }, /* a9 */
-	{ 0x00, 0x7d, 0x0a, 0x05, 0x04 }, /* aa */
-	{ 0x38, 0x45, 0x46, 0x45, 0x44 }, /* ab */
-	{ 0x48, 0x55, 0x56, 0x55, 0x20 }, /* ac */
-	{ 0x38, 0x55, 0x56, 0x55, 0x18 }, /* ad */
-	{ 0x38, 0x42, 0x45, 0x22, 0x78 }, /* ae */
-	{ 0x0c, 0x50, 0x52, 0x51, 0x3c }, /* af */
-	{ 0x30, 0x4a, 0x4a, 0x7f, 0x02 }, /* b0 */
-	{ 0x38, 0x44, 0x46, 0x45, 0x44 }, /* b1 */
-	{ 0x0e, 0x15, 0x75, 0x55, 0x06 }, /* b2 */
-	{ 0x08, 0x15, 0x15, 0x75, 0x5e }, /* b3 */
-	{ 0x44, 0x64, 0x55, 0x4c, 0x44 }, /* b4 */
-	{ 0x44, 0x64, 0x56, 0x4d, 0x44 }, /* b5 */
-	{ 0x48, 0x54, 0x56, 0x55, 0x20 }, /* b6 */
-	{ 0x7c, 0x08, 0x06, 0x05, 0x78 }, /* b7 */
-	{ 0x00, 0x49, 0x7f, 0x44, 0x00 }, /* b8 */
-	{ 0x1c, 0x5e, 0x6f, 0x5e, 0x1c }, /* b9 */
-	{ 0x7c, 0x09, 0x06, 0x05, 0x78 }, /* ba */
-	{ 0x08, 0x3f, 0x48, 0x48, 0x03 }, /* bb */
-	{ 0x38, 0x44, 0x7f, 0x00, 0x03 }, /* bc */
-	{ 0x44, 0x65, 0x56, 0x4d, 0x44 }, /* bd */
-	{ 0x02, 0x01, 0x01, 0x01, 0x01 }, /* be */
-	{ 0x02, 0x01, 0x01, 0x01, 0x7d }, /* bf */
-	{ 0x41, 0x41, 0x41, 0x41, 0x42 }, /* c0 */
-	{ 0x39, 0x45, 0x55, 0x55, 0x31 }, /* c1 */
-	{ 0x09, 0x55, 0x55, 0x55, 0x3d }, /* c2 */
-	{ 0x02, 0x55, 0x75, 0x15, 0x08 }, /* c3 */
-	{ 0x04, 0x2a, 0x6a, 0x2a, 0x10 }, /* c4 */
-	{ 0x00, 0x44, 0x7d, 0x44, 0x00 }, /* c5 */
-	{ 0x00, 0x44, 0x7c, 0x40, 0x00 }, /* c6 */
-	{ 0x3c, 0x42, 0x41, 0x42, 0x3d }, /* c7 */
-	{ 0x3a, 0x45, 0x44, 0x46, 0x39 }, /* c8 */
-	{ 0x3a, 0x41, 0x40, 0x22, 0x79 }, /* c9 */
-	{ 0x32, 0x49, 0x48, 0x4a, 0x31 }, /* ca */
-	{ 0x20, 0x40, 0x40, 0x40, 0x5f }, /* cb */
-	{ 0x5f, 0x40, 0x40, 0x40, 0x20 }, /* cc */
-	{ 0x0e, 0x1e, 0x3c, 0x1e, 0x0e }, /* cd */
-	{ 0x41, 0x7f, 0x00, 0x00, 0x00 }, /* ce */
-	{ 0x32, 0x39, 0x25, 0x39, 0x32 }, /* cf */
-	{ 0x22, 0x41, 0x0e, 0x49, 0x2a }, /* d0 */
-	{ 0x42, 0x41, 0x41, 0x41, 0x41 }, /* d1 */
-	{ 0x1c, 0x14, 0x14, 0x22, 0x7f }, /* d2 */
-	{ 0x7e, 0x79, 0x49, 0x79, 0x7e }, /* d3 */
-	{ 0x00, 0x08, 0x30, 0x0c, 0x02 }, /* d4 */
-	{ 0x14, 0x36, 0x77, 0x36, 0x14 }, /* d5 */
-	{ 0x00, 0x7c, 0x7c, 0x7f, 0x00 }, /* d6 */
-	{ 0x7f, 0x7f, 0x00, 0x41, 0x41 }, /* d7 */
-	{ 0x41, 0x41, 0x00, 0x41, 0x41 }, /* d8 */
-	{ 0x00, 0x02, 0x5f, 0x62, 0x22 }, /* d9 */
-	{ 0x7f, 0x7f, 0x00, 0x7f, 0x7f }, /* da */
-	{ 0x08, 0x1c, 0x3e, 0x1c, 0x08 }, /* db */
-	{ 0x7c, 0x4c, 0x54, 0x4c, 0x7c }, /* dc */
-	{ 0x08, 0x7b, 0x3f, 0x7b, 0x08 }, /* dd */
-	{ 0x00, 0x50, 0x20, 0x50, 0x00 }, /* de */
-	{ 0x60, 0x60, 0x60, 0x60, 0x60 }, /* df */
-	{ 0x70, 0x70, 0x70, 0x70, 0x70 }, /* e0 */
-	{ 0x78, 0x78, 0x78, 0x78, 0x78 }, /* e1 */
-	{ 0x7c, 0x7c, 0x7c, 0x7c, 0x7c }, /* e2 */
-	{ 0x7e, 0x7e, 0x7e, 0x7e, 0x7e }, /* e3 */
-	{ 0x00, 0x00, 0x70, 0x08, 0x04 }, /* e4 */
-	{ 0x00, 0x3e, 0x41, 0x1c, 0x22 }, /* e5 */
-	{ 0x5e, 0x52, 0x72, 0x52, 0x5e }, /* e6 */
-	{ 0x20, 0x10, 0x0a, 0x06, 0x0e }, /* e7 */
-	{ 0x02, 0x04, 0x28, 0x30, 0x38 }, /* e8 */
-	{ 0x20, 0x55, 0x56, 0x56, 0x79 }, /* e9 */
-	{ 0x01, 0x01, 0x01, 0x01, 0x02 }, /* ea */
-	{ 0x04, 0x08, 0x70, 0x00, 0x00 }, /* eb */
-	{ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, /* ec */
-	{ 0x7f, 0x63, 0x55, 0x49, 0x51 }, /* ed */
-	{ 0x01, 0x01, 0x01, 0x01, 0x01 }, /* ee */
-	{ 0x7f, 0x01, 0x01, 0x01, 0x01 }, /* ef */
-	{ 0x70, 0x78, 0x6c, 0x06, 0x06 }, /* f0 */
-	{ 0x17, 0x15, 0x7d, 0x48, 0x48 }, /* f1 */
-	{ 0x52, 0x7a, 0x42, 0x06, 0x7c }, /* f2 */
-	{ 0x25, 0x35, 0x29, 0x01, 0x7e }, /* f3 */
-	{ 0x00, 0x00, 0x07, 0x08, 0x10 }, /* f4 */
-	{ 0x20, 0x40, 0x40, 0x40, 0x40 }, /* f5 */
-	{ 0x40, 0x40, 0x40, 0x40, 0x20 }, /* f6 */
-	{ 0x10, 0x08, 0x07, 0x00, 0x00 }, /* f7 */
-	{ 0x30, 0x48, 0x45, 0x43, 0x47 }, /* f8 */
-	{ 0x7c, 0x46, 0x67, 0x46, 0x7c }, /* f9 */
-	{ 0x55, 0x55, 0x41, 0x7f, 0x03 }, /* fa */
-	{ 0x1c, 0x36, 0x36, 0x36, 0x1c }, /* fb */
-	{ 0x60, 0x7c, 0x02, 0x31, 0x3f }, /* fc */
-	{ 0x51, 0x49, 0x55, 0x63, 0x7f }, /* fd */
-	{ 0x7f, 0x60, 0x60, 0x00, 0x00 }, /* fe */
-	{ 0x7f, 0x03, 0x03, 0x00, 0x00 }  /* ff */
-};
-unsigned char (*font_player)[256][5]=&font_new_player;
+unsigned char (*font_player)[256][7] = &font_player_newlcd;
 
 void font_init()
 {
-  if (is_new_player())
-    font_player = &font_new_player;
-  else
-    font_player = &font_old_player;
+    if (is_new_player())
+        font_player = &font_player_newlcd;
+    else
+        font_player = &font_player_oldlcd;
 }
diff --git a/uisimulator/common/font-player.h b/uisimulator/common/font-player.h
index 99c45da..efa86e9 100644
--- a/uisimulator/common/font-player.h
+++ b/uisimulator/common/font-player.h
@@ -15,7 +15,7 @@
  *
  ****************************************************************************/
 
-extern unsigned char (*font_player)[256][5];
+extern unsigned char (*font_player)[256][7];
 
 void font_init();
 
diff --git a/uisimulator/common/lcd-playersim.c b/uisimulator/common/lcd-playersim.c
index 4c65843..1c877d4 100644
--- a/uisimulator/common/lcd-playersim.c
+++ b/uisimulator/common/lcd-playersim.c
@@ -20,6 +20,7 @@
 #include "hwcompat.h"
 
 #include "lcd.h"
+#include "lcd-charcell.h"
 #include "kernel.h"
 #include "thread.h"
 #include <string.h>
@@ -32,215 +33,85 @@
 
 /*** definitions ***/
 
-#define CHAR_WIDTH 6
-#define CHAR_HEIGHT 8
-#define ICON_HEIGHT 12
-#define CHAR_PIXEL 2
-#define BORDER_MARGIN 1
+bool sim_lcd_framebuffer[SIM_LCD_HEIGHT][SIM_LCD_WIDTH];
 
-static int double_height=1;
-extern bool lcd_display_redraw;
-extern const unsigned short *lcd_ascii;
-extern unsigned char hardware_buffer_lcd[11][2];
-
+static int double_height = 1;
 
 void lcd_print_icon(int x, int icon_line, bool enable, char **icon)
 {
-  int xpos = x;
-  int ypos = icon_line*(ICON_HEIGHT+(CHAR_HEIGHT*2+2)*CHAR_PIXEL);
-  int row=0, col;
+    int row, col;
+    int y = (ICON_HEIGHT+(CHAR_HEIGHT*2+2)*CHAR_PIXEL) * icon_line;
 
-  int p=0, cp=0;
-  struct coordinate points[SIM_LCD_WIDTH * SIM_LCD_HEIGHT];
-  struct coordinate clearpoints[SIM_LCD_WIDTH * SIM_LCD_HEIGHT];
+    y += BORDER_MARGIN;
+    x += BORDER_MARGIN;
 
-  while (icon[row]) {
-    col=0;
-    while (icon[row][col]) {
-      switch(icon[row][col]) {
-      case '*':
-        if (enable) {
-          /* set a dot */
-          points[p].x = xpos + col +BORDER_MARGIN;
-          points[p].y = ypos+row +BORDER_MARGIN;
-          p++; /* increase the point counter */
-        } else {
-          /* clear a dot */
-          clearpoints[cp].x = xpos + col +BORDER_MARGIN;
-          clearpoints[cp].y = ypos+row +BORDER_MARGIN;
-          cp++; /* increase the point counter */
+    for (row = 0; icon[row]; row++)
+    {
+        for (col = 0; icon[row][col]; col++)
+        {
+            switch (icon[row][col])
+            {
+              case '*':
+                sim_lcd_framebuffer[y+row][x+col] = enable;
+                break;
+
+              case ' ':
+                sim_lcd_framebuffer[y+row][x+col] = false;
+                break;
+            }
         }
-        break;
-      case ' ': /* Clear bit */
-        /* clear a dot */
-        clearpoints[cp].x = xpos + col+BORDER_MARGIN;
-        clearpoints[cp].y = ypos+row+BORDER_MARGIN;
-        cp++; /* increase the point counter */
-        break;
-      }
-      col++;
     }
-    row++;
-  }
-/*  DEBUGF("icon draw %d/%d\n", p, cp);*/
-  if (cp)
-      drawdots(0, &clearpoints[0], cp);
-  if (p)
-      drawdots(1, &points[0], p);
+    sim_lcd_update_rect(x, y, col, row);
+    /* icon drawing updates immediately */
 }
 
-void lcd_print_char(int x, int y)
+void lcd_print_char(int x, int y, unsigned char ch)
 {
-  int xpos = x * CHAR_WIDTH * CHAR_PIXEL;
-  int ypos = y * CHAR_HEIGHT * CHAR_PIXEL + ICON_HEIGHT;
-  int col, row;
-  int p=0, cp=0;
-  struct rectangle points[CHAR_HEIGHT*CHAR_WIDTH];
-  struct rectangle clearpoints[CHAR_HEIGHT*CHAR_WIDTH];
-  unsigned char ch=hardware_buffer_lcd[x][y];
-  static char bitmap_content[11*8][2*8];
+    int xpos = x * CHAR_WIDTH*CHAR_PIXEL;
+    int ypos = y * CHAR_HEIGHT*CHAR_PIXEL + ICON_HEIGHT;
+    int row, col, r, c;
 
-  if (double_height == 2 && y == 1)
-    return; /* only one row available if text is double height */
+    if (double_height > 1 && y == 1)
+        return;  /* only one row available if text is double height */
+        
+    for (row = 0; row < 7; row ++)
+    {
+        unsigned fontbitmap = (*font_player)[ch][row];
+        int height = (row == 3) ? 1 : double_height;
+        
+        y = ypos + row * CHAR_PIXEL * double_height;
+        for (col = 0; col < 5; col++)
+        {
+            bool fontbit = fontbitmap & (0x10 >> col);
 
-  for (col=0; col<5; col++) {
-    unsigned char fontbitmap=(*font_player)[ch][col];
-    for (row=0; row<7; row++) {
-      char fontbit=fontbitmap&(1<<row);
-      int height=CHAR_PIXEL*double_height;
-      int ypixel;
-      if (bitmap_content[x*8+col][y*8+row*double_height]!=fontbit ||
-          bitmap_content[x*8+col][y*8+row*double_height+double_height-1]!=
-          fontbit) {
-        bitmap_content[x*8+col][y*8+row*double_height]=fontbit;
-        bitmap_content[x*8+col][y*8+row*double_height+double_height-1]=fontbit;
-
-        ypixel=CHAR_PIXEL*(double_height*row)+ypos;
-        if (double_height==2) {
-            if (row == 3) /* Adjust for blank row in the middle */
-                height=CHAR_PIXEL;
+            x = xpos + col * CHAR_PIXEL;
+            for (r = 0; r < height * CHAR_PIXEL; r++)
+                for (c = 0; c < CHAR_PIXEL; c++)
+                    sim_lcd_framebuffer[y+r][x+c] = fontbit;
         }
-
-        if (fontbit) {
-            /* set a dot */
-            points[p].x = xpos + col*CHAR_PIXEL +BORDER_MARGIN;
-            points[p].y = ypixel +BORDER_MARGIN;
-            points[p].width=CHAR_PIXEL;
-            points[p].height=height;
-            p++; /* increase the point counter */
-        } else {
-            clearpoints[cp].x = xpos + col*CHAR_PIXEL +BORDER_MARGIN;
-            clearpoints[cp].y = ypixel +BORDER_MARGIN;
-            clearpoints[cp].width=CHAR_PIXEL;
-            clearpoints[cp].height=height;
-            cp++;
-        }
-      }
     }
-  }
-/*  DEBUGF("print_char %d/%d\n", p, cp);*/
-  if (cp)
-      drawrectangles(0, &clearpoints[0], cp);
-  if (p)
-      drawrectangles(1, &points[0], p);
+    if (double_height > 1)
+    {
+        y = ypos + 15*CHAR_PIXEL;
+        for (r = 0; r < CHAR_PIXEL; r++)
+            for (c = 0; c < 5*CHAR_PIXEL; c++)
+                sim_lcd_framebuffer[y+r][xpos+c] = false;
+    }
 }
 
-
-/*
- * Draw a rectangle with upper left corner at (x, y)
- * and size (nx, ny)
- */
-void lcd_drawrect (int x, int y, int nx, int ny)
-{
-    (void)x;
-    (void)y;
-    (void)nx;
-    (void)ny;
-}
-
-/* Invert a rectangular area at (x, y), size (nx, ny) */
-void lcd_invertrect (int x, int y, int nx, int ny)
-{
-    (void)x;
-    (void)y;
-    (void)nx;
-    (void)ny;
-}
-
-void lcd_drawline( int x1, int y1, int x2, int y2 )
-{
-    (void)x1;
-    (void)x2;
-    (void)y1;
-    (void)y2;
-}
-
-void lcd_clearline( int x1, int y1, int x2, int y2 )
-{
-    (void)x1;
-    (void)x2;
-    (void)y1;
-    (void)y2;
-}
-
-/*
- * Set a single pixel
- */
-void lcd_drawpixel(int x, int y)
-{
-    (void)x;
-    (void)y;
-}
-
-/*
- * Clear a single pixel
- */
-void lcd_clearpixel(int x, int y)
-{
-    (void)x;
-    (void)y;
-}
-
-/*
- * Invert a single pixel
- */
-void lcd_invertpixel(int x, int y)
-{
-    (void)x;
-    (void)y;
-}
-
-
-
 void lcd_double_height(bool on)
 {
-    double_height = 1;
-    if (on)
-        double_height = 2;
-    lcd_display_redraw=true;
-    lcd_update();
-}
-
-void lcd_define_hw_pattern(int pat, const char *pattern)
-{
-    int i, j;
-    unsigned char icon[8];
-    memset(icon, 0, sizeof icon);
-
-    DEBUGF("Defining pattern %d:", pat);
-    for (j = 0; j <= 5; j++) {
-        for (i = 0; i < 7; i++) {
-            if ((pattern[i])&(1<<(j)))
-                icon[5-j] |= (1<<(i));
-        }
-    }
-    for (i = 1; i <= 5; i++)
+    int newval = (is_new_player() && on) ? 2 : 1;
+    
+    if (newval != double_height)
     {
-        DEBUGF(" 0x%02x", icon[i]);
-        (*font_player)[pat][i-1] = icon[i];
+        double_height = newval;
+        lcd_update();
     }
-    DEBUGF("\n");
-    lcd_display_redraw=true;
-    lcd_update();
 }
 
+void sim_lcd_define_pattern(int pat, const char *pattern)
+{
+    if (pat < lcd_pattern_count)
+        memcpy((*font_player)[pat], pattern, 7);
+}
diff --git a/uisimulator/common/lcd-playersim.h b/uisimulator/common/lcd-playersim.h
index 10267de..763e415 100644
--- a/uisimulator/common/lcd-playersim.h
+++ b/uisimulator/common/lcd-playersim.h
@@ -17,23 +17,15 @@
  *
  ****************************************************************************/
 
-struct coordinate {
-  int x;
-  int y;
-};
-struct rectangle {
-  int x;
-  int y;
-  int width;
-  int height;
-};
+#define ICON_HEIGHT 12
+#define CHAR_HEIGHT 8
+#define CHAR_WIDTH 6
+#define CHAR_PIXEL 2
+#define BORDER_MARGIN 1
 
-void drawdots(int color, struct coordinate *coord, int count);
-void drawdot(int color, int x, int y);
-void drawrect(int color, int x1, int y1, int x2, int y2);
-void drawrectangles(int color, struct rectangle *rects, int count);
+extern bool sim_lcd_framebuffer[SIM_LCD_HEIGHT][SIM_LCD_WIDTH];
 
-
-void dots(int *colors, struct coordinate *points, int count);
-
-
+void lcd_print_icon(int x, int icon_line, bool enable, char **icon);
+void lcd_print_char(int x, int y, unsigned char ch);
+void sim_lcd_update_rect(int x, int y, int width, int height);
+void sim_lcd_define_pattern(int pat, const char *pattern);
diff --git a/uisimulator/sdl/SOURCES b/uisimulator/sdl/SOURCES
index 8f1f3e2..e563cb9 100644
--- a/uisimulator/sdl/SOURCES
+++ b/uisimulator/sdl/SOURCES
@@ -3,7 +3,7 @@
 #ifdef HAVE_LCD_BITMAP
 lcd-bitmap.c
 #elif defined(HAVE_LCD_CHARCELLS)
-lcd-charcell.c
+lcd-charcells.c
 #endif
 #ifdef HAVE_REMOTE_LCD
 lcd-remote-bitmap.c
diff --git a/uisimulator/sdl/button.c b/uisimulator/sdl/button.c
index 76a41f2..4b03008 100644
--- a/uisimulator/sdl/button.c
+++ b/uisimulator/sdl/button.c
@@ -18,7 +18,7 @@
  ****************************************************************************/
 
 #include "uisdl.h"
-#include "lcd-charcell.h"
+#include "lcd-charcells.h"
 #include "lcd-remote.h"
 #include "config.h"
 #include "button.h"
diff --git a/uisimulator/sdl/lcd-charcell.c b/uisimulator/sdl/lcd-charcells.c
similarity index 70%
rename from uisimulator/sdl/lcd-charcell.c
rename to uisimulator/sdl/lcd-charcells.c
index 8849efc..5a08179 100644
--- a/uisimulator/sdl/lcd-charcell.c
+++ b/uisimulator/sdl/lcd-charcells.c
@@ -19,6 +19,7 @@
 
 #include "debug.h"
 #include "lcd.h"
+#include "lcd-charcell.h"
 #include "misc.h"
 #include <string.h>
 #include <unistd.h>
@@ -36,82 +37,38 @@
 SDL_Color lcd_backlight_color_zero = {UI_LCD_BGCOLORLIGHT, 0};
 SDL_Color lcd_color_max  = {0, 0, 0, 0};
 
-/* Defined in lcd-playersim.c */
-extern void lcd_print_char(int x, int y);
+
+static unsigned long get_lcd_pixel(int x, int y)
+{
+    return sim_lcd_framebuffer[y][x];
+}
+
+void sim_lcd_update_rect(int x_start, int y_start, int width, int height)
+{
+    sdl_update_rect(lcd_surface, x_start, y_start, width, height,
+                    SIM_LCD_WIDTH, SIM_LCD_HEIGHT, get_lcd_pixel);
+    sdl_gui_update(lcd_surface, x_start, y_start, width, height,
+                   SIM_LCD_WIDTH, SIM_LCD_HEIGHT,
+                   background ? UI_LCD_POSX : 0, background ? UI_LCD_POSY : 0);
+}
 
 void lcd_update(void)
 {
     int x, y;
-    SDL_Rect dest = {UI_LCD_POSX, UI_LCD_POSY, UI_LCD_WIDTH, UI_LCD_HEIGHT};
-
-    SDL_LockSurface(lcd_surface);
     
-    for (y=0; y<2; y++) {
-        for (x=0; x<11; x++) {
-            lcd_print_char(x, y);
-        }
-    }
-    
-    SDL_UnlockSurface(lcd_surface);
-
-    if (!background) {
-        dest.x -= UI_LCD_POSX;
-        dest.y -= UI_LCD_POSY;
-    }
-    
-    SDL_BlitSurface(lcd_surface, NULL, gui_surface, &dest);
-    SDL_UpdateRect(gui_surface, dest.x, dest.y, dest.w, dest.h);
-    SDL_Flip(gui_surface);
-}
-
-void drawdots(int color, struct coordinate *points, int count)
-{
-    SDL_Rect dest;
-    Uint32 sdlcolor;
-    
-    SDL_LockSurface(lcd_surface);
-
-    if (color == 1) {
-        sdlcolor = SDL_MapRGB(lcd_surface->format, lcd_color_max.r, lcd_color_max.g, lcd_color_max.b);
-    } else {
-        sdlcolor = SDL_MapRGB(lcd_surface->format, lcd_color_zero.r, lcd_color_zero.g, lcd_color_zero.b);
-    }
-
-    while (count--) {
-        dest.x = points[count].x * display_zoom;
-        dest.y = points[count].y * display_zoom;
-        dest.w = 1 * display_zoom;
-        dest.h = 1 * display_zoom;
-
-        SDL_FillRect(lcd_surface, &dest, sdlcolor);
-    }
-
-    SDL_UnlockSurface(lcd_surface);
-}
-
-void drawrectangles(int color, struct rectangle *points, int count)
-{
-    SDL_Rect dest;
-    Uint32 sdlcolor;
-
-    SDL_LockSurface(lcd_surface);
-
-    if (color == 1) {
-        sdlcolor = SDL_MapRGB(lcd_surface->format, lcd_color_max.r, lcd_color_max.g, lcd_color_max.b);
-    } else {
-        sdlcolor = SDL_MapRGB(lcd_surface->format, lcd_color_zero.r, lcd_color_zero.g, lcd_color_zero.b);
-    }
-    
-    while (count--) {
-        dest.x = points[count].x * display_zoom;
-        dest.y = points[count].y * display_zoom;
-        dest.w = points[count].width * display_zoom;
-        dest.h = points[count].height * display_zoom;
+    for (y = 0; y < lcd_pattern_count; y++)
+        if (lcd_patterns[y].count > 0)
+            sim_lcd_define_pattern(y, lcd_patterns[y].pattern);
         
-        SDL_FillRect(lcd_surface, &dest, sdlcolor);
-    }
+    for (y = 0; y < LCD_HEIGHT; y++)
+        for (x = 0; x < LCD_WIDTH; x++)
+            lcd_print_char(x, y, lcd_charbuffer[y][x]);
 
-    SDL_UnlockSurface(lcd_surface);
+    if (lcd_cursor.visible)
+        lcd_print_char(lcd_cursor.x, lcd_cursor.y, lcd_cursor.hw_char);
+
+    sim_lcd_update_rect(0, ICON_HEIGHT, SIM_LCD_WIDTH,
+                        LCD_HEIGHT*CHAR_HEIGHT*CHAR_PIXEL);
 }
 
 #if CONFIG_BACKLIGHT
@@ -124,8 +81,8 @@
         sdl_set_gradient(lcd_surface, &lcd_color_zero, &lcd_color_max,
                          0, (1<<LCD_DEPTH));
     }
-    
-    lcd_update();
+
+    sim_lcd_update_rect(0, 0, SIM_LCD_WIDTH, SIM_LCD_HEIGHT);
 }
 #endif
 
diff --git a/uisimulator/sdl/lcd-charcell.h b/uisimulator/sdl/lcd-charcells.h
similarity index 100%
rename from uisimulator/sdl/lcd-charcell.h
rename to uisimulator/sdl/lcd-charcells.h
diff --git a/uisimulator/sdl/uisdl.c b/uisimulator/sdl/uisdl.c
index 037c54a..54175ce 100644
--- a/uisimulator/sdl/uisdl.c
+++ b/uisimulator/sdl/uisdl.c
@@ -28,7 +28,7 @@
 #ifdef HAVE_LCD_BITMAP
 #include "lcd-bitmap.h"
 #elif defined(HAVE_LCD_CHARCELLS)
-#include "lcd-charcell.h"
+#include "lcd-charcells.h"
 #endif
 #ifdef HAVE_REMOTE_LCD
 #include "lcd-remote-bitmap.h"