add proto for SD based PSRAM

pull/9/head
jean-marcharvengt 2020-01-20 21:10:02 +01:00
rodzic f040b30f36
commit a528e0ae28
176 zmienionych plików z 18486 dodań i 10614 usunięć

Wyświetl plik

@ -8,8 +8,10 @@
//#define HAS_I2CKBD 1
//#define TIMER_REND 1
// Title: < >
#define TITLE " Atari5200 Emulator "
#define EXTRA_HEAP 0x10
// Title: < >
#define TITLE " Atari5200 Emulator"
#define ROMSDIR "5200"
#define emu_Init(ROM) {at5_Init(); at5_Start(ROM);}
@ -119,6 +121,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -1,8 +1,7 @@
#ifndef IOPINS_H
#define IOPINS_H
//#define OLD_LAYOUT 1
#include "platform_config.h"
#include "tft_t_dma_config.h"
#ifndef OLD_LAYOUT
@ -10,8 +9,8 @@
#ifdef ST7789
// ST7789
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255
#define TFT_TOUCH_INT 255
#define TFT_DC 9
@ -20,8 +19,8 @@
#else
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255 //38
#define TFT_TOUCH_INT 255 //37
#define TFT_DC 9
@ -29,12 +28,21 @@
#define TFT_RST 255
#endif
// PSRAM
#define PSRAM_CS 36
#define PSRAM_MOSI 35
#define PSRAM_MISO 34
#define PSRAM_SCLK 37
// SD
#define SD_SCLK 13
#define SD_MOSI 12
#define SD_MISO 11
#define SD_MISO 11
#ifdef TEENSYBOY
#define SD_CS BUILTIN_SDCARD
#else
#define SD_CS 5
#endif
// I2C keyboard
#define I2C_SCL_IO 19
@ -49,15 +57,24 @@
//#define PIN_KEY_USER3 255
//#define PIN_KEY_USER4 255
#ifdef TEENSYBOY
// Second joystick
#define PIN_JOY1_BTN 2
#define PIN_JOY1_1 14 // UP
#define PIN_JOY1_2 7 // DOWN
#define PIN_JOY1_3 6 // RIGHT
#define PIN_JOY1_4 5 // LEFT
#endif
#else // OLD LAYOUT!!!!
#else
// OLD LAYOUT!!!!
#define HAS_VGA 1
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 38
#define TFT_TOUCH_INT 37
#define TFT_DC 9

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef _PLATFORM_CONFIG_H_
#define _PLATFORM_CONFIG_H_
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
//#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Wyświetl plik

@ -166,19 +166,6 @@ void setup() {
// ****************************************************
void loop(void)
{
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
#else
// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2))
// || (emu_ReadKeys() & MASK_KEY_USER4 ) )
// {
// emu_printf((char*)"esc");
// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004;
// while (true) {
// ;
// }
// }
#endif
if (menuActive()) {
uint16_t bClick = emu_DebounceLocalKeys();
int action = handleMenu(bClick);

Wyświetl plik

@ -6,7 +6,7 @@
#include "font8x8.h"
#define SPICLOCK 144e6 //Just a number..max speed
#define SPICLOCK 60000000 //144e6 //Just a number..max speed
#ifdef ILI9341
#define SPI_MODE SPI_MODE0
#endif
@ -218,20 +218,35 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
int dx=0;
int dy=0;
#ifdef ST7789
#ifdef ROTATE_SCREEN
if (!flipped) {
dy += 80;
}
#else
if (flipped) {
dx += 80;
}
#endif
#endif
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
digitalWrite(_dc, 0);
SPI.transfer(TFT_CASET);
digitalWrite(_dc, 1);
SPI.transfer16(x1);
SPI.transfer16(x2);
SPI.transfer16(x1+dx);
SPI.transfer16(x2+dx);
digitalWrite(_dc, 0);
SPI.transfer(TFT_PASET);
digitalWrite(_dc, 1);
SPI.transfer16(y1);
SPI.transfer16(y2);
SPI.transfer16(y1+dy);
SPI.transfer16(y2+dy);
digitalWrite(_dc, 0);
SPI.transfer(TFT_RAMWR);
@ -325,7 +340,6 @@ void TFT_T_DMA::begin(void) {
}
}
#endif
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
cancelled = false;
@ -351,8 +365,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
//SPI.transfer(ST77XX_MADCTL_RGB);
SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST77XX_MADCTL_RGB);
#endif
#endif
}
else {
@ -361,7 +378,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#endif
#endif
}
digitalWrite(_cs, 1);
@ -942,11 +963,21 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf];
*dst++=palette16[*buf++];
}
}
else {
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf++];
}
}
}
}
@ -982,8 +1013,18 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint16_t *buf) {
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=*buf;
*dst++=*buf++;
}
}
else {
for (int i=0; i<width; i++)
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=*buf++;
}

Wyświetl plik

@ -1,5 +1,12 @@
//#define ST7789 1
#include "platform_config.h"
#ifdef TEENSYBOY
#define ST7789 1
#define ROTATE_SCREEN 1
#else
#define ILI9341 1
#endif
#define TFT_LINEARINT 1
#define LINEARINT_HACK 1

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -8,9 +8,10 @@
#define HAS_I2CKBD 1
//#define TIMER_REND 1
#define EXTRA_HEAP 0x10
// Title: < >
#define TITLE " NES Emulator "
// Title: < >
#define TITLE " NES Emulator "
#define ROMSDIR "c64"
#define emu_Init(ROM) {c64_Start(ROM); c64_Init(); }
@ -94,6 +95,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -1,8 +1,7 @@
#ifndef IOPINS_H
#define IOPINS_H
//#define OLD_LAYOUT 1
#include "platform_config.h"
#include "tft_t_dma_config.h"
#ifndef OLD_LAYOUT
@ -10,8 +9,8 @@
#ifdef ST7789
// ST7789
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255
#define TFT_TOUCH_INT 255
#define TFT_DC 9
@ -20,8 +19,8 @@
#else
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255 //38
#define TFT_TOUCH_INT 255 //37
#define TFT_DC 9
@ -29,12 +28,21 @@
#define TFT_RST 255
#endif
// PSRAM
#define PSRAM_CS 36
#define PSRAM_MOSI 35
#define PSRAM_MISO 34
#define PSRAM_SCLK 37
// SD
#define SD_SCLK 13
#define SD_MOSI 12
#define SD_MISO 11
#define SD_MISO 11
#ifdef TEENSYBOY
#define SD_CS BUILTIN_SDCARD
#else
#define SD_CS 5
#endif
// I2C keyboard
#define I2C_SCL_IO 19
@ -49,15 +57,24 @@
//#define PIN_KEY_USER3 255
//#define PIN_KEY_USER4 255
#ifdef TEENSYBOY
// Second joystick
#define PIN_JOY1_BTN 2
#define PIN_JOY1_1 14 // UP
#define PIN_JOY1_2 7 // DOWN
#define PIN_JOY1_3 6 // RIGHT
#define PIN_JOY1_4 5 // LEFT
#endif
#else // OLD LAYOUT!!!!
#else
// OLD LAYOUT!!!!
#define HAS_VGA 1
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 38
#define TFT_TOUCH_INT 37
#define TFT_DC 9

Wyświetl plik

@ -191,13 +191,13 @@ uint16_t addr,size;
Serial.println("loading");
//printf("%s,%d,%d:", filename, device, secondaryAddress);
//tft.stopDMA();
tft.stopDMA();
//emu_resetSD();
//tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) );
tft.fillScreenNoDma( RGBVAL16(0x00,0x00,0x00) );
if (emu_FileOpen(filename) == 0) {
//Serial.println("not found");
cpu.pc = 0xf530; //Jump to $F530
//tft.startDMA();
tft.startDMA();
return;
}
@ -214,7 +214,7 @@ uint16_t addr,size;
cpu.y = 0x49; //Offset for "LOADING"
cpu.pc = 0xF12B; //Print and return
emu_printf("loaded");
//tft.startDMA();
tft.startDMA();
return;
}

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef _PLATFORM_CONFIG_H_
#define _PLATFORM_CONFIG_H_
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
//#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Wyświetl plik

@ -180,19 +180,6 @@ void setup() {
// ****************************************************
void loop(void)
{
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
#else
// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2))
// || (emu_ReadKeys() & MASK_KEY_USER4 ) )
// {
// emu_printf((char*)"esc");
// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004;
// while (true) {
// ;
// }
// }
#endif
if (menuActive()) {
uint16_t bClick = emu_DebounceLocalKeys();
int action = handleMenu(bClick);

Wyświetl plik

@ -6,7 +6,7 @@
#include "font8x8.h"
#define SPICLOCK 144e6 //Just a number..max speed
#define SPICLOCK 60000000 //144e6 //Just a number..max speed
#ifdef ILI9341
#define SPI_MODE SPI_MODE0
#endif
@ -218,20 +218,35 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
int dx=0;
int dy=0;
#ifdef ST7789
#ifdef ROTATE_SCREEN
if (!flipped) {
dy += 80;
}
#else
if (flipped) {
dx += 80;
}
#endif
#endif
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
digitalWrite(_dc, 0);
SPI.transfer(TFT_CASET);
digitalWrite(_dc, 1);
SPI.transfer16(x1);
SPI.transfer16(x2);
SPI.transfer16(x1+dx);
SPI.transfer16(x2+dx);
digitalWrite(_dc, 0);
SPI.transfer(TFT_PASET);
digitalWrite(_dc, 1);
SPI.transfer16(y1);
SPI.transfer16(y2);
SPI.transfer16(y1+dy);
SPI.transfer16(y2+dy);
digitalWrite(_dc, 0);
SPI.transfer(TFT_RAMWR);
@ -325,7 +340,6 @@ void TFT_T_DMA::begin(void) {
}
}
#endif
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
cancelled = false;
@ -351,8 +365,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
//SPI.transfer(ST77XX_MADCTL_RGB);
SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST77XX_MADCTL_RGB);
#endif
#endif
}
else {
@ -361,7 +378,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#endif
#endif
}
digitalWrite(_cs, 1);
@ -942,11 +963,21 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf];
*dst++=palette16[*buf++];
}
}
else {
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf++];
}
}
}
}
@ -982,8 +1013,18 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint16_t *buf) {
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=*buf;
*dst++=*buf++;
}
}
else {
for (int i=0; i<width; i++)
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=*buf++;
}

Wyświetl plik

@ -1,5 +1,12 @@
//#define ST7789 1
#include "platform_config.h"
#ifdef TEENSYBOY
#define ST7789 1
#define ROTATE_SCREEN 1
#else
#define ILI9341 1
#endif
#define TFT_LINEARINT 1
#define LINEARINT_HACK 1

Wyświetl plik

@ -1302,6 +1302,9 @@ void vic_do(void) {
cpu.vic.rasterLine = 0;
cpu.vic.vcbase = 0;
cpu.vic.denLatch = 0;
//if (cpu.vic.rasterLine == LINECNT)
//delay(50);
//emu_DrawVsync();
} else cpu.vic.rasterLine++;

Wyświetl plik

@ -7,9 +7,10 @@
#define CUSTOM_SND 1
#define HAS_I2CKBD 1
//#define TIMER_REND 1
#define EXTRA_HEAP 0x10
// Title: < >
#define TITLE " Atari 800 Emulator "
// Title: < >
#define TITLE " Atari 800 Emulator"
#define ROMSDIR "800"
#define emu_Init(ROM) {at8_Init(); at8_Start(ROM);}
@ -109,6 +110,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -1,8 +1,7 @@
#ifndef IOPINS_H
#define IOPINS_H
//#define OLD_LAYOUT 1
#include "platform_config.h"
#include "tft_t_dma_config.h"
#ifndef OLD_LAYOUT
@ -10,8 +9,8 @@
#ifdef ST7789
// ST7789
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255
#define TFT_TOUCH_INT 255
#define TFT_DC 9
@ -20,8 +19,8 @@
#else
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255 //38
#define TFT_TOUCH_INT 255 //37
#define TFT_DC 9
@ -29,12 +28,21 @@
#define TFT_RST 255
#endif
// PSRAM
#define PSRAM_CS 36
#define PSRAM_MOSI 35
#define PSRAM_MISO 34
#define PSRAM_SCLK 37
// SD
#define SD_SCLK 13
#define SD_MOSI 12
#define SD_MISO 11
#define SD_MISO 11
#ifdef TEENSYBOY
#define SD_CS BUILTIN_SDCARD
#else
#define SD_CS 5
#endif
// I2C keyboard
#define I2C_SCL_IO 19
@ -49,15 +57,24 @@
//#define PIN_KEY_USER3 255
//#define PIN_KEY_USER4 255
#ifdef TEENSYBOY
// Second joystick
#define PIN_JOY1_BTN 2
#define PIN_JOY1_1 14 // UP
#define PIN_JOY1_2 7 // DOWN
#define PIN_JOY1_3 6 // RIGHT
#define PIN_JOY1_4 5 // LEFT
#endif
#else // OLD LAYOUT!!!!
#else
// OLD LAYOUT!!!!
#define HAS_VGA 1
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 38
#define TFT_TOUCH_INT 37
#define TFT_DC 9

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef _PLATFORM_CONFIG_H_
#define _PLATFORM_CONFIG_H_
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
//#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Wyświetl plik

@ -166,19 +166,6 @@ void setup() {
// ****************************************************
void loop(void)
{
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
#else
// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2))
// || (emu_ReadKeys() & MASK_KEY_USER4 ) )
// {
// emu_printf((char*)"esc");
// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004;
// while (true) {
// ;
// }
// }
#endif
if (menuActive()) {
uint16_t bClick = emu_DebounceLocalKeys();
int action = handleMenu(bClick);

Wyświetl plik

@ -6,7 +6,7 @@
#include "font8x8.h"
#define SPICLOCK 144e6 //Just a number..max speed
#define SPICLOCK 60000000 //144e6 //Just a number..max speed
#ifdef ILI9341
#define SPI_MODE SPI_MODE0
#endif
@ -218,20 +218,35 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
int dx=0;
int dy=0;
#ifdef ST7789
#ifdef ROTATE_SCREEN
if (!flipped) {
dy += 80;
}
#else
if (flipped) {
dx += 80;
}
#endif
#endif
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
digitalWrite(_dc, 0);
SPI.transfer(TFT_CASET);
digitalWrite(_dc, 1);
SPI.transfer16(x1);
SPI.transfer16(x2);
SPI.transfer16(x1+dx);
SPI.transfer16(x2+dx);
digitalWrite(_dc, 0);
SPI.transfer(TFT_PASET);
digitalWrite(_dc, 1);
SPI.transfer16(y1);
SPI.transfer16(y2);
SPI.transfer16(y1+dy);
SPI.transfer16(y2+dy);
digitalWrite(_dc, 0);
SPI.transfer(TFT_RAMWR);
@ -325,7 +340,6 @@ void TFT_T_DMA::begin(void) {
}
}
#endif
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
cancelled = false;
@ -351,8 +365,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
//SPI.transfer(ST77XX_MADCTL_RGB);
SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST77XX_MADCTL_RGB);
#endif
#endif
}
else {
@ -361,7 +378,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#endif
#endif
}
digitalWrite(_cs, 1);
@ -942,11 +963,21 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf];
*dst++=palette16[*buf++];
}
}
else {
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf++];
}
}
}
}
@ -982,8 +1013,18 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint16_t *buf) {
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=*buf;
*dst++=*buf++;
}
}
else {
for (int i=0; i<width; i++)
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=*buf++;
}

