diff --git a/libraries/DigitalIO/DigitalIO.h b/libraries/DigitalIO/DigitalIO.h new file mode 100644 index 0000000..8f47bf1 --- /dev/null +++ b/libraries/DigitalIO/DigitalIO.h @@ -0,0 +1,36 @@ +/* Arduino DigitalIO Library + * Copyright (C) 2013 by William Greiman + * + * This file is part of the Arduino DigitalIO Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino DigitalIO Library. If not, see + * . + */ +/** + * @file + * @brief Fast Digital I/O functions + * + */ +#ifndef DigitalIO_h +#define DigitalIO_h 1 +//------------------------------------------------------------------------------ +/** DigitalPin version YYYYMMDD */ +#define DIGITAL_IO_VERSION 20140217 +//------------------------------------------------------------------------------ +#include +#include +#include +#include +#include +#endif // DigitalIO_h \ No newline at end of file diff --git a/libraries/DigitalIO/DigitalPin.h b/libraries/DigitalIO/DigitalPin.h new file mode 100644 index 0000000..2c41f38 --- /dev/null +++ b/libraries/DigitalIO/DigitalPin.h @@ -0,0 +1,597 @@ +/* Arduino DigitalIO Library + * Copyright (C) 2013 by William Greiman + * + * This file is part of the Arduino DigitalIO Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino DigitalIO Library. If not, see + * . + */ +/** + * @file + * @brief Fast Digital Pin functions + * + * @defgroup digitalPin Fast Pin I/O + * @details Fast Digital I/O functions and template class. + * @{ + */ +#ifndef DigitalPin_h +#define DigitalPin_h +#include +#include +#include +//------------------------------------------------------------------------------ +/** + * @class pin_map_t + * @brief struct for mapping digital pins + */ +struct pin_map_t { + volatile uint8_t* ddr; /**< address of DDR for this pin */ + volatile uint8_t* pin; /**< address of PIN for this pin */ + volatile uint8_t* port; /**< address of PORT for this pin */ + uint8_t bit; /**< bit number for this pin */ +}; +//------------------------------------------------------------------------------ +#if defined(__AVR_ATmega168__)\ +||defined(__AVR_ATmega168P__)\ +||defined(__AVR_ATmega328P__) +// 168 and 328 Arduinos +const static pin_map_t pinMap[] = { + {&DDRD, &PIND, &PORTD, 0}, // D0 0 + {&DDRD, &PIND, &PORTD, 1}, // D1 1 + {&DDRD, &PIND, &PORTD, 2}, // D2 2 + {&DDRD, &PIND, &PORTD, 3}, // D3 3 + {&DDRD, &PIND, &PORTD, 4}, // D4 4 + {&DDRD, &PIND, &PORTD, 5}, // D5 5 + {&DDRD, &PIND, &PORTD, 6}, // D6 6 + {&DDRD, &PIND, &PORTD, 7}, // D7 7 + {&DDRB, &PINB, &PORTB, 0}, // B0 8 + {&DDRB, &PINB, &PORTB, 1}, // B1 9 + {&DDRB, &PINB, &PORTB, 2}, // B2 10 + {&DDRB, &PINB, &PORTB, 3}, // B3 11 + {&DDRB, &PINB, &PORTB, 4}, // B4 12 + {&DDRB, &PINB, &PORTB, 5}, // B5 13 + {&DDRC, &PINC, &PORTC, 0}, // C0 14 + {&DDRC, &PINC, &PORTC, 1}, // C1 15 + {&DDRC, &PINC, &PORTC, 2}, // C2 16 + {&DDRC, &PINC, &PORTC, 3}, // C3 17 + {&DDRC, &PINC, &PORTC, 4}, // C4 18 + {&DDRC, &PINC, &PORTC, 5} // C5 19 +}; +//------------------------------------------------------------------------------ +#elif defined(__AVR_ATmega1280__)\ +|| defined(__AVR_ATmega2560__) +// Mega +static const pin_map_t pinMap[] = { + {&DDRE, &PINE, &PORTE, 0}, // E0 0 + {&DDRE, &PINE, &PORTE, 1}, // E1 1 + {&DDRE, &PINE, &PORTE, 4}, // E4 2 + {&DDRE, &PINE, &PORTE, 5}, // E5 3 + {&DDRG, &PING, &PORTG, 5}, // G5 4 + {&DDRE, &PINE, &PORTE, 3}, // E3 5 + {&DDRH, &PINH, &PORTH, 3}, // H3 6 + {&DDRH, &PINH, &PORTH, 4}, // H4 7 + {&DDRH, &PINH, &PORTH, 5}, // H5 8 + {&DDRH, &PINH, &PORTH, 6}, // H6 9 + {&DDRB, &PINB, &PORTB, 4}, // B4 10 + {&DDRB, &PINB, &PORTB, 5}, // B5 11 + {&DDRB, &PINB, &PORTB, 6}, // B6 12 + {&DDRB, &PINB, &PORTB, 7}, // B7 13 + {&DDRJ, &PINJ, &PORTJ, 1}, // J1 14 + {&DDRJ, &PINJ, &PORTJ, 0}, // J0 15 + {&DDRH, &PINH, &PORTH, 1}, // H1 16 + {&DDRH, &PINH, &PORTH, 0}, // H0 17 + {&DDRD, &PIND, &PORTD, 3}, // D3 18 + {&DDRD, &PIND, &PORTD, 2}, // D2 19 + {&DDRD, &PIND, &PORTD, 1}, // D1 20 + {&DDRD, &PIND, &PORTD, 0}, // D0 21 + {&DDRA, &PINA, &PORTA, 0}, // A0 22 + {&DDRA, &PINA, &PORTA, 1}, // A1 23 + {&DDRA, &PINA, &PORTA, 2}, // A2 24 + {&DDRA, &PINA, &PORTA, 3}, // A3 25 + {&DDRA, &PINA, &PORTA, 4}, // A4 26 + {&DDRA, &PINA, &PORTA, 5}, // A5 27 + {&DDRA, &PINA, &PORTA, 6}, // A6 28 + {&DDRA, &PINA, &PORTA, 7}, // A7 29 + {&DDRC, &PINC, &PORTC, 7}, // C7 30 + {&DDRC, &PINC, &PORTC, 6}, // C6 31 + {&DDRC, &PINC, &PORTC, 5}, // C5 32 + {&DDRC, &PINC, &PORTC, 4}, // C4 33 + {&DDRC, &PINC, &PORTC, 3}, // C3 34 + {&DDRC, &PINC, &PORTC, 2}, // C2 35 + {&DDRC, &PINC, &PORTC, 1}, // C1 36 + {&DDRC, &PINC, &PORTC, 0}, // C0 37 + {&DDRD, &PIND, &PORTD, 7}, // D7 38 + {&DDRG, &PING, &PORTG, 2}, // G2 39 + {&DDRG, &PING, &PORTG, 1}, // G1 40 + {&DDRG, &PING, &PORTG, 0}, // G0 41 + {&DDRL, &PINL, &PORTL, 7}, // L7 42 + {&DDRL, &PINL, &PORTL, 6}, // L6 43 + {&DDRL, &PINL, &PORTL, 5}, // L5 44 + {&DDRL, &PINL, &PORTL, 4}, // L4 45 + {&DDRL, &PINL, &PORTL, 3}, // L3 46 + {&DDRL, &PINL, &PORTL, 2}, // L2 47 + {&DDRL, &PINL, &PORTL, 1}, // L1 48 + {&DDRL, &PINL, &PORTL, 0}, // L0 49 + {&DDRB, &PINB, &PORTB, 3}, // B3 50 + {&DDRB, &PINB, &PORTB, 2}, // B2 51 + {&DDRB, &PINB, &PORTB, 1}, // B1 52 + {&DDRB, &PINB, &PORTB, 0}, // B0 53 + {&DDRF, &PINF, &PORTF, 0}, // F0 54 + {&DDRF, &PINF, &PORTF, 1}, // F1 55 + {&DDRF, &PINF, &PORTF, 2}, // F2 56 + {&DDRF, &PINF, &PORTF, 3}, // F3 57 + {&DDRF, &PINF, &PORTF, 4}, // F4 58 + {&DDRF, &PINF, &PORTF, 5}, // F5 59 + {&DDRF, &PINF, &PORTF, 6}, // F6 60 + {&DDRF, &PINF, &PORTF, 7}, // F7 61 + {&DDRK, &PINK, &PORTK, 0}, // K0 62 + {&DDRK, &PINK, &PORTK, 1}, // K1 63 + {&DDRK, &PINK, &PORTK, 2}, // K2 64 + {&DDRK, &PINK, &PORTK, 3}, // K3 65 + {&DDRK, &PINK, &PORTK, 4}, // K4 66 + {&DDRK, &PINK, &PORTK, 5}, // K5 67 + {&DDRK, &PINK, &PORTK, 6}, // K6 68 + {&DDRK, &PINK, &PORTK, 7} // K7 69 +}; +//------------------------------------------------------------------------------ +#elif defined(__AVR_ATmega1284P__)\ +|| defined(__AVR_ATmega1284__)\ +|| defined(__AVR_ATmega644P__)\ +|| defined(__AVR_ATmega644__)\ +|| defined(__AVR_ATmega64__)\ +|| defined(__AVR_ATmega32__)\ +|| defined(__AVR_ATmega324__)\ +|| defined(__AVR_ATmega16__) + +#ifdef defined(VARIANT_MIGHTY) +// Mighty Layout +static const pin_map_t pinMap[] = { + {&DDRB, &PINB, &PORTB, 0}, // B0 0 + {&DDRB, &PINB, &PORTB, 1}, // B1 1 + {&DDRB, &PINB, &PORTB, 2}, // B2 2 + {&DDRB, &PINB, &PORTB, 3}, // B3 3 + {&DDRB, &PINB, &PORTB, 4}, // B4 4 + {&DDRB, &PINB, &PORTB, 5}, // B5 5 + {&DDRB, &PINB, &PORTB, 6}, // B6 6 + {&DDRB, &PINB, &PORTB, 7}, // B7 7 + {&DDRD, &PIND, &PORTD, 0}, // D0 8 + {&DDRD, &PIND, &PORTD, 1}, // D1 9 + {&DDRD, &PIND, &PORTD, 2}, // D2 10 + {&DDRD, &PIND, &PORTD, 3}, // D3 11 + {&DDRD, &PIND, &PORTD, 4}, // D4 12 + {&DDRD, &PIND, &PORTD, 5}, // D5 13 + {&DDRD, &PIND, &PORTD, 6}, // D6 14 + {&DDRD, &PIND, &PORTD, 7}, // D7 15 + {&DDRC, &PINC, &PORTC, 0}, // C0 16 + {&DDRC, &PINC, &PORTC, 1}, // C1 17 + {&DDRC, &PINC, &PORTC, 2}, // C2 18 + {&DDRC, &PINC, &PORTC, 3}, // C3 19 + {&DDRC, &PINC, &PORTC, 4}, // C4 20 + {&DDRC, &PINC, &PORTC, 5}, // C5 21 + {&DDRC, &PINC, &PORTC, 6}, // C6 22 + {&DDRC, &PINC, &PORTC, 7}, // C7 23 + {&DDRA, &PINA, &PORTA, 0}, // A0 24 + {&DDRA, &PINA, &PORTA, 1}, // A1 25 + {&DDRA, &PINA, &PORTA, 2}, // A2 26 + {&DDRA, &PINA, &PORTA, 3}, // A3 27 + {&DDRA, &PINA, &PORTA, 4}, // A4 28 + {&DDRA, &PINA, &PORTA, 5}, // A5 29 + {&DDRA, &PINA, &PORTA, 6}, // A6 30 + {&DDRA, &PINA, &PORTA, 7} // A7 31 +}; +#elif defined(VARIANT_BOBUINO) +// Bobuino Layout +static const pin_map_t pinMap[] = { + {&DDRD, &PIND, &PORTD, 0}, // D0 0 + {&DDRD, &PIND, &PORTD, 1}, // D1 1 + {&DDRD, &PIND, &PORTD, 2}, // D2 2 + {&DDRD, &PIND, &PORTD, 3}, // D3 3 + {&DDRB, &PINB, &PORTB, 0}, // B0 4 + {&DDRB, &PINB, &PORTB, 1}, // B1 5 + {&DDRB, &PINB, &PORTB, 2}, // B2 6 + {&DDRB, &PINB, &PORTB, 3}, // B3 7 + {&DDRD, &PIND, &PORTD, 5}, // D5 8 + {&DDRD, &PIND, &PORTD, 6}, // D6 9 + {&DDRB, &PINB, &PORTB, 4}, // B4 10 + {&DDRB, &PINB, &PORTB, 5}, // B5 11 + {&DDRB, &PINB, &PORTB, 6}, // B6 12 + {&DDRB, &PINB, &PORTB, 7}, // B7 13 + {&DDRA, &PINA, &PORTA, 7}, // A7 14 + {&DDRA, &PINA, &PORTA, 6}, // A6 15 + {&DDRA, &PINA, &PORTA, 5}, // A5 16 + {&DDRA, &PINA, &PORTA, 4}, // A4 17 + {&DDRA, &PINA, &PORTA, 3}, // A3 18 + {&DDRA, &PINA, &PORTA, 2}, // A2 19 + {&DDRA, &PINA, &PORTA, 1}, // A1 20 + {&DDRA, &PINA, &PORTA, 0}, // A0 21 + {&DDRC, &PINC, &PORTC, 0}, // C0 22 + {&DDRC, &PINC, &PORTC, 1}, // C1 23 + {&DDRC, &PINC, &PORTC, 2}, // C2 24 + {&DDRC, &PINC, &PORTC, 3}, // C3 25 + {&DDRC, &PINC, &PORTC, 4}, // C4 26 + {&DDRC, &PINC, &PORTC, 5}, // C5 27 + {&DDRC, &PINC, &PORTC, 6}, // C6 28 + {&DDRC, &PINC, &PORTC, 7}, // C7 29 + {&DDRD, &PIND, &PORTD, 4}, // D4 30 + {&DDRD, &PIND, &PORTD, 7} // D7 31 +}; +#elif defined(VARIANT_STANDARD) +// Standard Layout +static const pin_map_t pinMap[] = { + {&DDRB, &PINB, &PORTB, 0}, // B0 0 + {&DDRB, &PINB, &PORTB, 1}, // B1 1 + {&DDRB, &PINB, &PORTB, 2}, // B2 2 + {&DDRB, &PINB, &PORTB, 3}, // B3 3 + {&DDRB, &PINB, &PORTB, 4}, // B4 4 + {&DDRB, &PINB, &PORTB, 5}, // B5 5 + {&DDRB, &PINB, &PORTB, 6}, // B6 6 + {&DDRB, &PINB, &PORTB, 7}, // B7 7 + {&DDRD, &PIND, &PORTD, 0}, // D0 8 + {&DDRD, &PIND, &PORTD, 1}, // D1 9 + {&DDRD, &PIND, &PORTD, 2}, // D2 10 + {&DDRD, &PIND, &PORTD, 3}, // D3 11 + {&DDRD, &PIND, &PORTD, 4}, // D4 12 + {&DDRD, &PIND, &PORTD, 5}, // D5 13 + {&DDRD, &PIND, &PORTD, 6}, // D6 14 + {&DDRD, &PIND, &PORTD, 7}, // D7 15 + {&DDRC, &PINC, &PORTC, 0}, // C0 16 + {&DDRC, &PINC, &PORTC, 1}, // C1 17 + {&DDRC, &PINC, &PORTC, 2}, // C2 18 + {&DDRC, &PINC, &PORTC, 3}, // C3 19 + {&DDRC, &PINC, &PORTC, 4}, // C4 20 + {&DDRC, &PINC, &PORTC, 5}, // C5 21 + {&DDRC, &PINC, &PORTC, 6}, // C6 22 + {&DDRC, &PINC, &PORTC, 7}, // C7 23 + {&DDRA, &PINA, &PORTA, 7}, // A7 24 + {&DDRA, &PINA, &PORTA, 6}, // A6 25 + {&DDRA, &PINA, &PORTA, 5}, // A5 26 + {&DDRA, &PINA, &PORTA, 4}, // A4 27 + {&DDRA, &PINA, &PORTA, 3}, // A3 28 + {&DDRA, &PINA, &PORTA, 2}, // A2 29 + {&DDRA, &PINA, &PORTA, 1}, // A1 30 + {&DDRA, &PINA, &PORTA, 0} // A0 31 +}; +#else // VARIANT_MIGHTY +#error Undefined variant 1284, 644, 324, 64, 32 +#endif // VARIANT_MIGHTY +//------------------------------------------------------------------------------ +#elif defined(__AVR_ATmega32U4__) +#ifdef CORE_TEENSY +// Teensy 2.0 +static const pin_map_t pinMap[] = { + {&DDRB, &PINB, &PORTB, 0}, // B0 0 + {&DDRB, &PINB, &PORTB, 1}, // B1 1 + {&DDRB, &PINB, &PORTB, 2}, // B2 2 + {&DDRB, &PINB, &PORTB, 3}, // B3 3 + {&DDRB, &PINB, &PORTB, 7}, // B7 4 + {&DDRD, &PIND, &PORTD, 0}, // D0 5 + {&DDRD, &PIND, &PORTD, 1}, // D1 6 + {&DDRD, &PIND, &PORTD, 2}, // D2 7 + {&DDRD, &PIND, &PORTD, 3}, // D3 8 + {&DDRC, &PINC, &PORTC, 6}, // C6 9 + {&DDRC, &PINC, &PORTC, 7}, // C7 10 + {&DDRD, &PIND, &PORTD, 6}, // D6 11 + {&DDRD, &PIND, &PORTD, 7}, // D7 12 + {&DDRB, &PINB, &PORTB, 4}, // B4 13 + {&DDRB, &PINB, &PORTB, 5}, // B5 14 + {&DDRB, &PINB, &PORTB, 6}, // B6 15 + {&DDRF, &PINF, &PORTF, 7}, // F7 16 + {&DDRF, &PINF, &PORTF, 6}, // F6 17 + {&DDRF, &PINF, &PORTF, 5}, // F5 18 + {&DDRF, &PINF, &PORTF, 4}, // F4 19 + {&DDRF, &PINF, &PORTF, 1}, // F1 20 + {&DDRF, &PINF, &PORTF, 0}, // F0 21 + {&DDRD, &PIND, &PORTD, 4}, // D4 22 + {&DDRD, &PIND, &PORTD, 5}, // D5 23 + {&DDRE, &PINE, &PORTE, 6} // E6 24 +}; +//------------------------------------------------------------------------------ +#else // CORE_TEENSY +// Leonardo +static const pin_map_t pinMap[] = { + {&DDRD, &PIND, &PORTD, 2}, // D2 0 + {&DDRD, &PIND, &PORTD, 3}, // D3 1 + {&DDRD, &PIND, &PORTD, 1}, // D1 2 + {&DDRD, &PIND, &PORTD, 0}, // D0 3 + {&DDRD, &PIND, &PORTD, 4}, // D4 4 + {&DDRC, &PINC, &PORTC, 6}, // C6 5 + {&DDRD, &PIND, &PORTD, 7}, // D7 6 + {&DDRE, &PINE, &PORTE, 6}, // E6 7 + {&DDRB, &PINB, &PORTB, 4}, // B4 8 + {&DDRB, &PINB, &PORTB, 5}, // B5 9 + {&DDRB, &PINB, &PORTB, 6}, // B6 10 + {&DDRB, &PINB, &PORTB, 7}, // B7 11 + {&DDRD, &PIND, &PORTD, 6}, // D6 12 + {&DDRC, &PINC, &PORTC, 7}, // C7 13 + {&DDRB, &PINB, &PORTB, 3}, // B3 14 + {&DDRB, &PINB, &PORTB, 1}, // B1 15 + {&DDRB, &PINB, &PORTB, 2}, // B2 16 + {&DDRB, &PINB, &PORTB, 0}, // B0 17 + {&DDRF, &PINF, &PORTF, 7}, // F7 18 + {&DDRF, &PINF, &PORTF, 6}, // F6 19 + {&DDRF, &PINF, &PORTF, 5}, // F5 20 + {&DDRF, &PINF, &PORTF, 4}, // F4 21 + {&DDRF, &PINF, &PORTF, 1}, // F1 22 + {&DDRF, &PINF, &PORTF, 0}, // F0 23 + {&DDRD, &PIND, &PORTD, 4}, // D4 24 + {&DDRD, &PIND, &PORTD, 7}, // D7 25 + {&DDRB, &PINB, &PORTB, 4}, // B4 26 + {&DDRB, &PINB, &PORTB, 5}, // B5 27 + {&DDRB, &PINB, &PORTB, 6}, // B6 28 + {&DDRD, &PIND, &PORTD, 6} // D6 29 +}; +#endif // CORE_TEENSY +//------------------------------------------------------------------------------ +#elif defined(__AVR_AT90USB646__)\ +|| defined(__AVR_AT90USB1286__) +// Teensy++ 1.0 & 2.0 +static const pin_map_t pinMap[] = { + {&DDRD, &PIND, &PORTD, 0}, // D0 0 + {&DDRD, &PIND, &PORTD, 1}, // D1 1 + {&DDRD, &PIND, &PORTD, 2}, // D2 2 + {&DDRD, &PIND, &PORTD, 3}, // D3 3 + {&DDRD, &PIND, &PORTD, 4}, // D4 4 + {&DDRD, &PIND, &PORTD, 5}, // D5 5 + {&DDRD, &PIND, &PORTD, 6}, // D6 6 + {&DDRD, &PIND, &PORTD, 7}, // D7 7 + {&DDRE, &PINE, &PORTE, 0}, // E0 8 + {&DDRE, &PINE, &PORTE, 1}, // E1 9 + {&DDRC, &PINC, &PORTC, 0}, // C0 10 + {&DDRC, &PINC, &PORTC, 1}, // C1 11 + {&DDRC, &PINC, &PORTC, 2}, // C2 12 + {&DDRC, &PINC, &PORTC, 3}, // C3 13 + {&DDRC, &PINC, &PORTC, 4}, // C4 14 + {&DDRC, &PINC, &PORTC, 5}, // C5 15 + {&DDRC, &PINC, &PORTC, 6}, // C6 16 + {&DDRC, &PINC, &PORTC, 7}, // C7 17 + {&DDRE, &PINE, &PORTE, 6}, // E6 18 + {&DDRE, &PINE, &PORTE, 7}, // E7 19 + {&DDRB, &PINB, &PORTB, 0}, // B0 20 + {&DDRB, &PINB, &PORTB, 1}, // B1 21 + {&DDRB, &PINB, &PORTB, 2}, // B2 22 + {&DDRB, &PINB, &PORTB, 3}, // B3 23 + {&DDRB, &PINB, &PORTB, 4}, // B4 24 + {&DDRB, &PINB, &PORTB, 5}, // B5 25 + {&DDRB, &PINB, &PORTB, 6}, // B6 26 + {&DDRB, &PINB, &PORTB, 7}, // B7 27 + {&DDRA, &PINA, &PORTA, 0}, // A0 28 + {&DDRA, &PINA, &PORTA, 1}, // A1 29 + {&DDRA, &PINA, &PORTA, 2}, // A2 30 + {&DDRA, &PINA, &PORTA, 3}, // A3 31 + {&DDRA, &PINA, &PORTA, 4}, // A4 32 + {&DDRA, &PINA, &PORTA, 5}, // A5 33 + {&DDRA, &PINA, &PORTA, 6}, // A6 34 + {&DDRA, &PINA, &PORTA, 7}, // A7 35 + {&DDRE, &PINE, &PORTE, 4}, // E4 36 + {&DDRE, &PINE, &PORTE, 5}, // E5 37 + {&DDRF, &PINF, &PORTF, 0}, // F0 38 + {&DDRF, &PINF, &PORTF, 1}, // F1 39 + {&DDRF, &PINF, &PORTF, 2}, // F2 40 + {&DDRF, &PINF, &PORTF, 3}, // F3 41 + {&DDRF, &PINF, &PORTF, 4}, // F4 42 + {&DDRF, &PINF, &PORTF, 5}, // F5 43 + {&DDRF, &PINF, &PORTF, 6}, // F6 44 + {&DDRF, &PINF, &PORTF, 7} // F7 45 +}; +//------------------------------------------------------------------------------ +#else // CPU type +#error unknown CPU type +#endif // CPU type +//------------------------------------------------------------------------------ +/** count of pins */ +static const uint8_t digitalPinCount = sizeof(pinMap)/sizeof(pin_map_t); +//============================================================================== +/** generate bad pin number error */ +void badPinNumber(void) + __attribute__((error("Pin number is too large or not a constant"))); +//------------------------------------------------------------------------------ +/** Check for valid pin number + * @param[in] pin Number of pin to be checked. + */ +static inline __attribute__((always_inline)) +void badPinCheck(uint8_t pin) { + if (!__builtin_constant_p(pin) || pin >= digitalPinCount) { + badPinNumber(); + } +} +//------------------------------------------------------------------------------ +/** fast write helper + * @param[in] address I/O register address + * @param[in] bit bit number to write + * @param[in] level value for bit + */ +static inline __attribute__((always_inline)) +void fastBitWriteSafe(volatile uint8_t* address, uint8_t bit, bool level) { + uint8_t oldSREG; + if (address > (uint8_t*)0X5F) { + oldSREG = SREG; + cli(); + } + if (level) { + *address |= 1 << bit; + } else { + *address &= ~(1 << bit); + } + if (address > (uint8_t*)0X5F) { + SREG = oldSREG; + } +} +//------------------------------------------------------------------------------ +/** read pin value + * @param[in] pin Arduino pin number + * @return value read + */ +static inline __attribute__((always_inline)) +bool fastDigitalRead(uint8_t pin) { + badPinCheck(pin); + return (*pinMap[pin].pin >> pinMap[pin].bit) & 1; +} +//------------------------------------------------------------------------------ +/** toggle a pin + * @param[in] pin Arduino pin number + * + * If the pin is in output mode toggle the pin level. + * If the pin is in input mode toggle the state of the 20K pullup. + */ +static inline __attribute__((always_inline)) +void fastDigitalToggle(uint8_t pin) { + badPinCheck(pin); + if (pinMap[pin].pin > (uint8_t*)0X5F) { + // must write bit to high address port + *pinMap[pin].pin = 1 << pinMap[pin].bit; + } else { + // will compile to sbi and PIN register will not be read. + *pinMap[pin].pin |= 1 << pinMap[pin].bit; + } +} +//------------------------------------------------------------------------------ +/** Set pin value + * @param[in] pin Arduino pin number + * @param[in] level value to write + */ +static inline __attribute__((always_inline)) +void fastDigitalWrite(uint8_t pin, bool level) { + badPinCheck(pin); + fastBitWriteSafe(pinMap[pin].port, pinMap[pin].bit, level); +} +//------------------------------------------------------------------------------ +/** set pin mode + * @param[in] pin Arduino pin number + * @param[in] mode if true set output mode else input mode + * + * fastPinMode does not enable or disable the 20K pullup for input mode. + */ +static inline __attribute__((always_inline)) +void fastPinMode(uint8_t pin, bool mode) { + badPinCheck(pin); + fastBitWriteSafe(pinMap[pin].ddr, pinMap[pin].bit, mode); +} +//------------------------------------------------------------------------------ +/** set pin configuration + * @param[in] pin Arduino pin number + * @param[in] mode If true set output mode else input mode + * @param[in] level If mode is output, set level high/low. + * If mode is input, enable or disable the pin's 20K pullup. + */ +static inline __attribute__((always_inline)) +void fastPinConfig(uint8_t pin, bool mode, bool level) { + fastPinMode(pin, mode); + fastDigitalWrite(pin, level); +} +//============================================================================== +/** + * @class DigitalPin + * @brief Fast AVR digital port I/O + */ +template +class DigitalPin { + public: + //---------------------------------------------------------------------------- + /** Constructor */ + DigitalPin() {} + //---------------------------------------------------------------------------- + /** Constructor + * @param[in] pinMode if true set output mode else input mode. + */ + explicit DigitalPin(bool pinMode) { + mode(pinMode); + } + //---------------------------------------------------------------------------- + /** Constructor + * @param[in] mode If true set output mode else input mode + * @param[in] level If mode is output, set level high/low. + * If mode is input, enable or disable the pin's 20K pullup. + */ + DigitalPin(bool mode, bool level) { + config(mode, level); + } + //---------------------------------------------------------------------------- + /** Asignment operator + * @param[in] value If true set the pin's level high else set the + * pin's level low. + * + * @return This DigitalPin instance. + */ + inline DigitalPin & operator = (bool value) __attribute__((always_inline)) { + write(value); + return *this; + } + //---------------------------------------------------------------------------- + /** Parenthesis operator + * @return Pin's level + */ + inline operator bool () const __attribute__((always_inline)) { + return read(); + } + //---------------------------------------------------------------------------- + /** set pin configuration + * @param[in] mode If true set output mode else input mode + * @param[in] level If mode is output, set level high/low. + * If mode is input, enable or disable the pin's 20K pullup. + */ + inline __attribute__((always_inline)) + void config(bool mode, bool level) { + fastPinConfig(PinNumber, mode, level); + } + //---------------------------------------------------------------------------- + /** + * Set pin level high if output mode or enable 20K pullup if input mode. + */ + inline __attribute__((always_inline)) + void high() {write(true);} + //---------------------------------------------------------------------------- + /** + * Set pin level low if output mode or disable 20K pullup if input mode. + */ + inline __attribute__((always_inline)) + void low() {write(false);} + //---------------------------------------------------------------------------- + /** + * Set pin mode + * @param[in] pinMode if true set output mode else input mode. + * + * mode() does not enable or disable the 20K pullup for input mode. + */ + inline __attribute__((always_inline)) + void mode(bool pinMode) { + fastPinMode(PinNumber, pinMode); + } + //---------------------------------------------------------------------------- + /** @return Pin's level */ + inline __attribute__((always_inline)) + bool read() const { + return fastDigitalRead(PinNumber); + } + //---------------------------------------------------------------------------- + /** toggle a pin + * + * If the pin is in output mode toggle the pin's level. + * If the pin is in input mode toggle the state of the 20K pullup. + */ + inline __attribute__((always_inline)) + void toggle() { + fastDigitalToggle(PinNumber); + } + //---------------------------------------------------------------------------- + /** Write the pin's level. + * @param[in] value If true set the pin's level high else set the + * pin's level low. + */ + inline __attribute__((always_inline)) + void write(bool value) { + fastDigitalWrite(PinNumber, value); + } +}; +#endif // DigitalPin_h +/** @} */ \ No newline at end of file diff --git a/libraries/DigitalIO/I2cConstants.h b/libraries/DigitalIO/I2cConstants.h new file mode 100644 index 0000000..7b2c749 --- /dev/null +++ b/libraries/DigitalIO/I2cConstants.h @@ -0,0 +1,62 @@ +/* Arduino I2C Library + * Copyright (C) 2013 by William Greiman + * + * This file is part of the Arduino I2C Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino I2C Library. If not, see + * . + */ +/** + * @file I2cConstants.h + * @brief Two Wire Interface constants. + * + * @defgroup twoWire I2C constants + * @details Two Wire Interface library. + * @{ + */ +#ifndef I2cConstants_h +#define I2cConstants_h +#include + +/** Option argument for transfer() of transferContinue() to continue a + an I2C operation. */ +const uint8_t I2C_CONTINUE = 0; + +/** Option argument for transfer() of transferContinue() to end a + transfer with a STOP condition */ +const uint8_t I2C_STOP = 1; + +/** Option argument for transfer() of transferContinue() to end a + transfer with a repeated START condition */ +const uint8_t I2C_REP_START = 2; + +/** Set I2C bus speed to 100 kHz. Used by TwiMaster class. */ +const uint8_t I2C_100KHZ = 0; + +/** Set I2C bus speed to 400 kHz. Used by TwiMaster class. */ +const uint8_t I2C_400KHZ = 1; + +/** Bit to OR with address for a read operation. */ +const uint8_t I2C_READ = 1; + +/** Bit to OR with address for write operation. */ +const uint8_t I2C_WRITE = 0; + +/** Disable internal pull-ups on SDA and SCL. Used by TwiMaster class. */ +const uint8_t I2C_NO_PULLUPS = 0; + +/** Enable internal pull-ups on SDA and SCL. Used by TwiMaster class. */ +const uint8_t I2C_INTERNAL_PULLUPS = 1; +#endif // I2cConstants_h +/** @} */ \ No newline at end of file diff --git a/libraries/DigitalIO/PinIO.cpp b/libraries/DigitalIO/PinIO.cpp new file mode 100644 index 0000000..b0367b7 --- /dev/null +++ b/libraries/DigitalIO/PinIO.cpp @@ -0,0 +1,68 @@ +/* Arduino DigitalIO Library + * Copyright (C) 2013 by William Greiman + * + * This file is part of the Arduino DigitalIO Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino DigitalIO Library. If not, see + * . + */ +/** + * @file + * @brief Digital AVR port I/O with runtime pin number. + * + * @defgroup runtimeDigital Runtime Pin I/O + * @details Two Wire Interface library. + * @{ + */ +#include +#include +#include +//============================================================================== +/** Constructor + * @param[in] pin Pin assigned to this object. + */ +PinIO::PinIO(uint8_t pin) { + begin(pin); +} +//------------------------------------------------------------------------------ +/** Initialize pin bit mask and port address. + * @param[in] pin Arduino board pin number. + * @return true for success or false if invalid pin number. + */ +bool PinIO::begin(uint8_t pin) { + if (pin >= NUM_DIGITAL_PINS) return false; + uint8_t port = digitalPinToPort(pin); + pinReg_ = portInputRegister(port); + bit_ = digitalPinToBitMask(pin); + mask_ = ~bit_; + portReg_ = pinReg_ + 2; + return true; +} +//------------------------------------------------------------------------------ +/** Configure the pin + * + * @param[in] mode Configure as output mode if true else input mode. + * @param[in] data For output mode set pin high if true else low. + * For input mode enable 20K pullup if true else Hi-Z. + * + * This function may be used with interrupts enabled or disabled. + * The previous interrupt state will be restored. + */ +void PinIO::config(bool mode, bool data) { + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + modeI(mode); + writeI(data); + } +} +/** @} */ \ No newline at end of file diff --git a/libraries/DigitalIO/PinIO.h b/libraries/DigitalIO/PinIO.h new file mode 100644 index 0000000..96fe492 --- /dev/null +++ b/libraries/DigitalIO/PinIO.h @@ -0,0 +1,145 @@ +/* Arduino DigitalIO Library + * Copyright (C) 2013 by William Greiman + * + * This file is part of the Arduino DigitalIO Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino DigitalIO Library. If not, see + * . + */ +/** + * @file + * @brief Digital AVR port I/O with runtime pin number. + * + * @defgroup runtimeDigital Runtime Pin I/O + * @details Two Wire Interface library. + * @{ + */ +#ifndef PinIO_h +#define PinIO_h +#include +#include +//------------------------------------------------------------------------------ +/** + * @class PinIO + * @brief AVR port I/O with runtime pin numbers. + */ +class PinIO { + public: + /** Create a PinIO object with no assigned pin. */ + PinIO() : bit_(0), mask_(0XFF) {} + explicit PinIO(uint8_t pin); + bool begin(uint8_t pin); + void config(bool mode, bool data); + //---------------------------------------------------------------------------- + /** @return Pin's level */ + inline __attribute__((always_inline)) + bool read() {return *pinReg_ & bit_;} + //---------------------------------------------------------------------------- + /** toggle a pin + * + * If the pin is in output mode toggle the pin's level. + * If the pin is in input mode toggle the state of the 20K pullup. + */ + inline __attribute__((always_inline)) + void toggle() {*pinReg_ = bit_;} + //============================================================================ + /** + * Set pin high if output mode or enable 20K pullup if input mode. + * + * This function must be called with interrupts disabled. + * This function will not change the interrupt state. + */ + inline __attribute__((always_inline)) + void highI() {writeI(1);} + /** + * Set pin low if output mode or disable 20K pullup if input mode. + * + * This function must be called with interrupts disabled. + * This function will not change the interrupt state. + */ + inline __attribute__((always_inline)) + void lowI() {writeI(0);} + /** + * Set pin mode + * @param[in] mode if true set output mode else input mode. + * + * mode() does not enable or disable the 20K pullup for input mode. + * + * This function must be called with interrupts disabled. + * This function will not change the interrupt state. + */ + inline __attribute__((always_inline)) + void modeI(bool mode) { + volatile uint8_t* ddrReg = pinReg_ + 1; + *ddrReg = mode ? *ddrReg | bit_ : *ddrReg & mask_; + } + /** Write pin. + * + * @param[in] level If output mode set pin high if true else low. + * If input mode enable 20K pullup if true else disable pullup. + * + * This function must be called with interrupts disabled. + * This function will not change the interrupt state. + */ + inline __attribute__((always_inline)) + void writeI(bool level) { + *portReg_ = level ? *portReg_ | bit_ : *portReg_ & mask_; + } + //============================================================================ + /** + * Set pin level high if output mode or enable 20K pullup if input mode. + * + * This function will enable interrupts. This function should not be + * called in an ISR or where interrupts are disabled. + */ + inline __attribute__((always_inline)) + void high() {ATOMIC_BLOCK(ATOMIC_FORCEON) {highI();}} + /** + * Set pin level low if output mode or disable 20K pullup if input mode. + * + * This function will enable interrupts. This function should not be + * called in an ISR or where interrupts are disabled. + */ + inline __attribute__((always_inline)) + void low() {ATOMIC_BLOCK(ATOMIC_FORCEON) {lowI();}} + /** + * Set pin mode + * @param[in] pinMode if true set output mode else input mode. + * + * mode() does not enable or disable the 20K pullup for input mode. + * + * This function will enable interrupts. This function should not be + * called in an ISR or where interrupts are disabled. + */ + inline __attribute__((always_inline)) + void mode(bool pinMode) {ATOMIC_BLOCK(ATOMIC_FORCEON) {modeI(pinMode);}} + /** Write pin. + * + * @param[in] level If output mode set pin high if true else low. + * If input mode enable 20K pullup if true else disable pullup. + * + * This function will enable interrupts. This function should not be + * called in an ISR or where interrupts are disabled. + */ + inline __attribute__((always_inline)) + void write(bool level) {ATOMIC_BLOCK(ATOMIC_FORCEON) {writeI(level);}} + //---------------------------------------------------------------------------- + private: + uint8_t bit_; + uint8_t mask_; + volatile uint8_t* pinReg_; + volatile uint8_t* portReg_; +}; +#endif // PinIO_h +/** @} */ \ No newline at end of file diff --git a/libraries/DigitalIO/SoftI2cMaster.cpp b/libraries/DigitalIO/SoftI2cMaster.cpp new file mode 100644 index 0000000..efc338a --- /dev/null +++ b/libraries/DigitalIO/SoftI2cMaster.cpp @@ -0,0 +1,240 @@ +/* Arduino DigitalIO Library + * Copyright (C) 2013 by William Greiman + * + * This file is part of the Arduino DigitalIO Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino DigitalIO Library. If not, see + * . + */ +/** + * @file + * @brief Software I2C library + * + * @defgroup softI2C Software I2C + * @details Software Two Wire Interface library. + * @{ + */ +#include +//------------------------------------------------------------------------------ +/** + * Start an I2C transfer with possible continuation. + * + * @param[in] addrRW I2C slave address plus R/W bit. + * The I2C slave address is in the high seven bits + * and is ORed with on of the following: + * - I2C_READ for a read transfer. + * - I2C_WRITE for a write transfer. + * . + * @param[in,out] buf Source or destination for transfer. + * @param[in] nbytes Number of bytes to transfer (may be zero). + * @param[in] option Option for ending the transfer, one of: + * - I2C_STOP end the transfer with an I2C stop + * condition. + * - I2C_REP_START end the transfer with an I2C + * repeated start condition. + * - I2C_CONTINUE allow additional transferContinue() + * calls. + * . + * @return true for success else false. + */ +bool I2cMasterBase::transfer(uint8_t addrRW, + void *buf, size_t nbytes, uint8_t option) { + uint8_t* p = reinterpret_cast(buf); + if (_state != STATE_REP_START) { + start(); + } + if (!write(addrRW)) { + _state = addrRW & I2C_READ ? STATE_RX_ADDR_NACK : STATE_TX_ADDR_NACK; + return false; + } + _state = addrRW & I2C_READ ? STATE_RX_DATA : STATE_TX_DATA; + return transferContinue(buf, nbytes, option); +} +//------------------------------------------------------------------------------ +/** + * Continue an I2C transfer. + * + * @param[in,out] buf Source or destination for transfer. + * @param[in] nbytes Number of bytes to transfer (may be zero). + * @param[in] option Option for ending the transfer, one of: + * - I2C_STOP end the transfer with an I2C stop + * condition. + * - I2C_REP_START end the transfer with an I2C + * repeated start condition. + * - I2C_CONTINUE allow additional transferContinue() + * calls. + * . + * @return true for success else false. + */ +bool I2cMasterBase::transferContinue(void *buf, size_t nbytes, uint8_t option) { + uint8_t* p = reinterpret_cast(buf); + if (_state == STATE_RX_DATA) { + for (size_t i = 0; i < nbytes; i++) { + p[i] = read(i == (nbytes - 1) && option != I2C_CONTINUE); + } + } else if (_state == STATE_TX_DATA) { + for (size_t i = 0; i < nbytes; i++) { + if (!write(p[i])) { + _state = STATE_TX_DATA_NACK; + return false; + } + } + } else { + return false; + } + if (option == I2C_STOP) { + stop(); + _state = STATE_STOP; + } else if (option == I2C_REP_START) { + start(); + _state = STATE_STOP; + } + return true; +} +//============================================================================== +// WARNING don't change SoftI2cMaster unless you verify the change with a scope +//------------------------------------------------------------------------------ +/** + * Constructor, initialize SCL/SDA pins and set the bus high. + * + * @param[in] sdaPin The software SDA pin number. + * + * @param[in] sclPin The software SCL pin number. + */ +SoftI2cMaster::SoftI2cMaster(uint8_t sclPin, uint8_t sdaPin) { + begin(sclPin, sdaPin); +} +//------------------------------------------------------------------------------ +/** + * Initialize SCL/SDA pins and set the bus high. + * + * @param[in] sdaPin The software SDA pin number. + * + * @param[in] sclPin The software SCL pin number. + */ +void SoftI2cMaster::begin(uint8_t sclPin, uint8_t sdaPin) { + uint8_t port; + + // Get bit mask and address of scl registers. + _sclBit = digitalPinToBitMask(sclPin); + port = digitalPinToPort(sclPin); + _sclDDR = portModeRegister(port); + volatile uint8_t* sclOutReg = portOutputRegister(port); + + // Get bit mask and address of sda registers. + _sdaBit = digitalPinToBitMask(sdaPin); + port = digitalPinToPort(sdaPin); + _sdaDDR = portModeRegister(port); + _sdaInReg = portInputRegister(port); + volatile uint8_t* sdaOutReg = portOutputRegister(port); + + // Clear PORT bit for scl and sda. + uint8_t s = SREG; + noInterrupts(); + *sclOutReg &= ~_sclBit; + *sdaOutReg &= ~_sdaBit; + SREG = s; + + // Set scl and sda high. + writeScl(HIGH); + writeSda(HIGH); +} +//------------------------------------------------------------------------------ +/* Read a byte and send ACK if more reads follow else NACK to terminate read. + * + * @param[in] last Set true to terminate the read else false. + * + * @return The byte read from the I2C bus. + */ +uint8_t SoftI2cMaster::read(uint8_t last) { + uint8_t b = 0; + + // Set sda to high Z mode for read. + writeSda(HIGH); + // Read a byte. + for (uint8_t i = 0; i < 8; i++) { + // Don't change this loop unless you verify the change with a scope. + b <<= 1; + sclDelay(16); + writeScl(HIGH); + sclDelay(12); + if (readSda()) b |= 1; + writeScl(LOW); + } + // send ACK or NACK + writeSda(last); + sclDelay(12); + writeScl(HIGH); + sclDelay(18); + writeScl(LOW); + writeSda(LOW); + return b; +} +//------------------------------------------------------------------------------ +/* Issue a start condition. */ +void SoftI2cMaster::start() { + if (!readSda()) { + writeSda(HIGH); + writeScl(HIGH); + sclDelay(20); + } + writeSda(LOW); + sclDelay(20); + writeScl(LOW); +} +//------------------------------------------------------------------------------ + /* Issue a stop condition. */ +void SoftI2cMaster::stop(void) { + writeSda(LOW); + sclDelay(20); + writeScl(HIGH); + sclDelay(20); + writeSda(HIGH); + sclDelay(20); +} +//------------------------------------------------------------------------------ +/* + * Write a byte. + * + * @param[in] data The byte to send. + * + * @return The value true, 1, if the slave returned an ACK or false for NACK. + */ +bool SoftI2cMaster::write(uint8_t data) { + // write byte + for (uint8_t m = 0X80; m != 0; m >>= 1) { + // don't change this loop unless you verify the change with a scope + writeSda(m & data); + sclDelay(8); + writeScl(HIGH); + sclDelay(18); + writeScl(LOW); + } + sclDelay(8); + // Go to sda high Z mode for input. + writeSda(HIGH); + writeScl(HIGH); + sclDelay(16); + + // Get ACK or NACK. + uint8_t rtn = readSda(); + + // pull scl low. + writeScl(LOW); + + // Pull sda low. + writeSda(LOW); + return rtn == 0; +} +/** @} */ diff --git a/libraries/DigitalIO/SoftI2cMaster.h b/libraries/DigitalIO/SoftI2cMaster.h new file mode 100644 index 0000000..e2d559a --- /dev/null +++ b/libraries/DigitalIO/SoftI2cMaster.h @@ -0,0 +1,284 @@ +/* Arduino DigitalIO Library + * Copyright (C) 2013 by William Greiman + * + * This file is part of the Arduino DigitalIO Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino DigitalIO Library. If not, see + * . + */ +#ifndef SOFT_I2C_MASTER_H +#define SOFT_I2C_MASTER_H +/** + * @file + * @brief Software I2C library + * + * @defgroup softI2C Software I2C + * @details Software Two Wire Interface library. + * @{ + */ +#if ARDUINO < 100 +#error Requires Arduino 1.0 or greater. +#else // ARDUINO +#include +#endif // ARDUINO +#include +#include +#include +//------------------------------------------------------------------------------ +// State codes. + +/** Stop condition transmitted. */ +const uint8_t STATE_STOP = 0; + +/** Repeated start condition transmitted. */ +const uint8_t STATE_REP_START = 1; + +/** Read data transfer active. */ +const uint8_t STATE_RX_DATA = 2; + +/** Write data transfer active. */ +const uint8_t STATE_TX_DATA = 3; + +/** Slave address plus read bit transmitted, NACK received. */ +const uint8_t STATE_RX_ADDR_NACK = 4; + +/** Slave address plus write bit transmitted, NACK received. */ +const uint8_t STATE_TX_ADDR_NACK = 5; +/** Data byte transmitted, NACK received. */ +const uint8_t STATE_TX_DATA_NACK = 6; +//============================================================================== +/** + * @class I2cMasterBase + * @brief Base class for FastI2cMaster, SoftI2cMaster + */ +class I2cMasterBase { + public: + I2cMasterBase() : _state(STATE_STOP) {} + /** Read a byte + * + * @note This function should only be used by experts. Data should be + * accessed by calling transfer() and transferContinue() + * + * @param[in] last send a NACK to terminate read if last is true else + * send an ACK to continue the read. + * + * @return byte read from I2C bus + */ + virtual uint8_t read(uint8_t last) = 0; + + /** Issue a start condition + * + * @note This function should only be used by experts. Data should be + * accessed by calling transfer() and transferContinue() + */ + virtual void start() = 0; + /** Issue a stop condition. + * + * @note This function should only be used by experts. Data should be + * accessed by calling transfer() and transferContinue() + */ + virtual void stop() = 0; + + bool transfer(uint8_t addressRW, void *buf, + size_t nbyte, uint8_t option = I2C_STOP); + + bool transferContinue(void *buf, size_t nbyte, uint8_t option = I2C_STOP); + /** Write a byte + * + * @note This function should only be used by experts. Data should be + * accessed by calling transfer() and transferContinue() + * + * @param[in] data byte to write + * @return true for ACK or false for NACK */ + virtual bool write(uint8_t data) = 0; + + private: + uint8_t _state; +}; +//============================================================================== +/** + * @class SoftI2cMaster + * @brief Software I2C master class + */ +class SoftI2cMaster : public I2cMasterBase { + public: + SoftI2cMaster() {} + SoftI2cMaster(uint8_t sclPin, uint8_t sdaPin); + void begin(uint8_t sclPin, uint8_t sdaPin); + uint8_t read(uint8_t last); + void start(); + void stop(void); + bool write(uint8_t b); + + private: + uint8_t _sclBit; + uint8_t _sdaBit; + volatile uint8_t* _sclDDR; + volatile uint8_t* _sdaDDR; + volatile uint8_t* _sdaInReg; + //---------------------------------------------------------------------------- + bool readSda() {return *_sdaInReg & _sdaBit;} + //---------------------------------------------------------------------------- + void sclDelay(uint8_t n) {_delay_loop_1(n);} + //---------------------------------------------------------------------------- + bool writeScl(bool value) { + uint8_t s = SREG; + noInterrupts(); + if (value == LOW) { + // Pull scl low. + *_sclDDR |= _sclBit; + } else { + // Put scl in high Z input mode. + *_sclDDR &= ~_sclBit; + } + SREG = s; + } + //---------------------------------------------------------------------------- + bool writeSda(bool value) { + uint8_t s = SREG; + noInterrupts(); + if (value == LOW) { + // Pull sda low. + *_sdaDDR |= _sdaBit; + } else { + // Put sda in high Z input mode. + *_sdaDDR &= ~_sdaBit; + } + SREG = s; + } +}; +//============================================================================== +// Template based fast software I2C +//------------------------------------------------------------------------------ +/** + * @class FastI2cMaster + * @brief Fast software I2C master class. + */ +template +class FastI2cMaster : public I2cMasterBase { + public: + //---------------------------------------------------------------------------- + FastI2cMaster() { + begin(); + } + //---------------------------------------------------------------------------- + /** Initialize I2C bus pins. */ + void begin() { + fastDigitalWrite(sclPin, LOW); + fastDigitalWrite(sdaPin, LOW); + + sclWrite(HIGH); + sdaWrite(HIGH); + } + //---------------------------------------------------------------------------- + uint8_t read(uint8_t last) { + uint8_t data = 0; + sdaWrite(HIGH); + + readBit(7, &data); + readBit(6, &data); + readBit(5, &data); + readBit(4, &data); + readBit(3, &data); + readBit(2, &data); + readBit(1, &data); + readBit(0, &data); + + // send ACK or NACK + sdaWrite(last); + sclDelay(4); + sclWrite(HIGH); + sclDelay(6); + sclWrite(LOW); + sdaWrite(LOW); + return data; + } + //---------------------------------------------------------------------------- + void start() { + if (!fastDigitalRead(sdaPin)) { + // It's a repeat start. + sdaWrite(HIGH); + sclDelay(8); + sclWrite(HIGH); + sclDelay(8); + } + sdaWrite(LOW); + sclDelay(8); + sclWrite(LOW); + sclDelay(8); + } + //---------------------------------------------------------------------------- + void stop(void) { + sdaWrite(LOW); + sclDelay(8); + sclWrite(HIGH); + sclDelay(8); + sdaWrite(HIGH); + sclDelay(8); + } + //---------------------------------------------------------------------------- + bool write(uint8_t data) { + // write byte + writeBit(7, data); + writeBit(6, data); + writeBit(5, data); + writeBit(4, data); + writeBit(3, data); + writeBit(2, data); + writeBit(1, data); + writeBit(0, data); + + // get ACK or NACK + sdaWrite(HIGH); + + sclWrite(HIGH); + sclDelay(5); + bool rtn = fastDigitalRead(sdaPin); + sclWrite(LOW); + sdaWrite(LOW); + return rtn == 0; + } + + private: + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void sclWrite(bool value) {fastPinMode(sclPin, !value);} + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void sdaWrite(bool value) {fastPinMode(sdaPin, !value);} + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void readBit(uint8_t bit, uint8_t* data) { + sclWrite(HIGH); + sclDelay(5); + if (fastDigitalRead(sdaPin)) *data |= 1 << bit; + sclWrite(LOW); + if (bit) sclDelay(6); + } + //---------------------------------------------------------------------------- + void sclDelay(uint8_t n) {_delay_loop_1(n);} + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void writeBit(uint8_t bit, uint8_t data) { + uint8_t mask = 1 << bit; + sdaWrite(data & mask); + sclWrite(HIGH); + sclDelay(5); + sclWrite(LOW); + sclDelay(5); + } +}; +#endif // SOFT_I2C_MASTER_H +/** @} */ + diff --git a/libraries/DigitalIO/SoftSPI.h b/libraries/DigitalIO/SoftSPI.h new file mode 100644 index 0000000..036fad6 --- /dev/null +++ b/libraries/DigitalIO/SoftSPI.h @@ -0,0 +1,162 @@ +/* Arduino DigitalIO Library + * Copyright (C) 2013 by William Greiman + * + * This file is part of the Arduino DigitalIO Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino DigitalIO Library. If not, see + * . + */ +/** + * @file + * @brief Software SPI. + * + * @defgroup softSPI Software SPI + * @details Software SPI Template Class. + * @{ + */ + +#ifndef SoftSPI_h +#define SoftSPI_h +#include +//------------------------------------------------------------------------------ +/** Nop for timing. */ +#define nop asm volatile ("nop\n\t") +//------------------------------------------------------------------------------ +/** Pin Mode for MISO is input.*/ +const bool MISO_MODE = false; +/** Pullups disabled for MISO are disabled. */ +const bool MISO_LEVEL = false; +/** Pin Mode for MOSI is output.*/ +const bool MOSI_MODE = true; +/** Pin Mode for SCK is output. */ +const bool SCK_MODE = true; +//------------------------------------------------------------------------------ +/** + * @class SoftSPI + * @brief Fast software SPI. + */ +template +class SoftSPI { + public: + //---------------------------------------------------------------------------- + /** Initialize SoftSPI pins. */ + void begin() { + fastPinConfig(MisoPin, MISO_MODE, MISO_LEVEL); + fastPinConfig(MosiPin, MOSI_MODE, !MODE_CPHA(Mode)); + fastPinConfig(SckPin, SCK_MODE, MODE_CPOL(Mode)); + } + //---------------------------------------------------------------------------- + /** Soft SPI receive byte. + * @return Data byte received. + */ + inline __attribute__((always_inline)) + uint8_t receive() { + uint8_t data = 0; + receiveBit(7, &data); + receiveBit(6, &data); + receiveBit(5, &data); + receiveBit(4, &data); + receiveBit(3, &data); + receiveBit(2, &data); + receiveBit(1, &data); + receiveBit(0, &data); + return data; + } + //---------------------------------------------------------------------------- + /** Soft SPI send byte. + * @param[in] data Data byte to send. + */ + inline __attribute__((always_inline)) + void send(uint8_t data) { + sendBit(7, data); + sendBit(6, data); + sendBit(5, data); + sendBit(4, data); + sendBit(3, data); + sendBit(2, data); + sendBit(1, data); + sendBit(0, data); + } + //---------------------------------------------------------------------------- + /** Soft SPI transfer byte. + * @param[in] txData Data byte to send. + * @return Data byte received. + */ + inline __attribute__((always_inline)) + uint8_t transfer(uint8_t txData) { + uint8_t rxData = 0; + transferBit(7, &rxData, txData); + transferBit(6, &rxData, txData); + transferBit(5, &rxData, txData); + transferBit(4, &rxData, txData); + transferBit(3, &rxData, txData); + transferBit(2, &rxData, txData); + transferBit(1, &rxData, txData); + transferBit(0, &rxData, txData); + return rxData; + } + + private: + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + bool MODE_CPHA(uint8_t mode) {return (mode & 1) != 0;} + inline __attribute__((always_inline)) + bool MODE_CPOL(uint8_t mode) {return (mode & 2) != 0;} + inline __attribute__((always_inline)) + void receiveBit(uint8_t bit, uint8_t* data) { + if (MODE_CPHA(Mode)) { + fastDigitalWrite(SckPin, !MODE_CPOL(Mode)); + } + nop; + nop; + fastDigitalWrite(SckPin, + MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode)); + if (fastDigitalRead(MisoPin)) *data |= 1 << bit; + if (!MODE_CPHA(Mode)) { + fastDigitalWrite(SckPin, MODE_CPOL(Mode)); + } + } + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void sendBit(uint8_t bit, uint8_t data) { + if (MODE_CPHA(Mode)) { + fastDigitalWrite(SckPin, !MODE_CPOL(Mode)); + } + fastDigitalWrite(MosiPin, data & (1 << bit)); + fastDigitalWrite(SckPin, + MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode)); + nop; + nop; + if (!MODE_CPHA(Mode)) { + fastDigitalWrite(SckPin, MODE_CPOL(Mode)); + } + } + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void transferBit(uint8_t bit, uint8_t* rxData, uint8_t txData) { + if (MODE_CPHA(Mode)) { + fastDigitalWrite(SckPin, !MODE_CPOL(Mode)); + } + fastDigitalWrite(MosiPin, txData & (1 << bit)); + fastDigitalWrite(SckPin, + MODE_CPHA(Mode) ? MODE_CPOL(Mode) : !MODE_CPOL(Mode)); + if (fastDigitalRead(MisoPin)) *rxData |= 1 << bit; + if (!MODE_CPHA(Mode)) { + fastDigitalWrite(SckPin, MODE_CPOL(Mode)); + } + } + //---------------------------------------------------------------------------- +}; +#endif // SoftSPI_h +/** @} */ diff --git a/libraries/DigitalIO/attic/ADS7818.h b/libraries/DigitalIO/attic/ADS7818.h new file mode 100644 index 0000000..c416acc --- /dev/null +++ b/libraries/DigitalIO/attic/ADS7818.h @@ -0,0 +1,120 @@ +#ifndef ADS7818_h +#define ADS7871_h +//------------------------------------------------------------------------------ +/** nop to tune soft SPI timing */ +#define nop asm volatile ("nop\n\t") +//------------------------------------------------------------------------------ +/** doxygen can't handle __attribute__ very well */ +#define STATIC_ALWAYS_INLINE static inline __attribute__((always_inline)) +//------------------------------------------------------------------------------ +template +class ADS7818 { + public: + void begin() { + fastPinMode(ClkPin, 1); + fastDigitalWrite(ClkPin, 0); + fastPinMode(ConvPin, 1); + fastDigitalWrite(ConvPin, 1); + fastPinMode(DataPin, 0); + } + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + uint16_t read() { + uint16_t v = 0; + fastDigitalWrite(ConvPin, 0); + fastDigitalWrite(ClkPin, 1); + fastDigitalWrite(ClkPin, 0); + fastDigitalWrite(ConvPin, 1); + fastDigitalWrite(ClkPin, 1); + fastDigitalWrite(ClkPin, 0); + + readBitFast16(v, 11); + readBitFast16(v, 10); + readBitFast16(v, 9); + readBitFast16(v, 8); + readBitFast16(v, 7); + readBitFast16(v, 6); + readBitFast16(v, 5); + readBitFast16(v, 4); + readBitFast16(v, 3); + readBitFast16(v, 2); + readBitFast16(v, 1); + readBitFast16(v, 0); + return v; + } + private: + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void readBitFast16(uint16_t &v, uint8_t b) { + fastDigitalWrite(ClkPin, 1); + if (fastDigitalRead(DataPin)) v |= (1 << b); + fastDigitalWrite(ClkPin, 0); + } +}; +#if 0 +/** initialize I/O ports */ +STATIC_ALWAYS_INLINE void adcBegin() { + fastPinMode(ADC_CLK_PIN, 1); + fastDigitalWrite(ADC_CLK_PIN, 0); + fastPinMode(ADC_CONV_PIN, 1); + fastDigitalWrite(ADC_CONV_PIN, 1); + fastPinMode(ADC_DATA_PIN, 0); +} +//------------------------------------------------------------------------------ +/** clock for don't care bits + *\param[in] delayBefore if true, delay before raising clock*/ +STATIC_ALWAYS_INLINE void fastDummy(bool first) { + if (!first) nop; + fastDigitalWrite(ADC_CLK_PIN, 1); + nop; + fastDigitalWrite(ADC_CLK_PIN, 0); +} +//------------------------------------------------------------------------------ +/** read next bit fast as possible + * \param[in] v word to receive bit + * \param[in] b bit number to be set. v |= (1 << b) if next bit is high. + */ +STATIC_ALWAYS_INLINE void readBitFast16(uint16_t &v, uint8_t b) { + fastDigitalWrite(ADC_CLK_PIN, 1); + if (fastDigitalRead(ADC_DATA_PIN)) v |= (1 << b); + fastDigitalWrite(ADC_CLK_PIN, 0); +} +//------------------------------------------------------------------------------ +/** Read AD7680 16-bit ADC in less than 8 microseconds + * cs is chip select pin + */ +STATIC_ALWAYS_INLINE uint16_t adcRead(bool centered = false) { + uint16_t v = 0; + fastDigitalWrite(ADC_CONV_PIN, 0); + fastDigitalWrite(ADC_CLK_PIN, 1); + fastDigitalWrite(ADC_CLK_PIN, 0); + fastDigitalWrite(ADC_CONV_PIN, 1); + fastDigitalWrite(ADC_CLK_PIN, 1); + fastDigitalWrite(ADC_CLK_PIN, 0); +// uint16_t v = 0; + +// fastDummy(1); +// fastDummy(0); +// fastDummy(0); + // fastDummy(0); + +// readBitFast16(v, 15); +// readBitFast16(v, 14); +// readBitFast16(v, 13); +// readBitFast16(v, 12); + readBitFast16(v, 11); + readBitFast16(v, 10); + readBitFast16(v, 9); + readBitFast16(v, 8); + readBitFast16(v, 7); + readBitFast16(v, 6); + readBitFast16(v, 5); + readBitFast16(v, 4); + readBitFast16(v, 3); + readBitFast16(v, 2); + readBitFast16(v, 1); + readBitFast16(v, 0); + return centered ? v ^ 0X8000 : v; +} +#endif // 0 +#endif // ADS7818_h \ No newline at end of file diff --git a/libraries/DigitalIO/attic/MCP320X.h b/libraries/DigitalIO/attic/MCP320X.h new file mode 100644 index 0000000..e4d1b81 --- /dev/null +++ b/libraries/DigitalIO/attic/MCP320X.h @@ -0,0 +1,259 @@ +#ifndef MCP320X_h +#define MCP320X_h +#include +//============================================================================== +template +class MCP3201 { + public: + //---------------------------------------------------------------------------- + /** Set pin modes and initial levels. */ + void begin() { + fastPinMode(ClkPin, 1); + fastDigitalWrite(ClkPin, 0); + fastPinMode(CsPin, 1); + fastDigitalWrite(CsPin, 1); + fastPinMode(DoutPin, 0); + } + //---------------------------------------------------------------------------- + /** Read MCP3201 12-bit ADC + * \return 16-bit value read. + */ + inline __attribute__((always_inline)) + uint16_t read() { + fastDigitalWrite(CsPin, 0); + // Start sample. + mcpAdcDummy(3); + // Extra sample time. + if (UsecDelay){ + delayMicroseconds(UsecDelay); + } + // End sample. + mcpAdcDummy(3); + // Null bit. + mcpAdcDummy(3); + uint16_t v = 0; + readBit(v, 11); + readBit(v, 10); + readBit(v, 9); + readBit(v, 8); + readBit(v, 7); + readBit(v, 6); + readBit(v, 5); + readBit(v, 4); + readBit(v, 3); + readBit(v, 2); + readBit(v, 1); + readBit(v, 0); + fastDigitalWrite(CsPin, 1); + return v; + } + private: + //---------------------------------------------------------------------------- + /** delay n nops + * \param[in] n nops to delay, must be a constant so compiler optimizes if(). + */ + inline __attribute__((always_inline)) + void delayCycles(uint8_t n) { + if (n & 1) asm volatile("nop\n\t"); + if (n & 2) asm volatile("nop\n\t" "nop\n\t"); + if (n & 4) asm volatile("nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"); + } + //---------------------------------------------------------------------------- + /** clock for don't care bits + *\param[in] delayBefore if true, delay before raising clock*/ + inline __attribute__((always_inline)) + void mcpAdcDummy(uint8_t delayBefore) { + delayCycles(delayBefore); + fastDigitalWrite(ClkPin, 1); + delayCycles(3); + fastDigitalWrite(ClkPin, 0); + } + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void readBit(uint16_t &v, uint8_t b, uint8_t delayRead = 2) { + delayCycles(3); + fastDigitalWrite(ClkPin, 1); + delayCycles(delayRead); + if (fastDigitalRead(DoutPin)) v |= (1 << b); + fastDigitalWrite(ClkPin, 0); + } +}; +//============================================================================== +template +class MCP3202 { + public: + //---------------------------------------------------------------------------- + /** Set pin modes and initial levels. */ + void begin() { + fastPinMode(ClkPin, 1); + fastDigitalWrite(ClkPin, 0); + fastPinMode(CsPin, 1); + fastDigitalWrite(CsPin, 1); + fastPinMode(DoutPin, 0); + fastPinMode(DinPin, 1); + } + //---------------------------------------------------------------------------- + /** Read MCP3202 12-bit ADC + * \return 16-bit value read. + */ + inline __attribute__((always_inline)) + uint16_t read(uint8_t config) { + uint16_t v = 0; + fastDigitalWrite(CsPin, 0); + // Start bit. + writeBit(true); + // Mode bit. + writeBit(config & 2); + // Channel Selection and start sample. + writeBit(config & 1); + // Extra sample time. + if (UsecDelay){ + delayMicroseconds(UsecDelay); + } + // MSB first format and end sample. + writeBit(true); + // Null bit. + writeBit(true); + // Data bits. + readBit(v, 11); + readBit(v, 10); + readBit(v, 9); + readBit(v, 8); + readBit(v, 7); + readBit(v, 6); + readBit(v, 5); + readBit(v, 4); + readBit(v, 3); + readBit(v, 2); + readBit(v, 1); + readBit(v, 0); + fastDigitalWrite(CsPin, 1); + return v; + } + private: + //---------------------------------------------------------------------------- + /** delay n nops + * \param[in] n nops to delay, must be a constant so compiler optimizes if(). + */ + inline __attribute__((always_inline)) + void delayCycles(uint8_t n) { + if (n & 1) asm volatile("nop\n\t"); + if (n & 2) asm volatile("nop\n\t" "nop\n\t"); + if (n & 4) asm volatile("nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"); + } + //---------------------------------------------------------------------------- + /** clock for don't care bits + *\param[in] delayBefore if true, delay before raising clock*/ + inline __attribute__((always_inline)) + void writeBit(bool value) { + fastDigitalWrite(DinPin, value); + fastDigitalWrite(ClkPin, 1); + delayCycles(2); + fastDigitalWrite(ClkPin, 0); + } + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void readBit(uint16_t &v, uint8_t b, uint8_t delayRead = 1) { + delayCycles(2); + fastDigitalWrite(ClkPin, 1); + delayCycles(delayRead); + if (fastDigitalRead(DoutPin)) v |= (1 << b); + fastDigitalWrite(ClkPin, 0); + } +}; +//============================================================================== +template +class MCP3204 { + public: + //---------------------------------------------------------------------------- + /** Set pin modes and initial levels. */ + void begin() { + fastPinMode(ClkPin, 1); + fastDigitalWrite(ClkPin, 0); + fastPinMode(CsPin, 1); + fastDigitalWrite(CsPin, 1); + fastPinMode(DoutPin, 0); + fastPinMode(DinPin, 1); + } + //---------------------------------------------------------------------------- + /** Read MCP3204 12-bit ADC + * \return 16-bit value read. + */ + inline __attribute__((always_inline)) + uint16_t read(uint8_t config) { + uint16_t v = 0; + fastDigitalWrite(CsPin, 0); + // Start bit. + writeBit(true); + // Mode bit. + writeBit(config & 8); + // D2 channel bit. + writeBit(config & 4); + // D1 channel bit. + writeBit(config & 2); + // D0 channel bit and start sample. + writeBit(config & 1); + // Extra sample time. + if (UsecDelay){ + delayMicroseconds(UsecDelay); + } + // End sample cycle. + writeBit(true); + // Null bit. + writeBit(true); + // Data bits. + readBit(v, 11); + readBit(v, 10); + readBit(v, 9); + readBit(v, 8); + readBit(v, 7); + readBit(v, 6); + readBit(v, 5); + readBit(v, 4); + readBit(v, 3); + readBit(v, 2); + readBit(v, 1); + readBit(v, 0); + fastDigitalWrite(CsPin, 1); + return v; + } + private: + //---------------------------------------------------------------------------- + /** delay n nops + * \param[in] n nops to delay, must be a constant so compiler optimizes if(). + */ + inline __attribute__((always_inline)) + void delayCycles(uint8_t n) { + if (n & 1) asm volatile("nop\n\t"); + if (n & 2) asm volatile("nop\n\t" "nop\n\t"); + if (n & 4) asm volatile("nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"); + } + //---------------------------------------------------------------------------- + /** clock for don't care bits + *\param[in] delayBefore if true, delay before raising clock*/ + inline __attribute__((always_inline)) + void writeBit(bool value) { + fastDigitalWrite(DinPin, value); + fastDigitalWrite(ClkPin, 1); + delayCycles(2); + fastDigitalWrite(ClkPin, 0); + } + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + void readBit(uint16_t &v, uint8_t b, uint8_t delayRead = 1) { + delayCycles(2); + fastDigitalWrite(ClkPin, 1); + delayCycles(delayRead); + if (fastDigitalRead(DoutPin)) v |= (1 << b); + fastDigitalWrite(ClkPin, 0); + } +}; +//============================================================================== +// MCP3204 and MCP3208 use the same code. +template +class MCP3208 : public MCP3204 { +}; +#endif // MCP320X_h \ No newline at end of file diff --git a/libraries/DigitalIO/attic/MCP355X.h b/libraries/DigitalIO/attic/MCP355X.h new file mode 100644 index 0000000..0cde640 --- /dev/null +++ b/libraries/DigitalIO/attic/MCP355X.h @@ -0,0 +1,126 @@ +#ifndef MCP355X_h +#define MCP355X_h +#include +// Overflow values. +const int32_t MCP355X_OVH = 2097152L; +const int32_t MCP355X_OVL = -2097153L; +const int32_t MCP355X_ERR = 0X80000000; +const uint8_t MCP355X_TO_MS = 100; +//============================================================================== +template +class MCP355X { + public: + //---------------------------------------------------------------------------- + /** Set pin modes and initial levels. */ + void begin(bool singleMode = true) { + m_singleMode = singleMode; + fastPinMode(SdoPin, 0); + fastPinMode(SckPin, 1); + fastDigitalWrite(SckPin, 1); + fastPinMode(CsPin, 1); + fastDigitalWrite(CsPin, 1); + if (!m_singleMode) { + // Wait for conversion to complete. + delay(100); + // Start continuous conversion mode. + fastDigitalWrite(CsPin, 0); + } + } + //---------------------------------------------------------------------------- + /** Read MCP355X 22-bit ADC + * \return 22-bit value. + */ + inline __attribute__((always_inline)) + int32_t read() { + uint8_t t = 0; + uint8_t v3 = 0; + if (m_singleMode) { + // Start conversion. + fastDigitalWrite(CsPin, 0); + // Delay at least 10 usec to avoid RDY glitch on exit from Shutdown. + delay(1); + // Toggle CsPin to indicate single conversion mode. + fastDigitalWrite(CsPin, 1); + // Wait for conversion to complete. + while (1) { + delay(1); + fastDigitalWrite(CsPin, 0); + // Delay while RDY settles. + delayCycles(4); + if (!fastDigitalRead(SdoPin)) break; + fastDigitalWrite(CsPin, 1); + if (t++ > MCP355X_TO_MS) return MCP355X_ERR; + } + } else { + while (1) { + if (!fastDigitalRead(SdoPin)) break; + delay(1); + if (t++ > MCP355X_TO_MS) return MCP355X_ERR; + } + } + uint8_t v2 = readByte(); + uint8_t v1 = readByte(); + uint8_t v0 = readByte(); + + // The 25th falling edge of SCK changes SDO/RDY from Data mode to RDY mode. + uint8_t dummy = 0; + readBit(dummy, 0); + + if (m_singleMode) { + fastDigitalWrite(CsPin, 1); + } + if ((v2 & 0XE0) == 0X20) { + // Negative in range so extend sign bit. + v2 |= 0XC0; + v3 = 0XFF; + } else if (v2 & 0X40) { + // Overflow high. Cause value to be >= MCP355X_OVH. + if (v2 & 0X20) v2 &= 0X3F; + } else if (v2 & 0X80) { + // Overflow low. Cause value to be <= MCP355X_OVH. + if ((v2 & 0X20) == 0) v2 |= 0X40; + v3 = 0XFF; + } + uint16_t v_high = (v3 << 8) | v2; + uint16_t v_low = (v1 << 8) | v0; + return ((uint32_t)v_high << 16) | v_low; + } + private: + //---------------------------------------------------------------------------- + /** delay n nops + * \param[in] n nops to delay, must be a constant so compiler optimizes if(). + */ + inline __attribute__((always_inline)) + void delayCycles(uint8_t n) { + if (n & 1) asm volatile("nop\n\t"); + if (n & 2) asm volatile("nop\n\t" "nop\n\t"); + if (n & 4) asm volatile("nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"); + } + //---------------------------------------------------------------------------- + // Default delay yields about 2 MHz clock. + inline __attribute__((always_inline)) + void readBit(uint8_t &v, uint8_t b, uint8_t delayRead = 0) { + fastDigitalWrite(SckPin, 0); + delayCycles(2 + delayRead); + fastDigitalWrite(SckPin, 1); + if (fastDigitalRead(SdoPin)) v |= (1 << b); + delayCycles(delayRead); + } + //---------------------------------------------------------------------------- + inline __attribute__((always_inline)) + uint8_t readByte() { + uint8_t v = 0; + readBit(v, 7); + readBit(v, 6); + readBit(v, 5); + readBit(v, 4); + readBit(v, 3); + readBit(v, 2); + readBit(v, 1); + readBit(v, 0); + return v; + } + //---------------------------------------------------------------------------- + bool m_singleMode; +}; +#endif // MCP355X_h \ No newline at end of file diff --git a/libraries/DigitalIO/examples/DigitalPinBlink/DigitalPinBlink.ino b/libraries/DigitalIO/examples/DigitalPinBlink/DigitalPinBlink.ino new file mode 100644 index 0000000..4a698ba --- /dev/null +++ b/libraries/DigitalIO/examples/DigitalPinBlink/DigitalPinBlink.ino @@ -0,0 +1,12 @@ +#include +// Create object for pin 13 in output mode and demo toggle(). +DigitalPin<13> pin13(OUTPUT); + +void setup() {} + +void loop() { + // toggle is a two byte instruction that executes + // in two cycles or 125 ns on a 16 MHz CPU + pin13.toggle(); + delay(250); +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/DigitalPinConfigToggle/DigitalPinConfigToggle.ino b/libraries/DigitalIO/examples/DigitalPinConfigToggle/DigitalPinConfigToggle.ino new file mode 100644 index 0000000..06ad860 --- /dev/null +++ b/libraries/DigitalIO/examples/DigitalPinConfigToggle/DigitalPinConfigToggle.ino @@ -0,0 +1,18 @@ +// Demo of config() and fast toggle() function. +#include + +// Class with compile time pin number. +DigitalPin<13> pin13; + +void setup() { + // Set mode to OUTPUT and level LOW. + pin13.config(OUTPUT, LOW); +} +void loop() { + // toggle is a two byte instruction that executes + // in two cycles or 125 ns on a 16 MHz CPU + pin13.toggle(); + delay(100); + pin13.toggle(); + delay(400); +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/DigitalPinReadWrite/DigitalPinReadWrite.ino b/libraries/DigitalIO/examples/DigitalPinReadWrite/DigitalPinReadWrite.ino new file mode 100644 index 0000000..57be1fa --- /dev/null +++ b/libraries/DigitalIO/examples/DigitalPinReadWrite/DigitalPinReadWrite.ino @@ -0,0 +1,11 @@ +// Read pin 12 and write value to pin 13. +#include + +DigitalPin<12> pin12(INPUT); +DigitalPin<13> pin13(OUTPUT); + +void setup() {} + +void loop() { + pin13 = pin12; +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/DigitalPinShiftOut/DigitalPinShiftOut.ino b/libraries/DigitalIO/examples/DigitalPinShiftOut/DigitalPinShiftOut.ino new file mode 100644 index 0000000..98682bb --- /dev/null +++ b/libraries/DigitalIO/examples/DigitalPinShiftOut/DigitalPinShiftOut.ino @@ -0,0 +1,39 @@ +// Scope test for fast shiftOut function. +#include + +// Create clockPin in output mode with inital level LOW. +DigitalPin<12> clockPin(OUTPUT, LOW); + +// Create dataPin in output mode with inital level HIGH. +DigitalPin<13> dataPin(OUTPUT, HIGH); + +//------------------------------------------------------------------------------ +// Time to send one bit is ten cycles or 625 ns for 16 MHz CPU. +inline __attribute__((always_inline)) +void sendBit(uint8_t bit, uint8_t data) { + dataPin = data & (1 << bit); + clockPin = 1; + // may want a nop here - clock pulse is 125 ns wide + clockPin = 0; +} +//------------------------------------------------------------------------------ +// Time to send one byte is 5 usec. +void shiftOut(uint8_t bits) { + sendBit(7, bits); + sendBit(6, bits); + sendBit(5, bits); + sendBit(4, bits); + sendBit(3, bits); + sendBit(2, bits); + sendBit(1, bits); + sendBit(0, bits); +} +//------------------------------------------------------------------------------ +void setup() { + // Not used. +} +//------------------------------------------------------------------------------ +void loop() { + shiftOut(0X55); + delay(2); +} diff --git a/libraries/DigitalIO/examples/PinIOBegin/PinIOBegin.ino b/libraries/DigitalIO/examples/PinIOBegin/PinIOBegin.ino new file mode 100644 index 0000000..5f7e124 --- /dev/null +++ b/libraries/DigitalIO/examples/PinIOBegin/PinIOBegin.ino @@ -0,0 +1,24 @@ +// Use begin to assign pin numbers. +// Read pin 12 and write the value to pin 13. +#include + +// Declare the PinIO instances. +PinIO readPin; +PinIO writePin; +//------------------------------------------------------------------------------ +void setup() { + // Assign pin 12 to readPin. + readPin.begin(12); + + // input mode with pull-ups disabled + readPin.config(INPUT, LOW); + + // Assign pin 13 to writePin and set mode to output. + writePin.begin(13); + writePin.mode(OUTPUT); +} +//------------------------------------------------------------------------------ +void loop() { + // Copy the value read from readPin to writePin. + writePin.write(readPin.read()); +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/PinIOConfigToggle/PinIOConfigToggle.ino b/libraries/DigitalIO/examples/PinIOConfigToggle/PinIOConfigToggle.ino new file mode 100644 index 0000000..3bf3e00 --- /dev/null +++ b/libraries/DigitalIO/examples/PinIOConfigToggle/PinIOConfigToggle.ino @@ -0,0 +1,16 @@ +// Test the config() and toggle() functions. +#include + +// Set runtime pin number. +PinIO pin13(13); + +void setup() { + // set mode to OUTPUT and level LOW + pin13.config(OUTPUT, LOW); +} +void loop() { + pin13.toggle(); + delay(100); + pin13.toggle(); + delay(400); +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/PinIOReadWrite/PinIOReadWrite.ino b/libraries/DigitalIO/examples/PinIOReadWrite/PinIOReadWrite.ino new file mode 100644 index 0000000..8b225d5 --- /dev/null +++ b/libraries/DigitalIO/examples/PinIOReadWrite/PinIOReadWrite.ino @@ -0,0 +1,16 @@ +// Read pin 12 and write the value to pin 13. +#include + +PinIO readPin(12); +PinIO writePin(13); + +void setup() { + // Set input mode and disable pull-up. + readPin.config(INPUT, LOW); + + // set output mode + writePin.mode(OUTPUT); +} +void loop() { + writePin.write(readPin.read()); +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/ScanI2cBus/ScanI2cBus.ino b/libraries/DigitalIO/examples/ScanI2cBus/ScanI2cBus.ino new file mode 100644 index 0000000..6132a3f --- /dev/null +++ b/libraries/DigitalIO/examples/ScanI2cBus/ScanI2cBus.ino @@ -0,0 +1,78 @@ +/* Scan I2C bus for devices. + * + * For I2C write addresses: the scanner sends a start, + * the write address, looks for an ACK, then sends a stop. + * + * For I2C read addresses: the scanner sends a start, the + * read address, looks for an ACK. If there is an ACK, it + * reads a byte and NACKs it. Finally it sends a stop. + * + * When the I2C chip responds to the read address, it + * outputs data and will miss a stop condition sent + * immediately after the read address (bus contention). + * + * If the I2C chip misses the stop condition, the + * address scanner will see ghost addresses until the + * read ends randomly. By reading a byte after any read + * address that ACKs, there is a chance to NACK the read + * and properly end the I2C transaction. + */ +#include + +// Set pin numbers for your configuration. +const uint8_t SDA_PIN = A4; +const uint8_t SCL_PIN = A5; + +SoftI2cMaster i2c(SCL_PIN, SDA_PIN); +//FastI2cMaster i2c; +//------------------------------------------------------------------------------ +void setup() { + + Serial.begin(9600); + while (!Serial); + + if (!digitalRead(SDA_PIN) && !digitalRead(SCL_PIN)) { + Serial.println("External pull-up resistors appear to be missing."); + Serial.println("Many false responses may be detected."); + Serial.println("Type any character to continue."); + + while (!Serial.available()); + Serial.println(); + + } + uint8_t add = 0; + bool found = false; + do { + bool wr = i2c.transfer(add | I2C_WRITE, 0, 0); + bool rd = i2c.transfer(add | I2C_READ, 0, 0, I2C_CONTINUE); + if (rd) { + uint8_t dummy; + // Must read byte, send NACK, and issue STOP. + i2c.transferContinue(&dummy, 1); + } + if (rd || wr) { + found = true; + Serial.print("Device at address: 0X"); + Serial.print(add, HEX); + Serial.print(" responds to "); + if (rd) Serial.print("Read"); + if (rd && wr) Serial.print(" and "); + if (wr) Serial.print("Write"); + Serial.println('.'); + } + add += 2; + } + while (add); + + if (!found) { + Serial.println("No devices found."); + } + Serial.println("Done"); +} +//------------------------------------------------------------------------------ +void loop() { + // Not used. +} + + + diff --git a/libraries/DigitalIO/examples/SoftDS1307Utility/SoftDS1307Utility.ino b/libraries/DigitalIO/examples/SoftDS1307Utility/SoftDS1307Utility.ino new file mode 100644 index 0000000..3747b96 --- /dev/null +++ b/libraries/DigitalIO/examples/SoftDS1307Utility/SoftDS1307Utility.ino @@ -0,0 +1,324 @@ +// Utility sketch to explore DS1307 and demonstrate software I2C Master. +// + +#include + +// Set pin numbers for your configuration. +const uint8_t SDA_PIN = A4; +const uint8_t SCL_PIN = A5; + +//SoftI2cMaster rtc(SCL_PIN, SDA_PIN); +FastI2cMaster rtc; + +// i2c 8-bit address for DS1307. low bit is read/write +#define DS1307ADDR 0XD0 +//------------------------------------------------------------------------------ +/* + * Read 'count' bytes from the DS1307 starting at 'address'. + */ +uint8_t readDS1307(uint8_t address, uint8_t *buf, uint8_t count) { + + // Send address of data. + if (!rtc.transfer(DS1307ADDR | I2C_WRITE, &address, 1)) return false; + + // Read data. + return rtc.transfer(DS1307ADDR | I2C_READ, buf, count); +} +//------------------------------------------------------------------------------ +/* + * write 'count' bytes to DS1307 starting at 'address'. + */ +uint8_t writeDS1307(uint8_t address, uint8_t *buf, uint8_t count) { + + // Write address and continue transfer for write of data. + if (!rtc.transfer(DS1307ADDR | I2C_WRITE, &address, 1, I2C_CONTINUE)) { + return false; + } + // Write data. + return rtc.transferContinue(buf, count); +} +//------------------------------------------------------------------------------ +void setup(void) { + Serial.begin(9600); +} +//------------------------------------------------------------------------------ +/** Store and print a string in flash memory.*/ +#define PgmPrint(x) Serial.print(F(x)) +/** Store and print a string in flash memory followed by a CR/LF.*/ +#define PgmPrintln(x) Serial.println(F(x)) +//------------------------------------------------------------------------------- +// Day of week U.S. convention. +char *Ddd[] = {"Bad", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; +//------------------------------------------------------------------------------ +void hexPrint(uint8_t v) { + Serial.print(v >> 4, HEX); + Serial.print(v & 0XF, HEX); +} +//------------------------------------------------------------------------------ +void hexPrintln(uint8_t v) { + hexPrint(v); + Serial.println(); +} +//------------------------------------------------------------------------------ +// read hex input +uint8_t hexRead(uint16_t* v) { + bool valid = false; + uint16_t n = 0; + while (!Serial.available()); + while (Serial.available()) { + uint8_t c = Serial.read(); + // Exit if end-of-line. + if (c == '\n' || c == '\r') { + delay(10); + // If CR/LF. + Serial.read(); + break; + } + n <<= 4; + if ('a' <= c && c <= 'f') { + n += c - ('a' - 10); + } + else if ('A' <= c && c <= 'F') { + n += c - ('A' - 10); + } + else if ('0' <= c && c <= '9') { + n += c - '0'; + } + else { + valid = false; + break; + } + delay(10); + valid = true; + } + if (!valid) { + PgmPrintln("Invalid entry"); + return false; + } + *v = n; + return true; +} +//------------------------------------------------------------------------------ +uint8_t bcdRead(uint8_t min, uint8_t max, uint8_t* n) { + uint16_t v; + if (!hexRead(&v)) return false; + uint8_t d = 10 * (v >> 4) + (v & 0XF); + if ((v >> 4) > 9 || (v & 0XF) > 9 || d < min || d > max) { + PgmPrintln("Invalid"); + return false; + } + *n = v; + return true; +} +//------------------------------------------------------------------------------ +void displayTime(void) { + uint8_t r[8]; + if (!readDS1307(0, r, 8)) { + PgmPrintln("Read Failed for display time"); + return; + } + PgmPrint("The current time is 20"); + // year + hexPrint(r[6]); + Serial.write('-'); + + // month + hexPrint(r[5]); + Serial.write('-'); + + // day + hexPrint(r[4]); + Serial.write(' '); + + Serial.print(Ddd[r[3] < 8 ? r[3] : 0]); + Serial.write(' '); + + // hour + hexPrint(r[2]); + Serial.write(':'); + + // minute + hexPrint(r[1]); + Serial.write(':'); + + // second + hexPrintln(r[0]); + + // Control register. + PgmPrint("Control Register: "); + hexPrintln(r[7]); +} +//------------------------------------------------------------------------------ +// dump registers and 56 bytes of RAM +void dumpAll(void) { + uint8_t buf[8]; + for (uint8_t a = 0; a < 64; a += 8) { + hexPrint(a); + Serial.write(' '); + if (!readDS1307(a, buf, 8)) { + PgmPrint("read failed for dumpAll"); + return; + } + for (uint8_t i = 0; i < 8; i++) { + Serial.write(' '); + hexPrint(buf[i]); + } + Serial.println(); + } +} +//------------------------------------------------------------------------------ +void fillNvRam(void) { + uint8_t buf[8]; + PgmPrint("Enter HEX value for all NV RAM locations (00-FF): "); + uint16_t v; + if (!hexRead(&v)) return; + hexPrint(v); + for (uint8_t a = 8; a < 64; a ++) { + if (!writeDS1307(a, (uint8_t *)&v, 1)) { + PgmPrintln("write failed for fillNvRam"); + } + } +} +//------------------------------------------------------------------------------ +// set control register +/* +The DS1307 control register is used to control the operation of the SQW/OUT pin. ++-----------------------------------------------+ +|BIT 7|BIT 6|BIT 5|BIT 4|BIT 3|BIT 2|BIT 1|BIT 0| ++-----------------------------------------------+ +|OUT | 0 | 0 |SQWE | 0 | 0 | RS1 | RS0 | ++-----------------------------------------------+ + +OUT (Output control): This bit controls the output level of the SQW/OUT pin +when the square wave output is disabled. If SQWE = 0, the logic level on the +SQW/OUT pin is 1 if OUT = 1 and is 0 if OUT = 0. + +SQWE (Square Wave Enable): This bit, when set to a logic 1, will enable the +oscillator output. The frequency of the square wave output depends upon the +value of the RS0 and RS1 bits. With the square wave output set to 1Hz, the +clock registers update on the falling edge of the square wave. + +Square wave Output Frequency for SQWE = 1. +RS1 RS0 FREQUENCY + 0 0 1Hz + 0 1 4.096kHz + 1 0 8.192kHz + 1 1 32.768kHz +*/ +void setControl(void) { + PgmPrintln("SQW/OUT pin: "); + PgmPrintln("(00) Low"); + PgmPrintln("(10) 1Hz"); + PgmPrintln("(11) 4.096kHz"); + PgmPrintln("(12) 8.192kHz"); + PgmPrintln("(13) 32.768kHz"); + PgmPrintln("(80) High"); + PgmPrint("Enter control: "); + uint16_t r; + if (!hexRead(&r)) return; + hexPrintln(r); + if (!writeDS1307(7, (uint8_t *)&r, 1)) { + PgmPrint("Write Failed for setControl"); + } +} +//------------------------------------------------------------------------------ +void setDate(void) { + uint8_t r[4]; + PgmPrint("Enter year (00-99): "); + if (!bcdRead(0, 99, &r[3])) return; + hexPrintln(r[3]); + PgmPrint("Enter month (01-12): "); + if (!bcdRead(1, 12, &r[2])) return; + hexPrintln(r[2]); + PgmPrint("Enter day (01-31): "); + if (!bcdRead(1, 31, &r[1])) return; + hexPrintln(r[1]); + PgmPrint("Enter day of week (01-07, Sun-Sat): "); + if (!bcdRead(1, 7, &r[0])) return; + hexPrintln(r[0]); + + if (!writeDS1307(3, r, 4)) { + PgmPrintln("Write failed for setDate"); + } +} +//------------------------------------------------------------------------------ +void setNvRam() { + uint8_t u; + uint16_t a, v; + while (true) { + PgmPrint("Enter zero to quit or Hex address (8-3F):"); + if (!hexRead(&a) || a == 0) return; + if (a < 8 || a > 0X3F) { + PgmPrintln("Invalid address"); + return; + } + hexPrintln(a); + if (!readDS1307(a, &u, 1)) { + PgmPrintln("Read failed"); + return; + } + PgmPrint("Current value: "); + hexPrintln(u); + PgmPrint("Enter new HEX value (00-FF): "); + if (!hexRead(&v)) return; + hexPrintln(v); + if (!writeDS1307(a, (uint8_t *)&v, 1)) { + PgmPrint("Write Failed"); + return; + } + } +} +//------------------------------------------------------------------------------ +void setTime(void) { + uint8_t r[3]; + PgmPrint("Enter hours (00-23): "); + if (!bcdRead(0, 23, &r[2])) return; + hexPrintln(r[2]); + PgmPrint("Enter minutes (00-59): "); + if (!bcdRead(0, 59, &r[1])) return; + hexPrintln(r[1]); + PgmPrint("Enter seconds (00-59): "); + if (!bcdRead(0, 59, &r[0])) return; + hexPrintln(r[0]); + + if (!writeDS1307(0, r, 3)) { + PgmPrintln("write failed in setTime"); + return; + } +} +//------------------------------------------------------------------------------ +void loop(void) { + Serial.println(); + displayTime(); + while (Serial.read() >= 0) {} + PgmPrintln("\nOptions are:"); + PgmPrintln("(0) Display date and time"); + PgmPrintln("(1) Set time"); + PgmPrintln("(2) Set date"); + PgmPrintln("(3) Set Control"); + PgmPrintln("(4) Dump all"); + PgmPrintln("(5) Fill NV RAM"); + PgmPrintln("(6) Set NV RAM value"); + PgmPrint("Enter option: "); + + uint16_t n; + if (!hexRead(&n)) return; + Serial.println(n, DEC); + if (n == 0) return; + Serial.println(); + if (n == 1) { + setTime(); + } else if (n == 2) { + setDate(); + } else if (n == 3) { + setControl(); + } else if (n == 4) { + dumpAll(); + } else if (n == 5) { + fillNvRam(); + } else if (n == 6) { + setNvRam(); + } else { + PgmPrintln("Invalid option"); + } +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/testArduino/testArduino.ino b/libraries/DigitalIO/examples/testArduino/testArduino.ino new file mode 100644 index 0000000..13afe04 --- /dev/null +++ b/libraries/DigitalIO/examples/testArduino/testArduino.ino @@ -0,0 +1,14 @@ +// Scope test for write timing with Arduino digitaWrite(). +const uint8_t PIN13 = 13; + +void setup() { + // Set mode to OUTPUT. + pinMode(PIN13, OUTPUT); +} +void loop() { + digitalWrite(PIN13, HIGH); + digitalWrite(PIN13, LOW); + digitalWrite(PIN13, HIGH); + digitalWrite(PIN13, LOW); + delay(1); +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/testDigitalPin/testDigitalPin.ino b/libraries/DigitalIO/examples/testDigitalPin/testDigitalPin.ino new file mode 100644 index 0000000..1ac0c02 --- /dev/null +++ b/libraries/DigitalIO/examples/testDigitalPin/testDigitalPin.ino @@ -0,0 +1,19 @@ +// Scope test for write timing of DigitalPin functions. +#include + +// Class with compile time pin number. +DigitalPin<13> pin13; + +void setup() { + // set mode to OUTPUT + pin13.mode(OUTPUT); +} +void loop() { + pin13.high(); + pin13.low(); + pin13.write(1); + pin13.write(0); + pin13.toggle(); + pin13.toggle(); + delay(1); +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/testFastDigital/testFastDigital.ino b/libraries/DigitalIO/examples/testFastDigital/testFastDigital.ino new file mode 100644 index 0000000..03f38d5 --- /dev/null +++ b/libraries/DigitalIO/examples/testFastDigital/testFastDigital.ino @@ -0,0 +1,13 @@ +// Test fastDigital function timing with a scope. +#include +const uint8_t PIN = 13; +void setup() { + fastPinMode(PIN, OUTPUT); +} +void loop() { + fastDigitalWrite(PIN, HIGH); + fastDigitalWrite(PIN, LOW); + fastDigitalToggle(PIN); + fastDigitalToggle(PIN); + delay(1); +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/testPinIO/testPinIO.ino b/libraries/DigitalIO/examples/testPinIO/testPinIO.ino new file mode 100644 index 0000000..4f72823 --- /dev/null +++ b/libraries/DigitalIO/examples/testPinIO/testPinIO.ino @@ -0,0 +1,19 @@ +// Scope test for PinIO class write timing. +#include + +// Class with runtime pin numbers. +PinIO pin(13); + +void setup() { + // Set mode to OUTPUT. + pin.mode(OUTPUT); +} +void loop() { + pin.high(); + pin.low(); + pin.write(1); + pin.write(0); + pin.toggle(); + pin.toggle(); + delay(1); +} \ No newline at end of file diff --git a/libraries/DigitalIO/examples/testSoftSPI/testSoftSPI.ino b/libraries/DigitalIO/examples/testSoftSPI/testSoftSPI.ino new file mode 100644 index 0000000..7b9544f --- /dev/null +++ b/libraries/DigitalIO/examples/testSoftSPI/testSoftSPI.ino @@ -0,0 +1,37 @@ +// Scope test for development - assumes 328 processor. +#include + +const uint8_t SOFT_SPI_MISO_PIN = 7; +const uint8_t SOFT_SPI_MOSI_PIN = 8; +const uint8_t SOFT_SPI_SCK_PIN = 9; +const uint8_t SPI_MODE = 0; + +SoftSPI spi; + +int test; +void setup() { + Serial.begin(9600); + spi.begin(); + while(1) { + Serial.println("Enter:"); + Serial.println("R - Receive"); + Serial.println("S - Send"); + Serial.println("T - Transfer"); + while ((test = Serial.read()) <= 0) {} + test = toupper(test); + if (strchr("RST", test)) break; + Serial.println("Invalid entry"); + }; + Serial.print("Starting test "); + Serial.println((char)test); +} +void loop() { + if (test == 'S') spi.send(0X55); + if (test == 'R') { + Serial.println(spi.receive(), HEX); + } + if (test == 'T') { + Serial.println(spi.transfer(0XAA), HEX); + } + delay(10); +} \ No newline at end of file diff --git a/libraries/MySensors/examples/RelayWithButtonActuator/RelayWithButtonActuator.ino b/libraries/MySensors/examples/RelayWithButtonActuator/RelayWithButtonActuator.ino index 77b5f8d..7cc2a77 100644 --- a/libraries/MySensors/examples/RelayWithButtonActuator/RelayWithButtonActuator.ino +++ b/libraries/MySensors/examples/RelayWithButtonActuator/RelayWithButtonActuator.ino @@ -70,7 +70,7 @@ void incomingMessage(const MyMessage &message) { Serial.println("This is an ack from gateway"); } - if (message.type == V_LIGHT && strlen(msg.getString()) != 0) { + if (message.type == V_LIGHT) { // Change relay state state = message.getBool(); digitalWrite(RELAY_PIN, state?RELAY_ON:RELAY_OFF); diff --git a/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/ArialNumFontPlus.c b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/ArialNumFontPlus.c new file mode 100644 index 0000000..bbe7fd1 --- /dev/null +++ b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/ArialNumFontPlus.c @@ -0,0 +1,22 @@ +// SevenSegNumFontPlus.c +// Font type : Special (SubSet) +// Font size : 32x50 pixels +// Memory usage : 2204 bytes + +#include + +const uint8_t ArialNumFontPlus[2204] PROGMEM={ +0x20,0x32,0x30,0x0B, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF8,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x00,0x03,0xF8,0x1F,0x80,0x03,0xF0,0x0F,0xC0,0x07,0xE0,0x07,0xC0,0x07,0xC0,0x03,0xE0,0x0F,0xC0,0x03,0xE0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x1F,0x80,0x01,0xF0,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xFC,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x03,0xE0,0x07,0xC0,0x03,0xF0,0x0F,0xC0,0x01,0xF8,0x1F,0x80,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x7F,0xFC,0x00,0x00,0x1F,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x7F,0xF0,0x00,0x01,0xFF,0xF0,0x00,0x03,0xFD,0xF0,0x00,0x0F,0xF1,0xF0,0x00,0x0F,0xE1,0xF0,0x00,0x0F,0x81,0xF0,0x00,0x0F,0x01,0xF0,0x00,0x0C,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //1 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x7F,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xE0,0x07,0xE0,0x0F,0xF0,0x0F,0xC0,0x03,0xF0,0x0F,0x80,0x01,0xF0,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x3E,0x00,0x00,0xF8,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x00,0x7F,0x00,0x00,0x00,0xFE,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xF8,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x00,0x7F,0x00,0x00,0x00,0xFE,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xF8,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x1F,0x80,0x00,0x00,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 2 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x03,0xE0,0x1F,0xC0,0x07,0xC0,0x0F,0xC0,0x07,0x80,0x07,0xE0,0x0F,0x80,0x03,0xE0,0x0F,0x00,0x03,0xE0,0x0F,0x00,0x03,0xF0,0x0F,0x00,0x01,0xF0,0x00,0x00,0x03,0xF0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x07,0xFF,0x00,0x00,0x07,0xFF,0x00,0x00,0x07,0xFF,0x00,0x00,0x07,0xFF,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x01,0xF8,0x0F,0x80,0x01,0xF8,0x0F,0x80,0x03,0xF0,0x0F,0xC0,0x07,0xF0,0x07,0xE0,0x0F,0xE0,0x03,0xFC,0x3F,0xC0,0x01,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFC,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 3 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x03,0xFF,0x00,0x00,0x07,0xDF,0x00,0x00,0x07,0xDF,0x00,0x00,0x0F,0x9F,0x00,0x00,0x0F,0x9F,0x00,0x00,0x1F,0x1F,0x00,0x00,0x3E,0x1F,0x00,0x00,0x7E,0x1F,0x00,0x00,0x7C,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x01,0xF0,0x1F,0x00,0x03,0xE0,0x1F,0x00,0x03,0xE0,0x1F,0x00,0x07,0xC0,0x1F,0x00,0x07,0xC0,0x1F,0x00,0x0F,0x80,0x1F,0x00,0x1F,0x80,0x1F,0x00,0x1F,0x00,0x1F,0x00,0x3E,0x00,0x1F,0x00,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00, //4 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF0,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0xF0,0x00,0x0F,0x8F,0xFE,0x00,0x0F,0xBF,0xFF,0x80,0x0F,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xE0,0x1F,0xFF,0x07,0xF0,0x1F,0xE0,0x03,0xF0,0x1F,0xC0,0x01,0xF8,0x1F,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x3F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF0,0x1F,0x00,0x01,0xF0,0x1F,0x80,0x03,0xE0,0x0F,0xC0,0x07,0xE0,0x07,0xE0,0x1F,0xC0,0x03,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x00,0x01,0xFF,0xFE,0x00,0x00,0x7F,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 5 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x07,0xE0,0x07,0xE0,0x07,0xC0,0x03,0xF0,0x0F,0xC0,0x01,0xF0,0x0F,0x80,0x00,0xF8,0x1F,0x80,0x00,0xF8,0x1F,0x80,0x00,0xF8,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x03,0xF0,0x00,0x3F,0x1F,0xFC,0x00,0x3F,0x7F,0xFE,0x00,0x3F,0xFF,0xFF,0x80,0x3F,0xFF,0xFF,0xC0,0x3F,0xF8,0x0F,0xE0,0x3F,0xE0,0x03,0xF0,0x3F,0xE0,0x03,0xF0,0x3F,0xC0,0x01,0xF8,0x3F,0x80,0x00,0xF8,0x3F,0x80,0x00,0xF8,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x1F,0x00,0x00,0x7C,0x1F,0x80,0x00,0x78,0x1F,0x80,0x00,0xF8,0x1F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0xC0,0x01,0xF0,0x07,0xF0,0x03,0xF0,0x03,0xF8,0x0F,0xE0,0x01,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0x80,0x00,0x7F,0xFF,0x00,0x00,0x1F,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 6 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x1F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 7 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x03,0xF8,0x1F,0xC0,0x07,0xE0,0x07,0xE0,0x07,0xC0,0x03,0xE0,0x0F,0xC0,0x03,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x03,0xE0,0x07,0xC0,0x01,0xF0,0x07,0x80,0x00,0xFC,0x3F,0x00,0x00,0x7F,0xFF,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xF0,0x0F,0xE0,0x0F,0xC0,0x03,0xF0,0x0F,0x80,0x01,0xF0,0x1F,0x80,0x01,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x03,0xF0,0x07,0xC0,0x07,0xE0,0x03,0xF0,0x0F,0xC0,0x01,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x3F,0xFC,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x03,0xF8,0x1F,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xF0,0x0F,0xC0,0x03,0xF0,0x0F,0xC0,0x03,0xF8,0x1F,0x80,0x01,0xF8,0x1F,0x80,0x01,0xF8,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x80,0x01,0xFC,0x1F,0x80,0x01,0xFC,0x0F,0xC0,0x03,0xFC,0x0F,0xC0,0x03,0xFC,0x07,0xE0,0x07,0xFC,0x07,0xE0,0x07,0xFC,0x03,0xF8,0x1F,0xFC,0x01,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFC,0x00,0xFF,0xFE,0xFC,0x00,0x7F,0xF8,0xFC,0x00,0x1F,0xE0,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF0,0x1F,0x00,0x03,0xF0,0x1F,0x80,0x07,0xE0,0x0F,0xC0,0x0F,0xE0,0x0F,0xE0,0x3F,0xC0,0x07,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x00,0x01,0xFF,0xFE,0x00,0x00,0xFF,0xF8,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 9 neu +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // : +}; diff --git a/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/TouchDisplaySceneControllerSensor.ino b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/TouchDisplaySceneControllerSensor.ino new file mode 100644 index 0000000..37ebf29 --- /dev/null +++ b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/TouchDisplaySceneControllerSensor.ino @@ -0,0 +1,174 @@ + +/* + * Touch Display Scene Controller build using a touch enabled tft display + * attached to a ATMega 2560. This example fetches time from controller and sends + * in scene commands to the controller. + * Short press sends V_SCENE_ON and long press (>0.5sec) sends V_SCENE_OFF. + * + * Henrik Ekblad + * + * This example uses: + * UTFT library: http://www.henningkarlsen.com/electronics/library.php?id=51 + * Convert your own images here: http://www.henningkarlsen.com/electronics/t_imageconverter565.php + * + * The 3v3 output on the ATMega2560 is especially bad. I had to use a step down + * on the 5V output to get solid transmissions. + * + * The shield does not seem like sharing SPI with RF24 so you'll have to + * activate SOFTSPI-define in MySenors/util/RF24_config.h + * + * Connect radio + * ---------------------------------- + * Radio Arduino Pin + * ---------------------------------- + * GND GND + * 5V -> Step down -> 3V3 (see buying guide for help finding step-down) + * SCK 14 + * MOSI 15 + * MISO 16 + * CE 17 + * CSN 18 + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "arial_bold.c" +#include "ArialNumFontPlus.c" +#include "logo.c" + +#define CHILD_ID 1 + +int LONG_PRESS = 500; // Number of millisecons to trinnger scene off for button push +int RESEND_DEBOUNCE = 2000; // Number of millisecons interval between sending of same + // scene number again. + // This is used to avoid unwanted re-trigger when using + // a sensetive touch diplay. + +// Add your buttons here. Max is 5 if you still want time at the top. +char *buttons[] = { + "Good Morning", + "Clean Up!", + "All Lights Off", + "Music On/Off" + }; + +const int buttonCount = sizeof(buttons)/sizeof(char *); +const int padding = 10; +const int topBarHeight = 60; + +MySensor gw(17,18); +MyMessage on(CHILD_ID, V_SCENE_ON); +MyMessage off(CHILD_ID, V_SCENE_OFF); + +UTFT myGLCD(ITDB32S,38,39,40,41); +UTouch myTouch( 6, 5, 4, 3, 2); +UTFT_Buttons myButtons(&myGLCD, &myTouch); +boolean timeReceived = false; +unsigned long lastTimeUpdate=0, lastRequest=0; +char timeBuf[20]; + + +void setup() +{ + gw.begin(NULL, AUTO, false, 0); + + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont((uint8_t*)ArialNumFontPlus); + myGLCD.setColor(100, 255, 100); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawBitmap (0, 0, 60, 60, (unsigned int*)logo); + + myTouch.InitTouch(); + myTouch.setPrecision(PREC_MEDIUM); + + myButtons.setButtonColors(VGA_WHITE, VGA_GRAY, VGA_WHITE, VGA_RED, VGA_BLUE); + myButtons.setTextFont((uint8_t*)arial_bold); + int height = (myGLCD.getDisplayYSize()-topBarHeight-(padding*(buttonCount+2)))/buttonCount; + + // Add buttons + for (int i=0; i=0) { + bool longPress = millis()-now>LONG_PRESS; + + if (pressedButton != lastPressedButton || now-lastPressedButtonTime > RESEND_DEBOUNCE) { + if (longPress) { + gw.send(off.set(pressedButton)); + Serial.print("Long pressed: "); + } else { + gw.send(on.set(pressedButton)); + Serial.print("Pressed: "); + } + Serial.println(pressedButton); + lastPressedButton = pressedButton; + lastPressedButtonTime=now; + } + } + } + + // If no time has been received yet, request it every 10 second from controller + // When time has been received, request update every hour + if ((!timeReceived && now-lastRequest > 10*1000) + || (timeReceived && now-lastRequest > 60*1000*60)) { + // Request time from controller. + Serial.println("requesting time"); + gw.requestTime(receiveTime); + lastRequest = now; + } + + // Update time every second + if (timeReceived && now-lastTimeUpdate > 1000) { + printTime(); + lastTimeUpdate = now; + } +} + + + +// This is called when a new time value was received +void receiveTime(unsigned long time) { + // Ok, set incoming time + setTime(time); + timeReceived = true; +} + +void printTime() { + sprintf(timeBuf, "%02d:%02d:%02d", hour(), minute(), second()); + myGLCD.print(timeBuf, 60,7); +} + + diff --git a/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/Ubuntu.c b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/Ubuntu.c new file mode 100644 index 0000000..4d7ce1c --- /dev/null +++ b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/Ubuntu.c @@ -0,0 +1,110 @@ +// Ubuntu.c +// Font type : Full (95 characters) +// Font size : 24x32 pixels +// Memory usage : 9124 bytes + +#include + +const uint8_t Ubuntu[9124] PROGMEM={ +0x18,0x20,0x20,0x5F, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // +0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ! +0x00,0x00,0x00,0x01,0xC0,0xE0,0x03,0xE1,0xF0,0x03,0xE1,0xF0,0x03,0xE1,0xF0,0x01,0xE0,0xF0,0x00,0xE0,0x70,0x01,0xC0,0xE0,0x03,0xC1,0xE0,0x0F,0x87,0xC0,0x0E,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x70,0x00,0x38,0x70,0x00,0x70,0xE0,0x00,0x70,0xE0,0x00,0x70,0xE0,0x00,0x70,0xE0,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0xE1,0xC0,0x00,0xE1,0xC0,0x00,0xE1,0xC0,0x01,0xC3,0x80,0x01,0xC3,0x80,0x01,0xC3,0x80,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x03,0x87,0x00,0x03,0x87,0x00,0x03,0x87,0x00,0x03,0x87,0x00,0x07,0x0E,0x00,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // # +0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x7F,0x00,0x01,0xFF,0xC0,0x03,0xFF,0xC0,0x07,0x80,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x03,0xF8,0x00,0x01,0xFE,0x00,0x00,0x7F,0x80,0x00,0x0F,0xC0,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x02,0x01,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0x80,0x01,0xFE,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00, // $ +0x00,0x00,0x00,0x07,0x80,0x70,0x0F,0xC0,0xE0,0x0C,0xC0,0xE0,0x18,0x61,0xC0,0x18,0x63,0x80,0x18,0x63,0x80,0x18,0x67,0x00,0x18,0x67,0x00,0x18,0x6E,0x00,0x0C,0xDC,0x00,0x0F,0xDC,0x00,0x07,0xB8,0x00,0x00,0x3B,0xC0,0x00,0x77,0xE0,0x00,0x76,0x60,0x00,0xEC,0x30,0x01,0xCC,0x30,0x01,0xCC,0x30,0x03,0x8C,0x30,0x03,0x8C,0x30,0x07,0x0C,0x30,0x0E,0x06,0x60,0x0E,0x07,0xE0,0x1C,0x03,0xC0,0x00,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,0xFF,0x00,0x01,0xFF,0x00,0x03,0xC7,0x80,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0x87,0x00,0x01,0xCF,0x00,0x01,0xFE,0x00,0x00,0xFC,0x00,0x01,0xF0,0x70,0x03,0xF8,0x70,0x03,0xBC,0x70,0x07,0x1E,0x60,0x0E,0x0F,0xE0,0x0E,0x07,0xE0,0x0E,0x03,0xC0,0x0E,0x01,0xC0,0x0F,0x03,0xE0,0x07,0x8F,0xE0,0x07,0xFF,0x70,0x03,0xFE,0x70,0x00,0xF8,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,0x18,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' +0x00,0x07,0x00,0x00,0x0F,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0x00,0x00,0x01,0x00, // ( +0x00,0x60,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x00,0x60,0x00,0x00,0x40,0x00, // ) +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x02,0x1C,0x20,0x03,0xC9,0xE0,0x07,0xFF,0xF0,0x01,0xFF,0xC0,0x00,0x1C,0x00,0x00,0x36,0x00,0x00,0x77,0x00,0x00,0xF3,0x80,0x01,0xE3,0xC0,0x00,0xE3,0x80,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x0F,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x78,0x00,0x00,0x70,0x00,0x00,0x00,0x00, // , +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // . +0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00, // / + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x03,0xC7,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x30,0xE0,0x0E,0x78,0xE0,0x0E,0x78,0xE0,0x0E,0x78,0xE0,0x0E,0x30,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0xC7,0x80,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x7C,0x00,0x00,0xFC,0x00,0x03,0xFC,0x00,0x07,0x9C,0x00,0x02,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 1 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x03,0xFF,0x00,0x07,0xFF,0x80,0x07,0x87,0xC0,0x02,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 2 +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x0F,0xFF,0x00,0x0F,0xFF,0x80,0x06,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x80,0x00,0x07,0xC0,0x00,0x01,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xE0,0x04,0x03,0xC0,0x0F,0xFF,0x80,0x0F,0xFF,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 3 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x0F,0x80,0x00,0x1F,0x80,0x00,0x3F,0x80,0x00,0x3B,0x80,0x00,0x73,0x80,0x00,0xF3,0x80,0x01,0xE3,0x80,0x01,0xC3,0x80,0x03,0x83,0x80,0x03,0x83,0x80,0x07,0x03,0x80,0x0F,0x03,0x80,0x0E,0x03,0x80,0x1E,0x03,0x80,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 4 +0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x80,0x03,0xFF,0x80,0x03,0xFF,0x80,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xF0,0x00,0x07,0xFE,0x00,0x07,0xFF,0x00,0x00,0x1F,0x80,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x0C,0x07,0x80,0x0F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 5 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x1F,0xC0,0x00,0x7F,0xC0,0x00,0xFC,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x06,0x7E,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0x03,0xC0,0x0E,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x07,0x00,0xE0,0x07,0x01,0xC0,0x07,0xC3,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 6 +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 7 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x03,0xC7,0xC0,0x07,0x03,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x81,0xC0,0x03,0xC3,0x80,0x03,0xF7,0x00,0x01,0xFE,0x00,0x01,0xFF,0x80,0x03,0xCF,0xC0,0x07,0x03,0xC0,0x06,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x83,0xC0,0x07,0xFF,0xC0,0x03,0xFF,0x80,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0x87,0xC0,0x07,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x00,0xE0,0x07,0x81,0xE0,0x07,0xFF,0xE0,0x03,0xFF,0xE0,0x00,0xFE,0xE0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x7E,0x00,0x07,0xFC,0x00,0x07,0xF8,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 9 +0x00,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,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x3C,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x01,0xE0,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ; +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0xE0,0x00,0x0F,0xE0,0x00,0x3F,0xC0,0x00,0xFE,0x00,0x03,0xF8,0x00,0x0F,0xC0,0x00,0x0F,0x00,0x00,0x0F,0xC0,0x00,0x07,0xF8,0x00,0x00,0xFE,0x00,0x00,0x3F,0xC0,0x00,0x0F,0xE0,0x00,0x01,0xE0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // < +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // = +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x0F,0x00,0x00,0x0F,0xE0,0x00,0x07,0xF8,0x00,0x00,0xFE,0x00,0x00,0x3F,0x80,0x00,0x07,0xE0,0x00,0x01,0xE0,0x00,0x07,0xE0,0x00,0x3F,0xC0,0x00,0xFE,0x00,0x07,0xF8,0x00,0x0F,0xE0,0x00,0x0F,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // > +0x00,0x00,0x00,0x00,0xFE,0x00,0x03,0xFF,0x80,0x03,0xFF,0xC0,0x01,0x03,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x3C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,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,0x3F,0x00,0x00,0xFF,0x80,0x01,0xFF,0xC0,0x01,0xE1,0xE0,0x03,0x80,0xE0,0x03,0x80,0x70,0x07,0x00,0x70,0x07,0x00,0x70,0x07,0x07,0xF0,0x0E,0x1F,0xF0,0x0E,0x3F,0xF0,0x0E,0x3C,0x70,0x0E,0x78,0x70,0x0E,0x70,0x70,0x0E,0x70,0x70,0x0E,0x70,0x70,0x0E,0x70,0x70,0x0E,0x78,0x70,0x0E,0x38,0x70,0x07,0x3F,0xF0,0x07,0x1F,0xF0,0x07,0x07,0xE0,0x07,0x80,0x00,0x03,0xC0,0x00,0x03,0xC0,0x00,0x01,0xF0,0x00,0x00,0xFF,0xC0,0x00,0x7F,0xC0,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // @ +0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0xFF,0x00,0x00,0xF7,0x00,0x00,0xE7,0x00,0x00,0xE7,0x00,0x01,0xE7,0x80,0x01,0xC3,0x80,0x01,0xC3,0x80,0x03,0xC3,0xC0,0x03,0xC1,0xC0,0x03,0x81,0xC0,0x03,0x81,0xC0,0x07,0x81,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x0F,0x00,0xF0,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x1E,0x00,0x78,0x1C,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // A +0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x00,0x0F,0xFF,0x00,0x0F,0xFF,0x80,0x0E,0x07,0xC0,0x0E,0x03,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x03,0x80,0x0E,0x07,0x80,0x0F,0xFF,0x00,0x0F,0xFF,0x00,0x0F,0xFF,0x80,0x0E,0x03,0xC0,0x0E,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x01,0xE0,0x0E,0x07,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // B +0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x7F,0xE0,0x01,0xFF,0xE0,0x03,0xE0,0x40,0x03,0xC0,0x00,0x07,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0F,0x00,0x00,0x07,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x03,0xE0,0x40,0x01,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // C +0x00,0x00,0x00,0x0F,0xF0,0x00,0x0F,0xFE,0x00,0x0F,0xFF,0x00,0x0E,0x0F,0x80,0x0E,0x03,0x80,0x0E,0x03,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x01,0xE0,0x0E,0x01,0xC0,0x0E,0x03,0xC0,0x0E,0x03,0x80,0x0E,0x0F,0x80,0x0F,0xFF,0x00,0x0F,0xFE,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // D +0x00,0x00,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFF,0x80,0x07,0xFF,0x80,0x07,0xFF,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // E +0x00,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // F +0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0xFF,0xC0,0x01,0xFF,0xE0,0x03,0xE0,0xC0,0x03,0xC0,0x40,0x07,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0xC0,0xE0,0x03,0xE0,0xE0,0x01,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // G +0x00,0x00,0x00,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // H +0x00,0x00,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // I +0x00,0x00,0x00,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x04,0x03,0xC0,0x07,0x07,0x80,0x0F,0xFF,0x00,0x07,0xFE,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // J +0x00,0x00,0x00,0x0E,0x01,0xE0,0x0E,0x03,0xC0,0x0E,0x03,0x80,0x0E,0x07,0x80,0x0E,0x0F,0x00,0x0E,0x0E,0x00,0x0E,0x1C,0x00,0x0E,0x3C,0x00,0x0E,0x78,0x00,0x0E,0xF0,0x00,0x0F,0xE0,0x00,0x0F,0xE0,0x00,0x0F,0xF0,0x00,0x0E,0xF8,0x00,0x0E,0x7C,0x00,0x0E,0x3E,0x00,0x0E,0x1E,0x00,0x0E,0x0F,0x00,0x0E,0x07,0x80,0x0E,0x03,0xC0,0x0E,0x03,0xC0,0x0E,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // K +0x00,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // L +0x00,0x00,0x00,0x03,0x00,0x60,0x03,0x80,0xF0,0x07,0x80,0xF0,0x07,0x80,0xF0,0x06,0xC1,0xB0,0x06,0xC1,0xB0,0x06,0xE3,0xB0,0x06,0x63,0x30,0x06,0x63,0x30,0x06,0x77,0x30,0x06,0x36,0x30,0x06,0x36,0x30,0x06,0x3E,0x30,0x06,0x1C,0x38,0x0E,0x1C,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // M +0x00,0x00,0x00,0x07,0x80,0x70,0x07,0xC0,0x70,0x07,0xC0,0x70,0x07,0xE0,0x70,0x07,0xE0,0x70,0x07,0xF0,0x70,0x07,0x70,0x70,0x07,0x70,0x70,0x07,0x38,0x70,0x07,0x38,0x70,0x07,0x1C,0x70,0x07,0x1C,0x70,0x07,0x0E,0x70,0x07,0x0E,0x70,0x07,0x06,0x70,0x07,0x07,0x70,0x07,0x07,0x70,0x07,0x03,0xF0,0x07,0x03,0xF0,0x07,0x01,0xF0,0x07,0x01,0xF0,0x07,0x00,0xF0,0x07,0x00,0xF0,0x07,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // N +0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0x83,0xC0,0x0F,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x1C,0x00,0xF0,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0xF0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x83,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // O + +0x00,0x00,0x00,0x07,0xFC,0x00,0x07,0xFF,0x00,0x07,0xFF,0x80,0x07,0x03,0xC0,0x07,0x01,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x01,0xE0,0x07,0x03,0xC0,0x07,0xFF,0x80,0x07,0xFF,0x00,0x07,0xFC,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // P +0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0x83,0xC0,0x0F,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x1C,0x00,0xF0,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0xF0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x83,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0xFE,0x00,0x00,0x38,0x00,0x00,0x3C,0x00,0x00,0x1F,0x00,0x00,0x0F,0xE0,0x00,0x07,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00, // Q +0x00,0x00,0x00,0x0F,0xF8,0x00,0x0F,0xFE,0x00,0x0F,0xFF,0x00,0x0E,0x07,0x80,0x0E,0x03,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x03,0x80,0x0E,0x07,0x80,0x0F,0xFF,0x00,0x0F,0xFE,0x00,0x0F,0xFC,0x00,0x0E,0x1E,0x00,0x0E,0x0E,0x00,0x0E,0x07,0x00,0x0E,0x07,0x00,0x0E,0x03,0x80,0x0E,0x03,0x80,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // R +0x00,0x00,0x00,0x00,0x7F,0x00,0x01,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0xC0,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x80,0x00,0x03,0xE0,0x00,0x01,0xF8,0x00,0x00,0xFE,0x00,0x00,0x3F,0x80,0x00,0x0F,0xC0,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x04,0x01,0xE0,0x0F,0x03,0xC0,0x0F,0xFF,0xC0,0x07,0xFF,0x80,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // S +0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // T +0x00,0x00,0x00,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // U +0x00,0x00,0x00,0x1C,0x00,0x70,0x1C,0x00,0x70,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0x87,0x80,0x01,0xC7,0x00,0x01,0xC7,0x00,0x01,0xC7,0x00,0x00,0xEE,0x00,0x00,0xEE,0x00,0x00,0xEE,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // V +0x00,0x00,0x00,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x38,0xE0,0x0E,0x38,0xE0,0x0E,0x38,0xE0,0x0E,0x6C,0xE0,0x0E,0x6C,0xE0,0x0E,0x6C,0xE0,0x0E,0xC6,0xE0,0x0E,0xC6,0xE0,0x0E,0xC6,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // W +0x00,0x00,0x00,0x1E,0x00,0xF0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x03,0x83,0x80,0x03,0x83,0x80,0x01,0xC7,0x00,0x01,0xEF,0x00,0x00,0xEE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x00,0xEE,0x00,0x01,0xC7,0x00,0x03,0xC7,0x80,0x03,0x83,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x0F,0x01,0xE0,0x0E,0x00,0xE0,0x1E,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // X +0x00,0x00,0x00,0x1C,0x00,0x70,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0x83,0x80,0x03,0xC3,0x80,0x01,0xC7,0x00,0x01,0xEF,0x00,0x00,0xEE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Y +0x00,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0F,0x00,0x00,0x0E,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x38,0x00,0x00,0x78,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xE0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x07,0x80,0x00,0x07,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Z +0x01,0xFF,0x00,0x01,0xFF,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xFF,0x00,0x01,0xFF,0x00, // [ +0x03,0x80,0x00,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0xE0, // +0x00,0xFF,0x80,0x00,0xFF,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0xFF,0x80,0x00,0xFF,0x80, // ] +0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0xEE,0x00,0x00,0xEE,0x00,0x01,0xC7,0x00,0x01,0xC7,0x00,0x03,0xC7,0x80,0x03,0x83,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x0F,0x01,0xE0,0x02,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF8,0x3F,0xFF,0xF8,0x3F,0xFF,0xF8,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,0xFE,0x00,0x01,0xC7,0x00,0x01,0x83,0x00,0x01,0x83,0x00,0x01,0x83,0x00,0x01,0xC7,0x00,0x00,0xFE,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ` +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x01,0xFF,0x80,0x01,0xFF,0xC0,0x01,0x83,0xE0,0x00,0x01,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x7F,0xE0,0x01,0xFF,0xE0,0x03,0xFF,0xE0,0x07,0xC0,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0xFF,0xE0,0x01,0xFF,0xE0,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // a +0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x7E,0x00,0x07,0xFF,0x00,0x07,0xFF,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x07,0x01,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x01,0xE0,0x07,0x01,0xC0,0x07,0x07,0xC0,0x07,0xFF,0x80,0x07,0xFF,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // b +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0xFF,0xE0,0x03,0xFF,0xE0,0x03,0xE0,0x40,0x07,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x07,0x80,0x00,0x03,0xE0,0x60,0x03,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // c +0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x7E,0xE0,0x00,0xFF,0xE0,0x01,0xFF,0xE0,0x03,0xC1,0xE0,0x03,0x80,0xE0,0x07,0x80,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0x80,0xE0,0x03,0xE0,0xE0,0x01,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // d +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0xC3,0xC0,0x07,0x01,0xC0,0x07,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xC0,0xC0,0x03,0xFF,0xC0,0x01,0xFF,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // e +0x00,0x0F,0xC0,0x00,0x3F,0xF0,0x00,0x7F,0xF0,0x00,0x78,0x30,0x00,0xF0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // f +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x01,0xFF,0xC0,0x03,0xFF,0xC0,0x07,0x81,0xC0,0x07,0x01,0xC0,0x0F,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0xFF,0xC0,0x01,0xFF,0xC0,0x00,0xFD,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x06,0x07,0x80,0x07,0xFF,0x80,0x07,0xFF,0x00,0x03,0xFC,0x00,0x00,0x00,0x00, // g +0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFC,0x00,0x07,0xFF,0x00,0x07,0xFF,0x80,0x07,0x07,0x80,0x07,0x03,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // h +0x00,0x00,0x00,0x00,0x60,0x00,0x00,0xF0,0x00,0x00,0xF0,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x0F,0xF0,0x00,0x0F,0xF0,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x78,0x20,0x00,0x3F,0xE0,0x00,0x3F,0xE0,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // i +0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x80,0x03,0xFF,0x80,0x03,0xFF,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x06,0x0F,0x00,0x0F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00, // j +0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x01,0xE0,0x07,0x03,0xC0,0x07,0x07,0x80,0x07,0x0F,0x00,0x07,0x1E,0x00,0x07,0x3C,0x00,0x07,0x78,0x00,0x07,0xF0,0x00,0x07,0xE0,0x00,0x07,0xF0,0x00,0x07,0x78,0x00,0x07,0x1C,0x00,0x07,0x0F,0x00,0x07,0x07,0x00,0x07,0x03,0x80,0x07,0x03,0xC0,0x07,0x01,0xE0,0x07,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // k +0x07,0xF8,0x00,0x07,0xF8,0x00,0x07,0xF8,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x3C,0x10,0x00,0x1F,0xF0,0x00,0x1F,0xF0,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // l +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE3,0xC0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0E,0x3C,0xF0,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // m +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x03,0xFF,0x80,0x03,0xFF,0xC0,0x03,0x83,0xC0,0x03,0x81,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // n +0x00,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,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x0F,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x07,0x01,0xE0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // o + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x07,0xFF,0x00,0x07,0xFF,0x80,0x07,0x07,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x01,0xE0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x07,0xFF,0x80,0x07,0xFF,0x00,0x07,0x7C,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00, // p +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0xFF,0xE0,0x01,0xFF,0xE0,0x03,0xE0,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0x80,0xE0,0x03,0xC1,0xE0,0x01,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3E,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0, // q +0x00,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,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0x80,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // r +0x00,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,0x01,0xFF,0x80,0x03,0xFF,0x80,0x07,0x81,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xC0,0x00,0x03,0xF0,0x00,0x01,0xFE,0x00,0x00,0x7F,0x00,0x00,0x1F,0x80,0x00,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x06,0x03,0xC0,0x07,0xFF,0x80,0x07,0xFF,0x80,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // s +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xF0,0x20,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // t +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x81,0xC0,0x03,0xC1,0xC0,0x03,0xFF,0xC0,0x01,0xFF,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // u +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x70,0x1E,0x00,0xF0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0xC7,0x00,0x01,0xC7,0x00,0x01,0xEF,0x00,0x00,0xEE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // v +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x10,0x70,0x0C,0x38,0xE0,0x0E,0x38,0xE0,0x0E,0x38,0xE0,0x0E,0x28,0xE0,0x0E,0x6C,0xE0,0x0E,0x6C,0xE0,0x06,0x44,0xC0,0x06,0xC6,0xC0,0x06,0xC7,0xC0,0x07,0x87,0xC0,0x07,0x83,0xC0,0x07,0x83,0x80,0x03,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // w +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x01,0xE0,0x0F,0x03,0xC0,0x07,0x03,0x80,0x03,0x87,0x80,0x03,0xCF,0x00,0x01,0xEE,0x00,0x00,0xFC,0x00,0x00,0x7C,0x00,0x00,0x78,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x01,0xEE,0x00,0x01,0xC7,0x00,0x03,0xC3,0x80,0x07,0x83,0xC0,0x0F,0x01,0xC0,0x0E,0x01,0xE0,0x1E,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // x +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x70,0x0F,0x00,0xF0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0x81,0xE0,0x03,0x81,0xC0,0x03,0xC1,0xC0,0x01,0xC3,0xC0,0x01,0xC3,0x80,0x01,0xE3,0x80,0x00,0xE7,0x80,0x00,0xF7,0x80,0x00,0x77,0x00,0x00,0x7F,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x0F,0xF0,0x00,0x0F,0xF0,0x00,0x0F,0xC0,0x00, // y +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x03,0x80,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x00,0xE0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // z +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x7F,0x80,0x00,0x1F,0x80, // { +0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00, // | +0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0xFF,0x00,0x00,0xFC,0x00, // } +0x00,0x00,0x00,0x01,0xE0,0x20,0x03,0xF0,0x30,0x07,0xFC,0x70,0x0E,0x3F,0xE0,0x0C,0x0F,0xC0,0x04,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~ +}; diff --git a/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/arial_bold.c b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/arial_bold.c new file mode 100644 index 0000000..e8107e9 --- /dev/null +++ b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/arial_bold.c @@ -0,0 +1,111 @@ +// arial_bold.c +// Font type : Full (95 characters) +// Font size : 16x16 pixels +// Memory usage : 3044 bytes +// Submitted by : MBWK + +#include + +const uint8_t arial_bold[3044] PROGMEM={ +0x10,0x10,0x20,0x5F, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // +0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00, // ! +0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // " +0x00,0x00,0x00,0x00,0x03,0x60,0x03,0x60,0x06,0xC0,0x3F,0xF0,0x3F,0xF0,0x06,0xC0,0x0D,0x80,0x3F,0xF0,0x3F,0xF0,0x0D,0x80,0x1B,0x00,0x1B,0x00,0x00,0x00,0x00,0x00, // # +0x00,0x00,0x01,0x00,0x03,0x80,0x07,0xC0,0x0D,0x60,0x0D,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x0D,0x60,0x0D,0x60,0x07,0xC0,0x03,0x80,0x01,0x00,0x00,0x00, // $ +0x00,0x00,0x00,0x00,0x3C,0x18,0x66,0x30,0x66,0x30,0x66,0x60,0x66,0xC0,0x3C,0xC0,0x01,0x9E,0x01,0xB3,0x03,0x33,0x03,0x33,0x06,0x33,0x0C,0x1E,0x00,0x00,0x00,0x00, // % +0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xE0,0x0C,0x60,0x0C,0x60,0x07,0xC0,0x07,0x80,0x0D,0x90,0x19,0xD8,0x18,0xF0,0x18,0x78,0x0F,0xFC,0x07,0x88,0x00,0x00,0x00,0x00, // & +0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' +0x00,0x00,0x01,0x80,0x03,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x00,0x00,0x00,0x00, // ( +0x00,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x00,0x00, // ) +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x33,0x98,0x3F,0xF8,0x07,0xC0,0x07,0xC0,0x0E,0xE0,0x1C,0x70,0x04,0x40,0x00,0x00,0x00,0x00,0x00,0x00, // * +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x07,0xF8,0x07,0xF8,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x00,0x00, // , +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // . +0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00, // / + +0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 0 +0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x80,0x07,0x80,0x0D,0x80,0x09,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // 1 +0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x30,0x0C,0x30,0x00,0x30,0x00,0x60,0x00,0xE0,0x01,0xC0,0x03,0x80,0x06,0x00,0x0F,0xF0,0x0F,0xF0,0x00,0x00,0x00,0x00, // 2 +0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xF0,0x0E,0x30,0x00,0x30,0x01,0xE0,0x01,0xE0,0x00,0x70,0x00,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 3 +0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xE0,0x00,0xE0,0x01,0xE0,0x03,0x60,0x03,0x60,0x06,0x60,0x0C,0x60,0x0F,0xF0,0x0F,0xF0,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00, // 4 +0x00,0x00,0x00,0x00,0x07,0xE0,0x07,0xE0,0x06,0x00,0x0C,0x00,0x0F,0xC0,0x0F,0xE0,0x0C,0x70,0x00,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 5 +0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xF0,0x06,0x30,0x0C,0x00,0x0D,0xC0,0x0F,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x06,0x30,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 6 +0x00,0x00,0x00,0x00,0x0F,0xF0,0x0F,0xF0,0x00,0x60,0x00,0xC0,0x00,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x80,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00, // 7 +0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x07,0xE0,0x07,0xE0,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 8 +0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0C,0x60,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xF0,0x03,0xB0,0x00,0x30,0x0C,0x60,0x0F,0xE0,0x07,0xC0,0x00,0x00,0x00,0x00, // 9 +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // : +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x80,0x00,0x80,0x01,0x00,0x00,0x00, // ; +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xE0,0x03,0xC0,0x0F,0x00,0x1C,0x00,0x0F,0x00,0x03,0xC0,0x00,0xE0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, // < +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x1F,0xF0,0x00,0x00,0x00,0x00,0x1F,0xF0,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // = +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x0E,0x00,0x07,0x80,0x01,0xE0,0x00,0x70,0x01,0xE0,0x07,0x80,0x0E,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // > +0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x30,0x0C,0x30,0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // ? + +0x00,0x00,0x07,0xC0,0x0C,0x30,0x13,0x78,0x17,0xE8,0x2C,0xC8,0x2C,0xC8,0x2C,0xC8,0x2F,0xD0,0x26,0xE0,0x10,0x08,0x08,0x10,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, // @ +0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x0C,0x60,0x0C,0x60,0x0F,0xE0,0x1F,0xF0,0x18,0x30,0x18,0x30,0x30,0x18,0x00,0x00,0x00,0x00, // A +0x00,0x00,0x00,0x00,0x1F,0xE0,0x1F,0xF0,0x18,0x30,0x18,0x30,0x18,0x30,0x1F,0xE0,0x1F,0xF0,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0xF0,0x1F,0xE0,0x00,0x00,0x00,0x00, // B +0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0xF0,0x0C,0x38,0x1C,0x10,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1C,0x10,0x0C,0x38,0x0F,0xF0,0x03,0xE0,0x00,0x00,0x00,0x00, // C +0x00,0x00,0x00,0x00,0x1F,0xC0,0x1F,0xF0,0x18,0x30,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x30,0x1F,0xF0,0x1F,0xC0,0x00,0x00,0x00,0x00, // D +0x00,0x00,0x00,0x00,0x0F,0xF8,0x0F,0xF8,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0F,0xF8,0x0F,0xF8,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0F,0xF8,0x0F,0xF8,0x00,0x00,0x00,0x00, // E +0x00,0x00,0x00,0x00,0x0F,0xF0,0x0F,0xF0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0F,0xE0,0x0F,0xE0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, // F +0x00,0x00,0x00,0x00,0x07,0xE0,0x1F,0xF0,0x18,0x38,0x38,0x10,0x30,0x00,0x30,0x00,0x30,0xF8,0x30,0xF8,0x38,0x18,0x18,0x38,0x1F,0xF8,0x07,0xE0,0x00,0x00,0x00,0x00, // G +0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0xF8,0x1F,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00, // H +0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // I +0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // J +0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x18,0x60,0x18,0xC0,0x19,0x80,0x1B,0xC0,0x1E,0xC0,0x1C,0x60,0x18,0x70,0x18,0x30,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00, // K +0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0F,0xF0,0x0F,0xF0,0x00,0x00,0x00,0x00, // L +0x00,0x00,0x00,0x00,0x38,0x38,0x38,0x38,0x3C,0x78,0x3C,0x78,0x34,0x58,0x36,0xD8,0x36,0xD8,0x36,0xD8,0x33,0x98,0x33,0x98,0x33,0x98,0x31,0x18,0x00,0x00,0x00,0x00, // M +0x00,0x00,0x00,0x00,0x18,0x18,0x1C,0x18,0x1E,0x18,0x1E,0x18,0x1B,0x18,0x19,0x98,0x19,0x98,0x18,0xD8,0x18,0x78,0x18,0x78,0x18,0x38,0x18,0x18,0x00,0x00,0x00,0x00, // N +0x00,0x00,0x00,0x00,0x07,0xC0,0x1F,0xF0,0x18,0x30,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x18,0x30,0x1F,0xF0,0x07,0xC0,0x00,0x00,0x00,0x00, // O + +0x00,0x00,0x00,0x00,0x0F,0xE0,0x0F,0xF0,0x0C,0x38,0x0C,0x18,0x0C,0x38,0x0F,0xF0,0x0F,0xE0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, // P +0x00,0x00,0x00,0x00,0x07,0xC0,0x1F,0xF0,0x18,0x30,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x31,0xB8,0x18,0xF0,0x1F,0xF0,0x07,0xB0,0x00,0x18,0x00,0x00, // Q +0x00,0x00,0x00,0x00,0x1F,0xE0,0x1F,0xF0,0x18,0x38,0x18,0x18,0x18,0x38,0x1F,0xF0,0x1F,0xC0,0x18,0xE0,0x18,0x70,0x18,0x30,0x18,0x38,0x18,0x1C,0x00,0x00,0x00,0x00, // R +0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xF0,0x0E,0x38,0x0C,0x18,0x0F,0x00,0x07,0xE0,0x01,0xF0,0x00,0x38,0x0C,0x18,0x0E,0x38,0x07,0xF0,0x03,0xE0,0x00,0x00,0x00,0x00, // S +0x00,0x00,0x00,0x00,0x1F,0xF8,0x1F,0xF8,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // T +0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1C,0x38,0x0F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00, // U +0x00,0x00,0x00,0x00,0x30,0x18,0x18,0x30,0x18,0x30,0x18,0x30,0x0C,0x60,0x0C,0x60,0x0E,0xE0,0x06,0xC0,0x06,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00, // V +0x00,0x00,0x00,0x00,0x31,0xC6,0x31,0xC6,0x31,0xC6,0x1B,0x6C,0x1B,0x6C,0x1B,0x6C,0x1B,0x6C,0x1B,0x6C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x00,0x00,0x00,0x00, // W +0x00,0x00,0x00,0x00,0x18,0x30,0x1C,0x70,0x0C,0x60,0x06,0xC0,0x07,0xC0,0x03,0x80,0x03,0x80,0x07,0xC0,0x06,0xC0,0x0C,0x60,0x1C,0x70,0x18,0x30,0x00,0x00,0x00,0x00, // X +0x00,0x00,0x00,0x00,0x18,0x18,0x1C,0x38,0x0C,0x30,0x06,0x60,0x06,0x60,0x03,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // Y +0x00,0x00,0x00,0x00,0x07,0xF8,0x07,0xF8,0x00,0x30,0x00,0x60,0x00,0xE0,0x00,0xC0,0x01,0x80,0x03,0x80,0x03,0x00,0x06,0x00,0x0F,0xF8,0x0F,0xF8,0x00,0x00,0x00,0x00, // Z +0x00,0x00,0x03,0xC0,0x03,0xC0,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xC0,0x03,0xC0,0x00,0x00, // [ +0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00, // +0x00,0x00,0x03,0xC0,0x03,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00, // ] +0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,0x06,0x60,0x06,0x60,0x06,0x60,0x0C,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00, // _ + +0x00,0x00,0x00,0x00,0x01,0x80,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ` +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xE0,0x0C,0x60,0x01,0xE0,0x07,0xE0,0x0E,0x60,0x0C,0x60,0x0F,0xE0,0x07,0xB0,0x00,0x00,0x00,0x00,0x00,0x00, // a +0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0D,0xC0,0x0F,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x0F,0xE0,0x0D,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // b +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x60,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0E,0x60,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // c +0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x03,0xB0,0x07,0xF0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xF0,0x03,0xB0,0x00,0x00,0x00,0x00,0x00,0x00, // d +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x07,0xC0,0x0C,0x60,0x0F,0xE0,0x0F,0xE0,0x0C,0x00,0x0E,0x60,0x07,0xC0,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // e +0x00,0x00,0x03,0xC0,0x07,0xC0,0x06,0x00,0x0F,0x80,0x0F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // f +0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x60,0x0F,0xE0,0x1C,0xE0,0x18,0x60,0x18,0x60,0x18,0x60,0x1C,0xE0,0x0F,0xE0,0x07,0x60,0x18,0x60,0x1F,0xE0,0x0F,0xC0,0x00,0x00, // g +0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0D,0xE0,0x0F,0xF0,0x0E,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x00,0x00,0x00,0x00,0x00, // h +0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // i +0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0x80,0x07,0x00, // j +0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x60,0x0C,0xC0,0x0D,0x80,0x0F,0x80,0x0F,0xC0,0x0E,0xC0,0x0C,0xC0,0x0C,0x60,0x0C,0x60,0x00,0x00,0x00,0x00,0x00,0x00, // k +0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // l +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x38,0x3F,0xFC,0x39,0xCC,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x00,0x00,0x00,0x00,0x00,0x00, // m +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0xE0,0x0F,0xF0,0x0E,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x00,0x00,0x00,0x00,0x00, // n +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // o + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0xC0,0x0F,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x0F,0xE0,0x0D,0xC0,0x0C,0x00,0x0C,0x00,0x0C,0x00, // p +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xB0,0x07,0xF0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xF0,0x03,0xB0,0x00,0x30,0x00,0x30,0x00,0x30, // q +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x70,0x03,0xF0,0x03,0x80,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // r +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xE0,0x0C,0x60,0x0F,0x00,0x07,0xC0,0x00,0xE0,0x0C,0x60,0x0F,0xE0,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // s +0x00,0x00,0x01,0x00,0x03,0x00,0x03,0x00,0x07,0xC0,0x07,0xC0,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // t +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x70,0x0F,0xF0,0x07,0xB0,0x00,0x00,0x00,0x00,0x00,0x00, // u +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x30,0x06,0x30,0x06,0x30,0x03,0x60,0x03,0x60,0x03,0x60,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // v +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0xC6,0x31,0xC6,0x19,0xCC,0x1B,0x6C,0x1B,0x6C,0x1B,0x6C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x00,0x00,0x00,0x00,0x00,0x00, // w +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x30,0x07,0x70,0x03,0x60,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x03,0x60,0x07,0x70,0x06,0x30,0x00,0x00,0x00,0x00,0x00,0x00, // x +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18,0x0C,0x18,0x06,0x30,0x06,0x30,0x03,0x60,0x03,0x60,0x03,0xE0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x07,0x80,0x07,0x00, // y +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0x03,0xF8,0x00,0x30,0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0x80,0x03,0xF8,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // z +0x01,0xC0,0x03,0xC0,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0E,0x00,0x0E,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xC0,0x01,0xC0,0x00,0x00, // { +0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80, // | +0x03,0x80,0x03,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x70,0x00,0x70,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x03,0xC0,0x03,0x80,0x00,0x00, // } +0x00,0x00,0x00,0x00,0x07,0x88,0x0F,0xF8,0x08,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~ +}; diff --git a/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/logo.c b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/logo.c new file mode 100644 index 0000000..116321b --- /dev/null +++ b/libraries/MySensors/examples/TouchDisplaySceneControllerSensor/logo.c @@ -0,0 +1,235 @@ +// Generated by : ImageConverter 565 Online +// Generated from : top.png +// Time generated : Tue, 30 Sep 14 23:16:51 +0200 (Server timezone: CET) +// Image Size : 60x60 pixels +// Memory usage : 7200 bytes + +#include + +const unsigned short logo[3600] PROGMEM={ +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0010 (16) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0020 (32) pixels +0x08E4, 0x28A3, 0x89A7, 0x71C7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0030 (48) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0050 (80) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAD55, 0x18C3, 0x0082, 0x4944, 0x5A08, 0x8147, 0xBB0D, 0x5A69, // 0x0060 (96) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0070 (112) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0080 (128) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52A0, 0x3180, 0x0000, 0x52AA, 0x2945, // 0x0090 (144) pixels +0x2965, 0x0000, 0x0000, 0x0000, 0x18E3, 0x0021, 0x4144, 0x69C6, 0x6924, 0xAA49, 0xB3AD, 0x00E2, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00A0 (160) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00B0 (176) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00C0 (192) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0x0861, 0x2924, 0x0000, 0x0000, 0x00C2, // 0x00D0 (208) pixels +0x1862, 0x4924, 0x4924, 0x9965, 0xCB4A, 0xE48D, 0x9329, 0x0004, 0x6A69, 0x51A5, 0x2125, 0x0000, 0x5000, 0x0000, 0x0000, 0x0000, // 0x00E0 (224) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00F0 (240) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0100 (256) pixels +0x0000, 0x1002, 0x1924, 0x41A4, 0x3124, 0x0000, 0x0000, 0x4A69, 0x2924, 0x0000, 0x0000, 0x4125, 0x38E4, 0x5983, 0x9A46, 0xE40A, // 0x0110 (272) pixels +0xFCCD, 0xF4CE, 0x50E5, 0x6226, 0xBBAC, 0xAAEB, 0x4904, 0x0000, 0x4104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0120 (288) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0130 (304) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2124, 0x10C3, 0x0000, 0x0000, 0x2800, 0x41A5, 0x9309, // 0x0140 (320) pixels +0x8288, 0x00E5, 0x4A49, 0x73AE, 0x31A6, 0x1800, 0x59C7, 0x71E7, 0x2100, 0x8266, 0xE40B, 0xFCAC, 0xFC8C, 0xDC8F, 0x5187, 0xA387, // 0x0150 (336) pixels +0xABA9, 0x9249, 0x58C0, 0x0000, 0x0000, 0x8410, 0x2104, 0x10A2, 0x2965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0160 (352) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0170 (368) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0944, 0x2062, 0x5165, 0x5903, 0x00A4, 0x0165, 0x8A67, 0xAB28, 0x7267, 0x29E8, 0x7B0C, // 0x0180 (384) pixels +0x6185, 0x8207, 0xC3AC, 0x6A04, 0x0140, 0xC36A, 0xFDEC, 0xF5AC, 0xFD30, 0xCC51, 0x70C5, 0xC469, 0xEC8D, 0x89E9, 0x0000, 0x5269, // 0x0190 (400) pixels +0x20C3, 0x0861, 0x0841, 0x18A2, 0x39E7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01A0 (416) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01B0 (432) pixels +0x5000, 0x0000, 0x71A5, 0x9A88, 0xAAA8, 0xC2C9, 0xA248, 0x9A26, 0xCA87, 0xCAC8, 0x58C0, 0x69C5, 0xC30B, 0xD3AC, 0xDC4A, 0x51A2, // 0x01C0 (448) pixels +0x5A65, 0xEC6B, 0xFDCB, 0xFE0E, 0xFD0F, 0xEBF1, 0xB3EB, 0xED6E, 0xEC10, 0x61C7, 0x0123, 0x0021, 0x0082, 0x10C3, 0x3186, 0x0000, // 0x01D0 (464) pixels +0x0000, 0x6180, 0x5000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01E0 (480) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xF800, 0x0000, 0xFFF0, 0x5943, // 0x01F0 (496) pixels +0xA226, 0xD369, 0xEB4A, 0xE289, 0xE26A, 0xEB0E, 0x9AAA, 0x5042, 0xDBAC, 0xEC8C, 0xDC29, 0x7A45, 0xCC4A, 0xFB4C, 0xFD8D, 0xFDF0, // 0x0200 (512) pixels +0xF510, 0xFD8F, 0xF5CF, 0xFE31, 0xCC31, 0x0000, 0x3801, 0x4143, 0x59A6, 0x4165, 0x0082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0210 (528) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0220 (544) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x0000, 0x0041, 0x9986, 0xC2E8, 0xDB88, 0xF44A, // 0x0230 (560) pixels +0xDBCB, 0xEBCD, 0xD44D, 0x41C5, 0xB308, 0xEC0B, 0xF46C, 0xE40D, 0xD38A, 0xEC2D, 0xFEAE, 0xFEF2, 0xFDD2, 0xFE51, 0xFD52, 0xFCB1, // 0x0240 (576) pixels +0xEC50, 0xCBEE, 0xB42A, 0xA2C6, 0x8985, 0x79A6, 0x89A6, 0xB1E6, 0xA1C6, 0x5924, 0x4986, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0250 (592) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0260 (608) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0040, 0x6125, 0xE3A9, 0xF4EB, 0xF5AC, 0xDD49, 0xE5CB, 0xFE6E, 0xC44E, // 0x0270 (624) pixels +0x9B8A, 0xE4CD, 0xFD70, 0xFDB1, 0xCCCE, 0xF62E, 0xFE8D, 0xFE50, 0xFE56, 0xFD97, 0xF4B6, 0xF3F0, 0xFD2F, 0xFE50, 0xF5D1, 0xDC10, // 0x0280 (640) pixels +0xB289, 0xC269, 0xCA68, 0xEB6C, 0xDC2F, 0xA2C9, 0x2062, 0x1945, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0290 (656) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x02A0 (672) pixels +0x0000, 0x0000, 0x0000, 0x00E3, 0x3904, 0xB1C6, 0xE34C, 0xEC2C, 0xE4AB, 0xCD2B, 0xF64C, 0xFE70, 0xFE4F, 0xEE4E, 0xFED2, 0xFED2, // 0x02B0 (688) pixels +0xFEB2, 0xFE33, 0xFDD3, 0xFE74, 0xF535, 0xCB11, 0xEB32, 0xFCF2, 0xFDF1, 0xF574, 0xFE13, 0xFE52, 0xBC4B, 0x8226, 0x6945, 0x6A28, // 0x02C0 (704) pixels +0x3228, 0x2124, 0x1904, 0x51C7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x02D0 (720) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x10A2, // 0x02E0 (736) pixels +0x0861, 0x91C5, 0xDA4A, 0xEAAB, 0xF3D1, 0xED12, 0xD591, 0xC50D, 0xA3E9, 0xB50C, 0xEE92, 0xB4EE, 0x7329, 0x82E8, 0xC572, 0xEDF3, // 0x02F0 (752) pixels +0xB3ED, 0x3800, 0xA3CF, 0xFEF6, 0xFED0, 0xFEB4, 0xFEF3, 0xF6CF, 0xEEAE, 0xBD2A, 0x0120, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0300 (768) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0310 (784) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1001, 0x39C7, 0x8227, 0xE2AA, 0xDB0C, // 0x0320 (800) pixels +0xE4B3, 0xCD11, 0x83EA, 0x5286, 0x52AA, 0x7BEF, 0x2940, 0x3A2A, 0x5AEB, 0x73CF, 0x52AA, 0x3945, 0x1184, 0x6B2B, 0xACF1, 0xB54F, // 0x0330 (816) pixels +0xF733, 0xFF51, 0xFF32, 0xFF55, 0xFF33, 0xF696, 0xCC93, 0x624A, 0x0120, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0340 (832) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0350 (848) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6248, 0x9249, 0xCB2A, 0xABEC, 0x8C2B, 0x5AE6, 0x10C3, 0x5269, // 0x0360 (864) pixels +0xA4F3, 0xD637, 0x9C90, 0xAD33, 0xAD12, 0xE6FA, 0xC5B5, 0x6AC9, 0x83CE, 0xBD53, 0xCDD5, 0x9450, 0x6B47, 0xCD91, 0xFEB4, 0xEED4, // 0x0370 (880) pixels +0x9490, 0x736E, 0xCCD5, 0xCC94, 0x7B2D, 0x0000, 0xFC10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0380 (896) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0390 (912) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x6A8A, 0x8B0A, 0x9C2B, 0x7BCA, 0x3163, 0x526B, 0x1904, 0x736C, 0xE698, 0xD658, 0xD658, 0xD616, // 0x03A0 (928) pixels +0xF719, 0xFF5B, 0xF71A, 0xEED8, 0xD5F5, 0xEEFA, 0xE6B8, 0xA4F3, 0x29A8, 0x0000, 0xAC31, 0xEE36, 0x9C2E, 0x0000, 0x4145, 0xAB70, // 0x03B0 (944) pixels +0xC4B4, 0x93F0, 0x0000, 0x0000, 0x4008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x03C0 (960) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x03D0 (976) pixels +0x8B6B, 0x7B6A, 0x1124, 0x0000, 0x0000, 0x41E6, 0x0002, 0xB512, 0xFF7B, 0xFF9C, 0xFF9C, 0xFFDD, 0xFF9C, 0xFFBD, 0xFFFF, 0xFF9C, // 0x03E0 (992) pixels +0xFF5B, 0xFFBD, 0xFF9C, 0xF71A, 0x9CB1, 0x0000, 0x0000, 0xACB2, 0xE6B6, 0x4A68, 0x0000, 0x0144, 0x738E, 0x6B4D, 0x0000, 0x0000, // 0x03F0 (1008) pixels +0x500A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0400 (1024) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2145, 0x3144, 0x0002, 0x0000, 0x0000, // 0x0410 (1040) pixels +0x0000, 0x39C7, 0x0083, 0xC594, 0xEED9, 0xEEB8, 0xEEFA, 0xC5F7, 0xEEFA, 0xFFDD, 0xDEFB, 0xA4F2, 0xEE97, 0xF6D8, 0xEEF9, 0xFF7B, // 0x0420 (1056) pixels +0xDE56, 0x41C6, 0x0000, 0x0000, 0x9491, 0x7BCE, 0x0000, 0x6209, 0x0000, 0x0000, 0x6A49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0430 (1072) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0440 (1088) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2965, 0x0000, 0xAD12, // 0x0450 (1104) pixels +0xCE17, 0x534E, 0x02B0, 0x7472, 0xF73A, 0xFF7B, 0xF71A, 0xA4F2, 0x02AE, 0x4B6F, 0x9C91, 0xFF5B, 0xF6D9, 0x838C, 0x0000, 0x0000, // 0x0460 (1120) pixels +0x0000, 0x0001, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0470 (1136) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0480 (1152) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x8400, 0x5000, 0x8410, 0x0000, 0xB4D3, 0x2965, 0x3985, 0xA4D1, 0xFFDF, 0xCEDC, 0x4413, 0xDEFA, // 0x0490 (1168) pixels +0xFF9C, 0xEED9, 0xFF5A, 0xFF5A, 0x8D36, 0xBE59, 0xFFDE, 0xFF7B, 0xFF19, 0x8BEE, 0x0000, 0x0000, 0x0000, 0x632C, 0x0005, 0x0000, // 0x04A0 (1184) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x04B0 (1200) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x04C0 (1216) pixels +0x0000, 0x0000, 0x8410, 0x0000, 0x7BCF, 0x2966, 0x5247, 0xBD95, 0xFFDE, 0xFF9C, 0xF73A, 0xFF7B, 0xF719, 0xCE17, 0xF75C, 0xFFDE, // 0x04D0 (1232) pixels +0xFF7C, 0xFF5A, 0xFFDE, 0xFF3A, 0xFF5A, 0xACF1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x04E0 (1248) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x04F0 (1264) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8410, 0x0000, // 0x0500 (1280) pixels +0x8C51, 0x2966, 0x62A9, 0x9CB2, 0xE6B9, 0xEEB8, 0xFF5B, 0xFF9C, 0xEEB8, 0xD637, 0xFF9C, 0xFFBD, 0xFF7B, 0xFF5B, 0xFF5B, 0xFF19, // 0x0510 (1296) pixels +0xFF5A, 0xC574, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0520 (1312) pixels +0x0000, 0x0000, 0x5000, 0x52AA, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0530 (1328) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8410, 0x0000, 0xACF3, 0x3186, 0x5AA9, 0x940E, // 0x0540 (1344) pixels +0x9C90, 0xD616, 0xEEF9, 0xFF7B, 0xDE78, 0xB533, 0xE697, 0xFF39, 0xFF5A, 0xFF5B, 0xFF3A, 0xFF5B, 0xFF5A, 0xC593, 0x0000, 0x0000, // 0x0550 (1360) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0560 (1376) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0570 (1392) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2125, 0x5248, 0xA490, 0xC5B5, 0xEED9, 0xF73A, 0xF71A, // 0x0580 (1408) pixels +0xACF2, 0xBD74, 0xB533, 0xF71A, 0xFF9C, 0xFF3B, 0xFF7C, 0xFF9C, 0xFF9C, 0xB512, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0590 (1424) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x05A0 (1440) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x05B0 (1456) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2125, 0x41E7, 0xA4B1, 0xBD95, 0xE698, 0xF71A, 0xFF7B, 0xEEB8, 0xFF3A, 0xF6F9, 0xFFBD, // 0x05C0 (1472) pixels +0xEEB9, 0xAC2F, 0xE71B, 0xFFBD, 0xFF9C, 0xB532, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x05D0 (1488) pixels +0x0000, 0x0000, 0x0000, 0x4208, 0x2965, 0x5248, 0xB512, 0xE676, 0xA46F, 0x0000, 0xFFF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x05E0 (1504) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x05F0 (1520) pixels +0x0000, 0x4208, 0x0000, 0xA490, 0xFF7C, 0xAD54, 0x91E6, 0xFF3B, 0xFFBC, 0xFF5A, 0xFF7B, 0xFFDD, 0xDC90, 0xB450, 0xF75B, 0xFF3A, // 0x0600 (1536) pixels +0xFF9B, 0xA4D1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0610 (1552) pixels +0x4A28, 0xC573, 0xFF7B, 0xFF5A, 0x7B4B, 0x0000, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0x0000, 0x0000, // 0x0620 (1568) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4208, 0x0000, 0x52AA, 0x1904, 0x62C9, // 0x0630 (1584) pixels +0xFF5B, 0xE6BA, 0x5800, 0xDC0E, 0xFF1B, 0xFF7B, 0xFFBD, 0xF617, 0xB940, 0xD617, 0xFF5A, 0xFF19, 0xFF7B, 0x7B6C, 0x0000, 0x0000, // 0x0640 (1600) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5000, 0x0000, 0x08C4, 0x6B0A, 0x942F, 0xF6F9, 0xFF7A, 0xC574, // 0x0650 (1616) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0660 (1632) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8410, 0x0000, 0x738E, 0x4A49, 0x08A3, 0xCDB4, 0xFF7B, 0x9CB1, 0x9000, // 0x0670 (1648) pixels +0xC267, 0xA3AD, 0xB34C, 0xA8E0, 0xBD14, 0xF71A, 0xFF39, 0xFF9B, 0xE698, 0x0000, 0x0000, 0x52AA, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0680 (1664) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x4200, 0x0000, 0x1904, 0x6AEA, 0x83AC, 0xC573, 0x8BEE, 0x0000, 0x52AA, 0x0000, 0x0000, 0x0000, // 0x0690 (1680) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x4229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x06A0 (1696) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x4208, 0x0000, 0x5AAA, 0x2146, 0x83CD, 0xFF19, 0xFF19, 0xBD53, 0x9BEE, 0x9BAD, 0xACD3, 0xC658, // 0x06B0 (1712) pixels +0xF73B, 0xFF5A, 0xFF5A, 0xF73A, 0x630C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x06C0 (1728) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A7, // 0x06D0 (1744) pixels +0x4A28, 0x4A48, 0x428B, 0x0000, 0x4208, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x06E0 (1760) pixels +0x0000, 0x0000, 0x0000, 0x4228, 0x3186, 0xCDF6, 0xFF7B, 0xFF7B, 0xF71A, 0xF73A, 0xFF9C, 0xFF7C, 0xFF3A, 0xFF3A, 0xFF9C, 0x9471, // 0x06F0 (1776) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, // 0x0700 (1792) pixels +0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4208, 0x0000, 0x0000, 0xACD1, 0xE677, 0x836C, 0x0000, // 0x0710 (1808) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8410, 0x0000, 0x8C51, // 0x0720 (1824) pixels +0x2945, 0x39C6, 0x9C90, 0xE6B9, 0xFF9C, 0xFF5A, 0xFF19, 0xFF3A, 0xFF7B, 0xFFDD, 0xB5B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0730 (1840) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x39C7, 0x18C3, 0x3186, 0x0000, 0x0000, 0x0000, // 0x0740 (1856) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF0, 0x10E4, 0xB512, 0xFF9B, 0xE6B8, 0x0002, 0x0000, 0x8410, 0x0000, 0x0000, // 0x0750 (1872) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0000, 0x52AA, 0x10E3, 0x0000, 0x83AD, // 0x0760 (1888) pixels +0xE698, 0xFF19, 0xFF39, 0xEED8, 0xD658, 0x9492, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0770 (1904) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0x18E3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0780 (1920) pixels +0x0000, 0x0000, 0xAD55, 0x2145, 0x9C4F, 0xBD32, 0x9450, 0x31A7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0790 (1936) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0x0000, 0x0000, 0x8C31, 0xB576, 0x41E7, 0x5AA9, 0x5A68, 0x8C0F, 0x8C0F, 0x5ACA, // 0x07A0 (1952) pixels +0x4A6A, 0xB532, 0x8BCD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x07B0 (1968) pixels +0x0000, 0x0000, 0x18C3, 0x2945, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2965, // 0x07C0 (1984) pixels +0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x07D0 (2000) pixels +0x0000, 0x52AA, 0x0000, 0x1003, 0xCE1A, 0xEF1D, 0x62EC, 0x7B8C, 0xA4B1, 0x9C70, 0xB512, 0xB532, 0xD616, 0xF6D8, 0x6B0B, 0x0000, // 0x07E0 (2016) pixels +0x3165, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0x18E3, 0x0000, // 0x07F0 (2032) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xA451, 0x2945, 0x18E3, // 0x0800 (2048) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9E73, 0x0000, // 0x0810 (2064) pixels +0x9493, 0xF77E, 0xCE39, 0x4A48, 0xCDF6, 0xC5B5, 0xEED9, 0xE6B8, 0xFF3A, 0x942F, 0x73AE, 0x8430, 0x39C7, 0x0000, 0x0000, 0x0000, // 0x0820 (2080) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2124, 0x18E3, 0x8410, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0830 (2096) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8410, 0x18E3, 0x18E3, 0x4A69, 0x0000, 0x0000, // 0x0840 (2112) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8410, 0x0000, 0x4268, 0x5A8C, 0x0003, 0xB557, 0xFFDF, 0xA555, // 0x0850 (2128) pixels +0xA4B1, 0xDE57, 0xEEB8, 0xFFBC, 0xB554, 0xA534, 0xB595, 0xB576, 0x7BD0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0860 (2144) pixels +0x0000, 0x0000, 0x4208, 0x18C3, 0x18E3, 0x31A6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0870 (2160) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0x0000, 0x0000, 0x2124, 0x18C3, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0880 (2176) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x4208, 0x0000, 0x4A68, 0x526B, 0x7B50, 0x62AD, 0xDEBC, 0xFFFF, 0x8430, 0xB554, 0xFF7B, 0xE6B9, // 0x0890 (2192) pixels +0x636E, 0xF7BE, 0x8C71, 0xDE9B, 0xCE1A, 0x1063, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x39E7, 0x18E3, 0x18E3, 0x2104, // 0x08A0 (2208) pixels +0x8410, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x08B0 (2224) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3186, 0x18C3, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x08C0 (2240) pixels +0x4208, 0x0000, 0x4A49, 0x4A0A, 0xACF7, 0x7B70, 0xA514, 0xFFFF, 0xF79E, 0x9491, 0xE6B8, 0x83EF, 0xDEDB, 0xE71C, 0x8410, 0xFFFF, // 0x08D0 (2256) pixels +0xF77E, 0xA4D5, 0x0000, 0x0000, 0x0000, 0x0000, 0x3186, 0x2104, 0x18E3, 0x18E3, 0x39C7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x08E0 (2272) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x08F0 (2288) pixels +0x0000, 0x0000, 0x0000, 0x18C3, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x31C6, 0x734E, // 0x0900 (2304) pixels +0xB537, 0xACB6, 0x5AAB, 0xE71C, 0xFFFF, 0xCE59, 0x0000, 0x9CD3, 0xFFFF, 0xA535, 0xBDF7, 0xFFFF, 0xF79E, 0xE6DD, 0xC5D8, 0x4228, // 0x0910 (2320) pixels +0x0000, 0x3186, 0x18E3, 0x2104, 0x4208, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0920 (2336) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A49, // 0x0930 (2352) pixels +0x10A2, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3166, 0x9453, 0xBD58, 0xB518, 0x83B1, 0xAD75, // 0x0940 (2368) pixels +0xD6BA, 0x2125, 0x3186, 0x736E, 0xB596, 0x7BF0, 0xE73C, 0xFFFF, 0xF77E, 0xF79E, 0xF79E, 0xC5F8, 0x10A1, 0x1082, 0x8410, 0x0000, // 0x0950 (2384) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0960 (2400) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0x18E3, 0x10A2, 0x18C3, // 0x0970 (2416) pixels +0x18C3, 0x0861, 0x0861, 0x0000, 0x0000, 0x2985, 0x41E8, 0xA4D5, 0xACF7, 0xC5D9, 0xE6DC, 0x6B4D, 0x62ED, 0xA4D4, 0x9452, 0xC5B9, // 0x0980 (2432) pixels +0x522A, 0x8430, 0xFFFF, 0xFFBF, 0xF77E, 0xF7BE, 0xF77E, 0xE6DD, 0x9CD4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0990 (2448) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x09A0 (2464) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0x18E3, 0x18E3, 0x18C3, 0x18C3, 0x2945, // 0x09B0 (2480) pixels +0x39C7, 0x3186, 0x62CC, 0x9C54, 0x9C35, 0xD63A, 0xF75E, 0xA534, 0x83D0, 0xC5D8, 0x9CD3, 0xE6DD, 0x7B70, 0xB5B6, 0xFFFF, 0xEF5E, // 0x09C0 (2496) pixels +0xF77E, 0xFFBF, 0xF77E, 0xE6FD, 0xBD98, 0x39A7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x09D0 (2512) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x09E0 (2528) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A49, 0x5AAC, 0x8392, // 0x09F0 (2544) pixels +0xB537, 0xCE1A, 0xE6FC, 0xF7BE, 0xDEDB, 0xD69A, 0x8C71, 0xFFFF, 0xEF7D, 0xEF7D, 0xFFFF, 0xEF5E, 0xF77E, 0xFFDF, 0xF79E, 0xF77E, // 0x0A00 (2560) pixels +0xD65B, 0x7B70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0A10 (2576) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0A20 (2592) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4208, 0x5A4B, 0xA495, 0xD67B, 0xC599, 0xDEBC, 0xFFFF, // 0x0A30 (2608) pixels +0xFFBF, 0xE71C, 0x8C71, 0xE73C, 0xB5B6, 0xEF7D, 0xFFFF, 0xEF5E, 0xF77E, 0xFFFF, 0xFFDF, 0xF79E, 0xEF5E, 0xC5B9, 0x4A49, 0x0000, // 0x0A40 (2624) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0A50 (2640) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0A60 (2656) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x39E7, 0x4A2A, 0xACF6, 0xE6FC, 0xD63A, 0xE71D, 0xFFFF, 0xF79E, 0xEF3D, 0x9CD3, 0xD69A, // 0x0A70 (2672) pixels +0xBDF7, 0xFFDE, 0xFFDF, 0xF77E, 0xF79E, 0xFFDF, 0xFFFF, 0xFFBF, 0xF7BF, 0xEF1D, 0xAD15, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0A80 (2688) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0A90 (2704) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0AA0 (2720) pixels +0x0000, 0x2965, 0x62CC, 0xACD6, 0xEF3D, 0xE6DC, 0xE71D, 0xFFFF, 0xF7BF, 0xF75E, 0x9CF3, 0xDEDB, 0xFFDF, 0xE73C, 0xFFDF, 0xF7BE, // 0x0AB0 (2736) pixels +0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5E, 0xD65A, 0x41E8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0AC0 (2752) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0AD0 (2768) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1922, 0x734F, 0xB4F7, // 0x0AE0 (2784) pixels +0xEF5E, 0xE6FC, 0xEF3D, 0xEF5D, 0xF79E, 0xF79E, 0xB5B6, 0xBDF7, 0xC638, 0xC638, 0xFFFF, 0xFFDF, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0AF0 (2800) pixels +0xFFFF, 0xFFDF, 0xEF1D, 0x9452, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B00 (2816) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B10 (2832) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2144, 0x736F, 0xBD78, 0xEF5E, 0xDEBC, 0xEF3D, 0xE6FC, // 0x0B20 (2848) pixels +0xF7BF, 0xF79E, 0xD69A, 0x9492, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79F, 0xC5D9, // 0x0B30 (2864) pixels +0x2144, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B40 (2880) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B50 (2896) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x31A6, 0x7B8F, 0xB537, 0xE6DC, 0xE71D, 0xF79E, 0xE6FD, 0xFFDF, 0xFFFF, 0xEF7D, 0x9492, // 0x0B60 (2912) pixels +0xE71C, 0x738E, 0xEF7D, 0xFFDF, 0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xD67B, 0x62ED, 0x0000, 0x8410, 0x0000, // 0x0B70 (2928) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B80 (2944) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B90 (2960) pixels +0x0000, 0x39C7, 0x83F0, 0xACF7, 0xD65B, 0xF79E, 0xFFDF, 0xE6FC, 0xFFDF, 0xFFFF, 0xFFDF, 0x8C71, 0xE71C, 0xE71C, 0xFFFF, 0xFFDF, // 0x0BA0 (2976) pixels +0xFFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDE7B, 0x8BD2, 0x0000, 0x630C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0BB0 (2992) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0BC0 (3008) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x39C7, 0x8C31, 0xACD6, // 0x0BD0 (3024) pixels +0xD65B, 0xF79E, 0xFFDF, 0xE6FD, 0xFFDF, 0xEF5E, 0xEF1D, 0x83F0, 0xE73C, 0xFFFF, 0xEF5D, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0BE0 (3040) pixels +0xFFFF, 0xFFFF, 0xDE9C, 0xD65B, 0x8430, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0BF0 (3056) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0C00 (3072) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0x0000, 0x31A6, 0x8C31, 0x9C74, 0xDE9B, 0xFFDF, 0xFFDF, 0xEF1D, // 0x0C10 (3088) pixels +0xF79E, 0xEF5E, 0xE6FD, 0x9493, 0xCE79, 0xD6BA, 0xBDD7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77E, 0xBD78, 0x9472, // 0x0C20 (3104) pixels +0x4A4C, 0x524B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0C30 (3120) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0C40 (3136) pixels +0x0000, 0x0000, 0x0000, 0x4208, 0x0000, 0x3166, 0x73AE, 0x9C74, 0xE6DC, 0xFFDF, 0xF79E, 0xF79E, 0xF79E, 0xF79E, 0xE6DC, 0xC618, // 0x0C50 (3152) pixels +0x9492, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF3D, 0xDE9C, 0xACD6, 0x6ACD, 0x3ACF, 0x9D9A, 0x7C94, 0x0000, 0x0000, // 0x0C60 (3168) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0C70 (3184) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0C80 (3200) pixels +0x0000, 0x2945, 0x4A8B, 0xA4F5, 0xF77E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBF, 0xFFDF, 0x8C51, 0xBDD8, 0xC5DA, 0xBDB9, // 0x0C90 (3216) pixels +0xCE3A, 0xC5F9, 0x9C74, 0x622D, 0x3806, 0x2106, 0x3BF4, 0x7DBB, 0xAEBE, 0x8578, 0x0000, 0x0000, 0x4208, 0x0000, 0x0000, 0x0000, // 0x0CA0 (3232) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0CB0 (3248) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0x0000, 0x420A, 0x11CB, 0x632F, // 0x0CC0 (3264) pixels +0x9CB5, 0xB597, 0xCE79, 0xD6BA, 0xD6BB, 0xAD77, 0xB5B7, 0xAD96, 0x6B30, 0x0809, 0x300C, 0x280C, 0x3009, 0x0003, 0x0000, 0x00A3, // 0x0CD0 (3280) pixels +0x332F, 0x7D99, 0x8E1C, 0x8E1B, 0x9E7D, 0x95FB, 0x2986, 0x0000, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0CE0 (3296) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0CF0 (3312) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x0000, 0x82B5, 0x398D, 0x18CC, 0x0170, 0x00B0, 0x000C, 0x100A, // 0x0D00 (3328) pixels +0x180B, 0x000A, 0x0009, 0x0009, 0x380B, 0x518D, 0x48CC, 0x484B, 0x49AD, 0x3BF5, 0x5CF8, 0x6539, 0x7DDC, 0xBEDD, 0xCF1D, 0x759B, // 0x0D10 (3344) pixels +0x9E7C, 0xA67D, 0x3AAC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0D20 (3360) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0D30 (3376) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x000A, 0x0000, 0x398C, 0x314B, 0x3A32, 0x53B7, 0x53B6, 0x42D4, 0x4314, 0x5375, 0x63B5, 0x6395, // 0x0D40 (3392) pixels +0x4252, 0x496E, 0x4AF2, 0x5436, 0x5CD9, 0x5D5B, 0x8DFC, 0x9E7D, 0xAE9D, 0xBEDD, 0xCEFD, 0x5D5A, 0xA67C, 0xA69D, 0x5390, 0x0000, // 0x0D50 (3408) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0D60 (3424) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0D70 (3440) pixels +0x4208, 0x0000, 0x318A, 0x292A, 0x30ED, 0x52F4, 0x53B7, 0x4BF7, 0x5438, 0x5458, 0x5C17, 0x5376, 0x4B36, 0x6CD9, 0x5D5A, 0x75DB, // 0x0D80 (3456) pixels +0x85FC, 0x963C, 0xA67C, 0xA67C, 0x9E5C, 0xA67C, 0x8DFB, 0x5D5A, 0xA67C, 0xBEFE, 0x74B5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0D90 (3472) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0DA0 (3488) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02AA, 0x0000, 0x31C9, 0x292A, // 0x0DB0 (3504) pixels +0x394D, 0x4212, 0x4315, 0x43B6, 0x5CB9, 0x4B96, 0x5BB6, 0x7458, 0x6C58, 0x755A, 0x5D5A, 0x85DB, 0xAE9D, 0x9E5C, 0xBEDD, 0xAE9D, // 0x0DC0 (3520) pixels +0x963C, 0x9E5C, 0x75BB, 0x657B, 0xBEBD, 0xB6DE, 0x74F7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0DD0 (3536) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0DE0 (3552) pixels +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2108, 0x396E, 0x41D0, 0x42D4, 0x3356, // 0x0DF0 (3568) pixels +0x3BF7, 0x43B7, 0x53D7, 0x5C99, 0x5417, 0x651A, 0x5D5A, 0x7DBB, 0x85FB, 0x8E1C, 0x9E5C, 0x8E1C, 0x85FB, 0x963C, 0x961C, 0x7DDB, // 0x0E00 (3584) pixels +0xD73E, 0xAEBD, 0x8517, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0E10 (3600) pixels +}; diff --git a/libraries/MySensors/utility/RF24.cpp b/libraries/MySensors/utility/RF24.cpp index 38053ab..5f5329d 100755 --- a/libraries/MySensors/utility/RF24.cpp +++ b/libraries/MySensors/utility/RF24.cpp @@ -19,15 +19,30 @@ void RF24::csn(bool mode) // divider of 4 is the minimum we want. // CLK:BUS 8Mhz:2Mhz, 16Mhz:4Mhz, or 20Mhz:5Mhz #ifdef ARDUINO - #if !defined( __AVR_ATtiny85__ ) && !defined( __AVR_ATtiny84__) && !defined (__arm__) - SPI.setBitOrder(MSBFIRST); - SPI.setDataMode(SPI_MODE0); - SPI.setClockDivider(SPI_CLOCK_DIV2); + #if ( !defined(RF24_TINY) && !defined (__arm__) && !defined (SOFTSPI)) || defined (CORE_TEENSY) + _SPI.setBitOrder(MSBFIRST); + _SPI.setDataMode(SPI_MODE0); + _SPI.setClockDivider(SPI_CLOCK_DIV2); #endif #endif -#ifndef __arm__ - digitalWrite(csn_pin,mode); + +#if defined (RF24_TINY) + if (ce_pin != csn_pin) { + digitalWrite(csn_pin,mode); + } + else { + if (mode == HIGH) { + PORTB |= (1<CSN HIGH + delayMicroseconds(100); // allow csn to settle. + } + else { + PORTB &= ~(1<CSN LOW + delayMicroseconds(11); // allow csn to settle + } + } +#else if !defined (__arm__) || defined (CORE_TEENSY) + digitalWrite(csn_pin,mode); #endif } @@ -36,7 +51,8 @@ void RF24::csn(bool mode) void RF24::ce(bool level) { - digitalWrite(ce_pin,level); + //Allow for 3-pin use on ATTiny + if (ce_pin != csn_pin) digitalWrite(ce_pin,level); } /****************************************************************************/ @@ -45,18 +61,18 @@ uint8_t RF24::read_register(uint8_t reg, uint8_t* buf, uint8_t len) { uint8_t status; -#if defined (__arm__) - status = SPI.transfer(csn_pin, R_REGISTER | ( REGISTER_MASK & reg ), SPI_CONTINUE ); +#if defined (__arm__) && !defined ( CORE_TEENSY ) + status = _SPI.transfer(csn_pin, R_REGISTER | ( REGISTER_MASK & reg ), SPI_CONTINUE ); while ( len-- > 1 ){ - *buf++ = SPI.transfer(csn_pin,0xff, SPI_CONTINUE); + *buf++ = _SPI.transfer(csn_pin,0xff, SPI_CONTINUE); } - *buf++ = SPI.transfer(csn_pin,0xff); + *buf++ = _SPI.transfer(csn_pin,0xff); #else csn(LOW); - status = SPI.transfer( R_REGISTER | ( REGISTER_MASK & reg ) ); + status = _SPI.transfer( R_REGISTER | ( REGISTER_MASK & reg ) ); while ( len-- ){ - *buf++ = SPI.transfer(0xff); + *buf++ = _SPI.transfer(0xff); } csn(HIGH); @@ -70,13 +86,13 @@ uint8_t RF24::read_register(uint8_t reg, uint8_t* buf, uint8_t len) uint8_t RF24::read_register(uint8_t reg) { - #if defined (__arm__) - SPI.transfer(csn_pin, R_REGISTER | ( REGISTER_MASK & reg ) , SPI_CONTINUE); - uint8_t result = SPI.transfer(csn_pin,0xff); + #if defined (__arm__) && !defined ( CORE_TEENSY ) + _SPI.transfer(csn_pin, R_REGISTER | ( REGISTER_MASK & reg ) , SPI_CONTINUE); + uint8_t result = _SPI.transfer(csn_pin,0xff); #else csn(LOW); - SPI.transfer( R_REGISTER | ( REGISTER_MASK & reg ) ); - uint8_t result = SPI.transfer(0xff); + _SPI.transfer( R_REGISTER | ( REGISTER_MASK & reg ) ); + uint8_t result = _SPI.transfer(0xff); csn(HIGH); #endif @@ -90,18 +106,18 @@ uint8_t RF24::write_register(uint8_t reg, const uint8_t* buf, uint8_t len) { uint8_t status; - #if defined (__arm__) - status = SPI.transfer(csn_pin, W_REGISTER | ( REGISTER_MASK & reg ), SPI_CONTINUE ); - while ( len-- > 1){ - SPI.transfer(csn_pin,*buf++, SPI_CONTINUE); + #if defined (__arm__) && !defined ( CORE_TEENSY ) + status = _SPI.transfer(csn_pin, W_REGISTER | ( REGISTER_MASK & reg ), SPI_CONTINUE ); + while ( --len){ + _SPI.transfer(csn_pin,*buf++, SPI_CONTINUE); } - SPI.transfer(csn_pin,*buf++); + _SPI.transfer(csn_pin,*buf++); #else csn(LOW); - status = SPI.transfer( W_REGISTER | ( REGISTER_MASK & reg ) ); + status = _SPI.transfer( W_REGISTER | ( REGISTER_MASK & reg ) ); while ( len-- ) - SPI.transfer(*buf++); + _SPI.transfer(*buf++); csn(HIGH); @@ -118,14 +134,14 @@ uint8_t RF24::write_register(uint8_t reg, uint8_t value) IF_SERIAL_DEBUG(printf_P(PSTR("write_register(%02x,%02x)\r\n"),reg,value)); - #if defined (__arm__) - status = SPI.transfer(csn_pin, W_REGISTER | ( REGISTER_MASK & reg ), SPI_CONTINUE); - SPI.transfer(csn_pin,value); + #if defined (__arm__) && !defined ( CORE_TEENSY ) + status = _SPI.transfer(csn_pin, W_REGISTER | ( REGISTER_MASK & reg ), SPI_CONTINUE); + _SPI.transfer(csn_pin,value); #else csn(LOW); - status = SPI.transfer( W_REGISTER | ( REGISTER_MASK & reg ) ); - SPI.transfer(value); + status = _SPI.transfer( W_REGISTER | ( REGISTER_MASK & reg ) ); + _SPI.transfer(value); csn(HIGH); #endif @@ -140,39 +156,39 @@ uint8_t RF24::write_payload(const void* buf, uint8_t data_len, const uint8_t wri uint8_t status; const uint8_t* current = reinterpret_cast(buf); - if(data_len > payload_size) data_len = payload_size; - uint8_t blank_len = dynamic_payloads_enabled ? 0 : payload_size - data_len; - + data_len = min(data_len, payload_size); + uint8_t blank_len = dynamic_payloads_enabled ? 0 : payload_size - data_len; + //printf("[Writing %u bytes %u blanks]",data_len,blank_len); - #if defined (__arm__) + #if defined (__arm__) && !defined ( CORE_TEENSY ) - status = SPI.transfer(csn_pin, writeType , SPI_CONTINUE); + status = _SPI.transfer(csn_pin, writeType , SPI_CONTINUE); if(blank_len){ while ( data_len--){ - SPI.transfer(csn_pin,*current++, SPI_CONTINUE); + _SPI.transfer(csn_pin,*current++, SPI_CONTINUE); } while ( --blank_len ){ - SPI.transfer(csn_pin,0, SPI_CONTINUE); + _SPI.transfer(csn_pin,0, SPI_CONTINUE); } - SPI.transfer(csn_pin,0); + _SPI.transfer(csn_pin,0); }else{ while( --data_len ){ - SPI.transfer(csn_pin,*current++, SPI_CONTINUE); + _SPI.transfer(csn_pin,*current++, SPI_CONTINUE); } - SPI.transfer(csn_pin,*current); + _SPI.transfer(csn_pin,*current); } #else csn(LOW); - status = SPI.transfer( writeType ); + status = _SPI.transfer( writeType ); while ( data_len-- ) { - SPI.transfer(*current++); + _SPI.transfer(*current++); } while ( blank_len-- ) { - SPI.transfer(0); + _SPI.transfer(0); } csn(HIGH); @@ -190,39 +206,39 @@ uint8_t RF24::read_payload(void* buf, uint8_t data_len) if(data_len > payload_size) data_len = payload_size; uint8_t blank_len = dynamic_payloads_enabled ? 0 : payload_size - data_len; - + //printf("[Reading %u bytes %u blanks]",data_len,blank_len); - #if defined (__arm__) + #if defined (__arm__) && !defined ( CORE_TEENSY ) - status = SPI.transfer(csn_pin, R_RX_PAYLOAD, SPI_CONTINUE ); + status = _SPI.transfer(csn_pin, R_RX_PAYLOAD, SPI_CONTINUE ); if( blank_len ){ - while ( data_len-- ){ - *current++ = SPI.transfer(csn_pin,0xFF, SPI_CONTINUE); + *current++ = _SPI.transfer(csn_pin,0xFF, SPI_CONTINUE); } + while ( --blank_len ){ - SPI.transfer(csn_pin,0xFF, SPI_CONTINUE); + _SPI.transfer(csn_pin,0xFF, SPI_CONTINUE); } - SPI.transfer(csn_pin,0xFF); + _SPI.transfer(csn_pin,0xFF); }else{ while ( --data_len ){ - *current++ = SPI.transfer(csn_pin,0xFF, SPI_CONTINUE); + *current++ = _SPI.transfer(csn_pin,0xFF, SPI_CONTINUE); } - *current = SPI.transfer(csn_pin,0xFF); + *current = _SPI.transfer(csn_pin,0xFF); } #else csn(LOW); - status = SPI.transfer( R_RX_PAYLOAD ); + status = _SPI.transfer( R_RX_PAYLOAD ); while ( data_len-- ) { - *current++ = SPI.transfer(0xFF); + *current++ = _SPI.transfer(0xFF); } while ( blank_len-- ) { - SPI.transfer(0xff); + _SPI.transfer(0xff); } csn(HIGH); @@ -250,12 +266,12 @@ uint8_t RF24::flush_tx(void) uint8_t RF24::spiTrans(uint8_t cmd){ uint8_t status; - #if defined (__arm__) - status = SPI.transfer(csn_pin, cmd ); + #if defined (__arm__) && !defined ( CORE_TEENSY ) + status = _SPI.transfer(csn_pin, cmd ); #else csn(LOW); - status = SPI.transfer( cmd ); + status = _SPI.transfer( cmd ); csn(HIGH); #endif return status; @@ -271,7 +287,6 @@ uint8_t RF24::get_status(void) /****************************************************************************/ #if !defined (MINIMAL) - void RF24::print_status(uint8_t status) { printf_P(PSTR("STATUS\t\t = 0x%02x RX_DR=%x TX_DS=%x MAX_RT=%x RX_P_NO=%x TX_FULL=%x\r\n"), @@ -315,7 +330,7 @@ void RF24::print_address_register(const char* name, uint8_t reg, uint8_t qty) while (qty--) { - uint8_t buffer[5]; + uint8_t buffer[addr_width]; read_register(reg++,buffer,sizeof buffer); printf_P(PSTR(" 0x")); @@ -330,9 +345,8 @@ void RF24::print_address_register(const char* name, uint8_t reg, uint8_t qty) /****************************************************************************/ RF24::RF24(uint8_t _cepin, uint8_t _cspin): - ce_pin(_cepin), csn_pin(_cspin), wide_band(false), p_variant(false), - payload_size(32), dynamic_payloads_enabled(false), - pipe0_reading_address(0) + ce_pin(_cepin), csn_pin(_cspin), p_variant(false), + payload_size(32), dynamic_payloads_enabled(false), addr_width(5)//,pipe0_reading_address(0) { } @@ -340,9 +354,6 @@ RF24::RF24(uint8_t _cepin, uint8_t _cspin): void RF24::setChannel(uint8_t channel) { - // TODO: This method could take advantage of the 'wide_band' calculation - // done in setChannel() to require certain channel spacing. - const uint8_t max_channel = 127; write_register(RF_CH,min(channel,max_channel)); } @@ -425,6 +436,7 @@ void RF24::printDetails(void) printf_P(PSTR("CRC Length\t = %S\r\n"),pgm_read_word(&rf24_crclength_e_str_P[getCRCLength()])); printf_P(PSTR("PA Power\t = %S\r\n"),pgm_read_word(&rf24_pa_dbm_e_str_P[getPALevel()])); #endif + } #endif @@ -433,18 +445,18 @@ void RF24::printDetails(void) void RF24::begin(void) { // Initialize pins - pinMode(ce_pin,OUTPUT); + if (ce_pin != csn_pin) pinMode(ce_pin,OUTPUT); - #if defined(__arm__) - SPI.begin(csn_pin); // Using the extended SPI features of the DUE - SPI.setClockDivider(csn_pin, 9); // Set the bus speed to 8.4mhz on Due - SPI.setBitOrder(csn_pin,MSBFIRST); // Set the bit order and mode specific to this device - SPI.setDataMode(csn_pin,SPI_MODE0); + #if defined(__arm__) && ! defined( CORE_TEENSY ) + _SPI.begin(csn_pin); // Using the extended SPI features of the DUE + _SPI.setClockDivider(csn_pin, 9); // Set the bus speed to 8.4mhz on Due + _SPI.setBitOrder(csn_pin,MSBFIRST); // Set the bit order and mode specific to this device + _SPI.setDataMode(csn_pin,SPI_MODE0); ce(LOW); //csn(HIGH); #else - pinMode(csn_pin,OUTPUT); - SPI.begin(); + if (ce_pin != csn_pin) pinMode(csn_pin,OUTPUT); + _SPI.begin(); ce(LOW); csn(HIGH); #endif @@ -503,39 +515,66 @@ void RF24::begin(void) // PTX should use only 22uA of power write_register(CONFIG, ( read_register(CONFIG) ) & ~_BV(PRIM_RX) ); - } /****************************************************************************/ void RF24::startListening(void) { + #if !defined (RF24_TINY) powerUp(); + #endif write_register(CONFIG, read_register(CONFIG) | _BV(PRIM_RX)); write_register(STATUS, _BV(RX_DR) | _BV(TX_DS) | _BV(MAX_RT) ); // Restore the pipe0 adddress, if exists - if (pipe0_reading_address){ - write_register(RX_ADDR_P0, reinterpret_cast(&pipe0_reading_address), 5); + if (pipe0_reading_address[0] > 0){ + write_register(RX_ADDR_P0, pipe0_reading_address, addr_width); + }else{ + closeReadingPipe(0); } // Flush buffers - flush_rx(); - flush_tx(); + //flush_rx(); + if(read_register(FEATURE) & _BV(EN_ACK_PAY)){ + flush_tx(); + } // Go! ce(HIGH); - + } /****************************************************************************/ +static const uint8_t child_pipe_enable[] PROGMEM = +{ + ERX_P0, ERX_P1, ERX_P2, ERX_P3, ERX_P4, ERX_P5 +}; void RF24::stopListening(void) { + ce(LOW); - flush_tx(); - flush_rx(); + #if defined(__arm__) + delayMicroseconds(300); + #endif + delayMicroseconds(130); + if(read_register(FEATURE) & _BV(EN_ACK_PAY)){ + flush_tx(); + } + //flush_rx(); write_register(CONFIG, ( read_register(CONFIG) ) & ~_BV(PRIM_RX) ); + + #if defined (RF24_TINY) + // for 3 pins solution TX mode is only left with additonal powerDown/powerUp cycle + if (ce_pin == csn_pin) { + powerDown(); + powerUp(); + } + #endif + write_register(EN_RXADDR,read_register(EN_RXADDR) | _BV(pgm_read_byte(&child_pipe_enable[0]))); // Enable RX on pipe0 + + delayMicroseconds(100); } @@ -566,18 +605,36 @@ void RF24::powerUp(void) } } +/******************************************************************/ +#if defined (FAILURE_HANDLING) +void RF24::errNotify(){ + IF_SERIAL_DEBUG(printf_P(PSTR("HARDWARE FAIL\r\n"))); + failureDetected = 1; +} +#endif /******************************************************************/ //Similar to the previous write, clears the interrupt flags bool RF24::write( const void* buf, uint8_t len, const bool multicast ) { //Start Writing - startWrite(buf,len,multicast); + startFastWrite(buf,len,multicast); //Wait until complete or failed - //ACK payloads that are handled improperly will cause this to hang - //If autoAck is ON, a payload has to be written prior to reading a payload, else write after reading a payload - while( ! ( get_status() & ( _BV(TX_DS) | _BV(MAX_RT) ))) { } + #if defined (FAILURE_HANDLING) + uint32_t timer = millis(); + #endif + + while( ! ( get_status() & ( _BV(TX_DS) | _BV(MAX_RT) ))) { + #if defined (FAILURE_HANDLING) + if(millis() - timer > 75){ + errNotify(); + return 0; + } + #endif + } + + ce(LOW); uint8_t status = write_register(STATUS,_BV(RX_DR) | _BV(TX_DS) | _BV(MAX_RT) ); @@ -611,6 +668,12 @@ bool RF24::writeBlocking( const void* buf, uint8_t len, uint32_t timeout ) reUseTX(); //Set re-transmit and clear the MAX_RT interrupt flag if(millis() - timer > timeout){ return 0; } //If this payload has exceeded the user-defined timeout, exit and return 0 } + #if defined (FAILURE_HANDLING) + if(millis() - timer > (timeout+75) ){ + errNotify(); + return 0; + } + #endif } @@ -638,6 +701,10 @@ bool RF24::writeFast( const void* buf, uint8_t len, const bool multicast ) //Return 0 so the user can control the retrys and set a timer or failure counter if required //The radio will auto-clear everything in the FIFO as long as CE remains high + #if defined (FAILURE_HANDLING) + uint32_t timer = millis(); + #endif + while( ( get_status() & ( _BV(TX_FULL) ))) { //Blocking only if FIFO is full. This will loop and block until TX is successful or fail if( get_status() & _BV(MAX_RT)){ @@ -646,7 +713,12 @@ bool RF24::writeFast( const void* buf, uint8_t len, const bool multicast ) return 0; //Return 0. The previous payload has been retransmitted //From the user perspective, if you get a 0, just keep trying to send the same payload } - + #if defined (FAILURE_HANDLING) + if(millis() - timer > 75 ){ + errNotify(); + return 0; + } + #endif } //Start Writing startFastWrite(buf,len,multicast); @@ -673,6 +745,7 @@ void RF24::startFastWrite( const void* buf, uint8_t len, const bool multicast){ } +/****************************************************************************/ //Added the original startWrite back in so users can still use interrupts, ack payloads, etc //Allows the library to pass all tests @@ -681,16 +754,27 @@ void RF24::startWrite( const void* buf, uint8_t len, const bool multicast ){ // Send the payload //write_payload( buf, len ); - write_payload( buf, len, multicast?static_cast(W_TX_PAYLOAD_NO_ACK):static_cast(W_TX_PAYLOAD)) ; - + write_payload( buf, len,multicast? W_TX_PAYLOAD_NO_ACK : W_TX_PAYLOAD ) ; ce(HIGH); - ce(LOW); + #if defined(CORE_TEENSY) || !defined(ARDUINO) + delayMicroseconds(10); + #endif + ce(LOW); } -bool RF24::txStandBy(){ +/****************************************************************************/ +bool RF24::rxFifoFull(){ + return read_register(FIFO_STATUS) & _BV(RX_FULL); +} +/****************************************************************************/ + +bool RF24::txStandBy(){ + #if defined (FAILURE_HANDLING) + uint32_t timeout = millis(); + #endif while( ! (read_register(FIFO_STATUS) & _BV(TX_EMPTY)) ){ if( get_status() & _BV(MAX_RT)){ write_register(STATUS,_BV(MAX_RT) ); @@ -698,12 +782,20 @@ bool RF24::txStandBy(){ flush_tx(); //Non blocking, flush the data return 0; } + #if defined (FAILURE_HANDLING) + if( millis() - timeout > 75){ + errNotify(); + return 0; + } + #endif } ce(LOW); //Set STANDBY-I mode return 1; } +/****************************************************************************/ + bool RF24::txStandBy(uint32_t timeout){ uint32_t start = millis(); @@ -717,7 +809,15 @@ bool RF24::txStandBy(uint32_t timeout){ ce(LOW); flush_tx(); return 0; } } + #if defined (FAILURE_HANDLING) + if( millis() - start > (timeout+75)){ + errNotify(); + return 0; + } + #endif } + + ce(LOW); //Set STANDBY-I mode return 1; @@ -735,18 +835,18 @@ uint8_t RF24::getDynamicPayloadSize(void) { uint8_t result = 0; - #if defined (__arm__) - SPI.transfer(csn_pin, R_RX_PL_WID, SPI_CONTINUE ); - result = SPI.transfer(csn_pin,0xff); + #if defined (__arm__) && ! defined( CORE_TEENSY ) + _SPI.transfer(csn_pin, R_RX_PL_WID, SPI_CONTINUE ); + result = _SPI.transfer(csn_pin,0xff); #else csn(LOW); - SPI.transfer( R_RX_PL_WID ); - result = SPI.transfer(0xff); + _SPI.transfer( R_RX_PL_WID ); + result = _SPI.transfer(0xff); csn(HIGH); #endif - if(result > 32) { flush_rx(); return 0; } + if(result > 32) { flush_rx(); delay(2); return 0; } return result; } @@ -761,9 +861,12 @@ bool RF24::available(void) bool RF24::available(uint8_t* pipe_num) { - - //Check the FIFO buffer to see if data is waitng to be read - + //Check the FIFO buffer to see if data is waiting to be read + if(listeningStarted){ + while(micros() - lastAvailableCheck < 800 && listeningStarted){}; + lastAvailableCheck = micros(); + listeningStarted = 0; + } if (!( read_register(FIFO_STATUS) & _BV(RX_EMPTY) )){ // If the caller wants the pipe number, include that @@ -774,8 +877,8 @@ bool RF24::available(uint8_t* pipe_num) return 1; } - return 0; + return 0; } @@ -813,8 +916,23 @@ void RF24::openWritingPipe(uint64_t value) // Note that AVR 8-bit uC's store this LSB first, and the NRF24L01(+) // expects it LSB first too, so we're good. - write_register(RX_ADDR_P0, reinterpret_cast(&value), 5); - write_register(TX_ADDR, reinterpret_cast(&value), 5); + write_register(RX_ADDR_P0, reinterpret_cast(&value), addr_width); + write_register(TX_ADDR, reinterpret_cast(&value), addr_width); + + + //const uint8_t max_payload_size = 32; + //write_register(RX_PW_P0,min(payload_size,max_payload_size)); + write_register(RX_PW_P0,payload_size); +} + +/****************************************************************************/ +void RF24::openWritingPipe(const uint8_t *address) +{ + // Note that AVR 8-bit uC's store this LSB first, and the NRF24L01(+) + // expects it LSB first too, so we're good. + + write_register(RX_ADDR_P0,address, addr_width); + write_register(TX_ADDR, address, addr_width); //const uint8_t max_payload_size = 32; //write_register(RX_PW_P0,min(payload_size,max_payload_size)); @@ -822,7 +940,6 @@ void RF24::openWritingPipe(uint64_t value) } /****************************************************************************/ - static const uint8_t child_pipe[] PROGMEM = { RX_ADDR_P0, RX_ADDR_P1, RX_ADDR_P2, RX_ADDR_P3, RX_ADDR_P4, RX_ADDR_P5 @@ -831,24 +948,22 @@ static const uint8_t child_payload_size[] PROGMEM = { RX_PW_P0, RX_PW_P1, RX_PW_P2, RX_PW_P3, RX_PW_P4, RX_PW_P5 }; -static const uint8_t child_pipe_enable[] PROGMEM = -{ - ERX_P0, ERX_P1, ERX_P2, ERX_P3, ERX_P4, ERX_P5 -}; + void RF24::openReadingPipe(uint8_t child, uint64_t address) { // If this is pipe 0, cache the address. This is needed because // openWritingPipe() will overwrite the pipe 0 address, so // startListening() will have to restore it. - if (child == 0) - pipe0_reading_address = address; + if (child == 0){ + memcpy(pipe0_reading_address,&address,addr_width); + } if (child <= 6) { // For pipes 2-5, only write the LSB if ( child < 2 ) - write_register(pgm_read_byte(&child_pipe[child]), reinterpret_cast(&address), 5); + write_register(pgm_read_byte(&child_pipe[child]), reinterpret_cast(&address), addr_width); else write_register(pgm_read_byte(&child_pipe[child]), reinterpret_cast(&address), 1); @@ -861,6 +976,44 @@ void RF24::openReadingPipe(uint8_t child, uint64_t address) } } +/****************************************************************************/ +void RF24::setAddressWidth(uint8_t a_width){ + + if(a_width -= 2){ + write_register(SETUP_AW,a_width%4); + addr_width = (a_width%4) + 2; + } + +} + +/****************************************************************************/ + +void RF24::openReadingPipe(uint8_t child, const uint8_t *address) +{ + // If this is pipe 0, cache the address. This is needed because + // openWritingPipe() will overwrite the pipe 0 address, so + // startListening() will have to restore it. + if (child == 0){ + memcpy(pipe0_reading_address,address,addr_width); + } + if (child <= 6) + { + // For pipes 2-5, only write the LSB + if ( child < 2 ){ + write_register(pgm_read_byte(&child_pipe[child]), address, addr_width); + }else{ + write_register(pgm_read_byte(&child_pipe[child]), address, 1); + } + write_register(pgm_read_byte(&child_payload_size[child]),payload_size); + + // Note it would be more efficient to set all of the bits for all open + // pipes at once. However, I thought it would make the calling code + // more simple to do it this way. + write_register(EN_RXADDR,read_register(EN_RXADDR) | _BV(pgm_read_byte(&child_pipe_enable[child]))); + + } +} + /****************************************************************************/ void RF24::closeReadingPipe( uint8_t pipe ) @@ -868,19 +1021,18 @@ void RF24::closeReadingPipe( uint8_t pipe ) write_register(EN_RXADDR,read_register(EN_RXADDR) & ~_BV(pgm_read_byte(&child_pipe_enable[pipe]))); } - /****************************************************************************/ void RF24::toggle_features(void) { - #if defined (__arm__) - SPI.transfer(csn_pin, ACTIVATE, SPI_CONTINUE ); - SPI.transfer(csn_pin, 0x73 ); + #if defined (__arm__) && ! defined( CORE_TEENSY ) + _SPI.transfer(csn_pin, ACTIVATE, SPI_CONTINUE ); + _SPI.transfer(csn_pin, 0x73 ); #else csn(LOW); - SPI.transfer( ACTIVATE ); - SPI.transfer( 0x73 ); + _SPI.transfer( ACTIVATE ); + _SPI.transfer( 0x73 ); csn(HIGH); #endif } @@ -924,6 +1076,7 @@ void RF24::enableAckPayload(void) // write_register(DYNPD,read_register(DYNPD) | _BV(DPL_P1) | _BV(DPL_P0)); + dynamic_payloads_enabled = true; } /****************************************************************************/ @@ -948,19 +1101,19 @@ void RF24::writeAckPayload(uint8_t pipe, const void* buf, uint8_t len) uint8_t data_len = min(len,32); - #if defined (__arm__) - SPI.transfer(csn_pin, W_ACK_PAYLOAD | ( pipe & B111 ), SPI_CONTINUE); + #if defined (__arm__) && ! defined( CORE_TEENSY ) + _SPI.transfer(csn_pin, W_ACK_PAYLOAD | ( pipe & B111 ), SPI_CONTINUE); while ( data_len-- > 1 ){ - SPI.transfer(csn_pin,*current++, SPI_CONTINUE); + _SPI.transfer(csn_pin,*current++, SPI_CONTINUE); } - SPI.transfer(csn_pin,*current++); + _SPI.transfer(csn_pin,*current++); #else csn(LOW); - SPI.transfer(W_ACK_PAYLOAD | ( pipe & B111 ) ); + _SPI.transfer(W_ACK_PAYLOAD | ( pipe & B111 ) ); while ( data_len-- ) - SPI.transfer(*current++); + _SPI.transfer(*current++); csn(HIGH); @@ -1032,7 +1185,7 @@ void RF24::setPALevel(uint8_t level) uint8_t setup = read_register(RF_SETUP) & 0b11111000; if(level > 3){ // If invalid level, go to max PA - level = RF24_PA_MAX << 1 + 1; // +1 to support the SI24R1 chip extra bit + level = (RF24_PA_MAX << 1) + 1; // +1 to support the SI24R1 chip extra bit }else{ level = (level << 1) + 1; // Else set level as requested } @@ -1057,13 +1210,11 @@ bool RF24::setDataRate(rf24_datarate_e speed) uint8_t setup = read_register(RF_SETUP) ; // HIGH and LOW '00' is 1Mbs - our default - wide_band = false ; setup &= ~(_BV(RF_DR_LOW) | _BV(RF_DR_HIGH)) ; if( speed == RF24_250KBPS ) { // Must set the RF_DR_LOW to 1; RF_DR_HIGH (used to be RF_DR) is already 0 // Making it '10'. - wide_band = false ; setup |= _BV( RF_DR_LOW ) ; } else @@ -1072,14 +1223,8 @@ bool RF24::setDataRate(rf24_datarate_e speed) // Making it '01' if ( speed == RF24_2MBPS ) { - wide_band = true ; setup |= _BV(RF_DR_HIGH); } - else - { - // 1Mbs - wide_band = false ; - } } write_register(RF_SETUP,setup); @@ -1088,10 +1233,6 @@ bool RF24::setDataRate(rf24_datarate_e speed) { result = true; } - else - { - wide_band = false; - } return result; } @@ -1151,9 +1292,11 @@ void RF24::setCRCLength(rf24_crclength_e length) rf24_crclength_e RF24::getCRCLength(void) { rf24_crclength_e result = RF24_CRC_DISABLED; + uint8_t config = read_register(CONFIG) & ( _BV(CRCO) | _BV(EN_CRC)) ; - - if ( config & _BV(EN_CRC ) ) + uint8_t AA = read_register(EN_AA); + + if ( config & _BV(EN_CRC ) || AA) { if ( config & _BV(CRCO) ) result = RF24_CRC_16; @@ -1196,7 +1339,7 @@ void RF24::setRetries(uint8_t delay, uint8_t count) # define SS 3 // PA7 #endif -#if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) || defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) +#if defined(RF24_TINY) void SPIClass::begin() { diff --git a/libraries/MySensors/utility/RF24.h b/libraries/MySensors/utility/RF24.h index 89ed231..235fb71 100755 --- a/libraries/MySensors/utility/RF24.h +++ b/libraries/MySensors/utility/RF24.h @@ -15,7 +15,10 @@ #ifndef __RF24_H__ #define __RF24_H__ - +#include "RF24_config.h" +#if defined SOFTSPI +#include +#endif /** * Power Amplifier level. * @@ -44,14 +47,22 @@ typedef enum { RF24_CRC_DISABLED = 0, RF24_CRC_8, RF24_CRC_16 } rf24_crclength_e class RF24 { private: +#ifdef SOFTSPI + SoftSPI spi; +#elif defined (SPI_UART) + SPIUARTClass uspi; +#endif + uint8_t ce_pin; /**< "Chip Enable" pin, activates the RX or TX role */ - uint8_t csn_pin; /**< SPI Chip select */ - bool wide_band; /* 2Mbs data rate in use? */ + uint8_t csn_pin; /**< SPI Chip select */ bool p_variant; /* False for RF24L01 and true for RF24L01P */ uint8_t payload_size; /**< Fixed size of payloads */ bool dynamic_payloads_enabled; /**< Whether dynamic payloads are enabled. */ - uint64_t pipe0_reading_address; /**< Last address set on pipe 0 for reading. */ - + uint8_t pipe0_reading_address[5]; /**< Last address set on pipe 0 for reading. */ + uint8_t addr_width; /**< The address width to use - 3,4 or 5 bytes. */ + uint32_t lastAvailableCheck; /**< Limits the amount of time between reading data, only when switching between modes */ + boolean listeningStarted; /**< Var for delaying available() after start listening */ + public: /** @@ -76,9 +87,6 @@ public: * Begin operation of the chip * * Call this in setup(), before calling any other methods. - * - * @note Optimization: The radio is partially configured in PTX mode - * when begin is called to make the transition to PTX mode simpler. */ void begin(void); @@ -87,7 +95,7 @@ public: * * Be sure to call openReadingPipe() first. Do not call write() while * in this mode, without first calling stopListening(). Call - * isAvailable() to check for incoming traffic, and read() to get it. + * Available() to check for incoming traffic, and read() to get it. */ void startListening(void); @@ -95,27 +103,12 @@ public: * Stop listening for incoming messages * * Do this before calling write(). - * - * @note Optimization: The radio will be taken out of PRX mode as soon - * as listening is stopped. Enables quicker and simpler engaging of - * primary transmitter (PTX) mode. */ void stopListening(void); /** * Test whether there are bytes available to be read * - * @note Optimization: The available functino now checks the FIFO - * buffers directly for data instead of relying of interrupt flags. - * - * @note Interrupt flags will not be cleared until a payload is - * actually read from the FIFO - * - * @see txStandBy() - * @see startWrite() - * @see write() - * @see writeFast() - * * @return True if there is a payload available, false if none is */ bool available(void); @@ -128,9 +121,9 @@ public: * @note I specifically chose 'void*' as a data type to make it easier * for beginners to use. No casting needed. * - * @note Optimization: No longer boolean. Use available to - * determine if packets are available. Interrupt flags are now cleared - * during reads instead of when calling available(). + * @note No longer boolean. Use available to determine if packets are + * available. Interrupt flags are now cleared during reads instead of + * when calling available(). * * @param buf Pointer to a buffer where the data should be written * @param len Maximum number of bytes to read into the buffer @@ -139,15 +132,12 @@ public: void read( void* buf, uint8_t len ); /** - * @note Optimization: Improved performance slightly - * Write to the open writing pipe - * * Be sure to call openWritingPipe() first to set the destination * of where to write to. * * This blocks until the message is successfully acknowledged by * the receiver or the timeout/retransmit maxima are reached. In - * the current configuration, the max delay here is 60ms. + * the current configuration, the max delay here is 60-70ms. * * The maximum size of data written is the fixed payload size, see * getPayloadSize(). However, you can write less, and the remainder @@ -162,24 +152,27 @@ public: bool write( const void* buf, uint8_t len ); /** - * Open a pipe for writing + * New: Open a pipe for writing via byte array. Old addressing format retained + * for compatibility. * - * Only one pipe can be open at once, but you can change the pipe - * you'll listen to. Do not call this while actively listening. - * Remember to stopListening() first. + * Only one writing pipe can be open at once, but you can change the address + * you'll write to. Call stopListening() first. * - * Addresses are 40-bit hex values, e.g.: + * Addresses are assigned via a byte array, default is 5 byte address length + * + * Usage is exactly the same as before, except for declaring the array * * @code - * openWritingPipe(0xF0F0F0F0F0); + * uint8_t addresses[][6] = {"1Node","2Node"}; + * openWritingPipe(addresses[0]); * @endcode + * @see setAddressWidth * - * @param address The 40-bit address of the pipe to open. This can be - * any value whatsoever, as long as you are the only one writing to it - * and only one other radio is listening to it. Coordinate these pipe + * @param address The address of the pipe to open. Coordinate these pipe * addresses amongst nodes on the network. */ - void openWritingPipe(uint64_t address); + + void openWritingPipe(const uint8_t *address); /** * Open a pipe for reading @@ -188,35 +181,27 @@ public: * reading pipes, and then call startListening(). * * @see openWritingPipe + * @see setAddressWidth * - * @warning Pipes 1-5 should share the first 32 bits. - * Only the least significant byte should be unique, e.g. + * @warning Pipes 1-5 should share the same address, except the first byte. + * Only the first byte in the array should be unique, e.g. * @code - * openReadingPipe(1,0xF0F0F0F0AA); - * openReadingPipe(2,0xF0F0F0F066); + * uint8_t addresses[][6] = {"1Node","2Node"}; + * openReadingPipe(1,addresses[0]); + * openReadingPipe(2,addresses[1]); * @endcode * * @warning Pipe 0 is also used by the writing pipe. So if you open * pipe 0 for reading, and then startListening(), it will overwrite the * writing pipe. Ergo, do an openWritingPipe() again before write(). * - * @todo Enforce the restriction that pipes 1-5 must share the top 32 bits - * * @param number Which pipe# to open, 0-5. - * @param address The 40-bit address of the pipe to open. + * @param address The 24, 32 or 40 bit address of the pipe to open. */ - void openReadingPipe(uint8_t number, uint64_t address); + void openReadingPipe(uint8_t number, const uint8_t *address); - - /** - * Close a pipe after it has been previously opened. - * Can be safely called without having previously opened a pipe. - * @param pipe Which pipe # to close, 0-5. - */ - void closeReadingPipe( uint8_t pipe ) ; - - /**@}*/ + /**@}*/ /** * @name Advanced Operation * @@ -236,34 +221,41 @@ public: * FIFO buffers. This optimized version does not rely on interrupt * flags, but checks the actual FIFO buffers. * - * @note Optimization: Interrupt flags are no longer cleared when available is called, - * but will be reset only when the data is read from the FIFO buffers. - * * @param[out] pipe_num Which pipe has the payload available * @return True if there is a payload available, false if none is */ bool available(uint8_t* pipe_num); + /** + * Check if the radio needs to be read. Can be used to prevent data loss + * @@return True if all three 32-byte radio buffers are full + */ + bool rxFifoFull(); + /** * Enter low-power mode * * To return to normal power mode, either write() some data or * startListening, or powerUp(). * - * @note Optimization: The radio will never enter power down unless instructed - * by the MCU via this command. + * @note After calling startListening(), a basic radio will consume about 13.5mA + * at max PA level. + * During active transmission, the radio will consume about 11.5mA, but this will + * be reduced to 26uA (.026mA) between sending. + * In full powerDown mode, the radio will consume approximately 900nA (.0009mA) */ void powerDown(void); /** - * Leave low-power mode - making radio more responsive - * + * Leave low-power mode - required for normal radio operation after calling powerDown() + * * To return to low power mode, call powerDown(). + * @note This will take up to 5ms for maximum compatibility */ void powerUp(void) ; /** - * Write for single NOACK writes. Disables acknowledgements/autoretries for a single write. + * Write for single NOACK writes. Optionally disables acknowledgements/autoretries for a single write. * * @note enableDynamicAck() must be called to enable this feature * @@ -279,13 +271,12 @@ public: bool write( const void* buf, uint8_t len, const bool multicast ); /** - * @note Optimization: New Command * * This will not block until the 3 FIFO buffers are filled with data. * Once the FIFOs are full, writeFast will simply wait for success or * timeout, and return 1 or 0 respectively. From a user perspective, just * keep trying to send the same data. The library will keep auto retrying * the current payload using the built in functionality. - * @warning It is important to never keep the nRF24L01 in TX mode for more than 4ms at a time. If the auto + * @warning It is important to never keep the nRF24L01 in TX mode and FIFO full for more than 4ms at a time. If the auto * retransmit is enabled, the nRF24L01 is never in TX mode long enough to disobey this rule. Allow the FIFO * to clear by issuing txStandBy() or ensure appropriate time between transmissions. * @@ -325,12 +316,11 @@ public: bool writeFast( const void* buf, uint8_t len, const bool multicast ); /** - * @note Optimization: New Command * This function extends the auto-retry mechanism to any specified duration. * It will not block until the 3 FIFO buffers are filled with data. * If so the library will auto retry until a new payload is written * or the user specified timeout period is reached. - * @warning It is important to never keep the nRF24L01 in TX mode for more than 4ms at a time. If the auto + * @warning It is important to never keep the nRF24L01 in TX mode and FIFO full for more than 4ms at a time. If the auto * retransmit is enabled, the nRF24L01 is never in TX mode long enough to disobey this rule. Allow the FIFO * to clear by issuing txStandBy() or ensure appropriate time between transmissions. * @@ -355,7 +345,6 @@ public: bool writeBlocking( const void* buf, uint8_t len, uint32_t timeout ); /** - * @note Optimization: New Command * This function should be called as soon as transmission is finished to * drop the radio back to STANDBY-I mode. If not issued, the radio will * remain in STANDBY-II mode which, per the data sheet, is not a recommended @@ -383,8 +372,6 @@ public: bool txStandBy(); /** - * @note Optimization: New Command - * * This function allows extended blocking and auto-retries per a user defined timeout * @code * Fully Blocking Example: @@ -408,8 +395,7 @@ public: * The next time a message is received on @p pipe, the data in @p buf will * be sent back in the acknowledgement. * - * @warning According to the data sheet, only three of these can be pending - * at any time as there are only 3 FIFO buffers. + * @warning Only three of these can be pending at any time as there are only 3 FIFO buffers. * * @param pipe Which pipe# (typically 1-5) will get this response. * @param buf Pointer to data that is sent @@ -434,14 +420,10 @@ public: /** * Determine if an ack payload was received in the most recent call to - * write(). + * write(). The regular available() can also be used. * * Call read() to retrieve the ack payload. * - * @note Optimization: Calling this function NO LONGER clears the interrupt - * flag. The new functionality checks the RX FIFO buffer for an ACK payload - * instead of relying on interrupt flags.Reading the payload will clear the flags. - * * @return True if an ack payload is available. */ bool isAckPayloadAvailable(void); @@ -464,7 +446,7 @@ public: * @note Optimization: This function now leaves the CE pin high, so the radio * will remain in TX or STANDBY-II Mode until a txStandBy() command is issued. * This allows the chip to be used to its full potential in TX mode. - * @warning It is important to never keep the nRF24L01 in TX mode for more than 4ms at a time. If the auto + * @warning It is important to never keep the nRF24L01 in TX mode with FIFO full for more than 4ms at a time. If the auto * retransmit is enabled, the nRF24L01 is never in TX mode long enough to disobey this rule. Allow the FIFO * to clear by issuing txStandBy() or ensure appropriate time between transmissions. * @@ -490,10 +472,6 @@ public: * Just like write(), but it returns immediately. To find out what happened * to the send, catch the IRQ and then call whatHappened(). * - * @note Optimization: This function again behaves as it did previously for backwards-compatibility. - * with user code. The library uses startFastWrite() internally. - * This is mainly used for single-payload transactions. - * * @see write() * @see writeFast() * @see startFastWrite() @@ -511,8 +489,6 @@ public: void startWrite( const void* buf, uint8_t len, const bool multicast ); /** - * Optimization: New Command - * * This function is mainly used internally to take advantage of the auto payload * re-use functionality of the chip, but can be beneficial to users as well. * @@ -584,7 +560,23 @@ public: * @param rx_ready Mask payload received interrupts */ void maskIRQ(bool tx_ok,bool tx_fail,bool rx_ready); + + /** + * Set the address width from 3 to 5 bytes (24, 32 or 40 bit) + * + * @param a_width The address width to use: 3,4 or 5 + */ + void setAddressWidth(uint8_t a_width); + + + /** + * Close a pipe after it has been previously opened. + * Can be safely called without having previously opened a pipe. + * @param pipe Which pipe # to close, 0-5. + */ + void closeReadingPipe( uint8_t pipe ) ; + /**@}*/ /**@}*/ @@ -642,7 +634,7 @@ public: * For dynamic payloads, this pulls the size of the payload off * the chip * - * @note Optimization: Corrupt packets are now detected and flushed per the + * @note Corrupt packets are now detected and flushed per the * manufacturer. * * @return Payload length of last-received dynamic payload @@ -655,7 +647,7 @@ public: * Ack payloads are a handy way to return data back to senders without * manually changing the radio modes on both units. * - * @see examples/pingpair_pl/pingpair_pl.pde + * @see examples/GettingStarted_CallResponse/GettingStarted_CallResponse.ino */ void enableAckPayload(void); @@ -759,6 +751,73 @@ public: * */ void disableCRC( void ) ; + + /** + * Enable error detection by un-commenting #define FAILURE_HANDLING in RF24_config.h + * If a failure has been detected, it usually indicates a hardware issue. By default the library + * will cease operation when a failure is detected. + * This should allow advanced users to detect and resolve intermittent hardware issues. + * + * In most cases, the radio must be re-enabled via radio.begin(); and the appropriate settings + * applied after a failure occurs, if wanting to re-enable the device immediately. + * + * Usage: (Failure handling must be enabled per above) + * @code + * if(radio.failureDetected){ + * radio.begin(); // Attempt to re-configure the radio with defaults + * radio.failureDetected = 0; // Reset the detection value + * radio.openWritingPipe(addresses[1]); // Re-configure pipe addresses + * radio.openReadingPipe(1,addresses[0]); + * report_failure(); // Blink leds, send a message, etc. to indicate failure + * } + * @endcode + */ + //#if defined (FAILURE_HANDLING) + bool failureDetected; + //#endif + + + /**@}*/ + /** + * @name Deprecated + * + * Methods provided for backwards compabibility. + */ + /**@{*/ + + + /** + * Open a pipe for reading + * @note For compatibility with old code only, see new function + * + * @warning Pipes 1-5 should share the first 32 bits. + * Only the least significant byte should be unique, e.g. + * @code + * openReadingPipe(1,0xF0F0F0F0AA); + * openReadingPipe(2,0xF0F0F0F066); + * @endcode + * + * @warning Pipe 0 is also used by the writing pipe. So if you open + * pipe 0 for reading, and then startListening(), it will overwrite the + * writing pipe. Ergo, do an openWritingPipe() again before write(). + * + * @param number Which pipe# to open, 0-5. + * @param address The 40-bit address of the pipe to open. + */ + void openReadingPipe(uint8_t number, uint64_t address); + + /** + * Open a pipe for writing + * @note For compatibility with old code only, see new function + * Addresses are 40-bit hex values, e.g.: + * + * @code + * openWritingPipe(0xF0F0F0F0F0); + * @endcode + * + * @param address The 40-bit address of the pipe to open. + */ + void openWritingPipe(uint64_t address); private: @@ -863,7 +922,8 @@ private: * @return Current value of status register */ uint8_t get_status(void); -#if !defined (MINIMAL) + + #if !defined (MINIMAL) /** * Decode and print the given status to stdout * @@ -921,6 +981,11 @@ private: */ uint8_t spiTrans(uint8_t cmd); + + #if defined (FAILURE_HANDLING) + void errNotify(void); + #endif + /**@}*/ }; @@ -1014,6 +1079,18 @@ private: * ping/pong cycle, and the receiver sleeps between payloads.
*/ + /** + * @example rf24ping85.ino + * New: Contributed by https://github.com/tong67
+ * This is an example of how to use the RF24 class to communicate with ATtiny85 and other node.
+ */ + + /** + * @example timingSearch3pin.ino + * New: Contributed by https://github.com/tong67
+ * This is an example of how to determine the correct timing for ATtiny when using only 3-pins + */ + /** * @example pingpair_dyn.ino * @@ -1071,7 +1148,7 @@ private: * * This library fork is designed to be... * @li More compliant with the manufacturer specified operation of the chip, while allowing advanced users - * to work outside the reccommended operation. + * to work outside the recommended operation. * @li Utilize the capabilities of the radio to their full potential via Arduino * @li More reliable, responsive and feature rich * @li Easy for beginners to use, with well documented examples and features @@ -1079,25 +1156,30 @@ private: * * @section News News * - * April 2014: Official Release: Still some work to do, but most benefits have been realized
+ * Main changes:
* - The library has been tweaked to allow full use of the FIFO buffers for maximum transfer speeds + * - Many issues and bugs have been resolved * - Changes to read() and available () functionality have increased reliability and response * - Extended timeout periods have been added to aid in noisy or otherwise unreliable environments * - Delays have been removed where possible to ensure maximum efficiency * - Full Due support with extended SPI functions - * - ATTiny 24/44/84 25/45/85 now supported. + * - ATTiny now supported. + * - Raspberry Pi now supported * - More! See the links below and class documentation for more info. * - * If issues are discovered with the documentation, please report them here: here + * If issues are discovered with the documentation, please report them here * @section Useful Useful References * * Please refer to: * * @li Documentation Main Page * @li RF24 Class Documentation + * @li My Blog: RF24 Optimization Overview * @li Source Code - * @li Downloads Page + * @li Download * @li Chip Datasheet + * @li RF24Network: Easily create a home or long-range RF24 sensor network + * @li My Blog: RF24 Wireless Audio * @li Original Library * * This chip uses the SPI bus, plus two chip control pins. Remember that pin 10 must still remain an output, or @@ -1108,13 +1190,13 @@ private: * Most standard Arduino based boards are supported: * - ATMega 328 based boards (Uno, Nano, etc) * - Mega Boards (1280, 2560, etc) - * - ARM based boards (Arduino Due) Note: Do not include printf.h or use printf begin. This functionality is already present. Must use one of the - * hardware SS/CSN pins as extended SPI methods are used. + * - Arduino Due: Must use one of the hardware SS/CSN pins as extended SPI methods are used. * Initial Due support taken from https://github.com/mcrosson/RF24/tree/due - * - ATTiny board support added from https://github.com/jscrane/RF24 + * - ATTiny board support initially added from https://github.com/jscrane/RF24 * Note: ATTiny support is built into the library. Do not include SPI.h.
- * ATTiny 85: D0(pin 5): MISO, D1(pin6) MOSI, D2(pin7) SCK, D3(pin2):CSN/SS, D4(pin3): CE
- * ATTiny 84: PA6:MISO, PA5:MOSI, PA4:SCK, PA7:CSN/SS, CE as desired
+ * See the included examples for more info on using ATTiny with RF24
+ * See https://github.com/TCWORLD/ATTinyCore/tree/master/PCREL%20Patch%20for%20GCC for ATTiny patch + * - Raspberry Pi Support: See the readme at https://github.com/TMRh20/RF24/tree/master/RPi/RF24 * * @section More More Information * @@ -1122,7 +1204,7 @@ private: * * @li Project blog: * @li TMRh20.blogspot.com - * @li RF24 Wireless Audio Library (Coming Soon) + * @li RF24 Wireless Audio Library * @li Optimized RF24 Network Layer * @li ManiacBug on GitHub (Original Library Author) */ diff --git a/libraries/MySensors/utility/RF24_config.h b/libraries/MySensors/utility/RF24_config.h index 55962f1..3c394c7 100755 --- a/libraries/MySensors/utility/RF24_config.h +++ b/libraries/MySensors/utility/RF24_config.h @@ -20,27 +20,65 @@ #include - //TMRh20: - #define MINIMAL // saves 432 bytes! - + /*** USER DEFINES: ***/ + //#define FAILURE_HANDLING + //#define SERIAL_DEBUG + #define MINIMAL + //#define SPI_UART // Requires library from https://github.com/TMRh20/Sketches/tree/master/SPI_UART + //#define SOFTSPI // Requires library from https://github.com/greiman/DigitalIO + /**********************/ + // Define _BV for non-Arduino platforms and for Arduino DUE -#if defined (ARDUINO) - #include +#if defined (ARDUINO) && !defined (__arm__) + #if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) || defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) + #define RF24_TINY + #define _SPI SPI + #else + #if defined SPI_UART + #include + #define _SPI uspi + #elif defined SOFTSPI + // change these pins to your liking + // + const uint8_t SOFT_SPI_MISO_PIN = 16; + const uint8_t SOFT_SPI_MOSI_PIN = 15; + const uint8_t SOFT_SPI_SCK_PIN = 14; + const uint8_t SPI_MODE = 0; + #define _SPI spi + + #else + #include + #define _SPI SPI + #endif + #endif #else - #include - #include - #include - extern HardwareSPI SPI; - #define _BV(x) (1<<(x)) - #endif + #include + #include + #include - #undef SERIAL_DEBUG + #if defined(__arm__) || defined (CORE_TEENSY) + #include + #endif + + #if !defined(CORE_TEENSY) + #define _BV(x) (1<<(x)) + #if !defined(__arm__) + extern HardwareSPI SPI; + #endif + #else + #define printf Serial.printf + #endif + + #define _SPI SPI +#endif + + #ifdef SERIAL_DEBUG #define IF_SERIAL_DEBUG(x) ({x;}) #else #define IF_SERIAL_DEBUG(x) - #if defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny85__) + #if defined(RF24_TINY) #define printf_P(...) #endif #endif @@ -48,7 +86,7 @@ // Avoid spurious warnings // Arduino DUE is arm and uses traditional PROGMEM constructs #if 1 -#if ! defined( NATIVE ) && defined( ARDUINO ) && ! defined(__arm__) +#if ! defined( NATIVE ) && defined( ARDUINO ) && ! defined(__arm__) && ! defined( CORE_TEENSY3 ) #undef PROGMEM #define PROGMEM __attribute__(( section(".progmem.data") )) #undef PSTR @@ -68,20 +106,25 @@ #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) #endif + +#if !defined ( CORE_TEENSY ) typedef uint16_t prog_uint16_t; #define PSTR(x) (x) #define printf_P printf #define strlen_P strlen #define PROGMEM #define pgm_read_word(p) (*(p)) +#endif + #define PRIPSTR "%s" + #endif // ATTiny support code is from https://github.com/jscrane/RF24 -#if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) || defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) +#if defined(RF24_TINY) #include #include #include diff --git a/libraries/UIPEthernet/utility/uip-conf.h b/libraries/UIPEthernet/utility/uip-conf.h index e7f20d8..814aeb9 100644 --- a/libraries/UIPEthernet/utility/uip-conf.h +++ b/libraries/UIPEthernet/utility/uip-conf.h @@ -87,7 +87,7 @@ typedef unsigned short uip_stats_t; * * \hideinitializer */ -#define UIP_CONF_MAX_LISTENPORTS 1 +#define UIP_CONF_MAX_LISTENPORTS 4 /** * uIP buffer size. @@ -131,13 +131,12 @@ typedef unsigned short uip_stats_t; */ #define UIP_CONF_LOGGING 0 -#define UIP_CONF_UDP 0 /** * UDP support on or off * (see uipethernet-conf.h) * \hideinitializer * - + * #define UIP_CONF_UDP 1 * * #define UIP_CONF_UDP_CONNS 4 */ diff --git a/libraries/UIPEthernet/utility/uipethernet-conf.h b/libraries/UIPEthernet/utility/uipethernet-conf.h index 9dd8b27..b9c8d73 100644 --- a/libraries/UIPEthernet/utility/uipethernet-conf.h +++ b/libraries/UIPEthernet/utility/uipethernet-conf.h @@ -3,11 +3,11 @@ /* for TCP */ #define UIP_SOCKET_NUMPACKETS 5 -#define UIP_CONF_MAX_CONNECTIONS 4 +#define UIP_CONF_MAX_CONNECTIONS 1 /* for UDP * set UIP_CONF_UDP to 0 to disable UDP (saves aprox. 5kb flash) */ -#define UIP_CONF_UDP 1 +#define UIP_CONF_UDP 0 #define UIP_CONF_BROADCAST 1 #define UIP_CONF_UDP_CONNS 4 diff --git a/libraries/UTFT/DefaultFonts.c b/libraries/UTFT/DefaultFonts.c new file mode 100644 index 0000000..bc11d95 --- /dev/null +++ b/libraries/UTFT/DefaultFonts.c @@ -0,0 +1,246 @@ +// DO NOT ADD YOUR OWN FONTS TO THIS FILE +// If you want to use your own fonts you should just drop the font .c file into your sketch folder. +// ------------------------------------------------------------------------------------------------ + +#if defined(__AVR__) + #include + #define fontdatatype const uint8_t +#elif defined(__PIC32MX__) + #define PROGMEM + #define fontdatatype const unsigned char +#elif defined(__arm__) + #define PROGMEM + #define fontdatatype const unsigned char +#endif + +// SmallFont.c +// Font Size : 8x12 +// Memory usage : 1144 bytes +// # characters : 95 + +fontdatatype SmallFont[1144] PROGMEM={ +0x08,0x0C,0x20,0x5F, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // +0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00, // ! +0x00,0x28,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // " +0x00,0x00,0x28,0x28,0xFC,0x28,0x50,0xFC,0x50,0x50,0x00,0x00, // # +0x00,0x20,0x78,0xA8,0xA0,0x60,0x30,0x28,0xA8,0xF0,0x20,0x00, // $ +0x00,0x00,0x48,0xA8,0xB0,0x50,0x28,0x34,0x54,0x48,0x00,0x00, // % +0x00,0x00,0x20,0x50,0x50,0x78,0xA8,0xA8,0x90,0x6C,0x00,0x00, // & +0x00,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' +0x00,0x04,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x04,0x00, // ( +0x00,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x00, // ) +0x00,0x00,0x00,0x20,0xA8,0x70,0x70,0xA8,0x20,0x00,0x00,0x00, // * +0x00,0x00,0x20,0x20,0x20,0xF8,0x20,0x20,0x20,0x00,0x00,0x00, // + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x80, // , +0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // - +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, // . +0x00,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0x80,0x00, // / +0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00, // 0 +0x00,0x00,0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // 1 +0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x40,0x80,0xF8,0x00,0x00, // 2 +0x00,0x00,0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70,0x00,0x00, // 3 +0x00,0x00,0x10,0x30,0x50,0x50,0x90,0x78,0x10,0x18,0x00,0x00, // 4 +0x00,0x00,0xF8,0x80,0x80,0xF0,0x08,0x08,0x88,0x70,0x00,0x00, // 5 +0x00,0x00,0x70,0x90,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00, // 6 +0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x20,0x20,0x20,0x00,0x00, // 7 +0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00, // 8 +0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x48,0x70,0x00,0x00, // 9 +0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x20,0x00,0x00, // : +0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x20,0x00, // ; +0x00,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x00,0x00, // < +0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, // = +0x00,0x40,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x40,0x00,0x00, // > +0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x20,0x00,0x20,0x00,0x00, // ? +0x00,0x00,0x70,0x88,0x98,0xA8,0xA8,0xB8,0x80,0x78,0x00,0x00, // @ +0x00,0x00,0x20,0x20,0x30,0x50,0x50,0x78,0x48,0xCC,0x00,0x00, // A +0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0x00, // B +0x00,0x00,0x78,0x88,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00, // C +0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00, // D +0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x48,0xF8,0x00,0x00, // E +0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x40,0xE0,0x00,0x00, // F +0x00,0x00,0x38,0x48,0x80,0x80,0x9C,0x88,0x48,0x30,0x00,0x00, // G +0x00,0x00,0xCC,0x48,0x48,0x78,0x48,0x48,0x48,0xCC,0x00,0x00, // H +0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00, // I +0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0xE0,0x00, // J +0x00,0x00,0xEC,0x48,0x50,0x60,0x50,0x50,0x48,0xEC,0x00,0x00, // K +0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x44,0xFC,0x00,0x00, // L +0x00,0x00,0xD8,0xD8,0xD8,0xD8,0xA8,0xA8,0xA8,0xA8,0x00,0x00, // M +0x00,0x00,0xDC,0x48,0x68,0x68,0x58,0x58,0x48,0xE8,0x00,0x00, // N +0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00, // O +0x00,0x00,0xF0,0x48,0x48,0x70,0x40,0x40,0x40,0xE0,0x00,0x00, // P +0x00,0x00,0x70,0x88,0x88,0x88,0x88,0xE8,0x98,0x70,0x18,0x00, // Q +0x00,0x00,0xF0,0x48,0x48,0x70,0x50,0x48,0x48,0xEC,0x00,0x00, // R +0x00,0x00,0x78,0x88,0x80,0x60,0x10,0x08,0x88,0xF0,0x00,0x00, // S +0x00,0x00,0xF8,0xA8,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // T +0x00,0x00,0xCC,0x48,0x48,0x48,0x48,0x48,0x48,0x30,0x00,0x00, // U +0x00,0x00,0xCC,0x48,0x48,0x50,0x50,0x30,0x20,0x20,0x00,0x00, // V +0x00,0x00,0xA8,0xA8,0xA8,0x70,0x50,0x50,0x50,0x50,0x00,0x00, // W +0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x50,0x50,0xD8,0x00,0x00, // X +0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // Y +0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x40,0x48,0xF8,0x00,0x00, // Z +0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x38,0x00, // [ +0x00,0x40,0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x08,0x00,0x00, // +0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00, // ] +0x00,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC, // _ +0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' +0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x38,0x48,0x3C,0x00,0x00, // a +0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00, // b +0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x40,0x40,0x38,0x00,0x00, // c +0x00,0x00,0x18,0x08,0x08,0x38,0x48,0x48,0x48,0x3C,0x00,0x00, // d +0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x78,0x40,0x38,0x00,0x00, // e +0x00,0x00,0x1C,0x20,0x20,0x78,0x20,0x20,0x20,0x78,0x00,0x00, // f +0x00,0x00,0x00,0x00,0x00,0x3C,0x48,0x30,0x40,0x78,0x44,0x38, // g +0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0xEC,0x00,0x00, // h +0x00,0x00,0x20,0x00,0x00,0x60,0x20,0x20,0x20,0x70,0x00,0x00, // i +0x00,0x00,0x10,0x00,0x00,0x30,0x10,0x10,0x10,0x10,0x10,0xE0, // j +0x00,0x00,0xC0,0x40,0x40,0x5C,0x50,0x70,0x48,0xEC,0x00,0x00, // k +0x00,0x00,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00, // l +0x00,0x00,0x00,0x00,0x00,0xF0,0xA8,0xA8,0xA8,0xA8,0x00,0x00, // m +0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0xEC,0x00,0x00, // n +0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x30,0x00,0x00, // o +0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x40,0xE0, // p +0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x48,0x38,0x08,0x1C, // q +0x00,0x00,0x00,0x00,0x00,0xD8,0x60,0x40,0x40,0xE0,0x00,0x00, // r +0x00,0x00,0x00,0x00,0x00,0x78,0x40,0x30,0x08,0x78,0x00,0x00, // s +0x00,0x00,0x00,0x20,0x20,0x70,0x20,0x20,0x20,0x18,0x00,0x00, // t +0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x48,0x3C,0x00,0x00, // u +0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x00,0x00, // v +0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x70,0x50,0x50,0x00,0x00, // w +0x00,0x00,0x00,0x00,0x00,0xD8,0x50,0x20,0x50,0xD8,0x00,0x00, // x +0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x20,0xC0, // y +0x00,0x00,0x00,0x00,0x00,0x78,0x10,0x20,0x20,0x78,0x00,0x00, // z +0x00,0x18,0x10,0x10,0x10,0x20,0x10,0x10,0x10,0x10,0x18,0x00, // { +0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, // | +0x00,0x60,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x60,0x00, // } +0x40,0xA4,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~ +}; + +// BigFont.c (C)2010 by Henning Karlsen +// Font Size : 16x16 +// Memory usage : 3044 bytes +// # characters : 95 + +fontdatatype BigFont[3044] PROGMEM={ +0x10,0x10,0x20,0x5F, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // +0x00,0x00,0x00,0x00,0x07,0x00,0x0F,0x80,0x0F,0x80,0x0F,0x80,0x0F,0x80,0x0F,0x80,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00, // ! +0x00,0x00,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x06,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // " +0x00,0x00,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x7F,0xFE,0x7F,0xFE,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x7F,0xFE,0x7F,0xFE,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x00, // # +0x00,0x00,0x02,0x40,0x02,0x40,0x0F,0xF8,0x1F,0xF8,0x1A,0x40,0x1A,0x40,0x1F,0xF0,0x0F,0xF8,0x02,0x58,0x02,0x58,0x1F,0xF8,0x1F,0xF0,0x02,0x40,0x02,0x40,0x00,0x00, // $ +0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x10,0x0E,0x30,0x0E,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x70,0x0C,0x70,0x08,0x70,0x00,0x00,0x00,0x00,0x00,0x00, // % +0x00,0x00,0x00,0x00,0x0F,0x00,0x19,0x80,0x19,0x80,0x19,0x80,0x0F,0x00,0x0F,0x08,0x0F,0x98,0x19,0xF8,0x18,0xF0,0x18,0xE0,0x19,0xF0,0x0F,0x98,0x00,0x00,0x00,0x00, // & +0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' +0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xF0,0x00,0x00,0x00,0x00, // ( +0x00,0x00,0x00,0x00,0x0F,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x0F,0x00,0x00,0x00,0x00,0x00, // ) +0x00,0x00,0x00,0x00,0x01,0x80,0x11,0x88,0x09,0x90,0x07,0xE0,0x07,0xE0,0x3F,0xFC,0x3F,0xFC,0x07,0xE0,0x07,0xE0,0x09,0x90,0x11,0x88,0x01,0x80,0x00,0x00,0x00,0x00, // * +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x0F,0xF0,0x0F,0xF0,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x0E,0x00,0x00,0x00, // , +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00, // , +0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00,0x00,0x00, // / + +0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x78,0x1C,0xF8,0x1C,0xF8,0x1D,0xB8,0x1D,0xB8,0x1F,0x38,0x1F,0x38,0x1E,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // 0 +0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x03,0x80,0x1F,0x80,0x1F,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x1F,0xF0,0x00,0x00,0x00,0x00, // 1 +0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x38,0x1C,0x38,0x1F,0xF8,0x00,0x00,0x00,0x00, // 2 +0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x38,0x00,0x38,0x00,0x70,0x03,0xC0,0x03,0xC0,0x00,0x70,0x00,0x38,0x1C,0x38,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // 3 +0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0xE0,0x03,0xE0,0x06,0xE0,0x0C,0xE0,0x18,0xE0,0x1F,0xF8,0x1F,0xF8,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x03,0xF8,0x00,0x00,0x00,0x00, // 4 +0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xE0,0x1F,0xF0,0x00,0x78,0x00,0x38,0x1C,0x38,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // 5 +0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0x00,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xF0,0x1F,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // 6 +0x00,0x00,0x00,0x00,0x1F,0xFC,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00, // 7 +0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0x38,0x07,0xE0,0x07,0xE0,0x1C,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // 8 +0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0xF8,0x0F,0xF8,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x07,0xC0,0x00,0x00,0x00,0x00, // 9 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // : +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ; +0x00,0x00,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x00, // < +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // = +0x00,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x00,0x00, // > +0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1E,0x78,0x18,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00, // ? + +0x00,0x00,0x0F,0xF8,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0xFC,0x1C,0xFC,0x1C,0xFC,0x1C,0xFC,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xF0,0x07,0xF8,0x00,0x00, // @ +0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1F,0xF8,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00, // A +0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1F,0xF0,0x00,0x00,0x00,0x00, // B +0x00,0x00,0x00,0x00,0x07,0xF0,0x0E,0x38,0x1C,0x38,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x38,0x0E,0x38,0x07,0xF0,0x00,0x00,0x00,0x00, // C +0x00,0x00,0x00,0x00,0x1F,0xE0,0x0E,0x70,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x70,0x1F,0xE0,0x00,0x00,0x00,0x00, // D +0x00,0x00,0x00,0x00,0x1F,0xF8,0x0E,0x18,0x0E,0x08,0x0E,0x00,0x0E,0x30,0x0F,0xF0,0x0F,0xF0,0x0E,0x30,0x0E,0x00,0x0E,0x08,0x0E,0x18,0x1F,0xF8,0x00,0x00,0x00,0x00, // E +0x00,0x00,0x00,0x00,0x1F,0xF8,0x0E,0x18,0x0E,0x08,0x0E,0x00,0x0E,0x30,0x0F,0xF0,0x0F,0xF0,0x0E,0x30,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // F +0x00,0x00,0x00,0x00,0x07,0xF0,0x0E,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0xF8,0x1C,0x38,0x1C,0x38,0x0E,0x38,0x07,0xF8,0x00,0x00,0x00,0x00, // G +0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x1F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // H +0x00,0x00,0x00,0x00,0x0F,0xE0,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x0F,0xE0,0x00,0x00,0x00,0x00, // I +0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // J +0x00,0x00,0x00,0x00,0x1E,0x38,0x0E,0x38,0x0E,0x70,0x0E,0xE0,0x0F,0xC0,0x0F,0x80,0x0F,0x80,0x0F,0xC0,0x0E,0xE0,0x0E,0x70,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // K +0x00,0x00,0x00,0x00,0x1F,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x08,0x0E,0x18,0x0E,0x38,0x1F,0xF8,0x00,0x00,0x00,0x00, // L +0x00,0x00,0x00,0x00,0x1C,0x1C,0x1E,0x3C,0x1F,0x7C,0x1F,0xFC,0x1F,0xFC,0x1D,0xDC,0x1C,0x9C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x00,0x00,0x00, // M +0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1E,0x1C,0x1F,0x1C,0x1F,0x9C,0x1D,0xDC,0x1C,0xFC,0x1C,0x7C,0x1C,0x3C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x00,0x00,0x00,0x00, // N +0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xF0,0x0E,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x0E,0x38,0x07,0xF0,0x03,0xE0,0x00,0x00,0x00,0x00, // O + +0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0F,0xF0,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // P +0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0x78,0x0E,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x7C,0x1C,0xFC,0x0F,0xF8,0x0F,0xF8,0x00,0x38,0x00,0xFC,0x00,0x00, // Q +0x00,0x00,0x00,0x00,0x1F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0F,0xF0,0x0E,0x70,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // R +0x00,0x00,0x00,0x00,0x0F,0xF0,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x00,0x0F,0xE0,0x07,0xF0,0x00,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0F,0xF0,0x00,0x00,0x00,0x00, // S +0x00,0x00,0x00,0x00,0x1F,0xFC,0x19,0xCC,0x11,0xC4,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x07,0xF0,0x00,0x00,0x00,0x00, // T +0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // U +0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x00,0x00,0x00,0x00, // V +0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x0F,0xF8,0x0F,0xF8,0x07,0x70,0x07,0x70,0x00,0x00,0x00,0x00, // W +0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x03,0x80,0x07,0xC0,0x0E,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // X +0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x0F,0xE0,0x00,0x00,0x00,0x00, // Y +0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x38,0x18,0x38,0x10,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x08,0x1C,0x18,0x1C,0x38,0x1F,0xF8,0x00,0x00,0x00,0x00, // Z +0x00,0x00,0x00,0x00,0x07,0xF0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0xF0,0x00,0x00,0x00,0x00, // [ +0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x07,0x00,0x00,0x00,0x00, // +0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x07,0xF0,0x00,0x00,0x00,0x00, // ] +0x00,0x00,0x01,0x80,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x1C,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0x7F,0xFF, // _ + +0x00,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x70,0x00,0x70,0x0F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xD8,0x00,0x00,0x00,0x00, // a +0x00,0x00,0x00,0x00,0x1E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0F,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1B,0xF0,0x00,0x00,0x00,0x00, // b +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x00,0x1C,0x00,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // c +0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x70,0x00,0x70,0x00,0x70,0x0F,0xF0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xD8,0x00,0x00,0x00,0x00, // d +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1F,0xF0,0x1C,0x00,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // e +0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0x70,0x07,0x70,0x07,0x00,0x07,0x00,0x1F,0xE0,0x1F,0xE0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00, // f +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xD8,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xF0,0x07,0xF0,0x00,0x70,0x1C,0x70,0x0F,0xE0, // g +0x00,0x00,0x00,0x00,0x1E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0xF0,0x0F,0x38,0x0F,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // h +0x00,0x00,0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x0F,0xF8,0x00,0x00,0x00,0x00, // i +0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x03,0xF0,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x1C,0x70,0x0C,0xF0,0x07,0xE0, // j +0x00,0x00,0x00,0x00,0x1E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x38,0x0E,0x70,0x0E,0xE0,0x0F,0xC0,0x0E,0xE0,0x0E,0x70,0x0E,0x38,0x1E,0x38,0x00,0x00,0x00,0x00, // k +0x00,0x00,0x00,0x00,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x0F,0xF8,0x00,0x00,0x00,0x00, // l +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x1C,0x9C,0x00,0x00,0x00,0x00, // m +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x00,0x00,0x00,0x00, // n +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // o + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0xF0,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0F,0xF0,0x0E,0x00,0x0E,0x00,0x1F,0x00, // p +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xB0,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x1F,0xE0,0x00,0xE0,0x00,0xE0,0x01,0xF0, // q +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0xF0,0x0F,0xF8,0x0F,0x38,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, // r +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x1C,0x30,0x1C,0x30,0x0F,0x80,0x03,0xE0,0x18,0x70,0x18,0x70,0x0F,0xE0,0x00,0x00,0x00,0x00, // s +0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x07,0x00,0x1F,0xF0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x70,0x07,0x70,0x03,0xE0,0x00,0x00,0x00,0x00, // t +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0F,0xD8,0x00,0x00,0x00,0x00, // u +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x00,0x00,0x00,0x00, // v +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x9C,0x1C,0x9C,0x0F,0xF8,0x07,0x70,0x07,0x70,0x00,0x00,0x00,0x00, // w +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0xE0,0x1C,0xE0,0x0F,0xC0,0x07,0x80,0x07,0x80,0x0F,0xC0,0x1C,0xE0,0x1C,0xE0,0x00,0x00,0x00,0x00, // x +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x07,0xF0,0x03,0xE0,0x00,0xE0,0x01,0xC0,0x1F,0x80, // y +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x18,0xE0,0x11,0xC0,0x03,0x80,0x07,0x00,0x0E,0x20,0x1C,0x60,0x1F,0xE0,0x00,0x00,0x00,0x00, // z +0x00,0x00,0x00,0x00,0x01,0xF8,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0x00,0x1C,0x00,0x1C,0x00,0x07,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x01,0xF8,0x00,0x00,0x00,0x00, // { +0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00, // | +0x00,0x00,0x00,0x00,0x1F,0x80,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x00,0x38,0x00,0x38,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0x80,0x00,0x00,0x00,0x00, // } +0x00,0x00,0x00,0x00,0x1F,0x1C,0x3B,0x9C,0x39,0xDC,0x38,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // ~ +}; + +// SevenSegNumFont.c +// Font Size : 32x50 +// Memory usage : 2004 bytes +// # characters : 10 + +fontdatatype SevenSegNumFont[2004] PROGMEM={ +0x20,0x32,0x30,0x0A, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x38,0x00,0x00,0x18,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x38,0x00,0x00,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 1 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x01,0xFF,0xFE,0x18,0x03,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x00,0x3E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x0C,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 2 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x01,0xFF,0xFE,0x18,0x03,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 3 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0C,0x00,0x00,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 4 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x0C,0xFF,0xFE,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x39,0xFF,0xFE,0x00,0x23,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 5 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x0C,0xFF,0xFE,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x39,0xFF,0xFE,0x00,0x23,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 6 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 7 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 9 +}; diff --git a/libraries/UTFT/License - CC BY-NC-SA 3.0 - Legal.pdf b/libraries/UTFT/License - CC BY-NC-SA 3.0 - Legal.pdf new file mode 100644 index 0000000..ed326c9 Binary files /dev/null and b/libraries/UTFT/License - CC BY-NC-SA 3.0 - Legal.pdf differ diff --git a/libraries/UTFT/License - CC BY-NC-SA 3.0 - Summary.pdf b/libraries/UTFT/License - CC BY-NC-SA 3.0 - Summary.pdf new file mode 100644 index 0000000..b35e677 Binary files /dev/null and b/libraries/UTFT/License - CC BY-NC-SA 3.0 - Summary.pdf differ diff --git a/libraries/UTFT/Tools/ImageConverter565.exe b/libraries/UTFT/Tools/ImageConverter565.exe new file mode 100644 index 0000000..cca5c39 Binary files /dev/null and b/libraries/UTFT/Tools/ImageConverter565.exe differ diff --git a/libraries/UTFT/Tools/ImgConv.exe b/libraries/UTFT/Tools/ImgConv.exe new file mode 100644 index 0000000..229ae8b Binary files /dev/null and b/libraries/UTFT/Tools/ImgConv.exe differ diff --git a/libraries/UTFT/Tools/Online-tool - ImageConverter 565.url b/libraries/UTFT/Tools/Online-tool - ImageConverter 565.url new file mode 100644 index 0000000..e41696b --- /dev/null +++ b/libraries/UTFT/Tools/Online-tool - ImageConverter 565.url @@ -0,0 +1,7 @@ +[InternetShortcut] +URL=http://www.henningkarlsen.com/electronics/t_imageconverter565.php +IDList= +IconFile=http://www.henningkarlsen.com/favicon.ico +IconIndex=1 +[{000214A0-0000-0000-C000-000000000046}] +Prop3=19,2 diff --git a/libraries/UTFT/Tools/UTFT Image Converters.pdf b/libraries/UTFT/Tools/UTFT Image Converters.pdf new file mode 100644 index 0000000..43a8df6 Binary files /dev/null and b/libraries/UTFT/Tools/UTFT Image Converters.pdf differ diff --git a/libraries/UTFT/UTFT.cpp b/libraries/UTFT/UTFT.cpp new file mode 100644 index 0000000..5bfd21d --- /dev/null +++ b/libraries/UTFT/UTFT.cpp @@ -0,0 +1,1335 @@ +/* + UTFT.cpp - Arduino/chipKit library support for Color TFT LCD Boards + Copyright (C)2010-2014 Henning Karlsen. All right reserved + + This library is the continuation of my ITDB02_Graph, ITDB02_Graph16 + and RGB_GLCD libraries for Arduino and chipKit. As the number of + supported display modules and controllers started to increase I felt + it was time to make a single, universal library as it will be much + easier to maintain in the future. + + Basic functionality of this library was origianlly based on the + demo-code provided by ITead studio (for the ITDB02 modules) and + NKC Electronics (for the RGB GLCD module/shield). + + This library supports a number of 8bit, 16bit and serial graphic + displays, and will work with both Arduino and chipKit boards. For a + full list of tested display modules and controllers, see the + document UTFT_Supported_display_modules_&_controllers.pdf. + + When using 8bit and 16bit display modules there are some + requirements you must adhere to. These requirements can be found + in the document UTFT_Requirements.pdf. + There are no special requirements when using serial displays. + + You can always find the latest version of the library at + http://electronics.henningkarlsen.com/ + + If you make any modifications or improvements to the code, I would + appreciate that you share the code with me so that I might include + it in the next release. I can be contacted through + http://electronics.henningkarlsen.com/contact.php. + + This library is free software; you can redistribute it and/or + modify it under the terms of the CC BY-NC-SA 3.0 license. + Please see the included documents for further information. + + Commercial use of this library requires you to buy a license that + will allow commercial use. This includes using the library, + modified or not, as a tool to sell products. + + The license applies to all part of the library including the + examples and tools supplied with the library. +*/ + +#include "UTFT.h" +#include + +// Include hardware-specific functions for the correct MCU +#if defined(__AVR__) + #include + #include "hardware/avr/HW_AVR.h" + #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + #include "hardware/avr/HW_ATmega1280.h" + #elif defined(__AVR_ATmega328P__) + #include "hardware/avr/HW_ATmega328P.h" + #elif defined(__AVR_ATmega32U4__) + #include "hardware/avr/HW_ATmega32U4.h" + #elif defined(__AVR_ATmega168__) + #error "ATmega168 MCUs are not supported because they have too little flash memory!" + #elif defined(__AVR_ATmega1284P__) + #include "hardware/avr/HW_ATmega1284P.h" + #else + #error "Unsupported AVR MCU!" + #endif +#elif defined(__PIC32MX__) + #include "hardware/pic32/HW_PIC32.h" + #if defined(__32MX320F128H__) + #pragma message("Compiling for chipKIT UNO32 (PIC32MX320F128H)") + #include "hardware/pic32/HW_PIC32MX320F128H.h" + #elif defined(__32MX340F512H__) + #pragma message("Compiling for chipKIT uC32 (PIC32MX340F512H)") + #include "hardware/pic32/HW_PIC32MX340F512H.h" + #elif defined(__32MX795F512L__) + #pragma message("Compiling for chipKIT MAX32 (PIC32MX795F512L)") + #include "hardware/pic32/HW_PIC32MX795F512L.h" + #else + #error "Unsupported PIC32 MCU!" + #endif +#elif defined(__arm__) + #include "hardware/arm/HW_ARM.h" + #if defined(__SAM3X8E__) + #pragma message("Compiling for Arduino Due (AT91SAM3X8E)...") + #include "hardware/arm/HW_SAM3X8E.h" + #elif defined(__MK20DX128__) || defined(__MK20DX256__) + #pragma message("Compiling for Teensy 3.x (MK20DX128VLH7 / MK20DX256VLH7)...") + #include "hardware/arm/HW_MX20DX256.h" + #else + #error "Unsupported ARM MCU!" + #endif +#endif +#include "memorysaver.h" + +UTFT::UTFT() +{ +} + +UTFT::UTFT(byte model, int RS, int WR, int CS, int RST, int SER) +{ + word dsx[] = {239, 239, 239, 239, 239, 239, 175, 175, 239, 127, 127, 239, 271, 479, 239, 239, 239, 239, 239, 239, 479, 319, 239, 175, 127, 239, 239, 319, 319, 799, 127}; + word dsy[] = {319, 399, 319, 319, 319, 319, 219, 219, 399, 159, 127, 319, 479, 799, 319, 319, 319, 319, 319, 319, 799, 479, 319, 219, 159, 319, 319, 479, 479, 479, 159}; + byte dtm[] = {16, 16, 16, 8, 8, 16, 8, SERIAL_4PIN, 16, SERIAL_5PIN, SERIAL_5PIN, 16, 16, 16, 8, 16, LATCHED_16, 8, 16, 8, 16, 16, 16, 8, SERIAL_5PIN, SERIAL_5PIN, SERIAL_4PIN, 16, 16, 16, SERIAL_5PIN}; + + disp_x_size = dsx[model]; + disp_y_size = dsy[model]; + display_transfer_mode = dtm[model]; + display_model = model; + + __p1 = RS; + __p2 = WR; + __p3 = CS; + __p4 = RST; + __p5 = SER; + + if (display_transfer_mode == SERIAL_4PIN) + { + display_transfer_mode=1; + display_serial_mode=SERIAL_4PIN; + } + if (display_transfer_mode == SERIAL_5PIN) + { + display_transfer_mode=1; + display_serial_mode=SERIAL_5PIN; + } + + if (display_transfer_mode!=1) + { + _set_direction_registers(display_transfer_mode); + P_RS = portOutputRegister(digitalPinToPort(RS)); + B_RS = digitalPinToBitMask(RS); + P_WR = portOutputRegister(digitalPinToPort(WR)); + B_WR = digitalPinToBitMask(WR); + P_CS = portOutputRegister(digitalPinToPort(CS)); + B_CS = digitalPinToBitMask(CS); + P_RST = portOutputRegister(digitalPinToPort(RST)); + B_RST = digitalPinToBitMask(RST); + if (display_transfer_mode==LATCHED_16) + { + P_ALE = portOutputRegister(digitalPinToPort(SER)); + B_ALE = digitalPinToBitMask(SER); + cbi(P_ALE, B_ALE); + pinMode(8,OUTPUT); + digitalWrite(8, LOW); + } + } + else + { + P_SDA = portOutputRegister(digitalPinToPort(RS)); + B_SDA = digitalPinToBitMask(RS); + P_SCL = portOutputRegister(digitalPinToPort(WR)); + B_SCL = digitalPinToBitMask(WR); + P_CS = portOutputRegister(digitalPinToPort(CS)); + B_CS = digitalPinToBitMask(CS); + if (RST != NOTINUSE) + { + P_RST = portOutputRegister(digitalPinToPort(RST)); + B_RST = digitalPinToBitMask(RST); + } + if (display_serial_mode!=SERIAL_4PIN) + { + P_RS = portOutputRegister(digitalPinToPort(SER)); + B_RS = digitalPinToBitMask(SER); + } + } +} + +void UTFT::LCD_Write_COM(char VL) +{ + if (display_transfer_mode!=1) + { + cbi(P_RS, B_RS); + LCD_Writ_Bus(0x00,VL,display_transfer_mode); + } + else + LCD_Writ_Bus(0x00,VL,display_transfer_mode); +} + +void UTFT::LCD_Write_DATA(char VH,char VL) +{ + if (display_transfer_mode!=1) + { + sbi(P_RS, B_RS); + LCD_Writ_Bus(VH,VL,display_transfer_mode); + } + else + { + LCD_Writ_Bus(0x01,VH,display_transfer_mode); + LCD_Writ_Bus(0x01,VL,display_transfer_mode); + } +} + +void UTFT::LCD_Write_DATA(char VL) +{ + if (display_transfer_mode!=1) + { + sbi(P_RS, B_RS); + LCD_Writ_Bus(0x00,VL,display_transfer_mode); + } + else + LCD_Writ_Bus(0x01,VL,display_transfer_mode); +} + +void UTFT::LCD_Write_COM_DATA(char com1,int dat1) +{ + LCD_Write_COM(com1); + LCD_Write_DATA(dat1>>8,dat1); +} + +void UTFT::InitLCD(byte orientation) +{ + orient=orientation; + _hw_special_init(); + + pinMode(__p1,OUTPUT); + pinMode(__p2,OUTPUT); + pinMode(__p3,OUTPUT); + if (__p4 != NOTINUSE) + pinMode(__p4,OUTPUT); + if ((display_transfer_mode==LATCHED_16) or ((display_transfer_mode==1) and (display_serial_mode==SERIAL_5PIN))) + pinMode(__p5,OUTPUT); + if (display_transfer_mode!=1) + _set_direction_registers(display_transfer_mode); + + sbi(P_RST, B_RST); + delay(5); + cbi(P_RST, B_RST); + delay(15); + sbi(P_RST, B_RST); + delay(15); + + cbi(P_CS, B_CS); + + switch(display_model) + { +#ifndef DISABLE_HX8347A + #include "tft_drivers/hx8347a/initlcd.h" +#endif +#ifndef DISABLE_ILI9327 + #include "tft_drivers/ili9327/initlcd.h" +#endif +#ifndef DISABLE_SSD1289 + #include "tft_drivers/ssd1289/initlcd.h" +#endif +#ifndef DISABLE_ILI9325C + #include "tft_drivers/ili9325c/initlcd.h" +#endif +#ifndef DISABLE_ILI9325D + #include "tft_drivers/ili9325d/default/initlcd.h" +#endif +#ifndef DISABLE_ILI9325D_ALT + #include "tft_drivers/ili9325d/alt/initlcd.h" +#endif +#ifndef DISABLE_HX8340B_8 + #include "tft_drivers/hx8340b/8/initlcd.h" +#endif +#ifndef DISABLE_HX8340B_S + #include "tft_drivers/hx8340b/s/initlcd.h" +#endif +#ifndef DISABLE_ST7735 + #include "tft_drivers/st7735/initlcd.h" +#endif +#ifndef DISABLE_PCF8833 + #include "tft_drivers/pcf8833/initlcd.h" +#endif +#ifndef DISABLE_S1D19122 + #include "tft_drivers/s1d19122/initlcd.h" +#endif +#ifndef DISABLE_HX8352A + #include "tft_drivers/hx8352a/initlcd.h" +#endif +#ifndef DISABLE_SSD1963_480 + #include "tft_drivers/ssd1963/480/initlcd.h" +#endif +#ifndef DISABLE_SSD1963_800 + #include "tft_drivers/ssd1963/800/initlcd.h" +#endif +#ifndef DISABLE_SSD1963_800_ALT + #include "tft_drivers/ssd1963/800alt/initlcd.h" +#endif +#ifndef DISABLE_S6D1121 + #include "tft_drivers/s6d1121/initlcd.h" +#endif +#ifndef DISABLE_ILI9320 + #include "tft_drivers/ili9320/initlcd.h" +#endif +#ifndef DISABLE_ILI9481 + #include "tft_drivers/ili9481/initlcd.h" +#endif +#ifndef DISABLE_S6D0164 + #include "tft_drivers/s6d0164/initlcd.h" +#endif +#ifndef DISABLE_ST7735S + #include "tft_drivers/st7735s/initlcd.h" +#endif +#ifndef DISABLE_ILI9341_S4P + #include "tft_drivers/ili9341/s4p/initlcd.h" +#endif +#ifndef DISABLE_ILI9341_S5P + #include "tft_drivers/ili9341/s5p/initlcd.h" +#endif +#ifndef DISABLE_R61581 + #include "tft_drivers/r61581/initlcd.h" +#endif +#ifndef DISABLE_ILI9486 + #include "tft_drivers/ili9486/initlcd.h" +#endif +#ifndef DISABLE_CPLD + #include "tft_drivers/cpld/initlcd.h" +#endif +#ifndef DISABLE_HX8353C + #include "tft_drivers/hx8353c/initlcd.h" +#endif + } + + sbi (P_CS, B_CS); + + setColor(255, 255, 255); + setBackColor(0, 0, 0); + cfont.font=0; + _transparent = false; +} + +void UTFT::setXY(word x1, word y1, word x2, word y2) +{ + if (orient==LANDSCAPE) + { + swap(word, x1, y1); + swap(word, x2, y2) + y1=disp_y_size-y1; + y2=disp_y_size-y2; + swap(word, y1, y2) + } + + switch(display_model) + { +#ifndef DISABLE_HX8347A + #include "tft_drivers/hx8347a/setxy.h" +#endif +#ifndef DISABLE_HX8352A + #include "tft_drivers/hx8352a/setxy.h" +#endif +#ifndef DISABLE_ILI9327 + #include "tft_drivers/ili9327/setxy.h" +#endif +#ifndef DISABLE_SSD1289 + #include "tft_drivers/ssd1289/setxy.h" +#endif +#ifndef DISABLE_ILI9325C + #include "tft_drivers/ili9325c/setxy.h" +#endif +#ifndef DISABLE_ILI9325D + #include "tft_drivers/ili9325d/default/setxy.h" +#endif +#ifndef DISABLE_ILI9325D_ALT + #include "tft_drivers/ili9325d/alt/setxy.h" +#endif +#ifndef DISABLE_HX8340B_8 + #include "tft_drivers/hx8340b/8/setxy.h" +#endif +#ifndef DISABLE_HX8340B_S + #include "tft_drivers/hx8340b/s/setxy.h" +#endif +#ifndef DISABLE_ST7735 + #include "tft_drivers/st7735/setxy.h" +#endif +#ifndef DISABLE_S1D19122 + #include "tft_drivers/s1d19122/setxy.h" +#endif +#ifndef DISABLE_PCF8833 + #include "tft_drivers/pcf8833/setxy.h" +#endif +#ifndef DISABLE_SSD1963_480 + #include "tft_drivers/ssd1963/480/setxy.h" +#endif +#ifndef DISABLE_SSD1963_800 + #include "tft_drivers/ssd1963/800/setxy.h" +#endif +#ifndef DISABLE_SSD1963_800_ALT + #include "tft_drivers/ssd1963/800alt/setxy.h" +#endif +#ifndef DISABLE_S6D1121 + #include "tft_drivers/s6d1121/setxy.h" +#endif +#ifndef DISABLE_ILI9320 + #include "tft_drivers/ili9320/setxy.h" +#endif +#ifndef DISABLE_ILI9481 + #include "tft_drivers/ili9481/setxy.h" +#endif +#ifndef DISABLE_S6D0164 + #include "tft_drivers/s6d0164/setxy.h" +#endif +#ifndef DISABLE_ST7735S + #include "tft_drivers/st7735s/setxy.h" +#endif +#ifndef DISABLE_ILI9341_S4P + #include "tft_drivers/ili9341/s4p/setxy.h" +#endif +#ifndef DISABLE_ILI9341_S5P + #include "tft_drivers/ili9341/s5p/setxy.h" +#endif +#ifndef DISABLE_R61581 + #include "tft_drivers/r61581/setxy.h" +#endif +#ifndef DISABLE_ILI9486 + #include "tft_drivers/ili9486/setxy.h" +#endif +#ifndef DISABLE_CPLD + #include "tft_drivers/cpld/setxy.h" +#endif +#ifndef DISABLE_HX8353C + #include "tft_drivers/hx8353c/setxy.h" +#endif + } +} + +void UTFT::clrXY() +{ + if (orient==PORTRAIT) + setXY(0,0,disp_x_size,disp_y_size); + else + setXY(0,0,disp_y_size,disp_x_size); +} + +void UTFT::drawRect(int x1, int y1, int x2, int y2) +{ + if (x1>x2) + { + swap(int, x1, x2); + } + if (y1>y2) + { + swap(int, y1, y2); + } + + drawHLine(x1, y1, x2-x1); + drawHLine(x1, y2, x2-x1); + drawVLine(x1, y1, y2-y1); + drawVLine(x2, y1, y2-y1); +} + +void UTFT::drawRoundRect(int x1, int y1, int x2, int y2) +{ + if (x1>x2) + { + swap(int, x1, x2); + } + if (y1>y2) + { + swap(int, y1, y2); + } + if ((x2-x1)>4 && (y2-y1)>4) + { + drawPixel(x1+1,y1+1); + drawPixel(x2-1,y1+1); + drawPixel(x1+1,y2-1); + drawPixel(x2-1,y2-1); + drawHLine(x1+2, y1, x2-x1-4); + drawHLine(x1+2, y2, x2-x1-4); + drawVLine(x1, y1+2, y2-y1-4); + drawVLine(x2, y1+2, y2-y1-4); + } +} + +void UTFT::fillRect(int x1, int y1, int x2, int y2) +{ + if (x1>x2) + { + swap(int, x1, x2); + } + if (y1>y2) + { + swap(int, y1, y2); + } + if (display_transfer_mode==16) + { + cbi(P_CS, B_CS); + setXY(x1, y1, x2, y2); + sbi(P_RS, B_RS); + _fast_fill_16(fch,fcl,((long(x2-x1)+1)*(long(y2-y1)+1))); + sbi(P_CS, B_CS); + } + else if ((display_transfer_mode==8) and (fch==fcl)) + { + cbi(P_CS, B_CS); + setXY(x1, y1, x2, y2); + sbi(P_RS, B_RS); + _fast_fill_8(fch,((long(x2-x1)+1)*(long(y2-y1)+1))); + sbi(P_CS, B_CS); + } + else + { + if (orient==PORTRAIT) + { + for (int i=0; i<((y2-y1)/2)+1; i++) + { + drawHLine(x1, y1+i, x2-x1); + drawHLine(x1, y2-i, x2-x1); + } + } + else + { + for (int i=0; i<((x2-x1)/2)+1; i++) + { + drawVLine(x1+i, y1, y2-y1); + drawVLine(x2-i, y1, y2-y1); + } + } + } +} + +void UTFT::fillRoundRect(int x1, int y1, int x2, int y2) +{ + if (x1>x2) + { + swap(int, x1, x2); + } + if (y1>y2) + { + swap(int, y1, y2); + } + + if ((x2-x1)>4 && (y2-y1)>4) + { + for (int i=0; i<((y2-y1)/2)+1; i++) + { + switch(i) + { + case 0: + drawHLine(x1+2, y1+i, x2-x1-4); + drawHLine(x1+2, y2-i, x2-x1-4); + break; + case 1: + drawHLine(x1+1, y1+i, x2-x1-2); + drawHLine(x1+1, y2-i, x2-x1-2); + break; + default: + drawHLine(x1, y1+i, x2-x1); + drawHLine(x1, y2-i, x2-x1); + } + } + } +} + +void UTFT::drawCircle(int x, int y, int radius) +{ + int f = 1 - radius; + int ddF_x = 1; + int ddF_y = -2 * radius; + int x1 = 0; + int y1 = radius; + + cbi(P_CS, B_CS); + setXY(x, y + radius, x, y + radius); + LCD_Write_DATA(fch,fcl); + setXY(x, y - radius, x, y - radius); + LCD_Write_DATA(fch,fcl); + setXY(x + radius, y, x + radius, y); + LCD_Write_DATA(fch,fcl); + setXY(x - radius, y, x - radius, y); + LCD_Write_DATA(fch,fcl); + + while(x1 < y1) + { + if(f >= 0) + { + y1--; + ddF_y += 2; + f += ddF_y; + } + x1++; + ddF_x += 2; + f += ddF_x; + setXY(x + x1, y + y1, x + x1, y + y1); + LCD_Write_DATA(fch,fcl); + setXY(x - x1, y + y1, x - x1, y + y1); + LCD_Write_DATA(fch,fcl); + setXY(x + x1, y - y1, x + x1, y - y1); + LCD_Write_DATA(fch,fcl); + setXY(x - x1, y - y1, x - x1, y - y1); + LCD_Write_DATA(fch,fcl); + setXY(x + y1, y + x1, x + y1, y + x1); + LCD_Write_DATA(fch,fcl); + setXY(x - y1, y + x1, x - y1, y + x1); + LCD_Write_DATA(fch,fcl); + setXY(x + y1, y - x1, x + y1, y - x1); + LCD_Write_DATA(fch,fcl); + setXY(x - y1, y - x1, x - y1, y - x1); + LCD_Write_DATA(fch,fcl); + } + sbi(P_CS, B_CS); + clrXY(); +} + +void UTFT::fillCircle(int x, int y, int radius) +{ + for(int y1=-radius; y1<=0; y1++) + for(int x1=-radius; x1<=0; x1++) + if(x1*x1+y1*y1 <= radius*radius) + { + drawHLine(x+x1, y+y1, 2*(-x1)); + drawHLine(x+x1, y-y1, 2*(-x1)); + break; + } +} + +void UTFT::clrScr() +{ + long i; + + cbi(P_CS, B_CS); + clrXY(); + if (display_transfer_mode!=1) + sbi(P_RS, B_RS); + if (display_transfer_mode==16) + _fast_fill_16(0,0,((disp_x_size+1)*(disp_y_size+1))); + else if (display_transfer_mode==8) + _fast_fill_8(0,((disp_x_size+1)*(disp_y_size+1))); + else + { + for (i=0; i<((disp_x_size+1)*(disp_y_size+1)); i++) + { + if (display_transfer_mode!=1) + LCD_Writ_Bus(0,0,display_transfer_mode); + else + { + LCD_Writ_Bus(1,0,display_transfer_mode); + LCD_Writ_Bus(1,0,display_transfer_mode); + } + } + } + sbi(P_CS, B_CS); +} + +void UTFT::fillScr(byte r, byte g, byte b) +{ + word color = ((r&248)<<8 | (g&252)<<3 | (b&248)>>3); + fillScr(color); +} + +void UTFT::fillScr(word color) +{ + long i; + char ch, cl; + + ch=byte(color>>8); + cl=byte(color & 0xFF); + + cbi(P_CS, B_CS); + clrXY(); + if (display_transfer_mode!=1) + sbi(P_RS, B_RS); + if (display_transfer_mode==16) + _fast_fill_16(ch,cl,((disp_x_size+1)*(disp_y_size+1))); + else if ((display_transfer_mode==8) and (ch==cl)) + _fast_fill_8(ch,((disp_x_size+1)*(disp_y_size+1))); + else + { + for (i=0; i<((disp_x_size+1)*(disp_y_size+1)); i++) + { + if (display_transfer_mode!=1) + LCD_Writ_Bus(ch,cl,display_transfer_mode); + else + { + LCD_Writ_Bus(1,ch,display_transfer_mode); + LCD_Writ_Bus(1,cl,display_transfer_mode); + } + } + } + sbi(P_CS, B_CS); +} + +void UTFT::setColor(byte r, byte g, byte b) +{ + fch=((r&248)|g>>5); + fcl=((g&28)<<3|b>>3); +} + +void UTFT::setColor(word color) +{ + fch=byte(color>>8); + fcl=byte(color & 0xFF); +} + +word UTFT::getColor() +{ + return (fch<<8) | fcl; +} + +void UTFT::setBackColor(byte r, byte g, byte b) +{ + bch=((r&248)|g>>5); + bcl=((g&28)<<3|b>>3); + _transparent=false; +} + +void UTFT::setBackColor(uint32_t color) +{ + if (color==VGA_TRANSPARENT) + _transparent=true; + else + { + bch=byte(color>>8); + bcl=byte(color & 0xFF); + _transparent=false; + } +} + +word UTFT::getBackColor() +{ + return (bch<<8) | bcl; +} + +void UTFT::setPixel(word color) +{ + LCD_Write_DATA((color>>8),(color&0xFF)); // rrrrrggggggbbbbb +} + +void UTFT::drawPixel(int x, int y) +{ + cbi(P_CS, B_CS); + setXY(x, y, x, y); + setPixel((fch<<8)|fcl); + sbi(P_CS, B_CS); + clrXY(); +} + +void UTFT::drawLine(int x1, int y1, int x2, int y2) +{ + if (y1==y2) + drawHLine(x1, y1, x2-x1); + else if (x1==x2) + drawVLine(x1, y1, y2-y1); + else + { + unsigned int dx = (x2 > x1 ? x2 - x1 : x1 - x2); + short xstep = x2 > x1 ? 1 : -1; + unsigned int dy = (y2 > y1 ? y2 - y1 : y1 - y2); + short ystep = y2 > y1 ? 1 : -1; + int col = x1, row = y1; + + cbi(P_CS, B_CS); + if (dx < dy) + { + int t = - (dy >> 1); + while (true) + { + setXY (col, row, col, row); + LCD_Write_DATA (fch, fcl); + if (row == y2) + return; + row += ystep; + t += dx; + if (t >= 0) + { + col += xstep; + t -= dy; + } + } + } + else + { + int t = - (dx >> 1); + while (true) + { + setXY (col, row, col, row); + LCD_Write_DATA (fch, fcl); + if (col == x2) + return; + col += xstep; + t += dy; + if (t >= 0) + { + row += ystep; + t -= dx; + } + } + } + sbi(P_CS, B_CS); + } + clrXY(); +} + +void UTFT::drawHLine(int x, int y, int l) +{ + if (l<0) + { + l = -l; + x -= l; + } + cbi(P_CS, B_CS); + setXY(x, y, x+l, y); + if (display_transfer_mode == 16) + { + sbi(P_RS, B_RS); + _fast_fill_16(fch,fcl,l); + } + else if ((display_transfer_mode==8) and (fch==fcl)) + { + sbi(P_RS, B_RS); + _fast_fill_8(fch,l); + } + else + { + for (int i=0; i=0; zz--) + { + ch=pgm_read_byte(&cfont.font[temp+zz]); + for(i=0;i<8;i++) + { + if((ch&(1<0) + { + buf[c]=48+(num % 10); + c++; + num=(num-(num % 10))/10; + } + buf[c]=0; + + if (neg) + { + st[0]=45; + } + + if (length>(c+neg)) + { + for (int i=0; i<(length-c-neg); i++) + { + st[i+neg]=filler; + f++; + } + } + + for (int i=0; i5) + dec=5; + + if (num<0) + neg = true; + + _convert_float(st, num, length, dec); + + if (divider != '.') + { + for (int i=0; i>8,col & 0xff); + } + sbi(P_CS, B_CS); + } + else + { + cbi(P_CS, B_CS); + for (ty=0; ty=0; tx--) + { + col=pgm_read_word(&data[(ty*sx)+tx]); + LCD_Write_DATA(col>>8,col & 0xff); + } + } + sbi(P_CS, B_CS); + } + } + else + { + if (orient==PORTRAIT) + { + cbi(P_CS, B_CS); + for (ty=0; ty>8,col & 0xff); + } + } + sbi(P_CS, B_CS); + } + else + { + cbi(P_CS, B_CS); + for (ty=0; ty=0; tx--) + { + col=pgm_read_word(&data[(ty*sx)+tx]); + for (tsx=0; tsx>8,col & 0xff); + } + } + } + sbi(P_CS, B_CS); + } + } + clrXY(); +} + +void UTFT::drawBitmap(int x, int y, int sx, int sy, bitmapdatatype data, int deg, int rox, int roy) +{ + unsigned int col; + int tx, ty, newx, newy; + double radian; + radian=deg*0.0175; + + if (deg==0) + drawBitmap(x, y, sx, sy, data); + else + { + cbi(P_CS, B_CS); + for (ty=0; ty>8,col & 0xff); + } + sbi(P_CS, B_CS); + } + clrXY(); +} + +void UTFT::lcdOff() +{ + cbi(P_CS, B_CS); + switch (display_model) + { + case PCF8833: + LCD_Write_COM(0x28); + break; + case CPLD: + LCD_Write_COM_DATA(0x01,0x0000); + LCD_Write_COM(0x0F); + break; + } + sbi(P_CS, B_CS); +} + +void UTFT::lcdOn() +{ + cbi(P_CS, B_CS); + switch (display_model) + { + case PCF8833: + LCD_Write_COM(0x29); + break; + case CPLD: + LCD_Write_COM_DATA(0x01,0x0010); + LCD_Write_COM(0x0F); + break; + } + sbi(P_CS, B_CS); +} + +void UTFT::setContrast(char c) +{ + cbi(P_CS, B_CS); + switch (display_model) + { + case PCF8833: + if (c>64) c=64; + LCD_Write_COM(0x25); + LCD_Write_DATA(c); + break; + } + sbi(P_CS, B_CS); +} + +int UTFT::getDisplayXSize() +{ + if (orient==PORTRAIT) + return disp_x_size+1; + else + return disp_y_size+1; +} + +int UTFT::getDisplayYSize() +{ + if (orient==PORTRAIT) + return disp_y_size+1; + else + return disp_x_size+1; +} + +void UTFT::setBrightness(byte br) +{ + cbi(P_CS, B_CS); + switch (display_model) + { + case CPLD: + if (br>16) br=16; + LCD_Write_COM_DATA(0x01,br); + LCD_Write_COM(0x0F); + break; + } + sbi(P_CS, B_CS); +} + +void UTFT::setDisplayPage(byte page) +{ + cbi(P_CS, B_CS); + switch (display_model) + { + case CPLD: + if (page>7) page=7; + LCD_Write_COM_DATA(0x04,page); + LCD_Write_COM(0x0F); + break; + } + sbi(P_CS, B_CS); +} + +void UTFT::setWritePage(byte page) +{ + cbi(P_CS, B_CS); + switch (display_model) + { + case CPLD: + if (page>7) page=7; + LCD_Write_COM_DATA(0x05,page); + LCD_Write_COM(0x0F); + break; + } + sbi(P_CS, B_CS); +} diff --git a/libraries/UTFT/UTFT.h b/libraries/UTFT/UTFT.h new file mode 100644 index 0000000..c863311 --- /dev/null +++ b/libraries/UTFT/UTFT.h @@ -0,0 +1,275 @@ +/* + UTFT.h - Arduino/chipKit library support for Color TFT LCD Boards + Copyright (C)2010-2014 Henning Karlsen. All right reserved + + This library is the continuation of my ITDB02_Graph, ITDB02_Graph16 + and RGB_GLCD libraries for Arduino and chipKit. As the number of + supported display modules and controllers started to increase I felt + it was time to make a single, universal library as it will be much + easier to maintain in the future. + + Basic functionality of this library was origianlly based on the + demo-code provided by ITead studio (for the ITDB02 modules) and + NKC Electronics (for the RGB GLCD module/shield). + + This library supports a number of 8bit, 16bit and serial graphic + displays, and will work with both Arduino and chipKit boards. For a + full list of tested display modules and controllers, see the + document UTFT_Supported_display_modules_&_controllers.pdf. + + When using 8bit and 16bit display modules there are some + requirements you must adhere to. These requirements can be found + in the document UTFT_Requirements.pdf. + There are no special requirements when using serial displays. + + You can always find the latest version of the library at + http://electronics.henningkarlsen.com/ + + If you make any modifications or improvements to the code, I would + appreciate that you share the code with me so that I might include + it in the next release. I can be contacted through + http://electronics.henningkarlsen.com/contact.php. + + This library is free software; you can redistribute it and/or + modify it under the terms of the CC BY-NC-SA 3.0 license. + Please see the included documents for further information. + + Commercial use of this library requires you to buy a license that + will allow commercial use. This includes using the library, + modified or not, as a tool to sell products. + + The license applies to all part of the library including the + examples and tools supplied with the library. +*/ + +#ifndef UTFT_h +#define UTFT_h + +#define UTFT_VERSION 278 + +#define LEFT 0 +#define RIGHT 9999 +#define CENTER 9998 + +#define PORTRAIT 0 +#define LANDSCAPE 1 + +#define HX8347A 0 +#define ILI9327 1 +#define SSD1289 2 +#define ILI9325C 3 +#define ILI9325D_8 4 +#define ILI9325D_16 5 +#define HX8340B_8 6 +#define HX8340B_S 7 +#define HX8352A 8 +#define ST7735 9 +#define PCF8833 10 +#define S1D19122 11 +#define SSD1963_480 12 +#define SSD1963_800 13 +#define S6D1121_8 14 +#define S6D1121_16 15 +#define SSD1289LATCHED 16 +#define ILI9320_8 17 +#define ILI9320_16 18 +#define SSD1289_8 19 +#define SSD1963_800ALT 20 +#define ILI9481 21 +#define ILI9325D_16ALT 22 +#define S6D0164 23 +#define ST7735S 24 +#define ILI9341_S5P 25 +#define ILI9341_S4P 26 +#define R61581 27 +#define ILI9486 28 +#define CPLD 29 +#define HX8353C 30 + +#define ITDB32 0 // HX8347-A (16bit) +#define ITDB32WC 1 // ILI9327 (16bit) +#define TFT01_32W 1 // ILI9327 (16bit) +#define ITDB32S 2 // SSD1289 (16bit) +#define TFT01_32 2 // SSD1289 (16bit) +#define CTE32 2 // SSD1289 (16bit) +#define GEEE32 2 // SSD1289 (16bit) +#define ITDB24 3 // ILI9325C (8bit) +#define ITDB24D 4 // ILI9325D (8bit) +#define ITDB24DWOT 4 // ILI9325D (8bit) +#define ITDB28 4 // ILI9325D (8bit) +#define TFT01_24_8 4 // ILI9325D (8bit) +#define DMTFT24104 4 // ILI9325D (8bit) +#define DMTFT28103 4 // ILI9325D (8bit) +#define TFT01_24_16 5 // ILI9325D (16bit) +#define ITDB22 6 // HX8340-B (8bit) +#define GEEE22 6 // HX8340-B (8bit) +#define ITDB22SP 7 // HX8340-B (Serial 4Pin) +#define ITDB32WD 8 // HX8352-A (16bit) +#define TFT01_32WD 8 // HX8352-A (16bit) +#define CTE32W 8 // HX8352-A (16bit) +#define ITDB18SP 9 // ST7735 (Serial 5Pin) +#define LPH9135 10 // PCF8833 (Serial 5Pin) +#define ITDB25H 11 // S1D19122 (16bit) +#define ITDB43 12 // SSD1963 (16bit) 480x272 +#define TFT01_43 12 // SSD1963 (16bit) 480x272 +#define ITDB50 13 // SSD1963 (16bit) 800x480 +#define TFT01_50 13 // SSD1963 (16bit) 800x480 +#define CTE50 13 // SSD1963 (16bit) 800x480 +#define EHOUSE50 13 // SSD1963 (16bit) 800x480 +#define ITDB24E_8 14 // S6D1121 (8bit) +#define TFT01_24R2 14 // S6D1121 (8bit) +#define ITDB24E_16 15 // S6D1121 (16bit) +#define INFINIT32 16 // SSD1289 (Latched 16bit) -- Legacy, will be removed later +#define ELEE32_REVA 16 // SSD1289 (Latched 16bit) +#define GEEE24 17 // ILI9320 (8bit) +#define GEEE28 18 // ILI9320 (16bit) +#define ELEE32_REVB 19 // SSD1289 (8bit) +#define TFT01_70 20 // SSD1963 (16bit) 800x480 Alternative Init +#define CTE70 20 // SSD1963 (16bit) 800x480 Alternative Init +#define EHOUSE70 20 // SSD1963 (16bit) 800x480 Alternative Init +#define CTE32HR 21 // ILI9481 (16bit) +#define CTE28 22 // ILI9325D (16bit) Alternative Init +#define TFT01_28 22 // ILI9325D (16bit) Alternative Init +#define CTE22 23 // S6D0164 (8bit) +#define TFT01_22 23 // S6D0164 (8bit) +#define DMTFT22102 23 // S6D0164 (8bit) +#define TFT01_18SP 24 // ST7735S (Serial 5Pin) +#define TFT01_22SP 25 // ILI9341 (Serial 5Pin) +#define DMTFT28105 25 // ILI9341 (Serial 5Pin) +#define MI0283QT9 26 // ILI9341 (Serial 4Pin) +#define CTE35IPS 27 // R61581 (16bit) +#define CTE40 28 // ILI9486 (16bit) +#define EHOUSE50CPLD 29 // CPLD (16bit) +#define CTE50CPLD 29 // CPLD (16bit) +#define CTE70CPLD 29 // CPLD (16bit) +#define DMTFT18101 30 // HX8353C (Serial 5Pin) + + +#define SERIAL_4PIN 4 +#define SERIAL_5PIN 5 +#define LATCHED_16 17 + +#define NOTINUSE 255 + +//********************************* +// COLORS +//********************************* +// VGA color palette +#define VGA_BLACK 0x0000 +#define VGA_WHITE 0xFFFF +#define VGA_RED 0xF800 +#define VGA_GREEN 0x0400 +#define VGA_BLUE 0x001F +#define VGA_SILVER 0xC618 +#define VGA_GRAY 0x8410 +#define VGA_MAROON 0x8000 +#define VGA_YELLOW 0xFFE0 +#define VGA_OLIVE 0x8400 +#define VGA_LIME 0x07E0 +#define VGA_AQUA 0x07FF +#define VGA_TEAL 0x0410 +#define VGA_NAVY 0x0010 +#define VGA_FUCHSIA 0xF81F +#define VGA_PURPLE 0x8010 +#define VGA_TRANSPARENT 0xFFFFFFFF + +#if defined(__AVR__) + #include "Arduino.h" + #include "hardware/avr/HW_AVR_defines.h" +#elif defined(__PIC32MX__) + #include "WProgram.h" + #include "hardware/pic32/HW_PIC32_defines.h" +#elif defined(__arm__) + #include "Arduino.h" + #include "hardware/arm/HW_ARM_defines.h" +#endif + +struct _current_font +{ + uint8_t* font; + uint8_t x_size; + uint8_t y_size; + uint8_t offset; + uint8_t numchars; +}; + +class UTFT +{ + public: + UTFT(); + UTFT(byte model, int RS, int WR, int CS, int RST, int SER=0); + void InitLCD(byte orientation=LANDSCAPE); + void clrScr(); + void drawPixel(int x, int y); + void drawLine(int x1, int y1, int x2, int y2); + void fillScr(byte r, byte g, byte b); + void fillScr(word color); + void drawRect(int x1, int y1, int x2, int y2); + void drawRoundRect(int x1, int y1, int x2, int y2); + void fillRect(int x1, int y1, int x2, int y2); + void fillRoundRect(int x1, int y1, int x2, int y2); + void drawCircle(int x, int y, int radius); + void fillCircle(int x, int y, int radius); + void setColor(byte r, byte g, byte b); + void setColor(word color); + word getColor(); + void setBackColor(byte r, byte g, byte b); + void setBackColor(uint32_t color); + word getBackColor(); + void print(char *st, int x, int y, int deg=0); + void print(String st, int x, int y, int deg=0); + void printNumI(long num, int x, int y, int length=0, char filler=' '); + void printNumF(double num, byte dec, int x, int y, char divider='.', int length=0, char filler=' '); + void setFont(uint8_t* font); + uint8_t* getFont(); + uint8_t getFontXsize(); + uint8_t getFontYsize(); + void drawBitmap(int x, int y, int sx, int sy, bitmapdatatype data, int scale=1); + void drawBitmap(int x, int y, int sx, int sy, bitmapdatatype data, int deg, int rox, int roy); + void lcdOff(); + void lcdOn(); + void setContrast(char c); + int getDisplayXSize(); + int getDisplayYSize(); + void setBrightness(byte br); + void setDisplayPage(byte page); + void setWritePage(byte page); + +/* + The functions and variables below should not normally be used. + They have been left publicly available for use in add-on libraries + that might need access to the lower level functions of UTFT. + + Please note that these functions and variables are not documented + and I do not provide support on how to use them. +*/ + byte fch, fcl, bch, bcl; + byte orient; + long disp_x_size, disp_y_size; + byte display_model, display_transfer_mode, display_serial_mode; + regtype *P_RS, *P_WR, *P_CS, *P_RST, *P_SDA, *P_SCL, *P_ALE; + regsize B_RS, B_WR, B_CS, B_RST, B_SDA, B_SCL, B_ALE; + byte __p1, __p2, __p3, __p4, __p5; + _current_font cfont; + boolean _transparent; + + void LCD_Writ_Bus(char VH,char VL, byte mode); + void LCD_Write_COM(char VL); + void LCD_Write_DATA(char VH,char VL); + void LCD_Write_DATA(char VL); + void LCD_Write_COM_DATA(char com1,int dat1); + void _hw_special_init(); + void setPixel(word color); + void drawHLine(int x, int y, int l); + void drawVLine(int x, int y, int l); + void printChar(byte c, int x, int y); + void setXY(word x1, word y1, word x2, word y2); + void clrXY(); + void rotateChar(byte c, int x, int y, int pos, int deg); + void _set_direction_registers(byte mode); + void _fast_fill_16(int ch, int cl, long pix); + void _fast_fill_8(int ch, long pix); + void _convert_float(char *buf, double num, int width, byte prec); +}; + +#endif \ No newline at end of file diff --git a/libraries/UTFT/UTFT.pdf b/libraries/UTFT/UTFT.pdf new file mode 100644 index 0000000..dc580fd Binary files /dev/null and b/libraries/UTFT/UTFT.pdf differ diff --git a/libraries/UTFT/UTFT_Requirements.pdf b/libraries/UTFT/UTFT_Requirements.pdf new file mode 100644 index 0000000..c21d73c Binary files /dev/null and b/libraries/UTFT/UTFT_Requirements.pdf differ diff --git a/libraries/UTFT/UTFT_Supported_display_modules_&_controllers.pdf b/libraries/UTFT/UTFT_Supported_display_modules_&_controllers.pdf new file mode 100644 index 0000000..9bb7cac Binary files /dev/null and b/libraries/UTFT/UTFT_Supported_display_modules_&_controllers.pdf differ diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/UTFT_Bitmap.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/UTFT_Bitmap.ino new file mode 100644 index 0000000..1f3ef33 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/UTFT_Bitmap.ino @@ -0,0 +1,66 @@ +// UTFT_Bitmap (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the drawBitmap()-function. +// +// This demo was made to work on the 320x240 modules. +// Any other size displays may cause strange behaviour. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +extern unsigned short info[0x400]; +extern unsigned short icon[0x400]; +extern unsigned short tux[0x400]; + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + myGLCD.fillScr(255, 255, 255); + myGLCD.setColor(255, 255, 255); + myGLCD.print(" *** A 10 by 7 grid of a 32x32 icon *** ", CENTER, 228); + for (int x=0; x<10; x++) + for (int y=0; y<7; y++) + myGLCD.drawBitmap (x*32, y*32, 32, 32, info); + + delay(5000); + + myGLCD.fillScr(255, 255, 255); + myGLCD.setColor(255, 255, 255); + myGLCD.print(" Two different icons in scale 1 to 4 ", CENTER, 228); + int x=0; + for (int s=0; s<4; s++) + { + x+=(s*32); + myGLCD.drawBitmap (x, 0, 32, 32, tux, s+1); + } + x=0; + for (int s=4; s>0; s--) + { + myGLCD.drawBitmap (x, 224-(s*32), 32, 32, icon, s); + x+=(s*32); + } + + delay(5000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/icon.c b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/icon.c new file mode 100644 index 0000000..9cb97a1 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/icon.c @@ -0,0 +1,71 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: taskmgr.png +// Time generated: 11.10.2010 22:51:23 +// Size : 2 048 Bytes + +const unsigned short icon[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0xCE79, 0xBDD7, 0xAD75, // 0x0010 (16) +0xAD55, 0xAD75, 0xBDF7, 0xD6BA, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x9492, 0x8C51, 0x9492, 0xA514, 0xA534, // 0x0030 (48) +0xA534, 0xA534, 0x9CF3, 0x8C71, 0x8430, 0x9CD3, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE59, 0x8410, 0x9492, 0xB5B6, 0xC618, 0xBDD7, 0xAD75, 0xA514, // 0x0050 (80) +0xA514, 0xA4F4, 0xAD55, 0xB5B6, 0xBDD7, 0xAD55, 0x8430, 0x8C71, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x9CD3, 0x8430, 0xBDF7, 0xC618, 0xAD75, 0x94F2, 0x8CF1, 0x84B0, 0x8CD1, // 0x0070 (112) +0x9612, 0x8CB1, 0x7C6F, 0x7C8F, 0x8490, 0xA533, 0xBDF7, 0xB596, 0x7BEF, 0xB596, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x8430, 0x9CF3, 0xCE39, 0xA514, 0x94B2, 0x9E93, 0x94F2, 0x8CD1, 0x8CB1, 0x9D12, // 0x0090 (144) +0x9F74, 0x9D52, 0x8450, 0x7C8F, 0x73AE, 0x740E, 0x73CE, 0x9CD3, 0xC638, 0x8C51, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x8430, 0xA534, 0xBDF7, 0x8CB1, 0x8C31, 0x9DB3, 0xA735, 0x9D13, 0x8CB1, 0x8C71, 0x9D13, // 0x00B0 (176) +0xB756, 0xA5D4, 0x8C71, 0x8490, 0x8390, 0x7C70, 0x73EE, 0x6B4D, 0x8450, 0xBDF7, 0x8C71, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x94B2, 0x9CF3, 0xBDD7, 0x8490, 0x8CF1, 0x9D72, 0xA694, 0xAE94, 0x9DD3, 0xA593, 0xA553, 0x9592, // 0x00D0 (208) +0x9672, 0x75CE, 0x5BAA, 0x64EB, 0x5D8C, 0x5BCA, 0x4B69, 0x634C, 0x748D, 0x7C4F, 0xBE18, 0x8430, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xC618, 0x8410, 0xBDF7, 0x8410, 0x83F0, 0x94F2, 0x9613, 0x9D13, 0xAE55, 0x9D12, 0x750E, 0x55CB, 0x4BC8, // 0x00F0 (240) +0x4447, 0x3BC6, 0x4B67, 0x44E8, 0x3CE8, 0x3325, 0x20E2, 0x2B45, 0x43E7, 0x3946, 0x732D, 0xC5F8, 0x7BCF, 0xE71C, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xF7BE, 0x7BEF, 0xBDB6, 0x9533, 0x8D71, 0x9552, 0x9E73, 0x9DD3, 0x94B2, 0x6D6D, 0x4BA8, 0x44A8, 0x55EA, 0x5D2A, // 0x0110 (272) +0x43E7, 0x4327, 0x46CA, 0x4B87, 0x42C6, 0x4E0A, 0x4D09, 0x4468, 0x4548, 0x3386, 0x2B25, 0x7C6F, 0xAD35, 0x9492, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFDF, 0xFFFF, 0xBDD7, 0x8C71, 0xAD75, 0x8CF0, 0x8D71, 0x8D51, 0x9DF3, 0x740E, 0x21C4, 0x33E5, 0x558A, 0x554A, 0x650A, 0x566B, // 0x0130 (304) +0x43E7, 0x21C3, 0x3345, 0x2283, 0x1962, 0x3C87, 0x3386, 0x2163, 0x3345, 0x3346, 0x33A6, 0x32C6, 0x9CB3, 0x7BEF, 0xDEDB, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0x8430, 0xAD75, 0x8C31, 0x7C0F, 0x7BCF, 0x83F0, 0x636B, 0x0000, 0x0000, 0x4387, 0x462A, 0x4B27, 0x4B88, 0x4E8B, // 0x0150 (336) +0x42E6, 0x0000, 0x0020, 0x0100, 0x0000, 0x1121, 0x0040, 0x0000, 0x0941, 0x0000, 0x0020, 0x00E0, 0x5AAB, 0x94B2, 0x9CD3, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xE71C, 0x8410, 0xB596, 0x7BEF, 0x7C6F, 0x84B0, 0x5B6B, 0x09E1, 0x0901, 0x1161, 0x3C06, 0x3D89, 0x32C5, 0x43E7, 0x470B, // 0x0170 (368) +0x4BC7, 0x0961, 0x11E2, 0x1282, 0x0961, 0x1262, 0x09E2, 0x0961, 0x12A2, 0x0961, 0x09C2, 0x0A01, 0x29E5, 0xA514, 0x7BEF, 0xFFDF, // 0x0180 (384) +0xFFFF, 0xBDD7, 0x9472, 0xA514, 0x6B4D, 0x7C6F, 0x634C, 0x0040, 0x0981, 0x0060, 0x00E0, 0x11E2, 0x10A1, 0x09C1, 0x19E3, 0x2B25, // 0x0190 (400) +0x22A3, 0x0060, 0x0120, 0x09E1, 0x0060, 0x09E1, 0x0120, 0x0060, 0x0A21, 0x0060, 0x0100, 0x01A0, 0x0040, 0x9CD3, 0x7BEF, 0xDEDB, // 0x01A0 (416) +0xFFFF, 0xA514, 0x9CF3, 0xB596, 0x73AE, 0x7C0F, 0x2945, 0x10A2, 0x2184, 0x18C3, 0x1923, 0x2184, 0x18C3, 0x21A4, 0x2964, 0x2905, // 0x01B0 (432) +0x2A25, 0x2104, 0x2965, 0x2A05, 0x2104, 0x2A05, 0x2985, 0x2104, 0x2A25, 0x2104, 0x2164, 0x29C4, 0x3166, 0xB5B6, 0x8410, 0xC618, // 0x01C0 (448) +0xFFFF, 0x9492, 0xA514, 0xDEDB, 0xC618, 0xA514, 0x8C51, 0x94B2, 0x9CB3, 0x9CF3, 0xA514, 0xA534, 0xAD75, 0xAD75, 0xB596, 0xB5D6, // 0x01D0 (464) +0xBDB7, 0xBDF7, 0xBDF7, 0xBDF7, 0xC618, 0xC5F8, 0xC5F8, 0xBDF7, 0xBDD7, 0xBDD7, 0xB5B6, 0xB596, 0xC638, 0xDEFB, 0x8430, 0xB596, // 0x01E0 (480) +0xFFFF, 0x8C51, 0x9CF3, 0xE73C, 0xDEFB, 0xD69A, 0xD6BA, 0xD6BA, 0xDEDB, 0xDEDB, 0xDEFB, 0xDF1B, 0xE71C, 0xE73C, 0xE73C, 0xE73C, // 0x01F0 (496) +0xEF5D, 0xEF5D, 0xEF5D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xDEFB, 0xE71C, 0x8C51, 0xAD75, // 0x0200 (512) +0xFFFF, 0x8C71, 0x9CD3, 0xDEFB, 0xAD75, 0x9492, 0x9CD3, 0xA4F3, 0xA514, 0xAD55, 0xAD75, 0xB596, 0xBDB6, 0xBDD7, 0xC5F7, 0xC618, // 0x0210 (528) +0xC638, 0xCE59, 0xCE59, 0xCE79, 0xD679, 0xD679, 0xCE79, 0xCE59, 0xCE59, 0xC638, 0xC618, 0xBDF7, 0xCE79, 0xE71C, 0x8C51, 0xB596, // 0x0220 (544) +0xFFFF, 0x9CD3, 0x9492, 0xAD55, 0x2965, 0x2104, 0x2124, 0x2145, 0x1945, 0x2165, 0x2165, 0x2186, 0x2186, 0x29A6, 0x29A6, 0x31C7, // 0x0230 (560) +0x39C7, 0x31E7, 0x31E7, 0x31E7, 0x3208, 0x3208, 0x31E7, 0x31E7, 0x29E7, 0x31C7, 0x39C7, 0x31A6, 0x4A49, 0xBDF7, 0x8C51, 0xBDF7, // 0x0240 (576) +0xFFFF, 0xB5B6, 0x8430, 0x7BEF, 0x0000, 0x0000, 0x0000, 0x2000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3800, 0x2000, // 0x0250 (592) +0x0000, 0x3000, 0x3800, 0x3000, 0x3800, 0x3800, 0x3800, 0x3000, 0x3800, 0x0800, 0x0000, 0x0000, 0x0000, 0xA514, 0x8430, 0xD6BA, // 0x0260 (608) +0xFFFF, 0xDEDB, 0x7BCF, 0x8430, 0x0020, 0x0000, 0x0000, 0x8000, 0xC800, 0xC000, 0xC800, 0xC820, 0xC820, 0xC820, 0xD020, 0x9800, // 0x0270 (624) +0x0000, 0xB820, 0xD020, 0xD020, 0xD020, 0xD020, 0xD020, 0xC820, 0xD020, 0x4800, 0x0000, 0x0000, 0x2144, 0xAD75, 0x8410, 0xF7BE, // 0x0280 (640) +0xFFFF, 0xFFFF, 0x7BEF, 0x8C71, 0x2945, 0x0000, 0x0000, 0x6800, 0xA800, 0xA800, 0xA800, 0xA800, 0xA800, 0xA800, 0xB000, 0x8000, // 0x0290 (656) +0x0000, 0x9800, 0xB000, 0xB000, 0xB000, 0xB000, 0xB000, 0xB000, 0xB000, 0x4000, 0x0000, 0x0000, 0x632C, 0xA534, 0x94B2, 0xFFFF, // 0x02A0 (672) +0xFFDF, 0xFFFF, 0xAD75, 0x73AE, 0x632C, 0x0000, 0x0000, 0x6920, 0xA9E0, 0xA1C0, 0xA9E0, 0xA9E0, 0xA9E0, 0xA9E0, 0xA9E0, 0x7960, // 0x02B0 (688) +0x0000, 0x99C0, 0xB200, 0xA9E0, 0xB200, 0xB200, 0xB1E0, 0xA9E0, 0xB200, 0x40C0, 0x0000, 0x1082, 0xAD75, 0x8410, 0xD69A, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xF79E, 0x630C, 0x8C51, 0x2965, 0x0000, 0x7400, 0xB620, 0xAE00, 0xB620, 0xB640, 0xB640, 0xB620, 0xB660, 0x84A0, // 0x02D0 (720) +0x0000, 0xA5A0, 0xBE60, 0xB660, 0xBE60, 0xBE60, 0xB660, 0xB640, 0xBE80, 0x4260, 0x0000, 0x6B6D, 0xAD75, 0x8430, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFDF, 0xFFFF, 0xB5B6, 0x632C, 0x8410, 0x0021, 0x7360, 0xBD40, 0xB520, 0xBD40, 0xBD60, 0xBD60, 0xBD40, 0xC580, 0x8C00, // 0x02F0 (752) +0x0000, 0xACE0, 0xC580, 0xC580, 0xC580, 0xC580, 0xC580, 0xBD60, 0xC5A0, 0x39C0, 0x2126, 0xBDF7, 0x73AE, 0xD6BA, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7BEF, 0x7BEF, 0x630D, 0x4AE1, 0x6D21, 0x6D01, 0x6D21, 0x6D41, 0x6D41, 0x6D41, 0x6D61, 0x53E1, // 0x0310 (784) +0x0000, 0x64C1, 0x7562, 0x6D62, 0x6D62, 0x6D62, 0x6D62, 0x6D42, 0x6D41, 0x4263, 0xA515, 0x8C51, 0xA534, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x6B4D, 0x8410, 0x636E, 0x04A6, 0x05E5, 0x05C5, 0x0585, 0x0585, 0x0586, 0x05A6, 0x0424, // 0x0330 (816) +0x0000, 0x0505, 0x05C6, 0x05A6, 0x05A6, 0x05C7, 0x0606, 0x0606, 0x1CE9, 0xA535, 0x9492, 0x8C71, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x6B4D, 0x83EF, 0x9411, 0x3A47, 0x0403, 0x0584, 0x05A4, 0x0585, 0x0585, 0x0404, // 0x0350 (848) +0x0000, 0x04E5, 0x05A5, 0x05A5, 0x05C5, 0x0584, 0x1405, 0x634B, 0xBD76, 0x8C51, 0x8C51, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x8410, 0x6B6D, 0x9CB3, 0x7C6F, 0x3CA9, 0x0BE4, 0x0443, 0x0504, 0x03C2, // 0x0370 (880) +0x0000, 0x0483, 0x0504, 0x0444, 0x1426, 0x552D, 0xA554, 0xB576, 0x73CE, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB5B6, 0x6B4D, 0x7BAF, 0x9432, 0x8BD1, 0x6BCE, 0x4C6B, 0x3C09, // 0x0390 (912) +0x3186, 0x3C8A, 0x5C8C, 0x8430, 0xA493, 0xACD4, 0x8410, 0x7BEF, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xAD75, 0x7BEF, 0x73AE, 0x83F0, 0x8C11, 0x9431, // 0x03B0 (944) +0x9492, 0x9452, 0x9432, 0x8430, 0x7BEF, 0x8450, 0xBDF7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0xBDD7, 0xA534, 0x94D3, // 0x03D0 (976) +0x94B2, 0x9CF3, 0xA554, 0xC618, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/info.c b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/info.c new file mode 100644 index 0000000..312bee1 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/info.c @@ -0,0 +1,71 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: info.png +// Time generated: 11.10.2010 22:27:55 +// Size : 2 048 Bytes + +const unsigned short info[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF9F, 0xC69D, 0x95BB, 0x7D1A, 0x6CB9, // 0x0030 (48) +0x6499, 0x74F9, 0x8D7A, 0xB63C, 0xE73E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAE1C, 0x4C18, 0x2B56, 0x3397, 0x4C38, 0x64B9, 0x751A, // 0x0050 (80) +0x7D3A, 0x6CD9, 0x5458, 0x3BD7, 0x2B56, 0x3BB7, 0x855A, 0xE77E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA5FB, 0x2B56, 0x2B77, 0x751A, 0xB67C, 0xD73E, 0xE75E, 0xE77E, 0xE77E, // 0x0070 (112) +0xE77E, 0xE77E, 0xE75E, 0xDF3E, 0xC6DD, 0x8D9B, 0x43D7, 0x1B16, 0x74D9, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF9F, 0x4C18, 0x1AF6, 0x855A, 0xCEFE, 0xD71E, 0xCEFD, 0xC6DD, 0xC6BD, 0xC6BD, 0xBEBD, // 0x0090 (144) +0xC6BD, 0xBEBD, 0xC6BD, 0xC6DD, 0xC6DD, 0xD71E, 0xD71E, 0xA61C, 0x33B7, 0x2316, 0xBE7C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF3E, 0x2336, 0x3BD7, 0xBE9D, 0xC6DD, 0xBE9D, 0xBE9D, 0xBE9D, 0xBEBD, 0xBE9D, 0xCEFD, 0xEF9F, // 0x00B0 (176) +0xEF9F, 0xD73E, 0xBE9D, 0xBEBD, 0xBE9D, 0xBE9D, 0xB69D, 0xC6BD, 0xCEDD, 0x6CFA, 0x0295, 0x9DBB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xE75E, 0x1AF6, 0x4C58, 0xBEBD, 0xB67D, 0xAE5C, 0xB67D, 0xB67D, 0xB69D, 0xB67D, 0xBEBD, 0xF7DF, 0xFFFF, // 0x00D0 (208) +0xFFFF, 0xFFFF, 0xCF1E, 0xB67D, 0xB67D, 0xB67D, 0xB67D, 0xAE5C, 0xAE5C, 0xC6BD, 0x857B, 0x0295, 0xA5DB, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFDF, 0x3BB7, 0x33D8, 0xB67D, 0xA63C, 0xA63C, 0xAE5C, 0xAE5D, 0xAE5D, 0xAE7D, 0xA65D, 0xC6DD, 0xFFFF, 0xFFFF, // 0x00F0 (240) +0xFFDF, 0xFFFF, 0xDF5E, 0xA65D, 0xAE7D, 0xAE5D, 0xAE5D, 0xAE5C, 0xA63C, 0xA61C, 0xB67D, 0x753A, 0x0295, 0xCEBC, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xF7DF, 0xFFFF, 0x957A, 0x12F6, 0x9E1C, 0x9E1C, 0x9E1C, 0x9E1C, 0xA63C, 0xA63C, 0xA63D, 0xA63D, 0xA65D, 0x9DFC, 0xDF3E, 0xFFFF, // 0x0110 (272) +0xFFFF, 0xFFDF, 0xA61C, 0xA65D, 0xA65D, 0xA63D, 0xA63C, 0xA63C, 0x9E1C, 0x9E1C, 0x9DFC, 0xAE3C, 0x3C18, 0x3396, 0xFFDF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xF79F, 0x2336, 0x64DA, 0x9DFC, 0x95DC, 0x95FC, 0x95FC, 0x9E1C, 0x9E1C, 0x9E3D, 0x9E3D, 0x9E3D, 0x9E3D, 0x7D3B, 0xA63C, // 0x0130 (304) +0xB6BD, 0x8DBB, 0x8DFC, 0xA65D, 0x9E3D, 0x9E3D, 0x9E1C, 0x9E1C, 0x95FC, 0x95FC, 0x95DC, 0x95DC, 0x8DBB, 0x0AF6, 0xA5DA, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xA5FB, 0x1337, 0x8DBB, 0x8DBB, 0x8DBC, 0x8DDC, 0x95FC, 0x95FC, 0x961C, 0x961D, 0x963D, 0x9E3D, 0x963D, 0xA67D, 0xB6BD, // 0x0150 (336) +0xB6BD, 0xAE7D, 0x9E3D, 0x9E3D, 0x961D, 0x961D, 0x961C, 0x95FC, 0x95FC, 0x8DDC, 0x8DDC, 0x859B, 0x95DC, 0x3C18, 0x4BD7, 0xFFFF, // 0x0160 (352) +0xFFFF, 0x6499, 0x33F8, 0x8DBB, 0x859B, 0x85BC, 0x85BC, 0x8DDC, 0x8DFC, 0x8DFD, 0x8E1D, 0x961D, 0x961D, 0x9E3D, 0xF7BF, 0xFFFF, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xA67D, 0x8E1D, 0x961D, 0x8E1D, 0x8DFD, 0x8DFC, 0x8DDC, 0x85BC, 0x85BC, 0x859B, 0x859B, 0x5CDA, 0x2336, 0xE71C, // 0x0180 (384) +0xFFFF, 0x43F8, 0x4C79, 0x859B, 0x7D7B, 0x7D9C, 0x85BC, 0x85DC, 0x85DC, 0x8DFD, 0x8DFD, 0x8E1D, 0x8E1D, 0xA67E, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFFF, 0xBEDE, 0x85FD, 0x8E1D, 0x8DFD, 0x8DFD, 0x85DC, 0x85DC, 0x85BC, 0x7D9C, 0x7D7B, 0x7D7B, 0x753B, 0x1B36, 0xBE5A, // 0x01A0 (416) +0xFFBE, 0x3BF8, 0x3419, 0x6D1B, 0x757B, 0x7D9C, 0x7D9C, 0x7DBC, 0x7DDD, 0x85FD, 0x85FD, 0x861D, 0x861D, 0x9E7E, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFFF, 0xFFFF, 0xB6DE, 0x85FD, 0x8E1D, 0x85FD, 0x85FD, 0x7DDD, 0x7DBC, 0x7D9C, 0x7D9C, 0x757B, 0x6D3B, 0x4C9A, 0x1337, 0xADD9, // 0x01C0 (448) +0xFFBE, 0x4418, 0x23B9, 0x3439, 0x4CBA, 0x653B, 0x759C, 0x7DBD, 0x7DDD, 0x7DFD, 0x861D, 0x861E, 0x861E, 0x9E7E, 0xFFFF, 0xFFFF, // 0x01D0 (464) +0xFFFF, 0xFFFF, 0xB6DE, 0x7E1E, 0x861E, 0x85FD, 0x7DFD, 0x7DDD, 0x7DBD, 0x759C, 0x653B, 0x4CDB, 0x3439, 0x2BF9, 0x1337, 0xA5B9, // 0x01E0 (480) +0xFF9E, 0x4C39, 0x2BF9, 0x345A, 0x3C7A, 0x3C9B, 0x4CFC, 0x5D5C, 0x659D, 0x75DD, 0x7DFE, 0x861E, 0x7E3E, 0x969F, 0xFFFF, 0xFFFF, // 0x01F0 (496) +0xFFFF, 0xFFFF, 0xB6FF, 0x7E1E, 0x863E, 0x7DFE, 0x75DD, 0x6D9D, 0x5D5C, 0x4CFC, 0x3C9B, 0x347A, 0x345A, 0x343A, 0x1B78, 0xA5B9, // 0x0200 (512) +0xF79E, 0x4418, 0x2C3A, 0x3C7A, 0x449B, 0x44DB, 0x4CFC, 0x4D3C, 0x555D, 0x5D7D, 0x65BE, 0x6DFE, 0x6DFF, 0x867F, 0xFFFF, 0xFFFF, // 0x0210 (528) +0xFFFF, 0xFFFF, 0xA6DF, 0x65FF, 0x6DFE, 0x65BE, 0x5D9E, 0x555D, 0x4D3C, 0x4CFC, 0x44DB, 0x44BB, 0x3C7A, 0x345A, 0x1B78, 0xA599, // 0x0220 (544) +0xFFDE, 0x43D8, 0x345A, 0x3C9A, 0x44DB, 0x4CFC, 0x4D3C, 0x555D, 0x5D9D, 0x5DBE, 0x65DE, 0x6DFF, 0x661F, 0x867F, 0xFFFF, 0xFFFF, // 0x0230 (560) +0xFFFF, 0xFFFF, 0xA6DF, 0x65FF, 0x6DFF, 0x65DE, 0x5DBE, 0x5D9D, 0x555D, 0x4D3C, 0x4CFC, 0x44DB, 0x3C7A, 0x3C9B, 0x1B57, 0xADB9, // 0x0240 (576) +0xFFFF, 0x4BD7, 0x2C1A, 0x44DB, 0x44DB, 0x4D1C, 0x555D, 0x5D7D, 0x5DBE, 0x65DE, 0x6E1F, 0x6E3F, 0x765F, 0x96BF, 0xFFFF, 0xFFFF, // 0x0250 (592) +0xFFFF, 0xFFFF, 0xAEFF, 0x6E3F, 0x763F, 0x6E1F, 0x65DE, 0x5DBE, 0x5D7D, 0x555D, 0x4D1C, 0x44DC, 0x3C9B, 0x44DC, 0x1AD5, 0xC639, // 0x0260 (608) +0xFFFF, 0x84D8, 0x1317, 0x5D7D, 0x44DB, 0x553C, 0x557D, 0x5D9E, 0x65DE, 0x65FF, 0x6E3F, 0x7E5F, 0x7E7F, 0x9EDF, 0xFFFF, 0xFFFF, // 0x0270 (624) +0xFFFF, 0xFFFF, 0xB73F, 0x7E7F, 0x7E5F, 0x6E3F, 0x65FF, 0x65DE, 0x5D9E, 0x557D, 0x553C, 0x44DC, 0x4D1C, 0x345B, 0x22B4, 0xE71B, // 0x0280 (640) +0xFFFF, 0xD6BC, 0x0234, 0x4CFC, 0x5D7D, 0x4D3C, 0x5D9D, 0x5DBE, 0x65FF, 0x6E3F, 0x765F, 0x867F, 0x8EBF, 0xA6DF, 0xFFFF, 0xFFFF, // 0x0290 (656) +0xFFFF, 0xFFFF, 0xB71F, 0x8EBF, 0x869F, 0x765F, 0x6E3F, 0x65FF, 0x5DBE, 0x5D7D, 0x553D, 0x4D1C, 0x65BE, 0x0AB7, 0x6C15, 0xFFBE, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0x53B6, 0x0296, 0x75FE, 0x5D9D, 0x557D, 0x65DE, 0x6E1F, 0x763F, 0x7E7F, 0x8EBF, 0x9EFF, 0x96BE, 0xAE3C, 0xE77E, // 0x02B0 (688) +0xEF9E, 0xC69D, 0x967E, 0x9EFF, 0x8EBF, 0x7E7F, 0x763F, 0x6E1F, 0x65DE, 0x5D9E, 0x555D, 0x761E, 0x341A, 0x1294, 0xBE18, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xCE9B, 0x0A13, 0x2378, 0x7E5F, 0x6E1E, 0x5DBE, 0x6E1F, 0x7E5F, 0x869F, 0x96DF, 0x9EFF, 0xAF5F, 0x9E9E, 0x8DFC, // 0x02D0 (720) +0x8E1C, 0x967D, 0xAF3F, 0xA6FF, 0x96DF, 0x869F, 0x7E5F, 0x6E1F, 0x5DBE, 0x65DE, 0x7E5F, 0x4CBB, 0x0AB5, 0x7454, 0xEF5C, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFFF, 0xFFFF, 0x8D17, 0x01D3, 0x23B9, 0x7E3E, 0x8E9F, 0x763F, 0x765F, 0x8E9F, 0x9EDF, 0xA71F, 0xB75F, 0xC7BF, 0xCFDF, // 0x02F0 (752) +0xCFDF, 0xC7BF, 0xB75F, 0xA71F, 0x9EDF, 0x8E9F, 0x765F, 0x6E1F, 0x867F, 0x8E7F, 0x4CBB, 0x1317, 0x4BB4, 0xD679, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFBD, 0x7476, 0x0214, 0x1B78, 0x659D, 0x9EDF, 0x9EFF, 0x96DF, 0x9EFF, 0xAF1F, 0xB75F, 0xC79F, 0xD7DF, // 0x0310 (784) +0xD7DF, 0xC79F, 0xB75F, 0xAF1F, 0x9EDF, 0x96DF, 0x96DF, 0x9EFF, 0x7E1E, 0x3C5A, 0x1B77, 0x43B5, 0xBDD6, 0xF7BE, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77D, 0x7CB6, 0x12B4, 0x1337, 0x449B, 0x7DFD, 0xA6FF, 0xB75F, 0xBF7F, 0xC79F, 0xCFBF, 0xD7FF, // 0x0330 (816) +0xD7FF, 0xCFBF, 0xC79F, 0xBF7F, 0xB77F, 0xAF1F, 0x8E5E, 0x551B, 0x3419, 0x2BD7, 0x5415, 0xB5B6, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79D, 0xA577, 0x3B75, 0x1B36, 0x2BD9, 0x4CBB, 0x759D, 0x965E, 0xAEDF, 0xBF3F, 0xC77F, // 0x0350 (848) +0xC77F, 0xBF3F, 0xB6FF, 0x9E7F, 0x7DDD, 0x5D1C, 0x447A, 0x3C59, 0x4437, 0x7474, 0xC617, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDE, 0xD699, 0x84D5, 0x43D5, 0x33B7, 0x3418, 0x4C7A, 0x5CFC, 0x753D, 0x857E, // 0x0370 (880) +0x859E, 0x755D, 0x653C, 0x5CFB, 0x4CDA, 0x4CB9, 0x5497, 0x6C95, 0xA555, 0xDEDA, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79D, 0xCE79, 0x9D56, 0x7495, 0x5C56, 0x4C77, 0x4C97, 0x4CB8, // 0x0390 (912) +0x54D8, 0x5CD8, 0x5CF8, 0x64D7, 0x74D6, 0x8CF5, 0xAD96, 0xD699, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBE, 0xEF1B, 0xD679, 0xBDF7, 0xAD96, 0xA576, // 0x03B0 (944) +0xA576, 0xAD76, 0xB5B6, 0xC5F7, 0xD679, 0xEF3C, 0xFFDE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFBE, // 0x03D0 (976) +0xF7BE, 0xF7BE, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/tux.c b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/tux.c new file mode 100644 index 0000000..69a04a1 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap/tux.c @@ -0,0 +1,71 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: tux.png +// Time generated: 11.10.2010 22:51:32 +// Size : 2 048 Bytes + +const unsigned short tux[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x9CD3, 0x9CF3, 0xA514, // 0x0010 (16) +0x9CF3, 0x8C51, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x5AEB, 0x7BEF, 0x9CD3, 0x94B2, // 0x0030 (48) +0x94B2, 0x94B2, 0x4228, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x9CF3, 0x18E3, 0x630C, 0x4A49, 0x4A69, // 0x0050 (80) +0x4A69, 0x528A, 0x4A49, 0x0000, 0xC638, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6D, 0x0000, 0x0020, 0x10A2, 0x1082, // 0x0070 (112) +0x0841, 0x0841, 0x0841, 0x0000, 0x630C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x528A, 0x4228, 0x8410, 0x0000, 0x0861, // 0x0090 (144) +0xAD55, 0xBDD7, 0x10A2, 0x0000, 0x2945, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x5ACB, 0x8C71, 0xE75D, 0x2126, 0x528B, // 0x00B0 (176) +0xE75D, 0xDEDB, 0x7BCF, 0x0000, 0x18E3, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6D, 0x4A4A, 0x6B2A, 0x8BE7, 0xA48A, // 0x00D0 (208) +0x6B09, 0x4A8A, 0x8431, 0x0000, 0x2104, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6E, 0x5204, 0xDE6A, 0xFFF7, 0xFFF8, // 0x00F0 (240) +0xD5AC, 0xBCAA, 0x5A66, 0x0000, 0x1082, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C10, 0xC540, 0xFFED, 0xFF2C, 0xFEEC, // 0x0110 (272) +0xFECC, 0xFE66, 0x8260, 0x0000, 0x0000, 0xB596, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B3, 0x9C25, 0xFF20, 0xFE40, 0xFDA0, // 0x0130 (304) +0xFCC0, 0xF524, 0x836A, 0x0000, 0x0000, 0x630C, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x630C, 0x94B4, 0xFF13, 0xFD83, 0xF523, // 0x0150 (336) +0xE5CF, 0xF79E, 0xE71D, 0x0861, 0x0000, 0x0861, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xCE59, 0x0841, 0xD69A, 0xFFFF, 0xFF7D, 0xF77D, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x4A69, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x10A2, 0x8410, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFDF, 0xFFFF, 0xCE59, 0x0000, 0x0000, 0x0000, 0x9492, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x52AA, 0x0020, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFDF, 0xFFDF, 0xF7BE, 0xFFDF, 0x3186, 0x0000, 0x0020, 0x0841, 0xCE79, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xC638, 0x0000, 0x52AA, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x01D0 (464) +0xFFDF, 0xF7BE, 0xF79E, 0xFFFF, 0x9CF3, 0x0000, 0x0841, 0x0000, 0x39E7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01E0 (480) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5ACB, 0x0000, 0xBDF7, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0xFFDF, // 0x01F0 (496) +0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0x3186, 0x0000, 0x0861, 0x0000, 0xAD55, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x0861, 0x4A49, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x0210 (528) +0xF7BE, 0xF79E, 0xEF7D, 0xEF5D, 0xFFDF, 0x8410, 0x0000, 0x1082, 0x0000, 0x39E7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0xB596, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, // 0x0230 (560) +0xF79E, 0xEF7D, 0xEF7D, 0xE73C, 0xF79E, 0xAD55, 0x0861, 0x10A2, 0x0861, 0x0841, 0xCE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x3185, 0x10A2, 0xE71C, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF79E, // 0x0250 (592) +0xEF7D, 0xEF7D, 0xEF5D, 0xE73C, 0xEF5D, 0xBDF7, 0x18C3, 0x18C3, 0x18C3, 0x0000, 0x8C71, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0x39E7, 0xF7BE, 0xFFFF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF79E, 0xEF7D, // 0x0270 (624) +0xEF7D, 0xEF5D, 0xE73C, 0xE71C, 0xE71C, 0xC618, 0x18E3, 0x10A2, 0x10A2, 0x0020, 0x6B4D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C51, 0x38E0, 0x4A27, 0xFFFF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, // 0x0290 (656) +0xEF5D, 0xE73C, 0xE71C, 0xDEFB, 0xDF1D, 0xBDF8, 0x39C7, 0x5ACB, 0x528A, 0x10A3, 0x738F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDD6C, 0xFE2B, 0xBC45, 0xA513, 0xFFFF, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF5D, // 0x02B0 (688) +0xE73C, 0xE71C, 0xDEFB, 0xD6DC, 0xDD8E, 0xB3E4, 0x2124, 0x2965, 0x2945, 0x20C1, 0xB511, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77C, 0xE5CF, 0xF60B, 0xFF9B, 0xFF54, 0x8B02, 0x7BF0, 0xFFDF, 0xF79E, 0xEF5D, 0xEF5D, 0xE73C, // 0x02D0 (720) +0xE71C, 0xDEFB, 0xDEDB, 0xCE7A, 0xED89, 0xDDAD, 0x0842, 0x0000, 0x0000, 0xAC69, 0xDD6B, 0xEFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFFF, 0xFFBE, 0xE5CB, 0xEDC9, 0xFE4B, 0xFF14, 0xFEF3, 0xFF35, 0xFE8D, 0x51C1, 0x634E, 0xE73C, 0xEF5D, 0xE73C, 0xE71C, // 0x02F0 (752) +0xDEFB, 0xDEDB, 0xD6DB, 0xCE59, 0xE58B, 0xFF98, 0xBD4F, 0x8B88, 0xCD90, 0xFFB7, 0xCCE8, 0xE73D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xEF3B, 0xF583, 0xFF30, 0xFF11, 0xFECF, 0xFEEF, 0xFECF, 0xFF30, 0xDD46, 0x2903, 0x6B8E, 0xEF7D, 0xE71C, 0xDEFB, // 0x0310 (784) +0xDEDB, 0xD6BA, 0xD69A, 0xCE59, 0xE5AA, 0xFF11, 0xFF53, 0xFF73, 0xFF33, 0xFF12, 0xFE6C, 0xDDAD, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xF79E, 0xEDC5, 0xFECB, 0xFECC, 0xFECC, 0xFEEC, 0xFECB, 0xFECC, 0xFEEA, 0x9BE5, 0x8432, 0xE73C, 0xDEDB, 0xDEDB, // 0x0330 (816) +0xD6BA, 0xD69A, 0xDEDB, 0xA4F3, 0xD547, 0xFF2E, 0xFECD, 0xFECE, 0xFEEE, 0xFEEE, 0xFF10, 0xFEAB, 0xE5A8, 0xEF7D, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xF79E, 0xF603, 0xFEA2, 0xFEC7, 0xFEC7, 0xFEA4, 0xFE81, 0xFE61, 0xFEA4, 0xFE43, 0xDE33, 0xE75E, 0xE71C, 0xDEFB, // 0x0350 (848) +0xDEDB, 0xCE58, 0x8C72, 0x5247, 0xEDE4, 0xFF0A, 0xFECA, 0xFEC9, 0xFE84, 0xFE83, 0xFEE7, 0xFEA3, 0xB443, 0xD69B, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xF75B, 0xFE60, 0xFF00, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xE5C1, 0x9492, 0xA514, 0x9CD3, // 0x0370 (880) +0x8410, 0x630B, 0x4229, 0x6AE8, 0xFE80, 0xFEC1, 0xFEC1, 0xFEA0, 0xFEA0, 0xFEE0, 0xDD80, 0x9BE8, 0xB597, 0xFFDF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xF79E, 0xD589, 0xE600, 0xFEA0, 0xFF00, 0xFF40, 0xFF40, 0xFF00, 0xFF00, 0xFF20, 0xFEC0, 0x5267, 0x4229, 0x4A48, // 0x0390 (912) +0x4A49, 0x5289, 0x424A, 0x7B46, 0xFF20, 0xFEE0, 0xFEE0, 0xFF20, 0xFEE0, 0xB4A5, 0x9C92, 0xDEFD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xE71D, 0xBDB6, 0xB530, 0xBD0B, 0xCD65, 0xEE60, 0xFF40, 0xFFA0, 0xFF80, 0xBD03, 0x8410, 0xA514, 0xA534, // 0x03B0 (944) +0xAD75, 0xB596, 0xA555, 0x9C8F, 0xF6C0, 0xFFA0, 0xFFA0, 0xF6E0, 0xA449, 0xB5B8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7F, 0xD69C, 0xBD95, 0xBD4C, 0xCDC6, 0xB4E8, 0xAD35, 0xF7BF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xCDD0, 0xCDC6, 0xCDA7, 0xA48D, 0xCE7B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1F, 0xB59A, 0xBDDA, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFDF, 0xFFDF, 0xFFFF, 0xEF7F, 0xB59A, 0xAD59, 0xDF1D, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/UTFT_Bitmap_128x128.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/UTFT_Bitmap_128x128.ino new file mode 100644 index 0000000..3cc269e --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/UTFT_Bitmap_128x128.ino @@ -0,0 +1,49 @@ +// UTFT_Bitmap_128x128 (C)2013 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the drawBitmap()-function. +// +// This demo was made to work on the 128x128 modules. +// Any other size displays may cause strange behaviour. +// +// This program requires the UTFT library. +// + +#include + +UTFT myGLCD(LPH9135,6,5,2,3,4); // Remember to change the model parameter to suit your display module! + +extern unsigned short icon1[0x400]; +extern unsigned short icon2[0x400]; +extern unsigned short tux[0x1000]; + +void setup() +{ + myGLCD.InitLCD(PORTRAIT); +} + +void loop() +{ +// Draw a 4 by 4 grid of a 32x32 icon. + myGLCD.fillScr(255, 255, 255); + for (int x=0; x<4; x++) + for (int y=0; y<4; y++) + myGLCD.drawBitmap (x*32, y*32, 32, 32, icon1); + + delay(5000); + +// Draw a 64x64 icon in double size. + myGLCD.fillScr(255, 255, 255); + myGLCD.drawBitmap (0, 0, 64, 64, tux, 2); + + delay(5000); + +// Draw a 2 by 2 grid of a 32x32 icon in double size. + myGLCD.fillScr(255, 255, 255); + for (int x=0; x<2; x++) + for (int y=0; y<2; y++) + myGLCD.drawBitmap (x*64, y*64, 32, 32, icon2, 2); + + delay(5000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/icon1.c b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/icon1.c new file mode 100644 index 0000000..b9c2c97 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/icon1.c @@ -0,0 +1,72 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: exit.png +// Time generated: 14.10.2010 21:53:03 +// Dimensions : 32x32 pixels +// Size : 2 048 Bytes + +const unsigned short icon1[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF1C, 0xE618, 0xE638, 0xE638, 0xE638, 0xE659, 0xE659, 0xE659, 0xE659, 0xE659, 0xE679, 0xE679, // 0x0010 (16) +0xE679, 0xE679, 0xE679, 0xE679, 0xEE79, 0xEE9A, 0xEE9A, 0xEE9A, 0xEE9A, 0xEE9A, 0xE638, 0xEEBA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xD555, 0xCCD3, 0xDDB6, 0xDDD7, 0xDDF7, 0xDDF7, 0xDE18, 0xE618, 0xE638, 0xE638, 0xE659, 0xE679, 0xE679, // 0x0030 (48) +0xEE9A, 0xEE9A, 0xEEBA, 0xEEBA, 0xEEBA, 0xEEDB, 0xEEDB, 0xEEFB, 0xEEFB, 0xEEFB, 0xEEFB, 0xE659, 0xD575, 0xF77D, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFDF, 0xFFFF, 0xD534, 0xC471, 0xD575, 0xCCF3, 0xCCD3, 0xCCD3, 0xCCF3, 0xCCF3, 0xD4F3, 0xD514, 0xD514, 0xD514, 0xD534, 0xDD55, // 0x0050 (80) +0xDD55, 0xDD55, 0xDD55, 0xDD75, 0xDD75, 0xDD75, 0xDD96, 0xDD96, 0xDD96, 0xDDB6, 0xDDD7, 0xEE79, 0xEEBA, 0xD534, 0xFFBE, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xEEDB, 0xB38E, 0xC4B2, 0xBC30, 0xC451, 0xC471, 0xC471, 0xCC71, 0xCC92, 0xCC92, 0xCC92, 0xCCB2, 0xD4B2, 0xD4B2, 0xCC71, // 0x0070 (112) +0xCC71, 0xD4D3, 0xD4F3, 0xDCF3, 0xDCF3, 0xDD14, 0xDD14, 0xDD14, 0xDD34, 0xDD34, 0xDD34, 0xDD14, 0xE5D7, 0xDD96, 0xDDF7, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xC4F3, 0xAB2C, 0xC430, 0xC410, 0xC430, 0xC430, 0xC430, 0xCC51, 0xCC51, 0xCC51, 0xCC71, 0xCC71, 0xD471, 0xCC71, 0xD5F7, // 0x0090 (144) +0xD5F7, 0xCC92, 0xDCB2, 0xDCD3, 0xDCD3, 0xDCD3, 0xDCD3, 0xDCF3, 0xDCF3, 0xDD14, 0xDD14, 0xDD34, 0xDD14, 0xDD34, 0xC492, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xB3EF, 0x9A28, 0xC430, 0xBBCF, 0xC3EF, 0xC3EF, 0xC3EF, 0xC410, 0xCC10, 0xCC10, 0xCC30, 0xCC51, 0xCBEF, 0xE638, 0xFFFF, // 0x00B0 (176) +0xFFFF, 0xE659, 0xD430, 0xDC92, 0xDC92, 0xDC92, 0xDCB2, 0xDCB2, 0xDCB2, 0xDCD3, 0xDCD3, 0xDCD3, 0xE514, 0xD410, 0xAB0C, 0xF7FF, // 0x00C0 (192) +0xFFFF, 0xABCF, 0x9165, 0xC3EF, 0xBB8E, 0xBBAE, 0xC3AE, 0xC3CF, 0xC3CF, 0xCBCF, 0xCBEF, 0xCC10, 0xCC10, 0xCBAE, 0xEE9A, 0xFFFF, // 0x00D0 (208) +0xFFFF, 0xF6DB, 0xD410, 0xDC71, 0xDC71, 0xDC71, 0xDC71, 0xDC71, 0xDC71, 0xE492, 0xE492, 0xE492, 0xE4F3, 0xCB2C, 0xA249, 0xF7FF, // 0x00E0 (224) +0xFFFF, 0xABCF, 0x88C3, 0xC3AE, 0xBB4D, 0xBB6D, 0xC36D, 0xC38E, 0xC38E, 0xCBAE, 0xC36D, 0xC34D, 0xCBCF, 0xCB8E, 0xEE59, 0xFFFF, // 0x00F0 (240) +0xFFFF, 0xF6BA, 0xDBCF, 0xD3CF, 0xCBAE, 0xD3CF, 0xE430, 0xE430, 0xE451, 0xE451, 0xE451, 0xE451, 0xECD3, 0xCAAA, 0xA208, 0xF7FF, // 0x0100 (256) +0xFFFF, 0xABCF, 0x8061, 0xBB6D, 0xBB2C, 0xBB2C, 0xC34D, 0xC34D, 0xCB4D, 0xBB0C, 0xC492, 0xCD14, 0xC38E, 0xCB2C, 0xEE59, 0xFFFF, // 0x0110 (272) +0xFFFF, 0xF6BA, 0xD36D, 0xD575, 0xE6DB, 0xDDB6, 0xD3AE, 0xE3EF, 0xE410, 0xE410, 0xE430, 0xE410, 0xECB2, 0xC986, 0xA208, 0xF7FF, // 0x0120 (288) +0xFFFF, 0xB3EF, 0x8041, 0xBB0C, 0xBAEB, 0xBAEB, 0xC30C, 0xC30C, 0xBACB, 0xD5B6, 0xFFFF, 0xFFFF, 0xEE79, 0xCACB, 0xEE59, 0xFFFF, // 0x0130 (304) +0xFFFF, 0xF679, 0xDBEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEEBA, 0xD3CF, 0xE3AE, 0xE3EF, 0xE3CF, 0xEC10, 0xEB6D, 0xC000, 0xA249, 0xF7FF, // 0x0140 (320) +0xFFFF, 0xB3EF, 0x8020, 0xBACB, 0xBAAA, 0xBAAA, 0xC2EB, 0xBA8A, 0xD596, 0xFFFF, 0xFFDF, 0xFFFF, 0xF73C, 0xCAAA, 0xEE38, 0xFFFF, // 0x0150 (336) +0xFFFF, 0xF679, 0xDB4D, 0xFF7D, 0xFFFF, 0xFFDF, 0xFFFF, 0xEEDB, 0xDB6D, 0xEB8E, 0xEBAE, 0xEB8E, 0xE0A2, 0xC800, 0xAA49, 0xF7FF, // 0x0160 (352) +0xFFFF, 0xB3EF, 0x8000, 0xB28A, 0xBA69, 0xBA8A, 0xBA49, 0xCC30, 0xFFFF, 0xFFDF, 0xFFFF, 0xFF5D, 0xDBCF, 0xCA69, 0xEE18, 0xFFFF, // 0x0170 (368) +0xFFFF, 0xF679, 0xDAAA, 0xE3AE, 0xF6BA, 0xFFFF, 0xFFDF, 0xFFFF, 0xE5D7, 0xE30C, 0xEB8E, 0xE0E3, 0xE000, 0xC800, 0xAA49, 0xF7FF, // 0x0180 (384) +0xFFFF, 0xB3EF, 0x8800, 0xB249, 0xBA49, 0xBA49, 0xBA49, 0xEF1C, 0xFFFF, 0xFFFF, 0xFF7D, 0xD32C, 0xCA69, 0xD249, 0xEDF7, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xF659, 0xDAAA, 0xE2CB, 0xE2EB, 0xFEBA, 0xFFFF, 0xFFDF, 0xFFDF, 0xE3CF, 0xE103, 0xE000, 0xE081, 0xD000, 0xAA69, 0xF7FF, // 0x01A0 (416) +0xFFFF, 0xB3EF, 0x8800, 0xB228, 0xBA08, 0xB9A6, 0xCBAE, 0xFFFF, 0xFFDF, 0xFFFF, 0xDC30, 0xC9E7, 0xD28A, 0xCA08, 0xF618, 0xFFFF, // 0x01B0 (432) +0xFFFF, 0xF679, 0xDA49, 0xE2CB, 0xE28A, 0xEB6D, 0xFFBE, 0xFFDF, 0xFFFF, 0xEC92, 0xE000, 0xE0A2, 0xE0C2, 0xD040, 0xAA89, 0xF7FF, // 0x01C0 (448) +0xFFFF, 0xB3EF, 0x8800, 0xB1E7, 0xB9E7, 0xB165, 0xDD55, 0xFFFF, 0xFFFF, 0xF71C, 0xCA08, 0xCA08, 0xD228, 0xD1E7, 0xE430, 0xFFDF, // 0x01D0 (464) +0xFFDF, 0xEC51, 0xDA08, 0xE28A, 0xE28A, 0xE228, 0xF618, 0xFFFF, 0xFFFF, 0xF679, 0xE081, 0xE0C2, 0xE903, 0xD081, 0xAA89, 0xF7FF, // 0x01E0 (480) +0xFFFF, 0xBBEF, 0x9000, 0xB1A6, 0xB986, 0xB145, 0xEE38, 0xFFFF, 0xFFFF, 0xED96, 0xC165, 0xC9E7, 0xD1E7, 0xD1E7, 0xD1C7, 0xDACB, // 0x01F0 (496) +0xE2EB, 0xD9E7, 0xE228, 0xE228, 0xEA69, 0xE9E7, 0xF40F, 0xFFFF, 0xFFFF, 0xFF5D, 0xE144, 0xE8E2, 0xE943, 0xD8C1, 0xAA8A, 0xF7FF, // 0x0200 (512) +0xFFFF, 0xBC10, 0x9000, 0xB165, 0xB145, 0xB924, 0xEE9A, 0xFFFF, 0xFFFF, 0xE514, 0xC124, 0xC9A6, 0xD1A6, 0xD1A6, 0xD1C7, 0xD9A6, // 0x0210 (528) +0xD9A6, 0xE1E7, 0xE208, 0xE208, 0xE9A6, 0xE041, 0xEA8A, 0xFFFF, 0xFFFF, 0xFF9E, 0xE9C6, 0xE902, 0xE984, 0xD902, 0xAAAA, 0xF7FF, // 0x0220 (544) +0xFFFF, 0xC410, 0x9000, 0xB124, 0xB124, 0xB0C3, 0xEE18, 0xFFFF, 0xFFFF, 0xE575, 0xC0E3, 0xC986, 0xD165, 0xD165, 0xD986, 0xD9A6, // 0x0230 (560) +0xD9A6, 0xE1A6, 0xE165, 0xE082, 0xE020, 0xE000, 0xEB4C, 0xFFFF, 0xFFFF, 0xFF7D, 0xE9A5, 0xE943, 0xE9A5, 0xD923, 0xAAAA, 0xF7FF, // 0x0240 (576) +0xFFFF, 0xC410, 0x9800, 0xB0E3, 0xB0E3, 0xB061, 0xE4F3, 0xFFFF, 0xFFFF, 0xF6FB, 0xC104, 0xC924, 0xD145, 0xD145, 0xD945, 0xD945, // 0x0250 (592) +0xD8E3, 0xD861, 0xD800, 0xE000, 0xE061, 0xE000, 0xED34, 0xFFFF, 0xFFFF, 0xFE9A, 0xE923, 0xE984, 0xE9C5, 0xE163, 0xAAAA, 0xF7FF, // 0x0260 (608) +0xFFFF, 0xC410, 0xA000, 0xB0A2, 0xB0A2, 0xB041, 0xCACB, 0xFFFF, 0xFFDF, 0xFFFF, 0xD34D, 0xC841, 0xD104, 0xD0A2, 0xD061, 0xD000, // 0x0270 (624) +0xD800, 0xD800, 0xE000, 0xE041, 0xE000, 0xD965, 0xFF9E, 0xFFDF, 0xFFFF, 0xF4D2, 0xE8E2, 0xE9A5, 0xE9E5, 0xE183, 0xAAAA, 0xF7FF, // 0x0280 (640) +0xFFFF, 0xCC10, 0xA000, 0xA861, 0xB061, 0xB061, 0xB882, 0xF6DB, 0xFFFF, 0xFFDF, 0xF75D, 0xC124, 0xC800, 0xD000, 0xD000, 0xD800, // 0x0290 (656) +0xD800, 0xE000, 0xE020, 0xE000, 0xD861, 0xF638, 0xFFFF, 0xFFDF, 0xFFDF, 0xEA68, 0xE943, 0xE9C5, 0xEA06, 0xE1A4, 0xB2CA, 0xF7FF, // 0x02A0 (672) +0xFFFF, 0xCC10, 0xA000, 0xA820, 0xB000, 0xB000, 0xB000, 0xCA49, 0xFFFF, 0xFFDF, 0xFFFF, 0xF71C, 0xCA08, 0xC800, 0xD000, 0xD800, // 0x02B0 (688) +0xD800, 0xD800, 0xD800, 0xD944, 0xEE18, 0xFFFF, 0xFFBE, 0xFFFF, 0xF4F2, 0xE902, 0xE9A5, 0xE9C5, 0xEA06, 0xE9A4, 0xB2CA, 0xF7FF, // 0x02C0 (704) +0xFFFF, 0xD410, 0xA800, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xDC10, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xED96, 0xDAEB, 0xD1A6, // 0x02D0 (720) +0xD965, 0xDA69, 0xECD3, 0xFF9E, 0xFFFF, 0xFFBE, 0xFFFF, 0xFE17, 0xE923, 0xE964, 0xE9A5, 0xE9C5, 0xEA26, 0xE9C4, 0xBACA, 0xF7FF, // 0x02E0 (736) +0xF7FF, 0xD410, 0xA800, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xB800, 0xE3EF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF5B6, 0xE923, 0xE923, 0xE984, 0xE9A5, 0xE9E5, 0xEA26, 0xE9C5, 0xBACA, 0xF7FF, // 0x0300 (768) +0xF7FF, 0xDC10, 0xB000, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xC000, 0xC000, 0xD228, 0xF638, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFEFB, 0xF3AE, 0xE0C1, 0xE903, 0xE964, 0xE984, 0xE9A5, 0xE9E5, 0xEA26, 0xE9E5, 0xC2CA, 0xF7DF, // 0x0320 (800) +0xF7FF, 0xDC51, 0xB800, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xC000, 0xC000, 0xC000, 0xC800, 0xD9E7, 0xEC30, 0xF5D7, 0xFE9A, // 0x0330 (816) +0xFEBA, 0xF618, 0xF4D3, 0xEACB, 0xE0E2, 0xE040, 0xE903, 0xE943, 0xE943, 0xE984, 0xE9A5, 0xE9E5, 0xEA26, 0xEA05, 0xC30C, 0xF7DF, // 0x0340 (832) +0xFFFF, 0xD575, 0xD104, 0xA820, 0xB000, 0xB800, 0xB800, 0xC000, 0xC000, 0xC000, 0xC820, 0xC800, 0xD000, 0xD000, 0xD800, 0xD800, // 0x0350 (848) +0xE000, 0xE000, 0xE000, 0xE000, 0xE0A1, 0xE0E3, 0xE903, 0xE943, 0xE964, 0xE984, 0xE9C5, 0xE9C5, 0xF226, 0xE227, 0xBC10, 0xF7FF, // 0x0360 (864) +0xFFFF, 0xDF3C, 0xCAAA, 0xD186, 0xB082, 0xB000, 0xB800, 0xB800, 0xB800, 0xC000, 0xC000, 0xC800, 0xC800, 0xD000, 0xD000, 0xD800, // 0x0370 (880) +0xD800, 0xE000, 0xE020, 0xE040, 0xE061, 0xE0A1, 0xE0C2, 0xE102, 0xE123, 0xE943, 0xE984, 0xEA26, 0xFB0A, 0xBA08, 0xCE38, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFDF, 0xBDD7, 0xCA69, 0xE248, 0xD207, 0xD1C6, 0xD1C6, 0xD9C7, 0xD9C7, 0xE1C7, 0xE1C7, 0xE1C7, 0xE9C7, 0xE9C7, 0xE9C7, // 0x0390 (912) +0xF1C6, 0xF1C7, 0xF1E7, 0xF207, 0xF228, 0xF248, 0xF269, 0xF289, 0xF2A9, 0xF2CA, 0xFB0A, 0xF2EA, 0xC207, 0xACB3, 0xF7BE, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xF7BE, 0xBDF7, 0xAB8E, 0xC2EB, 0xC2EB, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xCB0B, 0xCAEB, // 0x03B0 (944) +0xCAEB, 0xCACA, 0xCACA, 0xCAAA, 0xCAAA, 0xCA8A, 0xCA69, 0xC269, 0xC269, 0xC289, 0xBA69, 0xA2CB, 0xAD34, 0xEF7D, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xDF3C, 0xBE39, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, // 0x03D0 (976) +0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xBE38, 0xD71C, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/icon2.c b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/icon2.c new file mode 100644 index 0000000..9b843cc --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/icon2.c @@ -0,0 +1,72 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: video.png +// Time generated: 14.10.2010 21:53:17 +// Dimensions : 32x32 pixels +// Size : 2 048 Bytes + +const unsigned short icon2[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE71C, 0xB5B6, 0x94B2, 0x8C71, // 0x0030 (48) +0x9492, 0xA534, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x9CF3, 0x73AE, 0x6B6D, 0x73AE, 0x7BCF, // 0x0050 (80) +0x7BEF, 0x7BCF, 0x7BEF, 0xA534, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x7BCF, 0x6B6D, 0x738E, 0x7BCF, 0x8C71, 0x9492, // 0x0070 (112) +0x9492, 0x9492, 0x9492, 0x8C51, 0x8C71, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x738E, 0x738E, 0x73AE, 0x6B4D, 0x8410, 0x9CF3, 0x9CF3, // 0x0090 (144) +0x9CF3, 0x9CF3, 0x9CF3, 0x9CF3, 0x94B2, 0x7BEF, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x738E, 0x7BEF, 0x8410, 0x632C, 0x4A69, 0x9492, 0xAD75, 0xAD55, // 0x00B0 (176) +0xAD55, 0xAD55, 0xAD55, 0xA534, 0xAD55, 0x9492, 0x8430, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBDF7, 0x7BCF, 0x8430, 0x7BCF, 0x6B4D, 0x528A, 0x6B6D, 0xB5B6, 0xB5B6, 0xB5B6, // 0x00D0 (208) +0xB5B6, 0xB596, 0xB596, 0xAD75, 0xAD75, 0xAD55, 0x8410, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0x7BEF, 0x9CD3, 0xA514, 0x5AEB, 0x630C, 0x6B4D, 0x9492, 0xC638, 0xC618, 0xC618, // 0x00F0 (240) +0xBDF7, 0xBDF7, 0xC618, 0xB5B6, 0xB5B6, 0xB596, 0x9492, 0x8C51, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x8C71, 0x94B2, 0xAD55, 0xB5B6, 0x738E, 0x6B4D, 0x632C, 0xB596, 0xD69A, 0xCE59, 0xCE59, // 0x0110 (272) +0xCE79, 0xCE59, 0x6B6D, 0x9492, 0xB5B6, 0xBDF7, 0x9CF3, 0x8430, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB5B6, 0x8C51, 0xAD55, 0xB5B6, 0xCE79, 0x8C51, 0x630C, 0x8C51, 0xCE79, 0xD6BA, 0xD69A, 0xDEDB, // 0x0130 (304) +0xBDD7, 0x8C51, 0x4228, 0x2965, 0xAD55, 0xC638, 0xA534, 0x8430, 0xB5B6, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x8C51, 0xA514, 0xB5B6, 0xC618, 0xD6BA, 0xB5B6, 0xB596, 0xE71C, 0xDEFB, 0xDEFB, 0xE71C, 0xAD55, // 0x0150 (336) +0x738E, 0x7BEF, 0x5AEB, 0x2945, 0xC638, 0xCE59, 0xA534, 0x9492, 0xA534, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x94B2, 0xB5B6, 0xC618, 0xCE79, 0xD6BA, 0xE73C, 0xEF7D, 0xE73C, 0xEF5D, 0xE73C, 0x9CF3, 0x738E, // 0x0170 (368) +0x7BCF, 0x8430, 0x6B6D, 0x2965, 0xB596, 0xD69A, 0xAD55, 0x94B2, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xF79E, 0x9492, 0x9CF3, 0xB5B6, 0xD69A, 0xDEFB, 0xE71C, 0xE73C, 0x6B6D, 0x528A, 0xDEDB, 0xEF5D, 0x7BEF, 0x8430, // 0x0190 (400) +0x7BEF, 0x8C51, 0x7BCF, 0x2104, 0xB596, 0xD6BA, 0xAD55, 0x9CD3, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0xE6FC, // 0x01A0 (416) +0xFFDF, 0xFFFF, 0xCE59, 0x9492, 0x9492, 0x6B4D, 0x7BCF, 0xBDD7, 0xF7BE, 0xA514, 0x4A49, 0x528A, 0xC638, 0xEF7D, 0x7BEF, 0x7BEF, // 0x01B0 (432) +0x7BEF, 0x8430, 0x5AEB, 0x10A2, 0xC618, 0xD69A, 0xAD55, 0x94B2, 0xA514, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE5A, 0x8BF2, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xAD55, 0x94B2, 0x8C51, 0x5AEB, 0x632C, 0xBDD7, 0xE73C, 0x630C, 0x632C, 0xBDF7, 0xFFDF, 0xEF5D, 0xBDD7, 0xB5B6, // 0x01D0 (464) +0xAD75, 0xAD75, 0x8C51, 0x738E, 0xD69A, 0xCE59, 0xB596, 0x8C51, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xCE39, 0x7350, // 0x01E0 (480) +0xFFFF, 0xF79E, 0x94B2, 0x94B2, 0x7BCF, 0x5AEB, 0x738E, 0xD6BA, 0xD69A, 0x2104, 0x6B6D, 0xF79E, 0xF79E, 0xF79E, 0xF7BE, 0xF79E, // 0x01F0 (496) +0xEF7D, 0xEF5D, 0xE73C, 0xE73C, 0xDEFB, 0xBDF7, 0xBDF7, 0x7BEF, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD36, 0x7350, // 0x0200 (512) +0xFFFF, 0xDEDB, 0x8C51, 0x94B2, 0x738E, 0x632C, 0x73AE, 0xCE79, 0xF7BE, 0x7BEF, 0xA514, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0210 (528) +0xE73C, 0xE71C, 0xDEFB, 0xDEDB, 0xDEDB, 0xBDD7, 0xBDF7, 0x73AE, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x9C75, 0x736F, // 0x0220 (544) +0xFFFF, 0xCE59, 0x8430, 0x94B2, 0x6B4D, 0x6B4D, 0xB596, 0xE73C, 0xEF7D, 0xFFFF, 0xFFFF, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0230 (560) +0xE73C, 0xE73C, 0xDEFB, 0xDEFB, 0xD6BA, 0xC618, 0xAD55, 0x8C71, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0x6AEF, 0x9492, // 0x0240 (576) +0xFFFF, 0xBDF7, 0x8430, 0x8C71, 0x6B6D, 0xB596, 0xE71C, 0xE73C, 0xEF5D, 0xE73C, 0xBDF7, 0xCE59, 0xF7BE, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0250 (592) +0xE73C, 0xE71C, 0xDEFB, 0xDEFB, 0xC638, 0xD69A, 0x8410, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x9474, 0x6B0E, 0xCE59, // 0x0260 (608) +0xFFFF, 0xB5B6, 0x8410, 0x9492, 0xBDD7, 0xD6BA, 0xD6BA, 0xE71C, 0xE73C, 0x8C71, 0x6B4D, 0xA514, 0xF7BE, 0xEF5D, 0xEF5D, 0xE73C, // 0x0270 (624) +0xE73C, 0xE71C, 0xDEFB, 0xDEDB, 0xCE59, 0xC618, 0x7BCF, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC5F9, 0x7B51, 0x7BEF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xB596, 0x8C71, 0xAD75, 0xBDF7, 0xCE59, 0xD69A, 0xE71C, 0xCE79, 0x8410, 0x8410, 0x9CD3, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, // 0x0290 (656) +0xE71C, 0xDEFB, 0xDEFB, 0xCE59, 0xDEDB, 0x8C71, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEBB, 0x83B2, 0x630C, 0xE73C, 0xFFFF, // 0x02A0 (672) +0xFFFF, 0xB5B6, 0x9492, 0xAD55, 0xBDD7, 0xC638, 0xCE79, 0xDEFB, 0xB596, 0x73AE, 0x8410, 0x8410, 0xDEDB, 0xE73C, 0xE71C, 0xE71C, // 0x02B0 (688) +0xDEFB, 0xDEFB, 0xD6BA, 0xCE59, 0xC618, 0x738E, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDC, 0x8C14, 0x5ACC, 0xC658, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xC638, 0x8C51, 0xA534, 0xB5B6, 0xBDF7, 0xCE59, 0xD6BA, 0x94B2, 0x738E, 0x8410, 0x8430, 0xCE59, 0xE73C, 0xDEFB, 0xDEFB, // 0x02D0 (720) +0xDEDB, 0xDEFB, 0xBDF7, 0xDEDB, 0x73AE, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDC, 0x8BD2, 0x5ACC, 0xBDD6, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xDEDB, 0x8C51, 0xA514, 0xAD75, 0xBDD7, 0xC638, 0xC618, 0x73AE, 0x7BCF, 0x8410, 0x5ACB, 0x8C51, 0xE73C, 0xDEDB, 0xD6BA, // 0x02F0 (752) +0xDEFB, 0xBDD7, 0xD69A, 0x8C71, 0x8C51, 0xFFFF, 0xFFFF, 0xFFDE, 0xCE5A, 0x7B71, 0x62ED, 0xBDF7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xF7BE, 0x94B2, 0x94B2, 0xA534, 0xB596, 0xBDF7, 0xB596, 0x6B6D, 0x4208, 0x2945, 0x18C3, 0x6B6D, 0xDEFB, 0xD69A, 0xDEDB, // 0x0310 (784) +0xB5B6, 0xC618, 0x9CF3, 0x6B4D, 0xFFDE, 0xFFFF, 0xEF5D, 0xAD37, 0x62EE, 0x6B4D, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFDF, 0xFFFF, 0xBDF7, 0x8C51, 0xA514, 0xAD55, 0xB596, 0xBDD7, 0xA514, 0x738E, 0xA514, 0xB5B6, 0xCE59, 0xD69A, 0xDEDB, 0xB596, // 0x0330 (816) +0xBDF7, 0xA534, 0x6B4C, 0xEF5D, 0xF79E, 0xBDB8, 0x7370, 0x5AAC, 0x8C71, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xF79E, 0x94B2, 0x94B2, 0xA534, 0xAD55, 0xB5B6, 0xA534, 0xBDD7, 0xD69A, 0xCE59, 0xCE79, 0xCE59, 0xA534, 0x8430, // 0x0350 (848) +0x738E, 0x3186, 0x7BB0, 0x8C33, 0x7370, 0x62ED, 0x8410, 0xCE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x8C71, 0x9CD3, 0xAD55, 0xB596, 0xBDD7, 0xBDD7, 0xBDF7, 0xC618, 0xB5B6, 0xA534, 0xA534, 0x632C, // 0x0370 (880) +0x6B6D, 0xB5B6, 0xAD76, 0xAD76, 0xBE17, 0xE71B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x94B2, 0x8C51, 0x94B2, 0xA534, 0xAD55, 0xAD55, 0x9CD3, 0x8C71, 0x73AE, 0x632C, 0xA534, // 0x0390 (912) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xCE59, 0xA514, 0x8430, 0x7BCF, 0x738E, 0x73AE, 0x8410, 0xA534, 0xEF7D, 0xFFFF, // 0x03B0 (944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xE73C, 0xE71C, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/tux.c b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/tux.c new file mode 100644 index 0000000..7fefd80 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Bitmap_128x128/tux.c @@ -0,0 +1,264 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: tux_64x64.png +// Time generated: 14.10.2010 21:56:38 +// Dimensions : 64x64 pixels +// Size : 8 192 Bytes + +const unsigned short tux[0x1000] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE79, 0x9CF3, 0x7BCF, 0x738E, 0x738E, // 0x0020 (32) +0x6B6D, 0x94B2, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE79, 0x6B4D, 0x5ACB, 0x8410, 0x9CF3, 0x9CF3, 0x9CF3, // 0x0060 (96) +0x9CD3, 0x73AE, 0x4208, 0x5ACB, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA514, 0x3186, 0x8C51, 0xBDF7, 0xC618, 0xBDF7, 0xBDF7, 0xBDF7, // 0x00A0 (160) +0xBDF7, 0xC618, 0xBDD7, 0x738E, 0x18C3, 0x8C51, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00B0 (176) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xBDD7, 0x10A2, 0x8C71, 0x9CF3, 0x8C71, 0x8C71, 0x8C71, 0x8C71, 0x8C71, // 0x00E0 (224) +0x8C71, 0x8C51, 0x8C51, 0x9CF3, 0x73AE, 0x0000, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0110 (272) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x2945, 0x31A6, 0x7BCF, 0x6B4D, 0x6B6D, 0x6B6D, 0x6B6D, 0x6B6D, 0x6B6D, // 0x0120 (288) +0x6B6D, 0x6B6D, 0x6B6D, 0x6B4D, 0x73AE, 0x2124, 0x0000, 0xAD55, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0130 (304) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0150 (336) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xC638, 0x0000, 0x31A6, 0x52AA, 0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x4A69, // 0x0160 (352) +0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x528A, 0x2104, 0x0000, 0x2965, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C71, 0x0000, 0x1082, 0x3186, 0x3186, 0x3186, 0x3186, 0x3186, 0x3186, 0x3186, // 0x01A0 (416) +0x3186, 0x3186, 0x3186, 0x3186, 0x2965, 0x0020, 0x0000, 0x0000, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01D0 (464) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x630C, 0x0000, 0x0000, 0x0861, 0x18C3, 0x10A2, 0x10A2, 0x10A2, 0x10A2, 0x18C3, // 0x01E0 (480) +0x1082, 0x0841, 0x1082, 0x10A2, 0x0020, 0x0000, 0x0000, 0x0000, 0x528A, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01F0 (496) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0210 (528) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x4A49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0220 (544) +0x0861, 0x3186, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0230 (560) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0250 (592) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x39C7, 0x0000, 0x3186, 0xAD75, 0x8C51, 0x0841, 0x0000, 0x0000, 0x0000, 0x4208, // 0x0260 (608) +0xD6BA, 0xFFDF, 0xE71C, 0x630C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0270 (624) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0290 (656) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x39C7, 0x0000, 0xCE59, 0xFFFF, 0xFFFF, 0x94B2, 0x0000, 0x0000, 0x10A2, 0xE73C, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x94B2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02B0 (688) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02D0 (720) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2965, 0x18E3, 0xDEDB, 0x7BCF, 0xAD75, 0xEF5D, 0x2944, 0x0000, 0x5ACA, 0xFFFF, // 0x02E0 (736) +0xAD55, 0x94B2, 0xAD55, 0xF7BE, 0x8410, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x39E7, 0x2945, 0xA514, 0x9CF3, 0x8C71, 0xD6BB, 0x39C9, 0x0000, 0x632E, 0xF7DF, // 0x0320 (800) +0x7BEF, 0xAD54, 0x7BEF, 0xBDF7, 0xB596, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C71, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x4A49, 0x18C3, 0x9492, 0x39E7, 0x3187, 0xA48F, 0x8323, 0x5A00, 0x93A6, 0xCDD5, // 0x0360 (864) +0x4209, 0x4249, 0x2965, 0x9CD2, 0xB575, 0x0000, 0x0000, 0x0000, 0x0000, 0x9492, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x5ACB, 0x0000, 0x9D14, 0x2905, 0x6A40, 0xE643, 0xFFAE, 0xFFF3, 0xFF70, 0xDD86, // 0x03A0 (928) +0x7240, 0x1840, 0x18C3, 0xC65A, 0x73CF, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x738E, 0x0000, 0x5A6A, 0xD566, 0xFF66, 0xFFF8, 0xFFFD, 0xFFDC, 0xFFFD, 0xFFFA, // 0x03E0 (992) +0xFF0E, 0xE566, 0xC464, 0xC4CC, 0x2103, 0x0000, 0x0000, 0x0000, 0x0000, 0x6B6D, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0410 (1040) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7BEF, 0x0800, 0xB440, 0xFFC6, 0xFFF3, 0xFFB4, 0xFFB2, 0xFF92, 0xFF72, 0xFF53, // 0x0420 (1056) +0xFF55, 0xFF75, 0xFEF0, 0xF542, 0x8240, 0x0000, 0x0000, 0x0000, 0x0000, 0x4228, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0430 (1072) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0440 (1088) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0450 (1104) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8432, 0x4140, 0xFFE2, 0xFFEB, 0xFFAC, 0xFF8B, 0xFF4C, 0xFF2C, 0xFEEC, 0xFECB, // 0x0460 (1120) +0xFE6A, 0xFE08, 0xFDA7, 0xFDC3, 0xA320, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0470 (1136) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0490 (1168) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x9D14, 0x28A0, 0xF6E0, 0xFFE1, 0xFF43, 0xFF04, 0xFEC4, 0xFE84, 0xFE23, 0xFDE1, // 0x04A0 (1184) +0xFD60, 0xFD20, 0xFD20, 0xFD20, 0x7241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04B0 (1200) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04C0 (1216) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04D0 (1232) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xB5B6, 0x0000, 0xC4A9, 0xFEC0, 0xFF00, 0xFEA0, 0xFE40, 0xFE00, 0xFDA0, 0xFD60, // 0x04E0 (1248) +0xFD40, 0xFD20, 0xEC80, 0xDCC7, 0x8C0F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04F0 (1264) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0500 (1280) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0510 (1296) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xAD75, 0x0000, 0xD69B, 0xF631, 0xF5C0, 0xFE80, 0xFE00, 0xFDC0, 0xFD60, 0xFD40, // 0x0520 (1312) +0xFCC0, 0xDC86, 0xCD93, 0xE73D, 0xE71C, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0530 (1328) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0540 (1344) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0550 (1360) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x632C, 0x0000, 0xD6BA, 0xFFFF, 0xF5F1, 0xFD40, 0xFD80, 0xFD20, 0xFCE0, 0xECA3, // 0x0560 (1376) +0xDD6F, 0xE6FC, 0xFFFF, 0xFFFF, 0xFFFF, 0x632C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ACB, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0570 (1392) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0580 (1408) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0590 (1424) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xDEDB, 0x0861, 0x0000, 0xD69A, 0xFFFF, 0xFFFF, 0xFED8, 0xF631, 0xF610, 0xE5F2, 0xE6B9, // 0x05A0 (1440) +0xF7BF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xE71C, 0x10A2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05B0 (1456) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05C0 (1472) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05D0 (1488) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x39E7, 0x0000, 0x4228, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7FF, 0xF7DF, 0xFFFF, // 0x05E0 (1504) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3186, 0xEF7D, 0xFFFF, 0xFFFF, // 0x05F0 (1520) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0600 (1536) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0610 (1552) +0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x738E, 0x0000, 0x18C3, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0620 (1568) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFFF, 0xCE59, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6B4D, 0xFFFF, 0xFFFF, // 0x0630 (1584) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0640 (1600) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0650 (1616) +0xFFFF, 0xFFDF, 0xFFFF, 0xA514, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0660 (1632) +0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0x2965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAD55, 0xFFFF, // 0x0670 (1648) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0680 (1664) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0690 (1680) +0xFFDF, 0xFFFF, 0xD69A, 0x0861, 0x0000, 0x2945, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06A0 (1696) +0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xFFFF, 0x7BCF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C3, 0xD6BA, // 0x06B0 (1712) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06C0 (1728) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06D0 (1744) +0xFFFF, 0xFFDF, 0x39C7, 0x0000, 0x0000, 0x8430, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06E0 (1760) +0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xFFFF, 0xCE79, 0x0841, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4228, // 0x06F0 (1776) +0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0700 (1792) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x0710 (1808) +0xFFFF, 0x94B2, 0x0000, 0x0020, 0x0020, 0xCE79, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x0720 (1824) +0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xFFDF, 0x4A69, 0x0000, 0x0841, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, // 0x0730 (1840) +0x8C71, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0740 (1856) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0750 (1872) +0xEF7D, 0x2104, 0x0020, 0x0000, 0x3186, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, // 0x0760 (1888) +0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xFFFF, 0xB5B6, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, // 0x0770 (1904) +0x10A2, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0780 (1920) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, // 0x0790 (1936) +0x8C71, 0x0000, 0x0861, 0x0000, 0x7BCF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x07A0 (1952) +0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xFFDF, 0x528A, 0x0000, 0x0841, 0x0020, 0x0020, 0x0020, 0x0020, // 0x07B0 (1968) +0x0000, 0x630C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x07C0 (1984) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, // 0x07D0 (2000) +0x3186, 0x0000, 0x0841, 0x10A2, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x07E0 (2016) +0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xEF5D, 0xF7BE, 0xBDD7, 0x0841, 0x0861, 0x0841, 0x0841, 0x0841, 0x0020, // 0x07F0 (2032) +0x0020, 0x1082, 0xC638, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0800 (2048) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBDD7, // 0x0810 (2064) +0x0020, 0x1082, 0x0000, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, // 0x0820 (2080) +0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF7D, 0x4208, 0x0020, 0x0861, 0x0861, 0x0841, 0x0841, // 0x0830 (2096) +0x0841, 0x0000, 0x630C, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0840 (2112) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x6B4D, // 0x0850 (2128) +0x0000, 0x0861, 0x2104, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, // 0x0860 (2144) +0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xE73C, 0xF7BE, 0x8430, 0x0000, 0x1082, 0x0861, 0x0861, 0x0861, // 0x0870 (2160) +0x0861, 0x0020, 0x18C3, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0880 (2176) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x2124, // 0x0890 (2192) +0x0861, 0x0020, 0x8410, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, // 0x08A0 (2208) +0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xEF7D, 0xB5B6, 0x0861, 0x1082, 0x1082, 0x0861, 0x0861, // 0x08B0 (2224) +0x0861, 0x0861, 0x0000, 0x8430, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x08C0 (2240) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xA514, 0x0020, // 0x08D0 (2256) +0x10A2, 0x1082, 0xD69A, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, // 0x08E0 (2272) +0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xEF5D, 0xCE79, 0x2124, 0x1082, 0x10A2, 0x1082, 0x1082, // 0x08F0 (2288) +0x0861, 0x1082, 0x0000, 0x4208, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0900 (2304) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x4208, 0x0861, // 0x0910 (2320) +0x1082, 0x31A6, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, // 0x0920 (2336) +0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEDB, 0x39C7, 0x1082, 0x10A2, 0x10A2, 0x1082, // 0x0930 (2352) +0x1082, 0x1082, 0x0841, 0x18C3, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0940 (2368) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA534, 0x0841, 0x18C3, // 0x0950 (2384) +0x0841, 0x630C, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, // 0x0960 (2400) +0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xDEFB, 0xE73C, 0x4A49, 0x0861, 0x18C3, 0x10A2, 0x10A2, // 0x0970 (2416) +0x10A2, 0x1082, 0x1082, 0x0841, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0980 (2432) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x3186, 0x1082, 0x18E3, // 0x0990 (2448) +0x0861, 0x94B2, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, // 0x09A0 (2464) +0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEDB, 0xE73C, 0x4A69, 0x1082, 0x18E3, 0x18C3, 0x10A2, // 0x09B0 (2480) +0x10A2, 0x10A2, 0x10A2, 0x0020, 0x73AE, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x09C0 (2496) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0841, 0x18E3, 0x18E3, // 0x09D0 (2512) +0x0861, 0xAD75, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, // 0x09E0 (2528) +0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEDB, 0xE73C, 0x52AA, 0x10A2, 0x2104, 0x18E3, 0x18C3, // 0x09F0 (2544) +0x18C3, 0x18C3, 0x10A2, 0x0841, 0x630C, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A00 (2560) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x632C, 0x0861, 0x18E4, 0x18E4, // 0x0A10 (2576) +0x1082, 0xC638, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, // 0x0A20 (2592) +0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xD6BA, 0xE71C, 0x6B4D, 0x10A2, 0x18C3, 0x18C3, 0x10A2, // 0x0A30 (2608) +0x10A2, 0x10A2, 0x18C3, 0x0861, 0x5AEB, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A40 (2624) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8410, 0x0862, 0x3143, 0x2924, // 0x0A50 (2640) +0x0882, 0xBDD7, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0A60 (2656) +0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xE73C, 0x630C, 0x2103, 0x4A69, 0x632C, 0x6B4D, // 0x0A70 (2672) +0x528A, 0x2965, 0x18C3, 0x1081, 0x738E, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A80 (2688) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x7A40, 0xECA0, 0xCC00, // 0x0A90 (2704) +0x3941, 0xA535, 0xFFFF, 0xF7BE, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, // 0x0AA0 (2720) +0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEFB, 0xD6DB, 0xCE38, 0xC618, 0x4A48, 0x4A49, 0x6B6D, 0x6B4D, 0x6B4D, // 0x0AB0 (2736) +0x6B4D, 0x630C, 0x3186, 0x18E4, 0x9492, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0AC0 (2752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xC488, 0xFD41, 0xFE6D, 0xFE6A, // 0x0AD0 (2768) +0xDC60, 0x5A25, 0xB5D8, 0xFFFF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, // 0x0AE0 (2784) +0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xD6BB, 0xBCAB, 0xD462, 0xD462, 0x49E4, 0x10C3, 0x18C3, 0x18C3, 0x18C3, // 0x0AF0 (2800) +0x18C3, 0x18E3, 0x10A3, 0x49C4, 0xB575, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B00 (2816) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCD70, 0xECA0, 0xFF14, 0xFF9B, 0xFF7B, // 0x0B10 (2832) +0xFECF, 0xC3A0, 0x3143, 0x9CF3, 0xFFFF, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, // 0x0B20 (2848) +0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEFB, 0xC617, 0xDC60, 0xFD60, 0xFD20, 0x3120, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B30 (2864) +0x0000, 0x0000, 0x3900, 0xE460, 0xB46A, 0xEF9F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B40 (2880) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD5F4, 0xDC20, 0xFE8E, 0xFF59, 0xFF36, 0xFF36, // 0x0B50 (2896) +0xFF59, 0xFE6B, 0xA300, 0x18E4, 0x8410, 0xFFBE, 0xF7BE, 0xEF7D, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, // 0x0B60 (2912) +0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEBA, 0xDEFB, 0xC5B5, 0xE4A1, 0xFEF2, 0xF716, 0x3164, 0x18E4, 0x2103, 0x1082, 0x1082, // 0x0B70 (2928) +0x0021, 0x1061, 0xD5D0, 0xFE27, 0xB3E3, 0xCE9B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B80 (2944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77D, 0xE697, 0xDDAF, 0xD4C8, 0xE480, 0xFE29, 0xFF36, 0xFF15, 0xFF35, 0xFF15, // 0x0B90 (2960) +0xFF15, 0xFF36, 0xFDA5, 0x6A42, 0x1905, 0x6B4C, 0xE73C, 0xFFDF, 0xEF5D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, // 0x0BA0 (2976) +0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, 0xDEDB, 0xBDB5, 0xE4C3, 0xFF56, 0xFFDB, 0xAD10, 0x10A2, 0x10C3, 0x18E4, 0x1082, // 0x0BB0 (2992) +0x2922, 0xC5B1, 0xFFDC, 0xFED1, 0xB3A2, 0xBE19, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0BC0 (3008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE6B8, 0xD484, 0xE4C0, 0xF584, 0xFE28, 0xFECF, 0xFF14, 0xFF13, 0xFF13, 0xFF13, 0xFF13, // 0x0BD0 (3024) +0xFF13, 0xFF14, 0xFEF0, 0xDC80, 0x41C5, 0x2945, 0x5269, 0xCE59, 0xF7BE, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, // 0x0BE0 (3040) +0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, 0xD69A, 0xD6DB, 0xBD95, 0xE4E2, 0xFF33, 0xFF36, 0xFF97, 0xDDF1, 0x8B66, 0x7AE4, 0x9BC7, // 0x0BF0 (3056) +0xEEB2, 0xFF97, 0xFF37, 0xFEF0, 0xC3E0, 0xB5B7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C00 (3072) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD52B, 0xFD60, 0xFECD, 0xFF33, 0xFF13, 0xFF12, 0xFEF1, 0xFEF1, 0xFEF1, 0xFEF1, 0xFEF1, // 0x0C10 (3088) +0xFEF1, 0xFEF1, 0xFF12, 0xFE69, 0x9B41, 0x31A8, 0x31A6, 0x39E7, 0xB5B6, 0xF79E, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, // 0x0C20 (3104) +0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD699, 0xD6BA, 0xBD94, 0xE502, 0xFF12, 0xFF15, 0xFEF4, 0xFF55, 0xFF95, 0xFF54, 0xFF95, // 0x0C30 (3120) +0xFF35, 0xFEF4, 0xFF14, 0xFF14, 0xF5A4, 0xB426, 0xE75E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C40 (3136) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD54C, 0xFDA0, 0xFECE, 0xFEF0, 0xFECF, 0xFEEF, 0xFEEF, 0xFEF0, 0xFEEF, 0xFEF0, 0xFEF0, // 0x0C50 (3152) +0xFEF0, 0xFEEF, 0xFEF0, 0xFEEF, 0xF582, 0x6244, 0x39E8, 0x39C6, 0x528A, 0xE71C, 0xE73C, 0xE71C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, // 0x0C60 (3168) +0xDEDB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, 0xCE79, 0xCE9A, 0xBD94, 0xE522, 0xFF10, 0xFEF2, 0xFEF2, 0xFEF2, 0xFEF2, 0xFEF2, 0xFEF2, // 0x0C70 (3184) +0xFEF2, 0xFF12, 0xFEF2, 0xFEF2, 0xFF12, 0xED85, 0xBC68, 0xE73D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C80 (3200) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD5B0, 0xF580, 0xFECB, 0xFEEE, 0xFECD, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, // 0x0C90 (3216) +0xFEEE, 0xFEEE, 0xFECD, 0xFECE, 0xFECA, 0xCC60, 0x41C7, 0x39C7, 0x4228, 0xCE79, 0xEF5D, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, // 0x0CA0 (3232) +0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, 0xCE79, 0xCE59, 0xCE9A, 0xBD73, 0xED42, 0xFF0F, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, // 0x0CB0 (3248) +0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFF31, 0xF628, 0xC4A7, 0xDE57, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0CC0 (3264) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDE13, 0xF560, 0xFEC9, 0xFECD, 0xFECC, 0xFECC, 0xFECC, 0xFECC, 0xFECC, 0xFECC, 0xFECC, // 0x0CD0 (3280) +0xFEEC, 0xFEEC, 0xFECC, 0xFECC, 0xFEED, 0xFE44, 0x9323, 0x52CC, 0x73AE, 0xD69A, 0xE73C, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, // 0x0CE0 (3296) +0xD6BA, 0xD6BA, 0xD69A, 0xCE79, 0xCE59, 0xD69A, 0xB5D8, 0x7B28, 0xF5A2, 0xFF0F, 0xFECE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, // 0x0CF0 (3312) +0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFECD, 0xFF10, 0xFEA9, 0xCC60, 0xD615, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D00 (3328) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDE55, 0xED80, 0xFEA4, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFEC9, // 0x0D10 (3344) +0xFEA7, 0xFEA6, 0xFEA8, 0xFEC9, 0xFECB, 0xFEEA, 0xEDA2, 0xB4F0, 0xCE9A, 0xDEFB, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, // 0x0D20 (3360) +0xD6BA, 0xD69A, 0xCE79, 0xCE79, 0xD6BA, 0xB596, 0x4A8B, 0x72A4, 0xFE45, 0xFEEC, 0xFECC, 0xFEEC, 0xFEEC, 0xFEEC, 0xFEEC, 0xFEEC, // 0x0D30 (3376) +0xFEEC, 0xFECB, 0xFECB, 0xFEEC, 0xFEEC, 0xFEEC, 0xFECC, 0xFEA5, 0xFDE0, 0xAC8B, 0xE75E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D40 (3392) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE632, 0xF5E0, 0xFE80, 0xFE82, 0xFEC7, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC7, 0xFEA4, 0xFE61, // 0x0D50 (3408) +0xFE60, 0xFE60, 0xFE60, 0xFE61, 0xFE83, 0xFEA6, 0xFEA3, 0xDD22, 0xD658, 0xE75D, 0xDEDB, 0xDEDB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, // 0x0D60 (3424) +0xD69A, 0xD69A, 0xD6BA, 0xCE59, 0x9492, 0x5289, 0x39E9, 0x9B84, 0xFEA3, 0xFEEB, 0xFEEA, 0xFEEA, 0xFEEA, 0xFEEA, 0xFEEA, 0xFEC8, // 0x0D70 (3440) +0xFE84, 0xFE61, 0xFE61, 0xFEA5, 0xFEC9, 0xFEA7, 0xFEA2, 0xFE80, 0xBC41, 0x8C0F, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D80 (3456) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDDCE, 0xFE40, 0xFEA0, 0xFE80, 0xFE80, 0xFEA2, 0xFEA2, 0xFEA2, 0xFEA0, 0xFE80, 0xFE80, // 0x0D90 (3472) +0xFEA0, 0xFEA0, 0xFEA0, 0xFE80, 0xFE80, 0xFE80, 0xFE80, 0xFE80, 0xCCE5, 0xD69A, 0xE73C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, // 0x0DA0 (3488) +0xD69A, 0xBDF7, 0x9CD3, 0x630C, 0x4228, 0x4A69, 0x422A, 0xB423, 0xFEC0, 0xFEA5, 0xFEE7, 0xFEC7, 0xFEC7, 0xFEC6, 0xFEA3, 0xFE80, // 0x0DB0 (3504) +0xFE80, 0xFE80, 0xFE80, 0xFE60, 0xFEA0, 0xFEC0, 0xEDC0, 0xA3A4, 0x732C, 0xAD96, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0DC0 (3520) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE5A8, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0DD0 (3536) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, 0xF640, 0x93A8, 0x8C72, 0xA534, 0xAD75, 0xA534, 0x9CF3, 0x8C51, // 0x0DE0 (3552) +0x738E, 0x5ACB, 0x4A49, 0x4A69, 0x528A, 0x4A8A, 0x5249, 0xD502, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC1, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, // 0x0DF0 (3568) +0xFEA0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFE60, 0xC482, 0x7B09, 0x7BD0, 0xB5B7, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E00 (3584) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDD8A, 0xFEC0, 0xFF20, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, // 0x0E10 (3600) +0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEC0, 0xFF20, 0xAC02, 0x4209, 0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x4A69, // 0x0E20 (3616) +0x528A, 0x528A, 0x52AA, 0x52AA, 0x528A, 0x4A8A, 0x5A69, 0xE5C1, 0xFF00, 0xFEC0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, // 0x0E30 (3632) +0xFEC0, 0xFEE0, 0xFF00, 0xE561, 0x9367, 0x736E, 0x9D14, 0xD6BA, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E40 (3648) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD617, 0xCCC5, 0xF620, 0xFEE0, 0xFF40, 0xFF40, 0xFF40, 0xFF20, 0xFF00, 0xFF00, 0xFF00, // 0x0E50 (3664) +0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF40, 0xB483, 0x4A8B, 0x5ACA, 0x5ACB, 0x5ACB, 0x5ACB, 0x5ACB, // 0x0E60 (3680) +0x5ACB, 0x52AA, 0x52AA, 0x52AA, 0x52AA, 0x4A8A, 0x6289, 0xEE20, 0xFF20, 0xFEE0, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFEE0, // 0x0E70 (3696) +0xFF20, 0xFEC0, 0xBC64, 0x732B, 0x8C72, 0xCE58, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E80 (3712) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7E, 0xB576, 0x93EE, 0xA408, 0xC4A5, 0xDD63, 0xF641, 0xFEC0, 0xFF40, 0xFF80, 0xFF60, // 0x0E90 (3728) +0xFF40, 0xFF20, 0xFF20, 0xFF40, 0xFF40, 0xFF40, 0xFF20, 0xFF20, 0xFF80, 0xAC03, 0x4A6B, 0x5ACA, 0x5ACB, 0x5ACB, 0x5AEB, 0x5AEB, // 0x0EA0 (3744) +0x5AEB, 0x630C, 0x630C, 0x630C, 0x5AEB, 0x52CB, 0x5A69, 0xE5E1, 0xFF60, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF60, // 0x0EB0 (3760) +0xF640, 0xA3A7, 0x738F, 0xAD96, 0xE71C, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0EC0 (3776) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0xD6DB, 0xB5B8, 0x9CD4, 0x9431, 0x93EE, 0x9C0A, 0xB467, 0xD544, 0xF660, // 0x0ED0 (3792) +0xFF60, 0xFFA0, 0xFF80, 0xFF60, 0xFF40, 0xFF40, 0xFF60, 0xFFA0, 0xD521, 0x730A, 0x73CF, 0x8C71, 0x9CD3, 0x9CF3, 0xA514, 0xA534, // 0x0EE0 (3808) +0xAD55, 0xB596, 0xB5B6, 0xB596, 0xAD55, 0x9CF3, 0x83F0, 0xCD04, 0xFFA0, 0xFF40, 0xFF40, 0xFF40, 0xFF40, 0xFF40, 0xFFA0, 0xF621, // 0x0EF0 (3824) +0x8B49, 0x8431, 0xCE58, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F00 (3840) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF79E, 0xE73C, 0xD6BB, 0xBE19, 0xA556, 0x9472, 0x9C0D, // 0x0F10 (3856) +0xB447, 0xDD82, 0xFEE0, 0xFFA0, 0xFFC0, 0xFFC0, 0xFF80, 0xC4C2, 0x730C, 0x9CF4, 0xD69A, 0xEF5D, 0xEF7D, 0xF79E, 0xF79E, 0xF7BE, // 0x0F20 (3872) +0xF7BE, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xEF7D, 0xDF1C, 0xC530, 0xF620, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFF80, 0xE5A2, 0x834A, // 0x0F30 (3888) +0x8C93, 0xDEDA, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F40 (3904) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDE, 0xEF7D, 0xD6BB, // 0x0F50 (3920) +0xAD77, 0x9452, 0x9BEB, 0xB466, 0xC524, 0xC543, 0xA3E5, 0x734D, 0xAD76, 0xEF5C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F60 (3936) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1C, 0xACB0, 0xBCA6, 0xD544, 0xCD64, 0xCD05, 0xAC07, 0x7B6D, 0x9CF4, // 0x0F70 (3952) +0xE6FB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F80 (3968) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F90 (3984) +0xFFDE, 0xE75D, 0xC65A, 0xA536, 0x9493, 0x8C53, 0x94B4, 0xBE18, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FA0 (4000) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xDEFC, 0xAD57, 0x9493, 0x8C73, 0x8C73, 0x94D4, 0xBE18, 0xEF5D, // 0x0FB0 (4016) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FC0 (4032) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FD0 (4048) +0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xEF5C, 0xE73C, 0xEF5C, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FE0 (4064) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xEF5C, 0xE73C, 0xEF5C, 0xEF7D, 0xFFDE, 0xFFFF, // 0x0FF0 (4080) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1000 (4096) +}; diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_CPLD_PageSwitching/UTFT_CPLD_PageSwitching.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_CPLD_PageSwitching/UTFT_CPLD_PageSwitching.ino new file mode 100644 index 0000000..8cee78e --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_CPLD_PageSwitching/UTFT_CPLD_PageSwitching.ino @@ -0,0 +1,93 @@ +// UTFT_CPLD_PageSwitching (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of page switching on CPLD-based display modules.. +// +// This demo was made for modules with a screen resolution +// of 800x480 pixels. +// +// This program requires the UTFT library. +// +// NOTE: The display will be black for a short while during the start +// + +#include + +// Declare which fonts we will be using +extern uint8_t BigFont[]; +extern uint8_t SevenSegNumFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(EHOUSE50CPLD,22,23,31,33); + +void setup() +{ + myGLCD.InitLCD(); +} + +void loop() +{ + myGLCD.setBackColor(VGA_TRANSPARENT); + + myGLCD.setBrightness(0); + for (byte pg=0; pg<8; pg++) + { + myGLCD.setWritePage(pg); + myGLCD.clrScr(); + for (int ln=0; ln<480; ln+=2) + { + switch (pg) + { + case 0: + myGLCD.setColor(ln/2, 0, 0); + break; + case 1: + myGLCD.setColor(0, ln/2, 0); + break; + case 2: + myGLCD.setColor(0, 0, ln/2); + break; + case 3: + myGLCD.setColor(ln/4, ln/2, 0); + break; + case 4: + myGLCD.setColor(0, ln/2, ln/2); + break; + case 5: + myGLCD.setColor(ln/2, 0, ln/2); + break; + case 6: + myGLCD.setColor(ln/2, ln/2, 0); + break; + case 7: + myGLCD.setColor(0, ln/2, ln/4); + break; + } + myGLCD.drawLine(0, ln, 799, ln); + myGLCD.drawLine(0, ln+1, 799, ln+1); + } + myGLCD.setColor(VGA_WHITE); + myGLCD.setFont(BigFont); + myGLCD.print("This is page:", CENTER, 200); + myGLCD.setFont(SevenSegNumFont); + myGLCD.printNumI(pg, CENTER, 240); + } + myGLCD.setBrightness(16); + + while(1) + { + for (byte pg=0; pg<8; pg++) + { + myGLCD.setDisplayPage(pg); + delay(500); + } + } +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_128x128_Serial/UTFT_Demo_128x128_Serial.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_128x128_Serial/UTFT_Demo_128x128_Serial.ino new file mode 100644 index 0000000..de371d9 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_128x128_Serial/UTFT_Demo_128x128_Serial.ino @@ -0,0 +1,335 @@ +// UTFT_Demo_128x128_Serial (C)2013 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made to work on the 128x128 modules. +// Any other size displays may cause strange behaviour. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Declare an instance of the class +UTFT myGLCD(LPH9135,6,5,2,3,4); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(PORTRAIT); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + byte buf[126]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + myGLCD.setContrast(64); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0,0,127,12); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0,117,127,127); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255,0,0); + myGLCD.print("Universal TFT", CENTER, 0); + myGLCD.setBackColor(64,64,64); + myGLCD.setColor(255,255,0); + myGLCD.print("H.Karlsen", LEFT, 116); + myGLCD.print("(C)2013", RIGHT, 116); + myGLCD.setColor(0,255,0); + myGLCD.drawRect(0,13,127,116); + +// Draw crosshairs + myGLCD.setColor(0,0,255); + myGLCD.drawLine(63,14,63,115); + myGLCD.drawLine(1,63,126,63); + for (int i=3; i<128; i+=10) + myGLCD.drawLine(i, 61, i, 65); + for (int i=14; i<118; i+=10) + myGLCD.drawLine(61, i, 65, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.setBackColor(0,0,0); + myGLCD.print("Sin", 2, 14); + for (int i=1; i<126; i++) + { + myGLCD.drawPixel(i,63+(sin(((i*2.85)*3.14)/180)*45)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 2, 26); + for (int i=1; i<126; i++) + { + myGLCD.drawPixel(i,63+(cos(((i*2.85)*3.14)/180)*45)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 2, 38); + for (int i=1; i<126; i++) + { + myGLCD.drawPixel(i,63+(tan(((i*2.85)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + myGLCD.setColor(0,0,255); + myGLCD.drawLine(63,14,63,115); + myGLCD.drawLine(1,63,126,63); + +// Draw a moving sinewave + x=1; + for (int i=1; i<3654; i++) + { + x++; + if (x==127) + x=1; + if (i>127) + { + if ((x==63)||(buf[x-1]==63)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=63+(sin(((i*1.3)*3.14)/180)*45); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + delay(1); + } + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(10+(i*10),10+(i*10), 60+(i*10), 60+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(70-(i*10),10+(i*10), 120-(i*10), 60+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(30+(i*10),35+(i*10), 25); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + + // Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=11; i<115; i+=3) + { + myGLCD.drawLine(1, i, i-10, 115); + } + myGLCD.setColor (255,0,0); + for (int i=112; i>14; i-=3) + { + myGLCD.drawLine(126, i, i+14, 14); + } + myGLCD.setColor (0,255,255); + for (int i=115; i>14; i-=3) + { + myGLCD.drawLine(1, i, 116-i, 14); + } + myGLCD.setColor (0,255,255); + for (int i=14; i<115; i+=3) + { + myGLCD.drawLine(126, i, 140-i, 115); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(85); + y=35+random(59); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(124); + y=15+random(101); + x2=2+random(124); + y2=15+random(101); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(124); + y=15+random(101); + x2=2+random(124); + y2=15+random(101); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random lines + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(124); + y=15+random(101); + x2=2+random(124); + y2=15+random(101); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random pixels + for (int i=0; i<5000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(124), 15+random(101)); + } + + delay (2000); + +// Set up the "Finished"-screen + myGLCD.setContrast(0); + myGLCD.fillScr(0,0,255); + myGLCD.setColor(255,0,0); + myGLCD.fillRoundRect(2, 40, 125, 88); + + myGLCD.setColor(255,255,255); + myGLCD.setBackColor(255,0,0); + myGLCD.print("That's it!", CENTER, 46); + myGLCD.print("Restarting in a", CENTER, 66); + myGLCD.print("few seconds...", CENTER, 76); + + myGLCD.setColor(0,0,0); + myGLCD.setBackColor(0,0,255); + myGLCD.print("Runtime: (msecs)", CENTER, 108); + myGLCD.printNumI(millis(), CENTER, 118); + + myGLCD.setContrast(64); + + delay (10000); + +// Fade screen to black + for (int i=64; i>0; i--) + { + myGLCD.setContrast(i); + delay(100); + } +} + + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_160x128_Serial/UTFT_Demo_160x128_Serial.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_160x128_Serial/UTFT_Demo_160x128_Serial.ino new file mode 100644 index 0000000..5ff7106 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_160x128_Serial/UTFT_Demo_160x128_Serial.ino @@ -0,0 +1,328 @@ +// UTFT_Demo_160x128_Serial (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 160x128 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Usage: myGLCD(, SDA, SCL, CS, RST[, RS]); +// +// When using the DM-TFT18-101 and shield from DisplayModule you should use the following: +// UTFT myGLCD(DMTFT18101,2,3,4,6,5); +// +UTFT myGLCD(ITDB18SP,19,18,0,16,17); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[158]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 159, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 114, 159, 127); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("Universal TFT Lib.", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("H.Karlsen", LEFT, 114); + myGLCD.print("(C)2014", RIGHT, 114); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 13, 159, 113); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(79, 14, 79, 113); + myGLCD.drawLine(1, 63, 158, 63); + + for (int i=9; i<150; i+=10) + myGLCD.drawLine(i, 61, i, 65); + for (int i=19; i<110; i+=10) + myGLCD.drawLine(77, i, 81, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<158; i++) + { + myGLCD.drawPixel(i,63+(sin(((i*2.27)*3.14)/180)*40)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<158; i++) + { + myGLCD.drawPixel(i,63+(cos(((i*2.27)*3.14)/180)*40)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<158; i++) + { + myGLCD.drawPixel(i,63+(tan(((i*2.27)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(79, 14, 79, 113); + myGLCD.drawLine(1, 63, 158, 63); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(158*20); i++) + { + x++; + if (x==159) + x=1; + if (i>159) + { + if ((x==79)||(buf[x-1]==63)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=63+(sin(((i*2.5)*3.14)/180)*(40-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(39+(i*10), 23+(i*10), 59+(i*10), 43+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(99-(i*10), 23+(i*10), 119-(i*10), 43+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(49+(i*10),33+(i*10), 15); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=14; i<113; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 112); + } + myGLCD.setColor (255,0,0); + for (int i=112; i>15; i-=5) + { + myGLCD.drawLine(158, i, (i*1.44)-12, 14); + } + myGLCD.setColor (0,255,255); + for (int i=112; i>15; i-=5) + { + myGLCD.drawLine(1, i, 172-(i*1.44), 14); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<112; i+=5) + { + myGLCD.drawLine(158, i, 171-(i*1.44), 112); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(116); + y=35+random(57); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(156); + y=16+random(95); + x2=2+random(156); + y2=16+random(95); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(156); + y=16+random(95); + x2=2+random(156); + y2=16+random(95); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(156); + y=16+random(95); + x2=2+random(156); + y2=16+random(95); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + + for (int i=0; i<5000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(156), 16+random(95)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(10, 17, 149, 72); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 20); + myGLCD.print("Restarting in a", CENTER, 45); + myGLCD.print("few seconds...", CENTER, 57); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 103); + myGLCD.printNumI(millis(), CENTER, 115); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_220x176/UTFT_Demo_220x176.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_220x176/UTFT_Demo_220x176.ino new file mode 100644 index 0000000..b6b3ab2 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_220x176/UTFT_Demo_220x176.ino @@ -0,0 +1,330 @@ +// UTFT_Demo_220x176 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 220x176 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB22,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[218]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 219, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 162, 219, 175); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("** Universal TFT Library **", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("> elec.henningkarlsen.com <", CENTER, 163); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 219, 161); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + + for (int i=9; i<210; i+=10) + myGLCD.drawLine(i, 86, i, 90); + for (int i=19; i<155; i+=10) + myGLCD.drawLine(107, i, 111, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(sin(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(cos(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(tan(((i*1.65)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(218*20); i++) + { + x++; + if (x==219) + x=1; + if (i>219) + { + if ((x==109)||(buf[x-1]==88)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=88+(sin(((i*1.6)*3.14)/180)*(65-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(44+(i*15), 23+(i*15), 88+(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(132-(i*15), 23+(i*15), 172-(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(64+(i*15),43+(i*15), 20); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 160); + } + myGLCD.setColor (255,0,0); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(218, i, (i*1.44)-12, 15); + } + myGLCD.setColor (0,255,255); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(1, i, 232-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(218, i, 231-(i*1.44), 160); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(176); + y=35+random(105); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(216), 16+random(143)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(40, 57, 179, 119); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 62); + myGLCD.print("Restarting in a", CENTER, 88); + myGLCD.print("few seconds...", CENTER, 101); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 146); + myGLCD.printNumI(millis(), CENTER, 161); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_220x176_Serial/UTFT_Demo_220x176_Serial.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_220x176_Serial/UTFT_Demo_220x176_Serial.ino new file mode 100644 index 0000000..7ed75ac --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_220x176_Serial/UTFT_Demo_220x176_Serial.ino @@ -0,0 +1,323 @@ +// UTFT_Demo_220x176_Serial (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for serial modules with a screen resolution +// of 220x176 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Usage: myGLCD(, SDA, SCL, CS, RST[, RS]); +UTFT myGLCD(ITDB22SP,19,18,0,16); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[218]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 219, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 162, 219, 175); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("** Universal TFT Library **", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("> elec.henningkarlsen.com <", CENTER, 163); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 219, 161); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + + for (int i=9; i<210; i+=10) + myGLCD.drawLine(i, 86, i, 90); + for (int i=19; i<155; i+=10) + myGLCD.drawLine(107, i, 111, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(sin(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(cos(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(tan(((i*1.65)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(218*20); i++) + { + x++; + if (x==219) + x=1; + if (i>219) + { + if ((x==109)||(buf[x-1]==88)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=88+(sin(((i*1.6)*3.14)/180)*(65-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(44+(i*15), 23+(i*15), 88+(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(132-(i*15), 23+(i*15), 172-(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(64+(i*15),43+(i*15), 20); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 160); + } + myGLCD.setColor (255,0,0); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(218, i, (i*1.44)-12, 15); + } + myGLCD.setColor (0,255,255); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(1, i, 232-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(218, i, 231-(i*1.44), 160); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,161); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(176); + y=35+random(105); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(216), 16+random(143)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(40, 57, 179, 119); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 62); + myGLCD.print("Restarting in a", CENTER, 88); + myGLCD.print("few seconds...", CENTER, 101); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 146); + myGLCD.printNumI(millis(), CENTER, 161); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_320x240/UTFT_Demo_320x240.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_320x240/UTFT_Demo_320x240.ino new file mode 100644 index 0000000..ce458f3 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_320x240/UTFT_Demo_320x240.ino @@ -0,0 +1,329 @@ +// UTFT_Demo_320x240 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[318]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 319, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 319, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 319, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + for (int i=9; i<310; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(157, i, 161, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(318*20); i++) + { + x++; + if (x==319) + x=1; + if (i>319) + { + if ((x==159)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(100+(i*20),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(318, i, (i*1.44)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 331-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(318, i, 330-(i*1.44), 224); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(256); + y=45+random(146); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(209); + x2=2+random(316); + y2=16+random(209); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(316), 16+random(209)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(80, 70, 239, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_320x240_Serial/UTFT_Demo_320x240_Serial.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_320x240_Serial/UTFT_Demo_320x240_Serial.ino new file mode 100644 index 0000000..19da792 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_320x240_Serial/UTFT_Demo_320x240_Serial.ino @@ -0,0 +1,343 @@ +// UTFT_Demo_320x240_Serial (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// +// ******************************************************************** +// * IMPORTANT: Read the comments in the setup() function when * +// * using the DisplayModule DM-TFT28-105. * +// ******************************************************************** +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Usage: myGLCD(, SDA, SCL, CS, RST[, RS]); +//UTFT myGLCD(TFT01_22SP,9,8,12,11,10); // ElecFreaks TFT01-2.2SP +UTFT myGLCD(DMTFT28105,MOSI,SCK,10,NOTINUSE,9); // DisplayModule DM-TFT28-105 + +void setup() +{ +// DisplayModule +// ------------- +// The following 4 lines are needed for the DM-TFT28-105 display +// module to set the SS/CS pins for the other devices connected +// to the Arduino SPI pins. If you are using any other display +// module these lines should be commented out. +// ------------------------------------------------------------- + pinMode(10,OUTPUT); digitalWrite(10,HIGH); // TFT SS/CE + pinMode(8, OUTPUT); digitalWrite(8, HIGH); // SD card SS/CE + pinMode(6, OUTPUT); digitalWrite(6, HIGH); // Flash chip SS/CE + pinMode(4, OUTPUT); digitalWrite(4, HIGH); // Touch controller SS/CE +// ------------------------------------------------------------- + + +// Just get some random numbers + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[318]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 319, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 319, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 319, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + for (int i=9; i<310; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(157, i, 161, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(318*20); i++) + { + x++; + if (x==319) + x=1; + if (i>319) + { + if ((x==159)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(100+(i*20),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(318, i, (i*1.44)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 331-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(318, i, 330-(i*1.44), 224); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(256); + y=45+random(146); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(209); + x2=2+random(316); + y2=16+random(209); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(316), 16+random(209)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(80, 70, 239, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_400x240/UTFT_Demo_400x240.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_400x240/UTFT_Demo_400x240.ino new file mode 100644 index 0000000..078902c --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_400x240/UTFT_Demo_400x240.ino @@ -0,0 +1,331 @@ +// UTFT_Demo_400x240 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 400x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32WD,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[398]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 399, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 399, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("*** Universal Color TFT Display Library ***", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("< http://electronics.henningkarlsen.com >", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 399, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(199, 15, 199, 224); + myGLCD.drawLine(1, 119, 398, 119); + for (int i=9; i<390; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(197, i, 201, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<398; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*0.9)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<398; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*0.9)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<398; i++) + { + y=119+(tan(((i*0.9)*3.14)/180)); + if ((y>15) && (y<224)) + myGLCD.drawPixel(i,y); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(199, 15, 199, 224); + myGLCD.drawLine(1, 119, 398, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(398*20); i++) + { + x++; + if (x==399) + x=1; + if (i>399) + { + if ((x==199)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(110+(i*20), 30+(i*20), 170+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(230-(i*20), 30+(i*20), 290-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(110+(i*30),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.77)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(398, i, (i*1.77)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 411-(i*1.77), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(398, i, 410-(i*1.77), 224); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(336); + y=45+random(146); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(396); + y=16+random(207); + x2=2+random(396); + y2=16+random(207); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(396); + y=16+random(207); + x2=2+random(396); + y2=16+random(207); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(396); + y=16+random(209); + x2=2+random(396); + y2=16+random(209); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(396), 16+random(209)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(120, 70, 279, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_480x272/UTFT_Demo_480x272.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_480x272/UTFT_Demo_480x272.ino new file mode 100644 index 0000000..41c1973 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_480x272/UTFT_Demo_480x272.ino @@ -0,0 +1,328 @@ +// UTFT_Demo_480x272 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 480x272 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB43,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[478]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 479, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 258, 479, 271); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 259); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 479, 257); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 256); + myGLCD.drawLine(1, 135, 478, 135); + for (int i=9; i<470; i+=10) + myGLCD.drawLine(i, 133, i, 138); + for (int i=15; i<256; i+=10) + myGLCD.drawLine(237, i, 241, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,135+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,135+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,135+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 256); + myGLCD.drawLine(1, 135, 478, 135); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(478*20); i++) + { + x++; + if (x==479) + x=1; + if (i>479) + { + if ((x==239)||(buf[x-1]==135)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=135+(sin(((i*1.65)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(150+(i*20), 46+(i*20), 210+(i*20), 106+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(330-(i*20), 46+(i*20), 270-(i*20), 106+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(180+(i*20),75+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<256; i+=5) + { + myGLCD.drawLine(1, i, (i*1.88)-10, 256); + } + myGLCD.setColor (255,0,0); + for (int i=256; i>15; i-=5) + { + myGLCD.drawLine(478, i, (i*1.88)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=256; i>15; i-=5) + { + myGLCD.drawLine(1, i, 491-(i*1.88), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<256; i+=5) + { + myGLCD.drawLine(478, i, 490-(i*1.88), 256); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some random circles + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(416); + y=45+random(178); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some random rectangles + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(239); + x2=2+random(476); + y2=16+random(239); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some random rounded rectangles + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(239); + x2=2+random(476); + y2=16+random(239); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(239); + x2=2+random(476); + y2=16+random(239); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(476), 16+random(239)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(160, 70, 319, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 243); + myGLCD.printNumI(millis(), CENTER, 258); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_480x320/UTFT_Demo_480x320.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_480x320/UTFT_Demo_480x320.ino new file mode 100644 index 0000000..6746a93 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_480x320/UTFT_Demo_480x320.ino @@ -0,0 +1,329 @@ +// UTFT_Demo_480x320 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 480x320 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(CTE32HR,25,26,27,28); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[478]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 479, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 306, 479, 319); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 307); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 479, 305); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 304); + myGLCD.drawLine(1, 159, 478, 159); + for (int i=9; i<470; i+=10) + myGLCD.drawLine(i, 157, i, 161); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(237, i, 241, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,159+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,159+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,159+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 304); + myGLCD.drawLine(1, 159, 478, 159); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(478*15); i++) + { + x++; + if (x==479) + x=1; + if (i>479) + { + if ((x==239)||(buf[x-1]==159)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=159+(sin(((i*0.7)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(150+(i*20), 70+(i*20), 210+(i*20), 130+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(270-(i*20), 70+(i*20), 330-(i*20), 130+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(180+(i*20),100+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<304; i+=5) + { + myGLCD.drawLine(1, i, (i*1.6)-10, 304); + } + myGLCD.setColor (255,0,0); + for (int i=304; i>15; i-=5) + { + myGLCD.drawLine(478, i, (i*1.6)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=304; i>15; i-=5) + { + myGLCD.drawLine(1, i, 491-(i*1.6), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<304; i+=5) + { + myGLCD.drawLine(478, i, 490-(i*1.6), 304); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(416); + y=45+random(226); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(289); + x2=2+random(476); + y2=16+random(289); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(289); + x2=2+random(476); + y2=16+random(289); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(289); + x2=2+random(476); + y2=16+random(289); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(476), 16+random(289)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(160, 70, 319, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 290); + myGLCD.printNumI(millis(), CENTER, 305); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_800x480/UTFT_Demo_800x480.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_800x480/UTFT_Demo_800x480.ino new file mode 100644 index 0000000..293bc00 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Demo_800x480/UTFT_Demo_800x480.ino @@ -0,0 +1,288 @@ +// UTFT_Demo_800x480 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 800x480 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB50,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[798]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 799, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 466, 799, 479); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 467); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 799, 465); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(399, 15, 399, 464); + myGLCD.drawLine(1, 239, 798, 239); + for (int i=9; i<790; i+=10) + myGLCD.drawLine(i, 237, i, 242); + for (int i=19; i<470; i+=10) + myGLCD.drawLine(397, i, 402, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<798; i++) + { + myGLCD.drawPixel(i,239+(sin(((i*1.13)*3.14)/180)*200)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<798; i++) + { + myGLCD.drawPixel(i,239+(cos(((i*1.13)*3.14)/180)*200)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<798; i++) + { + myGLCD.drawPixel(i,239+(tan(((i*0.9)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(399, 15, 399, 464); + myGLCD.drawLine(1, 239, 798, 239); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(798*20); i++) + { + x++; + if (x==799) + x=1; + if (i>799) + { + if ((x==399)||(buf[x-1]==239)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=239+(sin(((i*1.65)*3.14)/180)*(200-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random filled rectangles + for (int i=0; i<50; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(746); + y=16+random(397); + x2=x+50; + y2=y+50; + myGLCD.fillRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random filled, rounded rectangles + for (int i=0; i<50; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(746); + y=16+random(397); + x2=x+50; + y2=y+50; + myGLCD.fillRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random filled circles + for (int i=0; i<50; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=27+random(746); + y=41+random(397); + myGLCD.fillCircle(x, y, 25); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<463; i+=5) + { + myGLCD.drawLine(1, i, (i*1.66)-10, 463); + } + myGLCD.setColor (255,0,0); + for (int i=463; i>15; i-=5) + { + myGLCD.drawLine(798, i, (i*1.66)+30, 15); + } + myGLCD.setColor (0,255,255); + for (int i=463; i>15; i-=5) + { + myGLCD.drawLine(1, i, 770-(i*1.66), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<463; i+=5) + { + myGLCD.drawLine(798, i, 810-(i*1.66), 463); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random circles + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(736); + y=45+random(386); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random rectangles + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(796); + y=16+random(447); + x2=2+random(796); + y2=16+random(447); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random rounded rectangles + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(796); + y=16+random(447); + x2=2+random(796); + y2=16+random(447); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(796); + y=16+random(447); + x2=2+random(796); + y2=16+random(447); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(796), 16+random(447)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(320, 190, 479, 289); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 213); + myGLCD.print("Restarting in a", CENTER, 239); + myGLCD.print("few seconds...", CENTER, 252); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 450); + myGLCD.printNumI(millis(), CENTER, 465); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Rotate_Bitmap/UTFT_Rotate_Bitmap.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Rotate_Bitmap/UTFT_Rotate_Bitmap.ino new file mode 100644 index 0000000..9f2a83f --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Rotate_Bitmap/UTFT_Rotate_Bitmap.ino @@ -0,0 +1,37 @@ +// UTFT_Rotate_Bitmap (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the drawBitmap()-function. +// +// This program requires the UTFT library. +// + +#include + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +extern unsigned short biohazard[0x1000]; + +void setup() +{ + myGLCD.InitLCD(LANDSCAPE); + myGLCD.fillScr(255, 255, 255); + myGLCD.setColor(0, 0, 0); +} + +void loop() +{ + for (int i=0; i<360; i+=5) + { + myGLCD.drawBitmap (10, 10, 64, 64, biohazard, i, 32, 32); + } +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Rotate_Bitmap/biohazard.c b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Rotate_Bitmap/biohazard.c new file mode 100644 index 0000000..ca1348d --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Rotate_Bitmap/biohazard.c @@ -0,0 +1,264 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: biohazard1_L.png +// Time generated: 12.06.2011 00:23:59 +// Dimensions : 64x64 pixels +// Size : 8 192 Bytes + +const unsigned short biohazard[0x1000] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0xC638, 0x9492, 0x6B4D, 0x4228, 0x2945, 0x2124, 0x18C3, 0x1082, // 0x0020 (32) +0x1082, 0x10A2, 0x18C3, 0x2124, 0x2965, 0x4A49, 0x6B6D, 0x9CD3, 0xCE79, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xBDD7, 0x6B6D, 0x2965, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0060 (96) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0x31A6, 0x73AE, 0xC618, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) +0xFFFF, 0xFFFF, 0xE73C, 0x8C71, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000, // 0x00A0 (160) +0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x4207, 0x9CF3, 0xF79E, 0xFFFF, // 0x00B0 (176) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) +0xEF7D, 0x8C51, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00E0 (224) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x2965, 0x9CD3, // 0x00F0 (240) +0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD75, // 0x0110 (272) +0x2965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0020, 0x2901, 0x5241, 0x7B41, 0x9C02, 0xACA2, 0xBD02, // 0x0120 (288) +0xC521, 0xBD02, 0xACA2, 0x9C22, 0x7B41, 0x5241, 0x2901, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0130 (304) +0x39E7, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xEF5D, 0x630C, 0x0000, // 0x0150 (336) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x41C1, 0x93E1, 0xD5A1, 0xFEA1, 0xFF01, 0xFF20, 0xFF20, 0xFF20, 0xFF00, // 0x0160 (352) +0xFF00, 0xFF00, 0xFF20, 0xFF20, 0xFF20, 0xFF01, 0xFEA1, 0xD5A1, 0x93E1, 0x49E1, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0170 (368) +0x0000, 0x0841, 0x7BEF, 0xF7BE, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xC638, 0x2965, 0x0000, 0x0000, // 0x0190 (400) +0x0000, 0x0000, 0x0000, 0x0000, 0x18A0, 0x7B41, 0xD5A1, 0xFF01, 0xFF20, 0xFEE0, 0xFEC0, 0xFEA0, 0xF680, 0xF680, 0xFEA0, 0xFEA0, // 0x01A0 (416) +0xFEA0, 0xFEA0, 0xFEA0, 0xF680, 0xF680, 0xFEA0, 0xFEC0, 0xFF00, 0xFF20, 0xFF01, 0xD5A1, 0x7B41, 0x1880, 0x0000, 0x0000, 0x0000, // 0x01B0 (432) +0x0000, 0x0000, 0x0000, 0x4208, 0xDEDB, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD55, 0x1082, 0x0000, 0x0000, 0x0000, // 0x01D0 (464) +0x0000, 0x0000, 0x0840, 0x7B62, 0xEE41, 0xFF21, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF20, 0xFF20, 0xFEA1, 0xFEC0, // 0x01E0 (480) +0xFEC0, 0xFEC0, 0xFEA1, 0xFF00, 0xFF20, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFF21, 0xEE41, 0x7B62, 0x0840, 0x0000, // 0x01F0 (496) +0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0xC618, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0210 (528) +0x0000, 0x5201, 0xDDE1, 0xFF21, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF40, 0xF6A1, 0xB4C1, 0x7322, 0xA441, 0xFEE0, // 0x0220 (544) +0xFEA0, 0xFEE0, 0xA461, 0x7322, 0xACA1, 0xF681, 0xFF40, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF21, 0xDDE2, 0x4A01, // 0x0230 (560) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0xB596, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x9492, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, // 0x0250 (592) +0x9402, 0xFF01, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xFF01, 0x9401, 0x3961, 0x7341, 0xCD81, 0xF680, 0xFEC0, // 0x0260 (608) +0xFEA0, 0xFEC0, 0xF681, 0xCD81, 0x7B61, 0x3961, 0x8BE1, 0xFEE1, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFF01, // 0x0270 (624) +0x9402, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0xB596, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xA534, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x20C0, 0xCD61, // 0x0290 (656) +0xFF40, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF01, 0xE621, 0x39A1, 0x20E1, 0xCD81, 0xFF40, 0xFEE0, 0xFEC0, 0xFEC0, // 0x02A0 (672) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEE0, 0xFF41, 0xCDC1, 0x2901, 0x3961, 0xDE01, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEA0, // 0x02B0 (688) +0xFF21, 0xC561, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC618, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x3121, 0xDE01, 0xFF00, // 0x02D0 (720) +0xFE80, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF01, 0xD5A2, 0x18A0, 0x20E0, 0xF682, 0xFF01, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, // 0x02E0 (736) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF00, 0xF6A1, 0x2920, 0x1080, 0xCDA2, 0xFF01, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x02F0 (752) +0xFE80, 0xFF00, 0xDE01, 0x2921, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x2921, 0xEE41, 0xFF00, 0xFEA0, // 0x0310 (784) +0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, 0xDE02, 0x18A1, 0x0840, 0xDDE1, 0xFF00, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, // 0x0320 (800) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEE0, 0xE621, 0x0860, 0x1880, 0xD5E2, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0330 (816) +0xFEA0, 0xFEA0, 0xFF00, 0xE641, 0x2921, 0x0000, 0x0000, 0x0000, 0x0000, 0x4208, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5ACB, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C0, 0xDE21, 0xFF00, 0xFEA0, 0xFEC0, // 0x0350 (848) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC1, 0x39A1, 0x0000, 0x8382, 0xFF21, 0xFE80, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0360 (864) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFE80, 0xFF20, 0x8BC1, 0x0000, 0x3161, 0xF6A1, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0370 (880) +0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xDE01, 0x18A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x7BCF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA534, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0xCD61, 0xFF00, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0390 (912) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF21, 0x93E1, 0x0000, 0x1060, 0xDE01, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x03A0 (928) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEE0, 0xE621, 0x1080, 0x0000, 0x8BA1, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, // 0x03B0 (944) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xCD61, 0x0820, 0x0000, 0x0000, 0x0000, 0x0021, 0xBDF7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x9402, 0xFF41, 0xFE80, 0xFEA0, 0xFEC0, 0xFEC0, // 0x03D0 (976) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xF681, 0x20E0, 0x0000, 0x41A1, 0xFEE1, 0xFEA0, 0xFEA1, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x03E0 (992) +0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF01, 0x49E1, 0x0000, 0x18A1, 0xEE41, 0xFEC0, 0xFEA0, 0xFEC0, // 0x03F0 (1008) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFE80, 0xFF41, 0x9402, 0x0000, 0x0000, 0x0000, 0x0000, 0x39C7, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7BCF, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A01, 0xFF01, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0410 (1040) +0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0xA461, 0x0000, 0x0000, 0x6AC1, 0xFF21, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0420 (1056) +0xFEE0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFE80, 0xFF20, 0x7300, 0x0000, 0x0000, 0x9C21, 0xFF20, 0xFEA0, 0xFEC0, // 0x0430 (1072) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF01, 0x49E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0440 (1088) +0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x10A2, 0x0000, 0x0000, 0x0000, 0x0840, 0xDDE1, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0450 (1104) +0xFEA0, 0xFEA0, 0xFEA0, 0xFF20, 0x6261, 0x0000, 0x0000, 0x7300, 0xFF21, 0xF6A0, 0xFEA0, 0xFEE0, 0xFF20, 0xFF00, 0xFEA1, 0xEE42, // 0x0460 (1120) +0xE602, 0xEE42, 0xFEA1, 0xFF00, 0xFF20, 0xFEE0, 0xFEA0, 0xF681, 0xFF40, 0x8360, 0x0000, 0x0000, 0x5241, 0xFF01, 0xFEA0, 0xFEA0, // 0x0470 (1136) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xDDC1, 0x0840, 0x0000, 0x0000, 0x0000, 0x2945, 0xEF7D, 0xFFFF, 0xFFFF, // 0x0480 (1152) +0xFFFF, 0xFFDF, 0xFFFF, 0x7BEF, 0x0000, 0x0000, 0x0000, 0x0000, 0x7B42, 0xFF21, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0490 (1168) +0xFEC0, 0xFEA0, 0xFEC0, 0xFEA0, 0x2900, 0x0000, 0x0000, 0x6AE0, 0xFF21, 0xFEC0, 0xFF01, 0xDE01, 0x9C01, 0x5241, 0x2921, 0x18A1, // 0x04A0 (1184) +0x1061, 0x1881, 0x2921, 0x5241, 0x9C02, 0xDDE1, 0xFF21, 0xFEC0, 0xFF20, 0x7321, 0x0000, 0x0000, 0x20E0, 0xF681, 0xFEC0, 0xFEA0, // 0x04B0 (1200) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF21, 0x7B41, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFDF, // 0x04C0 (1216) +0xFFDF, 0xFFFF, 0xEF7D, 0x2104, 0x0000, 0x0000, 0x0000, 0x1080, 0xEE41, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x04D0 (1232) +0xFEC0, 0xFEA0, 0xFEC0, 0xEE21, 0x1060, 0x0000, 0x0000, 0x41C1, 0xFF21, 0xDDE1, 0x6AC1, 0x0860, 0x0000, 0x0000, 0x0000, 0x0000, // 0x04E0 (1248) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0860, 0x62C1, 0xDDC1, 0xFF41, 0x49E1, 0x0000, 0x0000, 0x0840, 0xE601, 0xFEE0, 0xFEA0, // 0x04F0 (1264) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xEE41, 0x1080, 0x0000, 0x0000, 0x0000, 0x39C7, 0xF7BE, 0xFFFF, // 0x0500 (1280) +0xFFDF, 0xFFFF, 0xA534, 0x0000, 0x0000, 0x0000, 0x0000, 0x7B21, 0xFF21, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0510 (1296) +0xFEA0, 0xFEA0, 0xFEE0, 0xE602, 0x0841, 0x0000, 0x0000, 0x1080, 0xACC2, 0x1060, 0x0000, 0x0000, 0x0000, 0x0020, 0x2920, 0x4A01, // 0x0520 (1312) +0x5241, 0x4A01, 0x3140, 0x0821, 0x0000, 0x0000, 0x0000, 0x0860, 0xACA2, 0x18A0, 0x0000, 0x0000, 0x0820, 0xDDE2, 0xFEE0, 0xFEA0, // 0x0530 (1328) +0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFE80, 0xFF21, 0x7321, 0x0000, 0x0000, 0x0000, 0x0020, 0xC618, 0xFFFF, // 0x0540 (1344) +0xFFFF, 0xFFFF, 0x52AA, 0x0000, 0x0020, 0x0000, 0x0820, 0xDDA1, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0550 (1360) +0xFEC0, 0xFEA0, 0xFEE0, 0xE621, 0x1060, 0x0000, 0x0000, 0x0000, 0x6AE2, 0x20C1, 0x0000, 0x20E1, 0x8BA2, 0xD5A1, 0xFEA1, 0xFF00, // 0x0560 (1376) +0xFF01, 0xFF00, 0xFEC1, 0xD5C1, 0x8BC2, 0x2901, 0x0000, 0x18A1, 0x7302, 0x0000, 0x0000, 0x0000, 0x0840, 0xDE01, 0xFEE0, 0xFEA0, // 0x0570 (1392) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEE0, 0xD5A1, 0x0020, 0x0000, 0x0000, 0x0000, 0x738E, 0xFFFF, // 0x0580 (1408) +0xFFFF, 0xE71C, 0x18C3, 0x0000, 0x0020, 0x0000, 0x49C1, 0xFF01, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0590 (1424) +0xFEA0, 0xFEA0, 0xFEC0, 0xF661, 0x18A0, 0x0000, 0x0000, 0x0000, 0x2101, 0x8363, 0x7321, 0xEE81, 0xFF21, 0xFEE0, 0xFEC0, 0xFEA0, // 0x05A0 (1440) +0xFEA0, 0xFEA0, 0xFEC0, 0xFEE0, 0xFF20, 0xF681, 0x7B41, 0x8362, 0x2921, 0x0000, 0x0000, 0x0000, 0x1080, 0xEE41, 0xFEC0, 0xFEA0, // 0x05B0 (1456) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF01, 0x41C1, 0x0000, 0x0020, 0x0000, 0x3186, 0xF79E, // 0x05C0 (1472) +0xFFFF, 0xAD75, 0x0000, 0x0000, 0x0020, 0x0000, 0x93E1, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, // 0x05D0 (1488) +0xFEC0, 0xFEA0, 0xFEA0, 0xFF41, 0x5221, 0x0000, 0x0000, 0x0000, 0x0000, 0x41C1, 0xFF01, 0xFF00, 0xF660, 0xFEA0, 0xFEA0, 0xFEC0, // 0x05E0 (1504) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xF660, 0xFF00, 0xFF22, 0x49E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x49E1, 0xFF40, 0xFEA0, 0xFEA0, // 0x05F0 (1520) +0xFEA1, 0xFEC0, 0xFEA1, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0x93E1, 0x0000, 0x0020, 0x0000, 0x0020, 0xC638, // 0x0600 (1536) +0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0020, 0xD5A1, 0xFF00, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA1, 0xFEA0, // 0x0610 (1552) +0xFEA1, 0xFF20, 0xFEC1, 0xD5C1, 0x5220, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x3981, 0xE622, 0xFF20, 0xFEC0, 0xFEA0, 0xFEA0, // 0x0620 (1568) +0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF21, 0xE621, 0x41C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x49E0, 0xCDA2, 0xFEA1, 0xFF20, // 0x0630 (1584) +0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xD5A1, 0x0020, 0x0000, 0x0000, 0x0000, 0x9492, // 0x0640 (1600) +0xFFFF, 0x4A49, 0x0000, 0x0020, 0x0000, 0x2901, 0xFEA1, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, // 0x0650 (1616) +0xFEE1, 0xA461, 0x3981, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1881, 0x93E1, 0xE622, 0xFF01, 0xFF00, // 0x0660 (1632) +0xFEA0, 0xFF00, 0xFF21, 0xEE41, 0x9401, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3141, 0x9C21, // 0x0670 (1648) +0xFEC1, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEA1, 0x2901, 0x0000, 0x0020, 0x0000, 0x632C, // 0x0680 (1664) +0xE71C, 0x2124, 0x0000, 0x0020, 0x0000, 0x5241, 0xFF01, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF00, 0xD5C1, // 0x0690 (1680) +0x41C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1081, 0x4A01, 0xAC81, // 0x06A0 (1696) +0xFF21, 0xB4C1, 0x5221, 0x1081, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x06B0 (1712) +0x3981, 0xCD81, 0xFF21, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF01, 0x5221, 0x0000, 0x0020, 0x0000, 0x4228, // 0x06C0 (1728) +0xBDF7, 0x18C3, 0x0000, 0x0020, 0x0000, 0x7B41, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF20, 0xBD02, 0x1060, // 0x06D0 (1744) +0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5201, // 0x06E0 (1760) +0xFFC0, 0x5A41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, // 0x06F0 (1776) +0x0000, 0x0840, 0xACA1, 0xFF21, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0x7B41, 0x0000, 0x0020, 0x0000, 0x2945, // 0x0700 (1792) +0x94B2, 0x0861, 0x0000, 0x0000, 0x0000, 0x9C02, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xBD22, 0x0820, 0x0000, // 0x0710 (1808) +0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1881, 0xAC81, // 0x0720 (1824) +0xFF20, 0xB4A1, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0730 (1840) +0x0020, 0x0000, 0x0000, 0xB4C2, 0xFF00, 0xFE80, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0x9C02, 0x0000, 0x0020, 0x0000, 0x2104, // 0x0740 (1856) +0x73AE, 0x0841, 0x0000, 0x0000, 0x0000, 0xACA2, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, 0xE622, 0x18A1, 0x0000, 0x0000, // 0x0750 (1872) +0x0000, 0x1080, 0x5221, 0x6B03, 0x6AE2, 0x6AE3, 0x4A01, 0x1080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1061, 0xCD82, 0xFF20, // 0x0760 (1888) +0xFE80, 0xFF20, 0xD5C2, 0x1881, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1080, 0x5241, 0x6AE3, 0x6AE2, 0x6AE3, 0x5A62, 0x18C0, // 0x0770 (1904) +0x0000, 0x0000, 0x0000, 0x1060, 0xDDE2, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF20, 0xACA2, 0x0000, 0x0000, 0x0000, 0x10A2, // 0x0780 (1920) +0x52AA, 0x0000, 0x0000, 0x0000, 0x0000, 0xBD02, 0xFF00, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF01, 0x5A61, 0x0000, 0x0000, 0x18A0, // 0x0790 (1936) +0x9401, 0xEE61, 0xFEE2, 0x49E2, 0x18A1, 0x62A1, 0xFF41, 0xE621, 0x8BC2, 0x1880, 0x0000, 0x0820, 0x0000, 0x7B21, 0xFF40, 0xFE80, // 0x07A0 (1952) +0xFEC0, 0xFE80, 0xFF40, 0x8381, 0x0000, 0x0820, 0x0000, 0x1080, 0x8BE2, 0xEE41, 0xFF41, 0x62A2, 0x10A1, 0x3982, 0xFEC2, 0xF6A1, // 0x07B0 (1968) +0xA462, 0x2101, 0x0000, 0x0000, 0x49E1, 0xFF01, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xBD02, 0x0000, 0x0000, 0x0000, 0x1082, // 0x07C0 (1984) +0x528A, 0x0000, 0x0000, 0x0000, 0x0000, 0xC521, 0xFF00, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF00, 0xCD41, 0x0000, 0x0000, 0x49C1, 0xE642, // 0x07D0 (2000) +0xFF21, 0xFEE0, 0xEE42, 0x1081, 0x0000, 0x41A0, 0xFEE0, 0xFEC0, 0xFF40, 0xE621, 0x41A1, 0x0000, 0x0000, 0x93E1, 0xFF20, 0xFEA0, // 0x07E0 (2016) +0xFEA0, 0xFEA0, 0xFF20, 0x9C22, 0x0000, 0x0000, 0x3981, 0xDE01, 0xFF21, 0xFEC0, 0xFEE1, 0x49E1, 0x0000, 0x0840, 0xE602, 0xFEC0, // 0x07F0 (2032) +0xFF20, 0xEE81, 0x5A61, 0x0000, 0x0000, 0xBCE1, 0xFF00, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF00, 0xC521, 0x0000, 0x0000, 0x0000, 0x1082, // 0x0800 (2048) +0x52AA, 0x0000, 0x0000, 0x0000, 0x0000, 0xBD02, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF20, 0x6AC1, 0x0000, 0x49E1, 0xFEE2, 0xFEE0, // 0x0810 (2064) +0xFE80, 0xFEC0, 0xF682, 0x20E1, 0x0000, 0x39A0, 0xFEE0, 0xFEA0, 0xFE80, 0xFEE0, 0xF6A2, 0x41A1, 0x3961, 0xDDC1, 0xFF00, 0xFE80, // 0x0820 (2080) +0xFEA0, 0xFEA0, 0xFF00, 0xE601, 0x41C1, 0x3981, 0xF682, 0xFF00, 0xFE80, 0xFEA0, 0xFF00, 0x41C1, 0x0000, 0x20C1, 0xF661, 0xFEC0, // 0x0830 (2096) +0xF6A0, 0xFEC0, 0xFF01, 0x6261, 0x0000, 0x5A41, 0xFF01, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF00, 0xBD02, 0x0000, 0x0000, 0x0000, 0x1082, // 0x0840 (2112) +0x738E, 0x0841, 0x0000, 0x0000, 0x0000, 0xACA2, 0xFF20, 0xFEA0, 0xFEA0, 0xFEC0, 0xF681, 0x18A0, 0x1080, 0xEE41, 0xFEE0, 0xFEA0, // 0x0850 (2128) +0xFEC0, 0xFEA0, 0xFEE1, 0x3980, 0x0000, 0x20C0, 0xF662, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, 0xF681, 0xFEE1, 0xFF01, 0xDDC1, 0xFF21, // 0x0860 (2144) +0xFF20, 0xFF21, 0xDDC1, 0xFEC1, 0xFF01, 0xF661, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA1, 0x2900, 0x0000, 0x3140, 0xFEA1, 0xFEA0, // 0x0870 (2160) +0xFEA0, 0xFEA0, 0xFEC0, 0xF6A1, 0x2101, 0x0840, 0xEE41, 0xFEE0, 0xFEA0, 0xFEA0, 0xFF20, 0xAC82, 0x0000, 0x0000, 0x0000, 0x10A2, // 0x0880 (2176) +0x9492, 0x0861, 0x0000, 0x0000, 0x0000, 0x9C02, 0xFF20, 0xFEA0, 0xFEA0, 0xFF00, 0xD582, 0x0000, 0x93C1, 0xFF40, 0xFE80, 0xFEC0, // 0x0890 (2192) +0xFEC0, 0xFEA0, 0xFF21, 0x6AC1, 0x0000, 0x0000, 0xCD41, 0xFF00, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xDDE1, 0x41A1, 0x0860, 0x6AC1, // 0x08A0 (2208) +0x93E1, 0x6AE1, 0x0841, 0x3161, 0xD5C1, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF00, 0xCD61, 0x0000, 0x0000, 0x5A81, 0xFF21, 0xFEA0, // 0x08B0 (2224) +0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0xAC81, 0x0000, 0xC521, 0xFF00, 0xFEA0, 0xFEA0, 0xFF20, 0x9C02, 0x0000, 0x0020, 0x0000, 0x2104, // 0x08C0 (2240) +0xB5B6, 0x10A2, 0x0000, 0x0020, 0x0000, 0x7B41, 0xFF20, 0xFEA0, 0xFEA0, 0xFF20, 0xAC80, 0x0820, 0xEE41, 0xFEC0, 0xFEA0, 0xFEC0, // 0x08D0 (2256) +0xFEC0, 0xFEA0, 0xFF00, 0xAC81, 0x0000, 0x0000, 0x7301, 0xFF20, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xD5C1, 0x0000, 0x0000, 0x0000, // 0x08E0 (2272) +0x0000, 0x0000, 0x0000, 0x0000, 0xD561, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF41, 0x7B42, 0x0000, 0x0000, 0xA442, 0xFF21, 0xFEA0, // 0x08F0 (2288) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA1, 0x1080, 0x9C00, 0xFF40, 0xFEA0, 0xFEA0, 0xFF20, 0x7B41, 0x0000, 0x0020, 0x0000, 0x2124, // 0x0900 (2304) +0xDEFB, 0x2104, 0x0000, 0x0020, 0x0000, 0x5221, 0xFF01, 0xFEA0, 0xFEA0, 0xFF40, 0x93C0, 0x3961, 0xFF21, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0910 (2320) +0xFEC0, 0xFEA0, 0xFEC0, 0xEE61, 0x1881, 0x0000, 0x1080, 0xEE21, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF01, 0x41C1, 0x0000, 0x0020, // 0x0920 (2336) +0x0000, 0x0020, 0x0000, 0x3961, 0xFEE1, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xEE61, 0x18A1, 0x0000, 0x1060, 0xE621, 0xFEC0, 0xFEA0, // 0x0930 (2352) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF21, 0x4A01, 0x8361, 0xFF40, 0xFEA0, 0xFEA0, 0xFF01, 0x5221, 0x0000, 0x0020, 0x0000, 0x4208, // 0x0940 (2368) +0xFFDF, 0x4208, 0x0000, 0x0000, 0x0000, 0x2901, 0xFEA1, 0xFEC0, 0xFEA0, 0xFF40, 0x93C0, 0x5A60, 0xFF41, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0950 (2384) +0xFEA0, 0xFEC0, 0xFEA0, 0xFF21, 0x7B41, 0x0000, 0x0000, 0x6281, 0xFF21, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF21, 0x62A1, 0x0000, 0x0000, // 0x0960 (2400) +0x0000, 0x0000, 0x0000, 0x5A41, 0xFF01, 0xFEA0, 0xFEA0, 0xF680, 0xFF41, 0x6AC1, 0x0000, 0x0000, 0x7301, 0xFF21, 0xFEA0, 0xFEA0, // 0x0970 (2416) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF40, 0x6AE1, 0x8361, 0xFF40, 0xFEA0, 0xFEC0, 0xFEA1, 0x2901, 0x0000, 0x0020, 0x0000, 0x630C, // 0x0980 (2432) +0xFFFF, 0x6B6D, 0x0000, 0x0020, 0x0000, 0x0020, 0xD5A1, 0xFF00, 0xFEA0, 0xFF20, 0xA461, 0x6AC0, 0xFF40, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0990 (2448) +0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xEE61, 0x18C0, 0x0000, 0x0000, 0x93E2, 0xFF41, 0xFEA0, 0xFE80, 0xFF20, 0x6AE1, 0x0000, 0x0000, // 0x09A0 (2464) +0x0000, 0x0000, 0x0000, 0x62A1, 0xFF21, 0xFE80, 0xFEA0, 0xFF40, 0x9C22, 0x0000, 0x0000, 0x1881, 0xE641, 0xFEC0, 0xFEC0, 0xFEC0, // 0x09B0 (2480) +0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF40, 0x7B61, 0x9C00, 0xFF40, 0xFE80, 0xFF00, 0xD581, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, // 0x09C0 (2496) +0xFFFF, 0xA534, 0x0000, 0x0000, 0x0000, 0x0000, 0x93E1, 0xFF20, 0xFE80, 0xFF00, 0xC541, 0x72E1, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, // 0x09D0 (2512) +0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF00, 0xB4C1, 0x0000, 0x0020, 0x0000, 0x93E1, 0xFF21, 0xFEC0, 0xFF01, 0x5A81, 0x0000, 0x0000, // 0x09E0 (2528) +0x0000, 0x0000, 0x0000, 0x5222, 0xFF01, 0xFEC0, 0xFF21, 0x9C01, 0x0000, 0x0020, 0x0000, 0xAC81, 0xFF01, 0xFEA0, 0xFEA0, 0xFEC0, // 0x09F0 (2544) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0x7B40, 0xBD01, 0xFF20, 0xF680, 0xFF20, 0x93C1, 0x0000, 0x0020, 0x0000, 0x0000, 0xBDF7, // 0x0A00 (2560) +0xFFFF, 0xDEDB, 0x1082, 0x0000, 0x0000, 0x0000, 0x41C1, 0xFF01, 0xFEA0, 0xFEC0, 0xF660, 0x6AC2, 0xF6A1, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0A10 (2576) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF21, 0x8BA1, 0x0000, 0x0000, 0x0000, 0x6281, 0xDE21, 0xFF01, 0x3161, 0x0000, 0x0000, // 0x0A20 (2592) +0x0000, 0x0000, 0x0000, 0x2921, 0xFEE1, 0xE641, 0x62A1, 0x0000, 0x0000, 0x0000, 0x8381, 0xFF21, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0A30 (2608) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC1, 0x6AC2, 0xE621, 0xFEE0, 0xFEA0, 0xFF01, 0x41C1, 0x0000, 0x0020, 0x0000, 0x2124, 0xEF5D, // 0x0A40 (2624) +0xFFFF, 0xFFFF, 0x4A49, 0x0000, 0x0000, 0x0000, 0x0020, 0xD5A1, 0xFEE0, 0xFEA0, 0xFEC0, 0xCD41, 0xF660, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0A50 (2640) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF21, 0x8BC1, 0x0000, 0x0000, 0x0000, 0x1060, 0xA442, 0x0860, 0x0000, 0x0000, // 0x0A60 (2656) +0x0000, 0x0000, 0x0000, 0x0820, 0xA442, 0x18A0, 0x0000, 0x0000, 0x0000, 0x8381, 0xFF21, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0A70 (2672) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFE80, 0xCD62, 0xFEC0, 0xFEA1, 0xFEE0, 0xD5A1, 0x0020, 0x0000, 0x0000, 0x0000, 0x630C, 0xFFFF, // 0x0A80 (2688) +0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0x0000, 0x0000, 0x0000, 0x7321, 0xFF21, 0xFEA0, 0xFEA0, 0xFEE0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, // 0x0A90 (2704) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF21, 0xB4C1, 0x20E1, 0x0000, 0x3161, 0x62A2, 0x0000, 0x0000, 0x0000, // 0x0AA0 (2720) +0x0000, 0x0000, 0x0000, 0x0000, 0x5A82, 0x39A1, 0x0000, 0x20C1, 0xAC82, 0xFF21, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0AB0 (2736) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEE0, 0xFEA0, 0xFEA0, 0xFF21, 0x7321, 0x0000, 0x0000, 0x0000, 0x0000, 0xB596, 0xFFFF, // 0x0AC0 (2752) +0xFFDF, 0xFFFF, 0xE73C, 0x18C3, 0x0000, 0x0000, 0x0000, 0x1080, 0xEE41, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA1, 0xFF00, 0xFEE0, 0xFEA0, // 0x0AD0 (2768) +0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF00, 0xEE41, 0x83C1, 0x8BA3, 0x1081, 0x0000, 0x0000, 0x0000, // 0x0AE0 (2784) +0x0000, 0x0000, 0x0000, 0x0000, 0x1060, 0x8383, 0x83A1, 0xEE41, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, // 0x0AF0 (2800) +0xFEC0, 0xFEA0, 0xFEC0, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xEE21, 0x1080, 0x0000, 0x0000, 0x0000, 0x2945, 0xEF7D, 0xFFFF, // 0x0B00 (2816) +0xFFFF, 0xFFFF, 0xFFFF, 0x6B4D, 0x0000, 0x0000, 0x0000, 0x0000, 0x7B41, 0xFF21, 0xFEA0, 0xFEA0, 0xFF00, 0xB482, 0xD5C1, 0xFF20, // 0x0B10 (2832) +0xFE80, 0xFEA0, 0xFEA0, 0xFEA1, 0xFEA0, 0xFEC0, 0xFEA1, 0xFEA0, 0xF680, 0xFF20, 0xF6A2, 0x3121, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B20 (2848) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20E1, 0xEE62, 0xFF40, 0xF680, 0xFEA0, 0xFEA1, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, // 0x0B30 (2864) +0xF681, 0xFF20, 0xE601, 0xAC62, 0xFF00, 0xFEA0, 0xFE80, 0xFF21, 0x7B41, 0x0000, 0x0000, 0x0000, 0x0000, 0x8410, 0xFFFF, 0xFFFF, // 0x0B40 (2880) +0xFFFF, 0xFFDF, 0xFFFF, 0xD69A, 0x0841, 0x0000, 0x0000, 0x0000, 0x0840, 0xDDC1, 0xFEE0, 0xFEA0, 0xFEE1, 0xD5A1, 0x5221, 0xBD21, // 0x0B50 (2896) +0xFF41, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA1, 0xFEC0, 0xFF00, 0xFF21, 0xCD61, 0x20E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, // 0x0B60 (2912) +0x7322, 0x0840, 0x0000, 0x0000, 0x0000, 0x0000, 0x18A1, 0xBD22, 0xFF21, 0xFF00, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEE0, // 0x0B70 (2928) +0xFF40, 0xC561, 0x5221, 0xCD81, 0xFEE0, 0xFE81, 0xFEE0, 0xDDC1, 0x0840, 0x0000, 0x0000, 0x0000, 0x18E3, 0xE71C, 0xFFFF, 0xFFFF, // 0x0B80 (2944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x632C, 0x0000, 0x0000, 0x0000, 0x0000, 0x49E1, 0xFF01, 0xFEA0, 0xFEA0, 0xFF00, 0xDE01, 0x4181, // 0x0B90 (2960) +0x5A81, 0xD581, 0xFEE1, 0xFF20, 0xFF20, 0xFF01, 0xFEC1, 0xD582, 0x6AE1, 0x0020, 0x0000, 0x0020, 0x0000, 0x0000, 0x1060, 0xACA2, // 0x0BA0 (2976) +0xFF61, 0xBD21, 0x18A1, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x62A2, 0xCD62, 0xFEA1, 0xFF01, 0xFF20, 0xFF20, 0xFEE1, 0xD5C1, // 0x0BB0 (2992) +0x62C1, 0x3981, 0xD5C1, 0xFF21, 0xFEA0, 0xFEA0, 0xFF01, 0x49E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0BC0 (3008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x93E2, 0xFF40, 0xFE80, 0xFE80, 0xFEE0, 0xFEC1, // 0x0BD0 (3024) +0x6B01, 0x1061, 0x18C1, 0x4A00, 0x5AA0, 0x5240, 0x3141, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A01, 0xDDC1, 0xFF20, // 0x0BE0 (3040) +0xFE80, 0xFF00, 0xE602, 0x5A41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2921, 0x5220, 0x5AA0, 0x4A00, 0x20E1, 0x1060, // 0x0BF0 (3056) +0x6AE1, 0xF6A1, 0xFEE0, 0xFEA1, 0xFEA0, 0xFF41, 0x93E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x2124, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C00 (3072) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8C71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0xCD61, 0xFF00, 0xFEA0, 0xFEA0, 0xFEC0, // 0x0C10 (3088) +0xFF41, 0xDDE1, 0x6B01, 0x18C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18A0, 0x5A61, 0xBCE2, 0xFF01, 0xFEE0, 0xFEA0, // 0x0C20 (3104) +0xFEC0, 0xFEA0, 0xFEE0, 0xFF01, 0xC541, 0x6281, 0x20C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C1, 0x6AE1, 0xDDC1, // 0x0C30 (3120) +0xFF41, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF01, 0xC541, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0xA514, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C40 (3136) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x4208, 0x0000, 0x0000, 0x0000, 0x0000, 0x18A1, 0xDE01, 0xFF00, 0xFE80, 0xFEC0, // 0x0C50 (3152) +0xFEA0, 0xFEE0, 0xFF20, 0xFEC1, 0xD5A2, 0xAC82, 0x9401, 0x93E1, 0x9C42, 0xC522, 0xEE41, 0xFF01, 0xFF00, 0xFEA0, 0xFEA0, 0xFEC0, // 0x0C60 (3168) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF00, 0xFF21, 0xF661, 0xC542, 0xA462, 0x93E1, 0x9C01, 0xB4A2, 0xD5A1, 0xFEC1, 0xFF20, 0xFEE0, // 0x0C70 (3184) +0xFEA0, 0xFEC0, 0xFE80, 0xFF00, 0xDE01, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C80 (3200) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6BA, 0x10A2, 0x0000, 0x0000, 0x0000, 0x0000, 0x2921, 0xE641, 0xFF00, 0xFE80, // 0x0C90 (3216) +0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF00, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF00, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0CA0 (3232) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF00, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF00, 0xFEC0, 0xFEA0, 0xFEA0, // 0x0CB0 (3248) +0xFEA0, 0xFE80, 0xFF00, 0xE641, 0x2901, 0x0000, 0x0000, 0x0000, 0x0000, 0x2124, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0CC0 (3264) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2901, 0xDE01, 0xFF00, // 0x0CD0 (3280) +0xFE80, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0CE0 (3296) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, // 0x0CF0 (3312) +0xFE80, 0xFF00, 0xDE01, 0x2900, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0xBDD7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D00 (3328) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8430, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18A1, 0xC561, // 0x0D10 (3344) +0xFF21, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0D20 (3360) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, // 0x0D30 (3376) +0xFF41, 0xC561, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D40 (3392) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, // 0x0D50 (3408) +0x9402, 0xFF01, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0D60 (3424) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFF01, // 0x0D70 (3440) +0x9402, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D80 (3456) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0D90 (3472) +0x0000, 0x4A01, 0xDDC1, 0xFF41, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0DA0 (3488) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF21, 0xD5C1, 0x4A01, // 0x0DB0 (3504) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0DC0 (3520) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8430, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0DD0 (3536) +0x0000, 0x0000, 0x0840, 0x7B61, 0xE641, 0xFF21, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0DE0 (3552) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFF21, 0xE621, 0x7B42, 0x0840, 0x0000, // 0x0DF0 (3568) +0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0x9492, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E00 (3584) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD55, 0x10A2, 0x0000, 0x0000, // 0x0E10 (3600) +0x0000, 0x0000, 0x0000, 0x0000, 0x1880, 0x7B21, 0xD5A1, 0xFF01, 0xFF20, 0xFF00, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, // 0x0E20 (3616) +0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF00, 0xFF20, 0xFF01, 0xD5A1, 0x7321, 0x1880, 0x0000, 0x0000, 0x0000, // 0x0E30 (3632) +0x0000, 0x0000, 0x0000, 0x18E3, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E40 (3648) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xD69A, 0x4228, 0x0000, // 0x0E50 (3664) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x41C1, 0x93E1, 0xD5A1, 0xFEA1, 0xFF01, 0xFF20, 0xFF20, 0xFF20, 0xFF00, // 0x0E60 (3680) +0xFF00, 0xFF00, 0xFF20, 0xFF20, 0xFF20, 0xFF01, 0xFEA1, 0xD5A1, 0x93E1, 0x41C1, 0x0020, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, // 0x0E70 (3696) +0x0000, 0x0000, 0x528A, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E80 (3712) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0x8C71, // 0x0E90 (3728) +0x10A2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2901, 0x5221, 0x7B41, 0x9402, 0xAC82, 0xBCE2, // 0x0EA0 (3744) +0xC521, 0xBCE2, 0xAC82, 0x9401, 0x7B41, 0x5221, 0x2901, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0EB0 (3760) +0x18E3, 0x94B2, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0EC0 (3776) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0ED0 (3792) +0xD6BA, 0x632C, 0x0841, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0EE0 (3808) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x10A2, 0x738E, // 0x0EF0 (3824) +0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F00 (3840) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F10 (3856) +0xFFFF, 0xFFFF, 0xCE79, 0x6B4D, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000, // 0x0F20 (3872) +0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0x738E, 0xD69A, 0xFFFF, // 0x0F30 (3888) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F40 (3904) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F50 (3920) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE71C, 0x94B2, 0x4A49, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0F60 (3936) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C3, 0x4A69, 0x9CD3, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F70 (3952) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F80 (3968) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F90 (3984) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0xA534, 0x6B6D, 0x4208, 0x2104, 0x18C3, 0x0861, 0x0841, 0x0000, // 0x0FA0 (4000) +0x0000, 0x0000, 0x0841, 0x0861, 0x18C3, 0x2124, 0x4228, 0x6B6D, 0xA534, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FB0 (4016) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FC0 (4032) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FD0 (4048) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0xB5B6, 0x9492, 0x6B6D, 0x4A49, // 0x0FE0 (4064) +0x4228, 0x4A49, 0x6B6D, 0x8C51, 0xAD75, 0xDEDB, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FF0 (4080) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1000 (4096) +}; diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Textrotation_Demo/UTFT_Textrotation_Demo.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Textrotation_Demo/UTFT_Textrotation_Demo.ino new file mode 100644 index 0000000..3e25649 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_Textrotation_Demo/UTFT_Textrotation_Demo.ino @@ -0,0 +1,52 @@ +// UTFT_Textrotation_Demo (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the textrotation-functions. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t BigFont[]; +extern uint8_t SevenSegNumFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont(BigFont); +} + +void loop() +{ + myGLCD.print("Text rotation", 0, 0); + myGLCD.setColor(0, 0, 255); + myGLCD.print("0 degrees", 0, 16, 0); + myGLCD.print("90 degrees", 319, 0, 90); + myGLCD.print("180 degrees", 319, 239, 180); + myGLCD.print("270 degrees", 0, 239, 270); + + myGLCD.setFont(SevenSegNumFont); + myGLCD.setColor(0, 255, 0); + myGLCD.print("45", 90, 100, 45); + myGLCD.print("90", 200, 50, 90); + myGLCD.print("180", 300, 200, 180); + + while (true) {}; +} + diff --git a/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_ViewFont/UTFT_ViewFont.ino b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_ViewFont/UTFT_ViewFont.ino new file mode 100644 index 0000000..7a99d20 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (ARM) + Teensy/UTFT_ViewFont/UTFT_ViewFont.ino @@ -0,0 +1,59 @@ +// UTFT_ViewFont (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the included fonts. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; +extern uint8_t BigFont[]; +extern uint8_t SevenSegNumFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +void setup() +{ + myGLCD.InitLCD(); + + myGLCD.clrScr(); +} + +void loop() +{ + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 0); + + myGLCD.setFont(BigFont); + myGLCD.print(" !\"#$%&'()*+,-./", CENTER, 0); + myGLCD.print("0123456789:;<=>?", CENTER, 16); + myGLCD.print("@ABCDEFGHIJKLMNO", CENTER, 32); + myGLCD.print("PQRSTUVWXYZ[\\]^_", CENTER, 48); + myGLCD.print("`abcdefghijklmno", CENTER, 64); + myGLCD.print("pqrstuvwxyz{|}~ ", CENTER, 80); + + myGLCD.setFont(SmallFont); + myGLCD.print(" !\"#$%&'()*+,-./0123456789:;<=>?", CENTER, 120); + myGLCD.print("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_", CENTER, 132); + myGLCD.print("`abcdefghijklmnopqrstuvwxyz{|}~ ", CENTER, 144); + + myGLCD.setFont(SevenSegNumFont); + myGLCD.print("0123456789", CENTER, 190); + + while(1) {}; +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/UTFT_Bitmap.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/UTFT_Bitmap.ino new file mode 100644 index 0000000..3eefe88 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/UTFT_Bitmap.ino @@ -0,0 +1,71 @@ +// UTFT_Bitmap (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the drawBitmap()-function. +// +// This demo was made to work on the 320x240 modules. +// Any other size displays may cause strange behaviour. +// +// This program requires the UTFT library. +// + +#include +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +extern unsigned int info[0x400]; +extern unsigned int icon[0x400]; +extern unsigned int tux[0x400]; + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + myGLCD.fillScr(255, 255, 255); + myGLCD.setColor(255, 255, 255); + myGLCD.print(" *** A 10 by 7 grid of a 32x32 icon *** ", CENTER, 228); + for (int x=0; x<10; x++) + for (int y=0; y<7; y++) + myGLCD.drawBitmap (x*32, y*32, 32, 32, info); + + delay(5000); + + myGLCD.fillScr(255, 255, 255); + myGLCD.setColor(255, 255, 255); + myGLCD.print(" Two different icons in scale 1 to 4 ", CENTER, 228); + int x=0; + for (int s=0; s<4; s++) + { + x+=(s*32); + myGLCD.drawBitmap (x, 0, 32, 32, tux, s+1); + } + x=0; + for (int s=4; s>0; s--) + { + myGLCD.drawBitmap (x, 224-(s*32), 32, 32, icon, s); + x+=(s*32); + } + + delay(5000); +} diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/icon.c b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/icon.c new file mode 100644 index 0000000..374dd09 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/icon.c @@ -0,0 +1,73 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: taskmgr.png +// Time generated: 11.10.2010 22:51:23 +// Size : 2 048 Bytes + +#include + +const unsigned short icon[0x400] PROGMEM ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0xCE79, 0xBDD7, 0xAD75, // 0x0010 (16) +0xAD55, 0xAD75, 0xBDF7, 0xD6BA, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x9492, 0x8C51, 0x9492, 0xA514, 0xA534, // 0x0030 (48) +0xA534, 0xA534, 0x9CF3, 0x8C71, 0x8430, 0x9CD3, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE59, 0x8410, 0x9492, 0xB5B6, 0xC618, 0xBDD7, 0xAD75, 0xA514, // 0x0050 (80) +0xA514, 0xA4F4, 0xAD55, 0xB5B6, 0xBDD7, 0xAD55, 0x8430, 0x8C71, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x9CD3, 0x8430, 0xBDF7, 0xC618, 0xAD75, 0x94F2, 0x8CF1, 0x84B0, 0x8CD1, // 0x0070 (112) +0x9612, 0x8CB1, 0x7C6F, 0x7C8F, 0x8490, 0xA533, 0xBDF7, 0xB596, 0x7BEF, 0xB596, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x8430, 0x9CF3, 0xCE39, 0xA514, 0x94B2, 0x9E93, 0x94F2, 0x8CD1, 0x8CB1, 0x9D12, // 0x0090 (144) +0x9F74, 0x9D52, 0x8450, 0x7C8F, 0x73AE, 0x740E, 0x73CE, 0x9CD3, 0xC638, 0x8C51, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x8430, 0xA534, 0xBDF7, 0x8CB1, 0x8C31, 0x9DB3, 0xA735, 0x9D13, 0x8CB1, 0x8C71, 0x9D13, // 0x00B0 (176) +0xB756, 0xA5D4, 0x8C71, 0x8490, 0x8390, 0x7C70, 0x73EE, 0x6B4D, 0x8450, 0xBDF7, 0x8C71, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x94B2, 0x9CF3, 0xBDD7, 0x8490, 0x8CF1, 0x9D72, 0xA694, 0xAE94, 0x9DD3, 0xA593, 0xA553, 0x9592, // 0x00D0 (208) +0x9672, 0x75CE, 0x5BAA, 0x64EB, 0x5D8C, 0x5BCA, 0x4B69, 0x634C, 0x748D, 0x7C4F, 0xBE18, 0x8430, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xC618, 0x8410, 0xBDF7, 0x8410, 0x83F0, 0x94F2, 0x9613, 0x9D13, 0xAE55, 0x9D12, 0x750E, 0x55CB, 0x4BC8, // 0x00F0 (240) +0x4447, 0x3BC6, 0x4B67, 0x44E8, 0x3CE8, 0x3325, 0x20E2, 0x2B45, 0x43E7, 0x3946, 0x732D, 0xC5F8, 0x7BCF, 0xE71C, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xF7BE, 0x7BEF, 0xBDB6, 0x9533, 0x8D71, 0x9552, 0x9E73, 0x9DD3, 0x94B2, 0x6D6D, 0x4BA8, 0x44A8, 0x55EA, 0x5D2A, // 0x0110 (272) +0x43E7, 0x4327, 0x46CA, 0x4B87, 0x42C6, 0x4E0A, 0x4D09, 0x4468, 0x4548, 0x3386, 0x2B25, 0x7C6F, 0xAD35, 0x9492, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFDF, 0xFFFF, 0xBDD7, 0x8C71, 0xAD75, 0x8CF0, 0x8D71, 0x8D51, 0x9DF3, 0x740E, 0x21C4, 0x33E5, 0x558A, 0x554A, 0x650A, 0x566B, // 0x0130 (304) +0x43E7, 0x21C3, 0x3345, 0x2283, 0x1962, 0x3C87, 0x3386, 0x2163, 0x3345, 0x3346, 0x33A6, 0x32C6, 0x9CB3, 0x7BEF, 0xDEDB, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0x8430, 0xAD75, 0x8C31, 0x7C0F, 0x7BCF, 0x83F0, 0x636B, 0x0000, 0x0000, 0x4387, 0x462A, 0x4B27, 0x4B88, 0x4E8B, // 0x0150 (336) +0x42E6, 0x0000, 0x0020, 0x0100, 0x0000, 0x1121, 0x0040, 0x0000, 0x0941, 0x0000, 0x0020, 0x00E0, 0x5AAB, 0x94B2, 0x9CD3, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xE71C, 0x8410, 0xB596, 0x7BEF, 0x7C6F, 0x84B0, 0x5B6B, 0x09E1, 0x0901, 0x1161, 0x3C06, 0x3D89, 0x32C5, 0x43E7, 0x470B, // 0x0170 (368) +0x4BC7, 0x0961, 0x11E2, 0x1282, 0x0961, 0x1262, 0x09E2, 0x0961, 0x12A2, 0x0961, 0x09C2, 0x0A01, 0x29E5, 0xA514, 0x7BEF, 0xFFDF, // 0x0180 (384) +0xFFFF, 0xBDD7, 0x9472, 0xA514, 0x6B4D, 0x7C6F, 0x634C, 0x0040, 0x0981, 0x0060, 0x00E0, 0x11E2, 0x10A1, 0x09C1, 0x19E3, 0x2B25, // 0x0190 (400) +0x22A3, 0x0060, 0x0120, 0x09E1, 0x0060, 0x09E1, 0x0120, 0x0060, 0x0A21, 0x0060, 0x0100, 0x01A0, 0x0040, 0x9CD3, 0x7BEF, 0xDEDB, // 0x01A0 (416) +0xFFFF, 0xA514, 0x9CF3, 0xB596, 0x73AE, 0x7C0F, 0x2945, 0x10A2, 0x2184, 0x18C3, 0x1923, 0x2184, 0x18C3, 0x21A4, 0x2964, 0x2905, // 0x01B0 (432) +0x2A25, 0x2104, 0x2965, 0x2A05, 0x2104, 0x2A05, 0x2985, 0x2104, 0x2A25, 0x2104, 0x2164, 0x29C4, 0x3166, 0xB5B6, 0x8410, 0xC618, // 0x01C0 (448) +0xFFFF, 0x9492, 0xA514, 0xDEDB, 0xC618, 0xA514, 0x8C51, 0x94B2, 0x9CB3, 0x9CF3, 0xA514, 0xA534, 0xAD75, 0xAD75, 0xB596, 0xB5D6, // 0x01D0 (464) +0xBDB7, 0xBDF7, 0xBDF7, 0xBDF7, 0xC618, 0xC5F8, 0xC5F8, 0xBDF7, 0xBDD7, 0xBDD7, 0xB5B6, 0xB596, 0xC638, 0xDEFB, 0x8430, 0xB596, // 0x01E0 (480) +0xFFFF, 0x8C51, 0x9CF3, 0xE73C, 0xDEFB, 0xD69A, 0xD6BA, 0xD6BA, 0xDEDB, 0xDEDB, 0xDEFB, 0xDF1B, 0xE71C, 0xE73C, 0xE73C, 0xE73C, // 0x01F0 (496) +0xEF5D, 0xEF5D, 0xEF5D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xDEFB, 0xE71C, 0x8C51, 0xAD75, // 0x0200 (512) +0xFFFF, 0x8C71, 0x9CD3, 0xDEFB, 0xAD75, 0x9492, 0x9CD3, 0xA4F3, 0xA514, 0xAD55, 0xAD75, 0xB596, 0xBDB6, 0xBDD7, 0xC5F7, 0xC618, // 0x0210 (528) +0xC638, 0xCE59, 0xCE59, 0xCE79, 0xD679, 0xD679, 0xCE79, 0xCE59, 0xCE59, 0xC638, 0xC618, 0xBDF7, 0xCE79, 0xE71C, 0x8C51, 0xB596, // 0x0220 (544) +0xFFFF, 0x9CD3, 0x9492, 0xAD55, 0x2965, 0x2104, 0x2124, 0x2145, 0x1945, 0x2165, 0x2165, 0x2186, 0x2186, 0x29A6, 0x29A6, 0x31C7, // 0x0230 (560) +0x39C7, 0x31E7, 0x31E7, 0x31E7, 0x3208, 0x3208, 0x31E7, 0x31E7, 0x29E7, 0x31C7, 0x39C7, 0x31A6, 0x4A49, 0xBDF7, 0x8C51, 0xBDF7, // 0x0240 (576) +0xFFFF, 0xB5B6, 0x8430, 0x7BEF, 0x0000, 0x0000, 0x0000, 0x2000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3800, 0x2000, // 0x0250 (592) +0x0000, 0x3000, 0x3800, 0x3000, 0x3800, 0x3800, 0x3800, 0x3000, 0x3800, 0x0800, 0x0000, 0x0000, 0x0000, 0xA514, 0x8430, 0xD6BA, // 0x0260 (608) +0xFFFF, 0xDEDB, 0x7BCF, 0x8430, 0x0020, 0x0000, 0x0000, 0x8000, 0xC800, 0xC000, 0xC800, 0xC820, 0xC820, 0xC820, 0xD020, 0x9800, // 0x0270 (624) +0x0000, 0xB820, 0xD020, 0xD020, 0xD020, 0xD020, 0xD020, 0xC820, 0xD020, 0x4800, 0x0000, 0x0000, 0x2144, 0xAD75, 0x8410, 0xF7BE, // 0x0280 (640) +0xFFFF, 0xFFFF, 0x7BEF, 0x8C71, 0x2945, 0x0000, 0x0000, 0x6800, 0xA800, 0xA800, 0xA800, 0xA800, 0xA800, 0xA800, 0xB000, 0x8000, // 0x0290 (656) +0x0000, 0x9800, 0xB000, 0xB000, 0xB000, 0xB000, 0xB000, 0xB000, 0xB000, 0x4000, 0x0000, 0x0000, 0x632C, 0xA534, 0x94B2, 0xFFFF, // 0x02A0 (672) +0xFFDF, 0xFFFF, 0xAD75, 0x73AE, 0x632C, 0x0000, 0x0000, 0x6920, 0xA9E0, 0xA1C0, 0xA9E0, 0xA9E0, 0xA9E0, 0xA9E0, 0xA9E0, 0x7960, // 0x02B0 (688) +0x0000, 0x99C0, 0xB200, 0xA9E0, 0xB200, 0xB200, 0xB1E0, 0xA9E0, 0xB200, 0x40C0, 0x0000, 0x1082, 0xAD75, 0x8410, 0xD69A, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xF79E, 0x630C, 0x8C51, 0x2965, 0x0000, 0x7400, 0xB620, 0xAE00, 0xB620, 0xB640, 0xB640, 0xB620, 0xB660, 0x84A0, // 0x02D0 (720) +0x0000, 0xA5A0, 0xBE60, 0xB660, 0xBE60, 0xBE60, 0xB660, 0xB640, 0xBE80, 0x4260, 0x0000, 0x6B6D, 0xAD75, 0x8430, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFDF, 0xFFFF, 0xB5B6, 0x632C, 0x8410, 0x0021, 0x7360, 0xBD40, 0xB520, 0xBD40, 0xBD60, 0xBD60, 0xBD40, 0xC580, 0x8C00, // 0x02F0 (752) +0x0000, 0xACE0, 0xC580, 0xC580, 0xC580, 0xC580, 0xC580, 0xBD60, 0xC5A0, 0x39C0, 0x2126, 0xBDF7, 0x73AE, 0xD6BA, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7BEF, 0x7BEF, 0x630D, 0x4AE1, 0x6D21, 0x6D01, 0x6D21, 0x6D41, 0x6D41, 0x6D41, 0x6D61, 0x53E1, // 0x0310 (784) +0x0000, 0x64C1, 0x7562, 0x6D62, 0x6D62, 0x6D62, 0x6D62, 0x6D42, 0x6D41, 0x4263, 0xA515, 0x8C51, 0xA534, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x6B4D, 0x8410, 0x636E, 0x04A6, 0x05E5, 0x05C5, 0x0585, 0x0585, 0x0586, 0x05A6, 0x0424, // 0x0330 (816) +0x0000, 0x0505, 0x05C6, 0x05A6, 0x05A6, 0x05C7, 0x0606, 0x0606, 0x1CE9, 0xA535, 0x9492, 0x8C71, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x6B4D, 0x83EF, 0x9411, 0x3A47, 0x0403, 0x0584, 0x05A4, 0x0585, 0x0585, 0x0404, // 0x0350 (848) +0x0000, 0x04E5, 0x05A5, 0x05A5, 0x05C5, 0x0584, 0x1405, 0x634B, 0xBD76, 0x8C51, 0x8C51, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x8410, 0x6B6D, 0x9CB3, 0x7C6F, 0x3CA9, 0x0BE4, 0x0443, 0x0504, 0x03C2, // 0x0370 (880) +0x0000, 0x0483, 0x0504, 0x0444, 0x1426, 0x552D, 0xA554, 0xB576, 0x73CE, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB5B6, 0x6B4D, 0x7BAF, 0x9432, 0x8BD1, 0x6BCE, 0x4C6B, 0x3C09, // 0x0390 (912) +0x3186, 0x3C8A, 0x5C8C, 0x8430, 0xA493, 0xACD4, 0x8410, 0x7BEF, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xAD75, 0x7BEF, 0x73AE, 0x83F0, 0x8C11, 0x9431, // 0x03B0 (944) +0x9492, 0x9452, 0x9432, 0x8430, 0x7BEF, 0x8450, 0xBDF7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0xBDD7, 0xA534, 0x94D3, // 0x03D0 (976) +0x94B2, 0x9CF3, 0xA554, 0xC618, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/info.c b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/info.c new file mode 100644 index 0000000..a0a04ee --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/info.c @@ -0,0 +1,73 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: info.png +// Time generated: 11.10.2010 22:27:55 +// Size : 2 048 Bytes + +#include + +const unsigned short info[0x400] PROGMEM ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF9F, 0xC69D, 0x95BB, 0x7D1A, 0x6CB9, // 0x0030 (48) +0x6499, 0x74F9, 0x8D7A, 0xB63C, 0xE73E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAE1C, 0x4C18, 0x2B56, 0x3397, 0x4C38, 0x64B9, 0x751A, // 0x0050 (80) +0x7D3A, 0x6CD9, 0x5458, 0x3BD7, 0x2B56, 0x3BB7, 0x855A, 0xE77E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA5FB, 0x2B56, 0x2B77, 0x751A, 0xB67C, 0xD73E, 0xE75E, 0xE77E, 0xE77E, // 0x0070 (112) +0xE77E, 0xE77E, 0xE75E, 0xDF3E, 0xC6DD, 0x8D9B, 0x43D7, 0x1B16, 0x74D9, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF9F, 0x4C18, 0x1AF6, 0x855A, 0xCEFE, 0xD71E, 0xCEFD, 0xC6DD, 0xC6BD, 0xC6BD, 0xBEBD, // 0x0090 (144) +0xC6BD, 0xBEBD, 0xC6BD, 0xC6DD, 0xC6DD, 0xD71E, 0xD71E, 0xA61C, 0x33B7, 0x2316, 0xBE7C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF3E, 0x2336, 0x3BD7, 0xBE9D, 0xC6DD, 0xBE9D, 0xBE9D, 0xBE9D, 0xBEBD, 0xBE9D, 0xCEFD, 0xEF9F, // 0x00B0 (176) +0xEF9F, 0xD73E, 0xBE9D, 0xBEBD, 0xBE9D, 0xBE9D, 0xB69D, 0xC6BD, 0xCEDD, 0x6CFA, 0x0295, 0x9DBB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xE75E, 0x1AF6, 0x4C58, 0xBEBD, 0xB67D, 0xAE5C, 0xB67D, 0xB67D, 0xB69D, 0xB67D, 0xBEBD, 0xF7DF, 0xFFFF, // 0x00D0 (208) +0xFFFF, 0xFFFF, 0xCF1E, 0xB67D, 0xB67D, 0xB67D, 0xB67D, 0xAE5C, 0xAE5C, 0xC6BD, 0x857B, 0x0295, 0xA5DB, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFDF, 0x3BB7, 0x33D8, 0xB67D, 0xA63C, 0xA63C, 0xAE5C, 0xAE5D, 0xAE5D, 0xAE7D, 0xA65D, 0xC6DD, 0xFFFF, 0xFFFF, // 0x00F0 (240) +0xFFDF, 0xFFFF, 0xDF5E, 0xA65D, 0xAE7D, 0xAE5D, 0xAE5D, 0xAE5C, 0xA63C, 0xA61C, 0xB67D, 0x753A, 0x0295, 0xCEBC, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xF7DF, 0xFFFF, 0x957A, 0x12F6, 0x9E1C, 0x9E1C, 0x9E1C, 0x9E1C, 0xA63C, 0xA63C, 0xA63D, 0xA63D, 0xA65D, 0x9DFC, 0xDF3E, 0xFFFF, // 0x0110 (272) +0xFFFF, 0xFFDF, 0xA61C, 0xA65D, 0xA65D, 0xA63D, 0xA63C, 0xA63C, 0x9E1C, 0x9E1C, 0x9DFC, 0xAE3C, 0x3C18, 0x3396, 0xFFDF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xF79F, 0x2336, 0x64DA, 0x9DFC, 0x95DC, 0x95FC, 0x95FC, 0x9E1C, 0x9E1C, 0x9E3D, 0x9E3D, 0x9E3D, 0x9E3D, 0x7D3B, 0xA63C, // 0x0130 (304) +0xB6BD, 0x8DBB, 0x8DFC, 0xA65D, 0x9E3D, 0x9E3D, 0x9E1C, 0x9E1C, 0x95FC, 0x95FC, 0x95DC, 0x95DC, 0x8DBB, 0x0AF6, 0xA5DA, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xA5FB, 0x1337, 0x8DBB, 0x8DBB, 0x8DBC, 0x8DDC, 0x95FC, 0x95FC, 0x961C, 0x961D, 0x963D, 0x9E3D, 0x963D, 0xA67D, 0xB6BD, // 0x0150 (336) +0xB6BD, 0xAE7D, 0x9E3D, 0x9E3D, 0x961D, 0x961D, 0x961C, 0x95FC, 0x95FC, 0x8DDC, 0x8DDC, 0x859B, 0x95DC, 0x3C18, 0x4BD7, 0xFFFF, // 0x0160 (352) +0xFFFF, 0x6499, 0x33F8, 0x8DBB, 0x859B, 0x85BC, 0x85BC, 0x8DDC, 0x8DFC, 0x8DFD, 0x8E1D, 0x961D, 0x961D, 0x9E3D, 0xF7BF, 0xFFFF, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xA67D, 0x8E1D, 0x961D, 0x8E1D, 0x8DFD, 0x8DFC, 0x8DDC, 0x85BC, 0x85BC, 0x859B, 0x859B, 0x5CDA, 0x2336, 0xE71C, // 0x0180 (384) +0xFFFF, 0x43F8, 0x4C79, 0x859B, 0x7D7B, 0x7D9C, 0x85BC, 0x85DC, 0x85DC, 0x8DFD, 0x8DFD, 0x8E1D, 0x8E1D, 0xA67E, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFFF, 0xBEDE, 0x85FD, 0x8E1D, 0x8DFD, 0x8DFD, 0x85DC, 0x85DC, 0x85BC, 0x7D9C, 0x7D7B, 0x7D7B, 0x753B, 0x1B36, 0xBE5A, // 0x01A0 (416) +0xFFBE, 0x3BF8, 0x3419, 0x6D1B, 0x757B, 0x7D9C, 0x7D9C, 0x7DBC, 0x7DDD, 0x85FD, 0x85FD, 0x861D, 0x861D, 0x9E7E, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFFF, 0xFFFF, 0xB6DE, 0x85FD, 0x8E1D, 0x85FD, 0x85FD, 0x7DDD, 0x7DBC, 0x7D9C, 0x7D9C, 0x757B, 0x6D3B, 0x4C9A, 0x1337, 0xADD9, // 0x01C0 (448) +0xFFBE, 0x4418, 0x23B9, 0x3439, 0x4CBA, 0x653B, 0x759C, 0x7DBD, 0x7DDD, 0x7DFD, 0x861D, 0x861E, 0x861E, 0x9E7E, 0xFFFF, 0xFFFF, // 0x01D0 (464) +0xFFFF, 0xFFFF, 0xB6DE, 0x7E1E, 0x861E, 0x85FD, 0x7DFD, 0x7DDD, 0x7DBD, 0x759C, 0x653B, 0x4CDB, 0x3439, 0x2BF9, 0x1337, 0xA5B9, // 0x01E0 (480) +0xFF9E, 0x4C39, 0x2BF9, 0x345A, 0x3C7A, 0x3C9B, 0x4CFC, 0x5D5C, 0x659D, 0x75DD, 0x7DFE, 0x861E, 0x7E3E, 0x969F, 0xFFFF, 0xFFFF, // 0x01F0 (496) +0xFFFF, 0xFFFF, 0xB6FF, 0x7E1E, 0x863E, 0x7DFE, 0x75DD, 0x6D9D, 0x5D5C, 0x4CFC, 0x3C9B, 0x347A, 0x345A, 0x343A, 0x1B78, 0xA5B9, // 0x0200 (512) +0xF79E, 0x4418, 0x2C3A, 0x3C7A, 0x449B, 0x44DB, 0x4CFC, 0x4D3C, 0x555D, 0x5D7D, 0x65BE, 0x6DFE, 0x6DFF, 0x867F, 0xFFFF, 0xFFFF, // 0x0210 (528) +0xFFFF, 0xFFFF, 0xA6DF, 0x65FF, 0x6DFE, 0x65BE, 0x5D9E, 0x555D, 0x4D3C, 0x4CFC, 0x44DB, 0x44BB, 0x3C7A, 0x345A, 0x1B78, 0xA599, // 0x0220 (544) +0xFFDE, 0x43D8, 0x345A, 0x3C9A, 0x44DB, 0x4CFC, 0x4D3C, 0x555D, 0x5D9D, 0x5DBE, 0x65DE, 0x6DFF, 0x661F, 0x867F, 0xFFFF, 0xFFFF, // 0x0230 (560) +0xFFFF, 0xFFFF, 0xA6DF, 0x65FF, 0x6DFF, 0x65DE, 0x5DBE, 0x5D9D, 0x555D, 0x4D3C, 0x4CFC, 0x44DB, 0x3C7A, 0x3C9B, 0x1B57, 0xADB9, // 0x0240 (576) +0xFFFF, 0x4BD7, 0x2C1A, 0x44DB, 0x44DB, 0x4D1C, 0x555D, 0x5D7D, 0x5DBE, 0x65DE, 0x6E1F, 0x6E3F, 0x765F, 0x96BF, 0xFFFF, 0xFFFF, // 0x0250 (592) +0xFFFF, 0xFFFF, 0xAEFF, 0x6E3F, 0x763F, 0x6E1F, 0x65DE, 0x5DBE, 0x5D7D, 0x555D, 0x4D1C, 0x44DC, 0x3C9B, 0x44DC, 0x1AD5, 0xC639, // 0x0260 (608) +0xFFFF, 0x84D8, 0x1317, 0x5D7D, 0x44DB, 0x553C, 0x557D, 0x5D9E, 0x65DE, 0x65FF, 0x6E3F, 0x7E5F, 0x7E7F, 0x9EDF, 0xFFFF, 0xFFFF, // 0x0270 (624) +0xFFFF, 0xFFFF, 0xB73F, 0x7E7F, 0x7E5F, 0x6E3F, 0x65FF, 0x65DE, 0x5D9E, 0x557D, 0x553C, 0x44DC, 0x4D1C, 0x345B, 0x22B4, 0xE71B, // 0x0280 (640) +0xFFFF, 0xD6BC, 0x0234, 0x4CFC, 0x5D7D, 0x4D3C, 0x5D9D, 0x5DBE, 0x65FF, 0x6E3F, 0x765F, 0x867F, 0x8EBF, 0xA6DF, 0xFFFF, 0xFFFF, // 0x0290 (656) +0xFFFF, 0xFFFF, 0xB71F, 0x8EBF, 0x869F, 0x765F, 0x6E3F, 0x65FF, 0x5DBE, 0x5D7D, 0x553D, 0x4D1C, 0x65BE, 0x0AB7, 0x6C15, 0xFFBE, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0x53B6, 0x0296, 0x75FE, 0x5D9D, 0x557D, 0x65DE, 0x6E1F, 0x763F, 0x7E7F, 0x8EBF, 0x9EFF, 0x96BE, 0xAE3C, 0xE77E, // 0x02B0 (688) +0xEF9E, 0xC69D, 0x967E, 0x9EFF, 0x8EBF, 0x7E7F, 0x763F, 0x6E1F, 0x65DE, 0x5D9E, 0x555D, 0x761E, 0x341A, 0x1294, 0xBE18, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xCE9B, 0x0A13, 0x2378, 0x7E5F, 0x6E1E, 0x5DBE, 0x6E1F, 0x7E5F, 0x869F, 0x96DF, 0x9EFF, 0xAF5F, 0x9E9E, 0x8DFC, // 0x02D0 (720) +0x8E1C, 0x967D, 0xAF3F, 0xA6FF, 0x96DF, 0x869F, 0x7E5F, 0x6E1F, 0x5DBE, 0x65DE, 0x7E5F, 0x4CBB, 0x0AB5, 0x7454, 0xEF5C, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFFF, 0xFFFF, 0x8D17, 0x01D3, 0x23B9, 0x7E3E, 0x8E9F, 0x763F, 0x765F, 0x8E9F, 0x9EDF, 0xA71F, 0xB75F, 0xC7BF, 0xCFDF, // 0x02F0 (752) +0xCFDF, 0xC7BF, 0xB75F, 0xA71F, 0x9EDF, 0x8E9F, 0x765F, 0x6E1F, 0x867F, 0x8E7F, 0x4CBB, 0x1317, 0x4BB4, 0xD679, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFBD, 0x7476, 0x0214, 0x1B78, 0x659D, 0x9EDF, 0x9EFF, 0x96DF, 0x9EFF, 0xAF1F, 0xB75F, 0xC79F, 0xD7DF, // 0x0310 (784) +0xD7DF, 0xC79F, 0xB75F, 0xAF1F, 0x9EDF, 0x96DF, 0x96DF, 0x9EFF, 0x7E1E, 0x3C5A, 0x1B77, 0x43B5, 0xBDD6, 0xF7BE, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77D, 0x7CB6, 0x12B4, 0x1337, 0x449B, 0x7DFD, 0xA6FF, 0xB75F, 0xBF7F, 0xC79F, 0xCFBF, 0xD7FF, // 0x0330 (816) +0xD7FF, 0xCFBF, 0xC79F, 0xBF7F, 0xB77F, 0xAF1F, 0x8E5E, 0x551B, 0x3419, 0x2BD7, 0x5415, 0xB5B6, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79D, 0xA577, 0x3B75, 0x1B36, 0x2BD9, 0x4CBB, 0x759D, 0x965E, 0xAEDF, 0xBF3F, 0xC77F, // 0x0350 (848) +0xC77F, 0xBF3F, 0xB6FF, 0x9E7F, 0x7DDD, 0x5D1C, 0x447A, 0x3C59, 0x4437, 0x7474, 0xC617, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDE, 0xD699, 0x84D5, 0x43D5, 0x33B7, 0x3418, 0x4C7A, 0x5CFC, 0x753D, 0x857E, // 0x0370 (880) +0x859E, 0x755D, 0x653C, 0x5CFB, 0x4CDA, 0x4CB9, 0x5497, 0x6C95, 0xA555, 0xDEDA, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79D, 0xCE79, 0x9D56, 0x7495, 0x5C56, 0x4C77, 0x4C97, 0x4CB8, // 0x0390 (912) +0x54D8, 0x5CD8, 0x5CF8, 0x64D7, 0x74D6, 0x8CF5, 0xAD96, 0xD699, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBE, 0xEF1B, 0xD679, 0xBDF7, 0xAD96, 0xA576, // 0x03B0 (944) +0xA576, 0xAD76, 0xB5B6, 0xC5F7, 0xD679, 0xEF3C, 0xFFDE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFBE, // 0x03D0 (976) +0xF7BE, 0xF7BE, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/tux.c b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/tux.c new file mode 100644 index 0000000..3babe53 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap/tux.c @@ -0,0 +1,73 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: tux.png +// Time generated: 11.10.2010 22:51:32 +// Size : 2 048 Bytes + +#include + +const unsigned short tux[0x400] PROGMEM ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x9CD3, 0x9CF3, 0xA514, // 0x0010 (16) +0x9CF3, 0x8C51, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x5AEB, 0x7BEF, 0x9CD3, 0x94B2, // 0x0030 (48) +0x94B2, 0x94B2, 0x4228, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x9CF3, 0x18E3, 0x630C, 0x4A49, 0x4A69, // 0x0050 (80) +0x4A69, 0x528A, 0x4A49, 0x0000, 0xC638, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6D, 0x0000, 0x0020, 0x10A2, 0x1082, // 0x0070 (112) +0x0841, 0x0841, 0x0841, 0x0000, 0x630C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x528A, 0x4228, 0x8410, 0x0000, 0x0861, // 0x0090 (144) +0xAD55, 0xBDD7, 0x10A2, 0x0000, 0x2945, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x5ACB, 0x8C71, 0xE75D, 0x2126, 0x528B, // 0x00B0 (176) +0xE75D, 0xDEDB, 0x7BCF, 0x0000, 0x18E3, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6D, 0x4A4A, 0x6B2A, 0x8BE7, 0xA48A, // 0x00D0 (208) +0x6B09, 0x4A8A, 0x8431, 0x0000, 0x2104, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6E, 0x5204, 0xDE6A, 0xFFF7, 0xFFF8, // 0x00F0 (240) +0xD5AC, 0xBCAA, 0x5A66, 0x0000, 0x1082, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C10, 0xC540, 0xFFED, 0xFF2C, 0xFEEC, // 0x0110 (272) +0xFECC, 0xFE66, 0x8260, 0x0000, 0x0000, 0xB596, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B3, 0x9C25, 0xFF20, 0xFE40, 0xFDA0, // 0x0130 (304) +0xFCC0, 0xF524, 0x836A, 0x0000, 0x0000, 0x630C, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x630C, 0x94B4, 0xFF13, 0xFD83, 0xF523, // 0x0150 (336) +0xE5CF, 0xF79E, 0xE71D, 0x0861, 0x0000, 0x0861, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xCE59, 0x0841, 0xD69A, 0xFFFF, 0xFF7D, 0xF77D, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x4A69, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x10A2, 0x8410, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFDF, 0xFFFF, 0xCE59, 0x0000, 0x0000, 0x0000, 0x9492, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x52AA, 0x0020, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFDF, 0xFFDF, 0xF7BE, 0xFFDF, 0x3186, 0x0000, 0x0020, 0x0841, 0xCE79, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xC638, 0x0000, 0x52AA, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x01D0 (464) +0xFFDF, 0xF7BE, 0xF79E, 0xFFFF, 0x9CF3, 0x0000, 0x0841, 0x0000, 0x39E7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01E0 (480) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5ACB, 0x0000, 0xBDF7, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0xFFDF, // 0x01F0 (496) +0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0x3186, 0x0000, 0x0861, 0x0000, 0xAD55, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x0861, 0x4A49, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x0210 (528) +0xF7BE, 0xF79E, 0xEF7D, 0xEF5D, 0xFFDF, 0x8410, 0x0000, 0x1082, 0x0000, 0x39E7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0xB596, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, // 0x0230 (560) +0xF79E, 0xEF7D, 0xEF7D, 0xE73C, 0xF79E, 0xAD55, 0x0861, 0x10A2, 0x0861, 0x0841, 0xCE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x3185, 0x10A2, 0xE71C, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF79E, // 0x0250 (592) +0xEF7D, 0xEF7D, 0xEF5D, 0xE73C, 0xEF5D, 0xBDF7, 0x18C3, 0x18C3, 0x18C3, 0x0000, 0x8C71, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0x39E7, 0xF7BE, 0xFFFF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF79E, 0xEF7D, // 0x0270 (624) +0xEF7D, 0xEF5D, 0xE73C, 0xE71C, 0xE71C, 0xC618, 0x18E3, 0x10A2, 0x10A2, 0x0020, 0x6B4D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C51, 0x38E0, 0x4A27, 0xFFFF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, // 0x0290 (656) +0xEF5D, 0xE73C, 0xE71C, 0xDEFB, 0xDF1D, 0xBDF8, 0x39C7, 0x5ACB, 0x528A, 0x10A3, 0x738F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDD6C, 0xFE2B, 0xBC45, 0xA513, 0xFFFF, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF5D, // 0x02B0 (688) +0xE73C, 0xE71C, 0xDEFB, 0xD6DC, 0xDD8E, 0xB3E4, 0x2124, 0x2965, 0x2945, 0x20C1, 0xB511, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77C, 0xE5CF, 0xF60B, 0xFF9B, 0xFF54, 0x8B02, 0x7BF0, 0xFFDF, 0xF79E, 0xEF5D, 0xEF5D, 0xE73C, // 0x02D0 (720) +0xE71C, 0xDEFB, 0xDEDB, 0xCE7A, 0xED89, 0xDDAD, 0x0842, 0x0000, 0x0000, 0xAC69, 0xDD6B, 0xEFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFFF, 0xFFBE, 0xE5CB, 0xEDC9, 0xFE4B, 0xFF14, 0xFEF3, 0xFF35, 0xFE8D, 0x51C1, 0x634E, 0xE73C, 0xEF5D, 0xE73C, 0xE71C, // 0x02F0 (752) +0xDEFB, 0xDEDB, 0xD6DB, 0xCE59, 0xE58B, 0xFF98, 0xBD4F, 0x8B88, 0xCD90, 0xFFB7, 0xCCE8, 0xE73D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xEF3B, 0xF583, 0xFF30, 0xFF11, 0xFECF, 0xFEEF, 0xFECF, 0xFF30, 0xDD46, 0x2903, 0x6B8E, 0xEF7D, 0xE71C, 0xDEFB, // 0x0310 (784) +0xDEDB, 0xD6BA, 0xD69A, 0xCE59, 0xE5AA, 0xFF11, 0xFF53, 0xFF73, 0xFF33, 0xFF12, 0xFE6C, 0xDDAD, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xF79E, 0xEDC5, 0xFECB, 0xFECC, 0xFECC, 0xFEEC, 0xFECB, 0xFECC, 0xFEEA, 0x9BE5, 0x8432, 0xE73C, 0xDEDB, 0xDEDB, // 0x0330 (816) +0xD6BA, 0xD69A, 0xDEDB, 0xA4F3, 0xD547, 0xFF2E, 0xFECD, 0xFECE, 0xFEEE, 0xFEEE, 0xFF10, 0xFEAB, 0xE5A8, 0xEF7D, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xF79E, 0xF603, 0xFEA2, 0xFEC7, 0xFEC7, 0xFEA4, 0xFE81, 0xFE61, 0xFEA4, 0xFE43, 0xDE33, 0xE75E, 0xE71C, 0xDEFB, // 0x0350 (848) +0xDEDB, 0xCE58, 0x8C72, 0x5247, 0xEDE4, 0xFF0A, 0xFECA, 0xFEC9, 0xFE84, 0xFE83, 0xFEE7, 0xFEA3, 0xB443, 0xD69B, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xF75B, 0xFE60, 0xFF00, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xE5C1, 0x9492, 0xA514, 0x9CD3, // 0x0370 (880) +0x8410, 0x630B, 0x4229, 0x6AE8, 0xFE80, 0xFEC1, 0xFEC1, 0xFEA0, 0xFEA0, 0xFEE0, 0xDD80, 0x9BE8, 0xB597, 0xFFDF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xF79E, 0xD589, 0xE600, 0xFEA0, 0xFF00, 0xFF40, 0xFF40, 0xFF00, 0xFF00, 0xFF20, 0xFEC0, 0x5267, 0x4229, 0x4A48, // 0x0390 (912) +0x4A49, 0x5289, 0x424A, 0x7B46, 0xFF20, 0xFEE0, 0xFEE0, 0xFF20, 0xFEE0, 0xB4A5, 0x9C92, 0xDEFD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xE71D, 0xBDB6, 0xB530, 0xBD0B, 0xCD65, 0xEE60, 0xFF40, 0xFFA0, 0xFF80, 0xBD03, 0x8410, 0xA514, 0xA534, // 0x03B0 (944) +0xAD75, 0xB596, 0xA555, 0x9C8F, 0xF6C0, 0xFFA0, 0xFFA0, 0xF6E0, 0xA449, 0xB5B8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7F, 0xD69C, 0xBD95, 0xBD4C, 0xCDC6, 0xB4E8, 0xAD35, 0xF7BF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xCDD0, 0xCDC6, 0xCDA7, 0xA48D, 0xCE7B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1F, 0xB59A, 0xBDDA, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFDF, 0xFFDF, 0xFFFF, 0xEF7F, 0xB59A, 0xAD59, 0xDF1D, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/UTFT_Bitmap_128x128.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/UTFT_Bitmap_128x128.ino new file mode 100644 index 0000000..1d10e99 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/UTFT_Bitmap_128x128.ino @@ -0,0 +1,50 @@ +// UTFT_Bitmap_128x128 (C)2012 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the drawBitmap()-function. +// +// This demo was made to work on the 128x128 modules. +// Any other size displays may cause strange behaviour. +// +// This program requires the UTFT library. +// + +#include +#include + +UTFT myGLCD(LPH9135,6,5,2,3,4); // Remember to change the model parameter to suit your display module! + +extern unsigned int icon1[0x400]; +extern unsigned int icon2[0x400]; +extern unsigned int tux[0x1000]; + +void setup() +{ + myGLCD.InitLCD(PORTRAIT); +} + +void loop() +{ +// Draw a 4 by 4 grid of a 32x32 icon. + myGLCD.fillScr(255, 255, 255); + for (int x=0; x<4; x++) + for (int y=0; y<4; y++) + myGLCD.drawBitmap (x*32, y*32, 32, 32, icon1); + + delay(5000); + +// Draw a 64x64 icon in double size. + myGLCD.fillScr(255, 255, 255); + myGLCD.drawBitmap (0, 0, 64, 64, tux, 2); + + delay(5000); + +// Draw a 2 by 2 grid of a 32x32 icon in double size. + myGLCD.fillScr(255, 255, 255); + for (int x=0; x<2; x++) + for (int y=0; y<2; y++) + myGLCD.drawBitmap (x*64, y*64, 32, 32, icon2, 2); + + delay(5000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/icon1.c b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/icon1.c new file mode 100644 index 0000000..e9da278 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/icon1.c @@ -0,0 +1,74 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: exit.png +// Time generated: 14.10.2010 21:53:03 +// Dimensions : 32x32 pixels +// Size : 2 048 Bytes + +#include + +const unsigned short icon1[0x400] PROGMEM ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF1C, 0xE618, 0xE638, 0xE638, 0xE638, 0xE659, 0xE659, 0xE659, 0xE659, 0xE659, 0xE679, 0xE679, // 0x0010 (16) +0xE679, 0xE679, 0xE679, 0xE679, 0xEE79, 0xEE9A, 0xEE9A, 0xEE9A, 0xEE9A, 0xEE9A, 0xE638, 0xEEBA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xD555, 0xCCD3, 0xDDB6, 0xDDD7, 0xDDF7, 0xDDF7, 0xDE18, 0xE618, 0xE638, 0xE638, 0xE659, 0xE679, 0xE679, // 0x0030 (48) +0xEE9A, 0xEE9A, 0xEEBA, 0xEEBA, 0xEEBA, 0xEEDB, 0xEEDB, 0xEEFB, 0xEEFB, 0xEEFB, 0xEEFB, 0xE659, 0xD575, 0xF77D, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFDF, 0xFFFF, 0xD534, 0xC471, 0xD575, 0xCCF3, 0xCCD3, 0xCCD3, 0xCCF3, 0xCCF3, 0xD4F3, 0xD514, 0xD514, 0xD514, 0xD534, 0xDD55, // 0x0050 (80) +0xDD55, 0xDD55, 0xDD55, 0xDD75, 0xDD75, 0xDD75, 0xDD96, 0xDD96, 0xDD96, 0xDDB6, 0xDDD7, 0xEE79, 0xEEBA, 0xD534, 0xFFBE, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xEEDB, 0xB38E, 0xC4B2, 0xBC30, 0xC451, 0xC471, 0xC471, 0xCC71, 0xCC92, 0xCC92, 0xCC92, 0xCCB2, 0xD4B2, 0xD4B2, 0xCC71, // 0x0070 (112) +0xCC71, 0xD4D3, 0xD4F3, 0xDCF3, 0xDCF3, 0xDD14, 0xDD14, 0xDD14, 0xDD34, 0xDD34, 0xDD34, 0xDD14, 0xE5D7, 0xDD96, 0xDDF7, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xC4F3, 0xAB2C, 0xC430, 0xC410, 0xC430, 0xC430, 0xC430, 0xCC51, 0xCC51, 0xCC51, 0xCC71, 0xCC71, 0xD471, 0xCC71, 0xD5F7, // 0x0090 (144) +0xD5F7, 0xCC92, 0xDCB2, 0xDCD3, 0xDCD3, 0xDCD3, 0xDCD3, 0xDCF3, 0xDCF3, 0xDD14, 0xDD14, 0xDD34, 0xDD14, 0xDD34, 0xC492, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xB3EF, 0x9A28, 0xC430, 0xBBCF, 0xC3EF, 0xC3EF, 0xC3EF, 0xC410, 0xCC10, 0xCC10, 0xCC30, 0xCC51, 0xCBEF, 0xE638, 0xFFFF, // 0x00B0 (176) +0xFFFF, 0xE659, 0xD430, 0xDC92, 0xDC92, 0xDC92, 0xDCB2, 0xDCB2, 0xDCB2, 0xDCD3, 0xDCD3, 0xDCD3, 0xE514, 0xD410, 0xAB0C, 0xF7FF, // 0x00C0 (192) +0xFFFF, 0xABCF, 0x9165, 0xC3EF, 0xBB8E, 0xBBAE, 0xC3AE, 0xC3CF, 0xC3CF, 0xCBCF, 0xCBEF, 0xCC10, 0xCC10, 0xCBAE, 0xEE9A, 0xFFFF, // 0x00D0 (208) +0xFFFF, 0xF6DB, 0xD410, 0xDC71, 0xDC71, 0xDC71, 0xDC71, 0xDC71, 0xDC71, 0xE492, 0xE492, 0xE492, 0xE4F3, 0xCB2C, 0xA249, 0xF7FF, // 0x00E0 (224) +0xFFFF, 0xABCF, 0x88C3, 0xC3AE, 0xBB4D, 0xBB6D, 0xC36D, 0xC38E, 0xC38E, 0xCBAE, 0xC36D, 0xC34D, 0xCBCF, 0xCB8E, 0xEE59, 0xFFFF, // 0x00F0 (240) +0xFFFF, 0xF6BA, 0xDBCF, 0xD3CF, 0xCBAE, 0xD3CF, 0xE430, 0xE430, 0xE451, 0xE451, 0xE451, 0xE451, 0xECD3, 0xCAAA, 0xA208, 0xF7FF, // 0x0100 (256) +0xFFFF, 0xABCF, 0x8061, 0xBB6D, 0xBB2C, 0xBB2C, 0xC34D, 0xC34D, 0xCB4D, 0xBB0C, 0xC492, 0xCD14, 0xC38E, 0xCB2C, 0xEE59, 0xFFFF, // 0x0110 (272) +0xFFFF, 0xF6BA, 0xD36D, 0xD575, 0xE6DB, 0xDDB6, 0xD3AE, 0xE3EF, 0xE410, 0xE410, 0xE430, 0xE410, 0xECB2, 0xC986, 0xA208, 0xF7FF, // 0x0120 (288) +0xFFFF, 0xB3EF, 0x8041, 0xBB0C, 0xBAEB, 0xBAEB, 0xC30C, 0xC30C, 0xBACB, 0xD5B6, 0xFFFF, 0xFFFF, 0xEE79, 0xCACB, 0xEE59, 0xFFFF, // 0x0130 (304) +0xFFFF, 0xF679, 0xDBEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEEBA, 0xD3CF, 0xE3AE, 0xE3EF, 0xE3CF, 0xEC10, 0xEB6D, 0xC000, 0xA249, 0xF7FF, // 0x0140 (320) +0xFFFF, 0xB3EF, 0x8020, 0xBACB, 0xBAAA, 0xBAAA, 0xC2EB, 0xBA8A, 0xD596, 0xFFFF, 0xFFDF, 0xFFFF, 0xF73C, 0xCAAA, 0xEE38, 0xFFFF, // 0x0150 (336) +0xFFFF, 0xF679, 0xDB4D, 0xFF7D, 0xFFFF, 0xFFDF, 0xFFFF, 0xEEDB, 0xDB6D, 0xEB8E, 0xEBAE, 0xEB8E, 0xE0A2, 0xC800, 0xAA49, 0xF7FF, // 0x0160 (352) +0xFFFF, 0xB3EF, 0x8000, 0xB28A, 0xBA69, 0xBA8A, 0xBA49, 0xCC30, 0xFFFF, 0xFFDF, 0xFFFF, 0xFF5D, 0xDBCF, 0xCA69, 0xEE18, 0xFFFF, // 0x0170 (368) +0xFFFF, 0xF679, 0xDAAA, 0xE3AE, 0xF6BA, 0xFFFF, 0xFFDF, 0xFFFF, 0xE5D7, 0xE30C, 0xEB8E, 0xE0E3, 0xE000, 0xC800, 0xAA49, 0xF7FF, // 0x0180 (384) +0xFFFF, 0xB3EF, 0x8800, 0xB249, 0xBA49, 0xBA49, 0xBA49, 0xEF1C, 0xFFFF, 0xFFFF, 0xFF7D, 0xD32C, 0xCA69, 0xD249, 0xEDF7, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xF659, 0xDAAA, 0xE2CB, 0xE2EB, 0xFEBA, 0xFFFF, 0xFFDF, 0xFFDF, 0xE3CF, 0xE103, 0xE000, 0xE081, 0xD000, 0xAA69, 0xF7FF, // 0x01A0 (416) +0xFFFF, 0xB3EF, 0x8800, 0xB228, 0xBA08, 0xB9A6, 0xCBAE, 0xFFFF, 0xFFDF, 0xFFFF, 0xDC30, 0xC9E7, 0xD28A, 0xCA08, 0xF618, 0xFFFF, // 0x01B0 (432) +0xFFFF, 0xF679, 0xDA49, 0xE2CB, 0xE28A, 0xEB6D, 0xFFBE, 0xFFDF, 0xFFFF, 0xEC92, 0xE000, 0xE0A2, 0xE0C2, 0xD040, 0xAA89, 0xF7FF, // 0x01C0 (448) +0xFFFF, 0xB3EF, 0x8800, 0xB1E7, 0xB9E7, 0xB165, 0xDD55, 0xFFFF, 0xFFFF, 0xF71C, 0xCA08, 0xCA08, 0xD228, 0xD1E7, 0xE430, 0xFFDF, // 0x01D0 (464) +0xFFDF, 0xEC51, 0xDA08, 0xE28A, 0xE28A, 0xE228, 0xF618, 0xFFFF, 0xFFFF, 0xF679, 0xE081, 0xE0C2, 0xE903, 0xD081, 0xAA89, 0xF7FF, // 0x01E0 (480) +0xFFFF, 0xBBEF, 0x9000, 0xB1A6, 0xB986, 0xB145, 0xEE38, 0xFFFF, 0xFFFF, 0xED96, 0xC165, 0xC9E7, 0xD1E7, 0xD1E7, 0xD1C7, 0xDACB, // 0x01F0 (496) +0xE2EB, 0xD9E7, 0xE228, 0xE228, 0xEA69, 0xE9E7, 0xF40F, 0xFFFF, 0xFFFF, 0xFF5D, 0xE144, 0xE8E2, 0xE943, 0xD8C1, 0xAA8A, 0xF7FF, // 0x0200 (512) +0xFFFF, 0xBC10, 0x9000, 0xB165, 0xB145, 0xB924, 0xEE9A, 0xFFFF, 0xFFFF, 0xE514, 0xC124, 0xC9A6, 0xD1A6, 0xD1A6, 0xD1C7, 0xD9A6, // 0x0210 (528) +0xD9A6, 0xE1E7, 0xE208, 0xE208, 0xE9A6, 0xE041, 0xEA8A, 0xFFFF, 0xFFFF, 0xFF9E, 0xE9C6, 0xE902, 0xE984, 0xD902, 0xAAAA, 0xF7FF, // 0x0220 (544) +0xFFFF, 0xC410, 0x9000, 0xB124, 0xB124, 0xB0C3, 0xEE18, 0xFFFF, 0xFFFF, 0xE575, 0xC0E3, 0xC986, 0xD165, 0xD165, 0xD986, 0xD9A6, // 0x0230 (560) +0xD9A6, 0xE1A6, 0xE165, 0xE082, 0xE020, 0xE000, 0xEB4C, 0xFFFF, 0xFFFF, 0xFF7D, 0xE9A5, 0xE943, 0xE9A5, 0xD923, 0xAAAA, 0xF7FF, // 0x0240 (576) +0xFFFF, 0xC410, 0x9800, 0xB0E3, 0xB0E3, 0xB061, 0xE4F3, 0xFFFF, 0xFFFF, 0xF6FB, 0xC104, 0xC924, 0xD145, 0xD145, 0xD945, 0xD945, // 0x0250 (592) +0xD8E3, 0xD861, 0xD800, 0xE000, 0xE061, 0xE000, 0xED34, 0xFFFF, 0xFFFF, 0xFE9A, 0xE923, 0xE984, 0xE9C5, 0xE163, 0xAAAA, 0xF7FF, // 0x0260 (608) +0xFFFF, 0xC410, 0xA000, 0xB0A2, 0xB0A2, 0xB041, 0xCACB, 0xFFFF, 0xFFDF, 0xFFFF, 0xD34D, 0xC841, 0xD104, 0xD0A2, 0xD061, 0xD000, // 0x0270 (624) +0xD800, 0xD800, 0xE000, 0xE041, 0xE000, 0xD965, 0xFF9E, 0xFFDF, 0xFFFF, 0xF4D2, 0xE8E2, 0xE9A5, 0xE9E5, 0xE183, 0xAAAA, 0xF7FF, // 0x0280 (640) +0xFFFF, 0xCC10, 0xA000, 0xA861, 0xB061, 0xB061, 0xB882, 0xF6DB, 0xFFFF, 0xFFDF, 0xF75D, 0xC124, 0xC800, 0xD000, 0xD000, 0xD800, // 0x0290 (656) +0xD800, 0xE000, 0xE020, 0xE000, 0xD861, 0xF638, 0xFFFF, 0xFFDF, 0xFFDF, 0xEA68, 0xE943, 0xE9C5, 0xEA06, 0xE1A4, 0xB2CA, 0xF7FF, // 0x02A0 (672) +0xFFFF, 0xCC10, 0xA000, 0xA820, 0xB000, 0xB000, 0xB000, 0xCA49, 0xFFFF, 0xFFDF, 0xFFFF, 0xF71C, 0xCA08, 0xC800, 0xD000, 0xD800, // 0x02B0 (688) +0xD800, 0xD800, 0xD800, 0xD944, 0xEE18, 0xFFFF, 0xFFBE, 0xFFFF, 0xF4F2, 0xE902, 0xE9A5, 0xE9C5, 0xEA06, 0xE9A4, 0xB2CA, 0xF7FF, // 0x02C0 (704) +0xFFFF, 0xD410, 0xA800, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xDC10, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xED96, 0xDAEB, 0xD1A6, // 0x02D0 (720) +0xD965, 0xDA69, 0xECD3, 0xFF9E, 0xFFFF, 0xFFBE, 0xFFFF, 0xFE17, 0xE923, 0xE964, 0xE9A5, 0xE9C5, 0xEA26, 0xE9C4, 0xBACA, 0xF7FF, // 0x02E0 (736) +0xF7FF, 0xD410, 0xA800, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xB800, 0xE3EF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF5B6, 0xE923, 0xE923, 0xE984, 0xE9A5, 0xE9E5, 0xEA26, 0xE9C5, 0xBACA, 0xF7FF, // 0x0300 (768) +0xF7FF, 0xDC10, 0xB000, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xC000, 0xC000, 0xD228, 0xF638, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFEFB, 0xF3AE, 0xE0C1, 0xE903, 0xE964, 0xE984, 0xE9A5, 0xE9E5, 0xEA26, 0xE9E5, 0xC2CA, 0xF7DF, // 0x0320 (800) +0xF7FF, 0xDC51, 0xB800, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xC000, 0xC000, 0xC000, 0xC800, 0xD9E7, 0xEC30, 0xF5D7, 0xFE9A, // 0x0330 (816) +0xFEBA, 0xF618, 0xF4D3, 0xEACB, 0xE0E2, 0xE040, 0xE903, 0xE943, 0xE943, 0xE984, 0xE9A5, 0xE9E5, 0xEA26, 0xEA05, 0xC30C, 0xF7DF, // 0x0340 (832) +0xFFFF, 0xD575, 0xD104, 0xA820, 0xB000, 0xB800, 0xB800, 0xC000, 0xC000, 0xC000, 0xC820, 0xC800, 0xD000, 0xD000, 0xD800, 0xD800, // 0x0350 (848) +0xE000, 0xE000, 0xE000, 0xE000, 0xE0A1, 0xE0E3, 0xE903, 0xE943, 0xE964, 0xE984, 0xE9C5, 0xE9C5, 0xF226, 0xE227, 0xBC10, 0xF7FF, // 0x0360 (864) +0xFFFF, 0xDF3C, 0xCAAA, 0xD186, 0xB082, 0xB000, 0xB800, 0xB800, 0xB800, 0xC000, 0xC000, 0xC800, 0xC800, 0xD000, 0xD000, 0xD800, // 0x0370 (880) +0xD800, 0xE000, 0xE020, 0xE040, 0xE061, 0xE0A1, 0xE0C2, 0xE102, 0xE123, 0xE943, 0xE984, 0xEA26, 0xFB0A, 0xBA08, 0xCE38, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFDF, 0xBDD7, 0xCA69, 0xE248, 0xD207, 0xD1C6, 0xD1C6, 0xD9C7, 0xD9C7, 0xE1C7, 0xE1C7, 0xE1C7, 0xE9C7, 0xE9C7, 0xE9C7, // 0x0390 (912) +0xF1C6, 0xF1C7, 0xF1E7, 0xF207, 0xF228, 0xF248, 0xF269, 0xF289, 0xF2A9, 0xF2CA, 0xFB0A, 0xF2EA, 0xC207, 0xACB3, 0xF7BE, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xF7BE, 0xBDF7, 0xAB8E, 0xC2EB, 0xC2EB, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xCB0B, 0xCAEB, // 0x03B0 (944) +0xCAEB, 0xCACA, 0xCACA, 0xCAAA, 0xCAAA, 0xCA8A, 0xCA69, 0xC269, 0xC269, 0xC289, 0xBA69, 0xA2CB, 0xAD34, 0xEF7D, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xDF3C, 0xBE39, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, // 0x03D0 (976) +0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xBE38, 0xD71C, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/icon2.c b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/icon2.c new file mode 100644 index 0000000..3bcc564 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/icon2.c @@ -0,0 +1,74 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: video.png +// Time generated: 14.10.2010 21:53:17 +// Dimensions : 32x32 pixels +// Size : 2 048 Bytes + +#include + +const unsigned short icon2[0x400] PROGMEM ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE71C, 0xB5B6, 0x94B2, 0x8C71, // 0x0030 (48) +0x9492, 0xA534, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x9CF3, 0x73AE, 0x6B6D, 0x73AE, 0x7BCF, // 0x0050 (80) +0x7BEF, 0x7BCF, 0x7BEF, 0xA534, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x7BCF, 0x6B6D, 0x738E, 0x7BCF, 0x8C71, 0x9492, // 0x0070 (112) +0x9492, 0x9492, 0x9492, 0x8C51, 0x8C71, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x738E, 0x738E, 0x73AE, 0x6B4D, 0x8410, 0x9CF3, 0x9CF3, // 0x0090 (144) +0x9CF3, 0x9CF3, 0x9CF3, 0x9CF3, 0x94B2, 0x7BEF, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x738E, 0x7BEF, 0x8410, 0x632C, 0x4A69, 0x9492, 0xAD75, 0xAD55, // 0x00B0 (176) +0xAD55, 0xAD55, 0xAD55, 0xA534, 0xAD55, 0x9492, 0x8430, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBDF7, 0x7BCF, 0x8430, 0x7BCF, 0x6B4D, 0x528A, 0x6B6D, 0xB5B6, 0xB5B6, 0xB5B6, // 0x00D0 (208) +0xB5B6, 0xB596, 0xB596, 0xAD75, 0xAD75, 0xAD55, 0x8410, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0x7BEF, 0x9CD3, 0xA514, 0x5AEB, 0x630C, 0x6B4D, 0x9492, 0xC638, 0xC618, 0xC618, // 0x00F0 (240) +0xBDF7, 0xBDF7, 0xC618, 0xB5B6, 0xB5B6, 0xB596, 0x9492, 0x8C51, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x8C71, 0x94B2, 0xAD55, 0xB5B6, 0x738E, 0x6B4D, 0x632C, 0xB596, 0xD69A, 0xCE59, 0xCE59, // 0x0110 (272) +0xCE79, 0xCE59, 0x6B6D, 0x9492, 0xB5B6, 0xBDF7, 0x9CF3, 0x8430, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB5B6, 0x8C51, 0xAD55, 0xB5B6, 0xCE79, 0x8C51, 0x630C, 0x8C51, 0xCE79, 0xD6BA, 0xD69A, 0xDEDB, // 0x0130 (304) +0xBDD7, 0x8C51, 0x4228, 0x2965, 0xAD55, 0xC638, 0xA534, 0x8430, 0xB5B6, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x8C51, 0xA514, 0xB5B6, 0xC618, 0xD6BA, 0xB5B6, 0xB596, 0xE71C, 0xDEFB, 0xDEFB, 0xE71C, 0xAD55, // 0x0150 (336) +0x738E, 0x7BEF, 0x5AEB, 0x2945, 0xC638, 0xCE59, 0xA534, 0x9492, 0xA534, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x94B2, 0xB5B6, 0xC618, 0xCE79, 0xD6BA, 0xE73C, 0xEF7D, 0xE73C, 0xEF5D, 0xE73C, 0x9CF3, 0x738E, // 0x0170 (368) +0x7BCF, 0x8430, 0x6B6D, 0x2965, 0xB596, 0xD69A, 0xAD55, 0x94B2, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xF79E, 0x9492, 0x9CF3, 0xB5B6, 0xD69A, 0xDEFB, 0xE71C, 0xE73C, 0x6B6D, 0x528A, 0xDEDB, 0xEF5D, 0x7BEF, 0x8430, // 0x0190 (400) +0x7BEF, 0x8C51, 0x7BCF, 0x2104, 0xB596, 0xD6BA, 0xAD55, 0x9CD3, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0xE6FC, // 0x01A0 (416) +0xFFDF, 0xFFFF, 0xCE59, 0x9492, 0x9492, 0x6B4D, 0x7BCF, 0xBDD7, 0xF7BE, 0xA514, 0x4A49, 0x528A, 0xC638, 0xEF7D, 0x7BEF, 0x7BEF, // 0x01B0 (432) +0x7BEF, 0x8430, 0x5AEB, 0x10A2, 0xC618, 0xD69A, 0xAD55, 0x94B2, 0xA514, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE5A, 0x8BF2, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xAD55, 0x94B2, 0x8C51, 0x5AEB, 0x632C, 0xBDD7, 0xE73C, 0x630C, 0x632C, 0xBDF7, 0xFFDF, 0xEF5D, 0xBDD7, 0xB5B6, // 0x01D0 (464) +0xAD75, 0xAD75, 0x8C51, 0x738E, 0xD69A, 0xCE59, 0xB596, 0x8C51, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xCE39, 0x7350, // 0x01E0 (480) +0xFFFF, 0xF79E, 0x94B2, 0x94B2, 0x7BCF, 0x5AEB, 0x738E, 0xD6BA, 0xD69A, 0x2104, 0x6B6D, 0xF79E, 0xF79E, 0xF79E, 0xF7BE, 0xF79E, // 0x01F0 (496) +0xEF7D, 0xEF5D, 0xE73C, 0xE73C, 0xDEFB, 0xBDF7, 0xBDF7, 0x7BEF, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD36, 0x7350, // 0x0200 (512) +0xFFFF, 0xDEDB, 0x8C51, 0x94B2, 0x738E, 0x632C, 0x73AE, 0xCE79, 0xF7BE, 0x7BEF, 0xA514, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0210 (528) +0xE73C, 0xE71C, 0xDEFB, 0xDEDB, 0xDEDB, 0xBDD7, 0xBDF7, 0x73AE, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x9C75, 0x736F, // 0x0220 (544) +0xFFFF, 0xCE59, 0x8430, 0x94B2, 0x6B4D, 0x6B4D, 0xB596, 0xE73C, 0xEF7D, 0xFFFF, 0xFFFF, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0230 (560) +0xE73C, 0xE73C, 0xDEFB, 0xDEFB, 0xD6BA, 0xC618, 0xAD55, 0x8C71, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0x6AEF, 0x9492, // 0x0240 (576) +0xFFFF, 0xBDF7, 0x8430, 0x8C71, 0x6B6D, 0xB596, 0xE71C, 0xE73C, 0xEF5D, 0xE73C, 0xBDF7, 0xCE59, 0xF7BE, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0250 (592) +0xE73C, 0xE71C, 0xDEFB, 0xDEFB, 0xC638, 0xD69A, 0x8410, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x9474, 0x6B0E, 0xCE59, // 0x0260 (608) +0xFFFF, 0xB5B6, 0x8410, 0x9492, 0xBDD7, 0xD6BA, 0xD6BA, 0xE71C, 0xE73C, 0x8C71, 0x6B4D, 0xA514, 0xF7BE, 0xEF5D, 0xEF5D, 0xE73C, // 0x0270 (624) +0xE73C, 0xE71C, 0xDEFB, 0xDEDB, 0xCE59, 0xC618, 0x7BCF, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC5F9, 0x7B51, 0x7BEF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xB596, 0x8C71, 0xAD75, 0xBDF7, 0xCE59, 0xD69A, 0xE71C, 0xCE79, 0x8410, 0x8410, 0x9CD3, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, // 0x0290 (656) +0xE71C, 0xDEFB, 0xDEFB, 0xCE59, 0xDEDB, 0x8C71, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEBB, 0x83B2, 0x630C, 0xE73C, 0xFFFF, // 0x02A0 (672) +0xFFFF, 0xB5B6, 0x9492, 0xAD55, 0xBDD7, 0xC638, 0xCE79, 0xDEFB, 0xB596, 0x73AE, 0x8410, 0x8410, 0xDEDB, 0xE73C, 0xE71C, 0xE71C, // 0x02B0 (688) +0xDEFB, 0xDEFB, 0xD6BA, 0xCE59, 0xC618, 0x738E, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDC, 0x8C14, 0x5ACC, 0xC658, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xC638, 0x8C51, 0xA534, 0xB5B6, 0xBDF7, 0xCE59, 0xD6BA, 0x94B2, 0x738E, 0x8410, 0x8430, 0xCE59, 0xE73C, 0xDEFB, 0xDEFB, // 0x02D0 (720) +0xDEDB, 0xDEFB, 0xBDF7, 0xDEDB, 0x73AE, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDC, 0x8BD2, 0x5ACC, 0xBDD6, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xDEDB, 0x8C51, 0xA514, 0xAD75, 0xBDD7, 0xC638, 0xC618, 0x73AE, 0x7BCF, 0x8410, 0x5ACB, 0x8C51, 0xE73C, 0xDEDB, 0xD6BA, // 0x02F0 (752) +0xDEFB, 0xBDD7, 0xD69A, 0x8C71, 0x8C51, 0xFFFF, 0xFFFF, 0xFFDE, 0xCE5A, 0x7B71, 0x62ED, 0xBDF7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xF7BE, 0x94B2, 0x94B2, 0xA534, 0xB596, 0xBDF7, 0xB596, 0x6B6D, 0x4208, 0x2945, 0x18C3, 0x6B6D, 0xDEFB, 0xD69A, 0xDEDB, // 0x0310 (784) +0xB5B6, 0xC618, 0x9CF3, 0x6B4D, 0xFFDE, 0xFFFF, 0xEF5D, 0xAD37, 0x62EE, 0x6B4D, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFDF, 0xFFFF, 0xBDF7, 0x8C51, 0xA514, 0xAD55, 0xB596, 0xBDD7, 0xA514, 0x738E, 0xA514, 0xB5B6, 0xCE59, 0xD69A, 0xDEDB, 0xB596, // 0x0330 (816) +0xBDF7, 0xA534, 0x6B4C, 0xEF5D, 0xF79E, 0xBDB8, 0x7370, 0x5AAC, 0x8C71, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xF79E, 0x94B2, 0x94B2, 0xA534, 0xAD55, 0xB5B6, 0xA534, 0xBDD7, 0xD69A, 0xCE59, 0xCE79, 0xCE59, 0xA534, 0x8430, // 0x0350 (848) +0x738E, 0x3186, 0x7BB0, 0x8C33, 0x7370, 0x62ED, 0x8410, 0xCE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x8C71, 0x9CD3, 0xAD55, 0xB596, 0xBDD7, 0xBDD7, 0xBDF7, 0xC618, 0xB5B6, 0xA534, 0xA534, 0x632C, // 0x0370 (880) +0x6B6D, 0xB5B6, 0xAD76, 0xAD76, 0xBE17, 0xE71B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x94B2, 0x8C51, 0x94B2, 0xA534, 0xAD55, 0xAD55, 0x9CD3, 0x8C71, 0x73AE, 0x632C, 0xA534, // 0x0390 (912) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xCE59, 0xA514, 0x8430, 0x7BCF, 0x738E, 0x73AE, 0x8410, 0xA534, 0xEF7D, 0xFFFF, // 0x03B0 (944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xE73C, 0xE71C, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/tux.c b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/tux.c new file mode 100644 index 0000000..6c2e1e4 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Bitmap_128x128/tux.c @@ -0,0 +1,266 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: tux_64x64.png +// Time generated: 14.10.2010 21:56:38 +// Dimensions : 64x64 pixels +// Size : 8 192 Bytes + +#include + +const unsigned short tux[0x1000] PROGMEM ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE79, 0x9CF3, 0x7BCF, 0x738E, 0x738E, // 0x0020 (32) +0x6B6D, 0x94B2, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE79, 0x6B4D, 0x5ACB, 0x8410, 0x9CF3, 0x9CF3, 0x9CF3, // 0x0060 (96) +0x9CD3, 0x73AE, 0x4208, 0x5ACB, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA514, 0x3186, 0x8C51, 0xBDF7, 0xC618, 0xBDF7, 0xBDF7, 0xBDF7, // 0x00A0 (160) +0xBDF7, 0xC618, 0xBDD7, 0x738E, 0x18C3, 0x8C51, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00B0 (176) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xBDD7, 0x10A2, 0x8C71, 0x9CF3, 0x8C71, 0x8C71, 0x8C71, 0x8C71, 0x8C71, // 0x00E0 (224) +0x8C71, 0x8C51, 0x8C51, 0x9CF3, 0x73AE, 0x0000, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0110 (272) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x2945, 0x31A6, 0x7BCF, 0x6B4D, 0x6B6D, 0x6B6D, 0x6B6D, 0x6B6D, 0x6B6D, // 0x0120 (288) +0x6B6D, 0x6B6D, 0x6B6D, 0x6B4D, 0x73AE, 0x2124, 0x0000, 0xAD55, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0130 (304) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0150 (336) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xC638, 0x0000, 0x31A6, 0x52AA, 0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x4A69, // 0x0160 (352) +0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x528A, 0x2104, 0x0000, 0x2965, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C71, 0x0000, 0x1082, 0x3186, 0x3186, 0x3186, 0x3186, 0x3186, 0x3186, 0x3186, // 0x01A0 (416) +0x3186, 0x3186, 0x3186, 0x3186, 0x2965, 0x0020, 0x0000, 0x0000, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01D0 (464) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x630C, 0x0000, 0x0000, 0x0861, 0x18C3, 0x10A2, 0x10A2, 0x10A2, 0x10A2, 0x18C3, // 0x01E0 (480) +0x1082, 0x0841, 0x1082, 0x10A2, 0x0020, 0x0000, 0x0000, 0x0000, 0x528A, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01F0 (496) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0210 (528) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x4A49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0220 (544) +0x0861, 0x3186, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0230 (560) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0250 (592) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x39C7, 0x0000, 0x3186, 0xAD75, 0x8C51, 0x0841, 0x0000, 0x0000, 0x0000, 0x4208, // 0x0260 (608) +0xD6BA, 0xFFDF, 0xE71C, 0x630C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0270 (624) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0290 (656) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x39C7, 0x0000, 0xCE59, 0xFFFF, 0xFFFF, 0x94B2, 0x0000, 0x0000, 0x10A2, 0xE73C, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x94B2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02B0 (688) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02D0 (720) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2965, 0x18E3, 0xDEDB, 0x7BCF, 0xAD75, 0xEF5D, 0x2944, 0x0000, 0x5ACA, 0xFFFF, // 0x02E0 (736) +0xAD55, 0x94B2, 0xAD55, 0xF7BE, 0x8410, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x39E7, 0x2945, 0xA514, 0x9CF3, 0x8C71, 0xD6BB, 0x39C9, 0x0000, 0x632E, 0xF7DF, // 0x0320 (800) +0x7BEF, 0xAD54, 0x7BEF, 0xBDF7, 0xB596, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C71, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x4A49, 0x18C3, 0x9492, 0x39E7, 0x3187, 0xA48F, 0x8323, 0x5A00, 0x93A6, 0xCDD5, // 0x0360 (864) +0x4209, 0x4249, 0x2965, 0x9CD2, 0xB575, 0x0000, 0x0000, 0x0000, 0x0000, 0x9492, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x5ACB, 0x0000, 0x9D14, 0x2905, 0x6A40, 0xE643, 0xFFAE, 0xFFF3, 0xFF70, 0xDD86, // 0x03A0 (928) +0x7240, 0x1840, 0x18C3, 0xC65A, 0x73CF, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x738E, 0x0000, 0x5A6A, 0xD566, 0xFF66, 0xFFF8, 0xFFFD, 0xFFDC, 0xFFFD, 0xFFFA, // 0x03E0 (992) +0xFF0E, 0xE566, 0xC464, 0xC4CC, 0x2103, 0x0000, 0x0000, 0x0000, 0x0000, 0x6B6D, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0410 (1040) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7BEF, 0x0800, 0xB440, 0xFFC6, 0xFFF3, 0xFFB4, 0xFFB2, 0xFF92, 0xFF72, 0xFF53, // 0x0420 (1056) +0xFF55, 0xFF75, 0xFEF0, 0xF542, 0x8240, 0x0000, 0x0000, 0x0000, 0x0000, 0x4228, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0430 (1072) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0440 (1088) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0450 (1104) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8432, 0x4140, 0xFFE2, 0xFFEB, 0xFFAC, 0xFF8B, 0xFF4C, 0xFF2C, 0xFEEC, 0xFECB, // 0x0460 (1120) +0xFE6A, 0xFE08, 0xFDA7, 0xFDC3, 0xA320, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0470 (1136) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0490 (1168) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x9D14, 0x28A0, 0xF6E0, 0xFFE1, 0xFF43, 0xFF04, 0xFEC4, 0xFE84, 0xFE23, 0xFDE1, // 0x04A0 (1184) +0xFD60, 0xFD20, 0xFD20, 0xFD20, 0x7241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04B0 (1200) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04C0 (1216) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04D0 (1232) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xB5B6, 0x0000, 0xC4A9, 0xFEC0, 0xFF00, 0xFEA0, 0xFE40, 0xFE00, 0xFDA0, 0xFD60, // 0x04E0 (1248) +0xFD40, 0xFD20, 0xEC80, 0xDCC7, 0x8C0F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04F0 (1264) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0500 (1280) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0510 (1296) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xAD75, 0x0000, 0xD69B, 0xF631, 0xF5C0, 0xFE80, 0xFE00, 0xFDC0, 0xFD60, 0xFD40, // 0x0520 (1312) +0xFCC0, 0xDC86, 0xCD93, 0xE73D, 0xE71C, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0530 (1328) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0540 (1344) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0550 (1360) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x632C, 0x0000, 0xD6BA, 0xFFFF, 0xF5F1, 0xFD40, 0xFD80, 0xFD20, 0xFCE0, 0xECA3, // 0x0560 (1376) +0xDD6F, 0xE6FC, 0xFFFF, 0xFFFF, 0xFFFF, 0x632C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ACB, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0570 (1392) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0580 (1408) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0590 (1424) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xDEDB, 0x0861, 0x0000, 0xD69A, 0xFFFF, 0xFFFF, 0xFED8, 0xF631, 0xF610, 0xE5F2, 0xE6B9, // 0x05A0 (1440) +0xF7BF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xE71C, 0x10A2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05B0 (1456) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05C0 (1472) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05D0 (1488) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x39E7, 0x0000, 0x4228, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7FF, 0xF7DF, 0xFFFF, // 0x05E0 (1504) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3186, 0xEF7D, 0xFFFF, 0xFFFF, // 0x05F0 (1520) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0600 (1536) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0610 (1552) +0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x738E, 0x0000, 0x18C3, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0620 (1568) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFFF, 0xCE59, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6B4D, 0xFFFF, 0xFFFF, // 0x0630 (1584) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0640 (1600) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0650 (1616) +0xFFFF, 0xFFDF, 0xFFFF, 0xA514, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0660 (1632) +0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0x2965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAD55, 0xFFFF, // 0x0670 (1648) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0680 (1664) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0690 (1680) +0xFFDF, 0xFFFF, 0xD69A, 0x0861, 0x0000, 0x2945, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06A0 (1696) +0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xFFFF, 0x7BCF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C3, 0xD6BA, // 0x06B0 (1712) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06C0 (1728) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06D0 (1744) +0xFFFF, 0xFFDF, 0x39C7, 0x0000, 0x0000, 0x8430, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06E0 (1760) +0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xFFFF, 0xCE79, 0x0841, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4228, // 0x06F0 (1776) +0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0700 (1792) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x0710 (1808) +0xFFFF, 0x94B2, 0x0000, 0x0020, 0x0020, 0xCE79, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x0720 (1824) +0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xFFDF, 0x4A69, 0x0000, 0x0841, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, // 0x0730 (1840) +0x8C71, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0740 (1856) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0750 (1872) +0xEF7D, 0x2104, 0x0020, 0x0000, 0x3186, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, // 0x0760 (1888) +0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xFFFF, 0xB5B6, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, // 0x0770 (1904) +0x10A2, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0780 (1920) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, // 0x0790 (1936) +0x8C71, 0x0000, 0x0861, 0x0000, 0x7BCF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x07A0 (1952) +0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xFFDF, 0x528A, 0x0000, 0x0841, 0x0020, 0x0020, 0x0020, 0x0020, // 0x07B0 (1968) +0x0000, 0x630C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x07C0 (1984) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, // 0x07D0 (2000) +0x3186, 0x0000, 0x0841, 0x10A2, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x07E0 (2016) +0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xEF5D, 0xF7BE, 0xBDD7, 0x0841, 0x0861, 0x0841, 0x0841, 0x0841, 0x0020, // 0x07F0 (2032) +0x0020, 0x1082, 0xC638, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0800 (2048) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBDD7, // 0x0810 (2064) +0x0020, 0x1082, 0x0000, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, // 0x0820 (2080) +0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF7D, 0x4208, 0x0020, 0x0861, 0x0861, 0x0841, 0x0841, // 0x0830 (2096) +0x0841, 0x0000, 0x630C, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0840 (2112) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x6B4D, // 0x0850 (2128) +0x0000, 0x0861, 0x2104, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, // 0x0860 (2144) +0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xE73C, 0xF7BE, 0x8430, 0x0000, 0x1082, 0x0861, 0x0861, 0x0861, // 0x0870 (2160) +0x0861, 0x0020, 0x18C3, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0880 (2176) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x2124, // 0x0890 (2192) +0x0861, 0x0020, 0x8410, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, // 0x08A0 (2208) +0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xEF7D, 0xB5B6, 0x0861, 0x1082, 0x1082, 0x0861, 0x0861, // 0x08B0 (2224) +0x0861, 0x0861, 0x0000, 0x8430, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x08C0 (2240) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xA514, 0x0020, // 0x08D0 (2256) +0x10A2, 0x1082, 0xD69A, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, // 0x08E0 (2272) +0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xEF5D, 0xCE79, 0x2124, 0x1082, 0x10A2, 0x1082, 0x1082, // 0x08F0 (2288) +0x0861, 0x1082, 0x0000, 0x4208, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0900 (2304) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x4208, 0x0861, // 0x0910 (2320) +0x1082, 0x31A6, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, // 0x0920 (2336) +0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEDB, 0x39C7, 0x1082, 0x10A2, 0x10A2, 0x1082, // 0x0930 (2352) +0x1082, 0x1082, 0x0841, 0x18C3, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0940 (2368) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA534, 0x0841, 0x18C3, // 0x0950 (2384) +0x0841, 0x630C, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, // 0x0960 (2400) +0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xDEFB, 0xE73C, 0x4A49, 0x0861, 0x18C3, 0x10A2, 0x10A2, // 0x0970 (2416) +0x10A2, 0x1082, 0x1082, 0x0841, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0980 (2432) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x3186, 0x1082, 0x18E3, // 0x0990 (2448) +0x0861, 0x94B2, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, // 0x09A0 (2464) +0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEDB, 0xE73C, 0x4A69, 0x1082, 0x18E3, 0x18C3, 0x10A2, // 0x09B0 (2480) +0x10A2, 0x10A2, 0x10A2, 0x0020, 0x73AE, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x09C0 (2496) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0841, 0x18E3, 0x18E3, // 0x09D0 (2512) +0x0861, 0xAD75, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, // 0x09E0 (2528) +0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEDB, 0xE73C, 0x52AA, 0x10A2, 0x2104, 0x18E3, 0x18C3, // 0x09F0 (2544) +0x18C3, 0x18C3, 0x10A2, 0x0841, 0x630C, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A00 (2560) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x632C, 0x0861, 0x18E4, 0x18E4, // 0x0A10 (2576) +0x1082, 0xC638, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, // 0x0A20 (2592) +0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xD6BA, 0xE71C, 0x6B4D, 0x10A2, 0x18C3, 0x18C3, 0x10A2, // 0x0A30 (2608) +0x10A2, 0x10A2, 0x18C3, 0x0861, 0x5AEB, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A40 (2624) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8410, 0x0862, 0x3143, 0x2924, // 0x0A50 (2640) +0x0882, 0xBDD7, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0A60 (2656) +0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xE73C, 0x630C, 0x2103, 0x4A69, 0x632C, 0x6B4D, // 0x0A70 (2672) +0x528A, 0x2965, 0x18C3, 0x1081, 0x738E, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A80 (2688) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x7A40, 0xECA0, 0xCC00, // 0x0A90 (2704) +0x3941, 0xA535, 0xFFFF, 0xF7BE, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, // 0x0AA0 (2720) +0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEFB, 0xD6DB, 0xCE38, 0xC618, 0x4A48, 0x4A49, 0x6B6D, 0x6B4D, 0x6B4D, // 0x0AB0 (2736) +0x6B4D, 0x630C, 0x3186, 0x18E4, 0x9492, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0AC0 (2752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xC488, 0xFD41, 0xFE6D, 0xFE6A, // 0x0AD0 (2768) +0xDC60, 0x5A25, 0xB5D8, 0xFFFF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, // 0x0AE0 (2784) +0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xD6BB, 0xBCAB, 0xD462, 0xD462, 0x49E4, 0x10C3, 0x18C3, 0x18C3, 0x18C3, // 0x0AF0 (2800) +0x18C3, 0x18E3, 0x10A3, 0x49C4, 0xB575, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B00 (2816) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCD70, 0xECA0, 0xFF14, 0xFF9B, 0xFF7B, // 0x0B10 (2832) +0xFECF, 0xC3A0, 0x3143, 0x9CF3, 0xFFFF, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, // 0x0B20 (2848) +0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEFB, 0xC617, 0xDC60, 0xFD60, 0xFD20, 0x3120, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B30 (2864) +0x0000, 0x0000, 0x3900, 0xE460, 0xB46A, 0xEF9F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B40 (2880) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD5F4, 0xDC20, 0xFE8E, 0xFF59, 0xFF36, 0xFF36, // 0x0B50 (2896) +0xFF59, 0xFE6B, 0xA300, 0x18E4, 0x8410, 0xFFBE, 0xF7BE, 0xEF7D, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, // 0x0B60 (2912) +0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEBA, 0xDEFB, 0xC5B5, 0xE4A1, 0xFEF2, 0xF716, 0x3164, 0x18E4, 0x2103, 0x1082, 0x1082, // 0x0B70 (2928) +0x0021, 0x1061, 0xD5D0, 0xFE27, 0xB3E3, 0xCE9B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B80 (2944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77D, 0xE697, 0xDDAF, 0xD4C8, 0xE480, 0xFE29, 0xFF36, 0xFF15, 0xFF35, 0xFF15, // 0x0B90 (2960) +0xFF15, 0xFF36, 0xFDA5, 0x6A42, 0x1905, 0x6B4C, 0xE73C, 0xFFDF, 0xEF5D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, // 0x0BA0 (2976) +0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, 0xDEDB, 0xBDB5, 0xE4C3, 0xFF56, 0xFFDB, 0xAD10, 0x10A2, 0x10C3, 0x18E4, 0x1082, // 0x0BB0 (2992) +0x2922, 0xC5B1, 0xFFDC, 0xFED1, 0xB3A2, 0xBE19, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0BC0 (3008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE6B8, 0xD484, 0xE4C0, 0xF584, 0xFE28, 0xFECF, 0xFF14, 0xFF13, 0xFF13, 0xFF13, 0xFF13, // 0x0BD0 (3024) +0xFF13, 0xFF14, 0xFEF0, 0xDC80, 0x41C5, 0x2945, 0x5269, 0xCE59, 0xF7BE, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, // 0x0BE0 (3040) +0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, 0xD69A, 0xD6DB, 0xBD95, 0xE4E2, 0xFF33, 0xFF36, 0xFF97, 0xDDF1, 0x8B66, 0x7AE4, 0x9BC7, // 0x0BF0 (3056) +0xEEB2, 0xFF97, 0xFF37, 0xFEF0, 0xC3E0, 0xB5B7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C00 (3072) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD52B, 0xFD60, 0xFECD, 0xFF33, 0xFF13, 0xFF12, 0xFEF1, 0xFEF1, 0xFEF1, 0xFEF1, 0xFEF1, // 0x0C10 (3088) +0xFEF1, 0xFEF1, 0xFF12, 0xFE69, 0x9B41, 0x31A8, 0x31A6, 0x39E7, 0xB5B6, 0xF79E, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, // 0x0C20 (3104) +0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD699, 0xD6BA, 0xBD94, 0xE502, 0xFF12, 0xFF15, 0xFEF4, 0xFF55, 0xFF95, 0xFF54, 0xFF95, // 0x0C30 (3120) +0xFF35, 0xFEF4, 0xFF14, 0xFF14, 0xF5A4, 0xB426, 0xE75E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C40 (3136) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD54C, 0xFDA0, 0xFECE, 0xFEF0, 0xFECF, 0xFEEF, 0xFEEF, 0xFEF0, 0xFEEF, 0xFEF0, 0xFEF0, // 0x0C50 (3152) +0xFEF0, 0xFEEF, 0xFEF0, 0xFEEF, 0xF582, 0x6244, 0x39E8, 0x39C6, 0x528A, 0xE71C, 0xE73C, 0xE71C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, // 0x0C60 (3168) +0xDEDB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, 0xCE79, 0xCE9A, 0xBD94, 0xE522, 0xFF10, 0xFEF2, 0xFEF2, 0xFEF2, 0xFEF2, 0xFEF2, 0xFEF2, // 0x0C70 (3184) +0xFEF2, 0xFF12, 0xFEF2, 0xFEF2, 0xFF12, 0xED85, 0xBC68, 0xE73D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C80 (3200) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD5B0, 0xF580, 0xFECB, 0xFEEE, 0xFECD, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, // 0x0C90 (3216) +0xFEEE, 0xFEEE, 0xFECD, 0xFECE, 0xFECA, 0xCC60, 0x41C7, 0x39C7, 0x4228, 0xCE79, 0xEF5D, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, // 0x0CA0 (3232) +0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, 0xCE79, 0xCE59, 0xCE9A, 0xBD73, 0xED42, 0xFF0F, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, // 0x0CB0 (3248) +0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFF31, 0xF628, 0xC4A7, 0xDE57, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0CC0 (3264) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDE13, 0xF560, 0xFEC9, 0xFECD, 0xFECC, 0xFECC, 0xFECC, 0xFECC, 0xFECC, 0xFECC, 0xFECC, // 0x0CD0 (3280) +0xFEEC, 0xFEEC, 0xFECC, 0xFECC, 0xFEED, 0xFE44, 0x9323, 0x52CC, 0x73AE, 0xD69A, 0xE73C, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, // 0x0CE0 (3296) +0xD6BA, 0xD6BA, 0xD69A, 0xCE79, 0xCE59, 0xD69A, 0xB5D8, 0x7B28, 0xF5A2, 0xFF0F, 0xFECE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, // 0x0CF0 (3312) +0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFECD, 0xFF10, 0xFEA9, 0xCC60, 0xD615, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D00 (3328) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDE55, 0xED80, 0xFEA4, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFEC9, // 0x0D10 (3344) +0xFEA7, 0xFEA6, 0xFEA8, 0xFEC9, 0xFECB, 0xFEEA, 0xEDA2, 0xB4F0, 0xCE9A, 0xDEFB, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, // 0x0D20 (3360) +0xD6BA, 0xD69A, 0xCE79, 0xCE79, 0xD6BA, 0xB596, 0x4A8B, 0x72A4, 0xFE45, 0xFEEC, 0xFECC, 0xFEEC, 0xFEEC, 0xFEEC, 0xFEEC, 0xFEEC, // 0x0D30 (3376) +0xFEEC, 0xFECB, 0xFECB, 0xFEEC, 0xFEEC, 0xFEEC, 0xFECC, 0xFEA5, 0xFDE0, 0xAC8B, 0xE75E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D40 (3392) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE632, 0xF5E0, 0xFE80, 0xFE82, 0xFEC7, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC7, 0xFEA4, 0xFE61, // 0x0D50 (3408) +0xFE60, 0xFE60, 0xFE60, 0xFE61, 0xFE83, 0xFEA6, 0xFEA3, 0xDD22, 0xD658, 0xE75D, 0xDEDB, 0xDEDB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, // 0x0D60 (3424) +0xD69A, 0xD69A, 0xD6BA, 0xCE59, 0x9492, 0x5289, 0x39E9, 0x9B84, 0xFEA3, 0xFEEB, 0xFEEA, 0xFEEA, 0xFEEA, 0xFEEA, 0xFEEA, 0xFEC8, // 0x0D70 (3440) +0xFE84, 0xFE61, 0xFE61, 0xFEA5, 0xFEC9, 0xFEA7, 0xFEA2, 0xFE80, 0xBC41, 0x8C0F, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D80 (3456) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDDCE, 0xFE40, 0xFEA0, 0xFE80, 0xFE80, 0xFEA2, 0xFEA2, 0xFEA2, 0xFEA0, 0xFE80, 0xFE80, // 0x0D90 (3472) +0xFEA0, 0xFEA0, 0xFEA0, 0xFE80, 0xFE80, 0xFE80, 0xFE80, 0xFE80, 0xCCE5, 0xD69A, 0xE73C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, // 0x0DA0 (3488) +0xD69A, 0xBDF7, 0x9CD3, 0x630C, 0x4228, 0x4A69, 0x422A, 0xB423, 0xFEC0, 0xFEA5, 0xFEE7, 0xFEC7, 0xFEC7, 0xFEC6, 0xFEA3, 0xFE80, // 0x0DB0 (3504) +0xFE80, 0xFE80, 0xFE80, 0xFE60, 0xFEA0, 0xFEC0, 0xEDC0, 0xA3A4, 0x732C, 0xAD96, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0DC0 (3520) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE5A8, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0DD0 (3536) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, 0xF640, 0x93A8, 0x8C72, 0xA534, 0xAD75, 0xA534, 0x9CF3, 0x8C51, // 0x0DE0 (3552) +0x738E, 0x5ACB, 0x4A49, 0x4A69, 0x528A, 0x4A8A, 0x5249, 0xD502, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC1, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, // 0x0DF0 (3568) +0xFEA0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFE60, 0xC482, 0x7B09, 0x7BD0, 0xB5B7, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E00 (3584) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDD8A, 0xFEC0, 0xFF20, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, // 0x0E10 (3600) +0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEC0, 0xFF20, 0xAC02, 0x4209, 0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x4A69, // 0x0E20 (3616) +0x528A, 0x528A, 0x52AA, 0x52AA, 0x528A, 0x4A8A, 0x5A69, 0xE5C1, 0xFF00, 0xFEC0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, // 0x0E30 (3632) +0xFEC0, 0xFEE0, 0xFF00, 0xE561, 0x9367, 0x736E, 0x9D14, 0xD6BA, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E40 (3648) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD617, 0xCCC5, 0xF620, 0xFEE0, 0xFF40, 0xFF40, 0xFF40, 0xFF20, 0xFF00, 0xFF00, 0xFF00, // 0x0E50 (3664) +0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF40, 0xB483, 0x4A8B, 0x5ACA, 0x5ACB, 0x5ACB, 0x5ACB, 0x5ACB, // 0x0E60 (3680) +0x5ACB, 0x52AA, 0x52AA, 0x52AA, 0x52AA, 0x4A8A, 0x6289, 0xEE20, 0xFF20, 0xFEE0, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFEE0, // 0x0E70 (3696) +0xFF20, 0xFEC0, 0xBC64, 0x732B, 0x8C72, 0xCE58, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E80 (3712) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7E, 0xB576, 0x93EE, 0xA408, 0xC4A5, 0xDD63, 0xF641, 0xFEC0, 0xFF40, 0xFF80, 0xFF60, // 0x0E90 (3728) +0xFF40, 0xFF20, 0xFF20, 0xFF40, 0xFF40, 0xFF40, 0xFF20, 0xFF20, 0xFF80, 0xAC03, 0x4A6B, 0x5ACA, 0x5ACB, 0x5ACB, 0x5AEB, 0x5AEB, // 0x0EA0 (3744) +0x5AEB, 0x630C, 0x630C, 0x630C, 0x5AEB, 0x52CB, 0x5A69, 0xE5E1, 0xFF60, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF60, // 0x0EB0 (3760) +0xF640, 0xA3A7, 0x738F, 0xAD96, 0xE71C, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0EC0 (3776) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0xD6DB, 0xB5B8, 0x9CD4, 0x9431, 0x93EE, 0x9C0A, 0xB467, 0xD544, 0xF660, // 0x0ED0 (3792) +0xFF60, 0xFFA0, 0xFF80, 0xFF60, 0xFF40, 0xFF40, 0xFF60, 0xFFA0, 0xD521, 0x730A, 0x73CF, 0x8C71, 0x9CD3, 0x9CF3, 0xA514, 0xA534, // 0x0EE0 (3808) +0xAD55, 0xB596, 0xB5B6, 0xB596, 0xAD55, 0x9CF3, 0x83F0, 0xCD04, 0xFFA0, 0xFF40, 0xFF40, 0xFF40, 0xFF40, 0xFF40, 0xFFA0, 0xF621, // 0x0EF0 (3824) +0x8B49, 0x8431, 0xCE58, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F00 (3840) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF79E, 0xE73C, 0xD6BB, 0xBE19, 0xA556, 0x9472, 0x9C0D, // 0x0F10 (3856) +0xB447, 0xDD82, 0xFEE0, 0xFFA0, 0xFFC0, 0xFFC0, 0xFF80, 0xC4C2, 0x730C, 0x9CF4, 0xD69A, 0xEF5D, 0xEF7D, 0xF79E, 0xF79E, 0xF7BE, // 0x0F20 (3872) +0xF7BE, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xEF7D, 0xDF1C, 0xC530, 0xF620, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFF80, 0xE5A2, 0x834A, // 0x0F30 (3888) +0x8C93, 0xDEDA, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F40 (3904) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDE, 0xEF7D, 0xD6BB, // 0x0F50 (3920) +0xAD77, 0x9452, 0x9BEB, 0xB466, 0xC524, 0xC543, 0xA3E5, 0x734D, 0xAD76, 0xEF5C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F60 (3936) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1C, 0xACB0, 0xBCA6, 0xD544, 0xCD64, 0xCD05, 0xAC07, 0x7B6D, 0x9CF4, // 0x0F70 (3952) +0xE6FB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F80 (3968) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F90 (3984) +0xFFDE, 0xE75D, 0xC65A, 0xA536, 0x9493, 0x8C53, 0x94B4, 0xBE18, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FA0 (4000) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xDEFC, 0xAD57, 0x9493, 0x8C73, 0x8C73, 0x94D4, 0xBE18, 0xEF5D, // 0x0FB0 (4016) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FC0 (4032) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FD0 (4048) +0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xEF5C, 0xE73C, 0xEF5C, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FE0 (4064) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xEF5C, 0xE73C, 0xEF5C, 0xEF7D, 0xFFDE, 0xFFFF, // 0x0FF0 (4080) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1000 (4096) +}; diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_CPLD_PageSwitching/UTFT_CPLD_PageSwitching.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_CPLD_PageSwitching/UTFT_CPLD_PageSwitching.ino new file mode 100644 index 0000000..b3967a8 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_CPLD_PageSwitching/UTFT_CPLD_PageSwitching.ino @@ -0,0 +1,93 @@ +// UTFT_CPLD_PageSwitching (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of page switching on CPLD-based display modules.. +// +// This demo was made for modules with a screen resolution +// of 800x480 pixels. +// +// This program requires the UTFT library. +// +// NOTE: The display will be black for 10-15 seconds during the start +// + +#include + +// Declare which fonts we will be using +extern uint8_t BigFont[]; +extern uint8_t SevenSegNumFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(CPLD,38,39,40,41); + +void setup() +{ + myGLCD.InitLCD(); +} + +void loop() +{ + myGLCD.setBackColor(VGA_TRANSPARENT); + + myGLCD.setBrightness(0); + for (byte pg=0; pg<8; pg++) + { + myGLCD.setWritePage(pg); + myGLCD.clrScr(); + for (int ln=0; ln<480; ln+=2) + { + switch (pg) + { + case 0: + myGLCD.setColor(ln/2, 0, 0); + break; + case 1: + myGLCD.setColor(0, ln/2, 0); + break; + case 2: + myGLCD.setColor(0, 0, ln/2); + break; + case 3: + myGLCD.setColor(ln/4, ln/2, 0); + break; + case 4: + myGLCD.setColor(0, ln/2, ln/2); + break; + case 5: + myGLCD.setColor(ln/2, 0, ln/2); + break; + case 6: + myGLCD.setColor(ln/2, ln/2, 0); + break; + case 7: + myGLCD.setColor(0, ln/2, ln/4); + break; + } + myGLCD.drawLine(0, ln, 799, ln); + myGLCD.drawLine(0, ln+1, 799, ln+1); + } + myGLCD.setColor(VGA_WHITE); + myGLCD.setFont(BigFont); + myGLCD.print("This is page:", CENTER, 200); + myGLCD.setFont(SevenSegNumFont); + myGLCD.printNumI(pg, CENTER, 240); + } + myGLCD.setBrightness(16); + + while(1) + { + for (byte pg=0; pg<8; pg++) + { + myGLCD.setDisplayPage(pg); + delay(500); + } + } +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_128x128_Serial/UTFT_Demo_128x128_Serial.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_128x128_Serial/UTFT_Demo_128x128_Serial.ino new file mode 100644 index 0000000..45a97e6 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_128x128_Serial/UTFT_Demo_128x128_Serial.ino @@ -0,0 +1,335 @@ +// UTFT_Demo_128x128_Serial (C)2012 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made to work on the 128x128 modules. +// Any other size displays may cause strange behaviour. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Declare an instance of the class +UTFT myGLCD(LPH9135,6,5,2,3,4); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(PORTRAIT); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + byte buf[126]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + myGLCD.setContrast(64); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0,0,127,12); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0,117,127,127); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255,0,0); + myGLCD.print("Universal TFT", CENTER, 0); + myGLCD.setBackColor(64,64,64); + myGLCD.setColor(255,255,0); + myGLCD.print("H.Karlsen", LEFT, 116); + myGLCD.print("(C)2012", RIGHT, 116); + myGLCD.setColor(0,255,0); + myGLCD.drawRect(0,13,127,116); + +// Draw crosshairs + myGLCD.setColor(0,0,255); + myGLCD.drawLine(63,14,63,115); + myGLCD.drawLine(1,63,126,63); + for (int i=3; i<128; i+=10) + myGLCD.drawLine(i, 61, i, 65); + for (int i=14; i<118; i+=10) + myGLCD.drawLine(61, i, 65, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.setBackColor(0,0,0); + myGLCD.print("Sin", 2, 14); + for (int i=1; i<126; i++) + { + myGLCD.drawPixel(i,63+(sin(((i*2.85)*3.14)/180)*45)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 2, 26); + for (int i=1; i<126; i++) + { + myGLCD.drawPixel(i,63+(cos(((i*2.85)*3.14)/180)*45)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 2, 38); + for (int i=1; i<126; i++) + { + myGLCD.drawPixel(i,63+(tan(((i*2.85)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + myGLCD.setColor(0,0,255); + myGLCD.drawLine(63,14,63,115); + myGLCD.drawLine(1,63,126,63); + +// Draw a moving sinewave + x=1; + for (int i=1; i<3654; i++) + { + x++; + if (x==127) + x=1; + if (i>127) + { + if ((x==63)||(buf[x-1]==63)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=63+(sin(((i*1.3)*3.14)/180)*45); + myGLCD.drawPixel(x,y); + buf[x-1]=y; +// delay(3); + } + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(10+(i*10),10+(i*10), 60+(i*10), 60+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(70-(i*10),10+(i*10), 120-(i*10), 60+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(30+(i*10),35+(i*10), 25); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + + // Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=11; i<115; i+=3) + { + myGLCD.drawLine(1, i, i-10, 115); + } + myGLCD.setColor (255,0,0); + for (int i=112; i>14; i-=3) + { + myGLCD.drawLine(126, i, i+14, 14); + } + myGLCD.setColor (0,255,255); + for (int i=115; i>14; i-=3) + { + myGLCD.drawLine(1, i, 116-i, 14); + } + myGLCD.setColor (0,255,255); + for (int i=14; i<115; i+=3) + { + myGLCD.drawLine(126, i, 140-i, 115); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(85); + y=35+random(59); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(124); + y=15+random(101); + x2=2+random(124); + y2=15+random(101); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(124); + y=15+random(101); + x2=2+random(124); + y2=15+random(101); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random lines + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(124); + y=15+random(101); + x2=2+random(124); + y2=15+random(101); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random pixels + for (int i=0; i<5000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(124), 15+random(101)); + } + + delay (2000); + +// Set up the "Finished"-screen + myGLCD.setContrast(0); + myGLCD.fillScr(0,0,255); + myGLCD.setColor(255,0,0); + myGLCD.fillRoundRect(2, 40, 125, 88); + + myGLCD.setColor(255,255,255); + myGLCD.setBackColor(255,0,0); + myGLCD.print("That's it!", CENTER, 46); + myGLCD.print("Restarting in a", CENTER, 66); + myGLCD.print("few seconds...", CENTER, 76); + + myGLCD.setColor(0,0,0); + myGLCD.setBackColor(0,0,255); + myGLCD.print("Runtime: (msecs)", CENTER, 108); + myGLCD.printNumI(millis(), CENTER, 118); + + myGLCD.setContrast(64); + + delay (10000); + +// Fade screen to black + for (int i=64; i>0; i--) + { + myGLCD.setContrast(i); + delay(100); + } +} + + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_160x128_Serial/UTFT_Demo_160x128_Serial.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_160x128_Serial/UTFT_Demo_160x128_Serial.ino new file mode 100644 index 0000000..365b716 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_160x128_Serial/UTFT_Demo_160x128_Serial.ino @@ -0,0 +1,328 @@ +// UTFT_Demo_160x128_Serial (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 160x128 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Usage: myGLCD(, SDA, SCL, CS, RST[, RS]); +// +// When using the DM-TFT18-101 and shield from DisplayModule you should use the following: +// UTFT myGLCD(DMTFT18101,2,3,4,6,5); +// +UTFT myGLCD(ITDB18SP,11,10,9,12,8); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[158]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 159, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 114, 159, 127); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("Universal TFT Lib.", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("H.Karlsen", LEFT, 114); + myGLCD.print("(C)2014", RIGHT, 114); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 13, 159, 113); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(79, 14, 79, 113); + myGLCD.drawLine(1, 63, 158, 63); + + for (int i=9; i<150; i+=10) + myGLCD.drawLine(i, 61, i, 65); + for (int i=19; i<110; i+=10) + myGLCD.drawLine(77, i, 81, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<158; i++) + { + myGLCD.drawPixel(i,63+(sin(((i*2.27)*3.14)/180)*40)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<158; i++) + { + myGLCD.drawPixel(i,63+(cos(((i*2.27)*3.14)/180)*40)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<158; i++) + { + myGLCD.drawPixel(i,63+(tan(((i*2.27)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(79, 14, 79, 113); + myGLCD.drawLine(1, 63, 158, 63); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(158*20); i++) + { + x++; + if (x==159) + x=1; + if (i>159) + { + if ((x==79)||(buf[x-1]==63)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=63+(sin(((i*2.5)*3.14)/180)*(40-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(39+(i*10), 23+(i*10), 59+(i*10), 43+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(99-(i*10), 23+(i*10), 119-(i*10), 43+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(49+(i*10),33+(i*10), 15); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=14; i<113; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 112); + } + myGLCD.setColor (255,0,0); + for (int i=112; i>15; i-=5) + { + myGLCD.drawLine(158, i, (i*1.44)-12, 14); + } + myGLCD.setColor (0,255,255); + for (int i=112; i>15; i-=5) + { + myGLCD.drawLine(1, i, 172-(i*1.44), 14); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<112; i+=5) + { + myGLCD.drawLine(158, i, 171-(i*1.44), 112); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(116); + y=35+random(57); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(156); + y=16+random(95); + x2=2+random(156); + y2=16+random(95); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(156); + y=16+random(95); + x2=2+random(156); + y2=16+random(95); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(156); + y=16+random(95); + x2=2+random(156); + y2=16+random(95); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + + for (int i=0; i<5000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(156), 16+random(95)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(10, 17, 149, 72); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 20); + myGLCD.print("Restarting in a", CENTER, 45); + myGLCD.print("few seconds...", CENTER, 57); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 103); + myGLCD.printNumI(millis(), CENTER, 115); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_220x176/UTFT_Demo_220x176.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_220x176/UTFT_Demo_220x176.ino new file mode 100644 index 0000000..50e9c32 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_220x176/UTFT_Demo_220x176.ino @@ -0,0 +1,335 @@ +// UTFT_Demo_220x176 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 220x176 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB22,A5,A4,A3,A2); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[218]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 219, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 162, 219, 175); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("** Universal TFT Library **", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("> elec.henningkarlsen.com <", CENTER, 163); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 219, 161); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + + for (int i=9; i<210; i+=10) + myGLCD.drawLine(i, 86, i, 90); + for (int i=19; i<155; i+=10) + myGLCD.drawLine(107, i, 111, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(sin(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(cos(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(tan(((i*1.65)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(218*20); i++) + { + x++; + if (x==219) + x=1; + if (i>219) + { + if ((x==109)||(buf[x-1]==88)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=88+(sin(((i*1.6)*3.14)/180)*(65-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(44+(i*15), 23+(i*15), 88+(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(132-(i*15), 23+(i*15), 172-(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(64+(i*15),43+(i*15), 20); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 160); + } + myGLCD.setColor (255,0,0); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(218, i, (i*1.44)-12, 15); + } + myGLCD.setColor (0,255,255); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(1, i, 232-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(218, i, 231-(i*1.44), 160); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(176); + y=35+random(105); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(216), 16+random(143)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(40, 57, 179, 119); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 62); + myGLCD.print("Restarting in a", CENTER, 88); + myGLCD.print("few seconds...", CENTER, 101); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 146); + myGLCD.printNumI(millis(), CENTER, 161); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_220x176_Serial/UTFT_Demo_220x176_Serial.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_220x176_Serial/UTFT_Demo_220x176_Serial.ino new file mode 100644 index 0000000..ec66344 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_220x176_Serial/UTFT_Demo_220x176_Serial.ino @@ -0,0 +1,322 @@ +// UTFT_Demo_220x176_Serial (C)2012 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for serial modules with a screen resolution +// of 220x176 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +UTFT myGLCD(ITDB22SP,11,10,9,12); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[218]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 219, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 162, 219, 175); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("** Universal TFT Library **", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("> elec.henningkarlsen.com <", CENTER, 163); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 219, 161); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + + for (int i=9; i<210; i+=10) + myGLCD.drawLine(i, 86, i, 90); + for (int i=19; i<155; i+=10) + myGLCD.drawLine(107, i, 111, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(sin(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(cos(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(tan(((i*1.65)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(218*20); i++) + { + x++; + if (x==219) + x=1; + if (i>219) + { + if ((x==109)||(buf[x-1]==88)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=88+(sin(((i*1.6)*3.14)/180)*(65-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(44+(i*15), 23+(i*15), 88+(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(132-(i*15), 23+(i*15), 172-(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(64+(i*15),43+(i*15), 20); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 160); + } + myGLCD.setColor (255,0,0); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(218, i, (i*1.44)-12, 15); + } + myGLCD.setColor (0,255,255); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(1, i, 232-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(218, i, 231-(i*1.44), 160); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,161); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(176); + y=35+random(105); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(216), 16+random(143)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(40, 57, 179, 119); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 62); + myGLCD.print("Restarting in a", CENTER, 88); + myGLCD.print("few seconds...", CENTER, 101); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 146); + myGLCD.printNumI(millis(), CENTER, 161); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_320x240/UTFT_Demo_320x240.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_320x240/UTFT_Demo_320x240.ino new file mode 100644 index 0000000..1e51058 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_320x240/UTFT_Demo_320x240.ino @@ -0,0 +1,334 @@ +// UTFT_Demo_320x240 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[318]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 319, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 319, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 319, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + for (int i=9; i<310; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(157, i, 161, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(318*20); i++) + { + x++; + if (x==319) + x=1; + if (i>319) + { + if ((x==159)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(100+(i*20),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(318, i, (i*1.44)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 331-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(318, i, 330-(i*1.44), 224); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(256); + y=45+random(146); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(209); + x2=2+random(316); + y2=16+random(209); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(316), 16+random(209)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(80, 70, 239, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_320x240_Serial/UTFT_Demo_320x240_Serial.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_320x240_Serial/UTFT_Demo_320x240_Serial.ino new file mode 100644 index 0000000..a741524 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_320x240_Serial/UTFT_Demo_320x240_Serial.ino @@ -0,0 +1,354 @@ +// UTFT_Demo_320x240_Serial (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for serial modules with a screen +// resolution of 320x240 pixels. +// +// This program requires the UTFT library. +// +// ******************************************************************** +// * IMPORTANT: Read the comments in the setup() function when * +// * using the Watterott MI0283QT9 or the DisplayModule DM-TFT28-105. * +// ******************************************************************** +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Uncomment the line for your display: +//UTFT myGLCD(TFT01_22SP,9,8,12,11,10); // ElecFreaks TFT01-2.2SP +//UTFT myGLCD(MI0283QT9,11,13,7,8); // Watterott MI0283QT9 +UTFT myGLCD(DMTFT28105,MOSI,SCK,10,NOTINUSE,9); // DisplayModule DM-TFT28-105 (Works with both Arduino Uno and Arduino Mega) + +void setup() +{ +// Watterott +// --------- +// The following two lines are needed for the MI0283QT9 display +// module to enable the backlight. If you are using any other +// display module these lines should be commented out. +// ------------------------------------------------------------- +// pinMode(9, OUTPUT); +// digitalWrite(9, HIGH); +// ------------------------------------------------------------- + +// DisplayModule +// ------------- +// The following 4 lines are needed for the DM-TFT28-105 display +// module to set the SS/CS pins for the other devices connected +// to the Arduino SPI pins. If you are using any other display +// module these lines should be commented out. +// ------------------------------------------------------------- + pinMode(10,OUTPUT); digitalWrite(10,HIGH); // TFT SS/CE + pinMode(8, OUTPUT); digitalWrite(8, HIGH); // SD card SS/CE + pinMode(6, OUTPUT); digitalWrite(6, HIGH); // Flash chip SS/CE + pinMode(4, OUTPUT); digitalWrite(4, HIGH); // Touch controller SS/CE +// ------------------------------------------------------------- + + +// Just get some random numbers + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); + +} + +void loop() +{ + int buf[318]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 319, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 319, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 319, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + for (int i=9; i<310; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(157, i, 161, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(318*20); i++) + { + x++; + if (x==319) + x=1; + if (i>319) + { + if ((x==159)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(100+(i*20),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(318, i, (i*1.44)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 331-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(318, i, 330-(i*1.44), 224); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(256); + y=45+random(146); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(209); + x2=2+random(316); + y2=16+random(209); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(316), 16+random(209)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(80, 70, 239, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} \ No newline at end of file diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_400x240/UTFT_Demo_400x240.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_400x240/UTFT_Demo_400x240.ino new file mode 100644 index 0000000..93538ce --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_400x240/UTFT_Demo_400x240.ino @@ -0,0 +1,336 @@ +// UTFT_Demo_400x240 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 400x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32WD,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[398]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 399, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 399, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("*** Universal Color TFT Display Library ***", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("< http://electronics.henningkarlsen.com >", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 399, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(199, 15, 199, 224); + myGLCD.drawLine(1, 119, 398, 119); + for (int i=9; i<390; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(197, i, 201, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<398; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*0.9)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<398; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*0.9)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<398; i++) + { + y=119+(tan(((i*0.9)*3.14)/180)); + if ((y>15) && (y<224)) + myGLCD.drawPixel(i,y); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(199, 15, 199, 224); + myGLCD.drawLine(1, 119, 398, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(398*20); i++) + { + x++; + if (x==399) + x=1; + if (i>399) + { + if ((x==199)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(110+(i*20), 30+(i*20), 170+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(230-(i*20), 30+(i*20), 290-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(110+(i*30),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.77)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(398, i, (i*1.77)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 411-(i*1.77), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(398, i, 410-(i*1.77), 224); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(336); + y=45+random(146); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(396); + y=16+random(207); + x2=2+random(396); + y2=16+random(207); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(396); + y=16+random(207); + x2=2+random(396); + y2=16+random(207); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(396); + y=16+random(209); + x2=2+random(396); + y2=16+random(209); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(396), 16+random(209)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(120, 70, 279, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_480x272/UTFT_Demo_480x272.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_480x272/UTFT_Demo_480x272.ino new file mode 100644 index 0000000..93d8395 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_480x272/UTFT_Demo_480x272.ino @@ -0,0 +1,333 @@ +// UTFT_Demo_480x272 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 480x272 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB43,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[478]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 479, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 258, 479, 271); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 259); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 479, 257); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 256); + myGLCD.drawLine(1, 135, 478, 135); + for (int i=9; i<470; i+=10) + myGLCD.drawLine(i, 133, i, 138); + for (int i=15; i<256; i+=10) + myGLCD.drawLine(237, i, 241, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,135+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,135+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,135+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 256); + myGLCD.drawLine(1, 135, 478, 135); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(478*20); i++) + { + x++; + if (x==479) + x=1; + if (i>479) + { + if ((x==239)||(buf[x-1]==135)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=135+(sin(((i*1.65)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(150+(i*20), 46+(i*20), 210+(i*20), 106+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(330-(i*20), 46+(i*20), 270-(i*20), 106+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(180+(i*20),75+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<256; i+=5) + { + myGLCD.drawLine(1, i, (i*1.88)-10, 256); + } + myGLCD.setColor (255,0,0); + for (int i=256; i>15; i-=5) + { + myGLCD.drawLine(478, i, (i*1.88)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=256; i>15; i-=5) + { + myGLCD.drawLine(1, i, 491-(i*1.88), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<256; i+=5) + { + myGLCD.drawLine(478, i, 490-(i*1.88), 256); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some random circles + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(416); + y=45+random(178); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some random rectangles + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(239); + x2=2+random(476); + y2=16+random(239); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + +// Draw some random rounded rectangles + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(239); + x2=2+random(476); + y2=16+random(239); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(239); + x2=2+random(476); + y2=16+random(239); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,256); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(476), 16+random(239)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(160, 70, 319, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 243); + myGLCD.printNumI(millis(), CENTER, 258); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_480x320/UTFT_Demo_480x320.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_480x320/UTFT_Demo_480x320.ino new file mode 100644 index 0000000..da718c3 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_480x320/UTFT_Demo_480x320.ino @@ -0,0 +1,334 @@ +// UTFT_Demo_480x320 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 480x320 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(CTE32HR,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[478]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 479, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 306, 479, 319); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 307); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 479, 305); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 304); + myGLCD.drawLine(1, 159, 478, 159); + for (int i=9; i<470; i+=10) + myGLCD.drawLine(i, 157, i, 161); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(237, i, 241, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,159+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,159+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,159+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 304); + myGLCD.drawLine(1, 159, 478, 159); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(478*15); i++) + { + x++; + if (x==479) + x=1; + if (i>479) + { + if ((x==239)||(buf[x-1]==159)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=159+(sin(((i*0.7)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(150+(i*20), 70+(i*20), 210+(i*20), 130+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(270-(i*20), 70+(i*20), 330-(i*20), 130+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(180+(i*20),100+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<304; i+=5) + { + myGLCD.drawLine(1, i, (i*1.6)-10, 304); + } + myGLCD.setColor (255,0,0); + for (int i=304; i>15; i-=5) + { + myGLCD.drawLine(478, i, (i*1.6)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=304; i>15; i-=5) + { + myGLCD.drawLine(1, i, 491-(i*1.6), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<304; i+=5) + { + myGLCD.drawLine(478, i, 490-(i*1.6), 304); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(416); + y=45+random(226); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(289); + x2=2+random(476); + y2=16+random(289); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(289); + x2=2+random(476); + y2=16+random(289); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(289); + x2=2+random(476); + y2=16+random(289); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(476), 16+random(289)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(160, 70, 319, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 290); + myGLCD.printNumI(millis(), CENTER, 305); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_800x480/UTFT_Demo_800x480.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_800x480/UTFT_Demo_800x480.ino new file mode 100644 index 0000000..363b71a --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Demo_800x480/UTFT_Demo_800x480.ino @@ -0,0 +1,293 @@ +// UTFT_Demo_800x480 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 800x480 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB50,38,39,40,41); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[798]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 799, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 466, 799, 479); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 467); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 799, 465); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(399, 15, 399, 464); + myGLCD.drawLine(1, 239, 798, 239); + for (int i=9; i<790; i+=10) + myGLCD.drawLine(i, 237, i, 242); + for (int i=19; i<470; i+=10) + myGLCD.drawLine(397, i, 402, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<798; i++) + { + myGLCD.drawPixel(i,239+(sin(((i*1.13)*3.14)/180)*200)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<798; i++) + { + myGLCD.drawPixel(i,239+(cos(((i*1.13)*3.14)/180)*200)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<798; i++) + { + myGLCD.drawPixel(i,239+(tan(((i*0.9)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(399, 15, 399, 464); + myGLCD.drawLine(1, 239, 798, 239); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(798*20); i++) + { + x++; + if (x==799) + x=1; + if (i>799) + { + if ((x==399)||(buf[x-1]==239)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=239+(sin(((i*1.65)*3.14)/180)*(200-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random filled rectangles + for (int i=0; i<50; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(746); + y=16+random(397); + x2=x+50; + y2=y+50; + myGLCD.fillRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random filled, rounded rectangles + for (int i=0; i<50; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(746); + y=16+random(397); + x2=x+50; + y2=y+50; + myGLCD.fillRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random filled circles + for (int i=0; i<50; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=27+random(746); + y=41+random(397); + myGLCD.fillCircle(x, y, 25); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<463; i+=5) + { + myGLCD.drawLine(1, i, (i*1.66)-10, 463); + } + myGLCD.setColor (255,0,0); + for (int i=463; i>15; i-=5) + { + myGLCD.drawLine(798, i, (i*1.66)+30, 15); + } + myGLCD.setColor (0,255,255); + for (int i=463; i>15; i-=5) + { + myGLCD.drawLine(1, i, 770-(i*1.66), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<463; i+=5) + { + myGLCD.drawLine(798, i, 810-(i*1.66), 463); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random circles + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(736); + y=45+random(386); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random rectangles + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(796); + y=16+random(447); + x2=2+random(796); + y2=16+random(447); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random rounded rectangles + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(796); + y=16+random(447); + x2=2+random(796); + y2=16+random(447); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(796); + y=16+random(447); + x2=2+random(796); + y2=16+random(447); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(796), 16+random(447)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(320, 190, 479, 289); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 213); + myGLCD.print("Restarting in a", CENTER, 239); + myGLCD.print("few seconds...", CENTER, 252); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 450); + myGLCD.printNumI(millis(), CENTER, 465); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Leonardo_Demo_320x240/UTFT_Leonardo_Demo_320x240.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Leonardo_Demo_320x240/UTFT_Leonardo_Demo_320x240.ino new file mode 100644 index 0000000..4e8a9d1 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Leonardo_Demo_320x240/UTFT_Leonardo_Demo_320x240.ino @@ -0,0 +1,252 @@ +// UTFT_Leonardo_Demo_320x240 (C)2013 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a reduced demo of how to use some of the functions +// of the library with a supported display modules on an Arduino Leonardo. +// +// It has been reduced in size to fit in the limited flash memory of +// the Leonardo. It has not been tested on all display modules so +// some modules may still produce too large binares. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +UTFT myGLCD(ITDB24E_8,A5,A4,A3,A2); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[318]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 319, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 319, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 319, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + for (int i=9; i<310; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(157, i, 161, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(318*20); i++) + { + x++; + if (x==319) + x=1; + if (i>319) + { + if ((x==159)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(100+(i*20),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(318, i, (i*1.44)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 331-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(318, i, 330-(i*1.44), 224); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(80, 70, 239, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Rotate_Bitmap/UTFT_Rotate_Bitmap.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Rotate_Bitmap/UTFT_Rotate_Bitmap.ino new file mode 100644 index 0000000..ccb55f6 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Rotate_Bitmap/UTFT_Rotate_Bitmap.ino @@ -0,0 +1,43 @@ +// UTFT_Rotate_Bitmap (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the drawBitmap()-function. +// +// This program requires the UTFT library. +// + +#include +#include + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +extern unsigned int tux[0x400]; + +void setup() +{ + myGLCD.InitLCD(LANDSCAPE); + myGLCD.fillScr(255, 255, 255); + myGLCD.setColor(0, 0, 0); +} + +void loop() +{ + for (int i=0; i<360; i+=5) + { + myGLCD.drawBitmap (10, 10, 32, 32, tux, i, 16, 16); + } +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Rotate_Bitmap/tux.c b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Rotate_Bitmap/tux.c new file mode 100644 index 0000000..3babe53 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Rotate_Bitmap/tux.c @@ -0,0 +1,73 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: tux.png +// Time generated: 11.10.2010 22:51:32 +// Size : 2 048 Bytes + +#include + +const unsigned short tux[0x400] PROGMEM ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x9CD3, 0x9CF3, 0xA514, // 0x0010 (16) +0x9CF3, 0x8C51, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x5AEB, 0x7BEF, 0x9CD3, 0x94B2, // 0x0030 (48) +0x94B2, 0x94B2, 0x4228, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x9CF3, 0x18E3, 0x630C, 0x4A49, 0x4A69, // 0x0050 (80) +0x4A69, 0x528A, 0x4A49, 0x0000, 0xC638, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6D, 0x0000, 0x0020, 0x10A2, 0x1082, // 0x0070 (112) +0x0841, 0x0841, 0x0841, 0x0000, 0x630C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x528A, 0x4228, 0x8410, 0x0000, 0x0861, // 0x0090 (144) +0xAD55, 0xBDD7, 0x10A2, 0x0000, 0x2945, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x5ACB, 0x8C71, 0xE75D, 0x2126, 0x528B, // 0x00B0 (176) +0xE75D, 0xDEDB, 0x7BCF, 0x0000, 0x18E3, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6D, 0x4A4A, 0x6B2A, 0x8BE7, 0xA48A, // 0x00D0 (208) +0x6B09, 0x4A8A, 0x8431, 0x0000, 0x2104, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6E, 0x5204, 0xDE6A, 0xFFF7, 0xFFF8, // 0x00F0 (240) +0xD5AC, 0xBCAA, 0x5A66, 0x0000, 0x1082, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C10, 0xC540, 0xFFED, 0xFF2C, 0xFEEC, // 0x0110 (272) +0xFECC, 0xFE66, 0x8260, 0x0000, 0x0000, 0xB596, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B3, 0x9C25, 0xFF20, 0xFE40, 0xFDA0, // 0x0130 (304) +0xFCC0, 0xF524, 0x836A, 0x0000, 0x0000, 0x630C, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x630C, 0x94B4, 0xFF13, 0xFD83, 0xF523, // 0x0150 (336) +0xE5CF, 0xF79E, 0xE71D, 0x0861, 0x0000, 0x0861, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xCE59, 0x0841, 0xD69A, 0xFFFF, 0xFF7D, 0xF77D, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x4A69, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x10A2, 0x8410, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFDF, 0xFFFF, 0xCE59, 0x0000, 0x0000, 0x0000, 0x9492, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x52AA, 0x0020, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFDF, 0xFFDF, 0xF7BE, 0xFFDF, 0x3186, 0x0000, 0x0020, 0x0841, 0xCE79, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xC638, 0x0000, 0x52AA, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x01D0 (464) +0xFFDF, 0xF7BE, 0xF79E, 0xFFFF, 0x9CF3, 0x0000, 0x0841, 0x0000, 0x39E7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01E0 (480) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5ACB, 0x0000, 0xBDF7, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0xFFDF, // 0x01F0 (496) +0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0x3186, 0x0000, 0x0861, 0x0000, 0xAD55, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x0861, 0x4A49, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x0210 (528) +0xF7BE, 0xF79E, 0xEF7D, 0xEF5D, 0xFFDF, 0x8410, 0x0000, 0x1082, 0x0000, 0x39E7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0xB596, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, // 0x0230 (560) +0xF79E, 0xEF7D, 0xEF7D, 0xE73C, 0xF79E, 0xAD55, 0x0861, 0x10A2, 0x0861, 0x0841, 0xCE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x3185, 0x10A2, 0xE71C, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF79E, // 0x0250 (592) +0xEF7D, 0xEF7D, 0xEF5D, 0xE73C, 0xEF5D, 0xBDF7, 0x18C3, 0x18C3, 0x18C3, 0x0000, 0x8C71, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0x39E7, 0xF7BE, 0xFFFF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF79E, 0xEF7D, // 0x0270 (624) +0xEF7D, 0xEF5D, 0xE73C, 0xE71C, 0xE71C, 0xC618, 0x18E3, 0x10A2, 0x10A2, 0x0020, 0x6B4D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C51, 0x38E0, 0x4A27, 0xFFFF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, // 0x0290 (656) +0xEF5D, 0xE73C, 0xE71C, 0xDEFB, 0xDF1D, 0xBDF8, 0x39C7, 0x5ACB, 0x528A, 0x10A3, 0x738F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDD6C, 0xFE2B, 0xBC45, 0xA513, 0xFFFF, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF5D, // 0x02B0 (688) +0xE73C, 0xE71C, 0xDEFB, 0xD6DC, 0xDD8E, 0xB3E4, 0x2124, 0x2965, 0x2945, 0x20C1, 0xB511, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77C, 0xE5CF, 0xF60B, 0xFF9B, 0xFF54, 0x8B02, 0x7BF0, 0xFFDF, 0xF79E, 0xEF5D, 0xEF5D, 0xE73C, // 0x02D0 (720) +0xE71C, 0xDEFB, 0xDEDB, 0xCE7A, 0xED89, 0xDDAD, 0x0842, 0x0000, 0x0000, 0xAC69, 0xDD6B, 0xEFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFFF, 0xFFBE, 0xE5CB, 0xEDC9, 0xFE4B, 0xFF14, 0xFEF3, 0xFF35, 0xFE8D, 0x51C1, 0x634E, 0xE73C, 0xEF5D, 0xE73C, 0xE71C, // 0x02F0 (752) +0xDEFB, 0xDEDB, 0xD6DB, 0xCE59, 0xE58B, 0xFF98, 0xBD4F, 0x8B88, 0xCD90, 0xFFB7, 0xCCE8, 0xE73D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xEF3B, 0xF583, 0xFF30, 0xFF11, 0xFECF, 0xFEEF, 0xFECF, 0xFF30, 0xDD46, 0x2903, 0x6B8E, 0xEF7D, 0xE71C, 0xDEFB, // 0x0310 (784) +0xDEDB, 0xD6BA, 0xD69A, 0xCE59, 0xE5AA, 0xFF11, 0xFF53, 0xFF73, 0xFF33, 0xFF12, 0xFE6C, 0xDDAD, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xF79E, 0xEDC5, 0xFECB, 0xFECC, 0xFECC, 0xFEEC, 0xFECB, 0xFECC, 0xFEEA, 0x9BE5, 0x8432, 0xE73C, 0xDEDB, 0xDEDB, // 0x0330 (816) +0xD6BA, 0xD69A, 0xDEDB, 0xA4F3, 0xD547, 0xFF2E, 0xFECD, 0xFECE, 0xFEEE, 0xFEEE, 0xFF10, 0xFEAB, 0xE5A8, 0xEF7D, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xF79E, 0xF603, 0xFEA2, 0xFEC7, 0xFEC7, 0xFEA4, 0xFE81, 0xFE61, 0xFEA4, 0xFE43, 0xDE33, 0xE75E, 0xE71C, 0xDEFB, // 0x0350 (848) +0xDEDB, 0xCE58, 0x8C72, 0x5247, 0xEDE4, 0xFF0A, 0xFECA, 0xFEC9, 0xFE84, 0xFE83, 0xFEE7, 0xFEA3, 0xB443, 0xD69B, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xF75B, 0xFE60, 0xFF00, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xE5C1, 0x9492, 0xA514, 0x9CD3, // 0x0370 (880) +0x8410, 0x630B, 0x4229, 0x6AE8, 0xFE80, 0xFEC1, 0xFEC1, 0xFEA0, 0xFEA0, 0xFEE0, 0xDD80, 0x9BE8, 0xB597, 0xFFDF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xF79E, 0xD589, 0xE600, 0xFEA0, 0xFF00, 0xFF40, 0xFF40, 0xFF00, 0xFF00, 0xFF20, 0xFEC0, 0x5267, 0x4229, 0x4A48, // 0x0390 (912) +0x4A49, 0x5289, 0x424A, 0x7B46, 0xFF20, 0xFEE0, 0xFEE0, 0xFF20, 0xFEE0, 0xB4A5, 0x9C92, 0xDEFD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xE71D, 0xBDB6, 0xB530, 0xBD0B, 0xCD65, 0xEE60, 0xFF40, 0xFFA0, 0xFF80, 0xBD03, 0x8410, 0xA514, 0xA534, // 0x03B0 (944) +0xAD75, 0xB596, 0xA555, 0x9C8F, 0xF6C0, 0xFFA0, 0xFFA0, 0xF6E0, 0xA449, 0xB5B8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7F, 0xD69C, 0xBD95, 0xBD4C, 0xCDC6, 0xB4E8, 0xAD35, 0xF7BF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xCDD0, 0xCDC6, 0xCDA7, 0xA48D, 0xCE7B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1F, 0xB59A, 0xBDDA, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFDF, 0xFFDF, 0xFFFF, 0xEF7F, 0xB59A, 0xAD59, 0xDF1D, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_Textrotation_Demo/UTFT_Textrotation_Demo.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Textrotation_Demo/UTFT_Textrotation_Demo.ino new file mode 100644 index 0000000..81ce558 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_Textrotation_Demo/UTFT_Textrotation_Demo.ino @@ -0,0 +1,57 @@ +// UTFT_Textrotation_Demo (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the textrotation-functions. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t BigFont[]; +extern uint8_t SevenSegNumFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont(BigFont); +} + +void loop() +{ + myGLCD.print("Text rotation", 0, 0); + myGLCD.setColor(0, 0, 255); + myGLCD.print("0 degrees", 0, 16, 0); + myGLCD.print("90 degrees", 319, 0, 90); + myGLCD.print("180 degrees", 319, 239, 180); + myGLCD.print("270 degrees", 0, 239, 270); + + myGLCD.setFont(SevenSegNumFont); + myGLCD.setColor(0, 255, 0); + myGLCD.print("45", 90, 100, 45); + myGLCD.print("90", 200, 50, 90); + myGLCD.print("180", 300, 200, 180); + + while (true) {}; +} + diff --git a/libraries/UTFT/examples/Arduino (AVR)/UTFT_ViewFont/UTFT_ViewFont.ino b/libraries/UTFT/examples/Arduino (AVR)/UTFT_ViewFont/UTFT_ViewFont.ino new file mode 100644 index 0000000..4a16428 --- /dev/null +++ b/libraries/UTFT/examples/Arduino (AVR)/UTFT_ViewFont/UTFT_ViewFont.ino @@ -0,0 +1,64 @@ +// UTFT_ViewFont (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the included fonts. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; +extern uint8_t BigFont[]; +extern uint8_t SevenSegNumFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// Arduino Uno / 2009: +// ------------------- +// Standard Arduino Uno/2009 shield : ,A5,A4,A3,A2 +// DisplayModule Arduino Uno TFT shield : ,A5,A4,A3,A2 +// +// Arduino Mega: +// ------------------- +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Mega : ,38,39,40,41 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +void setup() +{ + myGLCD.InitLCD(); + + myGLCD.clrScr(); +} + +void loop() +{ + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 0); + + myGLCD.setFont(BigFont); + myGLCD.print(" !\"#$%&'()*+,-./", CENTER, 0); + myGLCD.print("0123456789:;<=>?", CENTER, 16); + myGLCD.print("@ABCDEFGHIJKLMNO", CENTER, 32); + myGLCD.print("PQRSTUVWXYZ[\\]^_", CENTER, 48); + myGLCD.print("`abcdefghijklmno", CENTER, 64); + myGLCD.print("pqrstuvwxyz{|}~ ", CENTER, 80); + + myGLCD.setFont(SmallFont); + myGLCD.print(" !\"#$%&'()*+,-./0123456789:;<=>?", CENTER, 120); + myGLCD.print("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_", CENTER, 132); + myGLCD.print("`abcdefghijklmnopqrstuvwxyz{|}~ ", CENTER, 144); + + myGLCD.setFont(SevenSegNumFont); + myGLCD.print("0123456789", CENTER, 190); + + while(1) {}; +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Bitmap/UTFT_Bitmap.pde b/libraries/UTFT/examples/chipKit/UTFT_Bitmap/UTFT_Bitmap.pde new file mode 100644 index 0000000..b28e8fc --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Bitmap/UTFT_Bitmap.pde @@ -0,0 +1,65 @@ +// UTFT_Bitmap (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the drawBitmap()-function. +// +// This demo was made to work on the 320x240 modules. +// Any other size displays may cause strange behaviour. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,82,83,84,85); + +extern unsigned short info[0x400]; +extern unsigned short icon[0x400]; +extern unsigned short tux[0x400]; + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + myGLCD.fillScr(255, 255, 255); + myGLCD.setColor(255, 255, 255); + myGLCD.print(" *** A 10 by 7 grid of a 32x32 icon *** ", CENTER, 228); + for (int x=0; x<10; x++) + for (int y=0; y<7; y++) + myGLCD.drawBitmap (x*32, y*32, 32, 32, info); + + delay(5000); + + myGLCD.fillScr(255, 255, 255); + myGLCD.setColor(255, 255, 255); + myGLCD.print(" Two different icons in scale 1 to 4 ", CENTER, 228); + int x=0; + for (int s=0; s<4; s++) + { + x+=(s*32); + myGLCD.drawBitmap (x, 0, 32, 32, tux, s+1); + } + x=0; + for (int s=4; s>0; s--) + { + myGLCD.drawBitmap (x, 224-(s*32), 32, 32, icon, s); + x+=(s*32); + } + + delay(5000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Bitmap/icon.c b/libraries/UTFT/examples/chipKit/UTFT_Bitmap/icon.c new file mode 100644 index 0000000..9cb97a1 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Bitmap/icon.c @@ -0,0 +1,71 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: taskmgr.png +// Time generated: 11.10.2010 22:51:23 +// Size : 2 048 Bytes + +const unsigned short icon[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0xCE79, 0xBDD7, 0xAD75, // 0x0010 (16) +0xAD55, 0xAD75, 0xBDF7, 0xD6BA, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x9492, 0x8C51, 0x9492, 0xA514, 0xA534, // 0x0030 (48) +0xA534, 0xA534, 0x9CF3, 0x8C71, 0x8430, 0x9CD3, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE59, 0x8410, 0x9492, 0xB5B6, 0xC618, 0xBDD7, 0xAD75, 0xA514, // 0x0050 (80) +0xA514, 0xA4F4, 0xAD55, 0xB5B6, 0xBDD7, 0xAD55, 0x8430, 0x8C71, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x9CD3, 0x8430, 0xBDF7, 0xC618, 0xAD75, 0x94F2, 0x8CF1, 0x84B0, 0x8CD1, // 0x0070 (112) +0x9612, 0x8CB1, 0x7C6F, 0x7C8F, 0x8490, 0xA533, 0xBDF7, 0xB596, 0x7BEF, 0xB596, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x8430, 0x9CF3, 0xCE39, 0xA514, 0x94B2, 0x9E93, 0x94F2, 0x8CD1, 0x8CB1, 0x9D12, // 0x0090 (144) +0x9F74, 0x9D52, 0x8450, 0x7C8F, 0x73AE, 0x740E, 0x73CE, 0x9CD3, 0xC638, 0x8C51, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x8430, 0xA534, 0xBDF7, 0x8CB1, 0x8C31, 0x9DB3, 0xA735, 0x9D13, 0x8CB1, 0x8C71, 0x9D13, // 0x00B0 (176) +0xB756, 0xA5D4, 0x8C71, 0x8490, 0x8390, 0x7C70, 0x73EE, 0x6B4D, 0x8450, 0xBDF7, 0x8C71, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x94B2, 0x9CF3, 0xBDD7, 0x8490, 0x8CF1, 0x9D72, 0xA694, 0xAE94, 0x9DD3, 0xA593, 0xA553, 0x9592, // 0x00D0 (208) +0x9672, 0x75CE, 0x5BAA, 0x64EB, 0x5D8C, 0x5BCA, 0x4B69, 0x634C, 0x748D, 0x7C4F, 0xBE18, 0x8430, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xC618, 0x8410, 0xBDF7, 0x8410, 0x83F0, 0x94F2, 0x9613, 0x9D13, 0xAE55, 0x9D12, 0x750E, 0x55CB, 0x4BC8, // 0x00F0 (240) +0x4447, 0x3BC6, 0x4B67, 0x44E8, 0x3CE8, 0x3325, 0x20E2, 0x2B45, 0x43E7, 0x3946, 0x732D, 0xC5F8, 0x7BCF, 0xE71C, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xF7BE, 0x7BEF, 0xBDB6, 0x9533, 0x8D71, 0x9552, 0x9E73, 0x9DD3, 0x94B2, 0x6D6D, 0x4BA8, 0x44A8, 0x55EA, 0x5D2A, // 0x0110 (272) +0x43E7, 0x4327, 0x46CA, 0x4B87, 0x42C6, 0x4E0A, 0x4D09, 0x4468, 0x4548, 0x3386, 0x2B25, 0x7C6F, 0xAD35, 0x9492, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFDF, 0xFFFF, 0xBDD7, 0x8C71, 0xAD75, 0x8CF0, 0x8D71, 0x8D51, 0x9DF3, 0x740E, 0x21C4, 0x33E5, 0x558A, 0x554A, 0x650A, 0x566B, // 0x0130 (304) +0x43E7, 0x21C3, 0x3345, 0x2283, 0x1962, 0x3C87, 0x3386, 0x2163, 0x3345, 0x3346, 0x33A6, 0x32C6, 0x9CB3, 0x7BEF, 0xDEDB, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0x8430, 0xAD75, 0x8C31, 0x7C0F, 0x7BCF, 0x83F0, 0x636B, 0x0000, 0x0000, 0x4387, 0x462A, 0x4B27, 0x4B88, 0x4E8B, // 0x0150 (336) +0x42E6, 0x0000, 0x0020, 0x0100, 0x0000, 0x1121, 0x0040, 0x0000, 0x0941, 0x0000, 0x0020, 0x00E0, 0x5AAB, 0x94B2, 0x9CD3, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xE71C, 0x8410, 0xB596, 0x7BEF, 0x7C6F, 0x84B0, 0x5B6B, 0x09E1, 0x0901, 0x1161, 0x3C06, 0x3D89, 0x32C5, 0x43E7, 0x470B, // 0x0170 (368) +0x4BC7, 0x0961, 0x11E2, 0x1282, 0x0961, 0x1262, 0x09E2, 0x0961, 0x12A2, 0x0961, 0x09C2, 0x0A01, 0x29E5, 0xA514, 0x7BEF, 0xFFDF, // 0x0180 (384) +0xFFFF, 0xBDD7, 0x9472, 0xA514, 0x6B4D, 0x7C6F, 0x634C, 0x0040, 0x0981, 0x0060, 0x00E0, 0x11E2, 0x10A1, 0x09C1, 0x19E3, 0x2B25, // 0x0190 (400) +0x22A3, 0x0060, 0x0120, 0x09E1, 0x0060, 0x09E1, 0x0120, 0x0060, 0x0A21, 0x0060, 0x0100, 0x01A0, 0x0040, 0x9CD3, 0x7BEF, 0xDEDB, // 0x01A0 (416) +0xFFFF, 0xA514, 0x9CF3, 0xB596, 0x73AE, 0x7C0F, 0x2945, 0x10A2, 0x2184, 0x18C3, 0x1923, 0x2184, 0x18C3, 0x21A4, 0x2964, 0x2905, // 0x01B0 (432) +0x2A25, 0x2104, 0x2965, 0x2A05, 0x2104, 0x2A05, 0x2985, 0x2104, 0x2A25, 0x2104, 0x2164, 0x29C4, 0x3166, 0xB5B6, 0x8410, 0xC618, // 0x01C0 (448) +0xFFFF, 0x9492, 0xA514, 0xDEDB, 0xC618, 0xA514, 0x8C51, 0x94B2, 0x9CB3, 0x9CF3, 0xA514, 0xA534, 0xAD75, 0xAD75, 0xB596, 0xB5D6, // 0x01D0 (464) +0xBDB7, 0xBDF7, 0xBDF7, 0xBDF7, 0xC618, 0xC5F8, 0xC5F8, 0xBDF7, 0xBDD7, 0xBDD7, 0xB5B6, 0xB596, 0xC638, 0xDEFB, 0x8430, 0xB596, // 0x01E0 (480) +0xFFFF, 0x8C51, 0x9CF3, 0xE73C, 0xDEFB, 0xD69A, 0xD6BA, 0xD6BA, 0xDEDB, 0xDEDB, 0xDEFB, 0xDF1B, 0xE71C, 0xE73C, 0xE73C, 0xE73C, // 0x01F0 (496) +0xEF5D, 0xEF5D, 0xEF5D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xDEFB, 0xE71C, 0x8C51, 0xAD75, // 0x0200 (512) +0xFFFF, 0x8C71, 0x9CD3, 0xDEFB, 0xAD75, 0x9492, 0x9CD3, 0xA4F3, 0xA514, 0xAD55, 0xAD75, 0xB596, 0xBDB6, 0xBDD7, 0xC5F7, 0xC618, // 0x0210 (528) +0xC638, 0xCE59, 0xCE59, 0xCE79, 0xD679, 0xD679, 0xCE79, 0xCE59, 0xCE59, 0xC638, 0xC618, 0xBDF7, 0xCE79, 0xE71C, 0x8C51, 0xB596, // 0x0220 (544) +0xFFFF, 0x9CD3, 0x9492, 0xAD55, 0x2965, 0x2104, 0x2124, 0x2145, 0x1945, 0x2165, 0x2165, 0x2186, 0x2186, 0x29A6, 0x29A6, 0x31C7, // 0x0230 (560) +0x39C7, 0x31E7, 0x31E7, 0x31E7, 0x3208, 0x3208, 0x31E7, 0x31E7, 0x29E7, 0x31C7, 0x39C7, 0x31A6, 0x4A49, 0xBDF7, 0x8C51, 0xBDF7, // 0x0240 (576) +0xFFFF, 0xB5B6, 0x8430, 0x7BEF, 0x0000, 0x0000, 0x0000, 0x2000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3800, 0x2000, // 0x0250 (592) +0x0000, 0x3000, 0x3800, 0x3000, 0x3800, 0x3800, 0x3800, 0x3000, 0x3800, 0x0800, 0x0000, 0x0000, 0x0000, 0xA514, 0x8430, 0xD6BA, // 0x0260 (608) +0xFFFF, 0xDEDB, 0x7BCF, 0x8430, 0x0020, 0x0000, 0x0000, 0x8000, 0xC800, 0xC000, 0xC800, 0xC820, 0xC820, 0xC820, 0xD020, 0x9800, // 0x0270 (624) +0x0000, 0xB820, 0xD020, 0xD020, 0xD020, 0xD020, 0xD020, 0xC820, 0xD020, 0x4800, 0x0000, 0x0000, 0x2144, 0xAD75, 0x8410, 0xF7BE, // 0x0280 (640) +0xFFFF, 0xFFFF, 0x7BEF, 0x8C71, 0x2945, 0x0000, 0x0000, 0x6800, 0xA800, 0xA800, 0xA800, 0xA800, 0xA800, 0xA800, 0xB000, 0x8000, // 0x0290 (656) +0x0000, 0x9800, 0xB000, 0xB000, 0xB000, 0xB000, 0xB000, 0xB000, 0xB000, 0x4000, 0x0000, 0x0000, 0x632C, 0xA534, 0x94B2, 0xFFFF, // 0x02A0 (672) +0xFFDF, 0xFFFF, 0xAD75, 0x73AE, 0x632C, 0x0000, 0x0000, 0x6920, 0xA9E0, 0xA1C0, 0xA9E0, 0xA9E0, 0xA9E0, 0xA9E0, 0xA9E0, 0x7960, // 0x02B0 (688) +0x0000, 0x99C0, 0xB200, 0xA9E0, 0xB200, 0xB200, 0xB1E0, 0xA9E0, 0xB200, 0x40C0, 0x0000, 0x1082, 0xAD75, 0x8410, 0xD69A, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xF79E, 0x630C, 0x8C51, 0x2965, 0x0000, 0x7400, 0xB620, 0xAE00, 0xB620, 0xB640, 0xB640, 0xB620, 0xB660, 0x84A0, // 0x02D0 (720) +0x0000, 0xA5A0, 0xBE60, 0xB660, 0xBE60, 0xBE60, 0xB660, 0xB640, 0xBE80, 0x4260, 0x0000, 0x6B6D, 0xAD75, 0x8430, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFDF, 0xFFFF, 0xB5B6, 0x632C, 0x8410, 0x0021, 0x7360, 0xBD40, 0xB520, 0xBD40, 0xBD60, 0xBD60, 0xBD40, 0xC580, 0x8C00, // 0x02F0 (752) +0x0000, 0xACE0, 0xC580, 0xC580, 0xC580, 0xC580, 0xC580, 0xBD60, 0xC5A0, 0x39C0, 0x2126, 0xBDF7, 0x73AE, 0xD6BA, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7BEF, 0x7BEF, 0x630D, 0x4AE1, 0x6D21, 0x6D01, 0x6D21, 0x6D41, 0x6D41, 0x6D41, 0x6D61, 0x53E1, // 0x0310 (784) +0x0000, 0x64C1, 0x7562, 0x6D62, 0x6D62, 0x6D62, 0x6D62, 0x6D42, 0x6D41, 0x4263, 0xA515, 0x8C51, 0xA534, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x6B4D, 0x8410, 0x636E, 0x04A6, 0x05E5, 0x05C5, 0x0585, 0x0585, 0x0586, 0x05A6, 0x0424, // 0x0330 (816) +0x0000, 0x0505, 0x05C6, 0x05A6, 0x05A6, 0x05C7, 0x0606, 0x0606, 0x1CE9, 0xA535, 0x9492, 0x8C71, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x6B4D, 0x83EF, 0x9411, 0x3A47, 0x0403, 0x0584, 0x05A4, 0x0585, 0x0585, 0x0404, // 0x0350 (848) +0x0000, 0x04E5, 0x05A5, 0x05A5, 0x05C5, 0x0584, 0x1405, 0x634B, 0xBD76, 0x8C51, 0x8C51, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x8410, 0x6B6D, 0x9CB3, 0x7C6F, 0x3CA9, 0x0BE4, 0x0443, 0x0504, 0x03C2, // 0x0370 (880) +0x0000, 0x0483, 0x0504, 0x0444, 0x1426, 0x552D, 0xA554, 0xB576, 0x73CE, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB5B6, 0x6B4D, 0x7BAF, 0x9432, 0x8BD1, 0x6BCE, 0x4C6B, 0x3C09, // 0x0390 (912) +0x3186, 0x3C8A, 0x5C8C, 0x8430, 0xA493, 0xACD4, 0x8410, 0x7BEF, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xAD75, 0x7BEF, 0x73AE, 0x83F0, 0x8C11, 0x9431, // 0x03B0 (944) +0x9492, 0x9452, 0x9432, 0x8430, 0x7BEF, 0x8450, 0xBDF7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0xBDD7, 0xA534, 0x94D3, // 0x03D0 (976) +0x94B2, 0x9CF3, 0xA554, 0xC618, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/chipKit/UTFT_Bitmap/info.c b/libraries/UTFT/examples/chipKit/UTFT_Bitmap/info.c new file mode 100644 index 0000000..312bee1 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Bitmap/info.c @@ -0,0 +1,71 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: info.png +// Time generated: 11.10.2010 22:27:55 +// Size : 2 048 Bytes + +const unsigned short info[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF9F, 0xC69D, 0x95BB, 0x7D1A, 0x6CB9, // 0x0030 (48) +0x6499, 0x74F9, 0x8D7A, 0xB63C, 0xE73E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAE1C, 0x4C18, 0x2B56, 0x3397, 0x4C38, 0x64B9, 0x751A, // 0x0050 (80) +0x7D3A, 0x6CD9, 0x5458, 0x3BD7, 0x2B56, 0x3BB7, 0x855A, 0xE77E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA5FB, 0x2B56, 0x2B77, 0x751A, 0xB67C, 0xD73E, 0xE75E, 0xE77E, 0xE77E, // 0x0070 (112) +0xE77E, 0xE77E, 0xE75E, 0xDF3E, 0xC6DD, 0x8D9B, 0x43D7, 0x1B16, 0x74D9, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF9F, 0x4C18, 0x1AF6, 0x855A, 0xCEFE, 0xD71E, 0xCEFD, 0xC6DD, 0xC6BD, 0xC6BD, 0xBEBD, // 0x0090 (144) +0xC6BD, 0xBEBD, 0xC6BD, 0xC6DD, 0xC6DD, 0xD71E, 0xD71E, 0xA61C, 0x33B7, 0x2316, 0xBE7C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF3E, 0x2336, 0x3BD7, 0xBE9D, 0xC6DD, 0xBE9D, 0xBE9D, 0xBE9D, 0xBEBD, 0xBE9D, 0xCEFD, 0xEF9F, // 0x00B0 (176) +0xEF9F, 0xD73E, 0xBE9D, 0xBEBD, 0xBE9D, 0xBE9D, 0xB69D, 0xC6BD, 0xCEDD, 0x6CFA, 0x0295, 0x9DBB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xE75E, 0x1AF6, 0x4C58, 0xBEBD, 0xB67D, 0xAE5C, 0xB67D, 0xB67D, 0xB69D, 0xB67D, 0xBEBD, 0xF7DF, 0xFFFF, // 0x00D0 (208) +0xFFFF, 0xFFFF, 0xCF1E, 0xB67D, 0xB67D, 0xB67D, 0xB67D, 0xAE5C, 0xAE5C, 0xC6BD, 0x857B, 0x0295, 0xA5DB, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFDF, 0x3BB7, 0x33D8, 0xB67D, 0xA63C, 0xA63C, 0xAE5C, 0xAE5D, 0xAE5D, 0xAE7D, 0xA65D, 0xC6DD, 0xFFFF, 0xFFFF, // 0x00F0 (240) +0xFFDF, 0xFFFF, 0xDF5E, 0xA65D, 0xAE7D, 0xAE5D, 0xAE5D, 0xAE5C, 0xA63C, 0xA61C, 0xB67D, 0x753A, 0x0295, 0xCEBC, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xF7DF, 0xFFFF, 0x957A, 0x12F6, 0x9E1C, 0x9E1C, 0x9E1C, 0x9E1C, 0xA63C, 0xA63C, 0xA63D, 0xA63D, 0xA65D, 0x9DFC, 0xDF3E, 0xFFFF, // 0x0110 (272) +0xFFFF, 0xFFDF, 0xA61C, 0xA65D, 0xA65D, 0xA63D, 0xA63C, 0xA63C, 0x9E1C, 0x9E1C, 0x9DFC, 0xAE3C, 0x3C18, 0x3396, 0xFFDF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xF79F, 0x2336, 0x64DA, 0x9DFC, 0x95DC, 0x95FC, 0x95FC, 0x9E1C, 0x9E1C, 0x9E3D, 0x9E3D, 0x9E3D, 0x9E3D, 0x7D3B, 0xA63C, // 0x0130 (304) +0xB6BD, 0x8DBB, 0x8DFC, 0xA65D, 0x9E3D, 0x9E3D, 0x9E1C, 0x9E1C, 0x95FC, 0x95FC, 0x95DC, 0x95DC, 0x8DBB, 0x0AF6, 0xA5DA, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xA5FB, 0x1337, 0x8DBB, 0x8DBB, 0x8DBC, 0x8DDC, 0x95FC, 0x95FC, 0x961C, 0x961D, 0x963D, 0x9E3D, 0x963D, 0xA67D, 0xB6BD, // 0x0150 (336) +0xB6BD, 0xAE7D, 0x9E3D, 0x9E3D, 0x961D, 0x961D, 0x961C, 0x95FC, 0x95FC, 0x8DDC, 0x8DDC, 0x859B, 0x95DC, 0x3C18, 0x4BD7, 0xFFFF, // 0x0160 (352) +0xFFFF, 0x6499, 0x33F8, 0x8DBB, 0x859B, 0x85BC, 0x85BC, 0x8DDC, 0x8DFC, 0x8DFD, 0x8E1D, 0x961D, 0x961D, 0x9E3D, 0xF7BF, 0xFFFF, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xA67D, 0x8E1D, 0x961D, 0x8E1D, 0x8DFD, 0x8DFC, 0x8DDC, 0x85BC, 0x85BC, 0x859B, 0x859B, 0x5CDA, 0x2336, 0xE71C, // 0x0180 (384) +0xFFFF, 0x43F8, 0x4C79, 0x859B, 0x7D7B, 0x7D9C, 0x85BC, 0x85DC, 0x85DC, 0x8DFD, 0x8DFD, 0x8E1D, 0x8E1D, 0xA67E, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFFF, 0xBEDE, 0x85FD, 0x8E1D, 0x8DFD, 0x8DFD, 0x85DC, 0x85DC, 0x85BC, 0x7D9C, 0x7D7B, 0x7D7B, 0x753B, 0x1B36, 0xBE5A, // 0x01A0 (416) +0xFFBE, 0x3BF8, 0x3419, 0x6D1B, 0x757B, 0x7D9C, 0x7D9C, 0x7DBC, 0x7DDD, 0x85FD, 0x85FD, 0x861D, 0x861D, 0x9E7E, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFFF, 0xFFFF, 0xB6DE, 0x85FD, 0x8E1D, 0x85FD, 0x85FD, 0x7DDD, 0x7DBC, 0x7D9C, 0x7D9C, 0x757B, 0x6D3B, 0x4C9A, 0x1337, 0xADD9, // 0x01C0 (448) +0xFFBE, 0x4418, 0x23B9, 0x3439, 0x4CBA, 0x653B, 0x759C, 0x7DBD, 0x7DDD, 0x7DFD, 0x861D, 0x861E, 0x861E, 0x9E7E, 0xFFFF, 0xFFFF, // 0x01D0 (464) +0xFFFF, 0xFFFF, 0xB6DE, 0x7E1E, 0x861E, 0x85FD, 0x7DFD, 0x7DDD, 0x7DBD, 0x759C, 0x653B, 0x4CDB, 0x3439, 0x2BF9, 0x1337, 0xA5B9, // 0x01E0 (480) +0xFF9E, 0x4C39, 0x2BF9, 0x345A, 0x3C7A, 0x3C9B, 0x4CFC, 0x5D5C, 0x659D, 0x75DD, 0x7DFE, 0x861E, 0x7E3E, 0x969F, 0xFFFF, 0xFFFF, // 0x01F0 (496) +0xFFFF, 0xFFFF, 0xB6FF, 0x7E1E, 0x863E, 0x7DFE, 0x75DD, 0x6D9D, 0x5D5C, 0x4CFC, 0x3C9B, 0x347A, 0x345A, 0x343A, 0x1B78, 0xA5B9, // 0x0200 (512) +0xF79E, 0x4418, 0x2C3A, 0x3C7A, 0x449B, 0x44DB, 0x4CFC, 0x4D3C, 0x555D, 0x5D7D, 0x65BE, 0x6DFE, 0x6DFF, 0x867F, 0xFFFF, 0xFFFF, // 0x0210 (528) +0xFFFF, 0xFFFF, 0xA6DF, 0x65FF, 0x6DFE, 0x65BE, 0x5D9E, 0x555D, 0x4D3C, 0x4CFC, 0x44DB, 0x44BB, 0x3C7A, 0x345A, 0x1B78, 0xA599, // 0x0220 (544) +0xFFDE, 0x43D8, 0x345A, 0x3C9A, 0x44DB, 0x4CFC, 0x4D3C, 0x555D, 0x5D9D, 0x5DBE, 0x65DE, 0x6DFF, 0x661F, 0x867F, 0xFFFF, 0xFFFF, // 0x0230 (560) +0xFFFF, 0xFFFF, 0xA6DF, 0x65FF, 0x6DFF, 0x65DE, 0x5DBE, 0x5D9D, 0x555D, 0x4D3C, 0x4CFC, 0x44DB, 0x3C7A, 0x3C9B, 0x1B57, 0xADB9, // 0x0240 (576) +0xFFFF, 0x4BD7, 0x2C1A, 0x44DB, 0x44DB, 0x4D1C, 0x555D, 0x5D7D, 0x5DBE, 0x65DE, 0x6E1F, 0x6E3F, 0x765F, 0x96BF, 0xFFFF, 0xFFFF, // 0x0250 (592) +0xFFFF, 0xFFFF, 0xAEFF, 0x6E3F, 0x763F, 0x6E1F, 0x65DE, 0x5DBE, 0x5D7D, 0x555D, 0x4D1C, 0x44DC, 0x3C9B, 0x44DC, 0x1AD5, 0xC639, // 0x0260 (608) +0xFFFF, 0x84D8, 0x1317, 0x5D7D, 0x44DB, 0x553C, 0x557D, 0x5D9E, 0x65DE, 0x65FF, 0x6E3F, 0x7E5F, 0x7E7F, 0x9EDF, 0xFFFF, 0xFFFF, // 0x0270 (624) +0xFFFF, 0xFFFF, 0xB73F, 0x7E7F, 0x7E5F, 0x6E3F, 0x65FF, 0x65DE, 0x5D9E, 0x557D, 0x553C, 0x44DC, 0x4D1C, 0x345B, 0x22B4, 0xE71B, // 0x0280 (640) +0xFFFF, 0xD6BC, 0x0234, 0x4CFC, 0x5D7D, 0x4D3C, 0x5D9D, 0x5DBE, 0x65FF, 0x6E3F, 0x765F, 0x867F, 0x8EBF, 0xA6DF, 0xFFFF, 0xFFFF, // 0x0290 (656) +0xFFFF, 0xFFFF, 0xB71F, 0x8EBF, 0x869F, 0x765F, 0x6E3F, 0x65FF, 0x5DBE, 0x5D7D, 0x553D, 0x4D1C, 0x65BE, 0x0AB7, 0x6C15, 0xFFBE, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0x53B6, 0x0296, 0x75FE, 0x5D9D, 0x557D, 0x65DE, 0x6E1F, 0x763F, 0x7E7F, 0x8EBF, 0x9EFF, 0x96BE, 0xAE3C, 0xE77E, // 0x02B0 (688) +0xEF9E, 0xC69D, 0x967E, 0x9EFF, 0x8EBF, 0x7E7F, 0x763F, 0x6E1F, 0x65DE, 0x5D9E, 0x555D, 0x761E, 0x341A, 0x1294, 0xBE18, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xCE9B, 0x0A13, 0x2378, 0x7E5F, 0x6E1E, 0x5DBE, 0x6E1F, 0x7E5F, 0x869F, 0x96DF, 0x9EFF, 0xAF5F, 0x9E9E, 0x8DFC, // 0x02D0 (720) +0x8E1C, 0x967D, 0xAF3F, 0xA6FF, 0x96DF, 0x869F, 0x7E5F, 0x6E1F, 0x5DBE, 0x65DE, 0x7E5F, 0x4CBB, 0x0AB5, 0x7454, 0xEF5C, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFFF, 0xFFFF, 0x8D17, 0x01D3, 0x23B9, 0x7E3E, 0x8E9F, 0x763F, 0x765F, 0x8E9F, 0x9EDF, 0xA71F, 0xB75F, 0xC7BF, 0xCFDF, // 0x02F0 (752) +0xCFDF, 0xC7BF, 0xB75F, 0xA71F, 0x9EDF, 0x8E9F, 0x765F, 0x6E1F, 0x867F, 0x8E7F, 0x4CBB, 0x1317, 0x4BB4, 0xD679, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFBD, 0x7476, 0x0214, 0x1B78, 0x659D, 0x9EDF, 0x9EFF, 0x96DF, 0x9EFF, 0xAF1F, 0xB75F, 0xC79F, 0xD7DF, // 0x0310 (784) +0xD7DF, 0xC79F, 0xB75F, 0xAF1F, 0x9EDF, 0x96DF, 0x96DF, 0x9EFF, 0x7E1E, 0x3C5A, 0x1B77, 0x43B5, 0xBDD6, 0xF7BE, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77D, 0x7CB6, 0x12B4, 0x1337, 0x449B, 0x7DFD, 0xA6FF, 0xB75F, 0xBF7F, 0xC79F, 0xCFBF, 0xD7FF, // 0x0330 (816) +0xD7FF, 0xCFBF, 0xC79F, 0xBF7F, 0xB77F, 0xAF1F, 0x8E5E, 0x551B, 0x3419, 0x2BD7, 0x5415, 0xB5B6, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79D, 0xA577, 0x3B75, 0x1B36, 0x2BD9, 0x4CBB, 0x759D, 0x965E, 0xAEDF, 0xBF3F, 0xC77F, // 0x0350 (848) +0xC77F, 0xBF3F, 0xB6FF, 0x9E7F, 0x7DDD, 0x5D1C, 0x447A, 0x3C59, 0x4437, 0x7474, 0xC617, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDE, 0xD699, 0x84D5, 0x43D5, 0x33B7, 0x3418, 0x4C7A, 0x5CFC, 0x753D, 0x857E, // 0x0370 (880) +0x859E, 0x755D, 0x653C, 0x5CFB, 0x4CDA, 0x4CB9, 0x5497, 0x6C95, 0xA555, 0xDEDA, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79D, 0xCE79, 0x9D56, 0x7495, 0x5C56, 0x4C77, 0x4C97, 0x4CB8, // 0x0390 (912) +0x54D8, 0x5CD8, 0x5CF8, 0x64D7, 0x74D6, 0x8CF5, 0xAD96, 0xD699, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFBE, 0xEF1B, 0xD679, 0xBDF7, 0xAD96, 0xA576, // 0x03B0 (944) +0xA576, 0xAD76, 0xB5B6, 0xC5F7, 0xD679, 0xEF3C, 0xFFDE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFBE, // 0x03D0 (976) +0xF7BE, 0xF7BE, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/chipKit/UTFT_Bitmap/tux.c b/libraries/UTFT/examples/chipKit/UTFT_Bitmap/tux.c new file mode 100644 index 0000000..69a04a1 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Bitmap/tux.c @@ -0,0 +1,71 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: tux.png +// Time generated: 11.10.2010 22:51:32 +// Size : 2 048 Bytes + +const unsigned short tux[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x9CD3, 0x9CF3, 0xA514, // 0x0010 (16) +0x9CF3, 0x8C51, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x5AEB, 0x7BEF, 0x9CD3, 0x94B2, // 0x0030 (48) +0x94B2, 0x94B2, 0x4228, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x9CF3, 0x18E3, 0x630C, 0x4A49, 0x4A69, // 0x0050 (80) +0x4A69, 0x528A, 0x4A49, 0x0000, 0xC638, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6D, 0x0000, 0x0020, 0x10A2, 0x1082, // 0x0070 (112) +0x0841, 0x0841, 0x0841, 0x0000, 0x630C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x528A, 0x4228, 0x8410, 0x0000, 0x0861, // 0x0090 (144) +0xAD55, 0xBDD7, 0x10A2, 0x0000, 0x2945, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x5ACB, 0x8C71, 0xE75D, 0x2126, 0x528B, // 0x00B0 (176) +0xE75D, 0xDEDB, 0x7BCF, 0x0000, 0x18E3, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6D, 0x4A4A, 0x6B2A, 0x8BE7, 0xA48A, // 0x00D0 (208) +0x6B09, 0x4A8A, 0x8431, 0x0000, 0x2104, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x6B6E, 0x5204, 0xDE6A, 0xFFF7, 0xFFF8, // 0x00F0 (240) +0xD5AC, 0xBCAA, 0x5A66, 0x0000, 0x1082, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C10, 0xC540, 0xFFED, 0xFF2C, 0xFEEC, // 0x0110 (272) +0xFECC, 0xFE66, 0x8260, 0x0000, 0x0000, 0xB596, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B3, 0x9C25, 0xFF20, 0xFE40, 0xFDA0, // 0x0130 (304) +0xFCC0, 0xF524, 0x836A, 0x0000, 0x0000, 0x630C, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x630C, 0x94B4, 0xFF13, 0xFD83, 0xF523, // 0x0150 (336) +0xE5CF, 0xF79E, 0xE71D, 0x0861, 0x0000, 0x0861, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xCE59, 0x0841, 0xD69A, 0xFFFF, 0xFF7D, 0xF77D, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x4A69, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x10A2, 0x8410, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFDF, 0xFFFF, 0xCE59, 0x0000, 0x0000, 0x0000, 0x9492, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x52AA, 0x0020, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFDF, 0xFFDF, 0xF7BE, 0xFFDF, 0x3186, 0x0000, 0x0020, 0x0841, 0xCE79, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xC638, 0x0000, 0x52AA, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x01D0 (464) +0xFFDF, 0xF7BE, 0xF79E, 0xFFFF, 0x9CF3, 0x0000, 0x0841, 0x0000, 0x39E7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01E0 (480) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5ACB, 0x0000, 0xBDF7, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0xFFDF, // 0x01F0 (496) +0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0x3186, 0x0000, 0x0861, 0x0000, 0xAD55, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x0861, 0x4A49, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x0210 (528) +0xF7BE, 0xF79E, 0xEF7D, 0xEF5D, 0xFFDF, 0x8410, 0x0000, 0x1082, 0x0000, 0x39E7, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0220 (544) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0xB596, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, // 0x0230 (560) +0xF79E, 0xEF7D, 0xEF7D, 0xE73C, 0xF79E, 0xAD55, 0x0861, 0x10A2, 0x0861, 0x0841, 0xCE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0x3185, 0x10A2, 0xE71C, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF79E, // 0x0250 (592) +0xEF7D, 0xEF7D, 0xEF5D, 0xE73C, 0xEF5D, 0xBDF7, 0x18C3, 0x18C3, 0x18C3, 0x0000, 0x8C71, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0260 (608) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0x39E7, 0xF7BE, 0xFFFF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF79E, 0xEF7D, // 0x0270 (624) +0xEF7D, 0xEF5D, 0xE73C, 0xE71C, 0xE71C, 0xC618, 0x18E3, 0x10A2, 0x10A2, 0x0020, 0x6B4D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C51, 0x38E0, 0x4A27, 0xFFFF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, // 0x0290 (656) +0xEF5D, 0xE73C, 0xE71C, 0xDEFB, 0xDF1D, 0xBDF8, 0x39C7, 0x5ACB, 0x528A, 0x10A3, 0x738F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDD6C, 0xFE2B, 0xBC45, 0xA513, 0xFFFF, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF5D, // 0x02B0 (688) +0xE73C, 0xE71C, 0xDEFB, 0xD6DC, 0xDD8E, 0xB3E4, 0x2124, 0x2965, 0x2945, 0x20C1, 0xB511, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77C, 0xE5CF, 0xF60B, 0xFF9B, 0xFF54, 0x8B02, 0x7BF0, 0xFFDF, 0xF79E, 0xEF5D, 0xEF5D, 0xE73C, // 0x02D0 (720) +0xE71C, 0xDEFB, 0xDEDB, 0xCE7A, 0xED89, 0xDDAD, 0x0842, 0x0000, 0x0000, 0xAC69, 0xDD6B, 0xEFBF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xFFFF, 0xFFBE, 0xE5CB, 0xEDC9, 0xFE4B, 0xFF14, 0xFEF3, 0xFF35, 0xFE8D, 0x51C1, 0x634E, 0xE73C, 0xEF5D, 0xE73C, 0xE71C, // 0x02F0 (752) +0xDEFB, 0xDEDB, 0xD6DB, 0xCE59, 0xE58B, 0xFF98, 0xBD4F, 0x8B88, 0xCD90, 0xFFB7, 0xCCE8, 0xE73D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xEF3B, 0xF583, 0xFF30, 0xFF11, 0xFECF, 0xFEEF, 0xFECF, 0xFF30, 0xDD46, 0x2903, 0x6B8E, 0xEF7D, 0xE71C, 0xDEFB, // 0x0310 (784) +0xDEDB, 0xD6BA, 0xD69A, 0xCE59, 0xE5AA, 0xFF11, 0xFF53, 0xFF73, 0xFF33, 0xFF12, 0xFE6C, 0xDDAD, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFFF, 0xFFFF, 0xF79E, 0xEDC5, 0xFECB, 0xFECC, 0xFECC, 0xFEEC, 0xFECB, 0xFECC, 0xFEEA, 0x9BE5, 0x8432, 0xE73C, 0xDEDB, 0xDEDB, // 0x0330 (816) +0xD6BA, 0xD69A, 0xDEDB, 0xA4F3, 0xD547, 0xFF2E, 0xFECD, 0xFECE, 0xFEEE, 0xFEEE, 0xFF10, 0xFEAB, 0xE5A8, 0xEF7D, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xF79E, 0xF603, 0xFEA2, 0xFEC7, 0xFEC7, 0xFEA4, 0xFE81, 0xFE61, 0xFEA4, 0xFE43, 0xDE33, 0xE75E, 0xE71C, 0xDEFB, // 0x0350 (848) +0xDEDB, 0xCE58, 0x8C72, 0x5247, 0xEDE4, 0xFF0A, 0xFECA, 0xFEC9, 0xFE84, 0xFE83, 0xFEE7, 0xFEA3, 0xB443, 0xD69B, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xF75B, 0xFE60, 0xFF00, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xE5C1, 0x9492, 0xA514, 0x9CD3, // 0x0370 (880) +0x8410, 0x630B, 0x4229, 0x6AE8, 0xFE80, 0xFEC1, 0xFEC1, 0xFEA0, 0xFEA0, 0xFEE0, 0xDD80, 0x9BE8, 0xB597, 0xFFDF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xF79E, 0xD589, 0xE600, 0xFEA0, 0xFF00, 0xFF40, 0xFF40, 0xFF00, 0xFF00, 0xFF20, 0xFEC0, 0x5267, 0x4229, 0x4A48, // 0x0390 (912) +0x4A49, 0x5289, 0x424A, 0x7B46, 0xFF20, 0xFEE0, 0xFEE0, 0xFF20, 0xFEE0, 0xB4A5, 0x9C92, 0xDEFD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xE71D, 0xBDB6, 0xB530, 0xBD0B, 0xCD65, 0xEE60, 0xFF40, 0xFFA0, 0xFF80, 0xBD03, 0x8410, 0xA514, 0xA534, // 0x03B0 (944) +0xAD75, 0xB596, 0xA555, 0x9C8F, 0xF6C0, 0xFFA0, 0xFFA0, 0xF6E0, 0xA449, 0xB5B8, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7F, 0xD69C, 0xBD95, 0xBD4C, 0xCDC6, 0xB4E8, 0xAD35, 0xF7BF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xF7BF, 0xCDD0, 0xCDC6, 0xCDA7, 0xA48D, 0xCE7B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1F, 0xB59A, 0xBDDA, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFDF, 0xFFDF, 0xFFFF, 0xEF7F, 0xB59A, 0xAD59, 0xDF1D, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/UTFT_Bitmap_128x128.pde b/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/UTFT_Bitmap_128x128.pde new file mode 100644 index 0000000..85f0573 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/UTFT_Bitmap_128x128.pde @@ -0,0 +1,49 @@ +// UTFT_Bitmap_128x128 (C)2012 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the drawBitmap()-function. +// +// This demo was made to work on the 128x128 modules. +// Any other size displays may cause strange behaviour. +// +// This program requires the UTFT library. +// + +#include + +UTFT myGLCD(LPH9135,6,5,2,3,4); // Remember to change the model parameter to suit your display module! + +extern unsigned short icon1[0x400]; +extern unsigned short icon2[0x400]; +extern unsigned short tux[0x1000]; + +void setup() +{ + myGLCD.InitLCD(PORTRAIT); +} + +void loop() +{ +// Draw a 4 by 4 grid of a 32x32 icon. + myGLCD.fillScr(255, 255, 255); + for (int x=0; x<4; x++) + for (int y=0; y<4; y++) + myGLCD.drawBitmap (x*32, y*32, 32, 32, icon1); + + delay(5000); + +// Draw a 64x64 icon in double size. + myGLCD.fillScr(255, 255, 255); + myGLCD.drawBitmap (0, 0, 64, 64, tux, 2); + + delay(5000); + +// Draw a 2 by 2 grid of a 32x32 icon in double size. + myGLCD.fillScr(255, 255, 255); + for (int x=0; x<2; x++) + for (int y=0; y<2; y++) + myGLCD.drawBitmap (x*64, y*64, 32, 32, icon2, 2); + + delay(5000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/icon1.c b/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/icon1.c new file mode 100644 index 0000000..b9c2c97 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/icon1.c @@ -0,0 +1,72 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: exit.png +// Time generated: 14.10.2010 21:53:03 +// Dimensions : 32x32 pixels +// Size : 2 048 Bytes + +const unsigned short icon1[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF1C, 0xE618, 0xE638, 0xE638, 0xE638, 0xE659, 0xE659, 0xE659, 0xE659, 0xE659, 0xE679, 0xE679, // 0x0010 (16) +0xE679, 0xE679, 0xE679, 0xE679, 0xEE79, 0xEE9A, 0xEE9A, 0xEE9A, 0xEE9A, 0xEE9A, 0xE638, 0xEEBA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xD555, 0xCCD3, 0xDDB6, 0xDDD7, 0xDDF7, 0xDDF7, 0xDE18, 0xE618, 0xE638, 0xE638, 0xE659, 0xE679, 0xE679, // 0x0030 (48) +0xEE9A, 0xEE9A, 0xEEBA, 0xEEBA, 0xEEBA, 0xEEDB, 0xEEDB, 0xEEFB, 0xEEFB, 0xEEFB, 0xEEFB, 0xE659, 0xD575, 0xF77D, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFDF, 0xFFFF, 0xD534, 0xC471, 0xD575, 0xCCF3, 0xCCD3, 0xCCD3, 0xCCF3, 0xCCF3, 0xD4F3, 0xD514, 0xD514, 0xD514, 0xD534, 0xDD55, // 0x0050 (80) +0xDD55, 0xDD55, 0xDD55, 0xDD75, 0xDD75, 0xDD75, 0xDD96, 0xDD96, 0xDD96, 0xDDB6, 0xDDD7, 0xEE79, 0xEEBA, 0xD534, 0xFFBE, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xEEDB, 0xB38E, 0xC4B2, 0xBC30, 0xC451, 0xC471, 0xC471, 0xCC71, 0xCC92, 0xCC92, 0xCC92, 0xCCB2, 0xD4B2, 0xD4B2, 0xCC71, // 0x0070 (112) +0xCC71, 0xD4D3, 0xD4F3, 0xDCF3, 0xDCF3, 0xDD14, 0xDD14, 0xDD14, 0xDD34, 0xDD34, 0xDD34, 0xDD14, 0xE5D7, 0xDD96, 0xDDF7, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xC4F3, 0xAB2C, 0xC430, 0xC410, 0xC430, 0xC430, 0xC430, 0xCC51, 0xCC51, 0xCC51, 0xCC71, 0xCC71, 0xD471, 0xCC71, 0xD5F7, // 0x0090 (144) +0xD5F7, 0xCC92, 0xDCB2, 0xDCD3, 0xDCD3, 0xDCD3, 0xDCD3, 0xDCF3, 0xDCF3, 0xDD14, 0xDD14, 0xDD34, 0xDD14, 0xDD34, 0xC492, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xB3EF, 0x9A28, 0xC430, 0xBBCF, 0xC3EF, 0xC3EF, 0xC3EF, 0xC410, 0xCC10, 0xCC10, 0xCC30, 0xCC51, 0xCBEF, 0xE638, 0xFFFF, // 0x00B0 (176) +0xFFFF, 0xE659, 0xD430, 0xDC92, 0xDC92, 0xDC92, 0xDCB2, 0xDCB2, 0xDCB2, 0xDCD3, 0xDCD3, 0xDCD3, 0xE514, 0xD410, 0xAB0C, 0xF7FF, // 0x00C0 (192) +0xFFFF, 0xABCF, 0x9165, 0xC3EF, 0xBB8E, 0xBBAE, 0xC3AE, 0xC3CF, 0xC3CF, 0xCBCF, 0xCBEF, 0xCC10, 0xCC10, 0xCBAE, 0xEE9A, 0xFFFF, // 0x00D0 (208) +0xFFFF, 0xF6DB, 0xD410, 0xDC71, 0xDC71, 0xDC71, 0xDC71, 0xDC71, 0xDC71, 0xE492, 0xE492, 0xE492, 0xE4F3, 0xCB2C, 0xA249, 0xF7FF, // 0x00E0 (224) +0xFFFF, 0xABCF, 0x88C3, 0xC3AE, 0xBB4D, 0xBB6D, 0xC36D, 0xC38E, 0xC38E, 0xCBAE, 0xC36D, 0xC34D, 0xCBCF, 0xCB8E, 0xEE59, 0xFFFF, // 0x00F0 (240) +0xFFFF, 0xF6BA, 0xDBCF, 0xD3CF, 0xCBAE, 0xD3CF, 0xE430, 0xE430, 0xE451, 0xE451, 0xE451, 0xE451, 0xECD3, 0xCAAA, 0xA208, 0xF7FF, // 0x0100 (256) +0xFFFF, 0xABCF, 0x8061, 0xBB6D, 0xBB2C, 0xBB2C, 0xC34D, 0xC34D, 0xCB4D, 0xBB0C, 0xC492, 0xCD14, 0xC38E, 0xCB2C, 0xEE59, 0xFFFF, // 0x0110 (272) +0xFFFF, 0xF6BA, 0xD36D, 0xD575, 0xE6DB, 0xDDB6, 0xD3AE, 0xE3EF, 0xE410, 0xE410, 0xE430, 0xE410, 0xECB2, 0xC986, 0xA208, 0xF7FF, // 0x0120 (288) +0xFFFF, 0xB3EF, 0x8041, 0xBB0C, 0xBAEB, 0xBAEB, 0xC30C, 0xC30C, 0xBACB, 0xD5B6, 0xFFFF, 0xFFFF, 0xEE79, 0xCACB, 0xEE59, 0xFFFF, // 0x0130 (304) +0xFFFF, 0xF679, 0xDBEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEEBA, 0xD3CF, 0xE3AE, 0xE3EF, 0xE3CF, 0xEC10, 0xEB6D, 0xC000, 0xA249, 0xF7FF, // 0x0140 (320) +0xFFFF, 0xB3EF, 0x8020, 0xBACB, 0xBAAA, 0xBAAA, 0xC2EB, 0xBA8A, 0xD596, 0xFFFF, 0xFFDF, 0xFFFF, 0xF73C, 0xCAAA, 0xEE38, 0xFFFF, // 0x0150 (336) +0xFFFF, 0xF679, 0xDB4D, 0xFF7D, 0xFFFF, 0xFFDF, 0xFFFF, 0xEEDB, 0xDB6D, 0xEB8E, 0xEBAE, 0xEB8E, 0xE0A2, 0xC800, 0xAA49, 0xF7FF, // 0x0160 (352) +0xFFFF, 0xB3EF, 0x8000, 0xB28A, 0xBA69, 0xBA8A, 0xBA49, 0xCC30, 0xFFFF, 0xFFDF, 0xFFFF, 0xFF5D, 0xDBCF, 0xCA69, 0xEE18, 0xFFFF, // 0x0170 (368) +0xFFFF, 0xF679, 0xDAAA, 0xE3AE, 0xF6BA, 0xFFFF, 0xFFDF, 0xFFFF, 0xE5D7, 0xE30C, 0xEB8E, 0xE0E3, 0xE000, 0xC800, 0xAA49, 0xF7FF, // 0x0180 (384) +0xFFFF, 0xB3EF, 0x8800, 0xB249, 0xBA49, 0xBA49, 0xBA49, 0xEF1C, 0xFFFF, 0xFFFF, 0xFF7D, 0xD32C, 0xCA69, 0xD249, 0xEDF7, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xF659, 0xDAAA, 0xE2CB, 0xE2EB, 0xFEBA, 0xFFFF, 0xFFDF, 0xFFDF, 0xE3CF, 0xE103, 0xE000, 0xE081, 0xD000, 0xAA69, 0xF7FF, // 0x01A0 (416) +0xFFFF, 0xB3EF, 0x8800, 0xB228, 0xBA08, 0xB9A6, 0xCBAE, 0xFFFF, 0xFFDF, 0xFFFF, 0xDC30, 0xC9E7, 0xD28A, 0xCA08, 0xF618, 0xFFFF, // 0x01B0 (432) +0xFFFF, 0xF679, 0xDA49, 0xE2CB, 0xE28A, 0xEB6D, 0xFFBE, 0xFFDF, 0xFFFF, 0xEC92, 0xE000, 0xE0A2, 0xE0C2, 0xD040, 0xAA89, 0xF7FF, // 0x01C0 (448) +0xFFFF, 0xB3EF, 0x8800, 0xB1E7, 0xB9E7, 0xB165, 0xDD55, 0xFFFF, 0xFFFF, 0xF71C, 0xCA08, 0xCA08, 0xD228, 0xD1E7, 0xE430, 0xFFDF, // 0x01D0 (464) +0xFFDF, 0xEC51, 0xDA08, 0xE28A, 0xE28A, 0xE228, 0xF618, 0xFFFF, 0xFFFF, 0xF679, 0xE081, 0xE0C2, 0xE903, 0xD081, 0xAA89, 0xF7FF, // 0x01E0 (480) +0xFFFF, 0xBBEF, 0x9000, 0xB1A6, 0xB986, 0xB145, 0xEE38, 0xFFFF, 0xFFFF, 0xED96, 0xC165, 0xC9E7, 0xD1E7, 0xD1E7, 0xD1C7, 0xDACB, // 0x01F0 (496) +0xE2EB, 0xD9E7, 0xE228, 0xE228, 0xEA69, 0xE9E7, 0xF40F, 0xFFFF, 0xFFFF, 0xFF5D, 0xE144, 0xE8E2, 0xE943, 0xD8C1, 0xAA8A, 0xF7FF, // 0x0200 (512) +0xFFFF, 0xBC10, 0x9000, 0xB165, 0xB145, 0xB924, 0xEE9A, 0xFFFF, 0xFFFF, 0xE514, 0xC124, 0xC9A6, 0xD1A6, 0xD1A6, 0xD1C7, 0xD9A6, // 0x0210 (528) +0xD9A6, 0xE1E7, 0xE208, 0xE208, 0xE9A6, 0xE041, 0xEA8A, 0xFFFF, 0xFFFF, 0xFF9E, 0xE9C6, 0xE902, 0xE984, 0xD902, 0xAAAA, 0xF7FF, // 0x0220 (544) +0xFFFF, 0xC410, 0x9000, 0xB124, 0xB124, 0xB0C3, 0xEE18, 0xFFFF, 0xFFFF, 0xE575, 0xC0E3, 0xC986, 0xD165, 0xD165, 0xD986, 0xD9A6, // 0x0230 (560) +0xD9A6, 0xE1A6, 0xE165, 0xE082, 0xE020, 0xE000, 0xEB4C, 0xFFFF, 0xFFFF, 0xFF7D, 0xE9A5, 0xE943, 0xE9A5, 0xD923, 0xAAAA, 0xF7FF, // 0x0240 (576) +0xFFFF, 0xC410, 0x9800, 0xB0E3, 0xB0E3, 0xB061, 0xE4F3, 0xFFFF, 0xFFFF, 0xF6FB, 0xC104, 0xC924, 0xD145, 0xD145, 0xD945, 0xD945, // 0x0250 (592) +0xD8E3, 0xD861, 0xD800, 0xE000, 0xE061, 0xE000, 0xED34, 0xFFFF, 0xFFFF, 0xFE9A, 0xE923, 0xE984, 0xE9C5, 0xE163, 0xAAAA, 0xF7FF, // 0x0260 (608) +0xFFFF, 0xC410, 0xA000, 0xB0A2, 0xB0A2, 0xB041, 0xCACB, 0xFFFF, 0xFFDF, 0xFFFF, 0xD34D, 0xC841, 0xD104, 0xD0A2, 0xD061, 0xD000, // 0x0270 (624) +0xD800, 0xD800, 0xE000, 0xE041, 0xE000, 0xD965, 0xFF9E, 0xFFDF, 0xFFFF, 0xF4D2, 0xE8E2, 0xE9A5, 0xE9E5, 0xE183, 0xAAAA, 0xF7FF, // 0x0280 (640) +0xFFFF, 0xCC10, 0xA000, 0xA861, 0xB061, 0xB061, 0xB882, 0xF6DB, 0xFFFF, 0xFFDF, 0xF75D, 0xC124, 0xC800, 0xD000, 0xD000, 0xD800, // 0x0290 (656) +0xD800, 0xE000, 0xE020, 0xE000, 0xD861, 0xF638, 0xFFFF, 0xFFDF, 0xFFDF, 0xEA68, 0xE943, 0xE9C5, 0xEA06, 0xE1A4, 0xB2CA, 0xF7FF, // 0x02A0 (672) +0xFFFF, 0xCC10, 0xA000, 0xA820, 0xB000, 0xB000, 0xB000, 0xCA49, 0xFFFF, 0xFFDF, 0xFFFF, 0xF71C, 0xCA08, 0xC800, 0xD000, 0xD800, // 0x02B0 (688) +0xD800, 0xD800, 0xD800, 0xD944, 0xEE18, 0xFFFF, 0xFFBE, 0xFFFF, 0xF4F2, 0xE902, 0xE9A5, 0xE9C5, 0xEA06, 0xE9A4, 0xB2CA, 0xF7FF, // 0x02C0 (704) +0xFFFF, 0xD410, 0xA800, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xDC10, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xED96, 0xDAEB, 0xD1A6, // 0x02D0 (720) +0xD965, 0xDA69, 0xECD3, 0xFF9E, 0xFFFF, 0xFFBE, 0xFFFF, 0xFE17, 0xE923, 0xE964, 0xE9A5, 0xE9C5, 0xEA26, 0xE9C4, 0xBACA, 0xF7FF, // 0x02E0 (736) +0xF7FF, 0xD410, 0xA800, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xB800, 0xE3EF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF5B6, 0xE923, 0xE923, 0xE984, 0xE9A5, 0xE9E5, 0xEA26, 0xE9C5, 0xBACA, 0xF7FF, // 0x0300 (768) +0xF7FF, 0xDC10, 0xB000, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xC000, 0xC000, 0xD228, 0xF638, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFEFB, 0xF3AE, 0xE0C1, 0xE903, 0xE964, 0xE984, 0xE9A5, 0xE9E5, 0xEA26, 0xE9E5, 0xC2CA, 0xF7DF, // 0x0320 (800) +0xF7FF, 0xDC51, 0xB800, 0xA800, 0xB000, 0xB000, 0xB800, 0xB800, 0xC000, 0xC000, 0xC000, 0xC800, 0xD9E7, 0xEC30, 0xF5D7, 0xFE9A, // 0x0330 (816) +0xFEBA, 0xF618, 0xF4D3, 0xEACB, 0xE0E2, 0xE040, 0xE903, 0xE943, 0xE943, 0xE984, 0xE9A5, 0xE9E5, 0xEA26, 0xEA05, 0xC30C, 0xF7DF, // 0x0340 (832) +0xFFFF, 0xD575, 0xD104, 0xA820, 0xB000, 0xB800, 0xB800, 0xC000, 0xC000, 0xC000, 0xC820, 0xC800, 0xD000, 0xD000, 0xD800, 0xD800, // 0x0350 (848) +0xE000, 0xE000, 0xE000, 0xE000, 0xE0A1, 0xE0E3, 0xE903, 0xE943, 0xE964, 0xE984, 0xE9C5, 0xE9C5, 0xF226, 0xE227, 0xBC10, 0xF7FF, // 0x0360 (864) +0xFFFF, 0xDF3C, 0xCAAA, 0xD186, 0xB082, 0xB000, 0xB800, 0xB800, 0xB800, 0xC000, 0xC000, 0xC800, 0xC800, 0xD000, 0xD000, 0xD800, // 0x0370 (880) +0xD800, 0xE000, 0xE020, 0xE040, 0xE061, 0xE0A1, 0xE0C2, 0xE102, 0xE123, 0xE943, 0xE984, 0xEA26, 0xFB0A, 0xBA08, 0xCE38, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFDF, 0xBDD7, 0xCA69, 0xE248, 0xD207, 0xD1C6, 0xD1C6, 0xD9C7, 0xD9C7, 0xE1C7, 0xE1C7, 0xE1C7, 0xE9C7, 0xE9C7, 0xE9C7, // 0x0390 (912) +0xF1C6, 0xF1C7, 0xF1E7, 0xF207, 0xF228, 0xF248, 0xF269, 0xF289, 0xF2A9, 0xF2CA, 0xFB0A, 0xF2EA, 0xC207, 0xACB3, 0xF7BE, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xF7BE, 0xBDF7, 0xAB8E, 0xC2EB, 0xC2EB, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xC30B, 0xCB0B, 0xCAEB, // 0x03B0 (944) +0xCAEB, 0xCACA, 0xCACA, 0xCAAA, 0xCAAA, 0xCA8A, 0xCA69, 0xC269, 0xC269, 0xC289, 0xBA69, 0xA2CB, 0xAD34, 0xEF7D, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xDF3C, 0xBE39, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, // 0x03D0 (976) +0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xB5F7, 0xBE38, 0xD71C, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/icon2.c b/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/icon2.c new file mode 100644 index 0000000..9b843cc --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/icon2.c @@ -0,0 +1,72 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: video.png +// Time generated: 14.10.2010 21:53:17 +// Dimensions : 32x32 pixels +// Size : 2 048 Bytes + +const unsigned short icon2[0x400] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE71C, 0xB5B6, 0x94B2, 0x8C71, // 0x0030 (48) +0x9492, 0xA534, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x9CF3, 0x73AE, 0x6B6D, 0x73AE, 0x7BCF, // 0x0050 (80) +0x7BEF, 0x7BCF, 0x7BEF, 0xA534, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0060 (96) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC638, 0x7BCF, 0x6B6D, 0x738E, 0x7BCF, 0x8C71, 0x9492, // 0x0070 (112) +0x9492, 0x9492, 0x9492, 0x8C51, 0x8C71, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x738E, 0x738E, 0x73AE, 0x6B4D, 0x8410, 0x9CF3, 0x9CF3, // 0x0090 (144) +0x9CF3, 0x9CF3, 0x9CF3, 0x9CF3, 0x94B2, 0x7BEF, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00A0 (160) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x738E, 0x7BEF, 0x8410, 0x632C, 0x4A69, 0x9492, 0xAD75, 0xAD55, // 0x00B0 (176) +0xAD55, 0xAD55, 0xAD55, 0xA534, 0xAD55, 0x9492, 0x8430, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBDF7, 0x7BCF, 0x8430, 0x7BCF, 0x6B4D, 0x528A, 0x6B6D, 0xB5B6, 0xB5B6, 0xB5B6, // 0x00D0 (208) +0xB5B6, 0xB596, 0xB596, 0xAD75, 0xAD75, 0xAD55, 0x8410, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0x7BEF, 0x9CD3, 0xA514, 0x5AEB, 0x630C, 0x6B4D, 0x9492, 0xC638, 0xC618, 0xC618, // 0x00F0 (240) +0xBDF7, 0xBDF7, 0xC618, 0xB5B6, 0xB5B6, 0xB596, 0x9492, 0x8C51, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x8C71, 0x94B2, 0xAD55, 0xB5B6, 0x738E, 0x6B4D, 0x632C, 0xB596, 0xD69A, 0xCE59, 0xCE59, // 0x0110 (272) +0xCE79, 0xCE59, 0x6B6D, 0x9492, 0xB5B6, 0xBDF7, 0x9CF3, 0x8430, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB5B6, 0x8C51, 0xAD55, 0xB5B6, 0xCE79, 0x8C51, 0x630C, 0x8C51, 0xCE79, 0xD6BA, 0xD69A, 0xDEDB, // 0x0130 (304) +0xBDD7, 0x8C51, 0x4228, 0x2965, 0xAD55, 0xC638, 0xA534, 0x8430, 0xB5B6, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x8C51, 0xA514, 0xB5B6, 0xC618, 0xD6BA, 0xB5B6, 0xB596, 0xE71C, 0xDEFB, 0xDEFB, 0xE71C, 0xAD55, // 0x0150 (336) +0x738E, 0x7BEF, 0x5AEB, 0x2945, 0xC638, 0xCE59, 0xA534, 0x9492, 0xA534, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0160 (352) +0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x94B2, 0xB5B6, 0xC618, 0xCE79, 0xD6BA, 0xE73C, 0xEF7D, 0xE73C, 0xEF5D, 0xE73C, 0x9CF3, 0x738E, // 0x0170 (368) +0x7BCF, 0x8430, 0x6B6D, 0x2965, 0xB596, 0xD69A, 0xAD55, 0x94B2, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xF79E, 0x9492, 0x9CF3, 0xB5B6, 0xD69A, 0xDEFB, 0xE71C, 0xE73C, 0x6B6D, 0x528A, 0xDEDB, 0xEF5D, 0x7BEF, 0x8430, // 0x0190 (400) +0x7BEF, 0x8C51, 0x7BCF, 0x2104, 0xB596, 0xD6BA, 0xAD55, 0x9CD3, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0xE6FC, // 0x01A0 (416) +0xFFDF, 0xFFFF, 0xCE59, 0x9492, 0x9492, 0x6B4D, 0x7BCF, 0xBDD7, 0xF7BE, 0xA514, 0x4A49, 0x528A, 0xC638, 0xEF7D, 0x7BEF, 0x7BEF, // 0x01B0 (432) +0x7BEF, 0x8430, 0x5AEB, 0x10A2, 0xC618, 0xD69A, 0xAD55, 0x94B2, 0xA514, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE5A, 0x8BF2, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xAD55, 0x94B2, 0x8C51, 0x5AEB, 0x632C, 0xBDD7, 0xE73C, 0x630C, 0x632C, 0xBDF7, 0xFFDF, 0xEF5D, 0xBDD7, 0xB5B6, // 0x01D0 (464) +0xAD75, 0xAD75, 0x8C51, 0x738E, 0xD69A, 0xCE59, 0xB596, 0x8C51, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xCE39, 0x7350, // 0x01E0 (480) +0xFFFF, 0xF79E, 0x94B2, 0x94B2, 0x7BCF, 0x5AEB, 0x738E, 0xD6BA, 0xD69A, 0x2104, 0x6B6D, 0xF79E, 0xF79E, 0xF79E, 0xF7BE, 0xF79E, // 0x01F0 (496) +0xEF7D, 0xEF5D, 0xE73C, 0xE73C, 0xDEFB, 0xBDF7, 0xBDF7, 0x7BEF, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD36, 0x7350, // 0x0200 (512) +0xFFFF, 0xDEDB, 0x8C51, 0x94B2, 0x738E, 0x632C, 0x73AE, 0xCE79, 0xF7BE, 0x7BEF, 0xA514, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0210 (528) +0xE73C, 0xE71C, 0xDEFB, 0xDEDB, 0xDEDB, 0xBDD7, 0xBDF7, 0x73AE, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x9C75, 0x736F, // 0x0220 (544) +0xFFFF, 0xCE59, 0x8430, 0x94B2, 0x6B4D, 0x6B4D, 0xB596, 0xE73C, 0xEF7D, 0xFFFF, 0xFFFF, 0xF7BE, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0230 (560) +0xE73C, 0xE73C, 0xDEFB, 0xDEFB, 0xD6BA, 0xC618, 0xAD55, 0x8C71, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0x6AEF, 0x9492, // 0x0240 (576) +0xFFFF, 0xBDF7, 0x8430, 0x8C71, 0x6B6D, 0xB596, 0xE71C, 0xE73C, 0xEF5D, 0xE73C, 0xBDF7, 0xCE59, 0xF7BE, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0250 (592) +0xE73C, 0xE71C, 0xDEFB, 0xDEFB, 0xC638, 0xD69A, 0x8410, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x9474, 0x6B0E, 0xCE59, // 0x0260 (608) +0xFFFF, 0xB5B6, 0x8410, 0x9492, 0xBDD7, 0xD6BA, 0xD6BA, 0xE71C, 0xE73C, 0x8C71, 0x6B4D, 0xA514, 0xF7BE, 0xEF5D, 0xEF5D, 0xE73C, // 0x0270 (624) +0xE73C, 0xE71C, 0xDEFB, 0xDEDB, 0xCE59, 0xC618, 0x7BCF, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC5F9, 0x7B51, 0x7BEF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xB596, 0x8C71, 0xAD75, 0xBDF7, 0xCE59, 0xD69A, 0xE71C, 0xCE79, 0x8410, 0x8410, 0x9CD3, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, // 0x0290 (656) +0xE71C, 0xDEFB, 0xDEFB, 0xCE59, 0xDEDB, 0x8C71, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEBB, 0x83B2, 0x630C, 0xE73C, 0xFFFF, // 0x02A0 (672) +0xFFFF, 0xB5B6, 0x9492, 0xAD55, 0xBDD7, 0xC638, 0xCE79, 0xDEFB, 0xB596, 0x73AE, 0x8410, 0x8410, 0xDEDB, 0xE73C, 0xE71C, 0xE71C, // 0x02B0 (688) +0xDEFB, 0xDEFB, 0xD6BA, 0xCE59, 0xC618, 0x738E, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDC, 0x8C14, 0x5ACC, 0xC658, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xC638, 0x8C51, 0xA534, 0xB5B6, 0xBDF7, 0xCE59, 0xD6BA, 0x94B2, 0x738E, 0x8410, 0x8430, 0xCE59, 0xE73C, 0xDEFB, 0xDEFB, // 0x02D0 (720) +0xDEDB, 0xDEFB, 0xBDF7, 0xDEDB, 0x73AE, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDC, 0x8BD2, 0x5ACC, 0xBDD6, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) +0xFFFF, 0xDEDB, 0x8C51, 0xA514, 0xAD75, 0xBDD7, 0xC638, 0xC618, 0x73AE, 0x7BCF, 0x8410, 0x5ACB, 0x8C51, 0xE73C, 0xDEDB, 0xD6BA, // 0x02F0 (752) +0xDEFB, 0xBDD7, 0xD69A, 0x8C71, 0x8C51, 0xFFFF, 0xFFFF, 0xFFDE, 0xCE5A, 0x7B71, 0x62ED, 0xBDF7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xF7BE, 0x94B2, 0x94B2, 0xA534, 0xB596, 0xBDF7, 0xB596, 0x6B6D, 0x4208, 0x2945, 0x18C3, 0x6B6D, 0xDEFB, 0xD69A, 0xDEDB, // 0x0310 (784) +0xB5B6, 0xC618, 0x9CF3, 0x6B4D, 0xFFDE, 0xFFFF, 0xEF5D, 0xAD37, 0x62EE, 0x6B4D, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0320 (800) +0xFFDF, 0xFFFF, 0xBDF7, 0x8C51, 0xA514, 0xAD55, 0xB596, 0xBDD7, 0xA514, 0x738E, 0xA514, 0xB5B6, 0xCE59, 0xD69A, 0xDEDB, 0xB596, // 0x0330 (816) +0xBDF7, 0xA534, 0x6B4C, 0xEF5D, 0xF79E, 0xBDB8, 0x7370, 0x5AAC, 0x8C71, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xF79E, 0x94B2, 0x94B2, 0xA534, 0xAD55, 0xB5B6, 0xA534, 0xBDD7, 0xD69A, 0xCE59, 0xCE79, 0xCE59, 0xA534, 0x8430, // 0x0350 (848) +0x738E, 0x3186, 0x7BB0, 0x8C33, 0x7370, 0x62ED, 0x8410, 0xCE59, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) +0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x8C71, 0x9CD3, 0xAD55, 0xB596, 0xBDD7, 0xBDD7, 0xBDF7, 0xC618, 0xB5B6, 0xA534, 0xA534, 0x632C, // 0x0370 (880) +0x6B6D, 0xB5B6, 0xAD76, 0xAD76, 0xBE17, 0xE71B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x94B2, 0x8C51, 0x94B2, 0xA534, 0xAD55, 0xAD55, 0x9CD3, 0x8C71, 0x73AE, 0x632C, 0xA534, // 0x0390 (912) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xCE59, 0xA514, 0x8430, 0x7BCF, 0x738E, 0x73AE, 0x8410, 0xA534, 0xEF7D, 0xFFFF, // 0x03B0 (944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xE73C, 0xE71C, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +}; diff --git a/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/tux.c b/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/tux.c new file mode 100644 index 0000000..7fefd80 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Bitmap_128x128/tux.c @@ -0,0 +1,264 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: tux_64x64.png +// Time generated: 14.10.2010 21:56:38 +// Dimensions : 64x64 pixels +// Size : 8 192 Bytes + +const unsigned short tux[0x1000] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE79, 0x9CF3, 0x7BCF, 0x738E, 0x738E, // 0x0020 (32) +0x6B6D, 0x94B2, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCE79, 0x6B4D, 0x5ACB, 0x8410, 0x9CF3, 0x9CF3, 0x9CF3, // 0x0060 (96) +0x9CD3, 0x73AE, 0x4208, 0x5ACB, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA514, 0x3186, 0x8C51, 0xBDF7, 0xC618, 0xBDF7, 0xBDF7, 0xBDF7, // 0x00A0 (160) +0xBDF7, 0xC618, 0xBDD7, 0x738E, 0x18C3, 0x8C51, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00B0 (176) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xBDD7, 0x10A2, 0x8C71, 0x9CF3, 0x8C71, 0x8C71, 0x8C71, 0x8C71, 0x8C71, // 0x00E0 (224) +0x8C71, 0x8C51, 0x8C51, 0x9CF3, 0x73AE, 0x0000, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00F0 (240) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0110 (272) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x2945, 0x31A6, 0x7BCF, 0x6B4D, 0x6B6D, 0x6B6D, 0x6B6D, 0x6B6D, 0x6B6D, // 0x0120 (288) +0x6B6D, 0x6B6D, 0x6B6D, 0x6B4D, 0x73AE, 0x2124, 0x0000, 0xAD55, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0130 (304) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0150 (336) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xC638, 0x0000, 0x31A6, 0x52AA, 0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x4A69, // 0x0160 (352) +0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x528A, 0x2104, 0x0000, 0x2965, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0170 (368) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0190 (400) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8C71, 0x0000, 0x1082, 0x3186, 0x3186, 0x3186, 0x3186, 0x3186, 0x3186, 0x3186, // 0x01A0 (416) +0x3186, 0x3186, 0x3186, 0x3186, 0x2965, 0x0020, 0x0000, 0x0000, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01B0 (432) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01D0 (464) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x630C, 0x0000, 0x0000, 0x0861, 0x18C3, 0x10A2, 0x10A2, 0x10A2, 0x10A2, 0x18C3, // 0x01E0 (480) +0x1082, 0x0841, 0x1082, 0x10A2, 0x0020, 0x0000, 0x0000, 0x0000, 0x528A, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01F0 (496) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0210 (528) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x4A49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0220 (544) +0x0861, 0x3186, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0230 (560) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0250 (592) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x39C7, 0x0000, 0x3186, 0xAD75, 0x8C51, 0x0841, 0x0000, 0x0000, 0x0000, 0x4208, // 0x0260 (608) +0xD6BA, 0xFFDF, 0xE71C, 0x630C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0270 (624) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0290 (656) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x39C7, 0x0000, 0xCE59, 0xFFFF, 0xFFFF, 0x94B2, 0x0000, 0x0000, 0x10A2, 0xE73C, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x94B2, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02B0 (688) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02D0 (720) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2965, 0x18E3, 0xDEDB, 0x7BCF, 0xAD75, 0xEF5D, 0x2944, 0x0000, 0x5ACA, 0xFFFF, // 0x02E0 (736) +0xAD55, 0x94B2, 0xAD55, 0xF7BE, 0x8410, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02F0 (752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0310 (784) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x39E7, 0x2945, 0xA514, 0x9CF3, 0x8C71, 0xD6BB, 0x39C9, 0x0000, 0x632E, 0xF7DF, // 0x0320 (800) +0x7BEF, 0xAD54, 0x7BEF, 0xBDF7, 0xB596, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C71, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0330 (816) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x4A49, 0x18C3, 0x9492, 0x39E7, 0x3187, 0xA48F, 0x8323, 0x5A00, 0x93A6, 0xCDD5, // 0x0360 (864) +0x4209, 0x4249, 0x2965, 0x9CD2, 0xB575, 0x0000, 0x0000, 0x0000, 0x0000, 0x9492, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0370 (880) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x5ACB, 0x0000, 0x9D14, 0x2905, 0x6A40, 0xE643, 0xFFAE, 0xFFF3, 0xFF70, 0xDD86, // 0x03A0 (928) +0x7240, 0x1840, 0x18C3, 0xC65A, 0x73CF, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03D0 (976) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x738E, 0x0000, 0x5A6A, 0xD566, 0xFF66, 0xFFF8, 0xFFFD, 0xFFDC, 0xFFFD, 0xFFFA, // 0x03E0 (992) +0xFF0E, 0xE566, 0xC464, 0xC4CC, 0x2103, 0x0000, 0x0000, 0x0000, 0x0000, 0x6B6D, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0410 (1040) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7BEF, 0x0800, 0xB440, 0xFFC6, 0xFFF3, 0xFFB4, 0xFFB2, 0xFF92, 0xFF72, 0xFF53, // 0x0420 (1056) +0xFF55, 0xFF75, 0xFEF0, 0xF542, 0x8240, 0x0000, 0x0000, 0x0000, 0x0000, 0x4228, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0430 (1072) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0440 (1088) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0450 (1104) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8432, 0x4140, 0xFFE2, 0xFFEB, 0xFFAC, 0xFF8B, 0xFF4C, 0xFF2C, 0xFEEC, 0xFECB, // 0x0460 (1120) +0xFE6A, 0xFE08, 0xFDA7, 0xFDC3, 0xA320, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0xD69A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0470 (1136) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0490 (1168) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x9D14, 0x28A0, 0xF6E0, 0xFFE1, 0xFF43, 0xFF04, 0xFEC4, 0xFE84, 0xFE23, 0xFDE1, // 0x04A0 (1184) +0xFD60, 0xFD20, 0xFD20, 0xFD20, 0x7241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CF3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04B0 (1200) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04C0 (1216) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04D0 (1232) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xB5B6, 0x0000, 0xC4A9, 0xFEC0, 0xFF00, 0xFEA0, 0xFE40, 0xFE00, 0xFDA0, 0xFD60, // 0x04E0 (1248) +0xFD40, 0xFD20, 0xEC80, 0xDCC7, 0x8C0F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x04F0 (1264) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0500 (1280) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0510 (1296) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xAD75, 0x0000, 0xD69B, 0xF631, 0xF5C0, 0xFE80, 0xFE00, 0xFDC0, 0xFD60, 0xFD40, // 0x0520 (1312) +0xFCC0, 0xDC86, 0xCD93, 0xE73D, 0xE71C, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0530 (1328) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0540 (1344) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0550 (1360) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x632C, 0x0000, 0xD6BA, 0xFFFF, 0xF5F1, 0xFD40, 0xFD80, 0xFD20, 0xFCE0, 0xECA3, // 0x0560 (1376) +0xDD6F, 0xE6FC, 0xFFFF, 0xFFFF, 0xFFFF, 0x632C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5ACB, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0570 (1392) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0580 (1408) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0590 (1424) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xDEDB, 0x0861, 0x0000, 0xD69A, 0xFFFF, 0xFFFF, 0xFED8, 0xF631, 0xF610, 0xE5F2, 0xE6B9, // 0x05A0 (1440) +0xF7BF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xE71C, 0x10A2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xB5B6, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05B0 (1456) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05C0 (1472) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x05D0 (1488) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x39E7, 0x0000, 0x4228, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7FF, 0xF7DF, 0xFFFF, // 0x05E0 (1504) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3186, 0xEF7D, 0xFFFF, 0xFFFF, // 0x05F0 (1520) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0600 (1536) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0610 (1552) +0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x738E, 0x0000, 0x18C3, 0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0620 (1568) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFFF, 0xCE59, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6B4D, 0xFFFF, 0xFFFF, // 0x0630 (1584) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0640 (1600) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0650 (1616) +0xFFFF, 0xFFDF, 0xFFFF, 0xA514, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0660 (1632) +0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0x2965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAD55, 0xFFFF, // 0x0670 (1648) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0680 (1664) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0690 (1680) +0xFFDF, 0xFFFF, 0xD69A, 0x0861, 0x0000, 0x2945, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06A0 (1696) +0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xFFFF, 0x7BCF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C3, 0xD6BA, // 0x06B0 (1712) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06C0 (1728) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06D0 (1744) +0xFFFF, 0xFFDF, 0x39C7, 0x0000, 0x0000, 0x8430, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06E0 (1760) +0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xFFFF, 0xCE79, 0x0841, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4228, // 0x06F0 (1776) +0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0700 (1792) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x0710 (1808) +0xFFFF, 0x94B2, 0x0000, 0x0020, 0x0020, 0xCE79, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, // 0x0720 (1824) +0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xFFDF, 0x4A69, 0x0000, 0x0841, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, // 0x0730 (1840) +0x8C71, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0740 (1856) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0750 (1872) +0xEF7D, 0x2104, 0x0020, 0x0000, 0x3186, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, // 0x0760 (1888) +0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xFFFF, 0xB5B6, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, // 0x0770 (1904) +0x10A2, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0780 (1920) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, // 0x0790 (1936) +0x8C71, 0x0000, 0x0861, 0x0000, 0x7BCF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x07A0 (1952) +0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xFFDF, 0x528A, 0x0000, 0x0841, 0x0020, 0x0020, 0x0020, 0x0020, // 0x07B0 (1968) +0x0000, 0x630C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x07C0 (1984) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, // 0x07D0 (2000) +0x3186, 0x0000, 0x0841, 0x10A2, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, // 0x07E0 (2016) +0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xEF5D, 0xF7BE, 0xBDD7, 0x0841, 0x0861, 0x0841, 0x0841, 0x0841, 0x0020, // 0x07F0 (2032) +0x0020, 0x1082, 0xC638, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0800 (2048) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xBDD7, // 0x0810 (2064) +0x0020, 0x1082, 0x0000, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, // 0x0820 (2080) +0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF7D, 0x4208, 0x0020, 0x0861, 0x0861, 0x0841, 0x0841, // 0x0830 (2096) +0x0841, 0x0000, 0x630C, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0840 (2112) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x6B4D, // 0x0850 (2128) +0x0000, 0x0861, 0x2104, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, // 0x0860 (2144) +0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xE73C, 0xF7BE, 0x8430, 0x0000, 0x1082, 0x0861, 0x0861, 0x0861, // 0x0870 (2160) +0x0861, 0x0020, 0x18C3, 0xCE79, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0880 (2176) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x2124, // 0x0890 (2192) +0x0861, 0x0020, 0x8410, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, // 0x08A0 (2208) +0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xEF7D, 0xB5B6, 0x0861, 0x1082, 0x1082, 0x0861, 0x0861, // 0x08B0 (2224) +0x0861, 0x0861, 0x0000, 0x8430, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x08C0 (2240) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xA514, 0x0020, // 0x08D0 (2256) +0x10A2, 0x1082, 0xD69A, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, // 0x08E0 (2272) +0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xEF5D, 0xCE79, 0x2124, 0x1082, 0x10A2, 0x1082, 0x1082, // 0x08F0 (2288) +0x0861, 0x1082, 0x0000, 0x4208, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0900 (2304) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0x4208, 0x0861, // 0x0910 (2320) +0x1082, 0x31A6, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, // 0x0920 (2336) +0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEDB, 0x39C7, 0x1082, 0x10A2, 0x10A2, 0x1082, // 0x0930 (2352) +0x1082, 0x1082, 0x0841, 0x18C3, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0940 (2368) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA534, 0x0841, 0x18C3, // 0x0950 (2384) +0x0841, 0x630C, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, // 0x0960 (2400) +0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xDEFB, 0xE73C, 0x4A49, 0x0861, 0x18C3, 0x10A2, 0x10A2, // 0x0970 (2416) +0x10A2, 0x1082, 0x1082, 0x0841, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0980 (2432) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0x3186, 0x1082, 0x18E3, // 0x0990 (2448) +0x0861, 0x94B2, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, // 0x09A0 (2464) +0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEDB, 0xE73C, 0x4A69, 0x1082, 0x18E3, 0x18C3, 0x10A2, // 0x09B0 (2480) +0x10A2, 0x10A2, 0x10A2, 0x0020, 0x73AE, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x09C0 (2496) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0841, 0x18E3, 0x18E3, // 0x09D0 (2512) +0x0861, 0xAD75, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, // 0x09E0 (2528) +0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEDB, 0xE73C, 0x52AA, 0x10A2, 0x2104, 0x18E3, 0x18C3, // 0x09F0 (2544) +0x18C3, 0x18C3, 0x10A2, 0x0841, 0x630C, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A00 (2560) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x632C, 0x0861, 0x18E4, 0x18E4, // 0x0A10 (2576) +0x1082, 0xC638, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, // 0x0A20 (2592) +0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xD6BA, 0xE71C, 0x6B4D, 0x10A2, 0x18C3, 0x18C3, 0x10A2, // 0x0A30 (2608) +0x10A2, 0x10A2, 0x18C3, 0x0861, 0x5AEB, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A40 (2624) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8410, 0x0862, 0x3143, 0x2924, // 0x0A50 (2640) +0x0882, 0xBDD7, 0xFFFF, 0xFFDF, 0xFFDF, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, // 0x0A60 (2656) +0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xE73C, 0x630C, 0x2103, 0x4A69, 0x632C, 0x6B4D, // 0x0A70 (2672) +0x528A, 0x2965, 0x18C3, 0x1081, 0x738E, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A80 (2688) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xB596, 0x7A40, 0xECA0, 0xCC00, // 0x0A90 (2704) +0x3941, 0xA535, 0xFFFF, 0xF7BE, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, // 0x0AA0 (2720) +0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEFB, 0xD6DB, 0xCE38, 0xC618, 0x4A48, 0x4A49, 0x6B6D, 0x6B4D, 0x6B4D, // 0x0AB0 (2736) +0x6B4D, 0x630C, 0x3186, 0x18E4, 0x9492, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0AC0 (2752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xC488, 0xFD41, 0xFE6D, 0xFE6A, // 0x0AD0 (2768) +0xDC60, 0x5A25, 0xB5D8, 0xFFFF, 0xF7BE, 0xF7BE, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, // 0x0AE0 (2784) +0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xD6BB, 0xBCAB, 0xD462, 0xD462, 0x49E4, 0x10C3, 0x18C3, 0x18C3, 0x18C3, // 0x0AF0 (2800) +0x18C3, 0x18E3, 0x10A3, 0x49C4, 0xB575, 0xF7BF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B00 (2816) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xCD70, 0xECA0, 0xFF14, 0xFF9B, 0xFF7B, // 0x0B10 (2832) +0xFECF, 0xC3A0, 0x3143, 0x9CF3, 0xFFFF, 0xF7BE, 0xF79E, 0xF79E, 0xF79E, 0xEF7D, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, // 0x0B20 (2848) +0xE73C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEFB, 0xC617, 0xDC60, 0xFD60, 0xFD20, 0x3120, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B30 (2864) +0x0000, 0x0000, 0x3900, 0xE460, 0xB46A, 0xEF9F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B40 (2880) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD5F4, 0xDC20, 0xFE8E, 0xFF59, 0xFF36, 0xFF36, // 0x0B50 (2896) +0xFF59, 0xFE6B, 0xA300, 0x18E4, 0x8410, 0xFFBE, 0xF7BE, 0xEF7D, 0xF79E, 0xEF7D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, // 0x0B60 (2912) +0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEBA, 0xDEFB, 0xC5B5, 0xE4A1, 0xFEF2, 0xF716, 0x3164, 0x18E4, 0x2103, 0x1082, 0x1082, // 0x0B70 (2928) +0x0021, 0x1061, 0xD5D0, 0xFE27, 0xB3E3, 0xCE9B, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B80 (2944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF77D, 0xE697, 0xDDAF, 0xD4C8, 0xE480, 0xFE29, 0xFF36, 0xFF15, 0xFF35, 0xFF15, // 0x0B90 (2960) +0xFF15, 0xFF36, 0xFDA5, 0x6A42, 0x1905, 0x6B4C, 0xE73C, 0xFFDF, 0xEF5D, 0xEF7D, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, // 0x0BA0 (2976) +0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, 0xDEDB, 0xBDB5, 0xE4C3, 0xFF56, 0xFFDB, 0xAD10, 0x10A2, 0x10C3, 0x18E4, 0x1082, // 0x0BB0 (2992) +0x2922, 0xC5B1, 0xFFDC, 0xFED1, 0xB3A2, 0xBE19, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0BC0 (3008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE6B8, 0xD484, 0xE4C0, 0xF584, 0xFE28, 0xFECF, 0xFF14, 0xFF13, 0xFF13, 0xFF13, 0xFF13, // 0x0BD0 (3024) +0xFF13, 0xFF14, 0xFEF0, 0xDC80, 0x41C5, 0x2945, 0x5269, 0xCE59, 0xF7BE, 0xEF5D, 0xEF5D, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, // 0x0BE0 (3040) +0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, 0xD69A, 0xD6DB, 0xBD95, 0xE4E2, 0xFF33, 0xFF36, 0xFF97, 0xDDF1, 0x8B66, 0x7AE4, 0x9BC7, // 0x0BF0 (3056) +0xEEB2, 0xFF97, 0xFF37, 0xFEF0, 0xC3E0, 0xB5B7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C00 (3072) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD52B, 0xFD60, 0xFECD, 0xFF33, 0xFF13, 0xFF12, 0xFEF1, 0xFEF1, 0xFEF1, 0xFEF1, 0xFEF1, // 0x0C10 (3088) +0xFEF1, 0xFEF1, 0xFF12, 0xFE69, 0x9B41, 0x31A8, 0x31A6, 0x39E7, 0xB5B6, 0xF79E, 0xE73C, 0xE73C, 0xE73C, 0xE71C, 0xE71C, 0xDEFB, // 0x0C20 (3104) +0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD699, 0xD6BA, 0xBD94, 0xE502, 0xFF12, 0xFF15, 0xFEF4, 0xFF55, 0xFF95, 0xFF54, 0xFF95, // 0x0C30 (3120) +0xFF35, 0xFEF4, 0xFF14, 0xFF14, 0xF5A4, 0xB426, 0xE75E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C40 (3136) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD54C, 0xFDA0, 0xFECE, 0xFEF0, 0xFECF, 0xFEEF, 0xFEEF, 0xFEF0, 0xFEEF, 0xFEF0, 0xFEF0, // 0x0C50 (3152) +0xFEF0, 0xFEEF, 0xFEF0, 0xFEEF, 0xF582, 0x6244, 0x39E8, 0x39C6, 0x528A, 0xE71C, 0xE73C, 0xE71C, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, // 0x0C60 (3168) +0xDEDB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, 0xCE79, 0xCE9A, 0xBD94, 0xE522, 0xFF10, 0xFEF2, 0xFEF2, 0xFEF2, 0xFEF2, 0xFEF2, 0xFEF2, // 0x0C70 (3184) +0xFEF2, 0xFF12, 0xFEF2, 0xFEF2, 0xFF12, 0xED85, 0xBC68, 0xE73D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C80 (3200) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD5B0, 0xF580, 0xFECB, 0xFEEE, 0xFECD, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, // 0x0C90 (3216) +0xFEEE, 0xFEEE, 0xFECD, 0xFECE, 0xFECA, 0xCC60, 0x41C7, 0x39C7, 0x4228, 0xCE79, 0xEF5D, 0xE71C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, // 0x0CA0 (3232) +0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, 0xCE79, 0xCE59, 0xCE9A, 0xBD73, 0xED42, 0xFF0F, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, // 0x0CB0 (3248) +0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFEF0, 0xFF31, 0xF628, 0xC4A7, 0xDE57, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0CC0 (3264) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDE13, 0xF560, 0xFEC9, 0xFECD, 0xFECC, 0xFECC, 0xFECC, 0xFECC, 0xFECC, 0xFECC, 0xFECC, // 0x0CD0 (3280) +0xFEEC, 0xFEEC, 0xFECC, 0xFECC, 0xFEED, 0xFE44, 0x9323, 0x52CC, 0x73AE, 0xD69A, 0xE73C, 0xDEFB, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, // 0x0CE0 (3296) +0xD6BA, 0xD6BA, 0xD69A, 0xCE79, 0xCE59, 0xD69A, 0xB5D8, 0x7B28, 0xF5A2, 0xFF0F, 0xFECE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, // 0x0CF0 (3312) +0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFECD, 0xFF10, 0xFEA9, 0xCC60, 0xD615, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D00 (3328) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDE55, 0xED80, 0xFEA4, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFECA, 0xFEC9, // 0x0D10 (3344) +0xFEA7, 0xFEA6, 0xFEA8, 0xFEC9, 0xFECB, 0xFEEA, 0xEDA2, 0xB4F0, 0xCE9A, 0xDEFB, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, 0xD6BA, // 0x0D20 (3360) +0xD6BA, 0xD69A, 0xCE79, 0xCE79, 0xD6BA, 0xB596, 0x4A8B, 0x72A4, 0xFE45, 0xFEEC, 0xFECC, 0xFEEC, 0xFEEC, 0xFEEC, 0xFEEC, 0xFEEC, // 0x0D30 (3376) +0xFEEC, 0xFECB, 0xFECB, 0xFEEC, 0xFEEC, 0xFEEC, 0xFECC, 0xFEA5, 0xFDE0, 0xAC8B, 0xE75E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D40 (3392) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE632, 0xF5E0, 0xFE80, 0xFE82, 0xFEC7, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC7, 0xFEA4, 0xFE61, // 0x0D50 (3408) +0xFE60, 0xFE60, 0xFE60, 0xFE61, 0xFE83, 0xFEA6, 0xFEA3, 0xDD22, 0xD658, 0xE75D, 0xDEDB, 0xDEDB, 0xDEDB, 0xD6BA, 0xD6BA, 0xD69A, // 0x0D60 (3424) +0xD69A, 0xD69A, 0xD6BA, 0xCE59, 0x9492, 0x5289, 0x39E9, 0x9B84, 0xFEA3, 0xFEEB, 0xFEEA, 0xFEEA, 0xFEEA, 0xFEEA, 0xFEEA, 0xFEC8, // 0x0D70 (3440) +0xFE84, 0xFE61, 0xFE61, 0xFEA5, 0xFEC9, 0xFEA7, 0xFEA2, 0xFE80, 0xBC41, 0x8C0F, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D80 (3456) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDDCE, 0xFE40, 0xFEA0, 0xFE80, 0xFE80, 0xFEA2, 0xFEA2, 0xFEA2, 0xFEA0, 0xFE80, 0xFE80, // 0x0D90 (3472) +0xFEA0, 0xFEA0, 0xFEA0, 0xFE80, 0xFE80, 0xFE80, 0xFE80, 0xFE80, 0xCCE5, 0xD69A, 0xE73C, 0xE71C, 0xDEFB, 0xDEFB, 0xDEDB, 0xDEDB, // 0x0DA0 (3488) +0xD69A, 0xBDF7, 0x9CD3, 0x630C, 0x4228, 0x4A69, 0x422A, 0xB423, 0xFEC0, 0xFEA5, 0xFEE7, 0xFEC7, 0xFEC7, 0xFEC6, 0xFEA3, 0xFE80, // 0x0DB0 (3504) +0xFE80, 0xFE80, 0xFE80, 0xFE60, 0xFEA0, 0xFEC0, 0xEDC0, 0xA3A4, 0x732C, 0xAD96, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0DC0 (3520) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE5A8, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0DD0 (3536) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, 0xF640, 0x93A8, 0x8C72, 0xA534, 0xAD75, 0xA534, 0x9CF3, 0x8C51, // 0x0DE0 (3552) +0x738E, 0x5ACB, 0x4A49, 0x4A69, 0x528A, 0x4A8A, 0x5249, 0xD502, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC1, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, // 0x0DF0 (3568) +0xFEA0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFE60, 0xC482, 0x7B09, 0x7BD0, 0xB5B7, 0xEF5D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E00 (3584) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDD8A, 0xFEC0, 0xFF20, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, // 0x0E10 (3600) +0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEC0, 0xFF20, 0xAC02, 0x4209, 0x4A69, 0x4A69, 0x4A69, 0x4A69, 0x4A69, // 0x0E20 (3616) +0x528A, 0x528A, 0x52AA, 0x52AA, 0x528A, 0x4A8A, 0x5A69, 0xE5C1, 0xFF00, 0xFEC0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, // 0x0E30 (3632) +0xFEC0, 0xFEE0, 0xFF00, 0xE561, 0x9367, 0x736E, 0x9D14, 0xD6BA, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E40 (3648) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD617, 0xCCC5, 0xF620, 0xFEE0, 0xFF40, 0xFF40, 0xFF40, 0xFF20, 0xFF00, 0xFF00, 0xFF00, // 0x0E50 (3664) +0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF40, 0xB483, 0x4A8B, 0x5ACA, 0x5ACB, 0x5ACB, 0x5ACB, 0x5ACB, // 0x0E60 (3680) +0x5ACB, 0x52AA, 0x52AA, 0x52AA, 0x52AA, 0x4A8A, 0x6289, 0xEE20, 0xFF20, 0xFEE0, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFEE0, // 0x0E70 (3696) +0xFF20, 0xFEC0, 0xBC64, 0x732B, 0x8C72, 0xCE58, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E80 (3712) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7E, 0xB576, 0x93EE, 0xA408, 0xC4A5, 0xDD63, 0xF641, 0xFEC0, 0xFF40, 0xFF80, 0xFF60, // 0x0E90 (3728) +0xFF40, 0xFF20, 0xFF20, 0xFF40, 0xFF40, 0xFF40, 0xFF20, 0xFF20, 0xFF80, 0xAC03, 0x4A6B, 0x5ACA, 0x5ACB, 0x5ACB, 0x5AEB, 0x5AEB, // 0x0EA0 (3744) +0x5AEB, 0x630C, 0x630C, 0x630C, 0x5AEB, 0x52CB, 0x5A69, 0xE5E1, 0xFF60, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF60, // 0x0EB0 (3760) +0xF640, 0xA3A7, 0x738F, 0xAD96, 0xE71C, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0EC0 (3776) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF79E, 0xD6DB, 0xB5B8, 0x9CD4, 0x9431, 0x93EE, 0x9C0A, 0xB467, 0xD544, 0xF660, // 0x0ED0 (3792) +0xFF60, 0xFFA0, 0xFF80, 0xFF60, 0xFF40, 0xFF40, 0xFF60, 0xFFA0, 0xD521, 0x730A, 0x73CF, 0x8C71, 0x9CD3, 0x9CF3, 0xA514, 0xA534, // 0x0EE0 (3808) +0xAD55, 0xB596, 0xB5B6, 0xB596, 0xAD55, 0x9CF3, 0x83F0, 0xCD04, 0xFFA0, 0xFF40, 0xFF40, 0xFF40, 0xFF40, 0xFF40, 0xFFA0, 0xF621, // 0x0EF0 (3824) +0x8B49, 0x8431, 0xCE58, 0xF79E, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F00 (3840) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF79E, 0xE73C, 0xD6BB, 0xBE19, 0xA556, 0x9472, 0x9C0D, // 0x0F10 (3856) +0xB447, 0xDD82, 0xFEE0, 0xFFA0, 0xFFC0, 0xFFC0, 0xFF80, 0xC4C2, 0x730C, 0x9CF4, 0xD69A, 0xEF5D, 0xEF7D, 0xF79E, 0xF79E, 0xF7BE, // 0x0F20 (3872) +0xF7BE, 0xFFDF, 0xFFDF, 0xF7BE, 0xF7BE, 0xEF7D, 0xDF1C, 0xC530, 0xF620, 0xFFC0, 0xFFC0, 0xFFC0, 0xFFC0, 0xFF80, 0xE5A2, 0x834A, // 0x0F30 (3888) +0x8C93, 0xDEDA, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F40 (3904) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDE, 0xEF7D, 0xD6BB, // 0x0F50 (3920) +0xAD77, 0x9452, 0x9BEB, 0xB466, 0xC524, 0xC543, 0xA3E5, 0x734D, 0xAD76, 0xEF5C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F60 (3936) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDF1C, 0xACB0, 0xBCA6, 0xD544, 0xCD64, 0xCD05, 0xAC07, 0x7B6D, 0x9CF4, // 0x0F70 (3952) +0xE6FB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F80 (3968) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F90 (3984) +0xFFDE, 0xE75D, 0xC65A, 0xA536, 0x9493, 0x8C53, 0x94B4, 0xBE18, 0xEF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FA0 (4000) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xDEFC, 0xAD57, 0x9493, 0x8C73, 0x8C73, 0x94D4, 0xBE18, 0xEF5D, // 0x0FB0 (4016) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FC0 (4032) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FD0 (4048) +0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xEF5C, 0xE73C, 0xEF5C, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FE0 (4064) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xEF5C, 0xE73C, 0xEF5C, 0xEF7D, 0xFFDE, 0xFFFF, // 0x0FF0 (4080) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1000 (4096) +}; diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_128x128_Serial/UTFT_Demo_128x128_Serial.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_128x128_Serial/UTFT_Demo_128x128_Serial.pde new file mode 100644 index 0000000..45a97e6 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_128x128_Serial/UTFT_Demo_128x128_Serial.pde @@ -0,0 +1,335 @@ +// UTFT_Demo_128x128_Serial (C)2012 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made to work on the 128x128 modules. +// Any other size displays may cause strange behaviour. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Declare an instance of the class +UTFT myGLCD(LPH9135,6,5,2,3,4); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(PORTRAIT); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + byte buf[126]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + myGLCD.setContrast(64); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0,0,127,12); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0,117,127,127); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255,0,0); + myGLCD.print("Universal TFT", CENTER, 0); + myGLCD.setBackColor(64,64,64); + myGLCD.setColor(255,255,0); + myGLCD.print("H.Karlsen", LEFT, 116); + myGLCD.print("(C)2012", RIGHT, 116); + myGLCD.setColor(0,255,0); + myGLCD.drawRect(0,13,127,116); + +// Draw crosshairs + myGLCD.setColor(0,0,255); + myGLCD.drawLine(63,14,63,115); + myGLCD.drawLine(1,63,126,63); + for (int i=3; i<128; i+=10) + myGLCD.drawLine(i, 61, i, 65); + for (int i=14; i<118; i+=10) + myGLCD.drawLine(61, i, 65, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.setBackColor(0,0,0); + myGLCD.print("Sin", 2, 14); + for (int i=1; i<126; i++) + { + myGLCD.drawPixel(i,63+(sin(((i*2.85)*3.14)/180)*45)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 2, 26); + for (int i=1; i<126; i++) + { + myGLCD.drawPixel(i,63+(cos(((i*2.85)*3.14)/180)*45)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 2, 38); + for (int i=1; i<126; i++) + { + myGLCD.drawPixel(i,63+(tan(((i*2.85)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + myGLCD.setColor(0,0,255); + myGLCD.drawLine(63,14,63,115); + myGLCD.drawLine(1,63,126,63); + +// Draw a moving sinewave + x=1; + for (int i=1; i<3654; i++) + { + x++; + if (x==127) + x=1; + if (i>127) + { + if ((x==63)||(buf[x-1]==63)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=63+(sin(((i*1.3)*3.14)/180)*45); + myGLCD.drawPixel(x,y); + buf[x-1]=y; +// delay(3); + } + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(10+(i*10),10+(i*10), 60+(i*10), 60+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(70-(i*10),10+(i*10), 120-(i*10), 60+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(30+(i*10),35+(i*10), 25); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + + // Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=11; i<115; i+=3) + { + myGLCD.drawLine(1, i, i-10, 115); + } + myGLCD.setColor (255,0,0); + for (int i=112; i>14; i-=3) + { + myGLCD.drawLine(126, i, i+14, 14); + } + myGLCD.setColor (0,255,255); + for (int i=115; i>14; i-=3) + { + myGLCD.drawLine(1, i, 116-i, 14); + } + myGLCD.setColor (0,255,255); + for (int i=14; i<115; i+=3) + { + myGLCD.drawLine(126, i, 140-i, 115); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(85); + y=35+random(59); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(124); + y=15+random(101); + x2=2+random(124); + y2=15+random(101); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(124); + y=15+random(101); + x2=2+random(124); + y2=15+random(101); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random lines + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(124); + y=15+random(101); + x2=2+random(124); + y2=15+random(101); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,126,115); + +// Draw some random pixels + for (int i=0; i<5000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(124), 15+random(101)); + } + + delay (2000); + +// Set up the "Finished"-screen + myGLCD.setContrast(0); + myGLCD.fillScr(0,0,255); + myGLCD.setColor(255,0,0); + myGLCD.fillRoundRect(2, 40, 125, 88); + + myGLCD.setColor(255,255,255); + myGLCD.setBackColor(255,0,0); + myGLCD.print("That's it!", CENTER, 46); + myGLCD.print("Restarting in a", CENTER, 66); + myGLCD.print("few seconds...", CENTER, 76); + + myGLCD.setColor(0,0,0); + myGLCD.setBackColor(0,0,255); + myGLCD.print("Runtime: (msecs)", CENTER, 108); + myGLCD.printNumI(millis(), CENTER, 118); + + myGLCD.setContrast(64); + + delay (10000); + +// Fade screen to black + for (int i=64; i>0; i--) + { + myGLCD.setContrast(i); + delay(100); + } +} + + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_160x128_Serial/UTFT_Demo_160x128_Serial.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_160x128_Serial/UTFT_Demo_160x128_Serial.pde new file mode 100644 index 0000000..365b716 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_160x128_Serial/UTFT_Demo_160x128_Serial.pde @@ -0,0 +1,328 @@ +// UTFT_Demo_160x128_Serial (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 160x128 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Usage: myGLCD(, SDA, SCL, CS, RST[, RS]); +// +// When using the DM-TFT18-101 and shield from DisplayModule you should use the following: +// UTFT myGLCD(DMTFT18101,2,3,4,6,5); +// +UTFT myGLCD(ITDB18SP,11,10,9,12,8); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[158]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 159, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 114, 159, 127); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("Universal TFT Lib.", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("H.Karlsen", LEFT, 114); + myGLCD.print("(C)2014", RIGHT, 114); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 13, 159, 113); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(79, 14, 79, 113); + myGLCD.drawLine(1, 63, 158, 63); + + for (int i=9; i<150; i+=10) + myGLCD.drawLine(i, 61, i, 65); + for (int i=19; i<110; i+=10) + myGLCD.drawLine(77, i, 81, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<158; i++) + { + myGLCD.drawPixel(i,63+(sin(((i*2.27)*3.14)/180)*40)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<158; i++) + { + myGLCD.drawPixel(i,63+(cos(((i*2.27)*3.14)/180)*40)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<158; i++) + { + myGLCD.drawPixel(i,63+(tan(((i*2.27)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(79, 14, 79, 113); + myGLCD.drawLine(1, 63, 158, 63); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(158*20); i++) + { + x++; + if (x==159) + x=1; + if (i>159) + { + if ((x==79)||(buf[x-1]==63)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=63+(sin(((i*2.5)*3.14)/180)*(40-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(39+(i*10), 23+(i*10), 59+(i*10), 43+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(99-(i*10), 23+(i*10), 119-(i*10), 43+(i*10)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(49+(i*10),33+(i*10), 15); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=14; i<113; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 112); + } + myGLCD.setColor (255,0,0); + for (int i=112; i>15; i-=5) + { + myGLCD.drawLine(158, i, (i*1.44)-12, 14); + } + myGLCD.setColor (0,255,255); + for (int i=112; i>15; i-=5) + { + myGLCD.drawLine(1, i, 172-(i*1.44), 14); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<112; i+=5) + { + myGLCD.drawLine(158, i, 171-(i*1.44), 112); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(116); + y=35+random(57); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(156); + y=16+random(95); + x2=2+random(156); + y2=16+random(95); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(156); + y=16+random(95); + x2=2+random(156); + y2=16+random(95); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(156); + y=16+random(95); + x2=2+random(156); + y2=16+random(95); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,14,158,113); + + for (int i=0; i<5000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(156), 16+random(95)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(10, 17, 149, 72); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 20); + myGLCD.print("Restarting in a", CENTER, 45); + myGLCD.print("few seconds...", CENTER, 57); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 103); + myGLCD.printNumI(millis(), CENTER, 115); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_220x176/UTFT_Demo_220x176.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_220x176/UTFT_Demo_220x176.pde new file mode 100644 index 0000000..d82506e --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_220x176/UTFT_Demo_220x176.pde @@ -0,0 +1,329 @@ +// UTFT_Demo_220x176 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 220x176 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB22,82,83,84,85); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[218]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 219, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 162, 219, 175); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("** Universal TFT Library **", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("> elec.henningkarlsen.com <", CENTER, 163); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 219, 161); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + + for (int i=9; i<210; i+=10) + myGLCD.drawLine(i, 86, i, 90); + for (int i=19; i<155; i+=10) + myGLCD.drawLine(107, i, 111, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(sin(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(cos(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(tan(((i*1.65)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(218*20); i++) + { + x++; + if (x==219) + x=1; + if (i>219) + { + if ((x==109)||(buf[x-1]==88)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=88+(sin(((i*1.6)*3.14)/180)*(65-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(44+(i*15), 23+(i*15), 88+(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(132-(i*15), 23+(i*15), 172-(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(64+(i*15),43+(i*15), 20); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 160); + } + myGLCD.setColor (255,0,0); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(218, i, (i*1.44)-12, 15); + } + myGLCD.setColor (0,255,255); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(1, i, 232-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(218, i, 231-(i*1.44), 160); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(176); + y=35+random(105); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(216), 16+random(143)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(40, 57, 179, 119); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 62); + myGLCD.print("Restarting in a", CENTER, 88); + myGLCD.print("few seconds...", CENTER, 101); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 146); + myGLCD.printNumI(millis(), CENTER, 161); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_220x176_Serial/UTFT_Demo_220x176_Serial.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_220x176_Serial/UTFT_Demo_220x176_Serial.pde new file mode 100644 index 0000000..ec66344 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_220x176_Serial/UTFT_Demo_220x176_Serial.pde @@ -0,0 +1,322 @@ +// UTFT_Demo_220x176_Serial (C)2012 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for serial modules with a screen resolution +// of 220x176 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +UTFT myGLCD(ITDB22SP,11,10,9,12); // Remember to change the model parameter to suit your display module! + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[218]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 219, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 162, 219, 175); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("** Universal TFT Library **", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("> elec.henningkarlsen.com <", CENTER, 163); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 219, 161); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + + for (int i=9; i<210; i+=10) + myGLCD.drawLine(i, 86, i, 90); + for (int i=19; i<155; i+=10) + myGLCD.drawLine(107, i, 111, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(sin(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(cos(((i*1.65)*3.14)/180)*70)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<218; i++) + { + myGLCD.drawPixel(i,88+(tan(((i*1.65)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(109, 15, 109, 160); + myGLCD.drawLine(1, 88, 218, 88); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(218*20); i++) + { + x++; + if (x==219) + x=1; + if (i>219) + { + if ((x==109)||(buf[x-1]==88)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=88+(sin(((i*1.6)*3.14)/180)*(65-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(44+(i*15), 23+(i*15), 88+(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(132-(i*15), 23+(i*15), 172-(i*15), 63+(i*15)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(64+(i*15),43+(i*15), 20); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 160); + } + myGLCD.setColor (255,0,0); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(218, i, (i*1.44)-12, 15); + } + myGLCD.setColor (0,255,255); + for (int i=160; i>15; i-=5) + { + myGLCD.drawLine(1, i, 232-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<160; i+=5) + { + myGLCD.drawLine(218, i, 231-(i*1.44), 160); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,161); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=22+random(176); + y=35+random(105); + r=random(20); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(216); + y=16+random(143); + x2=2+random(216); + y2=16+random(143); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,218,160); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(216), 16+random(143)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(40, 57, 179, 119); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 62); + myGLCD.print("Restarting in a", CENTER, 88); + myGLCD.print("few seconds...", CENTER, 101); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 146); + myGLCD.printNumI(millis(), CENTER, 161); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_320x240/UTFT_Demo_320x240.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_320x240/UTFT_Demo_320x240.pde new file mode 100644 index 0000000..d849855 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_320x240/UTFT_Demo_320x240.pde @@ -0,0 +1,328 @@ +// UTFT_Demo_320x240 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,82,83,84,85); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[318]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 319, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 319, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 319, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + for (int i=9; i<310; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(157, i, 161, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(318*20); i++) + { + x++; + if (x==319) + x=1; + if (i>319) + { + if ((x==159)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(100+(i*20),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(318, i, (i*1.44)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 331-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(318, i, 330-(i*1.44), 224); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(256); + y=45+random(146); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(209); + x2=2+random(316); + y2=16+random(209); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(316), 16+random(209)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(80, 70, 239, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_320x240_Serial/UTFT_Demo_320x240_Serial.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_320x240_Serial/UTFT_Demo_320x240_Serial.pde new file mode 100644 index 0000000..8342994 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_320x240_Serial/UTFT_Demo_320x240_Serial.pde @@ -0,0 +1,323 @@ +// UTFT_Demo_320x240_Serial (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Usage: myGLCD(, SDA, SCL, CS, RST[, RS]); +UTFT myGLCD(TFT01_22SP,9,8,12,11,10); // Remember to change the model parameter to suit your display module! + +void setup() +{ +// Just get some random numbers + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[318]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 319, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 319, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 319, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + for (int i=9; i<310; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(157, i, 161, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<318; i++) + { + myGLCD.drawPixel(i,119+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(159, 15, 159, 224); + myGLCD.drawLine(1, 119, 318, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(318*20); i++) + { + x++; + if (x==319) + x=1; + if (i>319) + { + if ((x==159)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(100+(i*20),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.44)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(318, i, (i*1.44)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 331-(i*1.44), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(318, i, 330-(i*1.44), 224); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(256); + y=45+random(146); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(207); + x2=2+random(316); + y2=16+random(207); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(316); + y=16+random(209); + x2=2+random(316); + y2=16+random(209); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,318,224); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(316), 16+random(209)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(80, 70, 239, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_400x240/UTFT_Demo_400x240.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_400x240/UTFT_Demo_400x240.pde new file mode 100644 index 0000000..0745538 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_400x240/UTFT_Demo_400x240.pde @@ -0,0 +1,330 @@ +// UTFT_Demo_400x240 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 400x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32WD,82,83,84,85); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[398]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 399, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 226, 399, 239); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("*** Universal Color TFT Display Library ***", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("< http://electronics.henningkarlsen.com >", CENTER, 227); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 399, 225); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(199, 15, 199, 224); + myGLCD.drawLine(1, 119, 398, 119); + for (int i=9; i<390; i+=10) + myGLCD.drawLine(i, 117, i, 121); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(197, i, 201, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<398; i++) + { + myGLCD.drawPixel(i,119+(sin(((i*0.9)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<398; i++) + { + myGLCD.drawPixel(i,119+(cos(((i*0.9)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<398; i++) + { + y=119+(tan(((i*0.9)*3.14)/180)); + if ((y>15) && (y<224)) + myGLCD.drawPixel(i,y); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(199, 15, 199, 224); + myGLCD.drawLine(1, 119, 398, 119); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(398*20); i++) + { + x++; + if (x==399) + x=1; + if (i>399) + { + if ((x==199)||(buf[x-1]==119)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=119+(sin(((i)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(110+(i*20), 30+(i*20), 170+(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(230-(i*20), 30+(i*20), 290-(i*20), 90+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(110+(i*30),60+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(1, i, (i*1.77)-10, 224); + } + myGLCD.setColor (255,0,0); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(398, i, (i*1.77)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=224; i>15; i-=5) + { + myGLCD.drawLine(1, i, 411-(i*1.77), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<224; i+=5) + { + myGLCD.drawLine(398, i, 410-(i*1.77), 224); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(336); + y=45+random(146); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(396); + y=16+random(207); + x2=2+random(396); + y2=16+random(207); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(396); + y=16+random(207); + x2=2+random(396); + y2=16+random(207); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(396); + y=16+random(209); + x2=2+random(396); + y2=16+random(209); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,398,224); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(396), 16+random(209)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(120, 70, 279, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 210); + myGLCD.printNumI(millis(), CENTER, 225); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_480x272/UTFT_Demo_480x272.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_480x272/UTFT_Demo_480x272.pde new file mode 100644 index 0000000..ae2b2f6 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_480x272/UTFT_Demo_480x272.pde @@ -0,0 +1,327 @@ +// UTFT_Demo_480x272 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 480x272 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB43,82,83,84,85); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[478]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 479, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 258, 479, 271); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 259); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 479, 257); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 256); + myGLCD.drawLine(1, 135, 478, 135); + for (int i=9; i<470; i+=10) + myGLCD.drawLine(i, 133, i, 138); + for (int i=15; i<256; i+=10) + myGLCD.drawLine(237, i, 241, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,135+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,135+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,135+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 256); + myGLCD.drawLine(1, 135, 478, 135); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(478*20); i++) + { + x++; + if (x==479) + x=1; + if (i>479) + { + if ((x==239)||(buf[x-1]==135)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=135+(sin(((i*1.65)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(150+(i*20), 46+(i*20), 210+(i*20), 106+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(330-(i*20), 46+(i*20), 270-(i*20), 106+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(180+(i*20),75+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<256; i+=5) + { + myGLCD.drawLine(1, i, (i*1.88)-10, 256); + } + myGLCD.setColor (255,0,0); + for (int i=256; i>15; i-=5) + { + myGLCD.drawLine(478, i, (i*1.88)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=256; i>15; i-=5) + { + myGLCD.drawLine(1, i, 491-(i*1.88), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<256; i+=5) + { + myGLCD.drawLine(478, i, 490-(i*1.88), 256); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + +// Draw some random circles + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(416); + y=45+random(178); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + +// Draw some random rectangles + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(239); + x2=2+random(476); + y2=16+random(239); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + +// Draw some random rounded rectangles + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(239); + x2=2+random(476); + y2=16+random(239); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + + for (int i=0; i<150; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(239); + x2=2+random(476); + y2=16+random(239); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,257); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(476), 16+random(239)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(160, 70, 319, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 243); + myGLCD.printNumI(millis(), CENTER, 258); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_480x320/UTFT_Demo_480x320.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_480x320/UTFT_Demo_480x320.pde new file mode 100644 index 0000000..8d3401c --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_480x320/UTFT_Demo_480x320.pde @@ -0,0 +1,328 @@ +// UTFT_Demo_480x320 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 480x320 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(CTE32HR,82,83,84,85); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[478]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 479, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 306, 479, 319); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 307); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 479, 305); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 304); + myGLCD.drawLine(1, 159, 478, 159); + for (int i=9; i<470; i+=10) + myGLCD.drawLine(i, 157, i, 161); + for (int i=19; i<220; i+=10) + myGLCD.drawLine(237, i, 241, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,159+(sin(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,159+(cos(((i*1.13)*3.14)/180)*95)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<478; i++) + { + myGLCD.drawPixel(i,159+(tan(((i*1.13)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(239, 15, 239, 304); + myGLCD.drawLine(1, 159, 478, 159); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(478*15); i++) + { + x++; + if (x==479) + x=1; + if (i>479) + { + if ((x==239)||(buf[x-1]==159)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=159+(sin(((i*0.7)*3.14)/180)*(90-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some filled rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRect(150+(i*20), 70+(i*20), 210+(i*20), 130+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some filled, rounded rectangles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillRoundRect(270-(i*20), 70+(i*20), 330-(i*20), 130+(i*20)); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some filled circles + for (int i=1; i<6; i++) + { + switch (i) + { + case 1: + myGLCD.setColor(255,0,255); + break; + case 2: + myGLCD.setColor(255,0,0); + break; + case 3: + myGLCD.setColor(0,255,0); + break; + case 4: + myGLCD.setColor(0,0,255); + break; + case 5: + myGLCD.setColor(255,255,0); + break; + } + myGLCD.fillCircle(180+(i*20),100+(i*20), 30); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<304; i+=5) + { + myGLCD.drawLine(1, i, (i*1.6)-10, 304); + } + myGLCD.setColor (255,0,0); + for (int i=304; i>15; i-=5) + { + myGLCD.drawLine(478, i, (i*1.6)-11, 15); + } + myGLCD.setColor (0,255,255); + for (int i=304; i>15; i-=5) + { + myGLCD.drawLine(1, i, 491-(i*1.6), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<304; i+=5) + { + myGLCD.drawLine(478, i, 490-(i*1.6), 304); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some random circles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(416); + y=45+random(226); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some random rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(289); + x2=2+random(476); + y2=16+random(289); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + +// Draw some random rounded rectangles + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(289); + x2=2+random(476); + y2=16+random(289); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + + for (int i=0; i<100; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(476); + y=16+random(289); + x2=2+random(476); + y2=16+random(289); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,478,304); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(476), 16+random(289)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(160, 70, 319, 169); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 93); + myGLCD.print("Restarting in a", CENTER, 119); + myGLCD.print("few seconds...", CENTER, 132); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 290); + myGLCD.printNumI(millis(), CENTER, 305); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Demo_800x480/UTFT_Demo_800x480.pde b/libraries/UTFT/examples/chipKit/UTFT_Demo_800x480/UTFT_Demo_800x480.pde new file mode 100644 index 0000000..e12bf71 --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Demo_800x480/UTFT_Demo_800x480.pde @@ -0,0 +1,287 @@ +// UTFT_Demo_800x480 (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of how to use most of the functions +// of the library with a supported display modules. +// +// This demo was made for modules with a screen resolution +// of 800x480 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB50,82,83,84,85); + +void setup() +{ + randomSeed(analogRead(0)); + +// Setup the LCD + myGLCD.InitLCD(); + myGLCD.setFont(SmallFont); +} + +void loop() +{ + int buf[798]; + int x, x2; + int y, y2; + int r; + +// Clear the screen and draw the frame + myGLCD.clrScr(); + + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, 799, 13); + myGLCD.setColor(64, 64, 64); + myGLCD.fillRect(0, 466, 799, 479); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); + myGLCD.setBackColor(64, 64, 64); + myGLCD.setColor(255,255,0); + myGLCD.print("", CENTER, 467); + + myGLCD.setColor(0, 0, 255); + myGLCD.drawRect(0, 14, 799, 465); + +// Draw crosshairs + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(399, 15, 399, 464); + myGLCD.drawLine(1, 239, 798, 239); + for (int i=9; i<790; i+=10) + myGLCD.drawLine(i, 237, i, 242); + for (int i=19; i<470; i+=10) + myGLCD.drawLine(397, i, 402, i); + +// Draw sin-, cos- and tan-lines + myGLCD.setColor(0,255,255); + myGLCD.print("Sin", 5, 15); + for (int i=1; i<798; i++) + { + myGLCD.drawPixel(i,239+(sin(((i*1.13)*3.14)/180)*200)); + } + + myGLCD.setColor(255,0,0); + myGLCD.print("Cos", 5, 27); + for (int i=1; i<798; i++) + { + myGLCD.drawPixel(i,239+(cos(((i*1.13)*3.14)/180)*200)); + } + + myGLCD.setColor(255,255,0); + myGLCD.print("Tan", 5, 39); + for (int i=1; i<798; i++) + { + myGLCD.drawPixel(i,239+(tan(((i*0.9)*3.14)/180))); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + myGLCD.setColor(0, 0, 255); + myGLCD.setBackColor(0, 0, 0); + myGLCD.drawLine(399, 15, 399, 464); + myGLCD.drawLine(1, 239, 798, 239); + +// Draw a moving sinewave + x=1; + for (int i=1; i<(798*20); i++) + { + x++; + if (x==799) + x=1; + if (i>799) + { + if ((x==399)||(buf[x-1]==239)) + myGLCD.setColor(0,0,255); + else + myGLCD.setColor(0,0,0); + myGLCD.drawPixel(x,buf[x-1]); + } + myGLCD.setColor(0,255,255); + y=239+(sin(((i*1.65)*3.14)/180)*(200-(i / 100))); + myGLCD.drawPixel(x,y); + buf[x-1]=y; + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random filled rectangles + for (int i=0; i<50; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(746); + y=16+random(397); + x2=x+50; + y2=y+50; + myGLCD.fillRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random filled, rounded rectangles + for (int i=0; i<50; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(746); + y=16+random(397); + x2=x+50; + y2=y+50; + myGLCD.fillRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random filled circles + for (int i=0; i<50; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=27+random(746); + y=41+random(397); + myGLCD.fillCircle(x, y, 25); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some lines in a pattern + myGLCD.setColor (255,0,0); + for (int i=15; i<463; i+=5) + { + myGLCD.drawLine(1, i, (i*1.66)-10, 463); + } + myGLCD.setColor (255,0,0); + for (int i=463; i>15; i-=5) + { + myGLCD.drawLine(798, i, (i*1.66)+30, 15); + } + myGLCD.setColor (0,255,255); + for (int i=463; i>15; i-=5) + { + myGLCD.drawLine(1, i, 770-(i*1.66), 15); + } + myGLCD.setColor (0,255,255); + for (int i=15; i<463; i+=5) + { + myGLCD.drawLine(798, i, 810-(i*1.66), 463); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random circles + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=32+random(736); + y=45+random(386); + r=random(30); + myGLCD.drawCircle(x, y, r); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random rectangles + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(796); + y=16+random(447); + x2=2+random(796); + y2=16+random(447); + myGLCD.drawRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + +// Draw some random rounded rectangles + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(796); + y=16+random(447); + x2=2+random(796); + y2=16+random(447); + myGLCD.drawRoundRect(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + + for (int i=0; i<250; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + x=2+random(796); + y=16+random(447); + x2=2+random(796); + y2=16+random(447); + myGLCD.drawLine(x, y, x2, y2); + } + + delay(2000); + + myGLCD.setColor(0,0,0); + myGLCD.fillRect(1,15,798,464); + + for (int i=0; i<10000; i++) + { + myGLCD.setColor(random(255), random(255), random(255)); + myGLCD.drawPixel(2+random(796), 16+random(447)); + } + + delay(2000); + + myGLCD.fillScr(0, 0, 255); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRoundRect(320, 190, 479, 289); + + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("That's it!", CENTER, 213); + myGLCD.print("Restarting in a", CENTER, 239); + myGLCD.print("few seconds...", CENTER, 252); + + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 255); + myGLCD.print("Runtime: (msecs)", CENTER, 450); + myGLCD.printNumI(millis(), CENTER, 465); + + delay (10000); +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Rotate_Bitmap/UTFT_Rotate_Bitmap.pde b/libraries/UTFT/examples/chipKit/UTFT_Rotate_Bitmap/UTFT_Rotate_Bitmap.pde new file mode 100644 index 0000000..0d3453a --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Rotate_Bitmap/UTFT_Rotate_Bitmap.pde @@ -0,0 +1,36 @@ +// UTFT_Rotate_Bitmap (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the drawBitmap()-function. +// +// This program requires the UTFT library. +// + +#include + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,82,83,84,85); + +extern unsigned short biohazard[0x1000]; + +void setup() +{ + myGLCD.InitLCD(LANDSCAPE); + myGLCD.fillScr(255, 255, 255); + myGLCD.setColor(0, 0, 0); +} + +void loop() +{ + for (int i=0; i<360; i+=5) + { + myGLCD.drawBitmap (10, 10, 64, 64, biohazard, i, 32, 32); + } +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_Rotate_Bitmap/biohazard.c b/libraries/UTFT/examples/chipKit/UTFT_Rotate_Bitmap/biohazard.c new file mode 100644 index 0000000..ca1348d --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Rotate_Bitmap/biohazard.c @@ -0,0 +1,264 @@ +// Generated by : ImageConverter 565 v1.0 +// Generated from: biohazard1_L.png +// Time generated: 12.06.2011 00:23:59 +// Dimensions : 64x64 pixels +// Size : 8 192 Bytes + +const unsigned short biohazard[0x1000] ={ +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF7D, 0xC638, 0x9492, 0x6B4D, 0x4228, 0x2945, 0x2124, 0x18C3, 0x1082, // 0x0020 (32) +0x1082, 0x10A2, 0x18C3, 0x2124, 0x2965, 0x4A49, 0x6B6D, 0x9CD3, 0xCE79, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0030 (48) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0040 (64) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0xBDD7, 0x6B6D, 0x2965, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0060 (96) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0x31A6, 0x73AE, 0xC618, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0070 (112) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0090 (144) +0xFFFF, 0xFFFF, 0xE73C, 0x8C71, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000, // 0x00A0 (160) +0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x4207, 0x9CF3, 0xF79E, 0xFFFF, // 0x00B0 (176) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00C0 (192) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00D0 (208) +0xEF7D, 0x8C51, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00E0 (224) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x2965, 0x9CD3, // 0x00F0 (240) +0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0100 (256) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD75, // 0x0110 (272) +0x2965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0020, 0x2901, 0x5241, 0x7B41, 0x9C02, 0xACA2, 0xBD02, // 0x0120 (288) +0xC521, 0xBD02, 0xACA2, 0x9C22, 0x7B41, 0x5241, 0x2901, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0130 (304) +0x39E7, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xEF5D, 0x630C, 0x0000, // 0x0150 (336) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x41C1, 0x93E1, 0xD5A1, 0xFEA1, 0xFF01, 0xFF20, 0xFF20, 0xFF20, 0xFF00, // 0x0160 (352) +0xFF00, 0xFF00, 0xFF20, 0xFF20, 0xFF20, 0xFF01, 0xFEA1, 0xD5A1, 0x93E1, 0x49E1, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0170 (368) +0x0000, 0x0841, 0x7BEF, 0xF7BE, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xC638, 0x2965, 0x0000, 0x0000, // 0x0190 (400) +0x0000, 0x0000, 0x0000, 0x0000, 0x18A0, 0x7B41, 0xD5A1, 0xFF01, 0xFF20, 0xFEE0, 0xFEC0, 0xFEA0, 0xF680, 0xF680, 0xFEA0, 0xFEA0, // 0x01A0 (416) +0xFEA0, 0xFEA0, 0xFEA0, 0xF680, 0xF680, 0xFEA0, 0xFEC0, 0xFF00, 0xFF20, 0xFF01, 0xD5A1, 0x7B41, 0x1880, 0x0000, 0x0000, 0x0000, // 0x01B0 (432) +0x0000, 0x0000, 0x0000, 0x4208, 0xDEDB, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01C0 (448) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD55, 0x1082, 0x0000, 0x0000, 0x0000, // 0x01D0 (464) +0x0000, 0x0000, 0x0840, 0x7B62, 0xEE41, 0xFF21, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF20, 0xFF20, 0xFEA1, 0xFEC0, // 0x01E0 (480) +0xFEC0, 0xFEC0, 0xFEA1, 0xFF00, 0xFF20, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFF21, 0xEE41, 0x7B62, 0x0840, 0x0000, // 0x01F0 (496) +0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0xC618, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x94B2, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0210 (528) +0x0000, 0x5201, 0xDDE1, 0xFF21, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF40, 0xF6A1, 0xB4C1, 0x7322, 0xA441, 0xFEE0, // 0x0220 (544) +0xFEA0, 0xFEE0, 0xA461, 0x7322, 0xACA1, 0xF681, 0xFF40, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF21, 0xDDE2, 0x4A01, // 0x0230 (560) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0xB596, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0240 (576) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x9492, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, // 0x0250 (592) +0x9402, 0xFF01, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xFF01, 0x9401, 0x3961, 0x7341, 0xCD81, 0xF680, 0xFEC0, // 0x0260 (608) +0xFEA0, 0xFEC0, 0xF681, 0xCD81, 0x7B61, 0x3961, 0x8BE1, 0xFEE1, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFF01, // 0x0270 (624) +0x9402, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0xB596, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xA534, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x20C0, 0xCD61, // 0x0290 (656) +0xFF40, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF01, 0xE621, 0x39A1, 0x20E1, 0xCD81, 0xFF40, 0xFEE0, 0xFEC0, 0xFEC0, // 0x02A0 (672) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEE0, 0xFF41, 0xCDC1, 0x2901, 0x3961, 0xDE01, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEA0, // 0x02B0 (688) +0xFF21, 0xC561, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0xC618, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02C0 (704) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC618, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x3121, 0xDE01, 0xFF00, // 0x02D0 (720) +0xFE80, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF01, 0xD5A2, 0x18A0, 0x20E0, 0xF682, 0xFF01, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, // 0x02E0 (736) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF00, 0xF6A1, 0x2920, 0x1080, 0xCDA2, 0xFF01, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x02F0 (752) +0xFE80, 0xFF00, 0xDE01, 0x2921, 0x0000, 0x0000, 0x0000, 0x0000, 0x18E3, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE73C, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x2921, 0xEE41, 0xFF00, 0xFEA0, // 0x0310 (784) +0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, 0xDE02, 0x18A1, 0x0840, 0xDDE1, 0xFF00, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, // 0x0320 (800) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEE0, 0xE621, 0x0860, 0x1880, 0xD5E2, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0330 (816) +0xFEA0, 0xFEA0, 0xFF00, 0xE641, 0x2921, 0x0000, 0x0000, 0x0000, 0x0000, 0x4208, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5ACB, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C0, 0xDE21, 0xFF00, 0xFEA0, 0xFEC0, // 0x0350 (848) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC1, 0x39A1, 0x0000, 0x8382, 0xFF21, 0xFE80, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0360 (864) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFE80, 0xFF20, 0x8BC1, 0x0000, 0x3161, 0xF6A1, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0370 (880) +0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xDE01, 0x18A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x7BCF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xA534, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0xCD61, 0xFF00, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0390 (912) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF21, 0x93E1, 0x0000, 0x1060, 0xDE01, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x03A0 (928) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEE0, 0xE621, 0x1080, 0x0000, 0x8BA1, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, // 0x03B0 (944) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xCD61, 0x0820, 0x0000, 0x0000, 0x0000, 0x0021, 0xBDF7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF5D, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x9402, 0xFF41, 0xFE80, 0xFEA0, 0xFEC0, 0xFEC0, // 0x03D0 (976) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xF681, 0x20E0, 0x0000, 0x41A1, 0xFEE1, 0xFEA0, 0xFEA1, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x03E0 (992) +0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF01, 0x49E1, 0x0000, 0x18A1, 0xEE41, 0xFEC0, 0xFEA0, 0xFEC0, // 0x03F0 (1008) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFE80, 0xFF41, 0x9402, 0x0000, 0x0000, 0x0000, 0x0000, 0x39C7, 0xF7BE, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0400 (1024) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7BCF, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A01, 0xFF01, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0410 (1040) +0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0xA461, 0x0000, 0x0000, 0x6AC1, 0xFF21, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0420 (1056) +0xFEE0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFE80, 0xFF20, 0x7300, 0x0000, 0x0000, 0x9C21, 0xFF20, 0xFEA0, 0xFEC0, // 0x0430 (1072) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF01, 0x49E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0440 (1088) +0xFFFF, 0xFFFF, 0xFFFF, 0xDEFB, 0x10A2, 0x0000, 0x0000, 0x0000, 0x0840, 0xDDE1, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0450 (1104) +0xFEA0, 0xFEA0, 0xFEA0, 0xFF20, 0x6261, 0x0000, 0x0000, 0x7300, 0xFF21, 0xF6A0, 0xFEA0, 0xFEE0, 0xFF20, 0xFF00, 0xFEA1, 0xEE42, // 0x0460 (1120) +0xE602, 0xEE42, 0xFEA1, 0xFF00, 0xFF20, 0xFEE0, 0xFEA0, 0xF681, 0xFF40, 0x8360, 0x0000, 0x0000, 0x5241, 0xFF01, 0xFEA0, 0xFEA0, // 0x0470 (1136) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xDDC1, 0x0840, 0x0000, 0x0000, 0x0000, 0x2945, 0xEF7D, 0xFFFF, 0xFFFF, // 0x0480 (1152) +0xFFFF, 0xFFDF, 0xFFFF, 0x7BEF, 0x0000, 0x0000, 0x0000, 0x0000, 0x7B42, 0xFF21, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0490 (1168) +0xFEC0, 0xFEA0, 0xFEC0, 0xFEA0, 0x2900, 0x0000, 0x0000, 0x6AE0, 0xFF21, 0xFEC0, 0xFF01, 0xDE01, 0x9C01, 0x5241, 0x2921, 0x18A1, // 0x04A0 (1184) +0x1061, 0x1881, 0x2921, 0x5241, 0x9C02, 0xDDE1, 0xFF21, 0xFEC0, 0xFF20, 0x7321, 0x0000, 0x0000, 0x20E0, 0xF681, 0xFEC0, 0xFEA0, // 0x04B0 (1200) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF21, 0x7B41, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFDF, // 0x04C0 (1216) +0xFFDF, 0xFFFF, 0xEF7D, 0x2104, 0x0000, 0x0000, 0x0000, 0x1080, 0xEE41, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x04D0 (1232) +0xFEC0, 0xFEA0, 0xFEC0, 0xEE21, 0x1060, 0x0000, 0x0000, 0x41C1, 0xFF21, 0xDDE1, 0x6AC1, 0x0860, 0x0000, 0x0000, 0x0000, 0x0000, // 0x04E0 (1248) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0860, 0x62C1, 0xDDC1, 0xFF41, 0x49E1, 0x0000, 0x0000, 0x0840, 0xE601, 0xFEE0, 0xFEA0, // 0x04F0 (1264) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xEE41, 0x1080, 0x0000, 0x0000, 0x0000, 0x39C7, 0xF7BE, 0xFFFF, // 0x0500 (1280) +0xFFDF, 0xFFFF, 0xA534, 0x0000, 0x0000, 0x0000, 0x0000, 0x7B21, 0xFF21, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0510 (1296) +0xFEA0, 0xFEA0, 0xFEE0, 0xE602, 0x0841, 0x0000, 0x0000, 0x1080, 0xACC2, 0x1060, 0x0000, 0x0000, 0x0000, 0x0020, 0x2920, 0x4A01, // 0x0520 (1312) +0x5241, 0x4A01, 0x3140, 0x0821, 0x0000, 0x0000, 0x0000, 0x0860, 0xACA2, 0x18A0, 0x0000, 0x0000, 0x0820, 0xDDE2, 0xFEE0, 0xFEA0, // 0x0530 (1328) +0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFE80, 0xFF21, 0x7321, 0x0000, 0x0000, 0x0000, 0x0020, 0xC618, 0xFFFF, // 0x0540 (1344) +0xFFFF, 0xFFFF, 0x52AA, 0x0000, 0x0020, 0x0000, 0x0820, 0xDDA1, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0550 (1360) +0xFEC0, 0xFEA0, 0xFEE0, 0xE621, 0x1060, 0x0000, 0x0000, 0x0000, 0x6AE2, 0x20C1, 0x0000, 0x20E1, 0x8BA2, 0xD5A1, 0xFEA1, 0xFF00, // 0x0560 (1376) +0xFF01, 0xFF00, 0xFEC1, 0xD5C1, 0x8BC2, 0x2901, 0x0000, 0x18A1, 0x7302, 0x0000, 0x0000, 0x0000, 0x0840, 0xDE01, 0xFEE0, 0xFEA0, // 0x0570 (1392) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEE0, 0xD5A1, 0x0020, 0x0000, 0x0000, 0x0000, 0x738E, 0xFFFF, // 0x0580 (1408) +0xFFFF, 0xE71C, 0x18C3, 0x0000, 0x0020, 0x0000, 0x49C1, 0xFF01, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0590 (1424) +0xFEA0, 0xFEA0, 0xFEC0, 0xF661, 0x18A0, 0x0000, 0x0000, 0x0000, 0x2101, 0x8363, 0x7321, 0xEE81, 0xFF21, 0xFEE0, 0xFEC0, 0xFEA0, // 0x05A0 (1440) +0xFEA0, 0xFEA0, 0xFEC0, 0xFEE0, 0xFF20, 0xF681, 0x7B41, 0x8362, 0x2921, 0x0000, 0x0000, 0x0000, 0x1080, 0xEE41, 0xFEC0, 0xFEA0, // 0x05B0 (1456) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF01, 0x41C1, 0x0000, 0x0020, 0x0000, 0x3186, 0xF79E, // 0x05C0 (1472) +0xFFFF, 0xAD75, 0x0000, 0x0000, 0x0020, 0x0000, 0x93E1, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, // 0x05D0 (1488) +0xFEC0, 0xFEA0, 0xFEA0, 0xFF41, 0x5221, 0x0000, 0x0000, 0x0000, 0x0000, 0x41C1, 0xFF01, 0xFF00, 0xF660, 0xFEA0, 0xFEA0, 0xFEC0, // 0x05E0 (1504) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xF660, 0xFF00, 0xFF22, 0x49E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x49E1, 0xFF40, 0xFEA0, 0xFEA0, // 0x05F0 (1520) +0xFEA1, 0xFEC0, 0xFEA1, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0x93E1, 0x0000, 0x0020, 0x0000, 0x0020, 0xC638, // 0x0600 (1536) +0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0020, 0xD5A1, 0xFF00, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA1, 0xFEA0, // 0x0610 (1552) +0xFEA1, 0xFF20, 0xFEC1, 0xD5C1, 0x5220, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x3981, 0xE622, 0xFF20, 0xFEC0, 0xFEA0, 0xFEA0, // 0x0620 (1568) +0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF21, 0xE621, 0x41C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x49E0, 0xCDA2, 0xFEA1, 0xFF20, // 0x0630 (1584) +0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xD5A1, 0x0020, 0x0000, 0x0000, 0x0000, 0x9492, // 0x0640 (1600) +0xFFFF, 0x4A49, 0x0000, 0x0020, 0x0000, 0x2901, 0xFEA1, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, // 0x0650 (1616) +0xFEE1, 0xA461, 0x3981, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1881, 0x93E1, 0xE622, 0xFF01, 0xFF00, // 0x0660 (1632) +0xFEA0, 0xFF00, 0xFF21, 0xEE41, 0x9401, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3141, 0x9C21, // 0x0670 (1648) +0xFEC1, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEA1, 0x2901, 0x0000, 0x0020, 0x0000, 0x632C, // 0x0680 (1664) +0xE71C, 0x2124, 0x0000, 0x0020, 0x0000, 0x5241, 0xFF01, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF00, 0xD5C1, // 0x0690 (1680) +0x41C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1081, 0x4A01, 0xAC81, // 0x06A0 (1696) +0xFF21, 0xB4C1, 0x5221, 0x1081, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x06B0 (1712) +0x3981, 0xCD81, 0xFF21, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF01, 0x5221, 0x0000, 0x0020, 0x0000, 0x4228, // 0x06C0 (1728) +0xBDF7, 0x18C3, 0x0000, 0x0020, 0x0000, 0x7B41, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF20, 0xBD02, 0x1060, // 0x06D0 (1744) +0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5201, // 0x06E0 (1760) +0xFFC0, 0x5A41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, // 0x06F0 (1776) +0x0000, 0x0840, 0xACA1, 0xFF21, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0x7B41, 0x0000, 0x0020, 0x0000, 0x2945, // 0x0700 (1792) +0x94B2, 0x0861, 0x0000, 0x0000, 0x0000, 0x9C02, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xBD22, 0x0820, 0x0000, // 0x0710 (1808) +0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1881, 0xAC81, // 0x0720 (1824) +0xFF20, 0xB4A1, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0730 (1840) +0x0020, 0x0000, 0x0000, 0xB4C2, 0xFF00, 0xFE80, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0x9C02, 0x0000, 0x0020, 0x0000, 0x2104, // 0x0740 (1856) +0x73AE, 0x0841, 0x0000, 0x0000, 0x0000, 0xACA2, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, 0xE622, 0x18A1, 0x0000, 0x0000, // 0x0750 (1872) +0x0000, 0x1080, 0x5221, 0x6B03, 0x6AE2, 0x6AE3, 0x4A01, 0x1080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1061, 0xCD82, 0xFF20, // 0x0760 (1888) +0xFE80, 0xFF20, 0xD5C2, 0x1881, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1080, 0x5241, 0x6AE3, 0x6AE2, 0x6AE3, 0x5A62, 0x18C0, // 0x0770 (1904) +0x0000, 0x0000, 0x0000, 0x1060, 0xDDE2, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF20, 0xACA2, 0x0000, 0x0000, 0x0000, 0x10A2, // 0x0780 (1920) +0x52AA, 0x0000, 0x0000, 0x0000, 0x0000, 0xBD02, 0xFF00, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF01, 0x5A61, 0x0000, 0x0000, 0x18A0, // 0x0790 (1936) +0x9401, 0xEE61, 0xFEE2, 0x49E2, 0x18A1, 0x62A1, 0xFF41, 0xE621, 0x8BC2, 0x1880, 0x0000, 0x0820, 0x0000, 0x7B21, 0xFF40, 0xFE80, // 0x07A0 (1952) +0xFEC0, 0xFE80, 0xFF40, 0x8381, 0x0000, 0x0820, 0x0000, 0x1080, 0x8BE2, 0xEE41, 0xFF41, 0x62A2, 0x10A1, 0x3982, 0xFEC2, 0xF6A1, // 0x07B0 (1968) +0xA462, 0x2101, 0x0000, 0x0000, 0x49E1, 0xFF01, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF00, 0xBD02, 0x0000, 0x0000, 0x0000, 0x1082, // 0x07C0 (1984) +0x528A, 0x0000, 0x0000, 0x0000, 0x0000, 0xC521, 0xFF00, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF00, 0xCD41, 0x0000, 0x0000, 0x49C1, 0xE642, // 0x07D0 (2000) +0xFF21, 0xFEE0, 0xEE42, 0x1081, 0x0000, 0x41A0, 0xFEE0, 0xFEC0, 0xFF40, 0xE621, 0x41A1, 0x0000, 0x0000, 0x93E1, 0xFF20, 0xFEA0, // 0x07E0 (2016) +0xFEA0, 0xFEA0, 0xFF20, 0x9C22, 0x0000, 0x0000, 0x3981, 0xDE01, 0xFF21, 0xFEC0, 0xFEE1, 0x49E1, 0x0000, 0x0840, 0xE602, 0xFEC0, // 0x07F0 (2032) +0xFF20, 0xEE81, 0x5A61, 0x0000, 0x0000, 0xBCE1, 0xFF00, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF00, 0xC521, 0x0000, 0x0000, 0x0000, 0x1082, // 0x0800 (2048) +0x52AA, 0x0000, 0x0000, 0x0000, 0x0000, 0xBD02, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF20, 0x6AC1, 0x0000, 0x49E1, 0xFEE2, 0xFEE0, // 0x0810 (2064) +0xFE80, 0xFEC0, 0xF682, 0x20E1, 0x0000, 0x39A0, 0xFEE0, 0xFEA0, 0xFE80, 0xFEE0, 0xF6A2, 0x41A1, 0x3961, 0xDDC1, 0xFF00, 0xFE80, // 0x0820 (2080) +0xFEA0, 0xFEA0, 0xFF00, 0xE601, 0x41C1, 0x3981, 0xF682, 0xFF00, 0xFE80, 0xFEA0, 0xFF00, 0x41C1, 0x0000, 0x20C1, 0xF661, 0xFEC0, // 0x0830 (2096) +0xF6A0, 0xFEC0, 0xFF01, 0x6261, 0x0000, 0x5A41, 0xFF01, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF00, 0xBD02, 0x0000, 0x0000, 0x0000, 0x1082, // 0x0840 (2112) +0x738E, 0x0841, 0x0000, 0x0000, 0x0000, 0xACA2, 0xFF20, 0xFEA0, 0xFEA0, 0xFEC0, 0xF681, 0x18A0, 0x1080, 0xEE41, 0xFEE0, 0xFEA0, // 0x0850 (2128) +0xFEC0, 0xFEA0, 0xFEE1, 0x3980, 0x0000, 0x20C0, 0xF662, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEE0, 0xF681, 0xFEE1, 0xFF01, 0xDDC1, 0xFF21, // 0x0860 (2144) +0xFF20, 0xFF21, 0xDDC1, 0xFEC1, 0xFF01, 0xF661, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEA1, 0x2900, 0x0000, 0x3140, 0xFEA1, 0xFEA0, // 0x0870 (2160) +0xFEA0, 0xFEA0, 0xFEC0, 0xF6A1, 0x2101, 0x0840, 0xEE41, 0xFEE0, 0xFEA0, 0xFEA0, 0xFF20, 0xAC82, 0x0000, 0x0000, 0x0000, 0x10A2, // 0x0880 (2176) +0x9492, 0x0861, 0x0000, 0x0000, 0x0000, 0x9C02, 0xFF20, 0xFEA0, 0xFEA0, 0xFF00, 0xD582, 0x0000, 0x93C1, 0xFF40, 0xFE80, 0xFEC0, // 0x0890 (2192) +0xFEC0, 0xFEA0, 0xFF21, 0x6AC1, 0x0000, 0x0000, 0xCD41, 0xFF00, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xDDE1, 0x41A1, 0x0860, 0x6AC1, // 0x08A0 (2208) +0x93E1, 0x6AE1, 0x0841, 0x3161, 0xD5C1, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF00, 0xCD61, 0x0000, 0x0000, 0x5A81, 0xFF21, 0xFEA0, // 0x08B0 (2224) +0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0xAC81, 0x0000, 0xC521, 0xFF00, 0xFEA0, 0xFEA0, 0xFF20, 0x9C02, 0x0000, 0x0020, 0x0000, 0x2104, // 0x08C0 (2240) +0xB5B6, 0x10A2, 0x0000, 0x0020, 0x0000, 0x7B41, 0xFF20, 0xFEA0, 0xFEA0, 0xFF20, 0xAC80, 0x0820, 0xEE41, 0xFEC0, 0xFEA0, 0xFEC0, // 0x08D0 (2256) +0xFEC0, 0xFEA0, 0xFF00, 0xAC81, 0x0000, 0x0000, 0x7301, 0xFF20, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEE0, 0xD5C1, 0x0000, 0x0000, 0x0000, // 0x08E0 (2272) +0x0000, 0x0000, 0x0000, 0x0000, 0xD561, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF41, 0x7B42, 0x0000, 0x0000, 0xA442, 0xFF21, 0xFEA0, // 0x08F0 (2288) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA1, 0x1080, 0x9C00, 0xFF40, 0xFEA0, 0xFEA0, 0xFF20, 0x7B41, 0x0000, 0x0020, 0x0000, 0x2124, // 0x0900 (2304) +0xDEFB, 0x2104, 0x0000, 0x0020, 0x0000, 0x5221, 0xFF01, 0xFEA0, 0xFEA0, 0xFF40, 0x93C0, 0x3961, 0xFF21, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0910 (2320) +0xFEC0, 0xFEA0, 0xFEC0, 0xEE61, 0x1881, 0x0000, 0x1080, 0xEE21, 0xFEE0, 0xFEA0, 0xFEC0, 0xFEA0, 0xFF01, 0x41C1, 0x0000, 0x0020, // 0x0920 (2336) +0x0000, 0x0020, 0x0000, 0x3961, 0xFEE1, 0xFEA0, 0xFEC0, 0xFEA0, 0xFEC0, 0xEE61, 0x18A1, 0x0000, 0x1060, 0xE621, 0xFEC0, 0xFEA0, // 0x0930 (2352) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF21, 0x4A01, 0x8361, 0xFF40, 0xFEA0, 0xFEA0, 0xFF01, 0x5221, 0x0000, 0x0020, 0x0000, 0x4208, // 0x0940 (2368) +0xFFDF, 0x4208, 0x0000, 0x0000, 0x0000, 0x2901, 0xFEA1, 0xFEC0, 0xFEA0, 0xFF40, 0x93C0, 0x5A60, 0xFF41, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0950 (2384) +0xFEA0, 0xFEC0, 0xFEA0, 0xFF21, 0x7B41, 0x0000, 0x0000, 0x6281, 0xFF21, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF21, 0x62A1, 0x0000, 0x0000, // 0x0960 (2400) +0x0000, 0x0000, 0x0000, 0x5A41, 0xFF01, 0xFEA0, 0xFEA0, 0xF680, 0xFF41, 0x6AC1, 0x0000, 0x0000, 0x7301, 0xFF21, 0xFEA0, 0xFEA0, // 0x0970 (2416) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF40, 0x6AE1, 0x8361, 0xFF40, 0xFEA0, 0xFEC0, 0xFEA1, 0x2901, 0x0000, 0x0020, 0x0000, 0x630C, // 0x0980 (2432) +0xFFFF, 0x6B6D, 0x0000, 0x0020, 0x0000, 0x0020, 0xD5A1, 0xFF00, 0xFEA0, 0xFF20, 0xA461, 0x6AC0, 0xFF40, 0xFEA0, 0xFEC0, 0xFEC0, // 0x0990 (2448) +0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xEE61, 0x18C0, 0x0000, 0x0000, 0x93E2, 0xFF41, 0xFEA0, 0xFE80, 0xFF20, 0x6AE1, 0x0000, 0x0000, // 0x09A0 (2464) +0x0000, 0x0000, 0x0000, 0x62A1, 0xFF21, 0xFE80, 0xFEA0, 0xFF40, 0x9C22, 0x0000, 0x0000, 0x1881, 0xE641, 0xFEC0, 0xFEC0, 0xFEC0, // 0x09B0 (2480) +0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF40, 0x7B61, 0x9C00, 0xFF40, 0xFE80, 0xFF00, 0xD581, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, // 0x09C0 (2496) +0xFFFF, 0xA534, 0x0000, 0x0000, 0x0000, 0x0000, 0x93E1, 0xFF20, 0xFE80, 0xFF00, 0xC541, 0x72E1, 0xFF20, 0xFEA0, 0xFEC0, 0xFEC0, // 0x09D0 (2512) +0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF00, 0xB4C1, 0x0000, 0x0020, 0x0000, 0x93E1, 0xFF21, 0xFEC0, 0xFF01, 0x5A81, 0x0000, 0x0000, // 0x09E0 (2528) +0x0000, 0x0000, 0x0000, 0x5222, 0xFF01, 0xFEC0, 0xFF21, 0x9C01, 0x0000, 0x0020, 0x0000, 0xAC81, 0xFF01, 0xFEA0, 0xFEA0, 0xFEC0, // 0x09F0 (2544) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF20, 0x7B40, 0xBD01, 0xFF20, 0xF680, 0xFF20, 0x93C1, 0x0000, 0x0020, 0x0000, 0x0000, 0xBDF7, // 0x0A00 (2560) +0xFFFF, 0xDEDB, 0x1082, 0x0000, 0x0000, 0x0000, 0x41C1, 0xFF01, 0xFEA0, 0xFEC0, 0xF660, 0x6AC2, 0xF6A1, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0A10 (2576) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFF21, 0x8BA1, 0x0000, 0x0000, 0x0000, 0x6281, 0xDE21, 0xFF01, 0x3161, 0x0000, 0x0000, // 0x0A20 (2592) +0x0000, 0x0000, 0x0000, 0x2921, 0xFEE1, 0xE641, 0x62A1, 0x0000, 0x0000, 0x0000, 0x8381, 0xFF21, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0A30 (2608) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEC1, 0x6AC2, 0xE621, 0xFEE0, 0xFEA0, 0xFF01, 0x41C1, 0x0000, 0x0020, 0x0000, 0x2124, 0xEF5D, // 0x0A40 (2624) +0xFFFF, 0xFFFF, 0x4A49, 0x0000, 0x0000, 0x0000, 0x0020, 0xD5A1, 0xFEE0, 0xFEA0, 0xFEC0, 0xCD41, 0xF660, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0A50 (2640) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF21, 0x8BC1, 0x0000, 0x0000, 0x0000, 0x1060, 0xA442, 0x0860, 0x0000, 0x0000, // 0x0A60 (2656) +0x0000, 0x0000, 0x0000, 0x0820, 0xA442, 0x18A0, 0x0000, 0x0000, 0x0000, 0x8381, 0xFF21, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0A70 (2672) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFE80, 0xCD62, 0xFEC0, 0xFEA1, 0xFEE0, 0xD5A1, 0x0020, 0x0000, 0x0000, 0x0000, 0x630C, 0xFFFF, // 0x0A80 (2688) +0xFFDF, 0xFFFF, 0x94B2, 0x0000, 0x0000, 0x0000, 0x0000, 0x7321, 0xFF21, 0xFEA0, 0xFEA0, 0xFEE0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, // 0x0A90 (2704) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF21, 0xB4C1, 0x20E1, 0x0000, 0x3161, 0x62A2, 0x0000, 0x0000, 0x0000, // 0x0AA0 (2720) +0x0000, 0x0000, 0x0000, 0x0000, 0x5A82, 0x39A1, 0x0000, 0x20C1, 0xAC82, 0xFF21, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0AB0 (2736) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEC0, 0xFEE0, 0xFEA0, 0xFEA0, 0xFF21, 0x7321, 0x0000, 0x0000, 0x0000, 0x0000, 0xB596, 0xFFFF, // 0x0AC0 (2752) +0xFFDF, 0xFFFF, 0xE73C, 0x18C3, 0x0000, 0x0000, 0x0000, 0x1080, 0xEE41, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA1, 0xFF00, 0xFEE0, 0xFEA0, // 0x0AD0 (2768) +0xFEC0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFF00, 0xEE41, 0x83C1, 0x8BA3, 0x1081, 0x0000, 0x0000, 0x0000, // 0x0AE0 (2784) +0x0000, 0x0000, 0x0000, 0x0000, 0x1060, 0x8383, 0x83A1, 0xEE41, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, // 0x0AF0 (2800) +0xFEC0, 0xFEA0, 0xFEC0, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xEE21, 0x1080, 0x0000, 0x0000, 0x0000, 0x2945, 0xEF7D, 0xFFFF, // 0x0B00 (2816) +0xFFFF, 0xFFFF, 0xFFFF, 0x6B4D, 0x0000, 0x0000, 0x0000, 0x0000, 0x7B41, 0xFF21, 0xFEA0, 0xFEA0, 0xFF00, 0xB482, 0xD5C1, 0xFF20, // 0x0B10 (2832) +0xFE80, 0xFEA0, 0xFEA0, 0xFEA1, 0xFEA0, 0xFEC0, 0xFEA1, 0xFEA0, 0xF680, 0xFF20, 0xF6A2, 0x3121, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0B20 (2848) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20E1, 0xEE62, 0xFF40, 0xF680, 0xFEA0, 0xFEA1, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, // 0x0B30 (2864) +0xF681, 0xFF20, 0xE601, 0xAC62, 0xFF00, 0xFEA0, 0xFE80, 0xFF21, 0x7B41, 0x0000, 0x0000, 0x0000, 0x0000, 0x8410, 0xFFFF, 0xFFFF, // 0x0B40 (2880) +0xFFFF, 0xFFDF, 0xFFFF, 0xD69A, 0x0841, 0x0000, 0x0000, 0x0000, 0x0840, 0xDDC1, 0xFEE0, 0xFEA0, 0xFEE1, 0xD5A1, 0x5221, 0xBD21, // 0x0B50 (2896) +0xFF41, 0xFF00, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA1, 0xFEC0, 0xFF00, 0xFF21, 0xCD61, 0x20E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, // 0x0B60 (2912) +0x7322, 0x0840, 0x0000, 0x0000, 0x0000, 0x0000, 0x18A1, 0xBD22, 0xFF21, 0xFF00, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEE0, // 0x0B70 (2928) +0xFF40, 0xC561, 0x5221, 0xCD81, 0xFEE0, 0xFE81, 0xFEE0, 0xDDC1, 0x0840, 0x0000, 0x0000, 0x0000, 0x18E3, 0xE71C, 0xFFFF, 0xFFFF, // 0x0B80 (2944) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x632C, 0x0000, 0x0000, 0x0000, 0x0000, 0x49E1, 0xFF01, 0xFEA0, 0xFEA0, 0xFF00, 0xDE01, 0x4181, // 0x0B90 (2960) +0x5A81, 0xD581, 0xFEE1, 0xFF20, 0xFF20, 0xFF01, 0xFEC1, 0xD582, 0x6AE1, 0x0020, 0x0000, 0x0020, 0x0000, 0x0000, 0x1060, 0xACA2, // 0x0BA0 (2976) +0xFF61, 0xBD21, 0x18A1, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x62A2, 0xCD62, 0xFEA1, 0xFF01, 0xFF20, 0xFF20, 0xFEE1, 0xD5C1, // 0x0BB0 (2992) +0x62C1, 0x3981, 0xD5C1, 0xFF21, 0xFEA0, 0xFEA0, 0xFF01, 0x49E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x7BEF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0BC0 (3008) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x93E2, 0xFF40, 0xFE80, 0xFE80, 0xFEE0, 0xFEC1, // 0x0BD0 (3024) +0x6B01, 0x1061, 0x18C1, 0x4A00, 0x5AA0, 0x5240, 0x3141, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4A01, 0xDDC1, 0xFF20, // 0x0BE0 (3040) +0xFE80, 0xFF00, 0xE602, 0x5A41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2921, 0x5220, 0x5AA0, 0x4A00, 0x20E1, 0x1060, // 0x0BF0 (3056) +0x6AE1, 0xF6A1, 0xFEE0, 0xFEA1, 0xFEA0, 0xFF41, 0x93E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x2124, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C00 (3072) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8C71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0xCD61, 0xFF00, 0xFEA0, 0xFEA0, 0xFEC0, // 0x0C10 (3088) +0xFF41, 0xDDE1, 0x6B01, 0x18C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18A0, 0x5A61, 0xBCE2, 0xFF01, 0xFEE0, 0xFEA0, // 0x0C20 (3104) +0xFEC0, 0xFEA0, 0xFEE0, 0xFF01, 0xC541, 0x6281, 0x20C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C1, 0x6AE1, 0xDDC1, // 0x0C30 (3120) +0xFF41, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF01, 0xC541, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0xA514, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C40 (3136) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7BE, 0x4208, 0x0000, 0x0000, 0x0000, 0x0000, 0x18A1, 0xDE01, 0xFF00, 0xFE80, 0xFEC0, // 0x0C50 (3152) +0xFEA0, 0xFEE0, 0xFF20, 0xFEC1, 0xD5A2, 0xAC82, 0x9401, 0x93E1, 0x9C42, 0xC522, 0xEE41, 0xFF01, 0xFF00, 0xFEA0, 0xFEA0, 0xFEC0, // 0x0C60 (3168) +0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFF00, 0xFF21, 0xF661, 0xC542, 0xA462, 0x93E1, 0x9C01, 0xB4A2, 0xD5A1, 0xFEC1, 0xFF20, 0xFEE0, // 0x0C70 (3184) +0xFEA0, 0xFEC0, 0xFE80, 0xFF00, 0xDE01, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x52AA, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C80 (3200) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xD6BA, 0x10A2, 0x0000, 0x0000, 0x0000, 0x0000, 0x2921, 0xE641, 0xFF00, 0xFE80, // 0x0C90 (3216) +0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF00, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF00, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0CA0 (3232) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF00, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF00, 0xFEC0, 0xFEA0, 0xFEA0, // 0x0CB0 (3248) +0xFEA0, 0xFE80, 0xFF00, 0xE641, 0x2901, 0x0000, 0x0000, 0x0000, 0x0000, 0x2124, 0xE71C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0CC0 (3264) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2901, 0xDE01, 0xFF00, // 0x0CD0 (3280) +0xFE80, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0CE0 (3296) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEA0, // 0x0CF0 (3312) +0xFE80, 0xFF00, 0xDE01, 0x2900, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0xBDD7, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D00 (3328) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0x8430, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18A1, 0xC561, // 0x0D10 (3344) +0xFF21, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0D20 (3360) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, // 0x0D30 (3376) +0xFF41, 0xC561, 0x18A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9CD3, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D40 (3392) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, // 0x0D50 (3408) +0x9402, 0xFF01, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0D60 (3424) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFF01, // 0x0D70 (3440) +0x9402, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D80 (3456) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x73AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0D90 (3472) +0x0000, 0x4A01, 0xDDC1, 0xFF41, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0DA0 (3488) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF21, 0xD5C1, 0x4A01, // 0x0DB0 (3504) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C51, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0DC0 (3520) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x8430, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0DD0 (3536) +0x0000, 0x0000, 0x0840, 0x7B61, 0xE641, 0xFF21, 0xFEE0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, // 0x0DE0 (3552) +0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEE0, 0xFF21, 0xE621, 0x7B42, 0x0840, 0x0000, // 0x0DF0 (3568) +0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0x9492, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E00 (3584) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xAD55, 0x10A2, 0x0000, 0x0000, // 0x0E10 (3600) +0x0000, 0x0000, 0x0000, 0x0000, 0x1880, 0x7B21, 0xD5A1, 0xFF01, 0xFF20, 0xFF00, 0xFEC0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, // 0x0E20 (3616) +0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEA0, 0xFEC0, 0xFF00, 0xFF20, 0xFF01, 0xD5A1, 0x7321, 0x1880, 0x0000, 0x0000, 0x0000, // 0x0E30 (3632) +0x0000, 0x0000, 0x0000, 0x18E3, 0xAD75, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E40 (3648) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xD69A, 0x4228, 0x0000, // 0x0E50 (3664) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x41C1, 0x93E1, 0xD5A1, 0xFEA1, 0xFF01, 0xFF20, 0xFF20, 0xFF20, 0xFF00, // 0x0E60 (3680) +0xFF00, 0xFF00, 0xFF20, 0xFF20, 0xFF20, 0xFF01, 0xFEA1, 0xD5A1, 0x93E1, 0x41C1, 0x0020, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, // 0x0E70 (3696) +0x0000, 0x0000, 0x528A, 0xD6BA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E80 (3712) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0x8C71, // 0x0E90 (3728) +0x10A2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2901, 0x5221, 0x7B41, 0x9402, 0xAC82, 0xBCE2, // 0x0EA0 (3744) +0xC521, 0xBCE2, 0xAC82, 0x9401, 0x7B41, 0x5221, 0x2901, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0EB0 (3760) +0x18E3, 0x94B2, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0EC0 (3776) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0ED0 (3792) +0xD6BA, 0x632C, 0x0841, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0EE0 (3808) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x10A2, 0x738E, // 0x0EF0 (3824) +0xDEFB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F00 (3840) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F10 (3856) +0xFFFF, 0xFFFF, 0xCE79, 0x6B4D, 0x18C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000, // 0x0F20 (3872) +0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0x738E, 0xD69A, 0xFFFF, // 0x0F30 (3888) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F40 (3904) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F50 (3920) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE71C, 0x94B2, 0x4A49, 0x1082, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0F60 (3936) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C3, 0x4A69, 0x9CD3, 0xE73C, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F70 (3952) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F80 (3968) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F90 (3984) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0xA534, 0x6B6D, 0x4208, 0x2104, 0x18C3, 0x0861, 0x0841, 0x0000, // 0x0FA0 (4000) +0x0000, 0x0000, 0x0841, 0x0861, 0x18C3, 0x2124, 0x4228, 0x6B6D, 0xA534, 0xDEDB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FB0 (4016) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FC0 (4032) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FD0 (4048) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xDEDB, 0xB5B6, 0x9492, 0x6B6D, 0x4A49, // 0x0FE0 (4064) +0x4228, 0x4A49, 0x6B6D, 0x8C51, 0xAD75, 0xDEDB, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FF0 (4080) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1000 (4096) +}; diff --git a/libraries/UTFT/examples/chipKit/UTFT_Textrotation_Demo/UTFT_Textrotation_Demo.pde b/libraries/UTFT/examples/chipKit/UTFT_Textrotation_Demo/UTFT_Textrotation_Demo.pde new file mode 100644 index 0000000..f9db69a --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_Textrotation_Demo/UTFT_Textrotation_Demo.pde @@ -0,0 +1,51 @@ +// UTFT_Textrotation_Demo (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the textrotation-functions. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t BigFont[]; +extern uint8_t SevenSegNumFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,82,83,84,85); + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont(BigFont); +} + +void loop() +{ + myGLCD.print("Text rotation", 0, 0); + myGLCD.setColor(0, 0, 255); + myGLCD.print("0 degrees", 0, 16, 0); + myGLCD.print("90 degrees", 319, 0, 90); + myGLCD.print("180 degrees", 319, 239, 180); + myGLCD.print("270 degrees", 0, 239, 270); + + myGLCD.setFont(SevenSegNumFont); + myGLCD.setColor(0, 255, 0); + myGLCD.print("45", 90, 100, 45); + myGLCD.print("90", 200, 50, 90); + myGLCD.print("180", 300, 200, 180); + + while (true) {}; +} + diff --git a/libraries/UTFT/examples/chipKit/UTFT_ViewFont/UTFT_ViewFont.pde b/libraries/UTFT/examples/chipKit/UTFT_ViewFont/UTFT_ViewFont.pde new file mode 100644 index 0000000..bd9fa5f --- /dev/null +++ b/libraries/UTFT/examples/chipKit/UTFT_ViewFont/UTFT_ViewFont.pde @@ -0,0 +1,58 @@ +// UTFT_ViewFont (C)2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a demo of the included fonts. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels. +// +// This program requires the UTFT library. +// + +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; +extern uint8_t BigFont[]; +extern uint8_t SevenSegNumFont[]; + +// Set the pins to the correct ones for your development shield +// ------------------------------------------------------------ +// My chipKit Uno32/uC32 shield : ,38,39,40,41 +// My chipKit Max32 shield : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,82,83,84,85); + +void setup() +{ + myGLCD.InitLCD(); + + myGLCD.clrScr(); +} + +void loop() +{ + myGLCD.setColor(0, 255, 0); + myGLCD.setBackColor(0, 0, 0); + + myGLCD.setFont(BigFont); + myGLCD.print(" !\"#$%&'()*+,-./", CENTER, 0); + myGLCD.print("0123456789:;<=>?", CENTER, 16); + myGLCD.print("@ABCDEFGHIJKLMNO", CENTER, 32); + myGLCD.print("PQRSTUVWXYZ[\\]^_", CENTER, 48); + myGLCD.print("`abcdefghijklmno", CENTER, 64); + myGLCD.print("pqrstuvwxyz{|}~ ", CENTER, 80); + + myGLCD.setFont(SmallFont); + myGLCD.print(" !\"#$%&'()*+,-./0123456789:;<=>?", CENTER, 120); + myGLCD.print("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_", CENTER, 132); + myGLCD.print("`abcdefghijklmnopqrstuvwxyz{|}~ ", CENTER, 144); + + myGLCD.setFont(SevenSegNumFont); + myGLCD.print("0123456789", CENTER, 190); + + while(1) {}; +} + diff --git a/libraries/UTFT/hardware/arm/HW_ARM.h b/libraries/UTFT/hardware/arm/HW_ARM.h new file mode 100644 index 0000000..c71a5ff --- /dev/null +++ b/libraries/UTFT/hardware/arm/HW_ARM.h @@ -0,0 +1,7 @@ +void UTFT::_convert_float(char *buf, double num, int width, byte prec) +{ + char format[10]; + + sprintf(format, "%%%i.%if", width, prec); + sprintf(buf, format, num); +} diff --git a/libraries/UTFT/hardware/arm/HW_ARM_defines.h b/libraries/UTFT/hardware/arm/HW_ARM_defines.h new file mode 100644 index 0000000..2881e17 --- /dev/null +++ b/libraries/UTFT/hardware/arm/HW_ARM_defines.h @@ -0,0 +1,40 @@ +// CTE TFT LCD/SD Shield for Arduino Due +// ------------------------------------- +// Uncomment the following line if you are using this shield +//#define CTE_DUE_SHIELD 1 +// +// For this shield: RS=25, WR=26, CS=27, RST=28 +//******************************************************************** + +// ElecHouse TFT LCD/SD Shield for Arduino Due +// ------------------------------------- +// Uncomment the following line if you are using this shield +//#define EHOUSE_DUE_SHIELD 1 +// +// For this shield: RS=22, WR=23, CS=31, RST=33 +//******************************************************************** + +// *** Hardwarespecific defines *** +#define cbi(reg, bitmask) *reg &= ~bitmask +#define sbi(reg, bitmask) *reg |= bitmask +#define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask); +#define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask); + +#define cport(port, data) port &= data +#define sport(port, data) port |= data + +#define swap(type, i, j) {type t = i; i = j; j = t;} + +#define fontbyte(x) cfont.font[x] + +#define pgm_read_word(data) *data +#define pgm_read_byte(data) *data +#define bitmapdatatype unsigned short* + +#if defined(TEENSYDUINO) && TEENSYDUINO >= 117 + #define regtype volatile uint8_t + #define regsize uint8_t +#else + #define regtype volatile uint32_t + #define regsize uint32_t +#endif diff --git a/libraries/UTFT/hardware/arm/HW_MX20DX256.h b/libraries/UTFT/hardware/arm/HW_MX20DX256.h new file mode 100644 index 0000000..93df980 --- /dev/null +++ b/libraries/UTFT/hardware/arm/HW_MX20DX256.h @@ -0,0 +1,188 @@ +/** + * + * This file is a modified version of the HW_Teensy3.h created by Paul Stoffregen. + * + * Teensy 3.x pin definitions created by Dawnmist + * http://forum.pjrc.com/threads/18002-Teensy-3-0-driving-an-SSD1289-with-utft?p=34719&viewfull=1#post34719 + * + * This file only supports the B and D ports as defined by Dawnmist for 8-bit and 16-bit display modules. + * Serial display modules are also supported. + * + * NOTE: This file has only been tested on a Teensy 3.1 + * +**/ + +// *** Hardware specific functions *** +void UTFT::_hw_special_init() +{ +} + +void UTFT::LCD_Writ_Bus(char VH,char VL, byte mode) +{ + switch (mode) + { + case 1: + if (display_serial_mode==SERIAL_4PIN) + { + if (VH==1) + sbi(P_SDA, B_SDA); + else + cbi(P_SDA, B_SDA); + pulse_low(P_SCL, B_SCL); + } + else + { + if (VH==1) + sbi(P_RS, B_RS); + else + cbi(P_RS, B_RS); + } + + if (VL & 0x80) + sbi(P_SDA, B_SDA); + else + cbi(P_SDA, B_SDA); + pulse_low(P_SCL, B_SCL); + if (VL & 0x40) + sbi(P_SDA, B_SDA); + else + cbi(P_SDA, B_SDA); + pulse_low(P_SCL, B_SCL); + if (VL & 0x20) + sbi(P_SDA, B_SDA); + else + cbi(P_SDA, B_SDA); + pulse_low(P_SCL, B_SCL); + if (VL & 0x10) + sbi(P_SDA, B_SDA); + else + cbi(P_SDA, B_SDA); + pulse_low(P_SCL, B_SCL); + if (VL & 0x08) + sbi(P_SDA, B_SDA); + else + cbi(P_SDA, B_SDA); + pulse_low(P_SCL, B_SCL); + if (VL & 0x04) + sbi(P_SDA, B_SDA); + else + cbi(P_SDA, B_SDA); + pulse_low(P_SCL, B_SCL); + if (VL & 0x02) + sbi(P_SDA, B_SDA); + else + cbi(P_SDA, B_SDA); + pulse_low(P_SCL, B_SCL); + if (VL & 0x01) + sbi(P_SDA, B_SDA); + else + cbi(P_SDA, B_SDA); + pulse_low(P_SCL, B_SCL); + break; + case 8: + *(volatile uint8_t *)(&GPIOD_PDOR) = VH; + pulse_low(P_WR, B_WR); + *(volatile uint8_t *)(&GPIOD_PDOR) = VL; + pulse_low(P_WR, B_WR); + break; + case 16: + *(volatile uint8_t *)(&GPIOD_PDOR) = VH; + GPIOB_PCOR = 0x000F000F; // clear data lines B0-3,B16-19 + GPIOB_PSOR = (0x0F & VL) | ((VL >> 4) << 16); // set data lines 0-3,16-19 if set in cl + pulse_low(P_WR, B_WR); + break; + } +} + +void UTFT::_set_direction_registers(byte mode) +{ + GPIOD_PDDR |= 0xFF; + PORTD_PCR0 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTD_PCR1 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTD_PCR2 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTD_PCR3 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTD_PCR4 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTD_PCR5 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTD_PCR6 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTD_PCR7 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + + if (mode == 16) + { + GPIOB_PDDR |= 0x000F000F; + PORTB_PCR0 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTB_PCR1 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTB_PCR2 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTB_PCR3 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTB_PCR16 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTB_PCR17 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTB_PCR18 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + PORTB_PCR19 = PORT_PCR_SRE | PORT_PCR_DSE | PORT_PCR_MUX(1); + } +} +void UTFT::_fast_fill_16(int ch, int cl, long pix) +{ + long blocks; + + *(volatile uint8_t *)(&GPIOD_PDOR) = ch; + GPIOB_PCOR = 0x000F000F; // clear data lines B0-3,B16-19 + GPIOB_PSOR = (0x0F & cl) | ((cl >> 4) << 16); // set data lines 0-3,16-19 if set in cl + + blocks = pix/16; + for (int i=0; i>3) | ((VH & 0x80)>>1); + pulse_low(P_WR, B_WR); + + REG_PIOA_CODR=0x0000C000; + REG_PIOD_CODR=0x0000064F; + REG_PIOA_SODR=(VL & 0x06)<<13; + (VL & 0x01) ? REG_PIOB_SODR = 0x4000000 : REG_PIOB_CODR = 0x4000000; + REG_PIOD_SODR=((VL & 0x78)>>3) | ((VL & 0x80)>>1); + pulse_low(P_WR, B_WR); +#endif + break; + case 16: +#if defined(CTE_DUE_SHIELD) + REG_PIOC_CODR=0xFF1FE; + REG_PIOC_SODR=(VL<<1) & 0x1FE; + REG_PIOC_SODR=(VH<<12) & 0xFF000; +#elif defined(EHOUSE_DUE_SHIELD) + PIOC->PIO_ODSR = ((PIOC->PIO_ODSR&(~0x000FF3FC)) | ((((uint32_t)VL)<<2) | (((uint32_t)VH)<<12))); +#else + REG_PIOA_CODR=0x0000C080; + REG_PIOC_CODR=0x0000003E; + REG_PIOD_CODR=0x0000064F; + REG_PIOA_SODR=((VH & 0x06)<<13) | ((VL & 0x40)<<1); + (VH & 0x01) ? REG_PIOB_SODR = 0x4000000 : REG_PIOB_CODR = 0x4000000; + REG_PIOC_SODR=((VL & 0x01)<<5) | ((VL & 0x02)<<3) | ((VL & 0x04)<<1) | ((VL & 0x08)>>1) | ((VL & 0x10)>>3); + REG_PIOD_SODR=((VH & 0x78)>>3) | ((VH & 0x80)>>1) | ((VL & 0x20)<<5) | ((VL & 0x80)<<2); +#endif + pulse_low(P_WR, B_WR); + break; + case LATCHED_16: + asm("nop"); // Mode is unsupported + break; + } +} + +void UTFT::_set_direction_registers(byte mode) +{ + if (mode!=LATCHED_16) + { +#if defined(CTE_DUE_SHIELD) + if (mode==16) + { + REG_PIOC_OER=0x000FF1FE; + } + else + REG_PIOC_OER=0x000FF000; +#elif defined(EHOUSE_DUE_SHIELD) + if (mode==16) + { + REG_PIOC_OER=0x000FF3FC; + REG_PIOC_OWER=0x000FF3FC; + } + else + REG_PIOC_OER=0x000FF000; +#else + REG_PIOA_OER=0x0000c000; //PA14,PA15 enable + REG_PIOB_OER=0x04000000; //PB26 enable + REG_PIOD_OER=0x0000064f; //PD0-3,PD6,PD9-10 enable + if (mode==16) + { + REG_PIOA_OER=0x00000080; //PA7 enable + REG_PIOC_OER=0x0000003e; //PC1 - PC5 enable + } +#endif + } + else + { + asm("nop"); // Mode is unsupported + } +} + +void UTFT::_fast_fill_16(int ch, int cl, long pix) +{ + long blocks; + +#if defined(CTE_DUE_SHIELD) + REG_PIOC_CODR=0xFF1FE; + REG_PIOC_SODR=(cl<<1) & 0x1FE; + REG_PIOC_SODR=(ch<<12) & 0xFF000; +#elif defined(EHOUSE_DUE_SHIELD) + PIOC->PIO_ODSR = ((PIOC->PIO_ODSR&(~0x000FF3FC)) | ((((uint32_t)cl)<<2) | (((uint32_t)ch)<<12))); +#else + REG_PIOA_CODR=0x0000C080; + REG_PIOC_CODR=0x0000003E; + REG_PIOD_CODR=0x0000064F; + REG_PIOA_SODR=((ch & 0x06)<<13) | ((cl & 0x40)<<1); + (ch & 0x01) ? REG_PIOB_SODR = 0x4000000 : REG_PIOB_CODR = 0x4000000; + REG_PIOC_SODR=((cl & 0x01)<<5) | ((cl & 0x02)<<3) | ((cl & 0x04)<<1) | ((cl & 0x08)>>1) | ((cl & 0x10)>>3); + REG_PIOD_SODR=((ch & 0x78)>>3) | ((ch & 0x80)>>1) | ((cl & 0x20)<<5) | ((cl & 0x80)<<2); +#endif + + blocks = pix/16; + for (int i=0; i>3) | ((ch & 0x80)>>1); +#endif + + blocks = pix/16; + for (int i=0; i>3; + PORTE &= ~0x3B; + PORTE |= (VH & 0x03) + ((VH & 0x0C)<<2) + ((VH & 0x20)>>2); + pulse_low(P_WR, B_WR); + PORTG &= ~0x20; + PORTG |= (VL & 0x10)<<1; + PORTH &= ~0x18; + PORTH |= (VL & 0xC0)>>3; + PORTE &= ~0x3B; + PORTE |= (VL & 0x03) + ((VL & 0x0C)<<2) + ((VL & 0x20)>>2); + pulse_low(P_WR, B_WR); +#else + PORTA = VH; + pulse_low(P_WR, B_WR); + PORTA = VL; + pulse_low(P_WR, B_WR); +#endif + break; + case 16: + PORTA = VH; + PORTC = VL; + pulse_low(P_WR, B_WR); + break; + case LATCHED_16: + PORTG &= ~0x20; + PORTG |= (VH & 0x10)<<1; + PORTH &= ~0x18; + PORTH |= (VH & 0xC0)>>3; + PORTE &= ~0x3B; + PORTE |= (VH & 0x03) + ((VH & 0x0C)<<2) + ((VH & 0x20)>>2); + cbi(P_ALE, B_ALE); + pulse_high(P_ALE, B_ALE); + cbi(P_CS, B_CS); + PORTG &= ~0x20; + PORTG |= (VL & 0x10)<<1; + PORTH &= ~0x18; + PORTH |= (VL & 0xC0)>>3; + PORTE &= ~0x3B; + PORTE |= (VL & 0x03) + ((VL & 0x0C)<<2) + ((VL & 0x20)>>2); + pulse_low(P_WR, B_WR); + sbi(P_CS, B_CS); + break; + } +} + +void UTFT::_set_direction_registers(byte mode) +{ +#if defined(USE_UNO_SHIELD_ON_MEGA) + DDRH = 0x18; + DDRG = 0x20; + DDRE = 0x3B; +#else + if (mode!=LATCHED_16) + { + DDRA = 0xFF; + if (mode==16) + DDRC = 0xFF; + } + else + { + DDRH = 0x18; + DDRG = 0x20; + DDRE = 0x3B; + } +#endif +} + +void UTFT::_fast_fill_16(int ch, int cl, long pix) +{ +#if defined(USE_UNO_SHIELD_ON_MEGA) + if (ch==cl) + _fast_fill_8(ch, pix); + else + { + for (int i=0; i>3; + PORTE &= ~0x3B; + PORTE |= (ch & 0x03) + ((ch & 0x0C)<<2) + ((ch & 0x20)>>2); + pulse_low(P_WR, B_WR); + PORTG &= ~0x20; + PORTG |= (cl & 0x10)<<1; + PORTH &= ~0x18; + PORTH |= (cl & 0xC0)>>3; + PORTE &= ~0x3B; + PORTE |= (cl & 0x03) + ((cl & 0x0C)<<2) + ((cl & 0x20)>>2); + pulse_low(P_WR, B_WR); + } + } +#else + long blocks; + + PORTA = ch; + PORTC = cl; + + blocks = pix/16; + for (int i=0; i>3; + PORTE &= ~0x3B; + PORTE |= (ch & 0x03) + ((ch & 0x0C)<<2) + ((ch & 0x20)>>2); +#else + PORTA = ch; +#endif + + blocks = pix/16; + for (int i=0; i>4); + pulse_low(P_WR, B_WR); + cport (PORTD, 0xF0); + sport (PORTD, (VL & 0x0F)); + cport (PORTB, 0xF0); + sport (PORTB, (VL & 0xF0)>>4); + pulse_low(P_WR, B_WR); + break; + case 16: + cport (PORTD, 0x90); + sport (PORTD, (VH & 0x0F) | ((VL & 0x03)<<5)); + PORTB = ((VH & 0xF0)>>4) | ((VL & 0x3C)<<2); + cport (PORTA, 0x3F); + sport (PORTA, ((VL & 0x40)<<1) | ((VL & 0x80)>>1)); + pulse_low(P_WR, B_WR); + break; + case LATCHED_16: + cport (PORTD, 0xF0); + sport (PORTD, (VH & 0x0F)); + cport (PORTB, 0xF0); + sport (PORTB, (VH & 0xF0)>>4); + cbi(P_ALE, B_ALE); + pulse_high(P_ALE, B_ALE); + cbi(P_CS, B_CS); + cport (PORTD, 0xF0); + sport (PORTD, (VL & 0x0F)); + cport (PORTB, 0xF0); + sport (PORTB, (VL & 0xF0)>>4); + pulse_low(P_WR, B_WR); + sbi(P_CS, B_CS); + break; + } +} + +void UTFT::_set_direction_registers(byte mode) +{ + DDRB |= 0x0F; + DDRD |= 0x0F; + if (mode==16) + { + DDRB = 0xFF; + DDRD |= 0x6F; + DDRA |= 0xC0; + } + +} + +void UTFT::_fast_fill_16(int ch, int cl, long pix) +{ + long blocks; + + cport (PORTD, 0x90); + sport (PORTD, (ch & 0x0F) | ((cl & 0x03)<<5)); + PORTB = ((ch & 0xF0)>>4) | ((cl & 0x3C)<<2); + cport (PORTA, 0x3F); + sport (PORTA, ((cl & 0x40)<<1) | ((cl & 0x80)>>1)); + + blocks = pix/16; + for (int i=0; i>4); + + blocks = pix/16; + for (int i=0; i>6) & 0x03); + PORTB = VL & 0x3F; + pulse_low(P_WR, B_WR); + break; + case LATCHED_16: + PORTD = VH; + cbi(P_ALE, B_ALE); + pulse_high(P_ALE, B_ALE); + cbi(P_CS, B_CS); + PORTD = VL; + pulse_low(P_WR, B_WR); + sbi(P_CS, B_CS); + break; + } +} + +void UTFT::_set_direction_registers(byte mode) +{ + DDRD = 0xFF; + if (mode==16) + { + DDRB |= 0x3F; + DDRC |= 0x03; + } + +} + +void UTFT::_fast_fill_16(int ch, int cl, long pix) +{ + long blocks; + + PORTD = ch; + cport(PORTC, 0xFC); + sport(PORTC, (cl>>6) & 0x03); + PORTB = cl & 0x3F; + + blocks = pix/16; + for (int i=0; i>3) + ((VH & 0x04)>>1) + ((VH & 0x03)<<2); + PORTE += ((VH & 0x80)>>1); + pulse_low(P_WR, B_WR); + + cport(PORTC, 0xBF); + cport(PORTD, 0x60); + cport(PORTE, 0xBF); + PORTC += ((VL & 0x20)<<1); + PORTD += ((VL & 0x40)<<1) + (VL & 0x10) + ((VL & 0x08)>>3) + ((VL & 0x04)>>1) + ((VL & 0x03)<<2); + PORTE += ((VL & 0x80)>>1); + pulse_low(P_WR, B_WR); + break; + case 16: + cport(PORTB, 0x0F); + cport(PORTC, 0x3F); + cport(PORTD, 0x20); + cport(PORTE, 0xBF); + cport(PORTF, 0x3F); + + PORTB |= ((VL & 0x0F)<<4); + PORTC |= ((VL & 0x20)<<2) + ((VH & 0x20)<<1); + PORTD |= ((VH & 0x40)<<1) + (VH & 0x10) + ((VH & 0x08)>>3) + ((VH & 0x04)>>1) + ((VH & 0x03)<<2) + ((VL & 0x10)<<2); + PORTE |= ((VH & 0x80)>>1); + PORTF |= ((VL & 0x80)>>1) + ((VL & 0x40)<<1); + + pulse_low(P_WR, B_WR); + break; + case LATCHED_16: + cport(PORTC, 0xBF); + cport(PORTD, 0x60); + cport(PORTE, 0xBF); + PORTC += ((VH & 0x20)<<1); + PORTD += ((VH & 0x40)<<1) + (VH & 0x10) + ((VH & 0x08)>>3) + ((VH & 0x04)>>1) + ((VH & 0x03)<<2); + PORTE += ((VH & 0x80)>>1); + cbi(P_ALE, B_ALE); + pulse_high(P_ALE, B_ALE); + cbi(P_CS, B_CS); + cport(PORTC, 0xBF); + cport(PORTD, 0x60); + cport(PORTE, 0xBF); + PORTC += ((VL & 0x20)<<1); + PORTD += ((VL & 0x40)<<1) + (VL & 0x10) + ((VL & 0x08)>>3) + ((VL & 0x04)>>1) + ((VL & 0x03)<<2); + PORTE += ((VL & 0x80)>>1); + pulse_low(P_WR, B_WR); + sbi(P_CS, B_CS); + break; + } +} + +void UTFT::_set_direction_registers(byte mode) +{ + switch (mode) + { + case 8: + case LATCHED_16: + DDRC |= 0x40; + DDRD |= 0x9F; + DDRE |= 0x40; + break; + case 16: + DDRB |= 0xF0; + DDRC |= 0xC0; + DDRD |= 0xDF; + DDRE |= 0x40; + DDRF |= 0xC0; + break; + } +} + +void UTFT::_fast_fill_16(int ch, int cl, long pix) +{ + long blocks; + + cport(PORTB, 0x0F); + cport(PORTC, 0x3F); + cport(PORTD, 0x20); + cport(PORTE, 0xBF); + cport(PORTF, 0x3F); + + PORTB |= ((cl & 0x0F)<<4); + PORTC |= ((cl & 0x20)<<2) + ((ch & 0x20)<<1); + PORTD |= ((ch & 0x40)<<1) + (ch & 0x10) + ((ch & 0x08)>>3) + ((ch & 0x04)>>1) + ((ch & 0x03)<<2) + ((cl & 0x10)<<2); + PORTE |= ((ch & 0x80)>>1); + PORTF |= ((cl & 0x80)>>1) + ((cl & 0x40)<<1); + + blocks = pix/16; + for (int i=0; i>3) + ((ch & 0x04)>>1) + ((ch & 0x03)<<2); + PORTE |= ((ch & 0x80)>>1); + + blocks = pix/16; + for (int i=0; i>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/hx8347a/initlcd.h b/libraries/UTFT/tft_drivers/hx8347a/initlcd.h new file mode 100644 index 0000000..76bf08e --- /dev/null +++ b/libraries/UTFT/tft_drivers/hx8347a/initlcd.h @@ -0,0 +1,88 @@ +case HX8347A: + LCD_Write_COM_DATA(0x46,0x00A4); + LCD_Write_COM_DATA(0x47,0x0053); + LCD_Write_COM_DATA(0x48,0x0000); + LCD_Write_COM_DATA(0x49,0x0044); + LCD_Write_COM_DATA(0x4a,0x0004); + LCD_Write_COM_DATA(0x4b,0x0067); + LCD_Write_COM_DATA(0x4c,0x0033); + LCD_Write_COM_DATA(0x4d,0x0077); + LCD_Write_COM_DATA(0x4e,0x0012); + LCD_Write_COM_DATA(0x4f,0x004C); + LCD_Write_COM_DATA(0x50,0x0046); + LCD_Write_COM_DATA(0x51,0x0044); + + //240x320 window setting + LCD_Write_COM_DATA(0x02,0x0000); // Column address start2 + LCD_Write_COM_DATA(0x03,0x0000); // Column address start1 + LCD_Write_COM_DATA(0x04,0x0000); // Column address end2 + LCD_Write_COM_DATA(0x05,0x00ef); // Column address end1 + LCD_Write_COM_DATA(0x06,0x0000); // Row address start2 + LCD_Write_COM_DATA(0x07,0x0000); // Row address start1 + LCD_Write_COM_DATA(0x08,0x0001); // Row address end2 + LCD_Write_COM_DATA(0x09,0x003f); // Row address end1 + + // Display Setting + LCD_Write_COM_DATA(0x01,0x0006); // IDMON=0, INVON=1, NORON=1, PTLON=0 + LCD_Write_COM_DATA(0x16,0x00C8); // MY=0, MX=0, MV=0, ML=1, BGR=0, TEON=0 0048 + LCD_Write_COM_DATA(0x23,0x0095); // N_DC=1001 0101 + LCD_Write_COM_DATA(0x24,0x0095); // PI_DC=1001 0101 + LCD_Write_COM_DATA(0x25,0x00FF); // I_DC=1111 1111 + + LCD_Write_COM_DATA(0x27,0x0002); // N_BP=0000 0010 + LCD_Write_COM_DATA(0x28,0x0002); // N_FP=0000 0010 + LCD_Write_COM_DATA(0x29,0x0002); // PI_BP=0000 0010 + LCD_Write_COM_DATA(0x2a,0x0002); // PI_FP=0000 0010 + LCD_Write_COM_DATA(0x2C,0x0002); // I_BP=0000 0010 + LCD_Write_COM_DATA(0x2d,0x0002); // I_FP=0000 0010 + + LCD_Write_COM_DATA(0x3a,0x0001); // N_RTN=0000, N_NW=001 0001 + LCD_Write_COM_DATA(0x3b,0x0000); // P_RTN=0000, P_NW=001 + LCD_Write_COM_DATA(0x3c,0x00f0); // I_RTN=1111, I_NW=000 + LCD_Write_COM_DATA(0x3d,0x0000); // DIV=00 + delay(1); + LCD_Write_COM_DATA(0x35,0x0038); // EQS=38h + LCD_Write_COM_DATA(0x36,0x0078); // EQP=78h + LCD_Write_COM_DATA(0x3E,0x0038); // SON=38h + LCD_Write_COM_DATA(0x40,0x000F); // GDON=0Fh + LCD_Write_COM_DATA(0x41,0x00F0); // GDOFF + + // Power Supply Setting + LCD_Write_COM_DATA(0x19,0x0049); // CADJ=0100, CUADJ=100, OSD_EN=1 ,60Hz + LCD_Write_COM_DATA(0x93,0x000F); // RADJ=1111, 100% + delay(1); + LCD_Write_COM_DATA(0x20,0x0040); // BT=0100 + LCD_Write_COM_DATA(0x1D,0x0007); // VC1=111 0007 + LCD_Write_COM_DATA(0x1E,0x0000); // VC3=000 + LCD_Write_COM_DATA(0x1F,0x0004); // VRH=0011 + + //VCOM SETTING + LCD_Write_COM_DATA(0x44,0x004D); // VCM=101 0000 4D + LCD_Write_COM_DATA(0x45,0x000E); // VDV=1 0001 0011 + delay(1); + LCD_Write_COM_DATA(0x1C,0x0004); // AP=100 + delay(2); + + LCD_Write_COM_DATA(0x1B,0x0018); // GASENB=0, PON=0, DK=1, XDK=0, VLCD_TRI=0, STB=0 + delay(1); + LCD_Write_COM_DATA(0x1B,0x0010); // GASENB=0, PON=1, DK=0, XDK=0, VLCD_TRI=0, STB=0 + delay(1); + LCD_Write_COM_DATA(0x43,0x0080); //set VCOMG=1 + delay(2); + + // Display ON Setting + LCD_Write_COM_DATA(0x90,0x007F); // SAP=0111 1111 + LCD_Write_COM_DATA(0x26,0x0004); //GON=0, DTE=0, D=01 + delay(1); + LCD_Write_COM_DATA(0x26,0x0024); //GON=1, DTE=0, D=01 + LCD_Write_COM_DATA(0x26,0x002C); //GON=1, DTE=0, D=11 + delay(1); + LCD_Write_COM_DATA(0x26,0x003C); //GON=1, DTE=1, D=11 + + // INTERNAL REGISTER SETTING + LCD_Write_COM_DATA(0x57,0x0002); // TEST_Mode=1: into TEST mode + LCD_Write_COM_DATA(0x95,0x0001); // SET DISPLAY CLOCK AND PUMPING CLOCK TO SYNCHRONIZE + LCD_Write_COM_DATA(0x57,0x0000); // TEST_Mode=0: exit TEST mode + //LCD_Write_COM_DATA(0x21,0x0000); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/hx8347a/setxy.h b/libraries/UTFT/tft_drivers/hx8347a/setxy.h new file mode 100644 index 0000000..bf82d6b --- /dev/null +++ b/libraries/UTFT/tft_drivers/hx8347a/setxy.h @@ -0,0 +1,11 @@ +case HX8347A: + LCD_Write_COM_DATA(0x02,x1>>8); + LCD_Write_COM_DATA(0x03,x1); + LCD_Write_COM_DATA(0x04,x2>>8); + LCD_Write_COM_DATA(0x05,x2); + LCD_Write_COM_DATA(0x06,y1>>8); + LCD_Write_COM_DATA(0x07,y1); + LCD_Write_COM_DATA(0x08,y2>>8); + LCD_Write_COM_DATA(0x09,y2); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/hx8352a/initlcd.h b/libraries/UTFT/tft_drivers/hx8352a/initlcd.h new file mode 100644 index 0000000..5645bbe --- /dev/null +++ b/libraries/UTFT/tft_drivers/hx8352a/initlcd.h @@ -0,0 +1,131 @@ +case HX8352A: + LCD_Write_COM(0x83); + LCD_Write_DATA(0x02); //TESTM=1 + + LCD_Write_COM(0x85); + LCD_Write_DATA(0x03); //VDC_SEL=011 + LCD_Write_COM(0x8B); + LCD_Write_DATA(0x01); + LCD_Write_COM(0x8C); + LCD_Write_DATA(0x93); //STBA[7]=1,STBA[5:4]=01,STBA[1:0]=11 + + LCD_Write_COM(0x91); + LCD_Write_DATA(0x01); //DCDC_SYNC=1 + + LCD_Write_COM(0x83); + LCD_Write_DATA(0x00); //TESTM=0 + //Gamma Setting + + LCD_Write_COM(0x3E); + LCD_Write_DATA(0xB0); + LCD_Write_COM(0x3F); + LCD_Write_DATA(0x03); + LCD_Write_COM(0x40); + LCD_Write_DATA(0x10); + LCD_Write_COM(0x41); + LCD_Write_DATA(0x56); + LCD_Write_COM(0x42); + LCD_Write_DATA(0x13); + LCD_Write_COM(0x43); + LCD_Write_DATA(0x46); + LCD_Write_COM(0x44); + LCD_Write_DATA(0x23); + LCD_Write_COM(0x45); + LCD_Write_DATA(0x76); + LCD_Write_COM(0x46); + LCD_Write_DATA(0x00); + LCD_Write_COM(0x47); + LCD_Write_DATA(0x5E); + LCD_Write_COM(0x48); + LCD_Write_DATA(0x4F); + LCD_Write_COM(0x49); + LCD_Write_DATA(0x40); + //**********Power On sequence************ + + LCD_Write_COM(0x17); + LCD_Write_DATA(0x91); + + LCD_Write_COM(0x2B); + LCD_Write_DATA(0xF9); + delay(10); + + LCD_Write_COM(0x1B); + LCD_Write_DATA(0x14); + + LCD_Write_COM(0x1A); + LCD_Write_DATA(0x11); + + LCD_Write_COM(0x1C); + LCD_Write_DATA(0x06); + + LCD_Write_COM(0x1F); + LCD_Write_DATA(0x42); + delay(20); + + LCD_Write_COM(0x19); + LCD_Write_DATA(0x0A); + + LCD_Write_COM(0x19); + LCD_Write_DATA(0x1A); + delay(40); + + + LCD_Write_COM(0x19); + LCD_Write_DATA(0x12); + delay(40); + + LCD_Write_COM(0x1E); + LCD_Write_DATA(0x27); + delay(100); + + + //**********DISPLAY ON SETTING*********** + + LCD_Write_COM(0x24); + LCD_Write_DATA(0x60); + + LCD_Write_COM(0x3D); + LCD_Write_DATA(0x40); + + LCD_Write_COM(0x34); + LCD_Write_DATA(0x38); + + LCD_Write_COM(0x35); + LCD_Write_DATA(0x38); + + LCD_Write_COM(0x24); + LCD_Write_DATA(0x38); + delay(40); + + LCD_Write_COM(0x24); + LCD_Write_DATA(0x3C); + + LCD_Write_COM(0x16); + LCD_Write_DATA(0x1C); + + LCD_Write_COM(0x01); + LCD_Write_DATA(0x06); + + LCD_Write_COM(0x55); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0x02); + LCD_Write_DATA(0x00); + LCD_Write_COM(0x03); + LCD_Write_DATA(0x00); + LCD_Write_COM(0x04); + LCD_Write_DATA(0x00); + LCD_Write_COM(0x05); + LCD_Write_DATA(0xef); + + LCD_Write_COM(0x06); + LCD_Write_DATA(0x00); + LCD_Write_COM(0x07); + LCD_Write_DATA(0x00); + LCD_Write_COM(0x08); + LCD_Write_DATA(0x01); + LCD_Write_COM(0x09); + LCD_Write_DATA(0x8f); + + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/hx8352a/setxy.h b/libraries/UTFT/tft_drivers/hx8352a/setxy.h new file mode 100644 index 0000000..225fe65 --- /dev/null +++ b/libraries/UTFT/tft_drivers/hx8352a/setxy.h @@ -0,0 +1,11 @@ +case HX8352A: + LCD_Write_COM_DATA(0x02,x1>>8); + LCD_Write_COM_DATA(0x03,x1); + LCD_Write_COM_DATA(0x04,x2>>8); + LCD_Write_COM_DATA(0x05,x2); + LCD_Write_COM_DATA(0x06,y1>>8); + LCD_Write_COM_DATA(0x07,y1); + LCD_Write_COM_DATA(0x08,y2>>8); + LCD_Write_COM_DATA(0x09,y2); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/hx8353c/initlcd.h b/libraries/UTFT/tft_drivers/hx8353c/initlcd.h new file mode 100644 index 0000000..70b6f29 --- /dev/null +++ b/libraries/UTFT/tft_drivers/hx8353c/initlcd.h @@ -0,0 +1,69 @@ +case HX8353C: + LCD_Write_COM(0xB9);//SETEXTC + LCD_Write_DATA(0xFF); + LCD_Write_DATA(0x83); + LCD_Write_DATA(0x53); + + LCD_Write_COM(0xB0);//RADJ + LCD_Write_DATA(0x3C); + LCD_Write_DATA(0x01); + + LCD_Write_COM(0xB6);//VCOM + LCD_Write_DATA(0x94); + LCD_Write_DATA(0x6C); + LCD_Write_DATA(0x50); + + LCD_Write_COM(0xB1);//PWR + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x1B); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x77); + LCD_Write_DATA(0x89); + + LCD_Write_COM(0xE0); //Gamma setting for tpo Panel + LCD_Write_DATA(0x50); + LCD_Write_DATA(0x77); + LCD_Write_DATA(0x40); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0xBF); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x0F); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x73); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x72); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0xB0); + LCD_Write_DATA(0x0F); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x0F); + + LCD_Write_COM(0x3A); + LCD_Write_DATA(0x05); //05 + LCD_Write_COM(0x36); + LCD_Write_DATA(0xC0); //83 //0B + + LCD_Write_COM(0x11); // SLPOUT + delay(150); + + LCD_Write_COM(0x29); // display on + + delay(150); + LCD_Write_COM(0x2D); //Look up table + + for(int j=0;j<32;j++) + { LCD_Write_DATA(2*j); } //Red + for(int j=0;j<64;j++) + { LCD_Write_DATA(1*j); } //Green + for(int j=0;j<32;j++) + { LCD_Write_DATA(2*j); } //Blue + + LCD_Write_COM(0x2c); + delay(150); + break; diff --git a/libraries/UTFT/tft_drivers/hx8353c/setxy.h b/libraries/UTFT/tft_drivers/hx8353c/setxy.h new file mode 100644 index 0000000..a654657 --- /dev/null +++ b/libraries/UTFT/tft_drivers/hx8353c/setxy.h @@ -0,0 +1,13 @@ +case HX8353C: + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/ili9320/initlcd.h b/libraries/UTFT/tft_drivers/ili9320/initlcd.h new file mode 100644 index 0000000..a49f118 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9320/initlcd.h @@ -0,0 +1,67 @@ +case ILI9320_8: +case ILI9320_16: + LCD_Write_COM_DATA(0xe5, 0x8000); + LCD_Write_COM_DATA(0x00, 0x0001); + LCD_Write_COM_DATA(0x01, 0x0100); + LCD_Write_COM_DATA(0x02, 0x0700); + LCD_Write_COM_DATA(0x03, 0x1030); + LCD_Write_COM_DATA(0x04, 0x0000); + LCD_Write_COM_DATA(0x08, 0x0202); + LCD_Write_COM_DATA(0x09, 0x0000); + LCD_Write_COM_DATA(0x0A, 0x0000); + LCD_Write_COM_DATA(0x0C, 0x0000); + LCD_Write_COM_DATA(0x0D, 0x0000); + LCD_Write_COM_DATA(0x0F, 0x0000); + //-----Power On sequence----------------------- + LCD_Write_COM_DATA(0x10, 0x0000); + LCD_Write_COM_DATA(0x11, 0x0007); + LCD_Write_COM_DATA(0x12, 0x0000); + LCD_Write_COM_DATA(0x13, 0x0000); + delay(50); + LCD_Write_COM_DATA(0x10, 0x17B0); + LCD_Write_COM_DATA(0x11, 0x0007); + delay(10); + LCD_Write_COM_DATA(0x12, 0x013A); + delay(10); + LCD_Write_COM_DATA(0x13, 0x1A00); + LCD_Write_COM_DATA(0x29, 0x000c); + delay(10); + //-----Gamma control----------------------- + LCD_Write_COM_DATA(0x30, 0x0000); + LCD_Write_COM_DATA(0x31, 0x0505); + LCD_Write_COM_DATA(0x32, 0x0004); + LCD_Write_COM_DATA(0x35, 0x0006); + LCD_Write_COM_DATA(0x36, 0x0707); + LCD_Write_COM_DATA(0x37, 0x0105); + LCD_Write_COM_DATA(0x38, 0x0002); + LCD_Write_COM_DATA(0x39, 0x0707); + LCD_Write_COM_DATA(0x3C, 0x0704); + LCD_Write_COM_DATA(0x3D, 0x0807); + //-----Set RAM area----------------------- + LCD_Write_COM_DATA(0x50, 0x0000); + LCD_Write_COM_DATA(0x51, 0x00EF); + LCD_Write_COM_DATA(0x52, 0x0000); + LCD_Write_COM_DATA(0x53, 0x013F); + LCD_Write_COM_DATA(0x60, 0x2700); + LCD_Write_COM_DATA(0x61, 0x0001); + LCD_Write_COM_DATA(0x6A, 0x0000); + LCD_Write_COM_DATA(0x21, 0x0000); + LCD_Write_COM_DATA(0x20, 0x0000); + //-----Partial Display Control------------ + LCD_Write_COM_DATA(0x80, 0x0000); + LCD_Write_COM_DATA(0x81, 0x0000); + LCD_Write_COM_DATA(0x82, 0x0000); + LCD_Write_COM_DATA(0x83, 0x0000); + LCD_Write_COM_DATA(0x84, 0x0000); + LCD_Write_COM_DATA(0x85, 0x0000); + //-----Panel Control---------------------- + LCD_Write_COM_DATA(0x90, 0x0010); + LCD_Write_COM_DATA(0x92, 0x0000); + LCD_Write_COM_DATA(0x93, 0x0003); + LCD_Write_COM_DATA(0x95, 0x0110); + LCD_Write_COM_DATA(0x97, 0x0000); + LCD_Write_COM_DATA(0x98, 0x0000); + //-----Display on----------------------- + LCD_Write_COM_DATA(0x07, 0x0173); + delay(50); + break; diff --git a/libraries/UTFT/tft_drivers/ili9320/setxy.h b/libraries/UTFT/tft_drivers/ili9320/setxy.h new file mode 100644 index 0000000..d54564f --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9320/setxy.h @@ -0,0 +1,10 @@ +case ILI9320_8: +case ILI9320_16: + LCD_Write_COM_DATA(0x20,x1); + LCD_Write_COM_DATA(0x21,y1); + LCD_Write_COM_DATA(0x50,x1); + LCD_Write_COM_DATA(0x52,y1); + LCD_Write_COM_DATA(0x51,x2); + LCD_Write_COM_DATA(0x53,y2); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/ili9325c/initlcd.h b/libraries/UTFT/tft_drivers/ili9325c/initlcd.h new file mode 100644 index 0000000..23fba46 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9325c/initlcd.h @@ -0,0 +1,61 @@ +case ILI9325C: + LCD_Write_COM_DATA(0xE5, 0x78F0); // set SRAM internal timing + LCD_Write_COM_DATA(0x01, 0x0100); // set Driver Output Control + LCD_Write_COM_DATA(0x02, 0x0700); // set 1 line inversion + LCD_Write_COM_DATA(0x03, 0x1030); // set GRAM write direction and BGR=1. + LCD_Write_COM_DATA(0x04, 0x0000); // Resize register + LCD_Write_COM_DATA(0x08, 0x0207); // set the back porch and front porch + LCD_Write_COM_DATA(0x09, 0x0000); // set non-display area refresh cycle ISC[3:0] + LCD_Write_COM_DATA(0x0A, 0x0000); // FMARK function + LCD_Write_COM_DATA(0x0C, 0x0000); // RGB interface setting + LCD_Write_COM_DATA(0x0D, 0x0000); // Frame marker Position + LCD_Write_COM_DATA(0x0F, 0x0000); // RGB interface polarity + //*************Power On sequence ****************// + LCD_Write_COM_DATA(0x10, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB + LCD_Write_COM_DATA(0x11, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] + LCD_Write_COM_DATA(0x12, 0x0000); // VREG1OUT voltage + LCD_Write_COM_DATA(0x13, 0x0000); // VDV[4:0] for VCOM amplitude + LCD_Write_COM_DATA(0x07, 0x0001); + delay(200); // Dis-charge capacitor power voltage + LCD_Write_COM_DATA(0x10, 0x1090); // SAP, BT[3:0], AP, DSTB, SLP, STB + LCD_Write_COM_DATA(0x11, 0x0227); // Set DC1[2:0], DC0[2:0], VC[2:0] + delay(50); // Delay 50ms + LCD_Write_COM_DATA(0x12, 0x001F); // 0012 + delay(50); // Delay 50ms + LCD_Write_COM_DATA(0x13, 0x1500); // VDV[4:0] for VCOM amplitude + LCD_Write_COM_DATA(0x29, 0x0027); // 04 VCM[5:0] for VCOMH + LCD_Write_COM_DATA(0x2B, 0x000D); // Set Frame Rate + delay(50); // Delay 50ms + LCD_Write_COM_DATA(0x20, 0x0000); // GRAM horizontal Address + LCD_Write_COM_DATA(0x21, 0x0000); // GRAM Vertical Address + // ----------- Adjust the Gamma Curve ----------// + LCD_Write_COM_DATA(0x30, 0x0000); + LCD_Write_COM_DATA(0x31, 0x0707); + LCD_Write_COM_DATA(0x32, 0x0307); + LCD_Write_COM_DATA(0x35, 0x0200); + LCD_Write_COM_DATA(0x36, 0x0008); + LCD_Write_COM_DATA(0x37, 0x0004); + LCD_Write_COM_DATA(0x38, 0x0000); + LCD_Write_COM_DATA(0x39, 0x0707); + LCD_Write_COM_DATA(0x3C, 0x0002); + LCD_Write_COM_DATA(0x3D, 0x1D04); + //------------------ Set GRAM area ---------------// + LCD_Write_COM_DATA(0x50, 0x0000); // Horizontal GRAM Start Address + LCD_Write_COM_DATA(0x51, 0x00EF); // Horizontal GRAM End Address + LCD_Write_COM_DATA(0x52, 0x0000); // Vertical GRAM Start Address + LCD_Write_COM_DATA(0x53, 0x013F); // Vertical GRAM Start Address + LCD_Write_COM_DATA(0x60, 0xA700); // Gate Scan Line + LCD_Write_COM_DATA(0x61, 0x0001); // NDL,VLE, REV + LCD_Write_COM_DATA(0x6A, 0x0000); // set scrolling line + //-------------- Partial Display Control ---------// + LCD_Write_COM_DATA(0x80, 0x0000); + LCD_Write_COM_DATA(0x81, 0x0000); + LCD_Write_COM_DATA(0x82, 0x0000); + LCD_Write_COM_DATA(0x83, 0x0000); + LCD_Write_COM_DATA(0x84, 0x0000); + LCD_Write_COM_DATA(0x85, 0x0000); + //-------------- Panel Control -------------------// + LCD_Write_COM_DATA(0x90, 0x0010); + LCD_Write_COM_DATA(0x92, 0x0600); + LCD_Write_COM_DATA(0x07, 0x0133); // 262K color and display ON + break; diff --git a/libraries/UTFT/tft_drivers/ili9325c/setxy.h b/libraries/UTFT/tft_drivers/ili9325c/setxy.h new file mode 100644 index 0000000..6e7428d --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9325c/setxy.h @@ -0,0 +1,9 @@ +case ILI9325C: + LCD_Write_COM_DATA(0x20,x1); + LCD_Write_COM_DATA(0x21,y1); + LCD_Write_COM_DATA(0x50,x1); + LCD_Write_COM_DATA(0x52,y1); + LCD_Write_COM_DATA(0x51,x2); + LCD_Write_COM_DATA(0x53,y2); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/ili9325d/alt/initlcd.h b/libraries/UTFT/tft_drivers/ili9325d/alt/initlcd.h new file mode 100644 index 0000000..fa52c8d --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9325d/alt/initlcd.h @@ -0,0 +1,61 @@ +case ILI9325D_16ALT: + LCD_Write_COM_DATA(0xE5, 0x78F0); // set SRAM internal timing + LCD_Write_COM_DATA(0x01, 0x0100); // set Driver Output Control + LCD_Write_COM_DATA(0x02, 0x0700); // set 1 line inversion + LCD_Write_COM_DATA(0x03, 0x1030); // set GRAM write direction and BGR=1. + LCD_Write_COM_DATA(0x04, 0x0000); // Resize register + LCD_Write_COM_DATA(0x08, 0x0207); // set the back porch and front porch + LCD_Write_COM_DATA(0x09, 0x0000); // set non-display area refresh cycle ISC[3:0] + LCD_Write_COM_DATA(0x0A, 0x0000); // FMARK function + LCD_Write_COM_DATA(0x0C, 0x0000); // RGB interface setting + LCD_Write_COM_DATA(0x0D, 0x0000); // Frame marker Position + LCD_Write_COM_DATA(0x0F, 0x0000); // RGB interface polarity + //*************Power On sequence ****************// + LCD_Write_COM_DATA(0x10, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB + LCD_Write_COM_DATA(0x11, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] + LCD_Write_COM_DATA(0x12, 0x0000); // VREG1OUT voltage + LCD_Write_COM_DATA(0x13, 0x0000); // VDV[4:0] for VCOM amplitude + LCD_Write_COM_DATA(0x07, 0x0001); + delay(200); // Dis-charge capacitor power voltage + LCD_Write_COM_DATA(0x10, 0x1590); // SAP, BT[3:0], AP, DSTB, SLP, STB + LCD_Write_COM_DATA(0x11, 0x0227); // Set DC1[2:0], DC0[2:0], VC[2:0] + delay(50); // Delay 50ms + LCD_Write_COM_DATA(0x12, 0x009C); // 0012 + delay(50); // Delay 50ms + LCD_Write_COM_DATA(0x13, 0x1900); // VDV[4:0] for VCOM amplitude + LCD_Write_COM_DATA(0x29, 0x0023); // 04 VCM[5:0] for VCOMH + LCD_Write_COM_DATA(0x2B, 0x000E); // Set Frame Rate + delay(50); // Delay 50ms + LCD_Write_COM_DATA(0x20, 0x0000); // GRAM horizontal Address + LCD_Write_COM_DATA(0x21, 0x0000); // GRAM Vertical Address + // ----------- Adjust the Gamma Curve ----------// + LCD_Write_COM_DATA(0x30, 0x0000); + LCD_Write_COM_DATA(0x31, 0x0404); + LCD_Write_COM_DATA(0x32, 0x0003); + LCD_Write_COM_DATA(0x35, 0x0405); + LCD_Write_COM_DATA(0x36, 0x0808); + LCD_Write_COM_DATA(0x37, 0x0407); + LCD_Write_COM_DATA(0x38, 0x0303); + LCD_Write_COM_DATA(0x39, 0x0707); + LCD_Write_COM_DATA(0x3C, 0x0504); + LCD_Write_COM_DATA(0x3D, 0x0808); + //------------------ Set GRAM area ---------------// + LCD_Write_COM_DATA(0x50, 0x0000); // Horizontal GRAM Start Address + LCD_Write_COM_DATA(0x51, 0x00EF); // Horizontal GRAM End Address + LCD_Write_COM_DATA(0x52, 0x0000); // Vertical GRAM Start Address + LCD_Write_COM_DATA(0x53, 0x013F); // Vertical GRAM Start Address + LCD_Write_COM_DATA(0x60, 0xA700); // Gate Scan Line + LCD_Write_COM_DATA(0x61, 0x0001); // NDL,VLE, REV + LCD_Write_COM_DATA(0x6A, 0x0000); // set scrolling line + //-------------- Partial Display Control ---------// + LCD_Write_COM_DATA(0x80, 0x0000); + LCD_Write_COM_DATA(0x81, 0x0000); + LCD_Write_COM_DATA(0x82, 0x0000); + LCD_Write_COM_DATA(0x83, 0x0000); + LCD_Write_COM_DATA(0x84, 0x0000); + LCD_Write_COM_DATA(0x85, 0x0000); + //-------------- Panel Control -------------------// + LCD_Write_COM_DATA(0x90, 0x0010); + LCD_Write_COM_DATA(0x92, 0x0000); + LCD_Write_COM_DATA(0x07, 0x0133); // 262K color and display ON + break; diff --git a/libraries/UTFT/tft_drivers/ili9325d/alt/setxy.h b/libraries/UTFT/tft_drivers/ili9325d/alt/setxy.h new file mode 100644 index 0000000..95361e0 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9325d/alt/setxy.h @@ -0,0 +1,9 @@ +case ILI9325D_16ALT: + LCD_Write_COM_DATA(0x20,x1); + LCD_Write_COM_DATA(0x21,y1); + LCD_Write_COM_DATA(0x50,x1); + LCD_Write_COM_DATA(0x52,y1); + LCD_Write_COM_DATA(0x51,x2); + LCD_Write_COM_DATA(0x53,y2); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/ili9325d/default/initlcd.h b/libraries/UTFT/tft_drivers/ili9325d/default/initlcd.h new file mode 100644 index 0000000..6ecb6e2 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9325d/default/initlcd.h @@ -0,0 +1,62 @@ +case ILI9325D_8: +case ILI9325D_16: + LCD_Write_COM_DATA(0xE5, 0x78F0); // set SRAM internal timing + LCD_Write_COM_DATA(0x01, 0x0100); // set Driver Output Control + LCD_Write_COM_DATA(0x02, 0x0200); // set 1 line inversion + LCD_Write_COM_DATA(0x03, 0x1030); // set GRAM write direction and BGR=1. + LCD_Write_COM_DATA(0x04, 0x0000); // Resize register + LCD_Write_COM_DATA(0x08, 0x0207); // set the back porch and front porch + LCD_Write_COM_DATA(0x09, 0x0000); // set non-display area refresh cycle ISC[3:0] + LCD_Write_COM_DATA(0x0A, 0x0000); // FMARK function + LCD_Write_COM_DATA(0x0C, 0x0000); // RGB interface setting + LCD_Write_COM_DATA(0x0D, 0x0000); // Frame marker Position + LCD_Write_COM_DATA(0x0F, 0x0000); // RGB interface polarity + //*************Power On sequence ****************// + LCD_Write_COM_DATA(0x10, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB + LCD_Write_COM_DATA(0x11, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] + LCD_Write_COM_DATA(0x12, 0x0000); // VREG1OUT voltage + LCD_Write_COM_DATA(0x13, 0x0000); // VDV[4:0] for VCOM amplitude + LCD_Write_COM_DATA(0x07, 0x0001); + delay(200); // Dis-charge capacitor power voltage + LCD_Write_COM_DATA(0x10, 0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB + LCD_Write_COM_DATA(0x11, 0x0227); // Set DC1[2:0], DC0[2:0], VC[2:0] + delay(50); // Delay 50ms + LCD_Write_COM_DATA(0x12, 0x000D); // 0012 + delay(50); // Delay 50ms + LCD_Write_COM_DATA(0x13, 0x1200); // VDV[4:0] for VCOM amplitude + LCD_Write_COM_DATA(0x29, 0x000A); // 04 VCM[5:0] for VCOMH + LCD_Write_COM_DATA(0x2B, 0x000D); // Set Frame Rate + delay(50); // Delay 50ms + LCD_Write_COM_DATA(0x20, 0x0000); // GRAM horizontal Address + LCD_Write_COM_DATA(0x21, 0x0000); // GRAM Vertical Address + // ----------- Adjust the Gamma Curve ----------// + LCD_Write_COM_DATA(0x30, 0x0000); + LCD_Write_COM_DATA(0x31, 0x0404); + LCD_Write_COM_DATA(0x32, 0x0003); + LCD_Write_COM_DATA(0x35, 0x0405); + LCD_Write_COM_DATA(0x36, 0x0808); + LCD_Write_COM_DATA(0x37, 0x0407); + LCD_Write_COM_DATA(0x38, 0x0303); + LCD_Write_COM_DATA(0x39, 0x0707); + LCD_Write_COM_DATA(0x3C, 0x0504); + LCD_Write_COM_DATA(0x3D, 0x0808); + //------------------ Set GRAM area ---------------// + LCD_Write_COM_DATA(0x50, 0x0000); // Horizontal GRAM Start Address + LCD_Write_COM_DATA(0x51, 0x00EF); // Horizontal GRAM End Address + LCD_Write_COM_DATA(0x52, 0x0000); // Vertical GRAM Start Address + LCD_Write_COM_DATA(0x53, 0x013F); // Vertical GRAM Start Address + LCD_Write_COM_DATA(0x60, 0xA700); // Gate Scan Line + LCD_Write_COM_DATA(0x61, 0x0001); // NDL,VLE, REV + LCD_Write_COM_DATA(0x6A, 0x0000); // set scrolling line + //-------------- Partial Display Control ---------// + LCD_Write_COM_DATA(0x80, 0x0000); + LCD_Write_COM_DATA(0x81, 0x0000); + LCD_Write_COM_DATA(0x82, 0x0000); + LCD_Write_COM_DATA(0x83, 0x0000); + LCD_Write_COM_DATA(0x84, 0x0000); + LCD_Write_COM_DATA(0x85, 0x0000); + //-------------- Panel Control -------------------// + LCD_Write_COM_DATA(0x90, 0x0010); + LCD_Write_COM_DATA(0x92, 0x0000); + LCD_Write_COM_DATA(0x07, 0x0133); // 262K color and display ON + break; diff --git a/libraries/UTFT/tft_drivers/ili9325d/default/setxy.h b/libraries/UTFT/tft_drivers/ili9325d/default/setxy.h new file mode 100644 index 0000000..f5fdd94 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9325d/default/setxy.h @@ -0,0 +1,10 @@ +case ILI9325D_8: +case ILI9325D_16: + LCD_Write_COM_DATA(0x20,x1); + LCD_Write_COM_DATA(0x21,y1); + LCD_Write_COM_DATA(0x50,x1); + LCD_Write_COM_DATA(0x52,y1); + LCD_Write_COM_DATA(0x51,x2); + LCD_Write_COM_DATA(0x53,y2); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/ili9327/initlcd.h b/libraries/UTFT/tft_drivers/ili9327/initlcd.h new file mode 100644 index 0000000..451806b --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9327/initlcd.h @@ -0,0 +1,63 @@ +case ILI9327: + LCD_Write_COM(0xE9); + LCD_Write_DATA(0x00,0x20); + LCD_Write_COM(0x11); //Exit Sleep + delay(100); + LCD_Write_COM(0xD1); + LCD_Write_DATA(0x00,0x00); + LCD_Write_DATA(0x00,0x71); + LCD_Write_DATA(0x00,0x19); + LCD_Write_COM(0xD0); + LCD_Write_DATA(0x00,0x07); + LCD_Write_DATA(0x00,0x01); + LCD_Write_DATA(0x00,0x08); + LCD_Write_COM(0x36); + LCD_Write_DATA(0x00,0x48); + LCD_Write_COM(0x3A); + LCD_Write_DATA(0x00,0x05); + LCD_Write_COM(0xC1); + LCD_Write_DATA(0x00,0x10); + LCD_Write_DATA(0x00,0x10); + LCD_Write_DATA(0x00,0x02); + LCD_Write_DATA(0x00,0x02); + LCD_Write_COM(0xC0); //Set Default Gamma + LCD_Write_DATA(0x00,0x00); + LCD_Write_DATA(0x00,0x35); + LCD_Write_DATA(0x00,0x00); + LCD_Write_DATA(0x00,0x00); + LCD_Write_DATA(0x00,0x01); + LCD_Write_DATA(0x00,0x02); + LCD_Write_COM(0xC5); //Set frame rate + LCD_Write_DATA(0x00,0x04); + LCD_Write_COM(0xD2); //power setting + LCD_Write_DATA(0x00,0x01); + LCD_Write_DATA(0x00,0x44); + LCD_Write_COM(0xC8); //Set Gamma + LCD_Write_DATA(0x00,0x04); + LCD_Write_DATA(0x00,0x67); + LCD_Write_DATA(0x00,0x35); + LCD_Write_DATA(0x00,0x04); + LCD_Write_DATA(0x00,0x08); + LCD_Write_DATA(0x00,0x06); + LCD_Write_DATA(0x00,0x24); + LCD_Write_DATA(0x00,0x01); + LCD_Write_DATA(0x00,0x37); + LCD_Write_DATA(0x00,0x40); + LCD_Write_DATA(0x00,0x03); + LCD_Write_DATA(0x00,0x10); + LCD_Write_DATA(0x00,0x08); + LCD_Write_DATA(0x00,0x80); + LCD_Write_DATA(0x00,0x00); + LCD_Write_COM(0x2A); + LCD_Write_DATA(0x00,0x00); + LCD_Write_DATA(0x00,0x00); + LCD_Write_DATA(0x00,0x00); + LCD_Write_DATA(0x00,0xeF); + LCD_Write_COM(0x2B); + LCD_Write_DATA(0x00,0x00); + LCD_Write_DATA(0x00,0x00); + LCD_Write_DATA(0x00,0x01); + LCD_Write_DATA(0x00,0x8F); + LCD_Write_COM(0x29); //display on + LCD_Write_COM(0x2C); //display on + break; diff --git a/libraries/UTFT/tft_drivers/ili9327/setxy.h b/libraries/UTFT/tft_drivers/ili9327/setxy.h new file mode 100644 index 0000000..6390c65 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9327/setxy.h @@ -0,0 +1,13 @@ +case ILI9327: + LCD_Write_COM(0x2a); + LCD_Write_DATA(0x00,x1>>8); + LCD_Write_DATA(0x00,x1); + LCD_Write_DATA(0x00,x2>>8); + LCD_Write_DATA(0x00,x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(0x00,y1>>8); + LCD_Write_DATA(0x00,y1); + LCD_Write_DATA(0x00,y2>>8); + LCD_Write_DATA(0x00,y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/ili9341/s4p/initlcd.h b/libraries/UTFT/tft_drivers/ili9341/s4p/initlcd.h new file mode 100644 index 0000000..0a5a082 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9341/s4p/initlcd.h @@ -0,0 +1,58 @@ +case ILI9341_S4P: + LCD_Write_COM(0x11);//sleep out + delay(20); + //LCD_Write_COM(0x01); //reset + //delay(15); + LCD_Write_COM(0x28); //display off + delay(5); + LCD_Write_COM(0xCF); //power control b + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x83); //83 81 AA + LCD_Write_DATA(0x30); + LCD_Write_COM(0xED); //power on seq control + LCD_Write_DATA(0x64); //64 67 + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x12); + LCD_Write_DATA(0x81); + LCD_Write_COM(0xE8); //timing control a + LCD_Write_DATA(0x85); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x79); //79 78 + LCD_Write_COM(0xCB); //power control a + LCD_Write_DATA(0x39); + LCD_Write_DATA(0X2C); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x34); + LCD_Write_DATA(0x02); + LCD_Write_COM(0xF7); //pump ratio control + LCD_Write_DATA(0x20); + LCD_Write_COM(0xEA); //timing control b + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_COM(0xC0); //power control 2 + LCD_Write_DATA(0x26); //26 25 + LCD_Write_COM(0xC1); //power control 2 + LCD_Write_DATA(0x11); + LCD_Write_COM(0xC5); //vcom control 1 + LCD_Write_DATA(0x35); + LCD_Write_DATA(0x3E); + LCD_Write_COM(0xC7); //vcom control 2 + LCD_Write_DATA(0xBE); //BE 94 + LCD_Write_COM(0xB1); //frame control + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x1B); //1B 70 + LCD_Write_COM(0xB6); //display control + LCD_Write_DATA(0x0A); + LCD_Write_DATA(0x82); + LCD_Write_DATA(0x27); + LCD_Write_DATA(0x00); + LCD_Write_COM(0xB7); //emtry mode + LCD_Write_DATA(0x07); + LCD_Write_COM(0x3A); //pixel format + LCD_Write_DATA(0x55); //16bit + LCD_Write_COM(0x36); //mem access + LCD_Write_DATA((1<<3)|(1<<6)); + //LCD_Write_DATA((1<<3)|(1<<7)); //rotate 180 + LCD_Write_COM(0x29); //display on + delay(5); + break; diff --git a/libraries/UTFT/tft_drivers/ili9341/s4p/setxy.h b/libraries/UTFT/tft_drivers/ili9341/s4p/setxy.h new file mode 100644 index 0000000..08ac212 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9341/s4p/setxy.h @@ -0,0 +1,13 @@ +case ILI9341_S4P: + LCD_Write_COM(0x2A); //column + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2B); //page + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2C); //write + break; diff --git a/libraries/UTFT/tft_drivers/ili9341/s5p/initlcd.h b/libraries/UTFT/tft_drivers/ili9341/s5p/initlcd.h new file mode 100644 index 0000000..7afa6f6 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9341/s5p/initlcd.h @@ -0,0 +1,105 @@ +case ILI9341_S5P: + LCD_Write_COM(0xCB); + LCD_Write_DATA(0x39); + LCD_Write_DATA(0x2C); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x34); + LCD_Write_DATA(0x02); + + LCD_Write_COM(0xCF); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0XC1); + LCD_Write_DATA(0X30); + + LCD_Write_COM(0xE8); + LCD_Write_DATA(0x85); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x78); + + LCD_Write_COM(0xEA); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xED); + LCD_Write_DATA(0x64); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0X12); + LCD_Write_DATA(0X81); + + LCD_Write_COM(0xF7); + LCD_Write_DATA(0x20); + + LCD_Write_COM(0xC0); //Power control + LCD_Write_DATA(0x23); //VRH[5:0] + + LCD_Write_COM(0xC1); //Power control + LCD_Write_DATA(0x10); //SAP[2:0];BT[3:0] + + LCD_Write_COM(0xC5); //VCM control + LCD_Write_DATA(0x3e); //Contrast + LCD_Write_DATA(0x28); + + LCD_Write_COM(0xC7); //VCM control2 + LCD_Write_DATA(0x86); //-- + + LCD_Write_COM(0x36); // Memory Access Control + LCD_Write_DATA(0x48); + + LCD_Write_COM(0x3A); + LCD_Write_DATA(0x55); + + LCD_Write_COM(0xB1); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x18); + + LCD_Write_COM(0xB6); // Display Function Control + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x82); + LCD_Write_DATA(0x27); +/* + LCD_Write_COM(0xF2); // 3Gamma Function Disable + LCD_Write_DATA(0x00); + + LCD_Write_COM(0x26); //Gamma curve selected + LCD_Write_DATA(0x01); + + LCD_Write_COM(0xE0); //Set Gamma + LCD_Write_DATA(0x0F); + LCD_Write_DATA(0x31); + LCD_Write_DATA(0x2B); + LCD_Write_DATA(0x0C); + LCD_Write_DATA(0x0E); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x4E); + LCD_Write_DATA(0xF1); + LCD_Write_DATA(0x37); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x0E); + LCD_Write_DATA(0x09); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0XE1); //Set Gamma + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x0E); + LCD_Write_DATA(0x14); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x11); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x31); + LCD_Write_DATA(0xC1); + LCD_Write_DATA(0x48); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x0F); + LCD_Write_DATA(0x0C); + LCD_Write_DATA(0x31); + LCD_Write_DATA(0x36); + LCD_Write_DATA(0x0F); +*/ + LCD_Write_COM(0x11); //Exit Sleep + delay(120); + + LCD_Write_COM(0x29); //Display on + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/ili9341/s5p/setxy.h b/libraries/UTFT/tft_drivers/ili9341/s5p/setxy.h new file mode 100644 index 0000000..965f21d --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9341/s5p/setxy.h @@ -0,0 +1,13 @@ +case ILI9341_S5P: + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/ili9481/initlcd.h b/libraries/UTFT/tft_drivers/ili9481/initlcd.h new file mode 100644 index 0000000..74260ed --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9481/initlcd.h @@ -0,0 +1,62 @@ +case ILI9481: + LCD_Write_COM(0x11); + delay(20); + LCD_Write_COM(0xD0); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x42); + LCD_Write_DATA(0x18); + + LCD_Write_COM(0xD1); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x10); + + LCD_Write_COM(0xD2); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x02); + + LCD_Write_COM(0xC0); + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x3B); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x11); + + LCD_Write_COM(0xC5); + LCD_Write_DATA(0x03); + + LCD_Write_COM(0xC8); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x32); + LCD_Write_DATA(0x36); + LCD_Write_DATA(0x45); + LCD_Write_DATA(0x06); + LCD_Write_DATA(0x16); + LCD_Write_DATA(0x37); + LCD_Write_DATA(0x75); + LCD_Write_DATA(0x77); + LCD_Write_DATA(0x54); + LCD_Write_DATA(0x0C); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0x36); + LCD_Write_DATA(0x0A); + + + LCD_Write_COM(0x3A); + LCD_Write_DATA(0x55); + + LCD_Write_COM(0x2A); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x3F); + + LCD_Write_COM(0x2B); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0xE0); + delay(120); + LCD_Write_COM(0x29); + break; diff --git a/libraries/UTFT/tft_drivers/ili9481/setxy.h b/libraries/UTFT/tft_drivers/ili9481/setxy.h new file mode 100644 index 0000000..e3e7ce2 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9481/setxy.h @@ -0,0 +1,13 @@ +case ILI9481: + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/ili9486/initlcd.h b/libraries/UTFT/tft_drivers/ili9486/initlcd.h new file mode 100644 index 0000000..b67b0ed --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9486/initlcd.h @@ -0,0 +1,105 @@ +case ILI9486: + LCD_Write_COM(0x11); // Sleep OUT + delay(50); + + LCD_Write_COM(0xF2); // ????? + LCD_Write_DATA(0x1C); + LCD_Write_DATA(0xA3); + LCD_Write_DATA(0x32); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0xb2); + LCD_Write_DATA(0x12); + LCD_Write_DATA(0xFF); + LCD_Write_DATA(0x12); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xF1); // ????? + LCD_Write_DATA(0x36); + LCD_Write_DATA(0xA4); + + LCD_Write_COM(0xF8); // ????? + LCD_Write_DATA(0x21); + LCD_Write_DATA(0x04); + + LCD_Write_COM(0xF9); // ????? + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x08); + + LCD_Write_COM(0xC0); // Power Control 1 + LCD_Write_DATA(0x0d); + LCD_Write_DATA(0x0d); + + LCD_Write_COM(0xC1); // Power Control 2 + LCD_Write_DATA(0x43); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xC2); // Power Control 3 + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xC5); // VCOM Control + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x48); + + LCD_Write_COM(0xB6); // Display Function Control + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x22); // 0x42 = Rotate display 180 deg. + LCD_Write_DATA(0x3B); + + LCD_Write_COM(0xE0); // PGAMCTRL (Positive Gamma Control) + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x24); + LCD_Write_DATA(0x1c); + LCD_Write_DATA(0x0a); + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x43); + LCD_Write_DATA(0x88); + LCD_Write_DATA(0x32); + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x06); + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xE1); // NGAMCTRL (Negative Gamma Control) + LCD_Write_DATA(0x0F); + LCD_Write_DATA(0x38); + LCD_Write_DATA(0x30); + LCD_Write_DATA(0x09); + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x4e); + LCD_Write_DATA(0x77); + LCD_Write_DATA(0x3c); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x05); + LCD_Write_DATA(0x23); + LCD_Write_DATA(0x1b); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0x20); // Display Inversion OFF + LCD_Write_DATA(0x00);//C8 + + LCD_Write_COM(0x36); // Memory Access Control + LCD_Write_DATA(0x0A); + + LCD_Write_COM(0x3A); // Interface Pixel Format + LCD_Write_DATA(0x55); + + LCD_Write_COM(0x2A); // Column Addess Set + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0xDF); + + LCD_Write_COM(0x002B); // Page Address Set + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x3f); + delay(50); + LCD_Write_COM(0x0029); // Display ON + LCD_Write_COM(0x002C); // Memory Write + break; diff --git a/libraries/UTFT/tft_drivers/ili9486/setxy.h b/libraries/UTFT/tft_drivers/ili9486/setxy.h new file mode 100644 index 0000000..df5beb3 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ili9486/setxy.h @@ -0,0 +1,13 @@ +case ILI9486: + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/pcf8833/initlcd.h b/libraries/UTFT/tft_drivers/pcf8833/initlcd.h new file mode 100644 index 0000000..685f855 --- /dev/null +++ b/libraries/UTFT/tft_drivers/pcf8833/initlcd.h @@ -0,0 +1,30 @@ +case PCF8833: + LCD_Write_COM(0x01); + LCD_Write_COM(0x25); + LCD_Write_DATA(0x40); + LCD_Write_COM(0x11); + delay(10); + LCD_Write_COM(0x20); + LCD_Write_COM(0x38); + LCD_Write_COM(0x29); + LCD_Write_COM(0x13); + LCD_Write_COM(0x36); + LCD_Write_DATA(0x60); + LCD_Write_COM(0x3A); + LCD_Write_DATA(0x05); + LCD_Write_COM(0x2A); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x7F); + LCD_Write_COM(0xB4); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x0b); + LCD_Write_DATA(0x0e); + LCD_Write_COM(0xBA); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x0D); + LCD_Write_COM(0x2B); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x7F); + LCD_Write_COM(0x2C); + break; diff --git a/libraries/UTFT/tft_drivers/pcf8833/setxy.h b/libraries/UTFT/tft_drivers/pcf8833/setxy.h new file mode 100644 index 0000000..34dd38c --- /dev/null +++ b/libraries/UTFT/tft_drivers/pcf8833/setxy.h @@ -0,0 +1,9 @@ +case PCF8833: + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/r61581/initlcd.h b/libraries/UTFT/tft_drivers/r61581/initlcd.h new file mode 100644 index 0000000..6208485 --- /dev/null +++ b/libraries/UTFT/tft_drivers/r61581/initlcd.h @@ -0,0 +1,110 @@ +case R61581: + LCD_Write_COM(0xB0); + LCD_Write_DATA(0x1E); + + LCD_Write_COM(0xB0); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xB3); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x10); + + LCD_Write_COM(0xB4); + LCD_Write_DATA(0x00);//0X10 + +// LCD_Write_COM(0xB9); //PWM Settings for Brightness Control +// LCD_Write_DATA(0x01);// Disabled by default. +// LCD_Write_DATA(0xFF); //0xFF = Max brightness +// LCD_Write_DATA(0xFF); +// LCD_Write_DATA(0x18); + + LCD_Write_COM(0xC0); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x3B);// + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x00);//NW + LCD_Write_DATA(0x43); + + LCD_Write_COM(0xC1); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x15);//CLOCK + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x08); + + LCD_Write_COM(0xC4); + LCD_Write_DATA(0x15); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x01); + + LCD_Write_COM(0xC6); + LCD_Write_DATA(0x02); + + LCD_Write_COM(0xC8); + LCD_Write_DATA(0x0c); + LCD_Write_DATA(0x05); + LCD_Write_DATA(0x0A);//0X12 + LCD_Write_DATA(0x6B);//0x7D + LCD_Write_DATA(0x04); + LCD_Write_DATA(0x06);//0x08 + LCD_Write_DATA(0x15);//0x0A + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x60);//0x23 + + LCD_Write_COM(0x36); + LCD_Write_DATA(0x0A); + + LCD_Write_COM(0x0C); + LCD_Write_DATA(0x55); + + LCD_Write_COM(0x3A); + LCD_Write_DATA(0x55); + + LCD_Write_COM(0x38); + + LCD_Write_COM(0xD0); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x07);//VCI1 + LCD_Write_DATA(0x14);//VRH 0x1D + LCD_Write_DATA(0xA2);//BT 0x06 + + LCD_Write_COM(0xD1); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x5A);//VCM 0x5A + LCD_Write_DATA(0x10);//VDV + + LCD_Write_COM(0xD2); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x04);//0x24 + LCD_Write_DATA(0x04); + + LCD_Write_COM(0x11); + delay(150); + + LCD_Write_COM(0x2A); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0xDF);//320 + + LCD_Write_COM(0x2B); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x3F);//480 + + + delay(100); + + LCD_Write_COM(0x29); + delay(30); + + LCD_Write_COM(0x2C); + delay(30); + break; diff --git a/libraries/UTFT/tft_drivers/r61581/setxy.h b/libraries/UTFT/tft_drivers/r61581/setxy.h new file mode 100644 index 0000000..29f356b --- /dev/null +++ b/libraries/UTFT/tft_drivers/r61581/setxy.h @@ -0,0 +1,13 @@ +case R61581: + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/s1d19122/initlcd.h b/libraries/UTFT/tft_drivers/s1d19122/initlcd.h new file mode 100644 index 0000000..33f2c65 --- /dev/null +++ b/libraries/UTFT/tft_drivers/s1d19122/initlcd.h @@ -0,0 +1,183 @@ +case S1D19122: + //************* Start Initial Sequence **********// + + int i,R,G,B; + LCD_Write_COM(0x11); + LCD_Write_COM(0x13); + LCD_Write_COM(0x29); + + //-------------- Display Control ---------// + LCD_Write_COM(0xB0); + + LCD_Write_DATA(0x05); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0xF0); + LCD_Write_DATA(0x0A); + LCD_Write_DATA(0x41); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x0A); + LCD_Write_DATA(0x30); + LCD_Write_DATA(0x31); + LCD_Write_DATA(0x36); + LCD_Write_DATA(0x37); + LCD_Write_DATA(0x40); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x3F); + LCD_Write_DATA(0x40); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x81); + LCD_Write_DATA(0x04); + LCD_Write_DATA(0x05); + LCD_Write_DATA(0x64); + + // ----------- Gamma Curve Set3 Postive----------// + LCD_Write_COM(0xFC); + + LCD_Write_DATA(0x88); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x42); + LCD_Write_DATA(0x42); + LCD_Write_DATA(0x22); + LCD_Write_DATA(0x11); + LCD_Write_DATA(0x11); + LCD_Write_DATA(0x22); + LCD_Write_DATA(0x99); + LCD_Write_DATA(0xAA); + LCD_Write_DATA(0xAA); + LCD_Write_DATA(0xAA); + LCD_Write_DATA(0xBB); + LCD_Write_DATA(0xBB); + LCD_Write_DATA(0xAA); + LCD_Write_DATA(0x33); + LCD_Write_DATA(0x33); + LCD_Write_DATA(0x11); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0xC0); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + + // ----------- Gamma Curve Set3 Negative----------// + LCD_Write_COM(0xFD); + + LCD_Write_DATA(0x88); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x42); + LCD_Write_DATA(0x42); + LCD_Write_DATA(0x22); + LCD_Write_DATA(0x11); + LCD_Write_DATA(0x11); + LCD_Write_DATA(0x22); + LCD_Write_DATA(0x99); + LCD_Write_DATA(0xAA); + LCD_Write_DATA(0xAA); + LCD_Write_DATA(0xAA); + LCD_Write_DATA(0xBB); + LCD_Write_DATA(0xBB); + LCD_Write_DATA(0xAA); + LCD_Write_DATA(0x33); + LCD_Write_DATA(0x33); + LCD_Write_DATA(0x11); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x03); + + // ----------- EVRSER Regulator Voltage Setting---------// + LCD_Write_COM(0xBE); + + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x15); + LCD_Write_DATA(0x16); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x09); + LCD_Write_DATA(0x15); + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + + // -----------Module Definiton Setting---------// + LCD_Write_COM(0xC0); + + LCD_Write_DATA(0x0E); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + + // -----------PWRDEF Power Ability Ddfinition----------// + LCD_Write_COM(0xC1); + + LCD_Write_DATA(0x2F); + LCD_Write_DATA(0x23); + LCD_Write_DATA(0xB4); + LCD_Write_DATA(0xFF); + LCD_Write_DATA(0x24); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x20); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x20); + LCD_Write_DATA(0x20); + LCD_Write_DATA(0x00); + + // -----------Other Setting----------// + LCD_Write_COM(0xC2); + LCD_Write_DATA(0x03); + LCD_Write_COM(0x26); + LCD_Write_DATA(0x08); + LCD_Write_COM(0x35); + + LCD_Write_COM(0x36); + LCD_Write_DATA(0x64); + LCD_Write_COM(0x3A); + LCD_Write_DATA(0x05); + LCD_Write_COM(0x2A); + LCD_Write_DATA(0x01,0x3f); + LCD_Write_COM(0x2B); + LCD_Write_DATA(0xEF); + LCD_Write_COM(0x2c); + + // -----------RGB Setting----------// + LCD_Write_COM(0x2D); + R=0; + G=0; + B=0; + + for(i=0;i<32;i++) + { + LCD_Write_DATA(R); + R=R+2; + } + for(i=0;i<64;i++) + { + LCD_Write_DATA(G); + G=G+1; + } + for(i=0;i<32;i++) + { + LCD_Write_DATA(B); + B=B+2; + } + break; diff --git a/libraries/UTFT/tft_drivers/s1d19122/setxy.h b/libraries/UTFT/tft_drivers/s1d19122/setxy.h new file mode 100644 index 0000000..d88c733 --- /dev/null +++ b/libraries/UTFT/tft_drivers/s1d19122/setxy.h @@ -0,0 +1,13 @@ +case S1D19122: + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/s6d0164/initlcd.h b/libraries/UTFT/tft_drivers/s6d0164/initlcd.h new file mode 100644 index 0000000..7b2716b --- /dev/null +++ b/libraries/UTFT/tft_drivers/s6d0164/initlcd.h @@ -0,0 +1,44 @@ +case S6D0164: + LCD_Write_COM_DATA(0x11,0x001A); + LCD_Write_COM_DATA(0x12,0x3121); + LCD_Write_COM_DATA(0x13,0x006C); + LCD_Write_COM_DATA(0x14,0x4249); + + LCD_Write_COM_DATA(0x10,0x0800); + delay(10); + LCD_Write_COM_DATA(0x11,0x011A); + delay(10); + LCD_Write_COM_DATA(0x11,0x031A); + delay(10); + LCD_Write_COM_DATA(0x11,0x071A); + delay(10); + LCD_Write_COM_DATA(0x11,0x0F1A); + delay(10); + LCD_Write_COM_DATA(0x11,0x0F3A); + delay(30); + + LCD_Write_COM_DATA(0x01,0x011C); + LCD_Write_COM_DATA(0x02,0x0100); + LCD_Write_COM_DATA(0x03,0x1030); + LCD_Write_COM_DATA(0x07,0x0000); + LCD_Write_COM_DATA(0x08,0x0808); + LCD_Write_COM_DATA(0x0B,0x1100); + LCD_Write_COM_DATA(0x0C,0x0000); + + LCD_Write_COM_DATA(0x0F,0x1401); + LCD_Write_COM_DATA(0x15,0x0000); + LCD_Write_COM_DATA(0x20,0x0000); + LCD_Write_COM_DATA(0x21,0x0000); + + + LCD_Write_COM_DATA(0x36,0x00AF); + LCD_Write_COM_DATA(0x37,0x0000); + LCD_Write_COM_DATA(0x38,0x00DB); + LCD_Write_COM_DATA(0x39,0x0000); + + LCD_Write_COM_DATA(0x0F,0x0B01); + LCD_Write_COM_DATA(0x07,0x0016); + LCD_Write_COM_DATA(0x07,0x0017); + + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/s6d0164/setxy.h b/libraries/UTFT/tft_drivers/s6d0164/setxy.h new file mode 100644 index 0000000..6e5d5e9 --- /dev/null +++ b/libraries/UTFT/tft_drivers/s6d0164/setxy.h @@ -0,0 +1,9 @@ +case S6D0164: + LCD_Write_COM_DATA(0x36,x2); + LCD_Write_COM_DATA(0x37,x1); + LCD_Write_COM_DATA(0x38,y2); + LCD_Write_COM_DATA(0x39,y1); + LCD_Write_COM_DATA(0x20,x1); + LCD_Write_COM_DATA(0x21,y1); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/s6d1121/initlcd.h b/libraries/UTFT/tft_drivers/s6d1121/initlcd.h new file mode 100644 index 0000000..c8d80e6 --- /dev/null +++ b/libraries/UTFT/tft_drivers/s6d1121/initlcd.h @@ -0,0 +1,47 @@ +case S6D1121_8: +case S6D1121_16: + LCD_Write_COM_DATA(0x11,0x2004); + LCD_Write_COM_DATA(0x13,0xCC00); + LCD_Write_COM_DATA(0x15,0x2600); + LCD_Write_COM_DATA(0x14,0x252A); + LCD_Write_COM_DATA(0x12,0x0033); + LCD_Write_COM_DATA(0x13,0xCC04); + LCD_Write_COM_DATA(0x13,0xCC06); + LCD_Write_COM_DATA(0x13,0xCC4F); + LCD_Write_COM_DATA(0x13,0x674F); + LCD_Write_COM_DATA(0x11,0x2003); + LCD_Write_COM_DATA(0x30,0x2609); + LCD_Write_COM_DATA(0x31,0x242C); + LCD_Write_COM_DATA(0x32,0x1F23); + LCD_Write_COM_DATA(0x33,0x2425); + LCD_Write_COM_DATA(0x34,0x2226); + LCD_Write_COM_DATA(0x35,0x2523); + LCD_Write_COM_DATA(0x36,0x1C1A); + LCD_Write_COM_DATA(0x37,0x131D); + LCD_Write_COM_DATA(0x38,0x0B11); + LCD_Write_COM_DATA(0x39,0x1210); + LCD_Write_COM_DATA(0x3A,0x1315); + LCD_Write_COM_DATA(0x3B,0x3619); + LCD_Write_COM_DATA(0x3C,0x0D00); + LCD_Write_COM_DATA(0x3D,0x000D); + LCD_Write_COM_DATA(0x16,0x0007); + LCD_Write_COM_DATA(0x02,0x0013); + LCD_Write_COM_DATA(0x03,0x0003); + LCD_Write_COM_DATA(0x01,0x0127); + LCD_Write_COM_DATA(0x08,0x0303); + LCD_Write_COM_DATA(0x0A,0x000B); + LCD_Write_COM_DATA(0x0B,0x0003); + LCD_Write_COM_DATA(0x0C,0x0000); + LCD_Write_COM_DATA(0x41,0x0000); + LCD_Write_COM_DATA(0x50,0x0000); + LCD_Write_COM_DATA(0x60,0x0005); + LCD_Write_COM_DATA(0x70,0x000B); + LCD_Write_COM_DATA(0x71,0x0000); + LCD_Write_COM_DATA(0x78,0x0000); + LCD_Write_COM_DATA(0x7A,0x0000); + LCD_Write_COM_DATA(0x79,0x0007); + LCD_Write_COM_DATA(0x07,0x0051); + LCD_Write_COM_DATA(0x07,0x0053); + LCD_Write_COM_DATA(0x79,0x0000); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/s6d1121/setxy.h b/libraries/UTFT/tft_drivers/s6d1121/setxy.h new file mode 100644 index 0000000..c2f5a1f --- /dev/null +++ b/libraries/UTFT/tft_drivers/s6d1121/setxy.h @@ -0,0 +1,9 @@ +case S6D1121_8: +case S6D1121_16: + LCD_Write_COM_DATA(0x46,(x2 << 8) | x1); + LCD_Write_COM_DATA(0x47,y2); + LCD_Write_COM_DATA(0x48,y1); + LCD_Write_COM_DATA(0x20,x1); + LCD_Write_COM_DATA(0x21,y1); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/ssd1289/initlcd.h b/libraries/UTFT/tft_drivers/ssd1289/initlcd.h new file mode 100644 index 0000000..0d63d92 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ssd1289/initlcd.h @@ -0,0 +1,46 @@ +case SSD1289: +case SSD1289_8: +case SSD1289LATCHED: + LCD_Write_COM_DATA(0x00,0x0001); + LCD_Write_COM_DATA(0x03,0xA8A4); + LCD_Write_COM_DATA(0x0C,0x0000); + LCD_Write_COM_DATA(0x0D,0x080C); + LCD_Write_COM_DATA(0x0E,0x2B00); + LCD_Write_COM_DATA(0x1E,0x00B7); + LCD_Write_COM_DATA(0x01,0x2B3F); + LCD_Write_COM_DATA(0x02,0x0600); + LCD_Write_COM_DATA(0x10,0x0000); + LCD_Write_COM_DATA(0x11,0x6070); + LCD_Write_COM_DATA(0x05,0x0000); + LCD_Write_COM_DATA(0x06,0x0000); + LCD_Write_COM_DATA(0x16,0xEF1C); + LCD_Write_COM_DATA(0x17,0x0003); + LCD_Write_COM_DATA(0x07,0x0233); + LCD_Write_COM_DATA(0x0B,0x0000); + LCD_Write_COM_DATA(0x0F,0x0000); + LCD_Write_COM_DATA(0x41,0x0000); + LCD_Write_COM_DATA(0x42,0x0000); + LCD_Write_COM_DATA(0x48,0x0000); + LCD_Write_COM_DATA(0x49,0x013F); + LCD_Write_COM_DATA(0x4A,0x0000); + LCD_Write_COM_DATA(0x4B,0x0000); + LCD_Write_COM_DATA(0x44,0xEF00); + LCD_Write_COM_DATA(0x45,0x0000); + LCD_Write_COM_DATA(0x46,0x013F); + LCD_Write_COM_DATA(0x30,0x0707); + LCD_Write_COM_DATA(0x31,0x0204); + LCD_Write_COM_DATA(0x32,0x0204); + LCD_Write_COM_DATA(0x33,0x0502); + LCD_Write_COM_DATA(0x34,0x0507); + LCD_Write_COM_DATA(0x35,0x0204); + LCD_Write_COM_DATA(0x36,0x0204); + LCD_Write_COM_DATA(0x37,0x0502); + LCD_Write_COM_DATA(0x3A,0x0302); + LCD_Write_COM_DATA(0x3B,0x0302); + LCD_Write_COM_DATA(0x23,0x0000); + LCD_Write_COM_DATA(0x24,0x0000); + LCD_Write_COM_DATA(0x25,0x8000); + LCD_Write_COM_DATA(0x4f,0x0000); + LCD_Write_COM_DATA(0x4e,0x0000); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/ssd1289/setxy.h b/libraries/UTFT/tft_drivers/ssd1289/setxy.h new file mode 100644 index 0000000..28b0efd --- /dev/null +++ b/libraries/UTFT/tft_drivers/ssd1289/setxy.h @@ -0,0 +1,10 @@ +case SSD1289: +case SSD1289_8: +case SSD1289LATCHED: + LCD_Write_COM_DATA(0x44,(x2<<8)+x1); + LCD_Write_COM_DATA(0x45,y1); + LCD_Write_COM_DATA(0x46,y2); + LCD_Write_COM_DATA(0x4e,x1); + LCD_Write_COM_DATA(0x4f,y1); + LCD_Write_COM(0x22); + break; diff --git a/libraries/UTFT/tft_drivers/ssd1963/480/initlcd.h b/libraries/UTFT/tft_drivers/ssd1963/480/initlcd.h new file mode 100644 index 0000000..a051795 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ssd1963/480/initlcd.h @@ -0,0 +1,78 @@ +case SSD1963_480: + LCD_Write_COM(0xE2); //PLL multiplier, set PLL clock to 120M + LCD_Write_DATA(0x23); //N=0x36 for 6.5M, 0x23 for 10M crystal + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x54); + LCD_Write_COM(0xE0); // PLL enable + LCD_Write_DATA(0x01); + delay(10); + LCD_Write_COM(0xE0); + LCD_Write_DATA(0x03); + delay(10); + LCD_Write_COM(0x01); // software reset + delay(100); + LCD_Write_COM(0xE6); //PLL setting for PCLK, depends on resolution + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x1F); + LCD_Write_DATA(0xFF); + + LCD_Write_COM(0xB0); //LCD SPECIFICATION + LCD_Write_DATA(0x20); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); //Set HDP 479 + LCD_Write_DATA(0xDF); + LCD_Write_DATA(0x01); //Set VDP 271 + LCD_Write_DATA(0x0F); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xB4); //HSYNC + LCD_Write_DATA(0x02); //Set HT 531 + LCD_Write_DATA(0x13); + LCD_Write_DATA(0x00); //Set HPS 8 + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x2B); //Set HPW 43 + LCD_Write_DATA(0x00); //Set LPS 2 + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xB6); //VSYNC + LCD_Write_DATA(0x01); //Set VT 288 + LCD_Write_DATA(0x20); + LCD_Write_DATA(0x00); //Set VPS 4 + LCD_Write_DATA(0x04); + LCD_Write_DATA(0x0c); //Set VPW 12 + LCD_Write_DATA(0x00); //Set FPS 2 + LCD_Write_DATA(0x02); + + LCD_Write_COM(0xBA); + LCD_Write_DATA(0x0F); //GPIO[3:0] out 1 + + LCD_Write_COM(0xB8); + LCD_Write_DATA(0x07); //GPIO3=input, GPIO[2:0]=output + LCD_Write_DATA(0x01); //GPIO0 normal + + LCD_Write_COM(0x36); //rotation + LCD_Write_DATA(0x22); + + LCD_Write_COM(0xF0); //pixel data interface + LCD_Write_DATA(0x03); + + + delay(1); + + setXY(0, 0, 479, 271); + LCD_Write_COM(0x29); //display on + + LCD_Write_COM(0xBE); //set PWM for B/L + LCD_Write_DATA(0x06); + LCD_Write_DATA(0xf0); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0xf0); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xd0); + LCD_Write_DATA(0x0d); + + LCD_Write_COM(0x2C); + break; diff --git a/libraries/UTFT/tft_drivers/ssd1963/480/setxy.h b/libraries/UTFT/tft_drivers/ssd1963/480/setxy.h new file mode 100644 index 0000000..e2b9297 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ssd1963/480/setxy.h @@ -0,0 +1,15 @@ +case SSD1963_480: + swap(word, x1, y1); + swap(word, x2, y2); + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/ssd1963/800/initlcd.h b/libraries/UTFT/tft_drivers/ssd1963/800/initlcd.h new file mode 100644 index 0000000..722286d --- /dev/null +++ b/libraries/UTFT/tft_drivers/ssd1963/800/initlcd.h @@ -0,0 +1,78 @@ +case SSD1963_800: + LCD_Write_COM(0xE2); //PLL multiplier, set PLL clock to 120M + LCD_Write_DATA(0x1E); //N=0x36 for 6.5M, 0x23 for 10M crystal + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x54); + LCD_Write_COM(0xE0); // PLL enable + LCD_Write_DATA(0x01); + delay(10); + LCD_Write_COM(0xE0); + LCD_Write_DATA(0x03); + delay(10); + LCD_Write_COM(0x01); // software reset + delay(100); + LCD_Write_COM(0xE6); //PLL setting for PCLK, depends on resolution + LCD_Write_DATA(0x03); + LCD_Write_DATA(0xFF); + LCD_Write_DATA(0xFF); + + LCD_Write_COM(0xB0); //LCD SPECIFICATION + LCD_Write_DATA(0x24); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x03); //Set HDP 799 + LCD_Write_DATA(0x1F); + LCD_Write_DATA(0x01); //Set VDP 479 + LCD_Write_DATA(0xDF); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xB4); //HSYNC + LCD_Write_DATA(0x03); //Set HT 928 + LCD_Write_DATA(0xA0); + LCD_Write_DATA(0x00); //Set HPS 46 + LCD_Write_DATA(0x2E); + LCD_Write_DATA(0x30); //Set HPW 48 + LCD_Write_DATA(0x00); //Set LPS 15 + LCD_Write_DATA(0x0F); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xB6); //VSYNC + LCD_Write_DATA(0x02); //Set VT 525 + LCD_Write_DATA(0x0D); + LCD_Write_DATA(0x00); //Set VPS 16 + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x10); //Set VPW 16 + LCD_Write_DATA(0x00); //Set FPS 8 + LCD_Write_DATA(0x08); + + LCD_Write_COM(0xBA); + LCD_Write_DATA(0x0F); //GPIO[3:0] out 1 + + LCD_Write_COM(0xB8); + LCD_Write_DATA(0x07); //GPIO3=input, GPIO[2:0]=output + LCD_Write_DATA(0x01); //GPIO0 normal + + LCD_Write_COM(0x36); //rotation + LCD_Write_DATA(0x22); + + LCD_Write_COM(0xF0); //pixel data interface + LCD_Write_DATA(0x03); + + + delay(1); + + setXY(0, 0, 799, 479); + LCD_Write_COM(0x29); //display on + + LCD_Write_COM(0xBE); //set PWM for B/L + LCD_Write_DATA(0x06); + LCD_Write_DATA(0xf0); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0xf0); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xd0); + LCD_Write_DATA(0x0d); + + LCD_Write_COM(0x2C); + break; diff --git a/libraries/UTFT/tft_drivers/ssd1963/800/setxy.h b/libraries/UTFT/tft_drivers/ssd1963/800/setxy.h new file mode 100644 index 0000000..1b2fed7 --- /dev/null +++ b/libraries/UTFT/tft_drivers/ssd1963/800/setxy.h @@ -0,0 +1,15 @@ +case SSD1963_800: + swap(word, x1, y1); + swap(word, x2, y2); + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/ssd1963/800alt/initlcd.h b/libraries/UTFT/tft_drivers/ssd1963/800alt/initlcd.h new file mode 100644 index 0000000..a0cbecc --- /dev/null +++ b/libraries/UTFT/tft_drivers/ssd1963/800alt/initlcd.h @@ -0,0 +1,78 @@ +case SSD1963_800ALT: + LCD_Write_COM(0xE2); //PLL multiplier, set PLL clock to 120M + LCD_Write_DATA(0x23); //N=0x36 for 6.5M, 0x23 for 10M crystal + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x04); + LCD_Write_COM(0xE0); // PLL enable + LCD_Write_DATA(0x01); + delay(10); + LCD_Write_COM(0xE0); + LCD_Write_DATA(0x03); + delay(10); + LCD_Write_COM(0x01); // software reset + delay(100); + LCD_Write_COM(0xE6); //PLL setting for PCLK, depends on resolution + LCD_Write_DATA(0x04); + LCD_Write_DATA(0x93); + LCD_Write_DATA(0xE0); + + LCD_Write_COM(0xB0); //LCD SPECIFICATION + LCD_Write_DATA(0x00); // 0x24 + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x03); //Set HDP 799 + LCD_Write_DATA(0x1F); + LCD_Write_DATA(0x01); //Set VDP 479 + LCD_Write_DATA(0xDF); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xB4); //HSYNC + LCD_Write_DATA(0x03); //Set HT 928 + LCD_Write_DATA(0xA0); + LCD_Write_DATA(0x00); //Set HPS 46 + LCD_Write_DATA(0x2E); + LCD_Write_DATA(0x30); //Set HPW 48 + LCD_Write_DATA(0x00); //Set LPS 15 + LCD_Write_DATA(0x0F); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xB6); //VSYNC + LCD_Write_DATA(0x02); //Set VT 525 + LCD_Write_DATA(0x0D); + LCD_Write_DATA(0x00); //Set VPS 16 + LCD_Write_DATA(0x10); + LCD_Write_DATA(0x10); //Set VPW 16 + LCD_Write_DATA(0x00); //Set FPS 8 + LCD_Write_DATA(0x08); + + LCD_Write_COM(0xBA); + LCD_Write_DATA(0x05); //GPIO[3:0] out 1 + + LCD_Write_COM(0xB8); + LCD_Write_DATA(0x07); //GPIO3=input, GPIO[2:0]=output + LCD_Write_DATA(0x01); //GPIO0 normal + + LCD_Write_COM(0x36); //rotation + LCD_Write_DATA(0x22); // -- Set to 0x21 to rotate 180 degrees + + LCD_Write_COM(0xF0); //pixel data interface + LCD_Write_DATA(0x03); + + + delay(10); + + setXY(0, 0, 799, 479); + LCD_Write_COM(0x29); //display on + + LCD_Write_COM(0xBE); //set PWM for B/L + LCD_Write_DATA(0x06); + LCD_Write_DATA(0xF0); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0xF0); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + + LCD_Write_COM(0xD0); + LCD_Write_DATA(0x0D); + + LCD_Write_COM(0x2C); + break; diff --git a/libraries/UTFT/tft_drivers/ssd1963/800alt/setxy.h b/libraries/UTFT/tft_drivers/ssd1963/800alt/setxy.h new file mode 100644 index 0000000..7e6a81d --- /dev/null +++ b/libraries/UTFT/tft_drivers/ssd1963/800alt/setxy.h @@ -0,0 +1,15 @@ +case SSD1963_800ALT: + swap(word, x1, y1); + swap(word, x2, y2); + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/st7735/initlcd.h b/libraries/UTFT/tft_drivers/st7735/initlcd.h new file mode 100644 index 0000000..63439c7 --- /dev/null +++ b/libraries/UTFT/tft_drivers/st7735/initlcd.h @@ -0,0 +1,104 @@ +case ST7735: + LCD_Write_COM(0x11);//Sleep exit + delay(12); + + //ST7735R Frame Rate + LCD_Write_COM(0xB1); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x2C); + LCD_Write_DATA(0x2D); + LCD_Write_COM(0xB2); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x2C); + LCD_Write_DATA(0x2D); + LCD_Write_COM(0xB3); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x2C); + LCD_Write_DATA(0x2D); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x2C); + LCD_Write_DATA(0x2D); + + LCD_Write_COM(0xB4); //Column inversion + LCD_Write_DATA(0x07); + + //ST7735R Power Sequence + LCD_Write_COM(0xC0); + LCD_Write_DATA(0xA2); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x84); + LCD_Write_COM(0xC1); + LCD_Write_DATA(0xC5); + LCD_Write_COM(0xC2); + LCD_Write_DATA(0x0A); + LCD_Write_DATA(0x00); + LCD_Write_COM(0xC3); + LCD_Write_DATA(0x8A); + LCD_Write_DATA(0x2A); + LCD_Write_COM(0xC4); + LCD_Write_DATA(0x8A); + LCD_Write_DATA(0xEE); + + LCD_Write_COM(0xC5); //VCOM + LCD_Write_DATA(0x0E); + + LCD_Write_COM(0x36); //MX, MY, RGB mode + LCD_Write_DATA(0xC8); + + //ST7735R Gamma Sequence + LCD_Write_COM(0xe0); + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x1a); + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x18); + LCD_Write_DATA(0x2f); + LCD_Write_DATA(0x28); + LCD_Write_DATA(0x20); + LCD_Write_DATA(0x22); + LCD_Write_DATA(0x1f); + LCD_Write_DATA(0x1b); + LCD_Write_DATA(0x23); + LCD_Write_DATA(0x37); + LCD_Write_DATA(0x00); + + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x02); + LCD_Write_DATA(0x10); + LCD_Write_COM(0xe1); + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x1b); + LCD_Write_DATA(0x0f); + LCD_Write_DATA(0x17); + LCD_Write_DATA(0x33); + LCD_Write_DATA(0x2c); + LCD_Write_DATA(0x29); + LCD_Write_DATA(0x2e); + LCD_Write_DATA(0x30); + LCD_Write_DATA(0x30); + LCD_Write_DATA(0x39); + LCD_Write_DATA(0x3f); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x10); + + LCD_Write_COM(0x2a); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x7f); + LCD_Write_COM(0x2b); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x9f); + + LCD_Write_COM(0xF0); //Enable test command + LCD_Write_DATA(0x01); + LCD_Write_COM(0xF6); //Disable ram power save mode + LCD_Write_DATA(0x00); + + LCD_Write_COM(0x3A); //65k mode + LCD_Write_DATA(0x05); + LCD_Write_COM(0x29);//Display on + break; diff --git a/libraries/UTFT/tft_drivers/st7735/setxy.h b/libraries/UTFT/tft_drivers/st7735/setxy.h new file mode 100644 index 0000000..ff38181 --- /dev/null +++ b/libraries/UTFT/tft_drivers/st7735/setxy.h @@ -0,0 +1,13 @@ +case ST7735: + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/tft_drivers/st7735s/initlcd.h b/libraries/UTFT/tft_drivers/st7735s/initlcd.h new file mode 100644 index 0000000..d28296d --- /dev/null +++ b/libraries/UTFT/tft_drivers/st7735s/initlcd.h @@ -0,0 +1,98 @@ +case ST7735S: + LCD_Write_COM(0x11);//Sleep exit + delay(120); + + //ST7735R Frame Rate + LCD_Write_COM(0xB1); + LCD_Write_DATA(0x05); + LCD_Write_DATA(0x3C); + LCD_Write_DATA(0x3C); + LCD_Write_COM(0xB2); + LCD_Write_DATA(0x05); + LCD_Write_DATA(0x3C); + LCD_Write_DATA(0x3C); + LCD_Write_COM(0xB3); + LCD_Write_DATA(0x05); + LCD_Write_DATA(0x3C); + LCD_Write_DATA(0x3C); + LCD_Write_DATA(0x05); + LCD_Write_DATA(0x3C); + LCD_Write_DATA(0x3C); + + LCD_Write_COM(0xB4); //Column inversion + LCD_Write_DATA(0x03); + + //ST7735R Power Sequence + LCD_Write_COM(0xC0); + LCD_Write_DATA(0x28); + LCD_Write_DATA(0x08); + LCD_Write_DATA(0x04); + LCD_Write_COM(0xC1); + LCD_Write_DATA(0xC0); + LCD_Write_COM(0xC2); + LCD_Write_DATA(0x0D); + LCD_Write_DATA(0x00); + LCD_Write_COM(0xC3); + LCD_Write_DATA(0x8D); + LCD_Write_DATA(0x2A); + LCD_Write_COM(0xC4); + LCD_Write_DATA(0x8D); + LCD_Write_DATA(0xEE); + + LCD_Write_COM(0xC5); //VCOM + LCD_Write_DATA(0x1A); + + LCD_Write_COM(0x36); //MX, MY, RGB mode + LCD_Write_DATA(0xC0); + + //ST7735R Gamma Sequence + LCD_Write_COM(0xE0); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x22); + LCD_Write_DATA(0x07); + LCD_Write_DATA(0x0A); + LCD_Write_DATA(0x2E); + LCD_Write_DATA(0x30); + LCD_Write_DATA(0x25); + LCD_Write_DATA(0x2A); + LCD_Write_DATA(0x28); + LCD_Write_DATA(0x26); + LCD_Write_DATA(0x2E); + LCD_Write_DATA(0x3A); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x03); + LCD_Write_DATA(0x13); + LCD_Write_COM(0xE1); + LCD_Write_DATA(0x04); + LCD_Write_DATA(0x16); + LCD_Write_DATA(0x06); + LCD_Write_DATA(0x0D); + LCD_Write_DATA(0x2D); + LCD_Write_DATA(0x26); + LCD_Write_DATA(0x23); + LCD_Write_DATA(0x27); + LCD_Write_DATA(0x27); + LCD_Write_DATA(0x25); + LCD_Write_DATA(0x2D); + LCD_Write_DATA(0x3B); + LCD_Write_DATA(0x00); + LCD_Write_DATA(0x01); + LCD_Write_DATA(0x04); + LCD_Write_DATA(0x13); + + //LCD_Write_COM(0x2A); + //LCD_Write_DATA(0x00); + //LCD_Write_DATA(0x00); + //LCD_Write_DATA(0x00); + //LCD_Write_DATA(0x7F); + //LCD_Write_COM(0x2B); + //LCD_Write_DATA(0x00); + //LCD_Write_DATA(0x00); + //LCD_Write_DATA(0x00); + //LCD_Write_DATA(0x9F); + + LCD_Write_COM(0x3A); //65k mode + LCD_Write_DATA(0x05); + LCD_Write_COM(0x29);//Display on + break; diff --git a/libraries/UTFT/tft_drivers/st7735s/setxy.h b/libraries/UTFT/tft_drivers/st7735s/setxy.h new file mode 100644 index 0000000..b7a1c64 --- /dev/null +++ b/libraries/UTFT/tft_drivers/st7735s/setxy.h @@ -0,0 +1,13 @@ +case ST7735S: + LCD_Write_COM(0x2a); + LCD_Write_DATA(x1>>8); + LCD_Write_DATA(x1); + LCD_Write_DATA(x2>>8); + LCD_Write_DATA(x2); + LCD_Write_COM(0x2b); + LCD_Write_DATA(y1>>8); + LCD_Write_DATA(y1); + LCD_Write_DATA(y2>>8); + LCD_Write_DATA(y2); + LCD_Write_COM(0x2c); + break; diff --git a/libraries/UTFT/version.txt b/libraries/UTFT/version.txt new file mode 100644 index 0000000..cbef4b4 --- /dev/null +++ b/libraries/UTFT/version.txt @@ -0,0 +1,65 @@ +Version: + 1.0 12 Feb 2012 - initial release + 1.1 09 Apr 2012 - added support for more display modules + added support for String objects to print() + fixed a bug in printNumF() + added optional minimum length and filler character to pintNumI() and printNumF() + added option to disable unneeded controller chip code to minimize memory use + 1.2 14 Apr 2012 - added support for more display modules + added getDisplayXSize() and getDisplayYSize() + 1.3 03 Jun 2012 - added support for more display modules + fixed a bug in the ITDB02-25H init + 2.0 21 Jan 2013 - added support for Arduino Due and Arduino Leonardo + added support for the "AquaLEDSource All in One Super Screw Shield" on chipKit Max32 + added support for more display modules + fixed a bug in printNumF() + optimized drawLine() + optimized 16bit data transfer + optimized some 8bit data transfer + added option to use pre-defined RGB565 values with setColor(), setBackColor() and fillScr() + added functions getColor(), getBackColor(), getFont(), getFontXsize() and getFontYsize() + added 16 VGA standard colors as pre-defined color literal + rearranged the manual to keep related functions grouped together + 2.01 05 Feb 2013 - fixed a bug that only shows up on linux-based systems + 2.1 29 Mar 2013 - added support for Electronics Lees 3.2" display shield Rev B on Arduinos + fixed a bug that only shows up on some linux-based systems + added built-in support for using display shields designed for Arduino Uno on Arduino Mega + changed license to CC BY-NC-SA 3.0 + 2.2 01 May 2013 - added support for ElecFreaks TFT01-5.0 and TFT01-7.0 + added support for chipKit uC32 + restructured files slightly + 2.3 08 May 2013 - added support for transparent text background + fixed a bug in printNumF() + 2.4 11 May 2013 - added basic support for multiple display modules from Coldtears + 2.41 12 May 2013 - made some changes to facilitate the use of add-on libraries + 2.42 17 Jun 2013 - fixed a small bug in drawBitmap() + fixed a bug in the 16-bit Arduino Due driver + 2.5 25 Jul 2013 - fixed a bug where some lines were 1 pixel too short + fixed a bug in the init code for 7" modules that were only visible in portrait mode + added basic support for more display modules from Coldtears + updated ImageConverter565 to v2.0 + added ImgConv v1.0 - Command line image converter + added manual for image converters + fixed some omissions in memorysaver.h + 2.51 02 Aug 2013 - updated ImageConverter565 to v2.1 + fixed a typo in the tools manual name + 2.6 07 Sep 2013 - added support for 4 more ElecFreaks display modules + added support for Watterott electronics MI0283QT-9A display module + fixed a bug in the "Arduino (ARM)/UTFT_Demo_480x272" example + 2.7 03 Nov 2013 - added support Bobuino (ATmega1284P) + optimized Arduino Due driver slightly + 2.71 06 Dec 2013 - added support for ElecFreaks TFT01-4.3 + added support for Coldtears 3.5" and 4.0" modules + minor changes to the library constructor + removed unused variables + 2.72 12 Dec 2013 - added support for ElecFreaks TFT-2.4 v1.2 + 2.73 16 Feb 2014 - added support for Teensy 3.x Boards + added support for three display modules from ElecHouse + minor bugfixes + added three new functions for CPLD-based displays + 2.74 20 Feb 2014 - fixed a bug in the serial driver + 2.75 28 Mar 2014 - added support for Coldtears 5" and 7" CPLD modules + 2.76 04 May 2014 - added support for several display modules from DisplayModule + 2.77 24 May 2014 - fixed a bug with the ElecHouse 7" display and shield combination + 2.78 08 Sep 2014 - fixed compatibility-issues with Arduino 1.5.7 + diff --git a/libraries/UTFT_Buttons/License - CC BY-NC-SA 3.0 - Legal.pdf b/libraries/UTFT_Buttons/License - CC BY-NC-SA 3.0 - Legal.pdf new file mode 100644 index 0000000..ed326c9 Binary files /dev/null and b/libraries/UTFT_Buttons/License - CC BY-NC-SA 3.0 - Legal.pdf differ diff --git a/libraries/UTFT_Buttons/License - CC BY-NC-SA 3.0 - Summary.pdf b/libraries/UTFT_Buttons/License - CC BY-NC-SA 3.0 - Summary.pdf new file mode 100644 index 0000000..b35e677 Binary files /dev/null and b/libraries/UTFT_Buttons/License - CC BY-NC-SA 3.0 - Summary.pdf differ diff --git a/libraries/UTFT_Buttons/UTFT_Buttons.cpp b/libraries/UTFT_Buttons/UTFT_Buttons.cpp new file mode 100644 index 0000000..33143f2 --- /dev/null +++ b/libraries/UTFT_Buttons/UTFT_Buttons.cpp @@ -0,0 +1,269 @@ +/* + UTFT_Buttons.cpp - Add-on Library for UTFT: Buttons + Copyright (C)2013 Henning Karlsen. All right reserved + + This library adds simple but easy to use buttons to extend the use + of the UTFT and UTouch libraries. + + You can always find the latest version of the library at + http://electronics.henningkarlsen.com/ + + If you make any modifications or improvements to the code, I would + appreciate that you share the code with me so that I might include + it in the next release. I can be contacted through + http://electronics.henningkarlsen.com/contact.php. + + This library is free software; you can redistribute it and/or + modify it under the terms of the CC BY-NC-SA 3.0 license. + Please see the included documents for further information. +*/ + +#include "UTFT_Buttons.h" +#include +#include + +UTFT_Buttons::UTFT_Buttons(UTFT *ptrUTFT, UTouch *ptrUTouch) +{ + _UTFT = ptrUTFT; + _UTouch = ptrUTouch; + deleteAllButtons(); + _color_text = VGA_WHITE; + _color_text_inactive = VGA_GRAY; + _color_background = VGA_BLUE; + _color_border = VGA_WHITE; + _color_hilite = VGA_RED; + _font_text = NULL; + _font_symbol = NULL; +} + +int UTFT_Buttons::addButton(uint16_t x, uint16_t y, uint16_t width, uint16_t height, char *label, uint16_t flags) +{ + int btcnt = 0; + + while (((buttons[btcnt].flags & BUTTON_UNUSED) == 0) and (btcntgetFont();; + word _current_color = _UTFT->getColor(); + word _current_back = _UTFT->getBackColor(); + + if (buttons[buttonID].flags & BUTTON_BITMAP) + { + _UTFT->drawBitmap(buttons[buttonID].pos_x, buttons[buttonID].pos_y, buttons[buttonID].width, buttons[buttonID].height, buttons[buttonID].data); + if (!(buttons[buttonID].flags & BUTTON_NO_BORDER)) + { + if ((buttons[buttonID].flags & BUTTON_DISABLED)) + _UTFT->setColor(_color_text_inactive); + else + _UTFT->setColor(_color_border); + _UTFT->drawRect(buttons[buttonID].pos_x, buttons[buttonID].pos_y, buttons[buttonID].pos_x+buttons[buttonID].width, buttons[buttonID].pos_y+buttons[buttonID].height); + } + } + else + { + _UTFT->setColor(_color_background); + _UTFT->fillRoundRect(buttons[buttonID].pos_x, buttons[buttonID].pos_y, buttons[buttonID].pos_x+buttons[buttonID].width, buttons[buttonID].pos_y+buttons[buttonID].height); + _UTFT->setColor(_color_border); + _UTFT->drawRoundRect(buttons[buttonID].pos_x, buttons[buttonID].pos_y, buttons[buttonID].pos_x+buttons[buttonID].width, buttons[buttonID].pos_y+buttons[buttonID].height); + if (buttons[buttonID].flags & BUTTON_DISABLED) + _UTFT->setColor(_color_text_inactive); + else + _UTFT->setColor(_color_text); + if (buttons[buttonID].flags & BUTTON_SYMBOL) + { + _UTFT->setFont(_font_symbol); + text_x = (buttons[buttonID].width/2) - (_UTFT->getFontXsize()/2) + buttons[buttonID].pos_x; + text_y = (buttons[buttonID].height/2) - (_UTFT->getFontYsize()/2) + buttons[buttonID].pos_y; + } + else + { + _UTFT->setFont(_font_text); + text_x = ((buttons[buttonID].width/2) - ((strlen(buttons[buttonID].label) * _UTFT->getFontXsize())/2)) + buttons[buttonID].pos_x; + text_y = (buttons[buttonID].height/2) - (_UTFT->getFontYsize()/2) + buttons[buttonID].pos_y; + } + _UTFT->setBackColor(_color_background); + _UTFT->print(buttons[buttonID].label, text_x, text_y); + if ((buttons[buttonID].flags & BUTTON_SYMBOL) and (buttons[buttonID].flags & BUTTON_SYMBOL_REP_3X)) + { + _UTFT->print(buttons[buttonID].label, text_x-_UTFT->getFontXsize(), text_y); + _UTFT->print(buttons[buttonID].label, text_x+_UTFT->getFontXsize(), text_y); + } + } + _UTFT->setFont(_font_current); + _UTFT->setColor(_current_color); + _UTFT->setBackColor(_current_back); +} + +void UTFT_Buttons::enableButton(int buttonID, boolean redraw) +{ + if (!(buttons[buttonID].flags & BUTTON_UNUSED)) + { + buttons[buttonID].flags = buttons[buttonID].flags & ~BUTTON_DISABLED; + if (redraw) + drawButton(buttonID); + } +} + +void UTFT_Buttons::disableButton(int buttonID, boolean redraw) +{ + if (!(buttons[buttonID].flags & BUTTON_UNUSED)) + { + buttons[buttonID].flags = buttons[buttonID].flags | BUTTON_DISABLED; + if (redraw) + drawButton(buttonID); + } +} + +void UTFT_Buttons::relabelButton(int buttonID, char *label, boolean redraw) +{ + if (!(buttons[buttonID].flags & BUTTON_UNUSED)) + { + buttons[buttonID].label = label; + if (redraw) + drawButton(buttonID); + } +} + +boolean UTFT_Buttons::buttonEnabled(int buttonID) +{ + return !(buttons[buttonID].flags & BUTTON_DISABLED); +} + +void UTFT_Buttons::deleteButton(int buttonID) +{ + if (!(buttons[buttonID].flags & BUTTON_UNUSED)) + buttons[buttonID].flags = BUTTON_UNUSED; +} + +void UTFT_Buttons::deleteAllButtons() +{ + for (int i=0;idataAvailable() == true) + { + _UTouch->read(); + int result = -1; + int touch_x = _UTouch->getX(); + int touch_y = _UTouch->getY(); + word _current_color = _UTFT->getColor(); + + for (int i=0;i= buttons[i].pos_x) and (touch_x <= (buttons[i].pos_x + buttons[i].width)) and (touch_y >= buttons[i].pos_y) and (touch_y <= (buttons[i].pos_y + buttons[i].height))) + result = i; + } + } + if (result != -1) + { + if (!(buttons[result].flags & BUTTON_NO_BORDER)) + { + _UTFT->setColor(_color_hilite); + if (buttons[result].flags & BUTTON_BITMAP) + _UTFT->drawRect(buttons[result].pos_x, buttons[result].pos_y, buttons[result].pos_x+buttons[result].width, buttons[result].pos_y+buttons[result].height); + else + _UTFT->drawRoundRect(buttons[result].pos_x, buttons[result].pos_y, buttons[result].pos_x+buttons[result].width, buttons[result].pos_y+buttons[result].height); + } + } + + while (_UTouch->dataAvailable() == true) {}; + + if (result != -1) + { + if (!(buttons[result].flags & BUTTON_NO_BORDER)) + { + _UTFT->setColor(_color_border); + if (buttons[result].flags & BUTTON_BITMAP) + _UTFT->drawRect(buttons[result].pos_x, buttons[result].pos_y, buttons[result].pos_x+buttons[result].width, buttons[result].pos_y+buttons[result].height); + else + _UTFT->drawRoundRect(buttons[result].pos_x, buttons[result].pos_y, buttons[result].pos_x+buttons[result].width, buttons[result].pos_y+buttons[result].height); + } + } + + _UTFT->setColor(_current_color); + return result; + } + else + return -1; +} + +void UTFT_Buttons::setTextFont(uint8_t* font) +{ + _font_text = font; +} + +void UTFT_Buttons::setSymbolFont(uint8_t* font) +{ + _font_symbol = font; +} + +void UTFT_Buttons::setButtonColors(word atxt, word iatxt, word brd, word brdhi, word back) +{ + _color_text = atxt; + _color_text_inactive = iatxt; + _color_background = back; + _color_border = brd; + _color_hilite = brdhi; +} diff --git a/libraries/UTFT_Buttons/UTFT_Buttons.h b/libraries/UTFT_Buttons/UTFT_Buttons.h new file mode 100644 index 0000000..678c847 --- /dev/null +++ b/libraries/UTFT_Buttons/UTFT_Buttons.h @@ -0,0 +1,84 @@ +/* + UTFT_Buttons.h - Add-on Library for UTFT: Buttons + Copyright (C)2013 Henning Karlsen. All right reserved + + This library adds simple but easy to use buttons to extend the use + of the UTFT and UTouch libraries. + + You can always find the latest version of the library at + http://electronics.henningkarlsen.com/ + + If you make any modifications or improvements to the code, I would + appreciate that you share the code with me so that I might include + it in the next release. I can be contacted through + http://electronics.henningkarlsen.com/contact.php. + + This library is free software; you can redistribute it and/or + modify it under the terms of the CC BY-NC-SA 3.0 license. + Please see the included documents for further information. +*/ + +#ifndef UTFT_Buttons_h +#define UTFT_Buttons_h + +#if defined(__AVR__) + #include "Arduino.h" +#elif defined(__PIC32MX__) + #include "WProgram.h" +#elif defined(__arm__) + #include "Arduino.h" +#endif + +#include +#include +#if ((!defined(UTFT_VERSION)) || (UTFT_VERSION<241)) + #error : You will need UTFT v2.41 or higher to use this add-on library... +#endif + +#define MAX_BUTTONS 20 // Maximum number of buttons available at one time + +// Define presets for button status +#define BUTTON_DISABLED 0x0001 +#define BUTTON_SYMBOL 0x0002 +#define BUTTON_SYMBOL_REP_3X 0x0004 +#define BUTTON_BITMAP 0x0008 +#define BUTTON_NO_BORDER 0x0010 +#define BUTTON_UNUSED 0x8000 + +typedef struct +{ + uint16_t pos_x, pos_y, width, height; + uint16_t flags; + char *label; + bitmapdatatype data; +} button_type; + +class UTFT_Buttons +{ + public: + UTFT_Buttons(UTFT *ptrUTFT, UTouch *ptrUTouch); + + int addButton(uint16_t x, uint16_t y, uint16_t width, uint16_t height, char *label, uint16_t flags=0); + int addButton(uint16_t x, uint16_t y, uint16_t width, uint16_t height, bitmapdatatype data, uint16_t flags=0); + void drawButtons(); + void drawButton(int buttonID); + void enableButton(int buttonID, boolean redraw=false); + void disableButton(int buttonID, boolean redraw=false); + void relabelButton(int buttonID, char *label, boolean redraw=false); + boolean buttonEnabled(int buttonID); + void deleteButton(int buttonID); + void deleteAllButtons(); + int checkButtons(); + void setTextFont(uint8_t* font); + void setSymbolFont(uint8_t* font); + void setButtonColors(word atxt, word iatxt, word brd, word brdhi, word back); + + protected: + UTFT *_UTFT; + UTouch *_UTouch; + button_type buttons[MAX_BUTTONS]; + word _color_text, _color_text_inactive, _color_background, _color_border, _color_hilite; + uint8_t *_font_text, *_font_symbol; +}; + +#endif diff --git a/libraries/UTFT_Buttons/UTFT_Buttons.pdf b/libraries/UTFT_Buttons/UTFT_Buttons.pdf new file mode 100644 index 0000000..82d9d48 Binary files /dev/null and b/libraries/UTFT_Buttons/UTFT_Buttons.pdf differ diff --git a/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/UTFT_Buttons_Bitmap_Demo.ino b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/UTFT_Buttons_Bitmap_Demo.ino new file mode 100644 index 0000000..f778f0d --- /dev/null +++ b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/UTFT_Buttons_Bitmap_Demo.ino @@ -0,0 +1,130 @@ +// UTFT_Buttons_Bitmap_Demo (C)2013 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// A small demo to demonstrate the use of some of the +// functions of the UTFT_Buttons add-on library. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels, but should work on larger screens as +// well. +// +// This demo will not work on Arduino 2009/Uno/Leonardo +// due to the size of the images. +// +// This program requires both the UTFT and UTouch libraries +// in addition to the UTFT_Buttons add-on library. +// + +// This code block is only needed to support multiple +// MCU architectures in a single sketch. +#if defined(__AVR__) + #define imagedatatype unsigned int +#elif defined(__PIC32MX__) + #define imagedatatype unsigned short +#elif defined(__arm__) + #define imagedatatype unsigned short +#endif +// End of multi-architecture block + +#include +#include +#include + +// Declare which fonts we will be using +extern uint8_t BigFont[]; + +// Declare which bitmaps we will be using +extern imagedatatype cat[]; +extern imagedatatype dog[]; +extern imagedatatype bird[]; +extern imagedatatype monkey[]; + +// Set up UTFT... +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino 2009/Uno/Leonardo shield : NOT SUPPORTED DUE TO LACK OF MEMORY +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Standard chipKit Uno32/uC32 : ,34,35,36,37 +// Standard chipKit Max32 : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +// Set up UTouch... +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino 2009/Uno/Leonardo shield : NOT SUPPORTED DUE TO LACK OF MEMORY +// Standard Arduino Mega/Due shield : 6,5,4,3,2 +// CTE TFT LCD/SD Shield for Arduino Due : 6,5,4,3,2 +// Standard chipKit Uno32/uC32 : 20,21,22,23,24 +// Standard chipKit Max32 : 62,63,64,65,66 +// AquaLEDSource All in One Super Screw Shield : 62,63,64,65,66 +UTouch myTouch(6,5,4,3,2); + +// Finally we set up UTFT_Buttons :) +UTFT_Buttons myButtons(&myGLCD, &myTouch); + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont(BigFont); + + myTouch.InitTouch(); + myTouch.setPrecision(PREC_MEDIUM); + + myButtons.setTextFont(BigFont); +} + +void loop() +{ + int but1, but2, but3, but4, but5, pressed_button; + + but1 = myButtons.addButton( 10, 10, 80, 60, cat); + but2 = myButtons.addButton( 120, 10, 80, 60, dog); + but3 = myButtons.addButton( 10, 80, 80, 60, bird); + but4 = myButtons.addButton( 120, 80, 80, 60, monkey, BUTTON_NO_BORDER); + but5 = myButtons.addButton( 10, 150, 190, 30, "Disable Dog"); + myButtons.drawButtons(); + + myGLCD.print("You pressed:", 10, 200); + myGLCD.setColor(VGA_BLACK); + myGLCD.setBackColor(VGA_WHITE); + myGLCD.print("None ", 10, 220); + + while(1) + { + if (myTouch.dataAvailable() == true) + { + pressed_button = myButtons.checkButtons(); + + if (pressed_button==but5) + if (myButtons.buttonEnabled(but2)) + { + myButtons.disableButton(but2); + myButtons.relabelButton(but5, "Enable Dog", true); + myButtons.drawButton(but2); + } + else + { + myButtons.enableButton(but2); + myButtons.relabelButton(but5, "Disable Dog", true); + myButtons.drawButton(but2); + } + + if (pressed_button==but1) + myGLCD.print("Cat ", 10, 220); + if (pressed_button==but2) + myGLCD.print("Dog ", 10, 220); + if (pressed_button==but3) + myGLCD.print("Bird ", 10, 220); + if (pressed_button==but4) + myGLCD.print("Monkey ", 10, 220); + if (pressed_button==-1) + myGLCD.print("None ", 10, 220); + } + } +} + diff --git a/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/bird.c b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/bird.c new file mode 100644 index 0000000..ec21c18 --- /dev/null +++ b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/bird.c @@ -0,0 +1,314 @@ +// Generated by : ImageConverter 565 v1.2 +// Dimensions : 80x60 pixels +// Size : 9 600 Bytes + +#if defined(__AVR__) + #include +#elif defined(__PIC32MX__) + #define PROGMEM +#elif defined(__arm__) + #define PROGMEM +#endif + +const unsigned short bird[0x12C0] PROGMEM ={ +0x71A0, 0x6980, 0x7A20, 0xAB61, 0xDC82, 0xECC1, 0xF4C0, 0xECE1, 0xED03, 0xD4C5, 0x9BA5, 0x7AC2, 0x9320, 0xBC22, 0xC421, 0xBBE0, // 0x0010 (16) +0xB3E0, 0xA3A1, 0x7A81, 0x5180, 0x4140, 0x51A1, 0x6A82, 0x8303, 0x7281, 0x61A0, 0x5980, 0x5961, 0x5101, 0x5901, 0x5921, 0x6140, // 0x0020 (32) +0x69E0, 0x92E1, 0xAB42, 0xAB00, 0xAB60, 0xBBE3, 0xAB62, 0x8A40, 0x8A20, 0xB382, 0xE504, 0xF583, 0xF561, 0xD4A0, 0xABA0, 0xA361, // 0x0030 (48) +0xBBA1, 0xC381, 0xB320, 0xA320, 0x9B41, 0x8B01, 0x82E1, 0x7AA2, 0x7264, 0x6A43, 0x6A20, 0x82A0, 0xAB80, 0xBBE1, 0xAB61, 0x8A80, // 0x0040 (64) +0x71E0, 0x61C1, 0x6A01, 0x7262, 0x6A81, 0x62C1, 0x62E1, 0x6B02, 0x7322, 0x6B22, 0x62C1, 0x5260, 0x4A61, 0x4A62, 0x4A42, 0x4A02, // 0x0050 (80) +0x6160, 0x6160, 0x71E0, 0x9B21, 0xD441, 0xE4A1, 0xECC1, 0xE4C2, 0xE4E3, 0xD4C5, 0xAC06, 0x8B23, 0xA381, 0xC442, 0xC421, 0xBBA0, // 0x0060 (96) +0xBB80, 0xAB40, 0x7AA1, 0x51C0, 0x3140, 0x4161, 0x5A21, 0x7262, 0x7241, 0x61A0, 0x5940, 0x5120, 0x48E0, 0x48E0, 0x5120, 0x61A0, // 0x0070 (112) +0x7A60, 0x9B20, 0xAB41, 0x9AE0, 0xAB60, 0xC443, 0xB3E2, 0x8AC0, 0x92A0, 0xBBC2, 0xE503, 0xF563, 0xE541, 0xCC80, 0x9BA0, 0x9B60, // 0x0080 (128) +0xAB80, 0xB380, 0xAB40, 0x9B21, 0x8B01, 0x82E1, 0x7AC2, 0x7AC3, 0x7263, 0x7262, 0x7240, 0x8AA0, 0xB360, 0xCC22, 0xCC02, 0xB341, // 0x0090 (144) +0x9A40, 0x89A0, 0x79C0, 0x71E0, 0x6241, 0x62A1, 0x6301, 0x6321, 0x6B41, 0x6B41, 0x6301, 0x5281, 0x4241, 0x4A43, 0x4A24, 0x4A04, // 0x00A0 (160) +0x59A1, 0x59A1, 0x6A00, 0x9301, 0xC421, 0xD481, 0xD461, 0xD462, 0xD4A4, 0xCCC5, 0xB445, 0x9B62, 0xABA1, 0xC483, 0xC441, 0xA360, // 0x00B0 (176) +0x92C0, 0x9B01, 0x82E2, 0x5A20, 0x3980, 0x3961, 0x49C3, 0x5A05, 0x6A24, 0x61E2, 0x59A2, 0x5141, 0x4920, 0x4920, 0x5160, 0x69C0, // 0x00C0 (192) +0x8AA0, 0x9B20, 0x9B00, 0x92A0, 0xAB80, 0xC483, 0xB423, 0x9320, 0x8AE0, 0xB3C2, 0xDCE3, 0xE523, 0xD4E2, 0xB441, 0x8BA0, 0x8340, // 0x00D0 (208) +0xA380, 0xB3C1, 0xB3C2, 0x9B42, 0x82E1, 0x72A2, 0x7AC2, 0x7AE3, 0x7AA3, 0x7A82, 0x7A81, 0x8AA0, 0xAB20, 0xD401, 0xDC61, 0xD3C0, // 0x00E0 (224) +0xC280, 0xA9A0, 0x9140, 0x8180, 0x71E1, 0x6A81, 0x62E1, 0x6320, 0x6320, 0x6B41, 0x6302, 0x5261, 0x4201, 0x4A03, 0x4A25, 0x4A05, // 0x00F0 (240) +0x59E3, 0x59C2, 0x61E1, 0x82A1, 0xABC1, 0xBC01, 0xBBE1, 0xBBE3, 0xC424, 0xC465, 0xBC25, 0xA361, 0xA360, 0xBC44, 0xB422, 0x8B00, // 0x0100 (256) +0x7280, 0x7282, 0x7A83, 0x61E3, 0x5162, 0x4121, 0x4160, 0x51E2, 0x6221, 0x6A02, 0x61A2, 0x5122, 0x4902, 0x5101, 0x5980, 0x7200, // 0x0110 (272) +0x8A81, 0x9281, 0x8A60, 0x92A0, 0xB3C1, 0xC483, 0xAC03, 0x8B21, 0x8AE0, 0xABC3, 0xD4A4, 0xDCC4, 0xBC43, 0x9381, 0x7B21, 0x7B00, // 0x0120 (288) +0x9340, 0xABC1, 0xB3E2, 0x9B41, 0x7AA1, 0x6A82, 0x72A3, 0x7AC4, 0x7AA3, 0x7A82, 0x7A81, 0x8280, 0x9AC0, 0xBBA1, 0xDC42, 0xDBC1, // 0x0130 (304) +0xCA80, 0xB180, 0x9900, 0x9141, 0x89C2, 0x7A42, 0x6AA0, 0x62A0, 0x6300, 0x6301, 0x62C2, 0x5242, 0x49E2, 0x4A03, 0x5A24, 0x5A25, // 0x0140 (320) +0x59E1, 0x51A0, 0x59C0, 0x7280, 0x9B60, 0xA3A0, 0xAB81, 0xABA3, 0xABC4, 0xABE4, 0xAC04, 0xA382, 0x9321, 0x9BA3, 0x9362, 0x6A80, // 0x0150 (336) +0x51C0, 0x5A01, 0x6222, 0x59E3, 0x49A2, 0x3121, 0x3141, 0x5203, 0x6284, 0x6223, 0x51C2, 0x4181, 0x4981, 0x4960, 0x5940, 0x79A1, // 0x0160 (352) +0x81E1, 0x8A21, 0x8A40, 0x9AE0, 0xBC01, 0xBC42, 0x9BA2, 0x8B21, 0x9322, 0xB3E4, 0xD4A4, 0xCC83, 0xAC02, 0x8B41, 0x7AC2, 0x7281, // 0x0170 (368) +0x82C0, 0xA360, 0xB3C1, 0x9B40, 0x7AA0, 0x7261, 0x7A83, 0x82C4, 0x8283, 0x7A62, 0x7281, 0x7AA1, 0x8AA0, 0xA321, 0xC3A2, 0xCB82, // 0x0180 (384) +0xB261, 0xA160, 0xA100, 0xA121, 0x99A2, 0x9222, 0x8261, 0x6A60, 0x62A1, 0x5A82, 0x5242, 0x5202, 0x5202, 0x6202, 0x6A23, 0x7223, // 0x0190 (400) +0x69E0, 0x61E0, 0x6A40, 0x7AE0, 0x8B81, 0x9380, 0x9B61, 0xA383, 0x9B63, 0x9323, 0x9B63, 0x9363, 0x82E1, 0x7281, 0x6241, 0x51E0, // 0x01A0 (416) +0x41C0, 0x39A1, 0x4A03, 0x49E4, 0x39A3, 0x4289, 0x5452, 0x5538, 0x4D9C, 0x3CF9, 0x3C33, 0x3B4D, 0x4286, 0x41A1, 0x4140, 0x5960, // 0x01B0 (432) +0x71C0, 0x9261, 0x9AE0, 0xAB40, 0xBC01, 0xB401, 0x9361, 0x8302, 0x9364, 0xAC25, 0xC483, 0xC4A2, 0xBC62, 0xABC2, 0x9342, 0x82A1, // 0x01C0 (448) +0x8AA0, 0x9B20, 0xB381, 0x9B20, 0x7A80, 0x7260, 0x8282, 0x8AC4, 0x8A83, 0x8262, 0x7281, 0x7A81, 0x7A80, 0x92C0, 0xB322, 0xBB22, // 0x01D0 (464) +0xAA41, 0x9980, 0xA121, 0xA942, 0xA982, 0xA202, 0x8A41, 0x7241, 0x6A42, 0x5A22, 0x51E2, 0x5A02, 0x6A22, 0x7242, 0x8221, 0x8A22, // 0x01E0 (480) +0x8A80, 0x92C0, 0x8B60, 0x93C1, 0x8BA0, 0x8B60, 0x9B60, 0xABC3, 0x9383, 0x7AC1, 0x7AC2, 0x7AE3, 0x6A81, 0x5200, 0x49A1, 0x4182, // 0x01F0 (496) +0x3962, 0x39A3, 0x3182, 0x3248, 0x4C55, 0x3D1C, 0x149E, 0x047F, 0x0C5D, 0x043C, 0x04BE, 0x153E, 0x255D, 0x3497, 0x4B0B, 0x51C2, // 0x0200 (512) +0x82A2, 0xA342, 0xB361, 0xAB60, 0xABA1, 0x9B41, 0x7AC2, 0x72A3, 0x8B66, 0x9BE6, 0xA403, 0xB422, 0xC463, 0xC463, 0xB402, 0xA361, // 0x0210 (528) +0x9B20, 0xA361, 0xB382, 0x9AE0, 0x7A40, 0x7A20, 0x8280, 0x9AE2, 0x9AC2, 0x9281, 0x7A61, 0x7A81, 0x7A80, 0x8AA0, 0xAAE2, 0xBB02, // 0x0220 (544) +0xB281, 0xA9E0, 0xB182, 0xB162, 0xA982, 0xA203, 0x8A42, 0x7221, 0x6222, 0x5A22, 0x6202, 0x6A21, 0x7A61, 0x8A61, 0x9241, 0x9221, // 0x0230 (560) +0xB360, 0xB3E1, 0xB462, 0xA441, 0x83A0, 0x8360, 0xA3E1, 0xBC64, 0xA3E4, 0x7AE1, 0x6A61, 0x6A82, 0x5A41, 0x49E1, 0x4182, 0x4163, // 0x0240 (576) +0x4142, 0x3143, 0x322A, 0x43B5, 0x2C3B, 0x0BDC, 0x03BD, 0x039D, 0x03BC, 0x03DC, 0x0C3E, 0x043E, 0x0C7E, 0x253F, 0x359D, 0x5515, // 0x0250 (592) +0x8C29, 0xBC25, 0xB3A2, 0xA300, 0x9302, 0x7A62, 0x6A02, 0x6A64, 0x8368, 0x8BA7, 0x8343, 0x9341, 0xB3E2, 0xC443, 0xC462, 0xB401, // 0x0260 (608) +0xB3E2, 0xB3C3, 0xBBA3, 0xA2E1, 0x7A20, 0x7A20, 0x92A0, 0xAB42, 0xBB63, 0xB323, 0x8AC2, 0x7A61, 0x7A60, 0x8A80, 0xAAC1, 0xC302, // 0x0270 (624) +0xCB02, 0xC261, 0xC1C2, 0xB162, 0xA181, 0x99E2, 0x8242, 0x6A22, 0x5A22, 0x6243, 0x6A62, 0x7A61, 0x8A80, 0x9281, 0x9A42, 0x9A02, // 0x0280 (640) +0xCC40, 0xD4A1, 0xBC61, 0x9BC0, 0x8380, 0x8380, 0xAC41, 0xD505, 0xC4A3, 0x9361, 0x6261, 0x5A22, 0x6222, 0x59E2, 0x49C3, 0x41E3, // 0x0290 (656) +0x39A0, 0x2A06, 0x33F7, 0x139B, 0x02FA, 0x0B1B, 0x0ADB, 0x0AFB, 0x0AD9, 0x02D9, 0x0B9C, 0x03DC, 0x047C, 0x04BC, 0x04BF, 0x155F, // 0x02A0 (672) +0x2DDE, 0x5DD9, 0x7C8F, 0x7B25, 0x7261, 0x6A20, 0x51E2, 0x62A4, 0x8BA6, 0x9BE6, 0x93A4, 0x8B41, 0x9B80, 0xB3E0, 0xB402, 0xABE3, // 0x02B0 (688) +0xA3C4, 0xABE5, 0xA3A3, 0x92E0, 0x8220, 0x8A00, 0xAAE0, 0xCBE2, 0xD442, 0xB3A1, 0x8B00, 0x82E1, 0x92E1, 0xA301, 0xAB01, 0xC321, // 0x02C0 (704) +0xCB62, 0xCB02, 0xC262, 0xA9C1, 0x99C1, 0x91C2, 0x79E3, 0x69C2, 0x71E1, 0x7A41, 0x82A0, 0x8280, 0x8A80, 0x92A2, 0x9261, 0x8A00, // 0x02D0 (720) +0xDCA0, 0xD4A1, 0xAC00, 0x8B60, 0x7B20, 0x7B40, 0xAC21, 0xDD45, 0xD504, 0xA381, 0x7281, 0x6A63, 0x6A43, 0x6243, 0x6264, 0x4A04, // 0x02E0 (736) +0x4226, 0x53B1, 0x2359, 0x029A, 0x0258, 0x0216, 0x0215, 0x0215, 0x0277, 0x02B8, 0x031B, 0x0B9D, 0x039C, 0x041D, 0x0C5D, 0x045C, // 0x02F0 (752) +0x0CBD, 0x151D, 0x2DBC, 0x4DB8, 0x53AB, 0x4203, 0x4A24, 0x7B06, 0xAC07, 0xC465, 0xBC41, 0xB420, 0xA3E1, 0x9BC2, 0x9BC3, 0x9342, // 0x0300 (768) +0x9343, 0x9B43, 0x9321, 0x8AA0, 0x7A40, 0x8A60, 0xB360, 0xD442, 0xDC82, 0xBBC0, 0x9B20, 0x9B21, 0xB3A2, 0xBBA2, 0xBB61, 0xBB40, // 0x0310 (784) +0xCB80, 0xCB61, 0xC301, 0xB261, 0xA201, 0x89E2, 0x71E2, 0x69C2, 0x71E1, 0x8262, 0x82C0, 0x7AA0, 0x7A60, 0x8261, 0x8A21, 0x81C0, // 0x0320 (800) +0xE4C1, 0xCC61, 0x9360, 0x72C0, 0x6AC0, 0x7B00, 0xAC00, 0xDD24, 0xDD04, 0xB3E1, 0x8B01, 0x7AC3, 0x7AA4, 0x7AA4, 0x7284, 0x6286, // 0x0330 (816) +0x532C, 0x4BD4, 0x12B7, 0x0237, 0x0192, 0x0191, 0x01B2, 0x0214, 0x0296, 0x1319, 0x0B19, 0x0B7A, 0x0B7A, 0x0B9A, 0x039A, 0x03FB, // 0x0340 (832) +0x047D, 0x04FE, 0x04FD, 0x157D, 0x3E1E, 0x4D16, 0x5329, 0x9386, 0xCC66, 0xDCA4, 0xD4A1, 0xD4C0, 0xC460, 0xB3E0, 0xA3A1, 0x9301, // 0x0350 (848) +0x8AC2, 0x8AE2, 0x9301, 0x82A0, 0x7A60, 0x92E0, 0xC401, 0xDC81, 0xDC81, 0xBBA0, 0xA300, 0xAB40, 0xC422, 0xD422, 0xC381, 0xBB20, // 0x0360 (864) +0xC380, 0xCBA0, 0xCBA2, 0xBB42, 0xAAE1, 0x9A81, 0x8241, 0x7201, 0x7A21, 0x8282, 0x7AC1, 0x72A0, 0x7260, 0x7240, 0x7A21, 0x79E0, // 0x0370 (880) +0xE482, 0xBBE1, 0x7AC0, 0x5A40, 0x6260, 0x7AE0, 0xABC0, 0xD4C3, 0xDCE3, 0xBC01, 0x9B41, 0x8AE2, 0x8B04, 0x82E4, 0x7263, 0x6286, // 0x0380 (896) +0x5B6E, 0x2AD1, 0x0A33, 0x01D3, 0x0191, 0x012F, 0x0191, 0x01B2, 0x1235, 0x0235, 0x0298, 0x02F9, 0x033B, 0x03DD, 0x03FD, 0x041D, // 0x0390 (912) +0x0C7C, 0x049C, 0x049D, 0x04FE, 0x0D5E, 0x35BD, 0x5599, 0x7CD0, 0xC4C7, 0xDC61, 0xE4A1, 0xED01, 0xE4E0, 0xCC60, 0xABC0, 0x9320, // 0x03A0 (928) +0x8AC2, 0x9B03, 0xA363, 0xA321, 0x9AE0, 0xAB60, 0xD460, 0xE4C0, 0xD460, 0xB360, 0x9AC0, 0xA320, 0xC401, 0xCC01, 0xBB41, 0xB2E0, // 0x03B0 (944) +0xBB21, 0xC381, 0xC3C2, 0xC3C1, 0xBBC1, 0xB3A1, 0x9B41, 0x92E1, 0x82A1, 0x82A1, 0x72C1, 0x6AC1, 0x6AA0, 0x6A80, 0x7280, 0x7A60, // 0x03C0 (960) +0xD442, 0xAB40, 0x6A40, 0x51E0, 0x6240, 0x72A0, 0x9B40, 0xC422, 0xD4A3, 0xC422, 0x9B21, 0x8AE2, 0x82E3, 0x7AC4, 0x7AE4, 0x5A64, // 0x03D0 (976) +0x7C2E, 0x5BF0, 0x018A, 0x012B, 0x00C9, 0x00C8, 0x00E6, 0x1168, 0x0149, 0x01CE, 0x02B5, 0x0319, 0x039B, 0x0C5D, 0x0C7C, 0x043B, // 0x03E0 (992) +0x047C, 0x049D, 0x049D, 0x049D, 0x0CDD, 0x049B, 0x0C9A, 0x55DA, 0x8D6F, 0xB4C7, 0xDCA2, 0xF4C2, 0xECC2, 0xD482, 0xAC22, 0x9361, // 0x03F0 (1008) +0x92E2, 0xAB43, 0xC3E3, 0xCBE2, 0xC3A0, 0xCBE0, 0xE480, 0xECC0, 0xD460, 0xB380, 0x92C0, 0x9AE0, 0xB380, 0xC381, 0xB300, 0xB2C1, // 0x0400 (1024) +0xBAC2, 0xC343, 0xC3A2, 0xBBC1, 0xC401, 0xCC41, 0xBC21, 0xABC1, 0x9B40, 0x8300, 0x7300, 0x6B00, 0x6AE0, 0x6AA0, 0x6AC0, 0x72E1, // 0x0410 (1040) +0xCC02, 0xA300, 0x7220, 0x61E0, 0x6240, 0x6A40, 0x8280, 0xAB81, 0xC423, 0xAB60, 0x92E1, 0x8AA2, 0x9345, 0x7AE5, 0x6285, 0x8C0D, // 0x0420 (1056) +0xAD75, 0x530D, 0x0083, 0x0042, 0x1083, 0x1082, 0x18E2, 0x0061, 0x00E6, 0x124F, 0x0AF6, 0x039B, 0x0BFC, 0x03FC, 0x03FB, 0x0C1B, // 0x0430 (1072) +0x0C3B, 0x0C7C, 0x047B, 0x049C, 0x0C9B, 0x1CFC, 0x153D, 0x1D1B, 0x3D7A, 0x7574, 0xACE9, 0xDCC4, 0xF4C2, 0xEC61, 0xCC62, 0xAB80, // 0x0440 (1088) +0xA301, 0xB382, 0xD403, 0xE442, 0xE441, 0xEC81, 0xF4C0, 0xECC1, 0xDC81, 0xB3C0, 0x9B00, 0x92C0, 0xA300, 0xB321, 0xB2E1, 0xB2C1, // 0x0450 (1104) +0xBB23, 0xC3A4, 0xC3C2, 0xBBA0, 0xC3E1, 0xD462, 0xD482, 0xC441, 0xABE0, 0x9BA0, 0x8B80, 0x83A0, 0x8360, 0x7300, 0x72E0, 0x6AC1, // 0x0460 (1120) +0xCC22, 0xB380, 0x8AA0, 0x7220, 0x6A20, 0x6A00, 0x7A20, 0xA301, 0xAB61, 0xA301, 0x8A81, 0x8AA3, 0x8283, 0x7AC6, 0x840D, 0x8450, // 0x0470 (1136) +0x52AB, 0x7C30, 0x846F, 0x4AC8, 0x10C0, 0x10E2, 0x0904, 0x0147, 0x11ED, 0x0A71, 0x02F4, 0x03B8, 0x03D9, 0x0378, 0x0BFA, 0x0C1A, // 0x0480 (1152) +0x147B, 0x0C5A, 0x0C7A, 0x0C5A, 0x0439, 0x047A, 0x0499, 0x0CBA, 0x1CDA, 0x455B, 0x5D97, 0x9591, 0xD527, 0xECA1, 0xDC82, 0xC3E1, // 0x0490 (1168) +0xBBC1, 0xCC02, 0xDC42, 0xEC82, 0xECA1, 0xEC81, 0xECA1, 0xECC1, 0xE4A1, 0xCC40, 0xB3A0, 0xA300, 0xAAE0, 0xB2E1, 0xB2C2, 0xBB23, // 0x04A0 (1184) +0xC3C4, 0xCC45, 0xCC83, 0xC401, 0xCBC1, 0xD422, 0xD482, 0xCC82, 0xBC40, 0xAC00, 0x9BE0, 0xA400, 0xA3E0, 0x9BA0, 0x8341, 0x72E0, // 0x04B0 (1200) +0xDC82, 0xCC21, 0xAB40, 0x8240, 0x6A00, 0x6A00, 0x8240, 0xA302, 0xAB63, 0x92A0, 0x8A42, 0x8243, 0x8A84, 0x8308, 0x73AD, 0x7C72, // 0x04C0 (1216) +0x9D35, 0x9534, 0x9574, 0x7450, 0x0966, 0x0168, 0x01CD, 0x0251, 0x0274, 0x0AF6, 0x0B98, 0x0399, 0x141C, 0x039A, 0x03FA, 0x0C7C, // 0x04D0 (1232) +0x047C, 0x049C, 0x04BD, 0x049C, 0x047A, 0x14DB, 0x14DC, 0x0C9A, 0x14B9, 0x253A, 0x3D9C, 0x55BA, 0x7DB6, 0x9D4F, 0xCCC5, 0xE481, // 0x04E0 (1248) +0xDC82, 0xDC82, 0xECA2, 0xECA2, 0xE4A1, 0xE461, 0xE461, 0xECA1, 0xECC1, 0xE4A0, 0xD440, 0xBB80, 0xBB00, 0xBAE2, 0xB303, 0xBB84, // 0x04F0 (1264) +0xC405, 0xD4C6, 0xDD25, 0xD482, 0xCC01, 0xD401, 0xD461, 0xD482, 0xC462, 0xB401, 0xABC1, 0xABC1, 0xBC02, 0xBC22, 0x9BC1, 0x8340, // 0x0500 (1280) +0xE4A1, 0xDC61, 0xBBC1, 0x92C0, 0x71E0, 0x71E0, 0x9260, 0xAB02, 0xAB42, 0x9AE0, 0x9280, 0x9AA0, 0x92C2, 0x8AA3, 0x82A6, 0x72C9, // 0x0510 (1296) +0x5ACA, 0x21A6, 0x2186, 0x1188, 0x016B, 0x01F1, 0x0A98, 0x0AFB, 0x0B39, 0x0B59, 0x0B98, 0x0398, 0x0376, 0x043A, 0x047B, 0x0CBC, // 0x0520 (1312) +0x0C59, 0x0BF7, 0x03F7, 0x0438, 0x047A, 0x0CBA, 0x14FA, 0x1498, 0x24D7, 0x34F8, 0x3D3B, 0x4DBD, 0x457B, 0x54D4, 0xA50E, 0xD4E8, // 0x0530 (1328) +0xDCE3, 0xE4C1, 0xECE3, 0xEC82, 0xE481, 0xDC60, 0xDC60, 0xE4C0, 0xE4C0, 0xE4A1, 0xE461, 0xD401, 0xB340, 0xA321, 0xB364, 0xABA4, // 0x0540 (1344) +0xA404, 0xC4C5, 0xE505, 0xE4C3, 0xD440, 0xC400, 0xCC41, 0xD483, 0xD483, 0xCC63, 0xAC03, 0x9381, 0x9BA2, 0xB463, 0xBC42, 0xABC0, // 0x0550 (1360) +0xE4A1, 0xDCA2, 0xBC23, 0x92E1, 0x7200, 0x71E0, 0x9260, 0xAB01, 0xAB21, 0xA2E0, 0xAAE0, 0xB300, 0xB322, 0xAB23, 0x9AE4, 0x7A85, // 0x0560 (1376) +0x6B29, 0x29E6, 0x0127, 0x09CD, 0x0A31, 0x0213, 0x0276, 0x0B18, 0x0337, 0x0378, 0x0378, 0x0399, 0x0BFA, 0x145B, 0x0C7A, 0x14BB, // 0x0570 (1392) +0x0C37, 0x0C58, 0x0479, 0x0CFB, 0x253C, 0x24DB, 0x24FA, 0x2D1B, 0x2D1A, 0x2CFA, 0x2CFA, 0x355A, 0x45BA, 0x3557, 0x3D55, 0x6D50, // 0x0580 (1408) +0xB4E6, 0xDCC2, 0xE4C3, 0xECC3, 0xDC21, 0xE421, 0xEC61, 0xE460, 0xDCA1, 0xDC60, 0xDC00, 0xD3C0, 0xBB61, 0xAB63, 0x9BC4, 0x8B83, // 0x0590 (1424) +0x8B42, 0xB404, 0xDCE4, 0xE503, 0xCC81, 0xBBE0, 0xBC00, 0xCC83, 0xD4A3, 0xD483, 0xBC42, 0x9B80, 0x9320, 0xA3A2, 0xBC22, 0xC421, // 0x05A0 (1440) +0xDC81, 0xD4A3, 0xB403, 0x8AC0, 0x61C0, 0x69C0, 0x9260, 0xAAE1, 0xAAE0, 0xB300, 0xC320, 0xC340, 0xCBA1, 0xD3E3, 0xC384, 0x9AC3, // 0x05B0 (1456) +0x7B28, 0x4AAB, 0x018C, 0x01F2, 0x0A54, 0x0255, 0x02B7, 0x0B38, 0x0BF8, 0x03B7, 0x0BF9, 0x0C1B, 0x0C3B, 0x147C, 0x14DB, 0x14BA, // 0x05C0 (1472) +0x0C9B, 0x14DC, 0x0CDC, 0x1CDC, 0x34DC, 0x3CBB, 0x34BB, 0x3CDB, 0x5D1B, 0x5CFA, 0x4CD8, 0x3435, 0x3455, 0x34B6, 0x1497, 0x3CB4, // 0x05D0 (1488) +0x948A, 0xC444, 0xE483, 0xE482, 0xDC62, 0xCBE0, 0xDC01, 0xEC61, 0xEC60, 0xE420, 0xCBC0, 0xBB81, 0xBB80, 0xB3C2, 0x9BE4, 0x8322, // 0x05E0 (1504) +0x7AC2, 0xA383, 0xCCA3, 0xDD23, 0xC4A1, 0xA3A0, 0xA3A0, 0xBC22, 0xCCA2, 0xD4A2, 0xCC83, 0xB3C1, 0x9AE0, 0xA301, 0xBBA1, 0xCC43, // 0x05F0 (1520) +0xD461, 0xCC42, 0xA3A1, 0x7240, 0x5980, 0x69C0, 0x9260, 0xAAC0, 0xAAE0, 0xBB20, 0xC340, 0xCB40, 0xCB80, 0xDC22, 0xDC03, 0xB344, // 0x0600 (1536) +0x8B6A, 0x6370, 0x1231, 0x0255, 0x0275, 0x0296, 0x0339, 0x0BDA, 0x0C9C, 0x045A, 0x0C79, 0x0C79, 0x0438, 0x0479, 0x0CDA, 0x0499, // 0x0610 (1552) +0x0CDB, 0x0C9A, 0x0C99, 0x1CBA, 0x1C99, 0x1458, 0x0C99, 0x24F9, 0x3CF8, 0x44B6, 0x2C56, 0x2416, 0x2C77, 0x2477, 0x1437, 0x4519, // 0x0620 (1568) +0x7D75, 0x9CCD, 0xC485, 0xE4C3, 0xD441, 0xC3E0, 0xD3E1, 0xE462, 0xE4A1, 0xDC60, 0xCBC0, 0xBB21, 0xB321, 0xBBA4, 0xB3E3, 0x9B41, // 0x0630 (1584) +0x8AC1, 0x9B42, 0xBC42, 0xC4E2, 0xA461, 0x8360, 0x8320, 0x9B82, 0xBC02, 0xCC43, 0xCC63, 0xC402, 0xAB21, 0xA2C0, 0xB320, 0xC3C2, // 0x0640 (1600) +0xDC61, 0xCC21, 0x9B61, 0x7240, 0x59A0, 0x7200, 0x9AA0, 0xB300, 0xBB60, 0xC360, 0xCB60, 0xC340, 0xC360, 0xD401, 0xDC23, 0xB3A5, // 0x0650 (1616) +0x83ED, 0x5414, 0x1336, 0x0317, 0x0338, 0x0BDA, 0x0C7D, 0x0CBD, 0x04DC, 0x04DC, 0x0C7A, 0x0438, 0x0417, 0x0458, 0x0479, 0x0459, // 0x0660 (1632) +0x0477, 0x0CB9, 0x0CBB, 0x047B, 0x045A, 0x0459, 0x0478, 0x0477, 0x0496, 0x0CB7, 0x1C57, 0x2416, 0x4D19, 0x44F8, 0x2477, 0x24D9, // 0x0670 (1648) +0x255B, 0x5DB7, 0xB4C8, 0xDCA2, 0xCC22, 0xB3A1, 0xC402, 0xD462, 0xD4E2, 0xDCA2, 0xD3A2, 0xC2C1, 0xBAA2, 0xC323, 0xC3C2, 0xB3A0, // 0x0680 (1664) +0x9B20, 0x9341, 0x9BA0, 0xA401, 0x8BA0, 0x6B00, 0x6AC0, 0x82E2, 0x9B43, 0xB384, 0xC404, 0xCC04, 0xBB82, 0xAAE0, 0xAAE0, 0xB342, // 0x0690 (1680) +0xDC61, 0xCC21, 0x9B61, 0x7240, 0x61C0, 0x7220, 0xAAE0, 0xCBA1, 0xD3C1, 0xD3C0, 0xD3A1, 0xC360, 0xC3A0, 0xD402, 0xD403, 0xA3A6, // 0x06A0 (1696) +0x6C4F, 0x3C76, 0x1419, 0x03FB, 0x043C, 0x151F, 0x0D5F, 0x051E, 0x04FC, 0x04DC, 0x14BC, 0x0C19, 0x03D7, 0x1439, 0x0C18, 0x03D6, // 0x06B0 (1712) +0x03B5, 0x03B6, 0x03BA, 0x03DB, 0x0C3B, 0x041A, 0x03D8, 0x0C59, 0x049A, 0x0C37, 0x2C15, 0x2B72, 0x43F3, 0x3BF3, 0x3475, 0x1435, // 0x06C0 (1728) +0x0499, 0x3559, 0x8DD3, 0xACEA, 0xBC44, 0xC3E2, 0xC423, 0xCC64, 0xDCA3, 0xE483, 0xD3E3, 0xC322, 0xBAA0, 0xBAE0, 0xC3A1, 0xC3E1, // 0x06D0 (1744) +0xA3A0, 0x9340, 0x8B00, 0x8320, 0x7300, 0x62A0, 0x6A80, 0x7281, 0x8282, 0x92C2, 0xAB63, 0xC3C3, 0xC3A2, 0xB320, 0xAAC0, 0xAB01, // 0x06E0 (1760) +0xDC41, 0xC3E1, 0x9320, 0x7260, 0x6200, 0x7A40, 0xB320, 0xE402, 0xE400, 0xDBE0, 0xCB80, 0xC360, 0xCBC0, 0xD422, 0xCBE2, 0x9B85, // 0x06F0 (1776) +0x6450, 0x23F6, 0x0C1A, 0x049D, 0x04FF, 0x055F, 0x051D, 0x0D3E, 0x0D1C, 0x0CDC, 0x1CFE, 0x043B, 0x03D8, 0x0C38, 0x0BF7, 0x0374, // 0x0700 (1792) +0x0332, 0x0B73, 0x1375, 0x0B34, 0x0B54, 0x1374, 0x0B53, 0x0B54, 0x03B6, 0x13D5, 0x3475, 0x23D3, 0x0B94, 0x1C36, 0x34B7, 0x23F3, // 0x0710 (1808) +0x022C, 0x130F, 0x3D78, 0x7657, 0x9C47, 0xBBA2, 0xC3E4, 0xD446, 0xD485, 0xDC84, 0xD442, 0xCBC1, 0xBB21, 0xBB00, 0xC381, 0xC401, // 0x0720 (1824) +0xB401, 0x9B60, 0x8B00, 0x82C0, 0x72A0, 0x6AA0, 0x7AC0, 0x82C1, 0x8261, 0x8A61, 0x9AC0, 0xB342, 0xC381, 0xBB20, 0xAAA0, 0xA281, // 0x0730 (1840) +0xCC00, 0xB380, 0x8B00, 0x7280, 0x6A20, 0x8260, 0xBB40, 0xEC21, 0xEC61, 0xE400, 0xD380, 0xCB60, 0xD3E1, 0xDC43, 0xCBE2, 0x9B65, // 0x0740 (1856) +0x63F2, 0x2BD7, 0x13FA, 0x047C, 0x053E, 0x055F, 0x051E, 0x0D1E, 0x0CDD, 0x14FE, 0x1D5F, 0x045B, 0x0479, 0x0C99, 0x0417, 0x0BF6, // 0x0750 (1872) +0x0352, 0x0373, 0x03D4, 0x0372, 0x02CD, 0x0AAC, 0x1AED, 0x1B0E, 0x0B11, 0x0B52, 0x13B0, 0x1BF2, 0x03B4, 0x13F5, 0x2370, 0x4BD1, // 0x0760 (1888) +0x534F, 0x4B4F, 0x33AF, 0x6DB6, 0xA615, 0x8C4A, 0xAC25, 0xCC85, 0xD484, 0xD463, 0xCC61, 0xCC41, 0xBBC2, 0xBB41, 0xC381, 0xCC02, // 0x0770 (1904) +0xC421, 0xABA0, 0x9321, 0x8AC1, 0x7AA0, 0x7AC0, 0x8B41, 0x9B63, 0x9B42, 0x92E1, 0x92C0, 0xAB21, 0xC362, 0xC322, 0xAAA1, 0xA261, // 0x0780 (1920) +0xA382, 0x9AE0, 0x9280, 0x8A60, 0x7260, 0x8280, 0xAB60, 0xDC21, 0xF442, 0xEBE0, 0xCB80, 0xC3A0, 0xD400, 0xDC62, 0xD423, 0x9BA6, // 0x0790 (1936) +0x5C52, 0x1BF7, 0x0419, 0x151E, 0x0D1D, 0x0D3D, 0x0D1E, 0x0D3E, 0x04DD, 0x0CFD, 0x155D, 0x0439, 0x03B7, 0x13B8, 0x0B77, 0x1398, // 0x07A0 (1952) +0x1396, 0x0B12, 0x1331, 0x024C, 0x1A6B, 0x120A, 0x1A6D, 0x1AD0, 0x0AD1, 0x0B53, 0x0353, 0x0393, 0x0331, 0x02CE, 0x230F, 0x4B6F, // 0x07B0 (1968) +0x6BCE, 0x8C4F, 0x7BED, 0x4B2B, 0x5D77, 0x9EDB, 0x9CCC, 0xBCA7, 0xC4A4, 0xBC62, 0xBC61, 0xCC82, 0xCC41, 0xCBC1, 0xCBA1, 0xD3E2, // 0x07C0 (1984) +0xD422, 0xC3E1, 0xA360, 0x8B00, 0x82A0, 0x8AA0, 0xA300, 0xBB82, 0xCBC2, 0xC3C2, 0xAB40, 0xA320, 0xB3A1, 0xBBA2, 0xBB22, 0xB2A1, // 0x07D0 (2000) +0x92E0, 0x9AE0, 0x9AE0, 0x92A0, 0x7240, 0x7240, 0xA320, 0xD401, 0xEC61, 0xE400, 0xC380, 0xBB80, 0xCBE1, 0xDC63, 0xD443, 0x9B84, // 0x07E0 (2016) +0x63AB, 0x3C32, 0x0C79, 0x0D3F, 0x0D1E, 0x0D1E, 0x049C, 0x049C, 0x0CBD, 0x14FD, 0x151E, 0x047B, 0x03F8, 0x0316, 0x0B58, 0x0293, // 0x07F0 (2032) +0x022F, 0x01CB, 0x0A2B, 0x01A9, 0x026C, 0x02CE, 0x0310, 0x0B52, 0x0B73, 0x0353, 0x03B4, 0x0BB3, 0x1330, 0x01EB, 0x02AD, 0x2B8F, // 0x0800 (2048) +0x19C6, 0x0903, 0x0082, 0x0083, 0x0925, 0x53D0, 0x8DFA, 0x84D1, 0xB446, 0xBBC0, 0xAC40, 0xB4E2, 0xB4C3, 0xBC63, 0xC402, 0xCBE1, // 0x0810 (2064) +0xD441, 0xCC21, 0xB3C1, 0x9B00, 0x8280, 0x8260, 0x92C0, 0xB381, 0xCC22, 0xD462, 0xC3E2, 0xAB60, 0xAB61, 0xBBC3, 0xC3E3, 0xBB61, // 0x0820 (2080) +0xA300, 0xAB80, 0xB382, 0x92E1, 0x7220, 0x7220, 0xA320, 0xD421, 0xEC81, 0xDC20, 0xBB80, 0xAB20, 0xBB81, 0xCC03, 0xCC03, 0xA362, // 0x0830 (2096) +0x6B23, 0x540C, 0x2CF9, 0x0D1E, 0x04BD, 0x04BD, 0x0CDE, 0x0C7D, 0x045C, 0x14BD, 0x0CDD, 0x043A, 0x0335, 0x1397, 0x0295, 0x0274, // 0x0840 (2112) +0x0272, 0x0291, 0x02D2, 0x0312, 0x0B72, 0x1BF3, 0x0B71, 0x1392, 0x0BB2, 0x022C, 0x026E, 0x1352, 0x0BB5, 0x0395, 0x0373, 0x13B3, // 0x0850 (2128) +0x1B2F, 0x01A8, 0x1987, 0x2987, 0x2147, 0x0907, 0x2330, 0x7DD6, 0x94CB, 0x9C03, 0xB444, 0xC463, 0xCCC1, 0xC4A0, 0xBC20, 0xBBC0, // 0x0860 (2144) +0xD440, 0xDC62, 0xD421, 0xAB60, 0x8AA0, 0x7A60, 0x8280, 0x9301, 0xB3C0, 0xD462, 0xD462, 0xBBA0, 0x9B00, 0xAB42, 0xBC02, 0xBC02, // 0x0870 (2160) +0xBBE0, 0xC442, 0xBBE3, 0x92C0, 0x6A00, 0x7A40, 0xAB40, 0xD421, 0xE481, 0xDC20, 0xBB80, 0xAB00, 0xB301, 0xC342, 0xC362, 0xB321, // 0x0880 (2176) +0x8AC1, 0x6348, 0x3CD7, 0x0C9B, 0x045A, 0x043A, 0x0C7D, 0x0C7D, 0x14DE, 0x043B, 0x0CBC, 0x0419, 0x0292, 0x12F4, 0x0AD4, 0x02D5, // 0x0890 (2192) +0x0316, 0x0377, 0x0B55, 0x1334, 0x1B32, 0x128E, 0x228C, 0x0187, 0x126A, 0x234F, 0x0AAF, 0x026F, 0x0313, 0x03D6, 0x03B6, 0x13B6, // 0x08A0 (2208) +0x2C14, 0x2B4F, 0x2A08, 0x5B0C, 0x6BAE, 0x6BCE, 0x5BED, 0x8552, 0x9E16, 0x950F, 0xBCC5, 0xDD02, 0xDD01, 0xD481, 0xBC00, 0xBBC0, // 0x08B0 (2224) +0xD400, 0xE482, 0xE461, 0xC3A0, 0x9B00, 0x8280, 0x7241, 0x7A60, 0x9B20, 0xC401, 0xDCA2, 0xC422, 0x9B00, 0x8AA0, 0x9B80, 0xB443, // 0x08C0 (2240) +0xD4A1, 0xD4C3, 0xB403, 0x8AC0, 0x7A40, 0x92E0, 0xBBC1, 0xDC61, 0xE481, 0xDC40, 0xCBA1, 0xBB20, 0xBAC0, 0xBAC1, 0xC2C1, 0xBAC1, // 0x08D0 (2256) +0xAAC3, 0x7AE8, 0x4434, 0x1458, 0x1459, 0x03F8, 0x0377, 0x03FA, 0x0C7B, 0x14BC, 0x0459, 0x1459, 0x0AF3, 0x022F, 0x12F1, 0x12F1, // 0x08E0 (2272) +0x128F, 0x0A6E, 0x0A6D, 0x0A0C, 0x11CB, 0x0948, 0x0986, 0x2A29, 0x10E5, 0x2A2A, 0x1B6F, 0x0330, 0x028F, 0x0AF2, 0x0BB4, 0x0BB4, // 0x08F0 (2288) +0x13D4, 0x0ACE, 0x0165, 0x1123, 0x10C1, 0x2122, 0x39C4, 0x1184, 0x1B8F, 0x7617, 0xBDCD, 0xCD25, 0xBD01, 0xC4E1, 0xC402, 0xCBA2, // 0x0900 (2304) +0xDC22, 0xE482, 0xE481, 0xCBE0, 0xAB40, 0x92E0, 0x7A82, 0x7A41, 0x8AC0, 0xAB81, 0xCC42, 0xCC22, 0xA321, 0x7200, 0x7A60, 0x9BA3, // 0x0910 (2320) +0xDD02, 0xD4C3, 0xABE2, 0x8AC0, 0x8AC0, 0xAB81, 0xD442, 0xE4A2, 0xEC81, 0xDC40, 0xD3E0, 0xCB60, 0xC321, 0xC2C1, 0xBA60, 0xBA61, // 0x0920 (2336) +0xC2C3, 0x9B07, 0x63D0, 0x3415, 0x0BF7, 0x0C18, 0x0335, 0x0376, 0x0395, 0x0C18, 0x0479, 0x0C79, 0x1BD7, 0x024F, 0x020B, 0x1A6B, // 0x0930 (2352) +0x0965, 0x19C6, 0x32CC, 0x228B, 0x01E7, 0x22CB, 0x19C8, 0x0926, 0x2ACB, 0x0186, 0x0126, 0x2AEE, 0x1371, 0x0352, 0x03B4, 0x03B4, // 0x0940 (2368) +0x0BD4, 0x0B11, 0x1ACE, 0x32AD, 0x19C8, 0x1125, 0x08A1, 0x00C2, 0x00C5, 0x1AEE, 0x55B8, 0x7E34, 0xBD47, 0xD4A0, 0xD480, 0xCC40, // 0x0950 (2384) +0xDC41, 0xDC62, 0xDC82, 0xCC20, 0xB3A0, 0xAB61, 0x9B22, 0x92E2, 0x8AC0, 0x9B01, 0xABA2, 0xBBE3, 0xAB43, 0x7A20, 0x69E0, 0x82C3, // 0x0960 (2400) +0xDCE1, 0xCC81, 0xA381, 0x8AE0, 0x9B41, 0xC402, 0xDC61, 0xECA1, 0xE480, 0xDC40, 0xD400, 0xCBC0, 0xCB80, 0xC300, 0xBA81, 0xBA82, // 0x0970 (2416) +0xC302, 0xAB45, 0x8369, 0x5BD0, 0x1374, 0x03D7, 0x03B7, 0x0B96, 0x0334, 0x0B96, 0x0418, 0x0C59, 0x1458, 0x1393, 0x0126, 0x11C8, // 0x0980 (2432) +0x1A29, 0x0145, 0x1A28, 0x4BAE, 0x334D, 0x22CC, 0x2B2C, 0x0A07, 0x09E7, 0x436E, 0x1A09, 0x11E9, 0x1ACC, 0x130E, 0x1392, 0x1372, // 0x0990 (2448) +0x3B70, 0x4370, 0x3391, 0x232F, 0x338F, 0x3B6E, 0x4B2D, 0x3209, 0x2166, 0x0107, 0x0395, 0x355A, 0x7615, 0x9D8C, 0xC4C4, 0xD460, // 0x09A0 (2464) +0xD461, 0xCC41, 0xCC61, 0xC441, 0xC401, 0xC422, 0xC443, 0xBBE3, 0x9301, 0x82A0, 0x8280, 0x9AE2, 0x9AE2, 0x8220, 0x69A0, 0x7202, // 0x09B0 (2480) +0xDCA0, 0xC440, 0xA361, 0x9321, 0xB3C2, 0xD483, 0xE4A1, 0xE480, 0xE460, 0xDC40, 0xD420, 0xCBE0, 0xC3A0, 0xC340, 0xB2A2, 0xBAE3, // 0x09C0 (2496) +0xCBC3, 0xBBC4, 0x9B04, 0x7B6B, 0x2BD3, 0x0376, 0x03B8, 0x13F9, 0x0B36, 0x0B35, 0x0BF7, 0x03F7, 0x03D5, 0x2436, 0x22EE, 0x00C5, // 0x09D0 (2512) +0x01A8, 0x1A6B, 0x11A7, 0x1986, 0x530C, 0x63CE, 0x43AE, 0x43CE, 0x1269, 0x1A69, 0x53AE, 0x3AAA, 0x31E7, 0x3A08, 0x3289, 0x42C9, // 0x09E0 (2528) +0x6B48, 0x7348, 0x7B48, 0x6B4A, 0x434D, 0x2B4E, 0x3390, 0x22AC, 0x1165, 0x0965, 0x024B, 0x1C16, 0x149B, 0x34D9, 0x84EF, 0xB4C8, // 0x09F0 (2544) +0xCCA3, 0xC420, 0xBC21, 0xBC42, 0xC442, 0xDCA3, 0xE504, 0xD4C3, 0xABE3, 0x82A0, 0x7200, 0x7A21, 0x8A41, 0x8200, 0x69A0, 0x69E2, // 0x0A00 (2560) +0xD4A1, 0xC420, 0xB380, 0xBBA0, 0xD462, 0xDCA3, 0xD461, 0xD440, 0xD480, 0xD4A1, 0xCC21, 0xBBA0, 0xBB81, 0xB341, 0xB321, 0xC3A3, // 0x0A10 (2576) +0xE484, 0xDC43, 0xC382, 0x8AE4, 0x5B6C, 0x3392, 0x0354, 0x0BD7, 0x0355, 0x0334, 0x0395, 0x0BD6, 0x03B6, 0x0BF7, 0x1BF6, 0x026F, // 0x0A20 (2592) +0x00A5, 0x00A3, 0x0965, 0x0123, 0x1103, 0x4AA9, 0x5B4C, 0x530B, 0x3A68, 0x3A47, 0x3A06, 0x39C5, 0x39C4, 0x4205, 0x4245, 0x4246, // 0x0A30 (2608) +0x52A8, 0x62E9, 0x6AE8, 0x7309, 0x7B28, 0x6AE8, 0x3A68, 0x2A8A, 0x126B, 0x0168, 0x0128, 0x23B4, 0x0C18, 0x0419, 0x14DB, 0x3CF7, // 0x0A40 (2624) +0x8D0E, 0xAC67, 0xA3C1, 0xB3A0, 0xC421, 0xD4C2, 0xE543, 0xE524, 0xC442, 0x9B40, 0x7220, 0x61E0, 0x7221, 0x71E1, 0x61C0, 0x6A01, // 0x0A50 (2640) +0xC440, 0xBC00, 0xBBE0, 0xCC41, 0xDCC3, 0xD482, 0xC3E0, 0xBBC0, 0xD480, 0xDCA1, 0xC421, 0xAB60, 0xAB40, 0xAB61, 0xBBC2, 0xD463, // 0x0A60 (2656) +0xF503, 0xF503, 0xCBE3, 0xA344, 0x72C5, 0x532B, 0x1B51, 0x0334, 0x0B34, 0x02F4, 0x0397, 0x0375, 0x0BD5, 0x13F6, 0x0395, 0x1374, // 0x0A70 (2672) +0x1AD0, 0x0169, 0x00A2, 0x00A1, 0x08A0, 0x3184, 0x41C6, 0x41C7, 0x3165, 0x3185, 0x52C9, 0x52A8, 0x3A05, 0x39C4, 0x5205, 0x49E5, // 0x0A80 (2688) +0x4A47, 0x4A67, 0x5289, 0x5ACA, 0x5AC9, 0x62C9, 0x6B09, 0x41E5, 0x18E2, 0x1145, 0x016A, 0x12F3, 0x0BD9, 0x03DA, 0x03DA, 0x14BC, // 0x0A90 (2704) +0x24BA, 0x5D58, 0x6C6C, 0x6B22, 0x9360, 0xC482, 0xE503, 0xE503, 0xD4C3, 0xABA1, 0x7AC1, 0x6A61, 0x6221, 0x6201, 0x5A02, 0x51E2, // 0x0AA0 (2720) +0xB400, 0xB3C0, 0xCC20, 0xDCC2, 0xE502, 0xCC61, 0xB3C0, 0xB3A0, 0xCC60, 0xD481, 0xC401, 0xA320, 0x9B40, 0xB3C1, 0xCC62, 0xED23, // 0x0AB0 (2736) +0xFDA2, 0xFD82, 0xDC62, 0xB321, 0x8240, 0x5245, 0x2B4F, 0x0B12, 0x0A70, 0x0A71, 0x1334, 0x0B54, 0x0393, 0x13F5, 0x0332, 0x0353, // 0x0AC0 (2752) +0x1BD5, 0x0AF0, 0x01A8, 0x0924, 0x1102, 0x08C1, 0x2165, 0x2986, 0x2144, 0x1924, 0x3ACA, 0x3B0B, 0x32CA, 0x2A48, 0x4227, 0x4206, // 0x0AD0 (2768) +0x4226, 0x39E5, 0x4205, 0x4226, 0x3A06, 0x31C5, 0x4205, 0x4A87, 0x39E5, 0x29A6, 0x0107, 0x09ED, 0x0270, 0x02B3, 0x0B56, 0x03B7, // 0x0AE0 (2784) +0x14DB, 0x2D1A, 0x54D5, 0x642D, 0x73A5, 0xA422, 0xD4C2, 0xECC1, 0xE481, 0xCBE0, 0x9B00, 0x7A80, 0x7A60, 0x6A21, 0x61E1, 0x59E2, // 0x0AF0 (2800) +0xA360, 0xAB80, 0xCC20, 0xE4C2, 0xDCE2, 0xC440, 0xB3C0, 0xBBE0, 0xD460, 0xDC81, 0xC3E0, 0xAB40, 0xABA0, 0xC441, 0xDCC1, 0xF562, // 0x0B00 (2816) +0xFDE2, 0xF5A2, 0xE4A2, 0xB361, 0x7A61, 0x4A03, 0x434C, 0x336F, 0x1AAE, 0x0A2E, 0x01ED, 0x024E, 0x028F, 0x02D0, 0x026D, 0x0B30, // 0x0B10 (2832) +0x0BD3, 0x0351, 0x026D, 0x0168, 0x09C9, 0x09A8, 0x0125, 0x0145, 0x1164, 0x19A5, 0x32EA, 0x3B4C, 0x330C, 0x2A8A, 0x3227, 0x3A27, // 0x0B20 (2848) +0x4228, 0x4A29, 0x4207, 0x4A07, 0x5248, 0x4207, 0x2122, 0x2102, 0x31C5, 0x3A49, 0x0106, 0x0169, 0x09ED, 0x020F, 0x0271, 0x0335, // 0x0B30 (2864) +0x03B9, 0x0CBD, 0x1D3C, 0x34F8, 0x4412, 0x638C, 0x9BE7, 0xCC85, 0xDCE2, 0xCC60, 0xABA0, 0x8B00, 0x72A0, 0x6260, 0x5A60, 0x6260, // 0x0B40 (2880) +0x9300, 0xA360, 0xCC21, 0xDCA2, 0xD4A1, 0xCC40, 0xBC00, 0xC421, 0xDC81, 0xE481, 0xD400, 0xC3E0, 0xCC40, 0xDCC1, 0xED00, 0xFD41, // 0x0B50 (2896) +0xFDC2, 0xF583, 0xD4A3, 0xABC3, 0x72A3, 0x5203, 0x5A85, 0x5B29, 0x2B0C, 0x026C, 0x026D, 0x022D, 0x022D, 0x020C, 0x128D, 0x028D, // 0x0B60 (2912) +0x0B4F, 0x0B70, 0x024D, 0x026F, 0x0290, 0x0A8F, 0x022B, 0x0A09, 0x0965, 0x0944, 0x19E5, 0x3247, 0x3A88, 0x42A9, 0x4AA9, 0x3A27, // 0x0B70 (2928) +0x31E6, 0x3A48, 0x3A28, 0x4268, 0x4227, 0x52A8, 0x5AE8, 0x3A05, 0x29C4, 0x2184, 0x0903, 0x1165, 0x0965, 0x11E6, 0x1A06, 0x1A26, // 0x0B80 (2944) +0x330C, 0x2370, 0x0C78, 0x151C, 0x2D1A, 0x2C14, 0x332E, 0x4ACA, 0x83EA, 0xA468, 0xAC03, 0x9320, 0x7AC0, 0x6A80, 0x5A80, 0x5AA0, // 0x0B90 (2960) +0x9B20, 0xB3A1, 0xCC21, 0xD461, 0xD460, 0xCC40, 0xC420, 0xCC41, 0xE481, 0xDC60, 0xD420, 0xD440, 0xE4C1, 0xE4E1, 0xECE0, 0xFD20, // 0x0BA0 (2976) +0xFD62, 0xED22, 0xD482, 0xABA2, 0x82E2, 0x6A21, 0x6200, 0x6283, 0x4B08, 0x3B4B, 0x12ED, 0x020C, 0x026E, 0x0A8E, 0x0A4C, 0x0A2A, // 0x0BB0 (2992) +0x12AC, 0x0A6C, 0x020C, 0x0A8F, 0x0290, 0x0AD1, 0x0AB0, 0x0A6E, 0x09EB, 0x0188, 0x0125, 0x0924, 0x19A6, 0x21E7, 0x326A, 0x2A28, // 0x0BC0 (3008) +0x3227, 0x3A47, 0x3A07, 0x3A07, 0x5227, 0x49E6, 0x5227, 0x5A68, 0x5227, 0x5205, 0x6A44, 0x9B66, 0xAB63, 0xB381, 0xBBC0, 0xC401, // 0x0BD0 (3024) +0xBBA2, 0x8B22, 0x4B23, 0x2B46, 0x33AB, 0x5471, 0x5454, 0x4392, 0x330D, 0x4B2B, 0x8389, 0x9387, 0x7AC3, 0x7240, 0x7280, 0x6AA0, // 0x0BE0 (3040) +0xB380, 0xBBE1, 0xCC21, 0xCC00, 0xCC20, 0xD440, 0xCC20, 0xD440, 0xDC80, 0xD460, 0xD440, 0xD480, 0xDCC0, 0xDCA0, 0xDCA0, 0xE4E1, // 0x0BF0 (3056) +0xED02, 0xE4C2, 0xD441, 0xAB41, 0x8AE3, 0x7262, 0x7242, 0x7283, 0x72C3, 0x7346, 0x5349, 0x2ACA, 0x024A, 0x020B, 0x01C8, 0x0A09, // 0x0C00 (3072) +0x0A2A, 0x126B, 0x0A6B, 0x0A6C, 0x0A6C, 0x020C, 0x0A6D, 0x01EB, 0x01EA, 0x09C9, 0x0187, 0x00E4, 0x00C3, 0x00E2, 0x1984, 0x2A06, // 0x0C10 (3088) +0x2A67, 0x11E6, 0x2A48, 0x3248, 0x3228, 0x3207, 0x3A27, 0x4247, 0x4226, 0x49E4, 0x59A1, 0x92A3, 0xBB82, 0xBB40, 0xCBC0, 0xCC02, // 0x0C20 (3104) +0xB3A2, 0x9301, 0x7260, 0x6200, 0x6A00, 0x7260, 0x8305, 0x942C, 0x742F, 0x4B2C, 0x3AA8, 0x5349, 0x73EA, 0x6B05, 0x5A60, 0x6A80, // 0x0C30 (3120) +0xC3E0, 0xD442, 0xD441, 0xCC20, 0xD460, 0xDC80, 0xDC60, 0xDC61, 0xD480, 0xD460, 0xCC60, 0xD480, 0xD4A0, 0xCC40, 0xC420, 0xD480, // 0x0C40 (3136) +0xE4C0, 0xDC81, 0xB3A1, 0x9323, 0x72A3, 0x7284, 0x7A84, 0x92E4, 0xAB64, 0xABA5, 0x8B43, 0x5AE4, 0x2AC8, 0x0A69, 0x0209, 0x01E9, // 0x0C50 (3152) +0x022B, 0x028C, 0x0AAC, 0x0A6A, 0x1A4A, 0x1A29, 0x0186, 0x09C6, 0x0183, 0x0963, 0x1123, 0x18E2, 0x20E0, 0x6283, 0x8B22, 0x9300, // 0x0C60 (3168) +0x8AE2, 0x82C3, 0x5A23, 0x4A46, 0x3269, 0x2A49, 0x3206, 0x31C4, 0x3A26, 0x4206, 0x41C5, 0x4983, 0x8A63, 0xAAA2, 0xBB43, 0xC3A4, // 0x0C70 (3184) +0xA381, 0x82C0, 0x8240, 0x8202, 0x79A0, 0x81E0, 0x9AA0, 0xAB81, 0xAC25, 0xA468, 0x7388, 0x52E7, 0x6326, 0x62C4, 0x6220, 0x6A40, // 0x0C80 (3200) +0xD460, 0xDCA0, 0xDCC0, 0xDCC0, 0xE4A0, 0xF4C1, 0xECE1, 0xE4A0, 0xDC80, 0xD440, 0xDC60, 0xDC81, 0xD4A0, 0xC420, 0xC3E0, 0xCC60, // 0x0C90 (3216) +0xD4C2, 0xC442, 0xA341, 0x8280, 0x7A62, 0x82C3, 0xA363, 0xB3C3, 0xC403, 0xC444, 0xB3C3, 0x7AC2, 0x10A0, 0x00E2, 0x09A6, 0x1A8A, // 0x0CA0 (3232) +0x1A69, 0x1248, 0x0A27, 0x01C6, 0x01C7, 0x01C7, 0x01A7, 0x19E7, 0x21C5, 0x1943, 0x08C2, 0x10C2, 0x2941, 0x7B67, 0x93A2, 0x9B20, // 0x0CB0 (3248) +0x92A0, 0x9A80, 0x9A82, 0x8A83, 0x6A63, 0x5223, 0x39E3, 0x29A2, 0x19A3, 0x2183, 0x31A6, 0x3965, 0x4103, 0x69E3, 0xA303, 0xBB63, // 0x0CC0 (3264) +0xAB03, 0x9A62, 0x9242, 0x9222, 0x8200, 0x8A20, 0x9AE0, 0xAB60, 0xBBE1, 0xBBE1, 0xABC1, 0x8B41, 0x6AE1, 0x6AC3, 0x6AA3, 0x6243, // 0x0CD0 (3280) +0xDCA0, 0xE4E0, 0xE500, 0xE500, 0xF500, 0xFD01, 0xF501, 0xECE0, 0xE480, 0xDC60, 0xDC80, 0xE4A0, 0xDCE1, 0xD4A0, 0xD460, 0xDCA0, // 0x0CE0 (3296) +0xDCC0, 0xBC00, 0x9B01, 0x7A41, 0x7A62, 0x9B43, 0xC423, 0xDCA2, 0xD481, 0xD4A4, 0xC488, 0x51A0, 0x0840, 0x0081, 0x0081, 0x0903, // 0x0CF0 (3312) +0x29E6, 0x21E6, 0x2227, 0x09A5, 0x0144, 0x01E6, 0x01A5, 0x01C5, 0x1206, 0x09A5, 0x00E3, 0x1944, 0x2921, 0x59E1, 0x9300, 0xA300, // 0x0D00 (3328) +0xAB00, 0xA281, 0x9A21, 0x9A43, 0x9284, 0x8AC5, 0x7AC4, 0x6A83, 0x6283, 0x5A63, 0x5A64, 0x5225, 0x41A3, 0x4161, 0x6A41, 0xA365, // 0x0D10 (3344) +0xA303, 0x9A83, 0x9A62, 0x9242, 0x9261, 0x9AC1, 0xB381, 0xC401, 0xC3E0, 0xAB80, 0x9320, 0x7AA0, 0x6260, 0x6282, 0x6AA3, 0x6A83, // 0x0D20 (3360) +0xDCE0, 0xE500, 0xE520, 0xED00, 0xF520, 0xFD00, 0xF500, 0xF4E0, 0xE4A0, 0xE480, 0xDC80, 0xE4C0, 0xE501, 0xE521, 0xDCE0, 0xE500, // 0x0D30 (3376) +0xDCC1, 0xBBC0, 0x8AC2, 0x6A21, 0x7AA1, 0xABA3, 0xDCA2, 0xF522, 0xED23, 0xC484, 0x6202, 0x41C5, 0x2965, 0x3A08, 0x4208, 0x1081, // 0x0D40 (3392) +0x0060, 0x1901, 0x3960, 0x8387, 0x6AC3, 0x6B24, 0x52A3, 0x3A22, 0x42A6, 0x1100, 0x3941, 0x7223, 0x7200, 0x8A80, 0x9B20, 0xC402, // 0x0D50 (3408) +0xC3A2, 0xAAE1, 0x9A41, 0x9282, 0x8AE3, 0x8B24, 0x8B03, 0x8AC1, 0x9280, 0x8A40, 0x8A01, 0x8A23, 0x8244, 0x6A03, 0x7262, 0x9344, // 0x0D60 (3424) +0xAB84, 0xAB03, 0x9A82, 0x9241, 0x9260, 0xAB21, 0xC3E1, 0xD462, 0xCC41, 0xAB80, 0x8AC0, 0x6A40, 0x5A00, 0x5A00, 0x6220, 0x6A40, // 0x0D70 (3440) +0xDCE0, 0xE520, 0xE500, 0xECE0, 0xF520, 0xFD00, 0xF4E0, 0xF4E0, 0xECC0, 0xE480, 0xD460, 0xD480, 0xE4E0, 0xED21, 0xED20, 0xE501, // 0x0D80 (3456) +0xDC82, 0xB381, 0x8282, 0x7221, 0x82C1, 0xB403, 0xE4E3, 0xF544, 0xED87, 0x6220, 0x6B2A, 0x8451, 0x3A69, 0x5B2D, 0x7C10, 0x5ACB, // 0x0D90 (3472) +0x18A3, 0x1020, 0x38E0, 0x9B86, 0xA363, 0xB381, 0xD440, 0xE4E3, 0xBC44, 0x48E0, 0x9AA1, 0x9220, 0x89C0, 0xA2A1, 0xC3C1, 0xD463, // 0x0DA0 (3488) +0xC3E2, 0xAB20, 0x9AA1, 0x9AE2, 0x9B43, 0x9B43, 0x9B02, 0x9AC1, 0xA2C1, 0xA260, 0xA200, 0x99E0, 0x9A01, 0xA282, 0xB303, 0xC3A3, // 0x0DB0 (3504) +0xC423, 0xBBC2, 0xA2C1, 0x8A00, 0x9220, 0xA2A1, 0xB361, 0xC3E2, 0xC422, 0xB3A1, 0x8B01, 0x7260, 0x6220, 0x6A40, 0x72A0, 0x7AA0, // 0x0DC0 (3520) +0xDCE0, 0xE500, 0xED00, 0xECE0, 0xF520, 0xFD20, 0xF4E0, 0xECE0, 0xE4C0, 0xDC80, 0xCC20, 0xCC20, 0xDC80, 0xECE0, 0xED00, 0xECE1, // 0x0DD0 (3536) +0xDC21, 0xBB41, 0x9261, 0x8A21, 0x9AC1, 0xC3E3, 0xED03, 0xF545, 0xD4E7, 0x6A82, 0xA553, 0x7C31, 0x636D, 0x740F, 0x73EF, 0x6B6D, // 0x0DE0 (3552) +0x2143, 0x1080, 0x5243, 0x6A62, 0x6A21, 0x92E2, 0xC380, 0xE4A5, 0x8240, 0x79E0, 0xAB23, 0x9220, 0x9240, 0xAB01, 0xD420, 0xDC40, // 0x0DF0 (3568) +0xC380, 0xAAA0, 0xAA60, 0xBB03, 0xC3A4, 0xBBA4, 0xB342, 0xAAE1, 0xAAA0, 0xAA60, 0xAA60, 0xAA81, 0xAAC1, 0xAB00, 0xBB60, 0xCC21, // 0x0E00 (3584) +0xDCC1, 0xC440, 0xA320, 0x9220, 0x91E1, 0x9A22, 0xA282, 0xB302, 0xAB61, 0x9B41, 0x82E0, 0x6A60, 0x6220, 0x6A60, 0x7AE0, 0x8B20, // 0x0E10 (3600) +0xDCC0, 0xE500, 0xED00, 0xED00, 0xF520, 0xF540, 0xECE0, 0xE4C0, 0xDCA0, 0xD460, 0xBC00, 0xBC00, 0xD460, 0xE4A1, 0xECE0, 0xECC1, // 0x0E20 (3616) +0xE420, 0xCB20, 0xB221, 0xA1E1, 0xAA61, 0xD3A2, 0xF4E2, 0xF543, 0xE506, 0x8B24, 0xAD32, 0x8431, 0x7BEF, 0x94B1, 0x8CB0, 0x6BCD, // 0x0E30 (3632) +0x31C7, 0x1903, 0x4A24, 0x49C2, 0x49A0, 0x6A41, 0x9B42, 0xB3C4, 0x5920, 0xAB65, 0x9AC1, 0x9A60, 0x9A80, 0xB342, 0xC3E1, 0xCBC1, // 0x0E40 (3648) +0xB2C0, 0xA240, 0xAA20, 0xC323, 0xD425, 0xDC64, 0xCBA2, 0xBAE0, 0xB280, 0xB240, 0xB220, 0xB2A1, 0xBB82, 0xB3A1, 0xB3C0, 0xCCA1, // 0x0E50 (3664) +0xDD01, 0xCC80, 0xAB40, 0x9220, 0x91C2, 0x99C3, 0x9A02, 0xA262, 0x92C1, 0x8AE0, 0x72E0, 0x6A80, 0x6260, 0x6A60, 0x7AE0, 0x8B81, // 0x0E60 (3680) +0xDCC0, 0xE4E1, 0xED00, 0xF500, 0xF520, 0xF541, 0xED01, 0xE4C0, 0xD4A0, 0xC460, 0xB400, 0xBC00, 0xCC40, 0xE480, 0xECA0, 0xEC81, // 0x0E70 (3696) +0xE401, 0xD2E0, 0xB9E1, 0xA981, 0xAA00, 0xCB41, 0xECA1, 0xF501, 0xECE3, 0xC486, 0xB531, 0x8C51, 0x8C70, 0x9CD1, 0x9CD1, 0x73CE, // 0x0E80 (3712) +0x4207, 0x31A5, 0x4A46, 0x3182, 0x39C2, 0x5A03, 0x82E5, 0x6120, 0x8220, 0xA302, 0x9280, 0x92A0, 0x92C0, 0xA321, 0xC3C1, 0xB340, // 0x0E90 (3728) +0x9AE0, 0x9A80, 0xA261, 0xBB02, 0xDC24, 0xECA5, 0xE423, 0xCB21, 0xAA40, 0xAA60, 0xB280, 0xB302, 0xBB82, 0xB3A1, 0xB3C0, 0xCC61, // 0x0EA0 (3744) +0xDCC1, 0xCC40, 0xAB40, 0x9240, 0x99E2, 0xA1E3, 0xA203, 0x9222, 0x8240, 0x7280, 0x6A80, 0x6280, 0x6260, 0x6240, 0x72A0, 0x8361, // 0x0EB0 (3760) +0xD4A0, 0xDCC0, 0xECE0, 0xECE0, 0xE4E0, 0xE500, 0xE500, 0xDCC0, 0xCC80, 0xC460, 0xAC00, 0xB400, 0xCC40, 0xDC40, 0xE460, 0xE441, // 0x0EC0 (3776) +0xDBA2, 0xC2A2, 0xB1C2, 0xA161, 0xA1E0, 0xC341, 0xE482, 0xF4E2, 0xE4A1, 0xC444, 0xBD91, 0xAD95, 0x94D1, 0xB5D6, 0xA535, 0x8432, // 0x0ED0 (3792) +0x738F, 0x3186, 0x5268, 0x49E4, 0x3981, 0x49E3, 0x3984, 0x3101, 0x82E3, 0x8280, 0x8AA0, 0x92C0, 0x9AE0, 0xA321, 0xAB41, 0xB322, // 0x0EE0 (3808) +0xAB01, 0xB2E1, 0xAAC1, 0xB2E1, 0xBBC2, 0xDCA5, 0xDC64, 0xCB83, 0xAA60, 0xAA20, 0xB261, 0xBB02, 0xB362, 0xABA1, 0xABE1, 0xB401, // 0x0EF0 (3824) +0xCC41, 0xC3E1, 0xAB21, 0x9A60, 0xA222, 0xAA23, 0xA202, 0x9201, 0x8261, 0x72A1, 0x62A0, 0x5AA0, 0x5A60, 0x5A60, 0x6AC0, 0x8342, // 0x0F00 (3840) +0xC420, 0xCC60, 0xDCA0, 0xE4C0, 0xDCA0, 0xDCA0, 0xD4C0, 0xCCA0, 0xC480, 0xB460, 0xB420, 0xB400, 0xCC20, 0xDC40, 0xE440, 0xE401, // 0x0F10 (3856) +0xC361, 0xAAA1, 0x9200, 0x8A00, 0x8A60, 0xAB41, 0xCC61, 0xDCE2, 0xD481, 0xABA2, 0xBD0F, 0xC5F7, 0x9CB3, 0x94B2, 0xA533, 0x9471, // 0x0F20 (3872) +0x8C2F, 0x31A6, 0x29A5, 0x3A07, 0x2943, 0x3984, 0x2902, 0x3100, 0x8AC5, 0x9282, 0x9AC2, 0xAB22, 0xBB21, 0xBB20, 0xC380, 0xCBE1, // 0x0F30 (3888) +0xCBE1, 0xCBC0, 0xBB81, 0xAB00, 0xAB00, 0xCBC3, 0xDC23, 0xCBC1, 0xB2C0, 0xB280, 0xB2C1, 0xB2C2, 0xA2E3, 0xA323, 0xA383, 0xA3A2, // 0x0F40 (3904) +0xABA2, 0xABA2, 0x9B02, 0x9AE2, 0xAB22, 0xA2E2, 0x9A82, 0x9241, 0x8A81, 0x82E1, 0x7300, 0x62E0, 0x5AA0, 0x5A80, 0x7300, 0x8BC0, // 0x0F50 (3920) +0xA380, 0xB3E0, 0xCC61, 0xD461, 0xC420, 0xC420, 0xCC60, 0xCC80, 0xC480, 0xBC40, 0xB420, 0xB400, 0xCC00, 0xDC41, 0xDC00, 0xD3A1, // 0x0F60 (3936) +0xBB01, 0xAA60, 0x9A21, 0x9221, 0x8A60, 0x9B21, 0xBC21, 0xC481, 0xC421, 0x9B21, 0x940A, 0xB574, 0xAD54, 0x9492, 0xA513, 0x840F, // 0x0F70 (3952) +0x738D, 0x2124, 0x31C6, 0x4228, 0x20E3, 0x3144, 0x18A1, 0x3921, 0x9325, 0xA322, 0xAB62, 0xBBA2, 0xCBC1, 0xCBC1, 0xD421, 0xD461, // 0x0F80 (3968) +0xDCA1, 0xD481, 0xC401, 0xAB40, 0x9AC0, 0xAB21, 0xC3C1, 0xCBE1, 0xCB81, 0xC361, 0xBB22, 0xAAA1, 0x9261, 0x92A2, 0x9303, 0x9B42, // 0x0F90 (3984) +0x9B21, 0xA341, 0x9B21, 0xAB63, 0xBBE4, 0xBBA3, 0xA302, 0x9281, 0x92E1, 0x9B82, 0x93C1, 0x8360, 0x7300, 0x72E0, 0x8360, 0x9C01, // 0x0FA0 (4000) +0x8320, 0x9360, 0xABE1, 0xB3E1, 0xAB80, 0xB3A0, 0xBC20, 0xC440, 0xBC60, 0xB440, 0xAC00, 0xB3E0, 0xC400, 0xD421, 0xD3C1, 0xC320, // 0x0FB0 (4016) +0xAA80, 0xA241, 0x9221, 0x8A20, 0x8A80, 0x9320, 0x9BC0, 0xAC01, 0x9B81, 0x7A80, 0x6AC6, 0xAD52, 0xC5F6, 0xA513, 0xA533, 0xAD74, // 0x0FC0 (4032) +0xBE18, 0x634D, 0x5AEB, 0x2986, 0x10A2, 0x18C2, 0x39C6, 0x6AE8, 0xA384, 0xB3A2, 0xBBE2, 0xC401, 0xD441, 0xD461, 0xDC80, 0xE4C1, // 0x0FD0 (4048) +0xE500, 0xDCE1, 0xC441, 0xAB40, 0x9280, 0x9AC0, 0xBB81, 0xD443, 0xDC64, 0xDC64, 0xD423, 0xB341, 0x9280, 0x8A41, 0x8262, 0x8AA2, // 0x0FE0 (4064) +0x92E1, 0x9B01, 0xAB42, 0xBBE4, 0xD485, 0xCC64, 0xB3A2, 0x9B00, 0x9B40, 0xABE2, 0xB462, 0xAC01, 0x9360, 0x9360, 0x93E0, 0xA461, // 0x0FF0 (4080) +0x7300, 0x7B20, 0x8B40, 0x9340, 0x9320, 0x9B60, 0xB400, 0xBC60, 0xBC60, 0xAC40, 0xA3E0, 0xA3C0, 0xBBC0, 0xCBE1, 0xC381, 0xB2C0, // 0x1000 (4096) +0x9A40, 0x9241, 0x8A21, 0x8220, 0x8260, 0x82E0, 0x8361, 0x83A1, 0x8301, 0x6A81, 0x5223, 0x9CAF, 0xC5F6, 0xB5B6, 0xA534, 0xAD95, // 0x1010 (4112) +0xA554, 0x5B0C, 0x2104, 0x2945, 0x31A6, 0x2965, 0x738D, 0x7348, 0xA3C4, 0xC402, 0xC422, 0xCC41, 0xD480, 0xD480, 0xD460, 0xE4C0, // 0x1020 (4128) +0xE500, 0xDCE0, 0xCC40, 0xAB20, 0x9A80, 0xA2A0, 0xBB81, 0xD443, 0xE4A3, 0xECE4, 0xE503, 0xCC62, 0xAB41, 0x8A60, 0x7A20, 0x8261, // 0x1030 (4144) +0x8AC0, 0x9B00, 0xB362, 0xCC23, 0xDCC4, 0xD4C3, 0xBC42, 0xA3A0, 0xA3A0, 0xB400, 0xC461, 0xCC61, 0xBC00, 0xABC0, 0xA420, 0xAC80, // 0x1040 (4160) +0x6300, 0x6B00, 0x7B00, 0x82E0, 0x82E0, 0x9360, 0xAC21, 0xB461, 0xAC40, 0xA420, 0x93C0, 0x9360, 0xA360, 0xB381, 0xAB21, 0x9A80, // 0x1050 (4176) +0x8A40, 0x8241, 0x8241, 0x7A20, 0x7A60, 0x7AC0, 0x7321, 0x7341, 0x6AE2, 0x6283, 0x4A02, 0x8C0D, 0xCE17, 0xAD55, 0xAD75, 0xAD75, // 0x1060 (4192) +0x3A07, 0x18E3, 0x4228, 0x630B, 0x39E7, 0x4228, 0x8C4F, 0x6AA5, 0xABE4, 0xC423, 0xCC43, 0xD463, 0xD4A2, 0xD480, 0xD440, 0xDC81, // 0x1070 (4208) +0xECE0, 0xE4C1, 0xCBE0, 0xAAC0, 0x9A40, 0xA281, 0xBB41, 0xCC02, 0xD462, 0xE4C2, 0xE522, 0xE4E1, 0xC441, 0xA360, 0x92C0, 0x8AA0, // 0x1080 (4224) +0x8AC0, 0x9B01, 0xB382, 0xCC23, 0xD4A3, 0xD4C2, 0xBCA1, 0xAC20, 0xA3E0, 0xABE0, 0xC440, 0xD481, 0xCC80, 0xC440, 0xB460, 0xB460, // 0x1090 (4240) +0x6B00, 0x6B00, 0x8320, 0x8320, 0x8300, 0x9360, 0xA401, 0xAC21, 0x9C00, 0x93C0, 0x8360, 0x7B00, 0x8B00, 0x9B20, 0x9B00, 0x8A80, // 0x10A0 (4256) +0x8280, 0x8281, 0x8260, 0x8240, 0x8A40, 0x8AC0, 0x7B20, 0x6B00, 0x62A2, 0x5A62, 0x5A64, 0x8BEC, 0xC5F6, 0xBDB7, 0x9CB2, 0x5ACB, // 0x10B0 (4272) +0x52CA, 0x6B6D, 0x7BCD, 0x630B, 0x2124, 0x6B6C, 0x736A, 0x6A84, 0xABC5, 0xBBE3, 0xCC44, 0xDCA4, 0xDCC3, 0xD481, 0xD421, 0xD421, // 0x10C0 (4288) +0xDC82, 0xDC62, 0xBB80, 0xA280, 0x9200, 0xA281, 0xB322, 0xC3A2, 0xC401, 0xD481, 0xDD01, 0xE521, 0xD4C2, 0xC441, 0xB3A0, 0xA320, // 0x10D0 (4304) +0x92E0, 0x9B20, 0xB3A2, 0xC402, 0xCC62, 0xCCA2, 0xBCA1, 0xAC60, 0xA420, 0xA400, 0xB420, 0xC460, 0xCC81, 0xCCA1, 0xC481, 0xB420, // 0x10E0 (4320) +0x72E0, 0x7AE0, 0x8B20, 0x9320, 0x9320, 0x9B40, 0xA3A1, 0x9BA1, 0x8B60, 0x8360, 0x7320, 0x72C0, 0x7AA0, 0x9300, 0x9B00, 0x8AC0, // 0x10F0 (4336) +0x82C0, 0x82A0, 0x8A60, 0x9240, 0xA240, 0xA2C0, 0x8B20, 0x72E0, 0x6260, 0x6AC4, 0x5A83, 0x942C, 0xCE37, 0xC5F7, 0x7BCE, 0x73AD, // 0x1100 (4352) +0xB575, 0x9471, 0x842F, 0x5AEA, 0x4A48, 0x736C, 0x5243, 0x7B04, 0x9B64, 0xA363, 0xC3E4, 0xE4A5, 0xE4C3, 0xD481, 0xCC21, 0xC3E1, // 0x1110 (4368) +0xC402, 0xBBC2, 0xA320, 0x8A60, 0x8220, 0x8A41, 0x9AC1, 0xA321, 0xAB41, 0xBC01, 0xD4A2, 0xDD02, 0xD4C2, 0xCC61, 0xC420, 0xB3C0, // 0x1120 (4384) +0xA360, 0x9B41, 0xAB82, 0xB3A1, 0xBBE0, 0xC461, 0xBCA0, 0xAC60, 0xA440, 0x9C00, 0x9BC0, 0xA3E0, 0xB420, 0xC481, 0xC461, 0xB3E0, // 0x1130 (4400) +0x7A81, 0x82A0, 0x92E0, 0x9B00, 0x9300, 0x9B21, 0x9B61, 0x9341, 0x8300, 0x7B01, 0x72E1, 0x6AA0, 0x7AA0, 0x92E0, 0x9B20, 0x9B20, // 0x1140 (4416) +0x8AE0, 0x8AA0, 0x9A60, 0xA240, 0xB220, 0xBAA0, 0x9B20, 0x7AC0, 0x6A80, 0x6AA2, 0x6283, 0xA4CE, 0xC5F6, 0xC638, 0xA533, 0xAD74, // 0x1150 (4432) +0xBDB6, 0xA4F3, 0x8C70, 0x5289, 0x39C6, 0x5246, 0x6283, 0x8303, 0x82C2, 0x92C2, 0xBBA3, 0xDC84, 0xE4C2, 0xDCA1, 0xCC41, 0xB3C0, // 0x1160 (4448) +0x9B60, 0x9300, 0x82A0, 0x7A40, 0x7A40, 0x8241, 0x8A81, 0x92A1, 0x92C0, 0xA341, 0xBC22, 0xCC82, 0xC420, 0xBBE0, 0xC420, 0xC441, // 0x1170 (4464) +0xABC1, 0xA361, 0xA341, 0xA320, 0xAB60, 0xBC21, 0xBC80, 0xAC60, 0x9C40, 0x93E0, 0x8B80, 0x8B60, 0xA3C0, 0xB420, 0xBC00, 0xABC0, // 0x1180 (4480) +0x8A40, 0x8220, 0x8A60, 0x92C1, 0x92E1, 0x92E2, 0x8303, 0x8303, 0x7AC3, 0x72C2, 0x6AA1, 0x6A80, 0x7AA0, 0x9300, 0xA341, 0xA321, // 0x1190 (4496) +0x92E1, 0x9AA1, 0xA220, 0xB1E0, 0xB220, 0xBA81, 0xAAC1, 0x8AA0, 0x7260, 0x6A82, 0x62A5, 0xAD51, 0xBDD5, 0xBDF6, 0xB5D6, 0xA514, // 0x11A0 (4512) +0xBDF7, 0xCE59, 0x8C50, 0x5A88, 0x6A47, 0x7A45, 0x8243, 0x8A62, 0x8241, 0x8A61, 0xAB04, 0xCBE5, 0xD463, 0xCC62, 0xC402, 0xAB81, // 0x11B0 (4528) +0x8B21, 0x72E1, 0x62C0, 0x62A0, 0x6AA1, 0x72C2, 0x7AA1, 0x82A0, 0x8280, 0x92A0, 0xAB22, 0xB363, 0xA321, 0x9B00, 0xAB80, 0xC422, // 0x11C0 (4544) +0xBBC1, 0xAB61, 0x9300, 0x8AE0, 0x9B40, 0xB420, 0xBC81, 0xAC40, 0xA420, 0x9BE0, 0x9360, 0x9320, 0xA3A0, 0xB420, 0xB421, 0xA3A0, // 0x11D0 (4560) +0x8221, 0x8200, 0x8240, 0x8A81, 0x92A1, 0x8AA1, 0x82A2, 0x7AC3, 0x72A3, 0x72A3, 0x6AA2, 0x7281, 0x7AA0, 0x92E1, 0xA301, 0xA2E1, // 0x11E0 (4576) +0x9AC1, 0xA281, 0xAA01, 0xB1C0, 0xB1C0, 0xB221, 0xA261, 0x9260, 0x7241, 0x6A42, 0x62A6, 0x9C8F, 0xAD53, 0xBDD6, 0xB575, 0xA513, // 0x11F0 (4592) +0xC638, 0xBDD6, 0xA513, 0x62A9, 0x7287, 0x7A25, 0x8243, 0x8222, 0x8201, 0x8221, 0x9A83, 0xB343, 0xB3A2, 0xBBC2, 0xB3C3, 0xA383, // 0x1200 (4608) +0x8362, 0x6B21, 0x62E0, 0x5AC0, 0x6AC1, 0x72C2, 0x7AC1, 0x82C1, 0x8280, 0x8A60, 0x9280, 0x9280, 0x8260, 0x7A40, 0x92E0, 0xAB81, // 0x1210 (4624) +0xB3A2, 0xAB41, 0x92C0, 0x8AA0, 0x9B40, 0xBC21, 0xBC61, 0xB400, 0xA3E0, 0xA3C0, 0x9B80, 0xABA0, 0xB420, 0xC441, 0xB421, 0xA3A0, // 0x1220 (4640) +0x8A01, 0x8200, 0x8220, 0x8A61, 0x8A61, 0x8A62, 0x7A82, 0x7283, 0x7A83, 0x7283, 0x72A3, 0x7AA2, 0x8281, 0x92A1, 0x9AC1, 0x9AC1, // 0x1230 (4656) +0x9AA2, 0xA282, 0xB202, 0xB181, 0xB160, 0xA9A1, 0xA201, 0x9222, 0x7A23, 0x6A23, 0x7B08, 0x8BCD, 0x83CE, 0xBDB6, 0xBDB6, 0xA4F3, // 0x1240 (4672) +0xBDF6, 0xB5B6, 0xC637, 0x940E, 0x7AA7, 0x7A23, 0x8222, 0x8A22, 0x81E2, 0x81C2, 0x9222, 0x9A83, 0x9AC2, 0x9AE2, 0x9B23, 0x9364, // 0x1250 (4688) +0x8363, 0x6B22, 0x5B00, 0x5AE0, 0x6AE1, 0x72E1, 0x82E1, 0x8AE2, 0x92E1, 0x92A1, 0x8A60, 0x8220, 0x7200, 0x69E0, 0x7A40, 0x92E1, // 0x1260 (4704) +0xAB62, 0xA321, 0x8A80, 0x8260, 0xA320, 0xBC01, 0xC441, 0xB3E0, 0xB3E0, 0xB3E1, 0xABC1, 0xBBE1, 0xCC62, 0xC441, 0xB400, 0xB3E0, // 0x1270 (4720) +0x8A01, 0x81E1, 0x8221, 0x8A61, 0x8A62, 0x8262, 0x7A63, 0x7263, 0x7264, 0x7A63, 0x7A83, 0x8283, 0x8A82, 0x92A2, 0x9AA2, 0xA2A2, // 0x1280 (4736) +0x9AA2, 0xAA62, 0xB202, 0xB161, 0xA920, 0xA941, 0xA1C2, 0x9203, 0x7A23, 0x61E3, 0x6A87, 0xB4F2, 0x9470, 0x9CD2, 0xBDB6, 0x9CB2, // 0x1290 (4752) +0xBDD6, 0xBDD6, 0xC618, 0xACB1, 0x7A85, 0x8222, 0x8A22, 0x8A02, 0x81C2, 0x89C2, 0x9222, 0x9242, 0x8A62, 0x8A83, 0x8AC3, 0x8B24, // 0x12A0 (4768) +0x7343, 0x6321, 0x5B21, 0x5B00, 0x6AE1, 0x7AE1, 0x82E1, 0x92E1, 0xA322, 0x9B02, 0x8A81, 0x7A41, 0x7221, 0x6201, 0x6A00, 0x8281, // 0x12B0 (4784) +0x9B21, 0x9B01, 0x8A80, 0x8260, 0xA320, 0xBBE2, 0xC401, 0xBBE0, 0xBC01, 0xBC01, 0xB3C1, 0xBBE1, 0xCC42, 0xC421, 0xB3E1, 0xB401, // 0x12C0 (4800) +}; diff --git a/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/cat.c b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/cat.c new file mode 100644 index 0000000..bfc86c0 --- /dev/null +++ b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/cat.c @@ -0,0 +1,314 @@ +// Generated by : ImageConverter 565 v1.2 +// Dimensions : 80x60 pixels +// Size : 9 600 Bytes + +#if defined(__AVR__) + #include +#elif defined(__PIC32MX__) + #define PROGMEM +#elif defined(__arm__) + #define PROGMEM +#endif + +const unsigned short cat[0x12C0] PROGMEM ={ +0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0820, 0x0800, 0x0000, 0x0820, 0x1062, 0x0820, // 0x0010 (16) +0x0800, 0x28E3, 0x3144, 0x2903, 0x20A1, 0x1040, 0x0820, 0x0820, 0x1041, 0x20C3, 0x20E3, 0x1862, 0x1882, 0x1882, 0x18C2, 0x0840, // 0x0020 (32) +0x1000, 0x3103, 0x3103, 0x41C6, 0x6289, 0x5A68, 0x3144, 0x2081, 0x6289, 0x944F, 0x732A, 0x8BCD, 0x8BCD, 0x940E, 0x9C4F, 0x8BAC, // 0x0030 (48) +0x49E5, 0x4184, 0x6AEA, 0x5A68, 0x3964, 0x2903, 0x0800, 0x0800, 0x0800, 0x1881, 0x1041, 0x1882, 0x20A2, 0x20A2, 0x20A2, 0x20C2, // 0x0040 (64) +0x28C1, 0x28C1, 0x28E2, 0x28C2, 0x28C2, 0x28A2, 0x2082, 0x2082, 0x28C2, 0x28C2, 0x2903, 0x2903, 0x28E2, 0x2903, 0x2923, 0x2923, // 0x0050 (80) +0x0820, 0x0821, 0x0820, 0x0800, 0x0800, 0x0820, 0x0800, 0x0800, 0x0800, 0x0820, 0x0820, 0x0800, 0x0820, 0x0820, 0x94B2, 0xB575, // 0x0060 (96) +0x734D, 0x4186, 0x41C6, 0x5248, 0x6AEA, 0x5247, 0x3984, 0x3964, 0x3103, 0x20C2, 0x3124, 0x3144, 0x20C2, 0x1881, 0x3144, 0x39A5, // 0x0070 (112) +0x3944, 0x49C6, 0x5227, 0x83AD, 0x9C70, 0x7B6C, 0x732B, 0x6289, 0xACF2, 0xBD53, 0x9C4F, 0x6AC9, 0x732A, 0x5A67, 0xA490, 0xA4B0, // 0x0080 (128) +0x5A47, 0x2080, 0x3964, 0x5227, 0x6ACA, 0x734C, 0x3144, 0x1000, 0x1020, 0x1881, 0x1020, 0x1861, 0x1840, 0x3103, 0x28E2, 0x2081, // 0x0090 (144) +0x28C2, 0x1880, 0x2081, 0x28C2, 0x28E2, 0x20A1, 0x1881, 0x20A2, 0x20A2, 0x20C2, 0x28E2, 0x28E2, 0x20E2, 0x2903, 0x2923, 0x2903, // 0x00A0 (160) +0x0821, 0x0821, 0x0800, 0x0000, 0x0800, 0x0820, 0x0800, 0x0000, 0x0820, 0x0821, 0x0800, 0x0000, 0x0000, 0x0000, 0x4A28, 0xBDB6, // 0x00B0 (176) +0xE6FB, 0xD638, 0xACF3, 0x7B4C, 0x4A07, 0x6288, 0x7B4B, 0x7B4B, 0x7B6C, 0x6AA9, 0x4185, 0x4185, 0x49E6, 0x49C6, 0x5A68, 0x734B, // 0x00C0 (192) +0x6AEA, 0x6AC9, 0x734B, 0x9C70, 0x8C0F, 0x7B6C, 0x7B6C, 0x9C90, 0xD617, 0xAD12, 0x6289, 0x6ACA, 0x732B, 0x3984, 0x9C50, 0xCDD6, // 0x00D0 (208) +0x5A68, 0x2902, 0x5227, 0x732B, 0x944F, 0xA491, 0x7B4C, 0x28E3, 0x4185, 0x4185, 0x28C2, 0x1840, 0x1020, 0x28C2, 0x2081, 0x2081, // 0x00E0 (224) +0x1881, 0x20A2, 0x1881, 0x1861, 0x20A2, 0x20A1, 0x2081, 0x20A2, 0x28E2, 0x2903, 0x28E2, 0x28E2, 0x28E3, 0x28E2, 0x2903, 0x2903, // 0x00F0 (240) +0x0820, 0x0820, 0x0000, 0x0000, 0x0000, 0x0820, 0x0800, 0x0000, 0x0000, 0x0820, 0x0000, 0x0820, 0x0000, 0x0820, 0x0841, 0x18A3, // 0x0100 (256) +0x630C, 0xBDD7, 0xDE99, 0xE6DB, 0xBDB5, 0x9C71, 0x7B4C, 0x6AA9, 0x6AEA, 0x6ACA, 0x5A68, 0x41A5, 0x5227, 0x940E, 0x9C90, 0x83CD, // 0x0110 (272) +0x732A, 0x838C, 0x9C70, 0xACD1, 0x8BEE, 0x7B6C, 0x940F, 0xB533, 0xE699, 0xB533, 0x5A68, 0x734C, 0x62A9, 0x49E6, 0xACF2, 0xD657, // 0x0120 (288) +0x83AD, 0x5248, 0x5227, 0x62A9, 0xA4D2, 0xACF2, 0x8BCE, 0x6289, 0x5207, 0x5207, 0x5A68, 0x49C6, 0x28E2, 0x1840, 0x2081, 0x2081, // 0x0130 (304) +0x20A2, 0x20A2, 0x20A2, 0x28E3, 0x28E2, 0x20C2, 0x20C2, 0x20C2, 0x20C2, 0x3123, 0x3123, 0x3103, 0x2903, 0x20A2, 0x20E3, 0x28E3, // 0x0140 (320) +0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0821, // 0x0150 (336) +0x3186, 0x6B6E, 0x94B3, 0xC5F8, 0xDEBB, 0xEF1C, 0xDE9A, 0xC5B6, 0xA4B2, 0x9C71, 0x9C70, 0xA4B1, 0x942F, 0x9C90, 0x9C90, 0x7B6C, // 0x0160 (352) +0x7B6B, 0x9C6F, 0xACF1, 0xACD1, 0x7B8C, 0x734B, 0x83CD, 0xBD54, 0xCDF6, 0xCDD6, 0x734C, 0x8C0F, 0x49E6, 0x5A89, 0xBD75, 0xD658, // 0x0170 (368) +0x83AD, 0x734B, 0x62C9, 0x7B6C, 0xACD1, 0xACD1, 0x93EE, 0x6268, 0x51E6, 0x83AD, 0x9C4F, 0x72EA, 0x5A27, 0x49A5, 0x5207, 0x41A6, // 0x0180 (384) +0x3945, 0x20C3, 0x2082, 0x20A2, 0x2081, 0x28E2, 0x3144, 0x28E2, 0x3985, 0x3144, 0x28E3, 0x20C3, 0x20E3, 0x1040, 0x1040, 0x20C2, // 0x0190 (400) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0x0000, 0x0000, 0x0000, 0x0820, 0x0800, 0x0000, // 0x01A0 (416) +0x18C3, 0x736E, 0x8C72, 0xAD36, 0xC619, 0xD67B, 0xD69B, 0xE6FC, 0xEF3D, 0xEEFC, 0xE71B, 0xE6B9, 0xCE37, 0xBD74, 0x940E, 0x838C, // 0x01B0 (432) +0x940E, 0xA4B0, 0xA4B0, 0x942E, 0x6288, 0x5A47, 0xA4B1, 0x7B6C, 0x942F, 0xCDD6, 0x8BEE, 0x9C70, 0x6AEA, 0x9C70, 0x942F, 0xA491, // 0x01C0 (448) +0xA4B1, 0x62A9, 0x6AC9, 0x83AD, 0xACB1, 0xACB1, 0x93EE, 0x62A8, 0x72C9, 0x8BAD, 0xA470, 0xA470, 0x942F, 0x7B6C, 0x730B, 0x5207, // 0x01D0 (464) +0x3124, 0x20A2, 0x1040, 0x1881, 0x3964, 0x5247, 0x62C9, 0x62A9, 0x49E7, 0x5A69, 0x8C10, 0xAD14, 0xC5D7, 0xACF4, 0x5A89, 0x20E3, // 0x01E0 (480) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x0841, // 0x01F0 (496) +0x0820, 0x6B2D, 0xA4F5, 0xB597, 0xC63A, 0xD67C, 0xD69C, 0xCE7B, 0xCE39, 0xCE79, 0xD699, 0xD678, 0xBD95, 0xA4B1, 0x8BCD, 0x7B2A, // 0x0200 (512) +0x9C6F, 0xACF1, 0x9C4F, 0x6AC9, 0x41A5, 0x7B6C, 0xA491, 0x5227, 0x7B4B, 0xC5B5, 0xACD2, 0x83AD, 0x9C4F, 0xC5B5, 0x5A68, 0x5A47, // 0x0210 (528) +0xACD2, 0x836C, 0x51E6, 0x6AA9, 0xA46F, 0xACB0, 0x9C4E, 0x7B2A, 0x836B, 0x93EE, 0xA490, 0xBD53, 0xCDD5, 0xACB1, 0x732B, 0x49E6, // 0x0220 (544) +0x28E2, 0x1020, 0x0800, 0x2902, 0x5247, 0x5A88, 0x62A9, 0x734D, 0xA4D3, 0xDE7A, 0xDEBB, 0xDEBB, 0xCE18, 0xAD14, 0x9CD2, 0x4207, // 0x0230 (560) +0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0x0000, 0x0800, 0x0000, 0x0800, // 0x0240 (576) +0x0800, 0x41C7, 0xAD35, 0xB577, 0xC61A, 0xBDD9, 0xBE1A, 0xC63A, 0xC619, 0xBDF8, 0xD699, 0xD658, 0xB533, 0xA470, 0x9C0E, 0x8BAD, // 0x0250 (592) +0x8BAD, 0xA490, 0x9C70, 0x730A, 0x6AE9, 0xACF2, 0xACF2, 0x8BEE, 0x838C, 0xCDF6, 0x9C70, 0x9C4F, 0xC574, 0xB4F2, 0x72EA, 0x7B4C, // 0x0260 (608) +0xB533, 0xACF2, 0x5206, 0x7B4B, 0x9C4F, 0xB4D1, 0x9C4F, 0x940E, 0x93CD, 0x9C0E, 0xACB0, 0xB513, 0xCDF6, 0xD617, 0xC5D5, 0xBD95, // 0x0270 (624) +0x8BEE, 0x6289, 0x6288, 0x7B8C, 0x8C0E, 0xA4B1, 0xC5B5, 0xDE9A, 0xD65A, 0xC5B8, 0xB556, 0x9CB4, 0x7BAF, 0x630C, 0x6B4C, 0x3185, // 0x0280 (640) +0x0000, 0x0800, 0x0820, 0x0820, 0x0800, 0x0800, 0x0800, 0x0820, 0x0800, 0x0800, 0x0820, 0x0820, 0x0800, 0x0000, 0x0800, 0x0820, // 0x0290 (656) +0x1060, 0x1041, 0x8BF1, 0xCE1A, 0xB598, 0xC61A, 0xCE5B, 0xCE3A, 0xD67B, 0xCE39, 0xDE79, 0xC5B5, 0xA4B0, 0x942E, 0x7B6B, 0x838C, // 0x02A0 (672) +0x836C, 0x940E, 0xB513, 0x9450, 0x9430, 0xCDF7, 0xD658, 0xA4B1, 0x8BAD, 0xACB1, 0x9C2E, 0xAC90, 0xBD73, 0x7B4C, 0x944F, 0xC5D6, // 0x02B0 (688) +0xCDD6, 0xBD13, 0x8BAD, 0x93EE, 0xA490, 0xACB1, 0xB4D1, 0xA42E, 0x9BED, 0xA40D, 0x9BED, 0xAC6F, 0xCD94, 0xDE99, 0xDEBA, 0xE6DB, // 0x02C0 (704) +0xE6DB, 0xE6DB, 0xDE9A, 0xCE39, 0xDE7A, 0xE6BC, 0xCE3A, 0xC5F9, 0xBDB8, 0xA515, 0x9452, 0x734E, 0x62EC, 0x9CB3, 0x734D, 0x20C3, // 0x02D0 (720) +0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0800, 0x0820, 0x0820, 0x0800, 0x0800, 0x0820, 0x0820, 0x0800, 0x0800, 0x0820, 0x1020, // 0x02E0 (736) +0x1861, 0x1041, 0x522A, 0xD67C, 0xC61A, 0xCE5B, 0xD67B, 0xDEDD, 0xDEBC, 0xD67A, 0xC5D7, 0xBD74, 0xA4B0, 0x83AC, 0x6AC9, 0x5A27, // 0x02F0 (752) +0x6288, 0xA490, 0xAD12, 0x940F, 0x9C70, 0xCDD7, 0xE6DA, 0xB4F2, 0x93EE, 0x8BAD, 0x836C, 0x942E, 0xACD1, 0x7B6C, 0xC5B5, 0xE6DA, // 0x0300 (768) +0xDE37, 0xACD2, 0x8BCD, 0x9C90, 0xA4D2, 0x838D, 0x838C, 0x940E, 0x9BED, 0x93CC, 0x93AC, 0x9C2E, 0xBD53, 0xDE78, 0xDE99, 0xC5F8, // 0x0310 (784) +0xC5D7, 0xBDB7, 0xC5D7, 0xD65A, 0xCE3A, 0xCE19, 0xCE5A, 0xCE1A, 0xB577, 0x9CD4, 0x9CB4, 0x9CB3, 0xBD97, 0xAD35, 0x3986, 0x28E4, // 0x0320 (800) +0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x1040, // 0x0330 (816) +0x1061, 0x1061, 0x3186, 0xCE1A, 0xDEDC, 0xCE3A, 0xDEDD, 0xE6FD, 0xD65A, 0xC5B7, 0xB554, 0xB513, 0xACF1, 0x83AC, 0x51E6, 0x3102, // 0x0340 (832) +0x5A47, 0xB533, 0xACD2, 0x4A07, 0x8C0F, 0xD638, 0xE6DA, 0xC5B5, 0x8BEE, 0x838C, 0x9C4F, 0x9C4F, 0x9C70, 0x9C90, 0xE6D9, 0xEEFA, // 0x0350 (848) +0xCDF6, 0x838C, 0x732B, 0xACF2, 0xACF2, 0x6AEA, 0x49E6, 0x7B0A, 0x8BAC, 0x9C0E, 0xA42F, 0xA44F, 0xACF2, 0xCDD6, 0xC5F7, 0xB555, // 0x0360 (864) +0xB576, 0xC5F8, 0xCE39, 0xD67B, 0xD67B, 0xD69B, 0xD69C, 0xCE5B, 0xC5FA, 0xB598, 0xBDB8, 0xCE19, 0xD67A, 0x6B0C, 0x18A2, 0x28E3, // 0x0370 (880) +0x1020, 0x0820, 0x0820, 0x0820, 0x0820, 0x1020, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x1020, // 0x0380 (896) +0x1040, 0x1061, 0x2904, 0xB576, 0xDEDC, 0xC61A, 0xDEBC, 0xE6FD, 0xCE18, 0xB534, 0xBD74, 0xB512, 0xA4B1, 0x836C, 0x5A48, 0x5A48, // 0x0390 (912) +0x4164, 0xACD2, 0xBD54, 0x3985, 0x83CE, 0xE6DA, 0xFF9D, 0xD657, 0xBD53, 0xACD1, 0xB532, 0xBD53, 0xBD73, 0xD637, 0xEF3B, 0xEEFA, // 0x03A0 (928) +0xAD12, 0x41C5, 0x62C9, 0xC595, 0xC5B5, 0x6AC9, 0x3122, 0x51E5, 0x72C9, 0x9BED, 0xAC90, 0xA490, 0xB512, 0xCDB5, 0xC5B6, 0xBD96, // 0x03B0 (944) +0xC5D7, 0xCE5A, 0xD69B, 0xCE3A, 0xC63A, 0xC61A, 0xC5FA, 0xCE7B, 0xCE3A, 0xCE3A, 0xD67B, 0xEF1D, 0xB596, 0x3145, 0x3124, 0x20E3, // 0x03C0 (960) +0x0820, 0x0800, 0x0800, 0x0820, 0x1020, 0x1020, 0x1020, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, // 0x03D0 (976) +0x1061, 0x0840, 0x20E3, 0xA4F4, 0xEF5E, 0xBDB8, 0xBD97, 0xDE9B, 0xDE79, 0xB513, 0xACF2, 0xACF2, 0xA491, 0x8BCE, 0x93EE, 0xA491, // 0x03E0 (992) +0x940F, 0x8BCE, 0xC5D6, 0x7B6C, 0x9450, 0xEF3C, 0xFF9D, 0xE6B9, 0xDE57, 0xD616, 0xC594, 0xD616, 0xDE78, 0xE6FA, 0xFFBD, 0xEF1A, // 0x03F0 (1008) +0x942F, 0x3984, 0x838C, 0xCDF6, 0x7B4B, 0x4163, 0x4163, 0x4984, 0x5205, 0x8BAC, 0xBCF1, 0xBCF1, 0xBCF2, 0xC533, 0xC574, 0xCDD6, // 0x0400 (1024) +0xD679, 0xD69A, 0xDEBB, 0xD69B, 0xD67B, 0xCE5B, 0xC5F9, 0xBDD9, 0xCE5B, 0xDE9C, 0xDEDC, 0xDEDC, 0x62CB, 0x18A2, 0x28E3, 0x20E2, // 0x0410 (1040) +0x0820, 0x0820, 0x0820, 0x1021, 0x1041, 0x1041, 0x1041, 0x1041, 0x1021, 0x1021, 0x1021, 0x1041, 0x1041, 0x1021, 0x1021, 0x1021, // 0x0420 (1056) +0x1040, 0x1061, 0x1061, 0x4A28, 0xE6DC, 0xE6BC, 0xD67A, 0xD619, 0xC5D6, 0xBD53, 0xB533, 0xACD1, 0xA491, 0xBD54, 0xB554, 0xB513, // 0x0430 (1072) +0xC5B5, 0xBD95, 0xDE99, 0xBD75, 0xC5D6, 0xFF9D, 0xF79D, 0xDEB9, 0xD637, 0xDE98, 0xDE77, 0xDE77, 0xDE98, 0xEF1B, 0xFFDE, 0xE71B, // 0x0440 (1088) +0x9450, 0x6AEA, 0xD616, 0x9C70, 0x6AC9, 0x838C, 0x9C4F, 0x8BAC, 0x834B, 0x9C0D, 0xBD11, 0xBD32, 0xC532, 0xC533, 0xBD12, 0xB4F2, // 0x0450 (1104) +0xB554, 0xDE9A, 0xEF3D, 0xF75E, 0xEF3E, 0xE6DD, 0xD65B, 0xC5D9, 0xC5F9, 0xDE9B, 0xEF3E, 0xCE39, 0x39A6, 0x2904, 0x28E3, 0x2903, // 0x0460 (1120) +0x1040, 0x1040, 0x1040, 0x1041, 0x1041, 0x1041, 0x1041, 0x1041, 0x1041, 0x1041, 0x1041, 0x1041, 0x1041, 0x1041, 0x1041, 0x1041, // 0x0470 (1136) +0x1040, 0x1881, 0x1061, 0x2924, 0xBD96, 0xE6BC, 0xD639, 0xC5B6, 0xBD54, 0xBD53, 0xC594, 0xB512, 0xB4F3, 0xCDF7, 0xDE99, 0xE6B9, // 0x0480 (1152) +0xD658, 0xD658, 0xF77D, 0xFFBE, 0xEF3C, 0xFFBE, 0xF79D, 0xDEB9, 0xDE78, 0xE6B9, 0xE6D9, 0xD657, 0xDE98, 0xF75C, 0xFFDE, 0xF77D, // 0x0490 (1168) +0xBDD6, 0xCE37, 0xE6DA, 0xCDF6, 0xD617, 0xC594, 0xBD53, 0xB512, 0xACD1, 0xACD1, 0xBD33, 0xBD33, 0xC573, 0xC553, 0xBCF1, 0xACB1, // 0x04A0 (1184) +0xBD54, 0xD637, 0xDEBA, 0xEEFB, 0xE6DB, 0xC5D8, 0xB556, 0xB557, 0xCE1A, 0xDE9B, 0xDEBB, 0x8C10, 0x3145, 0x3144, 0x2903, 0x20C2, // 0x04B0 (1200) +0x1041, 0x1041, 0x1041, 0x1040, 0x1040, 0x1040, 0x1040, 0x1040, 0x1040, 0x1041, 0x1041, 0x1041, 0x1040, 0x1040, 0x1041, 0x1041, // 0x04C0 (1216) +0x1061, 0x1040, 0x18A2, 0x20C2, 0x9451, 0xE6DC, 0xC5D8, 0xA492, 0xB513, 0xCDD5, 0xBD73, 0xA490, 0xBD75, 0xCDF7, 0xD637, 0x9450, // 0x04D0 (1232) +0x41C6, 0x5269, 0x736D, 0xBDD6, 0xFFDE, 0xFFFF, 0xF79D, 0xCE58, 0xD678, 0xEEFA, 0xE6B9, 0xD637, 0xDE99, 0xF77C, 0xFFFF, 0xFFBE, // 0x04E0 (1248) +0xFFDF, 0xE6FB, 0xBDB6, 0xBD75, 0xBD95, 0xE6B9, 0xDE78, 0xD637, 0xC5D5, 0xBD54, 0xB512, 0xACD2, 0xC594, 0xCD94, 0xB511, 0xB4F1, // 0x04F0 (1264) +0xBD33, 0xB513, 0xD637, 0xE6BA, 0xCDF7, 0xB535, 0xB576, 0xD639, 0xD67A, 0xEF1D, 0xCE39, 0x41E8, 0x2904, 0x3144, 0x2102, 0x2943, // 0x0500 (1280) +0x0820, 0x1041, 0x1041, 0x1040, 0x1040, 0x1041, 0x1040, 0x0820, 0x1040, 0x1041, 0x1041, 0x1040, 0x1040, 0x1040, 0x1041, 0x1041, // 0x0510 (1296) +0x1061, 0x1881, 0x20C2, 0x20E2, 0x6B0B, 0xC5B5, 0x9C4F, 0x9C4F, 0xACB0, 0xB4D1, 0xC553, 0xC595, 0xBD54, 0xBD54, 0xACF2, 0x4A28, // 0x0520 (1312) +0x3A08, 0x2165, 0x2966, 0x39E8, 0x94B2, 0xFFFF, 0xFFBD, 0xDEB9, 0xDEB9, 0xE6F9, 0xE6FA, 0xD657, 0xE6FA, 0xFFDE, 0xFFDE, 0xFFFF, // 0x0530 (1328) +0x9CD3, 0x4A69, 0x41E7, 0x41E7, 0x4207, 0x5A8A, 0xBD95, 0xE6DA, 0xDE57, 0xCDD5, 0xBD52, 0xB511, 0xCDB4, 0xCDB4, 0xC594, 0xC594, // 0x0540 (1344) +0xC532, 0xA44F, 0xB4F2, 0xD638, 0xC5D7, 0xC5F8, 0xD69B, 0xDEFC, 0xE6FC, 0xEF5D, 0x7B8E, 0x20E3, 0x18A2, 0x2903, 0x2944, 0x2944, // 0x0550 (1360) +0x1040, 0x1041, 0x1061, 0x1041, 0x1041, 0x1061, 0x1061, 0x1041, 0x1041, 0x1041, 0x1041, 0x1061, 0x1041, 0x1040, 0x1041, 0x1061, // 0x0560 (1376) +0x1882, 0x20C2, 0x20E3, 0x2902, 0x39A5, 0x838C, 0x83AC, 0x940E, 0x93ED, 0x93CD, 0x8BAC, 0x8BAD, 0x9C50, 0xCE37, 0xB574, 0x632C, // 0x0570 (1392) +0x29C7, 0x0062, 0x08C3, 0x4A8B, 0x634D, 0xE71C, 0xFFFF, 0xDEDA, 0xDE99, 0xE6DA, 0xE6D9, 0xDEB9, 0xEF5C, 0xFFDE, 0xFFFF, 0xCE59, // 0x0580 (1408) +0x632D, 0x4A6A, 0x10C3, 0x18E4, 0x632C, 0x5AAA, 0x5269, 0xB574, 0xCDF6, 0xB533, 0xCDD5, 0xCDB5, 0xC573, 0xBD53, 0xC574, 0xB4F1, // 0x0590 (1424) +0xB4D0, 0x9BED, 0x7B4B, 0xA4B1, 0xC5D7, 0xC5D7, 0xCE39, 0xD67B, 0xDEBB, 0xBD97, 0x41C7, 0x1040, 0x1881, 0x20E3, 0x3144, 0x3144, // 0x05A0 (1440) +0x1061, 0x1061, 0x1061, 0x1061, 0x1881, 0x1881, 0x1881, 0x1881, 0x1061, 0x1061, 0x1061, 0x1881, 0x1881, 0x1061, 0x1061, 0x1881, // 0x05B0 (1456) +0x20C2, 0x20C2, 0x20E2, 0x3144, 0x6289, 0x83AC, 0x8BAC, 0x93CD, 0x6267, 0x2060, 0x3943, 0x6AA9, 0xCDF6, 0xFF7D, 0x840F, 0x4A69, // 0x05C0 (1472) +0x08A3, 0x0084, 0x4ACC, 0x73F0, 0x5B0D, 0xAD56, 0xFFFF, 0xEF3C, 0xDEDA, 0xE6FB, 0xE6DA, 0xE6DA, 0xF79D, 0xFFFF, 0xEF5D, 0x8410, // 0x05D0 (1488) +0x6BAF, 0x08A4, 0x29A7, 0x31E9, 0x1925, 0x8C92, 0x5269, 0x9C92, 0xBD74, 0x83AD, 0x8BEE, 0xB512, 0xCDB5, 0xCD94, 0xC574, 0xC553, // 0x05E0 (1504) +0xBD11, 0xB4D1, 0x8B8C, 0x836C, 0xACF3, 0xC5D7, 0xCE18, 0xD659, 0xC5D7, 0xAD34, 0x5249, 0x1881, 0x20A2, 0x3144, 0x3164, 0x41C6, // 0x05F0 (1520) +0x1881, 0x1881, 0x1881, 0x1882, 0x18A2, 0x1882, 0x1882, 0x18A2, 0x1882, 0x1881, 0x1881, 0x18A2, 0x18A2, 0x1882, 0x1881, 0x1881, // 0x0600 (1536) +0x20A2, 0x20E3, 0x2903, 0x3964, 0x6AEA, 0x838C, 0x8BAC, 0x72C9, 0x3922, 0x5A27, 0x72C9, 0x7B4C, 0xE6DA, 0xFF9D, 0x630B, 0x4A69, // 0x0610 (1552) +0x2166, 0x10E5, 0x2167, 0x5B2D, 0x6B8F, 0x7BF0, 0xF7BF, 0xF77D, 0xE71B, 0xE6DA, 0xE6FA, 0xEF3C, 0xFFFF, 0xFF9E, 0x7B8E, 0x4209, // 0x0620 (1568) +0x6B8F, 0x00A4, 0x3A2A, 0x426B, 0x2187, 0x8452, 0x528A, 0xB555, 0xF77D, 0xB533, 0x730A, 0x5A27, 0x6268, 0x7B4B, 0x940F, 0xB4D1, // 0x0630 (1584) +0xC553, 0xB4B0, 0xAC90, 0x8BAD, 0x940F, 0xCDD6, 0xCDF7, 0xB555, 0x9C92, 0x6AEB, 0x3165, 0x3985, 0x39A5, 0x41C6, 0x41E6, 0x3164, // 0x0640 (1600) +0x18A2, 0x18A1, 0x18A1, 0x18A2, 0x18A2, 0x18A1, 0x1881, 0x18A2, 0x18A2, 0x18A2, 0x18A1, 0x18A1, 0x18A2, 0x18A2, 0x1881, 0x1881, // 0x0650 (1616) +0x18A1, 0x20C2, 0x28E2, 0x3964, 0x5206, 0x6AC9, 0x7B4B, 0x4184, 0x4984, 0x72C9, 0x6AA9, 0x72EB, 0xC5B5, 0xFF9D, 0xC5D6, 0x4A69, // 0x0660 (1632) +0x3A08, 0x3A09, 0x5ACC, 0x73AF, 0x526A, 0x3986, 0xAD14, 0xE6DA, 0xDEB9, 0xCDF6, 0xEEFA, 0xEEDA, 0xEEFA, 0xA4B1, 0x4A07, 0x39A7, // 0x0670 (1648) +0x634E, 0x426B, 0x1105, 0x2146, 0x5B4D, 0x6B6E, 0x4A49, 0xDEDB, 0xFFBE, 0xDE58, 0x940F, 0x7B2B, 0x5A27, 0x3102, 0x28E2, 0x49C6, // 0x0680 (1664) +0x72E9, 0x836C, 0x93EE, 0x8BAD, 0x8BCE, 0xC574, 0xACB2, 0x6ACA, 0x4A07, 0x2904, 0x39A6, 0x5249, 0x5268, 0x5A69, 0x41C6, 0x3964, // 0x0690 (1680) +0x20C2, 0x20C2, 0x20C2, 0x20C2, 0x20C2, 0x18A1, 0x18A1, 0x18A1, 0x18A1, 0x18A1, 0x18A1, 0x1881, 0x18A1, 0x18A1, 0x18A1, 0x1881, // 0x06A0 (1696) +0x1881, 0x20C2, 0x2923, 0x3985, 0x49E6, 0x5227, 0x3103, 0x3964, 0x7B2B, 0x4184, 0x49C6, 0x51E6, 0x732B, 0xBD74, 0xF75C, 0xF73B, // 0x06B0 (1712) +0xDE99, 0xE6FB, 0xFF9D, 0xF73C, 0x732C, 0x41A5, 0x83AD, 0xC594, 0xCDB5, 0xC5B4, 0xD616, 0xC594, 0x730A, 0x3923, 0x51E6, 0x83CE, // 0x06C0 (1728) +0xB5B6, 0xA535, 0x8431, 0x73AF, 0x73AE, 0x6B6D, 0xCE38, 0xFFBE, 0xF73B, 0xACB1, 0x6288, 0x7B4B, 0xA491, 0x940F, 0x5207, 0x1860, // 0x06D0 (1744) +0x28A1, 0x4165, 0x6AA9, 0x838D, 0x730B, 0xACD2, 0xCDD6, 0x7B6D, 0x1861, 0x20C2, 0x3185, 0x5269, 0x62EA, 0x62EA, 0x41E6, 0x2902, // 0x06E0 (1760) +0x20E2, 0x20E2, 0x20E2, 0x20E2, 0x20E2, 0x20C2, 0x20C2, 0x20C2, 0x20C2, 0x20C2, 0x20C2, 0x20C2, 0x20A2, 0x20C2, 0x20C2, 0x20C2, // 0x06F0 (1776) +0x2903, 0x2902, 0x2903, 0x3144, 0x5228, 0x4A27, 0x1040, 0x5A89, 0xBD75, 0x838D, 0x5227, 0x836C, 0x7B6C, 0x7B4B, 0x9C4F, 0xC594, // 0x0700 (1792) +0xD657, 0xDE98, 0xD617, 0xB4F2, 0x6268, 0x8B8C, 0x8BAD, 0xB512, 0xB4D1, 0xB4F1, 0xBD32, 0xA44F, 0x6288, 0x3943, 0x51E6, 0xCDB5, // 0x0710 (1808) +0xFFFE, 0xFFFE, 0xFFDE, 0xF77D, 0xEF1B, 0xF73C, 0xEF1A, 0xDE78, 0xA490, 0x5A47, 0x6AC9, 0x836C, 0x62A8, 0x732B, 0x9450, 0x732B, // 0x0720 (1824) +0x3144, 0x3104, 0x4A07, 0x838D, 0x7B4B, 0x8BCE, 0xB533, 0x9C91, 0x41A6, 0x1040, 0x2924, 0x4A48, 0x5AA9, 0x62EA, 0x5247, 0x3164, // 0x0730 (1840) +0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x28E3, 0x2903, 0x20E2, 0x20E2, 0x20E2, 0x20E2, 0x20C2, 0x20E2, 0x2923, // 0x0740 (1856) +0x3123, 0x3143, 0x3964, 0x3164, 0x2923, 0x18A2, 0x1881, 0x5A8A, 0xB554, 0x8BEF, 0x41A5, 0x6268, 0x836C, 0x838C, 0x834A, 0xA46F, // 0x0750 (1872) +0xB512, 0xA490, 0x836C, 0x7B2B, 0xACD1, 0xC594, 0xA42E, 0xB4B0, 0xA44E, 0xACB0, 0xACAF, 0xB4F1, 0x9C2E, 0x72EA, 0x49C5, 0x7B4C, // 0x0760 (1888) +0xBD73, 0xDE57, 0xDE78, 0xD657, 0xD637, 0xBD74, 0xACD1, 0xA470, 0x9C4F, 0x9C4F, 0xA470, 0x7B4B, 0x7B6B, 0x7B6C, 0x9C91, 0xCE38, // 0x0770 (1904) +0x83EF, 0x5228, 0x5228, 0x730B, 0x7B6C, 0x838D, 0x8BEE, 0xA4B1, 0x6B2B, 0x3165, 0x3165, 0x3185, 0x3165, 0x5248, 0x5A89, 0x39A5, // 0x0780 (1920) +0x2903, 0x2923, 0x2923, 0x2923, 0x2903, 0x2923, 0x2923, 0x2923, 0x2923, 0x2923, 0x2923, 0x2923, 0x2903, 0x2903, 0x2903, 0x2903, // 0x0790 (1936) +0x3144, 0x3123, 0x3985, 0x4A08, 0x3165, 0x3144, 0x5A8A, 0xB554, 0x8C0F, 0x49C6, 0x5207, 0x5227, 0x6ACA, 0x732B, 0xAD12, 0xE6B9, // 0x07A0 (1952) +0xBD94, 0x5227, 0x5207, 0xB554, 0xEF1B, 0xACF2, 0x7B4C, 0x838D, 0x8BCE, 0x8BCE, 0x83CD, 0x944F, 0xCE36, 0xE697, 0xACD0, 0x6267, // 0x07B0 (1968) +0x6268, 0xA490, 0xC574, 0xBD53, 0xBD53, 0xB4D1, 0xA470, 0x8BCD, 0x8BAD, 0x836C, 0x6288, 0x732B, 0xBD54, 0xE6B9, 0xE6DA, 0xE6FB, // 0x07C0 (1984) +0xCE17, 0x6AEC, 0x3985, 0x3986, 0x41C6, 0x62A9, 0x7B6C, 0x9450, 0x7B8D, 0x5248, 0x4A07, 0x4A48, 0x4207, 0x3185, 0x3164, 0x2943, // 0x07D0 (2000) +0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x20E2, 0x20E2, // 0x07E0 (2016) +0x3123, 0x41A6, 0x4A28, 0x5269, 0x4A28, 0x5269, 0x9451, 0xB554, 0xB554, 0x838D, 0x6ACA, 0x7B6C, 0x62A9, 0x9450, 0xD658, 0xE6B9, // 0x07F0 (2032) +0xD678, 0xC5D6, 0xBD95, 0xD678, 0xFFDE, 0x9430, 0x4185, 0x6248, 0x72EA, 0x5A48, 0x4A06, 0x5247, 0xD657, 0xFF9C, 0xE678, 0x72EA, // 0x0800 (2048) +0x49A5, 0x6ACA, 0xCDF6, 0xD5F6, 0xC595, 0xB533, 0xACD1, 0xACB1, 0xA470, 0x9C2F, 0x6AEA, 0x6AEA, 0x8BEE, 0x9C50, 0xACF3, 0xDE9A, // 0x0810 (2064) +0xEF1C, 0xB575, 0x5A8A, 0x3985, 0x3985, 0x3124, 0x4A07, 0x734C, 0x734C, 0x5AAA, 0x6B4C, 0x62EB, 0x3185, 0x10A1, 0x20E2, 0x3185, // 0x0820 (2080) +0x2903, 0x2923, 0x2923, 0x2923, 0x2903, 0x2923, 0x2923, 0x2923, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x28E3, 0x28E3, // 0x0830 (2096) +0x2923, 0x3985, 0x4A28, 0x5A89, 0x5269, 0x5AAA, 0xA4B2, 0x9430, 0x734C, 0x9C91, 0x8BEE, 0x734C, 0x9450, 0xBD75, 0xD679, 0xE6FB, // 0x0840 (2112) +0xEF3C, 0xEF5C, 0xFFFE, 0xFFBE, 0xFFFE, 0xD659, 0x3965, 0x5A28, 0x5A49, 0x5228, 0x5227, 0x8C0F, 0xFF7C, 0xFF7D, 0xDE38, 0xEEBA, // 0x0850 (2128) +0xDE78, 0xC5B6, 0xC5B6, 0xEF1B, 0xE6B9, 0xC5B6, 0xACF2, 0x8BEE, 0x7B4C, 0x732B, 0x6AEA, 0x6AEA, 0x62CA, 0x6B0B, 0x9C70, 0xDE79, // 0x0860 (2144) +0xE6DB, 0xE6FC, 0xB575, 0x6AEB, 0x41C6, 0x41A6, 0x5A69, 0x83CE, 0x5AAA, 0x5269, 0x6B2C, 0x4A49, 0x2123, 0x18A2, 0x3164, 0x4A28, // 0x0870 (2160) +0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2923, 0x2903, 0x2903, 0x2923, 0x2923, 0x2903, 0x2903, 0x2923, // 0x0880 (2176) +0x3144, 0x3985, 0x5269, 0x6B2C, 0x736D, 0x7BAE, 0x83CE, 0x5A89, 0x5269, 0x734C, 0x9C71, 0x8BEF, 0x83CE, 0xB554, 0xD638, 0xD679, // 0x0890 (2192) +0xE6DB, 0xE71C, 0xF79D, 0xFFDE, 0xFFDE, 0xFFBE, 0x9C71, 0x49C7, 0x4186, 0x49C7, 0x9451, 0xFF9D, 0xFFFF, 0xFFDE, 0xFFFF, 0xDEBA, // 0x08A0 (2208) +0xDEBA, 0xF75C, 0xE6FB, 0xDEBA, 0xEF3C, 0xE6DB, 0xCDD6, 0xC5D6, 0xB534, 0x734C, 0x6AEB, 0xAD13, 0xC5D6, 0xAD13, 0x9C91, 0x9450, // 0x08B0 (2224) +0xC5F7, 0xDEBB, 0xE6FB, 0xD638, 0xA4D3, 0x732C, 0x7B8D, 0x8BEF, 0x6B2C, 0x5AAA, 0x6B2C, 0x6B2C, 0x5289, 0x2965, 0x2944, 0x41E6, // 0x08C0 (2240) +0x28E3, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2903, 0x2923, 0x2923, // 0x08D0 (2256) +0x3164, 0x3965, 0x41C6, 0x62CA, 0x736D, 0x62EB, 0x41E7, 0x41C7, 0x3145, 0x3986, 0x62CB, 0x9450, 0x9C71, 0xB535, 0xB555, 0xBDB6, // 0x08E0 (2272) +0xE6BB, 0xEF3D, 0xF79E, 0xF77D, 0xEF5D, 0xEEFC, 0xDE79, 0x93F0, 0x4165, 0x8BCF, 0xDEBA, 0xF77D, 0xF7DE, 0xFFFF, 0xF7DE, 0xE73C, // 0x08F0 (2288) +0xE6FB, 0xEF1C, 0xE6DB, 0xE6FB, 0xDEBA, 0xD679, 0xCE18, 0xBD96, 0xC5B6, 0xC5B6, 0xC5B6, 0xDE79, 0xBD74, 0x6B0B, 0x49E7, 0x41A6, // 0x0900 (2304) +0x734C, 0xB575, 0xDE9A, 0xCDF7, 0xACF3, 0x9410, 0x83CF, 0x6B2C, 0x5269, 0x62CB, 0x7BCF, 0x8C30, 0x7BCE, 0x5ACB, 0x5289, 0x4207, // 0x0910 (2320) +0x20E2, 0x20E2, 0x20E2, 0x20E2, 0x2103, 0x2103, 0x2903, 0x2903, 0x2103, 0x2903, 0x2903, 0x2903, 0x2903, 0x2103, 0x2903, 0x2923, // 0x0920 (2336) +0x3144, 0x4A07, 0x5289, 0x5A89, 0x52A9, 0x5269, 0x39A6, 0x20C2, 0x20E3, 0x4A28, 0x734C, 0x8BEF, 0x83CF, 0x9431, 0xB555, 0xB556, // 0x0930 (2352) +0xCDF8, 0xE6DB, 0xEF3C, 0xEF5D, 0xDEDA, 0xD658, 0xDE38, 0xC575, 0x51C7, 0xB4D3, 0xE679, 0xE6DA, 0xEF3C, 0xF7BD, 0xF7DE, 0xE75C, // 0x0940 (2368) +0xE71B, 0xF77D, 0xE6FB, 0xCE17, 0xCE38, 0xCE38, 0xCE18, 0xA4B2, 0xA4D3, 0xBD96, 0xB555, 0xAD14, 0x8C10, 0x5A8A, 0x41A6, 0x2924, // 0x0950 (2384) +0x3965, 0x62AA, 0x838E, 0x8C0F, 0x8C0F, 0x83AE, 0x83CE, 0x734D, 0x6B0C, 0x6B2C, 0x83EF, 0x9492, 0x8C51, 0x83EF, 0x7BCE, 0x62EB, // 0x0960 (2400) +0x2103, 0x2103, 0x20E2, 0x2103, 0x20E2, 0x20E2, 0x20E2, 0x20E2, 0x20E2, 0x20E2, 0x2903, 0x2103, 0x20E2, 0x20E2, 0x20E2, 0x2903, // 0x0970 (2416) +0x3164, 0x41C6, 0x5268, 0x5AA9, 0x5269, 0x5289, 0x5AAA, 0x4A48, 0x5AAA, 0x736D, 0x7BAE, 0xACF3, 0xCDF8, 0xCDF8, 0xC5F8, 0xBD97, // 0x0980 (2432) +0xA493, 0xB535, 0xCE38, 0xDE9A, 0xC5F7, 0xACD3, 0x8B8E, 0x6A29, 0x38A2, 0x59A6, 0x93AF, 0xC554, 0xDE59, 0xEEFB, 0xF75D, 0xEF3C, // 0x0990 (2448) +0xF73C, 0xE6DA, 0xCE18, 0xD659, 0xD659, 0xCE38, 0xCE18, 0xD679, 0xD659, 0xC5D7, 0xB575, 0xC5B7, 0xAD34, 0x8C0F, 0x62EB, 0x5249, // 0x09A0 (2464) +0x4A07, 0x41A5, 0x4A07, 0x49E7, 0x6ACA, 0x9410, 0x7B6D, 0x62CB, 0x62CB, 0x734D, 0x83F0, 0x8C31, 0x8C31, 0x8C51, 0x7BAE, 0x5A89, // 0x09B0 (2480) +0x3164, 0x3164, 0x2944, 0x2944, 0x2923, 0x2103, 0x2103, 0x2103, 0x20E2, 0x2103, 0x2103, 0x2102, 0x20E2, 0x20E2, 0x2103, 0x2923, // 0x09C0 (2496) +0x3164, 0x39A5, 0x4A27, 0x5248, 0x39A5, 0x3185, 0x4A48, 0x83CE, 0x736D, 0x6B0B, 0x9451, 0xAD34, 0xCE18, 0xE6BB, 0xEF5D, 0xDEBB, // 0x09D0 (2512) +0xB535, 0x9451, 0x83EF, 0x83EF, 0x5228, 0x28C2, 0x2841, 0x3041, 0x48E3, 0x4062, 0x3841, 0x4924, 0x7269, 0x9BEF, 0xC534, 0xC596, // 0x09E0 (2528) +0xAD13, 0x8C0F, 0x6B0B, 0x5269, 0xA4F3, 0xDE9A, 0xE6FB, 0xF77D, 0xFF9E, 0xF75D, 0xF75D, 0xEF1C, 0xDE7A, 0xCDF8, 0xA4F3, 0x8C0F, // 0x09F0 (2544) +0x734C, 0x62A9, 0x5A69, 0x730B, 0x83AD, 0x7B6D, 0x5A69, 0x5A69, 0x39A6, 0x6B0C, 0x8410, 0x9472, 0x9492, 0x8C30, 0x6AEC, 0x62AB, // 0x0A00 (2560) +0x3144, 0x3164, 0x3164, 0x3144, 0x3144, 0x3144, 0x3144, 0x3144, 0x3143, 0x3144, 0x2923, 0x3143, 0x3143, 0x2903, 0x2903, 0x2923, // 0x0A10 (2576) +0x3185, 0x41E7, 0x4A48, 0x4A48, 0x3185, 0x20C2, 0x3185, 0x4A49, 0x62EB, 0x6B2D, 0x526A, 0x8C51, 0xB556, 0xD67A, 0xF75D, 0xF73D, // 0x0A20 (2592) +0xDE7B, 0xB515, 0x83EE, 0x41E6, 0x1020, 0x1820, 0x38A2, 0x82AA, 0x9B2B, 0x7A07, 0x6124, 0x6104, 0x58A3, 0x6124, 0x5964, 0x61C5, // 0x0A30 (2608) +0x6A48, 0x59E7, 0x4186, 0x734D, 0xC5F8, 0xF7BF, 0xF7DF, 0xF7DF, 0xFFDF, 0xFFDE, 0xFF9D, 0xEEFB, 0xCE17, 0xB514, 0x9451, 0x732D, // 0x0A40 (2624) +0x62CB, 0x6AEB, 0x6B0B, 0x83AE, 0x83CE, 0x4A07, 0x20E2, 0x2103, 0x2944, 0x62EB, 0x7BCF, 0x8410, 0x7BAE, 0x6B4D, 0x734C, 0x62CA, // 0x0A50 (2640) +0x3164, 0x2944, 0x2923, 0x2923, 0x2923, 0x3144, 0x3164, 0x3164, 0x3164, 0x3164, 0x3143, 0x3164, 0x3985, 0x3144, 0x2923, 0x2903, // 0x0A60 (2656) +0x3164, 0x4207, 0x4A48, 0x4A48, 0x2944, 0x18A2, 0x18A2, 0x39C7, 0x6B2C, 0x8C31, 0x83D0, 0x83D0, 0x8C11, 0xB535, 0xCE39, 0xEF3D, // 0x0A70 (2672) +0xEF3E, 0xDEDC, 0xCE38, 0xAD13, 0x41C7, 0x1821, 0x61E7, 0xD534, 0xD554, 0xDD75, 0xC4D3, 0xABF0, 0xB3CF, 0xAB6D, 0x7248, 0x6A27, // 0x0A80 (2688) +0x51A5, 0x5207, 0x83AE, 0xD638, 0xFFFF, 0xFFDF, 0xF7BE, 0xF7BE, 0xF79D, 0xEF3C, 0xD658, 0xB554, 0x9450, 0x734D, 0x7B8E, 0x9451, // 0x0A90 (2704) +0x9C92, 0x9C71, 0x83CF, 0x62AA, 0x4A07, 0x3964, 0x3144, 0x2923, 0x3185, 0x5269, 0x738E, 0x630C, 0x5AAA, 0x62EB, 0x5A89, 0x5268, // 0x0AA0 (2720) +0x5289, 0x4A28, 0x41E7, 0x39A6, 0x3185, 0x3144, 0x2924, 0x2924, 0x2923, 0x2923, 0x2924, 0x2944, 0x2944, 0x2923, 0x2944, 0x3144, // 0x0AB0 (2736) +0x41E7, 0x4A28, 0x5289, 0x5269, 0x4A48, 0x2924, 0x18A2, 0x3986, 0x7B8F, 0x9C93, 0xB556, 0x9452, 0x7BAF, 0x7B8F, 0xACF4, 0xCE59, // 0x0AC0 (2752) +0xE73D, 0xE75D, 0xEF5D, 0xFFDF, 0xC597, 0x28C3, 0x7ACB, 0xDD96, 0xD575, 0xE5F8, 0xF679, 0xEDF8, 0xD534, 0xC471, 0xD554, 0x8B2C, // 0x0AD0 (2768) +0x4144, 0x6289, 0xC5D6, 0xFF9D, 0xFFBE, 0xF79E, 0xF79E, 0xE71B, 0xDE99, 0xC5B6, 0x9CB1, 0x7B8D, 0x734C, 0x734C, 0x7B8D, 0x9C92, // 0x0AE0 (2784) +0xAD14, 0xA4D3, 0x736D, 0x5AAA, 0x5248, 0x41C6, 0x41E6, 0x3165, 0x2944, 0x5269, 0x5ACB, 0x4A28, 0x41C6, 0x4A27, 0x4A07, 0x4A07, // 0x0AF0 (2800) +0x7BAE, 0x736D, 0x6B2C, 0x630B, 0x5ACB, 0x5AAA, 0x52A9, 0x5AAA, 0x4A68, 0x4A28, 0x4207, 0x41E7, 0x39C6, 0x39A6, 0x39A6, 0x31A5, // 0x0B00 (2816) +0x39C6, 0x4A27, 0x5AA9, 0x62EA, 0x5289, 0x3165, 0x3165, 0x6B0C, 0xA4F4, 0xAD35, 0xBD97, 0xAD15, 0x9431, 0x83CF, 0x83EF, 0x8C51, // 0x0B10 (2832) +0xB596, 0xDEFC, 0xEF7E, 0xF79F, 0xFFBF, 0x6AAB, 0x8B6D, 0xCD34, 0xD534, 0xEE18, 0xF659, 0xE5B7, 0xD4F2, 0xCCD2, 0x934D, 0x4145, // 0x0B20 (2848) +0x49C7, 0xAD13, 0xF77D, 0xFFDF, 0xF79E, 0xFF9E, 0xEEFC, 0xCE18, 0x9C92, 0x7B8E, 0x6ACA, 0x730B, 0x8BEF, 0x9451, 0x8C30, 0x7B6E, // 0x0B30 (2864) +0x6B0C, 0x5AAA, 0x5269, 0x41E7, 0x4A07, 0x5A89, 0x5268, 0x5249, 0x5269, 0x62CB, 0x5AAA, 0x62EB, 0x5289, 0x4A27, 0x4A27, 0x41E6, // 0x0B40 (2880) +0x738E, 0x738E, 0x736D, 0x736D, 0x6B4D, 0x736D, 0x738E, 0x7BCF, 0x738E, 0x736D, 0x736D, 0x738D, 0x736D, 0x6B4C, 0x630B, 0x62EB, // 0x0B50 (2896) +0x52A9, 0x4A48, 0x5289, 0x4A48, 0x5269, 0x39C7, 0x6B4D, 0x9CD3, 0xB535, 0xA4D4, 0xACF5, 0x8C11, 0x8BF0, 0x6B2D, 0x6B0C, 0x734D, // 0x0B60 (2912) +0x7B8E, 0xACF4, 0xE6BB, 0xF75E, 0xFFDF, 0xC5B6, 0x8B4C, 0xC4B2, 0xC492, 0xDD35, 0xE535, 0xDCF4, 0xCC91, 0xB3EE, 0x38C2, 0x3905, // 0x0B70 (2928) +0x9CB2, 0xF79E, 0xFFDF, 0xFFBE, 0xF77E, 0xE6DB, 0xC5D7, 0x9431, 0x83AE, 0x838E, 0x9C72, 0xA492, 0xAD14, 0xB534, 0x8C30, 0x5269, // 0x0B80 (2944) +0x3986, 0x3165, 0x41C7, 0x3985, 0x3164, 0x5228, 0x4A27, 0x39A6, 0x4A48, 0x7B8E, 0x83EF, 0x6B2C, 0x5289, 0x4A07, 0x3164, 0x41C5, // 0x0B90 (2960) +0x738E, 0x73AE, 0x73AE, 0x738E, 0x6B6D, 0x6B6E, 0x738E, 0x7BCF, 0x73AF, 0x738E, 0x7BEF, 0x8410, 0x7BCF, 0x73AE, 0x6B6D, 0x6B4C, // 0x0BA0 (2976) +0x632B, 0x5ACA, 0x4A48, 0x52AA, 0x5289, 0x6B4D, 0x8C51, 0xA4F4, 0xACF5, 0xA4F4, 0x8BF1, 0x7B8F, 0x734E, 0x83CF, 0xA4D3, 0xB555, // 0x0BB0 (2992) +0xB515, 0xB515, 0x9CB3, 0xD659, 0xEF3D, 0xEF1C, 0x938E, 0xDD95, 0xCCD2, 0xCC92, 0xD4B2, 0xD492, 0xF5B6, 0x71E7, 0x4124, 0xA4B2, // 0x0BC0 (3008) +0xFFBF, 0xFFBF, 0xF77E, 0xF75D, 0xDE9A, 0xAD14, 0x9430, 0x8C10, 0xACD3, 0xACF3, 0xB555, 0xB534, 0x9451, 0x5A8A, 0x5A6A, 0x5249, // 0x0BD0 (3024) +0x3165, 0x3165, 0x3124, 0x4A07, 0x5248, 0x2903, 0x1061, 0x2904, 0x4A49, 0x6B4D, 0x7BCF, 0x6B2C, 0x5269, 0x3185, 0x2103, 0x5248, // 0x0BE0 (3040) +0x738E, 0x7BAF, 0x7BAF, 0x7B8E, 0x738E, 0x738E, 0x738F, 0x7BAF, 0x7BAF, 0x734E, 0x738E, 0x7BCF, 0x7BCF, 0x7BAF, 0x6B4D, 0x630C, // 0x0BF0 (3056) +0x5AEB, 0x5ACA, 0x5269, 0x4207, 0x41E7, 0x630C, 0x9492, 0xAD35, 0xBD77, 0xB536, 0xA4D4, 0xAD15, 0xACF4, 0x83CF, 0x9C92, 0xB555, // 0x0C00 (3072) +0xCDF8, 0xC5B7, 0x8C10, 0x83EF, 0xC5F8, 0xF73E, 0x72CB, 0x7A8A, 0xB42F, 0xBC70, 0xC471, 0xC4B2, 0xABCF, 0x5145, 0x51E7, 0xDEBA, // 0x0C10 (3088) +0xFFBF, 0xF77E, 0xD69A, 0xA4B3, 0x8C10, 0x83CF, 0x7B8D, 0x8C0F, 0x9C91, 0x9C91, 0x9471, 0x8C0F, 0x6B2C, 0x5248, 0x5248, 0x5A69, // 0x0C20 (3104) +0x41E7, 0x3985, 0x49E6, 0x41C6, 0x3123, 0x28E2, 0x28E3, 0x41E7, 0x62EB, 0x736D, 0x8C72, 0x83F0, 0x528A, 0x41E7, 0x5289, 0x6B2B, // 0x0C30 (3120) +0x738E, 0x7BAF, 0x7BAF, 0x738F, 0x736E, 0x738E, 0x738E, 0x736E, 0x736E, 0x6B2D, 0x736E, 0x7B8F, 0x738E, 0x736E, 0x630C, 0x5ACB, // 0x0C40 (3136) +0x52AA, 0x4A68, 0x4227, 0x31A6, 0x39A6, 0x6B2C, 0x9492, 0xAD15, 0xC5B8, 0xC5B8, 0xB556, 0x9452, 0xA4B3, 0x9C92, 0x6B0C, 0x734D, // 0x0C50 (3152) +0x9CD3, 0xC618, 0x94B2, 0x5ACB, 0x630D, 0xCDD8, 0xDE19, 0x7AAB, 0x59C5, 0x6A26, 0x830A, 0x61E6, 0x61E7, 0x7ACB, 0xBD55, 0xFF9E, // 0x0C60 (3168) +0xF77D, 0xDE9A, 0xA4F3, 0x7BAE, 0x736D, 0x7B8D, 0x732B, 0x5227, 0x5248, 0x5268, 0x4207, 0x5A89, 0x6B2B, 0x8C0F, 0x8BEE, 0x5AA9, // 0x0C70 (3184) +0x4A07, 0x5A68, 0x732B, 0x83AD, 0x732B, 0x41A5, 0x20E2, 0x5269, 0x6B4D, 0x7BAF, 0x8C52, 0x7BCF, 0x6B4D, 0x5ACA, 0x5ACA, 0x630B, // 0x0C80 (3200) +0x736E, 0x738F, 0x73AF, 0x738E, 0x738F, 0x7BD0, 0x7BD0, 0x738F, 0x73AF, 0x736E, 0x738F, 0x6B6E, 0x6B6D, 0x738E, 0x632C, 0x630C, // 0x0C90 (3216) +0x52AA, 0x4A69, 0x39C7, 0x3165, 0x3165, 0x5A8A, 0x9472, 0xBD76, 0xC5D8, 0xBD97, 0xA4B3, 0x8C10, 0x9431, 0x9C92, 0x7B6D, 0x6B0C, // 0x0CA0 (3232) +0xB555, 0xCE38, 0xC5F7, 0x9471, 0x5A8A, 0x7B6E, 0xE6BB, 0xEEDC, 0xC598, 0xACF5, 0xA4D3, 0xB534, 0xCE38, 0xE6FB, 0xFFBF, 0xE6DB, // 0x0CB0 (3248) +0xBD55, 0x940F, 0x732C, 0x7B6D, 0x732C, 0x730C, 0x6289, 0x3944, 0x3964, 0x5227, 0x62A9, 0x7B8C, 0x944F, 0x7B8D, 0x5A68, 0x5228, // 0x0CC0 (3264) +0x6B0C, 0x7BAE, 0x8C0F, 0x83CE, 0x62A9, 0x5227, 0x4207, 0x62CB, 0x6B2D, 0x83F0, 0x9472, 0x7B8F, 0x4A28, 0x41C6, 0x5247, 0x4A06, // 0x0CD0 (3280) +0x7BCF, 0x738F, 0x738E, 0x73AF, 0x7BAF, 0x7BD0, 0x83F1, 0x83F1, 0x8411, 0x7BD0, 0x83F0, 0x7BD0, 0x7BCF, 0x7BCF, 0x6B6D, 0x632C, // 0x0CE0 (3296) +0x5B0B, 0x52A9, 0x4207, 0x2923, 0x2923, 0x18A2, 0x62EB, 0xA4D3, 0x9C92, 0x7B8E, 0x7B8F, 0xBD76, 0xACF4, 0xB555, 0xB535, 0xA4B2, // 0x0CF0 (3312) +0x9C71, 0x9C71, 0xBD95, 0xC5D7, 0xA4B3, 0x732C, 0x83AF, 0xD618, 0xEEFC, 0xEEDB, 0xEF1C, 0xE6DB, 0xEEFC, 0xDE9A, 0xB534, 0x8C30, // 0x0D00 (3328) +0x6AEB, 0x62A9, 0x732C, 0x83CE, 0x83AE, 0x6AEB, 0x62AA, 0x62A9, 0x62A9, 0x8BCE, 0x83CE, 0x9C70, 0x83CE, 0x6AEB, 0x6AEB, 0x9430, // 0x0D10 (3344) +0xAD34, 0xB575, 0xA4D3, 0x8BEF, 0x83AD, 0x6B0B, 0x5A89, 0x734C, 0x738E, 0x83F0, 0x83F0, 0x630C, 0x5249, 0x41C6, 0x41C5, 0x5227, // 0x0D20 (3360) +0x8411, 0x7BD0, 0x73AF, 0x7BD0, 0x7BF0, 0x7BD0, 0x7BF0, 0x83F1, 0x7BF0, 0x7BD0, 0x83F0, 0x8411, 0x8410, 0x8410, 0x7BAF, 0x738E, // 0x0D30 (3376) +0x632C, 0x52A9, 0x4207, 0x39C6, 0x2923, 0x18A1, 0x4A27, 0x734C, 0x7B8D, 0x83AE, 0xA4B2, 0xACF4, 0xBD76, 0xC5B7, 0xC5B7, 0xBD55, // 0x0D40 (3392) +0xA4D2, 0x838D, 0x9430, 0xACD3, 0xACD3, 0x8BEF, 0x5A68, 0x838D, 0xAD13, 0xCDF7, 0xD659, 0xCDF8, 0xBD76, 0x83AF, 0x41C6, 0x5A89, // 0x0D50 (3408) +0x6AEB, 0x83AD, 0xA4B2, 0xAD13, 0xAD14, 0x9C71, 0x83EF, 0x7BAE, 0x9450, 0xB534, 0xB534, 0x9410, 0x730C, 0x838E, 0xACF4, 0xC5D7, // 0x0D60 (3424) +0xCE18, 0xBD96, 0x9C71, 0x8C0F, 0x9CB1, 0x734C, 0x5289, 0x734C, 0x7BAF, 0x7BCF, 0x630C, 0x526A, 0x41E7, 0x41C6, 0x5268, 0x5267, // 0x0D70 (3440) +0x8431, 0x8411, 0x83F1, 0x83F1, 0x83F1, 0x8411, 0x8411, 0x83F1, 0x83F1, 0x7BF0, 0x8411, 0x8411, 0x7BF0, 0x7BF0, 0x7BCF, 0x7BCF, // 0x0D80 (3456) +0x6B6E, 0x5AEB, 0x4208, 0x5249, 0x62EB, 0x6AEB, 0x83CE, 0x9450, 0xA4B2, 0x9C71, 0x9450, 0x9C51, 0xB535, 0xC5B8, 0xCDF8, 0xBD35, // 0x0D90 (3472) +0x8BEF, 0x836D, 0x6269, 0x5A48, 0x940F, 0x9C50, 0x7B8C, 0x5A68, 0x41E6, 0x6B0A, 0x6AEB, 0x6AEB, 0x6ACB, 0x5A49, 0x5228, 0x734C, // 0x0DA0 (3488) +0x9C92, 0xB535, 0xC5B7, 0xD639, 0xD638, 0xC5D7, 0xBD95, 0xBD75, 0xB533, 0xA4D2, 0x83CE, 0x7B6D, 0x83CE, 0x8BCF, 0xC596, 0xCDF8, // 0x0DB0 (3504) +0xB555, 0x8C10, 0x62CB, 0x6AEB, 0x7B8D, 0x5228, 0x41E7, 0x62CB, 0x7BAE, 0x7BCF, 0x4A29, 0x2104, 0x20C2, 0x3144, 0x5247, 0x5268, // 0x0DC0 (3520) +0x8411, 0x8411, 0x83F1, 0x7BF1, 0x7BF1, 0x8411, 0x8C52, 0x8C32, 0x8C52, 0x8C32, 0x8C52, 0x8C52, 0x8431, 0x8411, 0x8411, 0x7BF0, // 0x0DD0 (3536) +0x7BD0, 0x738F, 0x7BB0, 0x9CB4, 0xBDB8, 0xBD77, 0xA4D4, 0x9C92, 0x7B6D, 0x5248, 0x62AA, 0x7B4D, 0xACF3, 0xBD96, 0xD639, 0xC597, // 0x0DE0 (3552) +0xACB3, 0x8BAE, 0x6ACA, 0x5227, 0x5A47, 0x9C2F, 0x942F, 0x41A5, 0x41C6, 0x5248, 0x3984, 0x3964, 0x5A48, 0x6AEA, 0x838E, 0x9C51, // 0x0DF0 (3568) +0xC5B8, 0xCDF9, 0xD65A, 0xE6BC, 0xDE9A, 0xDE7A, 0xC5B7, 0xB555, 0xAD13, 0x83CE, 0x62CA, 0x7B6D, 0x9C91, 0xBD95, 0xB554, 0x9430, // 0x0E00 (3584) +0x7B6E, 0x62CB, 0x5A8A, 0x62AA, 0x4A07, 0x1861, 0x2924, 0x6B0C, 0x7BCF, 0x736D, 0x5AAA, 0x3165, 0x20E3, 0x2923, 0x3144, 0x3985, // 0x0E10 (3600) +0x8C32, 0x8411, 0x8411, 0x8411, 0x83F1, 0x8411, 0x8431, 0x8C32, 0x8C52, 0x8C32, 0x8C52, 0x9473, 0x9493, 0x9473, 0x8C52, 0x8432, // 0x0E20 (3616) +0x8C32, 0x9473, 0xAD57, 0xC5F9, 0xCE1A, 0xCDF9, 0x9C93, 0x62CC, 0x3145, 0x0820, 0x3124, 0x5248, 0x62CA, 0x83CF, 0xBD96, 0xDE7A, // 0x0E30 (3632) +0xCDF8, 0xB514, 0x942F, 0x7B6C, 0x7B6B, 0x7B6B, 0x41A6, 0x49E7, 0x6ACA, 0x5227, 0x5A47, 0x730A, 0x83AD, 0x9450, 0xACF3, 0xB535, // 0x0E40 (3648) +0xC5D8, 0xC5B8, 0xDE9B, 0xDE7A, 0xDE5A, 0xD659, 0xB514, 0x838E, 0x838D, 0x83AD, 0x734C, 0x8BEF, 0x9450, 0xA4B2, 0xACF3, 0x9C71, // 0x0E50 (3664) +0xA4D3, 0xACF3, 0xA4B2, 0x83CF, 0x4A28, 0x1861, 0x3985, 0x83CF, 0x83EF, 0x5269, 0x39A6, 0x3986, 0x2944, 0x3145, 0x39A5, 0x41E6, // 0x0E60 (3680) +0x8C72, 0x8C52, 0x8C52, 0x8C32, 0x8411, 0x83F1, 0x83F1, 0x7BF0, 0x83F1, 0x8411, 0x8C32, 0x8C52, 0x8C73, 0x9473, 0x9473, 0x8C52, // 0x0E70 (3696) +0x8C51, 0x8411, 0x7BD0, 0x736F, 0xA4D5, 0xC5D9, 0xC5F9, 0xA4F5, 0x62AB, 0x5249, 0x28E3, 0x1040, 0x2904, 0x5269, 0xBD76, 0xE6BB, // 0x0E80 (3712) +0xEF1C, 0xDEBA, 0xBD95, 0xA491, 0x9C71, 0x732B, 0x5A68, 0x49C6, 0x730B, 0x6AA9, 0x732B, 0x8BCE, 0x9C71, 0xAD14, 0xB535, 0xAD14, // 0x0E90 (3728) +0xBD76, 0xACF4, 0xB535, 0xBD76, 0xB534, 0xA492, 0x9C30, 0x732C, 0x6AEB, 0x8BEF, 0x9430, 0x8BCE, 0x9C71, 0x8C10, 0x8C11, 0x9C72, // 0x0EA0 (3744) +0x8C30, 0x83EF, 0x83AE, 0x7B8D, 0x732C, 0x5A69, 0x62EB, 0x83EF, 0x9CD2, 0x738D, 0x4A28, 0x5AAA, 0x6B0B, 0x62CA, 0x6B0B, 0x7B6D, // 0x0EB0 (3760) +0x8411, 0x8411, 0x8411, 0x8411, 0x7BF0, 0x7BF0, 0x7BD0, 0x73AF, 0x73AF, 0x7BF0, 0x8411, 0x8411, 0x8411, 0x8C52, 0x9473, 0x9492, // 0x0EC0 (3776) +0x94B2, 0x5AEB, 0x3186, 0x4209, 0x6B2E, 0xAD15, 0xD65A, 0xD65A, 0xD659, 0x8C30, 0x2904, 0x20E3, 0x20C3, 0x62CB, 0xB535, 0xD659, // 0x0ED0 (3792) +0xDEBA, 0xEF5D, 0xE6FC, 0xD639, 0xAD14, 0xA491, 0x8BCE, 0x7B4B, 0x838C, 0x836D, 0x83AE, 0x8BEF, 0x8C10, 0xACF4, 0xB575, 0xACF3, // 0x0EE0 (3808) +0x9C91, 0x940F, 0x838D, 0xA4B2, 0x9C50, 0x83AE, 0x9C50, 0x940F, 0x93EF, 0x838D, 0x8BEF, 0x9430, 0xA4B3, 0xACF5, 0xC5F9, 0xC5B8, // 0x0EF0 (3824) +0x732C, 0x3985, 0x41A6, 0x7B8D, 0x9C91, 0x7B6D, 0x6B0C, 0x7B8D, 0x8C50, 0x7BAE, 0x6B2C, 0x83EF, 0x9451, 0x9C71, 0xA4B2, 0xA4D3, // 0x0F00 (3840) +0x83F1, 0x83F1, 0x7BF0, 0x83F1, 0x83F1, 0x7BF0, 0x7BD0, 0x7BB0, 0x7BB0, 0x7BD0, 0x8411, 0x8C52, 0x9473, 0x8C53, 0x9474, 0x9494, // 0x0F10 (3856) +0x8C52, 0x738F, 0x5ACC, 0x4209, 0x41E8, 0x5AAB, 0x9452, 0xBDB7, 0xD639, 0x8BF0, 0x49E7, 0x18A2, 0x1061, 0x41C7, 0x62AA, 0xA4B2, // 0x0F20 (3872) +0xDEBB, 0xEEFD, 0xE6BB, 0xE6FC, 0xBD76, 0x8C10, 0x9CB2, 0xA4B2, 0xBD75, 0xC5D6, 0xB555, 0xBD76, 0xC5B7, 0xCE19, 0xD65B, 0xCE19, // 0x0F30 (3888) +0xC5B7, 0xC5D7, 0xAD14, 0xB555, 0xBD75, 0xB575, 0xBD96, 0xA4B2, 0x83CF, 0x83AF, 0x9CB3, 0x9472, 0xA4F4, 0xB556, 0xAD35, 0xB576, // 0x0F40 (3904) +0x8C11, 0x5A8B, 0x62EB, 0x9451, 0x9450, 0x7B8D, 0x62CA, 0x83CF, 0xAD13, 0x83F0, 0x83AF, 0x9451, 0x9452, 0x9472, 0x9CD3, 0x9C93, // 0x0F50 (3920) +0x8411, 0x8C32, 0x8C32, 0x8C32, 0x8431, 0x8411, 0x8411, 0x83F0, 0x7BF0, 0x8411, 0x8412, 0x8C32, 0x9494, 0x9473, 0xA4D5, 0xAD16, // 0x0F60 (3936) +0xAD56, 0xBDD8, 0xC619, 0xB5B7, 0x8C31, 0x526A, 0x5A8B, 0x7BAF, 0xB576, 0xC5F8, 0x9451, 0x49E8, 0x18A2, 0x0820, 0x3165, 0x7B8E, // 0x0F70 (3952) +0xACF4, 0xB555, 0xD639, 0xDEBB, 0xCDF8, 0xB555, 0xA4D4, 0xACD4, 0xBD76, 0xCE18, 0xD65A, 0xD65A, 0xD65A, 0xDE9B, 0xDEBB, 0xDE7A, // 0x0F80 (3968) +0xE6BB, 0xDE9B, 0xD659, 0xC5D7, 0xD639, 0xBD96, 0xAD14, 0x9451, 0x9451, 0xA4D4, 0x9CB3, 0x9C72, 0x8C11, 0x736E, 0x6B2D, 0x6B0D, // 0x0F90 (3984) +0x8C31, 0x9C93, 0x8C51, 0x83EF, 0x734C, 0x5A89, 0x6B0B, 0x8C30, 0xBD96, 0xA4D3, 0x8C31, 0x9472, 0x9CB3, 0x9CB3, 0x9CD3, 0x9CD3, // 0x0FA0 (4000) +0x83F1, 0x8431, 0x8C31, 0x8411, 0x8411, 0x8411, 0x8411, 0x7BF0, 0x8411, 0x7BD0, 0x8C32, 0x8411, 0x9473, 0x9C93, 0x9C94, 0xBD98, // 0x0FB0 (4016) +0xC63A, 0xD67B, 0xDEDC, 0xE71D, 0xDEDC, 0xA515, 0x4A29, 0x2946, 0x4A08, 0x7BCF, 0xA4D3, 0x9CB2, 0x528A, 0x20C3, 0x18A3, 0x2925, // 0x0FC0 (4032) +0x41E7, 0x7BAE, 0xA4D3, 0xA4B3, 0x9C93, 0xC5B8, 0xACF5, 0xB557, 0xBD77, 0xBD57, 0xC5D9, 0xCE19, 0xD65A, 0xD67A, 0xDEBA, 0xCE39, // 0x0FD0 (4048) +0xCE19, 0xC5D8, 0xB535, 0xA4B3, 0xA4B3, 0x9451, 0x9C92, 0xA4D3, 0xA4D4, 0xACD4, 0x734E, 0x6AEC, 0x7B8F, 0x9C93, 0xA4B3, 0x7B6E, // 0x0FE0 (4064) +0x630C, 0x736E, 0x62EC, 0x5AAB, 0x5289, 0x62EB, 0x62CA, 0x6B0B, 0x8C30, 0x8C10, 0x9C92, 0xACF4, 0x9C93, 0x9452, 0x9CB3, 0xA4B3, // 0x0FF0 (4080) +0x7BCF, 0x7BD0, 0x7BD0, 0x7BAF, 0x7BCF, 0x7BD0, 0x7BD0, 0x7BAF, 0x73AF, 0x7BCF, 0x7BD0, 0x8411, 0x9493, 0xA4D4, 0xAD36, 0xC5D9, // 0x1000 (4096) +0xD67B, 0xD69B, 0xDEDC, 0xDEDC, 0xE6FC, 0xE71D, 0x9492, 0x3186, 0x0000, 0x0821, 0x526A, 0x9472, 0x9CB3, 0x6B2D, 0x6B4D, 0x734E, // 0x1010 (4112) +0x6B2D, 0xA4B3, 0x8C31, 0x6B2D, 0x6B0D, 0x9C73, 0x9C73, 0xBD98, 0xC5F9, 0xBD98, 0xC5D9, 0xBDB8, 0xCE19, 0xCE3A, 0xCE39, 0xBD97, // 0x1020 (4128) +0xB556, 0xAD36, 0x8C11, 0x734E, 0xAD14, 0xCDF8, 0xC5B6, 0xA4D3, 0x9451, 0xB534, 0xD659, 0x9C72, 0x41C7, 0x3986, 0xA4D3, 0xCE39, // 0x1030 (4144) +0xB556, 0x9472, 0x5249, 0x18C3, 0x41C7, 0x62CB, 0x4A28, 0x41C7, 0x3966, 0x7B8E, 0xACF4, 0xACF4, 0x9CB3, 0x9C93, 0xA4D4, 0xAD14, // 0x1040 (4160) +0x7BCF, 0x73AF, 0x738E, 0x738F, 0x7BAF, 0x7BCF, 0x7BCF, 0x73AF, 0x738F, 0x7BCF, 0x7BAF, 0x8411, 0x9493, 0x8C52, 0x7BAF, 0x5A8B, // 0x1050 (4176) +0x62ED, 0xA515, 0xCE5A, 0xE6FD, 0xDEDC, 0xE71D, 0xEF5D, 0xCE59, 0x6B2D, 0x3166, 0x18C3, 0x4A49, 0x8C31, 0x9CD4, 0xB576, 0xA4F5, // 0x1060 (4192) +0xAD15, 0xDE9B, 0xCE19, 0x8C11, 0x7BAF, 0x7B8F, 0x83F0, 0x9472, 0xA4D4, 0xA4D4, 0xBDD8, 0xC5F9, 0xCE5A, 0xC61A, 0xBDB9, 0xC5F9, // 0x1070 (4208) +0xAD36, 0x8C31, 0x8C31, 0xB535, 0x9451, 0xA4B2, 0xCE17, 0xACF3, 0x7B6D, 0x628A, 0x8C10, 0xCE18, 0xBD75, 0x4A28, 0x39A6, 0x9CD3, // 0x1080 (4224) +0xC5D8, 0xCE39, 0x9451, 0x734D, 0x736D, 0x6B4D, 0x4A08, 0x62CB, 0x39A7, 0x83AF, 0xACF4, 0xAD15, 0xACF4, 0xAD15, 0xAD15, 0xAD15, // 0x1090 (4240) +0x83F0, 0x7BAF, 0x738E, 0x73AF, 0x7BCF, 0x7BCF, 0x73AF, 0x738E, 0x7BD0, 0x7BD0, 0x8C52, 0x8431, 0x8411, 0x62CC, 0x39A7, 0x1883, // 0x10A0 (4256) +0x0000, 0x1082, 0x4A29, 0x9CF4, 0xCE7A, 0xDEDC, 0xEF3D, 0xE71D, 0xD6BB, 0xA514, 0x39E8, 0x0842, 0x18A3, 0x4A29, 0x630C, 0x8C31, // 0x10B0 (4272) +0xC619, 0xDE7C, 0xDEDC, 0xC5D9, 0xAD56, 0x9473, 0x8C52, 0x8C52, 0xA4F4, 0xAD15, 0xBDB8, 0xD65B, 0xC61A, 0xBDB9, 0xCE1A, 0xBD78, // 0x10C0 (4288) +0x9472, 0x7B8F, 0xBD96, 0x9451, 0x83CE, 0xBD75, 0xBD54, 0x942F, 0x9C71, 0xACF3, 0x62EB, 0x62AA, 0xBD95, 0xB575, 0x5269, 0x5ACB, // 0x10D0 (4304) +0x9CB3, 0xBDF8, 0xC618, 0x7BAF, 0x4A08, 0x62EC, 0x8C31, 0xA4F4, 0xAD15, 0xAD15, 0xB536, 0xB536, 0xACF5, 0xA4D4, 0xAD15, 0xB535, // 0x10E0 (4320) +0x83F0, 0x83F0, 0x7BCF, 0x7BAF, 0x73AF, 0x73AF, 0x738E, 0x736E, 0x7BB0, 0x8C32, 0x9473, 0x9452, 0x8410, 0x6B0D, 0x7B8F, 0x83F0, // 0x10F0 (4336) +0x3185, 0x0000, 0x0000, 0x0841, 0x31A6, 0x62EC, 0x7BD0, 0xBDD8, 0xD69B, 0xD67B, 0x7BF0, 0x0842, 0x0000, 0x0000, 0x0861, 0x62EC, // 0x1100 (4352) +0x8C31, 0xAD36, 0xD69B, 0xD69C, 0xBDB9, 0xA516, 0x9494, 0x9CB5, 0xA4F6, 0xB578, 0xC5D9, 0xD69C, 0xC5D9, 0xC5D9, 0xBDB8, 0x7B90, // 0x1110 (4368) +0x6AED, 0xA4F4, 0xBD96, 0x9C92, 0x83AE, 0x8BEE, 0x9C50, 0x9C91, 0x9C71, 0x9C51, 0xC5D7, 0x9C72, 0x5269, 0x6B0C, 0x8C51, 0x528A, // 0x1120 (4384) +0x6B4D, 0x8411, 0xAD35, 0x8C31, 0x526A, 0x83F0, 0xA4D4, 0xAD15, 0xB535, 0xB557, 0xB536, 0xAD16, 0xB537, 0xB536, 0xAD36, 0xB536, // 0x1130 (4400) +0x83CF, 0x83F0, 0x83F0, 0x7BAF, 0x738E, 0x736E, 0x738F, 0x738F, 0x7BD0, 0x8C31, 0x9473, 0x9472, 0x9CB3, 0xB556, 0xB576, 0xCE39, // 0x1140 (4416) +0xAD33, 0x4207, 0x20C2, 0x0000, 0x0000, 0x0000, 0x0001, 0x39A8, 0xAD56, 0xD6BC, 0xA515, 0x3187, 0x1062, 0x0820, 0x0020, 0x10A2, // 0x1150 (4432) +0x2925, 0x4A6A, 0x9493, 0xB5B8, 0xB578, 0x8C33, 0x7BD2, 0x9CB6, 0xB579, 0xB579, 0xBDB9, 0xCE1A, 0xBD98, 0xBD97, 0x8C11, 0x6B0C, // 0x1160 (4448) +0x6B2D, 0xACF4, 0xBD76, 0xB534, 0x9C71, 0x9C71, 0xA4D2, 0xACF3, 0x9C71, 0x83AE, 0xA4B2, 0xD639, 0xC5D7, 0x7B8F, 0x62EC, 0x8C51, // 0x1170 (4464) +0x528B, 0x6B2D, 0x6B0D, 0x7B8F, 0x9472, 0xACF4, 0xACF4, 0xAD15, 0xB556, 0xAD16, 0xB536, 0xB557, 0xAD16, 0xACF6, 0xB557, 0xB536, // 0x1180 (4480) +0x8410, 0x83F0, 0x8410, 0x7BF0, 0x7BAF, 0x7BAF, 0x738F, 0x738F, 0x83D0, 0x83F1, 0x83D0, 0x9CD3, 0xAD35, 0xB576, 0xB576, 0xC5F8, // 0x1190 (4496) +0xBDD6, 0x8C50, 0x2945, 0x0841, 0x0000, 0x0000, 0x0000, 0x0000, 0x738F, 0xDEFC, 0xB597, 0x7BD0, 0x41E9, 0x0000, 0x0000, 0x0000, // 0x11A0 (4512) +0x0821, 0x20E4, 0x4209, 0x9492, 0x94B3, 0x4A6A, 0x31C8, 0x6B4E, 0x8C73, 0x9CF5, 0x9CD4, 0xA515, 0xAD36, 0x83D0, 0x62EC, 0x9451, // 0x11B0 (4528) +0xAD13, 0xA4D2, 0x9C71, 0xA4B1, 0xB513, 0xC595, 0xBD74, 0xACD2, 0x8C0F, 0x9450, 0xA4F3, 0xACF3, 0xD67A, 0xE6BC, 0x9C93, 0x9CB4, // 0x11C0 (4544) +0x9C72, 0x5AAB, 0x62AB, 0x83F0, 0xA4D4, 0xB556, 0xB556, 0xB556, 0xB535, 0xB535, 0xAD15, 0xB536, 0xAD15, 0xAD15, 0xAD15, 0xAD16, // 0x11D0 (4560) +0x8431, 0x83F0, 0x7BF0, 0x7BF0, 0x83F0, 0x8410, 0x7BD0, 0x73AF, 0x8C11, 0x8C11, 0x630C, 0x6B2D, 0x8411, 0x8C11, 0x734E, 0x8C51, // 0x11E0 (4576) +0xBD96, 0xBDB6, 0x8C51, 0x5AAB, 0x3186, 0x0841, 0x0000, 0x0000, 0x528A, 0xCE5A, 0xB5B8, 0xAD57, 0x738F, 0x1062, 0x0820, 0x0000, // 0x11F0 (4592) +0x0841, 0x2924, 0x3186, 0x5ACB, 0x5ACB, 0x1062, 0x2966, 0x3187, 0x4209, 0x5AEC, 0x630D, 0x83F1, 0x7BAF, 0x4A08, 0x83F0, 0xAD14, // 0x1200 (4608) +0xB533, 0xB554, 0xB554, 0xB533, 0xA491, 0x9C50, 0x942F, 0xB533, 0xBD33, 0xB513, 0xACF3, 0xBD75, 0xC5D7, 0xCE19, 0xC5F9, 0x9473, // 0x1210 (4624) +0x9452, 0x6B2D, 0x734E, 0x9452, 0xACF4, 0xB556, 0xBD77, 0xBD77, 0xBD77, 0xBD56, 0xB556, 0xB556, 0xAD16, 0xB536, 0xB536, 0xB556, // 0x1220 (4640) +0x8410, 0x7BF0, 0x7BF0, 0x83F0, 0x83F0, 0x83F0, 0x7BD0, 0x7BD0, 0x9452, 0x9CB4, 0x9493, 0x6B4E, 0x39A7, 0x39A7, 0x41E8, 0x4A49, // 0x1230 (4656) +0x734D, 0x83EF, 0xA4F3, 0xBD96, 0xB555, 0x5AAB, 0x0020, 0x0000, 0x39C7, 0xC5F9, 0xC61A, 0xCE5B, 0x9494, 0x2925, 0x1082, 0x1061, // 0x1240 (4672) +0x1061, 0x18C2, 0x2944, 0x2103, 0x39A6, 0x526A, 0x632D, 0x6B6E, 0x736E, 0x62EC, 0x6B2D, 0x736E, 0x736E, 0x736D, 0x9C92, 0xA4B2, // 0x1250 (4688) +0x9C70, 0x83AC, 0x942F, 0x9C4F, 0x838C, 0x942F, 0x8BCD, 0x8BCD, 0x9C2F, 0x8BCE, 0x83CD, 0xA4B1, 0xB555, 0xB555, 0xCDF8, 0xA4F4, // 0x1260 (4704) +0x8C31, 0x8BF1, 0x9452, 0xA4D4, 0xA4D4, 0xAD15, 0xBD77, 0xBD97, 0xBD77, 0xBD77, 0xB556, 0xB536, 0xACF5, 0xAD16, 0xB536, 0xB556, // 0x1270 (4720) +0x8411, 0x8411, 0x8411, 0x8411, 0x83F1, 0x7BD0, 0x7BD0, 0x8C31, 0x9473, 0xB576, 0xB576, 0xB576, 0x62EC, 0x39A7, 0x7BAF, 0x9C92, // 0x1280 (4736) +0x83CF, 0x83CF, 0x9CB3, 0xB556, 0xC619, 0xA4D4, 0x10A3, 0x0000, 0x39C8, 0xC5F9, 0xD67C, 0xCE7B, 0x9CB4, 0x31A7, 0x20E3, 0x18C2, // 0x1290 (4752) +0x1061, 0x2103, 0x0840, 0x18C2, 0x5269, 0x8430, 0xA514, 0xAD35, 0xA515, 0xA4F4, 0xA515, 0x9472, 0x8C10, 0xA4D3, 0xAD34, 0xAD13, // 0x12A0 (4768) +0x9C70, 0x9C4F, 0x940E, 0x836C, 0x93EE, 0xB4F2, 0x836C, 0x6AC9, 0x730A, 0x940E, 0x940F, 0x838D, 0xACD3, 0xBD75, 0xBD76, 0xA4B3, // 0x12B0 (4784) +0x9432, 0xA4B4, 0xAD16, 0xB557, 0xAD15, 0xAD15, 0xBD97, 0xC5B8, 0xC5D8, 0xC5D8, 0xBD98, 0xB557, 0xAD15, 0xB556, 0xBD77, 0xBD77, // 0x12C0 (4800) +}; diff --git a/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/dog.c b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/dog.c new file mode 100644 index 0000000..2c25dbe --- /dev/null +++ b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/dog.c @@ -0,0 +1,314 @@ +// Generated by : ImageConverter 565 v1.2 +// Dimensions : 80x60 pixels +// Size : 9 600 Bytes + +#if defined(__AVR__) + #include +#elif defined(__PIC32MX__) + #define PROGMEM +#elif defined(__arm__) + #define PROGMEM +#endif + +const unsigned short dog[0x12C0] PROGMEM ={ +0x2B2C, 0x232C, 0x232C, 0x234C, 0x236D, 0x2B6D, 0x2B8D, 0x2B8D, 0x2BAE, 0x33AE, 0x33AE, 0x33CE, 0x33CF, 0x33CF, 0x33EF, 0x33EF, // 0x0010 (16) +0x3C10, 0x3C10, 0x3C10, 0x3C30, 0x3C30, 0x3C30, 0x3C30, 0x3C30, 0x3C10, 0x3C11, 0x3C11, 0x3C11, 0x3C11, 0x3411, 0x33F1, 0x3C11, // 0x0020 (32) +0x3BF1, 0x3BF1, 0x3BD0, 0x3BF1, 0x33F0, 0x3C11, 0x3C11, 0x3411, 0x3411, 0x3411, 0x3410, 0x3411, 0x3C11, 0x3BF1, 0x3BD0, 0x3BD1, // 0x0030 (48) +0x33D0, 0x2BD0, 0x33D0, 0x33D0, 0x2B90, 0x2B90, 0x2B90, 0x236F, 0x236F, 0x1B4F, 0x1B4F, 0x1B2F, 0x1B0F, 0x1AEF, 0x1AEF, 0x1AEF, // 0x0040 (64) +0x12EE, 0x12ED, 0x12CD, 0x12CD, 0x0ACC, 0x0AAC, 0x0AAC, 0x0A8B, 0x0A8B, 0x028B, 0x026B, 0x024A, 0x024A, 0x022A, 0x0229, 0x0229, // 0x0050 (80) +0x2B4D, 0x2B2C, 0x2B4D, 0x2B6D, 0x2B6D, 0x2B8D, 0x2BAE, 0x2BAE, 0x33AE, 0x33AE, 0x33CE, 0x33CF, 0x33CF, 0x33EF, 0x33EF, 0x3C0F, // 0x0060 (96) +0x3C10, 0x3C10, 0x3C30, 0x3C30, 0x3C30, 0x3C30, 0x3C30, 0x3C30, 0x3C31, 0x3C31, 0x3C11, 0x3C11, 0x3C31, 0x3C32, 0x3C32, 0x3411, // 0x0070 (112) +0x2C31, 0x2C51, 0x2C31, 0x3452, 0x3411, 0x3411, 0x3411, 0x3C31, 0x3C11, 0x3C32, 0x3431, 0x3411, 0x3411, 0x3411, 0x3411, 0x3C11, // 0x0080 (128) +0x3C11, 0x33F1, 0x33D0, 0x33D0, 0x2BB0, 0x2BB0, 0x2BB0, 0x2B90, 0x236F, 0x236F, 0x234F, 0x1B4F, 0x1B2F, 0x1B0F, 0x1B0E, 0x1AEE, // 0x0090 (144) +0x12EE, 0x12ED, 0x12ED, 0x12CD, 0x12CD, 0x0ACC, 0x0AAC, 0x0A8C, 0x0A8B, 0x0A8B, 0x026B, 0x026B, 0x024A, 0x024A, 0x022A, 0x022A, // 0x00A0 (160) +0x2B4D, 0x2B4D, 0x2B6D, 0x2B6D, 0x2B8D, 0x2B8E, 0x2BAE, 0x33AE, 0x33AE, 0x33CE, 0x33CF, 0x33CF, 0x33EF, 0x3BEF, 0x3C0F, 0x3C10, // 0x00B0 (176) +0x3C30, 0x3C30, 0x3C30, 0x3C30, 0x3C30, 0x3C50, 0x3C51, 0x3C51, 0x3C31, 0x3C51, 0x3C51, 0x3C32, 0x3C31, 0x3C31, 0x3C32, 0x3C32, // 0x00C0 (192) +0x3C52, 0x3452, 0x3411, 0x3C32, 0x3C32, 0x4412, 0x4412, 0x43F1, 0x3BF1, 0x4412, 0x3C31, 0x3C31, 0x3C52, 0x3C32, 0x3C11, 0x3C11, // 0x00D0 (208) +0x3C11, 0x3BF1, 0x3BF1, 0x3BF1, 0x33D1, 0x33D0, 0x3390, 0x2B90, 0x2B90, 0x2B6F, 0x236F, 0x234F, 0x234F, 0x1B2E, 0x1B0E, 0x1B0E, // 0x00E0 (224) +0x1B0E, 0x130E, 0x12ED, 0x12ED, 0x12ED, 0x12CD, 0x0ACC, 0x0AAC, 0x0A8C, 0x0A8C, 0x0A8C, 0x026B, 0x026B, 0x024A, 0x024A, 0x022A, // 0x00F0 (240) +0x2B4D, 0x2B4D, 0x2B6D, 0x2B8D, 0x2B8D, 0x2B8E, 0x33AE, 0x33AE, 0x33CE, 0x33CF, 0x33CF, 0x3BEF, 0x3BEF, 0x3C0F, 0x3C30, 0x3C30, // 0x0100 (256) +0x3C30, 0x3C30, 0x3C30, 0x4450, 0x3C51, 0x4451, 0x3C51, 0x3C51, 0x3C51, 0x3C51, 0x3C51, 0x4472, 0x4472, 0x3C52, 0x3C32, 0x4452, // 0x0110 (272) +0x4412, 0x4C32, 0x4412, 0x4412, 0x4412, 0x4412, 0x4432, 0x3C11, 0x3C31, 0x3C51, 0x3C51, 0x3C31, 0x3C31, 0x3C31, 0x3C11, 0x4431, // 0x0120 (288) +0x3C11, 0x3C11, 0x3411, 0x33F1, 0x33F1, 0x33D1, 0x33D1, 0x33D1, 0x2B90, 0x2B90, 0x2B70, 0x234F, 0x234F, 0x234E, 0x1B2E, 0x1B0E, // 0x0130 (304) +0x1B0E, 0x1B0E, 0x12EE, 0x12ED, 0x12ED, 0x12ED, 0x12CD, 0x12CC, 0x0AAC, 0x0AAC, 0x0A8C, 0x0A8B, 0x026B, 0x026B, 0x024A, 0x024A, // 0x0140 (320) +0x336D, 0x2B6D, 0x2B6D, 0x2B8D, 0x2B8E, 0x2BAE, 0x33AE, 0x33CE, 0x33CE, 0x33CF, 0x3BEF, 0x3BEF, 0x3C0F, 0x3C10, 0x3C30, 0x3C30, // 0x0150 (336) +0x3C30, 0x4450, 0x4450, 0x4450, 0x4451, 0x4451, 0x4471, 0x4471, 0x4472, 0x4472, 0x4452, 0x3C52, 0x3C31, 0x3C31, 0x4452, 0x4472, // 0x0160 (352) +0x4472, 0x4472, 0x3C51, 0x3C31, 0x3C31, 0x3C10, 0x3C31, 0x4451, 0x3C30, 0x3C30, 0x3C0F, 0x3C10, 0x4451, 0x4C71, 0x4450, 0x3C10, // 0x0170 (368) +0x4451, 0x3C31, 0x3C31, 0x3C11, 0x3411, 0x33F1, 0x2BD1, 0x2BB1, 0x2BB1, 0x2B90, 0x2B70, 0x2B70, 0x2B4F, 0x234F, 0x232F, 0x1B2E, // 0x0180 (384) +0x1B2E, 0x1B0E, 0x1B0E, 0x1AEE, 0x12EE, 0x12ED, 0x12CD, 0x12CD, 0x0AAC, 0x0AAC, 0x0A8C, 0x0A8B, 0x0A8B, 0x026B, 0x024A, 0x024A, // 0x0190 (400) +0x336D, 0x2B6D, 0x2B6D, 0x2B8D, 0x2B8E, 0x2BAE, 0x33CE, 0x33CE, 0x33CE, 0x33CF, 0x3BEF, 0x3C0F, 0x3C10, 0x3C30, 0x3C30, 0x3C30, // 0x01A0 (416) +0x4450, 0x4450, 0x4451, 0x4451, 0x4471, 0x4471, 0x4472, 0x4472, 0x4472, 0x4472, 0x4472, 0x4472, 0x4C72, 0x4C92, 0x4C72, 0x4472, // 0x01B0 (432) +0x3C71, 0x3C50, 0x3C50, 0x5492, 0x7555, 0x8DD7, 0xAE9A, 0xBF1C, 0xBF1C, 0xB69A, 0xA618, 0xA618, 0xBEFB, 0xC75D, 0xAE79, 0x8575, // 0x01C0 (448) +0x5451, 0x4C11, 0x4410, 0x4411, 0x3C11, 0x3411, 0x3411, 0x33D1, 0x2BB0, 0x3391, 0x2B70, 0x2B70, 0x2B70, 0x2B50, 0x234F, 0x232F, // 0x01D0 (464) +0x1B2E, 0x1B2E, 0x1B0E, 0x1B0E, 0x1B0E, 0x12ED, 0x12ED, 0x12ED, 0x12CC, 0x0AAC, 0x0AAC, 0x0A8B, 0x0A8B, 0x0A8B, 0x026B, 0x024A, // 0x01E0 (480) +0x2B6D, 0x2B6D, 0x2B6D, 0x2B8D, 0x2BAE, 0x2BAE, 0x33CE, 0x33CE, 0x33CF, 0x33EF, 0x3BEF, 0x3C0F, 0x3C30, 0x3C30, 0x3C50, 0x3C50, // 0x01F0 (496) +0x4451, 0x4451, 0x4451, 0x4471, 0x4471, 0x4471, 0x4472, 0x4472, 0x4C92, 0x4492, 0x4472, 0x4C72, 0x4C72, 0x4452, 0x4431, 0x4C10, // 0x0200 (512) +0x5C71, 0x8555, 0xAE99, 0xD77D, 0xF7FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7FF, // 0x0210 (528) +0xD75D, 0x9DF8, 0x6CD3, 0x5410, 0x43D0, 0x4411, 0x3C11, 0x2BB0, 0x33D1, 0x33B1, 0x2B90, 0x2B70, 0x2B70, 0x2B70, 0x234F, 0x234F, // 0x0220 (544) +0x234E, 0x1B2E, 0x1B2E, 0x1B2E, 0x1B0E, 0x1B0D, 0x12ED, 0x12ED, 0x12CC, 0x12CC, 0x12AC, 0x0AAC, 0x0A8B, 0x0A8B, 0x0A6B, 0x026A, // 0x0230 (560) +0x2B6D, 0x2B6D, 0x2B6D, 0x2B8D, 0x2BAE, 0x33CE, 0x33CE, 0x33CE, 0x33EF, 0x33EF, 0x3C0F, 0x3C10, 0x3C30, 0x3C30, 0x3C50, 0x3C50, // 0x0240 (576) +0x3C51, 0x4451, 0x4451, 0x4471, 0x4472, 0x4472, 0x4492, 0x4492, 0x4492, 0x4C72, 0x4C92, 0x4C72, 0x4451, 0x5492, 0x7DD7, 0xAF1C, // 0x0250 (592) +0xDF9E, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFDE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, // 0x0260 (608) +0xFFFF, 0xF7FF, 0xEFFF, 0xC71C, 0x7514, 0x43F0, 0x3BF0, 0x4411, 0x33D1, 0x33B1, 0x33B0, 0x2B90, 0x2B90, 0x236F, 0x236F, 0x234F, // 0x0270 (624) +0x1B4E, 0x1B2E, 0x1B2E, 0x1B2E, 0x1B0E, 0x1B0E, 0x1B0D, 0x1B0D, 0x12ED, 0x12CC, 0x12CC, 0x12AC, 0x0AAB, 0x0A8B, 0x0A8B, 0x0A6A, // 0x0280 (640) +0x2B8D, 0x2B6D, 0x2B8D, 0x2BAE, 0x2BAE, 0x2BCE, 0x2BEE, 0x2BEE, 0x33EF, 0x33EF, 0x3C0F, 0x3C0F, 0x3C30, 0x3C30, 0x3C50, 0x4450, // 0x0290 (656) +0x4471, 0x4450, 0x4471, 0x4492, 0x4472, 0x4472, 0x4C72, 0x4C72, 0x4472, 0x44B3, 0x3C72, 0x4492, 0x5492, 0xAE59, 0xFFFF, 0xFFFF, // 0x02A0 (672) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02B0 (688) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xEF9E, 0xD6DB, 0xCF1C, 0xA659, 0x64D3, 0x3BF0, 0x2BAF, 0x2BD0, 0x2B8F, 0x2B6F, 0x2B4F, 0x232F, // 0x02C0 (704) +0x232F, 0x1B2F, 0x1B2E, 0x1B2E, 0x1B2E, 0x1B2D, 0x1B0D, 0x1B0D, 0x1B0C, 0x1AEC, 0x1ACB, 0x12AB, 0x12AB, 0x0AAA, 0x0AAA, 0x0A8A, // 0x02D0 (720) +0x2B6E, 0x2B6D, 0x2B8E, 0x2BAE, 0x2BAE, 0x2BCE, 0x2BCE, 0x2BCE, 0x33EF, 0x33EF, 0x3C0F, 0x3C0F, 0x3C30, 0x3C30, 0x3C50, 0x3C50, // 0x02E0 (736) +0x3C2F, 0x4471, 0x4471, 0x4492, 0x4C92, 0x4CB2, 0x4CB2, 0x4C71, 0x5CB2, 0x64F4, 0x7D56, 0xA65A, 0xD79E, 0xF7FF, 0xF7FE, 0xFFDE, // 0x02F0 (752) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xF7FF, 0xF7FF, 0xD79E, 0xAE7A, 0x6CF4, 0x4BF1, 0x338F, 0x338F, 0x2B6F, 0x2B6F, // 0x0310 (784) +0x236F, 0x1B0E, 0x1B2E, 0x1B2E, 0x1B0D, 0x234D, 0x1B0C, 0x1B0C, 0x1B0C, 0x1B0B, 0x1AEB, 0x1ACB, 0x12CB, 0x12AA, 0x0AAA, 0x0A8A, // 0x0320 (800) +0x2B8E, 0x2B6E, 0x2B8E, 0x2BAE, 0x2BAE, 0x2BCF, 0x2BCF, 0x2BCF, 0x33EF, 0x3410, 0x3410, 0x3C10, 0x3C10, 0x3C30, 0x3C50, 0x3C51, // 0x0330 (816) +0x4491, 0x3C50, 0x4491, 0x4491, 0x4CB2, 0x4470, 0x5470, 0x85D6, 0xC75C, 0xE7BF, 0xF7FF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFF, // 0x0340 (832) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) +0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xE7DF, 0xA5F8, 0x5410, 0x3BAF, 0x2B6E, 0x236E, // 0x0360 (864) +0x1B0D, 0x2B6E, 0x234E, 0x1B2D, 0x234D, 0x1B2C, 0x232C, 0x232C, 0x230B, 0x230B, 0x22EB, 0x1AEB, 0x1ACA, 0x1ACA, 0x12CA, 0x12A9, // 0x0370 (880) +0x2B8E, 0x2B6E, 0x2B8E, 0x2BAF, 0x2BAF, 0x2BAF, 0x2BCF, 0x2BCF, 0x33EF, 0x33F0, 0x3410, 0x3C10, 0x3C10, 0x3C30, 0x3C30, 0x4451, // 0x0380 (896) +0x4451, 0x4471, 0x4491, 0x4491, 0x4C91, 0x6D13, 0xAE99, 0xEFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDE, // 0x0390 (912) +0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFDD, 0xFFDE, 0xFFFF, // 0x03A0 (928) +0xFFFF, 0xFFDF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFDE, 0xFFFE, 0xFFFF, 0xFFDF, 0xFFFF, 0xFFFF, 0xF7FF, 0xC71C, 0x74F4, 0x3BAE, 0x338E, // 0x03B0 (944) +0x338E, 0x232D, 0x236D, 0x234D, 0x234C, 0x234C, 0x1B2B, 0x232C, 0x232B, 0x230B, 0x230A, 0x22EA, 0x1AEA, 0x1ACA, 0x12C9, 0x12A9, // 0x03C0 (960) +0x2B8E, 0x2B6E, 0x2B8E, 0x2BAE, 0x2BAF, 0x2BAF, 0x2BCF, 0x2BCF, 0x33EF, 0x33EF, 0x3C0F, 0x3C10, 0x3C10, 0x3C30, 0x3C50, 0x4450, // 0x03D0 (976) +0x4430, 0x4C71, 0x4C71, 0x5471, 0x9E38, 0xE7FF, 0xEFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFDE, 0xFFDE, 0xFFFF, // 0x03E0 (992) +0xFFFE, 0xFFFE, 0xFFDD, 0xF7DC, 0xFFFC, 0xFFFC, 0xFFDD, 0xFFDD, 0xFFFE, 0xFFFE, 0xFFFD, 0xF7DC, 0xF7DC, 0xF7BC, 0xF7DC, 0xFFDD, // 0x03F0 (1008) +0xFFDE, 0xFFFF, 0xFFDE, 0xFFDE, 0xFFFE, 0xEF7C, 0xD6B8, 0xF7BD, 0xFFFE, 0xFFDE, 0xFFFF, 0xFFFF, 0xF7FF, 0xE7DF, 0x95B6, 0x438E, // 0x0400 (1024) +0x334C, 0x336D, 0x2B4C, 0x2B4C, 0x234C, 0x234C, 0x234B, 0x232B, 0x232A, 0x232A, 0x230A, 0x230A, 0x2309, 0x1AE9, 0x1AC9, 0x12C8, // 0x0410 (1040) +0x338E, 0x2B8D, 0x2B8D, 0x2BAE, 0x2BAE, 0x2BCE, 0x2BCF, 0x33CF, 0x33EF, 0x33EF, 0x3C0F, 0x3C0F, 0x3C2F, 0x4430, 0x4450, 0x4450, // 0x0420 (1056) +0x4C70, 0x4C30, 0x8554, 0xDF7D, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFD, 0xE73A, 0xDED9, 0xF79C, 0xF7BD, 0xF7DE, // 0x0430 (1072) +0xFFDE, 0xFFFD, 0xF7BC, 0xEF7A, 0xF79A, 0xF7DB, 0xF7BB, 0xF77B, 0xF79C, 0xFFDC, 0xF7BC, 0xEF5A, 0xEF7A, 0xF79A, 0xF79A, 0xF79B, // 0x0440 (1088) +0xFF9C, 0xFFDE, 0xFFFE, 0xF7DD, 0xF7FD, 0xE77B, 0x9D32, 0xAD93, 0xFFFD, 0xFFFE, 0xFFFE, 0xFFFF, 0xF7DE, 0xFFFF, 0xEFFF, 0x9595, // 0x0450 (1104) +0x3B6D, 0x334C, 0x338C, 0x2B4B, 0x2B4B, 0x234B, 0x2B8B, 0x234A, 0x234A, 0x232A, 0x2329, 0x2329, 0x2309, 0x2308, 0x1AE8, 0x1AE8, // 0x0460 (1120) +0x33AE, 0x338D, 0x2BAD, 0x33AD, 0x2BCE, 0x2BCE, 0x33EE, 0x33EE, 0x340F, 0x3C0F, 0x3C0F, 0x3C2F, 0x442F, 0x444F, 0x444F, 0x444F, // 0x0470 (1136) +0x4C2F, 0x8DB5, 0xD77C, 0xFFFF, 0xFFFF, 0xFFDE, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFD, 0xDEF8, 0x9CAF, 0xAD51, 0xEF5A, 0xEFBC, 0xEFBC, // 0x0480 (1152) +0xFFDD, 0xFFFD, 0xF7BB, 0xEF79, 0xEF79, 0xEF79, 0xEF59, 0xEF7A, 0xEF5A, 0xEF7B, 0xEF5A, 0xE718, 0xE738, 0xE738, 0xE758, 0xEF59, // 0x0490 (1168) +0xEF7B, 0xF79C, 0xFFFD, 0xFFFD, 0xF7DD, 0xF7DD, 0xBE16, 0x8C6F, 0xE71A, 0xFFFE, 0xFFDE, 0xFFDE, 0xF79D, 0xFFFE, 0xFFFF, 0xF7FF, // 0x04A0 (1184) +0x9E16, 0x438C, 0x3B8B, 0x336B, 0x336A, 0x2B6A, 0x2B6A, 0x2B49, 0x2B49, 0x2B49, 0x2B28, 0x2B28, 0x2B28, 0x2308, 0x2307, 0x22E7, // 0x04B0 (1200) +0x3BCE, 0x33AD, 0x33AD, 0x33CE, 0x33CE, 0x33EE, 0x33EE, 0x340E, 0x3C0E, 0x3C0F, 0x3C2E, 0x442F, 0x444F, 0x444F, 0x446F, 0x4C4E, // 0x04C0 (1216) +0x95F5, 0xE7FE, 0xF7FE, 0xF7FD, 0xFFFE, 0xFFDE, 0xFFDE, 0xFFDE, 0xFF9C, 0xFFDC, 0xB592, 0x6B48, 0xAD71, 0xE718, 0xE739, 0xF79B, // 0x04D0 (1232) +0xF7BD, 0xFFBD, 0xF79B, 0xEF79, 0xE738, 0xDED6, 0xDED7, 0xEF5A, 0xEF5A, 0xEF3A, 0xE719, 0xDEF8, 0xE718, 0xDED6, 0xDED7, 0xE718, // 0x04E0 (1248) +0xDF19, 0xE75A, 0xF7BC, 0xFFDD, 0xFFDD, 0xFFBD, 0xE71A, 0x8C4F, 0xAD33, 0xFFDE, 0xFFFE, 0xFFDE, 0xEF5C, 0xF7BD, 0xFFFE, 0xFFFE, // 0x04F0 (1264) +0xEFFF, 0xB6F9, 0x438B, 0x3B6A, 0x3B8A, 0x3369, 0x3369, 0x3369, 0x2B48, 0x2B48, 0x2B48, 0x2B27, 0x2B27, 0x2B27, 0x2306, 0x2306, // 0x0500 (1280) +0x3BCD, 0x33CD, 0x33CD, 0x33ED, 0x3BED, 0x3C0D, 0x3C0D, 0x3C2D, 0x3C2D, 0x3C4D, 0x3C6D, 0x446E, 0x4C6E, 0x4C4E, 0x5C4F, 0xAE37, // 0x0510 (1296) +0xFFFF, 0xFFDE, 0xFFFD, 0xF7DD, 0xF7BC, 0xF7BC, 0xFFDC, 0xF77B, 0xF779, 0xE738, 0x94AE, 0x6B69, 0xB5B3, 0xDEF9, 0xDF39, 0xE77A, // 0x0520 (1312) +0xEF7A, 0xEF7A, 0xE718, 0xDED6, 0xCE75, 0xD6B6, 0xCE75, 0xDED7, 0xEF7A, 0xEF7A, 0xDEF8, 0xDED8, 0xD6B7, 0xCE55, 0xCE54, 0xD695, // 0x0530 (1328) +0xD6B6, 0xD6F7, 0xE739, 0xEF7B, 0xF7DC, 0xEFBC, 0xD6FA, 0x8C6F, 0x8C4D, 0xE6F8, 0xFFFE, 0xFFFE, 0xFFDE, 0xE73B, 0xFFDD, 0xFFDE, // 0x0540 (1344) +0xFFDF, 0xFFFF, 0xA5F5, 0x4B8A, 0x3B89, 0x3BC9, 0x3388, 0x3388, 0x3388, 0x3368, 0x2B68, 0x2B67, 0x2B47, 0x2B46, 0x2B25, 0x2B25, // 0x0550 (1360) +0x3BEC, 0x3BEC, 0x3BEC, 0x3C0C, 0x3C0D, 0x3C0D, 0x442D, 0x444D, 0x4C8D, 0x444D, 0x448D, 0x4C8E, 0x546E, 0x6CD0, 0xC73A, 0xF7FF, // 0x0560 (1376) +0xF7FE, 0xFFFE, 0xFFFD, 0xEF7B, 0xEF7B, 0xFFDC, 0xEF7A, 0xE719, 0xEF59, 0xD695, 0x840B, 0x736A, 0xBDD3, 0xD6D8, 0xDF18, 0xE77A, // 0x0570 (1392) +0xEF9A, 0xDF18, 0xDF17, 0xD6B5, 0xC633, 0xCE54, 0xBE13, 0xCE54, 0xCE96, 0xDF18, 0xD6D7, 0xD6B7, 0xC634, 0xBDF3, 0xBDF2, 0xBDF3, // 0x0580 (1408) +0xC634, 0xCE76, 0xCE97, 0xD6B8, 0xE77B, 0xE77B, 0xD6F9, 0x94D1, 0x6329, 0xC615, 0xFFDD, 0xF7BD, 0xFFFE, 0xEF9C, 0xDEFA, 0xFFDD, // 0x0590 (1424) +0xFFFF, 0xF7DE, 0xF7FE, 0x8D91, 0x43C9, 0x3BC8, 0x3BC7, 0x3BA7, 0x3387, 0x3387, 0x3387, 0x3367, 0x3366, 0x2B45, 0x2B45, 0x2B24, // 0x05A0 (1440) +0x440C, 0x440B, 0x440B, 0x440C, 0x442C, 0x442C, 0x444C, 0x4C4C, 0x444B, 0x4CAD, 0x4C6C, 0x546D, 0x5C6D, 0xBF19, 0xF7FE, 0xF7FE, // 0x05B0 (1456) +0xFFFE, 0xFFBD, 0xF79B, 0xEF7A, 0xF79B, 0xF79B, 0xE6F8, 0xEF39, 0xEF58, 0xC613, 0x7369, 0x738A, 0xB5B3, 0xD6B7, 0xDEF8, 0xD6F7, // 0x05C0 (1472) +0xD6D6, 0xCE95, 0xCE95, 0xCE94, 0xC632, 0xC633, 0xBE12, 0xB5B1, 0xC654, 0xCE75, 0xCE75, 0xCE96, 0xBE14, 0xB591, 0xB5B1, 0xBDD2, // 0x05D0 (1488) +0xC634, 0xCE76, 0xCE97, 0xCE97, 0xDF19, 0xDF3A, 0xDF3A, 0xB5D5, 0x6B8A, 0xA510, 0xF7BC, 0xFFFE, 0xDF1A, 0xE73B, 0xD6D9, 0xE73B, // 0x05E0 (1504) +0xFFDD, 0xF7DD, 0xEFFD, 0x95D2, 0x43A8, 0x43E7, 0x3BE7, 0x3BA6, 0x3BA6, 0x3BA6, 0x33A6, 0x3385, 0x3385, 0x3364, 0x3344, 0x3343, // 0x05F0 (1520) +0x4C2B, 0x4C0B, 0x442B, 0x442B, 0x444B, 0x446B, 0x4C6B, 0x4C8C, 0x4C8B, 0x54AC, 0x54CC, 0x5C8C, 0x7D30, 0xE7FC, 0xF7FD, 0xFFBC, // 0x0600 (1536) +0xF79C, 0xF77B, 0xDEF8, 0xE718, 0xEF59, 0xE719, 0xE6F8, 0xF779, 0xEF38, 0xBDD2, 0x6B48, 0x840C, 0xC614, 0xD6D7, 0xDF18, 0xCEB6, // 0x0610 (1552) +0xC675, 0xC654, 0xC633, 0xBE12, 0xBDF1, 0xBDD1, 0xBE12, 0xB5B1, 0xBDF2, 0xBE13, 0xBE13, 0xBDF3, 0xAD91, 0xAD71, 0xB5B1, 0xB5B1, // 0x0620 (1568) +0xB5F3, 0xC655, 0xCE76, 0xC656, 0xC677, 0xCED9, 0xD6F9, 0xADB4, 0x6349, 0x8C6D, 0xDEF9, 0xFFFE, 0xD6D9, 0xCEB8, 0xCE97, 0xCE77, // 0x0630 (1584) +0xDF1A, 0xDF1A, 0xE7DB, 0x852F, 0x4BE8, 0x4C07, 0x3BC5, 0x43E6, 0x43C5, 0x43C5, 0x3BA5, 0x3BA5, 0x3BA4, 0x3B83, 0x3B63, 0x3362, // 0x0640 (1600) +0x544B, 0x4C4A, 0x4C4A, 0x4C6B, 0x4C8B, 0x4C8B, 0x4C8B, 0x54AB, 0x54CB, 0x4C8A, 0x54CB, 0x5CAC, 0x7D0E, 0xCF37, 0xEFBB, 0xE739, // 0x0650 (1616) +0xE6F8, 0xDED7, 0xD675, 0xDED7, 0xDED7, 0xD696, 0xE6F8, 0xF779, 0xE6F7, 0xB570, 0x6307, 0x948D, 0xCE75, 0xD6D7, 0xD6D7, 0xCE96, // 0x0660 (1632) +0xC654, 0xC654, 0xC653, 0xBDF2, 0xB5B1, 0xB5B1, 0xB5D2, 0xB5D2, 0xAD91, 0xAD91, 0xADB2, 0xAD71, 0x9D10, 0xA530, 0xAD71, 0xAD71, // 0x0670 (1648) +0x9D30, 0xB5D3, 0xC635, 0xD6B8, 0xCEB8, 0xCED9, 0xCED8, 0xBE36, 0x5AE7, 0x7BEB, 0xC656, 0xF7BD, 0xDF3A, 0xC677, 0xBE15, 0xBDF5, // 0x0680 (1664) +0xC636, 0xC656, 0xE7FB, 0x8DB0, 0x4BE7, 0x4C06, 0x4405, 0x4C05, 0x43E5, 0x43C4, 0x43C4, 0x43C4, 0x3BA4, 0x3BA3, 0x3B82, 0x3B62, // 0x0690 (1680) +0x546A, 0x546A, 0x4C6A, 0x4C8A, 0x4CAA, 0x4CAA, 0x54AA, 0x54CA, 0x54EA, 0x54EA, 0x54CA, 0x64EB, 0x6CCC, 0xBEF5, 0xE778, 0xC634, // 0x06A0 (1696) +0xD675, 0xCE34, 0xCE54, 0xD695, 0xCE75, 0xD696, 0xDED7, 0xEF79, 0xDEB6, 0xA50F, 0x6327, 0x94AE, 0xC655, 0xCE96, 0xC675, 0xC654, // 0x06B0 (1712) +0xC654, 0xC654, 0xCE75, 0xBDD3, 0xB5B2, 0xC614, 0xB591, 0xAD50, 0xAD70, 0xA550, 0xAD71, 0xAD71, 0xA530, 0x9D10, 0xA510, 0x9CCF, // 0x06C0 (1728) +0x94EF, 0x9CEF, 0x9CF0, 0xC615, 0xDF39, 0xE77B, 0xCED9, 0xBE36, 0x73CB, 0x73CB, 0xBE15, 0xF7BC, 0xDF5B, 0xBE57, 0xB5F4, 0xADB3, // 0x06D0 (1744) +0xAD93, 0xB5F4, 0xD778, 0x95CF, 0x4BE6, 0x4C26, 0x4C25, 0x4C04, 0x4BE4, 0x4BE4, 0x43E4, 0x43C4, 0x43C3, 0x43A3, 0x3BA2, 0x3B82, // 0x06E0 (1760) +0x5C89, 0x5489, 0x5489, 0x54A9, 0x54A9, 0x54A9, 0x5CC9, 0x5CC9, 0x5CE9, 0x5CE9, 0x5CE9, 0x64EA, 0x74EB, 0xAE51, 0xD736, 0xBE12, // 0x06F0 (1776) +0xBDD2, 0xC613, 0xCE34, 0xC5F2, 0xC634, 0xD6B6, 0xE718, 0xE718, 0xD6B6, 0x9CCE, 0x6B68, 0x9CCF, 0xBDF4, 0xC656, 0xC696, 0xCE96, // 0x0700 (1792) +0xD6F6, 0xCE75, 0xBDF3, 0xAD71, 0xA530, 0xB5B2, 0xAD71, 0x9CCE, 0x9CEE, 0xA52F, 0xAD91, 0xA52F, 0x9D0F, 0x9D0F, 0x94AE, 0x7BEB, // 0x0710 (1808) +0x6BA9, 0x6B8A, 0x7BEC, 0x9CF0, 0xC636, 0xDF3A, 0xE77B, 0xCE97, 0x846D, 0x738A, 0xB593, 0xEF7B, 0xE75B, 0xC677, 0xA593, 0xA552, // 0x0720 (1824) +0x9D11, 0xA591, 0xC715, 0x74EB, 0x5446, 0x5445, 0x4C03, 0x5424, 0x4C03, 0x4C03, 0x4C03, 0x4BE3, 0x43E3, 0x43C3, 0x43A2, 0x43A2, // 0x0730 (1840) +0x5CA8, 0x5C88, 0x5488, 0x5CA8, 0x5CC8, 0x5CC8, 0x5CC8, 0x64E8, 0x5D08, 0x6509, 0x5CE8, 0x6D0A, 0x6CEA, 0x95CE, 0xD735, 0xADB0, // 0x0740 (1856) +0xAD70, 0xBDB2, 0xB591, 0xB591, 0xC613, 0xCE55, 0xE718, 0xDF18, 0xD695, 0x8C4C, 0x6B48, 0x9CCF, 0xB5D3, 0xC655, 0xD6D7, 0xE759, // 0x0750 (1872) +0xD6F7, 0xC634, 0xA530, 0xA530, 0x94AE, 0x9CAE, 0xA52F, 0x9CEE, 0x94CD, 0xA50F, 0xAD90, 0xA52F, 0x94EE, 0x8C8D, 0x842C, 0x73AA, // 0x0760 (1888) +0x6348, 0x4A65, 0x6B29, 0x946E, 0xA532, 0xB5F5, 0xD6F9, 0xCE97, 0x94CF, 0x6349, 0xA552, 0xEF7C, 0xDF3A, 0xC677, 0xAD93, 0x9D11, // 0x0770 (1904) +0x8CCF, 0xADD1, 0x9DF0, 0x6468, 0x5466, 0x5444, 0x5443, 0x5443, 0x5423, 0x5423, 0x4C03, 0x4C03, 0x43E3, 0x43E3, 0x43C2, 0x43A2, // 0x0780 (1920) +0x5CA7, 0x5CA7, 0x5CA7, 0x5CC8, 0x5CC8, 0x64C8, 0x64E8, 0x64E8, 0x6508, 0x64E7, 0x6D08, 0x6D28, 0x6D09, 0x7D6B, 0xA691, 0xAE71, // 0x0790 (1936) +0xA54F, 0xA50E, 0xA52F, 0xB571, 0xBDD3, 0xD676, 0xDED8, 0xE718, 0xC633, 0x7388, 0x6B68, 0x9D0F, 0xBE14, 0xCEB7, 0xE75A, 0xDF39, // 0x07A0 (1952) +0xC654, 0xA52F, 0x8C4C, 0x73A9, 0x73A8, 0x840A, 0x8C8C, 0x948D, 0x94AD, 0xA510, 0xAD91, 0xAD71, 0xA531, 0x8C6E, 0x8C2C, 0x7389, // 0x07B0 (1968) +0x52A6, 0x18E0, 0x2103, 0x39E7, 0x7BEE, 0xAD74, 0xA553, 0xB5D3, 0x8CAC, 0x52C5, 0x842C, 0xDEF9, 0xF7BE, 0xD69A, 0xA553, 0x8CEF, // 0x07C0 (1984) +0x8D2E, 0xAE71, 0x74EA, 0x5C46, 0x5C65, 0x5C64, 0x5443, 0x5C63, 0x5443, 0x5423, 0x5423, 0x4C03, 0x4BE3, 0x4BC3, 0x43C2, 0x43A2, // 0x07D0 (2000) +0x64C6, 0x64C6, 0x64C7, 0x64C7, 0x64E7, 0x64E7, 0x6507, 0x6507, 0x6507, 0x6D27, 0x6D27, 0x6D27, 0x6D28, 0x7528, 0x8DCC, 0xAE70, // 0x07E0 (2016) +0xB5D0, 0x94AC, 0xA52E, 0xA52F, 0xB592, 0xDEB7, 0xE719, 0xDED7, 0xBDD2, 0x6326, 0x6B67, 0xA52F, 0xC675, 0xD6F8, 0xD718, 0xBE15, // 0x07F0 (2032) +0xA552, 0x8C6E, 0x5AE8, 0x41E3, 0x62E7, 0x6B48, 0x842B, 0x948D, 0x9D0F, 0xAD71, 0xB5D3, 0xB5B2, 0xAD92, 0xA530, 0x9CCE, 0x7BCB, // 0x0800 (2048) +0x2962, 0x0840, 0x1081, 0x0000, 0x0860, 0x2984, 0x8C90, 0x9D10, 0x7C2A, 0x4AA4, 0x5B27, 0xBDF4, 0xF7BD, 0xE73B, 0xA552, 0x8CCE, // 0x0810 (2064) +0x9DF0, 0x856C, 0x6487, 0x5C66, 0x5C65, 0x5C64, 0x5C84, 0x5443, 0x5443, 0x5443, 0x5423, 0x4C03, 0x4BE3, 0x4BE3, 0x4BC2, 0x43A1, // 0x0820 (2080) +0x64E5, 0x64C5, 0x64C5, 0x64E6, 0x64E6, 0x6506, 0x6D06, 0x6D26, 0x6D26, 0x6D46, 0x6D46, 0x6D46, 0x7547, 0x7547, 0x7527, 0x960C, // 0x0830 (2096) +0xB650, 0xA56E, 0x94CC, 0x9CED, 0xB5B2, 0xDED7, 0xEF39, 0xDED7, 0xA50F, 0x5AE5, 0x73A8, 0x9D0E, 0xB5D2, 0xC655, 0xA551, 0x9D11, // 0x0840 (2112) +0x842E, 0x39E6, 0x18C1, 0x1060, 0x3162, 0x5265, 0x83CB, 0xA4F0, 0xAD31, 0xBDD3, 0xC635, 0xC635, 0xB5D3, 0xAD92, 0xA571, 0x9CF0, // 0x0850 (2128) +0x52A7, 0x1080, 0x0020, 0x0000, 0x0860, 0x4A87, 0xA552, 0x9D10, 0x844B, 0x52E5, 0x5B07, 0x9CF0, 0xE73A, 0xF7BC, 0xADD3, 0x9D90, // 0x0860 (2144) +0x95CD, 0x64A7, 0x6485, 0x64A5, 0x64A4, 0x5C63, 0x5CA4, 0x5C63, 0x5463, 0x5444, 0x5423, 0x5403, 0x4BE3, 0x4BE2, 0x4BC1, 0x4BA1, // 0x0870 (2160) +0x6CE5, 0x6CC5, 0x6CC5, 0x6CE5, 0x6D05, 0x6D06, 0x6D25, 0x6D45, 0x7546, 0x6D45, 0x7565, 0x7565, 0x7565, 0x7D87, 0x7546, 0x8568, // 0x0880 (2176) +0x95AB, 0xB62F, 0x9D4C, 0x9D4D, 0xBE12, 0xD696, 0xE718, 0xD676, 0x8C6C, 0x5AC5, 0x73A8, 0x8C6C, 0x9D0F, 0xA530, 0x94CE, 0x4225, // 0x0890 (2192) +0x0860, 0x0020, 0x0020, 0x18C0, 0x18A0, 0x39A3, 0x8C2D, 0xBDB3, 0xBDF4, 0xCE56, 0xCE98, 0xD6F9, 0xCED8, 0xC698, 0xBE36, 0xADB4, // 0x08A0 (2208) +0x94D0, 0x3A06, 0x2984, 0x31A5, 0x52C8, 0x8C8F, 0xA572, 0x9D10, 0x844B, 0x5B27, 0x7C0B, 0x9D10, 0xB5D3, 0xF7FC, 0xC6B6, 0x9DB0, // 0x08B0 (2224) +0x74E8, 0x64A5, 0x6CE5, 0x64A5, 0x64A4, 0x5C84, 0x5C84, 0x5C84, 0x5C64, 0x5C64, 0x5423, 0x5423, 0x5402, 0x4BE2, 0x4BC1, 0x4BC1, // 0x08C0 (2240) +0x6CE5, 0x6CC4, 0x6CE5, 0x6CE5, 0x7506, 0x7526, 0x7546, 0x7546, 0x7565, 0x7545, 0x7D65, 0x7565, 0x7545, 0x7D65, 0x7D86, 0x7D67, // 0x08D0 (2256) +0x8548, 0x9DCB, 0xB62E, 0xA5AD, 0xBE11, 0xDED6, 0xDEB6, 0xBDB2, 0x842B, 0x6B46, 0x73A8, 0x844B, 0x9D0E, 0xAD70, 0xBDF2, 0x73AA, // 0x08E0 (2272) +0x1921, 0x0860, 0x0000, 0x18A0, 0x2941, 0x734A, 0xAD52, 0xBDD4, 0xDEF9, 0xE75B, 0xE73C, 0xE77D, 0xE77D, 0xEF9E, 0xDF3C, 0xCEB9, // 0x08F0 (2288) +0xD6B8, 0x94D1, 0x73CD, 0x6BAC, 0x846E, 0x9D30, 0x9D51, 0xA571, 0x848D, 0x6369, 0x8C8E, 0xC676, 0x950F, 0xD738, 0xD758, 0x850D, // 0x0900 (2304) +0x64A6, 0x6D05, 0x64E5, 0x5CA4, 0x64A4, 0x64A4, 0x5C84, 0x5C84, 0x5C64, 0x5C64, 0x5C23, 0x5423, 0x5403, 0x53E2, 0x53C2, 0x4BC1, // 0x0910 (2320) +0x74E5, 0x74E5, 0x74E5, 0x74E5, 0x7526, 0x7526, 0x7546, 0x7546, 0x7546, 0x7D66, 0x7D66, 0x7D66, 0x7D86, 0x7D65, 0x85A6, 0x85A6, // 0x0920 (2336) +0x85A7, 0x8D88, 0x9DEB, 0xAE0D, 0xBE30, 0xDEF5, 0xBDD2, 0xA4EE, 0x842A, 0x7BC8, 0x7C09, 0x8C8C, 0x9D2F, 0xADB1, 0xAD90, 0xADB1, // 0x0930 (2352) +0x844D, 0x52A7, 0x52A6, 0x52A6, 0x6B49, 0xAD72, 0xD677, 0xE73A, 0xF79D, 0xF7DE, 0xF7DF, 0xF7BF, 0xEF9F, 0xF7BF, 0xF7BF, 0xF7DE, // 0x0940 (2368) +0xEF9C, 0xD6B8, 0xA593, 0x9511, 0x9510, 0xA591, 0xA571, 0x9D71, 0x8CEF, 0x6BCB, 0x9510, 0xDF79, 0x8D2E, 0xA5F0, 0xDFD8, 0x7D0B, // 0x0950 (2384) +0x6CC6, 0x6D05, 0x64C4, 0x64C5, 0x64C5, 0x64A5, 0x6484, 0x6484, 0x6464, 0x5C64, 0x5C23, 0x5C23, 0x5C03, 0x53E2, 0x53C2, 0x53C2, // 0x0960 (2400) +0x74E5, 0x74E5, 0x7505, 0x7506, 0x7526, 0x7D46, 0x7D46, 0x7D46, 0x7D66, 0x7D67, 0x7D66, 0x8586, 0x85A7, 0x8586, 0x85A5, 0x85A6, // 0x0970 (2416) +0x7D85, 0x85C7, 0x8D87, 0xAE2C, 0xBE50, 0xBE31, 0xA50E, 0xA50E, 0x94AC, 0x844A, 0x73E8, 0x844A, 0xA56F, 0xADB1, 0xB5D1, 0x9D2F, // 0x0980 (2432) +0xA530, 0x9CCF, 0x842C, 0x8C4D, 0xB5D3, 0xD697, 0xE73A, 0xF7BD, 0xF7BE, 0xF7DF, 0xF7DF, 0xF7FF, 0xFFFF, 0xFFDF, 0xF7BE, 0xFFFF, // 0x0990 (2448) +0xEFBD, 0xE73B, 0xD6FA, 0xB5D5, 0xA572, 0xA572, 0xA592, 0x9D72, 0x848E, 0x7C2D, 0xA5D3, 0xD758, 0x8D2C, 0x856B, 0xC753, 0x854A, // 0x09A0 (2464) +0x6D06, 0x6CE5, 0x6CC5, 0x6CE5, 0x6CC5, 0x64A5, 0x6484, 0x6484, 0x6464, 0x6444, 0x5C23, 0x5C23, 0x5C03, 0x53E3, 0x53C3, 0x53C3, // 0x09B0 (2480) +0x7505, 0x7505, 0x7525, 0x7D26, 0x7D26, 0x7D46, 0x7D46, 0x7D67, 0x8587, 0x8587, 0x8587, 0x85A7, 0x8586, 0x85C6, 0x8DC6, 0x8DC6, // 0x09C0 (2496) +0x85E6, 0x8DE6, 0x8DC7, 0x9589, 0xBE6F, 0xB5CF, 0xAD6F, 0xBDD1, 0x9D0D, 0x8CAB, 0x7C29, 0x846B, 0xA56F, 0xADD1, 0xADB1, 0xA570, // 0x09D0 (2512) +0xA52F, 0xA50F, 0x9CEF, 0xAD71, 0xC655, 0xD6B7, 0xE75B, 0xF7DD, 0xF7DE, 0xF7FF, 0xF7FF, 0xF7DF, 0xFFFF, 0xFFFF, 0xFFBE, 0xFFDE, // 0x09E0 (2528) +0xFFDF, 0xF7BE, 0xDF3C, 0xCE99, 0xADD5, 0xADB4, 0xADD4, 0xA593, 0x84AF, 0x7C6E, 0xB655, 0xDFB9, 0x8D8B, 0x7D28, 0x7D28, 0x7528, // 0x09F0 (2544) +0x7527, 0x7506, 0x6CE6, 0x64A5, 0x6CA5, 0x6CA5, 0x6484, 0x6484, 0x6464, 0x6464, 0x5C43, 0x5C23, 0x5C03, 0x5BE3, 0x53C3, 0x53C3, // 0x0A00 (2560) +0x7D06, 0x7D06, 0x7D07, 0x8527, 0x8547, 0x8547, 0x8567, 0x8567, 0x8DA8, 0x8DA8, 0x8DA8, 0x8DA8, 0x8DA7, 0x8DC8, 0x95C7, 0x95C8, // 0x0A10 (2576) +0x95E8, 0x8DC8, 0x95E8, 0x95A9, 0xB68F, 0xDF96, 0xE7B9, 0xBE14, 0xA590, 0x9D2E, 0x8CAB, 0x94CC, 0x9D4E, 0xA590, 0xADD2, 0xB5D2, // 0x0A20 (2592) +0xA570, 0xAD50, 0xAD71, 0xC614, 0xCE76, 0xDF19, 0xEF9C, 0xF7DD, 0xEFBD, 0xEF9D, 0xF7FE, 0xF7DE, 0xE77D, 0xEF9D, 0xF7DE, 0xEFBE, // 0x0A30 (2608) +0xE75D, 0xF7DF, 0xE77D, 0xC678, 0xB615, 0xB614, 0xB635, 0x9D93, 0x84EF, 0x8D0F, 0xC6D8, 0xCF57, 0x8D6A, 0x7D47, 0x7527, 0x7506, // 0x0A40 (2624) +0x6D06, 0x6D06, 0x6CE5, 0x6CE5, 0x6CC5, 0x6CA5, 0x6484, 0x6465, 0x6465, 0x6465, 0x6445, 0x6424, 0x6404, 0x5BE4, 0x5BC3, 0x53C2, // 0x0A50 (2640) +0x7D27, 0x7D07, 0x7D07, 0x7D27, 0x8547, 0x8568, 0x8D88, 0x8D88, 0x8DA8, 0x8DA8, 0x8DC8, 0x95C8, 0x95C8, 0x95C8, 0x95E8, 0x95E8, // 0x0A60 (2656) +0x95E8, 0x95E8, 0x95C8, 0x95CA, 0xBE71, 0xF7FA, 0xEFDA, 0xCE96, 0xADB0, 0xA56F, 0x9D2E, 0xA54F, 0xA58F, 0xA590, 0xB5F2, 0xB613, // 0x0A70 (2672) +0xB5D2, 0xB5B2, 0xB5F3, 0xB5F3, 0xD6B7, 0xE75A, 0xDF19, 0xDEFA, 0xDF1A, 0xDEFA, 0xADD5, 0x9D33, 0x8C91, 0x94F2, 0xADB5, 0xC658, // 0x0A80 (2688) +0xDF3C, 0xEF7D, 0xEFBE, 0xCEDA, 0xA5B3, 0xBE76, 0xB615, 0xA5D4, 0x8D10, 0xA5D3, 0xCF59, 0xBED5, 0x8D8A, 0x7D27, 0x7D47, 0x7D47, // 0x0A90 (2704) +0x7527, 0x6D06, 0x6CE5, 0x6CC5, 0x6CC5, 0x6CA5, 0x6CA5, 0x6C85, 0x6C85, 0x6C65, 0x6C65, 0x6445, 0x6424, 0x5C04, 0x5BE3, 0x5BC3, // 0x0AA0 (2720) +0x8528, 0x8528, 0x8507, 0x8527, 0x8548, 0x8D68, 0x8D88, 0x8DA9, 0x8DA8, 0x8DA8, 0x95C8, 0x95C8, 0x95C8, 0x95E8, 0x95E8, 0x95E8, // 0x0AB0 (2736) +0x95E7, 0x95E8, 0x95C9, 0xAE4E, 0xE7D9, 0xF7FD, 0xF7DC, 0xCE95, 0xB5D1, 0xADB0, 0xAD70, 0xA54F, 0x9D4E, 0xA58F, 0xB612, 0xBE54, // 0x0AC0 (2752) +0xC654, 0xC654, 0xB5F2, 0xBE14, 0xCEB6, 0xDF39, 0xDF19, 0xD6F9, 0xB5F5, 0x7C0F, 0x5B0B, 0x5B2B, 0x636C, 0x73AD, 0x73EE, 0x8C91, // 0x0AD0 (2768) +0xBE16, 0xD6FA, 0xEFDE, 0xE79D, 0xBE56, 0xB615, 0xADF5, 0xADF5, 0x9D92, 0xC6D7, 0xE7DB, 0xC6F5, 0x95AB, 0x7D48, 0x7D47, 0x7527, // 0x0AE0 (2784) +0x7527, 0x6D06, 0x6CE5, 0x6CC5, 0x6CC5, 0x6CA5, 0x6CA5, 0x6CA5, 0x6C85, 0x6C65, 0x6C45, 0x6445, 0x6425, 0x6424, 0x6404, 0x5BE3, // 0x0AF0 (2800) +0x8528, 0x8528, 0x8528, 0x8548, 0x8D69, 0x8D69, 0x8D69, 0x8D89, 0x8DA9, 0x95A9, 0x95C9, 0x95C9, 0x95C8, 0x95E9, 0x95E8, 0x9E08, // 0x0B00 (2816) +0x9E08, 0x9DC8, 0x9DEC, 0xDF97, 0xFFFD, 0xFFFF, 0xF7DC, 0xD6D7, 0xB5F2, 0xADB0, 0xA570, 0xA570, 0x9D4F, 0xA590, 0xB612, 0xBE53, // 0x0B10 (2832) +0xBE53, 0xBE13, 0xBE13, 0xBE34, 0xDF18, 0xDF39, 0xE77A, 0xCE77, 0x94B0, 0x6B6C, 0x632B, 0x5289, 0x4A68, 0x4A68, 0x52A9, 0x7BEE, // 0x0B20 (2848) +0x73ED, 0xBE37, 0xDF5C, 0xE79D, 0xCF19, 0xB636, 0xB636, 0xA5D4, 0xAE14, 0xCF38, 0xDFB9, 0xC714, 0x95AB, 0x8569, 0x7D67, 0x7547, // 0x0B30 (2864) +0x7527, 0x6D06, 0x6CE5, 0x6CC5, 0x6CC5, 0x6CA5, 0x6CA5, 0x74A6, 0x6C85, 0x6C66, 0x6C65, 0x6C46, 0x6C45, 0x6C25, 0x6404, 0x63E4, // 0x0B40 (2880) +0x8528, 0x8528, 0x8529, 0x8D49, 0x8D49, 0x8D49, 0x8D69, 0x8D69, 0x8D89, 0x9589, 0x95A9, 0x95C9, 0x95E9, 0x95E9, 0x9DE9, 0x9DE9, // 0x0B50 (2896) +0x95C8, 0x9DCB, 0xCF15, 0xFFFD, 0xF7FE, 0xFFFF, 0xF7FD, 0xE739, 0xBE33, 0xAD90, 0xA54E, 0xA58F, 0xA590, 0xA591, 0xADF1, 0xB612, // 0x0B60 (2912) +0xBE12, 0xB5D2, 0xC654, 0xD6D7, 0xDEF8, 0xD6D8, 0xC656, 0xBDF5, 0x630A, 0x5289, 0x2102, 0x0840, 0x0820, 0x0800, 0x0820, 0x39C6, // 0x0B70 (2928) +0x634B, 0xA594, 0xC679, 0xE77D, 0xDF7B, 0xCEF9, 0xBE97, 0xADF4, 0xBE96, 0xCF17, 0xC715, 0xAE70, 0x8D8A, 0x8568, 0x7D48, 0x7D47, // 0x0B80 (2944) +0x6D27, 0x6CE7, 0x6CE6, 0x6CC5, 0x6CC5, 0x6CA5, 0x74A5, 0x74A6, 0x7486, 0x7466, 0x7466, 0x7466, 0x7466, 0x6C46, 0x6C25, 0x6405, // 0x0B90 (2960) +0x8508, 0x8508, 0x8D29, 0x8D29, 0x8D49, 0x8D49, 0x8D49, 0x8D69, 0x9589, 0x9589, 0x95A9, 0x9DCA, 0x95C9, 0x9DE9, 0x95E9, 0x95C9, // 0x0BA0 (2976) +0x9DAB, 0xCED3, 0xF7FD, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFD, 0xDF19, 0xC674, 0xB5D1, 0xA56E, 0x9D2D, 0x952F, 0xA570, 0xA5B1, 0xADD1, // 0x0BB0 (2992) +0xBE13, 0xC655, 0xD6D7, 0xD6D7, 0xD6D7, 0xB5D4, 0xB5B4, 0xB5B4, 0x738C, 0x3185, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x18C2, // 0x0BC0 (3008) +0x5B4B, 0x9512, 0xADD6, 0xD71C, 0xDF9C, 0xC6F9, 0xC6F8, 0xAE35, 0xBEB6, 0xC6F5, 0xB6D2, 0x9DED, 0x95CB, 0x8589, 0x7D68, 0x7D48, // 0x0BD0 (3024) +0x7527, 0x6CE7, 0x64C6, 0x64A6, 0x6CA6, 0x6CC6, 0x74A6, 0x74A7, 0x7486, 0x7487, 0x7467, 0x7467, 0x7467, 0x7446, 0x6C26, 0x6C05, // 0x0BE0 (3040) +0x84E8, 0x84E8, 0x8508, 0x8D29, 0x8D29, 0x8D49, 0x8D4A, 0x8D4A, 0x956A, 0x958A, 0x95AA, 0x95CA, 0x95C9, 0x95C9, 0x95E9, 0x9DCB, // 0x0BF0 (3056) +0xC6D3, 0xFFFD, 0xFFFF, 0xFFFF, 0xFFDE, 0xFFFE, 0xF7DB, 0xDF18, 0xCE95, 0xBE32, 0xADAF, 0x94EC, 0x8CAC, 0x950E, 0x9D4F, 0xA5B1, // 0x0C00 (3072) +0xB5F2, 0xCEB6, 0xCE96, 0xCEB6, 0xC676, 0xB5D4, 0xAD93, 0x94F1, 0x73AD, 0x1902, 0x0040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0C10 (3088) +0x4288, 0x8490, 0x9D55, 0xBE59, 0xD75B, 0xC6D8, 0xC6F8, 0xB675, 0xBED5, 0xB692, 0xAE90, 0x9DEC, 0x95EB, 0x8DAA, 0x8589, 0x7D68, // 0x0C20 (3104) +0x7528, 0x6CE7, 0x64A6, 0x64A6, 0x6CA6, 0x74C6, 0x74C7, 0x7CC7, 0x7CA7, 0x7C87, 0x7C87, 0x7C88, 0x7C68, 0x7447, 0x6C27, 0x6C26, // 0x0C30 (3120) +0x84E8, 0x84E8, 0x8508, 0x8D29, 0x8D49, 0x8D49, 0x8D29, 0x8D29, 0x8D49, 0x956A, 0x958A, 0x9589, 0x95A9, 0x95CA, 0x9E0A, 0xA60D, // 0x0C40 (3136) +0xEFFA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF7DD, 0xF7BB, 0xDF17, 0xCE94, 0xBE32, 0xB5D0, 0xA56E, 0x94ED, 0x84AC, 0x8CCD, 0xA591, // 0x0C50 (3152) +0xADF3, 0xADD3, 0xBE54, 0xC6B7, 0xBE76, 0xA593, 0x9511, 0x8CD1, 0x5B2B, 0x31A5, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0881, // 0x0C60 (3168) +0x4268, 0x742F, 0x9D35, 0xB639, 0xCF3A, 0xCF39, 0xAE34, 0xC6F6, 0xCF57, 0xAE71, 0xA64E, 0x9E0C, 0x8D8A, 0x8569, 0x7D48, 0x7528, // 0x0C70 (3184) +0x6CE7, 0x64C7, 0x64A6, 0x64A6, 0x6CC6, 0x74C7, 0x7CC7, 0x7CC7, 0x7CC8, 0x7CA8, 0x7CA8, 0x7CA8, 0x7C88, 0x7468, 0x7447, 0x7447, // 0x0C80 (3200) +0x7CC7, 0x7CC7, 0x84E8, 0x8D08, 0x8D29, 0x9529, 0x8D09, 0x8D09, 0x8D29, 0x954A, 0x956A, 0x9569, 0x95A9, 0x95A9, 0x958C, 0xC6B3, // 0x0C90 (3216) +0xFFFD, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFDD, 0xF7BC, 0xEF5A, 0xDEF7, 0xC653, 0xBE12, 0xB5D0, 0xA56F, 0x94EC, 0x8CAC, 0x846B, 0x8CCD, // 0x0CA0 (3232) +0xADD1, 0x8D0F, 0xA591, 0xBE75, 0xB614, 0x9D72, 0x8CD0, 0x846F, 0x5B0A, 0x31A5, 0x0880, 0x0000, 0x0000, 0x0020, 0x0000, 0x18C1, // 0x0CB0 (3248) +0x4226, 0x638B, 0x8CB1, 0xB617, 0xD75B, 0xC6B8, 0xB657, 0xE7DB, 0xD757, 0xAE50, 0xA60C, 0x9DEA, 0x8D89, 0x8569, 0x7507, 0x74E7, // 0x0CC0 (3264) +0x6CE7, 0x6CA6, 0x64A6, 0x6CA7, 0x74C7, 0x7CC8, 0x7CC8, 0x84C8, 0x84C9, 0x84A9, 0x84A9, 0x84A9, 0x84A9, 0x7C89, 0x7C89, 0x7C68, // 0x0CD0 (3280) +0x7CA7, 0x7CA7, 0x7CC7, 0x84E8, 0x8CE9, 0x8CE9, 0x8CE9, 0x8CE9, 0x8D09, 0x8D2A, 0x8D4A, 0x8D49, 0x8D69, 0x956A, 0xA5EE, 0xE798, // 0x0CE0 (3296) +0xFFFE, 0xFFFF, 0xFFFF, 0xFFFE, 0xF7BD, 0xEF7B, 0xDF18, 0xD6B6, 0xC654, 0xB5D1, 0xA56F, 0xADD0, 0x9D2E, 0x846B, 0x846B, 0x846B, // 0x0CF0 (3312) +0x94EE, 0x952F, 0x6BEA, 0xADD2, 0xBE34, 0x9D31, 0x848F, 0x73CD, 0x52C8, 0x2984, 0x0880, 0x0860, 0x0020, 0x0840, 0x18C1, 0x18E1, // 0x0D00 (3328) +0x29C3, 0x5B29, 0x7C4F, 0xB5F6, 0xCEF9, 0xC6B9, 0xDF9C, 0xF7FD, 0xE7D9, 0xBEB2, 0x9DCC, 0x95A9, 0x8548, 0x7507, 0x6CE7, 0x6CE7, // 0x0D10 (3344) +0x6CC7, 0x6CA7, 0x6C86, 0x6CA7, 0x74C8, 0x7CC8, 0x7CC8, 0x84E9, 0x84C9, 0x84A9, 0x84A9, 0x84A9, 0x84A9, 0x8489, 0x7C89, 0x7C69, // 0x0D20 (3360) +0x7C87, 0x7C87, 0x7CA8, 0x84C9, 0x8CE9, 0x8CC9, 0x8CC9, 0x8CE9, 0x8D09, 0x8D09, 0x8D29, 0x8D4A, 0x956A, 0x958B, 0xB651, 0xF7FB, // 0x0D30 (3376) +0xFFFE, 0xFFFF, 0xFFFF, 0xFFFE, 0xF7BC, 0xEF7A, 0xE738, 0xDEF7, 0xD6B5, 0xBE12, 0xADB0, 0xA54F, 0xA54E, 0x94ED, 0x848B, 0x846B, // 0x0D40 (3392) +0x848C, 0x94EE, 0x8CCE, 0x846D, 0xAD91, 0xA571, 0x7C2D, 0x634A, 0x4A87, 0x31C4, 0x18E1, 0x1901, 0x0860, 0x0020, 0x18C1, 0x18E1, // 0x0D50 (3408) +0x29C3, 0x4286, 0x740D, 0xADD4, 0xC697, 0xD73A, 0xF7FE, 0xF7FE, 0xF7FB, 0xCF15, 0x9DEC, 0x95AA, 0x8548, 0x6CE6, 0x6CE6, 0x64A5, // 0x0D60 (3424) +0x6486, 0x6C87, 0x6C87, 0x74A7, 0x74A8, 0x7CC8, 0x84C9, 0x84E9, 0x84C9, 0x84A9, 0x84A9, 0x84AA, 0x84A9, 0x8489, 0x848A, 0x7C69, // 0x0D70 (3440) +0x7446, 0x7466, 0x7C87, 0x84A8, 0x84A9, 0x84A9, 0x84A8, 0x84C8, 0x84E9, 0x84E9, 0x8D09, 0x8D2A, 0x954A, 0x954C, 0xC694, 0xF7FC, // 0x0D80 (3456) +0xFFFE, 0xFFFF, 0xFFDE, 0xEF9C, 0xE73A, 0xDF18, 0xDF17, 0xD6F6, 0xC653, 0xBE12, 0xADB0, 0x94CC, 0x94CC, 0x94ED, 0x8C8B, 0x844A, // 0x0D90 (3472) +0x7C2A, 0x7C0A, 0x94EE, 0x8C8D, 0x7C4B, 0x8CAD, 0x844C, 0x52C6, 0x4285, 0x2982, 0x08A0, 0x0880, 0x0080, 0x08A0, 0x1901, 0x31E4, // 0x0DA0 (3488) +0x42A6, 0x6C0B, 0x9D71, 0xA593, 0xB615, 0xE75B, 0xF7FE, 0xFFFF, 0xF7FC, 0xD736, 0x9DAC, 0x8528, 0x74E6, 0x64A5, 0x64A5, 0x6485, // 0x0DB0 (3504) +0x6466, 0x6C67, 0x6C87, 0x7487, 0x74A8, 0x7CA8, 0x84C8, 0x84C9, 0x84C9, 0x84A9, 0x8489, 0x8489, 0x8489, 0x848A, 0x846A, 0x7C49, // 0x0DC0 (3520) +0x6C25, 0x7446, 0x7466, 0x7C87, 0x8488, 0x8488, 0x84A8, 0x8CC8, 0x8D09, 0x8D09, 0x8D4A, 0x8D2A, 0x8D09, 0x952C, 0xDF58, 0xFFFD, // 0x0DD0 (3536) +0xFFFE, 0xFFFF, 0xF7DD, 0xE75A, 0xDF18, 0xDF17, 0xDEF7, 0xD6B6, 0xCE94, 0xB5D1, 0x94EE, 0x846C, 0x7C2A, 0x7C2B, 0x8CAC, 0x844A, // 0x0DE0 (3552) +0x6BC8, 0x6BE8, 0x6BC8, 0x848B, 0x7C2A, 0x7C2A, 0x94ED, 0x7C6B, 0x63A8, 0x5306, 0x42A5, 0x4264, 0x42A5, 0x4AC6, 0x4AC6, 0x6BCA, // 0x0DF0 (3568) +0x84CE, 0xA5B2, 0x9D71, 0x9510, 0xB614, 0xE75A, 0xF7DE, 0xF7DE, 0xFFFD, 0xD737, 0xA5ED, 0x7D07, 0x6CC5, 0x6464, 0x5C43, 0x5C24, // 0x0E00 (3584) +0x6446, 0x6C47, 0x6C67, 0x7487, 0x7487, 0x7CA8, 0x7CA8, 0x7CA8, 0x7CA8, 0x7C68, 0x7C68, 0x7C69, 0x7C69, 0x7C69, 0x7C49, 0x7C29, // 0x0E10 (3600) +0x7446, 0x7446, 0x7C66, 0x7C67, 0x8468, 0x8488, 0x84C8, 0x8CE8, 0x8D29, 0x9529, 0x954A, 0x8D0A, 0x8D0A, 0xADD0, 0xF7FB, 0xFFFE, // 0x0E20 (3616) +0xFFFF, 0xFFFE, 0xEFBC, 0xE75A, 0xDF18, 0xDF18, 0xD6F6, 0xCE95, 0xB5B1, 0x9D0F, 0x94CE, 0x94EE, 0x94AD, 0x8C8C, 0x8CAC, 0x844A, // 0x0E30 (3632) +0x7409, 0x6BC7, 0x63A7, 0x5B66, 0x6BC7, 0x6366, 0x6BC8, 0x846A, 0x8CCC, 0x84AB, 0x742A, 0x6BC9, 0x6388, 0x63A9, 0x742B, 0x8CEE, // 0x0E40 (3648) +0x8CEF, 0x84AE, 0x848E, 0x9510, 0xADB2, 0xD6D8, 0xF7FE, 0xF7FF, 0xE79B, 0xBE94, 0x958B, 0x7CE6, 0x6CA5, 0x6464, 0x5C23, 0x6445, // 0x0E50 (3664) +0x6446, 0x6C47, 0x6C67, 0x7467, 0x7487, 0x7487, 0x7487, 0x7C67, 0x7C67, 0x7447, 0x7C47, 0x7C48, 0x7C48, 0x7C49, 0x7C29, 0x7408, // 0x0E60 (3680) +0x7C87, 0x7C87, 0x7C67, 0x7C67, 0x8488, 0x8488, 0x84C8, 0x8CE9, 0x8D29, 0x8D09, 0x8D0A, 0x8D0A, 0x9D6D, 0xD6F5, 0xFFFE, 0xFFFF, // 0x0E70 (3696) +0xF7FF, 0xF7DE, 0xEF7C, 0xDF19, 0xD6D7, 0xCEB6, 0xC674, 0xBE13, 0xBDF3, 0xB5B2, 0xB5D2, 0xA571, 0x94EE, 0x94CE, 0x8C8C, 0x846B, // 0x0E80 (3712) +0x73C8, 0x6366, 0x6B87, 0x6366, 0x5B25, 0x5304, 0x5B05, 0x6346, 0x6BA7, 0x73C8, 0x73E9, 0x7C4B, 0x7C4B, 0x7C4C, 0x7C4C, 0x7C2C, // 0x0E90 (3728) +0x848E, 0x7C4E, 0x8CEF, 0x9D30, 0xA571, 0xC696, 0xE77B, 0xE77C, 0xEFFC, 0xBEB4, 0x8D6B, 0x74C6, 0x6C84, 0x6443, 0x5C03, 0x6424, // 0x0EA0 (3744) +0x6425, 0x6C47, 0x6C46, 0x6C66, 0x6C46, 0x7446, 0x6C45, 0x7445, 0x7425, 0x6C26, 0x7426, 0x7427, 0x7407, 0x7408, 0x73E8, 0x6BC8, // 0x0EB0 (3760) +0x8CE9, 0x84C9, 0x84A8, 0x84A9, 0x8CA9, 0x8CA9, 0x8CC9, 0x8CE9, 0x8D2A, 0x8D2A, 0x8D0A, 0x952B, 0xADCF, 0xF7FA, 0xFFFF, 0xFFDF, // 0x0EC0 (3776) +0xF7BE, 0xEFBD, 0xE77B, 0xD6F9, 0xCE96, 0xC674, 0xC654, 0xC634, 0xBE13, 0xADB2, 0xA551, 0x9D30, 0x844C, 0x8CAD, 0x94CD, 0x7C0A, // 0x0ED0 (3792) +0x6346, 0x73C9, 0x6BA7, 0x6346, 0x6325, 0x6346, 0x6366, 0x5AE4, 0x52C4, 0x5AE5, 0x5B05, 0x6347, 0x6389, 0x6BAA, 0x6BCA, 0x740C, // 0x0EE0 (3808) +0x848F, 0x9511, 0x9D31, 0x9D50, 0xB5F3, 0xC696, 0xCED9, 0xE77C, 0xE7BB, 0xB673, 0x854A, 0x6CA5, 0x6463, 0x6443, 0x6423, 0x6404, // 0x0EF0 (3824) +0x6425, 0x6C26, 0x6C46, 0x6C46, 0x6C25, 0x6C25, 0x6C24, 0x6C04, 0x6C04, 0x6C05, 0x7406, 0x7406, 0x6BE7, 0x6BC7, 0x6BC7, 0x63A6, // 0x0F00 (3840) +0x952A, 0x950A, 0x8D09, 0x8D09, 0x8D29, 0x8D0A, 0x8D09, 0x8D09, 0x952A, 0x954A, 0x9529, 0x950B, 0xCEB6, 0xFFFF, 0xF7FE, 0xF7DE, // 0x0F10 (3856) +0xEFBD, 0xE79C, 0xE75B, 0xDF5A, 0xD718, 0xCEB6, 0xC654, 0xC654, 0xB5D2, 0xA570, 0x9D2F, 0x9D2F, 0x94EE, 0x8CCD, 0x848C, 0x6388, // 0x0F20 (3872) +0x6BA8, 0x73E9, 0x6367, 0x6367, 0x6346, 0x6B87, 0x5B06, 0x5AE5, 0x6326, 0x6326, 0x6347, 0x6368, 0x6388, 0x73CA, 0x740B, 0x7C4C, // 0x0F30 (3888) +0x848D, 0x94F0, 0xA592, 0xADF4, 0xBE36, 0xCED9, 0xDF3C, 0xE7BD, 0xD759, 0xAE10, 0x8D4A, 0x6C85, 0x6C65, 0x6445, 0x6424, 0x6425, // 0x0F40 (3904) +0x6406, 0x6407, 0x6C26, 0x6C45, 0x6C24, 0x6C23, 0x6403, 0x6C03, 0x6C04, 0x6C05, 0x6BE6, 0x63C6, 0x63A6, 0x63A5, 0x63A5, 0x6385, // 0x0F50 (3920) +0x952A, 0x950A, 0x9529, 0x954A, 0x954A, 0x952A, 0x9529, 0x954A, 0x9D6B, 0x952A, 0x950A, 0xB610, 0xEFBB, 0xFFFF, 0xF7FE, 0xEFDE, // 0x0F60 (3936) +0xE77C, 0xE79C, 0xE75B, 0xD6F8, 0xC696, 0xBE34, 0xB5D2, 0xAD91, 0xA570, 0xA54F, 0x9D2F, 0x9D2F, 0x94EE, 0x8CCD, 0x846C, 0x73EA, // 0x0F70 (3952) +0x73E9, 0x73E9, 0x6347, 0x5B26, 0x5B26, 0x6326, 0x6326, 0x5B05, 0x6347, 0x6347, 0x6347, 0x6348, 0x6388, 0x6BC9, 0x740B, 0x7C2C, // 0x0F80 (3968) +0x846D, 0x84AE, 0x8CF0, 0xA572, 0xB615, 0xCED9, 0xD73B, 0xE79D, 0xD738, 0xA5F0, 0x8D4A, 0x74A6, 0x6C86, 0x6C65, 0x6445, 0x6405, // 0x0F90 (3984) +0x6406, 0x6406, 0x6C26, 0x6425, 0x6403, 0x6402, 0x63E2, 0x63E3, 0x6C04, 0x6BE5, 0x63C5, 0x63A5, 0x6385, 0x5B65, 0x5B64, 0x5B64, // 0x0FA0 (4000) +0x952A, 0x952A, 0x952A, 0x9D4A, 0x954A, 0x952A, 0x952A, 0x954A, 0x9D4B, 0x9D4C, 0x9D4C, 0xD716, 0xFFFD, 0xF7FE, 0xF7DE, 0xEFBD, // 0x0FB0 (4016) +0xE79D, 0xDF5B, 0xD6D9, 0xCE97, 0xCE96, 0xCE96, 0xBE34, 0xADB2, 0x9D2F, 0x9D0F, 0x9D2F, 0x9D0F, 0x950F, 0x94EE, 0x846C, 0x740A, // 0x0FC0 (4032) +0x73EA, 0x73EA, 0x5B47, 0x52E6, 0x52C5, 0x5B06, 0x6B68, 0x6306, 0x5B06, 0x5AE6, 0x52E5, 0x5AE6, 0x6347, 0x6B89, 0x740B, 0x7C4C, // 0x0FD0 (4048) +0x84AE, 0x8CEF, 0x9510, 0x9D72, 0xADD4, 0xBE56, 0xCEFA, 0xEFFD, 0xCF37, 0x958D, 0x8509, 0x74C6, 0x74A6, 0x6C66, 0x6C46, 0x6426, // 0x0FE0 (4064) +0x6406, 0x63E5, 0x6405, 0x63E4, 0x63E3, 0x63E2, 0x63C2, 0x63E3, 0x63E4, 0x63C4, 0x63A4, 0x5B84, 0x5B64, 0x5B64, 0x5B43, 0x5342, // 0x0FF0 (4080) +0x950A, 0x950A, 0x9529, 0x954A, 0x954A, 0x8D0A, 0x8D09, 0x8D0A, 0x952B, 0x9D4C, 0xADD0, 0xF7DB, 0xFFFE, 0xF7BE, 0xEFBD, 0xEF9D, // 0x1000 (4096) +0xE77C, 0xE77B, 0xDF5A, 0xD6F8, 0xC696, 0xBE14, 0xB5D2, 0xAD91, 0x9D0F, 0x94EE, 0x94EF, 0x94EE, 0x94CE, 0x94EF, 0x8C8D, 0x7C2B, // 0x1010 (4112) +0x7C4B, 0x6BC9, 0x6348, 0x6347, 0x5B06, 0x5AE6, 0x6B88, 0x6B88, 0x6327, 0x5B06, 0x5B07, 0x5B07, 0x6348, 0x6368, 0x73EA, 0x7C4C, // 0x1020 (4128) +0x846D, 0x8CCF, 0x9D51, 0xA5B2, 0xADF4, 0xB636, 0xCED9, 0xEFDD, 0xD777, 0x8D2C, 0x7CC7, 0x74C6, 0x74A7, 0x6446, 0x6446, 0x6C26, // 0x1030 (4144) +0x63E6, 0x63E5, 0x63E4, 0x5BE4, 0x63C3, 0x63E3, 0x63C2, 0x63E3, 0x63C3, 0x63A3, 0x5B83, 0x5B63, 0x5B63, 0x5B63, 0x5342, 0x5322, // 0x1040 (4160) +0x94E9, 0x94E9, 0x9509, 0x952A, 0x952A, 0x8D0A, 0x84C9, 0x84C9, 0x950B, 0x950D, 0xC695, 0xFFFD, 0xF7FE, 0xEFBE, 0xEF9D, 0xEF9D, // 0x1050 (4176) +0xE77C, 0xDF5B, 0xDF19, 0xCEB7, 0xBE34, 0xB5D3, 0xADB2, 0xADB2, 0xA550, 0x94CE, 0x94CE, 0x8CAE, 0x846D, 0x846D, 0x846C, 0x7C4C, // 0x1060 (4192) +0x7C4C, 0x6BCA, 0x6BAA, 0x6B89, 0x6368, 0x6347, 0x6B89, 0x6BA9, 0x6B89, 0x6B68, 0x6B68, 0x6368, 0x6B89, 0x6BA9, 0x73EB, 0x7C2C, // 0x1070 (4208) +0x846D, 0x8CCF, 0x9510, 0x9D51, 0xA593, 0xB615, 0xCEFA, 0xF7FE, 0xDFD9, 0x8D4C, 0x7CC7, 0x7CE7, 0x74A7, 0x6C46, 0x6426, 0x6C27, // 0x1080 (4224) +0x6405, 0x5BE5, 0x63E4, 0x5BC3, 0x63C3, 0x63E3, 0x63E3, 0x63E4, 0x63C3, 0x5BA3, 0x5B83, 0x5B63, 0x5B63, 0x5B63, 0x5342, 0x5322, // 0x1090 (4240) +0x8CA9, 0x8CA9, 0x8D09, 0x952A, 0x954B, 0x8D2A, 0x8CEA, 0x84CA, 0x8CEA, 0xA58F, 0xEFBB, 0xF7FF, 0xF7DE, 0xEFBE, 0xE79D, 0xE77C, // 0x10A0 (4256) +0xD719, 0xCEB8, 0xBE56, 0xB614, 0xB613, 0xB613, 0xB5D2, 0xAD90, 0xA52F, 0x8C8D, 0x846C, 0x846D, 0x844C, 0x7C2C, 0x7C4C, 0x846C, // 0x10B0 (4272) +0x740B, 0x73EB, 0x7C0B, 0x6BA9, 0x6BA9, 0x73CA, 0x73CA, 0x6B89, 0x6BA9, 0x6B89, 0x6B89, 0x6B89, 0x6BCA, 0x73EB, 0x740B, 0x7C0C, // 0x10C0 (4288) +0x740B, 0x846D, 0x8CCE, 0x9510, 0x9D72, 0xB615, 0xCED9, 0xEFDD, 0xE7DA, 0x956D, 0x7D09, 0x7CE7, 0x74A7, 0x6C67, 0x6C46, 0x6426, // 0x10D0 (4304) +0x6405, 0x5BE5, 0x5BE4, 0x5BC4, 0x63E4, 0x6404, 0x63E4, 0x63E4, 0x63C3, 0x5BA3, 0x5B83, 0x5B62, 0x5B62, 0x5B62, 0x5342, 0x5321, // 0x10E0 (4320) +0x8488, 0x8CA9, 0x8CE9, 0x8D0A, 0x952B, 0x8D2B, 0x8D0B, 0x84EA, 0x84CA, 0xBE73, 0xFFFE, 0xF7FF, 0xEFBE, 0xE79D, 0xE77C, 0xD6F9, // 0x10F0 (4336) +0xCED8, 0xC697, 0xBE35, 0xADB2, 0x9D30, 0x94EE, 0x94CD, 0x8CCD, 0x9D0F, 0x9CEE, 0x8C8D, 0x844C, 0x7C4C, 0x73EB, 0x6BCA, 0x6BAA, // 0x1100 (4352) +0x740B, 0x740B, 0x73EA, 0x73CA, 0x7C0B, 0x7C0B, 0x73EA, 0x73CA, 0x6BCA, 0x6BCA, 0x6BAA, 0x6BAA, 0x6BCA, 0x73EB, 0x73EB, 0x73EB, // 0x1110 (4368) +0x73EB, 0x73EB, 0x742C, 0x848E, 0x9531, 0xB616, 0xCEDA, 0xE7BD, 0xDFBA, 0x958E, 0x8529, 0x7CE7, 0x7486, 0x6C66, 0x6446, 0x6425, // 0x1120 (4384) +0x5BE5, 0x5BC4, 0x5BE4, 0x5BC4, 0x63E4, 0x6405, 0x63E4, 0x63E4, 0x5BC3, 0x5BA3, 0x5B62, 0x5362, 0x5362, 0x5342, 0x5321, 0x4B21, // 0x1130 (4400) +0x8489, 0x8CA9, 0x8CE9, 0x8CEA, 0x8D0A, 0x8D2B, 0x8D2B, 0x850A, 0x84EB, 0xCEF5, 0xF7FE, 0xEFDF, 0xE79E, 0xE77D, 0xD73A, 0xCEB8, // 0x1140 (4416) +0xC697, 0xBE35, 0xB5D4, 0xADD3, 0xA571, 0x94EE, 0x844B, 0x7C0A, 0x7C0B, 0x94EE, 0x8CAD, 0x844C, 0x7C4C, 0x7C0B, 0x73CA, 0x6BCA, // 0x1150 (4432) +0x73CA, 0x73EA, 0x6B89, 0x6B89, 0x73EA, 0x7C0B, 0x73CA, 0x6389, 0x6B89, 0x6BCA, 0x6BCA, 0x6BAA, 0x6389, 0x6BCA, 0x6BCB, 0x73EB, // 0x1160 (4448) +0x73EB, 0x7C2C, 0x848D, 0x9510, 0x9D51, 0xADD5, 0xC699, 0xE79D, 0xDFBA, 0x958E, 0x854A, 0x7D07, 0x6C86, 0x6425, 0x6405, 0x6405, // 0x1170 (4464) +0x5BE4, 0x5BC4, 0x5BC4, 0x5BC4, 0x5BE4, 0x6405, 0x63E4, 0x63E4, 0x5BA3, 0x5B83, 0x5382, 0x5362, 0x5362, 0x5342, 0x5321, 0x4B21, // 0x1180 (4480) +0x8CAA, 0x8CCA, 0x8CEA, 0x8D0A, 0x8D0A, 0x8D0A, 0x8D0A, 0x7CAA, 0x9D71, 0xE79C, 0xE7DD, 0xE7BD, 0xE79D, 0xD71B, 0xC6D9, 0xC698, // 0x1190 (4496) +0xBE56, 0xB5F4, 0xADB3, 0x9D51, 0x9510, 0x94EF, 0x94EF, 0x846D, 0x7C2C, 0x7C2B, 0x848D, 0x846C, 0x7C2B, 0x740B, 0x7C0B, 0x6BCA, // 0x11A0 (4512) +0x6BCA, 0x6BCA, 0x6BA9, 0x6368, 0x6368, 0x6BA9, 0x6BC9, 0x6BA9, 0x6BA9, 0x6BCA, 0x6389, 0x6369, 0x6389, 0x6389, 0x6BCA, 0x6BEB, // 0x11B0 (4528) +0x7C4D, 0x7C4D, 0x84AF, 0x9511, 0xA592, 0xADF5, 0xB637, 0xCF3A, 0xDFBB, 0x9DF1, 0x852B, 0x74A7, 0x6446, 0x6405, 0x53A4, 0x5BE5, // 0x11C0 (4544) +0x53C4, 0x5BC4, 0x5BC4, 0x5BC3, 0x5BE4, 0x6405, 0x6405, 0x63E4, 0x5BA3, 0x5BA3, 0x5363, 0x5362, 0x5362, 0x5362, 0x5341, 0x4B00, // 0x11D0 (4560) +0x84AA, 0x84AA, 0x8CCA, 0x8CEA, 0x8D0A, 0x8D0A, 0x84EA, 0x7CAB, 0xBE96, 0xEFDD, 0xE7BD, 0xE79D, 0xD73B, 0xC6B9, 0xBE58, 0xB636, // 0x11E0 (4576) +0xB635, 0xADD3, 0xADD3, 0xA592, 0x94F0, 0x8CAE, 0x94CF, 0x8CCE, 0x7C2C, 0x740B, 0x7C2B, 0x7C2B, 0x7C2C, 0x740B, 0x73EB, 0x6B8A, // 0x11F0 (4592) +0x73EA, 0x73EA, 0x6BAA, 0x6B89, 0x6BA9, 0x6BCA, 0x6BA9, 0x6389, 0x6389, 0x6BA9, 0x6389, 0x6389, 0x6BAA, 0x6BAA, 0x6BEB, 0x740C, // 0x1200 (4608) +0x744D, 0x7C4D, 0x84AF, 0x8CD0, 0x8CF0, 0x9D52, 0xA5D5, 0xCEF9, 0xCF38, 0x850E, 0x74A9, 0x6C67, 0x5BE4, 0x53A4, 0x5384, 0x5364, // 0x1210 (4624) +0x5BC5, 0x5BC4, 0x5BC3, 0x5BE4, 0x63E5, 0x63E5, 0x63C3, 0x63C3, 0x5BA3, 0x5B83, 0x5363, 0x5363, 0x5342, 0x5341, 0x5341, 0x4B21, // 0x1220 (4640) +0x8469, 0x8469, 0x8489, 0x84A9, 0x84CA, 0x8CEA, 0x84EB, 0x954E, 0xD739, 0xE79D, 0xDF5C, 0xD73C, 0xCEDA, 0xBE98, 0xB657, 0xB636, // 0x1230 (4656) +0xADF4, 0x9D51, 0x9531, 0x9510, 0x94F0, 0x8CCF, 0x8CCE, 0x848D, 0x7C2B, 0x6BCA, 0x6BA9, 0x6389, 0x6BCA, 0x73CB, 0x6BAA, 0x6389, // 0x1240 (4672) +0x73EB, 0x6BCA, 0x6BAA, 0x6389, 0x6B89, 0x6BA9, 0x6BA9, 0x6BA9, 0x6369, 0x6B89, 0x6BAA, 0x6BAA, 0x6BCA, 0x6BAA, 0x6BCB, 0x740B, // 0x1250 (4688) +0x73EC, 0x742C, 0x7C6E, 0x848E, 0x84AE, 0x8D10, 0xA5B4, 0xCEF9, 0xCF38, 0x84ED, 0x6C68, 0x6406, 0x5384, 0x5344, 0x5B87, 0x5B67, // 0x1260 (4704) +0x5347, 0x5367, 0x5B67, 0x5B88, 0x63A9, 0x63A9, 0x63A8, 0x63A8, 0x6388, 0x6368, 0x5B48, 0x5B48, 0x5B47, 0x5306, 0x5B27, 0x5B68, // 0x1270 (4720) +0x7408, 0x7C28, 0x7C68, 0x7C68, 0x7C89, 0x84CA, 0x84EC, 0xADF2, 0xDF7B, 0xD73C, 0xD71C, 0xD73C, 0xC6B9, 0xBE78, 0xB636, 0xB615, // 0x1280 (4736) +0xA572, 0x94F0, 0x8CAF, 0x848E, 0x8CAE, 0x8CAF, 0x8CAE, 0x844D, 0x73EB, 0x6BAA, 0x6368, 0x5307, 0x5B48, 0x6BAA, 0x6B8A, 0x6B89, // 0x1290 (4752) +0x6BAA, 0x6BAA, 0x6389, 0x6369, 0x6348, 0x6348, 0x6B89, 0x73CA, 0x6369, 0x6B89, 0x6BAA, 0x6BAA, 0x6BEB, 0x6BAA, 0x6BAB, 0x6BCB, // 0x12A0 (4768) +0x63AA, 0x6BCB, 0x740C, 0x7C2D, 0x7C8E, 0x8D10, 0x9DB4, 0xC6F9, 0xCF38, 0x8D4E, 0x74A9, 0x63E6, 0x5B86, 0x3A83, 0x3223, 0x3A24, // 0x12B0 (4784) +0x4285, 0x4AE6, 0x4AE6, 0x4285, 0x4265, 0x4286, 0x4285, 0x4245, 0x4285, 0x4265, 0x4245, 0x4245, 0x4244, 0x3A03, 0x4225, 0x4266, // 0x12C0 (4800) +}; diff --git a/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/monkey.c b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/monkey.c new file mode 100644 index 0000000..8374cd4 --- /dev/null +++ b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Bitmap_Demo/monkey.c @@ -0,0 +1,314 @@ +// Generated by : ImageConverter 565 v1.2 +// Dimensions : 80x60 pixels +// Size : 9 600 Bytes + +#if defined(__AVR__) + #include +#elif defined(__PIC32MX__) + #define PROGMEM +#elif defined(__arm__) + #define PROGMEM +#endif + +const unsigned short monkey[0x12C0] PROGMEM ={ +0x858A, 0x858A, 0x85AA, 0x85AA, 0x8DAA, 0x8DAA, 0x8DAA, 0x8DAA, 0x8DAA, 0x8DCA, 0x8DCA, 0x8DAA, 0x8DAA, 0x95CA, 0x95CB, 0x8DAA, // 0x0010 (16) +0x8DAA, 0x8DAA, 0x8DAA, 0x95CB, 0x9DEB, 0x9E0B, 0x9DEB, 0x95EA, 0x95EA, 0x95EA, 0x95EA, 0x95EA, 0x95EA, 0x95EA, 0x95EA, 0x95EB, // 0x0020 (32) +0x95EA, 0x9DEA, 0x9E0B, 0xA62B, 0xA60A, 0x9DE9, 0x9DE9, 0x95E9, 0x95C9, 0x95E9, 0x960A, 0xA64B, 0xAE6B, 0xAE4B, 0xAE4B, 0xAE4B, // 0x0030 (48) +0xAE4B, 0xAE2A, 0xAE2A, 0xAE2A, 0xAE2A, 0xAE2A, 0xAE4B, 0xAE4B, 0xAE4B, 0xAE2B, 0xAE4B, 0xAE6B, 0xB66C, 0xB66B, 0xB66A, 0xAE6B, // 0x0040 (64) +0xB66B, 0xAE6B, 0xAE4B, 0xAE4B, 0xA62A, 0xA60A, 0xA62B, 0xAE4B, 0xAE6C, 0xAE6B, 0xAE2B, 0xA60A, 0xA60A, 0xAE4A, 0xAE6B, 0xB66B, // 0x0050 (80) +0x85AA, 0x85AA, 0x85AA, 0x85AA, 0x8DCA, 0x8DCA, 0x8DAA, 0x8DAA, 0x8DAA, 0x8DCA, 0x8DCA, 0x8DAA, 0x8DAA, 0x95CA, 0x95CB, 0x95CB, // 0x0060 (96) +0x95CA, 0x95CA, 0x95CA, 0x95EB, 0x9E0B, 0x9E0B, 0x9DEB, 0x95EA, 0x95CA, 0x95CA, 0x95C9, 0x95C9, 0x95CA, 0x95CA, 0x8DCA, 0x95CA, // 0x0070 (112) +0x95CA, 0x9DEA, 0xA62B, 0xA62B, 0xA60A, 0x9DE9, 0x95C8, 0x95C8, 0x8DA8, 0x95C8, 0x95E9, 0x9E2A, 0xA64B, 0xAE4B, 0xAE2A, 0xAE2A, // 0x0080 (128) +0xAE2A, 0xA60A, 0xAE2A, 0xAE4B, 0xAE4B, 0xAE4B, 0xAE4B, 0xAE6B, 0xAE4B, 0xAE2B, 0xAE4B, 0xAE4B, 0xB66B, 0xAE6B, 0xAE4A, 0xAE4A, // 0x0090 (144) +0xAE4A, 0xAE4A, 0xAE4A, 0xA62A, 0xA5E9, 0xA5EA, 0xA62A, 0xAE4B, 0xAE6C, 0xAE6B, 0xAE4B, 0xA62A, 0xA62A, 0xAE4B, 0xB66B, 0xB66B, // 0x00A0 (160) +0x85AB, 0x85AB, 0x85AA, 0x85AA, 0x85AA, 0x85AA, 0x85AA, 0x8DAA, 0x8DAA, 0x8DCA, 0x8DCA, 0x8DCA, 0x8DCA, 0x95CA, 0x95CA, 0x95EB, // 0x00B0 (176) +0x95EB, 0x95EB, 0x95EB, 0x9E0B, 0x9E0B, 0x9E0B, 0x9DEA, 0x95CA, 0x95EA, 0x95C9, 0x95C9, 0x8DC9, 0x8DC9, 0x8DC9, 0x8DC9, 0x95C9, // 0x00C0 (192) +0x95EA, 0x9DEA, 0xA62A, 0xA62A, 0xA62A, 0x9DE9, 0x9DC8, 0x95C8, 0x95C8, 0x9DE8, 0x9E29, 0xA64A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE2A, // 0x00D0 (208) +0xA60A, 0xA60A, 0xAE2A, 0xAE4B, 0xAE4B, 0xAE6B, 0xB66C, 0xB68C, 0xAE4B, 0xAE4B, 0xAE4B, 0xB64B, 0xB64A, 0xAE4A, 0xAE49, 0xAE4A, // 0x00E0 (224) +0xAE4A, 0xAE4A, 0xAE2A, 0xA60A, 0xA5E9, 0x9DE9, 0xA60A, 0xAE4B, 0xAE6B, 0xAE6B, 0xAE4B, 0xAE2B, 0xAE2A, 0xAE4B, 0xAE4B, 0xB66B, // 0x00F0 (240) +0x85CB, 0x85CB, 0x85CB, 0x85CB, 0x85AA, 0x858A, 0x858A, 0x858A, 0x8DAA, 0x8DCA, 0x8DCA, 0x8DCA, 0x8DCA, 0x8DCA, 0x95CA, 0x95CA, // 0x0100 (256) +0x95EA, 0x960B, 0x9E0B, 0x9E0B, 0x9E0B, 0x95EB, 0x95EA, 0x95CA, 0x95C9, 0x95C9, 0x95C9, 0x8DC9, 0x8DC9, 0x8DC9, 0x95C9, 0x95E9, // 0x0110 (272) +0x9E0A, 0xA60A, 0xA62A, 0xA62A, 0xA62A, 0x9DE9, 0x9DE9, 0x9DE9, 0x9DE8, 0x9E09, 0xA629, 0xAE49, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE2A, // 0x0120 (288) +0xA60A, 0xA60A, 0xA62A, 0xAE4B, 0xAE6B, 0xB66B, 0xB68B, 0xB68B, 0xB66B, 0xB66B, 0xB66B, 0xB66A, 0xB64A, 0xB64A, 0xB649, 0xB66A, // 0x0130 (304) +0xB66A, 0xB66A, 0xAE4A, 0xAE2A, 0xA609, 0xA609, 0xAE2A, 0xAE6B, 0xAE6B, 0xAE6B, 0xAE4B, 0xAE2A, 0xA62A, 0xAE2A, 0xAE4B, 0xAE4B, // 0x0140 (320) +0x8DCB, 0x8DCB, 0x8DCB, 0x8DCB, 0x85AA, 0x858A, 0x8569, 0x8569, 0x85AA, 0x85AA, 0x8DCA, 0x8DCA, 0x8DCA, 0x8DCA, 0x8DCA, 0x95CA, // 0x0150 (336) +0x95EA, 0x9E0A, 0x9E0B, 0x9E0B, 0x9DEB, 0x95EB, 0x95CA, 0x8DA9, 0x8DA9, 0x95A9, 0x95C9, 0x95E9, 0x95E9, 0x95E9, 0x9E0A, 0x9E0A, // 0x0160 (352) +0xA62A, 0xAE2A, 0xAE4B, 0xAE4B, 0xA62A, 0xA60A, 0xA609, 0xA629, 0xA609, 0xA629, 0xAE49, 0xAE49, 0xAE49, 0xAE4A, 0xAE4A, 0xAE4A, // 0x0170 (368) +0xA62A, 0xA60A, 0xA62A, 0xAE4B, 0xAE6B, 0xB68B, 0xB68B, 0xB68B, 0xBE8B, 0xBE8B, 0xB66B, 0xB66B, 0xB66A, 0xB64A, 0xB66A, 0xB66A, // 0x0180 (384) +0xB66A, 0xB66A, 0xB64A, 0xAE4A, 0xAE2A, 0xAE2A, 0xAE4A, 0xAE6B, 0xAE6B, 0xAE4B, 0xAE2A, 0xA60A, 0xA5E9, 0xA60A, 0xAE2A, 0xAE4B, // 0x0190 (400) +0x8DCA, 0x8DCA, 0x8DCA, 0x8DCA, 0x85AA, 0x85AA, 0x858A, 0x858A, 0x85AA, 0x85AA, 0x8DAA, 0x8DCA, 0x8DCA, 0x8DAA, 0x8DC9, 0x95C9, // 0x01A0 (416) +0x95EA, 0x9E0A, 0x9E0B, 0x9E0B, 0x9DEB, 0x95EB, 0x95CA, 0x8DA9, 0x8DA9, 0x95C9, 0x9DEA, 0x9E0A, 0x9E0A, 0x9E0A, 0xA62A, 0xA62A, // 0x01B0 (432) +0xAE4A, 0xAE4A, 0xAE4A, 0xAE4B, 0xAE6B, 0xAE4B, 0xAE4A, 0xAE4A, 0xAE49, 0xAE49, 0xB649, 0xB649, 0xB669, 0xB66A, 0xB66A, 0xAE6A, // 0x01C0 (448) +0xAE2A, 0xA60A, 0xAE2A, 0xAE4A, 0xB66A, 0xB68B, 0xBE8B, 0xBE8B, 0xBE8B, 0xBE8B, 0xB68B, 0xB66B, 0xB66A, 0xB64A, 0xB66A, 0xB66A, // 0x01D0 (464) +0xB66B, 0xB66A, 0xB66A, 0xB66A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE6A, 0xAE4A, 0xAE2A, 0xA609, 0xA609, 0xAE2A, 0xAE4A, 0xAE6B, // 0x01E0 (480) +0x8DCA, 0x8DA9, 0x85A9, 0x85AA, 0x8DAA, 0x85AA, 0x85AA, 0x85AA, 0x85AA, 0x85AA, 0x85AA, 0x8DCA, 0x8DCA, 0x8DC9, 0x8DA9, 0x95C9, // 0x01F0 (496) +0x95E9, 0x9E0A, 0x9E0A, 0x9E0B, 0x9E0A, 0x9DEB, 0x9DEA, 0x95CA, 0x95EA, 0x9DEA, 0x9E0A, 0xA62A, 0xA62A, 0xA62A, 0xA62A, 0xAE4B, // 0x0200 (512) +0xAE4A, 0xAE4A, 0xAE4B, 0xAE4B, 0xAE6B, 0xAE4B, 0xAE4B, 0xAE4B, 0xB66A, 0xB64A, 0xB649, 0xB649, 0xB669, 0xAE4A, 0xAE4A, 0xAE6A, // 0x0210 (528) +0xAE4B, 0xAE4B, 0xAE4A, 0xB66A, 0xB66B, 0xBE8B, 0xBE8B, 0xBE8B, 0xBE8B, 0xBE8B, 0xBE8B, 0xB66B, 0xB66B, 0xB66B, 0xB66B, 0xB66B, // 0x0220 (544) +0xBE8B, 0xB68B, 0xB66B, 0xB66B, 0xB66A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE6A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE6A, 0xB66A, // 0x0230 (560) +0x8DC9, 0x8DA9, 0x8589, 0x8589, 0x85A9, 0x8DAA, 0x8DCA, 0x8DCA, 0x8DAA, 0x85AA, 0x8DAA, 0x8DCA, 0x8DCA, 0x8DC9, 0x8DA9, 0x95C9, // 0x0240 (576) +0x9DE9, 0x9E0A, 0xA62A, 0x9E0A, 0x9E0B, 0x9E0B, 0x9E0B, 0x9E0B, 0x9E0B, 0x9E0B, 0x9E0A, 0x9E0A, 0xA60A, 0xA62A, 0xA62A, 0xAE2A, // 0x0250 (592) +0xAE2A, 0xAE6B, 0xB66B, 0xAE4B, 0x9E0A, 0x9DEA, 0xA62A, 0xAE6B, 0xBEAB, 0xBE8A, 0xB66A, 0xBE6A, 0xB66A, 0xB66A, 0xAE6A, 0xAE6B, // 0x0260 (608) +0xB66B, 0xAE4B, 0xB66A, 0xB68B, 0xB68B, 0xBE8B, 0xBEAB, 0xBEAB, 0xBE8B, 0xBE8B, 0xBE8B, 0xBE8B, 0xB68B, 0xB66B, 0xB66B, 0xB66B, // 0x0270 (624) +0xB68B, 0xB66B, 0xB66A, 0xB66A, 0xB66A, 0xB66A, 0xAE6A, 0xB66A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE6A, 0xAE6A, 0xAE6A, 0xAE6A, 0xAE6A, // 0x0280 (640) +0x85E9, 0x85C8, 0x8589, 0x85A9, 0x8DAA, 0x8DCB, 0x95EB, 0x95EB, 0x95EA, 0x95EA, 0x95EA, 0x95EA, 0x95C9, 0x8DA9, 0x95AA, 0x95CA, // 0x0290 (656) +0x9E0A, 0x9E2A, 0x9E2A, 0xA609, 0xA60A, 0xA62B, 0xAE2C, 0xA60C, 0xA62C, 0x9DEC, 0x9E0B, 0x9E0A, 0x9E2A, 0xA609, 0xA62A, 0xAE2A, // 0x02A0 (672) +0xBE6B, 0xAE0C, 0x7CAA, 0x6C6C, 0x642C, 0x644D, 0x74AF, 0x6C6D, 0x6429, 0x8D8B, 0xBECC, 0xB66A, 0xBE4B, 0xBE4C, 0xB64B, 0xB66C, // 0x02B0 (688) +0xAE4B, 0xAE4B, 0xB68C, 0xB68C, 0xB68B, 0xB68B, 0xBE8B, 0xBEAC, 0xBE8C, 0xBE8C, 0xBE8C, 0xBE8C, 0xB68C, 0xB66C, 0xAE6C, 0xB68C, // 0x02C0 (704) +0xB68C, 0xB68C, 0xB68C, 0xB68C, 0xB68B, 0xB68B, 0xB66B, 0xB66A, 0xB66A, 0xAE4A, 0xAE49, 0xAE4A, 0xAE4A, 0xB66A, 0xB669, 0xAE49, // 0x02D0 (720) +0x85C9, 0x85A9, 0x8589, 0x85AA, 0x8DAB, 0x8DCB, 0x95EB, 0x95EB, 0x960A, 0x960A, 0x960A, 0x9609, 0x95E9, 0x95C9, 0x95C9, 0x95EA, // 0x02E0 (736) +0x960A, 0x9E0A, 0x9E2A, 0xA60A, 0xA62A, 0xA62B, 0xA62C, 0xA62D, 0xA62C, 0xA62C, 0x960B, 0x95EA, 0x9E2B, 0xA62B, 0xA60B, 0xAE4D, // 0x02F0 (752) +0x8D4B, 0x4305, 0x53A9, 0x748E, 0x746E, 0x6C0D, 0x7C8F, 0x9552, 0x7CAE, 0x640A, 0x7CCA, 0xAE8F, 0xAE6D, 0xAE6C, 0xA68B, 0xAE8C, // 0x0300 (768) +0xB68D, 0xB66D, 0xB66D, 0xB66D, 0xB68D, 0xBE8D, 0xBE8D, 0xB68C, 0xBE8D, 0xBE8D, 0xBE8D, 0xB68D, 0xB66C, 0xAE6C, 0xAE6D, 0xB66D, // 0x0310 (784) +0xB68D, 0xB68D, 0xB6AD, 0xB68C, 0xB68C, 0xB68C, 0xB66B, 0xB66B, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE4A, // 0x0320 (800) +0x7DAA, 0x7D8A, 0x7D8A, 0x85AB, 0x85AB, 0x8DCC, 0x8DEC, 0x95EC, 0x960B, 0x960A, 0x9E0A, 0x9E2A, 0x9609, 0x95E9, 0x95E9, 0x95EA, // 0x0330 (816) +0x95EB, 0x9E0B, 0x9E0B, 0x9E0B, 0xA62B, 0xA64C, 0xA64D, 0xA64D, 0x9E0C, 0x9E0C, 0x95EB, 0x95EB, 0x9E2C, 0x9E0C, 0xB66F, 0x84CA, // 0x0340 (832) +0x3203, 0x6BAB, 0xAD71, 0xAD50, 0xB530, 0x940B, 0xACED, 0xAD0D, 0xAD2E, 0xBDB0, 0x846B, 0x8CCB, 0xB66E, 0xA64C, 0xAE6D, 0xAE8E, // 0x0350 (848) +0xAE4E, 0xAE6E, 0xB66E, 0xB66E, 0xB64D, 0xB66E, 0xBEAE, 0xBE8E, 0xBE8E, 0xBE8E, 0xB6AE, 0xB68E, 0xAE6E, 0xAE4D, 0xAE6D, 0xAE6D, // 0x0360 (864) +0xB68E, 0xB68E, 0xB68E, 0xB68D, 0xB68D, 0xB68C, 0xB66C, 0xB66B, 0xAE4A, 0xAE2A, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE4B, 0xAE4B, 0xAE4B, // 0x0370 (880) +0x7DAA, 0x7D8A, 0x7D8A, 0x7D8B, 0x85AC, 0x85AC, 0x8DCC, 0x95EC, 0x95EC, 0x960B, 0x960B, 0x960B, 0x960B, 0x95EA, 0x95EA, 0x95EB, // 0x0380 (896) +0x95EC, 0x95EC, 0x9E0C, 0x9E2C, 0xA62C, 0xA62C, 0xA64D, 0x9E4D, 0x9E2D, 0x960C, 0x960C, 0x9E0C, 0x9E0D, 0xA62F, 0x954D, 0x29C0, // 0x0390 (912) +0x7368, 0xB50F, 0x9BE9, 0x9387, 0xA40B, 0xAC2B, 0x9BE8, 0x8345, 0x93A6, 0x8B86, 0xACCC, 0x83C8, 0x9D6C, 0xBE90, 0xBE50, 0xAE0F, // 0x03A0 (928) +0xB66F, 0xAE6F, 0xAE6F, 0xAE8F, 0xAE4E, 0xB66E, 0xB6AF, 0xB66E, 0xB68F, 0xB68F, 0xB6AF, 0xB68E, 0xAE6E, 0xAE6E, 0xA64E, 0xAE4E, // 0x03B0 (944) +0xB66F, 0xB66E, 0xB68E, 0xB68E, 0xB68E, 0xB68D, 0xB66D, 0xB66C, 0xAE4B, 0xAE2B, 0xAE2B, 0xAE4B, 0xAE4B, 0xAE4B, 0xAE4C, 0xAE4C, // 0x03C0 (960) +0x7D8A, 0x7D8B, 0x7DAB, 0x7DAB, 0x85AB, 0x85AC, 0x85CC, 0x8DCD, 0x8DED, 0x95ED, 0x95EC, 0x95EC, 0x95EC, 0x95EC, 0x95CC, 0x95CC, // 0x03D0 (976) +0x95EC, 0x95ED, 0x960D, 0x9E0C, 0x9E0C, 0x9E2D, 0x9E2D, 0x9E2D, 0x960D, 0x960D, 0x95EC, 0x95CC, 0x95CD, 0xAE31, 0x42C5, 0x2980, // 0x03E0 (992) +0x9C6C, 0x93C9, 0x8B87, 0x8347, 0x6AE7, 0x8BED, 0x7B4B, 0x62A9, 0x7308, 0x7B28, 0x6AE7, 0x7BCA, 0x42A5, 0x9D8F, 0xB671, 0xB670, // 0x03F0 (1008) +0xAE8F, 0xAE8F, 0xB68F, 0xAE8E, 0xAE6E, 0xAE6E, 0xB6AF, 0xB6AF, 0xB6AF, 0xB6AF, 0xB68F, 0xAE8F, 0xAE6E, 0xAE4E, 0xA64E, 0xA64E, // 0x0400 (1024) +0xAE4F, 0xAE6F, 0xB66F, 0xB68F, 0xB68E, 0xB68E, 0xB66D, 0xAE6D, 0xAE4C, 0xAE4C, 0xAE4C, 0xAE4C, 0xAE4C, 0xAE4C, 0xAE4C, 0xAE4C, // 0x0410 (1040) +0x7D8A, 0x7DAA, 0x7DAB, 0x7DAB, 0x7DAB, 0x7DAC, 0x85AC, 0x85CD, 0x8DEE, 0x8DEE, 0x8DED, 0x8DED, 0x8DCD, 0x8DCD, 0x8DCD, 0x8DCD, // 0x0420 (1056) +0x8DED, 0x95ED, 0x960D, 0x960D, 0x9E0D, 0x9E0D, 0x9E2D, 0x9E2E, 0x9E4E, 0x9E2E, 0x9E2E, 0x95AD, 0xA5EF, 0x84CC, 0x10E0, 0x5266, // 0x0430 (1072) +0x7B4A, 0x6A67, 0x6A87, 0x6AC7, 0x944E, 0x9470, 0x7BCF, 0x9CB2, 0x734C, 0x62A9, 0x5AA8, 0x7BAB, 0x4246, 0x4265, 0xAE10, 0xB690, // 0x0440 (1088) +0xB66F, 0xAE6F, 0xB68F, 0xAE6F, 0xAE6F, 0xB68F, 0xAE6E, 0xAE6F, 0xB68F, 0xB68F, 0xAE8F, 0xAE6E, 0xAE4E, 0xA64E, 0xAE4E, 0xAE4E, // 0x0450 (1104) +0xAE4E, 0xAE4E, 0xAE6E, 0xAE8F, 0xB68F, 0xB68F, 0xB66E, 0xAE4E, 0xAE4D, 0xAE4D, 0xAE4D, 0xAE4D, 0xA64D, 0xA64D, 0xA64D, 0xA64D, // 0x0460 (1120) +0x7DAA, 0x7DAA, 0x85AB, 0x85AB, 0x7DAB, 0x7DAB, 0x85AC, 0x85CD, 0x8DED, 0x8DED, 0x8DCD, 0x85CD, 0x8DCD, 0x8DCD, 0x8DCC, 0x8DCC, // 0x0470 (1136) +0x95EC, 0x95EC, 0x960C, 0x95ED, 0x95ED, 0x960D, 0x960E, 0x9E0E, 0x9E2F, 0x9E0E, 0x95EE, 0x95AD, 0xADF0, 0x5306, 0x10A0, 0x5AA8, // 0x0480 (1152) +0x7AEA, 0x6207, 0x72EA, 0x9C2F, 0x8BED, 0x942E, 0xA490, 0x8BCE, 0xAD13, 0xB534, 0x83AD, 0x942E, 0x62C9, 0x20A0, 0x5285, 0xAD90, // 0x0490 (1168) +0xBEB3, 0xB672, 0xB671, 0xAE50, 0xAE70, 0xB691, 0xAE4F, 0xB690, 0xAE4F, 0xAE4F, 0xAE6F, 0xAE6F, 0xAE4E, 0xAE4E, 0xAE6E, 0xAE6E, // 0x04A0 (1184) +0xAE4E, 0xAE6E, 0xAE6E, 0xAE6E, 0xB68F, 0xB68F, 0xB68F, 0xAE6E, 0xAE6E, 0xAE4E, 0xAE4E, 0xA64D, 0xA62D, 0xA64D, 0xA66D, 0xA64D, // 0x04B0 (1200) +0x7D8A, 0x85AB, 0x85AB, 0x85AB, 0x7DAB, 0x7DAB, 0x85CC, 0x85ED, 0x8DED, 0x8DED, 0x85CD, 0x85CC, 0x85AC, 0x85CB, 0x8DCB, 0x8DCB, // 0x04C0 (1216) +0x960C, 0x960C, 0x95EC, 0x95ED, 0x95ED, 0x95ED, 0x960E, 0x9E0F, 0x9E2F, 0xA650, 0x9DEE, 0x8D6D, 0x84CC, 0x2160, 0x10A0, 0x5AA7, // 0x04D0 (1232) +0x8BEB, 0x8BCB, 0xA46F, 0xB4F3, 0xAC71, 0xAC71, 0xAC71, 0xB4B3, 0xC598, 0xDE5B, 0xCDF9, 0x9C71, 0x6288, 0x3102, 0x3963, 0x4A26, // 0x04E0 (1248) +0x63AA, 0x84CD, 0xB653, 0xBEB4, 0xB673, 0xA5D0, 0x850C, 0x8D4D, 0xA5EF, 0xA62F, 0xAE6F, 0xAE6F, 0xAE6E, 0xAE6E, 0xAE6E, 0xB68F, // 0x04F0 (1264) +0xAE6E, 0xAE6E, 0xAE6E, 0xAE6E, 0xAE8F, 0xB68F, 0xB68F, 0xB66F, 0xAE6F, 0xAE4E, 0xA64E, 0xA64D, 0xA62D, 0xA64D, 0xA64D, 0xA64D, // 0x0500 (1280) +0x7D69, 0x7D8A, 0x85AB, 0x85AB, 0x85AB, 0x7D8C, 0x85AC, 0x85ED, 0x85ED, 0x85ED, 0x85CC, 0x85AC, 0x85AB, 0x85AB, 0x8DCB, 0x95EC, // 0x0510 (1296) +0x9E2B, 0x9E2B, 0xA64C, 0xA62B, 0x9E2C, 0x9E2C, 0x9E4D, 0xA66E, 0xAE8F, 0xA5EF, 0x94CE, 0x5AA8, 0x628A, 0x28E4, 0x18A1, 0x49E6, // 0x0520 (1312) +0x7B4B, 0x9BCD, 0xC490, 0xCCF2, 0xD553, 0xBCD1, 0x9BCE, 0xA3CE, 0xB410, 0xC4D3, 0xEEDA, 0xD658, 0x72CA, 0x30C3, 0x41A5, 0x5A68, // 0x0530 (1328) +0x5A48, 0x6248, 0x72EB, 0x9410, 0x8C12, 0x7391, 0x6B71, 0x6370, 0x73F1, 0x9D14, 0x9D31, 0xA58E, 0xB66E, 0xB6AD, 0xB6AE, 0xAEAE, // 0x0540 (1344) +0xAE8E, 0xAE6E, 0xAE8D, 0xAE6D, 0xB68F, 0xBE90, 0xB670, 0xB691, 0xB670, 0xAE50, 0xAE4E, 0xA64E, 0xA64D, 0xA64D, 0xA64E, 0xAE4E, // 0x0550 (1360) +0x7549, 0x7D6A, 0x85AB, 0x85AA, 0x85AB, 0x85AB, 0x85CC, 0x8DED, 0x8DED, 0x85CD, 0x85CC, 0x8DEC, 0x85AA, 0x8DCB, 0x960B, 0x960B, // 0x0560 (1376) +0xA64B, 0xAE6C, 0x9DAD, 0x8CEC, 0x7C4C, 0x6BCC, 0x742E, 0x94F2, 0x73ED, 0x52C8, 0x62C8, 0x49E4, 0x4162, 0x3901, 0x2880, 0x4983, // 0x0570 (1392) +0x72E8, 0xB48F, 0xC4D1, 0xD4F2, 0xCCD1, 0xD574, 0xE657, 0xDE17, 0xD5B5, 0xD595, 0xA470, 0xCD95, 0xA450, 0x28A1, 0x4164, 0x49E6, // 0x0580 (1408) +0x3984, 0x3143, 0x4185, 0x5207, 0x732B, 0x6AEA, 0x9450, 0x8C30, 0x8BF0, 0x9C93, 0xA4B4, 0xAD14, 0x94CF, 0x8CCD, 0x9DCE, 0xB6AF, // 0x0590 (1424) +0xB6AF, 0xAE4E, 0xB66E, 0xBEAE, 0xB66E, 0xB66E, 0xBEB0, 0xB690, 0xAE6F, 0xAE6F, 0xAE6E, 0xAE6E, 0xA64D, 0xA64D, 0xAE4E, 0xAE6E, // 0x05A0 (1440) +0x756B, 0x7D8B, 0x85AB, 0x85CA, 0x85AA, 0x85AA, 0x85CC, 0x8DED, 0x8DED, 0x8DCD, 0x8DEC, 0x8DEC, 0x8DCB, 0x8DCA, 0x9E2C, 0xA62D, // 0x05B0 (1456) +0x9DCD, 0x6BE8, 0x6349, 0x632C, 0x6B4F, 0x6B2F, 0x6B2F, 0x6B50, 0x4A2A, 0x2945, 0x3984, 0x5205, 0x5A25, 0x4962, 0x3081, 0x38C2, // 0x05C0 (1472) +0x8B29, 0xBCAF, 0x8AC9, 0x9B6C, 0xF698, 0xB4F2, 0x8C2F, 0x9470, 0xC5D5, 0xDE17, 0x5985, 0x6185, 0xAC50, 0x3902, 0x3943, 0x1060, // 0x05D0 (1488) +0x6348, 0x7BEB, 0x49E7, 0x7B2D, 0x6AAA, 0x93AE, 0x9BEE, 0x9C0E, 0xA450, 0x9C0F, 0x9BEF, 0xBD14, 0xACD3, 0x8BEF, 0x5AE9, 0x7C4B, // 0x05E0 (1504) +0xB630, 0xBE90, 0xB66E, 0xBE8E, 0xB68E, 0xB68E, 0xB68E, 0xB66E, 0xAE6E, 0xAE6E, 0xAE6E, 0xAE6D, 0xAE6D, 0xA64D, 0xAE4E, 0xAE6E, // 0x05F0 (1520) +0x7D8C, 0x7D8B, 0x7DAB, 0x85AA, 0x85AA, 0x85AA, 0x8DCC, 0x8DCC, 0x8DEC, 0x95EC, 0x8DCB, 0x8DAB, 0x9E0D, 0xA62F, 0x8D4D, 0x744B, // 0x0600 (1536) +0x6BAC, 0x632C, 0x73AE, 0x8C11, 0x83F0, 0x83D0, 0x6B2E, 0x736F, 0x736F, 0x4A29, 0x39A6, 0x20E2, 0x3963, 0x49C5, 0x30E3, 0x30C2, // 0x0610 (1552) +0x938B, 0xA3ED, 0x50E2, 0xCCD2, 0xBCF3, 0x9C10, 0xB514, 0xCDF7, 0xE6BA, 0xCDD6, 0x30A2, 0x6207, 0xB4D2, 0x28A1, 0x4144, 0x3122, // 0x0620 (1568) +0x6B69, 0x52A7, 0x5269, 0x51E9, 0x72AC, 0x93B0, 0x8B2E, 0x9BCF, 0xAC50, 0x7AE9, 0x8328, 0xC510, 0xB4AF, 0x9BEE, 0x72EB, 0x6ACA, // 0x0630 (1584) +0x7BEA, 0xADCF, 0xBE70, 0xBE8F, 0xBECF, 0xB66D, 0xB6AE, 0xB68E, 0xAE6E, 0xAE6D, 0xAE6D, 0xAE6D, 0xA64D, 0xA64D, 0xA64E, 0xAE4E, // 0x0640 (1600) +0x7D8B, 0x7D8B, 0x7D8B, 0x7D8B, 0x7D8A, 0x85AB, 0x8DCB, 0x95EC, 0x8DEB, 0x960C, 0x9E0C, 0x9E0D, 0x8D2D, 0x742B, 0x52E9, 0x6B4C, // 0x0650 (1616) +0x734D, 0x940F, 0x9C4F, 0x7B4B, 0x7B6C, 0x8BCF, 0x8BF1, 0x62AC, 0x7B90, 0x62AC, 0x4A29, 0x3165, 0x20E2, 0x3164, 0x28E1, 0x1820, // 0x0660 (1632) +0x7A88, 0xB40F, 0x6145, 0x7269, 0xDEB9, 0xF7DE, 0xE6DB, 0xCDB7, 0xDDF9, 0xEE5A, 0x726A, 0xCD56, 0xAC92, 0x28A1, 0x3964, 0x6B2B, // 0x0670 (1648) +0x6B6B, 0x10A1, 0x4A06, 0x3924, 0x72CB, 0x7AEC, 0x6AAB, 0x8B8E, 0x9C50, 0x2881, 0x3921, 0x7B08, 0x9BEA, 0xAC2C, 0x936B, 0x72A8, // 0x0680 (1664) +0x6B29, 0x7C0A, 0xC672, 0xC670, 0xBE8F, 0xB68E, 0xAE6D, 0xAE6E, 0xAE6D, 0xA64D, 0xA62D, 0xA62D, 0x9E2C, 0xA62D, 0x9E2E, 0xA62E, // 0x0690 (1680) +0x7D8B, 0x7D8B, 0x7D6B, 0x7D6B, 0x7D8B, 0x85AB, 0x8DEB, 0x8DEB, 0x9E2C, 0x9DEC, 0x9DEE, 0x8D0C, 0x6B89, 0x5AA8, 0x62CB, 0x72EC, // 0x06A0 (1696) +0x93AD, 0xB490, 0xB4CF, 0x6266, 0x49A4, 0x7B2C, 0xA472, 0x832D, 0x5A08, 0x93EF, 0x6ACA, 0x28C2, 0x20C2, 0x28E3, 0x20A1, 0x1860, // 0x06B0 (1712) +0x30E2, 0xAC71, 0xA38E, 0x7A89, 0xC554, 0xCDD6, 0xBCD3, 0xAC11, 0xB473, 0xDDF9, 0xEF1C, 0xE6DB, 0x732C, 0x28E1, 0x2922, 0x948E, // 0x06C0 (1728) +0x8C8E, 0x10C0, 0x3983, 0x49A4, 0x72CA, 0x59E7, 0x6AEA, 0x942F, 0x5228, 0x0800, 0x1820, 0x30C1, 0x8329, 0xB46D, 0xB46E, 0x82C9, // 0x06D0 (1744) +0x5A46, 0x62E8, 0x840A, 0xBE31, 0xBE70, 0xB68F, 0xB6AF, 0xAE8E, 0xAE6E, 0xA62D, 0x9E0C, 0x9DEC, 0x9DEC, 0x9E0D, 0x9E0D, 0x9E0E, // 0x06E0 (1760) +0x7DAB, 0x7D8B, 0x7D8B, 0x7D8C, 0x7DAC, 0x85CC, 0x8DEB, 0x8DEC, 0x95EC, 0x9DEE, 0x7C8B, 0x73AA, 0x736B, 0x62A9, 0x7B2B, 0x9BCD, // 0x06F0 (1776) +0xAC0E, 0x8309, 0x51A4, 0x2080, 0x2902, 0x8C0E, 0x83AC, 0x7B0A, 0x4143, 0x7B2A, 0x730A, 0x28A1, 0x2081, 0x20C2, 0x1061, 0x1861, // 0x0700 (1792) +0x1840, 0x51C6, 0xB470, 0xB44F, 0xBCD0, 0xBCF1, 0xBD12, 0xAC2F, 0xABF0, 0xCCF5, 0xDDF8, 0xC5B6, 0x4A26, 0x2982, 0x1980, 0x8D0D, // 0x0710 (1808) +0xB632, 0x29A1, 0x3141, 0x3922, 0x6227, 0x59E6, 0x6AA8, 0xA4B0, 0x4A06, 0x1020, 0x2081, 0x1840, 0x51E4, 0x832A, 0x938B, 0x7A88, // 0x0720 (1824) +0x4144, 0x5206, 0x4A24, 0x9D0D, 0xBE90, 0xB66F, 0xAE4E, 0xAE8E, 0xAE6E, 0xA62D, 0x9E0C, 0x9DEC, 0x9DEC, 0x9E0D, 0x960D, 0x960D, // 0x0730 (1840) +0x7D8B, 0x7D8B, 0x7D8B, 0x7D8C, 0x85CC, 0x85EC, 0x8E0B, 0x8E0C, 0x95EE, 0x850D, 0x5328, 0x7BAD, 0x62C9, 0x832B, 0xAC4D, 0xA42C, // 0x0740 (1856) +0x7AC7, 0x30C0, 0x1020, 0x0860, 0x29A4, 0x740D, 0x73AB, 0x62E8, 0x3102, 0x834C, 0x6A89, 0x20A1, 0x20C1, 0x2963, 0x0880, 0x0880, // 0x0750 (1872) +0x18C2, 0x18A1, 0x6A67, 0xC48F, 0xBC2D, 0xCCAF, 0xC4F0, 0xAC4E, 0x9BCE, 0xBC92, 0xDE18, 0x940F, 0x2942, 0x6BC9, 0x748A, 0x95AE, // 0x0760 (1888) +0xC6F5, 0x4AC7, 0x3143, 0x3923, 0x72A8, 0x7287, 0x6226, 0x8B8C, 0x72EA, 0x3944, 0x3122, 0x2080, 0x2080, 0x4963, 0x6226, 0x6226, // 0x0770 (1904) +0x51A6, 0x49A5, 0x39A2, 0x6B67, 0xC691, 0xB68F, 0xAE6E, 0xAE6E, 0xAE6E, 0xA62D, 0xA60C, 0x9E0C, 0x9E0C, 0x9E2C, 0x9E2C, 0x962C, // 0x0780 (1920) +0x7D8C, 0x7D8C, 0x75AA, 0x7DCB, 0x7DEB, 0x85EC, 0x8DED, 0x95CD, 0x9DAF, 0x6BA9, 0x4A44, 0x5205, 0x51C5, 0x82EA, 0xAC2E, 0x9BAC, // 0x0790 (1936) +0x49C5, 0x1020, 0x3081, 0x38A1, 0x38A1, 0x59C6, 0x836C, 0x6288, 0x3942, 0x8BAC, 0x49A7, 0x2061, 0x3142, 0x39A4, 0x18A0, 0x1080, // 0x07A0 (1952) +0x10A0, 0x1902, 0x2102, 0x6B2A, 0xA4B0, 0xBD12, 0xBCB1, 0xAC2F, 0xAC2F, 0xCD54, 0xA470, 0x41C5, 0x2141, 0x5305, 0x854B, 0xAE4F, // 0x07B0 (1968) +0xBE52, 0x6B89, 0x3982, 0x3983, 0x49E7, 0x6ACA, 0x3963, 0x5244, 0xAD6E, 0xB630, 0x8D6C, 0x9D6E, 0x5264, 0x5A24, 0x82E7, 0x7245, // 0x07C0 (1984) +0x61E5, 0x51A5, 0x3963, 0x5286, 0xB60F, 0xB68F, 0xAE6F, 0xAE6E, 0xA64D, 0xA64C, 0xA62C, 0xA62C, 0xA62C, 0xA62C, 0xA62D, 0x9E0D, // 0x07D0 (2000) +0x7D8B, 0x7D8B, 0x7DAB, 0x85CB, 0x85AB, 0x85CC, 0x8DCC, 0x95CD, 0x8D2D, 0x3203, 0x39C3, 0x3983, 0x49A4, 0x6226, 0x5183, 0x4142, // 0x07E0 (2016) +0x1880, 0x2100, 0x39C2, 0x6326, 0x844A, 0x8C4B, 0x736A, 0x5206, 0x51C5, 0x93AD, 0x4964, 0x28C1, 0x3182, 0x4A45, 0x3184, 0x18A1, // 0x07F0 (2032) +0x1840, 0x3103, 0x3102, 0x3102, 0x49E6, 0x730B, 0x940F, 0xACD2, 0xACF3, 0x7B6D, 0x49E6, 0x20C1, 0x18C0, 0x2142, 0x31C3, 0x4225, // 0x0800 (2048) +0x18E0, 0x20C0, 0x3962, 0x41A3, 0x3141, 0x4A05, 0x41C4, 0x6B08, 0xA56E, 0xB64F, 0xAE70, 0xBE91, 0x8C6A, 0x6285, 0x8B49, 0x7AA8, // 0x0810 (2064) +0x7267, 0x51C5, 0x4184, 0x3982, 0x9D2C, 0xBE8F, 0xAE4E, 0xAE6E, 0xA64D, 0xA62C, 0xA62B, 0xA60B, 0xA60B, 0xA62C, 0xA62C, 0xA62D, // 0x0820 (2080) +0x856B, 0x858B, 0x8DCB, 0x85CB, 0x85AB, 0x85CB, 0x8DAB, 0x95CE, 0x744B, 0x29C2, 0x2962, 0x3142, 0x3943, 0x5206, 0x30C0, 0x20A0, // 0x0830 (2096) +0x5B26, 0x7C89, 0x8D4A, 0xAE4D, 0xAE8D, 0x958B, 0x52E5, 0x4A05, 0x8BAD, 0x836C, 0x28C0, 0x3121, 0x4A45, 0x4225, 0x2923, 0x20A1, // 0x0840 (2112) +0x2860, 0x4122, 0x6225, 0x51C4, 0x4183, 0x3942, 0x3964, 0x5A89, 0x4A07, 0x41E6, 0x3163, 0x18A0, 0x18A0, 0x1860, 0x1000, 0x0800, // 0x0850 (2128) +0x28C3, 0x2081, 0x28E1, 0x3121, 0x3121, 0x5245, 0x62E7, 0x7BC9, 0xB60F, 0xAE2E, 0x9E0C, 0xAE4E, 0x94EB, 0x62C5, 0x7AE8, 0x7AC8, // 0x0860 (2144) +0x7267, 0x51A5, 0x4184, 0x3141, 0x6346, 0xBE70, 0xB66F, 0xAE4D, 0xAE4C, 0xA62B, 0xA62B, 0xA60B, 0xA62B, 0xA62B, 0xA62C, 0xA64C, // 0x0870 (2160) +0x8D8A, 0x858A, 0x8DAA, 0x85AA, 0x85AA, 0x85AB, 0x858B, 0x9DCE, 0x6BE9, 0x2982, 0x2942, 0x3963, 0x49C5, 0x49A5, 0x3922, 0x3181, // 0x0880 (2176) +0x8D6C, 0x9E4C, 0x9E4B, 0xA62A, 0x9E09, 0xA5CB, 0x9D4D, 0x6B49, 0x6AE9, 0x3963, 0x2101, 0x2963, 0x18C0, 0x18C1, 0x3102, 0x30C1, // 0x0890 (2192) +0x4141, 0x4982, 0x6A85, 0x7AE7, 0x8327, 0x8B69, 0x7266, 0x6225, 0x6226, 0x5A05, 0x4183, 0x28C0, 0x1880, 0x1040, 0x1881, 0x3124, // 0x08A0 (2208) +0x49C6, 0x49C5, 0x49A4, 0x3923, 0x3102, 0x28E0, 0x7388, 0xB5EF, 0xB64E, 0xAE4C, 0xAE6C, 0xAE4D, 0x94EB, 0x5264, 0x7B08, 0x7AA8, // 0x08B0 (2224) +0x6A67, 0x51C5, 0x4184, 0x3142, 0x3180, 0x9D4D, 0xBE8F, 0xAE4D, 0xAE6C, 0xAE4C, 0xA62B, 0xA60A, 0xA60A, 0xA62A, 0xA62B, 0xA62B, // 0x08C0 (2240) +0x85AA, 0x85AA, 0x7DAA, 0x7D8A, 0x7DAA, 0x85AB, 0x858B, 0x95AE, 0x4AC6, 0x20E1, 0x3122, 0x3943, 0x5A06, 0x49A5, 0x3922, 0x4203, // 0x08D0 (2256) +0x856A, 0x8DE9, 0x95E8, 0xA609, 0xADE9, 0xB62D, 0x94EC, 0x2982, 0x18C1, 0x20A1, 0x28E1, 0x1880, 0x0820, 0x1040, 0x20C1, 0x3962, // 0x08E0 (2272) +0x51C4, 0x51E3, 0x72A6, 0x7AA6, 0x82C6, 0xABCA, 0xABC9, 0x9327, 0x7A86, 0x6A25, 0x59C5, 0x3902, 0x2080, 0x20A1, 0x3963, 0x49E4, // 0x08F0 (2288) +0x49A4, 0x5206, 0x5A26, 0x51E6, 0x4143, 0x28E1, 0x20C0, 0x6B66, 0xBE8D, 0xB66B, 0xAE4B, 0xB68D, 0x9D4B, 0x4A62, 0x72E8, 0x72A8, // 0x0900 (2304) +0x6226, 0x5A06, 0x49C5, 0x3942, 0x2940, 0x6BA7, 0xBE4F, 0xAE2C, 0xAE4C, 0xA62B, 0xA62B, 0x9E0A, 0x9E0A, 0x9E0A, 0xA62A, 0xA62B, // 0x0910 (2320) +0x85A9, 0x85CA, 0x7D8A, 0x7569, 0x7D8A, 0x7D8A, 0x8DAC, 0x850B, 0x2161, 0x20E2, 0x3123, 0x4144, 0x59E5, 0x59E5, 0x4143, 0x4A24, // 0x0920 (2336) +0x954B, 0x9DEA, 0xAE29, 0xB64A, 0xB64C, 0x7C68, 0x1100, 0x18C1, 0x28E3, 0x30C2, 0x30A0, 0x38C1, 0x28C2, 0x20A1, 0x18A0, 0x2922, // 0x0930 (2352) +0x4964, 0x5184, 0x7AA8, 0x8B09, 0x82A7, 0x8AC7, 0x9B68, 0xA389, 0x82E7, 0x6A47, 0x59E6, 0x4124, 0x30A2, 0x28A2, 0x49A4, 0x72C9, // 0x0940 (2368) +0x72C9, 0x5A06, 0x5205, 0x5204, 0x51C5, 0x4143, 0x28E1, 0x1080, 0x5B25, 0xC6AF, 0xB68D, 0xB66C, 0xADCC, 0x5283, 0x6AA7, 0x6A68, // 0x0950 (2384) +0x6206, 0x5A06, 0x51C5, 0x4184, 0x3962, 0x4A43, 0xADCD, 0xB62C, 0xAE2B, 0xA60B, 0x9E0B, 0x9E0A, 0x9E0A, 0x9E0A, 0xA60A, 0x9E0A, // 0x0960 (2400) +0x85A9, 0x85AA, 0x7D6A, 0x756A, 0x7D8A, 0x858A, 0x95EC, 0x63A6, 0x10C0, 0x28E2, 0x3923, 0x49A5, 0x6246, 0x4183, 0x3962, 0x4A24, // 0x0970 (2416) +0x954B, 0xA5EA, 0xA609, 0xBE6C, 0x7C88, 0x10E0, 0x18E0, 0x3123, 0x4144, 0x4124, 0x4943, 0x4963, 0x3102, 0x2081, 0x20C1, 0x30E2, // 0x0980 (2432) +0x4143, 0x5184, 0x6A26, 0x8AC9, 0x9B6A, 0xA38A, 0x9B6A, 0x9B6A, 0x936A, 0x7AC9, 0x6227, 0x4985, 0x4164, 0x3903, 0x3903, 0x4985, // 0x0990 (2448) +0x6249, 0x6A89, 0x5A45, 0x49A3, 0x51C5, 0x4964, 0x3923, 0x28E1, 0x1060, 0x6327, 0xBE4F, 0xC690, 0x950C, 0x4202, 0x6266, 0x72A8, // 0x09A0 (2464) +0x6A47, 0x6226, 0x59E6, 0x5206, 0x41A5, 0x39C2, 0x94CA, 0xB64D, 0xA60B, 0xA60B, 0x9E0B, 0x9E0A, 0x9E0A, 0x9E0A, 0x9E0A, 0x9DEA, // 0x09B0 (2480) +0x85A9, 0x7D69, 0x7D49, 0x7D6A, 0x7D8B, 0x858B, 0x95CC, 0x3A61, 0x10C0, 0x2903, 0x28A1, 0x51A5, 0x5205, 0x4182, 0x3121, 0x52A5, // 0x09C0 (2496) +0x9DCC, 0x9E0A, 0xAE8B, 0x8D29, 0x1920, 0x20E0, 0x28E1, 0x3943, 0x4963, 0x4984, 0x49C5, 0x3963, 0x3964, 0x28C2, 0x3901, 0x4942, // 0x09D0 (2512) +0x4142, 0x6245, 0x6A65, 0x7AA6, 0x9369, 0xAC0C, 0x9B6A, 0xA3AB, 0x938B, 0x7AE8, 0x6A86, 0x51E4, 0x49C4, 0x51E5, 0x51E7, 0x51A6, // 0x09E0 (2528) +0x51A6, 0x6228, 0x6AC9, 0x5A46, 0x51A4, 0x4923, 0x4145, 0x3924, 0x2901, 0x2100, 0x39C2, 0x8C6C, 0x73C9, 0x2120, 0x5203, 0x5A04, // 0x09F0 (2544) +0x6A66, 0x6A88, 0x6A88, 0x6A89, 0x6289, 0x41C3, 0x6BA5, 0xAE0C, 0xA5EB, 0x9DEB, 0x9DEB, 0x9E0A, 0x9E0A, 0x9E0A, 0x9DEA, 0x9DEA, // 0x0A00 (2560) +0x7588, 0x7D68, 0x8569, 0x8569, 0x85A8, 0x95CB, 0x8CAB, 0x2120, 0x2101, 0x20C0, 0x3923, 0x5A06, 0x59E6, 0x49C4, 0x3101, 0x4A43, // 0x0A10 (2576) +0x9DCC, 0xA64D, 0x9D8E, 0x2961, 0x18A0, 0x28E1, 0x3922, 0x49C5, 0x4984, 0x51E6, 0x4963, 0x4122, 0x4122, 0x3901, 0x49A4, 0x4143, // 0x0A20 (2592) +0x4983, 0x59E5, 0x72A8, 0x7287, 0x8309, 0x938B, 0x8B4A, 0x8B2A, 0x8329, 0x7AC9, 0x72C9, 0x6A67, 0x51A5, 0x5A06, 0x6AC9, 0x6AC9, // 0x0A30 (2608) +0x6AC9, 0x6AA9, 0x7AEA, 0x72EA, 0x3943, 0x3943, 0x3943, 0x4184, 0x4984, 0x4985, 0x28E3, 0x2923, 0x39C5, 0x1880, 0x49C4, 0x6205, // 0x0A40 (2624) +0x72A8, 0x830A, 0x72C9, 0x6226, 0x5205, 0x5226, 0x4A04, 0xA52E, 0x9E0C, 0x95EA, 0x960A, 0x9E0A, 0x9E09, 0x9E0A, 0x9DE9, 0x9DC9, // 0x0A50 (2640) +0x6D48, 0x7549, 0x7D49, 0x8569, 0x8589, 0x95CC, 0x7409, 0x18A0, 0x20E0, 0x28E1, 0x49A5, 0x5A07, 0x51C5, 0x51C5, 0x3963, 0x4203, // 0x0A60 (2656) +0x9DCD, 0xA62F, 0x42A4, 0x0840, 0x2902, 0x28C1, 0x49C5, 0x49C5, 0x49C5, 0x51C5, 0x4143, 0x51A4, 0x51A4, 0x51A4, 0x5A05, 0x51A4, // 0x0A70 (2672) +0x4163, 0x51A4, 0x6A87, 0x72A8, 0x832A, 0x8309, 0x72A8, 0x7AC8, 0x7AC8, 0x7AC9, 0x6A88, 0x6A68, 0x51E6, 0x5A27, 0x6AA9, 0x6AA9, // 0x0A80 (2688) +0x7B0A, 0x832B, 0x834C, 0x6A68, 0x3102, 0x3943, 0x4184, 0x51E5, 0x51E5, 0x49A5, 0x3964, 0x3123, 0x18A1, 0x1020, 0x3922, 0x6226, // 0x0A90 (2704) +0x7288, 0x7AC9, 0x72A8, 0x6247, 0x5205, 0x5205, 0x49C4, 0x7BEA, 0x9DEC, 0x95CA, 0x8DC9, 0x95E9, 0x9E09, 0x9E0A, 0x9DE9, 0x95C9, // 0x0AA0 (2720) +0x6508, 0x6D49, 0x7529, 0x858B, 0x85AA, 0x95ED, 0x5B27, 0x18A0, 0x2901, 0x3123, 0x4164, 0x4965, 0x49A5, 0x51C5, 0x3963, 0x4224, // 0x0AB0 (2736) +0xADF0, 0x748A, 0x0080, 0x18A0, 0x2081, 0x3123, 0x4184, 0x49A4, 0x4984, 0x4184, 0x4984, 0x6206, 0x6226, 0x7287, 0x6A67, 0x6226, // 0x0AC0 (2752) +0x4963, 0x4983, 0x5A06, 0x6A88, 0x832A, 0x72A8, 0x5A06, 0x6226, 0x830A, 0x7B0A, 0x6A88, 0x6268, 0x5A47, 0x6247, 0x6268, 0x6268, // 0x0AD0 (2768) +0x834B, 0x93CD, 0x9C0E, 0x51C5, 0x3923, 0x4984, 0x5206, 0x6247, 0x72A8, 0x72A9, 0x49A5, 0x3964, 0x20C2, 0x1860, 0x30E1, 0x59E5, // 0x0AE0 (2784) +0x6226, 0x6A68, 0x6AA8, 0x6267, 0x5A46, 0x5205, 0x49E4, 0x6B68, 0x9DCC, 0x8DCA, 0x8D88, 0x8DA9, 0x95E9, 0x95E9, 0x95C9, 0x95A9, // 0x0AF0 (2800) +0x5CE8, 0x6509, 0x6D2A, 0x7D8C, 0x7DAB, 0x8DAD, 0x4264, 0x2101, 0x28E1, 0x3943, 0x4185, 0x51C6, 0x6247, 0x5A06, 0x3943, 0x3983, // 0x0B00 (2816) +0x73EB, 0x1920, 0x10A0, 0x2923, 0x3123, 0x3102, 0x3102, 0x3122, 0x28C1, 0x3943, 0x5A06, 0x6226, 0x72A7, 0x8309, 0x6A67, 0x6A47, // 0x0B10 (2832) +0x51C4, 0x51A4, 0x59E6, 0x6AA8, 0x834B, 0x72C9, 0x51C5, 0x51C5, 0x72CA, 0x6A88, 0x6247, 0x5A27, 0x6248, 0x6248, 0x5A27, 0x6248, // 0x0B20 (2848) +0x832A, 0x9C0E, 0x9C2F, 0x30E2, 0x4184, 0x51C5, 0x5A26, 0x6A67, 0x7AEA, 0x7AEA, 0x6A89, 0x49C6, 0x3944, 0x20A1, 0x2060, 0x51C5, // 0x0B30 (2864) +0x51C4, 0x6206, 0x5A26, 0x59E6, 0x5A47, 0x5A47, 0x5A46, 0x5AC6, 0x956B, 0x8DAA, 0x8D69, 0x8D68, 0x8D88, 0x8DA9, 0x8D89, 0x8D89, // 0x0B40 (2880) +0x5D09, 0x6509, 0x6D2B, 0x756C, 0x758B, 0x7D0B, 0x31C3, 0x3122, 0x3102, 0x3923, 0x49C5, 0x51C5, 0x49C5, 0x51C5, 0x4984, 0x3102, // 0x0B50 (2896) +0x18E0, 0x0040, 0x20C2, 0x3944, 0x4164, 0x3102, 0x28E1, 0x3122, 0x20A1, 0x2080, 0x51E5, 0x7AE9, 0x7AE8, 0x8B49, 0x8309, 0x59E5, // 0x0B60 (2912) +0x51A4, 0x49A4, 0x51E6, 0x6A88, 0x72EA, 0x6268, 0x4144, 0x4985, 0x6268, 0x51E6, 0x5A27, 0x5207, 0x6248, 0x6247, 0x5A27, 0x6A68, // 0x0B70 (2928) +0x832B, 0xA44F, 0x6AC9, 0x1860, 0x4184, 0x5A06, 0x6226, 0x6A67, 0x7AC8, 0x7AE9, 0x7B0A, 0x6248, 0x4164, 0x2081, 0x2080, 0x49C4, // 0x0B80 (2944) +0x51C5, 0x6206, 0x5A26, 0x51A4, 0x51C5, 0x5A47, 0x6287, 0x4203, 0x7CA9, 0x8DAA, 0x8D69, 0x8549, 0x8548, 0x8568, 0x8D69, 0x8D69, // 0x0B90 (2960) +0x5D08, 0x6509, 0x6D4B, 0x6D4B, 0x758B, 0x6CAA, 0x2961, 0x3143, 0x3103, 0x4164, 0x49C5, 0x51E5, 0x51E5, 0x5206, 0x49A5, 0x30E2, // 0x0BA0 (2976) +0x0820, 0x18A1, 0x3124, 0x4165, 0x3963, 0x3102, 0x4184, 0x3123, 0x20A1, 0x28C2, 0x3102, 0x7AE9, 0x9BEB, 0x9BCB, 0x938B, 0x6A46, // 0x0BB0 (2992) +0x51A4, 0x49A4, 0x5A06, 0x6A88, 0x72EA, 0x6268, 0x3944, 0x4185, 0x6AAA, 0x5207, 0x5A27, 0x5A27, 0x6A89, 0x6A88, 0x6247, 0x72A9, // 0x0BC0 (3008) +0x8B8C, 0x9BED, 0x2902, 0x1040, 0x2902, 0x51E6, 0x6246, 0x6246, 0x7287, 0x8329, 0x72C9, 0x6A68, 0x49A5, 0x28A1, 0x28A1, 0x49E5, // 0x0BD0 (3024) +0x6226, 0x5A05, 0x6246, 0x59E6, 0x4984, 0x51E6, 0x6288, 0x41E3, 0x6C07, 0x8D6A, 0x8549, 0x8528, 0x7D28, 0x8528, 0x8549, 0x8549, // 0x0BE0 (3040) +0x5D08, 0x6509, 0x6D4A, 0x6D4B, 0x758B, 0x6469, 0x2141, 0x3122, 0x3923, 0x4164, 0x4184, 0x49C4, 0x5206, 0x5206, 0x4164, 0x3103, // 0x0BF0 (3056) +0x1860, 0x28C2, 0x4185, 0x51C5, 0x4142, 0x4142, 0x5206, 0x3143, 0x28E2, 0x28C2, 0x1840, 0x6226, 0x9BEC, 0xA3EB, 0xA3EC, 0x7AA8, // 0x0C00 (3072) +0x51A4, 0x51A5, 0x6A88, 0x6A68, 0x6AC9, 0x6268, 0x4164, 0x3964, 0x6AAA, 0x6268, 0x5A27, 0x6268, 0x72C9, 0x72A9, 0x6A68, 0x832A, // 0x0C10 (3088) +0x93AC, 0x6AA8, 0x0800, 0x1060, 0x1860, 0x3943, 0x59E6, 0x59C4, 0x6226, 0x7AC8, 0x7AE9, 0x6247, 0x51C5, 0x3923, 0x1840, 0x5206, // 0x0C20 (3104) +0x6A87, 0x6226, 0x6226, 0x5A06, 0x49A5, 0x51C5, 0x5A47, 0x41E3, 0x6BE7, 0x8D4A, 0x8509, 0x8508, 0x7D08, 0x7D08, 0x8528, 0x7D28, // 0x0C30 (3120) +0x6548, 0x6D49, 0x6D6A, 0x6D6B, 0x758B, 0x6469, 0x2961, 0x3922, 0x4143, 0x4984, 0x49A4, 0x51E5, 0x49E5, 0x49C5, 0x4964, 0x3903, // 0x0C40 (3136) +0x2061, 0x3944, 0x49A5, 0x51A5, 0x4163, 0x49A4, 0x49E5, 0x4185, 0x28E3, 0x20C2, 0x1820, 0x3921, 0x8B49, 0x9BCB, 0xA40C, 0x7AA7, // 0x0C50 (3152) +0x51C4, 0x6226, 0x834B, 0x6A88, 0x6AA9, 0x6248, 0x4185, 0x3964, 0x5A68, 0x6AAA, 0x6268, 0x72C9, 0x72E9, 0x6A88, 0x6A67, 0x8B6B, // 0x0C60 (3168) +0x93AD, 0x4163, 0x0840, 0x1080, 0x1040, 0x28C1, 0x51A5, 0x5183, 0x59E4, 0x6A66, 0x72C8, 0x6A67, 0x59E6, 0x4143, 0x20A0, 0x49C4, // 0x0C70 (3184) +0x6A87, 0x72C9, 0x6AA8, 0x59E6, 0x49A5, 0x51C5, 0x51E6, 0x49E4, 0x7428, 0x958B, 0x8509, 0x8509, 0x7D28, 0x7D28, 0x8529, 0x7D28, // 0x0C80 (3200) +0x6D69, 0x7569, 0x7569, 0x7D69, 0x7DAA, 0x6C68, 0x2141, 0x3944, 0x4184, 0x49C5, 0x4984, 0x4984, 0x51C5, 0x51E6, 0x49A4, 0x3963, // 0x0C90 (3216) +0x20A1, 0x28E2, 0x49A5, 0x4964, 0x4964, 0x5A06, 0x49A5, 0x3964, 0x2102, 0x1080, 0x1060, 0x1860, 0x6267, 0x93EC, 0x938A, 0x7286, // 0x0CA0 (3232) +0x59E4, 0x7AA8, 0x832A, 0x72A9, 0x832B, 0x6228, 0x4185, 0x4164, 0x5A48, 0x6AAA, 0x6A88, 0x7AEA, 0x7B0A, 0x8B6B, 0x938B, 0xA40E, // 0x0CB0 (3248) +0x8B6C, 0x30C2, 0x1860, 0x20C1, 0x1080, 0x1080, 0x41C2, 0x5A44, 0x51A4, 0x59A5, 0x6206, 0x5A06, 0x51C4, 0x4963, 0x30C1, 0x6226, // 0x0CC0 (3264) +0x7AC9, 0x7AE9, 0x6A68, 0x51C5, 0x4984, 0x51C5, 0x51E5, 0x41E3, 0x6BC6, 0x956A, 0x854A, 0x8529, 0x8528, 0x7D28, 0x8548, 0x7D48, // 0x0CD0 (3280) +0x7569, 0x7D8A, 0x7D89, 0x7D69, 0x85AA, 0x6C68, 0x2961, 0x3984, 0x4184, 0x4164, 0x3942, 0x4984, 0x51E5, 0x51E5, 0x49C5, 0x49C5, // 0x0CE0 (3296) +0x28E2, 0x28E2, 0x4164, 0x4964, 0x59E6, 0x51C5, 0x3963, 0x2902, 0x18C1, 0x1060, 0x1040, 0x1040, 0x4163, 0x836A, 0x8B6A, 0x7AC8, // 0x0CF0 (3312) +0x9BEC, 0xB490, 0x834A, 0x832B, 0x8B8C, 0x6248, 0x49A5, 0x4164, 0x5207, 0x6AA9, 0x7B2B, 0x72C9, 0x7B0A, 0xBCD1, 0xC552, 0xB48F, // 0x0D00 (3328) +0x8B8C, 0x30E1, 0x20C0, 0x2922, 0x20C2, 0x0820, 0x28C1, 0x6267, 0x6A87, 0x59E4, 0x4983, 0x5183, 0x4162, 0x4142, 0x4122, 0x6206, // 0x0D10 (3344) +0x8309, 0x6A87, 0x59C5, 0x51A4, 0x4963, 0x51A4, 0x5A26, 0x41E3, 0x6385, 0x958B, 0x8D8A, 0x8D69, 0x8549, 0x8549, 0x8569, 0x7D48, // 0x0D20 (3360) +0x7D89, 0x85AA, 0x8589, 0x7D69, 0x85AA, 0x6C48, 0x2961, 0x4185, 0x51E5, 0x49A4, 0x4983, 0x51A4, 0x59E5, 0x59E6, 0x5A06, 0x51E6, // 0x0D30 (3376) +0x3102, 0x28C1, 0x4163, 0x5A06, 0x6227, 0x4984, 0x3102, 0x20E2, 0x1080, 0x1060, 0x20A1, 0x2060, 0x30C1, 0x72A8, 0x8B4A, 0x8309, // 0x0D40 (3392) +0xBCD0, 0xCD53, 0x93CC, 0x93CD, 0x9C2E, 0x6268, 0x5206, 0x4164, 0x5A27, 0x72EA, 0x834B, 0x72A9, 0x834B, 0xB490, 0xC511, 0xB490, // 0x0D50 (3408) +0x8B6B, 0x38E1, 0x28E0, 0x2901, 0x20C2, 0x1042, 0x1020, 0x3944, 0x5A46, 0x6A87, 0x6245, 0x59E4, 0x4983, 0x5184, 0x4984, 0x4123, // 0x0D60 (3424) +0x7288, 0x7288, 0x59E5, 0x51A4, 0x4963, 0x4983, 0x5205, 0x4203, 0x6385, 0x95AB, 0x8D8A, 0x8D8A, 0x8D69, 0x8D89, 0x8D69, 0x8548, // 0x0D70 (3440) +0x8589, 0x85AA, 0x8568, 0x7D48, 0x858A, 0x6406, 0x2961, 0x49A5, 0x49A5, 0x4163, 0x4163, 0x49A4, 0x5A26, 0x6247, 0x6A88, 0x5A27, // 0x0D80 (3456) +0x3122, 0x28E1, 0x51C5, 0x6A88, 0x51C5, 0x3103, 0x20C1, 0x1880, 0x0840, 0x1880, 0x3964, 0x30E2, 0x38E1, 0x6226, 0x8329, 0x8B4A, // 0x0D90 (3472) +0x9C0D, 0xAC8F, 0x9C0D, 0xA44F, 0xA44F, 0x72EA, 0x5A27, 0x49A5, 0x5A07, 0x7B2B, 0x7B2B, 0x72A9, 0x8B6B, 0xA40E, 0xAC4E, 0xA42E, // 0x0DA0 (3488) +0x832A, 0x3902, 0x3941, 0x3142, 0x20A2, 0x1021, 0x1041, 0x1860, 0x3123, 0x49A5, 0x5205, 0x6266, 0x6226, 0x51A4, 0x51A5, 0x59E6, // 0x0DB0 (3504) +0x59C5, 0x6A46, 0x59E5, 0x49A3, 0x4963, 0x4963, 0x49A4, 0x39C2, 0x6BE7, 0x9DCC, 0x8D89, 0x8DA9, 0x8D89, 0x8D89, 0x8D88, 0x8D68, // 0x0DC0 (3520) +0x85A9, 0x8DAA, 0x8568, 0x8548, 0x858A, 0x6427, 0x2961, 0x49A5, 0x4164, 0x4163, 0x51A4, 0x51C5, 0x49A4, 0x4984, 0x5A26, 0x5A47, // 0x0DD0 (3536) +0x3943, 0x28C1, 0x49A5, 0x49A5, 0x3123, 0x20A1, 0x18A1, 0x1060, 0x1060, 0x20C2, 0x5206, 0x4984, 0x4943, 0x6205, 0x7B09, 0x8B8B, // 0x0DE0 (3552) +0x8B6B, 0x93CC, 0x8BAC, 0xAC6F, 0xA44F, 0x7B2B, 0x51E6, 0x6247, 0x6248, 0x6AA9, 0x7B0A, 0x7AEA, 0x834B, 0xA42E, 0xA40E, 0x8B8C, // 0x0DF0 (3568) +0x72C9, 0x3923, 0x3923, 0x3102, 0x1880, 0x0820, 0x2962, 0x20E0, 0x18A0, 0x28E2, 0x3122, 0x3923, 0x4163, 0x4983, 0x4964, 0x5185, // 0x0E00 (3584) +0x51A5, 0x59C5, 0x6246, 0x6246, 0x51C4, 0x4963, 0x4183, 0x41C3, 0x6BC8, 0x9DAC, 0x95AA, 0x95C9, 0x95A9, 0x95A9, 0x8D89, 0x8D88, // 0x0E10 (3600) +0x85A9, 0x85A9, 0x8568, 0x8569, 0x858A, 0x6C47, 0x2961, 0x4184, 0x4164, 0x4163, 0x4983, 0x4963, 0x4983, 0x51C5, 0x5A46, 0x5A06, // 0x0E20 (3616) +0x3943, 0x28C1, 0x30E2, 0x28A1, 0x20C1, 0x18A1, 0x1080, 0x1080, 0x0840, 0x20C1, 0x5206, 0x59E5, 0x51A4, 0x6226, 0x7AE8, 0x8BAB, // 0x0E30 (3632) +0x836A, 0x8B6B, 0x832A, 0x93CD, 0x9C2E, 0x72C9, 0x5206, 0x7B0B, 0x6A89, 0x5A47, 0x6AA9, 0x7AEA, 0x7B0A, 0x93CD, 0x834A, 0x7B0A, // 0x0E40 (3648) +0x6A89, 0x4985, 0x3103, 0x20A1, 0x1880, 0x0860, 0x5B46, 0x6BC8, 0x3A03, 0x2121, 0x20E0, 0x3101, 0x3122, 0x3922, 0x3922, 0x4164, // 0x0E50 (3664) +0x4984, 0x51A4, 0x5A25, 0x5A25, 0x4984, 0x3902, 0x30E1, 0x3982, 0x5B26, 0x954C, 0x9E0B, 0x9DEA, 0x95C9, 0x95C9, 0x95A9, 0x8D89, // 0x0E60 (3680) +0x8589, 0x8589, 0x8568, 0x8569, 0x8569, 0x7488, 0x2982, 0x3964, 0x4164, 0x49A4, 0x49A4, 0x4163, 0x4183, 0x5206, 0x5A46, 0x51C5, // 0x0E70 (3696) +0x3102, 0x30E2, 0x28C1, 0x20C2, 0x20C1, 0x18C1, 0x0860, 0x0860, 0x0840, 0x20A0, 0x49C5, 0x59E5, 0x51A4, 0x6246, 0x72C8, 0x834A, // 0x0E80 (3712) +0x7AE8, 0x7AE9, 0x832A, 0x7B0A, 0x93CD, 0x6AA8, 0x72C9, 0x7B2B, 0x6268, 0x6A89, 0x6A88, 0x6A88, 0x7AEA, 0x834B, 0x72A8, 0x72A9, // 0x0E90 (3728) +0x5A47, 0x3944, 0x28C2, 0x28A1, 0x1880, 0x0040, 0x6BE6, 0xAE2D, 0x958B, 0x5B85, 0x31A0, 0x20E0, 0x28E0, 0x3102, 0x3102, 0x3123, // 0x0EA0 (3744) +0x4164, 0x41A4, 0x4183, 0x3942, 0x4143, 0x38E2, 0x30A1, 0x3121, 0x4A64, 0x84AA, 0xA60B, 0x9E0A, 0x9DC9, 0x9DEA, 0x95C9, 0x8DA9, // 0x0EB0 (3760) +0x7D89, 0x7D69, 0x7D68, 0x7D48, 0x7D49, 0x7CCA, 0x31A3, 0x3984, 0x4184, 0x4984, 0x4163, 0x4983, 0x4984, 0x51E5, 0x51C4, 0x4163, // 0x0EC0 (3776) +0x3102, 0x28C1, 0x28E1, 0x20C2, 0x18A1, 0x0840, 0x18E2, 0x2122, 0x1080, 0x1860, 0x4184, 0x4984, 0x4963, 0x5A05, 0x6A87, 0x72C8, // 0x0ED0 (3792) +0x6A66, 0x7287, 0x834A, 0x7AE9, 0x8B8B, 0x7B2A, 0x836C, 0x72C9, 0x6268, 0x72C9, 0x5A06, 0x6268, 0x7AEA, 0x6A88, 0x6247, 0x6288, // 0x0EE0 (3808) +0x5A06, 0x3923, 0x30E2, 0x28A1, 0x1060, 0x0880, 0x63E5, 0xA60B, 0x9E09, 0xAE4C, 0x950A, 0x5B06, 0x3163, 0x20C1, 0x20C1, 0x2902, // 0x0EF0 (3824) +0x3103, 0x3123, 0x3121, 0x3100, 0x30C1, 0x30A2, 0x3903, 0x3963, 0x39C3, 0x73E8, 0x9DCB, 0x9DE9, 0x9DE9, 0x95CA, 0x8DC9, 0x8DA9, // 0x0F00 (3840) +0x7D6C, 0x7D6B, 0x7548, 0x7569, 0x7549, 0x7CEB, 0x4A44, 0x4143, 0x49A4, 0x4183, 0x41A3, 0x5204, 0x62A6, 0x49C4, 0x4163, 0x30E2, // 0x0F10 (3856) +0x30E2, 0x20A1, 0x20C1, 0x1080, 0x0880, 0x2182, 0x3285, 0x3A45, 0x18A1, 0x2081, 0x3122, 0x3942, 0x4983, 0x59E5, 0x6225, 0x6226, // 0x0F20 (3872) +0x5A05, 0x6226, 0x72A8, 0x7AE9, 0x7B2A, 0x8B8B, 0x8B8C, 0x5A26, 0x6246, 0x7B0A, 0x5A26, 0x6267, 0x6AA9, 0x6268, 0x5A47, 0x5A47, // 0x0F30 (3888) +0x49C5, 0x3943, 0x28E1, 0x28C1, 0x1880, 0x0860, 0x6386, 0x9DEC, 0x95A9, 0x95E9, 0x9E0A, 0x9DEB, 0x8D09, 0x5B64, 0x29C0, 0x1920, // 0x0F40 (3904) +0x18E0, 0x28C2, 0x28C2, 0x28A2, 0x30A2, 0x30C2, 0x4143, 0x41A3, 0x4A44, 0x6B87, 0x8D2B, 0x9DCC, 0x95CB, 0x95C9, 0x8DA8, 0x8DA8, // 0x0F50 (3920) +0x7D6C, 0x7D8B, 0x6D48, 0x6D68, 0x6529, 0x7D2B, 0x52A6, 0x3962, 0x3983, 0x3983, 0x3982, 0x49E4, 0x49A3, 0x4163, 0x3902, 0x3902, // 0x0F60 (3936) +0x2081, 0x20A1, 0x1080, 0x0880, 0x29E3, 0x5BA8, 0x6449, 0x5BC8, 0x2100, 0x20A0, 0x3122, 0x3122, 0x4163, 0x51C5, 0x59E5, 0x59E6, // 0x0F70 (3952) +0x59E5, 0x59E5, 0x6AA8, 0x7B09, 0x836B, 0x834A, 0x832A, 0x51E5, 0x6A87, 0x7B0A, 0x6247, 0x5A06, 0x6267, 0x5A27, 0x51E6, 0x51E6, // 0x0F80 (3968) +0x4184, 0x3923, 0x30E2, 0x28A1, 0x20A1, 0x1080, 0x5304, 0x9DCC, 0x95A9, 0x95E9, 0x95C9, 0x95A9, 0xA5EB, 0xAE0D, 0x8D2B, 0x6C08, // 0x0F90 (3984) +0x4283, 0x31A1, 0x2100, 0x2900, 0x3121, 0x3161, 0x41C2, 0x4A43, 0x4AA3, 0x5BA6, 0x7CC9, 0x8D8A, 0x8DAA, 0x8589, 0x8568, 0x8568, // 0x0FA0 (4000) +0x7D4B, 0x7D6B, 0x6D69, 0x6D69, 0x6549, 0x754C, 0x4B06, 0x2942, 0x3162, 0x2901, 0x3142, 0x3922, 0x3922, 0x4164, 0x3902, 0x28C2, // 0x0FB0 (4016) +0x20A2, 0x1860, 0x10A0, 0x29C2, 0x6429, 0x8D8C, 0x858B, 0x7CEA, 0x31A1, 0x20C0, 0x3121, 0x3102, 0x3943, 0x49A5, 0x49C5, 0x49C5, // 0x0FC0 (4032) +0x49A4, 0x51A4, 0x6267, 0x72C8, 0x7B0A, 0x6A88, 0x6AA8, 0x51C4, 0x7B2A, 0x834B, 0x6AA8, 0x51E5, 0x5A26, 0x5A06, 0x51E5, 0x4164, // 0x0FD0 (4048) +0x3943, 0x3103, 0x30E2, 0x28A1, 0x20A2, 0x18C0, 0x3A42, 0x958B, 0x8568, 0x8DA8, 0x8DC9, 0x95E9, 0x9DE9, 0x9DEA, 0xA60C, 0xA5ED, // 0x0FE0 (4064) +0x9DAC, 0x8CEA, 0x6C06, 0x5B65, 0x5B44, 0x6386, 0x6C07, 0x7448, 0x7CC8, 0x7D09, 0x856A, 0x8DCA, 0x8DAA, 0x8568, 0x7D47, 0x7D48, // 0x0FF0 (4080) +0x7D6B, 0x7D8B, 0x758A, 0x758A, 0x6D6B, 0x6D0B, 0x4286, 0x2922, 0x2902, 0x28E2, 0x30C1, 0x38E2, 0x3903, 0x30C2, 0x28E2, 0x18A0, // 0x1000 (4096) +0x10A0, 0x1941, 0x3AA4, 0x5C08, 0x7D6B, 0x85AB, 0x7DCA, 0x8DAC, 0x4263, 0x28E0, 0x3102, 0x30E2, 0x3923, 0x49A5, 0x49C5, 0x41A4, // 0x1010 (4112) +0x4184, 0x4984, 0x5A06, 0x6226, 0x6226, 0x59E5, 0x6A67, 0x6267, 0x7B09, 0x834A, 0x6AA8, 0x51C4, 0x49A4, 0x49A4, 0x51C5, 0x4164, // 0x1020 (4128) +0x3122, 0x3903, 0x30E2, 0x30A2, 0x28A2, 0x20E1, 0x29E1, 0x8D2B, 0x8DCA, 0x8DA9, 0x8DC9, 0x95EA, 0x95E9, 0x9DEA, 0x9DEB, 0x9DEB, // 0x1030 (4144) +0x9E0B, 0xA64C, 0xA64C, 0x9DEB, 0x9DCB, 0xA5EC, 0xA62C, 0x9E0C, 0x9E0B, 0x95EA, 0x8DEA, 0x8DC9, 0x8589, 0x8548, 0x7D28, 0x8528, // 0x1040 (4160) +0x756B, 0x754A, 0x756A, 0x754A, 0x754B, 0x6429, 0x39C3, 0x3122, 0x3102, 0x30E1, 0x30C1, 0x30A1, 0x28A1, 0x20C1, 0x10A0, 0x1100, // 0x1050 (4176) +0x2A22, 0x53A7, 0x7D0B, 0x7D4A, 0x7D8A, 0x7DAA, 0x7DCA, 0x8DAC, 0x52C6, 0x28E1, 0x3102, 0x30E2, 0x3923, 0x4164, 0x4183, 0x4183, // 0x1060 (4192) +0x4163, 0x4984, 0x51A5, 0x49A4, 0x4984, 0x51C5, 0x6A88, 0x72C9, 0x8B8B, 0x836B, 0x6267, 0x49C4, 0x4983, 0x4983, 0x51E5, 0x4163, // 0x1070 (4208) +0x30E2, 0x3902, 0x3902, 0x30E2, 0x28A1, 0x20E1, 0x31E1, 0x84EA, 0x8D8A, 0x85A9, 0x8DAA, 0x8DCA, 0x95C9, 0x95EA, 0x95EB, 0x95EB, // 0x1080 (4224) +0x95EA, 0x9E0A, 0x9E2B, 0x9E0B, 0x9DEA, 0x9DEA, 0x960A, 0x9E0A, 0x960A, 0x95E9, 0x95E9, 0x8DC9, 0x8DA8, 0x8568, 0x8547, 0x8548, // 0x1090 (4240) +0x6D6A, 0x6D4A, 0x756B, 0x7D6B, 0x7D2B, 0x53A7, 0x31A2, 0x41A3, 0x3982, 0x39A2, 0x4A25, 0x41C4, 0x2941, 0x1900, 0x19A1, 0x4B86, // 0x10A0 (4256) +0x6CA8, 0x7D8B, 0x85CB, 0x7D8A, 0x7DAA, 0x85EB, 0x7DAA, 0x8DAC, 0x5B27, 0x20E1, 0x3122, 0x3102, 0x3902, 0x4143, 0x4143, 0x4963, // 0x10B0 (4272) +0x4163, 0x4984, 0x4184, 0x4163, 0x4163, 0x49C5, 0x6267, 0x6267, 0x8BAC, 0x7B2A, 0x51E5, 0x4984, 0x4184, 0x49A4, 0x51C5, 0x3943, // 0x10C0 (4288) +0x30E1, 0x3922, 0x3902, 0x3902, 0x28C1, 0x2101, 0x3A22, 0x84EB, 0x8DAB, 0x8589, 0x8D8A, 0x95CA, 0x95EA, 0x95CA, 0x95EB, 0x9DEB, // 0x10D0 (4304) +0xA62B, 0xA62B, 0xA62B, 0xA62B, 0x9E2B, 0x9E0B, 0x9E0B, 0x9E2B, 0x9E0A, 0x9E0A, 0x9E09, 0x95E9, 0x95C8, 0x8D88, 0x8D68, 0x8D68, // 0x10E0 (4320) +0x6549, 0x6D49, 0x7549, 0x7D4A, 0x74EA, 0x4B65, 0x3A63, 0x4AC5, 0x5B87, 0x6409, 0x4B46, 0x3A83, 0x3A63, 0x42E4, 0x7CEA, 0x858B, // 0x10F0 (4336) +0x7D8A, 0x7DAA, 0x7D89, 0x85AA, 0x8DAA, 0x8DAA, 0x85AA, 0x9DED, 0x73C9, 0x2120, 0x2941, 0x2922, 0x3122, 0x3943, 0x3923, 0x4144, // 0x1100 (4352) +0x4143, 0x4143, 0x3943, 0x3923, 0x4143, 0x4164, 0x51E5, 0x49A4, 0x5A27, 0x51E6, 0x4143, 0x3922, 0x3902, 0x4143, 0x4164, 0x3923, // 0x1110 (4368) +0x28E1, 0x3102, 0x3902, 0x3902, 0x3102, 0x2100, 0x4263, 0x954C, 0x8D8A, 0x8DAA, 0x95CA, 0x95CA, 0x95C9, 0x95CA, 0x95EA, 0x9E0B, // 0x1120 (4384) +0x9E0A, 0xA62B, 0xA62B, 0xA60B, 0x9E0B, 0x9E0B, 0xA62B, 0xA60B, 0xA62A, 0xA60A, 0x9E0A, 0x9DE9, 0x95C8, 0x8DA8, 0x8DA8, 0x8DA8, // 0x1130 (4400) +0x6D69, 0x6D89, 0x7549, 0x7D4A, 0x6D2A, 0x5407, 0x6449, 0x74CB, 0x6CEA, 0x5468, 0x43E6, 0x5448, 0x6468, 0x7D2B, 0x7D6A, 0x7D89, // 0x1140 (4416) +0x7DAA, 0x85A9, 0x8DAA, 0x95EB, 0x8D8A, 0x95CB, 0x95EA, 0x9DEC, 0x8CAB, 0x2980, 0x2960, 0x2941, 0x3142, 0x3944, 0x3923, 0x3904, // 0x1150 (4432) +0x3923, 0x3102, 0x3102, 0x3102, 0x3943, 0x3923, 0x4184, 0x3943, 0x3943, 0x3923, 0x3923, 0x3902, 0x3902, 0x3943, 0x3923, 0x3102, // 0x1160 (4448) +0x28C1, 0x28C2, 0x3102, 0x3102, 0x3122, 0x2920, 0x4282, 0x9DAC, 0x95CA, 0x95EA, 0x95CA, 0x95CA, 0x9DE9, 0x9DE9, 0x9DEA, 0x9E0A, // 0x1170 (4464) +0xA62A, 0xAE4B, 0xAE6B, 0xAE4B, 0xA64B, 0xA62B, 0xA62B, 0xA62B, 0xAE2B, 0xA60A, 0xA60A, 0x9E0A, 0x9DE9, 0x95C8, 0x8DC8, 0x95E9, // 0x1180 (4480) +0x6D69, 0x6D69, 0x6D48, 0x7569, 0x7548, 0x6D28, 0x7549, 0x756A, 0x7549, 0x6D29, 0x6508, 0x6D29, 0x6D69, 0x7569, 0x7589, 0x7D89, // 0x1190 (4496) +0x85A9, 0x8DAA, 0x95C9, 0x95C9, 0x8DCA, 0x95EB, 0x9DEC, 0xA5EC, 0x9DCC, 0x4261, 0x2900, 0x3103, 0x3923, 0x3123, 0x3103, 0x28E2, // 0x11A0 (4512) +0x28E2, 0x3102, 0x28E1, 0x28E1, 0x3102, 0x3102, 0x3122, 0x3102, 0x3102, 0x30E2, 0x28C2, 0x30E2, 0x3102, 0x3102, 0x30E2, 0x3102, // 0x11B0 (4528) +0x20C1, 0x28C1, 0x30E2, 0x3102, 0x3121, 0x2900, 0x4202, 0xADAD, 0xADEA, 0xA5E9, 0x9E09, 0x95E9, 0x9DE9, 0x9E0A, 0xA60A, 0xA62A, // 0x11C0 (4544) +0xAE4B, 0xAE4B, 0xAE4B, 0xAE4B, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE2A, 0xA64A, 0xA62A, 0xA62A, 0x9E2A, 0x9DE9, 0x95E9, 0x9DE8, 0x9DC8, // 0x11D0 (4560) +0x6D69, 0x6D69, 0x6D48, 0x7569, 0x7569, 0x7569, 0x7569, 0x756A, 0x6D49, 0x6D29, 0x6509, 0x6D49, 0x7569, 0x7D89, 0x7D89, 0x7DA9, // 0x11E0 (4576) +0x85AA, 0x8DAA, 0x95C9, 0x95C9, 0x8DEA, 0x95EB, 0x9DEC, 0x9DEC, 0xA62D, 0x5B65, 0x2920, 0x3123, 0x3102, 0x28E2, 0x20C2, 0x20C1, // 0x11F0 (4592) +0x20A1, 0x28E2, 0x28E2, 0x28E2, 0x28E2, 0x28C1, 0x28E1, 0x28E1, 0x28E1, 0x28E1, 0x28C1, 0x28C2, 0x30E2, 0x30E2, 0x30E2, 0x3102, // 0x1200 (4608) +0x20A1, 0x1880, 0x28E2, 0x3102, 0x3101, 0x2900, 0x39A1, 0xA56D, 0xAE2B, 0xA629, 0x9E0A, 0x9E0A, 0x9E0A, 0xA62A, 0xA62A, 0xA64A, // 0x1210 (4624) +0xAE4B, 0xAE4B, 0xB66B, 0xAE4B, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE2A, 0xA62A, 0xA60A, 0x9E2A, 0x9E0A, 0x9DE9, 0x95E9, 0x9DE8, 0x9DC8, // 0x1220 (4640) +0x6549, 0x6549, 0x6528, 0x6D49, 0x7569, 0x7569, 0x7D6A, 0x754A, 0x6D29, 0x6D09, 0x6D09, 0x7549, 0x7589, 0x7D89, 0x7DA9, 0x85A9, // 0x1230 (4656) +0x8DA9, 0x8DCA, 0x95C9, 0x95E9, 0x95EA, 0x95EB, 0x9DEC, 0x9DEC, 0xA62D, 0x7448, 0x2940, 0x3123, 0x28E2, 0x20A1, 0x1881, 0x1881, // 0x1240 (4672) +0x1880, 0x28E2, 0x2902, 0x2902, 0x28C1, 0x20A1, 0x20A1, 0x20A1, 0x20A1, 0x28A1, 0x20A1, 0x20A1, 0x28A2, 0x28C2, 0x28C2, 0x30E3, // 0x1250 (4688) +0x1881, 0x1040, 0x28C2, 0x20A1, 0x28E1, 0x2921, 0x2920, 0x8CAA, 0xB64C, 0xAE2A, 0xA62A, 0xA62A, 0xA62A, 0xA62B, 0xA62A, 0xAE4B, // 0x1260 (4704) +0xAE4B, 0xAE6B, 0xB66B, 0xAE4B, 0xAE4A, 0xAE4A, 0xAE4A, 0xAE2A, 0xA62A, 0x9E09, 0x9E09, 0x9E09, 0x9DE9, 0x95E9, 0x9DE8, 0x9DC8, // 0x1270 (4720) +0x6529, 0x6549, 0x6528, 0x6D28, 0x7549, 0x7549, 0x756A, 0x7529, 0x6D29, 0x6D09, 0x6D08, 0x7549, 0x7D69, 0x7D89, 0x85A9, 0x85A9, // 0x1280 (4736) +0x8DA9, 0x8DC9, 0x95C9, 0x95E9, 0x95EA, 0x960B, 0x95EC, 0x9DEC, 0x9E0D, 0x7C89, 0x2120, 0x3122, 0x20C1, 0x1880, 0x1881, 0x1881, // 0x1290 (4752) +0x1860, 0x28E2, 0x3102, 0x3102, 0x20C2, 0x1881, 0x1881, 0x20A1, 0x2081, 0x20A1, 0x20A1, 0x20A1, 0x20A1, 0x20A1, 0x28C2, 0x28E2, // 0x12A0 (4768) +0x1860, 0x1060, 0x20A2, 0x1860, 0x20C1, 0x3121, 0x2100, 0x73E7, 0xBE4D, 0xAE2A, 0xA62A, 0xA62A, 0xA62B, 0xA62A, 0xA62A, 0xAE2A, // 0x12B0 (4784) +0xAE4B, 0xAE4B, 0xAE4B, 0xAE4B, 0xAE4A, 0xAE4A, 0xAE4A, 0xA62A, 0xA62A, 0x9E09, 0x9DE9, 0x95E9, 0x95E9, 0x95E9, 0x9DE8, 0x95C8, // 0x12C0 (4800) +}; diff --git a/libraries/UTFT_Buttons/examples/UTFT_Buttons_Demo_320x240/UTFT_Buttons_Demo_320x240.ino b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Demo_320x240/UTFT_Buttons_Demo_320x240.ino new file mode 100644 index 0000000..6b5cb1a --- /dev/null +++ b/libraries/UTFT_Buttons/examples/UTFT_Buttons_Demo_320x240/UTFT_Buttons_Demo_320x240.ino @@ -0,0 +1,125 @@ +// UTFT_Buttons_Demo_320x240 (C)2013 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// A small demo to demonstrate the use of some of the +// functions of the UTFT_Buttons add-on library. +// +// This demo was made for modules with a screen resolution +// of 320x240 pixels, but should work on larger screens as +// well. +// +// This program requires both the UTFT and UTouch libraries +// in addition to the UTFT_Buttons add-on library. +// + +#include +#include +#include + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; +extern uint8_t BigFont[]; +extern uint8_t Dingbats1_XL[]; + +// Set up UTFT... +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino 2009/Uno/Leonardo shield : ,19,18,17,16 +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Standard chipKit Uno32/uC32 : ,34,35,36,37 +// Standard chipKit Max32 : ,82,83,84,85 +// AquaLEDSource All in One Super Screw Shield : ,82,83,84,85 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +// Set up UTouch... +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino 2009/Uno/Leonardo shield : 15,10,14,9,8 +// Standard Arduino Mega/Due shield : 6,5,4,3,2 +// CTE TFT LCD/SD Shield for Arduino Due : 6,5,4,3,2 +// Standard chipKit Uno32/uC32 : 20,21,22,23,24 +// Standard chipKit Max32 : 62,63,64,65,66 +// AquaLEDSource All in One Super Screw Shield : 62,63,64,65,66 +UTouch myTouch(6,5,4,3,2); + +// Finally we set up UTFT_Buttons :) +UTFT_Buttons myButtons(&myGLCD, &myTouch); + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont(SmallFont); + + myTouch.InitTouch(); + myTouch.setPrecision(PREC_MEDIUM); + + myButtons.setTextFont(BigFont); + myButtons.setSymbolFont(Dingbats1_XL); +} + +void loop() +{ + int but1, but2, but3, but4, butX, butY, pressed_button; + boolean default_colors = true; + + but1 = myButtons.addButton( 10, 20, 300, 30, "Button 1"); + but2 = myButtons.addButton( 10, 60, 300, 30, "Button 2"); + but3 = myButtons.addButton( 10, 100, 300, 30, "Button 3"); + but4 = myButtons.addButton( 10, 140, 300, 30, "Button 4", BUTTON_DISABLED); + butX = myButtons.addButton(279, 199, 40, 40, "a", BUTTON_SYMBOL); + butY = myButtons.addButton( 0, 199, 100, 40, "I", BUTTON_SYMBOL | BUTTON_SYMBOL_REP_3X); + myButtons.drawButtons(); + + myGLCD.print("You pressed:", 110, 205); + myGLCD.setColor(VGA_BLACK); + myGLCD.setBackColor(VGA_WHITE); + myGLCD.print("None ", 110, 220); + + while(1) + { + if (myTouch.dataAvailable() == true) + { + pressed_button = myButtons.checkButtons(); + + if (pressed_button==butX) + { + if (myButtons.buttonEnabled(but4)) + myButtons.disableButton(but4, true); + else + myButtons.enableButton(but4, true); + } + else if (pressed_button==butY) + { + if (default_colors) + { + myButtons.setButtonColors(VGA_YELLOW, VGA_RED, VGA_YELLOW, VGA_BLUE, VGA_GRAY); + myButtons.relabelButton(butY, "_"); + myButtons.drawButtons(); + default_colors=false; + } + else + { + myButtons.setButtonColors(VGA_WHITE, VGA_GRAY, VGA_WHITE, VGA_RED, VGA_BLUE); + myButtons.relabelButton(butY, "I"); + myButtons.drawButtons(); + default_colors=true; + } + } + if (pressed_button==but1) + myGLCD.print("Button 1", 110, 220); + if (pressed_button==but2) + myGLCD.print("Button 2", 110, 220); + if (pressed_button==but3) + myGLCD.print("Button 3", 110, 220); + if (pressed_button==but4) + myGLCD.print("Button 4", 110, 220); + if (pressed_button==-1) + myGLCD.print("None ", 110, 220); + } + } +} + diff --git a/libraries/UTFT_Buttons/fonts.c b/libraries/UTFT_Buttons/fonts.c new file mode 100644 index 0000000..b189f8e --- /dev/null +++ b/libraries/UTFT_Buttons/fonts.c @@ -0,0 +1,117 @@ +#if defined(__AVR__) + #include + #define fontdatatype const uint8_t +#elif defined(__PIC32MX__) + #define PROGMEM + #define fontdatatype const unsigned char +#elif defined(__arm__) + #define PROGMEM + #define fontdatatype const unsigned char +#endif + +// Dingbats1_XL.c +// Font type : Full (95 characters) +// Font size : 32x24 pixels +fontdatatype Dingbats1_XL[9124] PROGMEM={ +0x20,0x18,0x20,0x5F, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0D,0xC0,0x00,0x00,0x1E,0xE0,0x00,0x00,0x33,0x30,0x00,0x00,0x61,0x98,0x00,0x00,0xCC,0xCC,0x00,0x00,0xCC,0x6C,0x00,0x01,0x80,0x36,0x00,0x03,0x02,0x36,0x00,0x07,0x06,0x1B,0x00,0x01,0x8E,0x1B,0x00,0x00,0xF6,0x1B,0x00,0x00,0x06,0x1B,0x00,0x00,0x06,0x1B,0x00,0x00,0x06,0x1B,0x00,0x00,0x07,0xFB,0x00,0x00,0x07,0xFB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ! +0x00,0x00,0x00,0x00,0x07,0xFF,0xFE,0x00,0x07,0xFF,0xFF,0x00,0x06,0x00,0x03,0x00,0x06,0x00,0x03,0x00,0x06,0x06,0x33,0x00,0x06,0x06,0x33,0x00,0x06,0x00,0x33,0x00,0x06,0x00,0x33,0x00,0x07,0x00,0x33,0x00,0x03,0x80,0x33,0x00,0x01,0xC0,0x33,0x00,0x00,0xFC,0x33,0x00,0x00,0x7C,0x33,0x00,0x00,0x0C,0x3F,0x00,0x00,0x0C,0x1E,0x00,0x00,0x0C,0x00,0x00,0x00,0x1B,0xFC,0x00,0x00,0x19,0x24,0x00,0x00,0x1F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // " +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x00,0x00,0xEF,0xDC,0x00,0x00,0xFF,0xFC,0x00,0x00,0xD0,0x2C,0x00,0x00,0xC0,0x0C,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x03,0x00,0x03,0x00,0x03,0x0C,0xC3,0x00,0x03,0x0C,0xC3,0x00,0x03,0x00,0x03,0x00,0x03,0x03,0x03,0x00,0x01,0x8A,0x46,0x00,0x01,0x8F,0xC6,0x00,0x00,0xE0,0x1C,0x00,0x00,0x70,0x38,0x00,0x00,0x3F,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // # +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1E,0x00,0x03,0xF7,0xBF,0x00,0x03,0xFF,0xFF,0x00,0x03,0xF0,0x3F,0x00,0x03,0xE0,0x1F,0x00,0x01,0x80,0x06,0x00,0x01,0x9C,0x66,0x00,0x03,0x35,0xB3,0x00,0x03,0x35,0x33,0x00,0x03,0x3C,0xF3,0x00,0x03,0x7C,0x7B,0x00,0x03,0x38,0x73,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x00,0xE0,0x1C,0x00,0x00,0x70,0x38,0x00,0x00,0x3F,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // $ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x30,0x3F,0x00,0x00,0x40,0x00,0x80,0x00,0x80,0x00,0x80,0x01,0x00,0x00,0x80,0x01,0x30,0x00,0x80,0x02,0x30,0x00,0x80,0x02,0x00,0x01,0x80,0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x02,0x01,0x01,0x00,0x02,0x01,0x01,0x00,0x02,0x7F,0x01,0x00,0x02,0x41,0x01,0x00,0x02,0x41,0x02,0x00,0x02,0x41,0x02,0x00,0x01,0x38,0xFC,0x00,0x01,0x88,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // % +0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x1F,0xE0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x7F,0xF8,0x00,0x00,0x7F,0xFC,0x00,0x00,0xFF,0xFC,0x00,0x00,0xFF,0xFC,0x00,0x01,0xC0,0x0E,0x00,0x01,0x9F,0xE6,0x00,0x01,0x8C,0xC6,0x00,0x01,0xCC,0xCE,0x00,0x01,0xC0,0x0E,0x00,0x01,0xCC,0xCE,0x00,0x01,0x97,0xA6,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x00,0xC0,0x0C,0x00,0x00,0xFF,0xFC,0x00,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // & +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x06,0xC0,0x03,0x00,0x04,0x40,0x02,0x80,0x06,0x40,0x02,0x40,0x0E,0x20,0x01,0x40,0x01,0x2E,0x03,0x20,0x00,0x91,0x02,0x20,0x00,0x85,0xFE,0x20,0x04,0x45,0x69,0x20,0x0C,0xC3,0x00,0x20,0x1F,0xE0,0x00,0x60,0x10,0x00,0x00,0x40,0x18,0x0E,0x99,0x80,0x0F,0xF8,0xE1,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x38,0x00,0x00,0xFF,0xFC,0x00,0x00,0x8F,0xC6,0x00,0x01,0xBF,0xF6,0x00,0x01,0xF8,0x7E,0x00,0x01,0xE0,0x1F,0x00,0x03,0xC0,0x0F,0x00,0x03,0x80,0x07,0x00,0x03,0x8C,0xC6,0x00,0x03,0x8C,0xC7,0x00,0x03,0x80,0x07,0x00,0x03,0x83,0x07,0x00,0x03,0xC9,0x4F,0x00,0x03,0xCF,0xCF,0x00,0x03,0xC0,0x0F,0x00,0x00,0xF0,0x3C,0x00,0x00,0xFC,0xFC,0x00,0x00,0x3F,0xF0,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ( +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x19,0xE0,0x00,0x00,0x39,0xE0,0x00,0x00,0x5F,0xE0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x17,0xE0,0x00,0x00,0x13,0xF0,0x00,0x00,0x13,0xF0,0x00,0x00,0x33,0xF8,0x00,0x00,0x23,0xF8,0x00,0x00,0x23,0xFC,0x00,0x00,0x23,0xF0,0x00,0x00,0x33,0xF0,0x00,0x00,0x1B,0xF0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x21,0xF8,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ) +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xC0,0x1F,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xC0,0x10,0x7F,0xFF,0xC0,0x15,0x7F,0xFD,0xC0,0x15,0xBF,0xF8,0xE0,0x0A,0xFF,0xF8,0x60,0x0F,0x3F,0xF0,0x00,0x07,0xFF,0xC0,0x00,0x01,0xFF,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // * +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0xFF,0xE0,0x00,0x01,0xEF,0xF1,0xC0,0x03,0xEF,0xFB,0x80,0x06,0x6F,0xFF,0x00,0x0E,0x63,0xFF,0x00,0x07,0xF3,0xFB,0x80,0x03,0xEB,0xF1,0x80,0x00,0xFF,0xF0,0x40,0x00,0x1C,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,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x17,0x00,0x00,0x00,0x23,0x01,0x00,0x00,0xC0,0x83,0x00,0x01,0x80,0x4F,0x00,0x02,0x60,0x3F,0x00,0x06,0x60,0x3F,0x00,0x01,0x80,0x4F,0x00,0x00,0xC0,0x83,0x00,0x00,0x23,0x01,0x00,0x00,0x17,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // , +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x67,0x98,0x00,0x00,0xF0,0x3C,0x00,0x01,0xE7,0x9E,0x00,0x03,0xEF,0xFF,0x00,0x02,0x0C,0x31,0x00,0x03,0xF8,0xDF,0x80,0x07,0xE8,0xDF,0x80,0x07,0xF8,0x1F,0x80,0x07,0xF8,0x3F,0x80,0x07,0xE8,0xFF,0x80,0x07,0x28,0xD3,0x80,0x06,0x1C,0xE1,0x80,0x02,0x17,0x21,0x00,0x02,0x1F,0xE1,0x00,0x02,0x10,0x21,0x00,0x03,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x70,0x00,0x00,0x14,0x50,0x00,0x00,0x92,0x94,0x00,0x00,0xFA,0xBE,0x00,0x00,0xFA,0xBE,0x00,0x00,0xFB,0xBE,0x00,0x00,0x73,0x9C,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xC0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x07,0xC0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x07,0xC0,0x00,0x00,0x03,0x80,0x00,0x00,0x06,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // . +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x3F,0xA0,0x00,0x00,0x7F,0xE0,0x00,0x00,0x7D,0xE0,0x00,0x00,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xFB,0xE0,0x00,0x00,0xFF,0xF0,0x00,0x00,0xFF,0xF8,0x00,0x00,0xFF,0xF8,0x00,0x00,0x7F,0xFC,0x00,0x00,0x7F,0xFC,0x00,0x00,0x7F,0xFC,0x00,0x00,0x77,0xFE,0x00,0x00,0x77,0xFE,0x00,0x00,0x77,0x1F,0x00,0x00,0x77,0x1C,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // / + +0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x30,0x30,0x00,0x00,0xC0,0x0C,0x00,0x01,0x80,0xC6,0x00,0x01,0x01,0xF2,0x00,0x02,0x03,0xF1,0x00,0x02,0x07,0xA1,0x00,0x04,0x07,0x60,0x80,0x04,0x0E,0x00,0x80,0x04,0x0C,0x00,0x80,0x04,0x1C,0x00,0x80,0x04,0x1C,0x00,0x80,0x04,0x1C,0x00,0x80,0x02,0x3E,0x01,0x00,0x02,0x3A,0x01,0x00,0x01,0x14,0x02,0x00,0x00,0x24,0x06,0x00,0x00,0x20,0x0C,0x00,0x00,0x30,0x30,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0x80,0x05,0x00,0x00,0x80,0x05,0xC0,0x00,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x07,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 1 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x80,0x02,0x00,0x00,0x80,0x06,0xFE,0x3E,0x80,0x06,0xFE,0x00,0x80,0x06,0x00,0x00,0x80,0x06,0xFF,0xFE,0x80,0x06,0xFE,0xFE,0x80,0x06,0x00,0x00,0x80,0x07,0xFF,0xFF,0x80,0x04,0x00,0x01,0x00,0x07,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 2 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x82,0x00,0x03,0xFF,0x83,0x80,0x02,0x00,0x44,0x80,0x06,0x07,0x38,0x80,0x06,0x18,0xC0,0x80,0x06,0x10,0x40,0x80,0x06,0x10,0x40,0x80,0x06,0x18,0xC0,0x80,0x06,0x07,0x00,0x80,0x07,0xFF,0xFF,0x80,0x04,0x00,0x01,0x00,0x07,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 3 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x78,0x00,0x00,0x10,0xCC,0x00,0x00,0x10,0x84,0x00,0x00,0x10,0x84,0x00,0x00,0x10,0x84,0x00,0x00,0x19,0x84,0x00,0x00,0x0F,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 4 +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,0x92,0x00,0x00,0x00,0x92,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0xEE,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x10,0x78,0x00,0x00,0x10,0xCC,0x00,0x00,0x10,0x84,0x00,0x00,0x10,0x84,0x00,0x00,0x10,0x84,0x00,0x00,0x19,0x84,0x00,0x00,0x0F,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 5 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x47,0x10,0x00,0x00,0xCF,0x98,0x00,0x00,0xEF,0xB8,0x00,0x01,0xDF,0xDC,0x00,0x03,0xCF,0x9E,0x00,0x01,0xFF,0xFC,0x00,0x01,0xFF,0xFC,0x00,0x03,0xDF,0xDE,0x00,0x03,0xAF,0xAE,0x00,0x07,0xFF,0xFF,0x00,0x03,0xDF,0xDE,0x00,0x03,0xBF,0xEE,0x00,0x07,0x87,0x0F,0x00,0x07,0xF7,0x7F,0x00,0x08,0xE7,0x38,0x80,0x00,0xE7,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 6 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0xB0,0x00,0x00,0x37,0xB0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x03,0xC3,0x0F,0x00,0x01,0xE3,0x1E,0x00,0x00,0xF3,0x3C,0x00,0x00,0x7B,0x78,0x00,0x00,0x3F,0xF0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 7 +0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x27,0x20,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x7F,0xF0,0x00,0x00,0x9F,0xC8,0x00,0x00,0x3F,0xE0,0x00,0x00,0xFF,0xF8,0x00,0x01,0xFF,0xFC,0x00,0x03,0xFF,0xFE,0x00,0x04,0x07,0x01,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x1B,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x3F,0xF8,0x00,0x00,0x7F,0xFC,0x00,0x00,0xFF,0xFE,0x00,0x00,0xE1,0x0E,0x00,0x00,0xE1,0x0E,0x00,0x00,0xE1,0x0E,0x00,0x00,0xFF,0xFE,0x00,0x00,0xFF,0xFE,0x00,0x00,0xE1,0x0E,0x00,0x00,0xE1,0x0E,0x00,0x00,0xE1,0x0E,0x00,0x00,0xFF,0xFE,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 9 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x40,0x04,0x00,0x00,0x59,0xB4,0x00,0x00,0x59,0xB4,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x59,0xB4,0x00,0x00,0x59,0xB4,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x59,0xB4,0x00,0x00,0x59,0xB4,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x41,0x84,0x00,0x00,0x41,0x84,0x00,0x00,0x41,0x84,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // : +0x00,0x00,0x00,0x00,0x03,0xFF,0xE0,0x00,0x02,0x00,0x20,0x00,0x02,0xFF,0xA0,0x00,0x02,0x00,0x20,0x00,0x02,0xFF,0xA0,0x00,0x02,0x00,0x20,0x00,0x02,0xFF,0xA0,0x00,0x02,0x00,0x20,0x00,0x02,0xFF,0xA0,0x00,0x02,0x00,0x20,0x00,0x02,0xFF,0xA0,0x00,0x02,0xFF,0xA0,0x00,0x02,0x00,0x20,0x00,0x02,0xFF,0xA0,0x00,0x02,0x00,0x20,0x00,0x02,0x3E,0x20,0x00,0x02,0x3E,0x20,0x00,0x02,0x3E,0x20,0x00,0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ; +0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x7F,0xF8,0x00,0x00,0xFF,0xFC,0x00,0x01,0xFF,0xFE,0x00,0x01,0xFC,0xFE,0x00,0x01,0xF8,0x7E,0x00,0x01,0xF8,0x7E,0x00,0x01,0xF8,0x7E,0x00,0x01,0xF8,0x7E,0x00,0x01,0xF8,0x7E,0x00,0x01,0xF8,0x7E,0x00,0x01,0xF8,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // < +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFD,0xFC,0x00,0x03,0x22,0x26,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x00,0x22,0x26,0x00,0x00,0x7D,0xFC,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x08,0x42,0x00,0x03,0x18,0xC6,0x00,0x03,0x39,0xCE,0x00,0x03,0x7B,0xFE,0x00,0x03,0xFF,0xFE,0x00,0x03,0xFF,0xFE,0x00,0x03,0xFF,0xFE,0x00,0x03,0xFF,0xFE,0x00,0x03,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // = +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x18,0x0F,0xC0,0x60,0x17,0xDF,0xEF,0xA0,0x10,0x71,0x38,0x20,0x10,0x31,0x30,0x20,0x10,0xD1,0x2C,0x20,0x1F,0x1F,0xE3,0xE0,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // > +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x0C,0x60,0x00,0x00,0x09,0x20,0x00,0x00,0x09,0xA0,0x00,0x00,0x08,0x20,0x00,0x00,0x0C,0x60,0x00,0x00,0x0F,0xE0,0x00,0x00,0x7F,0xFC,0x00,0x00,0x7F,0xFC,0x00,0x00,0x7F,0xFC,0x00,0x01,0xFF,0xFF,0x00,0x01,0xFC,0x7F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ? + +0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x0B,0xE0,0x00,0x00,0x08,0x78,0x00,0x00,0x08,0x08,0x00,0x00,0x0F,0x08,0x00,0x00,0x0B,0xE8,0x00,0x00,0x08,0x78,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x78,0x08,0x00,0x00,0xF8,0x08,0x00,0x01,0xF8,0x08,0x00,0x01,0xF0,0x78,0x00,0x01,0xE0,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // @ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x38,0x00,0x00,0x3E,0x7C,0x00,0x00,0x3E,0x7C,0x00,0x00,0x3E,0x7C,0x00,0x00,0x1C,0x38,0x00,0x01,0x00,0x00,0x00,0x01,0xCF,0xF0,0x00,0x01,0xFF,0xF0,0x00,0x01,0xFF,0xF0,0x00,0x01,0xFF,0xF0,0x00,0x01,0xCF,0xF0,0x00,0x01,0x07,0xE0,0x00,0x00,0x05,0xA0,0x00,0x00,0x0D,0xB0,0x00,0x00,0x09,0x90,0x00,0x00,0x19,0x98,0x00,0x00,0x11,0x88,0x00,0x00,0x31,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // A +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0xA0,0x14,0x00,0x01,0x40,0x14,0x00,0x01,0xC0,0x18,0x00,0x01,0x40,0x18,0x00,0x01,0x40,0x28,0x00,0x01,0xFF,0xF8,0x00,0x01,0x40,0x18,0x00,0x01,0x40,0x14,0x00,0x00,0xC0,0x1C,0x00,0x00,0xA0,0x14,0x00,0x00,0xA0,0x0C,0x00,0x00,0x7F,0xFC,0x00,0x00,0xA0,0x0E,0x00,0x00,0xE0,0x0C,0x00,0x00,0xE0,0x0C,0x00,0x00,0xC0,0x14,0x00,0x01,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // B +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x01,0xF6,0x00,0x00,0x3E,0xCE,0x00,0x03,0xF9,0xF0,0x00,0x02,0x3E,0x00,0x00,0x03,0xFF,0xFE,0x00,0x03,0x1C,0xE2,0x00,0x03,0xFF,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // C +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE0,0x00,0x00,0x82,0x20,0x00,0x00,0x82,0x20,0x00,0x00,0xFF,0x20,0x00,0x00,0x81,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x8E,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x80,0x20,0x00,0x00,0xFF,0xE0,0x00,0x00,0x87,0x20,0x00,0x00,0x85,0xE0,0x00,0x00,0xFD,0x30,0x00,0x00,0x15,0x2E,0x00,0x00,0x6F,0x2A,0x00,0x00,0x41,0xEE,0x00,0x00,0x3C,0x3C,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // D +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x57,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x2C,0x80,0x00,0x00,0x24,0x80,0x00,0x00,0x12,0x50,0x00,0x00,0x49,0xB8,0x00,0x00,0x44,0xF0,0x00,0x00,0x43,0x5C,0x00,0x00,0xA0,0xBF,0x80,0x07,0x1D,0x7F,0x80,0x00,0xA0,0x8F,0x80,0x00,0x40,0x07,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // E +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x30,0xC0,0x00,0x00,0x20,0x40,0x00,0x00,0x40,0x23,0x00,0x00,0x40,0x26,0x00,0x00,0x40,0x26,0x00,0x00,0x40,0x2E,0x00,0x00,0x20,0x5A,0x00,0x00,0x30,0xF1,0x00,0x00,0x0F,0x19,0x00,0x00,0x05,0x1E,0x00,0x00,0x77,0x3C,0x00,0x00,0x7C,0x7C,0x00,0x00,0xFF,0xF8,0x00,0x00,0x7F,0xF0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // F +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x20,0x00,0x00,0x06,0xD8,0x00,0x00,0x04,0xC8,0x00,0x00,0x0D,0xA8,0x00,0x00,0x15,0xFC,0x00,0x00,0x65,0xA6,0x00,0x00,0xE3,0x72,0x00,0x01,0xF6,0x9C,0x00,0x03,0xFB,0x67,0x00,0x00,0xFC,0x97,0x00,0x00,0x7E,0x3F,0x00,0x00,0x3D,0xFF,0x80,0x00,0x17,0x50,0x00,0x00,0x39,0xD8,0x00,0x00,0x0E,0xC8,0x00,0x00,0x04,0xC8,0x00,0x00,0x09,0xB8,0x00,0x00,0x1B,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // G +0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x00,0x00,0x10,0x10,0x00,0x04,0x08,0x20,0x00,0x02,0x0B,0xA0,0xC0,0x01,0x03,0xE1,0x00,0x00,0x83,0xF2,0x00,0x00,0x0F,0xFC,0x00,0x00,0x33,0xFE,0x00,0x08,0x61,0xFF,0x00,0x07,0x76,0x3F,0x00,0x00,0x78,0x0F,0x00,0x00,0x7C,0x0F,0x00,0x00,0x3E,0x06,0x00,0x00,0x9F,0xF8,0x00,0x01,0x0F,0xFA,0x00,0x06,0x07,0xF9,0x00,0x08,0x03,0xF8,0x80,0x00,0x1B,0xF8,0xC0,0x00,0x10,0x00,0x00,0x00,0x20,0x84,0x00,0x00,0x20,0x84,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, // H +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x7F,0xF8,0x00,0x00,0x64,0x98,0x00,0x00,0x64,0x98,0x00,0x00,0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0x00,0x07,0xFF,0xFF,0x80,0x01,0xF7,0xBE,0x00,0x01,0xF7,0xBE,0x00,0x00,0xE3,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // I +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0x00,0x0F,0xC7,0xFC,0x00,0x01,0xFF,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x01,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // J +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x10,0x44,0x00,0x00,0x20,0x24,0x00,0x00,0x47,0x16,0x00,0x00,0xC8,0x9E,0x00,0x03,0x50,0x4F,0x00,0x04,0x50,0x4F,0x00,0x02,0x90,0x4F,0x00,0x07,0x88,0x87,0x80,0x07,0x87,0x1F,0x80,0x07,0xE5,0x3F,0xC0,0x0F,0xF7,0x7F,0x00,0x0F,0xF8,0xFE,0x00,0x03,0xFD,0xFC,0x00,0x00,0x7D,0xF8,0x00,0x00,0x7F,0xF0,0x00,0x00,0x7F,0xF0,0x00,0x00,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // K +0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x04,0x40,0x00,0x00,0x04,0xC0,0x00,0x00,0x03,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x19,0xC0,0x00,0x00,0x37,0xE0,0x00,0x00,0x35,0x70,0x00,0x00,0x35,0x30,0x00,0x00,0x33,0x30,0x00,0x00,0x19,0x20,0x00,0x00,0x1C,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x0E,0x80,0x00,0x00,0x0E,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // L +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0x70,0x00,0x00,0x01,0x18,0x00,0x00,0x01,0x08,0x00,0x00,0x01,0x08,0x00,0x00,0x01,0x08,0x00,0x00,0x01,0x08,0x00,0x00,0x01,0x10,0x00,0x00,0x01,0x20,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // M +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0x80,0x04,0x00,0x00,0x80,0x04,0xFF,0xFC,0x80,0x05,0xFF,0xFE,0x80,0x05,0xFF,0x06,0x80,0x05,0xFF,0x06,0x80,0x05,0xFF,0x06,0x80,0x05,0xFF,0xF6,0x80,0x05,0xFF,0xF6,0x80,0x05,0xFF,0xF6,0x80,0x05,0xFF,0xFE,0x80,0x05,0xFF,0xFE,0x80,0x05,0xFF,0xFE,0x80,0x05,0xFF,0xFE,0x80,0x04,0x00,0x00,0x80,0x05,0x9B,0xC0,0x80,0x04,0x00,0x00,0x80,0x07,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // N +0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x01,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x03,0xFF,0xFE,0x00,0x02,0x4F,0x0E,0x00,0x02,0x4C,0xE6,0x00,0x02,0x7D,0xF6,0x00,0x02,0x4B,0xFA,0x00,0x02,0x4B,0xFA,0x00,0x02,0x7B,0xFA,0x00,0x02,0x7B,0xFA,0x00,0x02,0x7D,0xF6,0x00,0x02,0x7C,0xE6,0x00,0x02,0x7F,0x1E,0x00,0x01,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // O + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x16,0xD0,0x00,0x00,0x19,0x30,0x00,0x00,0x16,0xD0,0x00,0x00,0x16,0xD0,0x00,0x00,0x19,0x30,0x00,0x00,0x16,0xD0,0x00,0x00,0x3F,0xF8,0x00,0x00,0x30,0x18,0x00,0x00,0x3F,0xF8,0x00,0x00,0x3F,0xF8,0x00,0x00,0x3F,0xF8,0x00,0x00,0x2F,0xE8,0x00,0x00,0x20,0x08,0x00,0x00,0x1F,0xF0,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // P +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFC,0x00,0x07,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xC0,0x0F,0xC0,0x0F,0xC0,0x00,0x0F,0xC0,0x00,0x0F,0x9C,0xE7,0xC0,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,0x00,0x60,0x18,0x00,0x00,0xE0,0x1C,0x00,0x00,0xF0,0x3C,0x00,0x01,0xF0,0x3E,0x00,0x01,0xF8,0x7E,0x00,0x01,0xFF,0xFE,0x00,0x01,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Q +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x3C,0x10,0x00,0x01,0xF0,0x08,0x00,0x1E,0x3C,0x04,0x00,0xFC,0x3E,0x04,0x01,0x83,0x3C,0x04,0x01,0x01,0x38,0x04,0x02,0x06,0xB0,0x04,0x7E,0x18,0xB0,0x04,0x81,0x17,0xB0,0x04,0x80,0xE8,0xB0,0x04,0xC0,0x28,0xB0,0x04,0x5F,0x98,0x80,0x04,0x20,0x48,0x80,0x04,0x10,0x04,0x80,0x38,0x08,0x03,0x83,0xC0,0x04,0x01,0x9C,0x00,0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // R +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x1C,0x10,0x00,0x01,0xE0,0x08,0x00,0x0E,0x00,0x04,0x00,0x7C,0x00,0x04,0x01,0x83,0x00,0x04,0x01,0x01,0x00,0x04,0x02,0x00,0x80,0x14,0x7E,0x00,0x80,0xE4,0x81,0x00,0x8F,0xE4,0x80,0xC0,0xBF,0xE4,0xC0,0x20,0xB1,0xC4,0x5F,0x90,0x80,0xC4,0x20,0x48,0x80,0x04,0x10,0x04,0x80,0x38,0x08,0x02,0x83,0xC0,0x04,0x01,0x9C,0x00,0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // S +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x08,0x10,0x00,0x00,0x08,0x10,0x00,0x00,0x78,0x0F,0xFE,0x00,0x40,0x00,0x02,0x00,0x40,0x00,0x02,0x00,0x41,0xFF,0xFF,0xF8,0x41,0x00,0x00,0x08,0x42,0x00,0x00,0x10,0x42,0x00,0x00,0x10,0x44,0x00,0x00,0x20,0x48,0x00,0x00,0x20,0x48,0x00,0x00,0x40,0x50,0x00,0x00,0x80,0x50,0x00,0x00,0x80,0x60,0x00,0x01,0x00,0x60,0x00,0x01,0x00,0x7F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // T +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // U +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xF0,0x00,0x07,0x3F,0xF8,0x00,0x07,0x40,0x04,0x00,0x07,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xC0,0x07,0xF8,0x3F,0xC0,0x07,0xF0,0x1F,0xC0,0x07,0xE0,0x0F,0xC0,0x07,0xE0,0x0F,0xC0,0x07,0xE0,0x0F,0xC0,0x07,0xE0,0x0F,0xC0,0x07,0xE0,0x0F,0xC0,0x07,0xF0,0x1F,0xC0,0x07,0xF8,0x3F,0xC0,0x07,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // V +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x30,0x30,0x00,0x00,0x40,0x08,0x00,0x00,0x83,0x04,0x00,0x01,0x03,0x02,0x00,0x01,0x03,0x02,0x00,0x02,0x03,0x01,0x00,0x02,0x03,0x01,0x00,0x02,0x03,0xF9,0x00,0x02,0x03,0xF9,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x00,0x80,0x04,0x00,0x00,0x40,0x08,0x00,0x00,0x30,0x30,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // W +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x10,0x80,0x00,0x00,0x10,0x80,0x03,0xC0,0x10,0x80,0x1F,0xE0,0x0F,0xF0,0x7F,0x00,0x00,0x3F,0xF8,0x00,0x00,0x1F,0xE0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x3F,0xF8,0x00,0x0F,0xF0,0x7F,0x00,0x10,0x80,0x1F,0xC0,0x10,0x80,0x03,0xE0,0x10,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // X +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x18,0x30,0x00,0x00,0x33,0xD8,0x00,0x00,0x2C,0x68,0x00,0x00,0x50,0x14,0x00,0x00,0x50,0x14,0x00,0x00,0x50,0x14,0x00,0x00,0x50,0x14,0x00,0x00,0xFF,0xFE,0x00,0x00,0xFF,0xFE,0x00,0x00,0xFE,0xFE,0x00,0x00,0xFC,0x7E,0x00,0x00,0xFE,0xFE,0x00,0x00,0xFE,0xFE,0x00,0x00,0x7E,0xFC,0x00,0x00,0x3F,0xF8,0x00,0x00,0x1F,0xF0,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Y +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xFE,0x00,0x00,0x07,0xC7,0x00,0x00,0x07,0xC7,0x00,0x00,0x07,0xC7,0x00,0x00,0x07,0xFF,0x00,0x00,0x0F,0xFF,0x00,0x00,0x0F,0xFE,0x00,0x00,0x0F,0xFC,0x00,0x00,0x3F,0xF8,0x00,0x00,0x3F,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Z +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x20,0x10,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x08,0x00,0x00,0x80,0x04,0x00,0x01,0xFF,0xFF,0x00,0x03,0x9F,0xE7,0x00,0x03,0x0F,0xC3,0x00,0x03,0x0F,0xC3,0x00,0x03,0x9F,0xE7,0x00,0x03,0xFF,0xFF,0x00,0x00,0xE0,0x1C,0x00,0x00,0xE0,0x1C,0x00,0x00,0xE0,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // [ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x04,0x80,0x00,0x00,0x1F,0xE0,0x00,0x00,0x20,0x10,0x00,0x00,0x40,0x10,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x08,0x00,0x00,0x80,0x04,0x00,0x01,0xFF,0xFF,0x00,0x03,0x9F,0xE7,0x00,0x03,0x0F,0xC3,0x00,0x03,0x0F,0xC3,0x00,0x03,0x9F,0xE7,0x00,0x03,0xFF,0xFF,0x00,0x00,0xE0,0x1C,0x00,0x00,0xE0,0x1C,0x00,0x00,0xE0,0x1C,0x00,0x00,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,0xFC,0x00,0x00,0xE0,0x1C,0x00,0x01,0xE0,0x1E,0x00,0x01,0xFF,0xFE,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x01,0xFF,0xFE,0x00,0x01,0xCF,0xCE,0x00,0x01,0x87,0x86,0x00,0x01,0x87,0x86,0x00,0x01,0xCF,0xCE,0x00,0x01,0xFF,0xFE,0x00,0x00,0x70,0x38,0x00,0x00,0x70,0x38,0x00,0x00,0x70,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,0x7F,0xFC,0x00,0x00,0x7F,0xFC,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x7F,0xFC,0x00,0x00,0x47,0x8C,0x00,0x00,0x47,0x8C,0x00,0x00,0x47,0x8C,0x00,0x00,0x7F,0xFC,0x00,0x00,0x30,0x18,0x00,0x00,0x20,0x08,0x00,0x00,0x40,0x04,0x00,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x80,0x00,0x01,0x07,0x80,0x00,0x01,0x87,0xC0,0x00,0x01,0x87,0xC0,0x00,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x01,0x87,0xC0,0x00,0x01,0x87,0x80,0x00,0x01,0x07,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // _ + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xC0,0x00,0x0F,0xFF,0xC0,0x00,0x0F,0xFF,0xC0,0x00,0x0F,0xFF,0xFF,0x00,0x0F,0xFF,0xF8,0x80,0x0F,0xFF,0xF8,0x80,0x0F,0xFF,0xF8,0x80,0x0F,0xFF,0xF8,0x40,0x00,0x00,0x3F,0xC0,0x0F,0xFF,0xFF,0xC0,0x0F,0x01,0xF9,0xC0,0x0E,0xC6,0xF6,0xC0,0x0D,0xEF,0x6F,0x40,0x01,0xEF,0x0F,0x00,0x00,0xC6,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ` +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x06,0x60,0x00,0x00,0x08,0x20,0x00,0x00,0x1E,0x20,0x00,0x00,0x6E,0x40,0x00,0x00,0xB5,0x80,0x00,0x03,0x4B,0x00,0x00,0x04,0x94,0x00,0x00,0x1B,0x68,0x00,0x00,0x24,0xB0,0x00,0x00,0x5B,0x40,0x00,0x01,0xA5,0x80,0x00,0x01,0x5A,0x00,0x00,0x02,0x6C,0x00,0x00,0x04,0x50,0x00,0x00,0x0C,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // a +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x33,0x80,0x00,0x00,0x47,0x80,0x00,0x00,0x8E,0x63,0xF0,0x01,0x1C,0x1E,0x70,0x01,0x38,0x02,0x70,0x02,0x38,0x02,0x70,0x02,0x7B,0x02,0x70,0x04,0x7C,0x02,0x70,0x04,0x80,0x02,0x70,0x07,0x80,0x06,0x70,0x0B,0x7F,0xFB,0xF0,0x0A,0x00,0x00,0x70,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // b +0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x05,0xF0,0x00,0x00,0x0F,0x60,0x00,0x00,0x0D,0xC0,0x00,0x00,0x0F,0x60,0x00,0x00,0x0B,0xC0,0x00,0x00,0x16,0x80,0x00,0x00,0x12,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // c +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFC,0x00,0x00,0x18,0x1C,0x00,0x00,0x3F,0xE4,0x00,0x00,0x20,0x24,0x00,0x00,0x27,0x24,0x00,0x00,0x20,0x24,0x00,0x00,0x20,0x24,0x00,0x00,0x20,0x24,0x00,0x00,0x20,0x24,0x00,0x00,0x20,0x24,0x00,0x00,0x3F,0xE4,0x00,0x00,0x20,0x24,0x00,0x00,0x27,0x24,0x00,0x00,0x20,0x24,0x00,0x00,0x20,0x24,0x00,0x00,0x20,0x28,0x00,0x00,0x20,0x30,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // d +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x20,0x10,0x00,0x00,0x20,0x10,0x00,0x00,0x30,0x50,0x00,0x00,0x2F,0xD0,0x00,0x00,0x17,0xE0,0x00,0x00,0x13,0xA0,0x00,0x00,0x0B,0x40,0x00,0x00,0x05,0x80,0x00,0x00,0x05,0x80,0x00,0x00,0x09,0x40,0x00,0x00,0x11,0x20,0x00,0x00,0x11,0x20,0x00,0x00,0x21,0x10,0x00,0x00,0x27,0x90,0x00,0x00,0x2F,0xD0,0x00,0x00,0x2F,0xD0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // e +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFD,0xFF,0x00,0x0C,0x07,0x01,0x80,0x3C,0x02,0x01,0xE0,0x34,0x02,0x01,0x60,0x34,0x02,0x01,0x60,0x34,0x02,0x01,0x60,0x34,0x02,0x01,0x60,0x34,0x02,0x01,0x60,0x34,0x02,0x01,0x60,0x34,0x02,0x01,0x60,0x34,0x02,0x01,0x60,0x34,0x02,0x01,0x60,0x34,0x02,0x01,0x60,0x37,0xFA,0xFF,0x60,0x38,0x07,0x01,0x60,0x38,0x02,0x00,0xE0,0x3F,0xFA,0xFF,0xE0,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // f +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x3E,0x00,0x00,0x80,0x24,0x00,0x00,0x80,0x28,0x00,0x00,0x80,0x30,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // g +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0xBF,0x82,0x00,0x00,0x80,0x02,0x00,0x00,0x80,0x02,0x00,0x00,0xBF,0xFA,0x00,0x00,0xBF,0xFA,0x00,0x00,0x80,0x02,0x00,0x00,0xBF,0xFA,0x00,0x00,0x80,0x02,0x00,0x00,0xBF,0xFA,0x00,0x00,0x80,0x02,0x00,0x00,0xBF,0xBE,0x00,0x00,0x80,0x24,0x00,0x00,0x80,0x28,0x00,0x00,0x80,0x30,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // h +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x80,0x00,0x08,0x00,0x80,0x00,0x08,0x00,0x80,0x00,0x7F,0xFC,0x80,0x00,0x40,0x04,0x80,0x01,0xFF,0xF4,0x80,0x01,0x00,0x14,0x80,0x01,0x00,0x14,0x80,0x01,0x7F,0x94,0x80,0x01,0x00,0x14,0x80,0x01,0x7F,0x94,0x80,0x01,0x00,0x14,0x80,0x01,0x7F,0x94,0x80,0x01,0x00,0x14,0x80,0x01,0x00,0x14,0x80,0x01,0x7F,0x94,0x80,0x01,0x00,0x14,0x80,0x01,0x7F,0x97,0x80,0x01,0x00,0x14,0x00,0x01,0x7E,0x14,0x00,0x01,0x00,0x1C,0x00,0x01,0xFF,0xF0,0x00, // i +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xE0,0x08,0x00,0x00,0x20,0x08,0x00,0x03,0xA0,0x09,0xFC,0x03,0xA0,0x08,0x00,0x03,0xA0,0x09,0xFC,0x03,0xA0,0x08,0x00,0x03,0xA0,0x08,0x00,0x00,0x20,0x08,0x00,0x00,0x20,0x08,0x00,0x00,0x20,0x09,0xFF,0xF8,0x20,0x08,0x00,0x00,0x20,0x09,0xFF,0xF8,0x20,0x08,0x00,0x00,0x20,0x09,0xFF,0xF8,0x20,0x08,0x00,0x00,0x20,0x08,0x00,0x00,0x20,0x0F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // j +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xE0,0x0C,0x00,0x00,0x60,0x0A,0x00,0x00,0xA0,0x09,0x00,0x01,0x20,0x08,0x80,0x02,0x20,0x08,0x40,0x04,0x20,0x08,0x20,0x08,0x20,0x08,0x10,0x10,0x20,0x08,0x08,0x20,0x20,0x08,0x0C,0x60,0x20,0x08,0x1A,0xB0,0x20,0x08,0x23,0x88,0x20,0x08,0x40,0x04,0x20,0x08,0x80,0x02,0x20,0x09,0x00,0x01,0x20,0x0A,0x00,0x00,0xA0,0x0C,0x00,0x00,0x60,0x0F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // k +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFC,0x00,0x01,0xE0,0x1E,0x00,0x01,0xE0,0xDE,0x00,0x01,0xE0,0xDE,0x00,0x01,0xE0,0xDE,0x00,0x01,0xE0,0xDE,0x00,0x01,0xE0,0x1E,0x00,0x01,0xFF,0xFE,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x01,0x80,0x06,0x00,0x01,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // l +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x03,0x00,0x02,0x00,0x02,0x00,0x03,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x00,0x03,0xF8,0xFF,0x00,0x03,0xF0,0x7F,0x00,0x03,0xF0,0x7F,0x00,0x03,0xF0,0x7F,0x00,0x03,0xF8,0xFF,0x00,0x03,0xFF,0xFF,0x00,0x03,0xFC,0xFF,0x00,0x03,0xFC,0xFF,0x00,0x03,0xFC,0xFF,0x00,0x03,0xFC,0xFF,0x00,0x03,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // m +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x04,0xF8,0x7C,0x80,0x04,0x8C,0xC4,0x80,0x05,0x8C,0xC6,0x80,0x05,0x8C,0xC6,0x80,0x04,0xFC,0xFC,0x80,0x04,0xF8,0x7C,0x80,0x07,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0x80,0x06,0xFF,0xFD,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // n +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0x30,0x00,0x00,0x7E,0x08,0x00,0x00,0xFE,0x04,0x00,0x01,0x78,0x02,0x00,0x01,0xF7,0x82,0x00,0x02,0xF8,0x61,0x00,0x03,0xF0,0x31,0x00,0x03,0xE3,0x11,0x00,0x03,0xE3,0x1F,0x00,0x02,0x23,0x1F,0x00,0x02,0x10,0x3F,0x00,0x01,0x18,0x7E,0x00,0x01,0x07,0xFE,0x00,0x00,0x81,0xFC,0x00,0x00,0x41,0xF8,0x00,0x00,0x31,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // o + +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x31,0xF0,0x00,0x00,0x5F,0xF8,0x00,0x00,0xA7,0xFC,0x00,0x01,0xD9,0xFE,0x00,0x01,0xA7,0xFE,0x00,0x01,0xD8,0x3E,0x00,0x03,0xA0,0x1F,0x00,0x03,0xA3,0x1F,0x00,0x03,0xE3,0x1F,0x00,0x03,0xE3,0x1D,0x00,0x01,0xE0,0x2E,0x00,0x01,0xF0,0x3A,0x00,0x01,0xFF,0xEA,0x00,0x00,0xFE,0x74,0x00,0x00,0x7F,0xC8,0x00,0x00,0x3E,0x30,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // p +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFE,0x00,0x01,0x00,0x02,0x00,0x01,0x7F,0xFE,0x00,0x01,0x40,0x06,0x00,0x01,0x40,0x06,0x00,0x01,0x40,0x06,0x00,0x01,0x40,0x06,0x00,0x01,0x40,0x06,0x00,0x01,0x40,0x06,0x00,0x01,0x40,0x06,0x00,0x01,0x7F,0xFE,0x00,0x01,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x01,0x00,0x01,0x00,0x03,0x6F,0x79,0x80,0x02,0xDF,0xBC,0x80,0x02,0x00,0x00,0x80,0x03,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // q +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xFE,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xC0,0x10,0x00,0x00,0x40,0x10,0x00,0x00,0x40,0x17,0xBD,0xED,0xC0,0x10,0x00,0x00,0x40,0x17,0xBD,0xED,0xC0,0x10,0x00,0x00,0x40,0x17,0x7E,0xED,0xC0,0x10,0x00,0x00,0x40,0x10,0x00,0x00,0x40,0x1F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // r +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x7F,0x00,0x00,0x40,0x89,0x80,0x00,0x40,0x88,0x80,0x03,0x80,0xFF,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0xC1,0x80,0x00,0x00,0x63,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // s +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x00,0x01,0x00,0x01,0x00,0x01,0x3F,0xF9,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x09,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // t +0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0xC0,0x00,0x00,0x0B,0xA0,0x00,0x00,0x0B,0xA0,0x00,0x00,0x09,0x20,0x00,0x00,0x09,0x20,0x00,0x00,0x07,0xC0,0x00,0x00,0x05,0x20,0x00,0x00,0x1A,0x20,0x00,0x00,0x13,0x10,0x00,0x00,0x12,0x90,0x00,0x00,0x1C,0x78,0x00,0x00,0x1C,0x38,0x00,0x00,0x1C,0x38,0x00,0x00,0x1C,0x38,0x00,0x00,0x1C,0x38,0x00,0x00,0x0C,0x30,0x00,0x00,0x0E,0x70,0x00,0x00,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // u +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x70,0x00,0x00,0x25,0x78,0x00,0x00,0x27,0xF8,0x00,0x00,0x1F,0xF0,0x00,0x00,0x7F,0xE0,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x80,0x00,0x01,0xFC,0x80,0x00,0x00,0xF2,0x40,0x00,0x00,0xE2,0x20,0x00,0x00,0x01,0x20,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // v +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x47,0x80,0x00,0x00,0x88,0x00,0x00,0x03,0x07,0x80,0x01,0xEC,0x21,0x00,0x02,0x10,0xDE,0x00,0x07,0x83,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0xC8,0x00,0x00,0x07,0x90,0x00,0x00,0x02,0x10,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // w +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x3F,0x80,0x00,0x00,0x7F,0x80,0x00,0x00,0x7F,0x00,0x00,0x00,0x7E,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0x60,0x00,0x00,0x02,0xA0,0x00,0x00,0x05,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0xD0,0x00,0x00,0x01,0x20,0x00,0x00,0x02,0x20,0x00,0x00,0x02,0x40,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // x +0x00,0x0F,0xFC,0x00,0x00,0x08,0x06,0x00,0x00,0x0B,0xF7,0x00,0x00,0x08,0x00,0x80,0x00,0x0B,0xFE,0x80,0x00,0x08,0x00,0x80,0x07,0xFB,0xFE,0xC0,0x06,0x48,0x00,0xC0,0x06,0x4B,0x80,0xC0,0x06,0x48,0x00,0xC0,0x06,0x5F,0xFF,0xC0,0x06,0x50,0x00,0x40,0x06,0x50,0x6F,0x40,0x06,0x50,0x6F,0x40,0x06,0x50,0x6F,0x40,0x06,0x57,0x6F,0x40,0x06,0x57,0x6F,0x40,0x06,0x57,0x6F,0x40,0x07,0xD0,0x00,0x40,0x07,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // y +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x80,0x38,0x00,0x00,0x80,0x3C,0x00,0x00,0x80,0x3C,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x03,0xFF,0xFF,0x00,0x02,0x00,0x01,0x00,0x0F,0xFF,0xFF,0xC0,0x09,0x24,0x80,0x40,0x09,0x24,0x80,0x40,0x09,0xFF,0x80,0x40,0x08,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x0F,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // z +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x7A,0x20,0x00,0x00,0x7A,0x20,0x00,0x00,0xFE,0x3C,0x00,0x00,0x80,0x04,0x00,0x03,0xBF,0x77,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x03,0xFF,0xFF,0x00,0x01,0xFF,0xFE,0x00,0x01,0xFF,0xFC,0x00,0x01,0xFF,0xFC,0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // { +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x0D,0x80,0x00,0x00,0x1A,0xC0,0x00,0x00,0x15,0x40,0x00,0x00,0x17,0x40,0x00,0x00,0x12,0x40,0x00,0x00,0x67,0x30,0x00,0x00,0xD2,0x58,0x00,0x01,0x97,0x4C,0x00,0x02,0x17,0x42,0x00,0x02,0x12,0x42,0x00,0x02,0x18,0xC2,0x00,0x03,0xE7,0x3E,0x00,0x03,0xE7,0x3E,0x00,0x00,0x3D,0xE0,0x00,0x00,0x3D,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0xC0,0x00,0x00,0x3D,0xE0,0x00,0x00,0x0A,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00, // | +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x77,0xFF,0xC0,0x00,0x37,0xFD,0xC0,0x00,0x2F,0xF8,0x00,0x03,0xEF,0xE7,0x00,0x04,0x67,0xE8,0x80,0x08,0x93,0xD0,0x40,0x09,0x91,0xFE,0x40,0x0B,0xD0,0xFE,0x40,0x09,0x10,0x10,0x40,0x04,0x20,0x08,0x80,0x03,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // } +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x34,0x30,0x00,0x03,0xE4,0x4F,0x80,0x06,0x72,0x5C,0xC0,0x0C,0x5A,0x94,0x60,0x08,0xC9,0xA6,0x20,0x08,0x89,0xFE,0x20,0x08,0x08,0x20,0x20,0x0C,0x10,0x10,0x60,0x06,0x30,0x18,0xC0,0x03,0xE0,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~ +}; diff --git a/libraries/UTFT_Buttons/hardware/arm/HW_ARM_defines.h b/libraries/UTFT_Buttons/hardware/arm/HW_ARM_defines.h new file mode 100644 index 0000000..d97e072 --- /dev/null +++ b/libraries/UTFT_Buttons/hardware/arm/HW_ARM_defines.h @@ -0,0 +1 @@ +#define bitmapdatatype unsigned short* diff --git a/libraries/UTFT_Buttons/hardware/avr/HW_AVR_defines.h b/libraries/UTFT_Buttons/hardware/avr/HW_AVR_defines.h new file mode 100644 index 0000000..767d242 --- /dev/null +++ b/libraries/UTFT_Buttons/hardware/avr/HW_AVR_defines.h @@ -0,0 +1 @@ +#define bitmapdatatype unsigned int* diff --git a/libraries/UTFT_Buttons/hardware/pic32/HW_PIC32_defines.h b/libraries/UTFT_Buttons/hardware/pic32/HW_PIC32_defines.h new file mode 100644 index 0000000..05a1580 --- /dev/null +++ b/libraries/UTFT_Buttons/hardware/pic32/HW_PIC32_defines.h @@ -0,0 +1,2 @@ +#define bitmapdatatype unsigned short* + diff --git a/libraries/UTFT_Buttons/keywords.txt b/libraries/UTFT_Buttons/keywords.txt new file mode 100644 index 0000000..31c2cbf --- /dev/null +++ b/libraries/UTFT_Buttons/keywords.txt @@ -0,0 +1,22 @@ +UTFT_Buttons KEYWORD1 + +addButton KEYWORD2 +drawButtons KEYWORD2 +drawButton KEYWORD2 +enableButton KEYWORD2 +disableButton KEYWORD2 +relabelButton KEYWORD2 +buttonEnabled KEYWORD2 +deleteButton KEYWORD2 +deleteAllButtons KEYWORD2 +checkButtons KEYWORD2 +setTextFont KEYWORD2 +setSymbolFont KEYWORD2 +setButtonColors KEYWORD2 + +BUTTON_DISABLED LITERAL1 +BUTTON_SYMBOL LITERAL1 +BUTTON_SYMBOL_REP_3X LITERAL1 +BUTTON_BITMAP LITERAL1 +BUTTON_NO_BORDER LITERAL1 +BUTTON_UNUSED LITERAL1 diff --git a/libraries/UTFT_Buttons/version.txt b/libraries/UTFT_Buttons/version.txt new file mode 100644 index 0000000..877994d --- /dev/null +++ b/libraries/UTFT_Buttons/version.txt @@ -0,0 +1,3 @@ +Version: + 1.0 24 May 2013 - initial release + 1.01 08 Sep 2014 - fixed compatibility-issues with Arduino 1.5.7 diff --git a/libraries/UTouch/License - CC BY-NC-SA 3.0 - Legal.pdf b/libraries/UTouch/License - CC BY-NC-SA 3.0 - Legal.pdf new file mode 100644 index 0000000..ed326c9 Binary files /dev/null and b/libraries/UTouch/License - CC BY-NC-SA 3.0 - Legal.pdf differ diff --git a/libraries/UTouch/License - CC BY-NC-SA 3.0 - Summary.pdf b/libraries/UTouch/License - CC BY-NC-SA 3.0 - Summary.pdf new file mode 100644 index 0000000..b35e677 Binary files /dev/null and b/libraries/UTouch/License - CC BY-NC-SA 3.0 - Summary.pdf differ diff --git a/libraries/UTouch/UTouch.cpp b/libraries/UTouch/UTouch.cpp new file mode 100644 index 0000000..f5aad74 --- /dev/null +++ b/libraries/UTouch/UTouch.cpp @@ -0,0 +1,262 @@ +/* + UTouch.cpp - Arduino/chipKit library support for Color TFT LCD Touch screens + Copyright (C)2010-2014 Henning Karlsen. All right reserved + + Basic functionality of this library are based on the demo-code provided by + ITead studio. You can find the latest version of the library at + http://www.henningkarlsen.com/electronics + + If you make any modifications or improvements to the code, I would appreciate + that you share the code with me so that I might include it in the next release. + I can be contacted through http://www.henningkarlsen.com/electronics/contact.php + + This library is free software; you can redistribute it and/or + modify it under the terms of the CC BY-NC-SA 3.0 license. + Please see the included documents for further information. + + Commercial use of this library requires you to buy a license that + will allow commercial use. This includes using the library, + modified or not, as a tool to sell products. + + The license applies to all part of the library including the + examples and tools supplied with the library. +*/ + +#include "UTouch.h" +#include "UTouchCD.h" + +#if defined(__AVR__) + #include "hardware/avr/HW_AVR.inc" +#elif defined(__PIC32MX__) + #include "hardware/pic32/HW_PIC32.inc" +#elif defined(__arm__) + #include "hardware/arm/HW_ARM.inc" +#endif + +UTouch::UTouch(byte tclk, byte tcs, byte din, byte dout, byte irq) +{ + T_CLK = tclk; + T_CS = tcs; + T_DIN = din; + T_DOUT = dout; + T_IRQ = irq; +} + +void UTouch::InitTouch(byte orientation) +{ + orient = orientation; + _default_orientation = CAL_S>>31; + touch_x_left = (CAL_X>>14) & 0x3FFF; + touch_x_right = CAL_X & 0x3FFF; + touch_y_top = (CAL_Y>>14) & 0x3FFF; + touch_y_bottom = CAL_Y & 0x3FFF; + disp_x_size = (CAL_S>>12) & 0x0FFF; + disp_y_size = CAL_S & 0x0FFF; + prec = 10; + + P_CLK = portOutputRegister(digitalPinToPort(T_CLK)); + B_CLK = digitalPinToBitMask(T_CLK); + P_CS = portOutputRegister(digitalPinToPort(T_CS)); + B_CS = digitalPinToBitMask(T_CS); + P_DIN = portOutputRegister(digitalPinToPort(T_DIN)); + B_DIN = digitalPinToBitMask(T_DIN); + P_DOUT = portInputRegister(digitalPinToPort(T_DOUT)); + B_DOUT = digitalPinToBitMask(T_DOUT); + P_IRQ = portInputRegister(digitalPinToPort(T_IRQ)); + B_IRQ = digitalPinToBitMask(T_IRQ); + + pinMode(T_CLK, OUTPUT); + pinMode(T_CS, OUTPUT); + pinMode(T_DIN, OUTPUT); + pinMode(T_DOUT, INPUT); + pinMode(T_IRQ, OUTPUT); + + sbi(P_CS, B_CS); + sbi(P_CLK, B_CLK); + sbi(P_DIN, B_DIN); + sbi(P_IRQ, B_IRQ); +} + +void UTouch::read() +{ + unsigned long tx=0, temp_x=0; + unsigned long ty=0, temp_y=0; + unsigned long minx=99999, maxx=0; + unsigned long miny=99999, maxy=0; + int datacount=0; + + cbi(P_CS, B_CS); + + pinMode(T_IRQ, INPUT); + for (int i=0; i0) and (temp_x<4096) and (temp_y>0) and (temp_y<4096)) + { + tx+=temp_x; + ty+=temp_y; + if (prec>5) + { + if (temp_xmaxx) + maxx=temp_x; + if (temp_ymaxy) + maxy=temp_y; + } + datacount++; + } + } + } + } + pinMode(T_IRQ, OUTPUT); + + if (prec>5) + { + tx = tx-(minx+maxx); + ty = ty-(miny+maxy); + datacount -= 2; + } + + sbi(P_CS, B_CS); + if ((datacount==(prec-2)) or (datacount==PREC_LOW)) + { + if (orient == _default_orientation) + { + TP_X=ty/datacount; + TP_Y=tx/datacount; + } + else + { + TP_X=tx/datacount; + TP_Y=ty/datacount; + } + } + else + { + TP_X=-1; + TP_Y=-1; + } +} + +bool UTouch::dataAvailable() +{ + bool avail; + pinMode(T_IRQ, INPUT); + avail = !(rbi(P_IRQ, B_IRQ)); + pinMode(T_IRQ, OUTPUT); + return avail; +} + +int16_t UTouch::getX() +{ + long c; + + if ((TP_X==-1) or (TP_Y==-1)) + return -1; + if (orient == _default_orientation) + { + c = long(long(TP_X - touch_x_left) * (disp_x_size)) / long(touch_x_right - touch_x_left); + if (c<0) + c = 0; + if (c>disp_x_size) + c = disp_x_size; + } + else + { + if (_default_orientation == PORTRAIT) + c = long(long(TP_X - touch_y_top) * (-disp_y_size)) / long(touch_y_bottom - touch_y_top) + long(disp_y_size); + else + c = long(long(TP_X - touch_y_top) * (disp_y_size)) / long(touch_y_bottom - touch_y_top); + if (c<0) + c = 0; + if (c>disp_y_size) + c = disp_y_size; + } + return c; +} + +int16_t UTouch::getY() +{ + int c; + + if ((TP_X==-1) or (TP_Y==-1)) + return -1; + if (orient == _default_orientation) + { + c = long(long(TP_Y - touch_y_top) * (disp_y_size)) / long(touch_y_bottom - touch_y_top); + if (c<0) + c = 0; + if (c>disp_y_size) + c = disp_y_size; + } + else + { + if (_default_orientation == PORTRAIT) + c = long(long(TP_Y - touch_x_left) * (disp_x_size)) / long(touch_x_right - touch_x_left); + else + c = long(long(TP_Y - touch_x_left) * (-disp_x_size)) / long(touch_x_right - touch_x_left) + long(disp_x_size); + if (c<0) + c = 0; + if (c>disp_x_size) + c = disp_x_size; + } + return c; +} + +void UTouch::setPrecision(byte precision) +{ + switch (precision) + { + case PREC_LOW: + prec=1; // DO NOT CHANGE! + break; + case PREC_MEDIUM: + prec=12; // Iterations + 2 + break; + case PREC_HI: + prec=27; // Iterations + 2 + break; + case PREC_EXTREME: + prec=102; // Iterations + 2 + break; + default: + prec=12; // Iterations + 2 + break; + } +} + +void UTouch::calibrateRead() +{ + unsigned long tx=0; + unsigned long ty=0; + + cbi(P_CS, B_CS); + + touch_WriteData(0x90); + pulse_high(P_CLK, B_CLK); + tx=touch_ReadData(); + + touch_WriteData(0xD0); + pulse_high(P_CLK, B_CLK); + ty=touch_ReadData(); + + sbi(P_CS, B_CS); + + TP_X=ty; + TP_Y=tx; +} + diff --git a/libraries/UTouch/UTouch.h b/libraries/UTouch/UTouch.h new file mode 100644 index 0000000..a087db7 --- /dev/null +++ b/libraries/UTouch/UTouch.h @@ -0,0 +1,80 @@ +/* + UTouch.h - Arduino/chipKit library support for Color TFT LCD Touch screens + Copyright (C)2010-2014 Henning Karlsen. All right reserved + + Basic functionality of this library are based on the demo-code provided by + ITead studio. You can find the latest version of the library at + http://www.henningkarlsen.com/electronics + + If you make any modifications or improvements to the code, I would appreciate + that you share the code with me so that I might include it in the next release. + I can be contacted through http://www.henningkarlsen.com/electronics/contact.php + + This library is free software; you can redistribute it and/or + modify it under the terms of the CC BY-NC-SA 3.0 license. + Please see the included documents for further information. + + Commercial use of this library requires you to buy a license that + will allow commercial use. This includes using the library, + modified or not, as a tool to sell products. + + The license applies to all part of the library including the + examples and tools supplied with the library. +*/ + +#ifndef UTouch_h +#define UTouch_h + +#define UTOUCH_VERSION 124 + +#if defined(__AVR__) + #include "Arduino.h" + #include "hardware/avr/HW_AVR_defines.h" +#elif defined(__PIC32MX__) + #include "WProgram.h" + #include "hardware/pic32/HW_PIC32_defines.h" +#elif defined(__arm__) + #include "Arduino.h" + #include "hardware/arm/HW_ARM_defines.h" +#endif + +#define PORTRAIT 0 +#define LANDSCAPE 1 + +#define PREC_LOW 1 +#define PREC_MEDIUM 2 +#define PREC_HI 3 +#define PREC_EXTREME 4 + +class UTouch +{ + public: + int16_t TP_X ,TP_Y; + + UTouch(byte tclk, byte tcs, byte tdin, byte dout, byte irq); + + void InitTouch(byte orientation = LANDSCAPE); + void read(); + bool dataAvailable(); + int16_t getX(); + int16_t getY(); + void setPrecision(byte precision); + + void calibrateRead(); + + private: + regtype *P_CLK, *P_CS, *P_DIN, *P_DOUT, *P_IRQ; + regsize B_CLK, B_CS, B_DIN, B_DOUT, B_IRQ; + byte T_CLK, T_CS, T_DIN, T_DOUT, T_IRQ; + long _default_orientation; + byte orient; + byte prec; + byte display_model; + long disp_x_size, disp_y_size, default_orientation; + long touch_x_left, touch_x_right, touch_y_top, touch_y_bottom; + + void touch_WriteData(byte data); + word touch_ReadData(); +}; + +#endif \ No newline at end of file diff --git a/libraries/UTouch/UTouch.pdf b/libraries/UTouch/UTouch.pdf new file mode 100644 index 0000000..9c25e83 Binary files /dev/null and b/libraries/UTouch/UTouch.pdf differ diff --git a/libraries/UTouch/UTouchCD.h b/libraries/UTouch/UTouchCD.h new file mode 100644 index 0000000..de55930 --- /dev/null +++ b/libraries/UTouch/UTouchCD.h @@ -0,0 +1,21 @@ +// UTouchCD.h +// ---------- +// +// Since there are slight deviations in all touch screens you should run a +// calibration on your display module. Run the UTouch_Calibration sketch +// that came with this library and follow the on-screen instructions to +// update this file. +// +// Remember that is you have multiple display modules they will probably +// require different calibration data so you should run the calibration +// every time you switch to another module. +// You can, of course, store calibration data for all your modules here +// and comment out the ones you dont need at the moment. +// + +// These calibration settings works with my ITDB02-3.2S. +// They MIGHT work on your display module, but you should run the +// calibration sketch anyway. +#define CAL_X 0x00378F66UL +#define CAL_Y 0x03C34155UL +#define CAL_S 0x000EF13FUL diff --git a/libraries/UTouch/UTouch_Supported_display_modules.pdf b/libraries/UTouch/UTouch_Supported_display_modules.pdf new file mode 100644 index 0000000..8f21b39 Binary files /dev/null and b/libraries/UTouch/UTouch_Supported_display_modules.pdf differ diff --git a/libraries/UTouch/examples/Arduino/UTouch_ButtonTest/UTouch_ButtonTest.ino b/libraries/UTouch/examples/Arduino/UTouch_ButtonTest/UTouch_ButtonTest.ino new file mode 100644 index 0000000..35b842c --- /dev/null +++ b/libraries/UTouch/examples/Arduino/UTouch_ButtonTest/UTouch_ButtonTest.ino @@ -0,0 +1,253 @@ +// UTouch_ButtonTest (C)2010-2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a quick demo of how create and use buttons. +// +// This program requires the UTFT library. +// +// It is assumed that the display module is connected to an +// appropriate shield or that you know how to change the pin +// numbers in the setup. +// + +#include +#include + +// Initialize display +// ------------------ +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino Uno/2009 Shield : ,19,18,17,16 +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +// Initialize touchscreen +// ---------------------- +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino Uno/2009 Shield : 15,10,14, 9, 8 +// Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2 +// CTE TFT LCD/SD Shield for Arduino Due : 6, 5, 4, 3, 2 +// Teensy 3.x TFT Test Board : 26,31,27,28,29 +// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30 +// +UTouch myTouch( 6, 5, 4, 3, 2); + +// Declare which fonts we will be using +extern uint8_t BigFont[]; + +int x, y; +char stCurrent[20]=""; +int stCurrentLen=0; +char stLast[20]=""; + +/************************* +** Custom functions ** +*************************/ + +void drawButtons() +{ +// Draw the upper row of buttons + for (x=0; x<5; x++) + { + myGLCD.setColor(0, 0, 255); + myGLCD.fillRoundRect (10+(x*60), 10, 60+(x*60), 60); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (10+(x*60), 10, 60+(x*60), 60); + myGLCD.printNumI(x+1, 27+(x*60), 27); + } +// Draw the center row of buttons + for (x=0; x<5; x++) + { + myGLCD.setColor(0, 0, 255); + myGLCD.fillRoundRect (10+(x*60), 70, 60+(x*60), 120); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (10+(x*60), 70, 60+(x*60), 120); + if (x<4) + myGLCD.printNumI(x+6, 27+(x*60), 87); + } + myGLCD.print("0", 267, 87); +// Draw the lower row of buttons + myGLCD.setColor(0, 0, 255); + myGLCD.fillRoundRect (10, 130, 150, 180); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (10, 130, 150, 180); + myGLCD.print("Clear", 40, 147); + myGLCD.setColor(0, 0, 255); + myGLCD.fillRoundRect (160, 130, 300, 180); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (160, 130, 300, 180); + myGLCD.print("Enter", 190, 147); + myGLCD.setBackColor (0, 0, 0); +} + +void updateStr(int val) +{ + if (stCurrentLen<20) + { + stCurrent[stCurrentLen]=val; + stCurrent[stCurrentLen+1]='\0'; + stCurrentLen++; + myGLCD.setColor(0, 255, 0); + myGLCD.print(stCurrent, LEFT, 224); + } + else + { + myGLCD.setColor(255, 0, 0); + myGLCD.print("BUFFER FULL!", CENTER, 192); + delay(500); + myGLCD.print(" ", CENTER, 192); + delay(500); + myGLCD.print("BUFFER FULL!", CENTER, 192); + delay(500); + myGLCD.print(" ", CENTER, 192); + myGLCD.setColor(0, 255, 0); + } +} + +// Draw a red frame while a button is touched +void waitForIt(int x1, int y1, int x2, int y2) +{ + myGLCD.setColor(255, 0, 0); + myGLCD.drawRoundRect (x1, y1, x2, y2); + while (myTouch.dataAvailable()) + myTouch.read(); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (x1, y1, x2, y2); +} + +/************************* +** Required functions ** +*************************/ + +void setup() +{ +// Initial setup + myGLCD.InitLCD(); + myGLCD.clrScr(); + + myTouch.InitTouch(); + myTouch.setPrecision(PREC_MEDIUM); + + myGLCD.setFont(BigFont); + myGLCD.setBackColor(0, 0, 255); + drawButtons(); +} + +void loop() +{ + while (true) + { + if (myTouch.dataAvailable()) + { + myTouch.read(); + x=myTouch.getX(); + y=myTouch.getY(); + + if ((y>=10) && (y<=60)) // Upper row + { + if ((x>=10) && (x<=60)) // Button: 1 + { + waitForIt(10, 10, 60, 60); + updateStr('1'); + } + if ((x>=70) && (x<=120)) // Button: 2 + { + waitForIt(70, 10, 120, 60); + updateStr('2'); + } + if ((x>=130) && (x<=180)) // Button: 3 + { + waitForIt(130, 10, 180, 60); + updateStr('3'); + } + if ((x>=190) && (x<=240)) // Button: 4 + { + waitForIt(190, 10, 240, 60); + updateStr('4'); + } + if ((x>=250) && (x<=300)) // Button: 5 + { + waitForIt(250, 10, 300, 60); + updateStr('5'); + } + } + + if ((y>=70) && (y<=120)) // Center row + { + if ((x>=10) && (x<=60)) // Button: 6 + { + waitForIt(10, 70, 60, 120); + updateStr('6'); + } + if ((x>=70) && (x<=120)) // Button: 7 + { + waitForIt(70, 70, 120, 120); + updateStr('7'); + } + if ((x>=130) && (x<=180)) // Button: 8 + { + waitForIt(130, 70, 180, 120); + updateStr('8'); + } + if ((x>=190) && (x<=240)) // Button: 9 + { + waitForIt(190, 70, 240, 120); + updateStr('9'); + } + if ((x>=250) && (x<=300)) // Button: 0 + { + waitForIt(250, 70, 300, 120); + updateStr('0'); + } + } + + if ((y>=130) && (y<=180)) // Upper row + { + if ((x>=10) && (x<=150)) // Button: Clear + { + waitForIt(10, 130, 150, 180); + stCurrent[0]='\0'; + stCurrentLen=0; + myGLCD.setColor(0, 0, 0); + myGLCD.fillRect(0, 224, 319, 239); + } + if ((x>=160) && (x<=300)) // Button: Enter + { + waitForIt(160, 130, 300, 180); + if (stCurrentLen>0) + { + for (x=0; x +#include + +// Define the orientation of the touch screen. Further +// information can be found in the instructions. +#define TOUCH_ORIENTATION PORTRAIT + +// Initialize display +// ------------------ +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino Uno/2009 Shield : ,19,18,17,16 +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +// Initialize touchscreen +// ---------------------- +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino Uno/2009 Shield : 15,10,14, 9, 8 +// Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2 +// CTE TFT LCD/SD Shield for Arduino Due : 6, 5, 4, 3, 2 +// Teensy 3.x TFT Test Board : 26,31,27,28,29 +// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30 +// +UTouch myTouch( 6, 5, 4, 3, 2); + +// ************************************ +// DO NOT EDIT ANYTHING BELOW THIS LINE +// ************************************ + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +uint32_t cx, cy; +uint32_t rx[8], ry[8]; +uint32_t clx, crx, cty, cby; +float px, py; +int dispx, dispy, text_y_center; +uint32_t calx, caly, cals; +char buf[13]; + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont(SmallFont); + + myTouch.InitTouch(TOUCH_ORIENTATION); + dispx=myGLCD.getDisplayXSize(); + dispy=myGLCD.getDisplayYSize(); + text_y_center=(dispy/2)-6; +} + +void drawCrossHair(int x, int y) +{ + myGLCD.drawRect(x-10, y-10, x+10, y+10); + myGLCD.drawLine(x-5, y, x+5, y); + myGLCD.drawLine(x, y-5, x, y+5); +} + +void readCoordinates() +{ + int iter = 5000; + int failcount = 0; + int cnt = 0; + uint32_t tx=0; + uint32_t ty=0; + boolean OK = false; + + while (OK == false) + { + myGLCD.setColor(255, 255, 255); + myGLCD.print("* PRESS *", CENTER, text_y_center); + while (myTouch.dataAvailable() == false) {} + myGLCD.print("* HOLD! *", CENTER, text_y_center); + while ((myTouch.dataAvailable() == true) && (cnt=iter) + { + OK = true; + } + else + { + tx = 0; + ty = 0; + cnt = 0; + } + if (failcount>=10000) + fail(); + } + + cx = tx / iter; + cy = ty / iter; +} + +void calibrate(int x, int y, int i) +{ + myGLCD.setColor(255, 255, 255); + drawCrossHair(x,y); + myGLCD.setBackColor(255, 0, 0); + readCoordinates(); + myGLCD.setColor(255, 255, 255); + myGLCD.print("* RELEASE *", CENTER, text_y_center); + myGLCD.setColor(80, 80, 80); + drawCrossHair(x,y); + rx[i]=cx; + ry[i]=cy; + while (myTouch.dataAvailable() == true) {} +} + +void waitForTouch() +{ + while (myTouch.dataAvailable() == true) {} + while (myTouch.dataAvailable() == false) {} + while (myTouch.dataAvailable() == true) {} +} + +void toHex(uint32_t num) +{ + buf[0] = '0'; + buf[1] = 'x'; + buf[10] = 'U'; + buf[11] = 'L'; + buf[12] = 0; + for (int zz=9; zz>1; zz--) + { + if ((num & 0xF) > 9) + buf[zz] = (num & 0xF) + 55; + else + buf[zz] = (num & 0xF) + 48; + num=num>>4; + } +} + +void startup() +{ + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, dispx-1, 13); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.drawLine(0, 14, dispx-1, 14); + myGLCD.print("UTouch Calibration", CENTER, 1); + myGLCD.setBackColor(0, 0, 0); + + if (dispx==220) + { + myGLCD.print("Use a stylus or something", LEFT, 30); + myGLCD.print("similar to touch as close", LEFT, 42); + myGLCD.print("to the center of the", LEFT, 54); + myGLCD.print("highlighted crosshair as", LEFT, 66); + myGLCD.print("possible. Keep as still as", LEFT, 78); + myGLCD.print("possible and keep holding", LEFT, 90); + myGLCD.print("until the highlight is", LEFT, 102); + myGLCD.print("removed. Repeat for all", LEFT, 114); + myGLCD.print("crosshairs in sequence.", LEFT, 126); + myGLCD.print("Touch screen to continue", CENTER, 162); + } + else + { + myGLCD.print("INSTRUCTIONS", CENTER, 30); + myGLCD.print("Use a stylus or something similar to", LEFT, 50); + myGLCD.print("touch as close to the center of the", LEFT, 62); + myGLCD.print("highlighted crosshair as possible. Keep", LEFT, 74); + myGLCD.print("as still as possible and keep holding", LEFT, 86); + myGLCD.print("until the highlight is removed. Repeat", LEFT, 98); + myGLCD.print("for all crosshairs in sequence.", LEFT, 110); + + myGLCD.print("Further instructions will be displayed", LEFT, 134); + myGLCD.print("when the calibration is complete.", LEFT, 146); + + myGLCD.print("Do NOT use your finger as a calibration", LEFT, 170); + myGLCD.print("stylus or the result WILL BE imprecise.", LEFT, 182); + + myGLCD.print("Touch screen to continue", CENTER, 226); + } + + waitForTouch(); + myGLCD.clrScr(); +} + +void done() +{ + myGLCD.clrScr(); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, dispx-1, 13); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.drawLine(0, 14, dispx-1, 14); + myGLCD.print("UTouch Calibration", CENTER, 1); + myGLCD.setBackColor(0, 0, 0); + + if (dispx==220) + { + myGLCD.print("To use the new calibration", LEFT, 30); + myGLCD.print("settings you must edit the", LEFT, 42); + myGLCD.setColor(160, 160, 255); + myGLCD.print("UTouchCD.h", LEFT, 54); + myGLCD.setColor(255, 255, 255); + myGLCD.print("file and change", 88, 54); + myGLCD.print("the following values. The", LEFT, 66); + myGLCD.print("values are located right", LEFT, 78); + myGLCD.print("below the opening comment.", LEFT, 90); + myGLCD.print("CAL_X", LEFT, 110); + myGLCD.print("CAL_Y", LEFT, 122); + myGLCD.print("CAL_S", LEFT, 134); + toHex(calx); + myGLCD.print(buf, 75, 110); + toHex(caly); + myGLCD.print(buf, 75, 122); + toHex(cals); + myGLCD.print(buf, 75, 134); + } + else + { + myGLCD.print("CALIBRATION COMPLETE", CENTER, 30); + myGLCD.print("To use the new calibration", LEFT, 50); + myGLCD.print("settings you must edit the", LEFT, 62); + myGLCD.setColor(160, 160, 255); + myGLCD.print("UTouchCD.h", LEFT, 74); + myGLCD.setColor(255, 255, 255); + myGLCD.print("file and change", 88, 74); + myGLCD.print("the following values.", LEFT, 86); + myGLCD.print("The values are located right", LEFT, 98); + myGLCD.print("below the opening comment in", LEFT, 110); + myGLCD.print("the file.", LEFT, 122); + myGLCD.print("CAL_X", LEFT, 150); + myGLCD.print("CAL_Y", LEFT, 162); + myGLCD.print("CAL_S", LEFT, 174); + + toHex(calx); + myGLCD.print(buf, 75, 150); + toHex(caly); + myGLCD.print(buf, 75, 162); + toHex(cals); + myGLCD.print(buf, 75, 174); + } + +} + +void fail() +{ + myGLCD.clrScr(); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, dispx-1, 13); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.drawLine(0, 14, dispx-1, 14); + myGLCD.print("UTouch Calibration FAILED", CENTER, 1); + myGLCD.setBackColor(0, 0, 0); + + myGLCD.print("Unable to read the position", LEFT, 30); + myGLCD.print("of the press. This is a", LEFT, 42); + myGLCD.print("hardware issue and can", 88, 54); + myGLCD.print("not be corrected in", LEFT, 66); + myGLCD.print("software.", LEFT, 78); + + while(true) {}; +} + +void loop() +{ + startup(); + + myGLCD.setColor(80, 80, 80); + drawCrossHair(dispx-11, 10); + drawCrossHair(dispx/2, 10); + drawCrossHair(10, 10); + drawCrossHair(dispx-11, dispy/2); + drawCrossHair(10, dispy/2); + drawCrossHair(dispx-11, dispy-11); + drawCrossHair(dispx/2, dispy-11); + drawCrossHair(10, dispy-11); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("***********", CENTER, text_y_center-12); + myGLCD.print("***********", CENTER, text_y_center+12); + + calibrate(10, 10, 0); + calibrate(10, dispy/2, 1); + calibrate(10, dispy-11, 2); + calibrate(dispx/2, 10, 3); + calibrate(dispx/2, dispy-11, 4); + calibrate(dispx-11, 10, 5); + calibrate(dispx-11, dispy/2, 6); + calibrate(dispx-11, dispy-11, 7); + + if (TOUCH_ORIENTATION == LANDSCAPE) + cals=(long(dispx-1)<<12)+(dispy-1); + else + cals=(long(dispy-1)<<12)+(dispx-1); + + if (TOUCH_ORIENTATION == PORTRAIT) + px = abs(((float(rx[2]+rx[4]+rx[7])/3)-(float(rx[0]+rx[3]+rx[5])/3))/(dispy-20)); // PORTRAIT + else + px = abs(((float(rx[5]+rx[6]+rx[7])/3)-(float(rx[0]+rx[1]+rx[2])/3))/(dispy-20)); // LANDSCAPE + + if (TOUCH_ORIENTATION == PORTRAIT) + { + clx = (((rx[0]+rx[3]+rx[5])/3)); // PORTRAIT + crx = (((rx[2]+rx[4]+rx[7])/3)); // PORTRAIT + } + else + { + clx = (((rx[0]+rx[1]+rx[2])/3)); // LANDSCAPE + crx = (((rx[5]+rx[6]+rx[7])/3)); // LANDSCAPE + } + if (clx +#include + +// Initialize display +// ------------------ +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino Uno/2009 Shield : ,19,18,17,16 +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +// Initialize touchscreen +// ---------------------- +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino Uno/2009 Shield : 15,10,14, 9, 8 +// Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2 +// CTE TFT LCD/SD Shield for Arduino Due : 6, 5, 4, 3, 2 +// Teensy 3.x TFT Test Board : 26,31,27,28,29 +// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30 +// +UTouch myTouch( 6, 5, 4, 3, 2); + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + + myTouch.InitTouch(); + myTouch.setPrecision(PREC_MEDIUM); +} + +void loop() +{ + long x, y; + + while (myTouch.dataAvailable() == true) + { + myTouch.read(); + x = myTouch.getX(); + y = myTouch.getY(); + if ((x!=-1) and (y!=-1)) + { + myGLCD.drawPixel (x, y); + } + } +} + diff --git a/libraries/UTouch/examples/Arduino/UTouch_QuickPaint/UTouch_QuickPaint.ino b/libraries/UTouch/examples/Arduino/UTouch_QuickPaint/UTouch_QuickPaint.ino new file mode 100644 index 0000000..3ff70fc --- /dev/null +++ b/libraries/UTouch/examples/Arduino/UTouch_QuickPaint/UTouch_QuickPaint.ino @@ -0,0 +1,172 @@ +// UTouch_QuickPaint (C)2013-2014 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a quick demo of how to use the library. +// +// This program requires the UTFT library and a display +// module with at least 320x240 pixels resolution. +// +// It is assumed that the display module is connected to an +// appropriate shield or that you know how to change the pin +// numbers in the setup. +// + +#include +#include + +// Initialize display +// ------------------ +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino Uno/2009 Shield : ,19,18,17,16 +// Standard Arduino Mega/Due shield : ,38,39,40,41 +// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28 +// Teensy 3.x TFT Test Board : ,23,22, 3, 4 +// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33 +// +// Remember to change the model parameter to suit your display module! +UTFT myGLCD(ITDB32S,38,39,40,41); + +// Initialize touchscreen +// ---------------------- +// Set the pins to the correct ones for your development board +// ----------------------------------------------------------- +// Standard Arduino Uno/2009 Shield : 15,10,14, 9, 8 +// Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2 +// CTE TFT LCD/SD Shield for Arduino Due : 6, 5, 4, 3, 2 +// Teensy 3.x TFT Test Board : 26,31,27,28,29 +// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30 +// +UTouch myTouch( 6, 5, 4, 3, 2); + +// Declare which fonts we will be using +extern uint8_t BigFont[]; + +int color = 0; +word colorlist[] = {VGA_WHITE, VGA_BLACK, VGA_RED, VGA_BLUE, VGA_GREEN, VGA_FUCHSIA, VGA_YELLOW, VGA_AQUA}; +int bsize = 4; + +void drawColorMarkerAndBrushSize(int col) +{ + myGLCD.setColor(VGA_BLACK); + myGLCD.fillRect(25, 0, 31, 239); + myGLCD.fillRect(myGLCD.getDisplayXSize()-31, 161, myGLCD.getDisplayXSize()-1, 191); + myGLCD.setColor(VGA_WHITE); + myGLCD.drawPixel(25, (col*30)+15); + for (int i=1; i<7; i++) + myGLCD.drawLine(25+i, ((col*30)+15)-i, 25+i, ((col*30)+15)+i); + + if (color==1) + myGLCD.setColor(VGA_WHITE); + else + myGLCD.setColor(colorlist[col]); + if (bsize==1) + myGLCD.drawPixel(myGLCD.getDisplayXSize()-15, 177); + else + myGLCD.fillCircle(myGLCD.getDisplayXSize()-15, 177, bsize); + + myGLCD.setColor(colorlist[col]); +} + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont(BigFont); + + myTouch.InitTouch(); + myTouch.setPrecision(PREC_HI); + + myGLCD.setColor(VGA_WHITE); + myGLCD.drawLine(32,0,32,myGLCD.getDisplayYSize()-1); + myGLCD.drawLine(myGLCD.getDisplayXSize()-32,0,myGLCD.getDisplayXSize()-32,myGLCD.getDisplayYSize()-1); + myGLCD.print("C", myGLCD.getDisplayXSize()-24, 8); + myGLCD.print("L", myGLCD.getDisplayXSize()-24, 24); + myGLCD.print("E", myGLCD.getDisplayXSize()-24, 40); + myGLCD.print("A", myGLCD.getDisplayXSize()-24, 56); + myGLCD.print("R", myGLCD.getDisplayXSize()-24, 72); + myGLCD.print("+", myGLCD.getDisplayXSize()-24, 136); + myGLCD.print("-", myGLCD.getDisplayXSize()-24, 200); + myGLCD.fillRect(myGLCD.getDisplayXSize()-32,96,myGLCD.getDisplayXSize()-1,128); + myGLCD.drawLine(myGLCD.getDisplayXSize()-32,160,myGLCD.getDisplayXSize()-1,160); + myGLCD.drawLine(myGLCD.getDisplayXSize()-32,192,myGLCD.getDisplayXSize()-1,192); + myGLCD.drawLine(myGLCD.getDisplayXSize()-32,224,myGLCD.getDisplayXSize()-1,224); + for (int i=0; i<8; i++) + { + myGLCD.setColor(colorlist[i]); + myGLCD.fillRect(0, (i*30), 24, (((i+1)*30)-1)); + } + drawColorMarkerAndBrushSize(color); +} + +void loop() +{ + long x, y; + + while (myTouch.dataAvailable() == true) + { + myTouch.read(); + x = myTouch.getX(); + y = myTouch.getY(); + if ((x!=-1) and (y!=-1)) + { + if (x>(31+bsize) and (x128) and (y<160)) + { + if (bsize<7) + { + bsize++; + drawColorMarkerAndBrushSize(color); + while (myTouch.dataAvailable()) {}; + delay(50); + } + } + if ((y>160) and (y<192)) + { + bsize=4; + drawColorMarkerAndBrushSize(color); + while (myTouch.dataAvailable()) {}; + delay(50); + } + if ((y>192) and (y<224)) + { + if (bsize>1) + { + bsize--; + drawColorMarkerAndBrushSize(color); + while (myTouch.dataAvailable()) {}; + delay(50); + } + } + } + } + } + } +} + diff --git a/libraries/UTouch/examples/chipKit/UTouch_ButtonTest/UTouch_ButtonTest.pde b/libraries/UTouch/examples/chipKit/UTouch_ButtonTest/UTouch_ButtonTest.pde new file mode 100644 index 0000000..22ae1dd --- /dev/null +++ b/libraries/UTouch/examples/chipKit/UTouch_ButtonTest/UTouch_ButtonTest.pde @@ -0,0 +1,236 @@ +// UTouch_ButtonTest (C)2010-2012 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a quick demo of how create and use buttons. +// +// This program requires the UTFT library. +// +// It is assumed that the display module is connected to an +// appropriate shield or that you know how to change the pin +// numbers in the setup. +// + +#include +#include + +// Declare which fonts we will be using +extern uint8_t BigFont[]; + +// Uncomment the next line for chipKit Uno32 +//UTFT myGLCD(ITDB24D,34,35,36,37); // Remember to change the model parameter to suit your display module! +//UTouch myTouch(20,21,22,23,24); + +// Uncomment the next line for chipKit Max32 +UTFT myGLCD(ITDB32S,82,83,84,85); // Remember to change the model parameter to suit your display module! +UTouch myTouch(62,63,64,65,66); + +int x, y; +char stCurrent[20]=""; +int stCurrentLen=0; +char stLast[20]=""; + +/************************* +** Custom functions ** +*************************/ + +void drawButtons() +{ +// Draw the upper row of buttons + for (x=0; x<5; x++) + { + myGLCD.setColor(0, 0, 255); + myGLCD.fillRoundRect (10+(x*60), 10, 60+(x*60), 60); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (10+(x*60), 10, 60+(x*60), 60); + myGLCD.printNumI(x+1, 27+(x*60), 27); + } +// Draw the center row of buttons + for (x=0; x<5; x++) + { + myGLCD.setColor(0, 0, 255); + myGLCD.fillRoundRect (10+(x*60), 70, 60+(x*60), 120); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (10+(x*60), 70, 60+(x*60), 120); + if (x<4) + myGLCD.printNumI(x+6, 27+(x*60), 87); + } + myGLCD.print("0", 267, 87); +// Draw the lower row of buttons + myGLCD.setColor(0, 0, 255); + myGLCD.fillRoundRect (10, 130, 150, 180); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (10, 130, 150, 180); + myGLCD.print("Clear", 40, 147); + myGLCD.setColor(0, 0, 255); + myGLCD.fillRoundRect (160, 130, 300, 180); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (160, 130, 300, 180); + myGLCD.print("Enter", 190, 147); + myGLCD.setBackColor (0, 0, 0); +} + +void updateStr(int val) +{ + if (stCurrentLen<20) + { + stCurrent[stCurrentLen]=val; + stCurrent[stCurrentLen+1]='\0'; + stCurrentLen++; + myGLCD.setColor(0, 255, 0); + myGLCD.print(stCurrent, LEFT, 224); + } + else + { + myGLCD.setColor(255, 0, 0); + myGLCD.print("BUFFER FULL!", CENTER, 192); + delay(500); + myGLCD.print(" ", CENTER, 192); + delay(500); + myGLCD.print("BUFFER FULL!", CENTER, 192); + delay(500); + myGLCD.print(" ", CENTER, 192); + myGLCD.setColor(0, 255, 0); + } +} + +// Draw a red frame while a button is touched +void waitForIt(int x1, int y1, int x2, int y2) +{ + myGLCD.setColor(255, 0, 0); + myGLCD.drawRoundRect (x1, y1, x2, y2); + while (myTouch.dataAvailable()) + myTouch.read(); + myGLCD.setColor(255, 255, 255); + myGLCD.drawRoundRect (x1, y1, x2, y2); +} + +/************************* +** Required functions ** +*************************/ + +void setup() +{ +// Initial setup + myGLCD.InitLCD(); + myGLCD.clrScr(); + + myTouch.InitTouch(); + myTouch.setPrecision(PREC_MEDIUM); + + myGLCD.setFont(BigFont); + myGLCD.setBackColor(0, 0, 255); + drawButtons(); +} + +void loop() +{ + while (true) + { + if (myTouch.dataAvailable()) + { + myTouch.read(); + x=myTouch.getX(); + y=myTouch.getY(); + + if ((y>=10) && (y<=60)) // Upper row + { + if ((x>=10) && (x<=60)) // Button: 1 + { + waitForIt(10, 10, 60, 60); + updateStr('1'); + } + if ((x>=70) && (x<=120)) // Button: 2 + { + waitForIt(70, 10, 120, 60); + updateStr('2'); + } + if ((x>=130) && (x<=180)) // Button: 3 + { + waitForIt(130, 10, 180, 60); + updateStr('3'); + } + if ((x>=190) && (x<=240)) // Button: 4 + { + waitForIt(190, 10, 240, 60); + updateStr('4'); + } + if ((x>=250) && (x<=300)) // Button: 5 + { + waitForIt(250, 10, 300, 60); + updateStr('5'); + } + } + + if ((y>=70) && (y<=120)) // Center row + { + if ((x>=10) && (x<=60)) // Button: 6 + { + waitForIt(10, 70, 60, 120); + updateStr('6'); + } + if ((x>=70) && (x<=120)) // Button: 7 + { + waitForIt(70, 70, 120, 120); + updateStr('7'); + } + if ((x>=130) && (x<=180)) // Button: 8 + { + waitForIt(130, 70, 180, 120); + updateStr('8'); + } + if ((x>=190) && (x<=240)) // Button: 9 + { + waitForIt(190, 70, 240, 120); + updateStr('9'); + } + if ((x>=250) && (x<=300)) // Button: 0 + { + waitForIt(250, 70, 300, 120); + updateStr('0'); + } + } + + if ((y>=130) && (y<=180)) // Upper row + { + if ((x>=10) && (x<=150)) // Button: Clear + { + waitForIt(10, 130, 150, 180); + stCurrent[0]='\0'; + stCurrentLen=0; + myGLCD.setColor(0, 0, 0); + myGLCD.fillRect(0, 224, 319, 239); + } + if ((x>=160) && (x<=300)) // Button: Enter + { + waitForIt(160, 130, 300, 180); + if (stCurrentLen>0) + { + for (x=0; x +#include + +// Define the orientation of the touch screen. Further +// information can be found in the instructions. +#define TOUCH_ORIENTATION PORTRAIT + +// Declare which fonts we will be using +extern uint8_t SmallFont[]; + +// Uncomment the next line for chipKit Uno32 +//UTFT myGLCD(ITDB24D,34,35,36,37); // Remember to change the model parameter to suit your display module! +//UTouch myTouch(20,21,22,23,24); + +// Uncomment the next line for chipKit Max32 +UTFT myGLCD(ITDB32S,82,83,84,85); // Remember to change the model parameter to suit your display module! +UTouch myTouch(62,63,64,65,66); + +// ************************************ +// DO NOT EDIT ANYTHING BELOW THIS LINE +// ************************************ +uint32_t cx, cy; +uint32_t rx[8], ry[8]; +uint32_t clx, crx, cty, cby; +float px, py; +int dispx, dispy, text_y_center; +uint32_t calx, caly, cals; +char buf[13]; + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont(SmallFont); + + myTouch.InitTouch(TOUCH_ORIENTATION); + dispx=myGLCD.getDisplayXSize(); + dispy=myGLCD.getDisplayYSize(); + text_y_center=(dispy/2)-6; +} + +void drawCrossHair(int x, int y) +{ + myGLCD.drawRect(x-10, y-10, x+10, y+10); + myGLCD.drawLine(x-5, y, x+5, y); + myGLCD.drawLine(x, y-5, x, y+5); +} + +void readCoordinates() +{ + int iter = 5000; + int failcount = 0; + int cnt = 0; + uint32_t tx=0; + uint32_t ty=0; + boolean OK = false; + + while (OK == false) + { + myGLCD.setColor(255, 255, 255); + myGLCD.print("* PRESS *", CENTER, text_y_center); + while (myTouch.dataAvailable() == false) {} + myGLCD.print("* HOLD! *", CENTER, text_y_center); + while ((myTouch.dataAvailable() == true) && (cnt=iter) + { + OK = true; + } + else + { + tx = 0; + ty = 0; + cnt = 0; + } + if (failcount>=10000) + fail(); + } + + cx = tx / iter; + cy = ty / iter; +} + +void calibrate(int x, int y, int i) +{ + myGLCD.setColor(255, 255, 255); + drawCrossHair(x,y); + myGLCD.setBackColor(255, 0, 0); + readCoordinates(); + myGLCD.setColor(255, 255, 255); + myGLCD.print("* RELEASE *", CENTER, text_y_center); + myGLCD.setColor(80, 80, 80); + drawCrossHair(x,y); + rx[i]=cx; + ry[i]=cy; + while (myTouch.dataAvailable() == true) {} +} + +void waitForTouch() +{ + while (myTouch.dataAvailable() == true) {} + while (myTouch.dataAvailable() == false) {} + while (myTouch.dataAvailable() == true) {} +} + +void toHex(uint32_t num) +{ + buf[0] = '0'; + buf[1] = 'x'; + buf[10] = 'U'; + buf[11] = 'L'; + buf[12] = 0; + for (int zz=9; zz>1; zz--) + { + if ((num & 0xF) > 9) + buf[zz] = (num & 0xF) + 55; + else + buf[zz] = (num & 0xF) + 48; + num=num>>4; + } +} + +void startup() +{ + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, dispx-1, 13); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.drawLine(0, 14, dispx-1, 14); + myGLCD.print("UTouch Calibration", CENTER, 1); + myGLCD.setBackColor(0, 0, 0); + + if (dispx==220) + { + myGLCD.print("Use a stylus or something", LEFT, 30); + myGLCD.print("similar to touch as close", LEFT, 42); + myGLCD.print("to the center of the", LEFT, 54); + myGLCD.print("highlighted crosshair as", LEFT, 66); + myGLCD.print("possible. Keep as still as", LEFT, 78); + myGLCD.print("possible and keep holding", LEFT, 90); + myGLCD.print("until the highlight is", LEFT, 102); + myGLCD.print("removed. Repeat for all", LEFT, 114); + myGLCD.print("crosshairs in sequence.", LEFT, 126); + myGLCD.print("Touch screen to continue", CENTER, 162); + } + else + { + myGLCD.print("INSTRUCTIONS", CENTER, 30); + myGLCD.print("Use a stylus or something similar to", LEFT, 50); + myGLCD.print("touch as close to the center of the", LEFT, 62); + myGLCD.print("highlighted crosshair as possible. Keep", LEFT, 74); + myGLCD.print("as still as possible and keep holding", LEFT, 86); + myGLCD.print("until the highlight is removed. Repeat", LEFT, 98); + myGLCD.print("for all crosshairs in sequence.", LEFT, 110); + + myGLCD.print("Further instructions will be displayed", LEFT, 134); + myGLCD.print("when the calibration is complete.", LEFT, 146); + + myGLCD.print("Do NOT use your finger as a calibration", LEFT, 170); + myGLCD.print("stylus or the result WILL BE imprecise.", LEFT, 182); + + myGLCD.print("Touch screen to continue", CENTER, 226); + } + + waitForTouch(); + myGLCD.clrScr(); +} + +void done() +{ + myGLCD.clrScr(); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, dispx-1, 13); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.drawLine(0, 14, dispx-1, 14); + myGLCD.print("UTouch Calibration", CENTER, 1); + myGLCD.setBackColor(0, 0, 0); + + if (dispx==220) + { + myGLCD.print("To use the new calibration", LEFT, 30); + myGLCD.print("settings you must edit the", LEFT, 42); + myGLCD.setColor(160, 160, 255); + myGLCD.print("UTouchCD.h", LEFT, 54); + myGLCD.setColor(255, 255, 255); + myGLCD.print("file and change", 88, 54); + myGLCD.print("the following values. The", LEFT, 66); + myGLCD.print("values are located right", LEFT, 78); + myGLCD.print("below the opening comment.", LEFT, 90); + myGLCD.print("CAL_X", LEFT, 110); + myGLCD.print("CAL_Y", LEFT, 122); + myGLCD.print("CAL_S", LEFT, 134); + toHex(calx); + myGLCD.print(buf, 75, 110); + toHex(caly); + myGLCD.print(buf, 75, 122); + toHex(cals); + myGLCD.print(buf, 75, 134); + } + else + { + myGLCD.print("CALIBRATION COMPLETE", CENTER, 30); + myGLCD.print("To use the new calibration", LEFT, 50); + myGLCD.print("settings you must edit the", LEFT, 62); + myGLCD.setColor(160, 160, 255); + myGLCD.print("UTouchCD.h", LEFT, 74); + myGLCD.setColor(255, 255, 255); + myGLCD.print("file and change", 88, 74); + myGLCD.print("the following values.", LEFT, 86); + myGLCD.print("The values are located right", LEFT, 98); + myGLCD.print("below the opening comment in", LEFT, 110); + myGLCD.print("the file.", LEFT, 122); + myGLCD.print("CAL_X", LEFT, 150); + myGLCD.print("CAL_Y", LEFT, 162); + myGLCD.print("CAL_S", LEFT, 174); + + toHex(calx); + myGLCD.print(buf, 75, 150); + toHex(caly); + myGLCD.print(buf, 75, 162); + toHex(cals); + myGLCD.print(buf, 75, 174); + } + +} + +void fail() +{ + myGLCD.clrScr(); + myGLCD.setColor(255, 0, 0); + myGLCD.fillRect(0, 0, dispx-1, 13); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.drawLine(0, 14, dispx-1, 14); + myGLCD.print("UTouch Calibration FAILED", CENTER, 1); + myGLCD.setBackColor(0, 0, 0); + + myGLCD.print("Unable to read the position", LEFT, 30); + myGLCD.print("of the press. This is a", LEFT, 42); + myGLCD.print("hardware issue and can", 88, 54); + myGLCD.print("not be corrected in", LEFT, 66); + myGLCD.print("software.", LEFT, 78); + + while(true) {}; +} + +void loop() +{ + startup(); + + myGLCD.setColor(80, 80, 80); + drawCrossHair(dispx-11, 10); + drawCrossHair(dispx/2, 10); + drawCrossHair(10, 10); + drawCrossHair(dispx-11, dispy/2); + drawCrossHair(10, dispy/2); + drawCrossHair(dispx-11, dispy-11); + drawCrossHair(dispx/2, dispy-11); + drawCrossHair(10, dispy-11); + myGLCD.setColor(255, 255, 255); + myGLCD.setBackColor(255, 0, 0); + myGLCD.print("***********", CENTER, text_y_center-12); + myGLCD.print("***********", CENTER, text_y_center+12); + + calibrate(10, 10, 0); + calibrate(10, dispy/2, 1); + calibrate(10, dispy-11, 2); + calibrate(dispx/2, 10, 3); + calibrate(dispx/2, dispy-11, 4); + calibrate(dispx-11, 10, 5); + calibrate(dispx-11, dispy/2, 6); + calibrate(dispx-11, dispy-11, 7); + + if (TOUCH_ORIENTATION == LANDSCAPE) + cals=(long(dispx-1)<<12)+(dispy-1); + else + cals=(long(dispy-1)<<12)+(dispx-1); + + if (TOUCH_ORIENTATION == PORTRAIT) + px = abs(((float(rx[2]+rx[4]+rx[7])/3)-(float(rx[0]+rx[3]+rx[5])/3))/(dispy-20)); // PORTRAIT + else + px = abs(((float(rx[5]+rx[6]+rx[7])/3)-(float(rx[0]+rx[1]+rx[2])/3))/(dispy-20)); // LANDSCAPE + + if (TOUCH_ORIENTATION == PORTRAIT) + { + clx = (((rx[0]+rx[3]+rx[5])/3)); // PORTRAIT + crx = (((rx[2]+rx[4]+rx[7])/3)); // PORTRAIT + } + else + { + clx = (((rx[0]+rx[1]+rx[2])/3)); // LANDSCAPE + crx = (((rx[5]+rx[6]+rx[7])/3)); // LANDSCAPE + } + if (clx +#include + +// Uncomment the next line for chipKit Uno32 +//UTFT myGLCD(ITDB24D,34,35,36,37); // Remember to change the model parameter to suit your display module! +//UTouch myTouch(20,21,22,23,24); + +// Uncomment the next line for chipKit Max32 +UTFT myGLCD(ITDB32S,82,83,84,85); // Remember to change the model parameter to suit your display module! +UTouch myTouch(62,63,64,65,66); + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + + myTouch.InitTouch(); + myTouch.setPrecision(PREC_MEDIUM); +} + +void loop() +{ + long x, y; + + while (myTouch.dataAvailable() == true) + { + myTouch.read(); + x = myTouch.getX(); + y = myTouch.getY(); + if ((x!=-1) and (y!=-1)) + myGLCD.drawPixel (x, y); + } +} + diff --git a/libraries/UTouch/examples/chipKit/UTouch_QuickPaint/UTouch_QuickPaint.pde b/libraries/UTouch/examples/chipKit/UTouch_QuickPaint/UTouch_QuickPaint.pde new file mode 100644 index 0000000..fa6ed09 --- /dev/null +++ b/libraries/UTouch/examples/chipKit/UTouch_QuickPaint/UTouch_QuickPaint.pde @@ -0,0 +1,155 @@ +// UTouch_QuickPaint (C)2013 Henning Karlsen +// web: http://www.henningkarlsen.com/electronics +// +// This program is a quick demo of how to use the library. +// +// This program requires the UTFT library and a display +// module with at least 320x240 pixels resolution. +// +// It is assumed that the display module is connected to an +// appropriate shield or that you know how to change the pin +// numbers in the setup. +// + +#include +#include + +// Declare which fonts we will be using +extern uint8_t BigFont[]; + +// Uncomment the next line for chipKit Uno32 +//UTFT myGLCD(ITDB24D,34,35,36,37); // Remember to change the model parameter to suit your display module! +//UTouch myTouch(20,21,22,23,24); + +// Uncomment the next line for chipKit Max32 +UTFT myGLCD(ITDB32S,82,83,84,85); // Remember to change the model parameter to suit your display module! +UTouch myTouch(62,63,64,65,66); + +int color = 0; +word colorlist[] = {VGA_WHITE, VGA_BLACK, VGA_RED, VGA_BLUE, VGA_GREEN, VGA_FUCHSIA, VGA_YELLOW, VGA_AQUA}; +int bsize = 4; + +void drawColorMarkerAndBrushSize(int col) +{ + myGLCD.setColor(VGA_BLACK); + myGLCD.fillRect(25, 0, 31, 239); + myGLCD.fillRect(myGLCD.getDisplayXSize()-31, 161, myGLCD.getDisplayXSize()-1, 191); + myGLCD.setColor(VGA_WHITE); + myGLCD.drawPixel(25, (col*30)+15); + for (int i=1; i<7; i++) + myGLCD.drawLine(25+i, ((col*30)+15)-i, 25+i, ((col*30)+15)+i); + + if (color==1) + myGLCD.setColor(VGA_WHITE); + else + myGLCD.setColor(colorlist[col]); + if (bsize==1) + myGLCD.drawPixel(myGLCD.getDisplayXSize()-15, 177); + else + myGLCD.fillCircle(myGLCD.getDisplayXSize()-15, 177, bsize); + + myGLCD.setColor(colorlist[col]); +} + +void setup() +{ + myGLCD.InitLCD(); + myGLCD.clrScr(); + myGLCD.setFont(BigFont); + + myTouch.InitTouch(); + myTouch.setPrecision(PREC_HI); + + myGLCD.setColor(VGA_WHITE); + myGLCD.drawLine(32,0,32,myGLCD.getDisplayYSize()-1); + myGLCD.drawLine(myGLCD.getDisplayXSize()-32,0,myGLCD.getDisplayXSize()-32,myGLCD.getDisplayYSize()-1); + myGLCD.print("C", myGLCD.getDisplayXSize()-24, 8); + myGLCD.print("L", myGLCD.getDisplayXSize()-24, 24); + myGLCD.print("E", myGLCD.getDisplayXSize()-24, 40); + myGLCD.print("A", myGLCD.getDisplayXSize()-24, 56); + myGLCD.print("R", myGLCD.getDisplayXSize()-24, 72); + myGLCD.print("+", myGLCD.getDisplayXSize()-24, 136); + myGLCD.print("-", myGLCD.getDisplayXSize()-24, 200); + myGLCD.fillRect(myGLCD.getDisplayXSize()-32,96,myGLCD.getDisplayXSize()-1,128); + myGLCD.drawLine(myGLCD.getDisplayXSize()-32,160,myGLCD.getDisplayXSize()-1,160); + myGLCD.drawLine(myGLCD.getDisplayXSize()-32,192,myGLCD.getDisplayXSize()-1,192); + myGLCD.drawLine(myGLCD.getDisplayXSize()-32,224,myGLCD.getDisplayXSize()-1,224); + for (int i=0; i<8; i++) + { + myGLCD.setColor(colorlist[i]); + myGLCD.fillRect(0, (i*30), 24, (((i+1)*30)-1)); + } + drawColorMarkerAndBrushSize(color); +} + +void loop() +{ + long x, y; + + while (myTouch.dataAvailable() == true) + { + myTouch.read(); + x = myTouch.getX(); + y = myTouch.getY(); + if ((x!=-1) and (y!=-1)) + { + if (x>(31+bsize) and (x128) and (y<160)) + { + if (bsize<7) + { + bsize++; + drawColorMarkerAndBrushSize(color); + while (myTouch.dataAvailable()) {}; + delay(50); + } + } + if ((y>160) and (y<192)) + { + bsize=4; + drawColorMarkerAndBrushSize(color); + while (myTouch.dataAvailable()) {}; + delay(50); + } + if ((y>192) and (y<224)) + { + if (bsize>1) + { + bsize--; + drawColorMarkerAndBrushSize(color); + while (myTouch.dataAvailable()) {}; + delay(50); + } + } + } + } + } + } +} + diff --git a/libraries/UTouch/hardware/arm/HW_ARM.inc b/libraries/UTouch/hardware/arm/HW_ARM.inc new file mode 100644 index 0000000..069ac43 --- /dev/null +++ b/libraries/UTouch/hardware/arm/HW_ARM.inc @@ -0,0 +1,36 @@ +// Results becomes inaccurate if direct port manipulation is used hence the use of digitalWrite() and digitalRead() + +void UTouch::touch_WriteData(byte data) +{ + byte temp; + + temp=data; + cbi(P_CLK, B_CLK); + + for(byte count=0; count<8; count++) + { + if(temp & 0x80) + digitalWrite(T_DIN, HIGH); + else + digitalWrite(T_DIN, LOW); + temp = temp << 1; + digitalWrite(T_CLK, LOW); + digitalWrite(T_CLK, HIGH); + } +} + +word UTouch::touch_ReadData() +{ + word data = 0; + + for(byte count=0; count<12; count++) + { + data <<= 1; + digitalWrite(T_CLK, HIGH); + digitalWrite(T_CLK, LOW); + if (digitalRead(T_DOUT)) + data++; + } + return(data); +} + diff --git a/libraries/UTouch/hardware/arm/HW_ARM_defines.h b/libraries/UTouch/hardware/arm/HW_ARM_defines.h new file mode 100644 index 0000000..f5f7465 --- /dev/null +++ b/libraries/UTouch/hardware/arm/HW_ARM_defines.h @@ -0,0 +1,17 @@ +// *** Hardwarespecific defines *** +#define cbi(reg, bitmask) *reg &= ~bitmask +#define sbi(reg, bitmask) *reg |= bitmask +#define rbi(reg, bitmask) ((*reg) & bitmask) + +#define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask); +#define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask); + +#define swap(type, i, j) {type t = i; i = j; j = t;} + +#if defined(TEENSYDUINO) && TEENSYDUINO >= 117 + #define regtype volatile uint8_t + #define regsize uint8_t +#else + #define regtype volatile uint32_t + #define regsize uint32_t +#endif diff --git a/libraries/UTouch/hardware/avr/HW_AVR.inc b/libraries/UTouch/hardware/avr/HW_AVR.inc new file mode 100644 index 0000000..1450b37 --- /dev/null +++ b/libraries/UTouch/hardware/avr/HW_AVR.inc @@ -0,0 +1,34 @@ +void UTouch::touch_WriteData(byte data) +{ + byte temp; + + temp=data; + cbi(P_CLK, B_CLK); + + for(byte count=0; count<8; count++) + { + if(temp & 0x80) + sbi(P_DIN, B_DIN); + else + cbi(P_DIN, B_DIN); + temp = temp << 1; + cbi(P_CLK, B_CLK); + sbi(P_CLK, B_CLK); + } +} + +word UTouch::touch_ReadData() +{ + word data = 0; + + for(byte count=0; count<12; count++) + { + data <<= 1; + sbi(P_CLK, B_CLK); + cbi(P_CLK, B_CLK); + if (rbi(P_DOUT, B_DOUT)) + data++; + } + return(data); +} + diff --git a/libraries/UTouch/hardware/avr/HW_AVR_defines.h b/libraries/UTouch/hardware/avr/HW_AVR_defines.h new file mode 100644 index 0000000..318bdd1 --- /dev/null +++ b/libraries/UTouch/hardware/avr/HW_AVR_defines.h @@ -0,0 +1,12 @@ +// *** Hardwarespecific defines *** +#define cbi(reg, bitmask) *reg &= ~bitmask +#define sbi(reg, bitmask) *reg |= bitmask +#define rbi(reg, bitmask) ((*reg) & bitmask) + +#define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask); +#define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask); + +#define swap(type, i, j) {type t = i; i = j; j = t;} + +#define regtype volatile uint8_t +#define regsize uint8_t diff --git a/libraries/UTouch/hardware/pic32/HW_PIC32.inc b/libraries/UTouch/hardware/pic32/HW_PIC32.inc new file mode 100644 index 0000000..58c1724 --- /dev/null +++ b/libraries/UTouch/hardware/pic32/HW_PIC32.inc @@ -0,0 +1,36 @@ +// Direct port manipulation does not work at the moment, hence the use of digitalWrite() and digitalRead() + +void UTouch::touch_WriteData(byte data) +{ + byte temp; + + temp=data; + cbi(P_CLK, B_CLK); + + for(byte count=0; count<8; count++) + { + if(temp & 0x80) + digitalWrite(T_DIN, HIGH); + else + digitalWrite(T_DIN, LOW); + temp = temp << 1; + digitalWrite(T_CLK, LOW); + digitalWrite(T_CLK, HIGH); + } +} + +word UTouch::touch_ReadData() +{ + word data = 0; + + for(byte count=0; count<12; count++) + { + data <<= 1; + digitalWrite(T_CLK, HIGH); + digitalWrite(T_CLK, LOW); + if (digitalRead(T_DOUT)) + data++; + } + return(data); +} + diff --git a/libraries/UTouch/hardware/pic32/HW_PIC32_defines.h b/libraries/UTouch/hardware/pic32/HW_PIC32_defines.h new file mode 100644 index 0000000..821e561 --- /dev/null +++ b/libraries/UTouch/hardware/pic32/HW_PIC32_defines.h @@ -0,0 +1,12 @@ +// *** Hardwarespecific defines *** +#define cbi(reg, bitmask) (*(reg + 1)) = bitmask +#define sbi(reg, bitmask) (*(reg + 2)) = bitmask +#define rbi(reg, bitmask) (*(reg) & bitmask) + +#define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask); +#define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask); + +#define swap(type, i, j) {type t = i; i = j; j = t;} + +#define regtype volatile uint32_t +#define regsize uint16_t diff --git a/libraries/UTouch/keywords.txt b/libraries/UTouch/keywords.txt new file mode 100644 index 0000000..a79eafe --- /dev/null +++ b/libraries/UTouch/keywords.txt @@ -0,0 +1,17 @@ +UTouch KEYWORD1 + +InitTouch KEYWORD2 +read KEYWORD2 +dataAvailable KEYWORD2 +getX KEYWORD2 +getY KEYWORD2 +setPrecision KEYWORD2 + +PREC_LOW LITERAL1 +PREC_MEDIUM LITERAL1 +PREC_HI LITERAL1 +PREC_EXTREME LITERAL1 +PORTRAIT LITERAL1 +LANDSCAPE LITERAL1 +TP_X LITERAL1 +TP_Y LITERAL1 diff --git a/libraries/UTouch/version.txt b/libraries/UTouch/version.txt new file mode 100644 index 0000000..476825a --- /dev/null +++ b/libraries/UTouch/version.txt @@ -0,0 +1,18 @@ +Version: + 1.0 1 Dec 2012 - initial release + 1.1 23 May 2013 - added support for more display modules + modified calibration to try to compensate for slight flaws in some (larger) touchscreens + changed license to CC BY-NC-SA 3.0 + 1.2 22 Sep 2013 - general optimization + fixed some issues with calibration + made modifications to reduce erroneous readings + added support for more display modules + added UTouch_QuickPaint example + 1.21 06 Dec 2013 - added support for ElecFreaks TFT01-4.3 + added support for Coldtears 3.5" and 4.0" modules + 1.22 18 Feb 2014 - added support for Teensy 3.x Boards + added support for three display modules from ElecHouse + made some modifications to improve accuracy when precision is set to medium or higher + 1.23 16 Mar 2014 - fixed a bug that were introduced in v1.22 + 1.24 05 May 2014 - added support for DisplayModule DM-TFT24-104 and DM-TFT28-103 + added support for Coldtears 5" and 7" CPLD modules