/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
*/
#include "access/martian/martian_resources.h"
#include "access/access.h"
namespace Access {
namespace Martian {
static const int RMOUSE[10][2] = {
{ 7, 36 }, { 38, 68 }, { 70, 99 }, { 102, 125 }, { 128, 152 },
{ 155, 185 }, { 188, 216 }, { 219, 260 }, { 263, 293 }, { 295, 314 }
};
// MM defines the last range twice in the original.
static const int BTN_RANGES[6][2] = {
{ 0, 60 }, { 64, 124 }, { 129, 192 }, { 194, 227 }, { 233, 292 }, { 297, 319 }
};
MartianResources::~MartianResources() {
delete _font1;
delete _font2;
delete _bitFont;
}
int MartianResources::getRMouse(int i, int j) const {
return RMOUSE[i][j];
}
int MartianResources::inButtonXRange(int x) const {
for (int i = 0; i < ARRAYSIZE(BTN_RANGES); i++) {
if ((x >= BTN_RANGES[i][0]) && (x < BTN_RANGES[i][1]))
return i;
}
return -1;
}
/*------------------------------------------------------------------------*/
const int SIDEOFFR[] = { 4, 0, 7, 10, 3, 1, 2, 13, 0, 0, 0, 0 };
const int SIDEOFFL[] = { 11, 6, 1, 4, 10, 6, 1, 4, 0, 0, 0, 0 };
const int SIDEOFFU[] = { 1, 2, 0, 2, 2, 1, 1, 0, 0, 0, 0, 0 };
const int SIDEOFFD[] = { 2, 0, 1, 1, 0, 1, 1, 1, 2, 0, 0, 0 };
const byte CREDIT_DATA[] = {
0x1F, 0x00, 0x49, 0x00, 0x00, 0x00, 0xB7, 0x00, 0x49, 0x00,
0x01, 0x00, 0x79, 0x00, 0x6F, 0x00, 0x02, 0x00, 0xFF, 0xFF,
0xEA, 0x01, 0x75, 0x00, 0x46, 0x00, 0x03, 0x00, 0x46, 0x00,
0x5E, 0x00, 0x04, 0x00, 0xFF, 0xFF, 0xEA, 0x01, 0x72, 0x00,
0x3E, 0x00, 0x05, 0x00, 0x46, 0x00, 0x57, 0x00, 0x04, 0x00,
0x5C, 0x00, 0x6E, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xEA, 0x01,
0x63, 0x00, 0x48, 0x00, 0x07, 0x00, 0x2A, 0x00, 0x65, 0x00,
0x08, 0x00, 0xFF, 0xFF, 0xEA, 0x01, 0x7E, 0x00, 0x39, 0x00,
0x09, 0x00, 0x5C, 0x00, 0x57, 0x00, 0x06, 0x00, 0x45, 0x00,
0x6B, 0x00, 0x04, 0x00, 0xFF, 0xFF, 0xEA, 0x01, 0x5F, 0x00,
0x46, 0x00, 0x0A, 0x00, 0x67, 0x00, 0x62, 0x00, 0x0B, 0x00,
0x47, 0x00, 0x76, 0x00, 0x0C, 0x00, 0xFF, 0xFF, 0xEA, 0x01,
0x62, 0x00, 0x38, 0x00, 0x0D, 0x00, 0x47, 0x00, 0x55, 0x00,
0x0E, 0x00, 0x49, 0x00, 0x6A, 0x00, 0x0F, 0x00, 0xFF, 0xFF,
0xEA, 0x01, 0x18, 0x00, 0x22, 0x00, 0x10, 0x00, 0x17, 0x00,
0x3E, 0x00, 0x11, 0x00, 0x16, 0x00, 0x52, 0x00, 0x12, 0x00,
0xEE, 0x00, 0x7B, 0x00, 0x13, 0x00, 0xB5, 0x00, 0x93, 0x00,
0x0B, 0x00, 0xFF, 0xFF, 0xF4, 0x01, 0xFF, 0xFF, 0xFF, 0xFF
};
const byte ICON_PALETTE[] = {
0x3F, 0x3F, 0x00, 0x00, 0x07, 0x16,
0x00, 0x0A, 0x1A, 0x00, 0x0D, 0x1F,
0x00, 0x11, 0x28, 0x00, 0x15, 0x30,
0x00, 0x19, 0x39, 0x00, 0x1B, 0x3F,
0x00, 0x2D, 0x3A
};
const char *const TRAVDATA[] = {
"GALACTIC PICTURES", "TERRAFORM", "WASHROOM", "MR. BIG", "ALEXIS' HOME",
"JOHNNY FEDORA", "JUNKYARD IN", "TEX'S OFFICE", "MURDER SCENE", "PLAZA HOTEL",
"RESTAURANT", "GIFT SHOP", "LOVE SCENE", "RICK LOGAN", "HUT",
"SMUGGLERS BASE", "PYRAMID", "CASINO", "CAS LOBBY", "BAR",
"DUCTWORK", "RESTROOM", "OFFICE", "SAFE", "ALLEY",
"POWER PLANT", "PLANT OFFICE", "PLANT ROOM", "TEMPLE", "IN TEMPLE",
"JANE MANSFIELD'S HOME", "AEROBICS ACADEMY", "DR. LAWRENCE BARKLEY", "COLONISTS CAMP", "IN SLUM",
"REMOTE OUTPOST", "WALK", "CAVE", "PRISON", "ORACLE",
"JOCQUES SPARROW", "MAC MALDEN", "CHANTAL VARGAS", "GUY CALLABERO", "ROCKWELL BACHE",
"FERRIS COLLETTE", "NORA DESMOND ALEXANDER", "LOWELL PERCIVAL", "MICHELE BLOODWORTH", "BRADLEY ERICSON",
"COOPER BRADBURY", nullptr
};
const char *const ASK_TBL[] = {
"NONE", "MARSHALL ALEXANDER", "TERRAFORM CORP.", "COLLIER STANTON", "ROCKWELL BACHE",
"JOCQUES SPARROW", "NORA DESMOND ALEXANDER", "GALACTIC PICTURES", "LAWRENCE BARKLEY", "TMS",
"MAC MALDEN", "STANTON EXPEDITION", "LOWELL PERCIVAL", "CHANTAL VARGAS", "RICK LOGAN",
"ALEXIS ALEXANDER", "FERRIS COLLETT", "GUY CALLABERO", "ORACLE STONE", "THOMAS DANGERFIELD",
"JANE MANSFIELD", "STACY CRAWFORD", "DICK CASTRO", "ROCKY BULLWINKEL", "DEACON HAWKE",
"NATHAN BLOODWORTH", "MICHELLE BLOODWORTH", "BRADLEY ERICSON", "COOPER BRADBURY", "MARTIAN MEMORANDUM",
"JOHNNY FEDORA", "RHONDA FOXWORTH", "ANGELO ANDRETTI", "TEX MURPHY", "ROBERT BLOODWORTH",
"LARRY HAMMOND", nullptr
};
byte HELP[] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
const char *const SPEC7MESSAGE = {
"THOMAS DANGERFIELD'S MAD EXPERIMENT OF ATTEMPTING TO HARNESS THE STONE'S POWER, ENDED HIS LIFE. DANGERFIELD WAS A DECENT HUMAN " \
"BEING ONCE, BUT WAS DRIVEN INSANE BY HIS QUEST FOR THE ULTIMATE POWER. ALEXIS AND I DECIDE THAT DEACON HAWKE IS THE ONLY " \
"LOGICAL CHOICE FOR THE STONE. WE ARRIVE AT THE TEMPLE WHERE SHE IS WAITING FOR US. SHE TURNS AND WHISPERS; 'YOU HAVE RETURNED " \
"THE STONE TO THE MISTRESS OF THE LIGHT. YOU HAVE SURELY SAVED THE WORLD FROM ANNIHILATION BUT YOU MUST CONTINUE TO BE DILIGENT. " \
"MANKIND MAY YET PROVE TO BE THE AUTHOR OF HIS OWN DEMISE. REVERENCE LIFE. PROTECT THE LIVING THINGS AND RECYCLE. AND NOW FOR " \
"THE SAFETY OF MANKIND, I MUST TAKE THE STONE. PERHAPS SOMEDAY, WHEN THE HUMAN RACE IS READY, IT WILL BE RETURNED. UNTIL THEN "\
"FAREWELL...'"
};
const byte CAN_TRAVEL_MATRIX[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
1
};
const int16 PICTURE_RANGE[][2] = {
// { min X, max X}, {min Y, max Y}
{ 20, 30 }, { 82, 87 },
{ 20, 30 }, { 105, 110 },
{ 0, 8 }, { 92, 100 },
{ 42, 46 }, { 92, 100 },
{ 9, 41 }, { 88, 104 },
{ 9, 41 }, { 117, 133 },
{ -1, -1 }
};
const int16 DUCT_ARROW_BUTTON_RANGE[][2] = {
// { min X, max X}, {min Y, max Y}
{ 12, 23 }, { 80, 87 }, // up button
{ 4, 15 }, { 87, 93 }, // left button
{ 14, 26 }, { 93, 104 },// down button
{ 25, 36 }, { 87, 93 }, // right button
{ -1, -1 }
};
const DuctMapPoint DUCT_MAP_DATA[] = {
// type //shapetype // x // y
{ 0x0, 0xB, 0x0, 0x4B0, },
{ 0xD, 0x10, 0x64, 0x4B0, },
{ 0xA, 0xD, 0x12C, 0x4B0, },
{ 0xE, 0xA, 0xC8, 0x44C, },
{ 0xE, 0xF, 0xC8, 0x3E8, },
{ 0x5, 0xD, 0xC8, 0x384, },
{ 0xE, 0xA, 0xC8, 0x320, },
{ 0xC, 0xC, 0xC8, 0x2BC, },
{ 0xD, 0xB, 0x64, 0x2BC, },
{ 0x0, 0x10, 0x0, 0x2BC, },
{ 0xD, 0xB, 0x12C, 0x384, },
{ 0xD, 0x10, 0x190, 0x384, },
{ 0x3, 0xA, 0x1F4, 0x514, },
{ 0xE, 0xF, 0x1F4, 0x4B0, },
{ 0xE, 0xA, 0x1F4, 0x44C, },
{ 0xE, 0xF, 0x1F4, 0x3E8, },
{ 0xFF, 0xD, 0x0, 0x4B0, },
{ 0xE, 0xA, 0x1F4, 0x320, },
{ 0x2, 0xF, 0x1F4, 0x2BC, },
{ 0xD, 0xB, 0x258, 0x384, },
{ 0xD, 0x10, 0x2BC, 0x384, },
{ 0xD, 0xB, 0x320, 0x384, },
{ 0xD, 0x10, 0x384, 0x384, },
{ 0x1, 0xB, 0x578, 0x514, },
{ 0xD, 0x10, 0x514, 0x514, },
{ 0xD, 0xB, 0x4B0, 0x514, },
{ 0xD, 0x10, 0x44C, 0x514, },
{ 0x9, 0xD, 0x3E8, 0x514, },
{ 0xE, 0xA, 0x3E8, 0x4B0, },
{ 0xE, 0xF, 0x3E8, 0x44C, },
{ 0xE, 0xA, 0x3E8, 0x3E8, },
{ 0xFF, 0xD, 0x0, 0x2BC, },
{ 0xE, 0xA, 0x3E8, 0x320, },
{ 0xE, 0xF, 0x3E8, 0x2BC, },
{ 0xE, 0xA, 0x3E8, 0x258, },
{ 0x5, 0xD, 0x3E8, 0x1F4, },
{ 0xE, 0xA, 0x3E8, 0x190, },
{ 0xE, 0xF, 0x3E8, 0x12C, },
{ 0xE, 0xA, 0x3E8, 0xC8, },
{ 0xB, 0xD, 0x3E8, 0x64, },
{ 0xD, 0xB, 0x44C, 0x64, },
{ 0x8, 0xC, 0x4B0, 0xC8, },
{ 0x2, 0xA, 0x4B0, 0x0, },
{ 0xD, 0xB, 0x514, 0x64, },
{ 0xD, 0x10, 0x578, 0x64, },
{ 0xD, 0xB, 0x5DC, 0x64, },
{ 0xD, 0x10, 0x640, 0x64, },
{ 0x8, 0xC, 0x6A4, 0xC8, },
{ 0xC, 0xA, 0x6A4, 0x0, },
{ 0xD, 0xB, 0x708, 0x64, },
{ 0xD, 0x10, 0x76C, 0x64, },
{ 0x7, 0xC, 0x7D0, 0x64, },
{ 0xD, 0xB, 0x834, 0x64, },
{ 0x8, 0xC, 0x898, 0xC8, },
{ 0x2, 0xA, 0x898, 0x0, },
{ 0xD, 0xC, 0x8FC, 0x64, },
{ 0x7, 0xB, 0x960, 0x64, },
{ 0xD, 0x10, 0x9C4, 0x64, },
{ 0xD, 0xB, 0xA28, 0x64, },
{ 0x1, 0x10, 0xA8C, 0x64, },
{ 0xE, 0xA, 0x960, 0xC8, },
{ 0x9, 0xD, 0x960, 0x12C, },
{ 0xD, 0xB, 0x9C4, 0x12C, },
{ 0xD, 0x10, 0xA28, 0x12C, },
{ 0xD, 0xB, 0xA8C, 0x12C, },
{ 0x1, 0x10, 0x8F0, 0x17C, },
{ 0xE, 0xA, 0x7D0, 0xC8, },
{ 0x6, 0xD, 0x834, 0x12C, },
{ 0xD, 0xA, 0x76C, 0x12C, },
{ 0x0, 0xF, 0x708, 0x12C, },
{ 0xE, 0xA, 0x7D0, 0x190, },
{ 0x9, 0xD, 0x7D0, 0x1F4, },
{ 0xD, 0xB, 0x834, 0x1F4, },
{ 0xD, 0x10, 0x898, 0x1F4, },
{ 0xD, 0xB, 0x8FC, 0x1F4, },
{ 0xD, 0x10, 0x960, 0x1F4, },
{ 0xD, 0xB, 0x9C4, 0x1F4, },
{ 0xD, 0x10, 0xA28, 0x1F4, },
{ 0xC, 0xC, 0xA8C, 0x1F4, },
{ 0xE, 0xA, 0xA8C, 0x258, },
{ 0xE, 0xF, 0xA8C, 0x2BC, },
{ 0xE, 0xA, 0xA8C, 0x320, },
{ 0xE, 0xF, 0xA8C, 0x384, },
{ 0xA, 0xD, 0xAF0, 0x3E8, },
{ 0xD, 0xB, 0xA28, 0x3E8, },
{ 0xD, 0x10, 0x44C, 0x1F4, },
{ 0xD, 0xB, 0x4B0, 0x1F4, },
{ 0xD, 0x10, 0x514, 0x1F4, },
{ 0x8, 0xC, 0x578, 0x258, },
{ 0xE, 0xA, 0x578, 0x190, },
{ 0x2, 0xF, 0x578, 0x12C, },
{ 0xD, 0xB, 0x5DC, 0x1F4, },
{ 0x7, 0xC, 0x640, 0x1F4, },
{ 0xD, 0xB, 0x6A4, 0x1F4, },
{ 0x1, 0x10, 0x708, 0x1F4, },
{ 0xE, 0xA, 0x640, 0x258, },
{ 0xE, 0xF, 0x640, 0x2BC, },
{ 0xE, 0xA, 0x640, 0x320, },
{ 0xD, 0xB, 0x44C, 0x384, },
{ 0xD, 0x10, 0x4B0, 0x384, },
{ 0x7, 0xC, 0x514, 0x384, },
{ 0xE, 0xA, 0x514, 0x3E8, },
{ 0x3, 0xF, 0x514, 0x44C, },
{ 0xD, 0xB, 0x578, 0x384, },
{ 0xD, 0x10, 0x5DC, 0x384, },
{ 0xFF, 0xC, 0x3E8, 0x578, },
{ 0xE, 0xB, 0x640, 0x3E8, },
{ 0xE, 0x10, 0x640, 0x44C, },
{ 0xE, 0xB, 0x640, 0x4B0, },
{ 0x3, 0x10, 0x640, 0x514, },
{ 0xD, 0xB, 0x6A4, 0x384, },
{ 0x1, 0x10, 0x708, 0x384, },
{ 0xFF, 0xC, 0x1F4, 0x578, },
{ 0xFF, 0xC, 0xC8, 0x514, },
{ 0xFF, 0xD, 0x12C, 0x2BC, },
{ 0xFF, 0xD, 0x5DC, 0x514, },
{ 0xFF, 0xC, 0x3E8, 0x64, },
{ 0xFF, 0xD, 0xAF0, 0x64, },
{ 0xFF, 0xC, 0x960, 0x190, },
{ 0xFF, 0xD, 0x708, 0x12C, },
{ 0xFF, 0xC, 0x7D0, 0x258, },
{ 0xFF, 0xD, 0xAF0, 0x1F4, },
{ 0xFF, 0xC, 0xA8C, 0x44C, },
{ 0xFF, 0xC, 0x578, 0x12C, },
{ 0xFF, 0xD, 0x76C, 0x1F4, },
{ 0xFF, 0xC, 0x514, 0x4B0, },
{ 0xFF, 0xC, 0x640, 0x578, },
{ 0xFF, 0xD, 0x76C, 0x384, },
{ 0x4, 0xE, 0x1F4, 0x384, },
{ 0x4, 0xE, 0x3E8, 0x384, },
{ 0x4, 0xE, 0x640, 0x384, },
{ 0xFF, 0xE, 0xC8, 0x384, },
{ 0xFF, 0xE, 0xC8, 0x2BC, },
{ 0xFF, 0xE, 0xC8, 0x4B0, },
{ 0xFF, 0xE, 0x3E8, 0x514, },
{ 0xFF, 0xE, 0x3E8, 0x64, },
{ 0xFF, 0xE, 0x514, 0x384, },
{ 0xFF, 0xE, 0x4B0, 0x0, },
{ 0xFF, 0xE, 0x578, 0x1F4, },
{ 0xFF, 0xE, 0x640, 0x1F4, },
{ 0xFF, 0xE, 0x6A4, 0x0, },
{ 0xFF, 0xE, 0x7D0, 0x12C, },
{ 0xFF, 0xE, 0x7D0, 0x1F4, },
{ 0xFF, 0xE, 0x898, 0x0, },
{ 0xFF, 0xE, 0x960, 0x64, },
{ 0xFF, 0xE, 0x960, 0x12C, },
{ 0xFF, 0xE, 0xA8C, 0x1F4, },
{ 0xFF, 0xE, 0xA8C, 0x3E8, },
{ 0xFF, 0xE, 0x3E8, 0x1F4, },
{ -1, -1, -1, -1, },
};
static const Point3 DUCT_SHAPE_0_POINTS[] = {
{ 0, 300, 0 }, { 0, 100, 0 },
{ 100, 400, 0 }, { 100, 0, 0 },
{ 300, 400, 0 }, { 300, 0, 0 },
{ 400, 300, 0 }, { 400, 100, 0 },
{ 0, 300, 500 }, { 0, 100, 500 },
{ 100, 400, 500 }, { 100, 0, 500 },
{ 300, 400, 500 }, { 300, 0, 500 },
{ 400, 300, 500 }, { 400, 100, 500 },
};
static const Point3 DUCT_SHAPE_1_POINTS[] = {
{ 0, 300, 400 }, { 0, 100, 400 },
{ 0, 400, 300 }, { 0, 0, 300 },
{ 0, 400, 100 }, { 0, 0, 100 },
{ 0, 300, 0 }, { 0, 100, 0 },
{ 500, 300, 400 }, { 500, 100, 400 },
{ 500, 400, 300 }, { 500, 0, 300 },
{ 500, 400, 100 }, { 500, 0, 100 },
{ 500, 300, 0 }, { 500, 100, 0 },
};
static const Point3 DUCT_SHAPE_2_POINTS[] = {
{ 0, 300, 500 }, { 0, 100, 500 },
{ 100, 400, 500 }, { 100, 0, 500 },
{ 300, 400, 500 }, { 300, 0, 500 },
{ 400, 300, 500 }, { 400, 100, 500 },
{ 40, 300, 300 }, { 40, 100, 300 },
{ 130, 400, 340 }, { 130, 0, 340 },
{ 320, 400, 400 }, { 320, 0, 400 },
{ 410, 300, 450 }, { 410, 100, 450 },
{ 170, 300, 120 }, { 170, 100, 120 },
{ 230, 400, 200 }, { 230, 0, 200 },
{ 380, 400, 340 }, { 380, 0, 340 },
{ 440, 300, 420 }, { 440, 100, 420 },
{ 330, 300, 20 }, { 330, 100, 20 },
{ 360, 400, 120 }, { 360, 0, 120 },
{ 500, 300, 400 }, { 500, 100, 400 },
{ 500, 400, 300 }, { 500, 0, 300 },
{ 500, 400, 100 }, { 500, 0, 100 },
{ 500, 300, 0 }, { 500, 100, 0 },
};
static const Point3 DUCT_SHAPE_3_POINTS[] = {
{ 500, 300, 500 }, { 500, 100, 500 },
{ 400, 400, 500 }, { 400, 0, 500 },
{ 200, 400, 500 }, { 200, 0, 500 },
{ 100, 300, 500 }, { 100, 100, 500 },
{ 460, 300, 300 }, { 460, 100, 300 },
{ 370, 400, 340 }, { 370, 0, 340 },
{ 180, 400, 400 }, { 180, 0, 400 },
{ 90, 300, 450 }, { 90, 100, 450 },
{ 330, 300, 120 }, { 330, 100, 120 },
{ 270, 400, 200 }, { 270, 0, 200 },
{ 120, 400, 340 }, { 120, 0, 340 },
{ 60, 300, 420 }, { 60, 100, 420 },
{ 170, 300, 20 }, { 170, 100, 20 },
{ 140, 400, 120 }, { 140, 0, 120 },
{ 0, 300, 400 }, { 0, 100, 400 },
{ 0, 400, 300 }, { 0, 0, 300 },
{ 0, 400, 100 }, { 0, 0, 100 },
{ 0, 300, 0 }, { 0, 100, 0 },
};
static const Point3 DUCT_SHAPE_4_POINTS[] = {
{ 0, 300, 500 }, { 0, 100, 500 },
{ 0, 400, 400 }, { 0, 0, 400 },
{ 0, 400, 200 }, { 0, 0, 200 },
{ 0, 300, 100 }, { 0, 100, 100 },
{ 170, 300, 480 }, { 170, 100, 480 },
{ 140, 400, 380 }, { 140, 0, 380 },
{ 120, 400, 160 }, { 120, 0, 160 },
{ 60, 300, 80 }, { 60, 100, 80 },
{ 330, 300, 380 }, { 330, 100, 380 },
{ 270, 400, 300 }, { 270, 0, 300 },
{ 180, 400, 200 }, { 180, 0, 200 },
{ 90, 300, 50 }, { 90, 100, 50 },
{ 460, 300, 200 }, { 460, 100, 200 },
{ 370, 400, 160 }, { 370, 0, 160 },
{ 100, 300, 0 }, { 100, 100, 0 },
{ 200, 400, 0 }, { 200, 0, 0 },
{ 400, 400, 0 }, { 400, 0, 0 },
{ 500, 300, 0 }, { 500, 100, 0 },
};
static const Point3 DUCT_SHAPE_5_6_POINTS[] = {
{ 500, 300, 500 }, { 500, 100, 500 },
{ 500, 400, 400 }, { 500, 0, 400 },
{ 500, 400, 200 }, { 500, 0, 200 },
{ 500, 300, 100 }, { 500, 100, 100 },
{ 330, 300, 480 }, { 330, 100, 480 },
{ 360, 400, 380 }, { 360, 0, 380 },
{ 380, 400, 160 }, { 380, 0, 160 },
{ 440, 300, 80 }, { 440, 100, 80 },
{ 170, 300, 380 }, { 170, 100, 380 },
{ 230, 400, 300 }, { 230, 0, 300 },
{ 320, 400, 200 }, { 320, 0, 200 },
{ 410, 300, 50 }, { 410, 100, 50 },
{ 40, 300, 200 }, { 40, 100, 200 },
{ 130, 400, 160 }, { 130, 0, 160 },
{ 400, 300, 0 }, { 400, 100, 0 },
{ 300, 400, 0 }, { 300, 0, 0 },
{ 100, 400, 0 }, { 100, 0, 0 },
{ 0, 300, 0 }, { 0, 100, 0 },
};
static const Point3 DUCT_SHAPE_7_POINTS[] = {
{ 0, 300, 0 }, { 0, 100, 0 },
{ 100, 400, 0 }, { 100, 0, 0 },
{ 300, 400, 0 }, { 300, 0, 0 },
{ 400, 300, 0 }, { 400, 100, 0 },
{ 0, 300, 500 }, { 0, 100, 500 },
{ 100, 400, 500 }, { 100, 0, 500 },
{ 300, 400, 500 }, { 300, 0, 500 },
{ 400, 300, 500 }, { 400, 100, 500 },
};
static const Point3 DUCT_SHAPE_8_9_POINTS[] = {
{ 0, 300, 400 }, { 0, 100, 400 },
{ 0, 400, 300 }, { 0, 0, 300 },
{ 0, 400, 100 }, { 0, 0, 100 },
{ 0, 300, 0 }, { 0, 100, 0 },
{ 0, 300, 400 }, { 0, 100, 400 },
{ 0, 400, 300 }, { 0, 0, 300 },
{ 0, 400, 100 }, { 0, 0, 100 },
{ 0, 300, 0 }, { 0, 100, 0 },
};
static const Point3 DUCT_SHAPE_10_POINTS[] = {
{ 0, 100, 0 }, { 0, 0, 0 },
{ 0, 100, 100 }, { 0, 0, 100 },
{ 100, 100, 100 }, { 100, 0, 100 },
{ 100, 100, 0 }, { 100, 0, 0 },
};
static const Point3 DUCT_SHAPE_11_POINTS[] = {
{ 0, 100, 0 }, { 0, 0, 0 },
{ 0, 100, 100 }, { 0, 0, 100 },
{ 100, 100, 100 }, { 100, 0, 100 },
{ 100, 100, 0 }, { 100, 0, 0 },
};
static const Point3 DUCT_SHAPE_12_POINTS[] = {
{ 0, 100, 0 }, { 0, 0, 0 },
{ 100, 100, 0 }, { 100, 0, 0 },
};
static const Point3 DUCT_SHAPE_13_POINTS[] = {
{ 0, 100, 0 }, { 0, 0, 0 },
{ 0, 100, 100 }, { 0, 0, 100 },
};
static const Point3 DUCT_SHAPE_14_POINTS[] = {
{ 0, 100, 0 }, { 0, 0, 0 },
{ 0, 100, 100 }, { 0, 0, 100 },
{ 100, 100, 100 }, { 100, 0, 100 },
{ 100, 100, 0 }, { 100, 0, 0 },
};
static const Point3 DUCT_SHAPE_15_POINTS[] = {
{ 0, 100, 0 }, { 0, 0, 0 },
{ 0, 100, 100 }, { 0, 0, 100 },
{ 100, 100, 100 }, { 100, 0, 100 },
{ 100, 100, 0 }, { 100, 0, 0 },
};
static const Point3 DUCT_SHAPE_16_POINTS[] = {
{ 0, 100, 0 }, { 0, 0, 0 },
{ 0, 100, 100 }, { 0, 0, 100 },
{ 100, 100, 100 }, { 100, 0, 100 },
{ 100, 100, 0 }, { 100, 0, 0 },
};
static const uint16 DUCT_SHAPE_0_DATA[] = {
1, 4, 8, 0xA, 2, 0, 2, 4, 1, 9, 8, 0, 3, 4, 0xB, 3,
1, 9, 4, 4, 0xC, 0xA, 2, 4, 5, 4, 0xD, 0xB, 3, 5, 6, 4,
0xE, 0xC, 4, 6, 7, 4, 0xF, 0xE, 6, 7, 8, 4, 0xF, 0xD, 5, 7
};
static const uint16 DUCT_SHAPE_1_DATA[] = {
1, 4, 8, 0xA, 2, 0, 2, 4, 1, 9, 8, 0, 3, 4, 0xB, 3, 1, 9,
4, 4, 0xC, 0xA, 2, 4, 5, 4, 0xD, 0xB, 3, 5, 6, 4, 0xE, 0xC,
4, 6, 7, 4, 0xF, 0xE, 6, 7, 8, 4, 0xF, 0xD, 5, 7
};
static const uint16 DUCT_SHAPE_2_DATA[] = {
0x1, 0x4, 0x8, 0xA, 0x2, 0x0, 0x2, 0x4, 0x9, 0xB, 0x3, 0x1,
0x3, 0x4, 0x8, 0x9, 0x1, 0x0, 0x4, 0x4, 0x10, 0x12, 0xA, 0x8,
0x5, 0x4, 0x11, 0x13, 0xB, 0x9, 0x6, 0x4, 0x11, 0x10, 0x8, 0x9,
0x7, 0x4, 0x18, 0x1A, 0x12, 0x10, 0x8, 0x4, 0x19, 0x1B, 0x13, 0x11,
0x1, 0x4, 0x19, 0x18, 0x10, 0x11, 0x2, 0x4, 0x22, 0x20, 0x1A, 0x18,
0x3, 0x4, 0x23, 0x21, 0x1B, 0x19, 0x4, 0x4, 0x23, 0x22, 0x18, 0x19,
0x5, 0x9, 0x2, 0xA, 0x12, 0x1A, 0x20, 0x1E, 0x14, 0xC, 0x4, 0x6,
0x9, 0x3, 0xB, 0x13, 0x1B, 0x21, 0x1F, 0x15, 0xD, 0x5, 0x7, 0x4,
0x1C, 0x16, 0x14, 0x1E, 0x8, 0x4, 0x1F, 0x1D, 0x17, 0x15, 0x1, 0x4,
0x1D, 0x1C, 0x16, 0x17, 0x2, 0x4, 0xC, 0x14, 0x16, 0xE, 0x3, 0x4,
0xD, 0x15, 0x17, 0xF, 0x4, 0x4, 0x17, 0x16, 0xE, 0xF, 0x5, 0x4,
0x4, 0xC, 0xE, 0x6, 0x6, 0x4, 0xD, 0xF, 0x7, 0x5, 0x7, 0x4,
0xF, 0xE, 0x6, 0x7
};
static const uint16 DUCT_SHAPE_3_DATA[] = {
0x1, 0x4, 0x8, 0xA, 0x2, 0x0, 0x2, 0x4, 0x9, 0xB, 0x3, 0x1,
0x3, 0x4, 0x8, 0x9, 0x1, 0x0, 0x4, 0x4, 0x10, 0x12, 0xA, 0x8,
0x5, 0x4, 0x11, 0x13, 0xB, 0x9, 0x6, 0x4, 0x11, 0x10, 0x8, 0x9,
0x7, 0x4, 0x18, 0x1A, 0x12, 0x10, 0x8, 0x4, 0x19, 0x1B, 0x13, 0x11,
0x1, 0x4, 0x19, 0x18, 0x10, 0x11, 0x2, 0x4, 0x22, 0x20, 0x1A, 0x18,
0x3, 0x4, 0x23, 0x21, 0x1B, 0x19, 0x4, 0x4, 0x23, 0x22, 0x18, 0x19,
0x5, 0x9, 0x2, 0xA, 0x12, 0x1A, 0x20, 0x1E, 0x14, 0xC, 0x4, 0x6,
0x9, 0x3, 0xB, 0x13, 0x1B, 0x21, 0x1F, 0x15, 0xD, 0x5, 0x7, 0x4,
0x1C, 0x16, 0x14, 0x1E, 0x8, 0x4, 0x1F, 0x1D, 0x17, 0x15, 0x1, 0x4,
0x1D, 0x1C, 0x16, 0x17, 0x2, 0x4, 0xC, 0x14, 0x16, 0xE, 0x3, 0x4,
0xD, 0x15, 0x17, 0xF, 0x4, 0x4, 0x17, 0x16, 0xE, 0xF, 0x5, 0x4,
0x4, 0xC, 0xE, 0x6, 0x6, 0x4, 0xD, 0xF, 0x7, 0x5, 0x7, 0x4,
0xF, 0xE, 0x6, 0x7
};
static const uint16 DUCT_SHAPE_4_DATA[] = {
0x1, 0x4, 0x8, 0xA, 0x2, 0x0, 0x2, 0x4, 0x9, 0xB, 0x3, 0x1,
0x3, 0x4, 0x8, 0x9, 0x1, 0x0, 0x4, 0x4, 0x10, 0x12, 0xA, 0x8,
0x5, 0x4, 0x11, 0x13, 0xB, 0x9, 0x6, 0x4, 0x11, 0x10, 0x8, 0x9,
0x7, 0x4, 0x18, 0x1A, 0x12, 0x10, 0x8, 0x4, 0x19, 0x1B, 0x13, 0x11,
0x1, 0x4, 0x19, 0x18, 0x10, 0x11, 0x2, 0x4, 0x22, 0x20, 0x1A, 0x18,
0x3, 0x4, 0x23, 0x21, 0x1B, 0x19, 0x4, 0x4, 0x23, 0x22, 0x18, 0x19,
0x5, 0x9, 0x2, 0xA, 0x12, 0x1A, 0x20, 0x1E, 0x14, 0xC, 0x4, 0x6,
0x9, 0x3, 0xB, 0x13, 0x1B, 0x21, 0x1F, 0x15, 0xD, 0x5, 0x7, 0x4,
0x1C, 0x16, 0x14, 0x1E, 0x8, 0x4, 0x1F, 0x1D, 0x17, 0x15, 0x1, 0x4,
0x1D, 0x1C, 0x16, 0x17, 0x2, 0x4, 0xC, 0x14, 0x16, 0xE, 0x3, 0x4,
0xD, 0x15, 0x17, 0xF, 0x4, 0x4, 0x17, 0x16, 0xE, 0xF, 0x5, 0x4,
0x4, 0xC, 0xE, 0x6, 0x6, 0x4, 0xD, 0xF, 0x7, 0x5, 0x7, 0x4,
0xF, 0xE, 0x6, 0x7
};
static const uint16 DUCT_SHAPE_5_6_DATA[] = {
0x1, 0x4, 0x8, 0xA, 0x2, 0x0, 0x2, 0x4, 0x9, 0xB, 0x3, 0x1,
0x3, 0x4, 0x8, 0x9, 0x1, 0x0, 0x4, 0x4, 0x10, 0x12, 0xA, 0x8,
0x5, 0x4, 0x11, 0x13, 0xB, 0x9, 0x6, 0x4, 0x11, 0x10, 0x8, 0x9,
0x7, 0x4, 0x18, 0x1A, 0x12, 0x10, 0x8, 0x4, 0x19, 0x1B, 0x13, 0x11,
0x1, 0x4, 0x19, 0x18, 0x10, 0x11, 0x2, 0x4, 0x22, 0x20, 0x1A, 0x18,
0x3, 0x4, 0x23, 0x21, 0x1B, 0x19, 0x4, 0x4, 0x23, 0x22, 0x18, 0x19,
0x5, 0x9, 0x2, 0xA, 0x12, 0x1A, 0x20, 0x1E, 0x14, 0xC, 0x4, 0x6,
0x9, 0x3, 0xB, 0x13, 0x1B, 0x21, 0x1F, 0x15, 0xD, 0x5, 0x7, 0x4,
0x1C, 0x16, 0x14, 0x1E, 0x8, 0x4, 0x1F, 0x1D, 0x17, 0x15, 0x1, 0x4,
0x1D, 0x1C, 0x16, 0x17, 0x2, 0x4, 0xC, 0x14, 0x16, 0xE, 0x3, 0x4,
0xD, 0x15, 0x17, 0xF, 0x4, 0x4, 0x17, 0x16, 0xE, 0xF, 0x5, 0x4,
0x4, 0xC, 0xE, 0x6, 0x6, 0x4, 0xD, 0xF, 0x7, 0x5, 0x7, 0x4,
0xF, 0xE, 0x6, 0x7
};
static const uint16 DUCT_SHAPE_7_DATA[] = {
0x2, 0x4, 0x8, 0xA, 0x2, 0x0, 0x3, 0x4, 0x1, 0x9, 0x8, 0x0,
0x4, 0x4, 0xB, 0x3, 0x1, 0x9, 0x5, 0x4, 0xC, 0xA, 0x2, 0x4,
0x6, 0x4, 0xD, 0xB, 0x3, 0x5, 0x7, 0x4, 0xE, 0xC, 0x4, 0x6,
0x8, 0x4, 0xF, 0xE, 0x6, 0x7, 0x1, 0x4, 0xF, 0xD, 0x5, 0x7
};
static const uint16 DUCT_SHAPE_8_9_DATA[] = {
0x2, 0x4, 0x8, 0xA, 0x2, 0x0, 0x3, 0x4, 0x1, 0x9, 0x8, 0x0,
0x4, 0x4, 0xB, 0x3, 0x1, 0x9, 0x5, 0x4, 0xC, 0xA, 0x2, 0x4,
0x6, 0x4, 0xD, 0xB, 0x3, 0x5, 0x7, 0x4, 0xE, 0xC, 0x4, 0x6,
0x8, 0x4, 0xF, 0xE, 0x6, 0x7, 0x1, 0x4, 0xF, 0xD, 0x5, 0x7
};
static const uint16 DUCT_SHAPE_10_DATA[] = {
5, 4, 0, 2, 3, 1, 3, 4, 0, 6, 4, 2,
4, 4, 1, 7, 5, 3, 6, 4, 6, 7, 5, 4
};
static const uint16 DUCT_SHAPE_11_DATA[] = {
3, 4, 0, 6, 4, 2, 4, 4, 1, 7, 5, 3,
5, 4, 0, 6, 7, 1, 6, 4, 2, 4, 5, 3
};
static const uint16 DUCT_SHAPE_12_DATA[] = {
7, 4, 0, 1, 3, 2
};
static const uint16 DUCT_SHAPE_13_DATA[] = {
7, 4, 0, 1, 3, 2
};
static const uint16 DUCT_SHAPE_14_DATA[] = {
1, 4, 0, 6, 4, 2, 2, 4, 1, 7, 5, 3
};
static const uint16 DUCT_SHAPE_15_DATA[] = {
6, 4, 0, 2, 3, 1, 4, 4, 0, 6, 4, 2,
3, 4, 1, 7, 5, 3, 5, 4, 6, 7, 5, 4
};
static const uint16 DUCT_SHAPE_16_DATA[] = {
4, 4, 0, 6, 4, 2, 3, 4, 1, 7, 5, 3,
6, 4, 0, 6, 7, 1, 5, 4, 2, 4, 5, 3
};
static const DuctShape DUCT_SHAPE_0[] = {
{ 16, 8, DUCT_SHAPE_0_POINTS, DUCT_SHAPE_0_DATA }
};
static const DuctShape DUCT_SHAPE_1[] = {
{ 16, 8, DUCT_SHAPE_1_POINTS, DUCT_SHAPE_1_DATA }
};
static const DuctShape DUCT_SHAPE_2[] = {
{ 36, 23, DUCT_SHAPE_2_POINTS, DUCT_SHAPE_2_DATA }
};
static const DuctShape DUCT_SHAPE_3[] = {
{ 36, 23, DUCT_SHAPE_3_POINTS, DUCT_SHAPE_3_DATA }
};
static const DuctShape DUCT_SHAPE_4[] = {
{ 36, 23, DUCT_SHAPE_4_POINTS, DUCT_SHAPE_4_DATA }
};
static const DuctShape DUCT_SHAPE_5_6[] = {
{ 36, 23, DUCT_SHAPE_5_6_POINTS, DUCT_SHAPE_5_6_DATA }
};
static const DuctShape DUCT_SHAPE_7[] = {
{ 16, 8, DUCT_SHAPE_7_POINTS, DUCT_SHAPE_7_DATA }
};
static const DuctShape DUCT_SHAPE_8_9[] = {
{ 16, 8, DUCT_SHAPE_8_9_POINTS, DUCT_SHAPE_8_9_DATA }
};
static const DuctShape DUCT_SHAPE_10[] = {
{ 8, 4, DUCT_SHAPE_10_POINTS, DUCT_SHAPE_10_DATA }
};
static const DuctShape DUCT_SHAPE_11[] = {
{ 8, 4, DUCT_SHAPE_11_POINTS, DUCT_SHAPE_11_DATA }
};
static const DuctShape DUCT_SHAPE_12[] = {
{ 4, 1, DUCT_SHAPE_12_POINTS, DUCT_SHAPE_12_DATA }
};
static const DuctShape DUCT_SHAPE_13[] = {
{ 4, 1, DUCT_SHAPE_13_POINTS, DUCT_SHAPE_13_DATA }
};
static const DuctShape DUCT_SHAPE_14[] = {
{ 8, 2, DUCT_SHAPE_14_POINTS, DUCT_SHAPE_14_DATA }
};
static const DuctShape DUCT_SHAPE_15[] = {
{ 8, 4, DUCT_SHAPE_15_POINTS, DUCT_SHAPE_15_DATA }
};
static const DuctShape DUCT_SHAPE_16[] = {
{ 8, 4, DUCT_SHAPE_16_POINTS, DUCT_SHAPE_16_DATA }
};
const DuctShape *DUCT_SHAPE_DATA[17] {
DUCT_SHAPE_0, DUCT_SHAPE_1, DUCT_SHAPE_2, DUCT_SHAPE_3,
DUCT_SHAPE_4, DUCT_SHAPE_5_6, DUCT_SHAPE_5_6, DUCT_SHAPE_7,
DUCT_SHAPE_8_9, DUCT_SHAPE_8_9, DUCT_SHAPE_10, DUCT_SHAPE_11,
DUCT_SHAPE_12, DUCT_SHAPE_13, DUCT_SHAPE_14, DUCT_SHAPE_15,
DUCT_SHAPE_16
};
static const byte FONT1_WIDTHS[] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x5, 0x3, 0x4, 0x6, 0x5, 0x6, 0x6, 0x3,
0x4, 0x4, 0x5, 0x6, 0x3, 0x5, 0x3, 0x6,
0x6, 0x4, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x4, 0x6, 0x5, 0x5, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x4, 0x6, 0x4, 0x4, 0x6,
0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
static const byte FONT2_WIDTHS[] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x5, 0x3, 0x5, 0x6, 0x6, 0x5, 0x6, 0x3,
0x5, 0x5, 0x6, 0x5, 0x3, 0x5, 0x3, 0x5,
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
0x5, 0x5, 0x5, 0x5, 0x5, 0x7, 0x6, 0x5,
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x7,
0x5, 0x5, 0x5, 0x4, 0x5, 0x4, 0x4, 0x5,
0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
// Offsets into the data array for each char (starts at 0x4d13)
static const int FONT1_OFFSETS[] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x2, 0xa, 0x12, 0x20, 0x37, 0x4e, 0x65,
0x6a, 0x75, 0x80, 0x97, 0x9f, 0xa4, 0xa9, 0xae,
0xbf, 0xd6, 0xe1, 0xf2, 0x103, 0x10e, 0x11f, 0x130,
0x13e, 0x155, 0x166, 0x16e, 0x176, 0x187, 0x18f, 0x1a0,
0x1b1, 0x1c2, 0x1d0, 0x1e4, 0x1ef, 0x1fd, 0x20b, 0x216,
0x227, 0x232, 0x23d, 0x24b, 0x25f, 0x267, 0x278, 0x289,
0x297, 0x2a5, 0x2b6, 0x2ca, 0x2db, 0x2e3, 0x2ee, 0x2ff,
0x310, 0x32d, 0x33e, 0x34f, 0x35a, 0x36b, 0x376, 0x381,
0x386, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
};
// Offsets into the data array for each char (starts at 0x485d)
static const int FONT2_OFFSETS[] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x13, 0x1b, 0x23, 0x31, 0x48, 0x59, 0x70,
0x75, 0x80, 0x8b, 0xa2, 0xaa, 0xaf, 0xb4, 0xb9,
0xc4, 0xd2, 0xdd, 0xee, 0xff, 0x10a, 0x11b, 0x12c,
0x137, 0x14e, 0x15f, 0x167, 0x16f, 0x180, 0x188, 0x199,
0x1a7, 0x1b5, 0x1c3, 0x1d7, 0x1e2, 0x1f0, 0x1fe, 0x209,
0x217, 0x222, 0x22d, 0x238, 0x246,0x24e, 0x25f, 0x26d,
0x27b, 0x289, 0x29a, 0x2ab,0x2bc, 0x2c4, 0x2cf, 0x2dd,
0x2ee, 0x2ff, 0x30a,0x31b, 0x326, 0x331, 0x33c, 0x347,
0x34c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
};
static const byte FONT1_DATA[] = {
0xFF, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x01, 0x01, 0x03, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0x03, 0x01, 0x02, 0xFF, 0x01, 0x05, 0x02, 0x01, 0x05, 0x04, 0xFF, 0x02, 0x01, 0x05, 0x04, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x00, 0x02, 0x04, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x04, 0x01, 0x03, 0x05, 0x02, 0x02, 0x06, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x05, 0x05, 0x01, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x04, 0x01, 0x01, 0x05, 0x05, 0x05, 0x05, 0xFF, 0xFF, 0x02, 0x03, 0x01, 0x02, 0x03, 0x02, 0x04, 0x04, 0x02, 0x03, 0x03, 0x04, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x03, 0x04, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0xFF, 0x02, 0x02, 0x01, 0x02, 0x02, 0x05, 0xFF, 0x01, 0x02, 0x04, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x04, 0xFF, 0x01, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0x04, 0x03, 0x01, 0x01, 0x05, 0x04, 0x04, 0x05, 0xFF, 0x02, 0x02, 0x04, 0x03, 0x02, 0x04, 0xFF, 0x01, 0x05, 0x03, 0xFF, 0x03, 0x01, 0x05, 0xFF, 0xFF, 0x01, 0x05, 0x06, 0xFF, 0x02, 0x04, 0x03, 0xFF, 0xFF, 0x01, 0x02, 0x05, 0xFF, 0xFF, 0x01, 0x01, 0x05, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x04, 0x04, 0x02, 0x05, 0x05, 0x01, 0xFF, 0xFF, 0x02, 0x04, 0x01, 0x02, 0x04, 0x05, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x04, 0x04, 0x02, 0xFF, 0x01, 0x02, 0x04, 0x05, 0x02, 0x04, 0xFF, 0x01, 0x01, 0x02, 0x01, 0x03, 0x05, 0xFF, 0x02, 0x01, 0x04, 0xFF, 0x01, 0x04, 0x01, 0x05, 0x05, 0x02, 0x03, 0x04, 0x03, 0x02, 0x02, 0x04, 0x01, 0x05, 0x05, 0xFF, 0xFF, 0x01, 0x04, 0x01, 0x05, 0x05, 0x02, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x01, 0x04, 0x05, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0x01, 0x05, 0x03, 0xFF, 0x04, 0x01, 0x05, 0xFF, 0x02, 0x05, 0x01, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x01, 0x04, 0x05, 0xFF, 0x01, 0x01, 0x03, 0xFF, 0x02, 0x05, 0x01, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x02, 0x04, 0xFF, 0x01, 0x05, 0x01, 0x05, 0x05, 0x02, 0x04, 0x04, 0x03, 0xFF, 0x03, 0x04, 0x05, 0xFF, 0x02, 0x04, 0x01, 0x01, 0x01, 0x02, 0x05, 0x05, 0x02, 0x02, 0x04, 0x03, 0x01, 0x01, 0x04, 0x05, 0x05, 0x04, 0x02, 0x04, 0x05, 0xFF, 0xFF, 0x02, 0x04, 0x01, 0x01, 0x01, 0x02, 0x02, 0x04, 0x03, 0x01, 0x04, 0x05, 0xFF, 0x05, 0x02, 0x04, 0xFF, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0xFF, 0x01, 0x04, 0x05, 0xFF, 0x03, 0x03, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x03, 0x02, 0x02, 0x04, 0x03, 0x03, 0x05, 0xFF, 0xFF, 0x01, 0x04, 0x02, 0x01, 0x04, 0x04, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x04, 0x01, 0x01, 0x05, 0xFF, 0xFF, 0x02, 0x03, 0x01, 0x01, 0x01, 0x02, 0x03, 0x03, 0x04, 0x03, 0x03, 0x06, 0xFF, 0x04, 0x02, 0x03, 0xFF, 0x02, 0x04, 0x01, 0x05, 0x05, 0x02, 0x04, 0x05, 0x03, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x02, 0x04, 0xFF, 0x02, 0x04, 0x01, 0x02, 0x04, 0x04, 0xFF, 0x01, 0x02, 0x05, 0x05, 0x02, 0x05, 0xFF, 0x02, 0x04, 0x01, 0x05, 0x05, 0x02, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x05, 0x01, 0x02, 0x05, 0x05, 0xFF, 0x01, 0x02, 0x04, 0xFF, 0x02, 0x04, 0x01, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x01, 0x05, 0x05, 0x02, 0x04, 0xFF, 0x02, 0x05, 0x01, 0x02, 0x03, 0x03, 0x02, 0x05, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x05, 0x01, 0x02, 0x03, 0x03, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x05, 0x01, 0x04, 0x05, 0x03, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x02, 0x04, 0x05, 0x03, 0x04, 0xFF, 0x02, 0x04, 0x03, 0xFF, 0x01, 0x01, 0x05, 0x05, 0x01, 0x05, 0xFF, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, 0xFF, 0x02, 0x04, 0x02, 0xFF, 0x03, 0x05, 0x01, 0x01, 0x01, 0x04, 0x02, 0x03, 0x05, 0xFF, 0x04, 0x02, 0x04, 0xFF, 0x04, 0x04, 0x01, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0xFF, 0x01, 0x01, 0x05, 0x05, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0xFF, 0x01, 0x01, 0x05, 0x05, 0x01, 0x05, 0xFF, 0x02, 0x04, 0x01, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x02, 0x04, 0x05, 0x02, 0x04, 0xFF, 0x02, 0x04, 0x01, 0x05, 0x05, 0x02, 0x02, 0x04, 0x03, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x04, 0x01, 0x03, 0x03, 0x04, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x02, 0x04, 0x05, 0x02, 0x06, 0xFF, 0x02, 0x04, 0x01, 0x05, 0x05, 0x02, 0x02, 0x04, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x04, 0x01, 0x01, 0x01, 0x02, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x02, 0x04, 0x05, 0xFF, 0xFF, 0x01, 0x05, 0x01, 0xFF, 0x03, 0x02, 0x05, 0xFF, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x01, 0x04, 0x05, 0x01, 0x04, 0xFF, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x05, 0xFF, 0x01, 0x01, 0x03, 0x05, 0x01, 0x03, 0xFF, 0x03, 0x03, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0xFF, 0x01, 0x01, 0x05, 0x05, 0x01, 0x05, 0xFF, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x01, 0x01, 0x05, 0x02, 0x02, 0x04, 0x04, 0x04, 0x02, 0x05, 0x05, 0x01, 0xFF, 0xFF, 0x02, 0x02, 0x03, 0x04, 0x04, 0x03, 0xFF, 0x01, 0x01, 0x02, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05, 0xFF, 0x01, 0x05, 0x01, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x04, 0x01, 0x05, 0x05, 0xFF, 0xFF, 0x02, 0x03, 0x01, 0x02, 0x03, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x01, 0x02, 0x05, 0xFF, 0x02, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x03, 0x03, 0x02, 0xFF, 0xFF, 0x01, 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0xFF
};
static const byte FONT2_DATA[] = {
0xFF, 0xFF, 0x01, 0x03, 0x01, 0x00, 0x04, 0x02, 0x00, 0x04, 0x06, 0x01, 0x03, 0x07, 0xFF, 0x02, 0x00, 0x08, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x01, 0x01, 0x03, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0x03, 0x01, 0x02, 0xFF, 0x01, 0x05, 0x02, 0x01, 0x05, 0x04, 0xFF, 0x02, 0x01, 0x05, 0x04, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x00, 0x02, 0x04, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x04, 0x01, 0x03, 0x05, 0x02, 0x02, 0x06, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x05, 0xFF, 0x01, 0x04, 0x05, 0x03, 0x01, 0x02, 0xFF, 0x02, 0x03, 0x01, 0x02, 0x03, 0x02, 0x04, 0x04, 0x02, 0x03, 0x03, 0x04, 0x02, 0x04, 0x05, 0xFF, 0x01, 0x03, 0x04, 0x04, 0x03, 0x04, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0xFF, 0x02, 0x02, 0x01, 0x02, 0x02, 0x05, 0xFF, 0x01, 0x02, 0x04, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x04, 0xFF, 0x01, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0x04, 0x03, 0x01, 0x01, 0x05, 0x04, 0x04, 0x05, 0xFF, 0x02, 0x02, 0x04, 0x03, 0x02, 0x04, 0xFF, 0x01, 0x03, 0x03, 0xFF, 0x02, 0x02, 0x04, 0xFF, 0xFF, 0x01, 0x05, 0x06, 0xFF, 0x01, 0x03, 0x03, 0xFF, 0xFF, 0x01, 0x02, 0x05, 0xFF, 0xFF, 0x02, 0x02, 0x03, 0xFF, 0x01, 0x04, 0x05, 0x03, 0x01, 0x02, 0xFF, 0x02, 0x02, 0x01, 0x02, 0x02, 0x05, 0xFF, 0x01, 0x02, 0x04, 0x03, 0x02, 0x04, 0xFF, 0x01, 0x01, 0x02, 0x01, 0x03, 0x05, 0xFF, 0x02, 0x01, 0x04, 0xFF, 0x01, 0x02, 0x01, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01, 0x04, 0x01, 0x03, 0x05, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x01, 0x02, 0x05, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0x01, 0x03, 0x03, 0xFF, 0x03, 0x01, 0x05, 0xFF, 0x01, 0x03, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x03, 0x03, 0x03, 0x04, 0x01, 0x02, 0x05, 0xFF, 0xFF, 0x02, 0x03, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x02, 0x02, 0x05, 0xFF, 0x01, 0x02, 0x04, 0xFF, 0x01, 0x03, 0x01, 0x03, 0x03, 0x02, 0xFF, 0x02, 0x03, 0x05, 0xFF, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01, 0x04, 0x03, 0x03, 0x04, 0x02, 0x02, 0x05, 0xFF, 0xFF, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x01, 0x02, 0x05, 0xFF, 0x03, 0x02, 0x04, 0xFF, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0xFF, 0x01, 0x04, 0x05, 0xFF, 0x03, 0x03, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x03, 0x02, 0x02, 0x04, 0x03, 0x03, 0x05, 0xFF, 0xFF, 0x01, 0x03, 0x02, 0x01, 0x03, 0x04, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x04, 0x01, 0x01, 0x05, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x05, 0xFF, 0xFF, 0x02, 0x02, 0x01, 0x02, 0x03, 0x05, 0xFF, 0x01, 0x02, 0x04, 0x03, 0x02, 0x03, 0xFF, 0x02, 0x02, 0x01, 0x02, 0x02, 0x04, 0xFF, 0x01, 0x02, 0x05, 0x03, 0x02, 0x05, 0xFF, 0x02, 0x02, 0x01, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x02, 0x02, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x03, 0x01, 0x02, 0x03, 0x05, 0xFF, 0x01, 0x02, 0x04, 0xFF, 0x02, 0x02, 0x01, 0x02, 0x02, 0x05, 0xFF, 0x01, 0x01, 0x05, 0x03, 0x02, 0x04, 0xFF, 0x02, 0x03, 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x03, 0x01, 0x02, 0x02, 0x03, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x03, 0x01, 0x03, 0x03, 0x04, 0x02, 0x03, 0x05, 0xFF, 0x01, 0x02, 0x04, 0xFF, 0x02, 0x02, 0x03, 0xFF, 0x01, 0x01, 0x05, 0x03, 0x01, 0x05, 0xFF, 0x01, 0x03, 0x01, 0x01, 0x03, 0x05, 0xFF, 0x02, 0x04, 0x02, 0xFF, 0x01, 0x01, 0x04, 0x02, 0x02, 0x05, 0xFF, 0x03, 0x01, 0x04, 0xFF, 0x02, 0x02, 0x03, 0xFF, 0x01, 0x01, 0x05, 0x03, 0x01, 0x02, 0x03, 0x04, 0x05, 0xFF, 0x02, 0x03, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x03, 0x03, 0x03, 0xFF, 0x01, 0x01, 0x05, 0x05, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0xFF, 0x01, 0x01, 0x05, 0x04, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x01, 0x02, 0x02, 0x05, 0xFF, 0x01, 0x02, 0x04, 0x03, 0x02, 0x04, 0xFF, 0x02, 0x02, 0x01, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x01, 0x01, 0x03, 0x04, 0x02, 0x03, 0x05, 0xFF, 0x01, 0x02, 0x03, 0x03, 0x02, 0x03, 0xFF, 0x02, 0x02, 0x01, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0xFF, 0x01, 0x01, 0x05, 0x03, 0x04, 0x05, 0xFF, 0x02, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x02, 0x03, 0x05, 0xFF, 0xFF, 0x01, 0x03, 0x01, 0xFF, 0x02, 0x02, 0x05, 0xFF, 0x02, 0x02, 0x05, 0xFF, 0x01, 0x01, 0x04, 0x03, 0x01, 0x04, 0xFF, 0x02, 0x02, 0x04, 0x02, 0x02, 0x05, 0xFF, 0x01, 0x01, 0x03, 0x03, 0x01, 0x03, 0xFF, 0x03, 0x03, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0xFF, 0x01, 0x01, 0x05, 0x05, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x03, 0xFF, 0x01, 0x01, 0x02, 0x01, 0x04, 0x05, 0x03, 0x01, 0x02, 0x03, 0x04, 0x05, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0x03, 0x01, 0x02, 0x02, 0x03, 0x05, 0xFF, 0x01, 0x03, 0x01, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01, 0x04, 0x01, 0x03, 0x05, 0xFF, 0xFF, 0x02, 0x03, 0x01, 0x02, 0x03, 0x05, 0xFF, 0x01, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x03, 0xFF, 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0xFF, 0x01, 0x02, 0x01, 0x01, 0x02, 0x05, 0xFF, 0x02, 0x01, 0x05, 0xFF, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x03, 0x03, 0x02, 0xFF, 0xFF, 0x01, 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x02, 0xFF
};
static const byte CURSOR_1_DATA[] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xF7, 0x5,
0x0, 0x3, 0xF7, 0xF7, 0x5, 0x0, 0x3, 0xF7,
0xF7, 0x5, 0x0, 0x4, 0xF7, 0xF7, 0xF7, 0x5,
0x0, 0x4, 0xF7, 0xF7, 0xF7, 0x5, 0x0, 0x5,
0xF7, 0xF7, 0xF7, 0xF7, 0x5, 0x0, 0x5, 0xF7,
0xF7, 0xF7, 0xF7, 0x5, 0x0, 0x6, 0xF7, 0xF7,
0xF7, 0xF7, 0xF7, 0x5, 0x0, 0x6, 0xF7, 0xF7,
0xF7, 0xF7, 0xF7, 0x5, 0x0, 0x7, 0xF7, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0x5, 0x0, 0x6, 0xF7,
0xF7, 0xF7, 0xF7, 0xF7, 0x5, 0x0, 0x5, 0xF7,
0xF7, 0xF7, 0xF7, 0x5, 0x2, 0x3, 0xF7, 0xF7,
0x5, 0x3, 0x3, 0xF7, 0xF7, 0x5, 0x3, 0x3,
0xF7, 0xF7, 0x5, 0x4, 0x2, 0xF7, 0x5
};
static const byte CURSOR_2_DATA[] = {
0x7, 0x0, 0x7, 0x0, 0x6, 0x1, 0xF7, 0x4,
0x5, 0xFF, 0xFF, 0x0, 0xFF, 0xFF, 0x3, 0x7,
0xFF, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x2,
0x9, 0xFF, 0x0, 0x0, 0x0, 0xF7, 0x0, 0x0,
0x0, 0xFF, 0x1, 0xB, 0xFF, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0x1,
0xB, 0xFF, 0x0, 0x0, 0x0, 0x0, 0xF7, 0x0,
0x0, 0x0, 0x0, 0xFF, 0x0, 0xD, 0xF7, 0x0,
0x0, 0xF7, 0x0, 0xF7, 0x0, 0xF7, 0x0, 0xF7,
0x0, 0x0, 0xF7, 0x1, 0xB, 0xFF, 0x0, 0x0,
0x0, 0x0, 0xF7, 0x0, 0x0, 0x0, 0x0, 0xFF,
0x1, 0xB, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xFF, 0x2, 0x9, 0xFF,
0x0, 0x0, 0x0, 0xF7, 0x0, 0x0, 0x0, 0xFF,
0x3, 0x7, 0xFF, 0x0, 0x0, 0x0, 0x0, 0x0,
0xFF, 0x4, 0x5, 0xFF, 0xFF, 0x0, 0xFF, 0xFF,
0x6, 0x1, 0xF7, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0
};
static const byte BITFONT_DATA[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x08, 0x08, 0x08, 0x00, 0x08, 0x00, 0x00,
0x00, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x14, 0x3E, 0x14, 0x3E, 0x14, 0x00, 0x00,
0x3C, 0x50, 0x38, 0x14, 0x78, 0x10, 0x00, 0x00,
0x00, 0x22, 0x04, 0x08, 0x10, 0x22, 0x00, 0x00,
0x00, 0x30, 0x48, 0x30, 0x2A, 0x4C, 0x32, 0x00,
0x00, 0x18, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0C, 0x18, 0x10, 0x18, 0x0C, 0x00, 0x00,
0x00, 0x30, 0x18, 0x08, 0x18, 0x30, 0x00, 0x00,
0x00, 0x2A, 0x1C, 0x3E, 0x1C, 0x2A, 0x00, 0x00,
0x00, 0x00, 0x08, 0x1C, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x18, 0x08, 0x10, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00,
0x00, 0x3C, 0x4A, 0x52, 0x62, 0x3C, 0x00, 0x00,
0x00, 0x08, 0x18, 0x08, 0x08, 0x1C, 0x00, 0x00,
0x00, 0x3C, 0x42, 0x0C, 0x30, 0x7E, 0x00, 0x00,
0x00, 0x3C, 0x42, 0x1C, 0x42, 0x3C, 0x00, 0x00,
0x00, 0x42, 0x42, 0x7E, 0x02, 0x02, 0x00, 0x00,
0x00, 0x7E, 0x40, 0x7C, 0x02, 0x7C, 0x00, 0x00,
0x00, 0x3C, 0x40, 0x7C, 0x42, 0x3C, 0x00, 0x00,
0x00, 0x7E, 0x02, 0x04, 0x08, 0x08, 0x00, 0x00,
0x00, 0x3C, 0x42, 0x3C, 0x42, 0x3C, 0x00, 0x00,
0x00, 0x3C, 0x42, 0x3E, 0x02, 0x3C, 0x00, 0x00,
0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x08, 0x00, 0x18, 0x08, 0x10, 0x00,
0x00, 0x08, 0x10, 0x20, 0x10, 0x08, 0x00, 0x00,
0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00, 0x00,
0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00, 0x00,
0x00, 0x3C, 0x24, 0x0C, 0x00, 0x08, 0x00, 0x00,
0x00, 0x3C, 0x42, 0x5E, 0x40, 0x3E, 0x00, 0x00,
0x00, 0x3C, 0x42, 0x42, 0x7E, 0x42, 0x00, 0x00,
0x00, 0x7C, 0x42, 0x7C, 0x42, 0x7C, 0x00, 0x00,
0x00, 0x3C, 0x42, 0x40, 0x42, 0x3C, 0x00, 0x00,
0x00, 0x7C, 0x42, 0x42, 0x42, 0x7C, 0x00, 0x00,
0x00, 0x7E, 0x40, 0x7C, 0x40, 0x7E, 0x00, 0x00,
0x00, 0x7E, 0x40, 0x7C, 0x40, 0x40, 0x00, 0x00,
0x00, 0x3C, 0x40, 0x4E, 0x42, 0x3C, 0x00, 0x00,
0x00, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x00, 0x00,
0x00, 0x7C, 0x10, 0x10, 0x10, 0x7C, 0x00, 0x00,
0x00, 0x1E, 0x04, 0x04, 0x44, 0x38, 0x00, 0x00,
0x00, 0x42, 0x4C, 0x70, 0x4C, 0x42, 0x00, 0x00,
0x00, 0x40, 0x40, 0x40, 0x40, 0x7E, 0x00, 0x00,
0x00, 0x41, 0x63, 0x55, 0x49, 0x41, 0x00, 0x00,
0x00, 0x42, 0x62, 0x5A, 0x46, 0x42, 0x00, 0x00,
0x00, 0x3C, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00,
0x00, 0x7C, 0x42, 0x7C, 0x40, 0x40, 0x00, 0x00,
0x00, 0x3C, 0x42, 0x42, 0x44, 0x3A, 0x00, 0x00,
0x00, 0x7C, 0x42, 0x7C, 0x44, 0x42, 0x00, 0x00,
0x00, 0x3C, 0x40, 0x3C, 0x02, 0x3C, 0x00, 0x00,
0x00, 0x7C, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
0x00, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00,
0x00, 0x42, 0x42, 0x42, 0x24, 0x18, 0x00, 0x00,
0x00, 0x41, 0x49, 0x55, 0x63, 0x41, 0x00, 0x00,
0x00, 0x42, 0x24, 0x18, 0x24, 0x42, 0x00, 0x00,
0x00, 0x42, 0x42, 0x24, 0x18, 0x18, 0x00, 0x00,
0x00, 0x7E, 0x04, 0x18, 0x20, 0x7E, 0x00, 0x00,
0x00, 0x10, 0x38, 0x7C, 0x38, 0x38, 0x00, 0x00,
0x00, 0x38, 0x38, 0x7C, 0x38, 0x10, 0x00, 0x00,
0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x00,
0x00, 0x7F, 0x55, 0x49, 0x55, 0x7F, 0x00, 0x00,
0xFF, 0x91, 0xBD, 0xBD, 0x91, 0xFF, 0x00, 0x00,
0xFF, 0x89, 0xBD, 0xBD, 0x89, 0xFF, 0x00, 0x00
};
static const byte CURSOR_3_DATA[] = {
0x8, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
0x7, 0x2, 0x4, 0x5, 0x7, 0x2, 0x4, 0x5,
0x7, 0x2, 0x4, 0x5, 0x7, 0x2, 0x4, 0x5,
0x7, 0x2, 0x4, 0x5, 0x2, 0xC, 0x4, 0x4,
0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4,
0x4, 0x5, 0x7, 0x2, 0x4, 0x5, 0x7, 0x2,
0x4, 0x5, 0x7, 0x2, 0x4, 0x5, 0x7, 0x2,
0x4, 0x5, 0x7, 0x2, 0x4, 0x5, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0
};
static const byte CURSOR_4_DATA[] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0xB, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x0, 0xC, 0x6, 0x7, 0x7, 0x7, 0x7,
0x7, 0x7, 0x7, 0x7, 0x6, 0x6, 0x5, 0x0,
0xC, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7,
0x7, 0x7, 0x6, 0x5, 0x5, 0x0, 0xC, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x5, 0x0, 0xC, 0x6, 0x6, 0x6,
0x6, 0x6, 0x5, 0x6, 0x6, 0x6, 0x6, 0x6,
0x5, 0x0, 0xC, 0x6, 0x6, 0x6, 0x6, 0x5,
0x0, 0x0, 0x6, 0x6, 0x6, 0x6, 0x5, 0x0,
0xC, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x6,
0x6, 0x6, 0x6, 0x6, 0x5, 0x0, 0xC, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x5, 0x0, 0xC, 0x6, 0x6, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x5, 0x0, 0xC, 0x6, 0x6, 0x6, 0x6, 0x6,
0x5, 0x6, 0x6, 0x6, 0x6, 0x6, 0x5, 0x0,
0xC, 0x6, 0x6, 0x6, 0x6, 0x6, 0x5, 0x6,
0x6, 0x6, 0x6, 0x6, 0x5, 0x0, 0xC, 0x6,
0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
0x6, 0x6, 0x5, 0x1, 0xB, 0x5, 0x5, 0x5,
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0
};
static const byte *CURSOR_DATA[] =
{
CURSOR_1_DATA,
CURSOR_2_DATA,
CURSOR_3_DATA,
CURSOR_4_DATA,
};
void MartianResources::load(Common::SeekableReadStream &s) {
Resources::load(s);
// Create the fonts from static data.
_font1 = new MartianFont(6, ARRAYSIZE(FONT1_WIDTHS), FONT1_WIDTHS, FONT1_OFFSETS, FONT1_DATA);
_font2 = new MartianFont(6, ARRAYSIZE(FONT2_WIDTHS), FONT2_WIDTHS, FONT2_OFFSETS, FONT2_DATA);
_bitFont = new MartianBitFont(ARRAYSIZE(BITFONT_DATA) / 8, BITFONT_DATA);
CANT_GET_THERE = "YOU CAN'T GET THERE FROM HERE.";
// The EXE doesn't have full data for the last few room table entries (49~51), as they are only
// talk locations. That means the DAT file doesn't include them, so we add them manually.
ROOMTBL.push_back(RoomEntry({"MICHELE BLOODWORTH", Common::Point(-1, 18), Common::Array()}));
ROOMTBL.push_back(RoomEntry({"BRADLEY ERICSON", Common::Point(-1, 19), Common::Array()}));
ROOMTBL.push_back(RoomEntry({"COOPER BRADBURY", Common::Point(-1, 21), Common::Array()}));
}
const byte *MartianResources::getCursor(int num) const {
assert(num < ARRAYSIZE(CURSOR_DATA) && num >= 0);
return CURSOR_DATA[num];
}
} // End of namespace Martian
} // End of namespace Access