Wyświetl plik

@ -1,5 +1,12 @@
//#define ST7789 1
#include "platform_config.h"
#ifdef TEENSYBOY
#define ST7789 1
#define ROTATE_SCREEN 1
#else
#define ILI9341 1
#endif
#define TFT_LINEARINT 1
#define LINEARINT_HACK 1

Wyświetl plik

@ -1,4 +1,4 @@
PROGMEM const uint16_t bmpjoy[] = {
const uint16_t PROGMEM bmpjoy[] = {
0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000,
0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,

Wyświetl plik

@ -1,4 +1,4 @@
PROGMEM const uint16_t bmptft[] = {
const uint16_t PROGMEM bmptft[] = {
0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861,
0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861,

Wyświetl plik

@ -1,4 +1,4 @@
PROGMEM const uint16_t bmpvbar[] = {
const uint16_t PROGMEM bmpvbar[] = {
0x0020,0x0094,
0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861,

Wyświetl plik

@ -1,4 +1,4 @@
PROGMEM const uint16_t bmpvga[] = {
const uint16_t PROGMEM bmpvga[] = {
0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861,
0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861,

Wyświetl plik

@ -11,8 +11,10 @@
#define HAS_I2CKBD 1
//#define TIMER_REND 1
// Title: < >
#define TITLE " 8086 PC Emulator "
#define EXTRA_HEAP 0x10
// Title: < > >
#define TITLE " 8086 PC Emulator"
#define ROMSDIR "/pc"
#define emu_Init(ROM) {apc_Init(); apc_Start(ROM);}
@ -112,6 +114,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -1,8 +1,7 @@
#ifndef IOPINS_H
#define IOPINS_H
//#define OLD_LAYOUT 1
#include "platform_config.h"
#include "tft_t_dma_config.h"
#ifndef OLD_LAYOUT
@ -10,8 +9,8 @@
#ifdef ST7789
// ST7789
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255
#define TFT_TOUCH_INT 255
#define TFT_DC 9
@ -20,8 +19,8 @@
#else
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255 //38
#define TFT_TOUCH_INT 255 //37
#define TFT_DC 9
@ -29,12 +28,21 @@
#define TFT_RST 255
#endif
// PSRAM
#define PSRAM_CS 36
#define PSRAM_MOSI 35
#define PSRAM_MISO 34
#define PSRAM_SCLK 37
// SD
#define SD_SCLK 13
#define SD_MOSI 12
#define SD_MISO 11
#define SD_MISO 11
#ifdef TEENSYBOY
#define SD_CS BUILTIN_SDCARD
#else
#define SD_CS 5
#endif
// I2C keyboard
#define I2C_SCL_IO 19
@ -49,15 +57,24 @@
//#define PIN_KEY_USER3 255
//#define PIN_KEY_USER4 255
#ifdef TEENSYBOY
// Second joystick
#define PIN_JOY1_BTN 2
#define PIN_JOY1_1 14 // UP
#define PIN_JOY1_2 7 // DOWN
#define PIN_JOY1_3 6 // RIGHT
#define PIN_JOY1_4 5 // LEFT
#endif
#else // OLD LAYOUT!!!!
#else
// OLD LAYOUT!!!!
#define HAS_VGA 1
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 38
#define TFT_TOUCH_INT 37
#define TFT_DC 9

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef _PLATFORM_CONFIG_H_
#define _PLATFORM_CONFIG_H_
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
//#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Wyświetl plik

@ -174,19 +174,6 @@ static unsigned char col=0;
// ****************************************************
void loop(void)
{
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
#else
// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2))
// || (emu_ReadKeys() & MASK_KEY_USER4 ) )
// {
// emu_printf((char*)"esc");
// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004;
// while (true) {
// ;
// }
// }
#endif
if (menuActive()) {
uint16_t bClick = emu_DebounceLocalKeys();
int action = handleMenu(bClick);

Wyświetl plik

@ -6,7 +6,7 @@
#include "font8x8.h"
#define SPICLOCK 144e6 //Just a number..max speed
#define SPICLOCK 60000000 //144e6 //Just a number..max speed
#ifdef ILI9341
#define SPI_MODE SPI_MODE0
#endif
@ -218,20 +218,35 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
int dx=0;
int dy=0;
#ifdef ST7789
#ifdef ROTATE_SCREEN
if (!flipped) {
dy += 80;
}
#else
if (flipped) {
dx += 80;
}
#endif
#endif
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
digitalWrite(_dc, 0);
SPI.transfer(TFT_CASET);
digitalWrite(_dc, 1);
SPI.transfer16(x1);
SPI.transfer16(x2);
SPI.transfer16(x1+dx);
SPI.transfer16(x2+dx);
digitalWrite(_dc, 0);
SPI.transfer(TFT_PASET);
digitalWrite(_dc, 1);
SPI.transfer16(y1);
SPI.transfer16(y2);
SPI.transfer16(y1+dy);
SPI.transfer16(y2+dy);
digitalWrite(_dc, 0);
SPI.transfer(TFT_RAMWR);
@ -325,7 +340,6 @@ void TFT_T_DMA::begin(void) {
}
}
#endif
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
cancelled = false;
@ -351,8 +365,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
//SPI.transfer(ST77XX_MADCTL_RGB);
SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST77XX_MADCTL_RGB);
#endif
#endif
}
else {
@ -361,7 +378,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#endif
#endif
}
digitalWrite(_cs, 1);
@ -942,11 +963,21 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf];
*dst++=palette16[*buf++];
}
}
else {
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf++];
}
}
}
}
@ -982,8 +1013,18 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint16_t *buf) {
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=*buf;
*dst++=*buf++;
}
}
else {
for (int i=0; i<width; i++)
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=*buf++;
}

Wyświetl plik

@ -1,5 +1,12 @@
//#define ST7789 1
#include "platform_config.h"
#ifdef TEENSYBOY
#define ST7789 1
#define ROTATE_SCREEN 1
#else
#define ILI9341 1
#endif
#define TFT_LINEARINT 1
#define LINEARINT_HACK 1

Wyświetl plik

@ -7,8 +7,10 @@
#define HAS_I2CKBD 1
//#define TIMER_REND 1
// Title: < >
#define TITLE " ZX81/ZX80 Emulator "
#define EXTRA_HEAP 0x10
// Title: < >
#define TITLE " ZX81/ZX80 Emulator"
#define ROMSDIR "z81"
#define emu_Init(ROM) {z81_Start(ROM); z81_Init(); }
@ -109,6 +111,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -1,8 +1,7 @@
#ifndef IOPINS_H
#define IOPINS_H
//#define OLD_LAYOUT 1
#include "platform_config.h"
#include "tft_t_dma_config.h"
#ifndef OLD_LAYOUT
@ -10,8 +9,8 @@
#ifdef ST7789
// ST7789
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255
#define TFT_TOUCH_INT 255
#define TFT_DC 9
@ -20,8 +19,8 @@
#else
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 255 //38
#define TFT_TOUCH_INT 255 //37
#define TFT_DC 9
@ -29,12 +28,21 @@
#define TFT_RST 255
#endif
// PSRAM
#define PSRAM_CS 36
#define PSRAM_MOSI 35
#define PSRAM_MISO 34
#define PSRAM_SCLK 37
// SD
#define SD_SCLK 13
#define SD_MOSI 12
#define SD_MISO 11
#define SD_MISO 11
#ifdef TEENSYBOY
#define SD_CS BUILTIN_SDCARD
#else
#define SD_CS 5
#endif
// I2C keyboard
#define I2C_SCL_IO 19
@ -49,15 +57,24 @@
//#define PIN_KEY_USER3 255
//#define PIN_KEY_USER4 255
#ifdef TEENSYBOY
// Second joystick
#define PIN_JOY1_BTN 2
#define PIN_JOY1_1 14 // UP
#define PIN_JOY1_2 7 // DOWN
#define PIN_JOY1_3 6 // RIGHT
#define PIN_JOY1_4 5 // LEFT
#endif
#else // OLD LAYOUT!!!!
#else
// OLD LAYOUT!!!!
#define HAS_VGA 1
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 38
#define TFT_TOUCH_INT 37
#define TFT_DC 9

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef _PLATFORM_CONFIG_H_
#define _PLATFORM_CONFIG_H_
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
//#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Wyświetl plik

@ -166,19 +166,6 @@ void setup() {
// ****************************************************
void loop(void)
{
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
#else
// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2))
// || (emu_ReadKeys() & MASK_KEY_USER4 ) )
// {
// emu_printf((char*)"esc");
// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004;
// while (true) {
// ;
// }
// }
#endif
if (menuActive()) {
uint16_t bClick = emu_DebounceLocalKeys();
int action = handleMenu(bClick);

Wyświetl plik

@ -6,7 +6,7 @@
#include "font8x8.h"
#define SPICLOCK 144e6 //Just a number..max speed
#define SPICLOCK 60000000 //144e6 //Just a number..max speed
#ifdef ILI9341
#define SPI_MODE SPI_MODE0
#endif
@ -218,20 +218,35 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
int dx=0;
int dy=0;
#ifdef ST7789
#ifdef ROTATE_SCREEN
if (!flipped) {
dy += 80;
}
#else
if (flipped) {
dx += 80;
}
#endif
#endif
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
digitalWrite(_dc, 0);
SPI.transfer(TFT_CASET);
digitalWrite(_dc, 1);
SPI.transfer16(x1);
SPI.transfer16(x2);
SPI.transfer16(x1+dx);
SPI.transfer16(x2+dx);
digitalWrite(_dc, 0);
SPI.transfer(TFT_PASET);
digitalWrite(_dc, 1);
SPI.transfer16(y1);
SPI.transfer16(y2);
SPI.transfer16(y1+dy);
SPI.transfer16(y2+dy);
digitalWrite(_dc, 0);
SPI.transfer(TFT_RAMWR);
@ -325,7 +340,6 @@ void TFT_T_DMA::begin(void) {
}
}
#endif
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
cancelled = false;
@ -351,8 +365,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
//SPI.transfer(ST77XX_MADCTL_RGB);
SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST77XX_MADCTL_RGB);
#endif
#endif
}
else {
@ -361,7 +378,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#endif
#endif
}
digitalWrite(_cs, 1);
@ -942,11 +963,21 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf];
*dst++=palette16[*buf++];
}
}
else {
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf++];
}
}
}
}
@ -982,8 +1013,18 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint16_t *buf) {
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=*buf;
*dst++=*buf++;
}
}
else {
for (int i=0; i<width; i++)
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=*buf++;
}

Wyświetl plik

@ -1,5 +1,12 @@
//#define ST7789 1
#include "platform_config.h"
#ifdef TEENSYBOY
#define ST7789 1
#define ROTATE_SCREEN 1
#else
#define ILI9341 1
#endif
#define TFT_LINEARINT 1
#define LINEARINT_HACK 1

Wyświetl plik

