From aa9e5b2807ad4b3125db59c840e3789253d01c75 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Tue, 19 Oct 2021 15:30:54 +0200 Subject: [PATCH 01/21] Display current commit hash if ota is enabled --- main/displays/menus/aboutmenu.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/main/displays/menus/aboutmenu.h b/main/displays/menus/aboutmenu.h index 3f14ae1..4e8a8c5 100644 --- a/main/displays/menus/aboutmenu.h +++ b/main/displays/menus/aboutmenu.h @@ -8,6 +8,11 @@ #include "icons/back.h" #include "esptexthelpers.h" #include "texts.h" +#ifdef FEATURE_OTA +#include +#include +#include "fmt/core.h" +#endif // forward declares namespace { @@ -17,6 +22,18 @@ class SettingsMenu; using namespace espgui; namespace { + +class currentVersionText : public virtual TextInterface { public: std::string text() const override { +#ifdef FEATURE_OTA + if (const esp_app_desc_t *app_desc = esp_ota_get_app_description()) + { + return fmt::format("Version: {}", app_desc->version); + } +#endif + return "Version: 1.0"; + }; +}; + constexpr char TEXT_VERSION[] = "Version: 1.0"; class AboutMenu : @@ -27,7 +44,7 @@ class AboutMenu : public: AboutMenu() { - constructMenuItem, DummyAction>>(); + constructMenuItem>(); constructMenuItem, DisabledColor, DummyAction>>(); constructMenuItem, DisabledColor, DummyAction>>(); constructMenuItem, DisabledColor, DummyAction>>(); From 4ea080e7f7841a82e653277d3d65b02592df7aac Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Tue, 19 Oct 2021 22:03:39 +0200 Subject: [PATCH 02/21] Implemented menu --- main/CMakeLists.txt | 1 - main/actions/selectbuildserveraction.h | 4 -- main/buildserver.h | 45 +++++++++++++++++++++ main/displays/menus/selectbuildservermenu.h | 41 ++++++++++++++----- main/presets.h | 1 + main/stringsettings.h | 3 ++ 6 files changed, 81 insertions(+), 14 deletions(-) delete mode 100644 main/actions/selectbuildserveraction.h diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 6241553..d2aa6f4 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -77,7 +77,6 @@ set(headers actions/multiaction.h actions/rebootaction.h actions/savesettingsaction.h - actions/selectbuildserveraction.h actions/switchprofileaction.h actions/tempomatmodeapplycurrentpeedaction.h actions/updateswapfrontbackaction.h diff --git a/main/actions/selectbuildserveraction.h b/main/actions/selectbuildserveraction.h deleted file mode 100644 index 61e87de..0000000 --- a/main/actions/selectbuildserveraction.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#include "actioninterface.h" -#include "globals.h" diff --git a/main/buildserver.h b/main/buildserver.h index e69de29..1b370cc 100644 --- a/main/buildserver.h +++ b/main/buildserver.h @@ -0,0 +1,45 @@ +#pragma once + +#include "globals.h" +#include "esp_log.h" +#include "fmt/core.h" + +// esp-idf +#include "esp_http_client.h" + +/* + * ToDo: + * - get_ota_decriptor_json_string => returns std::string, takes std::string url + */ +namespace { + +std::string ota_descriptor_json = ""; + +std::string get_ota_url_from_index(uint16_t index) +{ + if (index < stringSettings.otaServers.size()) + { + auto otaServer = stringSettings.otaServers[index]; + if (!otaServer.url.empty()) + { + return otaServer.url; + } + else + { + ESP_LOGE("BOBBY", "Cannot get OTA url: otaServer.url is empty"); + return ""; + } + } + else + { + ESP_LOGE("BOBBY", "Cannot get OTA url: Invalid Index"); + return ""; + } +} + +void get_ota_descriptor(std::string url) +{ + auto descriptorUrl = fmt::format("{}/otaDescriptor", url); + // Make GET request to descriptorUrl and store json somewhere to be decoded when needed, for example in ota_descriptor_json (buildserver.h:16) +} +} diff --git a/main/displays/menus/selectbuildservermenu.h b/main/displays/menus/selectbuildservermenu.h index 21cf7fe..283e271 100644 --- a/main/displays/menus/selectbuildservermenu.h +++ b/main/displays/menus/selectbuildservermenu.h @@ -4,10 +4,14 @@ #include "menudisplay.h" #include "utils.h" #include "actions/dummyaction.h" -#include "actions/selectbuildserveraction.h" #include "icons/back.h" #include "texts.h" #include "globals.h" +#include "buildserver.h" + +// Debugging +#include "esp_log.h" +#include "fmt/core.h" // forward declares @@ -19,6 +23,28 @@ using namespace espgui; namespace { +class BuildserverMenuItem : public MenuItem +{ + +public: + + std::string text() const override { return m_buildserver_name; } + void setBuildserverName(std::string &&buildserver_name) { m_buildserver_name = std::move(buildserver_name); } + void setBuildserverName(const std::string &buildserver_name) { m_buildserver_name = buildserver_name; } + void setBuildserverUrl(std::string &&buildserver_url) { m_buildserver_url = std::move(buildserver_url); } + void setBuildserverUrl(const std::string &buildserver_url) { m_buildserver_url = buildserver_url; } + + void triggered() override + { + stringSettings.otaServerUrl = m_buildserver_url; + saveSettings(); + } + +private: + std::string m_buildserver_url; + std::string m_buildserver_name; +}; + class SelectBuildServerMenu : public MenuDisplay, public StaticText, @@ -27,22 +53,19 @@ class SelectBuildServerMenu : public: SelectBuildServerMenu() { - auto numDisplayedServers = 0; - - for (auto index = 0; index < stringSettings.otaServers.size(); index++) + for (const auto &otaServer : stringSettings.otaServers) { - auto otaServer = stringSettings.otaServers[index]; std::string url = otaServer.url; std::string name = (otaServer.name.empty()) ? url : otaServer.name; if (!name.empty()) { - auto menuitem = constructMenuItem>(); - menuitem.setTitle(name); - numDisplayedServers++; + auto &menuitem = constructMenuItem(); + menuitem.setBuildserverName(name); + menuitem.setBuildserverUrl(url); } } - if (!numDisplayedServers) + if (menuItemCount() < 1) { constructMenuItem, DummyAction>>(); } diff --git a/main/presets.h b/main/presets.h index 6d0c671..43d9d46 100644 --- a/main/presets.h +++ b/main/presets.h @@ -339,6 +339,7 @@ StringSettings makeDefaultStringSettings() ConfiguredOtaServer { .name = {}, .url = {} }, ConfiguredOtaServer { .name = {}, .url = {} },*/ }, + .otaServerUrl = {}, #endif }; } diff --git a/main/stringsettings.h b/main/stringsettings.h index 835c890..8a84352 100644 --- a/main/stringsettings.h +++ b/main/stringsettings.h @@ -44,6 +44,7 @@ struct StringSettings }; std::array otaServers; + std::string otaServerUrl; #endif }; @@ -106,6 +107,8 @@ void StringSettings::executeForEveryCommonSetting(T &&callable) callable("otaUrl8", otaServers[8].url); callable("otaName9", otaServers[9].name); callable("otaUrl9", otaServers[9].url);*/ + + callable("otaserver", otaServerUrl); #endif } From bc2b194acbc5b5a6077ea37424308ca0c6dab970 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Wed, 20 Oct 2021 00:58:37 +0200 Subject: [PATCH 03/21] Simplified --- main/ble_bobby.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/main/ble_bobby.h b/main/ble_bobby.h index e72c746..ccf926b 100644 --- a/main/ble_bobby.h +++ b/main/ble_bobby.h @@ -249,12 +249,15 @@ void RemoteControlCallbacks::onWrite(NimBLECharacteristic* pCharacteristic) if (blinkAnimation != newBlinkAnimation) blinkAnimation = newBlinkAnimation; #endif - modes::remoteControlMode.setCommand(RemoteCommand{ - .frontLeft = doc["fl"].as(), - .frontRight = doc["fr"].as(), - .backLeft = doc["bl"].as(), - .backRight = doc["br"].as() - }); + if (!simplified) + { + modes::remoteControlMode.setCommand(RemoteCommand{ + .frontLeft = doc["fl"].as(), + .frontRight = doc["fr"].as(), + .backLeft = doc["bl"].as(), + .backRight = doc["br"].as() + }); + } } #ifdef FEATURE_WIRELESS_CONFIG From ea98b02d92726bbdf5bfce54ad9e1a45229bce15 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 00:08:21 +0200 Subject: [PATCH 04/21] Buildserver is now selectable --- main/CMakeLists.txt | 2 + main/buildserver.h | 185 ++++++++++++++++++++--- main/displays/menus/mainmenu.h | 4 +- main/displays/menus/otamenu.h | 39 +++++ main/displays/menus/selectotabuildmenu.h | 147 ++++++++++++++++++ main/displays/updatedisplay.h | 4 +- main/main.cpp | 2 + main/texts.h | 8 + 8 files changed, 364 insertions(+), 27 deletions(-) create mode 100644 main/displays/menus/otamenu.h create mode 100644 main/displays/menus/selectotabuildmenu.h diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index d2aa6f4..3723ec6 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -125,6 +125,8 @@ set(headers displays/menus/mosfetsmenu.h displays/menus/motorfeedbackdebugmenu.h displays/menus/motorstatedebugmenu.h + displays/menus/otamenu.h + displays/menus/selectotabuildmenu.h displays/menus/presetsmenu.h displays/menus/profilesmenu.h displays/menus/selectbatterytypemenu.h diff --git a/main/buildserver.h b/main/buildserver.h index 1b370cc..4a8da09 100644 --- a/main/buildserver.h +++ b/main/buildserver.h @@ -1,5 +1,14 @@ #pragma once +#include +#include +#include + +// 3rdparty lib includes +#include +#include + +// local includes #include "globals.h" #include "esp_log.h" #include "fmt/core.h" @@ -7,39 +16,169 @@ // esp-idf #include "esp_http_client.h" -/* - * ToDo: - * - get_ota_decriptor_json_string => returns std::string, takes std::string url - */ namespace { + void buildMenuFromJson(std::string json); + void buildMenuRequestError(std::string error); + static std::string url_for_hashes = ""; + static std::string url_for_latest = ""; + static std::array availableVersions = {}; + bool request_running = false; + uint16_t request_failed = false; + bool parsing_finished = false; + cpputils::DelayedConstruction request; -std::string ota_descriptor_json = ""; - -std::string get_ota_url_from_index(uint16_t index) -{ - if (index < stringSettings.otaServers.size()) + std::string get_ota_url_from_index(uint16_t index) { - auto otaServer = stringSettings.otaServers[index]; - if (!otaServer.url.empty()) + if (index < stringSettings.otaServers.size()) { - return otaServer.url; + auto otaServer = stringSettings.otaServers[index]; + if (!otaServer.url.empty()) + { + return otaServer.url; + } + else + { + ESP_LOGE("BOBBY", "Cannot get OTA url: otaServer.url is empty"); + return ""; + } } else { - ESP_LOGE("BOBBY", "Cannot get OTA url: otaServer.url is empty"); + ESP_LOGE("BOBBY", "Cannot get OTA url: Invalid Index"); return ""; } } - else + + uint16_t count_available_buildserver() { - ESP_LOGE("BOBBY", "Cannot get OTA url: Invalid Index"); - return ""; + uint16_t count = 0; + for (const auto &otaServer : stringSettings.otaServers) { + if (!otaServer.url.empty()) count++; + } + return count; + } + + std::string get_hash_url(std::string hash) + { + return fmt::format(url_for_hashes, hash); + } + + std::string get_latest_url() + { + return url_for_latest; + } + + std::string fix_url(std::string url) + { + std::string fixed_url = url; + if (fixed_url.find("http") == std::string::npos) + { + fixed_url = fmt::format("http://{}", fixed_url); + } + return fixed_url; + } + + std::string get_descriptor_url(std::string base_url) + { + std::string url = fix_url(base_url); + return fmt::format("{}/otaDescriptor?username={}", url, OTA_USERNAME); + } + + void parse_response_into_variables(std::string response) + { + StaticJsonDocument<512> doc; + + if (const auto error = deserializeJson(doc, response)) + { + ESP_LOGE("BOBBY", "Error parsing server-response => %s", response.c_str()); + return; + } + + JsonObject availableVersionsObject = doc["availableVersions"]; + for (JsonPair kv : availableVersionsObject) + { + static auto index = 0; + auto hash = kv.key().c_str(); + if (index > availableVersions.size()) + { + break; + } + availableVersions.at(index) = hash; + index++; + } + + url_for_latest = doc["latest"].as(); + url_for_hashes = doc["url"].as(); + parsing_finished = true; + } + + void setup_request() + { + if (!request.constructed()) + request.construct("ota-descriptor-request", espcpputils::CoreAffinity::Core0); + } + + void start_descriptor_request(std::string server_base_url) + { + if (!request.constructed()) + { + ESP_LOGW("BOBBY", "request is im oarsch"); + return; + } + + const auto url = get_descriptor_url(server_base_url); + ESP_LOGD("BOBBY", "requesting data..."); + if (const auto result = request->start(url); !result) + { + ESP_LOGW("BOBBY", "request start failed"); + return; + } + request_running = true; + request_failed = false; + url_for_latest.clear(); + url_for_hashes.clear(); + availableVersions = {}; + parsing_finished = false; + } + + void check_descriptor_request() + { + if (!request.constructed()) + { + ESP_LOGW("BOBBY", "request is im oarsch"); + request_running = false; + request_failed = true; + return; + } + + if (!request->finished()) + { + // ESP_LOGW("BOBBY", "Request has not finished yet."); + return; + } + + const auto helper = cpputils::makeCleanupHelper([](){ request->clearFinished(); }); + const std::string content = std::move(request->takeBuffer()); + + if (const auto result = request->result(); !result) + { + ESP_LOGW("BOBBY", "request failed: %.*s", result.error().size(), result.error().data()); + std::string failed_str = result.error().data(); + auto statuscode = failed_str.substr(failed_str.length() - 3); + request_running = false; + request_failed = std::stoi(statuscode); + return; + } + + const auto result = request->result(); + ESP_LOGW("BOBBY", "Request finished: %s", content.c_str()); + parse_response_into_variables(content); + request_running = false; + request_failed = false; + } + + bool get_request_running() + { + return request_running; } } - -void get_ota_descriptor(std::string url) -{ - auto descriptorUrl = fmt::format("{}/otaDescriptor", url); - // Make GET request to descriptorUrl and store json somewhere to be decoded when needed, for example in ota_descriptor_json (buildserver.h:16) -} -} diff --git a/main/displays/menus/mainmenu.h b/main/displays/menus/mainmenu.h index f46fde9..5b76179 100644 --- a/main/displays/menus/mainmenu.h +++ b/main/displays/menus/mainmenu.h @@ -46,7 +46,7 @@ class Lockscreen; class MosfetsMenu; class DemosMenu; class GarageDisplay; -class UpdateDisplay; +class OtaMenu; class PoweroffDisplay; class DebugMenu; class BatteryMenu; @@ -97,7 +97,7 @@ public: if (SHOWITEM) { constructMenuItem, SwitchScreenAction>>(); } #endif #ifdef FEATURE_OTA - if (SHOWITEM) { constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::update>>>(); } + if (SHOWITEM) { constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::update>>>(); } #endif constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::poweroff>>>(); constructMenuItem, RebootAction, StaticMenuItemIcon<&bobbyicons::reboot>>>(); diff --git a/main/displays/menus/otamenu.h b/main/displays/menus/otamenu.h new file mode 100644 index 0000000..85d3a19 --- /dev/null +++ b/main/displays/menus/otamenu.h @@ -0,0 +1,39 @@ +#pragma once + +// local includes +#include "menudisplay.h" +#include "utils.h" +#include "actions/dummyaction.h" +#include "icons/back.h" +#include "icons/update.h" +#include "icons/presets.h" +#include "texts.h" + + +// forward declares +namespace { +class MainMenu; +class UpdateDisplay; +class SelectBuildMenu; +class SelectBuildServerMenu; +} // namespace + +using namespace espgui; + +namespace { + +class OtaMenu : + public MenuDisplay, + public StaticText, + public BackActionInterface> +{ +public: + OtaMenu() + { + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::presets>>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::update>>>(); + constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + } +}; +} // namespace diff --git a/main/displays/menus/selectotabuildmenu.h b/main/displays/menus/selectotabuildmenu.h new file mode 100644 index 0000000..dace7a7 --- /dev/null +++ b/main/displays/menus/selectotabuildmenu.h @@ -0,0 +1,147 @@ +#pragma once + +#include +#include "esp_log.h" +#include "fmt/core.h" + +// local includes +#include "menudisplay.h" +#include "utils.h" +#include "actions/dummyaction.h" +#include "icons/back.h" +#include "icons/update.h" +#include "texts.h" + +#include "buildserver.h" +#include "globals.h" + +#define MESSAGE(text) constructMenuItem, DummyAction>>() + +// forward declares +namespace { +class OtaMenu; +} // namespace + +using namespace espgui; + +namespace { + +// ToDo: if (request_failed) => MESSAGE("An error occurred") + +class VersionMenuItem : public MenuItem +{ +public: + std::string text() const override { return m_hash; } + void setHash(std::string &&hash) { m_hash = std::move(hash); } + void setHash(const std::string &hash) { m_hash = hash; } + void setUrl(std::string &&url) { m_url = std::move(url); } + void setUrl(const std::string &url) { m_url = url; } + + void triggered() override + { + stringSettings.otaUrl = m_url; + saveSettings(); + } +private: + std::string m_url; + std::string m_hash; +}; + +class SelectBuildMenu : + public MenuDisplay, + public StaticText, + public BackActionInterface> +{ + using Base = MenuDisplay; +public: + void update() override; + void buildMenuFromJson(); + void buildMenuRequestError(std::string error); + SelectBuildMenu() + { + if (count_available_buildserver() < 1) + { + MESSAGE(TEXT_OTA_NOBUILDSERVERAVAILABLE); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + } + else if (stringSettings.otaServerUrl.empty()) + { + MESSAGE(TEXT_OTA_NOBUILDSERVERSELECTED); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + } + else + { + const auto staStatus = wifi_stack::get_sta_status(); + if (staStatus != wifi_stack::WiFiStaStatus::CONNECTED) + { + MESSAGE(TEXT_OTA_NOCONNECTION); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + } + else + { + std::string serverUrl = stringSettings.otaServerUrl; + if (serverUrl.substr(serverUrl.length() - 4) == ".bin") + { + auto &menuitem = constructMenuItem(); + std::size_t last_slash_index = serverUrl.find_last_of("/"); + auto filename = serverUrl.substr(last_slash_index+1); + auto hash = filename.substr(0, filename.length() - 4); + menuitem.setHash(hash); + menuitem.setUrl(fix_url(serverUrl)); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + } + else + { + setup_request(); + start_descriptor_request(serverUrl); + } + } + } + } +}; + +void SelectBuildMenu::update() +{ + if(get_request_running()) + { + check_descriptor_request(); + if (request_failed) + { + this->buildMenuRequestError(fmt::format("Error: {}", request_failed)); + request_failed = false; + } + } + + if (parsing_finished) + { + parsing_finished = false; + if (!availableVersions.empty()) + { + this->buildMenuFromJson(); + } + } + Base::update(); +} + +void SelectBuildMenu::buildMenuFromJson() +{ + auto &latest = constructMenuItem(); + latest.setHash("latest"); + latest.setUrl(url_for_latest); + + for (const std::string &hash : availableVersions) + { + auto &menuitem = constructMenuItem(); + menuitem.setHash(hash); + menuitem.setUrl(fmt::format(url_for_hashes, hash)); + } + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); +} + +void SelectBuildMenu::buildMenuRequestError(std::string error) +{ + auto &item = constructMenuItem>(); + item.setTitle(error); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); +} +} // namespace diff --git a/main/displays/updatedisplay.h b/main/displays/updatedisplay.h index 378f51f..6e0a60c 100644 --- a/main/displays/updatedisplay.h +++ b/main/displays/updatedisplay.h @@ -23,12 +23,12 @@ #include "ota.h" namespace { -class MainMenu; +class OtaMenu; } namespace { #ifdef FEATURE_OTA -class UpdateDisplay : public Display, public BackActionInterface> +class UpdateDisplay : public Display, public BackActionInterface> { public: void start() override; diff --git a/main/main.cpp b/main/main.cpp index 39f794e..1b5f967 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -106,6 +106,8 @@ using namespace std::chrono_literals; #include "displays/statusdisplay.h" #ifdef FEATURE_OTA #include "displays/updatedisplay.h" +#include "displays/menus/otamenu.h" +#include "displays/menus/selectotabuildmenu.h" #endif #include "screens.h" #include "dpad.h" diff --git a/main/texts.h b/main/texts.h index 6ad8451..3d85cb8 100644 --- a/main/texts.h +++ b/main/texts.h @@ -475,6 +475,14 @@ constexpr char TEXT_CRASH_DIVZERO[] = "42 / 0"; constexpr char TEXT_SELECTBUILDSERVERMENU[] = "Select Buildserver"; constexpr char TEXT_NOBUILDSERVERCONFIGURED[] = "Not configured"; +//Otamenu +constexpr char TEXT_UPDATENOW[] = "Update now"; +constexpr char TEXT_SELECTBUILD[] = "Select build"; +constexpr char TEXT_OTA_NOBUILDSERVERAVAILABLE[] = "E:No server saved."; +constexpr char TEXT_OTA_NOBUILDSERVERSELECTED[] = "E:No server selected."; +constexpr char TEXT_OTA_NOCONNECTION[] = "E:No internet."; +constexpr char TEXT_OTA_WAITFORRESPONSE[] = "Wait for response..."; + #ifdef FEATURE_CAN constexpr char TEXT_POWERSUPPLY[] = "Powersupply"; #endif From d7e76c5a0ed6ea50592f1df1b447aff79877dcdd Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 00:17:25 +0200 Subject: [PATCH 05/21] Fixed url --- main/buildserver.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/buildserver.h b/main/buildserver.h index 4a8da09..c074aa1 100644 --- a/main/buildserver.h +++ b/main/buildserver.h @@ -107,8 +107,8 @@ namespace { index++; } - url_for_latest = doc["latest"].as(); - url_for_hashes = doc["url"].as(); + url_for_latest = fix_url(fmt::format("{}{}", stringSettings.otaServerUrl, doc["latest"].as())); + url_for_hashes = fix_url(fmt::format("{}{}", stringSettings.otaServerUrl, doc["url"].as())); parsing_finished = true; } From 6ba8b897db64a631dcc5e9a4eced90b8924afa3e Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 00:43:56 +0200 Subject: [PATCH 06/21] Dont make request every time menu is visited --- main/buildserver.h | 11 ++++++++++- main/displays/menus/otamenu.h | 10 ++++++++++ main/texts.h | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/main/buildserver.h b/main/buildserver.h index c074aa1..5f1f8ca 100644 --- a/main/buildserver.h +++ b/main/buildserver.h @@ -25,6 +25,7 @@ namespace { bool request_running = false; uint16_t request_failed = false; bool parsing_finished = false; + static bool redownload = true; cpputils::DelayedConstruction request; std::string get_ota_url_from_index(uint16_t index) @@ -95,9 +96,9 @@ namespace { } JsonObject availableVersionsObject = doc["availableVersions"]; + static auto index = 0; for (JsonPair kv : availableVersionsObject) { - static auto index = 0; auto hash = kv.key().c_str(); if (index > availableVersions.size()) { @@ -107,9 +108,12 @@ namespace { index++; } + index = 0; + url_for_latest = fix_url(fmt::format("{}{}", stringSettings.otaServerUrl, doc["latest"].as())); url_for_hashes = fix_url(fmt::format("{}{}", stringSettings.otaServerUrl, doc["url"].as())); parsing_finished = true; + redownload = false; } void setup_request() @@ -120,6 +124,11 @@ namespace { void start_descriptor_request(std::string server_base_url) { + if (!redownload) + { + parsing_finished = true; + return; + } if (!request.constructed()) { ESP_LOGW("BOBBY", "request is im oarsch"); diff --git a/main/displays/menus/otamenu.h b/main/displays/menus/otamenu.h index 85d3a19..e808595 100644 --- a/main/displays/menus/otamenu.h +++ b/main/displays/menus/otamenu.h @@ -2,12 +2,14 @@ // local includes #include "menudisplay.h" +#include "actioninterface.h" #include "utils.h" #include "actions/dummyaction.h" #include "icons/back.h" #include "icons/update.h" #include "icons/presets.h" #include "texts.h" +#include "buildserver.h" // forward declares @@ -22,6 +24,13 @@ using namespace espgui; namespace { +class RedownloadJsonAction : public virtual ActionInterface { +public: + void triggered() override { + redownload = true; + } +}; + class OtaMenu : public MenuDisplay, public StaticText, @@ -33,6 +42,7 @@ public: constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::presets>>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::update>>>(); constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, RedownloadJsonAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; diff --git a/main/texts.h b/main/texts.h index 3d85cb8..1a5ffa3 100644 --- a/main/texts.h +++ b/main/texts.h @@ -482,6 +482,7 @@ constexpr char TEXT_OTA_NOBUILDSERVERAVAILABLE[] = "E:No server saved."; constexpr char TEXT_OTA_NOBUILDSERVERSELECTED[] = "E:No server selected."; constexpr char TEXT_OTA_NOCONNECTION[] = "E:No internet."; constexpr char TEXT_OTA_WAITFORRESPONSE[] = "Wait for response..."; +constexpr char TEXT_REDOWNLOAD[] = "Reload list"; #ifdef FEATURE_CAN constexpr char TEXT_POWERSUPPLY[] = "Powersupply"; From 503b109c4da043021ec27b095b22c3d847172115 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 13:42:20 +0200 Subject: [PATCH 07/21] Redownload commit list after server change --- main/displays/menus/selectbuildservermenu.h | 1 + 1 file changed, 1 insertion(+) diff --git a/main/displays/menus/selectbuildservermenu.h b/main/displays/menus/selectbuildservermenu.h index 283e271..489dcd7 100644 --- a/main/displays/menus/selectbuildservermenu.h +++ b/main/displays/menus/selectbuildservermenu.h @@ -38,6 +38,7 @@ public: { stringSettings.otaServerUrl = m_buildserver_url; saveSettings(); + redownload = true; } private: From 119ff94a365a90435d2ab308a2a11b9e07fb4168 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 13:55:10 +0200 Subject: [PATCH 08/21] Increased main task stack size to avoid crashes until the new config system is implemented --- sdkconfig_comred | 4 ++-- sdkconfig_feedc0de | 4 ++-- sdkconfig_greyhash | 4 ++-- sdkconfig_mick | 4 ++-- sdkconfig_peter | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sdkconfig_comred b/sdkconfig_comred index c496d51..9643c42 100644 --- a/sdkconfig_comred +++ b/sdkconfig_comred @@ -522,7 +522,7 @@ CONFIG_ADC_CAL_LUT_ENABLE=y CONFIG_ESP_ERR_TO_NAME_LOOKUP=y CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=5120 CONFIG_ESP_MAIN_TASK_CORE_AFFINITY=1 CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y @@ -1424,7 +1424,7 @@ CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y # CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_MAIN_TASK_STACK_SIZE=4096 +CONFIG_MAIN_TASK_STACK_SIZE=5120 CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_CONSOLE_UART_DEFAULT=y # CONFIG_CONSOLE_UART_CUSTOM is not set diff --git a/sdkconfig_feedc0de b/sdkconfig_feedc0de index 7bff320..a93a616 100644 --- a/sdkconfig_feedc0de +++ b/sdkconfig_feedc0de @@ -522,7 +522,7 @@ CONFIG_ADC_CAL_LUT_ENABLE=y CONFIG_ESP_ERR_TO_NAME_LOOKUP=y CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=5120 CONFIG_ESP_MAIN_TASK_CORE_AFFINITY=1 CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y @@ -1419,7 +1419,7 @@ CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y # CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_MAIN_TASK_STACK_SIZE=4096 +CONFIG_MAIN_TASK_STACK_SIZE=5120 CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_CONSOLE_UART_DEFAULT=y # CONFIG_CONSOLE_UART_CUSTOM is not set diff --git a/sdkconfig_greyhash b/sdkconfig_greyhash index 4df478d..ce542bc 100644 --- a/sdkconfig_greyhash +++ b/sdkconfig_greyhash @@ -522,7 +522,7 @@ CONFIG_ADC_CAL_LUT_ENABLE=y CONFIG_ESP_ERR_TO_NAME_LOOKUP=y CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=5120 CONFIG_ESP_MAIN_TASK_CORE_AFFINITY=1 CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y @@ -1417,7 +1417,7 @@ CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y # CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_MAIN_TASK_STACK_SIZE=4096 +CONFIG_MAIN_TASK_STACK_SIZE=5120 CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_CONSOLE_UART_DEFAULT=y # CONFIG_CONSOLE_UART_CUSTOM is not set diff --git a/sdkconfig_mick b/sdkconfig_mick index 6f57b56..43306d0 100644 --- a/sdkconfig_mick +++ b/sdkconfig_mick @@ -522,7 +522,7 @@ CONFIG_ADC_CAL_LUT_ENABLE=y CONFIG_ESP_ERR_TO_NAME_LOOKUP=y CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=5120 CONFIG_ESP_MAIN_TASK_CORE_AFFINITY=1 CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y @@ -1417,7 +1417,7 @@ CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y # CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_MAIN_TASK_STACK_SIZE=4096 +CONFIG_MAIN_TASK_STACK_SIZE=5120 CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_CONSOLE_UART_DEFAULT=y # CONFIG_CONSOLE_UART_CUSTOM is not set diff --git a/sdkconfig_peter b/sdkconfig_peter index c496d51..9643c42 100644 --- a/sdkconfig_peter +++ b/sdkconfig_peter @@ -522,7 +522,7 @@ CONFIG_ADC_CAL_LUT_ENABLE=y CONFIG_ESP_ERR_TO_NAME_LOOKUP=y CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=5120 CONFIG_ESP_MAIN_TASK_CORE_AFFINITY=1 CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y @@ -1424,7 +1424,7 @@ CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y # CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_MAIN_TASK_STACK_SIZE=4096 +CONFIG_MAIN_TASK_STACK_SIZE=5120 CONFIG_IPC_TASK_STACK_SIZE=1024 CONFIG_CONSOLE_UART_DEFAULT=y # CONFIG_CONSOLE_UART_CUSTOM is not set From be98bf0965cbd9a81573ccbddf0637e78eabd05c Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 14:16:43 +0200 Subject: [PATCH 09/21] Increased buildserver limit to 5 --- main/presets.h | 4 ++-- main/stringsettings.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/main/presets.h b/main/presets.h index 43d9d46..6315542 100644 --- a/main/presets.h +++ b/main/presets.h @@ -327,12 +327,12 @@ StringSettings makeDefaultStringSettings() .timeServer = "europe.pool.ntp.org", #endif #ifdef FEATURE_OTA - .otaServers = std::array { + .otaServers = std::array { ConfiguredOtaServer { .name = {}, .url = {} }, - ConfiguredOtaServer { .name = {}, .url = {} },/* ConfiguredOtaServer { .name = {}, .url = {} }, ConfiguredOtaServer { .name = {}, .url = {} }, ConfiguredOtaServer { .name = {}, .url = {} }, + ConfiguredOtaServer { .name = {}, .url = {} },/* ConfiguredOtaServer { .name = {}, .url = {} }, ConfiguredOtaServer { .name = {}, .url = {} }, ConfiguredOtaServer { .name = {}, .url = {} }, diff --git a/main/stringsettings.h b/main/stringsettings.h index 8a84352..1a63f18 100644 --- a/main/stringsettings.h +++ b/main/stringsettings.h @@ -43,7 +43,7 @@ struct StringSettings std::string url; }; - std::array otaServers; + std::array otaServers; std::string otaServerUrl; #endif }; @@ -90,13 +90,13 @@ void StringSettings::executeForEveryCommonSetting(T &&callable) callable("otaName0", otaServers[0].name); callable("otaUrl0", otaServers[0].url); callable("otaName1", otaServers[1].name); - callable("otaUrl1", otaServers[1].url);/* + callable("otaUrl1", otaServers[1].url); callable("otaName2", otaServers[2].name); callable("otaUrl2", otaServers[2].url); callable("otaName3", otaServers[3].name); callable("otaUrl3", otaServers[3].url); callable("otaName4", otaServers[4].name); - callable("otaUrl4", otaServers[4].url); + callable("otaUrl4", otaServers[4].url);/* callable("otaName5", otaServers[5].name); callable("otaUrl5", otaServers[5].url); callable("otaName6", otaServers[6].name); From e9d78d81801f2f998102a207e32edddac11a71b6 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 14:17:12 +0200 Subject: [PATCH 10/21] Empty variables --- main/displays/menus/selectbuildservermenu.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/main/displays/menus/selectbuildservermenu.h b/main/displays/menus/selectbuildservermenu.h index 489dcd7..68889b3 100644 --- a/main/displays/menus/selectbuildservermenu.h +++ b/main/displays/menus/selectbuildservermenu.h @@ -39,6 +39,9 @@ public: stringSettings.otaServerUrl = m_buildserver_url; saveSettings(); redownload = true; + url_for_latest.clear(); + url_for_hashes.clear(); + availableVersions = {}; } private: From f59aea0474202f52918c7115f7be37c7db6ebd90 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 16:55:01 +0200 Subject: [PATCH 11/21] Adjusted spacing --- main/displays/menus/otamenu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/displays/menus/otamenu.h b/main/displays/menus/otamenu.h index e808595..f4bf45c 100644 --- a/main/displays/menus/otamenu.h +++ b/main/displays/menus/otamenu.h @@ -42,7 +42,7 @@ public: constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::presets>>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::update>>>(); constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, RedownloadJsonAction>>(); + constructMenuItem, RedownloadJsonAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; From 2010b0e2c3d58ebd4f399b3082602c5166a0b86f Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 16:55:20 +0200 Subject: [PATCH 12/21] Added colors --- main/displays/menus/selectbuildservermenu.h | 5 ++++- main/displays/menus/selectotabuildmenu.h | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/main/displays/menus/selectbuildservermenu.h b/main/displays/menus/selectbuildservermenu.h index 68889b3..52686f3 100644 --- a/main/displays/menus/selectbuildservermenu.h +++ b/main/displays/menus/selectbuildservermenu.h @@ -1,5 +1,8 @@ #pragma once +// 3rdparty lib includes +#include + // local includes #include "menudisplay.h" #include "utils.h" @@ -71,7 +74,7 @@ public: if (menuItemCount() < 1) { - constructMenuItem, DummyAction>>(); + constructMenuItem, DefaultFont, StaticColor, DummyAction>>(); } constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); diff --git a/main/displays/menus/selectotabuildmenu.h b/main/displays/menus/selectotabuildmenu.h index dace7a7..5398579 100644 --- a/main/displays/menus/selectotabuildmenu.h +++ b/main/displays/menus/selectotabuildmenu.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include "esp_log.h" #include "fmt/core.h" @@ -15,7 +16,7 @@ #include "buildserver.h" #include "globals.h" -#define MESSAGE(text) constructMenuItem, DummyAction>>() +#define MESSAGE(text) constructMenuItem, DefaultFont, StaticColor, DummyAction>>() // forward declares namespace { @@ -28,6 +29,7 @@ namespace { // ToDo: if (request_failed) => MESSAGE("An error occurred") +template class VersionMenuItem : public MenuItem { public: @@ -42,6 +44,11 @@ public: stringSettings.otaUrl = m_url; saveSettings(); } + + int color() const override + { + return item_color; + } private: std::string m_url; std::string m_hash; @@ -82,7 +89,7 @@ public: std::string serverUrl = stringSettings.otaServerUrl; if (serverUrl.substr(serverUrl.length() - 4) == ".bin") { - auto &menuitem = constructMenuItem(); + auto &menuitem = constructMenuItem>(); std::size_t last_slash_index = serverUrl.find_last_of("/"); auto filename = serverUrl.substr(last_slash_index+1); auto hash = filename.substr(0, filename.length() - 4); @@ -125,13 +132,13 @@ void SelectBuildMenu::update() void SelectBuildMenu::buildMenuFromJson() { - auto &latest = constructMenuItem(); + auto &latest = constructMenuItem>(); latest.setHash("latest"); latest.setUrl(url_for_latest); for (const std::string &hash : availableVersions) { - auto &menuitem = constructMenuItem(); + auto &menuitem = constructMenuItem>(); menuitem.setHash(hash); menuitem.setUrl(fmt::format(url_for_hashes, hash)); } @@ -140,7 +147,7 @@ void SelectBuildMenu::buildMenuFromJson() void SelectBuildMenu::buildMenuRequestError(std::string error) { - auto &item = constructMenuItem>(); + auto &item = constructMenuItem, DummyAction>>(); item.setTitle(error); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } From 50e9e13e86434f28699b790611f8b9e23e3efad8 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 20:10:08 +0200 Subject: [PATCH 13/21] Added blink commands (z&u) --- main/serialhandler.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/main/serialhandler.h b/main/serialhandler.h index 4bcde72..f4257d9 100644 --- a/main/serialhandler.h +++ b/main/serialhandler.h @@ -89,6 +89,16 @@ void handleSerial() InputDispatcher::backButton(true); InputDispatcher::backButton(false); break; + case 'z': + case 'Z': + InputDispatcher::blinkLeftButton(true); + InputDispatcher::blinkLeftButton(false); + break; + case 'u': + case 'U': + InputDispatcher::blinkRightButton(true); + InputDispatcher::blinkRightButton(false); + break; } } } From 887c43da27d6dce0338df4bcd787f57e698538df Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 20:12:08 +0200 Subject: [PATCH 14/21] Added hybrid driving mode options --- main/accessors/settingsaccessors.h | 5 ++++ main/displays/menus/defaultmodesettingsmenu.h | 25 +++++++++++++++++++ main/presets.h | 8 ++++++ main/settings.h | 12 +++++++++ main/texts.h | 4 +++ 5 files changed, 54 insertions(+) diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 46ad53a..0ccd754 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -126,6 +126,7 @@ struct CloudSendRateAccessor : public RefAccessorSaveSettings { int16_t #endif struct DefaultModeModelModeAccessor : public RefAccessorSaveSettings { UnifiedModelMode &getRef() const override { return settings.defaultMode.modelMode; } }; +struct DefaultModeHybridModelModeAccessor : public RefAccessorSaveSettings { UnifiedModelMode &getRef() const override { return settings.hybrid.hybridMode; } }; struct DefaultModeSquareGasAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.defaultMode.squareGas; } }; struct DefaultModeSquareBremsAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.defaultMode.squareBrems; } }; @@ -144,6 +145,10 @@ struct DefaultModeGas2WertAccessor : public RefAccessorSaveSettings { i struct DefaultModeBrems1WertAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.defaultMode.brems1_wert; } }; struct DefaultModeBrems2WertAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.defaultMode.brems2_wert; } }; +struct DefaultModeEnableHybridAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.hybrid.enable; } }; +struct DefaultModeHybridActivationLimitAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.hybrid.activationLimit; } }; +struct DefaultModeHybridDeactivationLimitAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.hybrid.deactivationLimit; } }; + struct TempomatModeModelModeAccessor : public RefAccessorSaveSettings { UnifiedModelMode &getRef() const override { return settings.tempomatMode.modelMode; } }; struct LarsmModeModelModeAccessor : public RefAccessorSaveSettings { UnifiedModelMode &getRef() const override { return settings.larsmMode.modelMode; } }; diff --git a/main/displays/menus/defaultmodesettingsmenu.h b/main/displays/menus/defaultmodesettingsmenu.h index 33162cb..36e6456 100644 --- a/main/displays/menus/defaultmodesettingsmenu.h +++ b/main/displays/menus/defaultmodesettingsmenu.h @@ -29,6 +29,13 @@ using DefaultModeModelModeChangeDisplay = makeComponent< BackActionInterface>, SwitchScreenAction >; +using DefaultModeHybridModelModeChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeHybridModelModeAccessor, + BackActionInterface>, + SwitchScreenAction +>; using DefaultModeSmoothingChangeDisplay = makeComponent< ChangeValueDisplay, StaticText, @@ -92,6 +99,20 @@ using DefaultModeBrems2WertChangeDisplay = makeComponent< BackActionInterface>, SwitchScreenAction >; +using DefaultModeHybridActivationLimitChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeHybridActivationLimitAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeHybridDeactivationLimitChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeHybridDeactivationLimitAccessor, + BackActionInterface>, + SwitchScreenAction +>; class DefaultModeSettingsMenu : public MenuDisplay, @@ -102,12 +123,14 @@ public: DefaultModeSettingsMenu() { constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingUpAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingDownAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableFieldWeakSmoothingUpAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableFieldWeakSmoothingDownAccessor>>(); + constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableHybridAccessor>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); @@ -117,6 +140,8 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; diff --git a/main/presets.h b/main/presets.h index 6315542..b2687c3 100644 --- a/main/presets.h +++ b/main/presets.h @@ -265,6 +265,13 @@ constexpr Settings::Battery defaultBattery { .applyCalibration = true }; +constexpr Settings::Hybrid defaultHybrid { + .hybridMode = UnifiedModelMode::FocTorque, + .enable = false, + .activationLimit = 1000, + .deactivationLimit = 950, +}; + constexpr Settings defaultSettings { #ifdef FEATURE_BMS .autoConnectBms = false, @@ -291,6 +298,7 @@ constexpr Settings defaultSettings { .ledstrip = defaultLedstrip, #endif .battery = defaultBattery, + .hybrid = defaultHybrid, .lockscreen = defaultLockscreen }; diff --git a/main/settings.h b/main/settings.h index 7a5698e..c9f42c8 100644 --- a/main/settings.h +++ b/main/settings.h @@ -184,6 +184,13 @@ struct Settings bool applyCalibration; } battery; + struct Hybrid { + UnifiedModelMode hybridMode; + bool enable; + int16_t activationLimit; + int16_t deactivationLimit; + } hybrid; + struct LockscreenSettings { bool allowPresetSwitch; std::array pin; @@ -301,6 +308,11 @@ void Settings::executeForEveryCommonSetting(T &&callable) callable("batB50VCal", battery.back50VoltCalibration); callable("applyBatCal", battery.applyCalibration); + callable("hybridMode", hybrid.hybridMode); + callable("hybridEn", hybrid.enable); + callable("hybridAcL", hybrid.activationLimit); + callable("hybridDeacL", hybrid.deactivationLimit); + callable("lockAlwPresetSw", lockscreen.allowPresetSwitch); callable("lockscreenPin", lockscreen.pin); } diff --git a/main/texts.h b/main/texts.h index 1a5ffa3..30d4608 100644 --- a/main/texts.h +++ b/main/texts.h @@ -195,6 +195,7 @@ constexpr char TEXT_DYNAMICMENU[] = "Dynamic menu"; //DefaultModeSettingsMenu //constexpr char TEXT_DEFAULTMODESETTINGS[] = "Default mode settings"; constexpr char TEXT_MODELMODE[] = "Model mode"; +constexpr char TEXT_HYBRIDMODE[] = "Hybrid mode"; constexpr char TEXT_SQUAREGAS[] = "Square gas"; constexpr char TEXT_SQUAREBREMS[] = "Square brems"; constexpr char TEXT_ENABLESMOOTHINGUP[] = "Enable up smoothing"; @@ -210,6 +211,9 @@ constexpr char TEXT_SUBGASVAL[] = "Add Gas"; constexpr char TEXT_SUBBRAKEVAL[] = "Add Brake"; constexpr char TEXT_ADDGASVAL[] = "Sub Gas"; constexpr char TEXT_ADDBRAKEVAL[] = "Sub Brake"; +constexpr char TEXT_HYBRIDENABLE[] = "Enable Hybrid mode"; +constexpr char TEXT_HYBRIDACTIVATIONLIMIT[] = "Hybrid activation-limit"; +constexpr char TEXT_HYBRIDDEACTIVATIONLIMIT[] = "Hybrid deactivation-limit"; //constexpr char TEXT_BACK[] = "Back"; //DynamicDebugMenu From 1448ed088a33698e18b70645237e7e681e7bcb00 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 20:19:14 +0200 Subject: [PATCH 15/21] If server-url ends with .bin, otaUrl will be set directly to server-url --- main/displays/menus/selectbuildservermenu.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/main/displays/menus/selectbuildservermenu.h b/main/displays/menus/selectbuildservermenu.h index 52686f3..0caa71b 100644 --- a/main/displays/menus/selectbuildservermenu.h +++ b/main/displays/menus/selectbuildservermenu.h @@ -40,6 +40,10 @@ public: void triggered() override { stringSettings.otaServerUrl = m_buildserver_url; + if (m_buildserver_url.substr(m_buildserver_url.length() - 4) == ".bin") + { + stringSettings.otaUrl = m_buildserver_url; + } saveSettings(); redownload = true; url_for_latest.clear(); From 4ae7390d45bb3a61c9eb153571b1e764dd99c52e Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 21 Oct 2021 20:40:28 +0200 Subject: [PATCH 16/21] Added hybrid mode --- main/displays/menus/defaultmodesettingsmenu.h | 5 +++ main/modes/defaultmode.h | 32 ++++++++++++++++++- main/texts.h | 1 + 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/main/displays/menus/defaultmodesettingsmenu.h b/main/displays/menus/defaultmodesettingsmenu.h index 36e6456..13a6c4a 100644 --- a/main/displays/menus/defaultmodesettingsmenu.h +++ b/main/displays/menus/defaultmodesettingsmenu.h @@ -1,5 +1,7 @@ #pragma once +#include + // local includes #include "menudisplay.h" #include "utils.h" @@ -8,6 +10,7 @@ #include "menuitem.h" #include "actions/toggleboolaction.h" #include "actions/switchscreenaction.h" +#include "actions/dummyaction.h" #include "checkboxicon.h" #include "icons/back.h" #include "texts.h" @@ -122,6 +125,8 @@ class DefaultModeSettingsMenu : public: DefaultModeSettingsMenu() { + auto diff = std::abs(settings.hybrid.activationLimit - settings.hybrid.deactivationLimit); + if (diff < 20) { constructMenuItem, StaticFont<2>, StaticColor, DummyAction>>(); } constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>(); diff --git a/main/modes/defaultmode.h b/main/modes/defaultmode.h index 5654126..e97a8be 100644 --- a/main/modes/defaultmode.h +++ b/main/modes/defaultmode.h @@ -23,6 +23,7 @@ public: bool waitForGasLoslass{false}; bool waitForBremsLoslass{false}; + bool hybridModeActivated{false}; private: espchrono::millis_clock::time_point lastTime{espchrono::millis_clock::now()}; @@ -128,7 +129,36 @@ void DefaultMode::update() lastPwm = pwm; lastTime = now; - const auto pair = split(settings.defaultMode.modelMode); + auto pair = split(settings.defaultMode.modelMode); + + if (settings.hybrid.enable) + { + auto activationLimit = settings.hybrid.activationLimit; + auto deactivationLimit = settings.hybrid.deactivationLimit; + auto diff = std::abs(activationLimit - deactivationLimit); + + if (diff < 20) + { + int half = (diff / 2) + 0.5; + deactivationLimit -= half; + activationLimit += half; + } + + if (!hybridModeActivated && (pwm > activationLimit)) + { + hybridModeActivated = true; + } + else if (hybridModeActivated && (pwm < deactivationLimit)) + { + hybridModeActivated = false; + } + + if (hybridModeActivated) + { + pair = split(settings.hybrid.hybridMode); + } + } + for (bobbycar::protocol::serial::MotorState &motor : motorsInController(controllers.front)) { motor.ctrlTyp = pair.first; diff --git a/main/texts.h b/main/texts.h index 30d4608..ba7bef7 100644 --- a/main/texts.h +++ b/main/texts.h @@ -214,6 +214,7 @@ constexpr char TEXT_ADDBRAKEVAL[] = "Sub Brake"; constexpr char TEXT_HYBRIDENABLE[] = "Enable Hybrid mode"; constexpr char TEXT_HYBRIDACTIVATIONLIMIT[] = "Hybrid activation-limit"; constexpr char TEXT_HYBRIDDEACTIVATIONLIMIT[] = "Hybrid deactivation-limit"; +constexpr char TEXT_LIMITS_TO_NEAR[] = "Hybrid limits too near (>20)"; //constexpr char TEXT_BACK[] = "Back"; //DynamicDebugMenu From 88a32fc2ba11b12e967a7a828e7664825cca55d8 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Fri, 22 Oct 2021 00:35:21 +0200 Subject: [PATCH 17/21] Added new ledstrip menu and icon --- icons/bobbycar.png | Bin 0 -> 1293 bytes main/CMakeLists.txt | 3 + main/displays/menus/ledstripcolorsmenu.h | 45 + main/displays/menus/ledstripmenu.h | 2 + main/icons/bobbycar.cpp | 1006 ++++++++++++++++++++++ main/icons/bobbycar.h | 7 + main/main.cpp | 1 + main/texts.h | 3 + 8 files changed, 1067 insertions(+) create mode 100644 icons/bobbycar.png create mode 100644 main/displays/menus/ledstripcolorsmenu.h create mode 100644 main/icons/bobbycar.cpp create mode 100644 main/icons/bobbycar.h diff --git a/icons/bobbycar.png b/icons/bobbycar.png new file mode 100644 index 0000000000000000000000000000000000000000..9c37239f31f4c22b911eaa37c6a1fd867251ab23 GIT binary patch literal 1293 zcmeAS@N?(olHy`uVBq!ia0y~yU`SzLU|7Jx#=yYvYxc=+3=E7dna<7up3cq+1x5L3 znK`Kp3>p(_C)#=(c91z5AG|b3i_c9!kSA!aPDhtTmS|Ui;uWs7Rx|qR94EJ_96cIX zplk7CV?=2|;kBy=Lj_pu9q!zjBNDsh$bZ#VF+(|-?~m{9J$~1^VfA#;v#%uBP41cn zckY;Qavj&g@Rp10a)%`*iJYDxd{m|8_;p*RoW0!}b^aIE_vM+UYdSb6%nRkYtaeXf z-n}in$9^B#6Er2{QSl?g$$B1tPL$kyY<`S&y5+Q!vtM4ZG4$6FxfPL@yfh>0Nbr%s z(94?hPgkrlx|g(O>T0jg^WL;hoU?D!nUYz}9tncp0*Vf9qN-C8mEBhRb+wATJzo2V zd0o89bf0xXB1Jk2n0P0>X8+xM|8CUJlbrgRLhM%YGS8D)INmb#&U#!UZ|(P(g~N_H zyy|rPN@nBvORh&nec^amWNm8|DTun?K^YdnxaihkEvNRFfgzsdAqwX{0G4W zdzVjUU|`@Z@Q5sCV9-+rVaAH3_GJtV4D2PIzOL*~xkSYz#7_FbCYGe8D3oWGWGJ|M`UZqI@`*DrFg^8jaSW-r_4aPG-(dp*hl^~b@~IPb znq4nVouaQ&z_L!#esZzBV6O1}b3VsB-@Xkx@%Up!jMk>y+hsF5E{{4#j(wHwV@0{(E*}I~)Zs%t~#UL?`$enFduJvsHZCk?detYzaV=j`lcA35q zsgCUTGSRS_D=o-q)D*PIYl{YvxtZKegHU+(9ZzL@9r_+sIy;=0*j2Ub+5L6;p6h38e^=c(>(Z`cTi)F$f4n`rc+F0Y)W!*q&DwUR zCr4kOa{peo2L;!JslNnj zkH^$@g7kBMJStFh%x=lgdEP%dZC5PO5pd$*P-JNlU~+PR$U^uH0!VyD#g+yECxPVc z&yrr(a-a9hi$DB&CVTQR{X16|tW(>*u#!*||s$q;W;r)T`C+Z(sf@ zJ9BR#I8MV>DSq20+r9PvQXPS!C3Y##_C2{-ZK|x! + +// Local includes +#include "menudisplay.h" +#include "utils.h" +#include "menuitem.h" +#include "ledstrip.h" +#include "icons/back.h" +#include "icons/bobbycar.h" +#include "texts.h" +#include "actions/dummyaction.h" +#include "actions/switchscreenaction.h" + +using namespace espgui; + +namespace { + class LedstripMenu; +} + +namespace { +class LedstripColorsMenu : + public MenuDisplay, + public StaticText, + public BackActionInterface> +{ + using Base = MenuDisplay; +public: + void redraw() override; + LedstripColorsMenu() + { + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + } +}; + +void LedstripColorsMenu::redraw() +{ + Base::redraw(); + tft.setSwapBytes(true); + tft.pushImage(70, 80, bobbyicons::bobbycar.WIDTH, bobbyicons::bobbycar.HEIGHT, bobbyicons::bobbycar.buffer); + tft.setSwapBytes(false); +} + +} // Namespace diff --git a/main/displays/menus/ledstripmenu.h b/main/displays/menus/ledstripmenu.h index bb680ae..cee6264 100644 --- a/main/displays/menus/ledstripmenu.h +++ b/main/displays/menus/ledstripmenu.h @@ -19,6 +19,7 @@ // forward declares namespace { class MainWindow; +class LedstripColorsMenu; } // namespace using namespace espgui; @@ -108,6 +109,7 @@ class LedstripMenu : public: LedstripMenu() { + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedAnimationAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableBrakeLightsAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableBeepWhenBlinkAccessor>>(); diff --git a/main/icons/bobbycar.cpp b/main/icons/bobbycar.cpp new file mode 100644 index 0000000..639adc3 --- /dev/null +++ b/main/icons/bobbycar.cpp @@ -0,0 +1,1006 @@ +#include "bobbycar.h" + +namespace bobbyicons { +const espgui::Icon<100, 160> bobbycar{{ + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0010 (16) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0020 (32) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0030 (48) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0040 (64) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0050 (80) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0060 (96) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0070 (112) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0080 (128) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0090 (144) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00A0 (160) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00B0 (176) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00C0 (192) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00D0 (208) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x00E0 (224) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x00F0 (240) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0100 (256) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0110 (272) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0120 (288) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0130 (304) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0140 (320) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0150 (336) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0160 (352) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0170 (368) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0180 (384) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0190 (400) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01A0 (416) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01B0 (432) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01C0 (448) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x01D0 (464) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x01E0 (480) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x01F0 (496) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0200 (512) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0210 (528) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0220 (544) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0230 (560) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0240 (576) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0250 (592) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0260 (608) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0270 (624) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0280 (640) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0290 (656) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02A0 (672) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02B0 (688) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x02C0 (704) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x02D0 (720) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x02E0 (736) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x02F0 (752) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0300 (768) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0310 (784) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0320 (800) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0330 (816) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0340 (832) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0350 (848) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0360 (864) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0370 (880) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0380 (896) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0390 (912) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x03A0 (928) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03B0 (944) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03C0 (960) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x03D0 (976) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03E0 (992) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x03F0 (1008) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0400 (1024) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0410 (1040) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0420 (1056) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0430 (1072) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0440 (1088) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0450 (1104) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0460 (1120) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0470 (1136) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0480 (1152) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0490 (1168) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x04A0 (1184) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x04B0 (1200) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x04C0 (1216) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x04D0 (1232) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x04E0 (1248) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x04F0 (1264) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0500 (1280) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0510 (1296) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0520 (1312) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0530 (1328) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0540 (1344) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0550 (1360) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0560 (1376) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0570 (1392) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0580 (1408) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0590 (1424) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x05A0 (1440) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x05B0 (1456) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x05C0 (1472) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x05D0 (1488) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x05E0 (1504) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x05F0 (1520) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0600 (1536) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0610 (1552) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0620 (1568) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0630 (1584) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x0640 (1600) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0650 (1616) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0660 (1632) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0670 (1648) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0680 (1664) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0690 (1680) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x06A0 (1696) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x06B0 (1712) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x06C0 (1728) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x06D0 (1744) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x06E0 (1760) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x06F0 (1776) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0700 (1792) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0710 (1808) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0720 (1824) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0730 (1840) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0740 (1856) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0750 (1872) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0760 (1888) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0770 (1904) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0780 (1920) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0790 (1936) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x07A0 (1952) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x07B0 (1968) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x07C0 (1984) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x07D0 (2000) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x07E0 (2016) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x07F0 (2032) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0800 (2048) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0810 (2064) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0820 (2080) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0830 (2096) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0840 (2112) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0850 (2128) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0860 (2144) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0870 (2160) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0880 (2176) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0890 (2192) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x08A0 (2208) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x08B0 (2224) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x08C0 (2240) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x08D0 (2256) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x08E0 (2272) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x08F0 (2288) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0900 (2304) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0910 (2320) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0920 (2336) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0930 (2352) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0940 (2368) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0950 (2384) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0960 (2400) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0970 (2416) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0980 (2432) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0990 (2448) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x09A0 (2464) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x09B0 (2480) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x09C0 (2496) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x09D0 (2512) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x09E0 (2528) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x09F0 (2544) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0A00 (2560) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0A10 (2576) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0A20 (2592) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0A30 (2608) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0A40 (2624) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A50 (2640) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0A60 (2656) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0A70 (2672) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0A80 (2688) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0A90 (2704) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0AA0 (2720) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0AB0 (2736) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0AC0 (2752) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0AD0 (2768) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0AE0 (2784) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0AF0 (2800) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0B00 (2816) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0B10 (2832) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, // 0x0B20 (2848) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0B30 (2864) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0B40 (2880) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0B50 (2896) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0B60 (2912) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0B70 (2928) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0B80 (2944) pixels + 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0B90 (2960) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0BA0 (2976) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0BB0 (2992) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0BC0 (3008) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0BD0 (3024) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0BE0 (3040) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, // 0x0BF0 (3056) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C00 (3072) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0C10 (3088) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C20 (3104) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0C30 (3120) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C40 (3136) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C50 (3152) pixels + 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C60 (3168) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0C70 (3184) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0C80 (3200) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0C90 (3216) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0CA0 (3232) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0CB0 (3248) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0CC0 (3264) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0CD0 (3280) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0CE0 (3296) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0CF0 (3312) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0D00 (3328) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0D10 (3344) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0D20 (3360) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0D30 (3376) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0D40 (3392) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0D50 (3408) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0D60 (3424) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0D70 (3440) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D80 (3456) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0D90 (3472) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0DA0 (3488) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0DB0 (3504) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0DC0 (3520) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0DD0 (3536) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0DE0 (3552) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0DF0 (3568) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0E00 (3584) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E10 (3600) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0E20 (3616) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E30 (3632) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0E40 (3648) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0E50 (3664) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0E60 (3680) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0E70 (3696) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0E80 (3712) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0E90 (3728) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0EA0 (3744) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0EB0 (3760) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0EC0 (3776) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0ED0 (3792) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0EE0 (3808) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0EF0 (3824) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0F00 (3840) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F10 (3856) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F20 (3872) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0F30 (3888) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0F40 (3904) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0F50 (3920) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0F60 (3936) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0F70 (3952) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0F80 (3968) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0F90 (3984) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FA0 (4000) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0FB0 (4016) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FC0 (4032) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x0FD0 (4048) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x0FE0 (4064) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x0FF0 (4080) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1000 (4096) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1010 (4112) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1020 (4128) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1030 (4144) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1040 (4160) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1050 (4176) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1060 (4192) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1070 (4208) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1080 (4224) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1090 (4240) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x10A0 (4256) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x10B0 (4272) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x10C0 (4288) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x10D0 (4304) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x10E0 (4320) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x10F0 (4336) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1100 (4352) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1110 (4368) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1120 (4384) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1130 (4400) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1140 (4416) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1150 (4432) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1160 (4448) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1170 (4464) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1180 (4480) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1190 (4496) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x11A0 (4512) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x11B0 (4528) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x11C0 (4544) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x11D0 (4560) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x11E0 (4576) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x11F0 (4592) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1200 (4608) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1210 (4624) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1220 (4640) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1230 (4656) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1240 (4672) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1250 (4688) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1260 (4704) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1270 (4720) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1280 (4736) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1290 (4752) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x12A0 (4768) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x12B0 (4784) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x12C0 (4800) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x12D0 (4816) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x12E0 (4832) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x12F0 (4848) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1300 (4864) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1310 (4880) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1320 (4896) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1330 (4912) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1340 (4928) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1350 (4944) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1360 (4960) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1370 (4976) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1380 (4992) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1390 (5008) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x13A0 (5024) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, // 0x13B0 (5040) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x13C0 (5056) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x13D0 (5072) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x13E0 (5088) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x13F0 (5104) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1400 (5120) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1410 (5136) pixels + 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1420 (5152) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1430 (5168) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1440 (5184) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1450 (5200) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1460 (5216) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1470 (5232) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1480 (5248) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1490 (5264) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x14A0 (5280) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x14B0 (5296) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x14C0 (5312) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x14D0 (5328) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, // 0x14E0 (5344) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, // 0x14F0 (5360) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1500 (5376) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1510 (5392) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1520 (5408) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1530 (5424) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1540 (5440) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1550 (5456) pixels + 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1560 (5472) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1570 (5488) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1580 (5504) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1590 (5520) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x15A0 (5536) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x15B0 (5552) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x15C0 (5568) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x15D0 (5584) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x15E0 (5600) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x15F0 (5616) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1600 (5632) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1610 (5648) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1620 (5664) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1630 (5680) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1640 (5696) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1650 (5712) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1660 (5728) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1670 (5744) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1680 (5760) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1690 (5776) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x16A0 (5792) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x16B0 (5808) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x16C0 (5824) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x16D0 (5840) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x16E0 (5856) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x16F0 (5872) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1700 (5888) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1710 (5904) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1720 (5920) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1730 (5936) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1740 (5952) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1750 (5968) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1760 (5984) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1770 (6000) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1780 (6016) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1790 (6032) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x17A0 (6048) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x17B0 (6064) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x17C0 (6080) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x17D0 (6096) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x17E0 (6112) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x17F0 (6128) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1800 (6144) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1810 (6160) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1820 (6176) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1830 (6192) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1840 (6208) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1850 (6224) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1860 (6240) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1870 (6256) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1880 (6272) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1890 (6288) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x18A0 (6304) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x18B0 (6320) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x18C0 (6336) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x18D0 (6352) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x18E0 (6368) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x18F0 (6384) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1900 (6400) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1910 (6416) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1920 (6432) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1930 (6448) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1940 (6464) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1950 (6480) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1960 (6496) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1970 (6512) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1980 (6528) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1990 (6544) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x19A0 (6560) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x19B0 (6576) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x19C0 (6592) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x19D0 (6608) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x19E0 (6624) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x19F0 (6640) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1A00 (6656) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1A10 (6672) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1A20 (6688) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1A30 (6704) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1A40 (6720) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1A50 (6736) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1A60 (6752) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1A70 (6768) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1A80 (6784) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1A90 (6800) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1AA0 (6816) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1AB0 (6832) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1AC0 (6848) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1AD0 (6864) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1AE0 (6880) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1AF0 (6896) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1B00 (6912) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1B10 (6928) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1B20 (6944) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1B30 (6960) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1B40 (6976) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1B50 (6992) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1B60 (7008) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1B70 (7024) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1B80 (7040) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1B90 (7056) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1BA0 (7072) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1BB0 (7088) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1BC0 (7104) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1BD0 (7120) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1BE0 (7136) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1BF0 (7152) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1C00 (7168) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1C10 (7184) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1C20 (7200) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1C30 (7216) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1C40 (7232) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1C50 (7248) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1C60 (7264) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1C70 (7280) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1C80 (7296) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1C90 (7312) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1CA0 (7328) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1CB0 (7344) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1CC0 (7360) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1CD0 (7376) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1CE0 (7392) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1CF0 (7408) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1D00 (7424) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1D10 (7440) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1D20 (7456) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1D30 (7472) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1D40 (7488) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1D50 (7504) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1D60 (7520) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1D70 (7536) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1D80 (7552) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1D90 (7568) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1DA0 (7584) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1DB0 (7600) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1DC0 (7616) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1DD0 (7632) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1DE0 (7648) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1DF0 (7664) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1E00 (7680) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1E10 (7696) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1E20 (7712) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1E30 (7728) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1E40 (7744) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1E50 (7760) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1E60 (7776) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1E70 (7792) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1E80 (7808) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1E90 (7824) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1EA0 (7840) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1EB0 (7856) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1EC0 (7872) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1ED0 (7888) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1EE0 (7904) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1EF0 (7920) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1F00 (7936) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1F10 (7952) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1F20 (7968) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1F30 (7984) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x1F40 (8000) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1F50 (8016) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1F60 (8032) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1F70 (8048) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1F80 (8064) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1F90 (8080) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1FA0 (8096) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x1FB0 (8112) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1FC0 (8128) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1FD0 (8144) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x1FE0 (8160) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x1FF0 (8176) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2000 (8192) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2010 (8208) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2020 (8224) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x2030 (8240) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x2040 (8256) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2050 (8272) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x2060 (8288) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x2070 (8304) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2080 (8320) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2090 (8336) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x20A0 (8352) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x20B0 (8368) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x20C0 (8384) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x20D0 (8400) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x20E0 (8416) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x20F0 (8432) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2100 (8448) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2110 (8464) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2120 (8480) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2130 (8496) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x2140 (8512) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2150 (8528) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2160 (8544) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2170 (8560) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2180 (8576) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x2190 (8592) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x21A0 (8608) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x21B0 (8624) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x21C0 (8640) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x21D0 (8656) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x21E0 (8672) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x21F0 (8688) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x2200 (8704) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2210 (8720) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2220 (8736) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2230 (8752) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2240 (8768) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2250 (8784) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x2260 (8800) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2270 (8816) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2280 (8832) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2290 (8848) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x22A0 (8864) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x22B0 (8880) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x22C0 (8896) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x22D0 (8912) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x22E0 (8928) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x22F0 (8944) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2300 (8960) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2310 (8976) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x2320 (8992) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2330 (9008) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2340 (9024) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2350 (9040) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2360 (9056) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2370 (9072) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2380 (9088) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2390 (9104) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x23A0 (9120) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x23B0 (9136) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x23C0 (9152) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x23D0 (9168) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x23E0 (9184) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x23F0 (9200) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2400 (9216) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2410 (9232) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2420 (9248) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2430 (9264) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2440 (9280) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x2450 (9296) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2460 (9312) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2470 (9328) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2480 (9344) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2490 (9360) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x24A0 (9376) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x24B0 (9392) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x24C0 (9408) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x24D0 (9424) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x24E0 (9440) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x24F0 (9456) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2500 (9472) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2510 (9488) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2520 (9504) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2530 (9520) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2540 (9536) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2550 (9552) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2560 (9568) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2570 (9584) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2580 (9600) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2590 (9616) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x25A0 (9632) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x25B0 (9648) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x25C0 (9664) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x25D0 (9680) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x25E0 (9696) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x25F0 (9712) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2600 (9728) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2610 (9744) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2620 (9760) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2630 (9776) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2640 (9792) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x2650 (9808) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2660 (9824) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2670 (9840) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2680 (9856) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2690 (9872) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x26A0 (9888) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x26B0 (9904) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x26C0 (9920) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x26D0 (9936) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x26E0 (9952) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x26F0 (9968) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2700 (9984) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2710 (10000) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2720 (10016) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2730 (10032) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2740 (10048) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2750 (10064) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2760 (10080) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2770 (10096) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2780 (10112) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2790 (10128) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x27A0 (10144) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x27B0 (10160) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x27C0 (10176) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x27D0 (10192) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x27E0 (10208) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x27F0 (10224) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2800 (10240) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2810 (10256) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2820 (10272) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2830 (10288) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2840 (10304) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2850 (10320) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2860 (10336) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2870 (10352) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2880 (10368) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2890 (10384) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x28A0 (10400) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x28B0 (10416) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x28C0 (10432) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x28D0 (10448) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x28E0 (10464) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x28F0 (10480) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2900 (10496) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2910 (10512) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2920 (10528) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2930 (10544) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2940 (10560) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2950 (10576) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2960 (10592) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2970 (10608) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2980 (10624) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2990 (10640) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x29A0 (10656) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x29B0 (10672) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x29C0 (10688) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x29D0 (10704) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x29E0 (10720) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x29F0 (10736) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2A00 (10752) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2A10 (10768) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2A20 (10784) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2A30 (10800) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2A40 (10816) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2A50 (10832) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2A60 (10848) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2A70 (10864) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2A80 (10880) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2A90 (10896) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2AA0 (10912) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2AB0 (10928) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2AC0 (10944) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2AD0 (10960) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2AE0 (10976) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2AF0 (10992) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2B00 (11008) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2B10 (11024) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2B20 (11040) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2B30 (11056) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2B40 (11072) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2B50 (11088) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2B60 (11104) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2B70 (11120) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2B80 (11136) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2B90 (11152) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2BA0 (11168) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2BB0 (11184) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2BC0 (11200) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2BD0 (11216) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2BE0 (11232) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2BF0 (11248) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C00 (11264) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C10 (11280) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C20 (11296) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C30 (11312) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C40 (11328) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C50 (11344) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C60 (11360) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C70 (11376) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C80 (11392) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2C90 (11408) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2CA0 (11424) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2CB0 (11440) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2CC0 (11456) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2CD0 (11472) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2CE0 (11488) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2CF0 (11504) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2D00 (11520) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2D10 (11536) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2D20 (11552) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2D30 (11568) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2D40 (11584) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2D50 (11600) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2D60 (11616) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2D70 (11632) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2D80 (11648) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2D90 (11664) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2DA0 (11680) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2DB0 (11696) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2DC0 (11712) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2DD0 (11728) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2DE0 (11744) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2DF0 (11760) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2E00 (11776) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2E10 (11792) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2E20 (11808) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2E30 (11824) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2E40 (11840) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2E50 (11856) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2E60 (11872) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2E70 (11888) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2E80 (11904) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2E90 (11920) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2EA0 (11936) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2EB0 (11952) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2EC0 (11968) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2ED0 (11984) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x2EE0 (12000) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2EF0 (12016) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F00 (12032) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F10 (12048) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F20 (12064) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F30 (12080) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F40 (12096) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F50 (12112) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F60 (12128) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F70 (12144) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F80 (12160) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2F90 (12176) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2FA0 (12192) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2FB0 (12208) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2FC0 (12224) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2FD0 (12240) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2FE0 (12256) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x2FF0 (12272) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3000 (12288) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3010 (12304) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3020 (12320) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3030 (12336) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3040 (12352) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3050 (12368) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3060 (12384) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3070 (12400) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3080 (12416) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3090 (12432) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x30A0 (12448) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x30B0 (12464) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x30C0 (12480) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x30D0 (12496) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x30E0 (12512) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x30F0 (12528) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3100 (12544) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3110 (12560) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3120 (12576) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3130 (12592) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3140 (12608) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3150 (12624) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3160 (12640) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3170 (12656) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3180 (12672) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3190 (12688) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x31A0 (12704) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x31B0 (12720) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x31C0 (12736) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x31D0 (12752) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x31E0 (12768) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x31F0 (12784) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3200 (12800) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3210 (12816) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3220 (12832) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3230 (12848) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3240 (12864) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3250 (12880) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3260 (12896) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3270 (12912) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3280 (12928) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3290 (12944) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x32A0 (12960) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x32B0 (12976) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x32C0 (12992) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xF800, 0xF800, 0xF800, 0xF800, // 0x32D0 (13008) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x32E0 (13024) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x32F0 (13040) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3300 (13056) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3310 (13072) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3320 (13088) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3330 (13104) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3340 (13120) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3350 (13136) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3360 (13152) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3370 (13168) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3380 (13184) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3390 (13200) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x33A0 (13216) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x33B0 (13232) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x33C0 (13248) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x33D0 (13264) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x33E0 (13280) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x33F0 (13296) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3400 (13312) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3410 (13328) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3420 (13344) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, // 0x3430 (13360) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3440 (13376) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3450 (13392) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3460 (13408) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3470 (13424) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3480 (13440) pixels + 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3490 (13456) pixels + 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x34A0 (13472) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x34B0 (13488) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x34C0 (13504) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x34D0 (13520) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, // 0x34E0 (13536) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x34F0 (13552) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, // 0x3500 (13568) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3510 (13584) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3520 (13600) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3530 (13616) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3540 (13632) pixels + 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3550 (13648) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3560 (13664) pixels + 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3570 (13680) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3580 (13696) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3590 (13712) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x35A0 (13728) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, // 0x35B0 (13744) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, // 0x35C0 (13760) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x35D0 (13776) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x35E0 (13792) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x35F0 (13808) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3600 (13824) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3610 (13840) pixels + 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3620 (13856) pixels + 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3630 (13872) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3640 (13888) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3650 (13904) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3660 (13920) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, // 0x3670 (13936) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3680 (13952) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, // 0x3690 (13968) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x36A0 (13984) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x36B0 (14000) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x36C0 (14016) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x36D0 (14032) pixels + 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x36E0 (14048) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x36F0 (14064) pixels + 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3700 (14080) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3710 (14096) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3720 (14112) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3730 (14128) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, // 0x3740 (14144) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, // 0x3750 (14160) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3760 (14176) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3770 (14192) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3780 (14208) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3790 (14224) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x37A0 (14240) pixels + 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x37B0 (14256) pixels + 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x37C0 (14272) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x37D0 (14288) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x37E0 (14304) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x37F0 (14320) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, // 0x3800 (14336) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3810 (14352) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, // 0x3820 (14368) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3830 (14384) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3840 (14400) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3850 (14416) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3860 (14432) pixels + 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3870 (14448) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3880 (14464) pixels + 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3890 (14480) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x38A0 (14496) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x38B0 (14512) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x38C0 (14528) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, // 0x38D0 (14544) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, // 0x38E0 (14560) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x38F0 (14576) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3900 (14592) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3910 (14608) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3920 (14624) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3930 (14640) pixels + 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3940 (14656) pixels + 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3950 (14672) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3960 (14688) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3970 (14704) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3980 (14720) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, // 0x3990 (14736) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x39A0 (14752) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, // 0x39B0 (14768) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x39C0 (14784) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x39D0 (14800) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x39E0 (14816) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x39F0 (14832) pixels + 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, // 0x3A00 (14848) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3A10 (14864) pixels + 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3A20 (14880) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3A30 (14896) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3A40 (14912) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3A50 (14928) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3A60 (14944) pixels + 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3A70 (14960) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3A80 (14976) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3A90 (14992) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3AA0 (15008) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3AB0 (15024) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3AC0 (15040) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, // 0x3AD0 (15056) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3AE0 (15072) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3AF0 (15088) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3B00 (15104) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3B10 (15120) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, // 0x3B20 (15136) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3B30 (15152) pixels + 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, // 0x3B40 (15168) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3B50 (15184) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3B60 (15200) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3B70 (15216) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3B80 (15232) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3B90 (15248) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3BA0 (15264) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3BB0 (15280) pixels + 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3BC0 (15296) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3BD0 (15312) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3BE0 (15328) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3BF0 (15344) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3C00 (15360) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3C10 (15376) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3C20 (15392) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3C30 (15408) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3C40 (15424) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3C50 (15440) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3C60 (15456) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xF800, 0xF800, 0xF800, 0xF800, // 0x3C70 (15472) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3C80 (15488) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3C90 (15504) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3CA0 (15520) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3CB0 (15536) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3CC0 (15552) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3CD0 (15568) pixels + 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0xF800, 0x88E3, 0x88E3, 0x88E3, 0x88E3, // 0x3CE0 (15584) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3CF0 (15600) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3D00 (15616) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3D10 (15632) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3D20 (15648) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3D30 (15664) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3D40 (15680) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3D50 (15696) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3D60 (15712) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3D70 (15728) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3D80 (15744) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3D90 (15760) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3DA0 (15776) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3DB0 (15792) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3DC0 (15808) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3DD0 (15824) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3DE0 (15840) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3DF0 (15856) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3E00 (15872) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3E10 (15888) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3E20 (15904) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3E30 (15920) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3E40 (15936) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3E50 (15952) pixels + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3E60 (15968) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, // 0x3E70 (15984) pixels + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, // 0x3E80 (16000) pixels + }}; +} diff --git a/main/icons/bobbycar.h b/main/icons/bobbycar.h new file mode 100644 index 0000000..02ff700 --- /dev/null +++ b/main/icons/bobbycar.h @@ -0,0 +1,7 @@ +#pragma once + +#include "icon.h" + +namespace bobbyicons { +extern const espgui::Icon<100, 160> bobbycar; +} // namespace bobbyicons diff --git a/main/main.cpp b/main/main.cpp index 1b5f967..49e7828 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -61,6 +61,7 @@ using namespace std::chrono_literals; #include "displays/menus/mainmenu.h" #include "displays/menus/tempomatmodesettingsmenu.h" #include "displays/menus/modessettingsmenu.h" +#include "displays/menus/ledstripcolorsmenu.h" #ifdef FEATURE_MOSFETS #include "displays/menus/mosfetsmenu.h" #endif diff --git a/main/texts.h b/main/texts.h index ba7bef7..cd267d0 100644 --- a/main/texts.h +++ b/main/texts.h @@ -489,6 +489,9 @@ constexpr char TEXT_OTA_NOCONNECTION[] = "E:No internet."; constexpr char TEXT_OTA_WAITFORRESPONSE[] = "Wait for response..."; constexpr char TEXT_REDOWNLOAD[] = "Reload list"; +//LedstripColorMenu +constexpr char TEXT_LEDSTRIPCOLORMENU[] = "Customize Ledstrip"; + #ifdef FEATURE_CAN constexpr char TEXT_POWERSUPPLY[] = "Powersupply"; #endif From c3fd0d4d218bb18f09550436ff2fc3cb2d3ab416 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Fri, 22 Oct 2021 03:48:57 +0200 Subject: [PATCH 18/21] Preparations for ledstrip color select menu --- main/displays/menus/ledstripcolorsmenu.h | 149 +++++++++++++++++++++-- main/globals.h | 2 + main/ledstripdefines.h | 1 + main/settings.h | 1 + 4 files changed, 146 insertions(+), 7 deletions(-) diff --git a/main/displays/menus/ledstripcolorsmenu.h b/main/displays/menus/ledstripcolorsmenu.h index 14b97cc..d6fd9b9 100644 --- a/main/displays/menus/ledstripcolorsmenu.h +++ b/main/displays/menus/ledstripcolorsmenu.h @@ -1,6 +1,8 @@ #pragma once #include +#include +#include // Local includes #include "menudisplay.h" @@ -12,6 +14,8 @@ #include "texts.h" #include "actions/dummyaction.h" #include "actions/switchscreenaction.h" +#include "actioninterface.h" +#include "globals.h" using namespace espgui; @@ -19,27 +23,158 @@ namespace { class LedstripMenu; } -namespace { +namespace { + +static uint8_t ledstrip_side; +static int8_t selected_color; +bool state_select_color{false}; +bool last_state = {false}; + +const std::array Colors = { + CRGB{0,0,0}, + CRGB{255,255,255}, + CRGB{255,0,0}, + CRGB{255,255,0}, + CRGB{0,255,0}, + CRGB{0,255,255}, + CRGB{0,0,255}, + CRGB{255,0,255} +}; + +const std::array tft_colors = { + TFT_BLACK, + TFT_WHITE, + TFT_RED, + TFT_YELLOW, + TFT_GREEN, + TFT_CYAN, + TFT_BLUE, + TFT_MAGENTA +}; + +class LedstripColorsMenuBackAction : ActionInterface +{ +public: + void triggered() { + if(!state_select_color) + { + switchScreen(); + } + else + { + state_select_color = false; + tft.fillRect(0, 228, tft.width(), ((tft.width() - 40) / 8) + 4, TFT_BLACK); + } + } +}; + class LedstripColorsMenu : public MenuDisplay, public StaticText, - public BackActionInterface> + public BackActionInterface { using Base = MenuDisplay; public: void redraw() override; - LedstripColorsMenu() - { - constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); - } + void rotate(int offset) override; + void confirm() override; + uint8_t side_to_crgb_index(uint8_t side); + void drawColors(); + LedstripColorsMenu() {} }; +uint8_t LedstripColorsMenu::side_to_crgb_index(uint8_t side) +{ + return 0; +} + void LedstripColorsMenu::redraw() { Base::redraw(); tft.setSwapBytes(true); - tft.pushImage(70, 80, bobbyicons::bobbycar.WIDTH, bobbyicons::bobbycar.HEIGHT, bobbyicons::bobbycar.buffer); + tft.pushImage(70, 60, bobbyicons::bobbycar.WIDTH, bobbyicons::bobbycar.HEIGHT, bobbyicons::bobbycar.buffer); tft.setSwapBytes(false); + + auto y_pos = ((tft.width() - 40) / 8 + 4) + 240; + if (last_state != state_select_color) + { + tft.fillRect(0,y_pos - 1, tft.width(), 20, TFT_BLACK); + last_state = state_select_color; + } + + tft.setTextFont(2); + tft.setTextColor(TFT_WHITE); + if(state_select_color) + { + tft.drawString("Please select a color!", 50, y_pos); + } + else + { + tft.drawString("Please select a side!", 50, y_pos); + } +} + +void LedstripColorsMenu::rotate(int offset) +{ + if (offset < 0) + { + if (state_select_color) + { + selected_color++; + if (selected_color > 7) + { + selected_color = 0; + } + } + } else if (offset > 0) + { + if (state_select_color) + { + selected_color--; + if (selected_color < 0) + { + selected_color = 7; + } + } + } + + if (state_select_color) + { + this->drawColors(); + } + else + { + tft.fillRect(0, 228, tft.width(), ((tft.width() - 40) / 8) + 4, TFT_BLACK); + } +} + +void LedstripColorsMenu::confirm() +{ + if(!state_select_color) + { + state_select_color = true; + this->drawColors(); + } + else + { + ledstrip_custom_colors[side_to_crgb_index(ledstrip_side)] = Colors[selected_color]; + } +} + +void LedstripColorsMenu::drawColors() +{ + uint16_t width = (tft.width() - 40); + auto cube_width = width / 8; + + tft.fillRect(0, 228, tft.width(), cube_width + 4, TFT_BLACK); + tft.fillRect(21, 231, width - 1, cube_width - 1, TFT_WHITE); + + tft.fillRect(20 + (selected_color * cube_width - 1), 228, cube_width + 4, cube_width + 4, TFT_YELLOW); + for (int index = 0; index < 8; index++) + { + auto offset = index * (cube_width); + tft.fillRect(22 + offset, 232, cube_width - 4, cube_width - 4, tft_colors[index]); + } } } // Namespace diff --git a/main/globals.h b/main/globals.h index 5909e73..8aa2aa8 100644 --- a/main/globals.h +++ b/main/globals.h @@ -55,6 +55,8 @@ Settings settings; StringSettings stringSettings; SettingsPersister settingsPersister; +std::array ledstrip_custom_colors = {}; + class Controllers : public std::array { public: diff --git a/main/ledstripdefines.h b/main/ledstripdefines.h index 772848c..efbdde8 100644 --- a/main/ledstripdefines.h +++ b/main/ledstripdefines.h @@ -17,3 +17,4 @@ #define LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW 0 #define LEDSTRIP_ANIMATION_TYPE_BETTERRAINBOW 1 #define LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION 2 +#define LEDSTRIP_ANIMATION_TYPE_CUSTOMCOLOR 3 diff --git a/main/settings.h b/main/settings.h index c9f42c8..55f94a9 100644 --- a/main/settings.h +++ b/main/settings.h @@ -3,6 +3,7 @@ // system includes #include #include +#include // esp-idf includes #include From 82d63616f1d09c338174c7d2b1dfeb418b14dd22 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Fri, 22 Oct 2021 16:38:42 +0200 Subject: [PATCH 19/21] Added correction for wrong side ledstrip --- main/serialhandler.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/main/serialhandler.h b/main/serialhandler.h index f4257d9..266eb4a 100644 --- a/main/serialhandler.h +++ b/main/serialhandler.h @@ -91,13 +91,23 @@ void handleSerial() break; case 'z': case 'Z': +#ifndef LEDSTRIP_WRONG_DIRECTION InputDispatcher::blinkLeftButton(true); InputDispatcher::blinkLeftButton(false); +#else + InputDispatcher::blinkRightButton(true); + InputDispatcher::blinkRightButton(false); +#endif break; case 'u': case 'U': +#ifndef LEDSTRIP_WRONG_DIRECTION InputDispatcher::blinkRightButton(true); InputDispatcher::blinkRightButton(false); +#else + InputDispatcher::blinkLeftButton(true); + InputDispatcher::blinkLeftButton(false); +#endif break; } } From 5c3ad4f89165964049c543de0377cca44380d681 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Fri, 22 Oct 2021 16:39:14 +0200 Subject: [PATCH 20/21] Color now changeable for 8 sides (#104) --- main/displays/menus/ledstripcolorsmenu.h | 97 +++++++++++++++++-- main/displays/menus/ledstripmenu.h | 16 +++ .../menus/ledstripselectanimationmenu.h | 3 + main/ledstrip.h | 48 +++++++++ main/texts.h | 2 + 5 files changed, 157 insertions(+), 9 deletions(-) diff --git a/main/displays/menus/ledstripcolorsmenu.h b/main/displays/menus/ledstripcolorsmenu.h index d6fd9b9..7960503 100644 --- a/main/displays/menus/ledstripcolorsmenu.h +++ b/main/displays/menus/ledstripcolorsmenu.h @@ -16,6 +16,7 @@ #include "actions/switchscreenaction.h" #include "actioninterface.h" #include "globals.h" +#include "esp_log.h" using namespace espgui; @@ -25,7 +26,7 @@ namespace { namespace { -static uint8_t ledstrip_side; +static int8_t selected_side = 7; static int8_t selected_color; bool state_select_color{false}; bool last_state = {false}; @@ -78,16 +79,14 @@ public: void redraw() override; void rotate(int offset) override; void confirm() override; - uint8_t side_to_crgb_index(uint8_t side); void drawColors(); + void drawSide(Bobbycar_Side side, unsigned int color); + void clearSides(); LedstripColorsMenu() {} +private: + bool already_drew_circle{false}; }; -uint8_t LedstripColorsMenu::side_to_crgb_index(uint8_t side) -{ - return 0; -} - void LedstripColorsMenu::redraw() { Base::redraw(); @@ -112,6 +111,11 @@ void LedstripColorsMenu::redraw() { tft.drawString("Please select a side!", 50, y_pos); } + if(!already_drew_circle) + { + this->drawSide(static_cast(selected_side), TFT_GOLD); + already_drew_circle = true; + } } void LedstripColorsMenu::rotate(int offset) @@ -126,7 +130,16 @@ void LedstripColorsMenu::rotate(int offset) selected_color = 0; } } - } else if (offset > 0) + else + { + selected_side++; + if (selected_side > 7) + { + selected_side = 0; + } + } + } + else if (offset > 0) { if (state_select_color) { @@ -136,6 +149,14 @@ void LedstripColorsMenu::rotate(int offset) selected_color = 7; } } + else + { + selected_side--; + if (selected_side < 0) + { + selected_side = 7; + } + } } if (state_select_color) @@ -145,6 +166,8 @@ void LedstripColorsMenu::rotate(int offset) else { tft.fillRect(0, 228, tft.width(), ((tft.width() - 40) / 8) + 4, TFT_BLACK); + this->clearSides(); + this->drawSide(static_cast(selected_side), TFT_GOLD); } } @@ -157,7 +180,12 @@ void LedstripColorsMenu::confirm() } else { - ledstrip_custom_colors[side_to_crgb_index(ledstrip_side)] = Colors[selected_color]; + ledstrip_custom_colors[selected_side] = Colors[selected_color]; + // Uncomment to close select color menu on color select + /* + state_select_color = false; + tft.fillRect(0, 228, tft.width(), ((tft.width() - 40) / 8) + 4, TFT_BLACK); + */ } } @@ -177,4 +205,55 @@ void LedstripColorsMenu::drawColors() } } +void LedstripColorsMenu::clearSides() +{ + for(int index = 0; index < 8; index++) + { + this->drawSide(static_cast(index), TFT_BLACK); + } +} + +void LedstripColorsMenu::drawSide(Bobbycar_Side side, unsigned int color) +{ + const auto middle = tft.width() / 2; + const auto width = bobbyicons::bobbycar.WIDTH; + const auto height = bobbyicons::bobbycar.HEIGHT; + const auto left = middle - (width / 2); + const auto right = middle + (width / 2); + const auto above = 50; + const auto bellow = above + 10 + bobbyicons::bobbycar.HEIGHT; + + switch (side) { + case Bobbycar_Side::FRONT: + tft.fillRect(left, above, width, 5, color); + break; + case Bobbycar_Side::FRONT_LEFT: + tft.fillRect(left - 10, above + 10, 5, height / 2, color); + tft.fillRect(left, above, width / 2, 5, color); + break; + case Bobbycar_Side::LEFT: + tft.fillRect(left - 10, above + 10, 5, height, color); + break; + case Bobbycar_Side::BACK_LEFT: + tft.fillRect(left - 10, above + 10 + (height / 2), 5, height / 2, color); + tft.fillRect(left, bellow + 5, width / 2, 5, color); + break; + case Bobbycar_Side::BACK: + tft.fillRect(left, bellow + 5, width, 5, color); + break; + case Bobbycar_Side::BACK_RIGHT: + tft.fillRect(right + 5, above + 10 + (height / 2), 5, height / 2, color); + tft.fillRect(middle, bellow + 5, width / 2, 5, color); + break; + case Bobbycar_Side::RIGHT: + tft.fillRect(right + 5, above + 10, 5, height, color); + break; + case Bobbycar_Side::FRONT_RIGHT: + tft.fillRect(right + 5, above + 10, 5, height / 2, color); + tft.fillRect(middle, above, width / 2, 5, color); + break; + } + // tft.fillCircle(tft.width() / 2, 140, 100, TFT_BLACK); +} + } // Namespace diff --git a/main/displays/menus/ledstripmenu.h b/main/displays/menus/ledstripmenu.h index cee6264..e447d73 100644 --- a/main/displays/menus/ledstripmenu.h +++ b/main/displays/menus/ledstripmenu.h @@ -1,4 +1,7 @@ #pragma once + +#include + // local includes #include "menudisplay.h" #include "menuitem.h" @@ -15,6 +18,7 @@ #include "ledstrip.h" #endif #include "changevaluedisplay.h" +#include "actioninterface.h" // forward declares namespace { @@ -101,6 +105,17 @@ using ledstripBrightnessChangeScreen = makeComponent< SwitchScreenAction >; +class AllCustomLedsOffAction : public virtual ActionInterface +{ +public: + void triggered() { + for(int index = 0; index < 8; index++) + { + ledstrip_custom_colors[index] = CRGB{0,0,0}; + } + } +}; + class LedstripMenu : public MenuDisplay, public StaticText, @@ -117,6 +132,7 @@ public: if (!simplified) { constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOAccessor>>(); } constructMenuItem, ToggleBoolAction, CheckboxIcon, EnableLedstripStVOFrontlight>>(); + constructMenuItem, AllCustomLedsOffAction>>(); if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } diff --git a/main/displays/menus/ledstripselectanimationmenu.h b/main/displays/menus/ledstripselectanimationmenu.h index 783f972..df731a7 100644 --- a/main/displays/menus/ledstripselectanimationmenu.h +++ b/main/displays/menus/ledstripselectanimationmenu.h @@ -22,6 +22,8 @@ class currentSelectedAnimationText : public virtual TextInterface { public: std: return TEXT_ANIMATION_BETTERRAINBOW; case LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION: return TEXT_ANIMATION_SPEEDSYNCANIMATION; + case LEDSTRIP_ANIMATION_TYPE_CUSTOMCOLOR: + return TEXT_ANIMATION_CUSTOMCOLOR; default: return "Animation Unkown"; } @@ -48,6 +50,7 @@ namespace { constructMenuItem, LedStripSetAnimationAction>>(); constructMenuItem, LedStripSetAnimationAction>>(); constructMenuItem, LedStripSetAnimationAction>>(); + constructMenuItem, LedStripSetAnimationAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; diff --git a/main/ledstrip.h b/main/ledstrip.h index 1b4fc44..205c257 100644 --- a/main/ledstrip.h +++ b/main/ledstrip.h @@ -10,6 +10,18 @@ #include "ledstripdefines.h" namespace { + +enum Bobbycar_Side { + FRONT_RIGHT, + RIGHT, + BACK_RIGHT, + BACK, + BACK_LEFT, + LEFT, + FRONT_LEFT, + FRONT +}; + std::vector leds; uint8_t gHue = 0; @@ -20,6 +32,7 @@ void showDefaultLedstrip(); void showAnimation(); void showBetterRainbow(); void showSpeedSyncAnimation(); +void showCustomColor(); void initLedStrip() { @@ -154,6 +167,7 @@ void showAnimation() { if (animation_type == LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW) showDefaultLedstrip(); else if (animation_type == LEDSTRIP_ANIMATION_TYPE_BETTERRAINBOW) showBetterRainbow(); else if (animation_type == LEDSTRIP_ANIMATION_TYPE_SPEEDSYNCANIMATION) showSpeedSyncAnimation(); + else if (animation_type == LEDSTRIP_ANIMATION_TYPE_CUSTOMCOLOR) showCustomColor(); else showDefaultLedstrip(); } else @@ -221,5 +235,39 @@ void showDefaultLedstrip() dothue += 32; } } + +void showCustomColor() +{ + const auto eighth_length = leds.size() / 8; + const auto center = (std::begin(leds) + (leds.size() / 2) + settings.ledstrip.centerOffset); + + std::fill(std::begin(leds), std::end(leds), ledstrip_custom_colors[int(Bobbycar_Side::FRONT)]); // Front + std::fill(center - (eighth_length / 2), center + (eighth_length / 2), ledstrip_custom_colors[int(Bobbycar_Side::BACK)]); // Back + +#ifdef LEDSTRIP_WRONG_DIRECTION + std::fill(center + (eighth_length / 2), center + (eighth_length / 2) + eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::BACK_LEFT)]); // Back Left + std::fill(center - (eighth_length / 2) - eighth_length, center - (eighth_length / 2), ledstrip_custom_colors[int(Bobbycar_Side::BACK_RIGHT)]); // Back Right +#else + std::fill(center + (eighth_length / 2), center + (eighth_length / 2) + eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::BACK_RIGHT)]); // Back Right + std::fill(center - (eighth_length / 2) - eighth_length, center - (eighth_length / 2), ledstrip_custom_colors[int(Bobbycar_Side::BACK_LEFT)]); // Back Left +#endif + +#ifdef LEDSTRIP_WRONG_DIRECTION + std::fill(center + (eighth_length / 2) + eighth_length, center + (eighth_length / 2) + eighth_length + eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::LEFT)]); // Left + std::fill(center - (eighth_length / 2) - eighth_length - eighth_length, center - (eighth_length / 2) - eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::RIGHT)]); // Right +#else + std::fill(center + (eighth_length / 2) + eighth_length, center + (eighth_length / 2) + eighth_length + eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::RIGHT)]); // Right + std::fill(center - (eighth_length / 2) - eighth_length - eighth_length, center - (eighth_length / 2) - eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::LEFT)]); // Left +#endif + +#ifdef LEDSTRIP_WRONG_DIRECTION + std::fill(center + (eighth_length / 2) + eighth_length + eighth_length, center + (eighth_length / 2) + eighth_length + eighth_length + eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::FRONT_LEFT)]); // Front Left + std::fill(center - (eighth_length / 2) - eighth_length - eighth_length - eighth_length, center - (eighth_length / 2) - eighth_length - eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::FRONT_RIGHT)]); // Front Right +#else + std::fill(center + (eighth_length / 2) + eighth_length + eighth_length, center + (eighth_length / 2) + eighth_length + eighth_length + eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::FRONT_RIGHT)]); // Front Right + std::fill(center - (eighth_length / 2) - eighth_length - eighth_length - eighth_length, center - (eighth_length / 2) - eighth_length - eighth_length, ledstrip_custom_colors[int(Bobbycar_Side::FRONT_LEFT)]); // Front Left +#endif + +} } // namespace #endif diff --git a/main/texts.h b/main/texts.h index cd267d0..fd7d226 100644 --- a/main/texts.h +++ b/main/texts.h @@ -289,6 +289,7 @@ constexpr char TEXT_STVO_FRONTLENGTH[] = "StVO Front Length"; constexpr char TEXT_STVO_ENABLEFRONTLIGHT[] = "StVO Front Enable"; constexpr char TEXT_ANIMATION_MULTIPLIER[] = "Animation Multiplier"; constexpr char TEXT_LEDSTRIP_BRIGHTNESS[] = "Ledstrip Brightness"; +constexpr char TEXT_LEDSTRIP_ALLCUSTOMOFF[] = "All custom off"; //constexpr char TEXT_BACK[] = "Back"; //LedstripSelectAnimationMenu @@ -296,6 +297,7 @@ constexpr char TEXT_SELECTANIMATION[] = "Select Animation"; constexpr char TEXT_ANIMATION_DEFAULTRAINBOW[] = "Default Rainbow"; constexpr char TEXT_ANIMATION_BETTERRAINBOW[] = "Better Rainbow"; constexpr char TEXT_ANIMATION_SPEEDSYNCANIMATION[] = "Speed Sync"; +constexpr char TEXT_ANIMATION_CUSTOMCOLOR[] = "Custom Color"; //LedstripSelectBlinkMenu constexpr char TEXT_ANIMATION_BLINKNONE[] = "Blink Off"; From 345d8e2007741e403c8c2aba16b30451d2e92a6c Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Fri, 22 Oct 2021 20:28:41 +0200 Subject: [PATCH 21/21] Fix for non-ledstrip users --- main/main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/main/main.cpp b/main/main.cpp index 49e7828..df8b287 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -61,7 +61,9 @@ using namespace std::chrono_literals; #include "displays/menus/mainmenu.h" #include "displays/menus/tempomatmodesettingsmenu.h" #include "displays/menus/modessettingsmenu.h" +#ifdef FEATURE_LEDSTRIP #include "displays/menus/ledstripcolorsmenu.h" +#endif #ifdef FEATURE_MOSFETS #include "displays/menus/mosfetsmenu.h" #endif