1 /* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 *
21 */
22
23
24 #include "common/system.h"
25 #include "common/events.h"
26 #include "common/stream.h"
27 #include "common/memstream.h"
28
29 #include "graphics/cursorman.h"
30 #include "graphics/palette.h"
31 #include "graphics/surface.h"
32
33 #include "image/iff.h"
34 #include "image/pcx.h"
35
36 #include "queen/display.h"
37 #include "queen/input.h"
38 #include "queen/logic.h"
39 #include "queen/queen.h"
40 #include "queen/resource.h"
41
42 namespace Queen {
43
Display(QueenEngine * vm,OSystem * system)44 Display::Display(QueenEngine *vm, OSystem *system)
45 : _fullscreen(true), _horizontalScroll(0), _bdWidth(0), _bdHeight(0),
46 _system(system), _vm(vm), _rnd("queenDisplay") {
47
48 initFont();
49
50 _screenBuf = new uint8[ SCREEN_W * SCREEN_H ];
51 _panelBuf = new uint8[ PANEL_W * PANEL_H ];
52 _backdropBuf = new uint8[ BACKDROP_W * BACKDROP_H ];
53 memset(_screenBuf, 0, SCREEN_W * SCREEN_H);
54 memset(_panelBuf, 0, PANEL_W * PANEL_H);
55 memset(_backdropBuf, 0, BACKDROP_W * BACKDROP_H);
56
57 _fullRefresh = 1;
58 _dirtyBlocksWidth = SCREEN_W / D_BLOCK_W;
59 _dirtyBlocksHeight = SCREEN_H / D_BLOCK_H;
60 _dirtyBlocks = new uint8[_dirtyBlocksWidth * _dirtyBlocksHeight];
61 memset(_dirtyBlocks, 0, _dirtyBlocksWidth * _dirtyBlocksHeight);
62
63 _pal.room = new uint8[ 256 * 3 ];
64 _pal.screen = new uint8[ 256 * 3 ];
65 _pal.panel = new uint8[ 112 * 3 ];
66 memset(_pal.room, 0, 256 * 3);
67 memset(_pal.screen, 0, 256 * 3);
68 memset(_pal.panel, 0, 112 * 3);
69 _pal.dirtyMin = 0;
70 _pal.dirtyMax = 255;
71 _pal.scrollable = true;
72
73 _imageExt = (_vm->resource()->getPlatform() == Common::kPlatformAmiga) ? "LBM" : "PCX";
74
75 _curTextColor = 0;
76 memset(_texts, 0, sizeof(_texts));
77
78 memset(&_dynalum, 0, sizeof(_dynalum));
79
80 setupInkColors();
81 }
82
~Display()83 Display::~Display() {
84 delete[] _backdropBuf;
85 delete[] _panelBuf;
86 delete[] _screenBuf;
87
88 delete[] _dirtyBlocks;
89
90 delete[] _pal.room;
91 delete[] _pal.screen;
92 delete[] _pal.panel;
93
94 delete[] _dynalum.mskBuf;
95 delete[] _dynalum.lumBuf;
96 }
97
dynalumInit(const char * roomName,uint16 roomNum)98 void Display::dynalumInit(const char *roomName, uint16 roomNum) {
99 debug(9, "Display::dynalumInit(%s, %d)", roomName, roomNum);
100
101 _dynalum.valid = false;
102 delete[] _dynalum.mskBuf;
103 _dynalum.mskBuf = NULL;
104 delete[] _dynalum.lumBuf;
105 _dynalum.lumBuf = NULL;
106
107 if (!isPalFadingDisabled(roomNum)) {
108 char filename[20];
109 sprintf(filename, "%s.MSK", roomName);
110 if (_vm->resource()->fileExists(filename)) {
111 _dynalum.mskBuf = (uint8 *)_vm->resource()->loadFile(filename, 0, &_dynalum.mskSize);
112 sprintf(filename, "%s.LUM", roomName);
113 if (_vm->resource()->fileExists(filename)) {
114 _dynalum.lumBuf = (int8 *)_vm->resource()->loadFile(filename, 0, &_dynalum.lumSize);
115 _dynalum.valid = true;
116 _dynalum.prevColMask = 0xFF;
117 }
118 }
119 }
120 }
121
dynalumUpdate(int16 x,int16 y)122 void Display::dynalumUpdate(int16 x, int16 y) {
123 if (!_dynalum.valid)
124 return;
125
126 if (x < 0) {
127 x = 0;
128 } else if (x > _bdWidth) {
129 x = _bdWidth;
130 }
131 if (y < 0) {
132 y = 0;
133 } else if (y > ROOM_ZONE_HEIGHT - 1) {
134 y = ROOM_ZONE_HEIGHT - 1;
135 }
136
137 uint32 offset = (y / 4) * 160 + (x / 4);
138 assert(offset < _dynalum.mskSize);
139
140 uint8 colMask = _dynalum.mskBuf[offset];
141 debug(9, "Display::dynalumUpdate(%d, %d) - colMask = %d", x, y, colMask);
142 if (colMask != _dynalum.prevColMask) {
143 for (int i = 144; i < 160; ++i) {
144 for (int j = 0; j < 3; ++j) {
145 int16 c = (int16)(_pal.room[i * 3 + j] + _dynalum.lumBuf[colMask * 3 + j] * 4);
146 if (c < 0) {
147 c = 0;
148 } else if (c > 255) {
149 c = 255;
150 }
151 _pal.screen[i * 3 + j] = (uint8)c;
152 }
153 }
154 _pal.dirtyMin = MIN(_pal.dirtyMin, 144);
155 _pal.dirtyMax = MAX(_pal.dirtyMax, 159);
156 _dynalum.prevColMask = colMask;
157 }
158 }
159
palSet(const uint8 * pal,int start,int end,bool updateScreen)160 void Display::palSet(const uint8 *pal, int start, int end, bool updateScreen) {
161 debug(9, "Display::palSet(%d, %d)", start, end);
162 const int numColors = end - start + 1;
163 assert(numColors <= 256);
164 _system->getPaletteManager()->setPalette(pal + start * 3, start, numColors);
165 if (updateScreen) {
166 _vm->input()->delay(20);
167 }
168 }
169
palSetJoeDress()170 void Display::palSetJoeDress() {
171 if (_vm->resource()->getPlatform() == Common::kPlatformDOS) {
172 memcpy(_pal.room + 144 * 3, _palJoeDress, 16 * 3);
173 memcpy(_pal.screen + 144 * 3, _palJoeDress, 16 * 3);
174 palSet(_pal.screen, 144, 159, true);
175 }
176 }
177
palSetJoeNormal()178 void Display::palSetJoeNormal() {
179 if (_vm->resource()->getPlatform() == Common::kPlatformDOS) {
180 memcpy(_pal.room + 144 * 3, _palJoeClothes, 16 * 3);
181 memcpy(_pal.screen + 144 * 3, _palJoeClothes, 16 * 3);
182 palSet(_pal.screen, 144, 159, true);
183 }
184 }
185
palSetPanel()186 void Display::palSetPanel() {
187 memcpy(_pal.room + 144 * 3, _pal.panel, (256 - 144) * 3);
188 memcpy(_pal.screen + 144 * 3, _pal.panel, (256 - 144) * 3);
189 }
190
palFadeIn(uint16 roomNum,bool dynalum,int16 dynaX,int16 dynaY)191 void Display::palFadeIn(uint16 roomNum, bool dynalum, int16 dynaX, int16 dynaY) {
192 debug(9, "Display::palFadeIn(%d)", roomNum);
193 int n = getNumColorsForRoom(roomNum);
194 memcpy(_pal.screen, _pal.room, n * 3);
195 if (!isPalFadingDisabled(roomNum)) {
196 if (dynalum) {
197 dynalumUpdate(dynaX, dynaY);
198 }
199 uint8 tempPal[256 * 3];
200 for (int i = 0; i <= FADE_SPEED; ++i) {
201 for (int j = 0; j < n * 3; ++j) {
202 tempPal[j] = _pal.screen[j] * i / FADE_SPEED;
203 }
204 palSet(tempPal, 0, n - 1, true);
205 }
206 }
207 _pal.dirtyMin = 0;
208 _pal.dirtyMax = n - 1;
209 _pal.scrollable = true;
210 }
211
palFadeOut(uint16 roomNum)212 void Display::palFadeOut(uint16 roomNum) {
213 debug(9, "Display::palFadeOut(%d)", roomNum);
214 _pal.scrollable = false;
215 int n = getNumColorsForRoom(roomNum);
216 if (isPalFadingDisabled(roomNum)) {
217 memset(_pal.screen, 0, n * 3);
218 palSet(_pal.screen, 0, n - 1, true);
219 } else {
220 uint8 tempPal[256 * 3];
221 memcpy(tempPal, _pal.screen, n * 3);
222 for (int i = FADE_SPEED; i >= 0; --i) {
223 for (int j = 0; j < n * 3; ++j) {
224 _pal.screen[j] = tempPal[j] * i / FADE_SPEED;
225 }
226 palSet(_pal.screen, 0, n - 1, true);
227 }
228 }
229 }
230
palGreyPanel()231 void Display::palGreyPanel() {
232 debug(9, "Display::palGreyPanel()");
233 uint8 tempPal[256 * 3];
234 for (int i = 224 * 3; i < 256 * 3; i += 3) {
235 tempPal[i] = tempPal[i + 1] = tempPal[i + 2] = _pal.screen[i + 1] * 2 / 3;
236 }
237 palSet(tempPal, 224, 255, true);
238 }
239
palScroll(int start,int end)240 void Display::palScroll(int start, int end) {
241 debug(9, "Display::palScroll(%d, %d)", start, end);
242
243 uint8 *palEnd = _pal.screen + end * 3;
244 uint8 *palStart = _pal.screen + start * 3;
245
246 uint8 r = *palEnd++;
247 uint8 g = *palEnd++;
248 uint8 b = *palEnd;
249
250 int n = (end - start) * 3;
251 while (n--) {
252 *palEnd = *(palEnd - 3);
253 --palEnd;
254 }
255
256 *palStart++ = r;
257 *palStart++ = g;
258 *palStart = b;
259 }
260
palSetAmigaColor(uint8 color,uint16 rgb)261 void Display::palSetAmigaColor(uint8 color, uint16 rgb) {
262 uint8 b = rgb & 0xF; rgb >>= 4;
263 uint8 g = rgb & 0xF; rgb >>= 4;
264 uint8 r = rgb & 0xF;
265 _pal.room[color * 3] = (r << 4) | r;
266 _pal.room[color * 3 + 1] = (g << 4) | g;
267 _pal.room[color * 3 + 2] = (b << 4) | b;
268 }
269
palCustomColors(uint16 roomNum)270 void Display::palCustomColors(uint16 roomNum) {
271 debug(9, "Display::palCustomColors(%d)", roomNum);
272 if (_vm->resource()->getPlatform() == Common::kPlatformAmiga) {
273 switch (roomNum) {
274 case 28:
275 palSetAmigaColor(27, 0xC60);
276 palSetAmigaColor(28, 0xA30);
277 palSetAmigaColor(29, 0x810);
278 palSetAmigaColor(30, 0x600);
279 break;
280 case 29:
281 palSetAmigaColor(27, 0x58B);
282 palSetAmigaColor(28, 0x369);
283 palSetAmigaColor(29, 0x158);
284 palSetAmigaColor(30, 0x046);
285 break;
286 case 30:
287 palSetAmigaColor(27, 0x5A4);
288 palSetAmigaColor(28, 0x384);
289 palSetAmigaColor(29, 0x171);
290 palSetAmigaColor(30, 0x056);
291 break;
292 case 31:
293 palSetAmigaColor(27, 0xDA4);
294 palSetAmigaColor(28, 0xB83);
295 palSetAmigaColor(29, 0x873);
296 palSetAmigaColor(30, 0x652);
297 break;
298 case 45:
299 palSetAmigaColor(20, 0xA58);
300 palSetAmigaColor(21, 0x845);
301 break;
302 }
303 return;
304 }
305 switch (roomNum) {
306 case 31:
307 for (int i = 72; i < 84; i++) {
308 _pal.room[i * 3 + 1] = _pal.room[i * 3 + 1] * 90 / 100;
309 _pal.room[i * 3 + 2] = _pal.room[i * 3 + 2] * 70 / 100;
310 }
311 break;
312 case 29:
313 for (int i = 72; i < 84; i++) {
314 _pal.room[i * 3 + 1] = _pal.room[i * 3 + 1] * 60 / 100;
315 _pal.room[i * 3 + 2] = _pal.room[i * 3 + 2] * 60 / 100;
316 }
317 break;
318 case 30:
319 for (int i = 72; i < 84; i++) {
320 _pal.room[i * 3 + 0] = _pal.room[i * 3 + 0] * 60 / 100;
321 _pal.room[i * 3 + 1] = _pal.room[i * 3 + 1] * 80 / 100;
322 }
323 break;
324 case 28:
325 for (int i = 72; i < 84; i++) {
326 _pal.room[i * 3 + 0] = _pal.room[i * 3 + 0] * 80 / 100;
327 _pal.room[i * 3 + 2] = _pal.room[i * 3 + 1] * 60 / 100;
328 }
329 break;
330 }
331 }
332
palCustomScroll(uint16 roomNum)333 void Display::palCustomScroll(uint16 roomNum) {
334 debug(9, "Display::palCustomScroll(%d)", roomNum);
335 static int16 scrollx = 0;
336
337 if (!_pal.scrollable) {
338 return;
339 }
340
341 int hiPal = 0;
342 int loPal = 255;
343 int i;
344
345 ++scrollx;
346
347 if (_vm->resource()->getPlatform() == Common::kPlatformAmiga) {
348 switch (roomNum) {
349 case 4:
350 if ((scrollx & 1) == 0) {
351 palScroll(24, 26);
352 loPal = 24;
353 hiPal = 26;
354 }
355 break;
356 case 74:
357 palScroll(28, 31);
358 loPal = 28;
359 hiPal = 31;
360 break;
361 }
362 _pal.dirtyMin = MIN(_pal.dirtyMin, loPal);
363 _pal.dirtyMax = MAX(_pal.dirtyMax, hiPal);
364 return;
365 }
366
367 switch (roomNum) {
368 case 123: {
369 static int16 j = 0, jdir = 2;
370 for (i = 96; i < 111; ++i) {
371 _pal.screen[i * 3 + 0] = MIN(255, _pal.room[i * 3 + 0] + j * 8);
372 _pal.screen[i * 3 + 1] = MIN(255, _pal.room[i * 3 + 1] + j * 4);
373 }
374 j += jdir;
375 if (j <= 0 || j >= 18) {
376 jdir = -jdir;
377 }
378 loPal = 96;
379 hiPal = 111;
380 }
381 break;
382 case 124: {
383 static int16 j = 0,jdir = 2;
384 for (i = 80; i < 144; ++i) {
385 _pal.screen[i * 3 + 0] = MIN(255, _pal.room[i * 3 + 0] + j * 8);
386 _pal.screen[i * 3 + 1] = MIN(255, _pal.room[i * 3 + 1] + j * 4);
387 }
388 j += jdir;
389 if (j <= 0 || j >= 14) {
390 jdir = -jdir;
391 if (_rnd.getRandomNumber(1)) {
392 if (ABS(jdir) == 1) {
393 jdir *= 2;
394 } else {
395 jdir /= 2;
396 }
397 }
398 }
399 loPal = 80;
400 hiPal = 143;
401 }
402 break;
403 case 125:
404 palScroll(32, 63);
405 palScroll(64, 95);
406 loPal = 32;
407 hiPal = 95;
408 break;
409 case 100:
410 if (scrollx & 1) {
411 palScroll(128, 132);
412 palScroll(133, 137);
413 palScroll(138, 143);
414 loPal = 128;
415 hiPal = 143;
416 }
417 break;
418 case 102:
419 if (scrollx & 1) {
420 palScroll(112, 127);
421 loPal = 112;
422 hiPal = 127;
423 }
424 break;
425 case 62:
426 if (scrollx & 1) {
427 palScroll(108, 119);
428 loPal = 108;
429 hiPal = 119;
430 }
431 break;
432 case 25:
433 palScroll(116, 123);
434 loPal = 116;
435 hiPal = 123;
436 break;
437 case 59:
438 if (scrollx & 1) {
439 palScroll(56, 63);
440 loPal = 56;
441 hiPal = 63;
442 }
443 break;
444 case 39:
445 palScroll(112, 143);
446 loPal = 112;
447 hiPal = 143;
448 break;
449 case 74:
450 palScroll(28, 31);
451 palScroll(88, 91);
452 palScroll(92, 95);
453 palScroll(128, 135);
454 if (scrollx & 1) {
455 palScroll(136, 143);
456 }
457 loPal = 28;
458 hiPal = 143;
459 break;
460 case 40:
461 if (scrollx & 1) {
462 palScroll(96, 103);
463 }
464 if (scrollx & 3) {
465 palScroll(104, 107);
466 }
467 loPal = 96;
468 hiPal = 107;
469 break;
470 case 97:
471 if (scrollx & 1) {
472 palScroll(96, 107);
473 palScroll(108, 122);
474 loPal = 96;
475 hiPal = 122;
476 }
477 break;
478 case 55:
479 palScroll(128, 143);
480 loPal = 128;
481 hiPal = 143;
482 break;
483 case 57:
484 palScroll(128, 143);
485 if (scrollx & 1) {
486 palScroll(96, 103);
487 }
488 loPal = 96;
489 hiPal = 143;
490 break;
491 case 76:
492 palScroll(88, 95);
493 loPal = 88;
494 hiPal = 95;
495 break;
496 case 2:
497 if (scrollx & 1) {
498 palScroll(120, 127);
499 loPal = 120;
500 hiPal = 127;
501 }
502 break;
503 case 3:
504 case 5:
505 if (scrollx & 1) {
506 palScroll(128, 135);
507 palScroll(136, 143);
508 loPal = 128;
509 hiPal = 143;
510 }
511 break;
512 case 7:
513 if (scrollx & 1) {
514 palScroll(119, 127);
515 loPal = 119;
516 hiPal = 127;
517 }
518 break;
519 case 42:
520 if (scrollx & 1) {
521 palScroll(118, 127);
522 palScroll(136, 143);
523 loPal = 118;
524 hiPal = 143;
525 }
526 break;
527 case 4:
528 if (scrollx & 1) {
529 palScroll(32,47);
530 }
531 palScroll(64, 70);
532 palScroll(71, 79);
533 loPal = 32;
534 hiPal = 79;
535 break;
536 case 8:
537 if (scrollx & 1) {
538 palScroll(120, 127);
539 }
540 loPal = 120;
541 hiPal = 127;
542 break;
543 case 12:
544 case 64:
545 if (scrollx & 1) {
546 palScroll(112, 119);
547 palScroll(120, 127);
548 loPal = 112;
549 hiPal = 127;
550 }
551 break;
552 case 49:
553 palScroll(101, 127);
554 loPal = 101;
555 hiPal = 127;
556 break;
557 }
558 _pal.dirtyMin = MIN(_pal.dirtyMin, loPal);
559 _pal.dirtyMax = MAX(_pal.dirtyMax, hiPal);
560 }
561
palCustomFlash()562 void Display::palCustomFlash() {
563 uint8 tempPal[256 * 3];
564 memset(tempPal, 255, 17 * 3);
565 memset(tempPal + 17 * 3, 0, 67 * 3);
566 memset(tempPal + 67 * 3, 255, 172 * 3);
567 // set flash palette
568 palSet(tempPal, 0, 255, true);
569 // restore original palette
570 palSet(_pal.screen, 0, 255, true);
571 }
572
palCustomLightsOff(uint16 roomNum)573 void Display::palCustomLightsOff(uint16 roomNum) {
574 if (_vm->resource()->getPlatform() == Common::kPlatformAmiga) {
575 memset(_pal.screen, 0, 31 * 3);
576 _pal.screen[31 * 3] = 15;
577 _pal.screen[31 * 3 + 1] = 15;
578 _pal.screen[31 * 3 + 2] = 0;
579 palSet(_pal.screen, 0, 31, true);
580 } else {
581 const int end = 223;
582 const int start = (roomNum == ROOM_FLODA_FRONTDESK) ? 32 : 16;
583 const int n = end - start + 1;
584 memset(_pal.screen + start * 3, 0, n * 3);
585 palSet(_pal.screen, start, end, true);
586 }
587 _pal.scrollable = false;
588 }
589
palCustomLightsOn(uint16 roomNum)590 void Display::palCustomLightsOn(uint16 roomNum) {
591 if (_vm->resource()->getPlatform() == Common::kPlatformAmiga) {
592 memcpy(_pal.screen, _pal.room, 32 * 3);
593 palSet(_pal.screen, 0, 31, true);
594 } else {
595 const int end = 223;
596 const int start = (roomNum == ROOM_FLODA_FRONTDESK) ? 32 : 0;
597 const int n = end - start + 1;
598 memcpy(_pal.screen + start * 3, _pal.room + start * 3, n * 3);
599 palSet(_pal.screen, start, end, true);
600 }
601 _pal.dirtyMin = 0;
602 _pal.dirtyMax = 223;
603 _pal.scrollable = true;
604 }
605
getNumColorsForRoom(uint16 room) const606 int Display::getNumColorsForRoom(uint16 room) const {
607 int n = 224;
608 if (room >= 114 && room <= 125) {
609 n = 256;
610 }
611 return n;
612 }
613
isPalFadingDisabled(uint16 room) const614 bool Display::isPalFadingDisabled(uint16 room) const {
615 // introduction rooms don't fade palette
616 return (room >= 90 && room <= 94) || (room >= 115 && room <= 125);
617 }
618
screenMode(int comPanel,bool inCutaway)619 void Display::screenMode(int comPanel, bool inCutaway) {
620 debug(6, "Display::screenMode(%d, %d)", comPanel, inCutaway);
621
622 if (comPanel == 2 && inCutaway) {
623 fullscreen((_bdHeight == GAME_SCREEN_HEIGHT));
624 } else if (comPanel == 1) {
625 fullscreen(false);
626 }
627 }
628
prepareUpdate()629 void Display::prepareUpdate() {
630 int h = GAME_SCREEN_HEIGHT;
631 if (!_fullscreen) {
632 h = ROOM_ZONE_HEIGHT;
633 memcpy(_screenBuf + SCREEN_W * ROOM_ZONE_HEIGHT, _panelBuf, PANEL_W * PANEL_H);
634 }
635 uint8 *dst = _screenBuf;
636 const uint8 *src = _backdropBuf + _horizontalScroll;
637
638 while (h--) {
639 memcpy(dst, src, SCREEN_W);
640 dst += SCREEN_W;
641 src += BACKDROP_W;
642 }
643 }
644
update(bool dynalum,int16 dynaX,int16 dynaY)645 void Display::update(bool dynalum, int16 dynaX, int16 dynaY) {
646 drawTexts();
647 if (_pal.scrollable && dynalum) {
648 dynalumUpdate(dynaX, dynaY);
649 }
650 if (_pal.dirtyMin != 144 || _pal.dirtyMax != 144) {
651 palSet(_pal.screen, _pal.dirtyMin, _pal.dirtyMax);
652 _pal.dirtyMin = 144;
653 _pal.dirtyMax = 144;
654 }
655 // uncomment this line to disable the dirty blocks rendering
656 // _fullRefresh = 1;
657 if (_fullRefresh) {
658 _system->copyRectToScreen(_screenBuf, SCREEN_W, 0, 0, SCREEN_W, SCREEN_H);
659 _system->updateScreen();
660 --_fullRefresh;
661 if (_fullRefresh) {
662 memset(_dirtyBlocks, 0, _dirtyBlocksWidth * _dirtyBlocksHeight);
663 }
664 debug(9, "Display::update() - Full blit (%d)", _fullRefresh);
665 } else {
666 uint16 count = 0;
667 uint8 *scrBuf = _screenBuf;
668 uint8 *dbBuf = _dirtyBlocks;
669 for (int j = 0; j < _dirtyBlocksHeight; ++j) {
670 uint16 accW = 0;
671 for (int i = 0; i < _dirtyBlocksWidth; ++i) {
672 if (dbBuf[i] != 0) {
673 --dbBuf[i];
674 ++accW;
675 } else if (accW != 0) {
676 int x = (i - accW) * D_BLOCK_W;
677 _system->copyRectToScreen(scrBuf + x, SCREEN_W, x, j * D_BLOCK_H, accW * D_BLOCK_W, D_BLOCK_H);
678 accW = 0;
679 ++count;
680 }
681 }
682 if (accW != 0) {
683 int x = (_dirtyBlocksWidth - accW) * D_BLOCK_W;
684 _system->copyRectToScreen(scrBuf + x, SCREEN_W, x, j * D_BLOCK_H, accW * D_BLOCK_W, D_BLOCK_H);
685 ++count;
686 }
687 dbBuf += _dirtyBlocksWidth;
688 scrBuf += SCREEN_W * D_BLOCK_H;
689 }
690 if (count != 0) {
691 _system->updateScreen();
692 }
693 debug(9, "Display::update() - Dirtyblocks blit (%d)", count);
694 }
695 }
696
setupPanel()697 void Display::setupPanel() {
698 uint16 panelWidth, panelHeight;
699
700 uint32 dataSize;
701 char dataName[20];
702 sprintf(dataName, "PANEL.%s", _imageExt);
703 uint8 *data = _vm->resource()->loadFile(dataName, 0, &dataSize);
704
705 if (_vm->resource()->getPlatform() == Common::kPlatformAmiga) {
706 decodeIFF(data, dataSize, _panelBuf, PANEL_W, &panelWidth, &panelHeight, _pal.panel, 0, 32, 144);
707 } else {
708 WRITE_LE_UINT16(data + 14, PANEL_H - 10);
709 decodePCX(data, dataSize, _panelBuf + PANEL_W * 10, PANEL_W, &panelWidth, &panelHeight, _pal.panel, 144, 256);
710 }
711 palSetPanel();
712
713 delete[] data;
714 }
715
setupNewRoom(const char * name,uint16 room)716 void Display::setupNewRoom(const char *name, uint16 room) {
717 dynalumInit(name, room);
718
719 uint32 dataSize;
720 char dataName[20];
721 sprintf(dataName, "%s.%s", name, _imageExt);
722 uint8 *data = _vm->resource()->loadFile(dataName, 0, &dataSize);
723
724 if (_vm->resource()->getPlatform() == Common::kPlatformAmiga) {
725 decodeIFF(data, dataSize, _backdropBuf, BACKDROP_W, &_bdWidth, &_bdHeight, _pal.room, 0, 32);
726 if (_bdHeight < BACKDROP_H) {
727 memset(_backdropBuf + _bdHeight * BACKDROP_W, 0, (BACKDROP_H - _bdHeight) * BACKDROP_W);
728 }
729 } else {
730 int n = getNumColorsForRoom(room);
731 if (n != 256) {
732 n = 144;
733 }
734 decodePCX(data, dataSize, _backdropBuf, BACKDROP_W, &_bdWidth, &_bdHeight, _pal.room, 0, n);
735 }
736
737 delete[] data;
738 palCustomColors(room);
739 forceFullRefresh();
740 }
741
drawBobSprite(const uint8 * data,uint16 x,uint16 y,uint16 w,uint16 h,uint16 pitch,bool xflip)742 void Display::drawBobSprite(const uint8 *data, uint16 x, uint16 y, uint16 w, uint16 h, uint16 pitch, bool xflip) {
743 blit(_screenBuf, SCREEN_W, x, y, data, pitch, w, h, xflip, true);
744 setDirtyBlock(xflip ? (x - w + 1) : x, y, w, h);
745 }
746
drawBobPasteDown(const uint8 * data,uint16 x,uint16 y,uint16 w,uint16 h)747 void Display::drawBobPasteDown(const uint8 *data, uint16 x, uint16 y, uint16 w, uint16 h) {
748 blit(_backdropBuf, BACKDROP_W, x, y, data, w, w, h, false, true);
749 }
750
drawInventoryItem(const uint8 * data,uint16 x,uint16 y,uint16 w,uint16 h)751 void Display::drawInventoryItem(const uint8 *data, uint16 x, uint16 y, uint16 w, uint16 h) {
752 if (data != NULL) {
753 if (_vm->resource()->getPlatform() == Common::kPlatformAmiga) {
754 uint8 *dst = _panelBuf + y * PANEL_W + x;
755 for (int j = 0; j < h; ++j) {
756 for (int i = 0; i < w; ++i) {
757 dst[i] = 144 + *data++;
758 }
759 dst += PANEL_W;
760 }
761 } else {
762 blit(_panelBuf, PANEL_W, x, y, data, w, w, h, false, false);
763 }
764 } else {
765 fill(_panelBuf, PANEL_W, x, y, w, h, getInkColor(INK_BG_PANEL));
766 }
767 setDirtyBlock(x, 150 + y, w, h);
768 }
769
blit(uint8 * dstBuf,uint16 dstPitch,uint16 x,uint16 y,const uint8 * srcBuf,uint16 srcPitch,uint16 w,uint16 h,bool xflip,bool masked)770 void Display::blit(uint8 *dstBuf, uint16 dstPitch, uint16 x, uint16 y, const uint8 *srcBuf, uint16 srcPitch, uint16 w, uint16 h, bool xflip, bool masked) {
771 assert(w <= dstPitch);
772 dstBuf += dstPitch * y + x;
773
774 if (!masked) { // Unmasked always unflipped
775 while (h--) {
776 memcpy(dstBuf, srcBuf, w);
777 srcBuf += srcPitch;
778 dstBuf += dstPitch;
779 }
780 } else if (!xflip) { // Masked bitmap unflipped
781 while (h--) {
782 for (int i = 0; i < w; ++i) {
783 uint8 b = *(srcBuf + i);
784 if (b != 0) {
785 *(dstBuf + i) = b;
786 }
787 }
788 srcBuf += srcPitch;
789 dstBuf += dstPitch;
790 }
791 } else { // Masked bitmap flipped
792 while (h--) {
793 for (int i = 0; i < w; ++i) {
794 uint8 b = *(srcBuf + i);
795 if (b != 0) {
796 *(dstBuf - i) = b;
797 }
798 }
799 srcBuf += srcPitch;
800 dstBuf += dstPitch;
801 }
802 }
803 }
804
fill(uint8 * dstBuf,uint16 dstPitch,uint16 x,uint16 y,uint16 w,uint16 h,uint8 color)805 void Display::fill(uint8 *dstBuf, uint16 dstPitch, uint16 x, uint16 y, uint16 w, uint16 h, uint8 color) {
806 assert(w <= dstPitch);
807 dstBuf += dstPitch * y + x;
808 while (h--) {
809 memset(dstBuf, color, w);
810 dstBuf += dstPitch;
811 }
812 }
813
decodePCX(const uint8 * src,uint32 srcSize,uint8 * dst,uint16 dstPitch,uint16 * w,uint16 * h,uint8 * pal,uint16 palStart,uint16 palEnd)814 void Display::decodePCX(const uint8 *src, uint32 srcSize, uint8 *dst, uint16 dstPitch, uint16 *w, uint16 *h, uint8 *pal, uint16 palStart, uint16 palEnd) {
815 Common::MemoryReadStream str(src, srcSize);
816
817 Image::PCXDecoder pcx;
818 if (!pcx.loadStream(str))
819 error("Error while reading PCX image");
820
821 const ::Graphics::Surface *pcxSurface = pcx.getSurface();
822 if (pcxSurface->format.bytesPerPixel != 1)
823 error("Invalid bytes per pixel in PCX surface (%d)", pcxSurface->format.bytesPerPixel);
824 *w = pcxSurface->w;
825 *h = pcxSurface->h;
826
827 assert(palStart <= palEnd && palEnd <= 256);
828 memcpy(pal, pcx.getPalette() + palStart * 3, (palEnd - palStart) * 3);
829 for (uint16 y = 0; y < pcxSurface->h; y++)
830 memcpy(dst + y * dstPitch, pcxSurface->getBasePtr(0, y), pcxSurface->w);
831 }
832
decodeIFF(const uint8 * src,uint32 srcSize,uint8 * dst,uint16 dstPitch,uint16 * w,uint16 * h,uint8 * pal,uint16 palStart,uint16 palEnd,uint8 colorBase)833 void Display::decodeIFF(const uint8 *src, uint32 srcSize, uint8 *dst, uint16 dstPitch, uint16 *w, uint16 *h, uint8 *pal, uint16 palStart, uint16 palEnd, uint8 colorBase) {
834 Common::MemoryReadStream str(src, srcSize);
835
836 Image::IFFDecoder iff;
837 if (!iff.loadStream(str))
838 error("Error while reading IFF image");
839
840 const ::Graphics::Surface *iffSurface = iff.getSurface();
841 *w = iffSurface->w;
842 *h = iffSurface->h;
843
844 assert(palStart <= palEnd && palEnd <= 256);
845 memcpy(pal, iff.getPalette() + palStart * 3, (palEnd - palStart) * 3);
846 for (uint16 y = 0; y < iffSurface->h; y++)
847 for(uint16 x = 0; x < iffSurface->w; x++)
848 dst[(y * dstPitch) + x] = *(const byte *)iffSurface->getBasePtr(x, y) + colorBase;
849 }
850
horizontalScrollUpdate(int16 xCamera)851 void Display::horizontalScrollUpdate(int16 xCamera) {
852 debug(9, "Display::horizontalScrollUpdate(%d)", xCamera);
853 if (_bdWidth <= 320) {
854 horizontalScroll(0);
855 } else {
856 if (xCamera > 160 && xCamera < 480) {
857 horizontalScroll(xCamera - 160);
858 } else if (xCamera >= 480) {
859 horizontalScroll(320);
860 } else {
861 horizontalScroll(0);
862 }
863 }
864 }
865
horizontalScroll(int16 scroll)866 void Display::horizontalScroll(int16 scroll) {
867 if (_horizontalScroll != scroll) {
868 _fullRefresh = 2;
869 _horizontalScroll = scroll;
870 }
871 }
872
setDirtyBlock(uint16 x,uint16 y,uint16 w,uint16 h)873 void Display::setDirtyBlock(uint16 x, uint16 y, uint16 w, uint16 h) {
874 if (_fullRefresh < 2) {
875 if (x >= SCREEN_W) {
876 return;
877 } else if (x + w > SCREEN_W) {
878 w = SCREEN_W - x;
879 }
880 if (y >= SCREEN_H) {
881 return;
882 } else if (y + h > SCREEN_H) {
883 h = SCREEN_H - y;
884 }
885 uint16 ex = (x + w - 1) / D_BLOCK_W;
886 uint16 ey = (y + h - 1) / D_BLOCK_H;
887 x /= D_BLOCK_W;
888 y /= D_BLOCK_H;
889 uint8 *p = _dirtyBlocks + _dirtyBlocksWidth * y + x;
890 for (; y <= ey; ++y) {
891 memset(p, 2, ex - x + 1);
892 p += _dirtyBlocksWidth;
893 }
894 }
895 }
896
setMouseCursor(uint8 * buf,uint16 w,uint16 h)897 void Display::setMouseCursor(uint8 *buf, uint16 w, uint16 h) {
898 CursorMan.replaceCursor(buf, w, h, 1, 1, 0);
899 }
900
showMouseCursor(bool show)901 void Display::showMouseCursor(bool show) {
902 CursorMan.showMouse(show);
903 }
904
initFont()905 void Display::initFont() {
906 switch (_vm->resource()->getLanguage()) {
907 case Common::HE_ISR:
908 _font = _fontHebrew;
909 break;
910 case Common::RU_RUS:
911 _font = _fontRussian;
912 break;
913 case Common::GR_GRE:
914 _font = _fontGreek;
915 break;
916 default:
917 _font = _fontRegular;
918 break;
919 }
920 // calculate font justification sizes
921 for (int i = 0; i < 256; ++i) {
922 _charWidth[i] = 0;
923 for (int y = 0; y < 8; ++y) {
924 uint8 c = _font[i * 8 + y];
925 for (int x = 0; x < 8; ++x) {
926 if ((c & (0x80 >> x)) && (x > _charWidth[i])) {
927 _charWidth[i] = x;
928 }
929 }
930 }
931 _charWidth[i] += 2;
932 }
933 _charWidth[0x20] = 4;
934 --_charWidth[0x5E];
935 }
936
setText(uint16 x,uint16 y,const char * text,bool outlined)937 void Display::setText(uint16 x, uint16 y, const char *text, bool outlined) {
938 if (y < GAME_SCREEN_HEIGHT) {
939 if (x == 0) x = 1;
940 if (y == 0) y = 1;
941 TextSlot *pts = &_texts[y];
942 pts->x = x;
943 pts->color = _curTextColor;
944 pts->outlined = outlined;
945 pts->text = text;
946 }
947 }
948
setTextCentered(uint16 y,const char * text,bool outlined)949 void Display::setTextCentered(uint16 y, const char *text, bool outlined) {
950 int len = strlen(text);
951 int16 x;
952 while ((x = (GAME_SCREEN_WIDTH - textWidth(text, len)) / 2) <= 0) {
953 ++text;
954 len -= 2;
955 }
956 assert(y < GAME_SCREEN_HEIGHT);
957 TextSlot *pts = &_texts[y];
958 pts->x = x;
959 pts->color = _curTextColor;
960 pts->outlined = outlined;
961 pts->text = Common::String(text, len);
962 }
963
drawTexts()964 void Display::drawTexts() {
965 for (int y = GAME_SCREEN_HEIGHT - 1; y > 0; --y) {
966 const TextSlot *pts = &_texts[y];
967 if (!pts->text.empty()) {
968 drawText(pts->x, y, pts->color, pts->text.c_str(), pts->outlined);
969 }
970 }
971 }
972
clearTexts(uint16 y1,uint16 y2)973 void Display::clearTexts(uint16 y1, uint16 y2) {
974 assert(y1 <= y2 && y2 < GAME_SCREEN_HEIGHT);
975 while (y1 <= y2) {
976 _texts[y1].text.clear();
977 ++y1;
978 }
979 }
980
setupInkColors()981 void Display::setupInkColors() {
982 memset(_inkColors, 0, sizeof(_inkColors));
983 if (_vm->resource()->getPlatform() == Common::kPlatformAmiga) {
984 _inkColors[INK_BG_PANEL] = 144 + 2;
985 _inkColors[INK_JOURNAL] = 144 + 16;
986 _inkColors[INK_PINNACLE_ROOM] = 144 + 14;
987 _inkColors[INK_CMD_SELECT] = 144 + 17;
988 _inkColors[INK_CMD_NORMAL] = 144 + 1;
989 _inkColors[INK_TALK_NORMAL] = 144 + 1;
990 _inkColors[INK_JOE] = 144 + 17;
991 _inkColors[INK_OUTLINED_TEXT] = 0;
992 } else {
993 _inkColors[INK_BG_PANEL] = 226;
994 _inkColors[INK_JOURNAL] = 248;
995 _inkColors[INK_PINNACLE_ROOM] = 243;
996 _inkColors[INK_CMD_SELECT] = 255;
997 _inkColors[INK_CMD_NORMAL] = 225;
998 _inkColors[INK_TALK_NORMAL] = 7;
999 _inkColors[INK_JOE] = 14;
1000 _inkColors[INK_OUTLINED_TEXT] = 16;
1001 }
1002 }
1003
setFocusRect(const Common::Rect & rect)1004 void Display::setFocusRect(const Common::Rect& rect) {
1005 _system->setFocusRectangle(rect);
1006 }
1007
textCenterX(const char * text) const1008 int Display::textCenterX(const char *text) const {
1009 return (GAME_SCREEN_WIDTH - textWidth(text)) / 2;
1010 }
1011
textWidth(const char * text) const1012 uint16 Display::textWidth(const char *text) const {
1013 return textWidth(text, strlen(text));
1014 }
1015
textWidth(const char * text,uint16 len) const1016 uint16 Display::textWidth(const char *text, uint16 len) const {
1017 assert(len <= strlen(text));
1018 uint16 width = 0;
1019 for (uint16 i = 0; i < len; ++i) {
1020 width += _charWidth[ (uint8)text[i] ];
1021 }
1022 return width;
1023 }
1024
drawChar(uint16 x,uint16 y,uint8 color,const uint8 * chr)1025 void Display::drawChar(uint16 x, uint16 y, uint8 color, const uint8 *chr) {
1026 uint8 *dstBuf = _screenBuf + SCREEN_W * y + x;
1027 for (int j = 0; j < 8; ++j) {
1028 uint8 *p = dstBuf;
1029 uint8 c = *chr++;
1030 if (c != 0) {
1031 for (int i = 0; i < 8; ++i) {
1032 if (c & 0x80) {
1033 *p = color;
1034 }
1035 ++p;
1036 c <<= 1;
1037 }
1038 }
1039 dstBuf += SCREEN_W;
1040 }
1041 }
1042
drawText(uint16 x,uint16 y,uint8 color,const char * text,bool outlined)1043 void Display::drawText(uint16 x, uint16 y, uint8 color, const char *text, bool outlined) {
1044 static const int dx[] = { -1, 0, 1, 1, 1, 0, -1, -1 };
1045 static const int dy[] = { -1, -1, -1, 0, 1, 1, 1, 0 };
1046 const uint8 *str = (const uint8 *)text;
1047 uint16 xs = x;
1048 while (*str && x < SCREEN_W) {
1049 const uint8 ch = *str++;
1050 const uint8 *ftch = _font + ch * 8;
1051 if (outlined) {
1052 for (int i = 0; i < 8; ++i) {
1053 drawChar(x + dx[i], y + dy[i], getInkColor(INK_OUTLINED_TEXT), ftch);
1054 }
1055 }
1056 drawChar(x, y, color, ftch);
1057 x += _charWidth[ch];
1058 }
1059 setDirtyBlock(xs - 1, y - 1, x - xs + 2, 8 + 2);
1060 }
1061
drawBox(int16 x1,int16 y1,int16 x2,int16 y2,uint8 col)1062 void Display::drawBox(int16 x1, int16 y1, int16 x2, int16 y2, uint8 col) {
1063 int i;
1064 for (i = y1; i <= y2; ++i) {
1065 _screenBuf[i * SCREEN_W + x1] = _screenBuf[i * SCREEN_W + x2] = col;
1066 }
1067 setDirtyBlock(x1, y1, 1, y2 - y1);
1068 setDirtyBlock(x2, y1, 1, y2 - y1);
1069 for (i = x1; i <= x2; ++i) {
1070 _screenBuf[y1 * SCREEN_W + i] = _screenBuf[y2 * SCREEN_W + i] = col;
1071 }
1072 setDirtyBlock(x1, y1, x2 - x1, 1);
1073 setDirtyBlock(x1, y2, x2 - x1, 1);
1074 }
1075
shake(bool reset)1076 void Display::shake(bool reset) {
1077 _system->setShakePos(0, reset ? 0 : 3);
1078 }
1079
blankScreen()1080 void Display::blankScreen() {
1081 static int current = 0;
1082 typedef void (Display::*BlankerEffect)();
1083 static const BlankerEffect effects[] = {
1084 &Display::blankScreenEffect1,
1085 &Display::blankScreenEffect2,
1086 &Display::blankScreenEffect3
1087 };
1088 (this->*effects[current])();
1089 current = (current + 1) % ARRAYSIZE(effects);
1090 forceFullRefresh();
1091 }
1092
blankScreenEffect1()1093 void Display::blankScreenEffect1() {
1094 uint8 buf[32 * 32];
1095 while (_vm->input()->idleTime() >= Input::DELAY_SCREEN_BLANKER) {
1096 for (int i = 0; i < 2; ++i) {
1097 int x = _rnd.getRandomNumber(SCREEN_W - 32 - 2) + 1;
1098 int y = _rnd.getRandomNumber(SCREEN_H - 32 - 2) + 1;
1099 const uint8 *p = _screenBuf + SCREEN_W * y + x;
1100 for (int j = 0; j < 32; ++j) {
1101 memcpy(buf + j * 32, p, 32);
1102 p += SCREEN_W;
1103 }
1104 if (_rnd.getRandomNumber(1)) {
1105 ++x;
1106 } else {
1107 --x;
1108 }
1109 if (_rnd.getRandomNumber(1)) {
1110 ++y;
1111 } else {
1112 --y;
1113 }
1114 _system->copyRectToScreen(buf, 32, x, y, 32, 32);
1115 _vm->input()->delay(10);
1116 }
1117 }
1118 }
1119
blankScreenEffect2()1120 void Display::blankScreenEffect2() {
1121 while (_vm->input()->idleTime() >= Input::DELAY_SCREEN_BLANKER) {
1122 int x = _rnd.getRandomNumber(SCREEN_W - 2);
1123 int y = _rnd.getRandomNumber(SCREEN_H - 2);
1124 uint8 *p = _screenBuf + y * SCREEN_W + x;
1125 uint8 c = 0;
1126 switch (_rnd.getRandomNumber(3)) {
1127 case 0:
1128 c = *p;
1129 break;
1130 case 1:
1131 c = *(p + 1);
1132 break;
1133 case 2:
1134 c = *(p + SCREEN_W);
1135 break;
1136 case 3:
1137 c = *(p + SCREEN_W + 1);
1138 break;
1139 }
1140 memset(p, c, 2);
1141 memset(p + SCREEN_W, c, 2);
1142 _system->copyRectToScreen(p, SCREEN_W, x, y, 2, 2);
1143 _vm->input()->delay(10);
1144 }
1145 }
1146
blankScreenEffect3()1147 void Display::blankScreenEffect3() {
1148 uint32 i = 0;
1149 while (_vm->input()->idleTime() >= Input::DELAY_SCREEN_BLANKER) {
1150 if (i > 4000000) {
1151 memset(_screenBuf, 0, SCREEN_W * SCREEN_H);
1152 _system->copyRectToScreen(_screenBuf, SCREEN_W, 0, 0, SCREEN_W, SCREEN_H);
1153 } else {
1154 int x = _rnd.getRandomNumber(SCREEN_W - 2);
1155 int y = _rnd.getRandomNumber(SCREEN_H - 2);
1156 uint8 *p = _screenBuf + SCREEN_W * y + x;
1157 int sum = *p + *(p + 1) + *(p + SCREEN_W) + *(p + SCREEN_W + 1);
1158 uint8 c = (uint8)(sum / 4);
1159 memset(p, c, 2);
1160 memset(p + SCREEN_W, c, 2);
1161 ++i;
1162 _system->copyRectToScreen(p, SCREEN_W, x, y, 2, 2);
1163 }
1164 _vm->input()->delay(10);
1165 }
1166 }
1167
1168 const uint8 Display::_fontRegular[] = {
1169 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1170 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1171 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1172 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1173 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1174 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1175 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1176 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1177 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1178 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1179 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1180 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1181 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1182 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1183 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1184 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00,
1186 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00,
1187 0x30, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00, 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00,
1188 0x38, 0x6C, 0x68, 0x36, 0xDC, 0xCC, 0x76, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
1189 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0xC0, 0x60, 0x30, 0x30, 0x30, 0x60, 0xC0, 0x00,
1190 0x00, 0x6C, 0x38, 0xFE, 0x38, 0x6C, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0x00,
1191 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00,
1192 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x00,
1193 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x30, 0x70, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x00,
1194 0x78, 0xCC, 0x0C, 0x78, 0xC0, 0xC0, 0xFC, 0x00, 0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00,
1195 0x1C, 0x3C, 0x6C, 0xCC, 0xFC, 0x0C, 0x0C, 0x00, 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00,
1196 0x78, 0xCC, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00, 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00,
1197 0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00, 0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0xCC, 0x78, 0x00,
1198 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0xC0,
1199 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00,
1200 0xC0, 0x60, 0x30, 0x18, 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, 0x30, 0x00,
1201 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x38, 0x7C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1202 0xF8, 0xCC, 0xCC, 0xF8, 0xCC, 0xCC, 0xF8, 0x00, 0x78, 0xCC, 0xC0, 0xC0, 0xC0, 0xCC, 0x78, 0x00,
1203 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF8, 0x00, 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xFC, 0x00,
1204 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, 0xC0, 0xDC, 0xCC, 0xCC, 0x7C, 0x00,
1205 0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00,
1206 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, 0xC6, 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC6, 0x00,
1207 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0x00, 0x82, 0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
1208 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1209 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x0C,
1210 0xF8, 0xCC, 0xCC, 0xF8, 0xD8, 0xCC, 0xCC, 0x00, 0x78, 0xCC, 0xC0, 0x78, 0x0C, 0xCC, 0x78, 0x00,
1211 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00,
1212 0xC6, 0xC6, 0x6C, 0x6C, 0x38, 0x38, 0x10, 0x00, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00,
1213 0xC6, 0x6C, 0x38, 0x10, 0x38, 0x6C, 0xC6, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x00,
1214 0xFC, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x00, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x00,
1215 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0x00,
1216 0xE8, 0x4D, 0x4A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
1217 0xC0, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x7C, 0x00,
1218 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xF8, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00,
1219 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
1220 0x38, 0x6C, 0x60, 0xF8, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, 0x0C, 0x78,
1221 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
1222 0x0C, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0x78, 0xC0, 0xC0, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0x00,
1223 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xCC, 0xEE, 0xD6, 0xC6, 0xC6, 0x00,
1224 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1225 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, 0x0C, 0x0C,
1226 0x00, 0x00, 0xF8, 0xCC, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x7C, 0xC0, 0x78, 0x0C, 0x78, 0x00,
1227 0x30, 0x30, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00,
1228 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00, 0x00, 0x00, 0xC6, 0xD6, 0xD6, 0x6C, 0x6C, 0x00,
1229 0x00, 0x00, 0xCC, 0x78, 0x30, 0x78, 0xCC, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0xE0,
1230 0x00, 0x00, 0xFC, 0x18, 0x30, 0x60, 0xFC, 0x00, 0x38, 0x60, 0x60, 0xC0, 0x60, 0x60, 0x38, 0x00,
1231 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0xE0, 0x30, 0x30, 0x18, 0x30, 0x30, 0xE0, 0x00,
1232 0x38, 0x44, 0xBA, 0xAA, 0xBA, 0x44, 0x38, 0x00, 0x00, 0x98, 0x30, 0x60, 0xC8, 0x98, 0x30, 0x00,
1233 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18, 0x00, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00,
1234 0x0C, 0x18, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x18, 0x66, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00,
1235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00,
1236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18,
1237 0x18, 0x66, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x66, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
1238 0x30, 0x18, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x00, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00,
1239 0x18, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00,
1240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1241 0x18, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00,
1243 0x00, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x30, 0x18, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00,
1244 0x18, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x30, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00,
1245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1247 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1249 0x18, 0x30, 0x78, 0x0C, 0x7C, 0xCC, 0x7C, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00,
1250 0x18, 0x30, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00, 0x18, 0x30, 0x00, 0xCC, 0xCC, 0xCC, 0x7C, 0x00,
1251 0x71, 0x8E, 0x00, 0x7C, 0x66, 0x66, 0x66, 0x00, 0x71, 0xCE, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00,
1252 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x3C, 0x60, 0x3C, 0x66, 0x3C, 0x06, 0x3C, 0x00,
1253 0x18, 0x00, 0x18, 0x30, 0x60, 0x66, 0x3C, 0x00, 0x3F, 0x40, 0x4E, 0x58, 0x4E, 0x40, 0x3F, 0x00,
1254 0x1C, 0xA4, 0xC4, 0xBC, 0x80, 0xFE, 0x00, 0x00, 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00,
1255 0x3E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
1256 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1257 0x78, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0xFC, 0x00,
1258 0xF0, 0x18, 0x30, 0x60, 0xF8, 0x00, 0x00, 0x00, 0xF0, 0x18, 0x30, 0x18, 0xF0, 0x00, 0x00, 0x00,
1259 0x30, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0xC0,
1260 0x3E, 0x7A, 0x7A, 0x3A, 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x60, 0xE0, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
1262 0x38, 0x44, 0x44, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00,
1263 0x40, 0xC6, 0x4C, 0x58, 0x32, 0x66, 0xCF, 0x02, 0x40, 0xC6, 0x4C, 0x58, 0x3E, 0x62, 0xC4, 0x0E,
1264 0xC0, 0x23, 0x66, 0x2C, 0xD9, 0x33, 0x67, 0x01, 0x18, 0x00, 0x18, 0x30, 0x60, 0x66, 0x3C, 0x00,
1265 0x60, 0x30, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x0C, 0x18, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1266 0x38, 0xC6, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x71, 0x8E, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1267 0x6C, 0x00, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x38, 0x44, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1268 0x1F, 0x3C, 0x3C, 0x6F, 0x7C, 0xCC, 0xCF, 0x00, 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18,
1269 0x60, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x18, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00,
1270 0x30, 0xCC, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0xCC, 0x00, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00,
1271 0x60, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0x18, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00,
1272 0x30, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0xCC, 0x00, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00,
1273 0x78, 0x6C, 0x66, 0xF6, 0x66, 0x6C, 0x78, 0x00, 0x71, 0xCE, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00,
1274 0x30, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00,
1275 0x18, 0x66, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00,
1276 0xC3, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, 0x00,
1277 0x3F, 0x66, 0x6E, 0x7E, 0x76, 0x66, 0xFC, 0x00, 0x30, 0x18, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00,
1278 0x0C, 0x18, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x18, 0x24, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00,
1279 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x06, 0x08, 0xC3, 0x66, 0x3C, 0x18, 0x18, 0x00,
1280 0x60, 0x60, 0x7E, 0x63, 0x7E, 0x60, 0x60, 0x00, 0x3C, 0x66, 0x66, 0x6C, 0x66, 0x66, 0x6C, 0x60,
1281 0x30, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00,
1282 0x18, 0x66, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x71, 0x8E, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00,
1283 0x66, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x18, 0x24, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00,
1284 0x00, 0x00, 0x7E, 0x1B, 0x7F, 0xD8, 0x77, 0x00, 0x00, 0x00, 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x18,
1285 0x30, 0x18, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x0C, 0x18, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
1286 0x18, 0x66, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x66, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
1287 0x30, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00,
1288 0x18, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00,
1289 0x60, 0xFC, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x00, 0x7C, 0x66, 0x66, 0x66, 0x00,
1290 0x30, 0x18, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00,
1291 0x18, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00,
1292 0x00, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x00,
1293 0x00, 0x02, 0x7C, 0xCE, 0xD6, 0xE6, 0x7C, 0x80, 0x30, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00,
1294 0x0C, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x18, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00,
1295 0x00, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x30,
1296 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x00, 0x66, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x30
1297 };
1298
1299 const uint8 Display::_fontGreek[] = {
1300 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1301 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1302 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1303 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1304 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1305 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1306 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1307 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1308 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1309 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1310 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1311 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1312 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1313 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1314 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1315 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1316 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00,
1317 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00,
1318 0x30, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00, 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00,
1319 0x38, 0x6C, 0x68, 0x36, 0xDC, 0xCC, 0x76, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
1320 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0xC0, 0x60, 0x30, 0x30, 0x30, 0x60, 0xC0, 0x00,
1321 0x00, 0x6C, 0x38, 0xFE, 0x38, 0x6C, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0x00,
1322 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00,
1323 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x00,
1324 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x30, 0x70, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x00,
1325 0x78, 0xCC, 0x0C, 0x78, 0xC0, 0xC0, 0xFC, 0x00, 0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00,
1326 0x1C, 0x3C, 0x6C, 0xCC, 0xFC, 0x0C, 0x0C, 0x00, 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00,
1327 0x78, 0xCC, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00, 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00,
1328 0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00, 0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0xCC, 0x78, 0x00,
1329 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0xC0,
1330 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00,
1331 0xC0, 0x60, 0x30, 0x18, 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, 0x30, 0x00,
1332 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x38, 0x7C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1333 0xF8, 0xCC, 0xCC, 0xF8, 0xCC, 0xCC, 0xF8, 0x00, 0x78, 0xCC, 0xC0, 0xC0, 0xC0, 0xCC, 0x78, 0x00,
1334 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF8, 0x00, 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xFC, 0x00,
1335 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, 0xC0, 0xDC, 0xCC, 0xCC, 0x7C, 0x00,
1336 0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00,
1337 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, 0xC6, 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC6, 0x00,
1338 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0x00, 0x82, 0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
1339 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1340 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x0C,
1341 0xF8, 0xCC, 0xCC, 0xF8, 0xD8, 0xCC, 0xCC, 0x00, 0x78, 0xCC, 0xC0, 0x78, 0x0C, 0xCC, 0x78, 0x00,
1342 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00,
1343 0xC6, 0xC6, 0x6C, 0x6C, 0x38, 0x38, 0x10, 0x00, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00,
1344 0xC6, 0x6C, 0x38, 0x10, 0x38, 0x6C, 0xC6, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x00,
1345 0xFC, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x00, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x00,
1346 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0x00,
1347 0xE8, 0x4D, 0x4A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
1348 0xC0, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x7C, 0x00,
1349 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xF8, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00,
1350 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
1351 0x38, 0x6C, 0x60, 0xF8, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, 0x0C, 0x78,
1352 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
1353 0x0C, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0x78, 0xC0, 0xC0, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0x00,
1354 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xCC, 0xEE, 0xD6, 0xC6, 0xC6, 0x00,
1355 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1356 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, 0x0C, 0x0C,
1357 0x00, 0x00, 0xF8, 0xCC, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x7C, 0xC0, 0x78, 0x0C, 0x78, 0x00,
1358 0x30, 0x30, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00,
1359 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00, 0x00, 0x00, 0xC6, 0xD6, 0xD6, 0x6C, 0x6C, 0x00,
1360 0x00, 0x00, 0xCC, 0x78, 0x30, 0x78, 0xCC, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0xE0,
1361 0x00, 0x00, 0xFC, 0x18, 0x30, 0x60, 0xFC, 0x00, 0x38, 0x60, 0x60, 0xC0, 0x60, 0x60, 0x38, 0x00,
1362 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0xE0, 0x30, 0x30, 0x18, 0x30, 0x30, 0xE0, 0x00,
1363 0x38, 0x44, 0xBA, 0xAA, 0xBA, 0x44, 0x38, 0x00, 0x00, 0x98, 0x30, 0x60, 0xC8, 0x98, 0x30, 0x00,
1364 0x38, 0x64, 0xF0, 0x60, 0xF0, 0x64, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1365 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1366 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1367 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1368 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1369 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1370 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1371 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1372 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
1373 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1374 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1375 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1376 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1377 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1378 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1379 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1380 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1381 0x9C, 0xBE, 0x63, 0x63, 0x7F, 0x63, 0x63, 0x00, 0x38, 0x6C, 0x60, 0xF0, 0x60, 0x60, 0xFC, 0x00,
1382 0x42, 0x3C, 0x66, 0x3C, 0x42, 0x00, 0x00, 0x00, 0xC3, 0x66, 0x3C, 0x18, 0x3C, 0x18, 0x18, 0x00,
1383 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x3C, 0x60, 0x3C, 0x66, 0x3C, 0x06, 0x3C, 0x00,
1384 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3F, 0x40, 0x4E, 0x58, 0x4E, 0x40, 0x3F, 0x00,
1385 0x1C, 0xA4, 0xC4, 0xBC, 0x80, 0xFE, 0x00, 0x00, 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00,
1386 0x3E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
1387 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1388 0x78, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0xFC, 0x00,
1389 0xF0, 0x18, 0x30, 0x60, 0xF8, 0x00, 0x00, 0x00, 0xF0, 0x18, 0x30, 0x18, 0xF0, 0x00, 0x00, 0x00,
1390 0x30, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0xC0,
1391 0x3E, 0x7A, 0x7A, 0x3A, 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1392 0xBF, 0xB0, 0x30, 0x3C, 0x30, 0x30, 0x3F, 0x00, 0xB3, 0xB3, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00,
1393 0xBC, 0x98, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00,
1394 0x9E, 0xB3, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x00, 0x40, 0xC6, 0x4C, 0x58, 0x3E, 0x62, 0xC4, 0x0E,
1395 0xB3, 0xB3, 0x33, 0x1E, 0x0C, 0x0C, 0x0C, 0x00, 0x9E, 0xB3, 0x33, 0x33, 0x1E, 0x00, 0x3F, 0x00,
1396 0xB4, 0x00, 0x30, 0x30, 0x30, 0x30, 0x18, 0x00, 0x38, 0x7C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1397 0xF8, 0xCC, 0xCC, 0xF8, 0xCC, 0xCC, 0xF8, 0x00, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
1398 0x38, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0x00, 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xFC, 0x00,
1399 0xFC, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x00, 0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00,
1400 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0x78, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00,
1401 0xC6, 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC6, 0x00, 0x38, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00,
1402 0x82, 0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00, 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00,
1403 0xFC, 0xFC, 0x00, 0x78, 0x00, 0xFC, 0xFC, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1404 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0xC0, 0x00,
1405 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0xFC, 0x60, 0x30, 0x18, 0x30, 0x60, 0xFC, 0x00,
1406 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x00,
1407 0x10, 0x7C, 0xD6, 0xD6, 0xD6, 0x7C, 0x10, 0x00, 0xC6, 0x6C, 0x38, 0x10, 0x38, 0x6C, 0xC6, 0x00,
1408 0xC6, 0xD6, 0xD6, 0xD6, 0x7C, 0x10, 0x10, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0xFC, 0x00,
1409 0xBD, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0xB4, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x00,
1410 0x30, 0x00, 0x7A, 0xCC, 0xCC, 0xCC, 0x7A, 0x00, 0x30, 0x00, 0x78, 0xCC, 0x60, 0xCC, 0x78, 0x00,
1411 0x30, 0x00, 0xB8, 0xEC, 0xCC, 0xCC, 0xCC, 0x0C, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x00,
1412 0xB4, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x7A, 0xCC, 0xCC, 0xCC, 0x7A, 0x00,
1413 0x70, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8, 0xF0, 0xC0, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30,
1414 0xF8, 0x60, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x78, 0xCC, 0x60, 0xCC, 0x78, 0x00,
1415 0xF8, 0x18, 0x30, 0x60, 0x60, 0x30, 0x18, 0x30, 0x00, 0x00, 0xB8, 0xEC, 0xCC, 0xCC, 0xCC, 0x0C,
1416 0x70, 0xD8, 0xD8, 0xF8, 0xD8, 0xD8, 0x70, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x00,
1417 0x00, 0x00, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0x00, 0xF0, 0x18, 0x3C, 0x6C, 0xCC, 0xCC, 0xCC, 0x00,
1418 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xFA, 0xC0, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00,
1419 0xF8, 0x18, 0x30, 0x18, 0x30, 0x18, 0x08, 0x10, 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1420 0x00, 0x00, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xF8, 0xC0,
1421 0x00, 0x00, 0x7C, 0xE0, 0x78, 0x1C, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1422 0x00, 0x00, 0xFC, 0x30, 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1423 0x00, 0x00, 0x4C, 0xD6, 0xD6, 0xD6, 0x7C, 0x10, 0x00, 0x00, 0xCC, 0xCC, 0x30, 0x30, 0xCC, 0xCC,
1424 0x00, 0x00, 0x54, 0xD6, 0xD6, 0xD6, 0x7C, 0x10, 0x00, 0x00, 0x6C, 0xC6, 0xD6, 0xFE, 0x6C, 0x00,
1425 0x90, 0x00, 0x60, 0x60, 0x60, 0x60, 0x30, 0x00, 0x48, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1426 0x30, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x30, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1427 0x18, 0x00, 0x6C, 0xC6, 0xD6, 0xFE, 0x6C, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00
1428 };
1429
1430 const uint8 Display::_fontHebrew[] = {
1431 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1432 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1433 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1434 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1435 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1436 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1437 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1438 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1439 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1440 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1441 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1442 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1443 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1444 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1445 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1446 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00, 0xF8, 0xB0, 0xB0, 0x80, 0xB0, 0xB0, 0xC0, 0x00,
1447 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00,
1448 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00,
1449 0x30, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00, 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00,
1450 0x38, 0x6C, 0x68, 0x36, 0xDC, 0xCC, 0x76, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
1451 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0xC0, 0x60, 0x30, 0x30, 0x30, 0x60, 0xC0, 0x00,
1452 0x00, 0x6C, 0x38, 0xFE, 0x38, 0x6C, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0x00,
1453 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00,
1454 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x00,
1455 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x30, 0x70, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x00,
1456 0x78, 0xCC, 0x0C, 0x78, 0xC0, 0xC0, 0xFC, 0x00, 0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00,
1457 0x1C, 0x3C, 0x6C, 0xCC, 0xFC, 0x0C, 0x0C, 0x00, 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00,
1458 0x78, 0xCC, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00, 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00,
1459 0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00, 0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0xCC, 0x78, 0x00,
1460 0x00, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0xC0,
1461 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00,
1462 0xC0, 0x60, 0x30, 0x18, 0x30, 0x60, 0xC0, 0x00, 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, 0x30, 0x00,
1463 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x38, 0x7C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1464 0xF8, 0xCC, 0xCC, 0xF8, 0xCC, 0xCC, 0xF8, 0x00, 0x78, 0xCC, 0xC0, 0xC0, 0xC0, 0xCC, 0x78, 0x00,
1465 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF8, 0x00, 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xFC, 0x00,
1466 0xFC, 0xC0, 0xC0, 0xF0, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, 0xC0, 0xDC, 0xCC, 0xCC, 0x7C, 0x00,
1467 0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00,
1468 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00, 0xC6, 0xCC, 0xD8, 0xF8, 0xD8, 0xCC, 0xC6, 0x00,
1469 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0x00, 0x82, 0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
1470 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1471 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0xC0, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x0C,
1472 0xF8, 0xCC, 0xCC, 0xF8, 0xD8, 0xCC, 0xCC, 0x00, 0x78, 0xCC, 0xC0, 0x78, 0x0C, 0xCC, 0x78, 0x00,
1473 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00,
1474 0xC6, 0xC6, 0x6C, 0x6C, 0x38, 0x38, 0x10, 0x00, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00,
1475 0xC6, 0x6C, 0x38, 0x10, 0x38, 0x6C, 0xC6, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x00,
1476 0xFC, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFC, 0x00, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x00,
1477 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0x00,
1478 0xE8, 0x4D, 0x4A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
1479 0xC0, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x7C, 0x00,
1480 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xF8, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00,
1481 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x7C, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
1482 0x38, 0x6C, 0x60, 0xF8, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, 0x0C, 0x78,
1483 0xC0, 0xC0, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
1484 0x0C, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0x78, 0xC0, 0xC0, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0x00,
1485 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xCC, 0xEE, 0xD6, 0xC6, 0xC6, 0x00,
1486 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
1487 0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xF8, 0xC0, 0xC0, 0x00, 0x00, 0x7C, 0xCC, 0xCC, 0x7C, 0x0C, 0x0C,
1488 0x00, 0x00, 0xF8, 0xCC, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x7C, 0xC0, 0x78, 0x0C, 0x78, 0x00,
1489 0x30, 0x30, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x00,
1490 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00, 0x00, 0x00, 0xC6, 0xD6, 0xD6, 0x6C, 0x6C, 0x00,
1491 0x00, 0x00, 0xCC, 0x78, 0x30, 0x78, 0xCC, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0xE0,
1492 0x00, 0x00, 0xFC, 0x18, 0x30, 0x60, 0xFC, 0x00, 0x38, 0x60, 0x60, 0xC0, 0x60, 0x60, 0x38, 0x00,
1493 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0xE0, 0x30, 0x30, 0x18, 0x30, 0x30, 0xE0, 0x00,
1494 0x38, 0x44, 0xBA, 0xAA, 0xBA, 0x44, 0x38, 0x00, 0x00, 0x98, 0x30, 0x60, 0xC8, 0x98, 0x30, 0x00,
1495 0xCC, 0x66, 0x76, 0xBC, 0x98, 0x8C, 0xE6, 0x00, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFE, 0x00,
1496 0x78, 0x18, 0x18, 0x18, 0x38, 0x78, 0xD8, 0x00, 0xFE, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
1497 0xFE, 0x06, 0x06, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
1498 0x7C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0xFE, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00,
1499 0xDC, 0x66, 0xE6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0xF0, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
1500 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xF8, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xF8, 0x00,
1501 0xC0, 0xFE, 0x06, 0x06, 0x0C, 0x18, 0x18, 0x00, 0xFE, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x00,
1502 0xFC, 0x76, 0x66, 0x66, 0x66, 0x66, 0x6E, 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1503 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00, 0xFE, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00,
1504 0xEE, 0x66, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00, 0xFE, 0xC6, 0xC6, 0xF6, 0x06, 0x06, 0x06, 0x06,
1505 0xFE, 0xC6, 0xC6, 0xFE, 0x06, 0x06, 0xFE, 0x00, 0xFE, 0x66, 0x6C, 0x78, 0x60, 0x60, 0x60, 0x60,
1506 0xEE, 0x66, 0x3C, 0x18, 0x0C, 0x06, 0xFE, 0x00, 0xFE, 0x06, 0x0E, 0xD8, 0xF0, 0xF0, 0xC0, 0xC0,
1507 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0xEE, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0x7C, 0x00,
1508 0xFF, 0x67, 0x67, 0x67, 0x67, 0x67, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1509 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1510 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1511 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
1512 0x00, 0x0C, 0x3E, 0x6C, 0x3E, 0x0C, 0x00, 0x00, 0x38, 0x6C, 0x60, 0xF0, 0x60, 0x60, 0xFC, 0x00,
1513 0x42, 0x3C, 0x66, 0x3C, 0x42, 0x00, 0x00, 0x00, 0xC3, 0x66, 0x3C, 0x18, 0x3C, 0x18, 0x18, 0x00,
1514 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00, 0x3C, 0x60, 0x3C, 0x66, 0x3C, 0x06, 0x3C, 0x00,
1515 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x4E, 0x58, 0x4E, 0x40, 0x3F, 0x00,
1516 0x1C, 0xA4, 0xC4, 0xBC, 0x80, 0xFE, 0x00, 0x00, 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00,
1517 0x3E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
1518 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0x7E, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1519 0x78, 0xCC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0xFC, 0x00,
1520 0xF0, 0x18, 0x30, 0x60, 0xF8, 0x00, 0x00, 0x00, 0xF0, 0x18, 0x30, 0x18, 0xF0, 0x00, 0x00, 0x00,
1521 0x30, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0xC0,
1522 0x3E, 0x7A, 0x7A, 0x3A, 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
1523 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x60, 0xE0, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
1524 0x38, 0x44, 0x44, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00,
1525 0x40, 0xC6, 0x4C, 0x58, 0x32, 0x66, 0xCF, 0x02, 0x40, 0xC6, 0x4C, 0x58, 0x3E, 0x62, 0xC4, 0x0E,
1526 0xC0, 0x23, 0x66, 0x2C, 0xD9, 0x33, 0x67, 0x01, 0x18, 0x00, 0x18, 0x30, 0x60, 0x66, 0x3C, 0x00,
1527 0x60, 0x30, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x0C, 0x18, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1528 0x38, 0xC6, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x71, 0x8E, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1529 0x6C, 0x00, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00, 0x38, 0x44, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
1530 0x1F, 0x3C, 0x3C, 0x6F, 0x7C, 0xCC, 0xCF, 0x00, 0x1E, 0x30, 0x60, 0x60, 0x30, 0x1E, 0x0C, 0x18,
1531 0x60, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0x18, 0x30, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00,
1532 0x30, 0xCC, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00, 0xCC, 0x00, 0xFC, 0xC0, 0xF0, 0xC0, 0xFC, 0x00,
1533 0x60, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0x18, 0x30, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00,
1534 0x30, 0xCC, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00, 0xCC, 0x00, 0x78, 0x30, 0x30, 0x30, 0x78, 0x00,
1535 0x78, 0x6C, 0x66, 0xF6, 0x66, 0x6C, 0x78, 0x00, 0x71, 0xCE, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0x00,
1536 0x30, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00,
1537 0x18, 0x66, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00,
1538 0xC3, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00, 0x00,
1539 0x3F, 0x66, 0x6E, 0x7E, 0x76, 0x66, 0xFC, 0x00, 0x30, 0x18, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00,
1540 0x0C, 0x18, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x18, 0x24, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00,
1541 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x06, 0x08, 0xC3, 0x66, 0x3C, 0x18, 0x18, 0x00,
1542 0x60, 0x60, 0x7E, 0x63, 0x7E, 0x60, 0x60, 0x00, 0x3C, 0x66, 0x66, 0x6C, 0x66, 0x66, 0x6C, 0x60,
1543 0x30, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00,
1544 0x18, 0x66, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x71, 0x8E, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00,
1545 0x66, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0x18, 0x24, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00,
1546 0x00, 0x00, 0x7E, 0x1B, 0x7F, 0xD8, 0x77, 0x00, 0x00, 0x00, 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x18,
1547 0x30, 0x18, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x0C, 0x18, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
1548 0x18, 0x66, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00, 0x66, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
1549 0x30, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00,
1550 0x18, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00,
1551 0x60, 0xFC, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x00, 0x7C, 0x66, 0x66, 0x66, 0x00,
1552 0x30, 0x18, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x0C, 0x18, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00,
1553 0x18, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x71, 0x8E, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00,
1554 0x00, 0x66, 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x00, 0x00,
1555 0x00, 0x02, 0x7C, 0xCE, 0xD6, 0xE6, 0x7C, 0x80, 0x30, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00,
1556 0x0C, 0x18, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x18, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00,
1557 0x00, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x0C, 0x18, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x30,
1558 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x00, 0x66, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x30
1559 };
1560
1561 const uint8 Display::_fontRussian[] = {
1562 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0xbd, 0x99, 0x81, 0x7e,
1563 0x7e, 0xff, 0xdb, 0xff, 0xc3, 0xe7, 0xff, 0x7e, 0x6c, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10, 0x00,
1564 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x38, 0x7c, 0x38, 0xfe, 0xfe, 0xd6, 0x10, 0x38,
1565 0x10, 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x10, 0x38, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00,
1566 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00,
1567 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0x0f, 0x07, 0x0f, 0x7d, 0xcc, 0xcc, 0xcc, 0x78,
1568 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x70, 0xf0, 0xe0,
1569 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x67, 0xe6, 0xc0, 0x18, 0xdb, 0x3c, 0xe7, 0xe7, 0x3c, 0xdb, 0x18,
1570 0x80, 0xe0, 0xf8, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x02, 0x0e, 0x3e, 0xfe, 0x3e, 0x0e, 0x02, 0x00,
1571 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00,
1572 0x7f, 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x00, 0x3e, 0x63, 0x38, 0x6c, 0x6c, 0x38, 0xcc, 0x78,
1573 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x7e, 0x3c, 0x18, 0xff,
1574 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00,
1575 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00,
1576 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00,
1577 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00, 0x00,
1578 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x38, 0x00,
1579 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0xfe, 0x6c, 0x6c, 0x00,
1580 0x18, 0x3e, 0x60, 0x3c, 0x06, 0x7c, 0x18, 0x00, 0x00, 0xc6, 0xcc, 0x18, 0x30, 0x66, 0xc6, 0x00,
1581 0x70, 0xd8, 0xd8, 0x70, 0xdb, 0xce, 0x7b, 0x00, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
1582 0x0c, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00,
1583 0x18, 0xdb, 0x3c, 0xff, 0x3c, 0xdb, 0x18, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00,
1584 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x38, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00,
1585 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x00,
1586 0x7c, 0xc6, 0xce, 0xd6, 0xe6, 0xc6, 0x7c, 0x00, 0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
1587 0x7c, 0xc6, 0x06, 0x1c, 0x70, 0xc0, 0xfe, 0x00, 0x7c, 0xc6, 0x06, 0x3c, 0x06, 0xc6, 0x7c, 0x00,
1588 0x0e, 0x1e, 0x36, 0x66, 0xff, 0x06, 0x06, 0x00, 0xfe, 0xc0, 0xfc, 0x06, 0x06, 0xc6, 0x7c, 0x00,
1589 0x3c, 0x60, 0xc0, 0xfc, 0xc6, 0xc6, 0x7c, 0x00, 0xfe, 0xc6, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x00,
1590 0x7c, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0x7c, 0x00, 0x7c, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00,
1591 0x00, 0x00, 0x38, 0x38, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x38, 0x38, 0x70,
1592 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x00, 0x00,
1593 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0x06, 0x1c, 0x30, 0x00, 0x30, 0x00,
1594 0x3e, 0x63, 0xcb, 0xd7, 0xce, 0x60, 0x3e, 0x00, 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00,
1595 0xfc, 0xc6, 0xc6, 0xfc, 0xc6, 0xc6, 0xfc, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00,
1596 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x00, 0xfe, 0xc0, 0xc0, 0xf8, 0xc0, 0xc0, 0xfe, 0x00,
1597 0xfe, 0xc0, 0xc0, 0xf8, 0xc0, 0xc0, 0xc0, 0x00, 0x7c, 0xc6, 0xc0, 0xde, 0xc6, 0xc6, 0x7c, 0x00,
1598 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
1599 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x3c, 0x00, 0xc6, 0xcc, 0xd8, 0xf0, 0xd8, 0xcc, 0xc6, 0x00,
1600 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0xc3, 0xe7, 0xff, 0xdb, 0xdb, 0xc3, 0xc3, 0x00,
1601 0xc6, 0xe6, 0xf6, 0xde, 0xce, 0xc6, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00,
1602 0xfc, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0xc0, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xda, 0xcc, 0x76, 0x00,
1603 0xfc, 0xc6, 0xc6, 0xfc, 0xd8, 0xcc, 0xc6, 0x00, 0x7c, 0xc6, 0xc0, 0x7c, 0x06, 0xc6, 0x7c, 0x00,
1604 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00,
1605 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, 0x00, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0xe7, 0xc3, 0x00,
1606 0xc6, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0xc6, 0x00, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x00,
1607 0xfe, 0x06, 0x0c, 0x38, 0x60, 0xc0, 0xfe, 0x00, 0x3e, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3e, 0x00,
1608 0x00, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x7c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00,
1609 0x18, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
1610 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x06, 0x7e, 0xc6, 0x7e, 0x00,
1611 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x3e, 0x60, 0x60, 0x60, 0x3e, 0x00,
1612 0x06, 0x06, 0x7e, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7e, 0x00,
1613 0x1c, 0x36, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x7e, 0x06, 0x7c,
1614 0xc0, 0xc0, 0xdc, 0xe6, 0xc6, 0xc6, 0xc6, 0x00, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
1615 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x66, 0x3c, 0x60, 0x60, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x00,
1616 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x66, 0xdb, 0xdb, 0xdb, 0xdb, 0x00,
1617 0x00, 0x00, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00,
1618 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x7e, 0x06, 0x06,
1619 0x00, 0x00, 0xdc, 0xe6, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0x7c, 0x06, 0xfc, 0x00,
1620 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00,
1621 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xdb, 0xdb, 0x66, 0x00,
1622 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xce, 0x76, 0x06, 0x7c,
1623 0x00, 0x00, 0xfe, 0x0c, 0x38, 0x60, 0xfe, 0x00, 0x0e, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0e, 0x00,
1624 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x1e, 0x18, 0x18, 0x70, 0x00,
1625 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xee, 0xc6, 0xfe, 0xfe, 0x00,
1626 0x38, 0x6c, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0xfc, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xfc, 0x00,
1627 0xfc, 0xc6, 0xc6, 0xfc, 0xc6, 0xc6, 0xfc, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00,
1628 0x1e, 0x26, 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0xfe, 0xc0, 0xc0, 0xf8, 0xc0, 0xc0, 0xfe, 0x00,
1629 0xd6, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0xd6, 0x00, 0x7c, 0xc6, 0x06, 0x1c, 0x06, 0xc6, 0x7c, 0x00,
1630 0xc6, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0xc6, 0x00, 0xd6, 0xd6, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0x00,
1631 0xc6, 0xcc, 0xd8, 0xf0, 0xd8, 0xcc, 0xc6, 0x00, 0x3c, 0x66, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00,
1632 0xc3, 0xe7, 0xff, 0xdb, 0xdb, 0xc3, 0xc3, 0x00, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00,
1633 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00,
1634 0xfc, 0xc6, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c, 0x00,
1635 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x7c, 0x00,
1636 0x7c, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0xc6, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0xc6, 0x00,
1637 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xff, 0x00, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x00,
1638 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xff, 0x01,
1639 0xe0, 0x60, 0x60, 0x7c, 0x66, 0x66, 0x7c, 0x00, 0xc6, 0xc6, 0xc6, 0xf6, 0xde, 0xde, 0xf6, 0x00,
1640 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xfc, 0x00, 0x7c, 0xc6, 0x06, 0x3e, 0x06, 0xc6, 0x7c, 0x00,
1641 0xcc, 0xd6, 0xd6, 0xf6, 0xd6, 0xd6, 0xcc, 0x00, 0x7e, 0xc6, 0xc6, 0x7e, 0x36, 0x66, 0xc6, 0x00,
1642 0x00, 0x00, 0x7c, 0x06, 0x7e, 0xc6, 0x7e, 0x00, 0x3e, 0x60, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x00,
1643 0x00, 0x00, 0x7c, 0x66, 0x7c, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x7e, 0x60, 0x60, 0x60, 0x60, 0x00,
1644 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0xff, 0x81, 0x00, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7e, 0x00,
1645 0x00, 0x00, 0xd6, 0xd6, 0x7c, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x3c, 0x46, 0x1c, 0x46, 0x3c, 0x00,
1646 0x00, 0x00, 0x66, 0x66, 0x6e, 0x76, 0x66, 0x00, 0x00, 0x18, 0x66, 0x66, 0x6e, 0x76, 0x66, 0x00,
1647 0x00, 0x00, 0x66, 0x6c, 0x78, 0x6c, 0x66, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0xc6, 0x00,
1648 0x00, 0x00, 0xe7, 0xdb, 0xdb, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x66, 0x66, 0x7e, 0x66, 0x66, 0x00,
1649 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x00,
1650 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
1651 0xdb, 0x77, 0xdb, 0xee, 0xdb, 0x77, 0xdb, 0xee, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
1652 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18,
1653 0x66, 0x66, 0x66, 0x66, 0xe6, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x66, 0x66,
1654 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x66, 0x66, 0xe6, 0x06, 0xe6, 0x66, 0x66, 0x66,
1655 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0xfe, 0x06, 0xe6, 0x66, 0x66, 0x66,
1656 0x66, 0x66, 0xe6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0xfe, 0x00, 0x00, 0x00,
1657 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18,
1658 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00,
1659 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18,
1660 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18,
1661 0x18, 0x18, 0x1e, 0x18, 0x1e, 0x18, 0x18, 0x18, 0x66, 0x66, 0x66, 0x66, 0x67, 0x66, 0x66, 0x66,
1662 0x66, 0x66, 0x67, 0x60, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x60, 0x67, 0x66, 0x66, 0x66,
1663 0x66, 0x66, 0xe7, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xe7, 0x66, 0x66, 0x66,
1664 0x66, 0x66, 0x67, 0x60, 0x67, 0x66, 0x66, 0x66, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
1665 0x66, 0x66, 0xe7, 0x00, 0xe7, 0x66, 0x66, 0x66, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00,
1666 0x66, 0x66, 0x66, 0x66, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18,
1667 0x00, 0x00, 0x00, 0x00, 0xff, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x00, 0x00, 0x00,
1668 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18,
1669 0x00, 0x00, 0x00, 0x00, 0x7f, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xff, 0x66, 0x66, 0x66,
1670 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00,
1671 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1672 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
1673 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
1674 0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0x00, 0x00, 0x3e, 0x60, 0x60, 0x60, 0x3e, 0x00,
1675 0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x7c,
1676 0x00, 0x00, 0x7c, 0xd6, 0xd6, 0xd6, 0x7c, 0x10, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00,
1677 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x00,
1678 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xfe, 0x00, 0x00, 0x00, 0xd6, 0xd6, 0xd6, 0xd6, 0xff, 0x01,
1679 0x00, 0x00, 0x70, 0x30, 0x3c, 0x36, 0x3c, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xf6, 0xde, 0xf6, 0x00,
1680 0x00, 0x00, 0x60, 0x60, 0x7c, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0x06, 0x7e, 0x06, 0x7c, 0x00,
1681 0x00, 0x00, 0xcc, 0xd6, 0xf6, 0xd6, 0xcc, 0x00, 0x00, 0x00, 0x3e, 0x66, 0x3e, 0x36, 0x66, 0x00,
1682 0x48, 0xfc, 0xc0, 0xf8, 0xc0, 0xc0, 0xfc, 0x00, 0x28, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0x7e, 0x00,
1683 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x18,
1684 0x18, 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00,
1685 0x00, 0x00, 0x04, 0x02, 0xff, 0x02, 0x04, 0x00, 0x00, 0x00, 0x20, 0x40, 0xff, 0x40, 0x20, 0x00,
1686 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00,
1687 0x00, 0x18, 0x00, 0xff, 0x00, 0x18, 0x00, 0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, 0x7c, 0x00,
1688 0x00, 0x8e, 0x88, 0xc9, 0xa9, 0x98, 0x88, 0x00, 0x00, 0x00, 0x42, 0x3c, 0x42, 0x3c, 0x42, 0x00,
1689 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x51, 0x8a, 0x51, 0x8a, 0x51, 0x8a, 0x51, 0x9a
1690 };
1691
1692 const uint8 Display::_palJoeClothes[] = {
1693 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x87, 0x87, 0x87, 0xB0, 0xB0, 0xB0, 0xDA, 0xDA, 0xDA, 0x43,
1694 0x34, 0x20, 0x77, 0x33, 0x1F, 0xA3, 0x43, 0x27, 0x80, 0x45, 0x45, 0x9E, 0x5D, 0x5B, 0xB9, 0x78,
1695 0x75, 0xDF, 0x97, 0x91, 0x17, 0x27, 0x63, 0x1F, 0x3F, 0x83, 0x27, 0x5B, 0xA7, 0x98, 0xD4, 0xFF
1696 };
1697
1698 const uint8 Display::_palJoeDress[] = {
1699 0x00, 0x00, 0x00, 0x50, 0x50, 0x50, 0x70, 0x70, 0x70, 0x90, 0x90, 0x90, 0xC6, 0xC6, 0xC6, 0xFF,
1700 0xFF, 0xFF, 0x30, 0x30, 0x90, 0x47, 0x49, 0xD0, 0x40, 0x24, 0x00, 0x79, 0x34, 0x0B, 0xB2, 0x3D,
1701 0x22, 0xED, 0x42, 0x42, 0x80, 0x45, 0x45, 0xA3, 0x5F, 0x5F, 0xC8, 0x7C, 0x7C, 0xEC, 0x9C, 0x9C
1702 };
1703
1704 } // End of namespace Queen
1705