@ -1,4 +1,4 @@
PROGMEM const uint16_t bmpjoy[] = {
const uint16_t PROGMEM bmpjoy[] = {
0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000,
0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,

Wyświetl plik

@ -1,4 +1,4 @@
PROGMEM const uint16_t bmptft[] = {
const uint16_t PROGMEM bmptft[] = {
0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861,
0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861,

Wyświetl plik

@ -1,4 +1,4 @@
PROGMEM const uint16_t bmpvbar[] = {
const uint16_t PROGMEM bmpvbar[] = {
0x0020,0x0094,
0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861,

Wyświetl plik

@ -1,4 +1,4 @@
PROGMEM const uint16_t bmpvga[] = {
const uint16_t PROGMEM bmpvga[] = {
0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861,
0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861,

Wyświetl plik

@ -120,6 +120,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -1,8 +1,7 @@
#ifndef IOPINS_H
#define IOPINS_H
//#define OLD_LAYOUT 1
#include "platform_config.h"
#include "tft_t_dma_config.h"
#ifndef OLD_LAYOUT
@ -37,10 +36,13 @@
// SD
#define SD_SCLK 13
#define SD_MOSI 11
#define SD_MISO 12
//#define SD_CS BUILTIN_SDCARD
#define SD_MOSI 12
#define SD_MISO 11
#ifdef TEENSYBOY
#define SD_CS BUILTIN_SDCARD
#else
#define SD_CS 5
#endif
// I2C keyboard
#define I2C_SCL_IO 19
@ -55,8 +57,17 @@
//#define PIN_KEY_USER3 255
//#define PIN_KEY_USER4 255
#ifdef TEENSYBOY
// Second joystick
#define PIN_JOY1_BTN 2
#define PIN_JOY1_1 14 // UP
#define PIN_JOY1_2 7 // DOWN
#define PIN_JOY1_3 6 // RIGHT
#define PIN_JOY1_4 5 // LEFT
#endif
#else // OLD LAYOUT!!!!
#else
// OLD LAYOUT!!!!
#define HAS_VGA 1

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef _PLATFORM_CONFIG_H_
#define _PLATFORM_CONFIG_H_
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Wyświetl plik

@ -4,13 +4,21 @@
#include "psram_t.h"
Page PSRAM_T::pages[MAX_PAGES];
uint8_t PSRAM_T::nbPages=0;
int8_t PSRAM_T::top=0;
int8_t PSRAM_T::last=0;
#ifdef HAS_PSRAM
#include <SPI.h>
#include <DMAChannel.h>
#define SPI SPI2
//#define SPICLOCK 104000000
#define SPICLOCK 60000000
#define SPICLOCK 70000000
//#define SPICLOCK 144e6 //Just a number..max speed
#define SPI_MODE SPI_MODE0
@ -20,10 +28,6 @@
uint8_t PSRAM_T::_cs, PSRAM_T::_miso, PSRAM_T::_mosi, PSRAM_T::_sclk;
Page PSRAM_T::pages[MAX_PAGES];
uint8_t PSRAM_T::nbPages=0;
int8_t PSRAM_T::top=0;
int8_t PSRAM_T::last=0;
PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso)
@ -43,19 +47,20 @@ void PSRAM_T::begin(void)
SPI.setMISO(_miso);
SPI.setSCK(_sclk);
SPI.begin();
//SPI.setClockDivider(SPI_CLOCK_DIV2);
delay(1);
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
SPI.transfer(0x66);
digitalWrite(_cs, 1);
SPI.endTransaction();
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
SPI.transfer(0x99);
digitalWrite(_cs, 1);
SPI.endTransaction();
digitalWrite(_cs, 1);
delayMicroseconds(20);
}
@ -64,8 +69,8 @@ uint8_t PSRAM_T::psram_read(uint32_t addr)
{
uint8_t val=0;
digitalWrite(_cs, 0);
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
SPI.transfer(RAM_READ);
SPI.transfer((addr>>16)&0xff);
SPI.transfer((addr>>8)&0xff);
@ -73,17 +78,17 @@ uint8_t PSRAM_T::psram_read(uint32_t addr)
#if RAM_READ == 0xB
SPI.transfer(0xFF);
#endif
val = SPI.transfer(0xFF);
digitalWrite(_cs, 1);
val = SPI.transfer(0xFF);
SPI.endTransaction();
digitalWrite(_cs, 1);
return val;
}
void PSRAM_T::psram_read_n(uint32_t addr, uint8_t * val, int n)
{
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
SPI.transfer(RAM_READ);
SPI.transfer((addr>>16)&0xff);
SPI.transfer((addr>>8)&0xff);
@ -98,22 +103,22 @@ void PSRAM_T::psram_read_n(uint32_t addr, uint8_t * val, int n)
}
*/
SPI.transfer(val,n);
digitalWrite(_cs, 1);
SPI.endTransaction();
digitalWrite(_cs, 1);
}
void PSRAM_T::psram_write(uint32_t addr, uint8_t val)
{
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
SPI.transfer(RAM_WRITE);
SPI.transfer((addr>>16)&0xff);
SPI.transfer((addr>>8)&0xff);
SPI.transfer(addr&0xff);
SPI.transfer(val);
digitalWrite(_cs, 1);
SPI.endTransaction();
digitalWrite(_cs, 1);
}
static uint8_t resp[PAGE_SIZE];
@ -121,8 +126,8 @@ static uint8_t resp[PAGE_SIZE];
void PSRAM_T::psram_write_n(uint32_t addr, uint8_t * val, int n)
{
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
SPI.transfer(RAM_WRITE);
SPI.transfer((addr>>16)&0xff);
SPI.transfer((addr>>8)&0xff);
@ -134,8 +139,8 @@ void PSRAM_T::psram_write_n(uint32_t addr, uint8_t * val, int n)
}
*/
SPI.transfer(val,&resp[0],n);
digitalWrite(_cs, 1);
SPI.endTransaction();
SPI.endTransaction();
digitalWrite(_cs, 1);
}
@ -230,6 +235,35 @@ Serial.printf("D") ; Serial.flush();
#else
#include "emuapi.h"
PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso)
{
}
void PSRAM_T::begin(void)
{
emu_FileTempInit();
}
void PSRAM_T::psram_read_n(uint32_t addr, uint8_t * val, int n)
{
emu_FileTempRead(addr,val,n);
}
void PSRAM_T::psram_write(uint32_t addr, uint8_t val)
{
emu_FileTempWrite(addr,val);
}
#endif
void PSRAM_T::pswrite(uint32_t addr, uint8_t val)
{
@ -244,13 +278,15 @@ void PSRAM_T::pswrite(uint32_t addr, uint8_t val)
}
}
#include "emuapi.h"
uint8_t PSRAM_T::psread(uint32_t addr)
{
//return psram_read(addr);
//uint8_t val = psram_read(addr);
//return val;
uint32_t curPage=addr&(~(PAGE_SIZE-1));
uint32_t offs = addr&(PAGE_SIZE-1);
for (int i=0; i<nbPages; i++) {
if (pages[i].pageid == curPage) {
@ -270,7 +306,7 @@ uint8_t PSRAM_T::psread(uint32_t addr)
pages[i].next = top;
pages[top].prev = i;
top = i;
return pages[i].page[addr&(PAGE_SIZE-1)];
return pages[top].page[offs];
}
}
if (nbPages<MAX_PAGES)
@ -296,6 +332,58 @@ uint8_t PSRAM_T::psread(uint32_t addr)
}
//emu_printi(curPage);
psram_read_n(curPage,&(pages[top].page[0]),PAGE_SIZE);
return pages[top].page[addr&(PAGE_SIZE-1)];
return pages[top].page[offs];
}
uint16_t PSRAM_T::psread_w(uint32_t addr)
{
uint32_t curPage=addr&(~(PAGE_SIZE-1));
uint32_t offs = addr&(PAGE_SIZE-1);
for (int i=0; i<nbPages; i++) {
if (pages[i].pageid == curPage) {
if ( (pages[i].prev != i) && (pages[i].next != i) ) {
pages[pages[i].prev].next = pages[i].next;
pages[pages[i].next].prev = pages[i].prev;
}
else if (pages[i].next != i) {
pages[pages[i].next].prev = i;
}
else if (pages[i].prev != i) {
pages[pages[i].prev].next = pages[i].prev;
last = pages[i].prev;
}
// last page accessed to top
pages[i].prev = i; //-1;
pages[i].next = top;
pages[top].prev = i;
top = i;
return (pages[top].page[offs+1]<<8) + pages[top].page[offs];
}
}
if (nbPages<MAX_PAGES)
{
// add at top
pages[nbPages].pageid = curPage;
pages[nbPages].prev = nbPages; //-1;
pages[nbPages].next = top;
pages[top].prev = nbPages;
top = nbPages;
nbPages++;
}
else {
// replace last and move to top
int n = pages[last].prev;
pages[n].next = n; //-1;
pages[last].pageid = curPage;
pages[last].prev = last; //-1;
pages[last].next = top;
pages[top].prev = last;
top = last;
last = n;
}
//emu_printi(curPage);
psram_read_n(curPage,&(pages[top].page[0]),PAGE_SIZE);
return (pages[top].page[offs+1]<<8) + pages[top].page[offs];
}

Wyświetl plik

@ -7,9 +7,15 @@
#ifdef __cplusplus
#include <Arduino.h>
#include "platform_config.h"
#define PAGE_SIZE 16 //16 //32 //2048 //1024
#ifdef HAS_PSRAM
#define PAGE_SIZE 16 //32 //2048 //1024
#define MAX_PAGES 8
#else
#define PAGE_SIZE 256
#define MAX_PAGES 8
#endif
struct Page {
uint8_t page[PAGE_SIZE];
@ -25,7 +31,8 @@ class PSRAM_T
void begin(void);
void pswrite(uint32_t addr, uint8_t val);
uint8_t psread(uint32_t addr);
uint16_t psread_w(uint32_t addr);
private:
static uint8_t psram_read(uint32_t addr);
static void psram_read_n(uint32_t addr, uint8_t * val, int n);

Wyświetl plik

@ -174,19 +174,6 @@ void setup() {
// ****************************************************
void loop(void)
{
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
#else
// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2))
// || (emu_ReadKeys() & MASK_KEY_USER4 ) )
// {
// emu_printf((char*)"esc");
// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004;
// while (true) {
// ;
// }
// }
#endif
if (menuActive()) {
uint16_t bClick = emu_DebounceLocalKeys();
int action = handleMenu(bClick);

Wyświetl plik

@ -6,8 +6,7 @@
#include "font8x8.h"
//#define SPICLOCK 144e6 //Just a number..max speed
#define SPICLOCK 60000000
#define SPICLOCK 60000000 //144e6 //Just a number..max speed
#ifdef ILI9341
#define SPI_MODE SPI_MODE0
#endif
@ -219,20 +218,35 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
int dx=0;
int dy=0;
#ifdef ST7789
#ifdef ROTATE_SCREEN
if (!flipped) {
dy += 80;
}
#else
if (flipped) {
dx += 80;
}
#endif
#endif
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
digitalWrite(_dc, 0);
SPI.transfer(TFT_CASET);
digitalWrite(_dc, 1);
SPI.transfer16(x1);
SPI.transfer16(x2);
SPI.transfer16(x1+dx);
SPI.transfer16(x2+dx);
digitalWrite(_dc, 0);
SPI.transfer(TFT_PASET);
digitalWrite(_dc, 1);
SPI.transfer16(y1);
SPI.transfer16(y2);
SPI.transfer16(y1+dy);
SPI.transfer16(y2+dy);
digitalWrite(_dc, 0);
SPI.transfer(TFT_RAMWR);
@ -326,7 +340,6 @@ void TFT_T_DMA::begin(void) {
}
}
#endif
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
cancelled = false;
@ -352,8 +365,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
//SPI.transfer(ST77XX_MADCTL_RGB);
SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST77XX_MADCTL_RGB);
#endif
#endif
}
else {
@ -362,7 +378,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#endif
#endif
}
digitalWrite(_cs, 1);
@ -943,11 +963,21 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf];
*dst++=palette16[*buf++];
}
}
else {
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf++];
}
}
}
}
@ -983,8 +1013,18 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint16_t *buf) {
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=*buf;
*dst++=*buf++;
}
}
else {
for (int i=0; i<width; i++)
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=*buf++;
}

Wyświetl plik

@ -1,5 +1,12 @@
//#define ST7789 1
#include "platform_config.h"
#ifdef TEENSYBOY
#define ST7789 1
#define ROTATE_SCREEN 1
#else
#define ILI9341 1
#endif
#define TFT_LINEARINT 1
#define LINEARINT_HACK 1

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -7,8 +7,10 @@
#define HAS_I2CKBD 1
//#define TIMER_REND 1
// Title: < >
#define TITLE " Coleco Emulator "
#define EXTRA_HEAP 0x10
// Title: < >
#define TITLE " Coleco Emulator"
#define ROMSDIR "coleco"
#define emu_Init(ROM) {coc_Init();coc_Start(ROM);}
@ -99,6 +101,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -1,8 +1,7 @@
#ifndef IOPINS_H
#define IOPINS_H
//#define OLD_LAYOUT 1
#include "platform_config.h"
#include "tft_t_dma_config.h"
#ifndef OLD_LAYOUT
@ -29,12 +28,21 @@
#define TFT_RST 255
#endif
// PSRAM
#define PSRAM_CS 36
#define PSRAM_MOSI 35
#define PSRAM_MISO 34
#define PSRAM_SCLK 37
// SD
#define SD_SCLK 13
#define SD_MOSI 11
#define SD_MISO 12
#define SD_MOSI 12
#define SD_MISO 11
#ifdef TEENSYBOY
#define SD_CS BUILTIN_SDCARD
#else
#define SD_CS 5
#endif
// I2C keyboard
#define I2C_SCL_IO 19
@ -49,15 +57,24 @@
//#define PIN_KEY_USER3 255
//#define PIN_KEY_USER4 255
#ifdef TEENSYBOY
// Second joystick
#define PIN_JOY1_BTN 2
#define PIN_JOY1_1 14 // UP
#define PIN_JOY1_2 7 // DOWN
#define PIN_JOY1_3 6 // RIGHT
#define PIN_JOY1_4 5 // LEFT
#endif
#else // OLD LAYOUT!!!!
#else
// OLD LAYOUT!!!!
#define HAS_VGA 1
// ILI9341
#define TFT_SCLK 13
#define TFT_MOSI 12
#define TFT_MISO 11
#define TFT_MOSI 11
#define TFT_MISO 12
#define TFT_TOUCH_CS 38
#define TFT_TOUCH_INT 37
#define TFT_DC 9

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef _PLATFORM_CONFIG_H_
#define _PLATFORM_CONFIG_H_
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
//#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Wyświetl plik

