diff options
-rw-r--r-- | apps/plugin.c | 2 | ||||
-rw-r--r-- | apps/plugin.h | 6 | ||||
-rw-r--r-- | firmware/drivers/lcd-charcell.c | 194 | ||||
-rw-r--r-- | firmware/drivers/lcd-charset-player.c | 6 | ||||
-rw-r--r-- | firmware/export/lcd-charcell.h | 30 | ||||
-rw-r--r-- | firmware/export/lcd.h | 12 | ||||
-rw-r--r-- | firmware/target/sh/archos/player/lcd-player.c | 38 | ||||
-rw-r--r-- | uisimulator/common/font-player.c | 1042 | ||||
-rw-r--r-- | uisimulator/common/font-player.h | 2 | ||||
-rw-r--r-- | uisimulator/common/lcd-playersim.c | 253 | ||||
-rw-r--r-- | uisimulator/common/lcd-playersim.h | 28 | ||||
-rw-r--r-- | uisimulator/sdl/SOURCES | 2 | ||||
-rw-r--r-- | uisimulator/sdl/button.c | 2 | ||||
-rw-r--r-- | uisimulator/sdl/lcd-charcells.c (renamed from uisimulator/sdl/lcd-charcell.c) | 91 | ||||
-rw-r--r-- | uisimulator/sdl/lcd-charcells.h (renamed from uisimulator/sdl/lcd-charcell.h) | 0 | ||||
-rw-r--r-- | uisimulator/sdl/uisdl.c | 2 |
16 files changed, 763 insertions, 947 deletions
diff --git a/apps/plugin.c b/apps/plugin.c index de04269a89..52d43123b7 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -66,6 +66,7 @@ static const struct plugin_api rockbox_api = { /* lcd */ lcd_set_contrast, + lcd_update, lcd_clear_display, lcd_setmargins, lcd_getstringsize, @@ -114,7 +115,6 @@ static const struct plugin_api rockbox_api = { 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 7688057d86..cb076f5b85 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 @@ struct plugin_api { /* 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 @@ struct plugin_api { 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 76f7cf1b1e..5ddef99655 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 @@ void lcd_init (void) { 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 @@ static int xchar_to_pat(int xchar) { 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 @@ static void lcd_free_pat(int xchar) 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 @@ static int lcd_get_free_pat(int xchar) 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 @@ static int map_xchar(int xchar) 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 int map_xchar(int xchar) 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 @@ void lcd_define_pattern(unsigned long ucs, const char *pattern) 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_define_pattern(unsigned long ucs, const char *pattern) 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 @@ void lcd_putc(int x, int y, unsigned long ucs) 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--; - - 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 + if (lcd_cursor.hw_char < lcd_pattern_count) /* soft char, unmap */ + lcd_patterns[lcd_cursor.hw_char].count--; + + lcd_cursor.enabled = lcd_cursor.visible = false; } } @@ -409,7 +371,7 @@ static int lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str) ofs--; continue; } - lcd_putc(x++, y, ucs); + lcd_putxchar(x++, y, find_xchar(ucs)); } return x; } @@ -417,7 +379,11 @@ static int lcd_putsxyofs(int x, int y, int ofs, const unsigned char *str) /* 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 @@ void lcd_puts(int x, int y, const unsigned char *str) /* 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 @@ static void scroll_thread(void) 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 @@ static void scroll_thread(void) 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 24c0f65ee0..8218535ac2 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 @@ void lcd_charset_init(void) { 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 9a93cf19de..0684f9cd7b 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 @@ struct xchar_info { 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 48de53ada3..68f0961a5c 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -64,6 +64,7 @@ extern int lcd_getxmargin(void); 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_scroll_delay(int ms); 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 @@ extern void lcd_yuv_blit(unsigned char * const src[3], 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 @@ extern void lcd_remote_update(void); /* 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 @@ enum 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 7018b2277a..8f59901116 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 @@ void lcd_double_height(bool on) : 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 @@ void lcd_init_device(void) } 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 e85304dcdc..03bb9dd0fd 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 */ }; - -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 */ +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_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 99c45da030..efa86e92c6 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 4c658438d6..1c877d4409 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 - -static int double_height=1; -extern bool lcd_display_redraw; -extern const unsigned short *lcd_ascii; -extern unsigned char hardware_buffer_lcd[11][2]; +bool sim_lcd_framebuffer[SIM_LCD_HEIGHT][SIM_LCD_WIDTH]; +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]; - - if (double_height == 2 && y == 1) - return; /* only one row available if text is double height */ - - 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; - } - - 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++; + int xpos = x * CHAR_WIDTH*CHAR_PIXEL; + int ypos = y * CHAR_HEIGHT*CHAR_PIXEL + ICON_HEIGHT; + int row, col, r, c; + + 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); + + 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; } - } } - } -/* DEBUGF("print_char %d/%d\n", p, cp);*/ - if (cp) - drawrectangles(0, &clearpoints[0], cp); - if (p) - drawrectangles(1, &points[0], p); -} - - -/* - * 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; + 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; + } } - - 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 10267de1f1..763e4159e9 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; -}; - -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); - - -void dots(int *colors, struct coordinate *points, int count); +#define ICON_HEIGHT 12 +#define CHAR_HEIGHT 8 +#define CHAR_WIDTH 6 +#define CHAR_PIXEL 2 +#define BORDER_MARGIN 1 +extern bool sim_lcd_framebuffer[SIM_LCD_HEIGHT][SIM_LCD_WIDTH]; +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 8f1f3e2fd7..e563cb984d 100644 --- a/uisimulator/sdl/SOURCES +++ b/uisimulator/sdl/SOURCES @@ -3,7 +3,7 @@ kernel.c #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 76a41f2230..4b03008497 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 index 8849efc7cd..5a08179232 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_color_zero = {UI_LCD_BGCOLOR, 0}; 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); -void lcd_update(void) +static unsigned long get_lcd_pixel(int x, int y) { - 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); + return sim_lcd_framebuffer[y][x]; } -void drawdots(int color, struct coordinate *points, int count) +void sim_lcd_update_rect(int x_start, int y_start, int width, int height) { - 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); + 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 drawrectangles(int color, struct rectangle *points, int count) +void lcd_update(void) { - 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); - } + int x, y; - 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 @@ void sim_backlight(int value) 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 index 6b1e85e549..6b1e85e549 100644 --- a/uisimulator/sdl/lcd-charcell.h +++ b/uisimulator/sdl/lcd-charcells.h diff --git a/uisimulator/sdl/uisdl.c b/uisimulator/sdl/uisdl.c index 037c54a9bf..54175ce727 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" |