1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-18 03:52:11 +01:00
This commit is contained in:
Sambas 2012-03-10 09:35:09 +02:00
parent 8e31f84058
commit ee2b12b917
11 changed files with 15804 additions and 9677 deletions

View File

@ -161,7 +161,7 @@ void introGraphics();
void updateGraphics();
void drawGraphicsLine();
void write_char16(char ch, unsigned int x, unsigned int y);
void write_char16(char ch, unsigned int x, unsigned int y, int font);
void write_pixel(uint16_t *buff, unsigned int x, unsigned int y, int mode);
void write_pixel_lm(unsigned int x, unsigned int y, int mmode, int lmode);
void write_hline(uint16_t *buff, unsigned int x0, unsigned int x1, unsigned int y, int mode);

View File

@ -41,6 +41,7 @@
#include "fonts.h"
#include "font12x18.h"
#include "font8x10.h"
#include "WMMInternal.h"
static uint16_t angleA=0;
@ -124,7 +125,7 @@ uint8_t getCharData(uint16_t charPos) {
}
}
return length;
}*/
}
uint8_t printText16(uint16_t x, uint16_t y, const char* str) {
@ -139,12 +140,6 @@ uint8_t printText16(uint16_t x, uint16_t y, const char* str) {
}
void printTime(uint16_t x, uint16_t y) {
char temp[9]={0};
sprintf(temp,"%02d:%02d:%02d",time.hour,time.min,time.sec);
//printTextFB(x,y,temp);
write_string(temp, x, y, 1, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 0);
}
uint8_t printCharFB(uint16_t ch, uint16_t x, uint16_t y) {
for(uint8_t i = 0; i < 18; i++)
@ -155,177 +150,529 @@ uint8_t printCharFB(uint16_t ch, uint16_t x, uint16_t y) {
}
return 1;
}
void write_char16(char ch, unsigned int x, unsigned int y)
{
int yy, addr_temp, row, row_temp, xshift;
uint16_t and_mask, or_mask, level_bits;
char lookup = 0;
// Compute starting address (for x,y) of character.
int addr = CALC_BUFF_ADDR(x, y);
int wbit = CALC_BIT_IN_WORD(x);
// If font only supports lowercase or uppercase, make the letter
// lowercase or uppercase.
// How big is the character? We handle characters up to 8 pixels
// wide for now. Support for large characters may be added in future.
{
// Ensure we don't overflow.
if(x + wbit > DISP_WIDTH)
return;
// Load data pointer.
row = ch * 18;
row_temp = row;
addr_temp = addr;
xshift = 16 - 16;
// We can write mask words easily.
for(yy = y; yy < y + 18; yy++)
{
write_word_misaligned_OR(draw_buffer_mask, font_mask16x18[row] << xshift, addr, wbit);
addr += DISP_WIDTH / 16;
row++;
}
// Level bits are more complicated. We need to set or clear
// level bits, but only where the mask bit is set; otherwise,
// we need to leave them alone. To do this, for each word, we
// construct an AND mask and an OR mask, and apply each individually.
row = row_temp;
addr = addr_temp;
for(yy = y; yy < y + 18; yy++)
{
level_bits = font_frame16x18[row];
//if(!(flags & FONT_INVERT)) // data is normally inverted
level_bits = ~level_bits;
or_mask = font_mask16x18[row] << xshift;
and_mask = (font_mask16x18[row] & level_bits) << xshift;
write_word_misaligned_OR(draw_buffer_level, or_mask, addr, wbit);
// If we're not bold write the AND mask.
//if(!(flags & FONT_BOLD))
write_word_misaligned_NAND(draw_buffer_level, and_mask, addr, wbit);
addr += DISP_WIDTH / 16;
row++;
}
}
}
*/
static unsigned short logo_bits[] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0700,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3fc0, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfff0, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfff0, 0x0001, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xfff0, 0x0007, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xfff8, 0x000f, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xfff8, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0xfff8, 0x007f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0xfffc, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfffc,
0x01ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfffc, 0x07ff,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfffe, 0x07ff, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfffe, 0x1fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xfffe, 0x3fff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xfffe, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xffff, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0xffff, 0xfff0, 0x000f, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x7fff,
0xffc0, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x3fff, 0xff80,
0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x3fff, 0xfe00, 0x00ff,
0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x3fff, 0xf800, 0x00ff, 0x0000,
0x0000, 0x0000, 0x0003, 0xc000, 0x3fff, 0xf000, 0x03ff, 0x0000, 0x0008,
0xc000, 0x001f, 0xc000, 0x1fff, 0xe000, 0x07ff, 0x0000, 0x00f8, 0xf800,
0x003f, 0xc000, 0x1fff, 0x8000, 0x0fff, 0x0000, 0x07e0, 0xfe00, 0x00ff,
0xe000, 0x1fff, 0x0000, 0x3fff, 0x0000, 0xbfc0, 0xffc0, 0x00ff, 0xe000,
0x1fff, 0x0000, 0x7ffc, 0x0000, 0xff00, 0xfff7, 0x007f, 0xe000, 0x0fff,
0x0000, 0xfff0, 0x0000, 0xfe00, 0xffff, 0x007f, 0xf000, 0x0fff, 0x0000,
0xffe0, 0x0001, 0xf800, 0xffff, 0xc07f, 0xf000, 0x0fff, 0x0000, 0xffc0,
0x0001, 0xf000, 0xffff, 0xc07f, 0xf003, 0x0fff, 0x0000, 0xff00, 0x0003,
0xc000, 0xffff, 0xe03f, 0xf00f, 0x0fff, 0x0000, 0xfe00, 0x0007, 0x8000,
0xffff, 0xe03f, 0xf83f, 0x07ff, 0x0000, 0xf800, 0x0007, 0x0000, 0xffff,
0xe03f, 0xf87f, 0x07ff, 0x0000, 0xf000, 0x000f, 0x0000, 0xfffc, 0xf03f,
0xe1ff, 0x03ff, 0x0000, 0xf000, 0x000f, 0x0000, 0xfffc, 0xf07f, 0x87ff,
0x03ff, 0x0000, 0xf000, 0x0007, 0x0000, 0xfffc, 0xf0ff, 0x1fff, 0x03ff,
0x0000, 0xe000, 0x000f, 0x0000, 0xfff8, 0xf0ff, 0x3fff, 0x03f8, 0x0000,
0xe000, 0x001f, 0x0000, 0xfff0, 0xf07f, 0xffff, 0x01e0, 0x0000, 0xe000,
0x000f, 0x0000, 0xfff0, 0xf87f, 0xffff, 0x03c7, 0x0000, 0xe000, 0x000f,
0x0000, 0xfff0, 0xf87f, 0xffff, 0x010f, 0x0000, 0xe000, 0x001f, 0x0000,
0xffe0, 0xf87f, 0xffff, 0x003f, 0x0000, 0xe000, 0x000f, 0x0000, 0xffe0,
0xfc7f, 0xffff, 0x00ff, 0x0000, 0xe000, 0x000f, 0x0000, 0xffc0, 0xfc0f,
0xffff, 0x01ff, 0x0000, 0xf000, 0x000f, 0x0000, 0xffc0, 0xfc07, 0xffff,
0x0fff, 0x0000, 0xf000, 0x001f, 0x0000, 0xffc0, 0xfc07, 0xffff, 0x3fff,
0x0000, 0xf000, 0x000f, 0x0000, 0xff80, 0xfe07, 0xffff, 0xffff, 0x0000,
0xf000, 0x000f, 0x0000, 0xff80, 0xfc03, 0xffff, 0xffff, 0x0001, 0xf000,
0x000f, 0x0000, 0xff00, 0xfe03, 0xffff, 0xffff, 0x0007, 0xf000, 0x001f,
0x0000, 0xff00, 0xfe03, 0xffff, 0xffff, 0x001f, 0xf000, 0x000f, 0x0000,
0xfc00, 0xfe01, 0xffff, 0xffff, 0x007f, 0xf000, 0x000f, 0x0000, 0xf000,
0xff03, 0xffff, 0xffff, 0x01ff, 0xf000, 0x000f, 0x0000, 0x8000, 0xff00,
0xffff, 0xffff, 0x03ff, 0xf000, 0x001f, 0x0000, 0x0000, 0xff00, 0xffff,
0xffff, 0x0fff, 0xf000, 0x000f, 0x0000, 0x0000, 0xff80, 0xffff, 0xffff,
0x3fff, 0xf000, 0x000f, 0x0000, 0x0000, 0xfc00, 0xffff, 0xffff, 0xffff,
0xf800, 0x000f, 0x0000, 0x0000, 0xf000, 0xffff, 0xffff, 0xffff, 0xf003,
0x001f, 0x0000, 0x0000, 0x8000, 0xffff, 0xffff, 0xffff, 0xf007, 0x000f,
0x0000, 0x0000, 0x0000, 0xfffc, 0xffff, 0xffff, 0xf83f, 0x000f, 0x0000,
0x0000, 0x0000, 0xfff0, 0xffff, 0xffff, 0xf87f, 0x000f, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0xffff, 0x001f, 0x0000, 0x0000, 0x0000,
0xf800, 0xffff, 0xffff, 0xffff, 0x000f, 0x0000, 0x0000, 0x0000, 0xe000,
0xffff, 0xffff, 0xffff, 0x000f, 0x0000, 0x0000, 0x0000, 0x8000, 0xfffe,
0xffff, 0xffff, 0x000f, 0x0000, 0x0000, 0x0000, 0x0000, 0xfff8, 0xffff,
0xffff, 0x001f, 0x0000, 0x0000, 0x0000, 0x002e, 0xffe0, 0xffff, 0xffff,
0x000f, 0x0000, 0x0000, 0x0000, 0x00fc, 0xff00, 0xffff, 0xffff, 0x000f,
0x0000, 0x0000, 0x0000, 0x07fe, 0xf800, 0xffff, 0xffff, 0x000f, 0x0000,
0x0000, 0x0000, 0x5ffe, 0xc000, 0xffff, 0xffff, 0x001f, 0x0000, 0x0000,
0x0000, 0xffff, 0x0001, 0xffff, 0xffff, 0x000f, 0x0000, 0x0000, 0x0000,
0xffff, 0x0001, 0xfff8, 0xffff, 0x000f, 0x0000, 0x0000, 0x0000, 0xffff,
0x0001, 0xffc0, 0xffff, 0x000f, 0x0000, 0x0000, 0x8000, 0xffff, 0x0001,
0xfe00, 0xffff, 0x000f, 0x0000, 0x0000, 0x8000, 0xffff, 0x0000, 0xf800,
0xffff, 0x0007, 0x0000, 0x0000, 0x8000, 0xffff, 0x0000, 0x8000, 0xffff,
0x0007, 0x0000, 0x0000, 0x8000, 0xffff, 0x0000, 0x0000, 0xfffe, 0x0003,
0x0000, 0x0000, 0xc000, 0x7fff, 0x0000, 0x0000, 0xfff0, 0x0003, 0x0000,
0x0000, 0xc000, 0x7fff, 0x0000, 0x0000, 0xff80, 0x0001, 0x0000, 0x0000,
0xc000, 0x7fff, 0x0000, 0x0000, 0xfe00, 0x0000, 0x0000, 0x0000, 0xe000,
0x7fff, 0x0000, 0x0000, 0x1000, 0x0000, 0x0000, 0x0000, 0xe000, 0x7fff,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe000, 0x3fff, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf000, 0x3fff, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xf000, 0x3fff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xf000, 0x1fff, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xc000, 0x1fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x8000, 0x1fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0ffe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0ff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0fe0,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0fc0, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f00, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8800, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x9c00, 0x0001, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xc800, 0x0001, 0x0060, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x8000, 0x0001, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0xc000, 0x0001, 0x07f0, 0xf800, 0xf07f, 0xf07f, 0xf07f, 0xf07f,
0x8c7f, 0xffc1, 0x07f1, 0xf800, 0xf87f, 0xf87f, 0xf8ff, 0xf8ff, 0xccff,
0xffc1, 0x00e3, 0x1c00, 0x1ce0, 0x1ce0, 0x1ce0, 0x3ce0, 0x8ce0, 0x00e1,
0x0067, 0x0c00, 0x0cc0, 0x0cc0, 0x1cc0, 0x1dc0, 0xcdc0, 0x0061, 0x0066,
0x0c00, 0x0cc0, 0xfdc0, 0x0dff, 0x0dc0, 0x8dc0, 0x0071, 0x0066, 0x0c00,
0x0cc0, 0xfdc0, 0x0dff, 0x0dc0, 0xcdc0, 0x0071, 0x0066, 0x1c00, 0x1cc0,
0x1cc0, 0x0c00, 0x0dc0, 0x8dc0, 0x0061, 0x00e6, 0x1c00, 0x0ce8, 0x5ce8,
0x1c55, 0x1dc0, 0xcce8, 0x20e1, 0x00c7, 0xf800, 0xffff, 0xf8ff, 0x0c7f,
0xffc0, 0x8cff, 0xffe7, 0x07c3, 0xf000, 0xffff, 0xf07f, 0x0c7f, 0xffc0,
0x0c7f, 0xff87, 0x0781, 0x0000, 0x0c00, 0x0000, 0x0c00, 0xdf40, 0x000d,
0x0000, 0x0000, 0x0000, 0x0c00, 0x0000, 0x0000, 0x0c00, 0x0000, 0x0000,
0x0000, 0x0000, 0x1c00, 0x0000, 0x0000, 0x0c00, 0x0000, 0x0000, 0x0000,
0x0000, 0x0c00, 0x0000, 0x0000, 0x1c00, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 };
#define logo1_width 192
#define logo1_height 186
static unsigned short logo1_bits[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xe1ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0xfffe, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x003f, 0xfff8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x003f, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0xffc0, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x001f, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x001f, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x000f, 0xfc00, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x000f, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x000f, 0xf000, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0007, 0xe000, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x0007, 0x8000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0007, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0007, 0x0000, 0xfffe,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x0003, 0x0000, 0xfff8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0003, 0x0000, 0xfff0, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0003, 0x0000, 0xffe0,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x0001, 0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0001, 0x0000, 0xff00, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0001, 0x00fc, 0xfe00,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x0001, 0x01fc, 0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x07fe, 0xf000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x1ffe, 0xe000,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x0000, 0x3ffe, 0xc000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0x7fff, 0x0000, 0xfffe, 0x8000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0fff, 0xfffe, 0x7fff, 0x0000, 0xffff, 0x0001,
0xfffe, 0xffff, 0xffff, 0xffff, 0x8fff, 0xffff, 0x03ff, 0xfff8, 0x7fff,
0x0000, 0xffff, 0x0007, 0xfffc, 0xffff, 0xffff, 0xffff, 0x3fff, 0xfff8,
0x00ff, 0xffe0, 0x3fff, 0x0000, 0xffff, 0x000f, 0xfff8, 0xffff, 0xffff,
0xffff, 0x7fff, 0xff80, 0x001f, 0xffc0, 0x3fff, 0x0000, 0xffff, 0x003f,
0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0xfc01, 0x0007, 0xffc0, 0x3fff,
0x8000, 0xffff, 0x007f, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffff, 0xc003,
0x0001, 0xffe0, 0x3fff, 0x8000, 0xffff, 0x01ff, 0xff80, 0xffff, 0xffff,
0xffff, 0xffff, 0x000f, 0x0000, 0xffe0, 0x1fff, 0x8000, 0xffff, 0x03ff,
0xff00, 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0x0000, 0x9fe0, 0x1fff,
0x8000, 0xffff, 0x0fff, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f,
0x0000, 0x1fe0, 0x1ffe, 0xc000, 0xffff, 0x1fff, 0xfe00, 0xffff, 0xffff,
0xffff, 0xffff, 0x00ff, 0x0000, 0x0ff0, 0x0ff8, 0xc000, 0xffff, 0x7fff,
0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0x03ff, 0x0000, 0x0ff0, 0x0fe0,
0xc000, 0xffff, 0xffff, 0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0x07ff,
0x0000, 0x0ff0, 0x0f80, 0xe000, 0xffff, 0xffff, 0xf801, 0xffff, 0xffff,
0xffff, 0xffff, 0x0fff, 0x0000, 0x0ff0, 0x0f00, 0xe000, 0xffff, 0xffff,
0xf803, 0xffff, 0xffff, 0xffff, 0xffff, 0x3fff, 0x0000, 0x07f0, 0x3c00,
0xe000, 0xffff, 0xffff, 0xf807, 0xffff, 0xffff, 0xffff, 0xffff, 0x3fff,
0x0000, 0x07e0, 0xf000, 0xe000, 0xffff, 0xffff, 0xf807, 0xffff, 0xffff,
0xffff, 0xffff, 0x3fff, 0x0000, 0x07c0, 0xc000, 0xf003, 0xffff, 0xffff,
0xf807, 0xffff, 0xffff, 0xffff, 0xffff, 0x7fff, 0x0000, 0x07c0, 0x0000,
0xf007, 0xffff, 0xffff, 0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0x7fff,
0x0000, 0x03c0, 0x0000, 0xf01e, 0xffff, 0xffff, 0xf007, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0000, 0x03c0, 0x0000, 0xf078, 0xffff, 0xffff,
0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x03e0, 0x0000,
0xf9e0, 0xffff, 0xffff, 0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x0000, 0x03e0, 0x0000, 0xff80, 0xffff, 0xffff, 0xf007, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0001, 0x01e0, 0x0000, 0xfe00, 0xffff, 0xffff,
0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0001, 0x01f0, 0x0000,
0xfc00, 0xffff, 0xffff, 0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x0003, 0x01fe, 0x0000, 0xf000, 0xffff, 0xffff, 0xf007, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0003, 0x01fe, 0x0000, 0xc000, 0xffff, 0xffff,
0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0007, 0x00fe, 0x0000,
0x0000, 0xffff, 0xffff, 0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x0007, 0x00ff, 0x0000, 0x0000, 0xfffc, 0xffff, 0xf007, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x0007, 0x00ff, 0x0000, 0x0000, 0xfff0, 0xffff,
0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x000f, 0x00ff, 0x0000,
0x0000, 0xffc0, 0xffff, 0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x800f, 0x007f, 0x0000, 0x0000, 0xff80, 0xffff, 0xf007, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0x801f, 0x007f, 0x0000, 0x0000, 0xfe00, 0xffff,
0xf007, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x807f, 0x007f, 0x0000,
0x0000, 0xf800, 0xffff, 0xf003, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x83ff, 0x007f, 0x0000, 0x0000, 0xe000, 0xffff, 0xf003, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xdfff, 0x003f, 0x0000, 0x0000, 0x8000, 0xffff,
0xf003, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x003f, 0x0000,
0x0000, 0x0000, 0xffff, 0xf003, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x003f, 0x0000, 0x0000, 0x0000, 0xfffc, 0xf003, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x0000, 0x0000, 0x0000, 0xfff0,
0xf003, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x07ff, 0x0000,
0x0000, 0x0000, 0xffc0, 0xf003, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x3fff, 0x0000, 0x0000, 0x0000, 0xff00, 0xf003, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0xfc00,
0xf003, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0007,
0x0000, 0x0000, 0xf000, 0xf001, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0x003f, 0x0000, 0x0000, 0xe000, 0xf001, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x0000, 0x0000, 0x0000,
0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x07ff,
0x0000, 0x0000, 0x0000, 0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0x3fff, 0x0000, 0x0000, 0x0000, 0xf000, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000,
0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0x0007, 0x0000, 0x0000, 0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xfff9, 0x003f, 0x0000, 0x0000, 0xf000, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffc1, 0x01ff, 0x0000, 0x0000,
0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfe00,
0x07ff, 0x0000, 0x0000, 0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xf000, 0x3fff, 0x0000, 0x0000, 0xf000, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x8000, 0xffff, 0x0001, 0x0000,
0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000,
0xfffc, 0x000f, 0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x7fff, 0x0000, 0xfffc, 0x003f, 0x0000, 0xf800, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x7fff, 0x0000, 0xfffc, 0x01ff, 0x0000,
0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x7fff, 0x0000,
0xfffc, 0x0fff, 0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x3fff, 0x0000, 0xfffc, 0x7fff, 0x0000, 0xf800, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x3fff, 0x0000, 0xfffe, 0xffff, 0x0001,
0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3fff, 0x0000,
0xfffe, 0xffff, 0x000f, 0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x3fff, 0x0000, 0xfffe, 0xffff, 0x007f, 0xfe00, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x1fff, 0x0000, 0xfffe, 0xffff, 0x03ff,
0xfe00, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fff, 0x0000,
0xffff, 0xffff, 0x0fff, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x1fff, 0x0000, 0xffff, 0xffff, 0x7fff, 0xff80, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x0fff, 0x0000, 0xffff, 0xffff, 0xffff,
0xfff3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0fff, 0x8000,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x0fff, 0x8000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x07ff, 0x8000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x07ff, 0x8000,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x07ff, 0xc000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x07ff, 0xc000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fff, 0xc000,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x3fff, 0xc000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe003,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xe00f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe03f, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf07f,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xf1ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x7fff, 0xffe6,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0x3fff, 0xffc6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0x7fff, 0xffc6, 0x9fff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffc7,
0x9fff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffc7, 0x0fff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff,
0x03fc, 0x0ff0, 0x3fc0, 0x7f00, 0x7c00, 0x1fc6, 0x0780, 0xfff8, 0xffff,
0xffff, 0xffff, 0x003f, 0x00f8, 0x03e0, 0x0f80, 0x3e00, 0x3800, 0x0fc6,
0x0600, 0xfff8, 0xffff, 0xffff, 0xffff, 0x001f, 0x0070, 0x01c0, 0x0700,
0x1c00, 0x3000, 0x07c6, 0x9c00, 0xffff, 0xffff, 0xffff, 0xffff, 0xff1f,
0xfc63, 0xf18f, 0xc73f, 0x1c7f, 0x31ff, 0xe3c6, 0x9c7f, 0xffff, 0xffff,
0xffff, 0xffff, 0xff9f, 0xfe63, 0xf98f, 0xe63f, 0x88ff, 0x23ff, 0xe3c6,
0x9cff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff9f, 0xfe63, 0x018f, 0xe600,
0x88ff, 0x23ff, 0xe3c6, 0x9cff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff9f,
0xfe63, 0x018f, 0xe600, 0x88ff, 0x23ff, 0xe3c6, 0x9cff, 0xffff, 0xffff,
0xffff, 0xffff, 0xff9f, 0xfe63, 0xf18f, 0xe7ff, 0x88ff, 0x23ff, 0xe3c6,
0x9cff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff1f, 0xfe63, 0xf18f, 0xe7ff,
0x88ff, 0x31ff, 0xe3c6, 0x1c7f, 0xffff, 0xffff, 0xffff, 0xffff, 0x701f,
0x0000, 0x01c0, 0xe780, 0x00ff, 0x3000, 0x070e, 0x1c1f, 0xfff8, 0xffff,
0xffff, 0xffff, 0x003f, 0x0000, 0x03e0, 0xe780, 0x00ff, 0x3800, 0x0f0e,
0x3e00, 0xfff8, 0xffff, 0xffff, 0xffff, 0x007f, 0x0000, 0x07f0, 0xe780,
0x00ff, 0x7c00, 0x1f3e, 0x7f00, 0xfff8, 0xffff, 0xffff, 0xffff, 0xffff,
0xfe3f, 0xffff, 0xffff, 0x8fff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xfe7f, 0xffff, 0xffff, 0x8fff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfe7f, 0xffff, 0xffff,
0x8fff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xfe7f, 0xffff, 0xffff, 0x8fff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xfe7f, 0xffff, 0xffff, 0x9fff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff };
#define level_width 144
#define level_height 129
static unsigned short level_bits[] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xf800, 0x007f, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xfff8, 0x03ff, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xffff, 0x0fff, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xe000, 0xffff, 0x1e01, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xfe00, 0x7fef, 0x7ff8, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xff00, 0x83c0, 0xffff, 0x0001, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x3f80, 0xcffe, 0xfffd, 0x0007, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x9fc0, 0xffff, 0xb07f, 0x001f, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xcfe0, 0xffff, 0xcfce, 0x007e, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xe7f8, 0xffff, 0x9ff7, 0x00fd, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xf7fc, 0xffe7, 0xbff7, 0x01ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xf3fe, 0xfffb, 0xb9ff, 0x03ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xfbff, 0xfe03, 0xb9f7, 0x07ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x8000, 0xf9ff, 0xebfd, 0xb9e7, 0x0fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xc000, 0xffff, 0xd7fe, 0xcfdf, 0x0fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xe000, 0x7fff, 0xf7ff, 0xf037, 0x1fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xe000, 0x7fff, 0xf7ff, 0xffff, 0x3fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf000, 0xefff, 0xf73e, 0xffff, 0x3fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf000, 0xefff, 0xf73e, 0xefff, 0x7fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf000, 0xefff, 0xf939, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf800, 0x87ff, 0xfe07, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf800, 0xffff, 0xdffe, 0xffff, 0xffdf, 0x0001, 0x0000, 0x0000,
0x0000, 0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000,
0x0000, 0xfe00, 0xffff, 0xefff, 0x1fff, 0xfff8, 0x0003, 0x0000, 0x0000,
0x0000, 0xfe00, 0xffff, 0xffff, 0x81ff, 0xfff1, 0x0007, 0x0000, 0x0000,
0x0000, 0xfe00, 0xffff, 0xffff, 0xfc3f, 0xfff3, 0x000f, 0x0000, 0x0000,
0x0000, 0xfe00, 0xffff, 0xffff, 0xff9f, 0xfff0, 0x000f, 0x0000, 0x0000,
0x0000, 0xfe00, 0xffff, 0xffff, 0x3fcf, 0xfff6, 0x001f, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0x0ee7, 0xfff7, 0x003f, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0xe003, 0xfff7, 0x003f, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0xf371, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0xfff9, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0xfffe, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0x7fff, 0xffff, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0x7fff, 0xffff, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xdfff, 0xffff, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xdfff, 0xffff, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xfdff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xbfff, 0xffff, 0xfdff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0x7fff, 0xfffb, 0xfdff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xfeff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xf3ff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xcfff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xbeff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xfeff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0x7fff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xbfff, 0x007f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xbeff, 0x007f, 0x0000, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xdeff, 0x007f, 0x0000, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xdeff, 0x003f, 0x0000, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xefff, 0x003f, 0x0000, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xfb7f, 0x003f, 0x0000, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffbf, 0x003f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffbf, 0x003f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffdf, 0x013f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffef, 0x003f, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0x3fff, 0xfff9, 0x003f, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0x0000, 0x0000,
0x0000, 0xfe00, 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0x0000, 0x0000,
0x0000, 0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0x000f, 0x0000, 0x0000,
0x0000, 0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0x000f, 0x0000, 0x0000,
0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0x0007, 0x0000, 0x0000,
0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000,
0x0000, 0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0001, 0x0000, 0x0000,
0x0000, 0xe000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000,
0x0000, 0xe000, 0xffff, 0xffff, 0xffff, 0x7fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xc000, 0xffff, 0xffff, 0xffff, 0x3fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xc000, 0xffff, 0xffff, 0xffff, 0x1fff, 0x0000, 0x0000, 0x0000,
0x0000, 0x8000, 0xffff, 0xffff, 0xffff, 0x0fff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0x07ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xfffe, 0xffff, 0xffff, 0x03ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xfffc, 0xffff, 0xffff, 0x00ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xfff0, 0xffff, 0xffff, 0x003f, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xffe0, 0xffff, 0xffff, 0x001f, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xffc0, 0xffff, 0xffff, 0x0007, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xff00, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xf800, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 };
#define level_mask_width 144
#define level_mask_height 129
static unsigned short level_mask_bits[] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c00, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0xfe00, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0740, 0xdc00, 0x0001,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03fe, 0xce00, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ff, 0xde1f, 0x0001,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x802e, 0xfe1f, 0x0000,
0x0000, 0x0000, 0x0000, 0x4000, 0x0044, 0xc000, 0xc007, 0x7c1d, 0x0000,
0x0000, 0x0000, 0x0000, 0xfee8, 0x00ff, 0x8000, 0xc00f, 0x0e38, 0x0000,
0x0000, 0x0000, 0x0000, 0xffff, 0x17ff, 0x0000, 0xc3df, 0x1c3f, 0x0000,
0x0000, 0x0000, 0xa000, 0xffff, 0x3fff, 0x0000, 0xe3ff, 0x0e3f, 0x0000,
0x0000, 0x0000, 0xff00, 0xffff, 0x7fff, 0x0000, 0xc07f, 0x1c7d, 0x0000,
0x0000, 0x0000, 0xff80, 0xffff, 0xffff, 0x0000, 0xe03e, 0x0e30, 0x0000,
0x0000, 0x0000, 0xffc0, 0xffff, 0xffff, 0x0017, 0xc03e, 0x1c71, 0x0000,
0x0000, 0x0000, 0xffe0, 0xffff, 0xffff, 0x001f, 0x8038, 0x0020, 0x0000,
0x0000, 0x0000, 0xfff0, 0xffff, 0xffff, 0x007f, 0x003c, 0x0000, 0x0000,
0x0000, 0x0000, 0xfff8, 0xffff, 0xffff, 0x00ff, 0x0020, 0x0000, 0x0000,
0x0000, 0x0000, 0xfffc, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xfffe, 0xffff, 0xffff, 0x03ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0x07ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x8000, 0xffff, 0xffff, 0xffff, 0x0fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf000, 0xffff, 0xffff, 0xffff, 0x1fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf000, 0xffff, 0xffff, 0xffff, 0x3fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0x7fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0x3fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xfc00, 0xffff, 0xffff, 0xffff, 0x7fff, 0x0000, 0x0000, 0x0000,
0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000,
0x0000, 0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0x0001, 0x0000, 0x0000,
0x0000, 0xfe00, 0xffff, 0xffff, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff, 0x0007, 0x0000, 0x0000,
0x0000, 0xfe00, 0xffff, 0xffff, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000,
0x0000, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff, 0x0007, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0x000f, 0x0000, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0x0150, 0x0000,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0x003f, 0x03f0, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x1ff8, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x1ef8, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x147c, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x0038, 0x0000,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x707c, 0x0054,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0xf0fc, 0x00fc,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0xf1fc, 0x01fc,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0xf80e, 0x00ee,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0xf00e, 0x00fc,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0xf808, 0x00fe,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x7800, 0x007e,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0xe000, 0x000e,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x4000, 0x0006,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x000e,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0004,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x0000, 0x0000,
0x0000, 0xfff0, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x0000, 0x0020,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x0054, 0x007c,
0x0000, 0xffe0, 0xffff, 0xffff, 0xffff, 0xffff, 0x00ff, 0x00f8, 0x00f8,
0x0000, 0xffc0, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x117c, 0x01fc,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x3818, 0x00fc,
0x0000, 0xff80, 0xffff, 0xffff, 0xffff, 0xffff, 0x007f, 0x7c5c, 0x00fc,
0x0000, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff, 0x003f, 0xfef8, 0x000c,
0x0000, 0xff00, 0xffff, 0xffff, 0xffff, 0xffff, 0x003f, 0x7ff8, 0x001c,
0x0000, 0xfe00, 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0xfe38, 0x000c,
0x0000, 0xfc00, 0xffff, 0xffff, 0xffff, 0xffff, 0x000f, 0x7e30, 0x001c,
0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0x0003, 0xee30, 0x000c,
0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0x0003, 0x5e70, 0x001c,
0x0000, 0xf800, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0e20, 0x000c,
0x0000, 0xf000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0c60, 0x000c,
0x0000, 0xe000, 0xffff, 0xffff, 0xffff, 0x3fff, 0x0000, 0x0800, 0x0000,
0x0000, 0xe000, 0xffff, 0xffff, 0xffff, 0x1fff, 0x0000, 0x0000, 0x0000,
0x0000, 0x8000, 0xffff, 0xffff, 0xffff, 0x0fff, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0x07ff, 0x0000, 0x0000, 0x0000,
0x0000, 0x3c00, 0xfffe, 0xffff, 0xffff, 0x03ff, 0x0000, 0x0000, 0x0000,
0xd000, 0x7e41, 0xfffc, 0xffff, 0xffff, 0x01ff, 0x0000, 0x0000, 0x0000,
0xf800, 0xeee3, 0xfff8, 0xffff, 0xffff, 0x003f, 0x0000, 0x0000, 0x0000,
0xff00, 0x6cfd, 0xfff0, 0xffff, 0xffff, 0x001f, 0x0000, 0x0000, 0x0000,
0x3f80, 0xecf8, 0xff80, 0xffff, 0xffff, 0x000f, 0x0000, 0x0000, 0x0000,
0x3f00, 0x7fdc, 0xff00, 0xffff, 0xffff, 0x0003, 0x0000, 0x0000, 0x0000,
0xbe00, 0x3ffb, 0xa000, 0xbfbb, 0x2bbf, 0x0000, 0x0000, 0x0000, 0x0000,
0xfe00, 0x1ffb, 0x0000, 0x1f00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0xfc00, 0x1fbb, 0x0000, 0x3e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x7c00, 0x1d39, 0x0000, 0x7c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x3800, 0x1838, 0x0000, 0xf800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x7000, 0x0018, 0x0000, 0xfc00, 0x0001, 0x07c0, 0x0000, 0x0000, 0x0000,
0x6000, 0x0000, 0x0000, 0xf800, 0x0003, 0x0e80, 0x0000, 0x0000, 0x0000,
0x7000, 0x0000, 0x0100, 0xfc00, 0x0007, 0x1d00, 0x0000, 0x0000, 0x0000,
0x6000, 0x0000, 0x0080, 0x7800, 0x000e, 0x3800, 0x0000, 0x0000, 0x0000,
0x4000, 0x0000, 0x00c0, 0xfc00, 0x001c, 0x7000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x00e0, 0xc800, 0x0038, 0xe000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x1060, 0xdc00, 0x0071, 0x4000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x3860, 0x8800, 0x00e0, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x1c60, 0x9c00, 0x01c1, 0x1c00, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0860, 0x8800, 0x0383, 0x3800, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x9c40, 0x1c01, 0x1f03, 0x7100, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x8e00, 0x1801, 0x1a03, 0x6300, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xcc00, 0x1c00, 0x3c07, 0x4700, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0xec00, 0x0800, 0x2002, 0xc600, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x7000, 0x1c00, 0x3007, 0xc600, 0x0001, 0x0000, 0x0000,
0x0000, 0x0000, 0x6000, 0x0c00, 0x3002, 0x8c00, 0x0201, 0x0000, 0x0000,
0x0000, 0x0000, 0x6000, 0x0c00, 0x3006, 0x9c00, 0x0701, 0x0000, 0x0000,
0x0000, 0x0000, 0xe000, 0x0e00, 0x2002, 0x1800, 0x0600, 0x0000, 0x0000,
0x0000, 0x0000, 0x4000, 0x0700, 0x3007, 0x3800, 0x0700, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0300, 0x3802, 0x3800, 0x0600, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0780, 0x1806, 0x1000, 0x0400, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0380, 0x0806, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x01c0, 0x1c06, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0180, 0x0806, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x05c0, 0x1c06, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0f80, 0x080e, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x1f00, 0x0406, 0x0000, 0x0000, 0x0000, 0x0000 };
uint16_t mirror(uint16_t source)
{
int result = ((source & 0x8000) >> 15) | ((source & 0x4000) >> 13) |
@ -350,9 +697,10 @@ void clearGraphics() {
void copyimage(uint16_t offsetx, uint16_t offsety) {
offsetx=offsetx/16;
int i=0;
for (uint16_t y = offsety; y < (128+offsety); y++) {
for (uint16_t x = offsetx; x < (8+offsetx); x++) {
draw_buffer_level[y*GRAPHICS_WIDTH+x] = draw_buffer_mask[y*GRAPHICS_WIDTH+x] = mirror(logo_bits[(y-offsety)*8+(x-offsetx)]);
for (uint16_t y = offsety; y < (level_height+offsety); y++) {
for (uint16_t x = offsetx; x < ((level_width/16)+offsetx); x++) {
draw_buffer_level[y*GRAPHICS_WIDTH+x] = mirror(level_bits[(y-offsety)*(level_width/16)+(x-offsetx)]);
draw_buffer_mask[y*GRAPHICS_WIDTH+x] = mirror(level_mask_bits[(y-offsety)*(level_width/16)+(x-offsetx)]);
i+=2;
}
}
@ -1395,6 +1743,86 @@ int fetch_font_info(char ch, int font, struct FontEntry *font_info, char *lookup
return 1;
}
/**
* write_char16: Draw a character on the current draw buffer.
* Currently supports outlined characters and characters with
* a width of up to 8 pixels.
*
* @param ch character to write
* @param x x coordinate (left)
* @param y y coordinate (top)
* @param flags flags to write with (see gfx.h)
* @param font font to use
*/
void write_char16(char ch, unsigned int x, unsigned int y, int font)
{
int yy, addr_temp, row, row_temp, xshift;
uint16_t and_mask, or_mask, level_bits;
struct FontEntry font_info;
char lookup = 0;
fetch_font_info(0, font, &font_info, NULL);
// Compute starting address (for x,y) of character.
int addr = CALC_BUFF_ADDR(x, y);
int wbit = CALC_BIT_IN_WORD(x);
// If font only supports lowercase or uppercase, make the letter
// lowercase or uppercase.
// How big is the character? We handle characters up to 8 pixels
// wide for now. Support for large characters may be added in future.
{
// Ensure we don't overflow.
if(x + wbit > DISP_WIDTH)
return;
// Load data pointer.
row = ch * font_info.height;
row_temp = row;
addr_temp = addr;
xshift = 16 - font_info.width;
// We can write mask words easily.
for(yy = y; yy < y + font_info.height; yy++)
{
if(font==3)
write_word_misaligned_OR(draw_buffer_mask, font_mask12x18[row] << xshift, addr, wbit);
else
write_word_misaligned_OR(draw_buffer_mask, font_mask8x10[row] << xshift, addr, wbit);
addr += DISP_WIDTH / 16;
row++;
}
// Level bits are more complicated. We need to set or clear
// level bits, but only where the mask bit is set; otherwise,
// we need to leave them alone. To do this, for each word, we
// construct an AND mask and an OR mask, and apply each individually.
row = row_temp;
addr = addr_temp;
for(yy = y; yy < y + font_info.height; yy++)
{
if(font==3)
{
level_bits = font_frame12x18[row];
//if(!(flags & FONT_INVERT)) // data is normally inverted
level_bits = ~level_bits;
or_mask = font_mask12x18[row] << xshift;
and_mask = (font_mask12x18[row] & level_bits) << xshift;
} else {
level_bits = font_frame8x10[row];
//if(!(flags & FONT_INVERT)) // data is normally inverted
level_bits = ~level_bits;
or_mask = font_mask8x10[row] << xshift;
and_mask = (font_mask8x10[row] & level_bits) << xshift;
}
write_word_misaligned_OR(draw_buffer_level, or_mask, addr, wbit);
// If we're not bold write the AND mask.
//if(!(flags & FONT_BOLD))
write_word_misaligned_NAND(draw_buffer_level, and_mask, addr, wbit);
addr += DISP_WIDTH / 16;
row++;
}
}
}
/**
* write_char: Draw a character on the current draw buffer.
* Currently supports outlined characters and characters with
@ -1418,10 +1846,10 @@ void write_char(char ch, unsigned int x, unsigned int y, int flags, int font)
int wbit = CALC_BIT_IN_WORD(x);
// If font only supports lowercase or uppercase, make the letter
// lowercase or uppercase.
/*if(font_info.flags & FONT_LOWERCASE_ONLY)
if(font_info.flags & FONT_LOWERCASE_ONLY)
ch = tolower(ch);
if(font_info.flags & FONT_UPPERCASE_ONLY)
ch = toupper(ch);*/
ch = toupper(ch);
fetch_font_info(ch, font, &font_info, &lookup);
// How big is the character? We handle characters up to 8 pixels
// wide for now. Support for large characters may be added in future.
@ -1543,7 +1971,12 @@ void write_string(char *str, unsigned int x, unsigned int y, unsigned int xs, un
else
{
if(xx >= 0 && xx < DISP_WIDTH)
{
if(font_info.id<2)
write_char(*str, xx, yy, flags, font);
else
write_char16(*str, xx, yy, font);
}
xx += font_info.width + xs;
}
str++;
@ -1833,6 +2266,14 @@ void drawBattery(uint16_t x, uint16_t y, uint8_t battery, uint16_t size)
}
}
void printTime(uint16_t x, uint16_t y) {
char temp[9]={0};
sprintf(temp,"%02d:%02d:%02d",time.hour,time.min,time.sec);
//printTextFB(x,y,temp);
write_string(temp, x, y, 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 3);
}
void setAttitudeOsd(int16_t pitch, int16_t roll, int16_t yaw)
{
m_pitch=pitch;
@ -1851,12 +2292,12 @@ void setGpsOsd(uint8_t status, int32_t lat, int32_t lon, float alt, float spd)
void introText(){
//printTextFB((GRAPHICS_WIDTH_REAL/2 - 40)/16,GRAPHICS_HEIGHT_REAL-10,"ver 0.1");
write_string("ver 0.2", (GRAPHICS_WIDTH_REAL/2),GRAPHICS_HEIGHT_REAL-18, 1, 0, TEXT_VA_TOP, TEXT_HA_CENTER, 0, 0);
write_string("ver 0.2", (GRAPHICS_WIDTH_REAL/2),GRAPHICS_HEIGHT_REAL-20, 0, 0, TEXT_VA_TOP, TEXT_HA_CENTER, 0, 3);
}
void introGraphics() {
/* logo */
copyimage(GRAPHICS_WIDTH_REAL/2-128/2, GRAPHICS_HEIGHT_REAL/2-128/2);
copyimage(GRAPHICS_WIDTH_REAL/2-level_width/2, GRAPHICS_HEIGHT_REAL/2-level_height/2);
/* frame */
drawBox(0,0,GRAPHICS_WIDTH_REAL-2,GRAPHICS_HEIGHT_REAL-1);
@ -2115,7 +2556,7 @@ void hud_draw_linear_compass(int v, int range, int width, int x, int y, int mint
// Then, draw a rectangle with the present heading in it.
// We want to cover up any other markers on the bottom.
// First compute font size.
fetch_font_info(0, 0, &font_info, NULL);
fetch_font_info(0, 3, &font_info, NULL);
int text_width = (font_info.width + 1) * 3;
int rect_width = text_width + 2;
write_filled_rectangle_lm(x - (rect_width / 2), majtick_start + 2, rect_width, font_info.height + 2, 0, 1);
@ -2124,7 +2565,7 @@ void hud_draw_linear_compass(int v, int range, int width, int x, int y, int mint
headingstr[1] = '0' + ((v / 10) % 10);
headingstr[2] = '0' + (v % 10);
headingstr[3] = 0;
write_string(headingstr, x + 1, majtick_start + textoffset+2, 1, 0, TEXT_VA_MIDDLE, TEXT_HA_CENTER, 1, 0);
write_string(headingstr, x + 1, majtick_start + textoffset+2, 0, 0, TEXT_VA_MIDDLE, TEXT_HA_CENTER, 1, 3);
}
@ -2191,19 +2632,40 @@ void calcHomeArrow(void)
//! TODO: sanity check
char temp[50]={0};
memset(temp, ' ', 40);
sprintf(temp,"hea:%d",(int)brng);
write_string(temp, 130, 10, 1, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 0);
write_string(temp, 130, 10, 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2);
sprintf(temp,"ele:%d",(int)elevation);
write_string(temp, 130, 10+14, 1, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 0);
write_string(temp, 130, 10+10, 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2);
sprintf(temp,"dis:%d",(int)d);
write_string(temp, 130, 10+14+14, 1, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 0);
write_string(temp, 130, 10+10+10, 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2);
sprintf(temp,"u2g:%d",(int)u2g);
write_string(temp, 130, 10+14+14+14, 1, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 0);
write_string(temp, 130, 10+10+10+10, 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2);
sprintf(temp,"%c%c",(int)(u2g/22.5f)*2+0x90,(int)(u2g/22.5f)*2+0x91);
printText16(200, 10+14+14,temp);
write_string(temp,200,10+10+10, 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 3);
}
int lama=10;
int lama_loc[2][30];
void lamas(void)
{
char temp[10]={0};
lama++;
if(lama%10==0)
{
for(int z=0; z<30;z++)
{
lama_loc[0][z]=rand()%(GRAPHICS_WIDTH_REAL-10);
lama_loc[1][z]=rand()%(GRAPHICS_HEIGHT_REAL-10);
}
}
for(int z=0; z<30;z++)
{
sprintf(temp,"%c",0xe8+(lama_loc[0][z]%2));
write_string(temp,lama_loc[0][z],lama_loc[1][z], 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2);
}
}
//main draw function
@ -2211,6 +2673,9 @@ void updateGraphics() {
OsdSettingsData OsdSettings;
OsdSettingsGet (&OsdSettings);
AttitudeActualData attitude;
AttitudeActualGet(&attitude);
/*drawBox(2,2,GRAPHICS_WIDTH_REAL-4,GRAPHICS_HEIGHT_REAL-4);
write_filled_rectangle(draw_buffer_mask,0,0,GRAPHICS_WIDTH_REAL-2,GRAPHICS_HEIGHT_REAL-2,0);
write_filled_rectangle(draw_buffer_mask,2,2,GRAPHICS_WIDTH_REAL-4-2,GRAPHICS_HEIGHT_REAL-4-2,2);
@ -2239,7 +2704,7 @@ void updateGraphics() {
/* Draw Attitude Indicator */
if(OsdSettings.Attitude == OSDSETTINGS_ATTITUDE_ENABLED)
{
drawAttitude(OsdSettings.AttitudeSetup[OSDSETTINGS_ATTITUDESETUP_X],OsdSettings.AttitudeSetup[OSDSETTINGS_ATTITUDESETUP_Y],m_pitch,m_roll,96);
drawAttitude(OsdSettings.AttitudeSetup[OSDSETTINGS_ATTITUDESETUP_X],OsdSettings.AttitudeSetup[OSDSETTINGS_ATTITUDESETUP_Y],attitude.Pitch,attitude.Roll,96);
}
//write_string("Hello OP-OSD", 60, 12, 1, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 0);
//printText16( 60, 12,"Hello OP-OSD");
@ -2247,11 +2712,11 @@ void updateGraphics() {
char temp[50]={0};
memset(temp, ' ', 40);
sprintf(temp,"Lat:%d",(int)m_gpsLat);
write_string(temp, 5, 10, 1, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 0);
write_string(temp, 5, 10, 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2);
sprintf(temp,"Lon:%d",(int)m_gpsLon);
write_string(temp, 5, 10+14, 1, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 0);
write_string(temp, 5, 10+14, 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2);
sprintf(temp,"Fix:%d",(int)m_gpsStatus);
write_string(temp, 5, 10+14+14, 1, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 0);
write_string(temp, 5, 10+14+14, 0, 0, TEXT_VA_TOP, TEXT_HA_LEFT, 0, 2);
/* Print RTC time */
@ -2262,16 +2727,27 @@ void updateGraphics() {
/* Print Number of detected video Lines */
sprintf(temp,"Lines:%4d",PIOS_Video_GetOSDLines());
write_string(temp, (GRAPHICS_WIDTH_REAL - 2),10, 1, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 0);
write_string(temp, (GRAPHICS_WIDTH_REAL - 2),10, 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2);
/* Print ADC voltage */
sprintf(temp,"Rssi:%4dV",(int)(PIOS_ADC_PinGet(4)*3000/4096));
write_string(temp, (GRAPHICS_WIDTH_REAL - 2),24, 1, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 0);
sprintf(temp,"Rssi:%4dV",(int)(PIOS_ADC_PinGet(5)*300*61/4096));
write_string(temp, (GRAPHICS_WIDTH_REAL - 2),20, 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2);
/* Print CPU temperature */
sprintf(temp,"Temp:%4dC",(int)(PIOS_ADC_PinGet(5)*0.29296875f-279));
write_string(temp, (GRAPHICS_WIDTH_REAL - 2),38, 1, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 0);
sprintf(temp,"Temp:%4dC",(int)(PIOS_ADC_PinGet(6)*0.29296875f-279));
write_string(temp, (GRAPHICS_WIDTH_REAL - 2),30, 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2);
/* Print ADC voltage FLIGHT*/
sprintf(temp,"FltV:%4dV",(int)(PIOS_ADC_PinGet(2)*300*61/4096));
write_string(temp, (GRAPHICS_WIDTH_REAL - 2),40, 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2);
/* Print ADC voltage VIDEO*/
sprintf(temp,"VidV:%4dV",(int)(PIOS_ADC_PinGet(3)*300*61/4096));
write_string(temp, (GRAPHICS_WIDTH_REAL - 2),50, 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2);
/* Print ADC voltage RSSI */
sprintf(temp,"Rssi:%4dV",(int)(PIOS_ADC_PinGet(4)*300*61/4096));
write_string(temp, (GRAPHICS_WIDTH_REAL - 2),60, 0, 0, TEXT_VA_TOP, TEXT_HA_RIGHT, 0, 2);
/* Draw Battery Gauge */
m_batt++;
@ -2323,7 +2799,7 @@ void updateGraphics() {
}
//write_filled_rectangle(draw_buffer_level,20,20,30,30,1);
//write_filled_rectangle(draw_buffer_mask,30,30,30,30,1);
lamas();
/* Make sure every line last bit is 0 */
write_vline( draw_buffer_level,GRAPHICS_WIDTH_REAL-1,0,GRAPHICS_HEIGHT_REAL-1,0);
write_vline( draw_buffer_mask,GRAPHICS_WIDTH_REAL-1,0,GRAPHICS_HEIGHT_REAL-1,0);

View File

@ -49,7 +49,7 @@ endif
FLASH_TOOL = OPENOCD
# List of modules to include
MODULES = Osd/osdgen Osd/osdinput GPS Telemetry FirmwareIAP
MODULES = Osd/osdgen Osd/osdinput GPS Telemetry #FirmwareIAP
# Paths

View File

@ -29,6 +29,7 @@ struct FontEntry fonts[NUM_FONTS + 1] = {
&font_lookup_outlined8x8,
&font_data_outlined8x8,
FONT_UPPERCASE_ONLY },
{ 2, 8, 8, "Tiny5x5", 0, 0, 0 }, // not yet implemented
{ 2, 8, 10, "font8x10", 0, 0, 0 },
{ 3, 12, 18, "font12x18", 0, 0, 0 },
{ -1 } // ends font table
};

View File

@ -26,7 +26,7 @@
#include "font_outlined8x8.h"
// This number must also be incremented for each new font.
#define NUM_FONTS 3
#define NUM_FONTS 4
// Flags for fonts.
#define FONT_LOWERCASE_ONLY 1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5649 @@
/*
* font8x10.h
*
* Created on: 3.1.2012
* Author: Samba
*/
#ifndef FONT8X10_H_
#define FONT8X10_H_
static const uint8_t font_frame8x10[] = {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x60,
0x10,
0x20,
0x4C,
0x7A,
0x0A,
0x0C,
0x00,
0x00,
0x00,
0x60,
0x20,
0x60,
0x2C,
0x6A,
0x0A,
0x0C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x10,
0x10,
0x10,
0x10,
0x10,
0x00,
0x10,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x28,
0x28,
0x7C,
0x28,
0x7C,
0x28,
0x28,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x7C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x30,
0x30,
0x00,
0x00,
0x00,
0x00,
0x04,
0x08,
0x10,
0x20,
0x40,
0x00,
0x00,
0x00,
0x00,
0x38,
0x44,
0x4C,
0x54,
0x64,
0x44,
0x38,
0x00,
0x00,
0x00,
0x10,
0x30,
0x10,
0x10,
0x10,
0x10,
0x38,
0x00,
0x00,
0x00,
0x38,
0x44,
0x04,
0x08,
0x10,
0x20,
0x7C,
0x00,
0x00,
0x00,
0x7C,
0x08,
0x10,
0x08,
0x04,
0x44,
0x38,
0x00,
0x00,
0x00,
0x08,
0x18,
0x28,
0x48,
0x7C,
0x08,
0x08,
0x00,
0x00,
0x00,
0x7C,
0x40,
0x78,
0x04,
0x04,
0x44,
0x38,
0x00,
0x00,
0x00,
0x18,
0x20,
0x40,
0x78,
0x44,
0x44,
0x38,
0x00,
0x00,
0x00,
0x7C,
0x04,
0x08,
0x10,
0x20,
0x20,
0x20,
0x00,
0x00,
0x00,
0x38,
0x44,
0x44,
0x38,
0x44,
0x44,
0x38,
0x00,
0x00,
0x00,
0x38,
0x44,
0x44,
0x3C,
0x04,
0x08,
0x30,
0x00,
0x00,
0x00,
0x00,
0x00,
0x30,
0x30,
0x00,
0x30,
0x30,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x7C,
0x00,
0x7C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x38,
0x44,
0x04,
0x34,
0x54,
0x54,
0x38,
0x00,
0x00,
0x00,
0x38,
0x44,
0x44,
0x44,
0x7C,
0x44,
0x44,
0x00,
0x00,
0x00,
0x78,
0x44,
0x44,
0x78,
0x44,
0x44,
0x78,
0x00,
0x00,
0x00,
0x38,
0x44,
0x40,
0x40,
0x40,
0x44,
0x38,
0x00,
0x00,
0x00,
0x70,
0x48,
0x44,
0x44,
0x44,
0x48,
0x70,
0x00,
0x00,
0x00,
0x7C,
0x40,
0x40,
0x78,
0x40,
0x40,
0x7C,
0x00,
0x00,
0x00,
0x7C,
0x40,
0x40,
0x78,
0x40,
0x40,
0x40,
0x00,
0x00,
0x00,
0x38,
0x44,
0x40,
0x58,
0x44,
0x44,
0x3C,
0x00,
0x00,
0x00,
0x44,
0x44,
0x44,
0x7C,
0x44,
0x44,
0x44,
0x00,
0x00,
0x00,
0x38,
0x10,
0x10,
0x10,
0x10,
0x10,
0x38,
0x00,
0x00,
0x00,
0x1C,
0x08,
0x08,
0x08,
0x08,
0x48,
0x30,
0x00,
0x00,
0x00,
0x44,
0x48,
0x50,
0x60,
0x50,
0x48,
0x44,
0x00,
0x00,
0x00,
0x40,
0x40,
0x40,
0x40,
0x40,
0x40,
0x7C,
0x00,
0x00,
0x00,
0x44,
0x6C,
0x54,
0x54,
0x44,
0x44,
0x44,
0x00,
0x00,
0x00,
0x44,
0x44,
0x64,
0x54,
0x4C,
0x44,
0x44,
0x00,
0x00,
0x00,
0x38,
0x44,
0x44,
0x44,
0x44,
0x44,
0x38,
0x00,
0x00,
0x00,
0x78,
0x44,
0x44,
0x78,
0x40,
0x40,
0x40,
0x00,
0x00,
0x00,
0x38,
0x44,
0x44,
0x44,
0x54,
0x48,
0x34,
0x00,
0x00,
0x00,
0x78,
0x44,
0x44,
0x78,
0x50,
0x48,
0x44,
0x00,
0x00,
0x00,
0x38,
0x44,
0x40,
0x38,
0x04,
0x44,
0x38,
0x00,
0x00,
0x00,
0x7C,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x00,
0x00,
0x00,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
0x38,
0x00,
0x00,
0x00,
0x44,
0x44,
0x44,
0x44,
0x44,
0x28,
0x10,
0x00,
0x00,
0x00,
0x44,
0x44,
0x44,
0x54,
0x54,
0x54,
0x28,
0x00,
0x00,
0x00,
0x44,
0x44,
0x28,
0x10,
0x28,
0x44,
0x44,
0x00,
0x00,
0x00,
0x44,
0x44,
0x44,
0x28,
0x10,
0x10,
0x10,
0x00,
0x00,
0x00,
0x7C,
0x04,
0x08,
0x10,
0x20,
0x40,
0x7C,
0x00,
0x00,
0x00,
0x38,
0x20,
0x20,
0x20,
0x20,
0x20,
0x38,
0x00,
0x00,
0x00,
0x00,
0x40,
0x20,
0x10,
0x08,
0x04,
0x00,
0x00,
0x00,
0x00,
0x38,
0x08,
0x08,
0x08,
0x08,
0x08,
0x38,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x38,
0x04,
0x3C,
0x44,
0x3C,
0x00,
0x00,
0x00,
0x40,
0x40,
0x40,
0x78,
0x44,
0x44,
0x78,
0x00,
0x00,
0x00,
0x00,
0x00,
0x3C,
0x40,
0x40,
0x40,
0x3C,
0x00,
0x00,
0x00,
0x04,
0x04,
0x04,
0x3C,
0x44,
0x44,
0x3C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x38,
0x44,
0x7C,
0x40,
0x3C,
0x00,
0x00,
0x00,
0x08,
0x14,
0x10,
0x7C,
0x10,
0x10,
0x10,
0x00,
0x00,
0x00,
0x00,
0x00,
0x3C,
0x44,
0x3C,
0x04,
0x78,
0x00,
0x00,
0x00,
0x40,
0x40,
0x40,
0x78,
0x44,
0x44,
0x44,
0x00,
0x00,
0x00,
0x00,
0x10,
0x00,
0x10,
0x10,
0x10,
0x10,
0x00,
0x00,
0x00,
0x08,
0x00,
0x08,
0x08,
0x08,
0x48,
0x30,
0x00,
0x00,
0x00,
0x20,
0x20,
0x24,
0x28,
0x30,
0x28,
0x24,
0x00,
0x00,
0x00,
0x30,
0x10,
0x10,
0x10,
0x10,
0x10,
0x38,
0x00,
0x00,
0x00,
0x00,
0x00,
0x68,
0x54,
0x54,
0x44,
0x44,
0x00,
0x00,
0x00,
0x00,
0x00,
0x58,
0x64,
0x44,
0x44,
0x44,
0x00,
0x00,
0x00,
0x00,
0x00,
0x38,
0x44,
0x44,
0x44,
0x38,
0x00,
0x00,
0x00,
0x00,
0x00,
0x78,
0x44,
0x78,
0x40,
0x40,
0x00,
0x00,
0x00,
0x00,
0x00,
0x3C,
0x44,
0x3C,
0x04,
0x04,
0x00,
0x00,
0x00,
0x00,
0x00,
0x58,
0x64,
0x40,
0x40,
0x40,
0x00,
0x00,
0x00,
0x00,
0x00,
0x3C,
0x40,
0x38,
0x04,
0x78,
0x00,
0x00,
0x00,
0x10,
0x10,
0x7C,
0x10,
0x10,
0x14,
0x08,
0x00,
0x00,
0x00,
0x00,
0x00,
0x44,
0x44,
0x44,
0x44,
0x38,
0x00,
0x00,
0x00,
0x00,
0x00,
0x44,
0x44,
0x44,
0x28,
0x10,
0x00,
0x00,
0x00,
0x00,
0x00,
0x44,
0x44,
0x54,
0x54,
0x28,
0x00,
0x00,
0x00,
0x00,
0x00,
0x44,
0x28,
0x10,
0x28,
0x44,
0x00,
0x00,
0x00,
0x00,
0x00,
0x44,
0x28,
0x10,
0x10,
0x20,
0x00,
0x00,
0x00,
0x00,
0x00,
0x7C,
0x08,
0x10,
0x20,
0x7C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x10,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x38,
0x54,
0x54,
0x54,
0x44,
0x54,
0x44,
0x7C,
0x00,
0x00,
0x38,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
0x7C,
0x00,
0x00,
0x38,
0x44,
0x44,
0x44,
0x44,
0x7C,
0x7C,
0x7C,
0x00,
0x00,
0x38,
0x44,
0x44,
0x7C,
0x7C,
0x7C,
0x7C,
0x7C,
0x00,
0x00,
0x38,
0x44,
0x7C,
0x7C,
0x7C,
0x7C,
0x7C,
0x7C,
0x00,
0x00,
0x38,
0x7C,
0x7C,
0x7C,
0x7C,
0x7C,
0x7C,
0x7C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0xFF,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x18,
0x18,
0xFF,
0x18,
0x18,
0x00,
0x00,
0x00,
0x42,
0x42,
0x62,
0x52,
0xCB,
0x46,
0x42,
0x42,
0x00,
0x00,
0x3C,
0x42,
0x40,
0x30,
0xCF,
0x02,
0x42,
0x3C,
0x00,
0x00,
0x3E,
0x20,
0x20,
0x38,
0xA3,
0x20,
0x20,
0x3E,
0x00,
0x00,
0x42,
0x42,
0x42,
0x42,
0xDB,
0x5A,
0x5A,
0x24,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x81,
0x42,
0x24,
0x18,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x18,
0x7E,
0x5E,
0x9F,
0x8F,
0x4E,
0x6E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0x9F,
0x8F,
0x46,
0x66,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0x8F,
0x42,
0x66,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xF1,
0x42,
0x66,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xF9,
0xF1,
0x62,
0x66,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7A,
0xF9,
0xF1,
0x72,
0x76,
0x18,
0x00,
0x00,
0x18,
0x76,
0x72,
0xF1,
0xF9,
0x7A,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x66,
0x62,
0xF1,
0xF9,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x66,
0x42,
0xF1,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x66,
0x42,
0x8F,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x66,
0x46,
0x8F,
0x9F,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x6E,
0x4E,
0x8F,
0x9F,
0x5E,
0x7E,
0x18,
0x00,
0x00,
0x07,
0x06,
0x04,
0x44,
0x3C,
0x3C,
0x24,
0x24,
0x00,
0x00,
0xE0,
0x60,
0x20,
0x22,
0x3C,
0x3C,
0x24,
0x24,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
};
static const uint8_t font_mask8x10[] = {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0xF0,
0xF8,
0xFC,
0xFE,
0xFF,
0xFF,
0x7F,
0x3F,
0x1F,
0x00,
0xF0,
0xF8,
0xFC,
0xFE,
0xFF,
0xFF,
0xFF,
0x3F,
0x1F,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x10,
0x38,
0x38,
0x38,
0x38,
0x38,
0x10,
0x38,
0x10,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x28,
0x7C,
0x7C,
0xFE,
0x7C,
0xFE,
0x7C,
0x7C,
0x28,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x7C,
0xFE,
0x7C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x30,
0x78,
0x78,
0x30,
0x00,
0x00,
0x04,
0x0E,
0x1C,
0x38,
0x70,
0xE0,
0x40,
0x00,
0x00,
0x38,
0x7C,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0x7C,
0x38,
0x00,
0x10,
0x38,
0x78,
0x38,
0x38,
0x38,
0x38,
0x7C,
0x38,
0x00,
0x38,
0x7C,
0xFE,
0x4E,
0x1C,
0x38,
0x7C,
0xFE,
0x7C,
0x00,
0x7C,
0xFE,
0x7C,
0x38,
0x1C,
0x4E,
0xFE,
0x7C,
0x38,
0x00,
0x08,
0x1C,
0x3C,
0x7C,
0xFC,
0xFE,
0x7C,
0x1C,
0x08,
0x00,
0x7C,
0xFE,
0xFC,
0xFC,
0x7E,
0x4E,
0xFE,
0x7C,
0x38,
0x00,
0x18,
0x3C,
0x78,
0xF8,
0xFC,
0xFE,
0xFE,
0x7C,
0x38,
0x00,
0x7C,
0xFE,
0x7E,
0x1C,
0x38,
0x70,
0x70,
0x70,
0x20,
0x00,
0x38,
0x7C,
0xFE,
0xFE,
0x7C,
0xFE,
0xFE,
0x7C,
0x38,
0x00,
0x38,
0x7C,
0xFE,
0xFE,
0x7E,
0x3E,
0x3C,
0x78,
0x30,
0x00,
0x00,
0x00,
0x30,
0x78,
0x78,
0x30,
0x78,
0x78,
0x30,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x7C,
0xFE,
0x7C,
0xFE,
0x7C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x38,
0x7C,
0xFE,
0x7E,
0x7E,
0xFE,
0xFE,
0x7C,
0x38,
0x00,
0x38,
0x7C,
0xFE,
0xEE,
0xFE,
0xFE,
0xFE,
0xEE,
0x44,
0x00,
0x78,
0xFC,
0xFE,
0xFE,
0xFC,
0xFE,
0xFE,
0xFC,
0x78,
0x00,
0x38,
0x7C,
0xFE,
0xE4,
0xE0,
0xE4,
0xFE,
0x7C,
0x38,
0x00,
0x70,
0xF8,
0xFC,
0xEE,
0xEE,
0xEE,
0xFC,
0xF8,
0x70,
0x00,
0x7C,
0xFE,
0xFC,
0xF8,
0xFC,
0xF8,
0xFC,
0xFE,
0x7C,
0x00,
0x7C,
0xFE,
0xFC,
0xF8,
0xFC,
0xF8,
0xE0,
0xE0,
0x40,
0x00,
0x38,
0x7C,
0xFE,
0xFC,
0xFC,
0xFE,
0xFE,
0x7E,
0x3C,
0x00,
0x44,
0xEE,
0xEE,
0xFE,
0xFE,
0xFE,
0xEE,
0xEE,
0x44,
0x00,
0x38,
0x7C,
0x38,
0x38,
0x38,
0x38,
0x38,
0x7C,
0x38,
0x00,
0x1C,
0x3E,
0x1C,
0x1C,
0x1C,
0x5C,
0xFC,
0x78,
0x30,
0x00,
0x44,
0xEE,
0xFC,
0xF8,
0xF0,
0xF8,
0xFC,
0xEE,
0x44,
0x00,
0x40,
0xE0,
0xE0,
0xE0,
0xE0,
0xE0,
0xFC,
0xFE,
0x7C,
0x00,
0x44,
0xEE,
0xFE,
0xFE,
0xFE,
0xFE,
0xEE,
0xEE,
0x44,
0x00,
0x44,
0xEE,
0xEE,
0xFE,
0xFE,
0xFE,
0xEE,
0xEE,
0x44,
0x00,
0x38,
0x7C,
0xFE,
0xEE,
0xEE,
0xEE,
0xFE,
0x7C,
0x38,
0x00,
0x78,
0xFC,
0xFE,
0xFE,
0xFC,
0xF8,
0xE0,
0xE0,
0x40,
0x00,
0x38,
0x7C,
0xFE,
0xEE,
0xEE,
0xFE,
0xFC,
0x7E,
0x34,
0x00,
0x78,
0xFC,
0xFE,
0xFE,
0xFC,
0xF8,
0xFC,
0xEE,
0x44,
0x00,
0x38,
0x7C,
0xFE,
0xFC,
0x7C,
0x7E,
0xFE,
0x7C,
0x38,
0x00,
0x7C,
0xFE,
0x7C,
0x38,
0x38,
0x38,
0x38,
0x38,
0x10,
0x00,
0x44,
0xEE,
0xEE,
0xEE,
0xEE,
0xEE,
0xFE,
0x7C,
0x38,
0x00,
0x44,
0xEE,
0xEE,
0xEE,
0xEE,
0xEE,
0x7C,
0x38,
0x10,
0x00,
0x44,
0xEE,
0xEE,
0xFE,
0xFE,
0xFE,
0xFE,
0x7C,
0x28,
0x00,
0x44,
0xEE,
0xEE,
0x7C,
0x38,
0x7C,
0xEE,
0xEE,
0x44,
0x00,
0x44,
0xEE,
0xEE,
0xEE,
0x7C,
0x38,
0x38,
0x38,
0x10,
0x00,
0x7C,
0xFE,
0x7E,
0x1C,
0x38,
0x70,
0xFC,
0xFE,
0x7C,
0x00,
0x38,
0x7C,
0x78,
0x70,
0x70,
0x70,
0x78,
0x7C,
0x38,
0x00,
0x00,
0x40,
0xE0,
0x70,
0x38,
0x1C,
0x0E,
0x04,
0x00,
0x00,
0x38,
0x7C,
0x3C,
0x1C,
0x1C,
0x1C,
0x3C,
0x7C,
0x38,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x38,
0x7C,
0x3E,
0x7E,
0xFE,
0x7E,
0x3C,
0x00,
0x40,
0xE0,
0xE0,
0xF8,
0xFC,
0xFE,
0xFE,
0xFC,
0x78,
0x00,
0x00,
0x00,
0x3C,
0x7E,
0xFC,
0xE0,
0xFC,
0x7E,
0x3C,
0x00,
0x04,
0x0E,
0x0E,
0x3E,
0x7E,
0xFE,
0xFE,
0x7E,
0x3C,
0x00,
0x00,
0x00,
0x38,
0x7C,
0xFE,
0xFE,
0xFC,
0x7E,
0x3C,
0x00,
0x08,
0x1C,
0x3E,
0x7C,
0xFE,
0x7C,
0x38,
0x38,
0x10,
0x00,
0x00,
0x00,
0x3C,
0x7E,
0xFE,
0x7E,
0x7E,
0xFC,
0x78,
0x00,
0x40,
0xE0,
0xE0,
0xF8,
0xFC,
0xFE,
0xEE,
0xEE,
0x44,
0x00,
0x00,
0x10,
0x38,
0x10,
0x38,
0x38,
0x38,
0x38,
0x10,
0x00,
0x08,
0x1C,
0x08,
0x1C,
0x1C,
0x5C,
0xFC,
0x78,
0x30,
0x00,
0x20,
0x70,
0x74,
0x7E,
0x7C,
0x78,
0x7C,
0x7E,
0x24,
0x00,
0x30,
0x78,
0x38,
0x38,
0x38,
0x38,
0x38,
0x7C,
0x38,
0x00,
0x00,
0x00,
0x68,
0xFC,
0xFE,
0xFE,
0xFE,
0xEE,
0x6C,
0x00,
0x00,
0x00,
0x58,
0xFC,
0xFE,
0xEE,
0xEE,
0xEE,
0x44,
0x00,
0x00,
0x00,
0x38,
0x7C,
0xFE,
0xEE,
0xFE,
0x7C,
0x38,
0x00,
0x00,
0x00,
0x78,
0xFC,
0xFE,
0xFC,
0xF8,
0xE0,
0x40,
0x00,
0x00,
0x00,
0x3C,
0x7E,
0xFE,
0x7E,
0x3E,
0x0E,
0x04,
0x00,
0x00,
0x00,
0x58,
0xFC,
0xFE,
0xE4,
0xE0,
0xE0,
0x40,
0x00,
0x00,
0x00,
0x3C,
0x7E,
0xFC,
0x7C,
0x7E,
0xFC,
0x78,
0x00,
0x10,
0x38,
0x7C,
0xFE,
0x7C,
0x3C,
0x3E,
0x1C,
0x08,
0x00,
0x00,
0x00,
0x44,
0xEE,
0xEE,
0xEE,
0xFE,
0x7C,
0x38,
0x00,
0x00,
0x00,
0x44,
0xEE,
0xEE,
0xEE,
0x7C,
0x38,
0x10,
0x00,
0x00,
0x00,
0x44,
0xEE,
0xFE,
0xFE,
0xFE,
0x7C,
0x28,
0x00,
0x00,
0x00,
0x44,
0xEE,
0x7C,
0x38,
0x7C,
0xEE,
0x44,
0x00,
0x00,
0x00,
0x44,
0xEE,
0x7C,
0x38,
0x38,
0x70,
0x20,
0x00,
0x00,
0x00,
0x7C,
0xFE,
0x7C,
0x38,
0x7C,
0xFE,
0x7C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x10,
0x38,
0x38,
0x38,
0x38,
0x38,
0x38,
0x38,
0x10,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x38,
0x7C,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0x7C,
0x38,
0x7C,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0x7C,
0x38,
0x7C,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0x7C,
0x38,
0x7C,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0x7C,
0x38,
0x7C,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0x7C,
0x38,
0x7C,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0xFE,
0x7C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0xFF,
0xFF,
0xFF,
0x00,
0x00,
0x00,
0x00,
0x00,
0x18,
0x3C,
0xFF,
0xFF,
0xFF,
0x3C,
0x18,
0x00,
0x42,
0xE7,
0xE7,
0xF7,
0xFF,
0xFF,
0xEF,
0xE7,
0xE7,
0x42,
0x3C,
0x7E,
0xFF,
0xF2,
0xFD,
0xFF,
0xCF,
0xFF,
0x7E,
0x3C,
0x3E,
0x7F,
0x7E,
0x78,
0xFF,
0xFF,
0xF3,
0x7E,
0x7F,
0x3E,
0x42,
0xE7,
0xE7,
0xE7,
0xFF,
0xFF,
0xFF,
0xFF,
0x7E,
0x24,
0x00,
0x00,
0x00,
0x00,
0xFF,
0x00,
0xFF,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x81,
0xC3,
0xE7,
0x7E,
0x3C,
0x18,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x00,
0x18,
0x7E,
0x7E,
0xFF,
0xFF,
0x7E,
0x7E,
0x18,
0x00,
0x07,
0x0F,
0x0F,
0x4E,
0xFE,
0x7E,
0x7E,
0x7E,
0x7E,
0x24,
0xE0,
0xF0,
0xF0,
0x72,
0x7F,
0x7E,
0x7E,
0x7E,
0x7E,
0x24,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
};
#endif /* FONT8X10_H_ */

View File

@ -101,7 +101,7 @@ void PIOS_Hsync_ISR() {
//PIOS_LED_On(LED2);
if(gLineType == LINE_TYPE_GRAPHICS)
{
for(int g=0;g<110;g++)
for(int g=0;g<95;g++)
{
asm("nop");
}

View File

@ -1,7 +1,7 @@
MEMORY
{
BD_INFO (r) : ORIGIN = 0x08008000 - 0x80, LENGTH = 0x000080
FLASH (rx) : ORIGIN = 0x08008000, LENGTH = 0x100000 - 0x008000
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 0x100000 - 0x008000
SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x020000
CCSRAM (rw) : ORIGIN = 0x10000000, LENGTH = 0x010000
}

View File

@ -264,9 +264,9 @@ static const struct pios_usb_cfg pios_usb_main_cfg = {
},
},
.vsense = {
.gpio = GPIOD,
.gpio = GPIOA,
.init = {
.GPIO_Pin = GPIO_Pin_11,
.GPIO_Pin = GPIO_Pin_15,
.GPIO_Speed = GPIO_Speed_25MHz,
.GPIO_Mode = GPIO_Mode_IN,
.GPIO_OType = GPIO_OType_OD,

View File

@ -13,8 +13,8 @@ MODEL_SUFFIX :=
OPENOCD_CONFIG := stm32f4xx.cfg
# Note: These must match the values in link_$(BOARD)_memory.ld
#BL_BANK_BASE := 0x08000000 # Start of bootloader flash
#BL_BANK_SIZE := 0x00008000 # Should include BD_INFO region
BL_BANK_BASE := 0x08000000 # Start of bootloader flash
BL_BANK_SIZE := 0x00008000 # Should include BD_INFO region
FW_BANK_BASE := 0x08000000 # Start of firmware flash
FW_BANK_SIZE := 0x000F8000 # Should include FW_DESC_SIZE