@ -166,19 +166,6 @@ void setup() {
// ****************************************************
void loop(void)
{
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
#else
// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2))
// || (emu_ReadKeys() & MASK_KEY_USER4 ) )
// {
// emu_printf((char*)"esc");
// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004;
// while (true) {
// ;
// }
// }
#endif
if (menuActive()) {
uint16_t bClick = emu_DebounceLocalKeys();
int action = handleMenu(bClick);

Wyświetl plik

@ -6,7 +6,7 @@
#include "font8x8.h"
#define SPICLOCK 144e6 //Just a number..max speed
#define SPICLOCK 60000000 //144e6 //Just a number..max speed
#ifdef ILI9341
#define SPI_MODE SPI_MODE0
#endif
@ -218,20 +218,35 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
int dx=0;
int dy=0;
#ifdef ST7789
#ifdef ROTATE_SCREEN
if (!flipped) {
dy += 80;
}
#else
if (flipped) {
dx += 80;
}
#endif
#endif
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
digitalWrite(_dc, 0);
SPI.transfer(TFT_CASET);
digitalWrite(_dc, 1);
SPI.transfer16(x1);
SPI.transfer16(x2);
SPI.transfer16(x1+dx);
SPI.transfer16(x2+dx);
digitalWrite(_dc, 0);
SPI.transfer(TFT_PASET);
digitalWrite(_dc, 1);
SPI.transfer16(y1);
SPI.transfer16(y2);
SPI.transfer16(y1+dy);
SPI.transfer16(y2+dy);
digitalWrite(_dc, 0);
SPI.transfer(TFT_RAMWR);
@ -325,7 +340,6 @@ void TFT_T_DMA::begin(void) {
}
}
#endif
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
cancelled = false;
@ -351,8 +365,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
//SPI.transfer(ST77XX_MADCTL_RGB);
SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST77XX_MADCTL_RGB);
#endif
#endif
}
else {
@ -361,7 +378,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#endif
#endif
}
digitalWrite(_cs, 1);
@ -942,11 +963,21 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf];
*dst++=palette16[*buf++];
}
}
else {
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=palette16[*buf++];
}
}
}
}
@ -982,8 +1013,18 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint16_t *buf) {
}
#endif
}
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=*buf;
*dst++=*buf++;
}
}
else {
for (int i=0; i<width; i++)
if (width <= TFT_WIDTH) {
dst += (TFT_WIDTH-width)/2;
}
for (int i=0; i<width; i++)
{
*dst++=*buf++;
}

Wyświetl plik

@ -29,7 +29,7 @@
#define TFT_REALHEIGHT 240
#endif
#ifdef ST7789
#define TFT_WIDTH 256
#define TFT_WIDTH 240
#define TFT_REALWIDTH 240
#define TFT_REALHEIGHT 240
#endif

Wyświetl plik

@ -1,5 +1,12 @@
//#define ST7789 1
#include "platform_config.h"
#ifdef TEENSYBOY
#define ST7789 1
#define ROTATE_SCREEN 1
#else
#define ILI9341 1
#endif
#define TFT_LINEARINT 1
#define LINEARINT_HACK 1

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -0,0 +1,41 @@
const uint16_t PROGMEM bmpjoy[] = {
0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000,
0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,
0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,
0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000};

Wyświetl plik

@ -0,0 +1,40 @@
const uint16_t PROGMEM bmptft[] = {
0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861,
0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861,
0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861,
0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861,
0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e,
0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d,
0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc,
0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c,
0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c,
0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b,
0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b,
0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c,
0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c,
0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b,
0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb,
0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc,
0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c,
0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861,
0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861,
0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861,
0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861,
0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861};

Wyświetl plik

@ -0,0 +1,152 @@
const uint16_t PROGMEM bmpvbar[] = {
0x0020,0x0094,
0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861,
0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861,
0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861,
0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861,
0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430,
0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d,
0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd,
0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc,
0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc,
0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc,
0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc,
0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc,
0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc,
0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc,
0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc,
0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc,
0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc,
0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc,
0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc,
0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc,
0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c,
0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c,
0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c,
0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c,
0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c,
0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c,
0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc,
0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc,
0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc,
0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc,
0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc,
0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc,
0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc,
0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d,
0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c,
0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861,
0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861,
0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861,
0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861,
0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861};

Wyświetl plik

@ -0,0 +1,40 @@
const uint16_t PROGMEM bmpvga[] = {
0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861,
0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861,
0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861,
0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861,
0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e,
0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d,
0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc,
0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c,
0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c,
0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b,
0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b,
0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c,
0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c,
0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b,
0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb,
0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc,
0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c,
0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861,
0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861,
0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861,
0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861,
0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861};

Wyświetl plik

@ -117,6 +117,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -1,8 +1,7 @@
#ifndef IOPINS_H
#define IOPINS_H
//#define OLD_LAYOUT 1
#include "platform_config.h"
#include "tft_t_dma_config.h"
#ifndef OLD_LAYOUT
@ -37,10 +36,13 @@
// SD
#define SD_SCLK 13
#define SD_MOSI 11
#define SD_MISO 12
//#define SD_CS BUILTIN_SDCARD
#define SD_MOSI 12
#define SD_MISO 11
#ifdef TEENSYBOY
#define SD_CS BUILTIN_SDCARD
#else
#define SD_CS 5
#endif
// I2C keyboard
#define I2C_SCL_IO 19
@ -55,8 +57,17 @@
//#define PIN_KEY_USER3 255
//#define PIN_KEY_USER4 255
#ifdef TEENSYBOY
// Second joystick
#define PIN_JOY1_BTN 2
#define PIN_JOY1_1 14 // UP
#define PIN_JOY1_2 7 // DOWN
#define PIN_JOY1_3 6 // RIGHT
#define PIN_JOY1_4 5 // LEFT
#endif
#else // OLD LAYOUT!!!!
#else
// OLD LAYOUT!!!!
#define HAS_VGA 1

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef _PLATFORM_CONFIG_H_
#define _PLATFORM_CONFIG_H_
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Wyświetl plik

@ -4,6 +4,14 @@
#include "psram_t.h"
Page PSRAM_T::pages[MAX_PAGES];
uint8_t PSRAM_T::nbPages=0;
int8_t PSRAM_T::top=0;
int8_t PSRAM_T::last=0;
#ifdef HAS_PSRAM
#include <SPI.h>
#include <DMAChannel.h>
@ -20,10 +28,6 @@
uint8_t PSRAM_T::_cs, PSRAM_T::_miso, PSRAM_T::_mosi, PSRAM_T::_sclk;
Page PSRAM_T::pages[MAX_PAGES];
uint8_t PSRAM_T::nbPages=0;
int8_t PSRAM_T::top=0;
int8_t PSRAM_T::last=0;
PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso)
@ -231,6 +235,35 @@ Serial.printf("D") ; Serial.flush();
#else
#include "emuapi.h"
PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso)
{
}
void PSRAM_T::begin(void)
{
emu_FileTempInit();
}
void PSRAM_T::psram_read_n(uint32_t addr, uint8_t * val, int n)
{
emu_FileTempRead(addr,val,n);
}
void PSRAM_T::psram_write(uint32_t addr, uint8_t val)
{
emu_FileTempWrite(addr,val);
}
#endif
void PSRAM_T::pswrite(uint32_t addr, uint8_t val)
{

Wyświetl plik

@ -7,9 +7,15 @@
#ifdef __cplusplus
#include <Arduino.h>
#include "platform_config.h"
#define PAGE_SIZE 16 //16 //32 //2048 //1024
#ifdef HAS_PSRAM
#define PAGE_SIZE 16 //32 //2048 //1024
#define MAX_PAGES 8
#else
#define PAGE_SIZE 256
#define MAX_PAGES 8
#endif
struct Page {
uint8_t page[PAGE_SIZE];

Wyświetl plik

@ -196,7 +196,7 @@ static uint8 nta_buf[0x400]; /* Plane A / Window line buffer *
static uint8 ntb_buf[0x400]; /* Plane B line buffer */
static uint8 obj_buf[0x400]; /* Object layer line buffer */
//static uint16 line_buf[0x400];
static uint16 line_buf[0x400];
@ -366,9 +366,9 @@ void render_line(int line)
//remap_16(lb+0x20, line_buf, pixel_16, width);
//emu_DrawLine16(line_buf, width ,256, line);
remap_16(lb+0x20, emu_LineBuffer(line), pixel_16, width);
remap_16(lb+0x20, line_buf, pixel_16, width);
emu_DrawLine16(line_buf, width ,256, line);
//remap_16(lb+0x20, emu_LineBuffer(line), pixel_16, width);
}
/*--------------------------------------------------------------------------*/
/* Window rendering */

Wyświetl plik

@ -175,19 +175,6 @@ void setup() {
// ****************************************************
void loop(void)
{
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
#else
// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2))
// || (emu_ReadKeys() & MASK_KEY_USER4 ) )
// {
// emu_printf((char*)"esc");
// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004;
// while (true) {
// ;
// }
// }
#endif
if (menuActive()) {
uint16_t bClick = emu_DebounceLocalKeys();
int action = handleMenu(bClick);

Wyświetl plik

@ -5,8 +5,8 @@
#include "TFT_T_DMA.h"
#include "font8x8.h"
//#define SPICLOCK 144e6 //Just a number..max speed
#define SPICLOCK 60000000
#define SPICLOCK 60000000 //144e6 //Just a number..max speed
#ifdef ILI9341
#define SPI_MODE SPI_MODE0
#endif
@ -33,7 +33,7 @@
static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH];
static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH];
static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH];
static uint16_t fb3[LINES_PER_BLOCK*TFT_WIDTH];
static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH];
static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3};
#else
static uint16_t * blocks[NR_OF_BLOCK];
@ -218,20 +218,35 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
int dx=0;
int dy=0;
#ifdef ST7789
#ifdef ROTATE_SCREEN
if (!flipped) {
dy += 80;
}
#else
if (flipped) {
dx += 80;
}
#endif
#endif
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
digitalWrite(_dc, 0);
SPI.transfer(TFT_CASET);
digitalWrite(_dc, 1);
SPI.transfer16(x1);
SPI.transfer16(x2);
SPI.transfer16(x1+dx);
SPI.transfer16(x2+dx);
digitalWrite(_dc, 0);
SPI.transfer(TFT_PASET);
digitalWrite(_dc, 1);
SPI.transfer16(y1);
SPI.transfer16(y2);
SPI.transfer16(y1+dy);
SPI.transfer16(y2+dy);
digitalWrite(_dc, 0);
SPI.transfer(TFT_RAMWR);
@ -325,7 +340,6 @@ void TFT_T_DMA::begin(void) {
}
}
#endif
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
cancelled = false;
@ -351,8 +365,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
//SPI.transfer(ST77XX_MADCTL_RGB);
SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST77XX_MADCTL_RGB);
#endif
#endif
}
else {
@ -361,7 +378,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#endif
#endif
}
digitalWrite(_cs, 1);
@ -861,7 +882,7 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin
src=buffer;
for (i=0; i<width; i++)
{
uint16_t val = palette16[(*src++)&PAL_COLOR_MASK];
uint16_t val = palette16[*src++];
*dst++ = val;
*dst++ = val;
}
@ -872,7 +893,7 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin
src=buffer;
for (i=0; i<width; i++)
{
uint16_t val = palette16[(*src++)&PAL_COLOR_MASK];
uint16_t val = palette16[*src++];
*dst++ = val;
*dst++ = val;
}
@ -890,7 +911,7 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin
src=buffer;
for (i=0; i<width; i++)
{
uint16_t val = palette16[(*src++)&PAL_COLOR_MASK];
uint16_t val = palette16[*src++];
*dst++ = val;
}
y++;
@ -900,7 +921,7 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin
src=buffer;
for (i=0; i<width; i++)
{
uint16_t val = palette16[(*src++)&PAL_COLOR_MASK];
uint16_t val = palette16[*src++];
*dst++ = val;
}
y++;
@ -912,18 +933,18 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin
void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *palette16) {
uint16_t * block=blocks[y>>6];
uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH];
uint16_t * dst=&block[(y&0x3F)*TFT_WIDTH];
if (width > TFT_WIDTH) {
#ifdef TFT_LINEARINT
int delta = (width/(width-TFT_WIDTH))-1;
int pos = delta;
for (int i=0; i<TFT_WIDTH; i++)
{
uint16_t val = palette16[(*buf++)&PAL_COLOR_MASK];
uint16_t val = palette16[*buf++];
pos--;
if (pos == 0) {
#ifdef LINEARINT_HACK
val = ((uint32_t)palette16[(*buf++)&PAL_COLOR_MASK] + val)/2;
val = ((uint32_t)palette16[*buf++] + val)/2;
#else
uint16_t val2 = *buf++;
val = RGBVAL16((R16(val)+R16(val2))/2,(G16(val)+G16(val2))/2,(B16(val)+B16(val2))/2);
@ -937,7 +958,7 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
int pos = 0;
for (int i=0; i<TFT_WIDTH; i++)
{
*dst++=palette16[buf[pos >> 8]&PAL_COLOR_MASK];
*dst++=palette16[buf[pos >> 8]];
pos +=step;
}
#endif
@ -945,8 +966,8 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=palette16[(*buf)&PAL_COLOR_MASK];
*dst++=palette16[(*buf++)&PAL_COLOR_MASK];
*dst++=palette16[*buf];
*dst++=palette16[*buf++];
}
}
else {
@ -955,7 +976,7 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
}
for (int i=0; i<width; i++)
{
*dst++=palette16[(*buf++)&PAL_COLOR_MASK];
*dst++=palette16[*buf++];
}
}
}

Wyświetl plik

@ -1,5 +1,12 @@
//#define ST7789 1
#include "platform_config.h"
#ifdef TEENSYBOY
#define ST7789 1
#define ROTATE_SCREEN 1
#else
#define ILI9341 1
#endif
#define TFT_LINEARINT 1
#define LINEARINT_HACK 1

Wyświetl plik

@ -0,0 +1,41 @@
const uint16_t PROGMEM bmpjoy[] = {
0x001e,0x0026,0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000,
0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xf4d2,0xeaea,0xe227,0xe268,0xebce,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xeaa9,0xe984,0xe164,0xd964,0xe184,0xe1a4,0xe1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe207,0xe984,0xe206,0xe2e9,0xe267,0xd964,0xd9a5,0xd984,0xf1a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xebef,0xe984,0xe288,0xeb8b,0xeb0a,0xe247,0xd984,0xd984,0xd9a5,0xe1a5,0xe1c6,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9c6,0xe1c5,0xeb8b,0xe247,0xd943,0xd964,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe164,0xe268,0xeb4b,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xe184,0xe206,0xe247,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0xd9a5,0xd984,0xd964,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe9a5,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0xeb2b,0xe9a5,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe1a4,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x18e3,0xe71c,0xdefc,0xdedb,0xdefc,0x18e3,0xe184,0xd984,0xd9a5,0xd984,0xd984,0xd984,0xd984,0xd9a5,0xe143,0x18e3,0xdf1c,0xdedb,0xdedb,0xdefb,0xe71c,0x18e3,0x247c,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x18e3,0xbe18,0xbe19,0xbe18,0xbe18,0xbe18,0xb619,0x18e3,0xe143,0xd943,0xd984,0xd984,0xd984,0xd964,0xe122,0x18e3,0xad96,0xbe19,0xbe18,0xbe18,0xbe18,0xbe19,0xbe18,0x18e3,0x1c5d,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xbe18,0xbdf8,0xadb7,0xadb7,0xadb7,0xb5b7,0xb5b7,0xadf8,0x18e3,0xd269,0xd9a5,0xd963,0xd984,0xda07,0x18e3,0xadb7,0xadb7,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xbdf8,0xbe18,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xadf8,0xbe18,0xe69a,0xe618,0xee79,0xce59,0xadf8,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xb5d7,0x9d15,0x8493,0xdf5d,0xe79e,0xefdf,0xadb7,0x8493,0xb5b7,0xb5b7,0xad97,0xadb7,0xad97,0xadb7,0xadb7,0xad97,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x7c52,0x4b2e,0x5b90,0xdf3c,0xe75d,0xf79e,0x9515,0x42ed,0x63d0,0x9d55,0xb5b7,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad97,0xadb7,0xadb7,0x6bf1,0x4b2e,0x4b2e,0x532e,0xdf1c,0xe75d,0xefbe,0x8cb3,0x42ac,0x534f,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b0e,0x532e,0x322a,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29a8,0x4aed,0x534f,0x5b6f,0xad76,0xadb7,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x9d35,0x534f,0x534f,0x3a4a,0x31e8,0x42ab,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x4b0d,0x4b2e,0x7c52,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad96,0xb5d7,0x7c52,0x4b2e,0x4aed,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a29,0x3a6a,0x534f,0x5b8f,0xad96,0xadb7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xb5b7,0x63d0,0x4b2f,0x428b,0x3209,0x3209,0x428b,0xdf1c,0xe75d,0xf7be,0x8472,0x29c8,0x3a2a,0x3a29,0x4b2e,0x534f,0x9d15,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0x5b90,0x532e,0x3a6b,0x3209,0x3209,0x4aab,0xdf1c,0xe73d,0xef9e,0x8492,0x29c8,0x3a2a,0x3209,0x4b0d,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad97,0xad97,0x5bb0,0x534f,0x3a6b,0x3209,0x3209,0x3a4a,0xd6db,0xf7be,0xf7df,0x73f0,0x29c8,0x3a2a,0x3229,0x4b0e,0x4b2e,0x94f4,0xb5d7,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xb5b7,0x6bf1,0x4b2e,0x42ac,0x3209,0x3a2a,0x31e8,0x636e,0xbe18,0x94d3,0x3229,0x3229,0x3209,0x3a4a,0x534f,0x534f,0x9d35,0xb5b7,0xad96,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xad96,0xb5d7,0x8493,0x4b2e,0x532e,0x3a2a,0x3209,0x3a29,0x31e8,0x29c8,0x29c8,0x3229,0x3a29,0x3209,0x42cc,0x534f,0x63b0,0xad97,0xad97,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xa576,0x536f,0x534f,0x4aed,0x3209,0x3209,0x3a29,0x3a2a,0x3a2a,0x3229,0x3209,0x428b,0x534f,0x4b0e,0x8493,0xb5d7,0xad96,0xadb7,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad97,0xadb7,0xad96,0xb5b7,0x8cb3,0x4b0e,0x536f,0x4b0e,0x3a6b,0x3229,0x3209,0x3209,0x3a4a,0x42cc,0x534f,0x4b0e,0x63d0,0xadb7,0xad97,0xad97,0xad96,0xad96,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xad97,0xadb7,0xadd7,0xb5b7,0x8473,0x4b0e,0x534f,0x534f,0x4b2e,0x4b0d,0x4b0e,0x534f,0x534f,0x4b0e,0x63b0,0xa576,0xb5b7,0xad97,0xad97,0xceba,0xb5f8,0xad96,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xad96,0xadd7,0xb514,0xbc92,0xadb7,0xb5d7,0x94d4,0x5b90,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x4b2e,0x534f,0x7c32,0xad96,0xb5b7,0xad97,0xad97,0xb5b7,0xe75d,0xbe18,0xad96,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb514,0xd9c5,0xe122,0xcb6d,0xadd7,0xb5b7,0xad96,0x94f4,0x7c52,0x7432,0x7c32,0x8cb3,0xa556,0xb5d7,0xadb7,0xad97,0xadb7,0xad96,0xbe18,0xe75d,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xad96,0xadf8,0xc410,0xe101,0xd943,0xd207,0xadb7,0xad96,0xadb7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5d7,0xb5b7,0xad97,0xad97,0xad97,0xad76,0xad96,0xdf3c,0xce9a,0xad76,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xadb7,0xadb7,0xb576,0xd289,0xd9a5,0xbc30,0xadd7,0xad96,0xad97,0xad97,0xad96,0xad97,0xad96,0xad96,0xad97,0xad97,0xadb7,0xb5b7,0xbe18,0xdf3c,0xdefc,0xad97,0xadb7,0xadb7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xb5d7,0xb5b7,0xadb7,0xadb7,0xb576,0xadd7,0xad97,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xce7a,0xe75d,0xe75d,0xce9a,0xad96,0xadb7,0xb5b7,0xb5b7,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x18e3,0xd6bb,0xbe18,0xadb7,0xadb7,0xadb7,0xad96,0xadb7,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xad97,0xadb7,0xad97,0xb5d7,0xbe18,0xadb7,0xad76,0xadb7,0xadb7,0xbe18,0xd6bb,0x18e3,0x247c,0x247c,
0x247c,0x247c,0x247c,0x18e3,0xd6bb,0xbdf8,0xb5b7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xadb7,0xad96,0xad96,0xadb7,0xadb7,0xb5b7,0xbdf8,0xd6bb,0x18e3,0x247c,0x247c,0x247c,
0x247c,0x247c,0x247c,0x247c,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x247c,0x247c,0x247c,0x247c,
0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,
0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000};

