From 29b4e105ed0b276e6670c2e93af85d3a4296af1a Mon Sep 17 00:00:00 2001 From: root Date: Tue, 16 Nov 2010 02:41:32 +0100 Subject: [PATCH 1/9] first aproximation of Console lib upload --- psl1ght/libs/libconsole/include/8x14std.fnt | Bin 0 -> 3584 bytes psl1ght/libs/libconsole/include/8x14std.inc | 283 +++++++ psl1ght/libs/libconsole/include/8x16std.fnt | Bin 0 -> 4096 bytes psl1ght/libs/libconsole/include/8x16std.inc | 323 ++++++++ psl1ght/libs/libconsole/include/8x8std.fnt | Bin 0 -> 2048 bytes psl1ght/libs/libconsole/include/8x8std.inc | 164 +++++ psl1ght/libs/libconsole/include/Console.h | 152 ++++ psl1ght/libs/libconsole/include/ConsoleBase.h | 16 + .../libs/libconsole/include/ConsoleLogic.h | 58 ++ .../libs/libconsole/include/ConsoleRender.h | 56 ++ .../libs/libconsole/include/ConsoleVideo.h | 36 + psl1ght/libs/libconsole/source/ConsoleLogic.c | 487 ++++++++++++ .../libs/libconsole/source/ConsoleRender.c | 697 ++++++++++++++++++ psl1ght/libs/libconsole/source/ConsoleVideo.c | 215 ++++++ 14 files changed, 2487 insertions(+) create mode 100755 psl1ght/libs/libconsole/include/8x14std.fnt create mode 100755 psl1ght/libs/libconsole/include/8x14std.inc create mode 100755 psl1ght/libs/libconsole/include/8x16std.fnt create mode 100755 psl1ght/libs/libconsole/include/8x16std.inc create mode 100755 psl1ght/libs/libconsole/include/8x8std.fnt create mode 100755 psl1ght/libs/libconsole/include/8x8std.inc create mode 100755 psl1ght/libs/libconsole/include/Console.h create mode 100755 psl1ght/libs/libconsole/include/ConsoleBase.h create mode 100755 psl1ght/libs/libconsole/include/ConsoleLogic.h create mode 100755 psl1ght/libs/libconsole/include/ConsoleRender.h create mode 100755 psl1ght/libs/libconsole/include/ConsoleVideo.h create mode 100755 psl1ght/libs/libconsole/source/ConsoleLogic.c create mode 100755 psl1ght/libs/libconsole/source/ConsoleRender.c create mode 100755 psl1ght/libs/libconsole/source/ConsoleVideo.c diff --git a/psl1ght/libs/libconsole/include/8x14std.fnt b/psl1ght/libs/libconsole/include/8x14std.fnt new file mode 100755 index 0000000000000000000000000000000000000000..676d20eb74187e2ca9b770bc7ccc7afdd1bbef42 GIT binary patch literal 3584 zcmZ`*y^7;j6uwMAm2jL+Bxbfrv8C96R|GKwOCDjFf*XaJLz0x95a>OEQu?xi$ThF{^YBK9NUu5?>+yLbA70;f4;tc`{uf0a@F3q z?d_%&%#{tmXG2jLX8wRAdA`|fk|bwdl2>h883q#A33FP4%`I#Kn35MSUKFfGq}w-d z-@dsO-tpkmXVdw7K2^D*$P*Z4?DUJ%G)*tI4~$)%U!9+yf4f=F2u+gve3Rd+US=VJ2*Pgj_K{EJ% zXNA)w7|aR}e-0g!6gGEn$&=ASQ{gZ)QIFvG(feO&up`QL{o;mf7WUKEGtiByiC=ND(A4OX5z@ zi4=L8Oa6$B$kjRvGo=%Chgg+svPTgNPPAgauJ0D>TJxS{Q^_c+_?jhau>>s2qevy= zQC`lQI6h{{2DyFgc-aJ4Z8jUWf|%4M=pB##RZ$d64@zFmO~XWwU7lE8V5;IT+axl3 zYA3|7p=NNxYPDLXF;CoZy)ZHAmP5y!+sN!ZqZFRcseZR~06WpbQ*m`tWrCdmW@ zd_9|Kd?OeyvE69K7<}Dyyz#Tt!#nLd=Pn`WW8Q?YSzf}X#Yp2Drs*R>7?11( zgb+lF0$KeaAO$o@aDtpud8=*$n>n_Wbol_$T;Rv8gmF?}D@+IB0@&r!4BK6%Ot9l| z5lmcjHu02*M`ofw0}NAzKDKCc>{5cJ{sFT6`CBYrdjHb0+uuuw=5DoHbAOguh&k7v zIC#b&-G_;jkz>!G7fi8Cl}!h&4+e`Ns2(I~hy3r1Vb>|oQ+F)tVkHxu%?*biOPXi`@>Uq>vR9 ztCK=~fpRc$kq#bmg>%Un+FQeMzWRtc&#iN^6382)T t-n`8TyLa!KOh}A8;8&FQWjOqPQ|uF1;Ylwuf2ya-ai^K-8xx5qP*&OP5f|My5S=8%f3->$B1Z?3KikrYkU zH1loKC~r(wgYxLu?mUk2E*r%0cDoINSmi-nU~|i38IVAv4byf`28ehyPT#yqWjim< zZ*FgI<|;oOeDURU0h)@2I0eN43&}KJo^q<9d8L@QxH7Lv>JChYgtn;V$yas;YiIA!0r+lPD|8Eb_}-0DPsC z35#@yKFz1_SW^G#3Dg=yy8PN#DeDN6Ite?<&1^PP?Y#ObZPHh*{5Xp8+?vNSikC-i z`C1@9p*At>8}$dFc2p4}%j%5(6B7h^c{j^F@4C!w1b3w$gh_c#a$}+_izX}7Yr-r_ zlkkJR0Lv8kvJwV9Q_x13#!al*W(=}pZCNdFq_e?vv!Rf7$B{?=X}wLH&gWG%pKHUJ zAeurKNb8fA0xwl3crW%m&z9F8#@V8V%co+fMlqf{@+bjcg0vlK?3b7YpOdH~r{@Cu zeeG|`F_5kMmbdv~_mDMD12qPotMjy!kc=W0IrRI8u2qPI^?JRUsei}RzBM@{_-AxL zP96U&e4O4P!r7h8*FGa*nr3^E*XjAY>AU1S)qE+RB)iW3by=og3s08VoZ6%2V~Rz7 z%H7bO_YF)Z9JT7Vl`flk5s6CD*w37{Q+rUImM{< zAWtISbNid>rsprIW>Wp^3bmJ>VCJi;vGapP0d=AH3pubLjlY>+Q}O8E!1a6+ zC@*mctUSuTPq;>!U&to}U*tZIaOlq_q+j!k){Hoz8lUHx0geL*V;-AWR&!*B`)lc}$xgA7xRGhYvBbN#G?q7dOYE~@{%mbgdua}PM4>#Sf>eUZ|4<2KYnvkELZOdZ_GGbENZIgJ+tC3 zRfw}?4Ex*i;&01`(?zczNZ#uY>?br0eH!^Cq7@STrAn!Q# zODA4kIy>0kSYG_$<7!RP{jgpxfBZ*K=c4-E%I<((9FPL7r*faHmdoWzzRwN)ZM9rr z1Yxif;oA&{k%%}V`uryn4gk!w_Wgv_0_v7LT^PbIUrgAUZkVhjRAmc{aQ+KUc^%If z6HLUGWbPl~Pw_cBCY3UuXtBV{z7Q#{pLyUv71rD^OlZ6(;ZPBFzLs_e4vYNL1^x5F z_Jn>uyCH@NiGY2}4^C*J9#S`cOr)ay+=dYhN&FMyd8p6r&A!atN?@N}@aNs%Sr$t? XOG=F`1wa?eF!{6JKDm(9(7XQ&G-=%) literal 0 HcmV?d00001 diff --git a/psl1ght/libs/libconsole/include/8x16std.inc b/psl1ght/libs/libconsole/include/8x16std.inc new file mode 100755 index 00000000..800a16b1 --- /dev/null +++ b/psl1ght/libs/libconsole/include/8x16std.inc @@ -0,0 +1,323 @@ + +#define CHARMASK8X16STD_LEN 4096 + + static unsigned char CharMask8x16std[]= + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81, + 0x81,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0xff,0xdb,0xff,0xff, + 0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6c,0xfe,0xfe,0xfe,0xfe,0x7c,0x38,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x10,0x38,0x7c,0xfe,0x7c,0x38,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x3c,0xe7,0xe7,0xe7,0x18,0x18, + 0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0xff,0xff, + 0x7e,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x18,0x3c,0x3c,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, + 0xff,0xff,0xff,0xff,0xe7,0xc3,0xc3,0xe7,0xff,0xff,0xff,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x42,0x42,0x66,0x3c,0x00, + 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xc3,0x99,0xbd,0xbd, + 0x99,0xc3,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x1e,0x0e,0x1a,0x32, + 0x78,0xcc,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x3c, + 0x66,0x66,0x66,0x66,0x3c,0x18,0x7e,0x18,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x3f,0x33,0x3f,0x30,0x30,0x30,0x30,0x70,0xf0,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7f,0x63,0x7f,0x63,0x63,0x63,0x63,0x67, + 0xe7,0xe6,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0xdb,0x3c, + 0xe7,0x3c,0xdb,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0, + 0xf0,0xf8,0xfe,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00, + 0x02,0x06,0x0e,0x1e,0x3e,0xfe,0x3e,0x1e,0x0e,0x06,0x02,0x00,0x00, + 0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0x18,0x18,0x18,0x7e,0x3c,0x18, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66, + 0x66,0x00,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xdb,0xdb, + 0xdb,0x7b,0x1b,0x1b,0x1b,0x1b,0x1b,0x00,0x00,0x00,0x00,0x00,0x7c, + 0xc6,0x60,0x38,0x6c,0xc6,0xc6,0x6c,0x38,0x0c,0xc6,0x7c,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xfe,0xfe,0xfe, + 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0x18,0x18,0x18,0x7e, + 0x3c,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x7e,0x3c,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x0c,0xfe,0x0c,0x18,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x60,0xfe,0x60,0x30, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, + 0xc0,0xc0,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x24,0x66,0xff,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x10,0x38,0x38,0x7c,0x7c,0xfe,0xfe,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xfe,0x7c,0x7c,0x38,0x38,0x10, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x3c, + 0x3c,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x66, + 0x66,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x6c,0x6c,0xfe,0x6c,0x6c,0x6c,0xfe,0x6c,0x6c, + 0x00,0x00,0x00,0x00,0x18,0x18,0x7c,0xc6,0xc2,0xc0,0x7c,0x06,0x06, + 0x86,0xc6,0x7c,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xc2,0xc6, + 0x0c,0x18,0x30,0x60,0xc6,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x38, + 0x6c,0x6c,0x38,0x76,0xdc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, + 0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0c,0x18,0x30,0x30,0x30,0x30,0x30,0x30, + 0x18,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x18,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x66,0x3c,0xff,0x3c,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x18,0x18,0x7e,0x18,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18, + 0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x02,0x06,0x0c,0x18,0x30,0x60,0xc0,0x80,0x00,0x00,0x00, + 0x00,0x00,0x00,0x3c,0x66,0xc3,0xc3,0xdb,0xdb,0xc3,0xc3,0x66,0x3c, + 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x18,0x18, + 0x18,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0x06,0x0c, + 0x18,0x30,0x60,0xc0,0xc6,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x7c, + 0xc6,0x06,0x06,0x3c,0x06,0x06,0x06,0xc6,0x7c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x0c,0x1c,0x3c,0x6c,0xcc,0xfe,0x0c,0x0c,0x0c,0x1e,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xc0,0xc0,0xc0,0xfc,0x06,0x06,0x06, + 0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x60,0xc0,0xc0,0xfc, + 0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc6, + 0x06,0x06,0x0c,0x18,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00,0x00, + 0x00,0x7c,0xc6,0xc6,0xc6,0x7c,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00, + 0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0x7e,0x06,0x06,0x06,0x0c, + 0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00, + 0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x06,0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x06,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x7e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0c,0x06,0x0c, + 0x18,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0x0c, + 0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x7c,0xc6,0xc6,0xde,0xde,0xde,0xdc,0xc0,0x7c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x10,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x66,0x66,0x66,0x7c,0x66,0x66,0x66, + 0x66,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0xc2,0xc0,0xc0, + 0xc0,0xc0,0xc2,0x66,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x6c, + 0x66,0x66,0x66,0x66,0x66,0x66,0x6c,0xf8,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x62,0x66,0xfe,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x60,0x60, + 0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0xc2,0xc0,0xc0,0xde, + 0xc6,0xc6,0x66,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6, + 0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3c,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00, + 0x00,0x00,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0xcc,0xcc,0xcc,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe6,0x66,0x66,0x6c,0x78,0x78,0x6c, + 0x66,0x66,0xe6,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x60,0x60,0x60, + 0x60,0x60,0x60,0x62,0x66,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xc3, + 0xe7,0xff,0xff,0xdb,0xc3,0xc3,0xc3,0xc3,0xc3,0x00,0x00,0x00,0x00, + 0x00,0x00,0xc6,0xe6,0xf6,0xfe,0xde,0xce,0xc6,0xc6,0xc6,0xc6,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, + 0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x66,0x66,0x66,0x7c, + 0x60,0x60,0x60,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6, + 0xc6,0xc6,0xc6,0xc6,0xc6,0xd6,0xde,0x7c,0x0c,0x0e,0x00,0x00,0x00, + 0x00,0xfc,0x66,0x66,0x66,0x7c,0x6c,0x66,0x66,0x66,0xe6,0x00,0x00, + 0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0x60,0x38,0x0c,0x06,0xc6,0xc6, + 0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xdb,0x99,0x18,0x18,0x18, + 0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6, + 0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, + 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x66,0x3c,0x18,0x00,0x00,0x00, + 0x00,0x00,0x00,0xc3,0xc3,0xc3,0xc3,0xc3,0xdb,0xdb,0xff,0x66,0x66, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0x66,0x3c,0x18,0x18,0x3c, + 0x66,0xc3,0xc3,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0xc3,0x66, + 0x3c,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xff, + 0xc3,0x86,0x0c,0x18,0x30,0x60,0xc1,0xc3,0xff,0x00,0x00,0x00,0x00, + 0x00,0x00,0x3c,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3c,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0x70,0x38,0x1c,0x0e, + 0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x0c,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c,0x0c,0x3c,0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0xc6, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, + 0x00,0x00,0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0c,0x7c, + 0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x60,0x60, + 0x78,0x6c,0x66,0x66,0x66,0x66,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x7c,0xc6,0xc0,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00, + 0x00,0x00,0x00,0x1c,0x0c,0x0c,0x3c,0x6c,0xcc,0xcc,0xcc,0xcc,0x76, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xc0, + 0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x6c,0x64,0x60, + 0xf0,0x60,0x60,0x60,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c,0x0c,0xcc,0x78,0x00, + 0x00,0x00,0xe0,0x60,0x60,0x6c,0x76,0x66,0x66,0x66,0x66,0xe6,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x38,0x18,0x18,0x18,0x18, + 0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x0e,0x06, + 0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3c,0x00,0x00,0x00,0xe0,0x60, + 0x60,0x66,0x6c,0x78,0x78,0x6c,0x66,0xe6,0x00,0x00,0x00,0x00,0x00, + 0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe6,0xff,0xdb,0xdb,0xdb,0xdb, + 0xdb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdc,0x66,0x66, + 0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xdc,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60,0xf0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c, + 0x0c,0x0c,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xdc,0x76,0x66,0x60, + 0x60,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c, + 0xc6,0x60,0x38,0x0c,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x10, + 0x30,0x30,0xfc,0x30,0x30,0x30,0x30,0x36,0x1c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0xc3,0xc3,0x66, + 0x3c,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3, + 0xc3,0xdb,0xdb,0xff,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc3,0x66,0x3c,0x18,0x3c,0x66,0xc3,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7e,0x06,0x0c, + 0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xcc,0x18,0x30,0x60,0xc6, + 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x18,0x18,0x18,0x70,0x18, + 0x18,0x18,0x18,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18, + 0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00, + 0x70,0x18,0x18,0x18,0x0e,0x18,0x18,0x18,0x18,0x70,0x00,0x00,0x00, + 0x00,0x00,0x00,0x76,0xdc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0xc6,0xc6, + 0xc6,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0xc2,0xc0, + 0xc0,0xc0,0xc2,0x66,0x3c,0x0c,0x06,0x7c,0x00,0x00,0x00,0x00,0xcc, + 0x00,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, + 0x00,0x0c,0x18,0x30,0x00,0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00, + 0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0x00,0x78,0x0c,0x7c,0xcc,0xcc, + 0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0xcc,0x00,0x00,0x78,0x0c, + 0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18, + 0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00, + 0x38,0x6c,0x38,0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x60,0x60,0x66,0x3c,0x0c, + 0x06,0x3c,0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0x00,0x7c,0xc6,0xfe, + 0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0x00,0x00, + 0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x60, + 0x30,0x18,0x00,0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00, + 0x00,0x00,0x00,0x66,0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x3c, + 0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x66,0x00,0x38,0x18,0x18,0x18, + 0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x38, + 0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0xc6,0x00, + 0x10,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00, + 0x38,0x6c,0x38,0x00,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0x00, + 0x00,0x00,0x00,0x18,0x30,0x60,0x00,0xfe,0x66,0x60,0x7c,0x60,0x60, + 0x66,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x3b, + 0x1b,0x7e,0xd8,0xdc,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x6c, + 0xcc,0xcc,0xfe,0xcc,0xcc,0xcc,0xcc,0xce,0x00,0x00,0x00,0x00,0x00, + 0x10,0x38,0x6c,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00, + 0x00,0x00,0x00,0x00,0xc6,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6, + 0x7c,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x7c,0xc6,0xc6, + 0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x30,0x78,0xcc,0x00, + 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x60, + 0x30,0x18,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00, + 0x00,0x00,0x00,0xc6,0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7e, + 0x06,0x0c,0x78,0x00,0x00,0xc6,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6, + 0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0xc6,0x00,0xc6,0xc6,0xc6, + 0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x18,0x18, + 0x7e,0xc3,0xc0,0xc0,0xc0,0xc3,0x7e,0x18,0x18,0x00,0x00,0x00,0x00, + 0x00,0x38,0x6c,0x64,0x60,0xf0,0x60,0x60,0x60,0x60,0xe6,0xfc,0x00, + 0x00,0x00,0x00,0x00,0x00,0xc3,0x66,0x3c,0x18,0xff,0x18,0xff,0x18, + 0x18,0x18,0x00,0x00,0x00,0x00,0x00,0xfc,0x66,0x66,0x7c,0x62,0x66, + 0x6f,0x66,0x66,0x66,0xf3,0x00,0x00,0x00,0x00,0x00,0x0e,0x1b,0x18, + 0x18,0x18,0x7e,0x18,0x18,0x18,0x18,0x18,0xd8,0x70,0x00,0x00,0x00, + 0x18,0x30,0x60,0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00, + 0x00,0x00,0x00,0x0c,0x18,0x30,0x00,0x38,0x18,0x18,0x18,0x18,0x18, + 0x3c,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x60,0x00,0x7c,0xc6,0xc6, + 0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x60,0x00, + 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x00, + 0x76,0xdc,0x00,0xdc,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00, + 0x00,0x76,0xdc,0x00,0xc6,0xe6,0xf6,0xfe,0xde,0xce,0xc6,0xc6,0xc6, + 0x00,0x00,0x00,0x00,0x00,0x3c,0x6c,0x6c,0x3e,0x00,0x7e,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x6c,0x6c,0x38,0x00, + 0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30, + 0x30,0x00,0x30,0x30,0x60,0xc0,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc0,0xc0,0xc0,0xc0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x06,0x06,0x06, + 0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0xc2,0xc6,0xcc,0x18, + 0x30,0x60,0xce,0x9b,0x06,0x0c,0x1f,0x00,0x00,0x00,0xc0,0xc0,0xc2, + 0xc6,0xcc,0x18,0x30,0x66,0xce,0x96,0x3e,0x06,0x06,0x00,0x00,0x00, + 0x00,0x18,0x18,0x00,0x18,0x18,0x18,0x3c,0x3c,0x3c,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x6c,0xd8,0x6c,0x36,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0x6c,0x36, + 0x6c,0xd8,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x44,0x11,0x44,0x11, + 0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x55,0xaa, + 0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55, + 0xaa,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77, + 0xdd,0x77,0xdd,0x77,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0xf8,0x18,0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xf6,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0xf8,0x18, + 0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x36,0x36,0x36,0x36, + 0x36,0xf6,0x06,0xf6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x00,0x00,0x00,0x00,0x00,0xfe,0x06,0xf6,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xf6,0x06,0xfe, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18, + 0x18,0x18,0x18,0xf8,0x18,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x1f,0x18,0x1f,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x3f,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x30,0x37, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0xf7,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xff,0x00,0xf7,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x37,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x36,0xf7, + 0x00,0xf7,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x18,0x18,0x18, + 0x18,0x18,0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xff,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x18,0x18,0x18,0x1f,0x18,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x18,0x1f,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0xff,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x18,0x18, + 0x18,0x18,0x18,0xff,0x18,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x76,0xdc,0xd8,0xd8,0xd8,0xdc,0x76,0x00,0x00,0x00,0x00,0x00, + 0x00,0x78,0xcc,0xcc,0xcc,0xd8,0xcc,0xc6,0xc6,0xc6,0xcc,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfe,0xc6,0xc6,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, + 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x6c,0x6c,0x6c, + 0x6c,0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc6, + 0x60,0x30,0x18,0x30,0x60,0xc6,0xfe,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x7e,0xd8,0xd8,0xd8,0xd8,0xd8,0x70,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60, + 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xdc,0x18,0x18,0x18, + 0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x18,0x3c, + 0x66,0x66,0x66,0x3c,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0x6c,0x38,0x00,0x00,0x00,0x00, + 0x00,0x00,0x38,0x6c,0xc6,0xc6,0xc6,0x6c,0x6c,0x6c,0x6c,0xee,0x00, + 0x00,0x00,0x00,0x00,0x00,0x1e,0x30,0x18,0x0c,0x3e,0x66,0x66,0x66, + 0x66,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0xdb, + 0xdb,0xdb,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, + 0x06,0x7e,0xdb,0xdb,0xf3,0x7e,0x60,0xc0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1c,0x30,0x60,0x60,0x7c,0x60,0x60,0x60,0x30,0x1c,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, + 0xc6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xfe, + 0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x7e,0x18,0x18,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x30,0x18,0x0c,0x06,0x0c,0x18,0x30,0x00,0x7e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x00,0x7e, + 0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x1b,0x1b,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0xd8,0xd8,0xd8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x18,0x18,0x00,0x7e,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x76,0xdc,0x00,0x76,0xdc,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x38,0x6c,0x6c,0x38,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0f,0x0c,0x0c,0x0c,0x0c,0x0c,0xec,0x6c,0x6c,0x3c,0x1c,0x00,0x00, + 0x00,0x00,0x00,0xd8,0x6c,0x6c,0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xd8,0x30,0x60,0xc8,0xf8,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c, + 0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00 + }; + diff --git a/psl1ght/libs/libconsole/include/8x8std.fnt b/psl1ght/libs/libconsole/include/8x8std.fnt new file mode 100755 index 0000000000000000000000000000000000000000..e7f97176b8d88e9c98c7cfad9bcbca689ee437ac GIT binary patch literal 2048 zcmYjS&1xe@5H1{0E`#l3gMDIS*cem^A9LI^&y)@G_u z^NYFGi|767YISw>=}_K&$Q~cF54YF*x~=!ua&$avXU9j-S}0Xy3dgJ!E33`s=ka(f zv#Zp(G&n$Y6};Z8Ca+T=`{vQ9{+rmT@xX#x~Lj|V{-pFB|u z+Wr4)Xodbo^Y8#`TBaSvc=Kwv+m&846f_}7V{LA2gX=`zaG$lqJ-Av5W4tlNfKA-L zw==;V<5&<+_qCU^1a88ggLU571M);Dq{jaypyt7Q@6Poz)4-Y@}&$faK* zfe8Sv8A#N}Jc(?PaVm`Z&Ok41)E^5^PIa#J_q;zIqaQ$s9|ifPZCR^GKnw|d_=9`? zO@C};qV-03I5isoqr0}&UgYSOrpCA6{pUqF3C%#D9zfi|jt%#?97rZpoM*PNq8Ik`6*d6GX z5yv0-#0pwaBoTVON}Wf(QXGqfF4_YhIMVo#)$`9IpZYHOnO^ESg=DUK`c-;8oxBeF zdoJ`xafB`0Oh%S9^hmE z^0;=7#6F%?9-{N{CI#`CXcn#Y{l8#0UL=;=~f;3e&j}d@-3CIUbK`rw2F? og*fBU$n51CHki02TxM1D + +#include +#include +#include + + +#define CONSOLE_BASIC_COLOR_BLACK 0 +#define CONSOLE_BASIC_COLOR_BLUE 1 +#define CONSOLE_BASIC_COLOR_GREEN 2 +#define CONSOLE_BASIC_COLOR_CYAN 3 +#define CONSOLE_BASIC_COLOR_RED 4 +#define CONSOLE_BASIC_COLOR_MAGENTA 5 +#define CONSOLE_BASIC_COLOR_BROWN 6 +#define CONSOLE_BASIC_COLOR_LIGHTGRAY 7 +#define CONSOLE_BASIC_COLOR_DARKGRAY 8 +#define CONSOLE_BASIC_COLOR_BRIGHTBLUE 9 +#define CONSOLE_BASIC_COLOR_BRIGHTGREEN 10 +#define CONSOLE_BASIC_COLOR_BRIGHTCYAN 11 +#define CONSOLE_BASIC_COLOR_BRIGHTRED 12 +#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA 13 +#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW 14 +#define CONSOLE_BASIC_COLOR_WHITE 15 + +#define CONSOLE_BASIC_COLOR_BLACK_RGB_8 0x00000000 +#define CONSOLE_BASIC_COLOR_BLUE_RGB_8 0x00000001 +#define CONSOLE_BASIC_COLOR_GREEN_RGB_8 0x00000002 +#define CONSOLE_BASIC_COLOR_CYAN_RGB_8 0x00000003 +#define CONSOLE_BASIC_COLOR_RED_RGB_8 0x00000004 +#define CONSOLE_BASIC_COLOR_MAGENTA_RGB_8 0x00000005 +#define CONSOLE_BASIC_COLOR_BROWN_RGB_8 0x00000006 +#define CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_8 0x00000007 +#define CONSOLE_BASIC_COLOR_DARKGRAY_RGB_8 0x00000008 +#define CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_8 0x00000009 +#define CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_8 0x0000000A +#define CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_8 0x0000000B +#define CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_8 0x0000000C +#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_8 0x0000000D +#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_8 0x0000000E +#define CONSOLE_BASIC_COLOR_WHITE_RGB_8 0x0000000F + +#define CONSOLE_BASIC_COLOR_BLACK_RGB_16 0x00000000 +#define CONSOLE_BASIC_COLOR_BLUE_RGB_16 0x0000000F +#define CONSOLE_BASIC_COLOR_GREEN_RGB_16 0x000003E0 +#define CONSOLE_BASIC_COLOR_CYAN_RGB_16 0x000003EF +#define CONSOLE_BASIC_COLOR_RED_RGB_16 0x00007800 +#define CONSOLE_BASIC_COLOR_MAGENTA_RGB_16 0x0000780F +#define CONSOLE_BASIC_COLOR_BROWN_RGB_16 0x000079E0 +#define CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_16 0x0000BDF7 +#define CONSOLE_BASIC_COLOR_DARKGRAY_RGB_16 0x000039E7 +#define CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_16 0x0000001F +#define CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_16 0x000007E0 +#define CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_16 0x000007FF +#define CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_16 0x0000F800 +#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_16 0x0000F81F +#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_16 0x0000FFE7 +#define CONSOLE_BASIC_COLOR_WHITE_RGB_16 0x0000FFFF + +#define CONSOLE_BASIC_COLOR_BLACK_RGB_32 0xFF000000 +#define CONSOLE_BASIC_COLOR_BLUE_RGB_32 0xFF00007F +#define CONSOLE_BASIC_COLOR_GREEN_RGB_32 0xFF007F00 +#define CONSOLE_BASIC_COLOR_CYAN_RGB_32 0xFF007F7F +#define CONSOLE_BASIC_COLOR_RED_RGB_32 0xFF7F0000 +#define CONSOLE_BASIC_COLOR_MAGENTA_RGB_32 0xFF7F007F +#define CONSOLE_BASIC_COLOR_BROWN_RGB_32 0xFF7F3F00 +#define CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_32 0xFFBFBFBF +#define CONSOLE_BASIC_COLOR_DARKGRAY_RGB_32 0xFF3F3F3F +#define CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_32 0xFF0000FF +#define CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_32 0xFF00FF00 +#define CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_32 0xFF00FFFF +#define CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_32 0xFFFF0000 +#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_32 0xFFFF00FF +#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_32 0xFFFFFF3F +#define CONSOLE_BASIC_COLOR_WHITE_RGB_32 0xFFFFFFFF + + +#include "8x8std.inc" +UCHAR g_8x8CursorMask[8] = { 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF }; +UCHAR g_8x8CursorInsertMask[8] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; +UCHAR g_8x8MousePointerMask[8] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; + +#include "8x14std.inc" +UCHAR g_8x14CursorMask[14] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF }; +UCHAR g_8x14CursorInsertMask[14] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; +UCHAR g_8x14MousePointerMask[14] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; + +#include "8x16std.inc" +UCHAR g_8x16CursorMask[16] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF }; +UCHAR g_8x16CursorInsertMask[16] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; +UCHAR g_8x16MousePointerMask[16] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; + +ULONG g_BasicColors1BPP[16] = { + CONSOLE_BASIC_COLOR_BLACK_RGB_8, + CONSOLE_BASIC_COLOR_BLUE_RGB_8, + CONSOLE_BASIC_COLOR_GREEN_RGB_8, + CONSOLE_BASIC_COLOR_CYAN_RGB_8, + CONSOLE_BASIC_COLOR_RED_RGB_8, + CONSOLE_BASIC_COLOR_MAGENTA_RGB_8, + CONSOLE_BASIC_COLOR_BROWN_RGB_8, + CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_8, + CONSOLE_BASIC_COLOR_DARKGRAY_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_8, + CONSOLE_BASIC_COLOR_WHITE_RGB_8 +}; + +ULONG g_BasicColors2BPP[16] = { + CONSOLE_BASIC_COLOR_BLACK_RGB_16, + CONSOLE_BASIC_COLOR_BLUE_RGB_16, + CONSOLE_BASIC_COLOR_GREEN_RGB_16, + CONSOLE_BASIC_COLOR_CYAN_RGB_16, + CONSOLE_BASIC_COLOR_RED_RGB_16, + CONSOLE_BASIC_COLOR_MAGENTA_RGB_16, + CONSOLE_BASIC_COLOR_BROWN_RGB_16, + CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_16, + CONSOLE_BASIC_COLOR_DARKGRAY_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_16, + CONSOLE_BASIC_COLOR_WHITE_RGB_16 +}; + +ULONG g_BasicColors4BPP[16] = { + CONSOLE_BASIC_COLOR_BLACK_RGB_32, + CONSOLE_BASIC_COLOR_BLUE_RGB_32, + CONSOLE_BASIC_COLOR_GREEN_RGB_32, + CONSOLE_BASIC_COLOR_CYAN_RGB_32, + CONSOLE_BASIC_COLOR_RED_RGB_32, + CONSOLE_BASIC_COLOR_MAGENTA_RGB_32, + CONSOLE_BASIC_COLOR_BROWN_RGB_32, + CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_32, + CONSOLE_BASIC_COLOR_DARKGRAY_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_32, + CONSOLE_BASIC_COLOR_WHITE_RGB_32 +}; + +#endif//__CONSOLE_INCLUDED__ diff --git a/psl1ght/libs/libconsole/include/ConsoleBase.h b/psl1ght/libs/libconsole/include/ConsoleBase.h new file mode 100755 index 00000000..e6bd6c8c --- /dev/null +++ b/psl1ght/libs/libconsole/include/ConsoleBase.h @@ -0,0 +1,16 @@ +#ifndef __CONSOLEBASE_INCLUDED__ +#define __CONSOLEBASE_INCLUDED__ + +#include + +#define FALSE 0 +#define TRUE 1 + +#define UCHAR unsigned char +#define PUCHAR unsigned char* +#define USHORT unsigned short +#define PUSHORT unsigned short* +#define ULONG unsigned int +#define PULONG unsigned int* + +#endif//__CONSOLEBASE_INCLUDED__ \ No newline at end of file diff --git a/psl1ght/libs/libconsole/include/ConsoleLogic.h b/psl1ght/libs/libconsole/include/ConsoleLogic.h new file mode 100755 index 00000000..9c67a4bb --- /dev/null +++ b/psl1ght/libs/libconsole/include/ConsoleLogic.h @@ -0,0 +1,58 @@ +#ifndef __CONSOLELOGIC_INCLUDED__ +#define __CONSOLELOGIC_INCLUDED__ + +#include + +typedef struct _ATTR_CHAR_PAIR +{ + UCHAR Attr; + UCHAR Char; +}ATTR_CHAR_PAIR,*PATTR_CHAR_PAIR; + +typedef struct _CONSOLE_LOGIC +{ + ULONG Columns; + ULONG Rows; + ULONG CursorX; + ULONG CursorY; + UCHAR CursorShow; + UCHAR CursorInsert; + ULONG MousePointerX; + ULONG MousePointerY; + UCHAR MousePointerShow; + PATTR_CHAR_PAIR AttrCharPairGrid; + PUCHAR ChangedAttrCharPairs; + UCHAR CursorChanged; + UCHAR MousePointerChanged; +}CONSOLE_LOGIC,*PCONSOLE_LOGIC; + +int CONSOLE_LOGIC_Initialize(PCONSOLE_LOGIC Console, ULONG Columns, ULONG Rows); +int CONSOLE_LOGIC_Finalize(PCONSOLE_LOGIC Console); +ULONG CONSOLE_LOGIC_GetColumns(PCONSOLE_LOGIC Console); +ULONG CONSOLE_LOGIC_GetRows(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_PutAttrCharPairXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Attr, UCHAR Char); +int CONSOLE_LOGIC_GetAttrCharPairXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pAttr, PUCHAR pChar); +int CONSOLE_LOGIC_PutCharXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Char); +int CONSOLE_LOGIC_GetCharXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pChar); +int CONSOLE_LOGIC_PutAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Attr); +int CONSOLE_LOGIC_GetAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pAttr); +int CONSOLE_LOGIC_PutBackAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR BackAttr); +int CONSOLE_LOGIC_GetBackAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pBackAttr); +int CONSOLE_LOGIC_PutTextAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR TextAttr); +int CONSOLE_LOGIC_GetTextAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pTextAttr); +int CONSOLE_LOGIC_GetCursorXY(PCONSOLE_LOGIC Console, PULONG pX, PULONG pY); +int CONSOLE_LOGIC_ShowCursor(PCONSOLE_LOGIC Console, UCHAR Show); +int CONSOLE_LOGIC_IsCursorVisible(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_PutCursorXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y); +int CONSOLE_LOGIC_PutCursorInsert(PCONSOLE_LOGIC Console, UCHAR Insert); +int CONSOLE_LOGIC_IsCursorInsert(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_GetMousePointerXY(PCONSOLE_LOGIC Console, PULONG pX, PULONG pY); +int CONSOLE_LOGIC_ShowMousePointer(PCONSOLE_LOGIC Console, UCHAR Show); +int CONSOLE_LOGIC_IsMousePointerVisible(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_PutMousePointerXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y); +int CONSOLE_LOGIC_ResetChanges(PCONSOLE_LOGIC Console, UCHAR FalseTrue); +int CONSOLE_LOGIC_GetNextChangedSlot(PCONSOLE_LOGIC Console, PULONG pHandle, PULONG pX, PULONG pY); +int CONSOLE_LOGIC_CursorChanged(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_MousePointerChanged(PCONSOLE_LOGIC Console); + +#endif//__CONSOLELOGIC_INCLUDED__ \ No newline at end of file diff --git a/psl1ght/libs/libconsole/include/ConsoleRender.h b/psl1ght/libs/libconsole/include/ConsoleRender.h new file mode 100755 index 00000000..710b4f72 --- /dev/null +++ b/psl1ght/libs/libconsole/include/ConsoleRender.h @@ -0,0 +1,56 @@ +#ifndef __CONSOLERENDER_INCLUDED__ +#define __CONSOLERENDER_INCLUDED__ + +#include + +#include +#include + +typedef struct _CONSOLE_RENDER +{ + UCHAR CursorBlinkFrames; + UCHAR CurrentCursorBlinkFrames; + UCHAR CurrentCursorBlinkState; + PUCHAR CursorMaskBuffer; + PUCHAR CursorInsertMaskBuffer; + PUCHAR MousePointerMaskBuffer; + UCHAR CharacterWidth; + UCHAR CharacterHeight; + PUCHAR CharacterMasksBuffer; + PULONG BasicColors; + ULONG RenderingFlags; + UCHAR DropShadowOrientation; + ULONG DropShadowColor; + UCHAR TransparentTextModeColor; +}CONSOLE_RENDER,*PCONSOLE_RENDER; + +#define CONSOLE_RENDER_RENDERING_FLAG_TRANSPARENT 1 +#define CONSOLE_RENDER_RENDERING_FLAG_DROPSHADOW 2 +#define CONSOLE_RENDER_RENDERING_FLAG_DROPSHADOWOVERANYBACKGROUND 4 + +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTH 0 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHEAST 1 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_EAST 2 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHEAST 3 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTH 4 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHWEST 5 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_WEST 6 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHWEST 7 + +#define CONSOLE_RENDER_DROPSHADOWORIENTATIONS 8 + +int CONSOLE_RENDER_Initialize(PCONSOLE_RENDER Render, UCHAR SlotWidth, UCHAR SlotHeight, ULONG CursorBlinkFrames, PULONG pBasicColors, PUCHAR pCharacterMasks, PUCHAR pCursorMask, PUCHAR pCursorInsertMask, PUCHAR pMousePointerMask); +int CONSOLE_RENDER_Finalize(PCONSOLE_RENDER Render); +int CONSOLE_RENDER_Render(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video); +int CONSOLE_RENDER_RenderChanges(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video); +int CONSOLE_RENDER_SetDropShadowOrientation(PCONSOLE_RENDER Render, UCHAR DropShadowOrientation); +int CONSOLE_RENDER_SetDropShadowColor(PCONSOLE_RENDER Render, ULONG DropShadowColor); +int CONSOLE_RENDER_SetTransparentTextModeColor(PCONSOLE_RENDER Render, UCHAR TransparentTextModeColor); +int CONSOLE_RENDER_SetRenderingOptions(PCONSOLE_RENDER Render, ULONG RenderingFlags); +int CONSOLE_RENDER_SetRenderingOptions(PCONSOLE_RENDER Render, ULONG RenderingFlags); +int CONSOLE_RENDER_GetDropShadowOrientation(PCONSOLE_RENDER Render, PUCHAR pDropShadowOrientation); +int CONSOLE_RENDER_GetDropShadowColor(PCONSOLE_RENDER Render, PULONG pDropShadowColor); +int CONSOLE_RENDER_GetTransparentTextModeColor(PCONSOLE_RENDER Render, PUCHAR pTransparentTextModeColor); +int CONSOLE_RENDER_GetRenderingOptions(PCONSOLE_RENDER Render, PULONG pRenderingFlags); + +#endif//__CONSOLERENDER_INCLUDED__ diff --git a/psl1ght/libs/libconsole/include/ConsoleVideo.h b/psl1ght/libs/libconsole/include/ConsoleVideo.h new file mode 100755 index 00000000..d1155b9e --- /dev/null +++ b/psl1ght/libs/libconsole/include/ConsoleVideo.h @@ -0,0 +1,36 @@ +#ifndef __CONSOLEVIDEO_INCLUDED__ +#define __CONSOLEVIDEO_INCLUDED__ + +#include + +typedef struct _CONSOLE_VIDEO +{ + PUCHAR FrameBuffer; + ULONG ResolutionX; + ULONG ResolutionY; + ULONG ResolutionBPP; + ULONG ScanLine; + ULONG ViewPortX; + ULONG ViewPortWidth; + ULONG ViewPortY; + ULONG ViewPortHeight; +// PUCHAR ViewPortBackBuffer; + ULONG ViewPortScanLine; + PUCHAR ViewPortStart; +}CONSOLE_VIDEO,*PCONSOLE_VIDEO; + +int CONSOLE_VIDEO_Initialize(PCONSOLE_VIDEO Video, PUCHAR FrameBuffer, ULONG ResolutionX, ULONG ResolutionY, UCHAR ResolutionBPP, ULONG ResolutionScanLine, ULONG ViewPortX, ULONG ViewPortWidth, ULONG ViewPortY, ULONG ViewPortHeight); +int CONSOLE_VIDEO_Finalize(PCONSOLE_VIDEO Video); +int CONSOLE_VIDEO_Save(PCONSOLE_VIDEO Video); +int CONSOLE_VIDEO_Restore(PCONSOLE_VIDEO Video); +int CONSOLE_VIDEO_PutViewPortX(PCONSOLE_VIDEO Video, ULONG ViewPortX); +int CONSOLE_VIDEO_PutViewPortY(PCONSOLE_VIDEO Video, ULONG ViewPortY); +int CONSOLE_VIDEO_PutViewPortWidth(PCONSOLE_VIDEO Video, ULONG ViewPortWidth); +int CONSOLE_VIDEO_PutViewPortHeight(PCONSOLE_VIDEO Video, ULONG ViewPortHeight); +int CONSOLE_VIDEO_GetViewPortX(PCONSOLE_VIDEO Video, PULONG pViewPortX); +int CONSOLE_VIDEO_GetViewPortY(PCONSOLE_VIDEO Video, PULONG pViewPortY); +int CONSOLE_VIDEO_GetViewPortWidth(PCONSOLE_VIDEO Video, PULONG pViewPortWidth); +int CONSOLE_VIDEO_GetViewPortHeight(PCONSOLE_VIDEO Video, PULONG pViewPortHeight); +int CONSOLE_VIDEO_PutPixel(PCONSOLE_VIDEO Video, ULONG X, ULONG Y, ULONG Color); + +#endif//__CONSOLEVIDEO_INCLUDED__ \ No newline at end of file diff --git a/psl1ght/libs/libconsole/source/ConsoleLogic.c b/psl1ght/libs/libconsole/source/ConsoleLogic.c new file mode 100755 index 00000000..4b6bb92e --- /dev/null +++ b/psl1ght/libs/libconsole/source/ConsoleLogic.c @@ -0,0 +1,487 @@ +#include + +int CONSOLE_LOGIC_Initialize(PCONSOLE_LOGIC Console, ULONG Columns, ULONG Rows) +{ + PATTR_CHAR_PAIR GridBuffer; + PUCHAR ChangedSlotsBuffer; + + GridBuffer = malloc(Columns*Rows*sizeof(ATTR_CHAR_PAIR)); + + if(!GridBuffer) + { + return FALSE; + } + + ChangedSlotsBuffer = malloc(Columns*Rows*sizeof(UCHAR)); + + if(!ChangedSlotsBuffer) + { + free(GridBuffer); + + return FALSE; + } + + memset(GridBuffer, 0, Columns*Rows*sizeof(ATTR_CHAR_PAIR)); + memset(ChangedSlotsBuffer, TRUE, Columns*Rows*sizeof(UCHAR)); + + Console->CursorChanged = TRUE; + Console->MousePointerChanged = TRUE; + + Console->Columns = Columns; + Console->Rows = Rows; + Console->CursorX = 0; + Console->CursorY = 0; + Console->CursorShow = TRUE; + Console->MousePointerX = Columns/2; + Console->MousePointerY = Rows/2; + Console->MousePointerShow = TRUE; + Console->AttrCharPairGrid = GridBuffer; + Console->ChangedAttrCharPairs = ChangedSlotsBuffer; + + return TRUE; +} + +int CONSOLE_LOGIC_Finalize(PCONSOLE_LOGIC Console) +{ + free(Console->AttrCharPairGrid); + free(Console->ChangedAttrCharPairs); + + Console->AttrCharPairGrid = NULL; + Console->ChangedAttrCharPairs = NULL; + + return TRUE; +} + +ULONG CONSOLE_LOGIC_GetColumns(PCONSOLE_LOGIC Console) +{ + return Console->Columns; +} + +ULONG CONSOLE_LOGIC_GetRows(PCONSOLE_LOGIC Console) +{ + return Console->Rows; +} + +int CONSOLE_LOGIC_PutAttrCharPairXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Attr, UCHAR Char) +{ + ULONG LinearSlot; + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + if((Console->AttrCharPairGrid[LinearSlot].Attr!=Attr)||(Console->AttrCharPairGrid[LinearSlot].Char!=Char)) + { + Console->AttrCharPairGrid[LinearSlot].Attr = Attr; + Console->AttrCharPairGrid[LinearSlot].Char = Char; + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + } + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_GetAttrCharPairXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pAttr, PUCHAR pChar) +{ + ULONG LinearSlot; + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + *pAttr = Console->AttrCharPairGrid[LinearSlot].Attr; + *pChar = Console->AttrCharPairGrid[LinearSlot].Char; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_PutCharXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Char) +{ + ULONG LinearSlot; + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + if(Console->AttrCharPairGrid[LinearSlot].Char!=Char) + { + Console->AttrCharPairGrid[LinearSlot].Char = Char; + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + } + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_GetCharXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pChar) +{ + ULONG LinearSlot; + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + *pChar = Console->AttrCharPairGrid[LinearSlot].Char; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_PutAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Attr) +{ + ULONG LinearSlot; + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + if(Console->AttrCharPairGrid[LinearSlot].Attr!=Attr) + { + Console->AttrCharPairGrid[LinearSlot].Attr = Attr; + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + } + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_GetAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pAttr) +{ + ULONG LinearSlot; + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + *pAttr = Console->AttrCharPairGrid[LinearSlot].Attr; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_PutBackAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR BackAttr) +{ + ULONG LinearSlot; + UCHAR TempAttr; + + if(BackAttr>=16) + { + return FALSE; + } + + BackAttr <<= 4; + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + TempAttr = Console->AttrCharPairGrid[LinearSlot].Attr; + + if((TempAttr&0xF0)!=BackAttr) + { + Console->AttrCharPairGrid[LinearSlot].Attr = (TempAttr&0x0F)|BackAttr; + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + } + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_GetBackAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pBackAttr) +{ + ULONG LinearSlot; + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + *pBackAttr = (Console->AttrCharPairGrid[LinearSlot].Attr)>>4; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_PutTextAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR TextAttr) +{ + ULONG LinearSlot; + UCHAR TempAttr; + + if(TextAttr>=16) + { + return FALSE; + } + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + TempAttr = Console->AttrCharPairGrid[LinearSlot].Attr; + + if((TempAttr&0x0F)!=TextAttr) + { + Console->AttrCharPairGrid[LinearSlot].Attr = (TempAttr&0xF0)|TextAttr; + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + } + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_GetTextAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pTextAttr) +{ + ULONG LinearSlot; + + if((XColumns)&&(YRows)) + { + LinearSlot = (Y*Console->Columns)+X; + + *pTextAttr = (Console->AttrCharPairGrid[LinearSlot].Attr)&0x0F; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_LOGIC_GetCursorXY(PCONSOLE_LOGIC Console, PULONG pX, PULONG pY) +{ + *pX = Console->CursorX; + *pY = Console->CursorY; + + return TRUE; +} + +int CONSOLE_LOGIC_ShowCursor(PCONSOLE_LOGIC Console, UCHAR Show) +{ + ULONG LinearSlot; + + LinearSlot = ((Console->CursorY)*Console->Columns)+(Console->CursorX); + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + + Console->CursorShow = Show; + + Console->CursorChanged = TRUE; + + return TRUE; +} + +int CONSOLE_LOGIC_IsCursorVisible(PCONSOLE_LOGIC Console) +{ + return Console->CursorShow; +} + +int CONSOLE_LOGIC_PutCursorXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y) +{ + ULONG LinearSlot; + + if((X>=Console->Columns)||(Y>=Console->Rows)) + { + return FALSE; + } + + if((X==Console->CursorX)&&(Y==Console->CursorY)) + { + return TRUE; + } + + if(CONSOLE_LOGIC_IsCursorVisible(Console)) + { + LinearSlot = ((Console->CursorY)*Console->Columns)+(Console->CursorX); + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + + LinearSlot = (Y*Console->Columns)+X; + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + } + + Console->CursorChanged = TRUE; + + if((Console->MousePointerX==Console->CursorX)&&(Console->MousePointerY==Console->CursorY)) + { + Console->MousePointerChanged = TRUE; + } + + Console->CursorX = X; + Console->CursorY = Y; + + return TRUE; +} + +int CONSOLE_LOGIC_PutCursorInsert(PCONSOLE_LOGIC Console, UCHAR Insert) +{ + ULONG LinearSlot; + + LinearSlot = ((Console->CursorY)*Console->Columns)+(Console->CursorX); + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + + Console->CursorInsert = Insert; + + Console->CursorChanged = TRUE; + + return TRUE; +} + +int CONSOLE_LOGIC_IsCursorInsert(PCONSOLE_LOGIC Console) +{ + return Console->CursorInsert; +} + +int CONSOLE_LOGIC_GetMousePointerXY(PCONSOLE_LOGIC Console, PULONG pX, PULONG pY) +{ + *pX = Console->MousePointerX; + *pY = Console->MousePointerY; + + return TRUE; +} + +int CONSOLE_LOGIC_ShowMousePointer(PCONSOLE_LOGIC Console, UCHAR Show) +{ + ULONG LinearSlot; + + LinearSlot = ((Console->MousePointerY)*Console->Columns)+(Console->MousePointerX); + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + + Console->MousePointerShow = Show; + + Console->MousePointerChanged = TRUE; + + return TRUE; +} + +int CONSOLE_LOGIC_IsMousePointerVisible(PCONSOLE_LOGIC Console) +{ + return Console->MousePointerShow; +} + +int CONSOLE_LOGIC_PutMousePointerXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y) +{ + ULONG LinearSlot; + + if((X>=Console->Columns)||(Y>=Console->Rows)) + { + return FALSE; + } + + if((X==Console->MousePointerX)&&(Y==Console->MousePointerY)) + { + return TRUE; + } + + if(CONSOLE_LOGIC_IsMousePointerVisible(Console)) + { + LinearSlot = ((Console->MousePointerY)*Console->Columns)+(Console->MousePointerX); + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + + LinearSlot = (Y*Console->Columns)+X; + + Console->ChangedAttrCharPairs[LinearSlot] = TRUE; + } + + Console->MousePointerChanged = TRUE; + + if((Console->MousePointerX==Console->CursorX)&&(Console->MousePointerY==Console->CursorY)) + { + Console->CursorChanged = TRUE; + } + + Console->MousePointerX = X; + Console->MousePointerY = Y; + + return TRUE; +} + +int CONSOLE_LOGIC_ResetChanges(PCONSOLE_LOGIC Console, UCHAR FalseTrue) +{ + ULONG Slots = Console->Columns*Console->Rows; + + memset(Console->ChangedAttrCharPairs, FalseTrue, Slots*sizeof(UCHAR)); + + Console->CursorChanged = FalseTrue; + Console->MousePointerChanged = FalseTrue; + + return TRUE; +} + +int CONSOLE_LOGIC_GetNextChangedSlot(PCONSOLE_LOGIC Console, PULONG pHandle, PULONG pX, PULONG pY) +{ + ULONG Slots = Console->Columns*Console->Rows; + + if((*pHandle)>=Slots) + { + return FALSE; + } + + for(;(*pHandle)ChangedAttrCharPairs[*pHandle]) + { + *pX = (*pHandle)%Console->Columns; + *pY = (*pHandle)/Console->Columns; + + (*pHandle)++; + + return TRUE; + } + } + + return FALSE; +} + +int CONSOLE_LOGIC_CursorChanged(PCONSOLE_LOGIC Console) +{ + return Console->CursorChanged; +} + +int CONSOLE_LOGIC_MousePointerChanged(PCONSOLE_LOGIC Console) +{ + return Console->MousePointerChanged; +} diff --git a/psl1ght/libs/libconsole/source/ConsoleRender.c b/psl1ght/libs/libconsole/source/ConsoleRender.c new file mode 100755 index 00000000..3a109c18 --- /dev/null +++ b/psl1ght/libs/libconsole/source/ConsoleRender.c @@ -0,0 +1,697 @@ +#include + +int CONSOLE_RENDER_Initialize(PCONSOLE_RENDER Render, UCHAR SlotWidth, UCHAR SlotHeight, ULONG CursorBlinkFrames, PULONG pBasicColors, PUCHAR pCharacterMasks, PUCHAR pCursorMask, PUCHAR pCursorInsertMask, PUCHAR pMousePointerMask) +{ + Render->CursorBlinkFrames = CursorBlinkFrames; + Render->CurrentCursorBlinkFrames = 0; + Render->CurrentCursorBlinkState = FALSE; + Render->CursorMaskBuffer = pCursorMask; + Render->CursorInsertMaskBuffer = pCursorInsertMask; + Render->MousePointerMaskBuffer = pMousePointerMask; + Render->CharacterWidth = SlotWidth; + Render->CharacterHeight = SlotHeight; + Render->CharacterMasksBuffer = pCharacterMasks; + Render->BasicColors = pBasicColors; + Render->RenderingFlags = 0; + Render->DropShadowColor = 0x00000000; + Render->DropShadowOrientation = CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHEAST; + Render->TransparentTextModeColor = 0; + + return TRUE; +} + +int CONSOLE_RENDER_Finalize(PCONSOLE_RENDER Render) +{ + return TRUE; +} + +int GetBitLeftToRight(PUCHAR pByteArray, UCHAR LeftToRightIndex) +{ + PUCHAR pTargetByte = pByteArray+(LeftToRightIndex/8); + UCHAR TestMask = 0x80 >> (LeftToRightIndex%8); + + return ((*pTargetByte)&TestMask); +} + +int GetBitFromLogicConsoleBitmap(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, ULONG CharCol, ULONG CharRow, UCHAR XOffsetIntoChar, UCHAR YOffsetIntoChar) +{ + UCHAR Char = 0; + PUCHAR pCurrentCharMask; + UCHAR BytesPerCharWidth; + + if(CONSOLE_LOGIC_GetCharXY(Console,CharCol,CharRow,&Char)) + { + BytesPerCharWidth = (Render->CharacterWidth+7)/8; + pCurrentCharMask = &(Render->CharacterMasksBuffer[Char*BytesPerCharWidth*Render->CharacterHeight]); + pCurrentCharMask += BytesPerCharWidth*YOffsetIntoChar; + + return GetBitLeftToRight(pCurrentCharMask,XOffsetIntoChar); + } + else + { + return FALSE; + } +} + +void NextInLogicBitmap(UCHAR PosSize, PULONG pPos, PUCHAR pPosIntoPos) +{ + if(((*pPosIntoPos)++)==PosSize) + { + (*pPosIntoPos) = 0; + (*pPos)++; + } +} + +void PreviousInLogicBitmap(UCHAR PosSize, PULONG pPos, PUCHAR pPosIntoPos) +{ + if(((*pPosIntoPos)--)==((UCHAR)-1)) + { + (*pPosIntoPos) = PosSize-1; + (*pPos)--; + } +} + +int IsCharPixelDropShadow(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, ULONG CharCol, ULONG CharRow, UCHAR XOffsetIntoChar, UCHAR YOffsetIntoChar) +{ + ULONG SourceCharCol = CharCol; + ULONG SourceCharRow = CharRow; + UCHAR SourceXOffsetIntoChar = XOffsetIntoChar; + UCHAR SourceYOffsetIntoChar = YOffsetIntoChar; + + switch(Render->DropShadowOrientation) + { + case CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTH: + + NextInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); + + break; + + case CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHEAST: + + NextInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); + PreviousInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + + break; + + case CONSOLE_RENDER_DROPSHADOWORIENTATION_EAST: + + PreviousInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + + break; + + case CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHEAST: + + PreviousInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); + PreviousInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + + break; + + case CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTH: + + PreviousInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); + + break; + + case CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHWEST: + + PreviousInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); + NextInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + + break; + + case CONSOLE_RENDER_DROPSHADOWORIENTATION_WEST: + + NextInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + + break; + + case CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHWEST: + + NextInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); + NextInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + + break; + + default: + return FALSE; + } + + return GetBitFromLogicConsoleBitmap(Render,Console,SourceCharCol,SourceCharRow,SourceXOffsetIntoChar,SourceYOffsetIntoChar); +} + +void HandleBackgroundPixelDraw(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video, ULONG X, ULONG Y, UCHAR i, UCHAR j, UCHAR BackAttr) +{ + switch(Render->RenderingFlags) + { + case CONSOLE_RENDER_RENDERING_FLAG_TRANSPARENT|CONSOLE_RENDER_RENDERING_FLAG_DROPSHADOW|CONSOLE_RENDER_RENDERING_FLAG_DROPSHADOWOVERANYBACKGROUND: + + if(IsCharPixelDropShadow(Render,Console,X,Y,i,j)) + { + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->DropShadowColor); + } + else + { + if(BackAttr!=Render->TransparentTextModeColor) + { + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[BackAttr]); + } + } + + break; + + case CONSOLE_RENDER_RENDERING_FLAG_TRANSPARENT|CONSOLE_RENDER_RENDERING_FLAG_DROPSHADOW: + + if(BackAttr==Render->TransparentTextModeColor) + { + if(IsCharPixelDropShadow(Render,Console,X,Y,i,j)) + { + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->DropShadowColor); + } + } + else + { + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[BackAttr]); + } + + break; + + case CONSOLE_RENDER_RENDERING_FLAG_TRANSPARENT: + + if(BackAttr!=Render->TransparentTextModeColor) + { + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[BackAttr]); + } + + break; + + default: + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[BackAttr]); + } +} + +void DrawAttrCharPairXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video, int X, int Y, UCHAR Attr, UCHAR Char) +{ + PUCHAR pCurrentCharMask; + UCHAR BytesPerCharWidth = (Render->CharacterWidth+7)/8; + UCHAR i, j; + UCHAR BackAttr, TextAttr; + + BackAttr = Attr>>4; + TextAttr = Attr&0x0F; + + pCurrentCharMask = &(Render->CharacterMasksBuffer[Char*BytesPerCharWidth*Render->CharacterHeight]); + + for(j = 0;jCharacterHeight;j++) + { + for(i = 0;iCharacterWidth;i++) + { + if(GetBitLeftToRight(pCurrentCharMask, i)) + { + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[TextAttr]); + } + else + { + HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,BackAttr); + } + } + + pCurrentCharMask += BytesPerCharWidth; + } +} + +void DrawAttrCharPairUnderCursorXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video, int X, int Y, UCHAR Attr, UCHAR Char, int CursorIsInsert) +{ + PUCHAR pCurrentCursorMask; + PUCHAR pCurrentCharMask; + UCHAR BytesPerCharWidth = (Render->CharacterWidth+7)/8; + UCHAR i, j; + UCHAR BackAttr, TextAttr; + ULONG MaskedBackAttr, MaskedTextAttr; + + BackAttr = Attr>>4; + TextAttr = Attr&0x0F; + + if(CursorIsInsert) + { + pCurrentCursorMask = Render->CursorInsertMaskBuffer; + } + else + { + pCurrentCursorMask = Render->CursorMaskBuffer; + } + + pCurrentCharMask = &(Render->CharacterMasksBuffer[Char*BytesPerCharWidth*Render->CharacterHeight]); + + for(j = 0;jCharacterHeight;j++) + { + for(i = 0;iCharacterWidth;i++) + { + if(GetBitLeftToRight(pCurrentCursorMask, i)) + { + MaskedBackAttr = (15-BackAttr)&0x07; + MaskedTextAttr = (15-TextAttr)&0x07; + } + else + { + MaskedBackAttr = BackAttr; + MaskedTextAttr = TextAttr; + } + + if(GetBitLeftToRight(pCurrentCharMask, i)) + { + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[MaskedTextAttr]); + } + else + { + HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,MaskedBackAttr); + } + } + + pCurrentCharMask += BytesPerCharWidth; + pCurrentCursorMask += BytesPerCharWidth; + } +} + +void DrawAttrCharPairUnderMousePointerXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video, int X, int Y, UCHAR Attr, UCHAR Char) +{ + PUCHAR pMousePointerMask; + PUCHAR pCurrentCharMask; + UCHAR BytesPerCharWidth = (Render->CharacterWidth+7)/8; + UCHAR i, j; + UCHAR BackAttr, TextAttr; + ULONG MaskedBackAttr, MaskedTextAttr; + + BackAttr = Attr>>4; + TextAttr = Attr&0x0F; + + pMousePointerMask = Render->MousePointerMaskBuffer; + + pCurrentCharMask = &(Render->CharacterMasksBuffer[Char*BytesPerCharWidth*Render->CharacterHeight]); + + for(j = 0;jCharacterHeight;j++) + { + for(i = 0;iCharacterWidth;i++) + { + if(GetBitLeftToRight(pMousePointerMask, i)) + { + MaskedBackAttr = (15-BackAttr)&0x07; + MaskedTextAttr = (15-TextAttr)&0x07; + } + else + { + MaskedBackAttr = BackAttr; + MaskedTextAttr = TextAttr; + } + + if(GetBitLeftToRight(pCurrentCharMask, i)) + { + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[MaskedTextAttr]); + } + else + { + HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,MaskedBackAttr); + } + } + + pCurrentCharMask += BytesPerCharWidth; + pMousePointerMask += BytesPerCharWidth; + } +} + +void DrawAttrCharPairUnderCursorAndMousePointerXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video, int X, int Y, UCHAR Attr, UCHAR Char, int CursorIsInsert) +{ + PUCHAR pMousePointerMask; + PUCHAR pCurrentCursorMask; + PUCHAR pCurrentCharMask; + UCHAR BytesPerCharWidth = (Render->CharacterWidth+7)/8; + UCHAR i, j; + UCHAR BackAttr, TextAttr; + ULONG MaskedBackAttr, MaskedTextAttr; + + BackAttr = Attr>>4; + TextAttr = Attr&0x0F; + + if(CursorIsInsert) + { + pCurrentCursorMask = Render->CursorInsertMaskBuffer; + } + else + { + pCurrentCursorMask = Render->CursorMaskBuffer; + } + + pMousePointerMask = Render->MousePointerMaskBuffer; + + pCurrentCharMask = &(Render->CharacterMasksBuffer[Char*BytesPerCharWidth*Render->CharacterHeight]); + + for(j = 0;jCharacterHeight;j++) + { + for(i = 0;iCharacterWidth;i++) + { + if(GetBitLeftToRight(pCurrentCursorMask, i)^GetBitLeftToRight(pMousePointerMask, i)) + { + MaskedBackAttr = (15-BackAttr)&0x07; + MaskedTextAttr = (15-TextAttr)&0x07; + } + else + { + MaskedBackAttr = BackAttr; + MaskedTextAttr = TextAttr; + } + + if(GetBitLeftToRight(pCurrentCharMask, i)) + { + CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[MaskedTextAttr]); + } + else + { + HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,MaskedBackAttr); + } + } + + pCurrentCharMask += BytesPerCharWidth; + pMousePointerMask += BytesPerCharWidth; + pCurrentCursorMask += BytesPerCharWidth; + } +} + +int CONSOLE_RENDER_RenderChanges(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video) +{ + ULONG ChangedSlotsSearchHandle = 0; + ULONG X, Y, CX, CY, MPX, MPY; + UCHAR Attr, Char; + int MustDrawCursor; + int MustDrawMousePointer; + int BlinkStateChanged = FALSE; + int CharIsUnderCursor, CharIsUnderMousePointer; + int CharUnderCursorChanged = FALSE, CharUnderMousePointerChanged = FALSE; + + CONSOLE_LOGIC_GetCursorXY(Console, &CX, &CY); + CONSOLE_LOGIC_GetMousePointerXY(Console, &MPX, &MPY); + + while(CONSOLE_LOGIC_GetNextChangedSlot(Console, &ChangedSlotsSearchHandle, &X, &Y)) + { + CONSOLE_LOGIC_GetAttrCharPairXY(Console, X, Y, &Attr, &Char); + + if((X==CX)&&(Y==CY)) + { + CharIsUnderCursor = TRUE; + CharUnderCursorChanged = TRUE; + } + else + { + CharIsUnderCursor = FALSE; + } + + if((X==MPX)&&(Y==MPY)) + { + CharIsUnderMousePointer = TRUE; + CharUnderMousePointerChanged = TRUE; + } + else + { + CharIsUnderMousePointer = FALSE; + } + + if((!CharIsUnderCursor)&&(!CharIsUnderMousePointer)) + { + DrawAttrCharPairXY(Render, Console, Video, X, Y, Attr, Char); + } + + } + + if((Render->CurrentCursorBlinkFrames++)>Render->CursorBlinkFrames) + { + Render->CurrentCursorBlinkFrames = 0; + + Render->CurrentCursorBlinkState = !(Render->CurrentCursorBlinkState); + + BlinkStateChanged = TRUE; + } + + MustDrawCursor = (Render->CurrentCursorBlinkState)&&(CONSOLE_LOGIC_IsCursorVisible(Console)); + MustDrawMousePointer = CONSOLE_LOGIC_IsMousePointerVisible(Console); + + if((CX==MPX)&&(CY==MPY)) + { + if((CONSOLE_LOGIC_CursorChanged(Console))||(BlinkStateChanged)||(CONSOLE_LOGIC_MousePointerChanged(Console))||(CharUnderCursorChanged)||(CharUnderMousePointerChanged)) + { + CONSOLE_LOGIC_GetAttrCharPairXY(Console, CX, CY, &Attr, &Char); + + if((MustDrawCursor)&&(MustDrawMousePointer)) + { + DrawAttrCharPairUnderCursorAndMousePointerXY(Render, Console, Video, CX, CY, Attr, Char, CONSOLE_LOGIC_IsCursorInsert(Console)); + } + else + { + if(MustDrawCursor) + { + DrawAttrCharPairUnderCursorXY(Render, Console, Video, CX, CY, Attr, Char, CONSOLE_LOGIC_IsCursorInsert(Console)); + } + else + { + if(MustDrawMousePointer) + { + DrawAttrCharPairUnderMousePointerXY(Render, Console, Video, MPX, MPY, Attr, Char); + } + else + { + DrawAttrCharPairXY(Render, Console, Video, MPX, MPY, Attr, Char); + } + } + } + } + } + else + { + if((CONSOLE_LOGIC_CursorChanged(Console))||(BlinkStateChanged)||(CharUnderCursorChanged)) + { + CONSOLE_LOGIC_GetAttrCharPairXY(Console, CX, CY, &Attr, &Char); + + if(MustDrawCursor) + { + DrawAttrCharPairUnderCursorXY(Render, Console, Video, CX, CY, Attr, Char, CONSOLE_LOGIC_IsCursorInsert(Console)); + } + else + { + DrawAttrCharPairXY(Render, Console, Video, CX, CY, Attr, Char); + } + } + + if(CONSOLE_LOGIC_MousePointerChanged(Console)||(CharUnderMousePointerChanged)) + { + CONSOLE_LOGIC_GetAttrCharPairXY(Console, MPX, MPY, &Attr, &Char); + + if(MustDrawMousePointer) + { + DrawAttrCharPairUnderMousePointerXY(Render, Console, Video, MPX, MPY, Attr, Char); + } + else + { + DrawAttrCharPairXY(Render, Console, Video, MPX, MPY, Attr, Char); + } + } + } + + CONSOLE_LOGIC_ResetChanges(Console, FALSE); + + return TRUE; +} + + +int CONSOLE_RENDER_Render(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video) +{ + ULONG LinearTotalSlots = CONSOLE_LOGIC_GetColumns(Console)*CONSOLE_LOGIC_GetRows(Console); + ULONG LinearCurrentSlot = 0; + ULONG X, Y, CX, CY, MPX, MPY; + UCHAR Attr, Char; + int MustDrawCursor; + int MustDrawMousePointer; + int BlinkStateChanged = FALSE; + int CharIsUnderCursor, CharIsUnderMousePointer; + int CharUnderCursorChanged = FALSE, CharUnderMousePointerChanged = FALSE; + + CONSOLE_LOGIC_GetCursorXY(Console, &CX, &CY); + CONSOLE_LOGIC_GetMousePointerXY(Console, &MPX, &MPY); + + while(LinearCurrentSlotCurrentCursorBlinkFrames++)>Render->CursorBlinkFrames) + { + Render->CurrentCursorBlinkFrames = 0; + + Render->CurrentCursorBlinkState = !(Render->CurrentCursorBlinkState); + + BlinkStateChanged = TRUE; + } + + MustDrawCursor = (Render->CurrentCursorBlinkState)&&(CONSOLE_LOGIC_IsCursorVisible(Console)); + MustDrawMousePointer = CONSOLE_LOGIC_IsMousePointerVisible(Console); + + if((CX==MPX)&&(CY==MPY)) + { + if((CONSOLE_LOGIC_CursorChanged(Console))||(BlinkStateChanged)||(CONSOLE_LOGIC_MousePointerChanged(Console))||(CharUnderCursorChanged)||(CharUnderMousePointerChanged)) + { + CONSOLE_LOGIC_GetAttrCharPairXY(Console, CX, CY, &Attr, &Char); + + if((MustDrawCursor)&&(MustDrawMousePointer)) + { + DrawAttrCharPairUnderCursorAndMousePointerXY(Render, Console, Video, CX, CY, Attr, Char, CONSOLE_LOGIC_IsCursorInsert(Console)); + } + else + { + if(MustDrawCursor) + { + DrawAttrCharPairUnderCursorXY(Render, Console, Video, CX, CY, Attr, Char, CONSOLE_LOGIC_IsCursorInsert(Console)); + } + else + { + if(MustDrawMousePointer) + { + DrawAttrCharPairUnderMousePointerXY(Render, Console, Video, MPX, MPY, Attr, Char); + } + else + { + DrawAttrCharPairXY(Render, Console, Video, MPX, MPY, Attr, Char); + } + } + } + } + } + else + { + if((CONSOLE_LOGIC_CursorChanged(Console))||(BlinkStateChanged)||(CharUnderCursorChanged)) + { + CONSOLE_LOGIC_GetAttrCharPairXY(Console, CX, CY, &Attr, &Char); + + if(MustDrawCursor) + { + DrawAttrCharPairUnderCursorXY(Render, Console, Video, CX, CY, Attr, Char, CONSOLE_LOGIC_IsCursorInsert(Console)); + } + else + { + DrawAttrCharPairXY(Render, Console, Video, CX, CY, Attr, Char); + } + } + + if(CONSOLE_LOGIC_MousePointerChanged(Console)||(CharUnderMousePointerChanged)) + { + CONSOLE_LOGIC_GetAttrCharPairXY(Console, MPX, MPY, &Attr, &Char); + + if(MustDrawMousePointer) + { + DrawAttrCharPairUnderMousePointerXY(Render, Console, Video, MPX, MPY, Attr, Char); + } + else + { + DrawAttrCharPairXY(Render, Console, Video, MPX, MPY, Attr, Char); + } + } + } + + return TRUE; +} + +int CONSOLE_RENDER_SetDropShadowOrientation(PCONSOLE_RENDER Render, UCHAR DropShadowOrientation) +{ + if(DropShadowOrientationDropShadowOrientation = DropShadowOrientation; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_RENDER_SetDropShadowColor(PCONSOLE_RENDER Render, ULONG DropShadowColor) +{ + Render->DropShadowColor = DropShadowColor; + + return TRUE; +} + +int CONSOLE_RENDER_SetTransparentTextModeColor(PCONSOLE_RENDER Render, UCHAR TransparentTextModeColor) +{ + if(TransparentTextModeColor<16) + { + Render->TransparentTextModeColor = TransparentTextModeColor; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_RENDER_SetRenderingOptions(PCONSOLE_RENDER Render, ULONG RenderingFlags) +{ + Render->RenderingFlags = RenderingFlags; + + return TRUE; +} + + +int CONSOLE_RENDER_GetDropShadowOrientation(PCONSOLE_RENDER Render, PUCHAR pDropShadowOrientation) +{ + *pDropShadowOrientation = Render->DropShadowOrientation; + + return TRUE; +} + +int CONSOLE_RENDER_GetDropShadowColor(PCONSOLE_RENDER Render, PULONG pDropShadowColor) +{ + *pDropShadowColor = Render->DropShadowColor; + + return TRUE; +} + +int CONSOLE_RENDER_GetTransparentTextModeColor(PCONSOLE_RENDER Render, PUCHAR pTransparentTextModeColor) +{ + *pTransparentTextModeColor = Render->TransparentTextModeColor; + + return TRUE; +} + +int CONSOLE_RENDER_GetRenderingOptions(PCONSOLE_RENDER Render, PULONG pRenderingFlags) +{ + *pRenderingFlags = Render->RenderingFlags; + + return TRUE; +} diff --git a/psl1ght/libs/libconsole/source/ConsoleVideo.c b/psl1ght/libs/libconsole/source/ConsoleVideo.c new file mode 100755 index 00000000..e7806521 --- /dev/null +++ b/psl1ght/libs/libconsole/source/ConsoleVideo.c @@ -0,0 +1,215 @@ +#include + +int CONSOLE_VIDEO_Initialize(PCONSOLE_VIDEO Video, PUCHAR FrameBuffer, ULONG ResolutionX, ULONG ResolutionY, UCHAR ResolutionBPP, ULONG ResolutionScanLine, ULONG ViewPortX, ULONG ViewPortWidth, ULONG ViewPortY, ULONG ViewPortHeight) +{ +// PUCHAR BackBuffer; + +// BackBuffer = (PUCHAR)malloc(ViewPortWidth*ViewPortHeight*4); + +// if(!BackBuffer) +// { +// return FALSE; +// } + + Video->FrameBuffer = FrameBuffer; + Video->ResolutionX = ResolutionX; + Video->ResolutionY = ResolutionY; + Video->ResolutionBPP = ResolutionBPP; + Video->ScanLine = ResolutionScanLine; + Video->ViewPortX = ViewPortX; + Video->ViewPortWidth = ViewPortWidth; + Video->ViewPortY = ViewPortY; + Video->ViewPortHeight = ViewPortHeight; +// Video->ViewPortBackBuffer = BackBuffer; + Video->ViewPortStart = (PUCHAR)FrameBuffer+((ResolutionScanLine*ViewPortY)+(ViewPortX*ResolutionBPP)); + + return TRUE; +} + +int CONSOLE_VIDEO_Finalize(PCONSOLE_VIDEO Video) +{ +// free(Video->ViewPortBackBuffer); + +// Video->ViewPortBackBuffer = NULL; + + return TRUE; +} +/* +int CONSOLE_VIDEO_Save(PCONSOLE_VIDEO Video) +{ + ULONG i; + PUCHAR Source; + PUCHAR Destination; + + Source = Video->ViewPortStart; + Destination = Video->ViewPortBackBuffer; + + for(i=0;i<(Video->ViewPortHeight);i++) + { + memcpy(Destination, Source, Video->ViewPortScanLine); + Source += Video->ScanLine; + Destination += Video->ViewPortScanLine; + } + + return TRUE; +} + +int CONSOLE_VIDEO_Restore(PCONSOLE_VIDEO Video) +{ + ULONG i; + PUCHAR Source; + PUCHAR Destination; + + Source = Video->ViewPortBackBuffer; + Destination = Video->ViewPortStart; + + for(i=0;i<(Video->ViewPortHeight);i++) + { + memcpy(Destination, Source, Video->ViewPortScanLine); + Source += Video->ViewPortScanLine; + Destination += Video->ScanLine; + } + + return TRUE; +} +*/ +int CONSOLE_VIDEO_PutViewPortX(PCONSOLE_VIDEO Video, ULONG ViewPortX) +{ + ULONG Limit = (Video->ResolutionX)-(Video->ViewPortWidth); + + if(ViewPortX>Limit) + { + return FALSE; + } + else + { + Video->ViewPortX = ViewPortX; + + Video->ViewPortStart = (PUCHAR)(Video->FrameBuffer)+(((Video->ScanLine)*(Video->ViewPortY))+((Video->ViewPortX)*(Video->ResolutionBPP))); + + return TRUE; + } +} + +int CONSOLE_VIDEO_PutViewPortY(PCONSOLE_VIDEO Video, ULONG ViewPortY) +{ + ULONG Limit = (Video->ResolutionY)-(Video->ViewPortHeight); + + if(ViewPortY>Limit) + { + return FALSE; + } + else + { + Video->ViewPortY = ViewPortY; + + Video->ViewPortStart = (PUCHAR)(Video->FrameBuffer)+(((Video->ScanLine)*(Video->ViewPortY))+((Video->ViewPortX)*(Video->ResolutionBPP))); + + return TRUE; + } +} + +int CONSOLE_VIDEO_PutViewPortWidth(PCONSOLE_VIDEO Video, ULONG ViewPortWidth) +{ + if(((Video->ViewPortX)+ViewPortWidth)>(Video->ResolutionX)) + { + return FALSE; + } + else + { + Video->ViewPortWidth = ViewPortWidth; + + Video->ViewPortScanLine = ViewPortWidth*(Video->ResolutionBPP); + + return TRUE; + } +} + +int CONSOLE_VIDEO_PutViewPortHeight(PCONSOLE_VIDEO Video, ULONG ViewPortHeight) +{ + if(((Video->ViewPortY)+ViewPortHeight)>(Video->ResolutionY)) + { + return FALSE; + } + else + { + Video->ViewPortHeight = ViewPortHeight; + + return TRUE; + } +} + +int CONSOLE_VIDEO_GetViewPortX(PCONSOLE_VIDEO Video, PULONG pViewPortX) +{ + *pViewPortX = Video->ViewPortX; + + return TRUE; +} + +int CONSOLE_VIDEO_GetViewPortY(PCONSOLE_VIDEO Video, PULONG pViewPortY) +{ + *pViewPortY = Video->ViewPortY; + + return TRUE; +} + +int CONSOLE_VIDEO_GetViewPortWidth(PCONSOLE_VIDEO Video, PULONG pViewPortWidth) +{ + *pViewPortWidth = Video->ViewPortWidth; + + return TRUE; +} + +int CONSOLE_VIDEO_GetViewPortHeight(PCONSOLE_VIDEO Video, PULONG pViewPortHeight) +{ + *pViewPortHeight = Video->ViewPortHeight; + + return TRUE; +} + +int CONSOLE_VIDEO_PutPixel(PCONSOLE_VIDEO Video, ULONG X, ULONG Y, ULONG Color) +{ + PULONG FBAsDword; + PUSHORT FBAsWord; + PUCHAR FBAsByte; + + if((XViewPortWidth)&&(YViewPortHeight)) + { + switch(Video->ResolutionBPP) + { + case 4: + + FBAsDword = (PULONG)(Video->ViewPortStart+(Y*(Video->ScanLine))+(X*(Video->ResolutionBPP))); + + *FBAsDword = Color; + + break; + + case 2: + + FBAsWord = (PUSHORT)(Video->ViewPortStart+(Y*(Video->ScanLine))+(X*(Video->ResolutionBPP))); + + *FBAsWord = (USHORT)Color; + + break; + + case 1: + + FBAsByte = (PUCHAR)(Video->ViewPortStart+(Y*(Video->ScanLine))+(X*(Video->ResolutionBPP))); + + *FBAsByte = (UCHAR)Color; + + break; + + default: + + return FALSE; + } + + return TRUE; + } + else + { + return FALSE; + } +} From 4249a125dbcadf21458b8e0ceeac3ea2b35449bf Mon Sep 17 00:00:00 2001 From: c0de90e7 Date: Thu, 18 Nov 2010 02:12:29 +0100 Subject: [PATCH 2/9] Fixed dropshadow glitches and refoctored/changed some functions, everything functionally right now, but room for some optimizations --- .../libs/libconsole/source/ConsoleRender.c | 86 ++++++++++--------- 1 file changed, 46 insertions(+), 40 deletions(-) diff --git a/psl1ght/libs/libconsole/source/ConsoleRender.c b/psl1ght/libs/libconsole/source/ConsoleRender.c index 3a109c18..6652a993 100755 --- a/psl1ght/libs/libconsole/source/ConsoleRender.c +++ b/psl1ght/libs/libconsole/source/ConsoleRender.c @@ -53,82 +53,77 @@ int GetBitFromLogicConsoleBitmap(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, } } -void NextInLogicBitmap(UCHAR PosSize, PULONG pPos, PUCHAR pPosIntoPos) +void FromSlotAndOffsetToCombined(PCONSOLE_RENDER Render, ULONG SlotX, ULONG SlotY, UCHAR OffsetX, UCHAR OffsetY, PULONG pCombinedX, PULONG pCombinedY) { - if(((*pPosIntoPos)++)==PosSize) - { - (*pPosIntoPos) = 0; - (*pPos)++; - } + *pCombinedX = (SlotX*Render->CharacterWidth)+OffsetX; + *pCombinedY = (SlotY*Render->CharacterHeight)+OffsetY; } -void PreviousInLogicBitmap(UCHAR PosSize, PULONG pPos, PUCHAR pPosIntoPos) +void FromCombinedToSlotAndOffset(PCONSOLE_RENDER Render, ULONG CombinedX, ULONG CombinedY, PULONG pSlotX, PULONG pSlotY, PUCHAR pOffsetX, PUCHAR pOffsetY) { - if(((*pPosIntoPos)--)==((UCHAR)-1)) - { - (*pPosIntoPos) = PosSize-1; - (*pPos)--; - } + *pSlotX = CombinedX/Render->CharacterWidth; + *pOffsetX = CombinedX%Render->CharacterWidth; + *pSlotY = CombinedY/Render->CharacterHeight; + *pOffsetY = CombinedY%Render->CharacterHeight; } int IsCharPixelDropShadow(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, ULONG CharCol, ULONG CharRow, UCHAR XOffsetIntoChar, UCHAR YOffsetIntoChar) { - ULONG SourceCharCol = CharCol; - ULONG SourceCharRow = CharRow; - UCHAR SourceXOffsetIntoChar = XOffsetIntoChar; - UCHAR SourceYOffsetIntoChar = YOffsetIntoChar; + ULONG CombinedX,CombinedY; + + FromSlotAndOffsetToCombined(Render,CharCol,CharRow,XOffsetIntoChar,YOffsetIntoChar,&CombinedX,&CombinedY); switch(Render->DropShadowOrientation) { case CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTH: - NextInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); - + CombinedY++; + break; case CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHEAST: - NextInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); - PreviousInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + CombinedY++; + CombinedX--; break; case CONSOLE_RENDER_DROPSHADOWORIENTATION_EAST: - PreviousInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + CombinedX--; break; case CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHEAST: - PreviousInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); - PreviousInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + CombinedX--; + CombinedY--; break; case CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTH: - PreviousInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); + CombinedY--; break; case CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHWEST: - PreviousInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); - NextInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + CombinedX++; + CombinedY--; break; case CONSOLE_RENDER_DROPSHADOWORIENTATION_WEST: - NextInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + CombinedX++; break; case CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHWEST: - NextInLogicBitmap(Render->CharacterHeight,&CharRow,&SourceYOffsetIntoChar); - NextInLogicBitmap(Render->CharacterWidth,&CharCol,&SourceXOffsetIntoChar); + CombinedX++; + CombinedY++; break; @@ -136,10 +131,12 @@ int IsCharPixelDropShadow(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, ULONG return FALSE; } - return GetBitFromLogicConsoleBitmap(Render,Console,SourceCharCol,SourceCharRow,SourceXOffsetIntoChar,SourceYOffsetIntoChar); + FromCombinedToSlotAndOffset(Render,CombinedX,CombinedY,&CharCol,&CharRow,&XOffsetIntoChar,&YOffsetIntoChar); + + return GetBitFromLogicConsoleBitmap(Render,Console,CharCol,CharRow,XOffsetIntoChar,YOffsetIntoChar); } -void HandleBackgroundPixelDraw(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video, ULONG X, ULONG Y, UCHAR i, UCHAR j, UCHAR BackAttr) +void HandleBackgroundPixelDraw(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video, ULONG X, ULONG Y, UCHAR i, UCHAR j, UCHAR BackAttr, int Masked) { switch(Render->RenderingFlags) { @@ -151,7 +148,7 @@ void HandleBackgroundPixelDraw(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, P } else { - if(BackAttr!=Render->TransparentTextModeColor) + if((BackAttr!=Render->TransparentTextModeColor)||(Masked)) { CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[BackAttr]); } @@ -177,7 +174,7 @@ void HandleBackgroundPixelDraw(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, P case CONSOLE_RENDER_RENDERING_FLAG_TRANSPARENT: - if(BackAttr!=Render->TransparentTextModeColor) + if((BackAttr!=Render->TransparentTextModeColor)||(Masked)) { CONSOLE_VIDEO_PutPixel(Video, (X*Render->CharacterWidth)+i, (Y*Render->CharacterHeight)+j, Render->BasicColors[BackAttr]); } @@ -211,7 +208,7 @@ void DrawAttrCharPairXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE } else { - HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,BackAttr); + HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,BackAttr,FALSE); } } @@ -227,6 +224,7 @@ void DrawAttrCharPairUnderCursorXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Consol UCHAR i, j; UCHAR BackAttr, TextAttr; ULONG MaskedBackAttr, MaskedTextAttr; + int Masked; BackAttr = Attr>>4; TextAttr = Attr&0x0F; @@ -246,7 +244,9 @@ void DrawAttrCharPairUnderCursorXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Consol { for(i = 0;iCharacterWidth;i++) { - if(GetBitLeftToRight(pCurrentCursorMask, i)) + Masked = GetBitLeftToRight(pCurrentCursorMask, i); + + if(Masked) { MaskedBackAttr = (15-BackAttr)&0x07; MaskedTextAttr = (15-TextAttr)&0x07; @@ -263,7 +263,7 @@ void DrawAttrCharPairUnderCursorXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Consol } else { - HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,MaskedBackAttr); + HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,MaskedBackAttr,Masked); } } @@ -280,6 +280,7 @@ void DrawAttrCharPairUnderMousePointerXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC UCHAR i, j; UCHAR BackAttr, TextAttr; ULONG MaskedBackAttr, MaskedTextAttr; + int Masked; BackAttr = Attr>>4; TextAttr = Attr&0x0F; @@ -292,7 +293,9 @@ void DrawAttrCharPairUnderMousePointerXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC { for(i = 0;iCharacterWidth;i++) { - if(GetBitLeftToRight(pMousePointerMask, i)) + Masked = GetBitLeftToRight(pMousePointerMask, i); + + if(Masked) { MaskedBackAttr = (15-BackAttr)&0x07; MaskedTextAttr = (15-TextAttr)&0x07; @@ -309,7 +312,7 @@ void DrawAttrCharPairUnderMousePointerXY(PCONSOLE_RENDER Render, PCONSOLE_LOGIC } else { - HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,MaskedBackAttr); + HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,MaskedBackAttr,Masked); } } @@ -327,6 +330,7 @@ void DrawAttrCharPairUnderCursorAndMousePointerXY(PCONSOLE_RENDER Render, PCONSO UCHAR i, j; UCHAR BackAttr, TextAttr; ULONG MaskedBackAttr, MaskedTextAttr; + int Masked; BackAttr = Attr>>4; TextAttr = Attr&0x0F; @@ -348,7 +352,9 @@ void DrawAttrCharPairUnderCursorAndMousePointerXY(PCONSOLE_RENDER Render, PCONSO { for(i = 0;iCharacterWidth;i++) { - if(GetBitLeftToRight(pCurrentCursorMask, i)^GetBitLeftToRight(pMousePointerMask, i)) + Masked = GetBitLeftToRight(pCurrentCursorMask, i)^GetBitLeftToRight(pMousePointerMask, i); + + if(Masked) { MaskedBackAttr = (15-BackAttr)&0x07; MaskedTextAttr = (15-TextAttr)&0x07; @@ -365,7 +371,7 @@ void DrawAttrCharPairUnderCursorAndMousePointerXY(PCONSOLE_RENDER Render, PCONSO } else { - HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,MaskedBackAttr); + HandleBackgroundPixelDraw(Render,Console,Video,X,Y,i,j,MaskedBackAttr,Masked); } } From 822cd5d84552aef29b7b9aa2022ad7596a6ca926 Mon Sep 17 00:00:00 2001 From: c0de90e7 Date: Thu, 18 Nov 2010 07:17:58 +0100 Subject: [PATCH 3/9] Removed 8x14 ( was russian so I deleted it for the sake or standardness ); Added 8x8X2 and 8x16X2 --- psl1ght/libs/libconsole/include/8x16stdX2.fnt | Bin 0 -> 16384 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 psl1ght/libs/libconsole/include/8x16stdX2.fnt diff --git a/psl1ght/libs/libconsole/include/8x16stdX2.fnt b/psl1ght/libs/libconsole/include/8x16stdX2.fnt new file mode 100755 index 0000000000000000000000000000000000000000..9a99c3d29a03baedaba4c2d51804e10daf10f888 GIT binary patch literal 16384 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 Date: Thu, 18 Nov 2010 07:35:22 +0100 Subject: [PATCH 4/9] Deleted unused files --- psl1ght/libs/libconsole/include/8x14std.fnt | Bin 3584 -> 0 bytes psl1ght/libs/libconsole/include/8x14std.inc | 283 -------------------- 2 files changed, 283 deletions(-) delete mode 100755 psl1ght/libs/libconsole/include/8x14std.fnt delete mode 100755 psl1ght/libs/libconsole/include/8x14std.inc diff --git a/psl1ght/libs/libconsole/include/8x14std.fnt b/psl1ght/libs/libconsole/include/8x14std.fnt deleted file mode 100755 index 676d20eb74187e2ca9b770bc7ccc7afdd1bbef42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3584 zcmZ`*y^7;j6uwMAm2jL+Bxbfrv8C96R|GKwOCDjFf*XaJLz0x95a>OEQu?xi$ThF{^YBK9NUu5?>+yLbA70;f4;tc`{uf0a@F3q z?d_%&%#{tmXG2jLX8wRAdA`|fk|bwdl2>h883q#A33FP4%`I#Kn35MSUKFfGq}w-d z-@dsO-tpkmXVdw7K2^D*$P*Z4?DUJ%G)*tI4~$)%U!9+yf4f=F2u+gve3Rd+US=VJ2*Pgj_K{EJ% zXNA)w7|aR}e-0g!6gGEn$&=ASQ{gZ)QIFvG(feO&up`QL{o;mf7WUKEGtiByiC=ND(A4OX5z@ zi4=L8Oa6$B$kjRvGo=%Chgg+svPTgNPPAgauJ0D>TJxS{Q^_c+_?jhau>>s2qevy= zQC`lQI6h{{2DyFgc-aJ4Z8jUWf|%4M=pB##RZ$d64@zFmO~XWwU7lE8V5;IT+axl3 zYA3|7p=NNxYPDLXF;CoZy)ZHAmP5y!+sN!ZqZFRcseZR~06WpbQ*m`tWrCdmW@ zd_9|Kd?OeyvE69K7<}Dyyz#Tt!#nLd=Pn`WW8Q?YSzf}X#Yp2Drs*R>7?11( zgb+lF0$KeaAO$o@aDtpud8=*$n>n_Wbol_$T;Rv8gmF?}D@+IB0@&r!4BK6%Ot9l| z5lmcjHu02*M`ofw0}NAzKDKCc>{5cJ{sFT6`CBYrdjHb0+uuuw=5DoHbAOguh&k7v zIC#b&-G_;jkz>!G7fi8Cl}!h&4+e`Ns2(I~hy3r1Vb>|oQ+F)tVkHxu%?*biOPXi`@>Uq>vR9 ztCK=~fpRc$kq#bmg>%Un+FQeMzWRtc&#iN^6382)T t-n`8TyLa!KOh}A8;8&FQWj Date: Thu, 18 Nov 2010 13:41:28 +0100 Subject: [PATCH 5/9] First structural reordering of files Added Makefile for libconsole --- psl1ght/include/console/8x16std.fnt | Bin 0 -> 4096 bytes psl1ght/include/console/8x16std.inc | 323 +++++ psl1ght/include/console/8x16stdX2.fnt | Bin 0 -> 16384 bytes psl1ght/include/console/8x16stdX2.inc | 1268 +++++++++++++++++ psl1ght/include/console/8x8std.fnt | Bin 0 -> 2048 bytes psl1ght/include/console/8x8std.inc | 164 +++ psl1ght/include/console/8x8stdX2.fnt | Bin 0 -> 8192 bytes psl1ght/include/console/8x8stdX2.inc | 638 +++++++++ psl1ght/include/console/Console.h | 157 ++ psl1ght/include/console/ConsoleBase.h | 14 + psl1ght/include/console/ConsoleLogic.h | 58 + psl1ght/include/console/ConsoleRender.h | 56 + psl1ght/include/console/ConsoleVideo.h | 36 + psl1ght/libs/libconsole/source/ConsoleLogic.c | 5 +- .../libs/libconsole/source/ConsoleRender.c | 2 +- psl1ght/libs/libconsole/source/ConsoleVideo.c | 2 +- 16 files changed, 2720 insertions(+), 3 deletions(-) create mode 100755 psl1ght/include/console/8x16std.fnt create mode 100755 psl1ght/include/console/8x16std.inc create mode 100755 psl1ght/include/console/8x16stdX2.fnt create mode 100755 psl1ght/include/console/8x16stdX2.inc create mode 100755 psl1ght/include/console/8x8std.fnt create mode 100755 psl1ght/include/console/8x8std.inc create mode 100755 psl1ght/include/console/8x8stdX2.fnt create mode 100755 psl1ght/include/console/8x8stdX2.inc create mode 100755 psl1ght/include/console/Console.h create mode 100755 psl1ght/include/console/ConsoleBase.h create mode 100755 psl1ght/include/console/ConsoleLogic.h create mode 100755 psl1ght/include/console/ConsoleRender.h create mode 100755 psl1ght/include/console/ConsoleVideo.h diff --git a/psl1ght/include/console/8x16std.fnt b/psl1ght/include/console/8x16std.fnt new file mode 100755 index 0000000000000000000000000000000000000000..672d0e1a999f880cef168b4071c682da691cfd08 GIT binary patch literal 4096 zcmZu!&1&OT6uzXOmGGoH(U{C;9ze9<5v_1w=qq$DGDV$*XtVMdDwN44k5C9*chh$W zxG{(>OqPQ|uF1;Ylwuf2ya-ai^K-8xx5qP*&OP5f|My5S=8%f3->$B1Z?3KikrYkU zH1loKC~r(wgYxLu?mUk2E*r%0cDoINSmi-nU~|i38IVAv4byf`28ehyPT#yqWjim< zZ*FgI<|;oOeDURU0h)@2I0eN43&}KJo^q<9d8L@QxH7Lv>JChYgtn;V$yas;YiIA!0r+lPD|8Eb_}-0DPsC z35#@yKFz1_SW^G#3Dg=yy8PN#DeDN6Ite?<&1^PP?Y#ObZPHh*{5Xp8+?vNSikC-i z`C1@9p*At>8}$dFc2p4}%j%5(6B7h^c{j^F@4C!w1b3w$gh_c#a$}+_izX}7Yr-r_ zlkkJR0Lv8kvJwV9Q_x13#!al*W(=}pZCNdFq_e?vv!Rf7$B{?=X}wLH&gWG%pKHUJ zAeurKNb8fA0xwl3crW%m&z9F8#@V8V%co+fMlqf{@+bjcg0vlK?3b7YpOdH~r{@Cu zeeG|`F_5kMmbdv~_mDMD12qPotMjy!kc=W0IrRI8u2qPI^?JRUsei}RzBM@{_-AxL zP96U&e4O4P!r7h8*FGa*nr3^E*XjAY>AU1S)qE+RB)iW3by=og3s08VoZ6%2V~Rz7 z%H7bO_YF)Z9JT7Vl`flk5s6CD*w37{Q+rUImM{< zAWtISbNid>rsprIW>Wp^3bmJ>VCJi;vGapP0d=AH3pubLjlY>+Q}O8E!1a6+ zC@*mctUSuTPq;>!U&to}U*tZIaOlq_q+j!k){Hoz8lUHx0geL*V;-AWR&!*B`)lc}$xgA7xRGhYvBbN#G?q7dOYE~@{%mbgdua}PM4>#Sf>eUZ|4<2KYnvkELZOdZ_GGbENZIgJ+tC3 zRfw}?4Ex*i;&01`(?zczNZ#uY>?br0eH!^Cq7@STrAn!Q# zODA4kIy>0kSYG_$<7!RP{jgpxfBZ*K=c4-E%I<((9FPL7r*faHmdoWzzRwN)ZM9rr z1Yxif;oA&{k%%}V`uryn4gk!w_Wgv_0_v7LT^PbIUrgAUZkVhjRAmc{aQ+KUc^%If z6HLUGWbPl~Pw_cBCY3UuXtBV{z7Q#{pLyUv71rD^OlZ6(;ZPBFzLs_e4vYNL1^x5F z_Jn>uyCH@NiGY2}4^C*J9#S`cOr)ay+=dYhN&FMyd8p6r&A!atN?@N}@aNs%Sr$t? XOG=F`1wa?eF!{6JKDm(9(7XQ&G-=%) literal 0 HcmV?d00001 diff --git a/psl1ght/include/console/8x16std.inc b/psl1ght/include/console/8x16std.inc new file mode 100755 index 00000000..800a16b1 --- /dev/null +++ b/psl1ght/include/console/8x16std.inc @@ -0,0 +1,323 @@ + +#define CHARMASK8X16STD_LEN 4096 + + static unsigned char CharMask8x16std[]= + { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81, + 0x81,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0xff,0xdb,0xff,0xff, + 0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x6c,0xfe,0xfe,0xfe,0xfe,0x7c,0x38,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x10,0x38,0x7c,0xfe,0x7c,0x38,0x10,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x3c,0xe7,0xe7,0xe7,0x18,0x18, + 0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0xff,0xff, + 0x7e,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x18,0x3c,0x3c,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, + 0xff,0xff,0xff,0xff,0xe7,0xc3,0xc3,0xe7,0xff,0xff,0xff,0xff,0xff, + 0xff,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x42,0x42,0x66,0x3c,0x00, + 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xc3,0x99,0xbd,0xbd, + 0x99,0xc3,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x1e,0x0e,0x1a,0x32, + 0x78,0xcc,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x3c, + 0x66,0x66,0x66,0x66,0x3c,0x18,0x7e,0x18,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x3f,0x33,0x3f,0x30,0x30,0x30,0x30,0x70,0xf0,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7f,0x63,0x7f,0x63,0x63,0x63,0x63,0x67, + 0xe7,0xe6,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0xdb,0x3c, + 0xe7,0x3c,0xdb,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0, + 0xf0,0xf8,0xfe,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00, + 0x02,0x06,0x0e,0x1e,0x3e,0xfe,0x3e,0x1e,0x0e,0x06,0x02,0x00,0x00, + 0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0x18,0x18,0x18,0x7e,0x3c,0x18, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66, + 0x66,0x00,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xdb,0xdb, + 0xdb,0x7b,0x1b,0x1b,0x1b,0x1b,0x1b,0x00,0x00,0x00,0x00,0x00,0x7c, + 0xc6,0x60,0x38,0x6c,0xc6,0xc6,0x6c,0x38,0x0c,0xc6,0x7c,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xfe,0xfe,0xfe, + 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0x18,0x18,0x18,0x7e, + 0x3c,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x7e,0x3c,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x0c,0xfe,0x0c,0x18,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x60,0xfe,0x60,0x30, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, + 0xc0,0xc0,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x24,0x66,0xff,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x10,0x38,0x38,0x7c,0x7c,0xfe,0xfe,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xfe,0x7c,0x7c,0x38,0x38,0x10, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x3c, + 0x3c,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x66, + 0x66,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x6c,0x6c,0xfe,0x6c,0x6c,0x6c,0xfe,0x6c,0x6c, + 0x00,0x00,0x00,0x00,0x18,0x18,0x7c,0xc6,0xc2,0xc0,0x7c,0x06,0x06, + 0x86,0xc6,0x7c,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xc2,0xc6, + 0x0c,0x18,0x30,0x60,0xc6,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x38, + 0x6c,0x6c,0x38,0x76,0xdc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, + 0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0c,0x18,0x30,0x30,0x30,0x30,0x30,0x30, + 0x18,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x18,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x66,0x3c,0xff,0x3c,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x18,0x18,0x7e,0x18,0x18,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18, + 0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x02,0x06,0x0c,0x18,0x30,0x60,0xc0,0x80,0x00,0x00,0x00, + 0x00,0x00,0x00,0x3c,0x66,0xc3,0xc3,0xdb,0xdb,0xc3,0xc3,0x66,0x3c, + 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x18,0x18, + 0x18,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0x06,0x0c, + 0x18,0x30,0x60,0xc0,0xc6,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x7c, + 0xc6,0x06,0x06,0x3c,0x06,0x06,0x06,0xc6,0x7c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x0c,0x1c,0x3c,0x6c,0xcc,0xfe,0x0c,0x0c,0x0c,0x1e,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0xc0,0xc0,0xc0,0xfc,0x06,0x06,0x06, + 0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x60,0xc0,0xc0,0xfc, + 0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc6, + 0x06,0x06,0x0c,0x18,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00,0x00, + 0x00,0x7c,0xc6,0xc6,0xc6,0x7c,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00, + 0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0x7e,0x06,0x06,0x06,0x0c, + 0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00, + 0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x06,0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x06,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x7e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0c,0x06,0x0c, + 0x18,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0x0c, + 0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x7c,0xc6,0xc6,0xde,0xde,0xde,0xdc,0xc0,0x7c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x10,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x66,0x66,0x66,0x7c,0x66,0x66,0x66, + 0x66,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0xc2,0xc0,0xc0, + 0xc0,0xc0,0xc2,0x66,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x6c, + 0x66,0x66,0x66,0x66,0x66,0x66,0x6c,0xf8,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x62,0x66,0xfe,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x60,0x60, + 0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0xc2,0xc0,0xc0,0xde, + 0xc6,0xc6,0x66,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6, + 0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3c,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00, + 0x00,0x00,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0xcc,0xcc,0xcc,0x78, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe6,0x66,0x66,0x6c,0x78,0x78,0x6c, + 0x66,0x66,0xe6,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x60,0x60,0x60, + 0x60,0x60,0x60,0x62,0x66,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xc3, + 0xe7,0xff,0xff,0xdb,0xc3,0xc3,0xc3,0xc3,0xc3,0x00,0x00,0x00,0x00, + 0x00,0x00,0xc6,0xe6,0xf6,0xfe,0xde,0xce,0xc6,0xc6,0xc6,0xc6,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, + 0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x66,0x66,0x66,0x7c, + 0x60,0x60,0x60,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6, + 0xc6,0xc6,0xc6,0xc6,0xc6,0xd6,0xde,0x7c,0x0c,0x0e,0x00,0x00,0x00, + 0x00,0xfc,0x66,0x66,0x66,0x7c,0x6c,0x66,0x66,0x66,0xe6,0x00,0x00, + 0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0x60,0x38,0x0c,0x06,0xc6,0xc6, + 0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xdb,0x99,0x18,0x18,0x18, + 0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6, + 0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, + 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x66,0x3c,0x18,0x00,0x00,0x00, + 0x00,0x00,0x00,0xc3,0xc3,0xc3,0xc3,0xc3,0xdb,0xdb,0xff,0x66,0x66, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0x66,0x3c,0x18,0x18,0x3c, + 0x66,0xc3,0xc3,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0xc3,0x66, + 0x3c,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xff, + 0xc3,0x86,0x0c,0x18,0x30,0x60,0xc1,0xc3,0xff,0x00,0x00,0x00,0x00, + 0x00,0x00,0x3c,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3c,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0x70,0x38,0x1c,0x0e, + 0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x0c,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c,0x0c,0x3c,0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0xc6, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, + 0x00,0x00,0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0c,0x7c, + 0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x60,0x60, + 0x78,0x6c,0x66,0x66,0x66,0x66,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x7c,0xc6,0xc0,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00, + 0x00,0x00,0x00,0x1c,0x0c,0x0c,0x3c,0x6c,0xcc,0xcc,0xcc,0xcc,0x76, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xc0, + 0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x6c,0x64,0x60, + 0xf0,0x60,0x60,0x60,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c,0x0c,0xcc,0x78,0x00, + 0x00,0x00,0xe0,0x60,0x60,0x6c,0x76,0x66,0x66,0x66,0x66,0xe6,0x00, + 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x38,0x18,0x18,0x18,0x18, + 0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x0e,0x06, + 0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3c,0x00,0x00,0x00,0xe0,0x60, + 0x60,0x66,0x6c,0x78,0x78,0x6c,0x66,0xe6,0x00,0x00,0x00,0x00,0x00, + 0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe6,0xff,0xdb,0xdb,0xdb,0xdb, + 0xdb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdc,0x66,0x66, + 0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xdc,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60,0xf0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c, + 0x0c,0x0c,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xdc,0x76,0x66,0x60, + 0x60,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c, + 0xc6,0x60,0x38,0x0c,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x10, + 0x30,0x30,0xfc,0x30,0x30,0x30,0x30,0x36,0x1c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0xc3,0xc3,0x66, + 0x3c,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3, + 0xc3,0xdb,0xdb,0xff,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc3,0x66,0x3c,0x18,0x3c,0x66,0xc3,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7e,0x06,0x0c, + 0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xcc,0x18,0x30,0x60,0xc6, + 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x18,0x18,0x18,0x70,0x18, + 0x18,0x18,0x18,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18, + 0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00, + 0x70,0x18,0x18,0x18,0x0e,0x18,0x18,0x18,0x18,0x70,0x00,0x00,0x00, + 0x00,0x00,0x00,0x76,0xdc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0xc6,0xc6, + 0xc6,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0xc2,0xc0, + 0xc0,0xc0,0xc2,0x66,0x3c,0x0c,0x06,0x7c,0x00,0x00,0x00,0x00,0xcc, + 0x00,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, + 0x00,0x0c,0x18,0x30,0x00,0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00, + 0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0x00,0x78,0x0c,0x7c,0xcc,0xcc, + 0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0xcc,0x00,0x00,0x78,0x0c, + 0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18, + 0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00, + 0x38,0x6c,0x38,0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x60,0x60,0x66,0x3c,0x0c, + 0x06,0x3c,0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0x00,0x7c,0xc6,0xfe, + 0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0x00,0x00, + 0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x60, + 0x30,0x18,0x00,0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00, + 0x00,0x00,0x00,0x66,0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x3c, + 0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x66,0x00,0x38,0x18,0x18,0x18, + 0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x38, + 0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0xc6,0x00, + 0x10,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00, + 0x38,0x6c,0x38,0x00,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0x00, + 0x00,0x00,0x00,0x18,0x30,0x60,0x00,0xfe,0x66,0x60,0x7c,0x60,0x60, + 0x66,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x3b, + 0x1b,0x7e,0xd8,0xdc,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x6c, + 0xcc,0xcc,0xfe,0xcc,0xcc,0xcc,0xcc,0xce,0x00,0x00,0x00,0x00,0x00, + 0x10,0x38,0x6c,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00, + 0x00,0x00,0x00,0x00,0xc6,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6, + 0x7c,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x7c,0xc6,0xc6, + 0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x30,0x78,0xcc,0x00, + 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x60, + 0x30,0x18,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00, + 0x00,0x00,0x00,0xc6,0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7e, + 0x06,0x0c,0x78,0x00,0x00,0xc6,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6, + 0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0xc6,0x00,0xc6,0xc6,0xc6, + 0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x18,0x18, + 0x7e,0xc3,0xc0,0xc0,0xc0,0xc3,0x7e,0x18,0x18,0x00,0x00,0x00,0x00, + 0x00,0x38,0x6c,0x64,0x60,0xf0,0x60,0x60,0x60,0x60,0xe6,0xfc,0x00, + 0x00,0x00,0x00,0x00,0x00,0xc3,0x66,0x3c,0x18,0xff,0x18,0xff,0x18, + 0x18,0x18,0x00,0x00,0x00,0x00,0x00,0xfc,0x66,0x66,0x7c,0x62,0x66, + 0x6f,0x66,0x66,0x66,0xf3,0x00,0x00,0x00,0x00,0x00,0x0e,0x1b,0x18, + 0x18,0x18,0x7e,0x18,0x18,0x18,0x18,0x18,0xd8,0x70,0x00,0x00,0x00, + 0x18,0x30,0x60,0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00, + 0x00,0x00,0x00,0x0c,0x18,0x30,0x00,0x38,0x18,0x18,0x18,0x18,0x18, + 0x3c,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x60,0x00,0x7c,0xc6,0xc6, + 0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x60,0x00, + 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x00, + 0x76,0xdc,0x00,0xdc,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00, + 0x00,0x76,0xdc,0x00,0xc6,0xe6,0xf6,0xfe,0xde,0xce,0xc6,0xc6,0xc6, + 0x00,0x00,0x00,0x00,0x00,0x3c,0x6c,0x6c,0x3e,0x00,0x7e,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x6c,0x6c,0x38,0x00, + 0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30, + 0x30,0x00,0x30,0x30,0x60,0xc0,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc0,0xc0,0xc0,0xc0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x06,0x06,0x06, + 0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0xc2,0xc6,0xcc,0x18, + 0x30,0x60,0xce,0x9b,0x06,0x0c,0x1f,0x00,0x00,0x00,0xc0,0xc0,0xc2, + 0xc6,0xcc,0x18,0x30,0x66,0xce,0x96,0x3e,0x06,0x06,0x00,0x00,0x00, + 0x00,0x18,0x18,0x00,0x18,0x18,0x18,0x3c,0x3c,0x3c,0x18,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x6c,0xd8,0x6c,0x36,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0x6c,0x36, + 0x6c,0xd8,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x44,0x11,0x44,0x11, + 0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x55,0xaa, + 0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55, + 0xaa,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77, + 0xdd,0x77,0xdd,0x77,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0xf8,0x18,0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xf6,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0xf8,0x18, + 0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x36,0x36,0x36,0x36, + 0x36,0xf6,0x06,0xf6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x00,0x00,0x00,0x00,0x00,0xfe,0x06,0xf6,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xf6,0x06,0xfe, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18, + 0x18,0x18,0x18,0xf8,0x18,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x1f,0x18,0x1f,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x3f,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x30,0x37, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0xf7,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xff,0x00,0xf7,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x37,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x36,0xf7, + 0x00,0xf7,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x18,0x18,0x18, + 0x18,0x18,0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xff,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xff,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0x36,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x18,0x18,0x18,0x1f,0x18,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x18,0x1f,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, + 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, + 0x36,0x36,0xff,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x18,0x18, + 0x18,0x18,0x18,0xff,0x18,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, + 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x76,0xdc,0xd8,0xd8,0xd8,0xdc,0x76,0x00,0x00,0x00,0x00,0x00, + 0x00,0x78,0xcc,0xcc,0xcc,0xd8,0xcc,0xc6,0xc6,0xc6,0xcc,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfe,0xc6,0xc6,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, + 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x6c,0x6c,0x6c, + 0x6c,0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc6, + 0x60,0x30,0x18,0x30,0x60,0xc6,0xfe,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x7e,0xd8,0xd8,0xd8,0xd8,0xd8,0x70,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60, + 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xdc,0x18,0x18,0x18, + 0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x18,0x3c, + 0x66,0x66,0x66,0x3c,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0x6c,0x38,0x00,0x00,0x00,0x00, + 0x00,0x00,0x38,0x6c,0xc6,0xc6,0xc6,0x6c,0x6c,0x6c,0x6c,0xee,0x00, + 0x00,0x00,0x00,0x00,0x00,0x1e,0x30,0x18,0x0c,0x3e,0x66,0x66,0x66, + 0x66,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0xdb, + 0xdb,0xdb,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, + 0x06,0x7e,0xdb,0xdb,0xf3,0x7e,0x60,0xc0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1c,0x30,0x60,0x60,0x7c,0x60,0x60,0x60,0x30,0x1c,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, + 0xc6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xfe, + 0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, + 0x18,0x7e,0x18,0x18,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x30,0x18,0x0c,0x06,0x0c,0x18,0x30,0x00,0x7e,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x00,0x7e, + 0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x1b,0x1b,0x18,0x18,0x18,0x18, + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, + 0x18,0x18,0xd8,0xd8,0xd8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x18,0x18,0x00,0x7e,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x76,0xdc,0x00,0x76,0xdc,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x38,0x6c,0x6c,0x38,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0f,0x0c,0x0c,0x0c,0x0c,0x0c,0xec,0x6c,0x6c,0x3c,0x1c,0x00,0x00, + 0x00,0x00,0x00,0xd8,0x6c,0x6c,0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xd8,0x30,0x60,0xc8,0xf8,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c, + 0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00 + }; + diff --git a/psl1ght/include/console/8x16stdX2.fnt b/psl1ght/include/console/8x16stdX2.fnt new file mode 100755 index 0000000000000000000000000000000000000000..9a99c3d29a03baedaba4c2d51804e10daf10f888 GIT binary patch literal 16384 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 + +#include +#include +#include + + +#define CONSOLE_BASIC_COLOR_BLACK 0 +#define CONSOLE_BASIC_COLOR_BLUE 1 +#define CONSOLE_BASIC_COLOR_GREEN 2 +#define CONSOLE_BASIC_COLOR_CYAN 3 +#define CONSOLE_BASIC_COLOR_RED 4 +#define CONSOLE_BASIC_COLOR_MAGENTA 5 +#define CONSOLE_BASIC_COLOR_BROWN 6 +#define CONSOLE_BASIC_COLOR_LIGHTGRAY 7 +#define CONSOLE_BASIC_COLOR_DARKGRAY 8 +#define CONSOLE_BASIC_COLOR_BRIGHTBLUE 9 +#define CONSOLE_BASIC_COLOR_BRIGHTGREEN 10 +#define CONSOLE_BASIC_COLOR_BRIGHTCYAN 11 +#define CONSOLE_BASIC_COLOR_BRIGHTRED 12 +#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA 13 +#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW 14 +#define CONSOLE_BASIC_COLOR_WHITE 15 + +#define CONSOLE_BASIC_COLOR_BLACK_RGB_8 0x00000000 +#define CONSOLE_BASIC_COLOR_BLUE_RGB_8 0x00000001 +#define CONSOLE_BASIC_COLOR_GREEN_RGB_8 0x00000002 +#define CONSOLE_BASIC_COLOR_CYAN_RGB_8 0x00000003 +#define CONSOLE_BASIC_COLOR_RED_RGB_8 0x00000004 +#define CONSOLE_BASIC_COLOR_MAGENTA_RGB_8 0x00000005 +#define CONSOLE_BASIC_COLOR_BROWN_RGB_8 0x00000006 +#define CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_8 0x00000007 +#define CONSOLE_BASIC_COLOR_DARKGRAY_RGB_8 0x00000008 +#define CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_8 0x00000009 +#define CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_8 0x0000000A +#define CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_8 0x0000000B +#define CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_8 0x0000000C +#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_8 0x0000000D +#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_8 0x0000000E +#define CONSOLE_BASIC_COLOR_WHITE_RGB_8 0x0000000F + +#define CONSOLE_BASIC_COLOR_BLACK_RGB_16 0x00000000 +#define CONSOLE_BASIC_COLOR_BLUE_RGB_16 0x0000000F +#define CONSOLE_BASIC_COLOR_GREEN_RGB_16 0x000003E0 +#define CONSOLE_BASIC_COLOR_CYAN_RGB_16 0x000003EF +#define CONSOLE_BASIC_COLOR_RED_RGB_16 0x00007800 +#define CONSOLE_BASIC_COLOR_MAGENTA_RGB_16 0x0000780F +#define CONSOLE_BASIC_COLOR_BROWN_RGB_16 0x000079E0 +#define CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_16 0x0000BDF7 +#define CONSOLE_BASIC_COLOR_DARKGRAY_RGB_16 0x000039E7 +#define CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_16 0x0000001F +#define CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_16 0x000007E0 +#define CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_16 0x000007FF +#define CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_16 0x0000F800 +#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_16 0x0000F81F +#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_16 0x0000FFE7 +#define CONSOLE_BASIC_COLOR_WHITE_RGB_16 0x0000FFFF + +#define CONSOLE_BASIC_COLOR_BLACK_RGB_32 0xFF000000 +#define CONSOLE_BASIC_COLOR_BLUE_RGB_32 0xFF00007F +#define CONSOLE_BASIC_COLOR_GREEN_RGB_32 0xFF007F00 +#define CONSOLE_BASIC_COLOR_CYAN_RGB_32 0xFF007F7F +#define CONSOLE_BASIC_COLOR_RED_RGB_32 0xFF7F0000 +#define CONSOLE_BASIC_COLOR_MAGENTA_RGB_32 0xFF7F007F +#define CONSOLE_BASIC_COLOR_BROWN_RGB_32 0xFF7F3F00 +#define CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_32 0xFFBFBFBF +#define CONSOLE_BASIC_COLOR_DARKGRAY_RGB_32 0xFF3F3F3F +#define CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_32 0xFF0000FF +#define CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_32 0xFF00FF00 +#define CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_32 0xFF00FFFF +#define CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_32 0xFFFF0000 +#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_32 0xFFFF00FF +#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_32 0xFFFFFF3F +#define CONSOLE_BASIC_COLOR_WHITE_RGB_32 0xFFFFFFFF + + +#include "8x8std.inc" +UCHAR g_8x8CursorMask[8] = { 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF }; +UCHAR g_8x8CursorInsertMask[8] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; +UCHAR g_8x8MousePointerMask[8] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; + +#include "8x8stdX2.inc" +UCHAR g_8x8X2CursorMask[32] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; +UCHAR g_8x8X2CursorInsertMask[32] = { 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 }; +UCHAR g_8x8X2MousePointerMask[32] = { 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 }; + +#include "8x16std.inc" +UCHAR g_8x16CursorMask[16] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF }; +UCHAR g_8x16CursorInsertMask[16] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; +UCHAR g_8x16MousePointerMask[16] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; + +#include "8x16stdX2.inc" +UCHAR g_8x16X2CursorMask[64] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; +UCHAR g_8x16X2CursorInsertMask[64] = { 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,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 }; +UCHAR g_8x16X2MousePointerMask[64] = { 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,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 }; + +ULONG g_BasicColors1BPP[16] = { + CONSOLE_BASIC_COLOR_BLACK_RGB_8, + CONSOLE_BASIC_COLOR_BLUE_RGB_8, + CONSOLE_BASIC_COLOR_GREEN_RGB_8, + CONSOLE_BASIC_COLOR_CYAN_RGB_8, + CONSOLE_BASIC_COLOR_RED_RGB_8, + CONSOLE_BASIC_COLOR_MAGENTA_RGB_8, + CONSOLE_BASIC_COLOR_BROWN_RGB_8, + CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_8, + CONSOLE_BASIC_COLOR_DARKGRAY_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_8, + CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_8, + CONSOLE_BASIC_COLOR_WHITE_RGB_8 +}; + +ULONG g_BasicColors2BPP[16] = { + CONSOLE_BASIC_COLOR_BLACK_RGB_16, + CONSOLE_BASIC_COLOR_BLUE_RGB_16, + CONSOLE_BASIC_COLOR_GREEN_RGB_16, + CONSOLE_BASIC_COLOR_CYAN_RGB_16, + CONSOLE_BASIC_COLOR_RED_RGB_16, + CONSOLE_BASIC_COLOR_MAGENTA_RGB_16, + CONSOLE_BASIC_COLOR_BROWN_RGB_16, + CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_16, + CONSOLE_BASIC_COLOR_DARKGRAY_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_16, + CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_16, + CONSOLE_BASIC_COLOR_WHITE_RGB_16 +}; + +ULONG g_BasicColors4BPP[16] = { + CONSOLE_BASIC_COLOR_BLACK_RGB_32, + CONSOLE_BASIC_COLOR_BLUE_RGB_32, + CONSOLE_BASIC_COLOR_GREEN_RGB_32, + CONSOLE_BASIC_COLOR_CYAN_RGB_32, + CONSOLE_BASIC_COLOR_RED_RGB_32, + CONSOLE_BASIC_COLOR_MAGENTA_RGB_32, + CONSOLE_BASIC_COLOR_BROWN_RGB_32, + CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_32, + CONSOLE_BASIC_COLOR_DARKGRAY_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_32, + CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_32, + CONSOLE_BASIC_COLOR_WHITE_RGB_32 +}; + +#endif//__CONSOLE_INCLUDED__ diff --git a/psl1ght/include/console/ConsoleBase.h b/psl1ght/include/console/ConsoleBase.h new file mode 100755 index 00000000..2a593db8 --- /dev/null +++ b/psl1ght/include/console/ConsoleBase.h @@ -0,0 +1,14 @@ +#ifndef __CONSOLEBASE_INCLUDED__ +#define __CONSOLEBASE_INCLUDED__ + +#define FALSE 0 +#define TRUE 1 + +#define UCHAR unsigned char +#define PUCHAR unsigned char* +#define USHORT unsigned short +#define PUSHORT unsigned short* +#define ULONG unsigned int +#define PULONG unsigned int* + +#endif//__CONSOLEBASE_INCLUDED__ diff --git a/psl1ght/include/console/ConsoleLogic.h b/psl1ght/include/console/ConsoleLogic.h new file mode 100755 index 00000000..4ff0e29a --- /dev/null +++ b/psl1ght/include/console/ConsoleLogic.h @@ -0,0 +1,58 @@ +#ifndef __CONSOLELOGIC_INCLUDED__ +#define __CONSOLELOGIC_INCLUDED__ + +#include + +typedef struct _ATTR_CHAR_PAIR +{ + UCHAR Attr; + UCHAR Char; +}ATTR_CHAR_PAIR,*PATTR_CHAR_PAIR; + +typedef struct _CONSOLE_LOGIC +{ + ULONG Columns; + ULONG Rows; + ULONG CursorX; + ULONG CursorY; + UCHAR CursorShow; + UCHAR CursorInsert; + ULONG MousePointerX; + ULONG MousePointerY; + UCHAR MousePointerShow; + PATTR_CHAR_PAIR AttrCharPairGrid; + PUCHAR ChangedAttrCharPairs; + UCHAR CursorChanged; + UCHAR MousePointerChanged; +}CONSOLE_LOGIC,*PCONSOLE_LOGIC; + +int CONSOLE_LOGIC_Initialize(PCONSOLE_LOGIC Console, ULONG Columns, ULONG Rows); +int CONSOLE_LOGIC_Finalize(PCONSOLE_LOGIC Console); +ULONG CONSOLE_LOGIC_GetColumns(PCONSOLE_LOGIC Console); +ULONG CONSOLE_LOGIC_GetRows(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_PutAttrCharPairXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Attr, UCHAR Char); +int CONSOLE_LOGIC_GetAttrCharPairXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pAttr, PUCHAR pChar); +int CONSOLE_LOGIC_PutCharXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Char); +int CONSOLE_LOGIC_GetCharXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pChar); +int CONSOLE_LOGIC_PutAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Attr); +int CONSOLE_LOGIC_GetAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pAttr); +int CONSOLE_LOGIC_PutBackAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR BackAttr); +int CONSOLE_LOGIC_GetBackAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pBackAttr); +int CONSOLE_LOGIC_PutTextAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR TextAttr); +int CONSOLE_LOGIC_GetTextAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pTextAttr); +int CONSOLE_LOGIC_GetCursorXY(PCONSOLE_LOGIC Console, PULONG pX, PULONG pY); +int CONSOLE_LOGIC_ShowCursor(PCONSOLE_LOGIC Console, UCHAR Show); +int CONSOLE_LOGIC_IsCursorVisible(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_PutCursorXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y); +int CONSOLE_LOGIC_PutCursorInsert(PCONSOLE_LOGIC Console, UCHAR Insert); +int CONSOLE_LOGIC_IsCursorInsert(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_GetMousePointerXY(PCONSOLE_LOGIC Console, PULONG pX, PULONG pY); +int CONSOLE_LOGIC_ShowMousePointer(PCONSOLE_LOGIC Console, UCHAR Show); +int CONSOLE_LOGIC_IsMousePointerVisible(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_PutMousePointerXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y); +int CONSOLE_LOGIC_ResetChanges(PCONSOLE_LOGIC Console, UCHAR FalseTrue); +int CONSOLE_LOGIC_GetNextChangedSlot(PCONSOLE_LOGIC Console, PULONG pHandle, PULONG pX, PULONG pY); +int CONSOLE_LOGIC_CursorChanged(PCONSOLE_LOGIC Console); +int CONSOLE_LOGIC_MousePointerChanged(PCONSOLE_LOGIC Console); + +#endif//__CONSOLELOGIC_INCLUDED__ diff --git a/psl1ght/include/console/ConsoleRender.h b/psl1ght/include/console/ConsoleRender.h new file mode 100755 index 00000000..289de9fc --- /dev/null +++ b/psl1ght/include/console/ConsoleRender.h @@ -0,0 +1,56 @@ +#ifndef __CONSOLERENDER_INCLUDED__ +#define __CONSOLERENDER_INCLUDED__ + +#include + +#include +#include + +typedef struct _CONSOLE_RENDER +{ + UCHAR CursorBlinkFrames; + UCHAR CurrentCursorBlinkFrames; + UCHAR CurrentCursorBlinkState; + PUCHAR CursorMaskBuffer; + PUCHAR CursorInsertMaskBuffer; + PUCHAR MousePointerMaskBuffer; + UCHAR CharacterWidth; + UCHAR CharacterHeight; + PUCHAR CharacterMasksBuffer; + PULONG BasicColors; + ULONG RenderingFlags; + UCHAR DropShadowOrientation; + ULONG DropShadowColor; + UCHAR TransparentTextModeColor; +}CONSOLE_RENDER,*PCONSOLE_RENDER; + +#define CONSOLE_RENDER_RENDERING_FLAG_TRANSPARENT 1 +#define CONSOLE_RENDER_RENDERING_FLAG_DROPSHADOW 2 +#define CONSOLE_RENDER_RENDERING_FLAG_DROPSHADOWOVERANYBACKGROUND 4 + +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTH 0 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHEAST 1 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_EAST 2 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHEAST 3 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTH 4 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHWEST 5 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_WEST 6 +#define CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHWEST 7 + +#define CONSOLE_RENDER_DROPSHADOWORIENTATIONS 8 + +int CONSOLE_RENDER_Initialize(PCONSOLE_RENDER Render, UCHAR SlotWidth, UCHAR SlotHeight, ULONG CursorBlinkFrames, PULONG pBasicColors, PUCHAR pCharacterMasks, PUCHAR pCursorMask, PUCHAR pCursorInsertMask, PUCHAR pMousePointerMask); +int CONSOLE_RENDER_Finalize(PCONSOLE_RENDER Render); +int CONSOLE_RENDER_Render(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video); +int CONSOLE_RENDER_RenderChanges(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video); +int CONSOLE_RENDER_SetDropShadowOrientation(PCONSOLE_RENDER Render, UCHAR DropShadowOrientation); +int CONSOLE_RENDER_SetDropShadowColor(PCONSOLE_RENDER Render, ULONG DropShadowColor); +int CONSOLE_RENDER_SetTransparentTextModeColor(PCONSOLE_RENDER Render, UCHAR TransparentTextModeColor); +int CONSOLE_RENDER_SetRenderingOptions(PCONSOLE_RENDER Render, ULONG RenderingFlags); +int CONSOLE_RENDER_SetRenderingOptions(PCONSOLE_RENDER Render, ULONG RenderingFlags); +int CONSOLE_RENDER_GetDropShadowOrientation(PCONSOLE_RENDER Render, PUCHAR pDropShadowOrientation); +int CONSOLE_RENDER_GetDropShadowColor(PCONSOLE_RENDER Render, PULONG pDropShadowColor); +int CONSOLE_RENDER_GetTransparentTextModeColor(PCONSOLE_RENDER Render, PUCHAR pTransparentTextModeColor); +int CONSOLE_RENDER_GetRenderingOptions(PCONSOLE_RENDER Render, PULONG pRenderingFlags); + +#endif//__CONSOLERENDER_INCLUDED__ diff --git a/psl1ght/include/console/ConsoleVideo.h b/psl1ght/include/console/ConsoleVideo.h new file mode 100755 index 00000000..16b0322a --- /dev/null +++ b/psl1ght/include/console/ConsoleVideo.h @@ -0,0 +1,36 @@ +#ifndef __CONSOLEVIDEO_INCLUDED__ +#define __CONSOLEVIDEO_INCLUDED__ + +#include + +typedef struct _CONSOLE_VIDEO +{ + PUCHAR FrameBuffer; + ULONG ResolutionX; + ULONG ResolutionY; + ULONG ResolutionBPP; + ULONG ScanLine; + ULONG ViewPortX; + ULONG ViewPortWidth; + ULONG ViewPortY; + ULONG ViewPortHeight; +// PUCHAR ViewPortBackBuffer; + ULONG ViewPortScanLine; + PUCHAR ViewPortStart; +}CONSOLE_VIDEO,*PCONSOLE_VIDEO; + +int CONSOLE_VIDEO_Initialize(PCONSOLE_VIDEO Video, PUCHAR FrameBuffer, ULONG ResolutionX, ULONG ResolutionY, UCHAR ResolutionBPP, ULONG ResolutionScanLine, ULONG ViewPortX, ULONG ViewPortWidth, ULONG ViewPortY, ULONG ViewPortHeight); +int CONSOLE_VIDEO_Finalize(PCONSOLE_VIDEO Video); +int CONSOLE_VIDEO_Save(PCONSOLE_VIDEO Video); +int CONSOLE_VIDEO_Restore(PCONSOLE_VIDEO Video); +int CONSOLE_VIDEO_PutViewPortX(PCONSOLE_VIDEO Video, ULONG ViewPortX); +int CONSOLE_VIDEO_PutViewPortY(PCONSOLE_VIDEO Video, ULONG ViewPortY); +int CONSOLE_VIDEO_PutViewPortWidth(PCONSOLE_VIDEO Video, ULONG ViewPortWidth); +int CONSOLE_VIDEO_PutViewPortHeight(PCONSOLE_VIDEO Video, ULONG ViewPortHeight); +int CONSOLE_VIDEO_GetViewPortX(PCONSOLE_VIDEO Video, PULONG pViewPortX); +int CONSOLE_VIDEO_GetViewPortY(PCONSOLE_VIDEO Video, PULONG pViewPortY); +int CONSOLE_VIDEO_GetViewPortWidth(PCONSOLE_VIDEO Video, PULONG pViewPortWidth); +int CONSOLE_VIDEO_GetViewPortHeight(PCONSOLE_VIDEO Video, PULONG pViewPortHeight); +int CONSOLE_VIDEO_PutPixel(PCONSOLE_VIDEO Video, ULONG X, ULONG Y, ULONG Color); + +#endif//__CONSOLEVIDEO_INCLUDED__ diff --git a/psl1ght/libs/libconsole/source/ConsoleLogic.c b/psl1ght/libs/libconsole/source/ConsoleLogic.c index 4b6bb92e..f9115fc6 100755 --- a/psl1ght/libs/libconsole/source/ConsoleLogic.c +++ b/psl1ght/libs/libconsole/source/ConsoleLogic.c @@ -1,4 +1,7 @@ -#include +#include +#include + +#include int CONSOLE_LOGIC_Initialize(PCONSOLE_LOGIC Console, ULONG Columns, ULONG Rows) { diff --git a/psl1ght/libs/libconsole/source/ConsoleRender.c b/psl1ght/libs/libconsole/source/ConsoleRender.c index 6652a993..90288418 100755 --- a/psl1ght/libs/libconsole/source/ConsoleRender.c +++ b/psl1ght/libs/libconsole/source/ConsoleRender.c @@ -1,4 +1,4 @@ -#include +#include int CONSOLE_RENDER_Initialize(PCONSOLE_RENDER Render, UCHAR SlotWidth, UCHAR SlotHeight, ULONG CursorBlinkFrames, PULONG pBasicColors, PUCHAR pCharacterMasks, PUCHAR pCursorMask, PUCHAR pCursorInsertMask, PUCHAR pMousePointerMask) { diff --git a/psl1ght/libs/libconsole/source/ConsoleVideo.c b/psl1ght/libs/libconsole/source/ConsoleVideo.c index e7806521..818b6f33 100755 --- a/psl1ght/libs/libconsole/source/ConsoleVideo.c +++ b/psl1ght/libs/libconsole/source/ConsoleVideo.c @@ -1,4 +1,4 @@ -#include +#include int CONSOLE_VIDEO_Initialize(PCONSOLE_VIDEO Video, PUCHAR FrameBuffer, ULONG ResolutionX, ULONG ResolutionY, UCHAR ResolutionBPP, ULONG ResolutionScanLine, ULONG ViewPortX, ULONG ViewPortWidth, ULONG ViewPortY, ULONG ViewPortHeight) { From d77caff1fed94a659bbf1c31ba89a34f8f446d44 Mon Sep 17 00:00:00 2001 From: c0de90e7 Date: Thu, 18 Nov 2010 13:43:18 +0100 Subject: [PATCH 6/9] Added consoleTest sample --- samples/consoleTest/source/main.c | 312 ++++++++++++++++++++++++++++++ 1 file changed, 312 insertions(+) create mode 100755 samples/consoleTest/source/main.c diff --git a/samples/consoleTest/source/main.c b/samples/consoleTest/source/main.c new file mode 100755 index 00000000..cd100edf --- /dev/null +++ b/samples/consoleTest/source/main.c @@ -0,0 +1,312 @@ +/* Now double buffered with animation. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include + +gcmContextData *context; // Context to keep track of the RSX buffer. + +VideoResolution res; // Screen Resolution + + +int currentBuffer = 0; +s32 *buffer[2]; // The buffer we will be drawing into. + + +CONSOLE_VIDEO g_ConsoleVideo[2]; +CONSOLE_LOGIC g_ConsoleLogic; +CONSOLE_RENDER g_ConsoleRender; + + +void waitFlip() { // Block the PPU thread untill the previous flip operation has finished. + while(gcmGetFlipStatus() != 0) + usleep(200); + gcmResetFlipStatus(); +} + +void flip(s32 buffer) { + assert(gcmSetFlip(context, buffer) == 0); + realityFlushBuffer(context); + gcmSetWaitFlip(context); // Prevent the RSX from continuing until the flip has finished. +} + + +// Initilize everything. You can probally skip over this function. +void init_screen() { + // Allocate a 1Mb buffer, alligned to a 1Mb boundary to be our shared IO memory with the RSX. + void *host_addr = memalign(1024*1024, 1024*1024); + assert(host_addr != NULL); + + // Initilise Reality, which sets up the command buffer and shared IO memory + context = realityInit(0x10000, 1024*1024, host_addr); + assert(context != NULL); + + VideoState state; + assert(videoGetState(0, 0, &state) == 0); // Get the state of the display + assert(state.state == 0); // Make sure display is enabled + + // Get the current resolution + assert(videoGetResolution(state.displayMode.resolution, &res) == 0); + + // Configure the buffer format to xRGB + VideoConfiguration vconfig; + memset(&vconfig, 0, sizeof(VideoConfiguration)); + vconfig.resolution = state.displayMode.resolution; + vconfig.format = VIDEO_BUFFER_FORMAT_XRGB; + vconfig.pitch = res.width * 4; + + assert(videoConfigure(0, &vconfig, NULL, 0) == 0); + assert(videoGetState(0, 0, &state) == 0); + + s32 buffer_size = 4 * res.width * res.height; // each pixel is 4 bytes + printf("buffers will be 0x%x bytes\n", buffer_size); + + gcmSetFlipMode(GCM_FLIP_VSYNC); // Wait for VSYNC to flip + + // Allocate two buffers for the RSX to draw to the screen (double buffering) + buffer[0] = rsxMemAlign(16, buffer_size); + buffer[1] = rsxMemAlign(16, buffer_size); + assert(buffer[0] != NULL && buffer[1] != NULL); + + u32 offset[2]; + assert(realityAddressToOffset(buffer[0], &offset[0]) == 0); + assert(realityAddressToOffset(buffer[1], &offset[1]) == 0); + // Setup the display buffers + assert(gcmSetDisplayBuffer(0, offset[0], res.width * 4, res.width, res.height) == 0); + assert(gcmSetDisplayBuffer(1, offset[1], res.width * 4, res.width, res.height) == 0); + + gcmResetFlipStatus(); + flip(1); +} + +void drawFrame(int *buffer, long frame) { + s32 i, j; + for(i = 0; i < res.height; i++) { + for(j = 0; j < res.width; j++) + buffer[i* res.width + j] = i*j; + } +} + +s32 main(s32 argc, const char* argv[]) +{ + PadInfo padinfo; + PadData paddata; + int i,j; + int cols,rows; + int slotwidth=16,slotheight=32; + u32 X,Y,VPX,VPY; + ULONG RenderingFlags; + UCHAR TextmodeBackgorundColor; + ULONG DropShadowColor; + UCHAR DropShadowOrientation; + + init_screen(); + ioPadInit(7); + + cols = (res.width/slotwidth)/2; + rows = (res.height/slotheight)/2; + + CONSOLE_VIDEO_Initialize(&(g_ConsoleVideo[0]),(PUCHAR)(buffer[0]),res.width,res.height,4,res.width*4,(res.width-(cols*slotwidth))/2,cols*slotwidth,(res.height-(rows*slotheight))/2,rows*slotheight); + CONSOLE_VIDEO_Initialize(&(g_ConsoleVideo[1]),(PUCHAR)(buffer[1]),res.width,res.height,4,res.width*4,(res.width-(cols*slotwidth))/2,cols*slotwidth,(res.height-(rows*slotheight))/2,rows*slotheight); + CONSOLE_LOGIC_Initialize(&g_ConsoleLogic,cols,rows); + CONSOLE_RENDER_Initialize(&g_ConsoleRender,slotwidth,slotheight,6,g_BasicColors4BPP,CharMask8x16stdX2,g_8x16X2CursorMask,g_8x16X2CursorInsertMask,g_8x16X2MousePointerMask); + + for(j = 0;j<16;j++) + { + for(i = 0;i<16;i++) + { + CONSOLE_LOGIC_PutAttrCharPairXY(&g_ConsoleLogic, i, j, (i<<4)|j, (16*j)+i); + } + } + + long frame = 0; // To keep track of how many frames we have rendered. + + // Ok, everything is setup. Now for the main loop. + while(1) + { + // Check the pads. + ioPadGetInfo(&padinfo); + for(i=0; i Date: Thu, 18 Nov 2010 13:47:26 +0100 Subject: [PATCH 7/9] removed include from libconsole ( it was moved to include/console before when reordering ) --- psl1ght/libs/libconsole/include/8x16std.fnt | Bin 4096 -> 0 bytes psl1ght/libs/libconsole/include/8x16std.inc | 323 ------------------ psl1ght/libs/libconsole/include/8x16stdX2.fnt | Bin 16384 -> 0 bytes psl1ght/libs/libconsole/include/8x8std.fnt | Bin 2048 -> 0 bytes psl1ght/libs/libconsole/include/8x8std.inc | 164 --------- psl1ght/libs/libconsole/include/Console.h | 152 --------- psl1ght/libs/libconsole/include/ConsoleBase.h | 16 - .../libs/libconsole/include/ConsoleLogic.h | 58 ---- .../libs/libconsole/include/ConsoleRender.h | 56 --- .../libs/libconsole/include/ConsoleVideo.h | 36 -- 10 files changed, 805 deletions(-) delete mode 100755 psl1ght/libs/libconsole/include/8x16std.fnt delete mode 100755 psl1ght/libs/libconsole/include/8x16std.inc delete mode 100755 psl1ght/libs/libconsole/include/8x16stdX2.fnt delete mode 100755 psl1ght/libs/libconsole/include/8x8std.fnt delete mode 100755 psl1ght/libs/libconsole/include/8x8std.inc delete mode 100755 psl1ght/libs/libconsole/include/Console.h delete mode 100755 psl1ght/libs/libconsole/include/ConsoleBase.h delete mode 100755 psl1ght/libs/libconsole/include/ConsoleLogic.h delete mode 100755 psl1ght/libs/libconsole/include/ConsoleRender.h delete mode 100755 psl1ght/libs/libconsole/include/ConsoleVideo.h diff --git a/psl1ght/libs/libconsole/include/8x16std.fnt b/psl1ght/libs/libconsole/include/8x16std.fnt deleted file mode 100755 index 672d0e1a999f880cef168b4071c682da691cfd08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZu!&1&OT6uzXOmGGoH(U{C;9ze9<5v_1w=qq$DGDV$*XtVMdDwN44k5C9*chh$W zxG{(>OqPQ|uF1;Ylwuf2ya-ai^K-8xx5qP*&OP5f|My5S=8%f3->$B1Z?3KikrYkU zH1loKC~r(wgYxLu?mUk2E*r%0cDoINSmi-nU~|i38IVAv4byf`28ehyPT#yqWjim< zZ*FgI<|;oOeDURU0h)@2I0eN43&}KJo^q<9d8L@QxH7Lv>JChYgtn;V$yas;YiIA!0r+lPD|8Eb_}-0DPsC z35#@yKFz1_SW^G#3Dg=yy8PN#DeDN6Ite?<&1^PP?Y#ObZPHh*{5Xp8+?vNSikC-i z`C1@9p*At>8}$dFc2p4}%j%5(6B7h^c{j^F@4C!w1b3w$gh_c#a$}+_izX}7Yr-r_ zlkkJR0Lv8kvJwV9Q_x13#!al*W(=}pZCNdFq_e?vv!Rf7$B{?=X}wLH&gWG%pKHUJ zAeurKNb8fA0xwl3crW%m&z9F8#@V8V%co+fMlqf{@+bjcg0vlK?3b7YpOdH~r{@Cu zeeG|`F_5kMmbdv~_mDMD12qPotMjy!kc=W0IrRI8u2qPI^?JRUsei}RzBM@{_-AxL zP96U&e4O4P!r7h8*FGa*nr3^E*XjAY>AU1S)qE+RB)iW3by=og3s08VoZ6%2V~Rz7 z%H7bO_YF)Z9JT7Vl`flk5s6CD*w37{Q+rUImM{< zAWtISbNid>rsprIW>Wp^3bmJ>VCJi;vGapP0d=AH3pubLjlY>+Q}O8E!1a6+ zC@*mctUSuTPq;>!U&to}U*tZIaOlq_q+j!k){Hoz8lUHx0geL*V;-AWR&!*B`)lc}$xgA7xRGhYvBbN#G?q7dOYE~@{%mbgdua}PM4>#Sf>eUZ|4<2KYnvkELZOdZ_GGbENZIgJ+tC3 zRfw}?4Ex*i;&01`(?zczNZ#uY>?br0eH!^Cq7@STrAn!Q# zODA4kIy>0kSYG_$<7!RP{jgpxfBZ*K=c4-E%I<((9FPL7r*faHmdoWzzRwN)ZM9rr z1Yxif;oA&{k%%}V`uryn4gk!w_Wgv_0_v7LT^PbIUrgAUZkVhjRAmc{aQ+KUc^%If z6HLUGWbPl~Pw_cBCY3UuXtBV{z7Q#{pLyUv71rD^OlZ6(;ZPBFzLs_e4vYNL1^x5F z_Jn>uyCH@NiGY2}4^C*J9#S`cOr)ay+=dYhN&FMyd8p6r&A!atN?@N}@aNs%Sr$t? XOG=F`1wa?eF!{6JKDm(9(7XQ&G-=%) diff --git a/psl1ght/libs/libconsole/include/8x16std.inc b/psl1ght/libs/libconsole/include/8x16std.inc deleted file mode 100755 index 800a16b1..00000000 --- a/psl1ght/libs/libconsole/include/8x16std.inc +++ /dev/null @@ -1,323 +0,0 @@ - -#define CHARMASK8X16STD_LEN 4096 - - static unsigned char CharMask8x16std[]= - { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x7e,0x81,0xa5,0x81,0x81,0xbd,0x99,0x81, - 0x81,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0xff,0xdb,0xff,0xff, - 0xc3,0xe7,0xff,0xff,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x6c,0xfe,0xfe,0xfe,0xfe,0x7c,0x38,0x10,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x10,0x38,0x7c,0xfe,0x7c,0x38,0x10,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x3c,0xe7,0xe7,0xe7,0x18,0x18, - 0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0xff,0xff, - 0x7e,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x18,0x3c,0x3c,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, - 0xff,0xff,0xff,0xff,0xe7,0xc3,0xc3,0xe7,0xff,0xff,0xff,0xff,0xff, - 0xff,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x42,0x42,0x66,0x3c,0x00, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xc3,0x99,0xbd,0xbd, - 0x99,0xc3,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x1e,0x0e,0x1a,0x32, - 0x78,0xcc,0xcc,0xcc,0xcc,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x3c, - 0x66,0x66,0x66,0x66,0x3c,0x18,0x7e,0x18,0x18,0x00,0x00,0x00,0x00, - 0x00,0x00,0x3f,0x33,0x3f,0x30,0x30,0x30,0x30,0x70,0xf0,0xe0,0x00, - 0x00,0x00,0x00,0x00,0x00,0x7f,0x63,0x7f,0x63,0x63,0x63,0x63,0x67, - 0xe7,0xe6,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0xdb,0x3c, - 0xe7,0x3c,0xdb,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0, - 0xf0,0xf8,0xfe,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00, - 0x02,0x06,0x0e,0x1e,0x3e,0xfe,0x3e,0x1e,0x0e,0x06,0x02,0x00,0x00, - 0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0x18,0x18,0x18,0x7e,0x3c,0x18, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66, - 0x66,0x00,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xdb,0xdb, - 0xdb,0x7b,0x1b,0x1b,0x1b,0x1b,0x1b,0x00,0x00,0x00,0x00,0x00,0x7c, - 0xc6,0x60,0x38,0x6c,0xc6,0xc6,0x6c,0x38,0x0c,0xc6,0x7c,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xfe,0xfe,0xfe, - 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0x18,0x18,0x18,0x7e, - 0x3c,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x7e,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x7e,0x3c,0x18,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x18,0x0c,0xfe,0x0c,0x18,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x60,0xfe,0x60,0x30, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, - 0xc0,0xc0,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x24,0x66,0xff,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x10,0x38,0x38,0x7c,0x7c,0xfe,0xfe,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xfe,0x7c,0x7c,0x38,0x38,0x10, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x3c, - 0x3c,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x66, - 0x66,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x6c,0x6c,0xfe,0x6c,0x6c,0x6c,0xfe,0x6c,0x6c, - 0x00,0x00,0x00,0x00,0x18,0x18,0x7c,0xc6,0xc2,0xc0,0x7c,0x06,0x06, - 0x86,0xc6,0x7c,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xc2,0xc6, - 0x0c,0x18,0x30,0x60,0xc6,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x38, - 0x6c,0x6c,0x38,0x76,0xdc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, - 0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x0c,0x18,0x30,0x30,0x30,0x30,0x30,0x30, - 0x18,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x18,0x0c,0x0c,0x0c, - 0x0c,0x0c,0x0c,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x66,0x3c,0xff,0x3c,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x18,0x18,0x7e,0x18,0x18,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18, - 0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x02,0x06,0x0c,0x18,0x30,0x60,0xc0,0x80,0x00,0x00,0x00, - 0x00,0x00,0x00,0x3c,0x66,0xc3,0xc3,0xdb,0xdb,0xc3,0xc3,0x66,0x3c, - 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x18,0x18, - 0x18,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0x06,0x0c, - 0x18,0x30,0x60,0xc0,0xc6,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x7c, - 0xc6,0x06,0x06,0x3c,0x06,0x06,0x06,0xc6,0x7c,0x00,0x00,0x00,0x00, - 0x00,0x00,0x0c,0x1c,0x3c,0x6c,0xcc,0xfe,0x0c,0x0c,0x0c,0x1e,0x00, - 0x00,0x00,0x00,0x00,0x00,0xfe,0xc0,0xc0,0xc0,0xfc,0x06,0x06,0x06, - 0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x60,0xc0,0xc0,0xfc, - 0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc6, - 0x06,0x06,0x0c,0x18,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00,0x00, - 0x00,0x7c,0xc6,0xc6,0xc6,0x7c,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00, - 0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0x7e,0x06,0x06,0x06,0x0c, - 0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00, - 0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, - 0x18,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x06,0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x06,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x7e,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x0c,0x06,0x0c, - 0x18,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0x0c, - 0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x7c,0xc6,0xc6,0xde,0xde,0xde,0xdc,0xc0,0x7c,0x00,0x00,0x00,0x00, - 0x00,0x00,0x10,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0x00, - 0x00,0x00,0x00,0x00,0x00,0xfc,0x66,0x66,0x66,0x7c,0x66,0x66,0x66, - 0x66,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0xc2,0xc0,0xc0, - 0xc0,0xc0,0xc2,0x66,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x6c, - 0x66,0x66,0x66,0x66,0x66,0x66,0x6c,0xf8,0x00,0x00,0x00,0x00,0x00, - 0x00,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x62,0x66,0xfe,0x00,0x00, - 0x00,0x00,0x00,0x00,0xfe,0x66,0x62,0x68,0x78,0x68,0x60,0x60,0x60, - 0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0xc2,0xc0,0xc0,0xde, - 0xc6,0xc6,0x66,0x3a,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6, - 0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00,0x00,0x00, - 0x3c,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00, - 0x00,0x00,0x00,0x1e,0x0c,0x0c,0x0c,0x0c,0x0c,0xcc,0xcc,0xcc,0x78, - 0x00,0x00,0x00,0x00,0x00,0x00,0xe6,0x66,0x66,0x6c,0x78,0x78,0x6c, - 0x66,0x66,0xe6,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x60,0x60,0x60, - 0x60,0x60,0x60,0x62,0x66,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xc3, - 0xe7,0xff,0xff,0xdb,0xc3,0xc3,0xc3,0xc3,0xc3,0x00,0x00,0x00,0x00, - 0x00,0x00,0xc6,0xe6,0xf6,0xfe,0xde,0xce,0xc6,0xc6,0xc6,0xc6,0x00, - 0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, - 0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x66,0x66,0x66,0x7c, - 0x60,0x60,0x60,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6, - 0xc6,0xc6,0xc6,0xc6,0xc6,0xd6,0xde,0x7c,0x0c,0x0e,0x00,0x00,0x00, - 0x00,0xfc,0x66,0x66,0x66,0x7c,0x6c,0x66,0x66,0x66,0xe6,0x00,0x00, - 0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0x60,0x38,0x0c,0x06,0xc6,0xc6, - 0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xdb,0x99,0x18,0x18,0x18, - 0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6, - 0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, - 0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x66,0x3c,0x18,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc3,0xc3,0xc3,0xc3,0xc3,0xdb,0xdb,0xff,0x66,0x66, - 0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0x66,0x3c,0x18,0x18,0x3c, - 0x66,0xc3,0xc3,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0xc3,0x66, - 0x3c,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0xff, - 0xc3,0x86,0x0c,0x18,0x30,0x60,0xc1,0xc3,0xff,0x00,0x00,0x00,0x00, - 0x00,0x00,0x3c,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3c,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0x70,0x38,0x1c,0x0e, - 0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x0c,0x0c,0x0c,0x0c, - 0x0c,0x0c,0x0c,0x0c,0x3c,0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0xc6, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, - 0x00,0x00,0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0c,0x7c, - 0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x60,0x60, - 0x78,0x6c,0x66,0x66,0x66,0x66,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x7c,0xc6,0xc0,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00, - 0x00,0x00,0x00,0x1c,0x0c,0x0c,0x3c,0x6c,0xcc,0xcc,0xcc,0xcc,0x76, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xfe,0xc0, - 0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x6c,0x64,0x60, - 0xf0,0x60,0x60,0x60,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c,0x0c,0xcc,0x78,0x00, - 0x00,0x00,0xe0,0x60,0x60,0x6c,0x76,0x66,0x66,0x66,0x66,0xe6,0x00, - 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x38,0x18,0x18,0x18,0x18, - 0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x0e,0x06, - 0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3c,0x00,0x00,0x00,0xe0,0x60, - 0x60,0x66,0x6c,0x78,0x78,0x6c,0x66,0xe6,0x00,0x00,0x00,0x00,0x00, - 0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe6,0xff,0xdb,0xdb,0xdb,0xdb, - 0xdb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xdc,0x66,0x66, - 0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xdc,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60,0xf0, - 0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xcc,0xcc,0xcc,0xcc,0xcc,0x7c, - 0x0c,0x0c,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xdc,0x76,0x66,0x60, - 0x60,0x60,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c, - 0xc6,0x60,0x38,0x0c,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x10, - 0x30,0x30,0xfc,0x30,0x30,0x30,0x30,0x36,0x1c,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3,0xc3,0xc3,0x66, - 0x3c,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc3,0xc3, - 0xc3,0xdb,0xdb,0xff,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc3,0x66,0x3c,0x18,0x3c,0x66,0xc3,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7e,0x06,0x0c, - 0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xcc,0x18,0x30,0x60,0xc6, - 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x18,0x18,0x18,0x70,0x18, - 0x18,0x18,0x18,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18, - 0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00, - 0x70,0x18,0x18,0x18,0x0e,0x18,0x18,0x18,0x18,0x70,0x00,0x00,0x00, - 0x00,0x00,0x00,0x76,0xdc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0xc6,0xc6, - 0xc6,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0xc2,0xc0, - 0xc0,0xc0,0xc2,0x66,0x3c,0x0c,0x06,0x7c,0x00,0x00,0x00,0x00,0xcc, - 0x00,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00, - 0x00,0x0c,0x18,0x30,0x00,0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00, - 0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0x00,0x78,0x0c,0x7c,0xcc,0xcc, - 0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x00,0xcc,0x00,0x00,0x78,0x0c, - 0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18, - 0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00, - 0x38,0x6c,0x38,0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x66,0x60,0x60,0x66,0x3c,0x0c, - 0x06,0x3c,0x00,0x00,0x00,0x00,0x10,0x38,0x6c,0x00,0x7c,0xc6,0xfe, - 0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0xc6,0x00,0x00, - 0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x60, - 0x30,0x18,0x00,0x7c,0xc6,0xfe,0xc0,0xc0,0xc6,0x7c,0x00,0x00,0x00, - 0x00,0x00,0x00,0x66,0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x3c, - 0x00,0x00,0x00,0x00,0x00,0x18,0x3c,0x66,0x00,0x38,0x18,0x18,0x18, - 0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x38, - 0x18,0x18,0x18,0x18,0x18,0x3c,0x00,0x00,0x00,0x00,0x00,0xc6,0x00, - 0x10,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00, - 0x38,0x6c,0x38,0x00,0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0xc6,0x00, - 0x00,0x00,0x00,0x18,0x30,0x60,0x00,0xfe,0x66,0x60,0x7c,0x60,0x60, - 0x66,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x3b, - 0x1b,0x7e,0xd8,0xdc,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x6c, - 0xcc,0xcc,0xfe,0xcc,0xcc,0xcc,0xcc,0xce,0x00,0x00,0x00,0x00,0x00, - 0x10,0x38,0x6c,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00, - 0x00,0x00,0x00,0x00,0xc6,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6, - 0x7c,0x00,0x00,0x00,0x00,0x00,0x60,0x30,0x18,0x00,0x7c,0xc6,0xc6, - 0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x30,0x78,0xcc,0x00, - 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x60, - 0x30,0x18,0x00,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00, - 0x00,0x00,0x00,0xc6,0x00,0x00,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0x7e, - 0x06,0x0c,0x78,0x00,0x00,0xc6,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6, - 0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0xc6,0x00,0xc6,0xc6,0xc6, - 0xc6,0xc6,0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x18,0x18, - 0x7e,0xc3,0xc0,0xc0,0xc0,0xc3,0x7e,0x18,0x18,0x00,0x00,0x00,0x00, - 0x00,0x38,0x6c,0x64,0x60,0xf0,0x60,0x60,0x60,0x60,0xe6,0xfc,0x00, - 0x00,0x00,0x00,0x00,0x00,0xc3,0x66,0x3c,0x18,0xff,0x18,0xff,0x18, - 0x18,0x18,0x00,0x00,0x00,0x00,0x00,0xfc,0x66,0x66,0x7c,0x62,0x66, - 0x6f,0x66,0x66,0x66,0xf3,0x00,0x00,0x00,0x00,0x00,0x0e,0x1b,0x18, - 0x18,0x18,0x7e,0x18,0x18,0x18,0x18,0x18,0xd8,0x70,0x00,0x00,0x00, - 0x18,0x30,0x60,0x00,0x78,0x0c,0x7c,0xcc,0xcc,0xcc,0x76,0x00,0x00, - 0x00,0x00,0x00,0x0c,0x18,0x30,0x00,0x38,0x18,0x18,0x18,0x18,0x18, - 0x3c,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x60,0x00,0x7c,0xc6,0xc6, - 0xc6,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x60,0x00, - 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x76,0x00,0x00,0x00,0x00,0x00,0x00, - 0x76,0xdc,0x00,0xdc,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00, - 0x00,0x76,0xdc,0x00,0xc6,0xe6,0xf6,0xfe,0xde,0xce,0xc6,0xc6,0xc6, - 0x00,0x00,0x00,0x00,0x00,0x3c,0x6c,0x6c,0x3e,0x00,0x7e,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x6c,0x6c,0x38,0x00, - 0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30, - 0x30,0x00,0x30,0x30,0x60,0xc0,0xc6,0xc6,0x7c,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc0,0xc0,0xc0,0xc0,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x06,0x06,0x06, - 0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0xc2,0xc6,0xcc,0x18, - 0x30,0x60,0xce,0x9b,0x06,0x0c,0x1f,0x00,0x00,0x00,0xc0,0xc0,0xc2, - 0xc6,0xcc,0x18,0x30,0x66,0xce,0x96,0x3e,0x06,0x06,0x00,0x00,0x00, - 0x00,0x18,0x18,0x00,0x18,0x18,0x18,0x3c,0x3c,0x3c,0x18,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x6c,0xd8,0x6c,0x36,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd8,0x6c,0x36, - 0x6c,0xd8,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x44,0x11,0x44,0x11, - 0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x55,0xaa, - 0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55, - 0xaa,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77,0xdd,0x77, - 0xdd,0x77,0xdd,0x77,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0xf8,0x18,0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xf6,0x36,0x36,0x36,0x36,0x36, - 0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x36,0x36, - 0x36,0x36,0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0xf8,0x18, - 0xf8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x36,0x36,0x36,0x36, - 0x36,0xf6,0x06,0xf6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, - 0x36,0x36,0x00,0x00,0x00,0x00,0x00,0xfe,0x06,0xf6,0x36,0x36,0x36, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xf6,0x06,0xfe, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x36, - 0x36,0x36,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18, - 0x18,0x18,0x18,0xf8,0x18,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x1f,0x18,0x1f,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x36, - 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x36,0x36, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x3f,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x30,0x37, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, - 0xf7,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0xff,0x00,0xf7,0x36,0x36,0x36,0x36,0x36,0x36,0x36, - 0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x37,0x36,0x36,0x36,0x36, - 0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x36,0x36,0x36,0xf7, - 0x00,0xf7,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x18,0x18,0x18, - 0x18,0x18,0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xff,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xff,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, - 0x36,0x36,0x36,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, - 0x18,0x18,0x18,0x18,0x1f,0x18,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x18,0x1f,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, - 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, - 0x36,0x36,0xff,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x18,0x18, - 0x18,0x18,0x18,0xff,0x18,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0, - 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, - 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x76,0xdc,0xd8,0xd8,0xd8,0xdc,0x76,0x00,0x00,0x00,0x00,0x00, - 0x00,0x78,0xcc,0xcc,0xcc,0xd8,0xcc,0xc6,0xc6,0xc6,0xcc,0x00,0x00, - 0x00,0x00,0x00,0x00,0xfe,0xc6,0xc6,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, - 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x6c,0x6c,0x6c, - 0x6c,0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xc6, - 0x60,0x30,0x18,0x30,0x60,0xc6,0xfe,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x7e,0xd8,0xd8,0xd8,0xd8,0xd8,0x70,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7c,0x60,0x60, - 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0xdc,0x18,0x18,0x18, - 0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x18,0x3c, - 0x66,0x66,0x66,0x3c,0x18,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x38,0x6c,0xc6,0xc6,0xfe,0xc6,0xc6,0x6c,0x38,0x00,0x00,0x00,0x00, - 0x00,0x00,0x38,0x6c,0xc6,0xc6,0xc6,0x6c,0x6c,0x6c,0x6c,0xee,0x00, - 0x00,0x00,0x00,0x00,0x00,0x1e,0x30,0x18,0x0c,0x3e,0x66,0x66,0x66, - 0x66,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0xdb, - 0xdb,0xdb,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, - 0x06,0x7e,0xdb,0xdb,0xf3,0x7e,0x60,0xc0,0x00,0x00,0x00,0x00,0x00, - 0x00,0x1c,0x30,0x60,0x60,0x7c,0x60,0x60,0x60,0x30,0x1c,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x7c,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6, - 0xc6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xfe, - 0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, - 0x18,0x7e,0x18,0x18,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x30,0x18,0x0c,0x06,0x0c,0x18,0x30,0x00,0x7e,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x0c,0x18,0x30,0x60,0x30,0x18,0x0c,0x00,0x7e, - 0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x1b,0x1b,0x18,0x18,0x18,0x18, - 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, - 0x18,0x18,0xd8,0xd8,0xd8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x18,0x18,0x00,0x7e,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x76,0xdc,0x00,0x76,0xdc,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x38,0x6c,0x6c,0x38,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x0f,0x0c,0x0c,0x0c,0x0c,0x0c,0xec,0x6c,0x6c,0x3c,0x1c,0x00,0x00, - 0x00,0x00,0x00,0xd8,0x6c,0x6c,0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xd8,0x30,0x60,0xc8,0xf8,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c, - 0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00 - }; - diff --git a/psl1ght/libs/libconsole/include/8x16stdX2.fnt b/psl1ght/libs/libconsole/include/8x16stdX2.fnt deleted file mode 100755 index 9a99c3d29a03baedaba4c2d51804e10daf10f888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 og*fBU$n51CHki02TxM1D - -#include -#include -#include - - -#define CONSOLE_BASIC_COLOR_BLACK 0 -#define CONSOLE_BASIC_COLOR_BLUE 1 -#define CONSOLE_BASIC_COLOR_GREEN 2 -#define CONSOLE_BASIC_COLOR_CYAN 3 -#define CONSOLE_BASIC_COLOR_RED 4 -#define CONSOLE_BASIC_COLOR_MAGENTA 5 -#define CONSOLE_BASIC_COLOR_BROWN 6 -#define CONSOLE_BASIC_COLOR_LIGHTGRAY 7 -#define CONSOLE_BASIC_COLOR_DARKGRAY 8 -#define CONSOLE_BASIC_COLOR_BRIGHTBLUE 9 -#define CONSOLE_BASIC_COLOR_BRIGHTGREEN 10 -#define CONSOLE_BASIC_COLOR_BRIGHTCYAN 11 -#define CONSOLE_BASIC_COLOR_BRIGHTRED 12 -#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA 13 -#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW 14 -#define CONSOLE_BASIC_COLOR_WHITE 15 - -#define CONSOLE_BASIC_COLOR_BLACK_RGB_8 0x00000000 -#define CONSOLE_BASIC_COLOR_BLUE_RGB_8 0x00000001 -#define CONSOLE_BASIC_COLOR_GREEN_RGB_8 0x00000002 -#define CONSOLE_BASIC_COLOR_CYAN_RGB_8 0x00000003 -#define CONSOLE_BASIC_COLOR_RED_RGB_8 0x00000004 -#define CONSOLE_BASIC_COLOR_MAGENTA_RGB_8 0x00000005 -#define CONSOLE_BASIC_COLOR_BROWN_RGB_8 0x00000006 -#define CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_8 0x00000007 -#define CONSOLE_BASIC_COLOR_DARKGRAY_RGB_8 0x00000008 -#define CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_8 0x00000009 -#define CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_8 0x0000000A -#define CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_8 0x0000000B -#define CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_8 0x0000000C -#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_8 0x0000000D -#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_8 0x0000000E -#define CONSOLE_BASIC_COLOR_WHITE_RGB_8 0x0000000F - -#define CONSOLE_BASIC_COLOR_BLACK_RGB_16 0x00000000 -#define CONSOLE_BASIC_COLOR_BLUE_RGB_16 0x0000000F -#define CONSOLE_BASIC_COLOR_GREEN_RGB_16 0x000003E0 -#define CONSOLE_BASIC_COLOR_CYAN_RGB_16 0x000003EF -#define CONSOLE_BASIC_COLOR_RED_RGB_16 0x00007800 -#define CONSOLE_BASIC_COLOR_MAGENTA_RGB_16 0x0000780F -#define CONSOLE_BASIC_COLOR_BROWN_RGB_16 0x000079E0 -#define CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_16 0x0000BDF7 -#define CONSOLE_BASIC_COLOR_DARKGRAY_RGB_16 0x000039E7 -#define CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_16 0x0000001F -#define CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_16 0x000007E0 -#define CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_16 0x000007FF -#define CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_16 0x0000F800 -#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_16 0x0000F81F -#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_16 0x0000FFE7 -#define CONSOLE_BASIC_COLOR_WHITE_RGB_16 0x0000FFFF - -#define CONSOLE_BASIC_COLOR_BLACK_RGB_32 0xFF000000 -#define CONSOLE_BASIC_COLOR_BLUE_RGB_32 0xFF00007F -#define CONSOLE_BASIC_COLOR_GREEN_RGB_32 0xFF007F00 -#define CONSOLE_BASIC_COLOR_CYAN_RGB_32 0xFF007F7F -#define CONSOLE_BASIC_COLOR_RED_RGB_32 0xFF7F0000 -#define CONSOLE_BASIC_COLOR_MAGENTA_RGB_32 0xFF7F007F -#define CONSOLE_BASIC_COLOR_BROWN_RGB_32 0xFF7F3F00 -#define CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_32 0xFFBFBFBF -#define CONSOLE_BASIC_COLOR_DARKGRAY_RGB_32 0xFF3F3F3F -#define CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_32 0xFF0000FF -#define CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_32 0xFF00FF00 -#define CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_32 0xFF00FFFF -#define CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_32 0xFFFF0000 -#define CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_32 0xFFFF00FF -#define CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_32 0xFFFFFF3F -#define CONSOLE_BASIC_COLOR_WHITE_RGB_32 0xFFFFFFFF - - -#include "8x8std.inc" -UCHAR g_8x8CursorMask[8] = { 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF }; -UCHAR g_8x8CursorInsertMask[8] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; -UCHAR g_8x8MousePointerMask[8] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; - -#include "8x14std.inc" -UCHAR g_8x14CursorMask[14] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF }; -UCHAR g_8x14CursorInsertMask[14] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; -UCHAR g_8x14MousePointerMask[14] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; - -#include "8x16std.inc" -UCHAR g_8x16CursorMask[16] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF }; -UCHAR g_8x16CursorInsertMask[16] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; -UCHAR g_8x16MousePointerMask[16] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; - -ULONG g_BasicColors1BPP[16] = { - CONSOLE_BASIC_COLOR_BLACK_RGB_8, - CONSOLE_BASIC_COLOR_BLUE_RGB_8, - CONSOLE_BASIC_COLOR_GREEN_RGB_8, - CONSOLE_BASIC_COLOR_CYAN_RGB_8, - CONSOLE_BASIC_COLOR_RED_RGB_8, - CONSOLE_BASIC_COLOR_MAGENTA_RGB_8, - CONSOLE_BASIC_COLOR_BROWN_RGB_8, - CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_8, - CONSOLE_BASIC_COLOR_DARKGRAY_RGB_8, - CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_8, - CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_8, - CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_8, - CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_8, - CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_8, - CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_8, - CONSOLE_BASIC_COLOR_WHITE_RGB_8 -}; - -ULONG g_BasicColors2BPP[16] = { - CONSOLE_BASIC_COLOR_BLACK_RGB_16, - CONSOLE_BASIC_COLOR_BLUE_RGB_16, - CONSOLE_BASIC_COLOR_GREEN_RGB_16, - CONSOLE_BASIC_COLOR_CYAN_RGB_16, - CONSOLE_BASIC_COLOR_RED_RGB_16, - CONSOLE_BASIC_COLOR_MAGENTA_RGB_16, - CONSOLE_BASIC_COLOR_BROWN_RGB_16, - CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_16, - CONSOLE_BASIC_COLOR_DARKGRAY_RGB_16, - CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_16, - CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_16, - CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_16, - CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_16, - CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_16, - CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_16, - CONSOLE_BASIC_COLOR_WHITE_RGB_16 -}; - -ULONG g_BasicColors4BPP[16] = { - CONSOLE_BASIC_COLOR_BLACK_RGB_32, - CONSOLE_BASIC_COLOR_BLUE_RGB_32, - CONSOLE_BASIC_COLOR_GREEN_RGB_32, - CONSOLE_BASIC_COLOR_CYAN_RGB_32, - CONSOLE_BASIC_COLOR_RED_RGB_32, - CONSOLE_BASIC_COLOR_MAGENTA_RGB_32, - CONSOLE_BASIC_COLOR_BROWN_RGB_32, - CONSOLE_BASIC_COLOR_LIGHTGRAY_RGB_32, - CONSOLE_BASIC_COLOR_DARKGRAY_RGB_32, - CONSOLE_BASIC_COLOR_BRIGHTBLUE_RGB_32, - CONSOLE_BASIC_COLOR_BRIGHTGREEN_RGB_32, - CONSOLE_BASIC_COLOR_BRIGHTCYAN_RGB_32, - CONSOLE_BASIC_COLOR_BRIGHTRED_RGB_32, - CONSOLE_BASIC_COLOR_BRIGHTMAGENTA_RGB_32, - CONSOLE_BASIC_COLOR_BRIGHTYELLOW_RGB_32, - CONSOLE_BASIC_COLOR_WHITE_RGB_32 -}; - -#endif//__CONSOLE_INCLUDED__ diff --git a/psl1ght/libs/libconsole/include/ConsoleBase.h b/psl1ght/libs/libconsole/include/ConsoleBase.h deleted file mode 100755 index e6bd6c8c..00000000 --- a/psl1ght/libs/libconsole/include/ConsoleBase.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef __CONSOLEBASE_INCLUDED__ -#define __CONSOLEBASE_INCLUDED__ - -#include - -#define FALSE 0 -#define TRUE 1 - -#define UCHAR unsigned char -#define PUCHAR unsigned char* -#define USHORT unsigned short -#define PUSHORT unsigned short* -#define ULONG unsigned int -#define PULONG unsigned int* - -#endif//__CONSOLEBASE_INCLUDED__ \ No newline at end of file diff --git a/psl1ght/libs/libconsole/include/ConsoleLogic.h b/psl1ght/libs/libconsole/include/ConsoleLogic.h deleted file mode 100755 index 9c67a4bb..00000000 --- a/psl1ght/libs/libconsole/include/ConsoleLogic.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef __CONSOLELOGIC_INCLUDED__ -#define __CONSOLELOGIC_INCLUDED__ - -#include - -typedef struct _ATTR_CHAR_PAIR -{ - UCHAR Attr; - UCHAR Char; -}ATTR_CHAR_PAIR,*PATTR_CHAR_PAIR; - -typedef struct _CONSOLE_LOGIC -{ - ULONG Columns; - ULONG Rows; - ULONG CursorX; - ULONG CursorY; - UCHAR CursorShow; - UCHAR CursorInsert; - ULONG MousePointerX; - ULONG MousePointerY; - UCHAR MousePointerShow; - PATTR_CHAR_PAIR AttrCharPairGrid; - PUCHAR ChangedAttrCharPairs; - UCHAR CursorChanged; - UCHAR MousePointerChanged; -}CONSOLE_LOGIC,*PCONSOLE_LOGIC; - -int CONSOLE_LOGIC_Initialize(PCONSOLE_LOGIC Console, ULONG Columns, ULONG Rows); -int CONSOLE_LOGIC_Finalize(PCONSOLE_LOGIC Console); -ULONG CONSOLE_LOGIC_GetColumns(PCONSOLE_LOGIC Console); -ULONG CONSOLE_LOGIC_GetRows(PCONSOLE_LOGIC Console); -int CONSOLE_LOGIC_PutAttrCharPairXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Attr, UCHAR Char); -int CONSOLE_LOGIC_GetAttrCharPairXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pAttr, PUCHAR pChar); -int CONSOLE_LOGIC_PutCharXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Char); -int CONSOLE_LOGIC_GetCharXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pChar); -int CONSOLE_LOGIC_PutAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR Attr); -int CONSOLE_LOGIC_GetAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pAttr); -int CONSOLE_LOGIC_PutBackAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR BackAttr); -int CONSOLE_LOGIC_GetBackAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pBackAttr); -int CONSOLE_LOGIC_PutTextAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, UCHAR TextAttr); -int CONSOLE_LOGIC_GetTextAttrXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y, PUCHAR pTextAttr); -int CONSOLE_LOGIC_GetCursorXY(PCONSOLE_LOGIC Console, PULONG pX, PULONG pY); -int CONSOLE_LOGIC_ShowCursor(PCONSOLE_LOGIC Console, UCHAR Show); -int CONSOLE_LOGIC_IsCursorVisible(PCONSOLE_LOGIC Console); -int CONSOLE_LOGIC_PutCursorXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y); -int CONSOLE_LOGIC_PutCursorInsert(PCONSOLE_LOGIC Console, UCHAR Insert); -int CONSOLE_LOGIC_IsCursorInsert(PCONSOLE_LOGIC Console); -int CONSOLE_LOGIC_GetMousePointerXY(PCONSOLE_LOGIC Console, PULONG pX, PULONG pY); -int CONSOLE_LOGIC_ShowMousePointer(PCONSOLE_LOGIC Console, UCHAR Show); -int CONSOLE_LOGIC_IsMousePointerVisible(PCONSOLE_LOGIC Console); -int CONSOLE_LOGIC_PutMousePointerXY(PCONSOLE_LOGIC Console, ULONG X, ULONG Y); -int CONSOLE_LOGIC_ResetChanges(PCONSOLE_LOGIC Console, UCHAR FalseTrue); -int CONSOLE_LOGIC_GetNextChangedSlot(PCONSOLE_LOGIC Console, PULONG pHandle, PULONG pX, PULONG pY); -int CONSOLE_LOGIC_CursorChanged(PCONSOLE_LOGIC Console); -int CONSOLE_LOGIC_MousePointerChanged(PCONSOLE_LOGIC Console); - -#endif//__CONSOLELOGIC_INCLUDED__ \ No newline at end of file diff --git a/psl1ght/libs/libconsole/include/ConsoleRender.h b/psl1ght/libs/libconsole/include/ConsoleRender.h deleted file mode 100755 index 710b4f72..00000000 --- a/psl1ght/libs/libconsole/include/ConsoleRender.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef __CONSOLERENDER_INCLUDED__ -#define __CONSOLERENDER_INCLUDED__ - -#include - -#include -#include - -typedef struct _CONSOLE_RENDER -{ - UCHAR CursorBlinkFrames; - UCHAR CurrentCursorBlinkFrames; - UCHAR CurrentCursorBlinkState; - PUCHAR CursorMaskBuffer; - PUCHAR CursorInsertMaskBuffer; - PUCHAR MousePointerMaskBuffer; - UCHAR CharacterWidth; - UCHAR CharacterHeight; - PUCHAR CharacterMasksBuffer; - PULONG BasicColors; - ULONG RenderingFlags; - UCHAR DropShadowOrientation; - ULONG DropShadowColor; - UCHAR TransparentTextModeColor; -}CONSOLE_RENDER,*PCONSOLE_RENDER; - -#define CONSOLE_RENDER_RENDERING_FLAG_TRANSPARENT 1 -#define CONSOLE_RENDER_RENDERING_FLAG_DROPSHADOW 2 -#define CONSOLE_RENDER_RENDERING_FLAG_DROPSHADOWOVERANYBACKGROUND 4 - -#define CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTH 0 -#define CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHEAST 1 -#define CONSOLE_RENDER_DROPSHADOWORIENTATION_EAST 2 -#define CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHEAST 3 -#define CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTH 4 -#define CONSOLE_RENDER_DROPSHADOWORIENTATION_SOUTHWEST 5 -#define CONSOLE_RENDER_DROPSHADOWORIENTATION_WEST 6 -#define CONSOLE_RENDER_DROPSHADOWORIENTATION_NORTHWEST 7 - -#define CONSOLE_RENDER_DROPSHADOWORIENTATIONS 8 - -int CONSOLE_RENDER_Initialize(PCONSOLE_RENDER Render, UCHAR SlotWidth, UCHAR SlotHeight, ULONG CursorBlinkFrames, PULONG pBasicColors, PUCHAR pCharacterMasks, PUCHAR pCursorMask, PUCHAR pCursorInsertMask, PUCHAR pMousePointerMask); -int CONSOLE_RENDER_Finalize(PCONSOLE_RENDER Render); -int CONSOLE_RENDER_Render(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video); -int CONSOLE_RENDER_RenderChanges(PCONSOLE_RENDER Render, PCONSOLE_LOGIC Console, PCONSOLE_VIDEO Video); -int CONSOLE_RENDER_SetDropShadowOrientation(PCONSOLE_RENDER Render, UCHAR DropShadowOrientation); -int CONSOLE_RENDER_SetDropShadowColor(PCONSOLE_RENDER Render, ULONG DropShadowColor); -int CONSOLE_RENDER_SetTransparentTextModeColor(PCONSOLE_RENDER Render, UCHAR TransparentTextModeColor); -int CONSOLE_RENDER_SetRenderingOptions(PCONSOLE_RENDER Render, ULONG RenderingFlags); -int CONSOLE_RENDER_SetRenderingOptions(PCONSOLE_RENDER Render, ULONG RenderingFlags); -int CONSOLE_RENDER_GetDropShadowOrientation(PCONSOLE_RENDER Render, PUCHAR pDropShadowOrientation); -int CONSOLE_RENDER_GetDropShadowColor(PCONSOLE_RENDER Render, PULONG pDropShadowColor); -int CONSOLE_RENDER_GetTransparentTextModeColor(PCONSOLE_RENDER Render, PUCHAR pTransparentTextModeColor); -int CONSOLE_RENDER_GetRenderingOptions(PCONSOLE_RENDER Render, PULONG pRenderingFlags); - -#endif//__CONSOLERENDER_INCLUDED__ diff --git a/psl1ght/libs/libconsole/include/ConsoleVideo.h b/psl1ght/libs/libconsole/include/ConsoleVideo.h deleted file mode 100755 index d1155b9e..00000000 --- a/psl1ght/libs/libconsole/include/ConsoleVideo.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef __CONSOLEVIDEO_INCLUDED__ -#define __CONSOLEVIDEO_INCLUDED__ - -#include - -typedef struct _CONSOLE_VIDEO -{ - PUCHAR FrameBuffer; - ULONG ResolutionX; - ULONG ResolutionY; - ULONG ResolutionBPP; - ULONG ScanLine; - ULONG ViewPortX; - ULONG ViewPortWidth; - ULONG ViewPortY; - ULONG ViewPortHeight; -// PUCHAR ViewPortBackBuffer; - ULONG ViewPortScanLine; - PUCHAR ViewPortStart; -}CONSOLE_VIDEO,*PCONSOLE_VIDEO; - -int CONSOLE_VIDEO_Initialize(PCONSOLE_VIDEO Video, PUCHAR FrameBuffer, ULONG ResolutionX, ULONG ResolutionY, UCHAR ResolutionBPP, ULONG ResolutionScanLine, ULONG ViewPortX, ULONG ViewPortWidth, ULONG ViewPortY, ULONG ViewPortHeight); -int CONSOLE_VIDEO_Finalize(PCONSOLE_VIDEO Video); -int CONSOLE_VIDEO_Save(PCONSOLE_VIDEO Video); -int CONSOLE_VIDEO_Restore(PCONSOLE_VIDEO Video); -int CONSOLE_VIDEO_PutViewPortX(PCONSOLE_VIDEO Video, ULONG ViewPortX); -int CONSOLE_VIDEO_PutViewPortY(PCONSOLE_VIDEO Video, ULONG ViewPortY); -int CONSOLE_VIDEO_PutViewPortWidth(PCONSOLE_VIDEO Video, ULONG ViewPortWidth); -int CONSOLE_VIDEO_PutViewPortHeight(PCONSOLE_VIDEO Video, ULONG ViewPortHeight); -int CONSOLE_VIDEO_GetViewPortX(PCONSOLE_VIDEO Video, PULONG pViewPortX); -int CONSOLE_VIDEO_GetViewPortY(PCONSOLE_VIDEO Video, PULONG pViewPortY); -int CONSOLE_VIDEO_GetViewPortWidth(PCONSOLE_VIDEO Video, PULONG pViewPortWidth); -int CONSOLE_VIDEO_GetViewPortHeight(PCONSOLE_VIDEO Video, PULONG pViewPortHeight); -int CONSOLE_VIDEO_PutPixel(PCONSOLE_VIDEO Video, ULONG X, ULONG Y, ULONG Color); - -#endif//__CONSOLEVIDEO_INCLUDED__ \ No newline at end of file From 621a68e350aee55ac9d24b716ee56016f2af13c8 Mon Sep 17 00:00:00 2001 From: c0de90e7 Date: Thu, 18 Nov 2010 13:52:14 +0100 Subject: [PATCH 8/9] Added two missing Makefiles so that libconsole can be built as other libs are and consoleTest can be built as other samples are --- psl1ght/libs/libconsole/Makefile | 57 ++++++++++++++++++++++++ samples/consoleTest/Makefile | 76 ++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 psl1ght/libs/libconsole/Makefile create mode 100755 samples/consoleTest/Makefile diff --git a/psl1ght/libs/libconsole/Makefile b/psl1ght/libs/libconsole/Makefile new file mode 100644 index 00000000..b32efdb9 --- /dev/null +++ b/psl1ght/libs/libconsole/Makefile @@ -0,0 +1,57 @@ +.SUFFIXES: + +-include ../../../Makefile.base + +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCE := source +INCLUDE := ../../include +DATA := data +LIBS := + +LD := ppu-ld + +CFLAGS := -g -O2 -Wall + +ifneq ($(BUILD),$(notdir $(CURDIR))) + +export OUTPUT := $(CURDIR)/$(TARGET) +export VPATH := $(foreach dir,$(SOURCE),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) +export BUILDDIR := $(CURDIR)/$(BUILD) +export DEPSDIR := $(BUILDDIR) + +CFILES := $(foreach dir,$(SOURCE),$(notdir $(wildcard $(dir)/*.c))) +CXXFILES := $(foreach dir,$(SOURCE),$(notdir $(wildcard $(dir)/*.cpp))) +SFILES := $(foreach dir,$(SOURCE),$(notdir $(wildcard $(dir)/*.S))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.bin))) + +export OFILES := $(CFILES:.c=.o) \ + $(CXXFILES:.cpp=.o) \ + $(SFILES:.S=.o) + +export BINFILES := $(BINFILES:.bin=.bin.h) + +export INCLUDES := $(foreach dir,$(INCLUDE),-I$(CURDIR)/$(dir)) \ + -I$(CURDIR)/$(BUILD) + +.PHONY: $(BUILD) clean + +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +clean: + @echo Clean... + @rm -rf $(BUILD) $(OUTPUT).elf $(OUTPUT).self $(OUTPUT).a + +else + +DEPENDS := $(OFILES:.o=.d) + +$(OUTPUT).a: $(OFILES) + + +-include $(DEPENDS) + +endif diff --git a/samples/consoleTest/Makefile b/samples/consoleTest/Makefile new file mode 100755 index 00000000..495ca6c0 --- /dev/null +++ b/samples/consoleTest/Makefile @@ -0,0 +1,76 @@ +.SUFFIXES: +ifeq ($(strip $(PSL1GHT)),) +$(error "PSL1GHT must be set in the environment.") +endif + +include $(PSL1GHT)/Makefile.base + +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCE := source +INCLUDE := include +DATA := data +LIBS := -lgcm_sys -lreality -lsysutil -lio -lconsole + +TITLE := Template - PSL1GHT +APPID := TEST00003 +CONTENTID := UP0001-$(APPID)_00-0000000000000000 + +CFLAGS += -g -O2 -Wall --std=gnu99 +CXXFLAGS += -g -O2 -Wall + +ifneq ($(BUILD),$(notdir $(CURDIR))) + +export OUTPUT := $(CURDIR)/$(TARGET) +export VPATH := $(foreach dir,$(SOURCE),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) +export BUILDDIR := $(CURDIR)/$(BUILD) +export DEPSDIR := $(BUILDDIR) + +CFILES := $(foreach dir,$(SOURCE),$(notdir $(wildcard $(dir)/*.c))) +CXXFILES := $(foreach dir,$(SOURCE),$(notdir $(wildcard $(dir)/*.cpp))) +SFILES := $(foreach dir,$(SOURCE),$(notdir $(wildcard $(dir)/*.S))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.bin))) + +export OFILES := $(CFILES:.c=.o) \ + $(CXXFILES:.cpp=.o) \ + $(SFILES:.S=.o) + +export BINFILES := $(BINFILES:.bin=.bin.h) + +export INCLUDES := $(foreach dir,$(INCLUDE),-I$(CURDIR)/$(dir)) \ + -I$(CURDIR)/$(BUILD) + +.PHONY: $(BUILD) clean + +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +clean: + @echo Clean... + @rm -rf $(BUILD) $(OUTPUT).elf $(OUTPUT).self $(OUTPUT).a $(OUTPUT).pkg + +pkg: $(BUILD) + @echo Creating PKG... + @mkdir -p $(BUILD)/pkg + @mkdir -p $(BUILD)/pkg/USRDIR + @cp $(ICON0) $(BUILD)/pkg/ + @$(FSELF) -n $(BUILD)/$(TARGET).elf $(BUILD)/pkg/USRDIR/EBOOT.BIN + @$(SFO) --title "$(TITLE)" --appid "$(APPID)" -f $(SFOXML) $(BUILD)/pkg/PARAM.SFO + @$(PKG) --contentid $(CONTENTID) $(BUILD)/pkg/ $(OUTPUT).pkg + +run: $(BUILD) + @$(PS3LOADAPP) $(OUTPUT).self + +else + +DEPENDS := $(OFILES:.o=.d) + +$(OUTPUT).self: $(OUTPUT).elf +$(OUTPUT).elf: $(OFILES) +$(OFILES): $(BINFILES) + +-include $(DEPENDS) + +endif From 35746715b44f95ee81d5cdc7c2c49174cf5c7442 Mon Sep 17 00:00:00 2001 From: c0de90e7 Date: Mon, 13 Dec 2010 04:25:51 +0100 Subject: [PATCH 9/9] added ConsoleMisc for terminal emulation, windowing, etc. changed Console.h, ConsoleBase.h a bit --- psl1ght/include/console/ConsoleMisc.h | 45 +++ psl1ght/libs/libconsole/source/ConsoleMisc.c | 393 +++++++++++++++++++ 2 files changed, 438 insertions(+) create mode 100755 psl1ght/include/console/ConsoleMisc.h create mode 100755 psl1ght/libs/libconsole/source/ConsoleMisc.c diff --git a/psl1ght/include/console/ConsoleMisc.h b/psl1ght/include/console/ConsoleMisc.h new file mode 100755 index 00000000..7b8af6a9 --- /dev/null +++ b/psl1ght/include/console/ConsoleMisc.h @@ -0,0 +1,45 @@ +#ifndef __CONSOLEMISC_INCLUDED__ +#define __CONSOLEMISC_INCLUDED__ + +#include + +#include + + +typedef struct _CONSOLE_MISC_PANEL +{ + ULONG Columns; + ULONG Rows; + ULONG DrawPosX; + ULONG DrawPosY; + UCHAR DrawTextColor; + UCHAR DrawBackgroundColor; + PATTR_CHAR_PAIR AttrCharPairGrid; + int ScrollLockEnabled; +}CONSOLE_MISC_PANEL,*PCONSOLE_MISC_PANEL; + +int CONSOLE_MISC_PANEL_Initialize(PCONSOLE_MISC_PANEL Panel, ULONG Columns, ULONG Rows); +int CONSOLE_MISC_PANEL_Finalize(PCONSOLE_MISC_PANEL Panel); +int CONSOLE_MISC_PANEL_BltToLogic(PCONSOLE_MISC_PANEL Panel, PCONSOLE_LOGIC DstConsole, ULONG SrcX, ULONG SrcWidth, ULONG SrcY, ULONG SrcHeight, ULONG DstX, ULONG DstWidth, ULONG DstY, ULONG DstHeight); +int CONSOLE_MISC_PANEL_BltToPanel(PCONSOLE_MISC_PANEL Panel, PCONSOLE_MISC_PANEL DstPanel, ULONG SrcX, ULONG SrcWidth, ULONG SrcY, ULONG SrcHeight, ULONG DstX, ULONG DstWidth, ULONG DstY, ULONG DstHeight); +ULONG CONSOLE_MISC_PANEL_GetDrawPosX(PCONSOLE_MISC_PANEL Panel); +ULONG CONSOLE_MISC_PANEL_GetDrawPosY(PCONSOLE_MISC_PANEL Panel); +int CONSOLE_MISC_PANEL_SetDrawPosX(PCONSOLE_MISC_PANEL Panel, ULONG PosX); +int CONSOLE_MISC_PANEL_SetDrawPosY(PCONSOLE_MISC_PANEL Panel, ULONG PosY); +UCHAR CONSOLE_MISC_PANEL_GetDrawTextColor(PCONSOLE_MISC_PANEL Panel); +UCHAR CONSOLE_MISC_PANEL_GetDrawBackgroundColor(PCONSOLE_MISC_PANEL Panel); +int CONSOLE_MISC_PANEL_SetDrawTextColor(PCONSOLE_MISC_PANEL Panel, UCHAR TextColor); +int CONSOLE_MISC_PANEL_SetDrawBackgroundColor(PCONSOLE_MISC_PANEL Panel, UCHAR BackgroundColor); +int CONSOLE_MISC_PANEL_GetTextColorAtXY(PCONSOLE_MISC_PANEL Panel, ULONG X, ULONG Y, PUCHAR pTextColor); +int CONSOLE_MISC_PANEL_GetBackgroundColorAtXY(PCONSOLE_MISC_PANEL Panel, ULONG X, ULONG Y, PUCHAR pBackgroundColor); +int CONSOLE_MISC_PANEL_SetTextColorAtXY(PCONSOLE_MISC_PANEL Panel, ULONG X, ULONG Y, UCHAR TextColor); +int CONSOLE_MISC_PANEL_SetBackgroundColorAtXY(PCONSOLE_MISC_PANEL Panel, ULONG X, ULONG Y, UCHAR BackgroundColor); +void CONSOLE_MISC_PANEL_putc(PCONSOLE_MISC_PANEL Panel, int UseDrawTextColor, int UseDrawBackgroundColor, UCHAR C); +UCHAR CONSOLE_MISC_PANEL_getc(PCONSOLE_MISC_PANEL Panel); +void CONSOLE_MISC_PANEL_puts(PCONSOLE_MISC_PANEL Panel, int UseDrawTextColor, int UseDrawBackgroundColor, char* S); +void CONSOLE_MISC_PANEL_gets(PCONSOLE_MISC_PANEL Panel, PUCHAR S, ULONG MaxLength, int CopyBeyondNullChar); +void CONSOLE_MISC_PANEL_printf(PCONSOLE_MISC_PANEL Panel, int UseDrawTextColor, int UseDrawBackgroundColor, char* FormatString, ...); +void CONSOLE_MISC_PANEL_Clear(PCONSOLE_MISC_PANEL Panel); +void CONSOLE_MISC_PANEL_SetScrollLock(PCONSOLE_MISC_PANEL Panel, int ScrollLockEnabled); + +#endif//__CONSOLEMISC_INCLUDED__ diff --git a/psl1ght/libs/libconsole/source/ConsoleMisc.c b/psl1ght/libs/libconsole/source/ConsoleMisc.c new file mode 100755 index 00000000..e3cd2050 --- /dev/null +++ b/psl1ght/libs/libconsole/source/ConsoleMisc.c @@ -0,0 +1,393 @@ +#include + +int CONSOLE_MISC_PANEL_Initialize(PCONSOLE_MISC_PANEL Panel, ULONG Columns, ULONG Rows) +{ + Panel->AttrCharPairGrid = malloc(Columns*Rows*sizeof(ATTR_CHAR_PAIR)); + + if(Panel->AttrCharPairGrid != NULL) + { + memset(Panel->AttrCharPairGrid,0,Columns*Rows*sizeof(ATTR_CHAR_PAIR)); + + Panel->Columns = Columns; + Panel->Rows = Rows; + Panel->DrawBackgroundColor = CONSOLE_BASIC_COLOR_BLACK; + Panel->DrawTextColor = CONSOLE_BASIC_COLOR_LIGHTGRAY; + Panel->DrawPosX = 0; + Panel->DrawPosY = 0; + Panel->ScrollLockEnabled = FALSE; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_MISC_PANEL_Finalize(PCONSOLE_MISC_PANEL Panel) +{ + free(Panel->AttrCharPairGrid); + + Panel->AttrCharPairGrid = NULL; + + return TRUE; +} + +int CONSOLE_MISC_PANEL_BltToLogic(PCONSOLE_MISC_PANEL Panel, PCONSOLE_LOGIC DstConsole, ULONG SrcX, ULONG SrcWidth, ULONG SrcY, ULONG SrcHeight, ULONG DstX, ULONG DstWidth, ULONG DstY, ULONG DstHeight) +{ + int i,j; + ULONG EffectiveWidth,EffectiveHeight; + + if(((SrcX+SrcWidth)<=Panel->Columns)&&((SrcY+SrcHeight)<=Panel->Rows)&&((DstX+DstWidth)<=DstConsole->Columns)&&((SrcY+SrcHeight)<=DstConsole->Rows)) + { + EffectiveWidth = (SrcWidthAttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Attr,Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Char); + } + } + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_MISC_PANEL_BltToPanel(PCONSOLE_MISC_PANEL Panel, PCONSOLE_MISC_PANEL DstPanel, ULONG SrcX, ULONG SrcWidth, ULONG SrcY, ULONG SrcHeight, ULONG DstX, ULONG DstWidth, ULONG DstY, ULONG DstHeight) +{ + int i,j; + ULONG EffectiveWidth,EffectiveHeight; + + if(((SrcX+SrcWidth)<=Panel->Columns)&&((SrcY+SrcHeight)<=Panel->Rows)&&((DstX+DstWidth)<=DstPanel->Columns)&&((SrcY+SrcHeight)<=DstPanel->Rows)) + { + EffectiveWidth = (SrcWidthAttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Attr = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Attr; + DstPanel->AttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Char = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Char; + } + } + } + else + { + if(SrcY=0;j--) + { + for(i = 0;iAttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Attr = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Attr; + DstPanel->AttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Char = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Char; + } + } + } + else + { + if(SrcY>DstY) + { + for(j = 0;jAttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Attr = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Attr; + DstPanel->AttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Char = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Char; + } + } + } + else + { + if(SrcX=0;i--) + { + DstPanel->AttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Attr = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Attr; + DstPanel->AttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Char = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Char; + } + } + } + else + { + if(SrcX>DstX) + { + for(j = 0;jAttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Attr = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Attr; + DstPanel->AttrCharPairGrid[(DstPanel->Columns*(DstY+j))+(DstX+i)].Char = Panel->AttrCharPairGrid[(Panel->Columns*(SrcY+j))+(SrcX+i)].Char; + } + } + } + } + } + } + } + + return TRUE; + } + else + { + return FALSE; + } +} + +ULONG CONSOLE_MISC_PANEL_GetDrawPosX(PCONSOLE_MISC_PANEL Panel) +{ + return Panel->DrawPosX; +} + +ULONG CONSOLE_MISC_PANEL_GetDrawPosY(PCONSOLE_MISC_PANEL Panel) +{ + return Panel->DrawPosY; +} + +int CONSOLE_MISC_PANEL_SetDrawPosX(PCONSOLE_MISC_PANEL Panel, ULONG PosX) +{ + if(PosXColumns) + { + Panel->DrawPosX = PosX; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_MISC_PANEL_SetDrawPosY(PCONSOLE_MISC_PANEL Panel, ULONG PosY) +{ + if(PosYRows) + { + Panel->DrawPosY = PosY; + + return TRUE; + } + else + { + return FALSE; + } +} + +UCHAR CONSOLE_MISC_PANEL_GetDrawTextColor(PCONSOLE_MISC_PANEL Panel) +{ + return Panel->DrawTextColor; +} + +UCHAR CONSOLE_MISC_PANEL_GetDrawBackgroundColor(PCONSOLE_MISC_PANEL Panel) +{ + return Panel->DrawBackgroundColor; +} + +int CONSOLE_MISC_PANEL_SetDrawTextColor(PCONSOLE_MISC_PANEL Panel, UCHAR TextColor) +{ + if(TextColor<16) + { + Panel->DrawTextColor = TextColor; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_MISC_PANEL_SetDrawBackgroundColor(PCONSOLE_MISC_PANEL Panel, UCHAR BackgroundColor) +{ + if(BackgroundColor<16) + { + Panel->DrawBackgroundColor = BackgroundColor; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_MISC_PANEL_GetTextColorAtXY(PCONSOLE_MISC_PANEL Panel, ULONG X, ULONG Y, PUCHAR pTextColor) +{ + if((XColumns)&&(YRows)) + { + *pTextColor = (Panel->AttrCharPairGrid[(Y*Panel->Columns)+X].Attr)&0xF; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_MISC_PANEL_GetBackgroundColorAtXY(PCONSOLE_MISC_PANEL Panel, ULONG X, ULONG Y, PUCHAR pBackgroundColor) +{ + if((XColumns)&&(YRows)) + { + *pBackgroundColor = ((Panel->AttrCharPairGrid[(Y*Panel->Columns)+X].Attr)>>4)&0xF; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_MISC_PANEL_SetTextColorAtXY(PCONSOLE_MISC_PANEL Panel, ULONG X, ULONG Y, UCHAR TextColor) +{ + if((XColumns)&&(YRows)&&(TextColor<16)) + { + Panel->AttrCharPairGrid[(Y*Panel->Columns)+X].Attr &= 0xF0; + Panel->AttrCharPairGrid[(Y*Panel->Columns)+X].Attr |= TextColor; + + return TRUE; + } + else + { + return FALSE; + } +} + +int CONSOLE_MISC_PANEL_SetBackgroundColorAtXY(PCONSOLE_MISC_PANEL Panel, ULONG X, ULONG Y, UCHAR BackgroundColor) +{ + if((XColumns)&&(YRows)&&(BackgroundColor<16)) + { + Panel->AttrCharPairGrid[(Y*Panel->Columns)+X].Attr &= 0x0F; + Panel->AttrCharPairGrid[(Y*Panel->Columns)+X].Attr |= ((BackgroundColor<<4)&0xF0); + + return TRUE; + } + else + { + return FALSE; + } +} + +int AdvanceDrawPos(PCONSOLE_MISC_PANEL Panel) +{ + Panel->DrawPosX++; + + if(Panel->DrawPosX==Panel->Columns) + { + Panel->DrawPosX = 0; + Panel->DrawPosY++; + + if(Panel->DrawPosY==Panel->Rows) + { + Panel->DrawPosY--; + + return TRUE; + } + else + { + return FALSE; + } + } + else + { + return FALSE; + } +} + +void CONSOLE_MISC_PANEL_putc(PCONSOLE_MISC_PANEL Panel, int UseDrawTextColor, int UseDrawBackgroundColor, UCHAR C) +{ + int i; + + Panel->AttrCharPairGrid[(Panel->DrawPosY*Panel->Columns)+Panel->DrawPosX].Char = C; + + if(UseDrawBackgroundColor) + { + Panel->AttrCharPairGrid[(Panel->DrawPosY*Panel->Columns)+Panel->DrawPosX].Attr &= 0x0F; + Panel->AttrCharPairGrid[(Panel->DrawPosY*Panel->Columns)+Panel->DrawPosX].Attr |= ((Panel->DrawBackgroundColor<<4)&0xF0); + } + + if(UseDrawTextColor) + { + Panel->AttrCharPairGrid[(Panel->DrawPosY*Panel->Columns)+Panel->DrawPosX].Attr &= 0xF0; + Panel->AttrCharPairGrid[(Panel->DrawPosY*Panel->Columns)+Panel->DrawPosX].Attr |= Panel->DrawTextColor; + } + + if((AdvanceDrawPos(Panel))&&(!Panel->ScrollLockEnabled)) + { + CONSOLE_MISC_PANEL_BltToPanel(Panel,Panel,0,Panel->Columns,1,Panel->Rows-1,0,Panel->Columns,0,Panel->Rows-1); + + for(i = 0;iColumns;i++) + { + Panel->AttrCharPairGrid[((Panel->Rows-1)*Panel->Columns)+i].Char = 0; + } + } +} + +UCHAR CONSOLE_MISC_PANEL_getc(PCONSOLE_MISC_PANEL Panel) +{ + return Panel->AttrCharPairGrid[(Panel->DrawPosY*Panel->Columns)+Panel->DrawPosX].Char; +} + +void CONSOLE_MISC_PANEL_puts(PCONSOLE_MISC_PANEL Panel, int UseDrawTextColor, int UseDrawBackgroundColor, char* S) +{ + while(*S) + { + CONSOLE_MISC_PANEL_putc(Panel,UseDrawTextColor,UseDrawBackgroundColor,*S); + + S++; + } +} + +void CONSOLE_MISC_PANEL_gets(PCONSOLE_MISC_PANEL Panel, PUCHAR S, ULONG MaxLength, int CopyBeyondNullChar) +{ + while((MaxLength)&&((*S = CONSOLE_MISC_PANEL_getc(Panel))||(CopyBeyondNullChar))) + { + S++; + MaxLength--; + } +} + +void CONSOLE_MISC_PANEL_printf(PCONSOLE_MISC_PANEL Panel, int UseDrawTextColor, int UseDrawBackgroundColor, char* FormatString, ...) +{ + int TempSize; + va_list pTempArguments; + char TempStringBuffer[1024]; + + va_start(pTempArguments,FormatString); + TempSize = vsnprintf(TempStringBuffer,sizeof(TempStringBuffer),FormatString,pTempArguments); + va_end(pTempArguments); + + CONSOLE_MISC_PANEL_puts(Panel,UseDrawTextColor,UseDrawBackgroundColor,TempStringBuffer); +} + +void CONSOLE_MISC_PANEL_Clear(PCONSOLE_MISC_PANEL Panel) +{ + int i; + + Panel->DrawPosX = 0; + Panel->DrawPosY = 0; + + for(i = 0;i<(Panel->Columns*Panel->Rows);i++) + { + CONSOLE_MISC_PANEL_putc(Panel,TRUE,TRUE,0); + } + + Panel->DrawPosX = 0; + Panel->DrawPosY = 0; +} + +void CONSOLE_MISC_PANEL_SetScrollLock(PCONSOLE_MISC_PANEL Panel, int ScrollLockEnabled) +{ + Panel->ScrollLockEnabled = ScrollLockEnabled; +}