Wyświetl plik

@ -0,0 +1,40 @@
const uint16_t PROGMEM bmptft[] = {
0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861,
0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861,
0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861,
0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x345c,0x345c,0x347c,0x349d,0x349d,0x34bd,0x34dd,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861,
0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x347d,0x349d,0x349d,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e,
0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x1ab3,0x122f,0x122f,0x122f,0x1a4f,0x1a4f,0x1a4f,0x1a4f,0x1a6f,0x1a6f,0x1a6f,0x1a8f,0x1a8f,0x1a8f,0x1ab0,0x2b74,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d,
0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x0084,0x00c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08c5,0x08e5,0x08e5,0x08e5,0x08a4,0x0000,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc,
0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x23ba,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x349c,0x0000,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c,
0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c,
0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b,
0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b,
0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5c,0x2c5c,0x2c7d,0x347d,0x349d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x0000,0x2398,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349d,0x34be,0x34be,0x34de,0x3cfe,0x3cfe,0x345a,0x0000,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c5d,0x2c7d,0x347d,0x347d,0x349e,0x34be,0x34de,0x34de,0x3cfe,0x3cfe,0x347b,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x2398,0x2c3d,0x2c5d,0x2c7d,0x347d,0x347d,0x347d,0x349e,0x34be,0x34de,0x11aa,0x2bd7,0x1a0c,0x2312,0x0000,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x0000,0x0042,0x0063,0x0063,0x0063,0x0083,0x00a4,0x0083,0x0083,0x00a4,0x0083,0x0000,0x0021,0x0000,0x0000,0x0000,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2336,0x1ad3,0x1ad3,0x1ad3,0x2335,0x1a91,0x0000,0x2313,0x2334,0x0000,0x22d1,0x2bb7,0x2354,0x2b75,0x2b94,0x3c17,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x11ab,0x08c5,0x0000,0x0906,0x0906,0x0000,0x08e5,0x11cb,0x3cfe,0x3cfe,0x451e,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5c,0x1ab1,0x1a4f,0x1a90,0x1a4f,0x1a6f,0x1ab1,0x1a8f,0x22f2,0x3cdd,0x3cfd,0x453e,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x34de,0x3cdd,0x451d,0x4d5e,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cde,0x3cfd,0x451e,0x4d5e,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x34de,0x3cfe,0x451e,0x4d3e,0x4d5e,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0xd6fe,0xd6fe,0xe75f,0xd71f,0xceff,0x6d3d,0xdf5f,0xd71f,0xd71f,0x961e,0xd73f,0xd73f,0xe77f,0xd73f,0xcf1f,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0xe77f,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xdf5f,0xb67e,0xb67e,0x4cfd,0x451d,0x453e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c,
0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xceff,0x757e,0x7d9e,0x44fd,0x451d,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c,
0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2c1c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x349d,0x3cbd,0x44fe,0x451e,0x451e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3d,0xe75f,0x2c5d,0x2c7d,0x7d7e,0xbebe,0x3c9d,0x44dd,0x451e,0x451e,0x3d1e,0xe77f,0x3d1e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b,
0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349c,0x3cbc,0x44dd,0x451e,0x3d1e,0x3cfe,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb,
0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x241c,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c7c,0x347c,0x349c,0x3cdc,0x44fd,0x44fd,0x3cfe,0x3cfe,0x3cfe,0x3cfe,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc,
0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x2c1c,0x2c3c,0x2c3c,0x2c5c,0x2c5d,0x347c,0x347c,0x3cbc,0x44dd,0x44fd,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3cfe,0x3d1e,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c,
0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x3c9c,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861,
0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861,
0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861,
0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861,
0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861};

Wyświetl plik

@ -0,0 +1,152 @@
const uint16_t PROGMEM bmpvbar[] = {
0x0020,0x0094,
0x0000,0x0000,0x0000,0xad96,0xdf3d,0xd6fc,0xd6fc,0xd6fd,0xd6fd,0xd71d,0xdf1d,0xd71d,0xd71c,0xd71d,0xd71d,0xd71d,0xd71d,0xd71d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf1d,0xdf3d,0xbe18,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xbe39,0xcedc,0xb63b,0xadfa,0xadfb,0xadfb,0xadfb,0xadfb,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae1b,0xae3b,0xae3b,0xae3b,0xae3b,0xb63b,0xb63b,0xb63c,0xb63c,0xb65c,0xb65c,0xb65c,0xc69c,0xd71d,0x5b0c,0x0000,0x0861,
0x0000,0x0000,0xcedd,0xa5da,0x7d19,0x74d9,0x74da,0x74fa,0x74fa,0x74fa,0x74fa,0x751a,0x751a,0x751a,0x753a,0x753b,0x7d3b,0x7d3b,0x7d5b,0x7d5b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d9c,0x7d9c,0x8ddb,0x9e1b,0xae7b,0xd71d,0x0000,0x0861,
0x0000,0xdf3d,0xa5fb,0x74da,0x4c59,0x445a,0x3c5a,0x447b,0x447b,0x447b,0x449b,0x449b,0x44bb,0x44bb,0x44db,0x4cdb,0x4cdc,0x4cfc,0x4cfc,0x4d1c,0x4d1c,0x4d3c,0x4d3c,0x555d,0x555d,0x557c,0x65bc,0x7dfb,0x961b,0xbe9c,0xad96,0x0861,
0x0000,0xc69b,0x7d1a,0x443a,0x345b,0x2c7c,0x2c7c,0x349c,0x349c,0x34bc,0x34bc,0x34dc,0x34dc,0x3cfd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453d,0x455e,0x455e,0x455e,0x457e,0x4d9e,0x4d9e,0x55be,0x5dfd,0x761c,0x8e1c,0xa63b,0xd6fc,0x0861,
0xad96,0xadfa,0x5c59,0x2c3b,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x457e,0x459f,0x4dbf,0x4dbf,0x55de,0x5dfe,0x6e1d,0x8e5d,0x9e3c,0xbe9c,0x8430,
0xd6fd,0x8d39,0x3c1a,0x2c5c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55fe,0x65fe,0x8e7e,0x9e7d,0xae5c,0xdf3d,
0xcebc,0x74b9,0x343b,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x5dfe,0x7e5e,0x9e9e,0xa65c,0xd6fd,
0xc67c,0x5c5a,0x2c3b,0x247c,0x249c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x763f,0x9e9e,0xa65c,0xcedc,
0xbe5b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55de,0x661f,0xa69e,0xae5b,0xcedc,
0xbe3b,0x543a,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x55de,0x55fe,0x5e1e,0xa69d,0xb65b,0xcebc,
0xbe3a,0x543a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69d,0xb65b,0xcebc,
0xbe3a,0x545a,0x245c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbe,0x55de,0x55fe,0x5dfe,0xa69e,0xb67b,0xc6bc,
0xbe3a,0x5459,0x2c5c,0x2c7c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc,
0xbe3a,0x5459,0x2c5c,0x2c7d,0x2c7d,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x55be,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc,
0xbe3a,0x5459,0x245c,0x2c7c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351e,0x3d1e,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d3d,0x3d3d,0x3d3d,0x453e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1e,0x3d3e,0x3d3d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3cfd,0x3d1e,0x3d3e,0x3d3e,0x3d3d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x3cfd,0x3d1d,0x453e,0x3d5e,0x3d5e,0x453d,0x451d,0x3d1d,0x351e,0x3d1e,0x3d3e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d1d,0x453d,0x455e,0x457e,0x455e,0x4d3d,0x4d3d,0x3d1d,0x34fe,0x351d,0x3d1d,0x3d5e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x457e,0x457e,0x457e,0x4d5d,0x5d7d,0x657d,0x451d,0x34fd,0x34fd,0x34fd,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x459e,0x459e,0x457d,0x5d5c,0x85dd,0x861d,0x5d5d,0x3cfd,0x34dd,0x34dd,0x351d,0x3d5e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3d,0x459e,0x4dbe,0x4dbe,0x4d5d,0x757c,0xae7d,0xaebe,0x75bd,0x451d,0x34dd,0x2cbd,0x34fd,0x3d3e,0x457e,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x351d,0x455d,0x45be,0x4ddf,0x459e,0x553c,0x95db,0xcf1e,0xcf3e,0x963e,0x553d,0x34dd,0x2cbc,0x2cbd,0x3d1d,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x34dd,0x3d1d,0x459d,0x4dbe,0x4ddf,0x459e,0x6d5b,0xb67c,0xe79e,0xe79f,0xb6be,0x6d7d,0x3cdd,0x2c9c,0x2cbd,0x34fd,0x455d,0x4dbe,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x34dd,0x3d3d,0x4d9d,0x4dde,0x4dbe,0x4d7d,0x85bb,0xcefd,0xf7bf,0xefdf,0xcf3e,0x8ddd,0x44dd,0x349c,0x2c9c,0x34dd,0x3d3e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x455d,0x4dbd,0x55de,0x4dbe,0x5d5c,0xa61b,0xe75d,0xffdf,0xf7df,0xe77e,0xae5d,0x5d1d,0x34bc,0x349c,0x34bc,0x3d1e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x2cbc,0x3cfd,0x455d,0x4dde,0x55fe,0x4d9d,0x757b,0xbe9c,0xef9e,0xffde,0xffdf,0xefbe,0xc6de,0x757d,0x3cbd,0x2c9c,0x349c,0x351d,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x2cbc,0x3cfd,0x457e,0x4dde,0x4dde,0x557c,0x8ddb,0xd71d,0xf7be,0xffde,0xffdf,0xf7df,0xdf5e,0x95fd,0x4cdd,0x2c9d,0x2c9c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9c,0x34bc,0x3cfd,0x459e,0x4dff,0x4dbe,0x657b,0xae5b,0xe77e,0xffde,0xffde,0xffdf,0xf7df,0xe79e,0xae7d,0x5d3d,0x2c9d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459e,0x4ddf,0x4d9d,0x7d9b,0xc6dc,0xefbf,0xffde,0xffde,0xffdf,0xf7ff,0xf7be,0xc6fe,0x7d9d,0x349d,0x2c9c,0x34dd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x459f,0x4dde,0x557c,0x9dfb,0xdf5d,0xf7df,0xffde,0xffde,0xffff,0xffff,0xf7de,0xdf5e,0x9e1e,0x4cdd,0x2c9c,0x34fd,0x455e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9d,0x6d7b,0xb67c,0xef9e,0xf7ff,0xffde,0xffdf,0xffff,0xffff,0xf7de,0xef9e,0xb69e,0x6d3c,0x349c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bc,0x3cfd,0x457e,0x4d5c,0x859a,0xcefd,0xf7be,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7be,0xd71e,0x859c,0x3cbc,0x34fd,0x3d7e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3cfd,0x455e,0x553b,0x9dfb,0xdf5e,0xf7df,0xfffe,0xfffe,0xffff,0xffff,0xffff,0xffde,0xf7df,0xe77e,0xa61d,0x54fc,0x351e,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34fd,0x453d,0x5d3b,0xae5c,0xe77e,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7df,0xf7bf,0xf7bf,0xe77e,0xae7d,0x5d1c,0x3d1e,0x459e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x247c,0x2c9d,0x34bd,0x34dd,0x3d1d,0x653c,0xa65d,0xd75e,0xe79f,0xe79f,0xe79f,0xe79f,0xe79f,0xe77f,0xe77f,0xdf7f,0xd73e,0xa67d,0x5d3d,0x3d3e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34dd,0x3d1d,0x5d3d,0x963d,0xbede,0xc71f,0xc71f,0xc6ff,0xc6ff,0xbeff,0xbede,0xbede,0xbebe,0xb69d,0x8e1d,0x553d,0x3d5e,0x459f,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x4d5e,0x75de,0x965e,0x967f,0x965f,0x965f,0x963e,0x961e,0x8e1e,0x8dfd,0x8ddd,0x85bd,0x6d7d,0x453d,0x3d5e,0x459f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x349c,0x34bd,0x34fe,0x455e,0x5d9e,0x6dde,0x6dde,0x6dde,0x65be,0x659e,0x657e,0x5d5d,0x5d3d,0x5d3c,0x551c,0x4d1d,0x3d3d,0x457e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349c,0x34bc,0x34dd,0x3d3e,0x4d7e,0x559e,0x559e,0x4d9e,0x4d7e,0x455e,0x451d,0x451d,0x3cfd,0x3cdd,0x3cdd,0x3cfd,0x3d5e,0x459e,0x4d9f,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x349d,0x34bc,0x34dd,0x3d1e,0x455e,0x457e,0x4d9e,0x4d7e,0x455e,0x453e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x34fe,0x3d1e,0x3d7e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x34bc,0x34dc,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d3e,0x3d1d,0x351d,0x34fd,0x3d1e,0x3d3e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbc,0x34bc,0x34dd,0x3d1d,0x3d3e,0x455e,0x455e,0x3d5e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d1d,0x3d3e,0x455e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9d,0x2c9d,0x2cbd,0x34bd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d1d,0x3d3d,0x455e,0x457e,0x4d9e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x3cfd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1e,0x3d3e,0x453e,0x457e,0x457e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x453e,0x457e,0x457e,0x459e,0x4d9f,0x4d9f,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2cbd,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc,
0xbe3a,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4dde,0x4dde,0x55ff,0x5e1f,0xa69e,0xb67c,0xc6bc,
0xc63b,0x543a,0x245c,0x247d,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4dde,0x55de,0x55df,0x5e1f,0xa69e,0xb65c,0xc6bc,
0xc63b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x2cbd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55de,0x55df,0x5e1f,0xa69e,0xb63b,0xc6bc,
0xc63b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4dde,0x55df,0x5e3f,0xa69e,0xb65b,0xc6bc,
0xbe3b,0x5439,0x245b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34dd,0x34dd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x453e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x5e3f,0xa6be,0xb65c,0xc6bc,
0xbe3b,0x5439,0x2c5b,0x247c,0x2c7c,0x2c7c,0x2c9c,0x349d,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x453e,0x453e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x4dbf,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xce9c,
0xbe3b,0x5439,0x2c3b,0x2c3c,0x2c5c,0x2c5c,0x2c7c,0x2c9c,0x349c,0x349c,0x34bc,0x34bc,0x3cdc,0x3cdd,0x3cfd,0x3cfd,0x3d1d,0x451d,0x453d,0x453e,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dfe,0x967e,0xae5c,0xc69c,
0xbe3b,0x5418,0x33f9,0x341a,0x343b,0x343b,0x345b,0x347b,0x347b,0x3c7b,0x3c9b,0x3c9b,0x3cbc,0x3cbc,0x44dc,0x44dc,0x44dc,0x44fc,0x451c,0x451d,0x451d,0x4d3d,0x4d3d,0x4d5d,0x4d5d,0x4d5d,0x557c,0x559c,0x55bc,0x861c,0x9dfb,0xc69c,
0xbe3b,0x5c38,0x4439,0x4c5a,0x4c5a,0x4c7a,0x547a,0x549a,0x549a,0x549a,0x54ba,0x54ba,0x54bb,0x5cdb,0x5cdb,0x5cfb,0x5cfb,0x5cfb,0x5d1b,0x5d1b,0x5d1b,0x5d3b,0x5d3c,0x655c,0x655c,0x5d5b,0x5d7b,0x659b,0x659b,0x85db,0x8db9,0xc69c,
0xbe3b,0x6c78,0x64ba,0x6cda,0x6cfa,0x6cfa,0x751a,0x751a,0x751a,0x751a,0x753a,0x753b,0x753b,0x755b,0x755b,0x755b,0x7d5b,0x7d7b,0x7d7b,0x7d7b,0x7d7b,0x7d9b,0x7d9b,0x7d9b,0x7dbb,0x7dbb,0x7ddb,0x7ddb,0x7ddc,0x8dfb,0x9599,0xc69c,
0xbe3b,0x74d9,0x7d5b,0x857b,0x857c,0x859b,0x859b,0x859b,0x85bc,0x85bc,0x8dbc,0x8dbc,0x8ddc,0x8ddc,0x8ddc,0x8ddc,0x8dfc,0x8dfc,0x8dfc,0x8dfc,0x8e1c,0x8e1c,0x8e1c,0x961d,0x963d,0x8e3d,0x8e5c,0x965c,0x965d,0xa65c,0xa5fa,0xc69c,
0xbe3b,0x74da,0x7d7c,0x859c,0x859c,0x85bc,0x85bd,0x85bd,0x85bd,0x85dd,0x85dd,0x8ddd,0x8dfd,0x8dfd,0x8dfd,0x8dfd,0x8e1d,0x8e1d,0x8e3d,0x8e3d,0x8e3e,0x8e3e,0x8e5e,0x8e5e,0x8e5e,0x967e,0x967d,0x967e,0x9e7e,0xb6be,0xae5b,0xc6bc,
0xbe3b,0x6cba,0x6d1c,0x6d3c,0x6d3c,0x6d5d,0x6d5d,0x757d,0x757d,0x757d,0x759d,0x759d,0x75bd,0x75bd,0x75be,0x75de,0x75de,0x75de,0x75fe,0x75fe,0x761e,0x7e1e,0x7e1e,0x7e3f,0x7e3f,0x7e5f,0x7e5e,0x865e,0x8e7f,0xb6de,0xb67c,0xc6bc,
0xbe3b,0x5c5a,0x4c9c,0x4cbc,0x4cbc,0x4cdc,0x4cdd,0x4cfd,0x4cfd,0x551d,0x551d,0x553d,0x553d,0x555d,0x555d,0x555d,0x557e,0x5d7e,0x5d9e,0x5dbe,0x5dbe,0x5dbe,0x5dde,0x5ddf,0x65ff,0x65ff,0x65ff,0x661f,0x763f,0xaebf,0xb67c,0xc6bc,
0xbe3b,0x5439,0x2c5c,0x2c7c,0x2c7c,0x349c,0x349c,0x34bd,0x34bd,0x34dd,0x3cdd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x453e,0x455e,0x457e,0x457e,0x457e,0x459e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x3d5e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x4d9f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x459f,0x459f,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x453e,0x455e,0x457e,0x457e,0x459e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1e,0x3d3e,0x3d3e,0x455e,0x457e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x455e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x455e,0x457e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d3d,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d3e,0x3d3e,0x455e,0x459e,0x459e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bc,0x34dd,0x34fd,0x3d1d,0x3d3e,0x3d3e,0x3d3e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x3d3d,0x3d5e,0x457e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dc,0x34fd,0x3d1d,0x3d3e,0x455e,0x455e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x3d1d,0x351d,0x3d3e,0x455e,0x459e,0x4dbf,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x34fd,0x3d3e,0x455e,0x457e,0x457e,0x455e,0x3d3e,0x3d1d,0x3d1d,0x34fd,0x34fd,0x351d,0x3d3e,0x457e,0x4d9f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34dd,0x3d1d,0x455e,0x457e,0x459e,0x457e,0x457e,0x453e,0x3d1d,0x34fd,0x34fd,0x34dd,0x34fd,0x3d1d,0x455e,0x459f,0x4dbf,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34fd,0x3d3e,0x457e,0x459f,0x459f,0x459f,0x457e,0x453e,0x3d1d,0x34fd,0x34dd,0x2cdd,0x2cdd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34fd,0x455e,0x4d9e,0x4dbe,0x4dbf,0x459f,0x457e,0x455d,0x3d1d,0x3cfd,0x34dd,0x34bd,0x34dd,0x34dd,0x3d1d,0x457e,0x45be,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x457d,0x5dbe,0x65de,0x65de,0x5dbf,0x5d9e,0x5d7d,0x5d5d,0x553d,0x551d,0x4cfd,0x4cfd,0x44dc,0x3cdd,0x3d5e,0x459e,0x4dbe,0x4ddf,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d1d,0x4d7d,0x75fd,0x8e3e,0x8e3e,0x8e1e,0x8e1e,0x8dfe,0x8dfd,0x8dde,0x85de,0x7dbd,0x759d,0x653d,0x44dd,0x3d3d,0x4d9e,0x4dde,0x55df,0x55ff,0x65ff,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x34dd,0x3d3d,0x5d5c,0x8e3c,0xb6de,0xbede,0xbedf,0xbedf,0xb6be,0xb6be,0xbebe,0xb69e,0xb69e,0xa65d,0x85bd,0x4cfd,0x3d1d,0x4d9e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x2c9c,0x3cfd,0x3d3d,0x5d5b,0xa67c,0xd75e,0xdf7e,0xdf7f,0xdf7f,0xdf7f,0xdf5e,0xdf5e,0xdf5e,0xdf3e,0xcf1e,0x9e3d,0x5d1d,0x3d1d,0x4d7e,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9d,0x349c,0x3cfd,0x3d3d,0x5d5c,0xae7c,0xe77e,0xf7be,0xf7bf,0xefbf,0xefdf,0xefbf,0xefbf,0xf7be,0xef9e,0xdf5e,0xa65d,0x5d1d,0x3cfd,0x457e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x249c,0x2c9c,0x34bc,0x3cfd,0x3d5e,0x5d7c,0xa63c,0xdf7e,0xf7de,0xffdf,0xffdf,0xf7ff,0xf7df,0xffdf,0xffde,0xf7be,0xdf5e,0x9e1d,0x4cfd,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c9c,0x2c9c,0x34bc,0x3cfd,0x457e,0x557d,0x8ddb,0xcf1d,0xf7be,0xffde,0xffdf,0xffff,0xffff,0xffde,0xffde,0xefbe,0xcf1d,0x85bc,0x44bc,0x34fd,0x455e,0x4dbf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bc,0x3d1d,0x457e,0x4d9e,0x759b,0xbe9c,0xef9e,0xffbe,0xffde,0xfffe,0xffde,0xffde,0xffde,0xef9e,0xbebd,0x6d3c,0x349c,0x34fe,0x455e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x34bd,0x3d1d,0x457e,0x4dde,0x5d7c,0x9e1c,0xdf5e,0xf7de,0xffde,0xffde,0xf7de,0xffde,0xffde,0xe75e,0xa63c,0x54db,0x347c,0x34fd,0x457e,0x4dbf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x34bd,0x3d1d,0x457e,0x55de,0x559d,0x85bb,0xcefd,0xf7bf,0xffdf,0xffdf,0xf7df,0xffdf,0xf7be,0xd71e,0x85bc,0x449c,0x2c7c,0x34fd,0x457e,0x4dbe,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2cbd,0x3cfd,0x457d,0x55de,0x55be,0x6d7c,0xb67c,0xef9e,0xffdf,0xffdf,0xf7ff,0xf7df,0xef9e,0xb69e,0x6d3c,0x349c,0x2c9d,0x34fd,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6bf,0xb67c,0xc69c,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9d,0x34fd,0x455e,0x4dbe,0x55df,0x5d7c,0x95fb,0xdf3e,0xf7de,0xffde,0xf7ff,0xf7df,0xdf5e,0x961d,0x4cdc,0x2c7d,0x2c9d,0x3d1d,0x457e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x455e,0x4dbf,0x55df,0x557d,0x7d9c,0xc6dd,0xf7be,0xffde,0xf7fe,0xefbe,0xc6fe,0x759d,0x3cbc,0x2c9d,0x2cbd,0x3d1e,0x459e,0x4dbe,0x55df,0x55ff,0x5e1f,0xa69e,0xb67c,0xcebc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34dd,0x3d3d,0x4d9e,0x4ddf,0x4d9e,0x655c,0xae5c,0xef7e,0xffde,0xffde,0xe79e,0xae9e,0x5d3c,0x349c,0x2c9d,0x34dd,0x3d3e,0x4d9e,0x4dbe,0x55df,0x55ff,0x661f,0xa69e,0xb67c,0xcebc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x34dd,0x3d1d,0x457e,0x4dbf,0x4dbe,0x555d,0x95dc,0xdf1d,0xffde,0xf7de,0xdf5e,0x961d,0x4cfc,0x349c,0x2cbd,0x34fd,0x3d5e,0x4d9e,0x4dbf,0x55df,0x55df,0x661f,0xa69e,0xb67c,0xcebc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9d,0x2c9c,0x34bc,0x34fd,0x455e,0x4d9e,0x4dbe,0x4d7d,0x757c,0xc6bc,0xf79e,0xefbe,0xc6de,0x759d,0x3cdd,0x34bc,0x34dd,0x351d,0x457e,0x4dbf,0x4dbf,0x55df,0x55df,0x661f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x3d3d,0x457e,0x4d9e,0x4d7e,0x5d3c,0xa61c,0xdf5d,0xdf5e,0xa65e,0x5d3d,0x34dd,0x34dd,0x34fd,0x3d3d,0x457e,0x4dbf,0x4ddf,0x55df,0x55df,0x6e1f,0xaebe,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dc,0x3d1d,0x455e,0x457e,0x4d7e,0x4d5d,0x85bc,0xbebd,0xbede,0x85de,0x44fd,0x34dd,0x34dd,0x351d,0x455e,0x459f,0x4dbf,0x4ddf,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbc,0x34dd,0x34fd,0x3d3d,0x455d,0x4d7e,0x4d5e,0x655d,0x961d,0x963e,0x657e,0x3cfd,0x34dd,0x34fd,0x3d3e,0x459e,0x4dbf,0x4dbf,0x55df,0x55df,0x5dff,0x6e3f,0xaebe,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x3d1d,0x3d3d,0x455d,0x455e,0x4d5d,0x6d9d,0x6d9e,0x4d3e,0x3cfe,0x34fd,0x3d1e,0x455e,0x459e,0x4d9e,0x4dbe,0x55de,0x55de,0x5e1f,0x6e3f,0xaebe,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d3d,0x453e,0x453e,0x4d5e,0x4d5e,0x3d3e,0x3d1e,0x3d1e,0x3d3e,0x457e,0x459e,0x4d9e,0x4dbe,0x55de,0x5dfe,0x5e1f,0x6e3f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34fd,0x3d1d,0x3d1d,0x453d,0x453e,0x3d3e,0x3d3e,0x3d3d,0x3d3d,0x3d3e,0x3d5e,0x457f,0x459e,0x4d9e,0x55be,0x5dde,0x5dfe,0x5e1f,0x661f,0xa6be,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x453d,0x3d3e,0x3d3e,0x3d3d,0x455d,0x455e,0x457e,0x457f,0x459f,0x4d9e,0x55be,0x5dde,0x5dff,0x5e1f,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d3d,0x3d3e,0x453d,0x455d,0x457e,0x457e,0x457f,0x4d9f,0x55be,0x5dde,0x5dfe,0x5dff,0x5dff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x351d,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457f,0x4d9e,0x55be,0x5dde,0x5dff,0x5dff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x457e,0x4d9e,0x55be,0x5dde,0x5dff,0x55ff,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d7e,0x55be,0x5ddf,0x5dff,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x4d9e,0x55be,0x5ddf,0x55df,0x55df,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x457e,0x559e,0x55de,0x55df,0x55df,0x55df,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d7e,0x55be,0x5dde,0x55df,0x55df,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x457e,0x4d9e,0x55be,0x55de,0x55bf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d7e,0x55be,0x55be,0x55be,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x455e,0x4d9e,0x55be,0x55be,0x4dbe,0x4dbe,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x543a,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x3d1d,0x3d1d,0x3d1d,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x55be,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x55df,0x55ff,0x661f,0xa6bf,0xb67c,0xc6bc,
0xbe3b,0x5439,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x559e,0x55be,0x4d9e,0x4d9e,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa6bf,0xb67c,0xcebc,
0xbe5b,0x5459,0x245c,0x247c,0x2c7c,0x2c9c,0x2c9d,0x34bd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1e,0x3d1e,0x3d1e,0x453d,0x4d5e,0x559e,0x559e,0x4d9e,0x4d9f,0x459f,0x4dbf,0x4dbf,0x4ddf,0x4ddf,0x55ff,0x661f,0xa69e,0xb67c,0xcedc,
0xbe7b,0x5c59,0x2c3b,0x247c,0x2c7c,0x2c9c,0x2c9d,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1e,0x3d1d,0x453d,0x4d5d,0x559e,0x4d9e,0x4d9e,0x459f,0x459f,0x4d9f,0x4dbf,0x4ddf,0x55df,0x55ff,0x6e3f,0xa69e,0xae5b,0xcedc,
0xc69c,0x6c98,0x2c3b,0x247d,0x2c7c,0x2c9c,0x2c9c,0x2cbd,0x34bd,0x34dd,0x34dd,0x34fd,0x34fd,0x351d,0x3d1d,0x451d,0x4d3d,0x557d,0x559e,0x4d9e,0x4d9e,0x457e,0x459e,0x4d9f,0x4dbf,0x4dde,0x55de,0x55de,0x7e5e,0xa69d,0xae3b,0xd6fc,
0xd6fd,0x8519,0x341a,0x247c,0x2c7d,0x2c9c,0x2c9c,0x2cbc,0x2cbc,0x34dd,0x34fd,0x34fd,0x351d,0x351d,0x3d1d,0x453d,0x4d5d,0x559d,0x4d9e,0x4d7e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55de,0x5dde,0x5dfe,0x8e5e,0xa65c,0xae5b,0xdf3d,
0xdf3d,0xa5ba,0x4c39,0x2c5c,0x247c,0x2c9c,0x2c9c,0x2cbc,0x34bc,0x34dd,0x34dd,0x34fd,0x34fd,0x3d1d,0x3d1c,0x453d,0x4d7d,0x4d9e,0x4d7e,0x457e,0x457e,0x457e,0x4d9e,0x4d9e,0x4dbe,0x55be,0x5dde,0x6e1e,0x8e5d,0x9e3b,0xbe7b,0xdf3c,
0x0000,0xbe7c,0x74d9,0x3c3a,0x2c5b,0x2c7c,0x2c9c,0x349c,0x34bc,0x34bd,0x34dd,0x34dd,0x34fd,0x3cfd,0x451c,0x4d3d,0x4d7d,0x4d7e,0x455d,0x455e,0x455e,0x457e,0x4d7e,0x4d9e,0x4d9e,0x55be,0x65fe,0x763e,0x8e1c,0xa61b,0xd6dc,0x0861,
0x0000,0xd6fd,0x9dba,0x6499,0x443a,0x345b,0x3c5b,0x3c7b,0x3c7b,0x3c7c,0x3c9c,0x3c9c,0x3cbc,0x44dc,0x4cfc,0x551c,0x553c,0x4d1c,0x451c,0x451d,0x453d,0x4d3d,0x4d5d,0x4d5d,0x4d7d,0x557d,0x65dd,0x7e1d,0x8e1c,0xb65b,0xdefc,0x0861,
0x0000,0x0000,0xc69c,0x9579,0x6cb9,0x649a,0x649a,0x649a,0x64ba,0x64ba,0x64ba,0x64db,0x64db,0x6cfb,0x6d1b,0x753b,0x6d3b,0x6d1b,0x6d1b,0x6d3b,0x6d3b,0x6d5b,0x6d5c,0x6d5c,0x6d5c,0x757c,0x7dbc,0x95fb,0xa65b,0xcefd,0x0000,0x0861,
0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861,
0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861};

Wyświetl plik

@ -0,0 +1,40 @@
const uint16_t PROGMEM bmpvga[] = {
0x0020,0x0025,0x0000,0x0000,0x0000,0x9d34,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcefc,0xcefc,0xcedc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6dc,0xd6fc,0xb596,0x0000,0x0000,0x0000,0x0861,
0x0000,0x0000,0xb5d7,0xbe9b,0xa5d9,0x9d99,0x9d79,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9d9a,0x9dba,0x9dba,0x9dba,0x9dda,0xa5ba,0xa5ba,0xa5da,0xa5da,0xa5db,0xa5db,0xa5db,0xa5fb,0xadfb,0xb63b,0xcedc,0x4a69,0x0000,0x0861,
0x0000,0x0000,0xc69c,0x8d59,0x6c78,0x6438,0x6438,0x6459,0x6459,0x6459,0x6479,0x6479,0x6479,0x6479,0x6499,0x6499,0x64ba,0x64ba,0x6cba,0x6cda,0x6cda,0x6cda,0x6cfa,0x6cfa,0x6cfb,0x6d1b,0x755a,0x8d9a,0xa61a,0xcefc,0x0000,0x0861,
0x0000,0xd6fc,0x959a,0x5c38,0x3bb8,0x3399,0x33b9,0x33ba,0x33da,0x33da,0x33fa,0x33fa,0x3c1a,0x3c1a,0x3c3a,0x3c3a,0x3c3b,0x3c5b,0x3c7b,0x3c7b,0x3c9b,0x3c9b,0x449c,0x44bc,0x44dc,0x44fc,0x553b,0x6d7a,0x859a,0xae5b,0x9d14,0x0861,
0x0000,0xbe5a,0x6c78,0x3b99,0x2b9a,0x23bb,0x23db,0x2bfb,0x2bfb,0x2bfb,0x29ab,0x2948,0x2948,0x2948,0x2928,0x2948,0x2928,0x2948,0x2928,0x2949,0x3334,0x3cdd,0x3cfe,0x3cfe,0x3d1e,0x453d,0x557d,0x659c,0x7dbb,0x95da,0xcebc,0x0861,
0x9d14,0x9d79,0x43b8,0x237a,0x23bb,0x23db,0x23fc,0x23fc,0x2c1c,0x2bfb,0x2169,0x736f,0x73b0,0x73b0,0x7bd0,0x6b4f,0x8411,0x6b4e,0x8411,0x4a4c,0x2ad2,0x3cfe,0x3d1e,0x3d1e,0x3d3e,0x455e,0x4d7e,0x5dbd,0x7dfc,0x8ddb,0xb63b,0x6b8e,
0xcebc,0x7c98,0x3378,0x23bb,0x23dc,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x216a,0x94b3,0x6b4e,0x738f,0x8c72,0x528c,0xa534,0x4a4b,0x9cf4,0x5acd,0x2af2,0x3cfe,0x3d1e,0x3d3f,0x3d3f,0x455e,0x457e,0x559e,0x7e1d,0x8e1c,0x9dfb,0xd71d,
0xbe5b,0x5c18,0x2379,0x23db,0x23dc,0x23dc,0x23fc,0x23fb,0x2af4,0x22b3,0x2129,0x52ad,0x630e,0x62ee,0x630e,0x62ee,0x630e,0x62ee,0x632e,0x39ca,0x220d,0x3355,0x3c39,0x3d3f,0x3d3f,0x3d5e,0x457e,0x4d7e,0x6dfe,0x8e3d,0x95fb,0xc6bc,
0xb61b,0x4bb9,0x239a,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x420b,0x41ea,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x39a9,0x31a9,0x39c9,0x420a,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5f,0x455e,0x457e,0x65de,0x8e3d,0x95fb,0xc69c,
0xb5fa,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2378,0x3169,0x39ea,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39c9,0x39ea,0x39ca,0x2a0d,0x3d3f,0x3d3f,0x3d5e,0x455e,0x457e,0x55be,0x963d,0xa5fa,0xbe7c,
0xadd9,0x4399,0x239b,0x23db,0x23db,0x23dc,0x23fc,0x2bfb,0x222e,0x3169,0x4a4b,0x4a4b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a6b,0x4a4b,0x4a4b,0x420a,0x2949,0x33f7,0x3d3f,0x3d3f,0x3d3e,0x455d,0x457e,0x559e,0x963d,0xadfa,0xbe7b,
0xadd9,0x4399,0x239b,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d4,0x41ea,0x7bcf,0x6b8e,0x4a6b,0x420a,0x420a,0x420a,0x420a,0x422a,0x5acc,0x7bef,0x632d,0x298a,0x3d1e,0x3d3f,0x3d3f,0x3d3e,0x455e,0x457e,0x4d9e,0x963d,0xadfa,0xbe7b,
0xadd9,0x4398,0x23bb,0x23bb,0x23db,0x23fb,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5aec,0x2928,0x4a4b,0x4a6c,0x4a4c,0x526c,0x39a9,0x3189,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x3d3e,0x453e,0x455e,0x457e,0x559e,0x963d,0xae1a,0xbe5b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x3169,0x9d14,0xad75,0xa555,0xb5b6,0x6b4f,0x3188,0x73ae,0x630d,0x298a,0x3cdd,0x3d3f,0x453e,0x453e,0x455e,0x457e,0x559e,0x963e,0xa61b,0xbe7b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x5acc,0x2948,0x73d0,0x7c11,0x7bf0,0x8431,0x528c,0x3189,0x73ae,0x630d,0x298a,0x3cde,0x3d3f,0x3d3f,0x453e,0x455e,0x457f,0x55bf,0x965e,0xa61b,0xbe7b,
0xadd9,0x43b8,0x23bb,0x23bc,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x632d,0x3189,0x3168,0x3168,0x3168,0x3168,0x2968,0x420a,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453e,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4398,0x23bb,0x23db,0x23dc,0x23fc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x5acc,0x528c,0x52ac,0x52ac,0x52ac,0x528b,0x630d,0x73ae,0x630d,0x298a,0x3cde,0x3d1f,0x3d3f,0x453f,0x455e,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x73ae,0x6b6e,0x39a9,0x3168,0x3169,0x3169,0x3169,0x2948,0x4a4b,0x73cf,0x630d,0x298a,0x3cfd,0x4d3e,0x4d7e,0x4d7f,0x457f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x738e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x6b6e,0x738e,0x5aed,0x2989,0x44fd,0x4d5e,0x4d7e,0x4d5f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2ad4,0x2969,0x3168,0x3189,0x3189,0x3189,0x3168,0x2968,0x3168,0x3189,0x3189,0x3189,0x3169,0x298a,0x451d,0x4d5f,0x4d5f,0x455f,0x455f,0x457f,0x559f,0x965e,0xae1b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22d3,0x39ea,0x4a2b,0x21ac,0x2b35,0x2948,0x6b6f,0x8411,0x4a6c,0x21ed,0x2b76,0x2948,0x4a6b,0x298a,0x451d,0x4d5f,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x22b3,0x420b,0x528c,0x220e,0x2c5c,0x2948,0x8c52,0xa534,0x62ee,0x2a70,0x349c,0x3189,0x5acd,0x2989,0x451d,0x455e,0x455f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2b14,0x2969,0x3169,0x2a4f,0x2c3c,0x2969,0x3169,0x3168,0x3169,0x2ab1,0x347c,0x2948,0x2969,0x29ab,0x451d,0x453e,0x453f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x3cfe,0x453e,0x4d3e,0x453e,0x453e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe5b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x451e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4398,0x23bb,0x23db,0x23db,0x23dc,0x23fc,0x241c,0x2c1c,0x2c1c,0x2c3c,0x2c5d,0x2c5d,0x2c7d,0x347d,0x349d,0x349d,0x34bd,0x3cdd,0x451d,0x453e,0x453e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c,
0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xc69e,0x4c7c,0x2c1c,0x2c3d,0xae3e,0x6d1d,0x857d,0xcefe,0xcede,0xd6fe,0x95fe,0x44fd,0x4d1d,0xdf3f,0x961e,0x3d1e,0x3d1e,0x3d3f,0x455f,0x455f,0x457f,0x559f,0x965e,0xa61b,0xbe7c,
0xb5d9,0x4398,0x239b,0x23db,0x23db,0x23dc,0x23fc,0xa5fe,0x9dde,0x2c3c,0x2c5d,0xdf3e,0x651d,0xd71e,0x449d,0x347d,0x3c9d,0x7d9e,0x44fe,0x8dfe,0xbebe,0xd73f,0x3d1e,0x3d1e,0x3d3f,0x3d5f,0x455f,0x457f,0x55bf,0x965e,0xa61b,0xbe7b,
0xb5d9,0x4bb7,0x239a,0x23bc,0x23db,0x23dc,0x23fc,0x4c7c,0xdf1e,0x2c3c,0x7d5d,0xb67e,0xae3e,0x95be,0x347d,0x349d,0x3c9d,0x44dd,0x451e,0xc6ff,0x657e,0xd71f,0x5d5e,0x3d1e,0x3d3f,0x3d5e,0x455e,0x457e,0x5ddf,0x963e,0x9dfa,0xc69b,
0xb5d9,0x5bf7,0x237a,0x23bc,0x23dc,0x23db,0x23fc,0x241c,0xcede,0x5cbd,0xc6be,0x651d,0xae5e,0x8dbd,0x347d,0xae5e,0xd71e,0xc6de,0x553e,0xe77f,0x8dfe,0xbebe,0xae7e,0x3d1e,0x3d3e,0x455e,0x455e,0x4d7e,0x6dfe,0x963d,0x9dda,0xc6bb,
0xb5d9,0x7497,0x2b78,0x23bc,0x23dc,0x23fb,0x23fb,0x241c,0x8d9d,0xb63e,0xdf1e,0x2c5c,0x7d5d,0xcefe,0x349c,0x349c,0x655d,0xcefe,0x9e1e,0xc6de,0x9e3e,0x9e3e,0xdf5f,0x3d1e,0x453e,0x455e,0x4d5d,0x557d,0x75fd,0x95fb,0x9dfa,0xcefc,
0xb5d9,0x8d59,0x3b97,0x239b,0x23bc,0x23fb,0x23fb,0x241c,0x343c,0xf79f,0xa61d,0x2c5c,0x2c5d,0xae3e,0xdf1e,0xc6be,0xd6fe,0xae7e,0xd71e,0x553e,0x3cdd,0x3cfd,0xcefe,0x7dbe,0x453e,0x453d,0x4d7d,0x5d9d,0x7dfc,0x8dba,0xae3a,0xd71c,
0x0000,0xb61b,0x6437,0x3378,0x239a,0x23db,0x23fb,0x2bfc,0x2c1c,0x2c1c,0x2c3c,0x2c3c,0x2c5d,0x345c,0x3c7c,0x54fc,0x44dd,0x3cdd,0x3cdd,0x34dd,0x3cdd,0x3cdd,0x3cfe,0x3d1e,0x3d1e,0x453e,0x557d,0x65bd,0x7dbb,0x95b9,0xc69b,0x0861,
0x0000,0xcebd,0x8d39,0x53f7,0x3398,0x2b9a,0x2bba,0x2bba,0x2bda,0x33db,0x33fb,0x33fb,0x341c,0x343b,0x3c5b,0x447b,0x449c,0x3c7c,0x3c7c,0x3c9c,0x3c9c,0x3c9c,0x3cbc,0x3cdc,0x3cdc,0x44fc,0x555c,0x6d9c,0x7d9b,0xa5fa,0xd6bb,0x0861,
0x0000,0x0000,0xbe3b,0x84f8,0x5c17,0x53f8,0x53f9,0x53f9,0x5419,0x5419,0x5419,0x543a,0x543a,0x5c5a,0x5c79,0x649a,0x5c9a,0x5c9a,0x5c9a,0x5c9a,0x5cba,0x5cba,0x5cbb,0x5cdb,0x5cdb,0x64fb,0x6d3b,0x7d9a,0x95fa,0xc6bc,0x0000,0x0861,
0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861,
0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861};

Wyświetl plik

@ -10,8 +10,8 @@
#define EXTRA_HEAP 0x10 //0x9000
// Title: < >
#define TITLE " Gameboy Emulator "
// Title: < >
#define TITLE " Gameboy Emulator"
#define ROMSDIR "/gameboy"
#define emu_Init(ROM) {gbe_Init(); gbe_Start(ROM);}
@ -117,6 +117,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -1,8 +1,7 @@
#ifndef IOPINS_H
#define IOPINS_H
//#define OLD_LAYOUT 1
#include "platform_config.h"
#include "tft_t_dma_config.h"
#ifndef OLD_LAYOUT
@ -37,10 +36,13 @@
// SD
#define SD_SCLK 13
#define SD_MOSI 11
#define SD_MISO 12
//#define SD_CS BUILTIN_SDCARD
#define SD_MOSI 12
#define SD_MISO 11
#ifdef TEENSYBOY
#define SD_CS BUILTIN_SDCARD
#else
#define SD_CS 5
#endif
// I2C keyboard
#define I2C_SCL_IO 19
@ -55,8 +57,17 @@
//#define PIN_KEY_USER3 255
//#define PIN_KEY_USER4 255
#ifdef TEENSYBOY
// Second joystick
#define PIN_JOY1_BTN 2
#define PIN_JOY1_1 14 // UP
#define PIN_JOY1_2 7 // DOWN
#define PIN_JOY1_3 6 // RIGHT
#define PIN_JOY1_4 5 // LEFT
#endif
#else // OLD LAYOUT!!!!
#else
// OLD LAYOUT!!!!
#define HAS_VGA 1

Wyświetl plik

@ -0,0 +1,14 @@
#ifndef _PLATFORM_CONFIG_H_
#define _PLATFORM_CONFIG_H_
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Wyświetl plik

@ -4,6 +4,14 @@
#include "psram_t.h"
Page PSRAM_T::pages[MAX_PAGES];
uint8_t PSRAM_T::nbPages=0;
int8_t PSRAM_T::top=0;
int8_t PSRAM_T::last=0;
#ifdef HAS_PSRAM
#include <SPI.h>
#include <DMAChannel.h>
@ -20,10 +28,6 @@
uint8_t PSRAM_T::_cs, PSRAM_T::_miso, PSRAM_T::_mosi, PSRAM_T::_sclk;
Page PSRAM_T::pages[MAX_PAGES];
uint8_t PSRAM_T::nbPages=0;
int8_t PSRAM_T::top=0;
int8_t PSRAM_T::last=0;
PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso)
@ -231,6 +235,35 @@ Serial.printf("D") ; Serial.flush();
#else
#include "emuapi.h"
PSRAM_T::PSRAM_T(uint8_t cs, uint8_t mosi, uint8_t sclk, uint8_t miso)
{
}
void PSRAM_T::begin(void)
{
emu_FileTempInit();
}
void PSRAM_T::psram_read_n(uint32_t addr, uint8_t * val, int n)
{
emu_FileTempRead(addr,val,n);
}
void PSRAM_T::psram_write(uint32_t addr, uint8_t val)
{
emu_FileTempWrite(addr,val);
}
#endif
void PSRAM_T::pswrite(uint32_t addr, uint8_t val)
{

Wyświetl plik

@ -7,9 +7,15 @@
#ifdef __cplusplus
#include <Arduino.h>
#include "platform_config.h"
#define PAGE_SIZE 16 //16 //32 //2048 //1024
#ifdef HAS_PSRAM
#define PAGE_SIZE 16 //32 //2048 //1024
#define MAX_PAGES 8
#else
#define PAGE_SIZE 256
#define MAX_PAGES 8
#endif
struct Page {
uint8_t page[PAGE_SIZE];

Wyświetl plik

@ -175,19 +175,6 @@ void setup() {
// ****************************************************
void loop(void)
{
#if defined(__IMXRT1052__) || defined(__IMXRT1062__)
#else
// if ( ((emu_ReadKeys() & (MASK_KEY_USER1+MASK_KEY_USER2)) == (MASK_KEY_USER1+MASK_KEY_USER2))
// || (emu_ReadKeys() & MASK_KEY_USER4 ) )
// {
// emu_printf((char*)"esc");
// *(volatile uint32_t *)0xE000ED0C = 0x5FA0004;
// while (true) {
// ;
// }
// }
#endif
if (menuActive()) {
uint16_t bClick = emu_DebounceLocalKeys();
int action = handleMenu(bClick);

Wyświetl plik

@ -5,8 +5,8 @@
#include "TFT_T_DMA.h"
#include "font8x8.h"
//#define SPICLOCK 144e6 //Just a number..max speed
#define SPICLOCK 60000000
#define SPICLOCK 60000000 //144e6 //Just a number..max speed
#ifdef ILI9341
#define SPI_MODE SPI_MODE0
#endif
@ -33,7 +33,7 @@
static uint16_t fb0[LINES_PER_BLOCK*TFT_WIDTH];
static uint16_t fb1[LINES_PER_BLOCK*TFT_WIDTH];
static uint16_t fb2[LINES_PER_BLOCK*TFT_WIDTH];
static uint16_t fb3[LINES_PER_BLOCK*TFT_WIDTH];
static uint16_t fb3[(TFT_HEIGHT-3*LINES_PER_BLOCK)*TFT_WIDTH];
static uint16_t * blocks[NR_OF_BLOCK]={fb0,fb1,fb2,fb3};
#else
static uint16_t * blocks[NR_OF_BLOCK];
@ -218,20 +218,35 @@ TFT_T_DMA::TFT_T_DMA(uint8_t cs, uint8_t dc, uint8_t rst, uint8_t mosi, uint8_t
void TFT_T_DMA::setArea(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) {
int dx=0;
int dy=0;
#ifdef ST7789
#ifdef ROTATE_SCREEN
if (!flipped) {
dy += 80;
}
#else
if (flipped) {
dx += 80;
}
#endif
#endif
SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE));
digitalWrite(_cs, 0);
digitalWrite(_dc, 0);
SPI.transfer(TFT_CASET);
digitalWrite(_dc, 1);
SPI.transfer16(x1);
SPI.transfer16(x2);
SPI.transfer16(x1+dx);
SPI.transfer16(x2+dx);
digitalWrite(_dc, 0);
SPI.transfer(TFT_PASET);
digitalWrite(_dc, 1);
SPI.transfer16(y1);
SPI.transfer16(y2);
SPI.transfer16(y1+dy);
SPI.transfer16(y2+dy);
digitalWrite(_dc, 0);
SPI.transfer(TFT_RAMWR);
@ -325,7 +340,6 @@ void TFT_T_DMA::begin(void) {
}
}
#endif
setArea(0, 0, TFT_REALWIDTH-1, TFT_REALHEIGHT-1);
cancelled = false;
@ -351,8 +365,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
//SPI.transfer(ST77XX_MADCTL_RGB);
SPI.transfer(ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MY | ST77XX_MADCTL_MV |ST77XX_MADCTL_RGB);
#endif
#endif
}
else {
@ -361,7 +378,11 @@ void TFT_T_DMA::flipscreen(bool flip)
SPI.transfer(ILI9341_MADCTL_MX | ILI9341_MADCTL_MY | ILI9341_MADCTL_MV | ILI9341_MADCTL_BGR);
#endif
#ifdef ST7789
#ifdef ROTATE_SCREEN
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_RGB);
#else
SPI.transfer(ST77XX_MADCTL_MX | ST77XX_MADCTL_MV | ST77XX_MADCTL_RGB);
#endif
#endif
}
digitalWrite(_cs, 1);
@ -861,7 +882,7 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin
src=buffer;
for (i=0; i<width; i++)
{
uint16_t val = palette16[(*src++)&PAL_COLOR_MASK];
uint16_t val = palette16[*src++];
*dst++ = val;
*dst++ = val;
}
@ -872,7 +893,7 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin
src=buffer;
for (i=0; i<width; i++)
{
uint16_t val = palette16[(*src++)&PAL_COLOR_MASK];
uint16_t val = palette16[*src++];
*dst++ = val;
*dst++ = val;
}
@ -890,7 +911,7 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin
src=buffer;
for (i=0; i<width; i++)
{
uint16_t val = palette16[(*src++)&PAL_COLOR_MASK];
uint16_t val = palette16[*src++];
*dst++ = val;
}
y++;
@ -900,7 +921,7 @@ void TFT_T_DMA::writeScreen(int width, int height, int stride, uint8_t *buf, uin
src=buffer;
for (i=0; i<width; i++)
{
uint16_t val = palette16[(*src++)&PAL_COLOR_MASK];
uint16_t val = palette16[*src++];
*dst++ = val;
}
y++;
@ -919,11 +940,11 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
int pos = delta;
for (int i=0; i<TFT_WIDTH; i++)
{
uint16_t val = palette16[(*buf++)&PAL_COLOR_MASK];
uint16_t val = palette16[*buf++];
pos--;
if (pos == 0) {
#ifdef LINEARINT_HACK
val = ((uint32_t)palette16[(*buf++)&PAL_COLOR_MASK] + val)/2;
val = ((uint32_t)palette16[*buf++] + val)/2;
#else
uint16_t val2 = *buf++;
val = RGBVAL16((R16(val)+R16(val2))/2,(G16(val)+G16(val2))/2,(B16(val)+B16(val2))/2);
@ -937,7 +958,7 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
int pos = 0;
for (int i=0; i<TFT_WIDTH; i++)
{
*dst++=palette16[buf[pos >> 8]&PAL_COLOR_MASK];
*dst++=palette16[buf[pos >> 8]];
pos +=step;
}
#endif
@ -945,8 +966,8 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
else if ((width*2) == TFT_WIDTH) {
for (int i=0; i<width; i++)
{
*dst++=palette16[(*buf)&PAL_COLOR_MASK];
*dst++=palette16[(*buf++)&PAL_COLOR_MASK];
*dst++=palette16[*buf];
*dst++=palette16[*buf++];
}
}
else {
@ -955,7 +976,7 @@ void TFT_T_DMA::writeLine(int width, int height, int y, uint8_t *buf, uint16_t *
}
for (int i=0; i<width; i++)
{
*dst++=palette16[(*buf++)&PAL_COLOR_MASK];
*dst++=palette16[*buf++];
}
}
}

Wyświetl plik

@ -1,5 +1,12 @@
//#define ST7789 1
#include "platform_config.h"
#ifdef TEENSYBOY
#define ST7789 1
#define ROTATE_SCREEN 1
#else
#define ILI9341 1
#endif
#define TFT_LINEARINT 1
#define LINEARINT_HACK 1

Wyświetl plik

@ -38,3 +38,4 @@ const uint16_t PROGMEM bmpjoy[] = {
0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,
0x0000,0x0000,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x247c,0x0000,0x0000};

Wyświetl plik

@ -37,3 +37,4 @@ const uint16_t PROGMEM bmptft[] = {
0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861,
0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861};

Wyświetl plik

@ -149,3 +149,4 @@ const uint16_t PROGMEM bmpvbar[] = {
0x0000,0x0000,0xe73d,0xc69c,0xa5da,0x9d9a,0x9d9a,0x9d9a,0xa59a,0xa5ba,0xa5ba,0x9dbb,0x9dbb,0xa5ba,0xa5da,0xa5fa,0xa5da,0xa5db,0xa5db,0xa5db,0xa5db,0xa5fb,0xa5fb,0xa5fb,0xa5fb,0xa61b,0xae3b,0xb67b,0xc6dc,0xe75e,0x0000,0x0861,
0x0000,0x0000,0x0000,0xe75d,0xd6fc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcebc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xcedc,0xd6dc,0xd6dc,0xd6fc,0xd71c,0xdf1c,0x0000,0x0000,0x0861};

Wyświetl plik

@ -37,3 +37,4 @@ const uint16_t PROGMEM bmpvga[] = {
0x0000,0x0000,0xdf1d,0xb63b,0x9579,0x8d19,0x8d19,0x8d19,0x8d19,0x8d39,0x8d39,0x8d39,0x8d3a,0x8d39,0x9559,0x9579,0x9579,0x957a,0x957a,0x955a,0x957a,0x957a,0x957a,0x959a,0x959a,0x959a,0x9dba,0xa61a,0xbe9b,0xdf3d,0x0000,0x0861,
0x0000,0x0000,0x0000,0xdf3d,0xc6bc,0xc67b,0xc67b,0xc65b,0xc67b,0xc67b,0xc67b,0xc67b,0xbe5b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xc69c,0xc67b,0xc67b,0xc69b,0xc69b,0xc69b,0xc69b,0xce9b,0xc6bc,0xcedb,0xd6fb,0x0000,0x0000,0x0861};

Wyświetl plik

@ -7,8 +7,10 @@
//#define HAS_I2CKBD 1
//#define TIMER_REND 1
// Title: < >
#define TITLE " File Selector "
#define EXTRA_HEAP 0x10
// Title: < >
#define TITLE " File Selector"
#define ROMSDIR "/"
#define emu_Init(ROM) { }
@ -100,6 +102,10 @@ extern void emu_FileClose(void);
extern int emu_FileSize(char * filename);
extern int emu_LoadFile(char * filename, char * buf, int size);
extern int emu_LoadFileSeek(char * filename, char * buf, int size, int seek);
extern void emu_FileTempInit(void);
extern void emu_FileTempRead(int addr, unsigned char * val, int n);
extern void emu_FileTempWrite(int addr, unsigned char val);
extern void emu_SetPaletteEntry(unsigned char r, unsigned char g, unsigned char b, int index);
extern void emu_DrawScreen(unsigned char * VBuf, int width, int height, int stride);
extern void emu_DrawLine(unsigned char * VBuf, int width, int height, int line);

Wyświetl plik

@ -28,6 +28,12 @@
#define TFT_RST 255
#endif
// PSRAM
#define PSRAM_CS 36
#define PSRAM_MOSI 35
#define PSRAM_MISO 34
#define PSRAM_SCLK 37
// SD
#define SD_SCLK 13
#define SD_MOSI 12

Wyświetl plik

@ -3,6 +3,12 @@
//#define OLD_LAYOUT 1
//#define TEENSYBOY 1
//#define HAS_PSRAM 1
//#define USE_SDFAT 1
//#define SD_FAT_TYPE 1
//#define USE_SDFS 1
//#define SDFSDEV "1:"
#endif

Some files were not shown because too many files have changed in this diff Show More