From b196233cfb97aec02881526b923da146bd694409 Mon Sep 17 00:00:00 2001 From: Gehstock Date: Mon, 30 Dec 2019 21:58:59 +0100 Subject: [PATCH] Release Popeye --- .../Nintendo Popeye Hardware/Popeye.jpg | Bin 0 -> 39407 bytes .../Popeye_MiST/Popeye.qpf | 31 + .../Popeye_MiST/Popeye.qsf | 242 +++++ .../Popeye_MiST/Popeye.sdc | 134 +++ .../Popeye_MiST/README.txt | 126 +++ .../Popeye_MiST/Release/POPEYE.ROM | Bin 0 -> 32768 bytes .../Popeye_MiST/Release/Popeye.rbf | Bin 0 -> 293381 bytes .../Popeye_MiST/clean.bat | 37 + .../Popeye_MiST/rtl/Popeye_MiST.sv | 261 +++++ .../Popeye_MiST/rtl/YM2149_linmix_sep.vhd | 574 ++++++++++ .../Popeye_MiST/rtl/build_id.tcl | 35 + .../Popeye_MiST/rtl/gen_ram.vhd | 84 ++ .../Popeye_MiST/rtl/pll_mist.v | 337 ++++++ .../Popeye_MiST/rtl/popeye.vhd | 977 ++++++++++++++++++ .../rtl/rom/popeye_bg_palette_rgb.vhd | 24 + .../Popeye_MiST/rtl/rom/popeye_ch_bits.vhd | 278 +++++ .../rtl/rom/popeye_ch_palette_rgb.vhd | 24 + .../Popeye_MiST/rtl/rom/popeye_sp_bits_1.vhd | 534 ++++++++++ .../Popeye_MiST/rtl/rom/popeye_sp_bits_2.vhd | 534 ++++++++++ .../Popeye_MiST/rtl/rom/popeye_sp_bits_3.vhd | 534 ++++++++++ .../Popeye_MiST/rtl/rom/popeye_sp_bits_4.vhd | 534 ++++++++++ .../rtl/rom/popeye_sp_palette_gb.vhd | 38 + .../rtl/rom/popeye_sp_palette_rg.vhd | 38 + .../Popeye_MiST/rtl/sdram.sv | 323 ++++++ Arcade_MiST/README.txt | 13 +- 25 files changed, 5707 insertions(+), 5 deletions(-) create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye.jpg create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.qpf create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.qsf create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.sdc create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/README.txt create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Release/POPEYE.ROM create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Release/Popeye.rbf create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/clean.bat create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/Popeye_MiST.sv create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/YM2149_linmix_sep.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/build_id.tcl create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/gen_ram.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/pll_mist.v create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/popeye.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_bg_palette_rgb.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_ch_bits.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_ch_palette_rgb.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_1.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_2.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_3.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_4.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_palette_gb.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_palette_rg.vhd create mode 100644 Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/sdram.sv diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye.jpg b/Arcade_MiST/Nintendo Popeye Hardware/Popeye.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96e6290b9228cafe6d3c37583ff36c9384c6672b GIT binary patch literal 39407 zcmdqIbzEE7+CQ4Q(hlx0MT-{+E)@acRU!))YL+A2En)34B z`VQ}|{;7Wf_~!wpzXVvia)JJj>vaI&{SCm?3)v$P;YXL?f2A*7AOJG|abNh+qf428 zA)cQD0GBiWLj3hY<;p+OJ3r`M9OvVJXMmg6uivd$uU9Uy0WOnYxGyam8?VT;RGF8#3fKaXqIuUx%x z`O?h`slhLROII#mzH;*}+2yO(u3Y_L#>-c(Ub{|CLH&S|ibhyZAC9=eCI)<>qYHWA z7B_g4mQF+h>h9t7dwgj*yQQf3(~lgASzr3CtY33J^UUS~y(!zcz-7G1??92i14`j*R8Mr+L|(YT*>yi&7yZ5TOaBJ-Q_J%) zz}+hsHIN6%Fk-IEM7la^_^iqzoIlrM%gW#7i;{M}6qD-agWs zeoS=ktWnI(_3#}*M-=<{!D)q5KeoKURDUzkRf%#2&3XuYm6u1=O(v|oBFKztm)UX}sv!_k`Aar0Ln&X1 zNLE(uAl%urv$s8?c$1;RcbU7dO!OpR>a19h6%~wS{X16)LAjbLXr-8lGVg=s6sAc# zR0O9%UP?dqpj@|*ajP`0G~g$Xsir@$X~J12ej7U_baz!4*rZ!?G1X6$R8-$e(}oN1 z8{3B^lW3&#ax3?Rp|jHdJU&Vmw|%7*+I!ZQXJ?L*j^Ufz{zsob2j!m47tEx+2;*NZ z4)mTy@47^Y%Cqy!6#4TpI@bz-K;rhLYp=Yg_DIVRaU$$pc%?!iUC^#88l(a;I z4(uD4>NquC%%s1y&WX?3O8)w{ZDaq1$!WPCoAsqSxlnY}p;$0aUm2pZ>zI)~#li38 zoYyAq;NtuAV{N^x{jhFjGJB30);5Qk{%1JcGMOp#6T(;b3=768<40Xq1~vO-ZIUP~ zgCo%$&Itxff?FCC8a18hR@-0_4#0i(uX_HQ3m0Et=U{B%iW-06$C@V;U9#k*P}kqF zB{>VU-}ktieaMI&zklk>&WRrA6Eo)=xkUIW5xFlPvKT9S*y<(*Vyi6`TcRy$&?P+< ziOb2}k!u>n{y{ccKp& z4HK#;EGU?i;MP{DN87cmasX0(+IHcRc4cI5sLC7zZOG)%HFg~OT?|r(=mV9z&NL6d zY~%QlaVDPqaC|X12kZNrVB^2qsq(-0#3hf)@PS=IRlYmL@2-24JEre~V7@V!H-d4q zDl|2Xw+FtCr%~XjR^etjsBaxtO#an4I{u9kq_o<4Tu!>--TiUW!hr2q@hFC|d@L-o z&9+Ir4*cq4;LuD0@Xqte89(dQaRIC!fIs*rTo5I;D_A>JEl9(&c_-d887=RP?bYx4 z3ZBJ)W*)NF&!8x(BD`yCT#Ro~1vn%IJg4|+iJ}DMYuSintdfD=XMf!5|GR7a-Ss3J z?-x&x*yOK-ctm7Lal}Z`5qb>KSSi`Z%&|W$p#G-@S#^-77kd%aMwYNeP7FlUvK#in z1%1;9_S!Q6X@u=e1{nRUwQw-y{Z|+Kx4}EB`j-iq zg93_@huHTA_Pysw);`qWAWNyx$vZMFgS;E~2od~DDf>&Me&-$f>2cQGN#>t-NRNm* zS74by*ORzj!dOJaThDp~-!vt1?BNJHg&DcRCB8-!yj{s~UvPpSIZ-baJQwn&@bB*N zZxh-Ra8yY`+1ks}82z!@fU60%z>;z-98BebT^;D@L?vY|8*mCVn1QD&`SPZ|H7-V%@^E_#=SIRy^l2Yi?t*Rt|auSL2^N z_5MABaMRB0jvwDg#TH}F0hx&G@}Kzvs?ID@8^S)#(+JAGFu-v#otGh-T~Z4 z7Og9XqNa8TJ6rh7 zuF%+cB$=rrtVU|_)4&fS-$puIcosJFt*SyiY1uz*4{kv}YVGCG>gii%=KrSh+yAdL zGJY7u<4;!&asMsD6E?>}M)%Bja%CbKKrLL4-I|-`58G^Wi58+Q+qK&;5E0Yg6f9=y z^lV$JCeHyjMKGXfX=C#FLwVDuqNrI@aiHdDy<__k$Tz z*dEUtpsgDyqsN8G2Kw&IW@0?~{TAjGHPC9>vn$FbM$Gb+@EXTNzlZjD%cSn)*@KLC z%U z=R?i`QWys32fh!^0d<-mfB)`DS`d*N+cB=bUKF9V)SDk>4<&zrb$G}fz7`atInYyk zyC?2mUxX^%D+>glTOLpJMK}(;b7tIiDT{Q zNw$V1ML3vDFZ)uR12lX?bo{(H2VE5`PQScdaXr(uo2qNJ3cV`|TqrK9Nmxzz&ThmM zRy_KxtIeQjXFt-6S5IfkjOrmaTUU&ot7$-skBF!RuY1QO7`5dD?|Lo^Hxro~NzwYN zl|8efL21YHv8_J7LOzEW6mqX^M^Q1DrD=O4n8D=HN&?N;Je;FAISfb1VHGF{;SKoZ z95BVL-Cr{TbY|12T}!UzuW%PFGBZ$n*CjV%&z+9~39>~l+VC^FqwDl%jX7h=BG8IX z4(jNAH@9NNKFh8`$!9msmW9XyWs-SSM$C~SD#^jQv{4J*-TvW)JLF%#n%RUR6_Od) ztTR@Wr%I`Z$+ejFjoa}!Mo;5KHZJfXEp^(R`+J~@uY2HH3!8{+zu_zqF+~lo;$9KQ zvIaVI>pd5?ioRc~#-%x9YlFhouY>xgTj~dRlsCAQ%CMZ0Gw=?lwMIC5ry|bdDc63a>xT%s zkF};8C~HlqFjH8v(EL+?*35Tc&v32NYBhmhO^2~!fZHY!;oQgGxM!M|UQ&9hsK0>| zi{ytzMWcyxn-7{CWY}hF7*tRWC6vlnHIz!jqDRuMyGGx&S;QR`odf>3s!>@<7j*1e z^m#!48IztkNV%;D$|g8bF4OjFLH-KnwaK-ZJi7dVF$d~r{VZWqa$zqWrykbL%C(z7 z<@4S8o`K0l`tXipLQqCBn1KnenU;360jZjQ%fj$lg7V%QZZ6q3I|Ja2i84 zIl1q)#U`>q*5v509DjwVD_ZT>O=qoQ9Tk&A} zsGHaRy)PW%n78r$9jn}x1u4*NPI)omqzvxm>WgR$vvOG#!zYdBiJPLMT3!)pwW<8> z!ps>AO9$$wvBJ4oq_=a;IKh2PevTnw5X;am=^BMa2d!gp)?}IpB+7Att?{%(y0*226CXU$?kj^7hJ| zBnjS(AHf&Fw5W4Hcgb-QV_nupiH#jB*?wPDKVyx~e6$y1IHGesbCyuezhfeJp7 ze*~LP5uY?C`*=?(2CGu!ZjC}XYrf`+smXg?RH>y_n1YHnI zF1N$02OvcfQ4efCi&P~t#w@q!YXCtSx#q+`tl3!GFhttgaslto)g*b@pJLW8^_g}G zTKGYD7nV(e6Bl586L94_loPbcvjH%jDGdGY6ez2y1kQ?5^dlk@P|gG~f=No2M+HR2 zHm_Ni$Kq}{hl>HWR!4(aKS51R^U?e0?x#FRb$Pkmq;j}U(OYvAP;xUN3b@BDL@VvB zUBoLGH`OvW#lgnIU#|ajbT*L_CsyGx2ErtCqA^Gm5?SV_%$Er_#FT=g1wUKfkBdCf zthdcI!o)Tu(#Vt?b20kVDk24PVQjux9LprscY)F#gK(xA-qo~X7}Sf{o?4svMeijF zqX;HKv)q{EWK-h|Ev!ssEk8gdH9A{{C=wqvBA)i!Opj`?odcc$)#2WW^wV0-FB-g+L$aeeY+T-h{6r9J4+2*`IzJPGWIi zd(%?wN6PkeEpV?Kr@kj!QB_bVghKfeZXcR(^KfT`jjnbMp%)5Fcv*;&4eDYCMJ~xC*H}_@LJa8~ z(8>8}OFA*j4iB_)32hDP?h~Ejnf41sF|78AU9=A~jW%>q*yx3EofUy#eI9Uc;PefO zO(^8ipu?GA9kJMBqI&Ydu$Y^C!s@DyX%S>h(dY#toy53cm2GL4lA8R0Rl`I_3H?c> z5bC7Izi-_6AyLW}D(w4pR;*Xpt0cZ*nsRW`)5}A{ur$@`K669c*{`3Q4fm93V5R7+ zlHXNCNgMrUu+OW?afO6FsAq9`?G3yJmi0b%wR@%0OPzb+a)DLb~n2&sD1#;1dHlAcU;S5U9;hlk)!dWt~ ze9*{}1bmsE{&0hewR$Q+aqKC*9S1RWe&4fFwWh{}SHY^mj08NRMaG2srXSJ`Wml9d z>Q=scNl>DEO%!NDCl{rsb=zvqnbvd5Ra>f6=3RRoTDs9j95Be@re9bL6HE#l>0GW> z9};v1b-lSfmU&657H6qzxAT#Ue2jQ zf81DOy0;Jh?a}xYy4b5Y0RnBRjniswUp=|C^D4CQcJ3M1Z|=cw?E)UTPT_+#QpHav zi;lV7f963lCU%CA1RwQr`H`6pv#THBp@J&O7xQ0UGTua2gVu%0q|V(-z29Of*Ch^e z7>J0iC(h$5UVQfyHJKpInF+{#-jeOw!9&R=(i>8AJQu@@$z#i`CQ@trv z_I%@{(vS199_vz|*5l1$l&tG=v=?|TSbraFe<*Ym4@1f(9a*ep@5pE3y}7D^5Nhil zg^I`qbCe*}t-H5RIoySulIiA}=w8p|>pZbXr>B`0jI!I>V|mtpGc4(*p6ZyqN#a8! z?k4Oihr6Ihxvzib`>k~24)x*d+R=yKX!y3T`IPBFk=gqtox;vRtuJZhFIhG|g8D!B zgCDwZd)-=gD&s=LXk>aV_BX@wAAm3adicJC^14O5c%$X#JG6jOiw}JD@cn;iysB6D zhv=5ygg{^wMq(A6N2ZXH*If?u0yQJm2>j6moDDcgGr>J5^u5Gi_ZaeKdN`Nk@b7Av zrH(~a7;CaFelN-5oQpz%2vrA$mN|N^(sq`nb6fI0QwtNwqRzJ$DOw49)OGmR~u zC4zqUPbyL#5i{kvx8!xjqLI8jj>{5s?t@)&7`St8GyYy~xJ|xUzwt%<&9|r11Vl|W zUP#Vo9-io@nn(ZrTb$0C%e!|y6~vLkm&S9mk%fk-%g&=ZVgi`PP#`e^Y4s#WWshQX3dP%Kf2X~}52GO8ldEIJA1t5|!ypJJP%}!etwt!i7iZkSNwrIZhVr)RFhYEft*U9}KJbv&l;m$X zuk&g;(?YIqyZ*B6}5NIDyvy&VWTh&N4!#KJkLBcG#mj@4AChxwq|DDS>wC=q0# zy=)X@m0=LwmxI%Lx$?%LR>ugIo8Sl=JbG9uMGCTA1qlRNyx_Yduz^?Oh1jAl^A;N& z$zE;a0=e2S(G0U?Bd%vy)BA2d+E3<+0JL@w7u*xRL*=FORf!urL;l}rmsDVzB9&HGBQ(>G+sbM-W_kP9G9t^dewW+eR>M^Xr*vq|=snW<_uvle3)iiy!Dr99fXImN{q+$2)^=g=+`EKLzatTL z=NJ={htO_N_(sc}>l{_Ogc=n3eS^_HD6&1#R55^pzhbkambwSjF|d+EeMN}3BJq0~ ze z)VFYC0{%C+xsR#ZP&ga*{x4g_t3WxmStpfw*LM!g?zKH~4fbib*`!1uV}{QW(jQDj zM6K%VVdf)~I=TgT&EXac{cm|$bGX*&@uZQ(Z&xPe?fJGL$Wn=Y#yVMm$`UqgxA{#eDDvbm?hgDK| zF-WErsCjKA7JN-(O1ZxW#Q5CNw!jHC-xW>Sq_un1vJl;6Ni^ywXV^}u0db0@kY zg|AVUl(y!5{B-fE^=hwyh~sNP#LD4R*~gHN`H`h&YwK5aT0KL9mo)n}*=G+iZN4k9 zVJnWdc}|#o}9>r(A%P!i6>5_CN>35)PnV;NBVtGwm-s8yEi`Un6m;i zyDjm#vNK18L>q7LMeu!TS??fHP%bCOy#2Gw?5FlZn1^xl)>%$u5@S+S-V>0uH!ZT* zcsX=3g-d5J$Ea=LfY6%ZKjyaL>xW>_St!OssuuIr)OrPd&tVa{MNcfwSel=1Y9ZPT#h4z-829{XHQ ztY?DhDpSf*UzEh1$&7c*!OqeG^<^%w9d}-m-{;1 zPhy44b~1R6eJ}FHkqpDNtHmXhl!e}>U*(}&>oYCI`4+W^M+{?oEC;{hk`|(8AND(X zx#J6#&4;GDx-8WB-S#KWS~`W>uK^}1eFidCKjyg@*Dh-9eLXTc2UH4`OJWu++)o?~ zOpHv}%}GoI#V$+6%!3cORwAo5h%86&2p7C2GAFW>w zWO-52gbEJNpI86C-NNRab;<`rPZ$0d{n0|qhnq&l zIey-WADy)7I#Jq*$MK)Y#khw@NsL}z4Ru1nBAUiRh1cCx%ZTZYvr_fWXd={1PIZ9K z$B5~aY0%a&nMYtD7lAEuq$YRQ2yMOA3yX-pRlzV(-WN8R-;2d&jZ#QxbAfNGAr-bCxs+~2lNbvF zvi;PBL&&S3yon?`p$zl0Y+N(lMEAiW?PO_X*=_DoiUhVe&jGM!`Dly5%TBXLQ@`fc zR85r^$&^nJM(qycfDj%s(fQ~eD4UadN1zX6zC3e0FG)*%XV)N}#dmSI5q1BW$t!nh z4X6#KM}ukSd#K?gA;vawy%lNgQ79xZcz0Gsh^*S>J5ACK;m|H4r@eT&F42=EyAEHY zRB7Cu;BNMgAy8I~(2K^XimrDp9&#>aPML<+y$Ub>Jj*LNZL4awLNp!cN=&qlA!~;Q zu)lCFN~FPOn=h_KipR2M#)7Sgi~|yehZp8o%M}nAkWOsbj`2TJMuhsfyppx*26?yN zQ7SVUNb+Yp85OH2r|S0fEEUGZA@QJRQ{P!1PQh#1iPbq$x$5?Bz1!q!k50Q#S=8W) z?YQ~(?V_I6FsZs%JdsdccQVnxjjBnBSh4Q}CYHs-9ZB2wuy2ff>=#2BaSeqgtU;w|&?OA> zeldu2S_frH<8=m>7nqQZ(lw-*dmap_V&n9+-rcFt{Q%za!hiTKp+OcE!PG34w=S}Gx^a}H9`{| z?P`LPK<7o*WK5g`xS6Hv;SW$n69e+UqgGD_Q$GC5ncFoE99;__M{s zA8L)L)xXpx`qQq@N{MJRT*^roiK(2%#-y2d4C43J99SRY_s$$ypJ0)`Uqg{3DAT&5 z6$mD%Qp5c+ZF`mbPng;Zn4urJU7TObm<(-!2|7iXR~*YI+exjpVE7LQWSk$H@Vb{Y&%{hQHi%Kap)=Q!SAn8gSyI9x#2TWDt?#2Ey;^zQA8tBb)z;VY! zeTTZ59+@J%P)pf5=#M`#ls`Cbpe<${4wlaWTGwQwR5%7fI}1Ure@oUJ1|Wqj_exTd zacAUd8($jzb&i`}j_-R{ucUR&&`;lG+^=M<<0fnLaSXz}`f#xrxS#*WrJefGENg?$ zo+b#asD*00$m!dH989USK|N#@uEWs4PE#W={AEXB(67exsA_H3P-|quAS)_X)9M4! z5w3&#ru#H>?9ddUisYYDw750Dp!H^5C_NTzT8sdz9g3k=85e473!_KcY8^f1Bz(oE zAZgFs6Uc=i_Ti;;y=;oZc!YvTsgj;E+nqPgM0z~ii;C>cs})FRTw$La#R8Pn*b8Cx zRxMK}f>;hDr*zVud}-T?TBgj5DGVEla5h6ds2><0Rr65BD#m{se`VlxUxIbp?8Yd+ z6vYbS-p${>jY}DL-Nf|dKAcny+cE1ul3|2 z1OBQ1AL$SgH-Z z|0$zX4s68^`*Qz+TH!Lo?hw`M7$XWLbfxHF?uWse{o?GE_l56AVl;xopVw)yB)(#E zJ_+kSv)!4C>3D~_IVEQcK?6x&}8V_62tmA!kY&w&YX!pX6{w6UyPgx z*Rlfm@%g><5NpL*{Sn8nGboN8f@*2?AK`7sAWy;UnY zRux$g9JOx;Vo6ifB}3q-6x!c8k3p zEeCU-Ck_{~LT&ZIIuNGhGK1nc)@9wQJ!uJyX)>={S~VEnz$^#CE}H>`w8kz#HF{23lN>h6uPR;{>@V0=Dt7p$hbwFY09dtcFIw_G zko#q{$dCmiO=7G)Ci$|_2J2yTqxWpB`LCn+R}Qp+kJnzN=@c;cQld59S012;oiTv| z&xl~7_N?x&+aLLCH(4|U$<6wZzfa6aXKTx(a_bMzv?j%;j28TLN!;00s7yV}z?K%! zUI<~=h=XXyjoGeFjg|I${B=1~-7)F;d!q<3RYaZ(b4xi!% zjd+YgLGM+iKnlRksJ`EJ?tc3p(T7XN!T)l@GMO^|b2yo3_>U3iH_(qpbm{A(?!obu z9xJBlWf?8m#*s|glqt?~M&;FK~0yKQ&&?uwoD0yskpMCQ<|{ zr{8ti#mT(ix4S0BRhr`~PzEr!f9_7X(7iv9;>3 z&#T9ILdNn{r1B)zqZ%p%vuBa&XjgJ)@>Cw|)|MCkC3>+7H>~>$ORN%0n|V%s*A-Ww zhvIT|2Qg7D8sbA986qKXu33Y8=~EVLlG~KaZGCnbGJy5 z^vk+fM0&rXF0;75?;kW6?9PwAEs*m-O6o-#w@wctcvrRfV#C39F4QntlVkTv_e2k; z?y(aBF-BrGlf~tPXYG!->KWMt@@uLksOcC+A_QCHX4AK2RzGqpPdo}7W48H5{-fv+ zPvq{li5_=DDQCicaQ;pLwkKvMe zC7%C21YK5bH|SJ*W5Lx{;+PQ@eM2-N)zktNggkUujsCPw8<)#IHV=Yb1V(sSeLKy{ z4uN;z2s;jW&JD(4S>;@YR%N7J+wPp~yR1?z*N;b>7WgqRX|miGv9o&)xKXHK!kF#M z2cho3qVs<%WJx9ZSEOESW}uc$&js?%RI*;1l_oiQ-6QeaodPa7yuD~)^uNAV4cC=K z7P}w(A`xRG92qxGo%qVpbQf1pY(c?glYjS%M|7bllxN9-2xnMSIw?CN?mXzWE1buz!Q@4z)f&ERjF&gTX4*{&leJ?Sx7{(x z=ag3bi_vlL`p$#=m{uOq-x}oTO($uA3>c)8cz$7*etfhOk46p2J{aoRB_O1nxlVH+ zkd#oIIQniqr zLu67xcQVn;AMiepFVh+4y-R`A2n)@NQ|p7e6%y9EnUxI_e7Vr_Qp z5w#u{!(Ba9jIry$5C{{10;5Ya{;;`JD>Uuwecwk8KTdYljL3g zRwrCmZu&^5{^_H*=8HW_S;zQ?wev|M`|Oj8MWRdw157(^;x;%0uOP^hwIa4 z@%?&kX>(MggS8t0_&m6uC1xg`hzNr&XO%hq)wCKr_zSVM`tJqD9KX63{$nt9x1!uX z3f2p@WZM0HNFHG!3P^6MQYoe3$gb2d>{QZM0NDmpYQBl^zX>&*uWEJ1BoYOz$C23& zx;(Uapz>^{h?&&Xc-Ab;@y!>E;;aF?`#b|h@1;8SyN7`57u%VHR)W0!*yK7=RcfzV z=Z-u-07(C64*&HS{a6@Cre zPj_=Maa73w1Ya-4$bh!X2}dR%Gzkn2@*3E@7SVACOzO)L=|s=yR-IOD7dMRW*O*YJ z4<&xputpb~Cs1G?f8;d_cif)pCWB#4`n>>U6Bo43vQ@|u;Cgn?pEUpJ+5~#t{cBK?OFB~$TjfY^|C3iOx`PuuDYD?pScY|a+ct3M zqckr$kr!dSK88Cxi69qczcer5p;tC09&Nr&=YV)0eJ7IZqy?Qx$y;+{aPr}zC^J;!W5V<~HmYo4)x zrvrwPjzhbGbW;Ix&wf>K{ic=O4LpDdZHk>d4x0Ygvf2Iy_kX^2_YwM!H}k(>G>t427WK!dk>l%r?=gr+7Z z$5PS8AJ}^1!vJ$OUf#o*5KG5n$ZX#q&z(vfcltYHHq)OvusRp?f3F1Amo#e~i52#@?tV|$2^eC@VvtmjPc`M3 zJ-y4YHrmHddT3a=T2u_*>8b%jL=4g>q5a#2eqm4a2LAY5=9@@2Bo-^?64TU4tXxwj zvw6PY-$k-H%Y{oxRP7P``qjG=vYeLnbVWGZzaf?`Wnli^+ zo+(eJ3s+Y3r&79wRhWcjT-Ouj4EJXIQyNrzst+eV{T^T4vJ^LkfnkQ0;czFxQ3qEU zXlFP@^@Hm#k}=41?yqYv+j@B1&1i@p{E~pxmw^xK5IFy;`HW5YPV_6MMR@XVAPe~7 zi-Y^L@8A4I-}+m{+ZG9FUW{)0wP!4+9H#H5bL+;FmG78A8KmgKP|2up9-f&Bsm(8p z%sDB>co2ufLkDKil|&>p#L^bsB0UEs1@1-A^=AUI)A{9p(PGFnQ z0h2NL9;E{Y#twp?W2UK(R29!E;s-F*Vp_L>wA?~bGiC{bi85_G5ygLuq$n-h+IEaY z_4|ZSQ#ScUGSAk?cr_W{%BnVT?9$RBROtg1dWS|jD+IIG8%r`s7JXK^npxk;~qBAs;xr5UW2{|sh`vL4}mmNNPf5fjRm=6)tBZNY3+HplD&_;_h z%vjrPmG|K7*9Qw~t)eGmf4frt2mr4bb#w*ZqUN{{C)Z(F$g^*;xcz=UtE`t>vPn?S zS0#r3;QmR+bgdg}SfN()FjN~SYNHR60aFT!JiBxbNM_u3;Vn~zh}S+}j%2rt`nHvf zkI{=#=&n>qTJf^_r=w4OV6mSuG8o)x3fDPcbHZe^vi9Dj8)rkzx|}{lq+E$J zmcx=e7aBG<<6s3+?vgjEZ>X5li?Xa;Z94~eID3xpTgs!ryR0oz{knEC>u+wdj_qxAW6+_~$8N6vXT?iW1 zOMf%a*!FiSGZT9va%j4|=( zSC9pR_3n@l40g61OtdQUPtzM>dV|j{R(apP)><(V*CPE)`6vuM;bYQd8mQ%G%^R`z z2}?F|odRIu*1;K>UkVz_Z}F3;1jh}2JU~`SC$cWfBb-QX`3vFTJ1zbM(}^N7?7_-FS6@J zLpkJGvfV|LumQItu1LF3uJ{%j7)%awS9UBsEA8=j-$+!4IDE#Bk?dC-KLZiotIUax0)6q`{tZkCd}6kvw;O{;D@ z%$PEG>1;v4bIG}^=H_>vndAXZvG0tYp9#Nw>bGo- z;Z*IIWZxbsR8;H;F?sV5jY1@d(aT1%Wyb+~6rEG!^z5*wz~W8TdqcflIh!Y6HJ?5hQ z;2rQlmiV?|v^t!wJDeh$e_KtPv=1#^Qv?|Z8f8epV!RYgD|=W47Wr)IZ=XsWc4n`2 zoQ`FuX$=drGmQ>;CMqWAaRw!R&3nI{kfg1*fAN5XsSAN=*#&#gjm4!rX!hbOZobT8 z&T!vOwGWHkqiJH1>_LtRQw`mC8~X#g@s%1qN$n z9jDYi*xE3jR^f&3g5eiS5xs#w`CPy+1bv<)U*zN5)OuyM_Z5+)bwDTI6x6EeEFHGP ziG)_SEZV-y!^tp2JF9numr`nlxyC$_CEB!H1gO#3D+xVQ*{OZQvJK!ISmiFI6s9d= zHA3kiR>H`laTEh{+3KQXD0G+Lg!+-GGLo5k!5e%(lxFSW(rvPg3x+^O9F|hzZs`); zOy$yQCxlw>9IFI`^9&2)Gu2`C6fFi`XOQA7hmnb4u|bs&x+AQet)y3r;)slS`vz}s z+;`ZF6&xoj3hEJ0w$2qKQoPNOoS$seZCe^uFS4p&KMdbCJO?O;WeKu;wrw1AHM;Yb z(BCJT8_ClT1w&bTm&Dk8AgkR0GiU|!1V%`dH){9_>tf}f zwwJvKwSDuVE&ZR^ncF&h!N21{|A)xq-2Z`WB=sljivs-v`7hGef08b9{}0k}f0D-i zCuz+;N&i1UUl`wfE<9|R4(kYWy4U>U5kc_E?27DGRD<`(hCO;V8cQab0rWBzw zEmPU;cceQZKwI9?Oy6pE)Y^dcf1gU6%8Cgb+y!zscOF&Y)c0y`2s$E8@W9e5BV&nr zrC1jY9JI}d)g|==wh=MTcweqDG6rh%#^(It#ghU}vpsmbfyr^P917*TFpro|%*&EAH z=50=@`vtJQ_gG30j>JCOTvSxkF*J@EDfHtT2_MVyBRlH0ErDaeeC)O{_#m|kjVQQ7 zmI^B)x7H?8L9%47OhbO_Q+dAbTMpJA*O=Du*4Of>i*#&miAoG&MyY86c2lUNFTAgcClC1i_wzt5B zd8W7g=F0XIH&MXi*IAH6n2I&rcVb}y{p`D6pFsT;lc876OPoeA-AC1!q9cl$#Nlq9 zqcEUA$p^jNU&4oW(@p%YR~K%LfAtzps%7titf(%VSUk#Kez31Qb{L|db2H7&h$w*u zw%Wx{6@2fSj0HkV`B2UQO&JC6Ce<7ls7@8xy#5ppQ>W|sWtRwf%M#36s&Xs0ZwFE2T2qw8};@p)Ft-<8r+wvMjYy$7>*ar}rp*k+8mf-rpv07h^6!h>nzbqP(iw< zr#ZKo-dnlDppuhgra4-p2cOK-l&{9Zkq=iUQoJ)h{k^?4NUa^Rv#(YT`vy`Ui#8pW zXWz~HJJhM=9WG^%TAN{&?S1I$)!^i@|G#i|1jXQw0e65^OG^*gqS-+GnzB9h?rR`v z4Zc8q{*U3swy^Macr~*+MLoliv&9pl(akkihdgOmPFbHZaU#Mq`iHXm7}=Iyro9AC z^L5GKX?~Du`8});TN=A*EnG8B{7pdo62lLLpo~?P|1RS4Q+rL&$SlqFwoA9`xqis= z)v_SOf<oraMMdQ1p4oW4(jF z<%73P8xfju^8X-h@>Pp;HV8!&ekr!VajOgq&Bx{RWlnR}UwP7?=68d1)<2JVS{;zpk8SI;D3SJ+G*Uqx`?Rdk?TC zm#uA>y;W?WA_7WNI#Lw~NK+}HhZvFop-P9)1VRV9bb<*2hAN!|2+}(?I?@RpQF@o& zY~KT%?e?7Wo_Fu>`>*%<{{PQ)k%W0>*34S#UQeExS!)d!>zZUDlg0$n9u8`p)keLQ zAbmQAo|{???EtxXLpQI?&zbUSKNOfWiGrtoavSW?Dro22)^kX_ctpG)D~GI}*#W|p z4|-1!R?gVpK_I`!Vq)WpvVTww-&6lcF}}8wsMTG1L*PxK&yysfp=cHQk0RI6C@R24W{CiUEFuy-t`MY#en?EOMe|)48U{_-f)h4kyX1-|ePb zED<9y6uYf$u4N(;QPtRVQ4>lNt`*hEIrZ5Dou-(fiK9t4gV6?IbehP z$nex@{>VgkT4bq8R7VBam?lOjWM{TOJ~+~30;>3|Ev=X9jf2p;X?%BfT=Tt`l-5b6 z7dZvq%$uaf4Q0~{*JI`o%3y~CYI}ha`9#Q-l5$Ud@jrwNo{{ey=E!x6J1fml=@Dn` zt>NNjwGzf%5YA@w0p@dBE1aLLGG%sKOzQU(0n4nAKzWrf!SD-0xBL1;Cg5p1WaGw6 z_57bmIQH$vp!F&;cK4@EK*IN+E5S06c@wxM7iC@Zr%6~S)M#L6_paZ7ZbtB+^7g2y z?Gx??z>@%gO9OMd`&(+0uKj$B>tz63<>zK4_lfOa2RxN*|7Uvhyiq(1cWM)7&$BO? zC68383>Ie*W-{6p@?MRBTlm;ie^7n8U2skhb<{IcjlDAlrjsP+2{9AKUW5Cp)WG9ygfE1|Cho` za`EyF|6C;0{;28Qus6|{anT0c#tceex@M>I{xsidm#OpxL-)OZH$)_yTsgHV$T0!F ztb|lSrrIo}&UeGYi0aUnTxTb~mOc0Hg|1v_>cnMdpH-u)X!_2J3Af@4ew51Tlh6Ht zB`0a@_Fe^yrA)qrh!k^{eVU~!3B+V>X{YW&ik4E@K^iPc$n`ZA^r~&Nptor)x}Lbe zjM)9Ag=%h66=nVNo#8+Kcl;y|E3(hW7A?_5u!Ib}*P`UKqvN(3Ijrj7|*`?nJj%Yg3jE6S?%Wb0Z1Z$Os+L~g(37dv!E;{=CL`FM*LU!CI z@cVb-9$b;{>K#C?xMs5`*FaHitBQ)TS?_h|w%@TW(CeeE(f5II0Wm{FVw5gZHqz_; zZf|LfOPaqj(kL=)@~vnz_Sr<4R(ZF)DTF@0yxbs!WF-gdYAd=bFq1OFtCq2jS?qvt zFIMq|N^=iv#5y0L3`gr;Yv+9dn$N`J{ST|mkb96I_sAbqg=tHmW=;Op&)T7Ex}M5U zxef~L`F>E@sLNkqa5r~?=pB*86*Pw-moJB+U~WLzl);lkk8;<3f&kg_ zr{`s;M*#pN=H}3NiL5Dc+0{E+(rY@K!h?GS_5vbzx>BFN_rB&E0TMMI$;m2zr?OXF zKsu};GO%pFVjEC#cPN}CK3si}l&&P+&7R{UeXZjkZ6<5XCeKiaB!rKXm_v(`vOf)| zlv;XOQZBY!1Z|b+5Jq-@r(y_PFxa)SW*Jzh-zG>y3PZsPgEy_g*#!7B@&1BWG33`oNV1BXh3C3bt)Fkhs2w~a=bqmeIMYI)q=hQ!cX)Lf}P$&p)7)m$9#;UxTyHI@G%@-bX4 zmmZ&1)X9|4c{#n?4yV~zBy_KtA}AVm7iA_UO?aRe7*Oht=?j|13>hSJ79$3U!Of6l z<%u{3x9X0OOK&k4EN)FlKAgY^f-tn66zHB4iZ;V6r}Yi+L?u;zOo2cA%n;9+6ui7p zX1+X+=`OG-&RUe@RWEuXY8-v9t-!zKhIxoTJGKdx`FL_9tzB{^tAFf1RmWbY$Gump zp9N^;KHzG$64#oBG#9};Dk;5%sD5Yh2kVwpGWOUa;5jfmJ1>YS8?V%S3B`LfEnm4$mG*S68)^faH2163!w^@2=MR9Ln>n!|AfOi$ zl;+S0S|K|i`hEG&m1rv zc<9$u&of;$)(xCiDI+22x*krh*=}P(6ed-~+x!~d$$7!3gsyRuNQ^~^YRmTGx+&44 zV>RguXzfB?*den|_Ye3!O)Q26_I{n%xR3dI^~o{@;e_AvOd;Zx?VtB*VV5YM-o|28u1EDLQ#j1XvU_twA|!ensP+4;bZ0NEtlPOm*5&~yQirZ3K z#~3G_<$H3BC1Eb$6^&W8qimWxQYd%CAfLqPxbn=dibvM7`?8RF&Te|x^xB)+jT@)9 zV+6lzlw5vSU=~-=p)Sj7e9lKY7;l-mp!GBCI4QbP@CQ{~*O?x$y)KDvr4Ppo^Q&&e=;XLE6gU@7GW;XC*V~}!%sh7x$!&vo3YgCq3;oz zklcnhW|S4it0kX?!Y~^cyt-JSdY%Q`+^1F7VqW9*Ty&>a(A3ltr93Yu#o|jf!_?Xl zFwJ7L#1rO8=3sJ44r^qzEgJkCg*9*y=t`j|qCEK%{tHw(XFDf7dfp$8*lC%UOMJU5%shR1wVmKIEzLlFX@&6&{4;8^ayEWP@_Q|#;L`; zT<$OBovUEZ);hGYS$Jkxx1?OZfMlET$W`mD>lMn)`0Giyd3GyCRZ*wzfNV zlvUbJiE)(v*1PH#6P$A#$-$q)o0Ie?#lt=ZvKpJ!Wou7nl$6EBqu~;fAItVws0flO zVts6^e0g_uyp1WDx@x~ljyV3)K7~tr%(|b+oNtM^X7ZT%pw4*_mcdhsA}O?sM>&{a zC+_aIQOFaK`{Z-R?BV}$!}02m6I^r2TdtvzHVP0RLCBrzV;~^;iKrr75fe`U4_Uxmg7iel11clP_^V$qi~iS0GEwub?EgK)HmxVxKRg6UC%P*3LPZGUeE``^ry zZ@Jb1k6Q2Vv+QY+c%T2-R{H#I5X{aV%^%eQ<$YLbz94y^d)A^icMc%2`)oO7AwXgS zbi!j_(h7M_dm?ePjFE4?4yisGmH9*u6aWG|-=D~u412#_ztmT{$D~T97`GW4JgXdhHGSBwDlh4~`@g{WL7o%^INZy;}=i;@GUAT>-41n zpZC0IlNqzK3r!KO`gPp2xIqn)6}80Rg8fycn@zkH3~fzq%0gdHrc8@tIF4wJ-1$}{ zbJm69Y<%?_l*jQD(;Y&^nYGs;B5qQOj1R^+P&ZszIbE5b5*t$xh7!B1MTssYJ%a~C-ebjR!$*kd4 zN=c92tdL9Viw{x-OzQaENV~)a`MIkik1a}tGD;73PU8`6*<;FD@7?>aC*twyrKrwU zC))@oRMHD!$qL(9ySX?e+M19kx>Y0+{0(Ik@6A<%K8J0DQH)b_E8qpHLzHr5(r^Kk z-Gq}nlkr&+(ULi)8Ov3DVe)eHH9R*0+%7IlvW!hU_MveQ$5~9a7t{0UduzeOcf8Ez z8joB~65E4Suefs z7OO&L1MBCdE0^mgKf5JBVo6gZG9)9{5nnS(y$C<`NW4X^(<4ERJbryO^8<&ah+`U3 zpbI6vOw|QI>@Q!tLD{wUFaA~tQG)AEI?zcs$9tb3orsky^`a0~tles)hY~fbsz;hq zA{T4AwD50Errt%_fo2KT?^efVM9;yRTyiqgN9gk0cvU7S<9yJp{9?Cg-8yE!>B``m zDE_%-=#wU&kPsR4(BO4Xqf1U0bG8cHA2b3&x!V(y(V?%QxgoQZl-IV&}uH3p5QaH4K_hfYji-b``SR zO-MSXpqf_Da-M&v^!Jly{;0PfaSdg6>)4qRZQu&Pe7Nn14Z3{0nva^mi-fcy&&)FU z%73A&-wjPLmmC|(Np?eqceVsGc-Z-zIMhG$VMlaIxe@^`G{*$+1QQF^G0QjAsib`B(OOxi8Tg#!tosC;l z4VDD2_jZ=OHq@zR1Xe=jx7GrK*HX5kK1tAB*^JrQ7B0_#(J!LAjbLRH2{1EFt1M#X zq%-MoAMLA6(+yl{m1?f7PLl7Ee}SyLP)mX^180|VHsl2P;k{&<%KAOey_=bbS8-<{ zIjm3FoV{RcYBE7?@v1DGH9ZBAKxXfLz!Bo)C#S8ja~dqLb5z2De+4AND;pK((li2# z^L)1pwK+4OC})S%@Y`9fsP9qG-;$6QnyYSZR{g#RGN==VI=Cb@ML&NL!r)q8>lDMT z@??xayQrCmY<+YyELIlwP&WNfeSw zV(oTwScfn0g{o zFf<=0sHcT&Dvoq^{h)F(i3EMe$I4p7H+#h{au0?p^U9tw>ov~zMNg-U*x50YN91Vk z-JgrIfBY=o)m>uQ8O5LAQmKnnl_j6b_JM26=vjfpfHMLHCL?ilXR2iaed?fAFO8x} z*xbhEk`yUSfW!|f9r;R@x=(|e<_680G=sNpy{@lOM)h*52!Omkd}dcxk*VRNfeWM zXLB6g$WeisVT(!=Qg-r#OIRCV5r6rNJ@R_nmx@@&6;@Y%$ z7rh$|7(Ru?GzHq>D5f z@?Ma)NRo*nO&aqIIvY6T8wvC>HBY5T$#qiq`#zi|I}(3T$)47qE_-M@UER|}-?`vc zA}z<0`2bNhXYyE%d^8Q&?%&c8=w1e%=A#eAe@uBef_W>^!#F@9z_}8bt%I@%mthhr z8k+p={AF7}1jt_@zQjO4l%_;^(7M`eC^gbeT(`$~R8lGxPn*^Q1O==qG-bgp1)a>Tz1d%iYo?J+5`>L$;;z>H0Mv)0-(G_Awip z4p^@EsJAHpu(K3X-3xRJk*Z*~Mf#w$%4rcl?*!NMrfS~B$SKjl4p-H$TRwH{X~r|& zRLm!C{?(9ugM+zq%*kq#%2dm!Wp^ui9-jf#81c{h9YyY8BrndHRHu8ZvN_PZe5?UyVrEq6U1~Fy4Gz^Pq=Zrdk zLuYlsxBOO*VFD}YY9ruV99y1{lrKEk@m%-V1qj0tO$xFN(Zt*G7HcBDhCnnn(ZP^z z1JSCpS}ck!H!Qw5vVHFzAev-zrE4Yj7Y>GG#libN%0A}&aALuaUcaCd;zz^=m$&P`KP=$1)Yl#6d2_87dpOTv9+H@x?ym3o_Z&z$wPc*Eitggk{ZGE9YseJLR z>U0bCf~KHgO2zQ)j53`@TsjNPWL8{j4ZO@@s#p9 zdX%~y#v*i_3x`CWERLF;A3Anj&&4ouGRauNM{p>U?o1V0tpb-tG3FWLiV4@+u;>W= z@1D(s|K771H5!c~O$>iDuLkx@OS6{bMtpAl-emKZg51m!KuJLCyCs0RR_VgjL6h*UTRsnHhAFLUE=z3okjxegiO2U)d8dTKCX z20~rs4+$|gueW1@{aLgsO7id~k%5c>6X-~Nn;QGga}ktcKm2-`vAErU(zRhLBy&v5#tVf)P?C&zM8TTl>;ay6UR_t_m~qu2_F@P*Ln(YEW@K;L0NJ z$qT*T?!w_a-0lnwad{fFV3(=+u1A-!hp{PTYwoj3OZy)RPgNdj!iJ^yDYAY^@VOPx zB@@PTBg!)T@F=ytl)TVDB5G#3h|;5X3K*Chi`k8+SP-+Y3V{#9>Ndpv&*THW#c;22 z2SWqxcT4l|+F6MzxeT!^oQVySUDd zhVJ*!NRx+7olddyTC*>3T=vE(S?SI`&XNIYJ^o| zU|^CMd~C^;B{e106PWT4Zw@5N?sY1-=&7}5BuaeXFR`U5UvTa7-GYyQP&q<7?Yq^kp+#m& z1fffLQ-H)N?WS8TcOsCFLIGk(22CP+FvyPSa&FvoLo#RS^+%3OddvwP4Lq)sTijQv z1uM-@KFZ7{baEkKPn9cZ!{yY1l(@0V2vupiVOy+GOs`+`kc%FvL`vi?>wBMq>88qb znk7-UJ0GLMZf_*sUdtBoi>tVWZb{-@dL}(vnA^C!KYJaO_P1=yDW4#g%cj%1=MN)& z0fQ?jTUq0btz2vr_%!LG5^3~fzXHANqcBP8rSkfmi6Km{tY8+?U zulG2g;;6*eB7aMksic^QoIv^a)}BQZGlo-1(GfY1{JK{=H=a(Hht+prgx8=gs=W&P z#2Vd(>n&_$7=gS^sq>c(2uLqkTrFZd2{c*Rc0T=$H)d0}Cy_fc> z-R(m7i@hFWBFG0l0;u@eW8YqnfV>W9vG6`w>O4q^li~1m`l`mZl|vX(732m^2No`y>YK$hw-Rb`BVM1IR%s ziKbo8ZfCZmwDpGQMPusy3|7hi%F4>dFRV2DgO!;-#Il$4>IERYDgYV32(QCA_O8kG z3f8Tw&j(LE+2?*nYOfd6Dc|SkFU`^vbn0CdVBaEDzU^}WIhDw02wHB?3B|gUO0;?~ z>pI*Vlto+-If$DQ!X+)kY7J!9g{#FAzyJ0 z!3QS!bx3upoOHuNebPKmRq z{{q~-YEw4D^;0gj(eZ(*K&QQ>zi8DbOb7Nn4>OQKai z(-PjtkgcCNv{MIVea!!S>|SNs<7(|M{>m=z@TqaJv*)ilv{^2dUo`d5tjdkz)L(}S zMY+9?2>0Z3@DIzaMA&f(hzosHEEoKubkmc}roiCuiu$C; z^{Rh&d3dJZDLPS;RyOIdlk0SBwpL%Wfmcox)beU^gS`X30=bU^`5VWpPU`XwJjM=V!Ix{R0o=nw{zn9c&Qx>#!y0nBYH z8nxN4D}aLKxK3r|f(H#PrGz-kG*1i7P$UpUO-aN`N-ER0%VW~;8rR*Xn6b*r{wW!c znQ}3c&SOZUJ~4quSXZry^#1L?USv8n#~X>0v+AmQkX|u>b_$id)&06$FwF$Ca%Nlc zVf1*gEpa{tZ(wtSuRv}+O8x>{=xLat&=yOrrXD>%N1Td=OrUj8?I2cpWy-3ift_x4 z#x7J_2PLh`@eVhbl}t{{2_eUt^hqwbv5o1HyGR~!&-$g#^!2&YcR>v!DGB%7&^WmbdM)cOZrR2r3Y`1JOE_dTuODtxOp;y)GNZ$vvKt=YmzK zgm?3CTzc?rL7*Ml*t5>oN98Mp4c+Zdl_hHO)owHTZJlV{%gMuA%OTp3MPn0vuT9 zRFb#a9Ow^Nbju7;F&4%(aSEh~#7Rwr#+*GP_4T6XTRmO)@a;v`SKSG5K;(~3f@Hjx z2-zi()dX_;x3ED!L@NWW|J3MZ$Wx6-;|Ha-?>dd5A(ub2(v(GpJ^Ki`As0ys&=PEb z?Jz2`;kWpX!0rf(<$1L9D2jXuFe|#nqa<*VGaFYf2s^oBT%R!M{2_V7L%oT&dHUF= z!XzqM>)U^|#PD~o|F)5 zrSW;Zjgd88ENxw6v*#rs`7OQF^Li zKR(~IS`RJzvmM4S96=fj!8_lZ;iBhFm}S$Vcg(^Cm@8b=w(f@R8=R{>a~z^Zv!6`H9~(i5r$)85TA)*7x-i)yXG;uU zu7li$M&wPmV;!8rfQRpxtaqmj(})rqI`HOlRk)D0s^&MWQK3B?II3>+F7No!w^x-E z7^3(hV|b5dLWqXIu@);zeZLcTh7%B?OpntYeM)e+0?A@JL#9^n@`Nozw#}0D9hjG@ zOxYk;a<0Ful^d>xK?zxu)xcF0VL+4&{lfild7Zi>c_cLd!4abz4 za7ugi#Co;@hE!!gFG_+;^GN=8tCU86Yn4*?;rwFBTyQ2S3x6UFI!hAKa`k#v^d>kB z-v9?O2(nK>2OFn2rND4!=4nF9smK5!Xw0!(IA6H2__`+_h@ml2qO~qo1K3^hsMEam zY4bCX<3=vrDd22mB}-hx>Hfx{M2<8AE619IkiH*On&3*9*H_C^eD!@*aMTg`W?gQH zrA71baw*M*d12?G;fy?NZdYUW#a8pHv2rMHRoSwxnwT?CdR%j^&lD-3+AuS9`K^FS zrQ61M(z55LDDAV}Sn>6Ht5$L{x>sG@3gEmd7cMzqTai#&i=JI-!UkWsp2gF~+Zwu@ z)3Jmmul1w7y}DhV+~f$&Y1?h6!PrJy`VT6L*V+;%^w$rE!p~J_O;xx9evfWSN35v1 z$$_p}Sk#3?Z-Hdb^d+^sZ!ZMt7JWI>3wvKC?l}dWRg}p{G(e5eEa<9zkj%S3-ymKK zWYQsh0dEXWEjQa7VR&M<(KUuigCI5Os*L&Z(YWU8Ao@kK0YaI!9$H zc;{(M<&p1Aiq8bK2WFCZXEV=QXMI-hxih(%L^p7|tXozBS6%59MP6RuLCT#-;8h)~ z2=9*@=X=GbmBcp@fF|2$dm2Hbgs|e7Y0d) zIGz)P-s)*3qe-)(!M8TJ#&*3Ibs)@)DWc_#3|XX*(8$PO_-hTs402%TPFAI~lf;re z=M%%&86XR~9TMK64(E|u&{bzCGNLTAoI58Gg+n-JKgRgbw8lCjyG_rsN0ZJZXj`?@ zTFx+%8(ky^P9R}Oh&UYF9!v-OfX@%lcU;|^c~Q`f)aeGvy6bTYg^nRO7Ikv?!;N~S z98|r;d7;lKw}8y*ciNfsD(GF-`3qZvi76wzey!#Xt*#*V*4Z0VX+NmUM}q*gr&TU; zKm_6K$w9k??XYhef!UKLAb2y0)4EEvdps74PT5v#zqC?WH_0)ZXWuPJwl)6{wnD^T z>*8)=@Yrth^*^SX=||Z(lU)yyoyyC4VgeG*>>-UReflL8-oK>GlyE7KA?Vjag0TGo z^+kEpZtgv6Q<>$fz7)lg(6d6U$KnzTv(nf;^v**JZqA+s>&{vS<01_7*2*j9ZYO$^ z*dt<9)s}>Y%W(`st8JjG`ATBmR|O_QGD^NWKdt6%ns&2!ns6lFzUQ@9h-Hjiq)=F9 zEm~?Sg=0N1;wGda%sha%w#XT2Zj~78D1T>A#PWN^8J0NUDXv4)Y)+rIOwj5{gww+X z1mDL^>UP?cDd>DMyi%9PzuDlKc|Lpj3~7Z;6xrc+P3D24?su!Bu;byl&}LP!NBB2Q zZ#tcO=lC6>M6uDl@+|qSP8xwS5{kaPTC3O&Dp~12?D21X9$pOSW<$$(8&wDy;fUjx zf(0R+y|X1L6;dwA$Yv*6rScgsqxEHqib2%#7!Pqbb18K_?s51LcP>FYWBN$+ifAy9 z`_XXSt^2OGi=`?w#59d~Sh#bgY}G8Y(nIIXE_-&poTNmVwp~X4lctj>1$p{)Yx839 z{u*)M#()F?C$hHdN&8vT4`5wZJa1gB?p^Q~T3m0xLnZTXH=qxx6@9mOp9niD)3{De zV8KrQN9rTb=+zKH26v0K%0@V!optSW!%FhV4bguSKzCgue$}5IVUGzkJ&!8!Cpc%; zdTQ8>6Qb4xpO>dd&k=W$Ele7ba88JjMlp?6ii#|Mryn|z;WA6Sv(`}EHOiL;^wk~UQKz0=4qR1fC77gWP7 zK|Fgc+afkOt_or@2r|OmiYud-4a`_t)llRZv|ChE)zgA^*aobKj$zCuU+)cw3O){! zG-0#NaO3`-=H!7_sky=I6~QVQN_a(nJi)kY)2$MDvxzMlo#$jFQgWVPC~n9Cqnir~ z3T#J{$t~B6BTgcnbs8d+?pB^{aLX{T?v?=|+trN;jNU4s?EI|2RPl!7=Wlp4R3_2I zdR*fIxHgp;kx}&oeabjmAc-yv+{zq?ig+o1-YS6;0bzh&T`}l$DLyx8(Zk%L8xlHr znY9Y7B_nB@hmJSlWb^9jgquA1Z-2%O{?^a2*E*qi4&Efwk25>|6u3ar>2QiwnI*t>;LIT9;ykgHv!PGPjCLd&Cd zHZ|Pgl8cD~J{x{rl9Dqd>&eD1L{y9HixuG~_)@Tq>s@8c5SvybbC3~=w8PxWi{`0dZM8% zVPCia^8OH|`<^JZ_eW{7*C&7t+k-vf?@{a4d32v(A^I4hE0l% zn#j*bS?Wd&8lnJsjtU|m+8?UW(t%;R9dP?gDRnf|uXtx-5?Fw6WPSvHb)$TOF zSi94ner%C$sYrbU1Bk0aPNk_$tFaHW-PA=Ij5{ zY~9YasN?~ODDX;@+4647FS`J!zcF#A7L>|zCefuLJqe#c7x_dL87`^(=D7b= zVa!MY0;f+2$ES|el8{<}H{4rhU<=^+{>qQxm1$=u*K&y%Xt+ldeYcYyv-0q)wHw!X z6a8DudN0s2M*fdLP=)p(pX%zy-X1klC7qa(CzQb}V@9F-?)XC>lwe<(K~8sXq! zbD$zr&Qi>CTA0xVtKpL6*oelM2e3`uvyj}gvCI4$KOTA8@7=yscH%t$c@W#9z{z-dLk<>^ylEJ98G^CI{JsTf`*F@Ao>Rfzu)=) zFTM`! zy)(FLBZ@j556YZ!b$^PDuMW^~zvm}#ePy&f$BKyKB}F5&a7%iY=710QUoG-qAj%e8 zta4s56H{ErdVK&oY%HhNSaM$c|0kEc9QWme&18I|2j!8qvqV>mf%SOb z*2IU3Dc(1W#soKp5b%-y52E&c6?dA|axGjDoqKD8Epwr$CP+=-yI(UgLu-%z;))(~ zF8=T3&8J3Ng0s*fJ@4P{M;kQ8SZn#>eIw-_%X4zUxwW3|(x5<(>L)Kg4Se~VbifSJ zW@O92Ycv{VCnXpB4emU3YeP*=3V!7J=Sq#nwH9HX7O{K!oo;15GfEDT?3pEN=VczB z5-#oRHelgC*IECqlU_ZyNs}=@W%|xW$Nf4ArhA|h2W1(l;GF2Qb~lWkaFHk}2%?fC z-2Bh-K1rr~kwz+R+?h?qHSwa#%cI$#j#F3MkFm1pL5`4hTjgBJEyvsngbeCK6W;YH zF<=b|q~ngN;c%zD;R>lMX=*o0F?$Wfl6@{mTRl1$@69od=K>d~$Hlpu^yHaraLul= zf^pC8DzbNqLGIJzPlxmXCqu`wd-8f8^F4Gan568egrn!aLI6VG>JK^ia&cF_q~d&?EWF9GDvP%t<9V(|NY|RQLU0e$5q42 ziM!W~rd2{nx#QA=?!~Be$Kq}f1;&M!0E2xT_+MSq7bXg=+VpHrjHNsx`BNm9tWF~~ za%{_oi+*Fcze50kw`0G-|iwLc# z>{z;Kl;xr3eDXN@@(h&)#-Y=s^IA}#-z0CsUZ6$gv}jHzl=y!H^6XT@M;~5+3VN(x z#q*u4R>LEUTaCIe9eaJSkGk=E?-8>dbr4eX2Bb3ejg9sFblsju`_&wgsX~+h#VGiN z<3$O>iA;s{=fvq>t$>q1ZT<| zqmTAP-~z|<>1>Y2+XAddY_5CW${yjzkGMofUCanGDk^9Z&)(Ly34ZmS!PK^b&-)TvTy|-W$K-;9}B`_TnkT~3I$RLaY$6+%|cQ!cSB0Kq*s`OYlHl0GyCa~K*05HiFp-9 zw?PdBVw#nJH}7fK*UjCgv@s6U!A&{kv*KK}793K}>Ci6D_{H?n00KO&3`+r?rcOla zPcl)HBVm3v1d9>F)I`;qODcC(A7oc`H}mmdiL~B(3r9 z-clVZ{14(hTo=$7L$ES`pYLQF8q4ebbh7gIEu?8bba<@3$58baD*8g){rt?YYZZY- zZ-k&beeNf%Z#FK*ZAfJC^rsoUEVRAMh#~1sWD#s96hBL>{-Elw9urvyR)4i+bk%OJ zut-UAxxL@rvMn|qlmA`3ojbO2(eIIjm{TsYMJU2Y78iA>P1m=PV_LK|S*a*NVOQsXd}3S@J4&9u zJ6anE%IG3nh~^c(xw)K9~Pp>WRSsKc)3TVBy;vGEayl~O>RQ5HrH}->Xm@Rg zLUFLGM>pIvrdcMlsr&p+Tf^eymeRy*nBTO;=IWOh*{|o~>yO7c&3uN%c-TC{B>f~1 z__MmQOaT-z9ULSQ2BAifK$4u6@v0f7pT%UsQKyg_936MHpEtC5+;9f6eM)^?4C^m1 znY93anf34NgV0ge*fMzj#-79KCq-_Rh8O)6)9isy@v4{ZzwFv_anqWZ5%xc|%asv4 z7e54`#5~b4xV&t3^uK@|7OC&e29H_-(AjNm9b&zhsj(wtaZ$SeTUE`BU&7Uh_=US4 zOfi~y+#A|95>3g2vUYiukV!W9Pe>-OV(LxY0NML@AU|S>jaEoZ2-!IE(M!=c4d(@> zN&z+Q;rtI3hQbWJz5fFWUMMuOtUVo8PhZ7m{?usa*3Yg|395W9iQUiNi7k$>T8*Tx zVk3dhuOD>&=dg1rkz`_vu|$Pt%3|W79&uUdF1FwOPgDETQdEtvA4NndaK)X3yW(ca4vutAEwhG&5a_v0*(JPCDAvZ zSp=+d9qtaAVla`av>B@|Pyb8YtE%$--vjvnxQVuB5lEa~+OK{pzXSRRdj;H%0*tw4 z=Fl_e6J&LtTO*|v(@wr4kaT9iO^GYZFL9+bVPA6BpfM)1uXS6e(9? zmYzx_QcQ_`@#24dk5v`PiKIwl3U5F#Y%jN)Cb}Vf4$BFeKcTv36$ilV?9;*$TT5-f zrqXoFs!K^ZG|mD;`1cJsazsjyLXf!NFkFBSN&D0mp_| z=xcj3)W0|CzJyu~u^&$H(``)P(aH)284U>GedKA^`M#_~7pC6-&-01@nJYJb4E!&1 CT5j(E literal 0 HcmV?d00001 diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.qpf b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.qpf new file mode 100644 index 00000000..2a94ad8e --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.qpf @@ -0,0 +1,31 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.1.0 Build 162 10/23/2013 SJ Web Edition +# Date created = 00:21:03 December 03, 2019 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "13.1" +DATE = "00:21:03 December 03, 2019" + +# Revisions + +PROJECT_REVISION = "Popeye" + diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.qsf b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.qsf new file mode 100644 index 00000000..6a76de91 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.qsf @@ -0,0 +1,242 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.1.0 Build 162 10/23/2013 SJ Web Edition +# Date created = 21:52:19 December 30, 2019 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# Popeye_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + + +# Project-Wide Assignments +# ======================== +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL +set_global_assignment -name LAST_QUARTUS_VERSION 13.1 +set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl" +set_global_assignment -name SYSTEMVERILOG_FILE rtl/Popeye_MiST.sv +set_global_assignment -name VHDL_FILE rtl/popeye.vhd +set_global_assignment -name VHDL_FILE rtl/rom/popeye_sp_palette_rg.vhd +set_global_assignment -name VHDL_FILE rtl/rom/popeye_sp_palette_gb.vhd +set_global_assignment -name VHDL_FILE rtl/rom/popeye_sp_bits_4.vhd +set_global_assignment -name VHDL_FILE rtl/rom/popeye_sp_bits_3.vhd +set_global_assignment -name VHDL_FILE rtl/rom/popeye_sp_bits_2.vhd +set_global_assignment -name VHDL_FILE rtl/rom/popeye_sp_bits_1.vhd +set_global_assignment -name VHDL_FILE rtl/rom/popeye_ch_palette_rgb.vhd +set_global_assignment -name VHDL_FILE rtl/rom/popeye_ch_bits.vhd +set_global_assignment -name VHDL_FILE rtl/rom/popeye_bg_palette_rgb.vhd +set_global_assignment -name VHDL_FILE rtl/YM2149_linmix_sep.vhd +set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv +set_global_assignment -name VHDL_FILE rtl/gen_ram.vhd +set_global_assignment -name VERILOG_FILE rtl/pll_mist.v +set_global_assignment -name QIP_FILE ../../../common/mist/mist.qip +set_global_assignment -name QIP_FILE ../../../common/CPU/T80/T80.qip + +# Pin & Location Assignments +# ========================== +set_location_assignment PIN_7 -to LED +set_location_assignment PIN_54 -to CLOCK_27 +set_location_assignment PIN_144 -to VGA_R[5] +set_location_assignment PIN_143 -to VGA_R[4] +set_location_assignment PIN_142 -to VGA_R[3] +set_location_assignment PIN_141 -to VGA_R[2] +set_location_assignment PIN_137 -to VGA_R[1] +set_location_assignment PIN_135 -to VGA_R[0] +set_location_assignment PIN_133 -to VGA_B[5] +set_location_assignment PIN_132 -to VGA_B[4] +set_location_assignment PIN_125 -to VGA_B[3] +set_location_assignment PIN_121 -to VGA_B[2] +set_location_assignment PIN_120 -to VGA_B[1] +set_location_assignment PIN_115 -to VGA_B[0] +set_location_assignment PIN_114 -to VGA_G[5] +set_location_assignment PIN_113 -to VGA_G[4] +set_location_assignment PIN_112 -to VGA_G[3] +set_location_assignment PIN_111 -to VGA_G[2] +set_location_assignment PIN_110 -to VGA_G[1] +set_location_assignment PIN_106 -to VGA_G[0] +set_location_assignment PIN_136 -to VGA_VS +set_location_assignment PIN_119 -to VGA_HS +set_location_assignment PIN_65 -to AUDIO_L +set_location_assignment PIN_80 -to AUDIO_R +set_location_assignment PIN_105 -to SPI_DO +set_location_assignment PIN_88 -to SPI_DI +set_location_assignment PIN_126 -to SPI_SCK +set_location_assignment PIN_127 -to SPI_SS2 +set_location_assignment PIN_91 -to SPI_SS3 +set_location_assignment PIN_13 -to CONF_DATA0 +set_location_assignment PIN_49 -to SDRAM_A[0] +set_location_assignment PIN_44 -to SDRAM_A[1] +set_location_assignment PIN_42 -to SDRAM_A[2] +set_location_assignment PIN_39 -to SDRAM_A[3] +set_location_assignment PIN_4 -to SDRAM_A[4] +set_location_assignment PIN_6 -to SDRAM_A[5] +set_location_assignment PIN_8 -to SDRAM_A[6] +set_location_assignment PIN_10 -to SDRAM_A[7] +set_location_assignment PIN_11 -to SDRAM_A[8] +set_location_assignment PIN_28 -to SDRAM_A[9] +set_location_assignment PIN_50 -to SDRAM_A[10] +set_location_assignment PIN_30 -to SDRAM_A[11] +set_location_assignment PIN_32 -to SDRAM_A[12] +set_location_assignment PIN_83 -to SDRAM_DQ[0] +set_location_assignment PIN_79 -to SDRAM_DQ[1] +set_location_assignment PIN_77 -to SDRAM_DQ[2] +set_location_assignment PIN_76 -to SDRAM_DQ[3] +set_location_assignment PIN_72 -to SDRAM_DQ[4] +set_location_assignment PIN_71 -to SDRAM_DQ[5] +set_location_assignment PIN_69 -to SDRAM_DQ[6] +set_location_assignment PIN_68 -to SDRAM_DQ[7] +set_location_assignment PIN_86 -to SDRAM_DQ[8] +set_location_assignment PIN_87 -to SDRAM_DQ[9] +set_location_assignment PIN_98 -to SDRAM_DQ[10] +set_location_assignment PIN_99 -to SDRAM_DQ[11] +set_location_assignment PIN_100 -to SDRAM_DQ[12] +set_location_assignment PIN_101 -to SDRAM_DQ[13] +set_location_assignment PIN_103 -to SDRAM_DQ[14] +set_location_assignment PIN_104 -to SDRAM_DQ[15] +set_location_assignment PIN_58 -to SDRAM_BA[0] +set_location_assignment PIN_51 -to SDRAM_BA[1] +set_location_assignment PIN_85 -to SDRAM_DQMH +set_location_assignment PIN_67 -to SDRAM_DQML +set_location_assignment PIN_60 -to SDRAM_nRAS +set_location_assignment PIN_64 -to SDRAM_nCAS +set_location_assignment PIN_66 -to SDRAM_nWE +set_location_assignment PIN_59 -to SDRAM_nCS +set_location_assignment PIN_33 -to SDRAM_CKE +set_location_assignment PIN_43 -to SDRAM_CLK +set_location_assignment PLL_1 -to "pll:pll|altpll:altpll_component" + +# Classic Timing Assignments +# ========================== +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 + +# Analysis & Synthesis Assignments +# ================================ +set_global_assignment -name FAMILY "Cyclone III" +set_global_assignment -name TOP_LEVEL_ENTITY Popeye_MiST +set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144 +set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8 +set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP + +# Fitter Assignments +# ================== +set_global_assignment -name DEVICE EP3C25E144C8 +set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF +set_global_assignment -name ENABLE_NCE_PIN OFF +set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL" +set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF +set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO" + +# Assembler Assignments +# ===================== +set_global_assignment -name GENERATE_RBF_FILE ON +set_global_assignment -name USE_CONFIGURATION_DEVICE OFF + +# SignalTap II Assignments +# ======================== +set_global_assignment -name ENABLE_SIGNALTAP OFF +set_global_assignment -name USE_SIGNALTAP_FILE output_files/zaxx.stp + +# Power Estimation Assignments +# ============================ +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" + +# Advanced I/O Timing Assignments +# =============================== +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall + +# ------------------------- +# start ENTITY(Popeye_MiST) + + # Pin & Location Assignments + # ========================== + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[*] + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[*] + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_BA[0] + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_BA[1] + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQMH + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQML + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nRAS + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nCAS + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nWE + set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nCS + set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[*] + set_instance_assignment -name FAST_INPUT_REGISTER ON -to SDRAM_DQ[*] + + # Fitter Assignments + # ================== + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_A[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQ[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_BA[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQML + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQMH + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nRAS + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nCAS + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nWE + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nCS + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_CKE + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_CLK + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_R[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_G[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_B[*] + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_HS + set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_VS + set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_L + set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_R + set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_DO + + # start DESIGN_PARTITION(Top) + # --------------------------- + + # Incremental Compilation Assignments + # =================================== + set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top + set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top + set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top + + # end DESIGN_PARTITION(Top) + # ------------------------- + +# end ENTITY(Popeye_MiST) +# ----------------------- +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.sdc b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.sdc new file mode 100644 index 00000000..33ffd42f --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Popeye.sdc @@ -0,0 +1,134 @@ +## Generated SDC file "vectrex_MiST.out.sdc" + +## Copyright (C) 1991-2013 Altera Corporation +## Your use of Altera Corporation's design tools, logic functions +## and other software and tools, and its AMPP partner logic +## functions, and any output files from any of the foregoing +## (including device programming or simulation files), and any +## associated documentation or information are expressly subject +## to the terms and conditions of the Altera Program License +## Subscription Agreement, Altera MegaCore Function License +## Agreement, or other applicable license agreement, including, +## without limitation, that your use is for the sole purpose of +## programming logic devices manufactured by Altera and sold by +## Altera or its authorized distributors. Please refer to the +## applicable agreement for further details. + + +## VENDOR "Altera" +## PROGRAM "Quartus II" +## VERSION "Version 13.1.0 Build 162 10/23/2013 SJ Web Edition" + +## DATE "Sun Jun 24 12:53:00 2018" + +## +## DEVICE "EP3C25E144C8" +## + +# Clock constraints + +# Automatically constrain PLL and other generated clocks +derive_pll_clocks -create_base_clocks + +# Automatically calculate clock uncertainty to jitter and other effects. +derive_clock_uncertainty + +# tsu/th constraints + +# tco constraints + +# tpd constraints + +#************************************************************** +# Time Information +#************************************************************** + +set_time_format -unit ns -decimal_places 3 + + + +#************************************************************** +# Create Clock +#************************************************************** + +create_clock -name {SPI_SCK} -period 41.666 -waveform { 20.8 41.666 } [get_ports {SPI_SCK}] + +set sys_clk "pll|altpll_component|auto_generated|pll1|clk[1]" +set sdram_clk "pll|altpll_component|auto_generated|pll1|clk[0]" +#************************************************************** +# Create Generated Clock +#************************************************************** + + +#************************************************************** +# Set Clock Latency +#************************************************************** + + + +#************************************************************** +# Set Clock Uncertainty +#************************************************************** + +#************************************************************** +# Set Input Delay +#************************************************************** + +set_input_delay -add_delay -clock_fall -clock [get_clocks {CLOCK_27}] 1.000 [get_ports {CLOCK_27}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {CONF_DATA0}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_DI}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_SCK}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_SS2}] +set_input_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_SS3}] + +set_input_delay -clock [get_clocks $sdram_clk] -reference_pin [get_ports {SDRAM_CLK}] -max 6.6 [get_ports SDRAM_DQ[*]] +set_input_delay -clock [get_clocks $sdram_clk] -reference_pin [get_ports {SDRAM_CLK}] -min 3.5 [get_ports SDRAM_DQ[*]] + +#************************************************************** +# Set Output Delay +#************************************************************** + +set_output_delay -add_delay -clock_fall -clock [get_clocks {SPI_SCK}] 1.000 [get_ports {SPI_DO}] +set_output_delay -add_delay -clock_fall -clock [get_clocks $sys_clk] 1.000 [get_ports {AUDIO_L}] +set_output_delay -add_delay -clock_fall -clock [get_clocks $sys_clk] 1.000 [get_ports {AUDIO_R}] +set_output_delay -add_delay -clock_fall -clock [get_clocks $sys_clk] 1.000 [get_ports {LED}] +set_output_delay -add_delay -clock_fall -clock [get_clocks $sys_clk] 1.000 [get_ports {VGA_*}] + +set_output_delay -clock [get_clocks $sdram_clk] -reference_pin [get_ports {SDRAM_CLK}] -max 1.5 [get_ports {SDRAM_D* SDRAM_A* SDRAM_BA* SDRAM_n* SDRAM_CKE}] +set_output_delay -clock [get_clocks $sdram_clk] -reference_pin [get_ports {SDRAM_CLK}] -min -0.8 [get_ports {SDRAM_D* SDRAM_A* SDRAM_BA* SDRAM_n* SDRAM_CKE}] + +#************************************************************** +# Set Clock Groups +#************************************************************** + +set_clock_groups -asynchronous -group [get_clocks {SPI_SCK}] -group [get_clocks {pll|altpll_component|auto_generated|pll1|clk[*]}] + +#************************************************************** +# Set False Path +#************************************************************** + + + +#************************************************************** +# Set Multicycle Path +#************************************************************** + +set_multicycle_path -to {VGA_*[*]} -setup 2 +set_multicycle_path -to {VGA_*[*]} -hold 1 + +#************************************************************** +# Set Maximum Delay +#************************************************************** + + + +#************************************************************** +# Set Minimum Delay +#************************************************************** + + + +#************************************************************** +# Set Input Transition +#************************************************************** + diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/README.txt b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/README.txt new file mode 100644 index 00000000..3f727e44 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/README.txt @@ -0,0 +1,126 @@ +--------------------------------------------------------------------------------- +-- DE10_lite Top level for Popeye by Dar (darfpga@aol.fr) (26/12/2019) +-- http://darfpga.blogspot.fr +--------------------------------------------------------------------------------- +-- +-- release rev 00 : initial release +-- (26/12/2019) +-- +--------------------------------------------------------------------------------- +-- Educational use only +-- Do not redistribute synthetized file with roms +-- Do not redistribute roms whatever the form +-- Use at your own risk +--------------------------------------------------------------------------------- +-- Use popeye_de10_lite.sdc to compile (Timequest constraints) +-- /!\ +-- Don't forget to set device configuration mode with memory initialization +-- (Assignments/Device/Pin options/Configuration mode) +--------------------------------------------------------------------------------- +-- +-- Main features : +-- PS2 keyboard input @gpio pins 35/34 (beware voltage translation/protection) +-- Audio pwm output @gpio pins 1/3 (beware voltage translation/protection) +-- +-- Video : VGA 31kHz/60Hz progressive and TV 15kHz interlaced +-- Cocktail mode : NO +-- Sound : OK +-- +-- For hardware schematic see my other project : NES +-- +-- Uses 1 pll 40MHz from 50MHz to make 20MHz and 8Mhz +-- +-- Board key : +-- 0 : reset game +-- +-- Keyboard players inputs : +-- +-- F1 : Add coin +-- F2 : Start 1 player +-- F3 : Start 2 players + +-- F7 : Service mode +-- F8 : 15kHz interlaced / 31 kHz progressive + +-- SPACE : punch + +-- RIGHT arrow : move right +-- LEFT arrow : move left +-- UP arrow : up stairs +-- DOWN arrow : down stairs +-- +-- Other details : see popeye.vhd +-- For USB inputs and SGT5000 audio output see my other project: xevious_de10_lite +--------------------------------------------------------------------------------- + +--------------------------------------------------------------------------------- +-- Popeye by Dar (darfpga@aol.fr) (26/12/2019) +-- http://darfpga.blogspot.fr +--------------------------------------------------------------------------------- +-- +-- release rev 00 : initial release +-- (26/12/2019) +-- +--------------------------------------------------------------------------------- +-- gen_ram.vhd & io_ps2_keyboard +-------------------------------- +-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) +-- http://www.syntiac.com/fpga64.html +--------------------------------------------------------------------------------- +-- T80/T80se - Version : 304 +----------------------------- +-- Z80 compatible microprocessor core +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +--------------------------------------------------------------------------------- +-- YM2149 (AY-3-8910) +-- Copyright (c) MikeJ - Jan 2005 +--------------------------------------------------------------------------------- +-- Educational use only +-- Do not redistribute synthetized file with roms +-- Do not redistribute roms whatever the form +-- Use at your own risk +--------------------------------------------------------------------------------- + +-- Features : +-- Video : VGA 31kHz/60Hz progressive and TV 15kHz interlaced +-- Coctail mode : NO +-- Sound : OK + +-- Use with MAME roms from popeye.zip & popeyeu.zip +-- +-- Use make_popeye_proms.bat to build vhd file from binaries +-- (CRC list included) + +-- Popeye Hardware caracteristics : TODO +-- +--------------------------------------------------------------------------------- +-- Schematics remarks : +-- +-- Display is 512x448 pixels (video 640 pixels x 256 interlaced lines @ 10.08MHz ) + +-- 640/10.08e6 = 63.49us per line (15.750KHz) +-- 63.49*256 = 16.254ms per frame (61.52Hz) +-- +--------------------------------------------------------------------------------- ++----------------------------------------------------------------------------------+ +; Fitter Summary ; ++------------------------------------+---------------------------------------------+ +; Fitter Status ; Successful - Mon Dec 30 10:06:20 2019 ; +; Quartus Prime Version ; 18.1.0 Build 625 09/12/2018 SJ Lite Edition ; +; Revision Name ; popeye_de10_lite ; +; Top-level Entity Name ; popeye_de10_lite ; +; Family ; MAX 10 ; +; Device ; 10M50DAF484C6GES ; +; Timing Models ; Preliminary ; +; Total logic elements ; 3,354 / 49,760 ( 7 % ) ; +; Total combinational functions ; 3,247 / 49,760 ( 7 % ) ; +; Dedicated logic registers ; 865 / 49,760 ( 2 % ) ; +; Total registers ; 865 ; +; Total pins ; 121 / 360 ( 34 % ) ; +; Total virtual pins ; 0 ; +; Total memory bits ; 613,888 / 1,677,312 ( 37 % ) ; +; Embedded Multiplier 9-bit elements ; 0 / 288 ( 0 % ) ; +; Total PLLs ; 1 / 4 ( 25 % ) ; +; UFM blocks ; 0 / 1 ( 0 % ) ; +; ADC blocks ; 0 / 2 ( 0 % ) ; ++------------------------------------+---------------------------------------------+ diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Release/POPEYE.ROM b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Release/POPEYE.ROM new file mode 100644 index 0000000000000000000000000000000000000000..66091ffa4557c4da2f6bf1476e7946af61e5a42f GIT binary patch literal 32768 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 INz|AB7g8d@sQ>@~ literal 0 HcmV?d00001 diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Release/Popeye.rbf b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/Release/Popeye.rbf new file mode 100644 index 0000000000000000000000000000000000000000..a6ee38b19c506650711c3e7e822eebd0dc2f6835 GIT binary patch literal 293381 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⪚F7iCR710( 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 TYBKOV)3FO*`0$ov^XC3Pj80!A literal 0 HcmV?d00001 diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/clean.bat b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/clean.bat new file mode 100644 index 00000000..b3b7c3b5 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/clean.bat @@ -0,0 +1,37 @@ +@echo off +del /s *.bak +del /s *.orig +del /s *.rej +del /s *~ +rmdir /s /q db +rmdir /s /q incremental_db +rmdir /s /q output_files +rmdir /s /q simulation +rmdir /s /q greybox_tmp +rmdir /s /q hc_output +rmdir /s /q .qsys_edit +rmdir /s /q hps_isw_handoff +rmdir /s /q sys\.qsys_edit +rmdir /s /q sys\vip +cd sys +for /d %%i in (*_sim) do rmdir /s /q "%%~nxi" +cd .. +for /d %%i in (*_sim) do rmdir /s /q "%%~nxi" +del build_id.v +del c5_pin_model_dump.txt +del PLLJ_PLLSPE_INFO.txt +del /s *.qws +del /s *.ppf +del /s *.ddb +del /s *.csv +del /s *.cmp +del /s *.sip +del /s *.spd +del /s *.bsf +del /s *.f +del /s *.sopcinfo +del /s *.xml +del /s new_rtl_netlist +del /s old_rtl_netlist + +pause diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/Popeye_MiST.sv b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/Popeye_MiST.sv new file mode 100644 index 00000000..ff4e1b4b --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/Popeye_MiST.sv @@ -0,0 +1,261 @@ + +module Popeye_MiST( + output LED, + output [5:0] VGA_R, + output [5:0] VGA_G, + output [5:0] VGA_B, + output VGA_HS, + output VGA_VS, + output AUDIO_L, + output AUDIO_R, + input SPI_SCK, + output SPI_DO, + input SPI_DI, + input SPI_SS2, + input SPI_SS3, + input CONF_DATA0, + input CLOCK_27, + + output [12:0] SDRAM_A, + inout [15:0] SDRAM_DQ, + output SDRAM_DQML, + output SDRAM_DQMH, + output SDRAM_nWE, + output SDRAM_nCAS, + output SDRAM_nRAS, + output SDRAM_nCS, + output [1:0] SDRAM_BA, + output SDRAM_CLK, + output SDRAM_CKE +); + +`include "rtl/build_id.v" + +localparam CONF_STR = { + "POPEYE;;", +// "O34,Scanlines,Off,25%,50%,75%;", + "O5,Blend,Off,On;", +// "O7,Service,Off,On;",//Beep on REV4 ROM, not needed + "T0,Reset;", + "V,v1.0.",`BUILD_DATE +}; + + +assign LED = ~ioctl_downl; +assign SDRAM_CLK = sdram_clk; +assign SDRAM_CKE = 1; +assign AUDIO_R = AUDIO_L; + +wire sys_clk, sdram_clk; +wire pll_locked; +pll_mist pll( + .inclk0(CLOCK_27), + .c0(sdram_clk),//48 + .c1(sys_clk),//40 + .locked(pll_locked) + ); + +wire [31:0] status; +wire [1:0] buttons; +wire [1:0] switches; +wire [7:0] joystick_0; +wire [7:0] joystick_1; +wire scandoublerD; +wire ypbpr; +wire [15:0] audio; +wire hs, vs, cs; +wire blankn; +wire [2:0] g, r; +wire [1:0] b; +wire [14:0] rom_addr; +wire [15:0] rom_do; +wire ioctl_downl; +wire [7:0] ioctl_index; +wire ioctl_wr; +wire [24:0] ioctl_addr; +wire [7:0] ioctl_dout; + +data_io data_io( + .clk_sys ( sys_clk ), + .SPI_SCK ( SPI_SCK ), + .SPI_SS2 ( SPI_SS2 ), + .SPI_DI ( SPI_DI ), + .ioctl_download( ioctl_downl ), + .ioctl_index ( ioctl_index ), + .ioctl_wr ( ioctl_wr ), + .ioctl_addr ( ioctl_addr ), + .ioctl_dout ( ioctl_dout ) +); + +reg port1_req, port2_req; +sdram sdram( + .*, + .init_n ( pll_locked ), + .clk ( sdram_clk ), + + // port1 used for main CPU + .port1_req ( port1_req ), + .port1_ack ( ), + .port1_a ( ioctl_addr[23:1] ), + .port1_ds ( {ioctl_addr[0], ~ioctl_addr[0]} ), + .port1_we ( ioctl_downl ), + .port1_d ( {ioctl_dout, ioctl_dout} ), + .port1_q ( ), + + .cpu1_addr ( ioctl_downl ? 16'hffff : {2'b00, rom_addr[14:1]}), + .cpu1_q ( rom_do ), + + // port2 for gfx + .port2_req ( ), + .port2_ack ( ), + .port2_a ( ), + .port2_ds ( ), + .port2_we ( ), + .port2_d ( ), + .port2_q ( ), + + .gfx_addr ( ), + .gfx_q ( ) +); + +always @(posedge sdram_clk) begin + reg ioctl_wr_last = 0; + + ioctl_wr_last <= ioctl_wr; + if (ioctl_downl) begin + if (~ioctl_wr_last && ioctl_wr) begin + port1_req <= ~port1_req; + port2_req <= ~port2_req; + end + end +end + +reg reset = 1; +reg rom_loaded = 0; +always @(posedge sys_clk) begin + reg ioctl_downlD; + ioctl_downlD <= ioctl_downl; + + if (ioctl_downlD & ~ioctl_downl) rom_loaded <= 1; + reset <= status[0] | buttons[1] | ~rom_loaded; +end + +popeye popeye( + .clock_40(sys_clk), + .reset(reset), + .tv15Khz_mode(scandoublerD), + .video_r(r), + .video_g(g), + .video_b(b), + .video_csync(cs), + .video_blankn(blankn), + .video_hs(hs), + .video_vs(vs), + .audio_out(audio), + .coin(btn_coin), + .start1(btn_one_player), + .start2(btn_two_players), + .right1(m_right), + .left1(m_left), + .up1(m_up), + .down1(m_down), + .fire1(m_fire), + .right2(m_right), + .left2(m_left), + .up2(m_up), + .down2(m_down), + .fire2(m_fire), + .sw1("0000"), + .sw2("01000101"), + .service(status[7]), + .cpu_rom_addr(rom_addr), + .cpu_rom_do(rom_addr[0] ? rom_do[15:8] : rom_do[7:0]) + ); + +mist_video #(.COLOR_DEPTH(3), .SD_HCNT_WIDTH(10)) mist_video( + .clk_sys ( sys_clk ), + .SPI_SCK ( SPI_SCK ), + .SPI_SS3 ( SPI_SS3 ), + .SPI_DI ( SPI_DI ), + .R ( blankn ? r : 0 ), + .G ( blankn ? g : 0 ), + .B ( blankn ? {b,b[1]} : 0 ), + .HSync ( hs ), + .VSync ( vs ), + .VGA_R ( VGA_R ), + .VGA_G ( VGA_G ), + .VGA_B ( VGA_B ), + .VGA_VS ( VGA_VS ), + .VGA_HS ( VGA_HS ), + .ce_divider ( 1'b1 ), + .blend ( status[5] ), + .rotate ( {1'b1, status[2]} ), + .scandoubler_disable(1),//scandoublerD ), + .scanlines ( "00"),//status[3:4] ), + .ypbpr ( ypbpr ) + ); + +user_io #( + .STRLEN(($size(CONF_STR)>>3))) +user_io( + .clk_sys (sys_clk ), + .conf_str (CONF_STR ), + .SPI_CLK (SPI_SCK ), + .SPI_SS_IO (CONF_DATA0 ), + .SPI_MISO (SPI_DO ), + .SPI_MOSI (SPI_DI ), + .buttons (buttons ), + .switches (switches ), + .scandoubler_disable (scandoublerD ), + .ypbpr (ypbpr ), + .key_strobe (key_strobe ), + .key_pressed (key_pressed ), + .key_code (key_code ), + .joystick_0 (joystick_0 ), + .joystick_1 (joystick_1 ), + .status (status ) + ); + +dac #( + .C_bits(16)) +dac_l( + .clk_i(sys_clk), + .res_n_i(1), + .dac_i(audio), + .dac_o(AUDIO_L) + ); + +wire m_up = btn_up | joystick_0[3] | joystick_1[3]; +wire m_down = btn_down | joystick_0[2] | joystick_1[2]; +wire m_left = btn_left | joystick_0[1] | joystick_1[1]; +wire m_right = btn_right | joystick_0[0] | joystick_1[0]; +wire m_fire = btn_fire1 | joystick_0[4] | joystick_1[4]; + +reg btn_one_player = 0; +reg btn_two_players = 0; +reg btn_left = 0; +reg btn_right = 0; +reg btn_down = 0; +reg btn_up = 0; +reg btn_fire1 = 0; +reg btn_coin = 0; +wire key_pressed; +wire [7:0] key_code; +wire key_strobe; + +always @(posedge sys_clk) begin + if(key_strobe) begin + case(key_code) + 'h75: btn_up <= key_pressed; // up + 'h72: btn_down <= key_pressed; // down + 'h6B: btn_left <= key_pressed; // left + 'h74: btn_right <= key_pressed; // right + 'h76: btn_coin <= key_pressed; // ESC + 'h05: btn_one_player <= key_pressed; // F1 + 'h06: btn_two_players <= key_pressed; // F2 + 'h29: btn_fire1 <= key_pressed; // Space + endcase + end +end + +endmodule diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/YM2149_linmix_sep.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/YM2149_linmix_sep.vhd new file mode 100644 index 00000000..6ed2498a --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/YM2149_linmix_sep.vhd @@ -0,0 +1,574 @@ +-- changes for seperate audio outputs and enable now enables cpu access as well +-- +-- A simulation model of YM2149 (AY-3-8910 with bells on) + +-- Copyright (c) MikeJ - Jan 2005 +-- +-- All rights reserved +-- +-- Redistribution and use in source and synthezised forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- Redistributions in synthesized form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- Neither the name of the author nor the names of other contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +-- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +-- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. +-- +-- You are responsible for any legal issues arising from your use of this code. +-- +-- The latest version of this file can be found at: www.fpgaarcade.com +-- +-- Email support@fpgaarcade.com +-- +-- Revision list +-- +-- version 001 initial release +-- +-- Clues from MAME sound driver and Kazuhiro TSUJIKAWA +-- +-- These are the measured outputs from a real chip for a single Isolated channel into a 1K load (V) +-- vol 15 .. 0 +-- 3.27 2.995 2.741 2.588 2.452 2.372 2.301 2.258 2.220 2.198 2.178 2.166 2.155 2.148 2.141 2.132 +-- As the envelope volume is 5 bit, I have fitted a curve to the not quite log shape in order +-- to produced all the required values. +-- (The first part of the curve is a bit steeper and the last bit is more linear than expected) +-- +-- NOTE, this component uses LINEAR mixing of the three analogue channels, and is only +-- accurate for designs where the outputs are buffered and not simply wired together. +-- The ouput level is more complex in that case and requires a larger table. + +library ieee; + use ieee.std_logic_1164.all; + use ieee.std_logic_arith.all; + use ieee.std_logic_unsigned.all; + +entity YM2149 is + port ( + -- data bus + I_DA : in std_logic_vector(7 downto 0); + O_DA : out std_logic_vector(7 downto 0); + O_DA_OE_L : out std_logic; + -- control + I_A9_L : in std_logic; + I_A8 : in std_logic; + I_BDIR : in std_logic; + I_BC2 : in std_logic; + I_BC1 : in std_logic; + I_SEL_L : in std_logic; + + O_AUDIO : out std_logic_vector(7 downto 0); + O_CHAN : out std_logic_vector(1 downto 0); + -- port a + I_IOA : in std_logic_vector(7 downto 0); + O_IOA : out std_logic_vector(7 downto 0); + O_IOA_OE_L : out std_logic; + -- port b + I_IOB : in std_logic_vector(7 downto 0); + O_IOB : out std_logic_vector(7 downto 0); + O_IOB_OE_L : out std_logic; + + ENA : in std_logic; -- clock enable for higher speed operation + RESET_L : in std_logic; + CLK : in std_logic -- note 6 Mhz + ); +end; + +architecture RTL of YM2149 is + type array_16x8 is array (0 to 15) of std_logic_vector( 7 downto 0); + type array_3x12 is array (1 to 3) of std_logic_vector(11 downto 0); + + signal cnt_div : std_logic_vector(3 downto 0) := (others => '0'); + signal cnt_div_t1 : std_logic_vector(3 downto 0); + signal noise_div : std_logic := '0'; + signal ena_div : std_logic; + signal ena_div_noise : std_logic; + signal poly17 : std_logic_vector(16 downto 0) := (others => '0'); + + -- registers + signal addr : std_logic_vector(7 downto 0); + signal busctrl_addr : std_logic; + signal busctrl_we : std_logic; + signal busctrl_re : std_logic; + + signal reg : array_16x8; + signal env_reset : std_logic; + signal ioa_inreg : std_logic_vector(7 downto 0); + signal iob_inreg : std_logic_vector(7 downto 0); + + signal noise_gen_cnt : std_logic_vector(4 downto 0); + signal noise_gen_op : std_logic; + signal tone_gen_cnt : array_3x12 := (others => (others => '0')); + signal tone_gen_op : std_logic_vector(3 downto 1) := "000"; + + signal env_gen_cnt : std_logic_vector(15 downto 0); + signal env_ena : std_logic; + signal env_hold : std_logic; + signal env_inc : std_logic; + signal env_vol : std_logic_vector(4 downto 0); + + signal tone_ena_l : std_logic; + signal tone_src : std_logic; + signal noise_ena_l : std_logic; + signal chan_vol : std_logic_vector(4 downto 0); + + signal dac_amp : std_logic_vector(7 downto 0); +begin + -- cpu i/f + p_busdecode : process(I_BDIR, I_BC2, I_BC1, addr, I_A9_L, I_A8) + variable cs : std_logic; + variable sel : std_logic_vector(2 downto 0); + begin + -- BDIR BC2 BC1 MODE + -- 0 0 0 inactive + -- 0 0 1 address + -- 0 1 0 inactive + -- 0 1 1 read + -- 1 0 0 address + -- 1 0 1 inactive + -- 1 1 0 write + -- 1 1 1 read + busctrl_addr <= '0'; + busctrl_we <= '0'; + busctrl_re <= '0'; + + cs := '0'; + if (I_A9_L = '0') and (I_A8 = '1') and (addr(7 downto 4) = "0000") then + cs := '1'; + end if; + + sel := (I_BDIR & I_BC2 & I_BC1); + case sel is + when "000" => null; + when "001" => busctrl_addr <= '1'; + when "010" => null; + when "011" => busctrl_re <= cs; + when "100" => busctrl_addr <= '1'; + when "101" => null; + when "110" => busctrl_we <= cs; + when "111" => busctrl_addr <= '1'; + when others => null; + end case; + end process; + + p_oe : process(busctrl_re) + begin + -- if we are emulating a real chip, maybe clock this to fake up the tristate typ delay of 100ns + O_DA_OE_L <= not (busctrl_re); + end process; + + -- + -- CLOCKED + -- + p_waddr : process(RESET_L, CLK) + begin + -- looks like registers are latches in real chip, but the address is caught at the end of the address state. + if (RESET_L = '0') then + addr <= (others => '0'); + elsif rising_edge(CLK) then + if (ENA = '1') then + if (busctrl_addr = '1') then + addr <= I_DA; + end if; + end if; + end if; + end process; + + p_wdata : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + reg <= (others => (others => '0')); + env_reset <= '1'; + elsif rising_edge(CLK) then + if (ENA = '1') then + env_reset <= '0'; + if (busctrl_we = '1') then + case addr(3 downto 0) is + when x"0" => reg(0) <= I_DA; + when x"1" => reg(1) <= I_DA; + when x"2" => reg(2) <= I_DA; + when x"3" => reg(3) <= I_DA; + when x"4" => reg(4) <= I_DA; + when x"5" => reg(5) <= I_DA; + when x"6" => reg(6) <= I_DA; + when x"7" => reg(7) <= I_DA; + when x"8" => reg(8) <= I_DA; + when x"9" => reg(9) <= I_DA; + when x"A" => reg(10) <= I_DA; + when x"B" => reg(11) <= I_DA; + when x"C" => reg(12) <= I_DA; + when x"D" => reg(13) <= I_DA; env_reset <= '1'; + when x"E" => reg(14) <= I_DA; + when x"F" => reg(15) <= I_DA; + when others => null; + end case; + end if; + end if; + end if; + end process; + + p_rdata : process(busctrl_re, addr, reg, ioa_inreg, iob_inreg) + begin + O_DA <= (others => '0'); -- 'X' + if (busctrl_re = '1') then -- not necessary, but useful for putting 'X's in the simulator + case addr(3 downto 0) is + when x"0" => O_DA <= reg(0) ; + when x"1" => O_DA <= "0000" & reg(1)(3 downto 0) ; + when x"2" => O_DA <= reg(2) ; + when x"3" => O_DA <= "0000" & reg(3)(3 downto 0) ; + when x"4" => O_DA <= reg(4) ; + when x"5" => O_DA <= "0000" & reg(5)(3 downto 0) ; + when x"6" => O_DA <= "000" & reg(6)(4 downto 0) ; + when x"7" => O_DA <= reg(7) ; + when x"8" => O_DA <= "000" & reg(8)(4 downto 0) ; + when x"9" => O_DA <= "000" & reg(9)(4 downto 0) ; + when x"A" => O_DA <= "000" & reg(10)(4 downto 0) ; + when x"B" => O_DA <= reg(11); + when x"C" => O_DA <= reg(12); + when x"D" => O_DA <= "0000" & reg(13)(3 downto 0); + when x"E" => if (reg(7)(6) = '0') then -- input + O_DA <= ioa_inreg; + else + O_DA <= reg(14); -- read output reg + end if; + when x"F" => if (Reg(7)(7) = '0') then + O_DA <= iob_inreg; + else + O_DA <= reg(15); + end if; + when others => null; + end case; + end if; + end process; + -- + p_divider : process + begin + wait until rising_edge(CLK); + -- / 8 when SEL is high and /16 when SEL is low + if (ENA = '1') then + ena_div <= '0'; + ena_div_noise <= '0'; + if (cnt_div = "0000") then + cnt_div <= (not I_SEL_L) & "111"; + ena_div <= '1'; + + noise_div <= not noise_div; + if (noise_div = '1') then + ena_div_noise <= '1'; + end if; + else + cnt_div <= cnt_div - "1"; + end if; + end if; + end process; + + p_noise_gen : process + variable noise_gen_comp : std_logic_vector(4 downto 0); + variable poly17_zero : std_logic; + begin + wait until rising_edge(CLK); + if (reg(6)(4 downto 0) = "00000") then + noise_gen_comp := "00000"; + else + noise_gen_comp := (reg(6)(4 downto 0) - "1"); + end if; + + poly17_zero := '0'; + if (poly17 = "00000000000000000") then poly17_zero := '1'; end if; + + if (ENA = '1') then + if (ena_div_noise = '1') then -- divider ena + + if (noise_gen_cnt >= noise_gen_comp) then + noise_gen_cnt <= "00000"; + poly17 <= (poly17(0) xor poly17(2) xor poly17_zero) & poly17(16 downto 1); + else + noise_gen_cnt <= (noise_gen_cnt + "1"); + end if; + end if; + end if; + end process; + noise_gen_op <= poly17(0); + + p_tone_gens : process + variable tone_gen_freq : array_3x12; + variable tone_gen_comp : array_3x12; + begin + wait until rising_edge(CLK); + -- looks like real chips count up - we need to get the Exact behaviour .. + tone_gen_freq(1) := reg(1)(3 downto 0) & reg(0); + tone_gen_freq(2) := reg(3)(3 downto 0) & reg(2); + tone_gen_freq(3) := reg(5)(3 downto 0) & reg(4); + -- period 0 = period 1 + for i in 1 to 3 loop + if (tone_gen_freq(i) = x"000") then + tone_gen_comp(i) := x"000"; + else + tone_gen_comp(i) := (tone_gen_freq(i) - "1"); + end if; + end loop; + + if (ENA = '1') then + for i in 1 to 3 loop + if (ena_div = '1') then -- divider ena + + if (tone_gen_cnt(i) >= tone_gen_comp(i)) then + tone_gen_cnt(i) <= x"000"; + tone_gen_op(i) <= not tone_gen_op(i); + else + tone_gen_cnt(i) <= (tone_gen_cnt(i) + "1"); + end if; + end if; + end loop; + end if; + end process; + + p_envelope_freq : process + variable env_gen_freq : std_logic_vector(15 downto 0); + variable env_gen_comp : std_logic_vector(15 downto 0); + begin + wait until rising_edge(CLK); + env_gen_freq := reg(12) & reg(11); + -- envelope freqs 1 and 0 are the same. + if (env_gen_freq = x"0000") then + env_gen_comp := x"0000"; + else + env_gen_comp := (env_gen_freq - "1"); + end if; + + if (ENA = '1') then + env_ena <= '0'; + if (ena_div = '1') then -- divider ena + if (env_gen_cnt >= env_gen_comp) then + env_gen_cnt <= x"0000"; + env_ena <= '1'; + else + env_gen_cnt <= (env_gen_cnt + "1"); + end if; + end if; + end if; + end process; + + p_envelope_shape : process(env_reset, reg, CLK) + variable is_bot : boolean; + variable is_bot_p1 : boolean; + variable is_top_m1 : boolean; + variable is_top : boolean; + begin + -- envelope shapes + -- C AtAlH + -- 0 0 x x \___ + -- + -- 0 1 x x /___ + -- + -- 1 0 0 0 \\\\ + -- + -- 1 0 0 1 \___ + -- + -- 1 0 1 0 \/\/ + -- ___ + -- 1 0 1 1 \ + -- + -- 1 1 0 0 //// + -- ___ + -- 1 1 0 1 / + -- + -- 1 1 1 0 /\/\ + -- + -- 1 1 1 1 /___ + if (env_reset = '1') then + -- load initial state + if (reg(13)(2) = '0') then -- attack + env_vol <= "11111"; + env_inc <= '0'; -- -1 + else + env_vol <= "00000"; + env_inc <= '1'; -- +1 + end if; + env_hold <= '0'; + + elsif rising_edge(CLK) then + is_bot := (env_vol = "00000"); + is_bot_p1 := (env_vol = "00001"); + is_top_m1 := (env_vol = "11110"); + is_top := (env_vol = "11111"); + + if (ENA = '1') then + if (env_ena = '1') then + if (env_hold = '0') then + if (env_inc = '1') then + env_vol <= (env_vol + "00001"); + else + env_vol <= (env_vol + "11111"); + end if; + end if; + + -- envelope shape control. + if (reg(13)(3) = '0') then + if (env_inc = '0') then -- down + if is_bot_p1 then env_hold <= '1'; end if; + else + if is_top then env_hold <= '1'; end if; + end if; + else + if (reg(13)(0) = '1') then -- hold = 1 + if (env_inc = '0') then -- down + if (reg(13)(1) = '1') then -- alt + if is_bot then env_hold <= '1'; end if; + else + if is_bot_p1 then env_hold <= '1'; end if; + end if; + else + if (reg(13)(1) = '1') then -- alt + if is_top then env_hold <= '1'; end if; + else + if is_top_m1 then env_hold <= '1'; end if; + end if; + end if; + + elsif (reg(13)(1) = '1') then -- alternate + if (env_inc = '0') then -- down + if is_bot_p1 then env_hold <= '1'; end if; + if is_bot then env_hold <= '0'; env_inc <= '1'; end if; + else + if is_top_m1 then env_hold <= '1'; end if; + if is_top then env_hold <= '0'; env_inc <= '0'; end if; + end if; + end if; + + end if; + end if; + end if; + end if; + end process; + + p_chan_mixer : process(cnt_div, reg, tone_gen_op) + begin + tone_ena_l <= '1'; tone_src <= '1'; + noise_ena_l <= '1'; chan_vol <= "00000"; + case cnt_div(1 downto 0) is + when "00" => + tone_ena_l <= reg(7)(0); tone_src <= tone_gen_op(1); chan_vol <= reg(8)(4 downto 0); + noise_ena_l <= reg(7)(3); + when "01" => + tone_ena_l <= reg(7)(1); tone_src <= tone_gen_op(2); chan_vol <= reg(9)(4 downto 0); + noise_ena_l <= reg(7)(4); + when "10" => + tone_ena_l <= reg(7)(2); tone_src <= tone_gen_op(3); chan_vol <= reg(10)(4 downto 0); + noise_ena_l <= reg(7)(5); + when "11" => null; -- tone gen outputs become valid on this clock + when others => null; + end case; + end process; + + p_op_mixer : process + variable chan_mixed : std_logic; + variable chan_amp : std_logic_vector(4 downto 0); + begin + wait until rising_edge(CLK); + if (ENA = '1') then + + chan_mixed := (tone_ena_l or tone_src) and (noise_ena_l or noise_gen_op); + + chan_amp := (others => '0'); + if (chan_mixed = '1') then + if (chan_vol(4) = '0') then + if (chan_vol(3 downto 0) = "0000") then -- nothing is easy ! make sure quiet is quiet + chan_amp := "00000"; + else + chan_amp := chan_vol(3 downto 0) & '1'; -- make sure level 31 (env) = level 15 (tone) + end if; + else + chan_amp := env_vol(4 downto 0); + end if; + end if; + + dac_amp <= x"00"; + case chan_amp is + when "11111" => dac_amp <= x"FF"; + when "11110" => dac_amp <= x"D9"; + when "11101" => dac_amp <= x"BA"; + when "11100" => dac_amp <= x"9F"; + when "11011" => dac_amp <= x"88"; + when "11010" => dac_amp <= x"74"; + when "11001" => dac_amp <= x"63"; + when "11000" => dac_amp <= x"54"; + when "10111" => dac_amp <= x"48"; + when "10110" => dac_amp <= x"3D"; + when "10101" => dac_amp <= x"34"; + when "10100" => dac_amp <= x"2C"; + when "10011" => dac_amp <= x"25"; + when "10010" => dac_amp <= x"1F"; + when "10001" => dac_amp <= x"1A"; + when "10000" => dac_amp <= x"16"; + when "01111" => dac_amp <= x"13"; + when "01110" => dac_amp <= x"10"; + when "01101" => dac_amp <= x"0D"; + when "01100" => dac_amp <= x"0B"; + when "01011" => dac_amp <= x"09"; + when "01010" => dac_amp <= x"08"; + when "01001" => dac_amp <= x"07"; + when "01000" => dac_amp <= x"06"; + when "00111" => dac_amp <= x"05"; + when "00110" => dac_amp <= x"04"; + when "00101" => dac_amp <= x"03"; + when "00100" => dac_amp <= x"03"; + when "00011" => dac_amp <= x"02"; + when "00010" => dac_amp <= x"02"; + when "00001" => dac_amp <= x"01"; + when "00000" => dac_amp <= x"00"; + when others => null; + end case; + + cnt_div_t1 <= cnt_div; + end if; + end process; + + p_audio_output : process(RESET_L, CLK) + begin + if (RESET_L = '0') then + O_AUDIO <= (others => '0'); + O_CHAN <= (others => '0'); + elsif rising_edge(CLK) then + + if (ENA = '1') then + O_AUDIO <= dac_amp(7 downto 0); + O_CHAN <= cnt_div_t1(1 downto 0); + end if; + end if; + end process; + + p_io_ports : process(reg) + begin + O_IOA <= reg(14); + O_IOA_OE_L <= not reg(7)(6); + O_IOB <= reg(15); + O_IOB_OE_L <= not reg(7)(7); + end process; + + p_io_ports_inreg : process + begin + wait until rising_edge(CLK); + if (ENA = '1') then -- resync + ioa_inreg <= I_IOA; + iob_inreg <= I_IOB; + end if; + end process; +end architecture RTL; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/build_id.tcl b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/build_id.tcl new file mode 100644 index 00000000..938515d8 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/build_id.tcl @@ -0,0 +1,35 @@ +# ================================================================================ +# +# Build ID Verilog Module Script +# Jeff Wiencrot - 8/1/2011 +# +# Generates a Verilog module that contains a timestamp, +# from the current build. These values are available from the build_date, build_time, +# physical_address, and host_name output ports of the build_id module in the build_id.v +# Verilog source file. +# +# ================================================================================ + +proc generateBuildID_Verilog {} { + + # Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html) + set buildDate [ clock format [ clock seconds ] -format %y%m%d ] + set buildTime [ clock format [ clock seconds ] -format %H%M%S ] + + # Create a Verilog file for output + set outputFileName "rtl/build_id.v" + set outputFile [open $outputFileName "w"] + + # Output the Verilog source + puts $outputFile "`define BUILD_DATE \"$buildDate\"" + puts $outputFile "`define BUILD_TIME \"$buildTime\"" + close $outputFile + + # Send confirmation message to the Messages window + post_message "Generated build identification Verilog module: [pwd]/$outputFileName" + post_message "Date: $buildDate" + post_message "Time: $buildTime" +} + +# Comment out this line to prevent the process from automatically executing when the file is sourced: +generateBuildID_Verilog \ No newline at end of file diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/gen_ram.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/gen_ram.vhd new file mode 100644 index 00000000..f1a95608 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/gen_ram.vhd @@ -0,0 +1,84 @@ +-- ----------------------------------------------------------------------- +-- +-- Syntiac's generic VHDL support files. +-- +-- ----------------------------------------------------------------------- +-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) +-- http://www.syntiac.com/fpga64.html +-- +-- Modified April 2016 by Dar (darfpga@aol.fr) +-- http://darfpga.blogspot.fr +-- Remove address register when writing +-- +-- ----------------------------------------------------------------------- +-- +-- gen_rwram.vhd +-- +-- ----------------------------------------------------------------------- +-- +-- generic ram. +-- +-- ----------------------------------------------------------------------- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.numeric_std.ALL; + +-- ----------------------------------------------------------------------- + +entity gen_ram is + generic ( + dWidth : integer := 8; + aWidth : integer := 10 + ); + port ( + clk : in std_logic; + we : in std_logic; + addr : in std_logic_vector((aWidth-1) downto 0); + d : in std_logic_vector((dWidth-1) downto 0); + q : out std_logic_vector((dWidth-1) downto 0) + ); +end entity; + +-- ----------------------------------------------------------------------- + +architecture rtl of gen_ram is + subtype addressRange is integer range 0 to ((2**aWidth)-1); + type ramDef is array(addressRange) of std_logic_vector((dWidth-1) downto 0); + signal ram: ramDef; + + signal rAddrReg : std_logic_vector((aWidth-1) downto 0); + signal qReg : std_logic_vector((dWidth-1) downto 0); +begin +-- ----------------------------------------------------------------------- +-- Signals to entity interface +-- ----------------------------------------------------------------------- +-- q <= qReg; + +-- ----------------------------------------------------------------------- +-- Memory write +-- ----------------------------------------------------------------------- + process(clk) + begin + if rising_edge(clk) then + if we = '1' then + ram(to_integer(unsigned(addr))) <= d; + end if; + end if; + end process; + +-- ----------------------------------------------------------------------- +-- Memory read +-- ----------------------------------------------------------------------- +process(clk) + begin + if rising_edge(clk) then +-- qReg <= ram(to_integer(unsigned(rAddrReg))); +-- rAddrReg <= addr; +---- qReg <= ram(to_integer(unsigned(addr))); + q <= ram(to_integer(unsigned(addr))); + end if; + end process; +--q <= ram(to_integer(unsigned(addr))); +end architecture; + diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/pll_mist.v b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/pll_mist.v new file mode 100644 index 00000000..feda27a3 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/pll_mist.v @@ -0,0 +1,337 @@ +// megafunction wizard: %ALTPLL% +// GENERATION: STANDARD +// VERSION: WM1.0 +// MODULE: altpll + +// ============================================================ +// File Name: pll_mist.v +// Megafunction Name(s): +// altpll +// +// Simulation Library Files(s): +// altera_mf +// ============================================================ +// ************************************************************ +// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +// +// 13.1.0 Build 162 10/23/2013 SJ Web Edition +// ************************************************************ + + +//Copyright (C) 1991-2013 Altera Corporation +//Your use of Altera Corporation's design tools, logic functions +//and other software and tools, and its AMPP partner logic +//functions, and any output files from any of the foregoing +//(including device programming or simulation files), and any +//associated documentation or information are expressly subject +//to the terms and conditions of the Altera Program License +//Subscription Agreement, Altera MegaCore Function License +//Agreement, or other applicable license agreement, including, +//without limitation, that your use is for the sole purpose of +//programming logic devices manufactured by Altera and sold by +//Altera or its authorized distributors. Please refer to the +//applicable agreement for further details. + + +// synopsys translate_off +`timescale 1 ps / 1 ps +// synopsys translate_on +module pll_mist ( + inclk0, + c0, + c1, + locked); + + input inclk0; + output c0; + output c1; + output locked; + + wire [4:0] sub_wire0; + wire sub_wire2; + wire [0:0] sub_wire6 = 1'h0; + wire [0:0] sub_wire3 = sub_wire0[0:0]; + wire [1:1] sub_wire1 = sub_wire0[1:1]; + wire c1 = sub_wire1; + wire locked = sub_wire2; + wire c0 = sub_wire3; + wire sub_wire4 = inclk0; + wire [1:0] sub_wire5 = {sub_wire6, sub_wire4}; + + altpll altpll_component ( + .inclk (sub_wire5), + .clk (sub_wire0), + .locked (sub_wire2), + .activeclock (), + .areset (1'b0), + .clkbad (), + .clkena ({6{1'b1}}), + .clkloss (), + .clkswitch (1'b0), + .configupdate (1'b0), + .enable0 (), + .enable1 (), + .extclk (), + .extclkena ({4{1'b1}}), + .fbin (1'b1), + .fbmimicbidir (), + .fbout (), + .fref (), + .icdrclk (), + .pfdena (1'b1), + .phasecounterselect ({4{1'b1}}), + .phasedone (), + .phasestep (1'b1), + .phaseupdown (1'b1), + .pllena (1'b1), + .scanaclr (1'b0), + .scanclk (1'b0), + .scanclkena (1'b1), + .scandata (1'b0), + .scandataout (), + .scandone (), + .scanread (1'b0), + .scanwrite (1'b0), + .sclkout0 (), + .sclkout1 (), + .vcooverrange (), + .vcounderrange ()); + defparam + altpll_component.bandwidth_type = "AUTO", + altpll_component.clk0_divide_by = 9, + altpll_component.clk0_duty_cycle = 50, + altpll_component.clk0_multiply_by = 16, + altpll_component.clk0_phase_shift = "0", + altpll_component.clk1_divide_by = 27, + altpll_component.clk1_duty_cycle = 50, + altpll_component.clk1_multiply_by = 40, + altpll_component.clk1_phase_shift = "0", + altpll_component.compensate_clock = "CLK0", + altpll_component.inclk0_input_frequency = 37037, + altpll_component.intended_device_family = "Cyclone III", + altpll_component.lpm_hint = "CBX_MODULE_PREFIX=pll_mist", + altpll_component.lpm_type = "altpll", + altpll_component.operation_mode = "NORMAL", + altpll_component.pll_type = "AUTO", + altpll_component.port_activeclock = "PORT_UNUSED", + altpll_component.port_areset = "PORT_UNUSED", + altpll_component.port_clkbad0 = "PORT_UNUSED", + altpll_component.port_clkbad1 = "PORT_UNUSED", + altpll_component.port_clkloss = "PORT_UNUSED", + altpll_component.port_clkswitch = "PORT_UNUSED", + altpll_component.port_configupdate = "PORT_UNUSED", + altpll_component.port_fbin = "PORT_UNUSED", + altpll_component.port_inclk0 = "PORT_USED", + altpll_component.port_inclk1 = "PORT_UNUSED", + altpll_component.port_locked = "PORT_USED", + altpll_component.port_pfdena = "PORT_UNUSED", + altpll_component.port_phasecounterselect = "PORT_UNUSED", + altpll_component.port_phasedone = "PORT_UNUSED", + altpll_component.port_phasestep = "PORT_UNUSED", + altpll_component.port_phaseupdown = "PORT_UNUSED", + altpll_component.port_pllena = "PORT_UNUSED", + altpll_component.port_scanaclr = "PORT_UNUSED", + altpll_component.port_scanclk = "PORT_UNUSED", + altpll_component.port_scanclkena = "PORT_UNUSED", + altpll_component.port_scandata = "PORT_UNUSED", + altpll_component.port_scandataout = "PORT_UNUSED", + altpll_component.port_scandone = "PORT_UNUSED", + altpll_component.port_scanread = "PORT_UNUSED", + altpll_component.port_scanwrite = "PORT_UNUSED", + altpll_component.port_clk0 = "PORT_USED", + altpll_component.port_clk1 = "PORT_USED", + altpll_component.port_clk2 = "PORT_UNUSED", + altpll_component.port_clk3 = "PORT_UNUSED", + altpll_component.port_clk4 = "PORT_UNUSED", + altpll_component.port_clk5 = "PORT_UNUSED", + altpll_component.port_clkena0 = "PORT_UNUSED", + altpll_component.port_clkena1 = "PORT_UNUSED", + altpll_component.port_clkena2 = "PORT_UNUSED", + altpll_component.port_clkena3 = "PORT_UNUSED", + altpll_component.port_clkena4 = "PORT_UNUSED", + altpll_component.port_clkena5 = "PORT_UNUSED", + altpll_component.port_extclk0 = "PORT_UNUSED", + altpll_component.port_extclk1 = "PORT_UNUSED", + altpll_component.port_extclk2 = "PORT_UNUSED", + altpll_component.port_extclk3 = "PORT_UNUSED", + altpll_component.self_reset_on_loss_lock = "OFF", + altpll_component.width_clock = 5; + + +endmodule + +// ============================================================ +// CNX file retrieval info +// ============================================================ +// Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +// Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +// Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +// Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +// Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +// Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +// Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +// Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +// Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +// Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +// Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +// Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +// Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +// Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8" +// Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "9" +// Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "27" +// Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +// Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "48.000000" +// Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "40.000000" +// Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +// Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +// Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +// Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +// Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +// Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000" +// Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +// Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +// Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +// Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +// Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +// Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +// Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +// Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "16" +// Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "40" +// Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +// Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "48.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "40.00000000" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +// Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +// Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +// Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +// Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg" +// Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +// Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +// Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +// Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +// Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll_mist.mif" +// Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +// Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +// Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +// Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +// Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +// Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +// Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +// Retrieval info: PRIVATE: SPREAD_USE STRING "0" +// Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +// Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +// Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +// Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +// Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +// Retrieval info: PRIVATE: USE_CLK0 STRING "1" +// Retrieval info: PRIVATE: USE_CLK1 STRING "1" +// Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +// Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +// Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +// Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +// Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "9" +// Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "16" +// Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "27" +// Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +// Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "40" +// Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +// Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +// Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037" +// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III" +// Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +// Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +// Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +// Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +// Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +// Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +// Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +// Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +// Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +// Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +// Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +// Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +// Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +// Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +// Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +// Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +// Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.v TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.ppf TRUE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.inc FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.cmp FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.bsf FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist_inst.v FALSE +// Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist_bb.v FALSE +// Retrieval info: LIB_FILE: altera_mf +// Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/popeye.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/popeye.vhd new file mode 100644 index 00000000..11fb03ca --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/popeye.vhd @@ -0,0 +1,977 @@ +--------------------------------------------------------------------------------- +-- Popeye by Dar (darfpga@aol.fr) (26/12/2019) +-- http://darfpga.blogspot.fr +--------------------------------------------------------------------------------- +-- +-- release rev 00 : initial release +-- (26/12/2019) +-- +--------------------------------------------------------------------------------- +-- gen_ram.vhd & io_ps2_keyboard +-------------------------------- +-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com) +-- http://www.syntiac.com/fpga64.html +--------------------------------------------------------------------------------- +-- T80/T80se - Version : 304 +----------------------------- +-- Z80 compatible microprocessor core +-- Copyright (c) 2001-2002 Daniel Wallner (jesus@opencores.org) +--------------------------------------------------------------------------------- +-- YM2149 (AY-3-8910) +-- Copyright (c) MikeJ - Jan 2005 +--------------------------------------------------------------------------------- +-- Educational use only +-- Do not redistribute synthetized file with roms +-- Do not redistribute roms whatever the form +-- Use at your own risk +--------------------------------------------------------------------------------- + +-- Features : +-- Video : VGA 31kHz/60Hz progressive and TV 15kHz interlaced +-- Coctail mode : NO +-- Sound : OK + +-- Use with MAME roms from popeye.zip & popeyeu.zip +-- +-- Use make_popeye_proms.bat to build vhd file from binaries +-- (CRC list included) + +-- Popeye Hardware caracteristics : TODO +-- +--------------------------------------------------------------------------------- +-- Schematics remarks : +-- +-- Display is 512x448 pixels (video 640 pixels x 256 interlaced lines @ 10.08MHz ) + +-- 640/10.08e6 = 63.49us per line (15.750KHz) +-- 63.49*256 = 16.254ms per frame (61.52Hz) +-- +--------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; +use ieee.numeric_std.all; + +entity popeye is +port( + clock_40 : in std_logic; + reset : in std_logic; + tv15Khz_mode : in std_logic; + video_r : out std_logic_vector(2 downto 0); + video_g : out std_logic_vector(2 downto 0); + video_b : out std_logic_vector(1 downto 0); + video_clk : out std_logic; + video_csync : out std_logic; + video_blankn : out std_logic; + video_hs : out std_logic; + video_vs : buffer std_logic; + + audio_out : out std_logic_vector(15 downto 0); + + coin : in std_logic; + start1 : in std_logic; + start2 : in std_logic; + + right1 : in std_logic; + left1 : in std_logic; + up1 : in std_logic; + down1 : in std_logic; + fire1 : in std_logic; + + right2 : in std_logic; + left2 : in std_logic; + up2 : in std_logic; + down2 : in std_logic; + fire2 : in std_logic; + + sw1 : in std_logic_vector(3 downto 0); + sw2 : in std_logic_vector(7 downto 0); + + service : in std_logic; + cpu_rom_addr : out std_logic_vector(14 downto 0); + cpu_rom_do : in std_logic_vector(7 downto 0); + dbg_cpu_addr : out std_logic_vector(15 downto 0) + ); +end popeye; + +architecture struct of popeye is + + signal reset_n : std_logic; + signal clock_vid : std_logic; + signal clock_vidn: std_logic; + signal clock_cnt1: std_logic_vector(3 downto 0) := "0000"; + signal clock_cnt2: std_logic_vector(3 downto 0) := "0000"; + + signal hcnt : std_logic_vector(9 downto 0) := (others=>'0'); -- horizontal counter + signal hflip : std_logic_vector(9 downto 0) := (others=>'0'); -- horizontal counter flip + signal vcnt : std_logic_vector(9 downto 0) := (others=>'0'); -- vertical counter + signal vflip : std_logic_vector(9 downto 0) := (others=>'0'); -- vertical counter flip + + signal hs_cnt, vs_cnt :std_logic_vector(9 downto 0) ; + signal hsync0, hsync1, hsync2, hsync3, hsync4 : std_logic; + signal top_frame : std_logic := '0'; + signal init_eo : std_logic; + + signal pix_ena : std_logic; + signal cpu_ena : std_logic; + + signal cpu_addr : std_logic_vector(15 downto 0); + signal cpu_di : std_logic_vector( 7 downto 0); + signal cpu_do : std_logic_vector( 7 downto 0); + signal cpu_wr_n : std_logic; + signal cpu_rd_n : std_logic; + signal cpu_mreq_n : std_logic; + signal cpu_ioreq_n : std_logic; + signal cpu_nmi_n : std_logic; + signal cpu_m1_n : std_logic; + +-- signal cpu_rom_addr : std_logic_vector(14 downto 0); +-- signal cpu_rom_do : std_logic_vector( 7 downto 0); + signal cpu_rom_do_swp : std_logic_vector( 7 downto 0); + + signal wram_addr : std_logic_vector(10 downto 0); + signal wram_we : std_logic; + signal wram_do : std_logic_vector( 7 downto 0); + signal wram_do_r : std_logic_vector( 7 downto 0); + +-- signal dbg_wram_do : std_logic_vector( 7 downto 0); + + signal ch_ram_addr : std_logic_vector(9 downto 0); + signal ch_ram_txt_we : std_logic; + signal ch_ram_txt_do : std_logic_vector(7 downto 0); + signal ch_ram_color_we : std_logic; + signal ch_ram_color_do : std_logic_vector(3 downto 0); + + signal ch_code : std_logic_vector( 7 downto 0); + signal ch_code_line : std_logic_vector(11 downto 0); + signal ch_graphx_do : std_logic_vector( 7 downto 0); + signal ch_vid : std_logic; + signal ch_color : std_logic_vector( 4 downto 0); + + signal hoffset : std_logic_vector( 7 downto 0); + signal hshift : std_logic_vector( 9 downto 0); + signal voffset : std_logic_vector( 7 downto 0); + signal vshift : std_logic_vector( 9 downto 0); + + signal bg_ram_addr : std_logic_vector(11 downto 0); + signal bg_ram_lnib_we : std_logic; + signal bg_ram_lnib_do : std_logic_vector(3 downto 0); + signal bg_ram_hnib_we : std_logic; + signal bg_ram_hnib_do : std_logic_vector(3 downto 0); + + signal bg_graphx : std_logic_vector(3 downto 0); + signal bg_color : std_logic_vector(3 downto 0); + + signal move_buf : std_logic; + signal read_buf : std_logic; + signal sp_ram_addr : std_logic_vector(9 downto 0); + signal sp_ram1_we : std_logic; + signal sp_ram1_do : std_logic_vector(7 downto 0); + signal sp_ram2_we : std_logic; + signal sp_ram2_do : std_logic_vector(7 downto 0); + signal sp_ram3_we : std_logic; + signal sp_ram3_do : std_logic_vector(7 downto 0); + signal sp_ram4_we : std_logic; + signal sp_ram4_do : std_logic_vector(7 downto 0); + + signal sp_vcnt : std_logic_vector(9 downto 0); + signal sp_on_line : std_logic; + + signal sp_buffer_ram1_addr : std_logic_vector( 5 downto 0); + signal sp_buffer_ram1_we : std_logic; + signal sp_buffer_ram1_di : std_logic_vector(17 downto 0); + signal sp_buffer_ram1_do : std_logic_vector(17 downto 0); + + signal sp_buffer_ram2_addr : std_logic_vector( 5 downto 0); + signal sp_buffer_ram2_we : std_logic; + signal sp_buffer_ram2_di : std_logic_vector(17 downto 0); + signal sp_buffer_ram2_do : std_logic_vector(17 downto 0); + + signal sp_buffer_sel : std_logic; + + signal sp_graphx1_do : std_logic_vector( 7 downto 0); + signal sp_graphx2_do : std_logic_vector( 7 downto 0); + signal sp_graphx3_do : std_logic_vector( 7 downto 0); + signal sp_graphx4_do : std_logic_vector( 7 downto 0); + + signal sp_graphx0 : std_logic_vector( 15 downto 0); + signal sp_graphx_sr0 : std_logic_vector( 15 downto 0); + signal sp_graphx1 : std_logic_vector( 15 downto 0); + signal sp_graphx_sr1 : std_logic_vector( 15 downto 0); + + signal sp_code_line : std_logic_vector(12 downto 0); + signal sp_code_line0 : std_logic_vector(12 downto 0); + + signal sp_hflip : std_logic; + signal sp_hflip_r : std_logic; + signal sp_hflip_rr : std_logic; + signal sp_hoffset : std_logic_vector(1 downto 0); + signal sp_color : std_logic_vector(2 downto 0); + signal sp_color_r : std_logic_vector(2 downto 0); + signal sp_color_rr : std_logic_vector(2 downto 0); + signal sp_vid : std_logic_vector(1 downto 0); + signal sp_hcnt : std_logic_vector(3 downto 0); + + signal ch_palette_addr : std_logic_vector(4 downto 0); + signal ch_palette_do : std_logic_vector(7 downto 0); + signal bg_palette_addr : std_logic_vector(4 downto 0); + signal bg_palette_do : std_logic_vector(7 downto 0); + signal sp_palette_addr : std_logic_vector(7 downto 0); + signal sp_palette_rg_do : std_logic_vector(7 downto 0); -- only 4 bits used + signal sp_palette_gb_do : std_logic_vector(7 downto 0); -- only 4 bits used + + signal input_0 : std_logic_vector(7 downto 0); + signal input_1 : std_logic_vector(7 downto 0); + signal input_2 : std_logic_vector(7 downto 0); + + + signal ay_do : std_logic_vector(7 downto 0); + signal ay_bdir : std_logic; + signal ay_bc1 : std_logic; + signal ay_audio : std_logic_vector(7 downto 0); + signal ay_ena : std_logic; + + signal ay_iob_do : std_logic_vector(7 downto 0); + signal ay_ioa_di : std_logic_vector(7 downto 0); + +begin + +clock_vid <= clock_40; +clock_vidn <= not clock_40; +reset_n <= not reset; + +-- debug +process (reset, clock_vid) +begin + if rising_edge(clock_vid) then -- and cpu_ena ='1' and cpu_mreq_n ='0' then + dbg_cpu_addr<= cpu_addr; + end if; +end process; + +-- make enables clock from clock_vid +process (clock_vid, reset) +begin + if reset='1' then + clock_cnt1 <= (others=>'0'); + clock_cnt2 <= (others=>'0'); + else + if rising_edge(clock_vid) then + + if clock_cnt1 = "1111" then -- divide by 16 + clock_cnt1 <= (others=>'0'); + else + clock_cnt1 <= clock_cnt1 + 1; + end if; + + if clock_cnt2 = "10011" then -- divide by 20 + clock_cnt2 <= (others=>'0'); + else + clock_cnt2 <= clock_cnt2 + 1; + end if; + + end if; + end if; +end process; +-- +cpu_ena <= '1' when clock_cnt2 = "00000" or clock_cnt2 = "01010" else '0'; -- (4MHz for cpu) + +ay_ena <= '1' when clock_cnt2 = "00000" else '0'; -- (2MHz for ay-3-8910) + +pix_ena <= '1' when (clock_cnt1(1 downto 0) = "11" and tv15Khz_mode = '1') or -- (10MHz for video interleaved) + (clock_cnt1(0) = '1' and tv15Khz_mode = '0') else '0'; -- (20MHz for video progressive) + +----------------------------------- +-- Video scanner 640x512 @20Mhz -- +-- 640x256 @10Mhz -- +-- display 512x448 -- +----------------------------------- +process (reset, clock_vid) +begin + if reset='1' then + hcnt <= (others=>'0'); + vcnt <= (others=>'0'); + top_frame <= '0'; + else + if rising_edge(clock_vid) then + if pix_ena = '1' then + + hcnt <= hcnt + 1; + if hcnt = 639 then + hcnt <= (others=>'0'); + vcnt <= vcnt + 1; +-- if (vcnt = 511 and tv15Khz_mode = '0') or (vcnt = 255 and tv15Khz_mode = '1') then + if (vcnt = 525 and tv15Khz_mode = '0') or (vcnt = 262 and tv15Khz_mode = '1') then -- extension to classic video standard + vcnt <= (others=>'0'); + top_frame <= not top_frame; + end if; + end if; + + if tv15Khz_mode = '0' then + -- progessive mode + + -- tune 31kHz vertical screen position here + if vcnt = 490+8 then video_vs <= '0'; end if; -- front porch 10 + if vcnt = 492+8 then video_vs <= '1'; end if; -- sync pulse 2 + -- back porch 33 + -- tune 31kHz horizontal screen position here + if hcnt = 512+13+12 then video_hs <= '0'; end if; -- front porch 16/25*20 = 13 + if hcnt = 512+90+12 then video_hs <= '1'; end if; -- sync pulse 96/25*20 = 77 + -- back porch 48/25*20 = 38 + video_blankn <= '0'; + if hcnt >= 2+16 and hcnt < 514+16-1 and + vcnt >= 32 and vcnt < 480 then video_blankn <= '1';end if; + + else -- interlaced mode + + if hcnt = 530+18 then -- tune 15KHz horizontal screen position here + hs_cnt <= (others => '0'); + if (vcnt = 248) then -- tune 15KHz vertical screen position here + vs_cnt <= (others => '0'); + else + vs_cnt <= vs_cnt +1; + end if; + + if vcnt = 260 then video_vs <= '0'; end if; + if vcnt = 262 then video_vs <= '1'; end if; + + else + hs_cnt <= hs_cnt + 1; + end if; + + video_blankn <= '0'; + if hcnt >= 2+16 and hcnt < 514+16-1 and + vcnt >= 16 and vcnt < 240 then video_blankn <= '1';end if; + + if hs_cnt = 0 then hsync0 <= '0'; + elsif hs_cnt = 47 then hsync0 <= '1'; + end if; + + if hs_cnt = 0 then hsync1 <= '0'; + elsif hs_cnt = 23 then hsync1 <= '1'; + elsif hs_cnt = 320+ 0 then hsync1 <= '0'; + elsif hs_cnt = 320+23 then hsync1 <= '1'; + end if; + + if hs_cnt = 0 then hsync2 <= '0'; + elsif hs_cnt = 320-47 then hsync2 <= '1'; + elsif hs_cnt = 320 then hsync2 <= '0'; + elsif hs_cnt = 640-47 then hsync2 <= '1'; + end if; + + + if hs_cnt = 0 then hsync3 <= '0'; + elsif hs_cnt = 23 then hsync3 <= '1'; + elsif hs_cnt = 320 then hsync3 <= '0'; + elsif hs_cnt = 640-47 then hsync3 <= '1'; + end if; + + if hs_cnt = 0 then hsync4 <= '0'; + elsif hs_cnt = 320-47 then hsync4 <= '1'; + elsif hs_cnt = 320 then hsync4 <= '0'; + elsif hs_cnt = 320+23 then hsync4 <= '1'; + end if; + + + if vs_cnt = 1 then video_csync <= hsync1; + elsif vs_cnt = 2 then video_csync <= hsync1; + elsif vs_cnt = 3 then video_csync <= hsync1; + elsif vs_cnt = 4 and top_frame = '1' then video_csync <= hsync3; + elsif vs_cnt = 4 and top_frame = '0' then video_csync <= hsync1; + elsif vs_cnt = 5 then video_csync <= hsync2; + elsif vs_cnt = 6 then video_csync <= hsync2; + elsif vs_cnt = 7 and top_frame = '1' then video_csync <= hsync4; + elsif vs_cnt = 7 and top_frame = '0' then video_csync <= hsync2; + elsif vs_cnt = 8 then video_csync <= hsync1; + elsif vs_cnt = 9 then video_csync <= hsync1; + elsif vs_cnt = 10 then video_csync <= hsync1; + elsif vs_cnt = 11 then video_csync <= hsync0; + else video_csync <= hsync0; + end if; + + end if; + + end if; + end if; + end if; +end process; + +-------------------- +-- players inputs -- +-------------------- +init_eo <= top_frame; + +input_0 <= "111" & fire1 & down1 & up1 & left1 & right1; +input_1 <= "111" & fire2 & down2 & up2 & left2 & right2; +input_2 <= coin & service & '1' & init_eo & start2 & start1 & "11"; + +------------------------------------------ +-- cpu data input with address decoding -- +------------------------------------------ +cpu_rom_addr <= + (cpu_addr(14 downto 10) & cpu_addr(8 downto 6) & cpu_addr(3) & cpu_addr(9) & cpu_addr(5 downto 4) & cpu_addr(2 downto 0)) xor ("000" & x"03F"); + +cpu_rom_do_swp <= + cpu_rom_do(3) & cpu_rom_do(4) & cpu_rom_do(2) & cpu_rom_do(5) & + cpu_rom_do(1) & cpu_rom_do(6) & cpu_rom_do(0) & cpu_rom_do(7); + +cpu_di <= cpu_rom_do_swp when cpu_mreq_n = '0' and cpu_addr(15 downto 12) < X"8" else -- program rom 0000-7FFF 32Ko + wram_do_r when cpu_mreq_n = '0' and (cpu_addr and X"E000") = x"8000" else -- work ram 8000-87FF 2Ko + mirroring 1800 + input_0 when cpu_ioreq_n = '0' and (cpu_addr(1 downto 0) = "00") else + input_1 when cpu_ioreq_n = '0' and (cpu_addr(1 downto 0) = "01") else + input_2 when cpu_ioreq_n = '0' and (cpu_addr(1 downto 0) = "10") else + ay_do when cpu_ioreq_n = '0' and (cpu_addr(1 downto 0) = "11") else + X"FF"; +-- +------------------------------------------ +-- write enable / ram access from CPU -- +------------------------------------------ +wram_addr <= cpu_addr(10 downto 0) when hcnt(0) = '0' else '1' & sp_ram_addr(9 downto 0); + +wram_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"E000") = x"8000" and hcnt(0) = '0' else '0'; +ch_ram_txt_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"EC00") = x"A000" and hcnt(0) = '0' else '0'; +ch_ram_color_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"EC00") = x"A400" and hcnt(0) = '0' else '0'; +bg_ram_lnib_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"F000") = x"C000" and hcnt(0) = '0' else '0'; +bg_ram_hnib_we <= '1' when cpu_mreq_n = '0' and cpu_wr_n = '0' and (cpu_addr and x"F000") = x"D000" and hcnt(0) = '0' else '0'; + +----------------------------------------------------- +-- Transfer sprite data from wram to sprite ram +-- once per frame. Read sprite ram on every scanline. +----------------------------------------------------- +sp_ram1_we <= hcnt(0) when move_buf = '1' and sp_ram_addr(1 downto 0) = "00" else '0'; +sp_ram2_we <= hcnt(0) when move_buf = '1' and sp_ram_addr(1 downto 0) = "01" else '0'; +sp_ram3_we <= hcnt(0) when move_buf = '1' and sp_ram_addr(1 downto 0) = "10" else '0'; +sp_ram4_we <= hcnt(0) when move_buf = '1' and sp_ram_addr(1 downto 0) = "11" else '0'; + +process (clock_vid) +begin + if rising_edge(clock_vid) then + + if hcnt(0) = '0' then wram_do_r <= wram_do; end if; + + if move_buf = '0' and read_buf ='0' then + sp_ram_addr <= (others => '0'); + + if hcnt = 1 and pix_ena = '1' then + if (vcnt = 500 and tv15Khz_mode = '0') or (vcnt = 250 and tv15Khz_mode = '1') then + move_buf <= '1'; + else + read_buf <= '1'; + end if; + end if; + end if; + + if move_buf = '1' and pix_ena = '1' and hcnt(0) = '1' then + if sp_ram_addr >= 640 then + move_buf <= '0'; + else + sp_ram_addr <= sp_ram_addr + 1; + end if; + end if; + + if read_buf = '1' and pix_ena = '1' and hcnt(0) = '1' then + if sp_ram_addr >= 640 then + read_buf <= '0'; + else + sp_ram_addr <= sp_ram_addr + 4; + end if; + end if; + + end if; +end process; + +------------------------------------------------------------------------ +-- Misc registers : write enable / interrupt / ay-3-8910 IF +------------------------------------------------------------------------ + +process (clock_vid) +begin + if rising_edge(clock_vid) then + + if cpu_mreq_n = '0' and cpu_wr_n = '0' then + if (cpu_addr = x"8C00") then hoffset <= cpu_do; end if; + if (cpu_addr = x"8C01") then voffset <= cpu_do; end if; + + if (cpu_addr = x"8C03") then + sp_palette_addr(7 downto 5) <= cpu_do(2 downto 0); + bg_palette_addr(4) <= cpu_do(3); + end if; + end if; + + end if; +end process; + +cpu_nmi_n <= video_vs; + +audio_out <= ay_audio & X"00"; +-- +-- bdir bc1 (bc2 = 1) +-- 0 0 : Inactive +-- 0 1 : Read +-- 1 0 : Write +-- 1 1 : Address + +ay_bdir <= '1' when cpu_ioreq_n = '0' and cpu_wr_n = '0' else '0'; +ay_bc1 <= '1' when cpu_ioreq_n = '0' and (cpu_rd_n = '0' or (cpu_wr_n = '0' and cpu_addr(0) = '0')) else '0'; + +ay_ioa_di <= not sw2(to_integer(unsigned(ay_iob_do(3 downto 1)))) & "000" & not sw1; + +------------------------------------ +---------- sprite machine ---------- +------------------------------------ +hflip <= hcnt; -- do not apply mirror horizontal flip +vflip <= vcnt(8 downto 0) & not top_frame when tv15Khz_mode = '1' else vcnt; -- do not apply mirror flip + +sp_buffer_sel <= vflip(1) when tv15Khz_mode = '1' else vflip(0); + +sp_vcnt <= vflip + (sp_ram2_do & '0') - 14 when tv15Khz_mode = '1' else -- tune v sprite position for 15KHz (interlaced) + vflip + (sp_ram2_do & '0') - 15; -- tune v sprite position for 31KHz (progressive) + +sp_on_line <= '1' when (sp_vcnt(8 downto 4) = (x"F"&'1')) and (read_buf = '1') else '0'; + +-- feed and read line buffers + +sp_buffer_ram1_di <= sp_ram4_do(4 downto 0) & sp_ram1_do(1 downto 0) & sp_ram3_do & sp_vcnt(3 downto 1) when sp_buffer_sel = '1' else "00"&x"0000"; +sp_buffer_ram1_addr <= sp_ram1_do(7 downto 2) when sp_buffer_sel = '1' else hflip(8 downto 3); +sp_buffer_ram1_we <= pix_ena and hcnt(0) and sp_on_line when sp_buffer_sel = '1' else pix_ena and hcnt(2) and hcnt(1) and hcnt(0); + +sp_buffer_ram2_di <= sp_ram4_do(4 downto 0) & sp_ram1_do(1 downto 0) & sp_ram3_do & sp_vcnt(3 downto 1) when sp_buffer_sel = '0' else "00"&x"0000"; +sp_buffer_ram2_addr <= sp_ram1_do(7 downto 2) when sp_buffer_sel = '0' else hflip(8 downto 3); +sp_buffer_ram2_we <= pix_ena and hcnt(0) and sp_on_line when sp_buffer_sel = '0' else pix_ena and hcnt(2) and hcnt(1) and hcnt(0); + +sp_code_line0 <= + (sp_buffer_ram1_do(15) & sp_buffer_ram1_do(17) & sp_buffer_ram1_do(9 downto 0) & sp_vcnt(0)) xor ('0' & x"00F") when sp_buffer_sel = '0' and sp_buffer_ram1_do(16) = '1' else + (sp_buffer_ram1_do(15) & sp_buffer_ram1_do(17) & sp_buffer_ram1_do(9 downto 0) & sp_vcnt(0)) xor ('0' & x"000") when sp_buffer_sel = '0' and sp_buffer_ram1_do(16) = '0' else + (sp_buffer_ram2_do(15) & sp_buffer_ram2_do(17) & sp_buffer_ram2_do(9 downto 0) & sp_vcnt(0)) xor ('0' & x"00F") when sp_buffer_sel = '1' and sp_buffer_ram2_do(16) = '1' else + (sp_buffer_ram2_do(15) & sp_buffer_ram2_do(17) & sp_buffer_ram2_do(9 downto 0) & sp_vcnt(0)) xor ('0' & x"000"); + +sp_code_line <= sp_code_line0 xor ('1'&x"FFF") when tv15Khz_mode = '1' else -- ok for 15 KHz + sp_code_line0 xor ('1'&x"FFE"); -- ok for 31 KHz + +sp_hflip <= sp_buffer_ram1_do(10) when sp_buffer_sel = '0' else sp_buffer_ram2_do(10); +sp_hoffset <= sp_buffer_ram1_do(12 downto 11) when sp_buffer_sel = '0' else sp_buffer_ram2_do(12 downto 11); +sp_color <= sp_buffer_ram1_do(15 downto 13) when sp_buffer_sel = '0' else sp_buffer_ram2_do(15 downto 13); + +process (clock_vid) +begin + if rising_edge(clock_vid) then + + if pix_ena = '1' then + + if hcnt(2 downto 0) = "111" then + + sp_graphx0 <= sp_graphx1_do & sp_graphx2_do; + sp_graphx1 <= sp_graphx3_do & sp_graphx4_do; + sp_color_r <= sp_color; + sp_hflip_r <= sp_hflip; + + if sp_color = "000" then + sp_hcnt <= "01" & not sp_hoffset; + else + sp_hcnt <= "11" & not sp_hoffset; + end if; + + else + if hcnt(0)='1' then sp_hcnt <= sp_hcnt + 1; end if; + end if; + + if hcnt(0) = '0' and sp_hcnt = x"F" then + sp_graphx_sr0 <= sp_graphx0; + sp_graphx_sr1 <= sp_graphx1; + sp_color_rr <= sp_color_r; + sp_hflip_rr <= sp_hflip_r; + else + if sp_hflip_rr = '0' then + sp_graphx_sr0 <= '0' & sp_graphx_sr0(15 downto 1); + sp_graphx_sr1 <= '0' & sp_graphx_sr1(15 downto 1); + else + sp_graphx_sr0 <= sp_graphx_sr0(14 downto 0) & '0'; + sp_graphx_sr1 <= sp_graphx_sr1(14 downto 0) & '0'; + end if; + end if; + + end if; + end if; +end process; + +sp_palette_addr(1 downto 0) <= sp_graphx_sr0(0) & sp_graphx_sr1(0) when sp_hflip_rr = '0' else sp_graphx_sr0(15) & sp_graphx_sr1(15); +sp_palette_addr(4 downto 2) <= sp_color_rr; + +---------------------------- +------- char machine ------- +---------------------------- +ch_ram_addr <= cpu_addr(9 downto 0) when hcnt(0) = '0' else vflip(8 downto 4) & hflip(8 downto 4); + +ch_code_line <= '1' & ch_code & vflip(3 downto 1); + +process (clock_vid) +begin + if rising_edge(clock_vid) then + + if pix_ena = '1' then + + if hcnt(0) = '1' then + if hcnt(3 downto 1) = "111" then + ch_code <= ch_ram_txt_do; + ch_color <= ch_ram_color_do(3) & ch_ram_color_do; + end if; + end if; + + ch_palette_addr <= ch_color; + ch_vid <= ch_graphx_do(to_integer(unsigned(hflip(3 downto 1)))); + + end if; + + end if; +end process; + + +---------------------------- +---- background machine ---- +---------------------------- +bg_ram_addr <= cpu_addr(11 downto 0) when hcnt(0) = '0' else vshift(7 downto 2) & hshift(8 downto 3); + +process (clock_vid) +begin + if rising_edge(clock_vid) then + + if pix_ena = '1' then + + if hcnt = 540 then -- tune background h pos w.r.t char (use odd value to keep hshift(0) = hcnt(0)) + hshift <= '0' & hoffset & '0'; + else + hshift <= hshift + 1 ; + end if; + + if hcnt = 540 then + if tv15Khz_mode = '0' then + vshift <= ('0' & voffset & '0') + vflip + ("01" & x"01"); -- tune background v pos w.r.t char + else + vshift <= ('0' & voffset & '0') + vflip + ("01" & x"02"); -- tune background v pos w.r.t char + end if; + end if; + + if hcnt(0) = '1' then + if hcnt(1) = '1' then + if vshift(8) = '1' then + bg_color <= bg_ram_lnib_do; + else + bg_color <= bg_ram_hnib_do; + end if; + end if; + end if; + + bg_palette_addr(3 downto 0) <= bg_color; + + end if; + + end if; +end process; + +--------------------------- +-- mux char/sprite video -- +--------------------------- +process (clock_vid) +begin + if rising_edge(clock_vid) then + + if hoffset = x"00" then + video_r <= "000"; + video_g <= "000"; + video_b <= "00"; + else + video_r <= not bg_palette_do(2 downto 0); + video_g <= not bg_palette_do(5 downto 3); + video_b <= not bg_palette_do(7 downto 6); + end if; + + if sp_palette_addr(1 downto 0) /= "00" then + video_r <= not (sp_palette_rg_do(2 downto 0)); + video_g <= not (sp_palette_gb_do(1 downto 0) & sp_palette_rg_do(3)); + video_b <= not (sp_palette_gb_do(3 downto 2)); + end if; + + if ch_vid = '1' then + video_r <= not ch_palette_do(2 downto 0); + video_g <= not ch_palette_do(5 downto 3); + video_b <= not ch_palette_do(7 downto 6); + end if; + + end if; +end process; + +------------------------------ +-- components & sound board -- +------------------------------ + +-- microprocessor Z80 +cpu : entity work.T80se +generic map(Mode => 0, T2Write => 1, IOWait => 1) +port map( + RESET_n => reset_n, + CLK_n => clock_vid, + CLKEN => cpu_ena, + WAIT_n => '1', + INT_n => '1', -- cpu_irq_n, + NMI_n => cpu_nmi_n, + BUSRQ_n => '1', + M1_n => cpu_m1_n, + MREQ_n => cpu_mreq_n, + IORQ_n => cpu_ioreq_n, + RD_n => cpu_rd_n, + WR_n => cpu_wr_n, + RFSH_n => open, + HALT_n => open, + BUSAK_n => open, + A => cpu_addr, + DI => cpu_di, + DO => cpu_do +); + +-- cpu program ROM 0x0000-0xDFFF +--rom_cpu : entity work.popeye_cpu +--port map( +-- clk => clock_vidn, +-- addr => cpu_rom_addr, +-- data => cpu_rom_do +--); + +-- working RAM 8000-87FF/8800-8FFF 2Ko +wram : entity work.gen_ram +generic map( dWidth => 8, aWidth => 11) +port map( + clk => clock_vidn, + we => wram_we, + addr => wram_addr(10 downto 0), + d => cpu_do, + q => wram_do +); + +-- char RAM (text) A000-A3FF 1Ko + mirroring 1000 +char_ram_txt : entity work.gen_ram +generic map( dWidth => 8, aWidth => 10) +port map( + clk => clock_vidn, + we => ch_ram_txt_we, + addr => ch_ram_addr, + d => cpu_do, + q => ch_ram_txt_do +); + +-- char RAM (color) A400-A7FF 1Ko + mirroring 1000 +char_ram_color : entity work.gen_ram +generic map( dWidth => 4, aWidth => 10) +port map( + clk => clock_vidn, + we => ch_ram_color_we, + addr => ch_ram_addr, + d => cpu_do(3 downto 0), + q => ch_ram_color_do +); + +-- video RAM C000-CFFF 4K x 4bits +video_ram_lnib : entity work.gen_ram +generic map( dWidth => 4, aWidth => 12) +port map( + clk => clock_vidn, + we => bg_ram_lnib_we, + addr => bg_ram_addr, + d => cpu_do(3 downto 0), + q => bg_ram_lnib_do +); + +-- video RAM D000-DFFF 4K x 4bits +video_ram_hnib : entity work.gen_ram +generic map( dWidth => 4, aWidth => 12) +port map( + clk => clock_vidn, + we => bg_ram_hnib_we, + addr => bg_ram_addr, + d => cpu_do(3 downto 0), + q => bg_ram_hnib_do +); + + +-------------------------------- +-- debug obj RAM +-------------------------------- +--dbg_obj_ram : entity work.obj_ram +--generic map( dWidth => 8, aWidth => 10) +--port map( +-- clk => clock_vidn, +-- we => '0', +-- addr => wram_addr(9 downto 0), +-- d => x"FF", +-- q => dbg_wram_do +--); +-------------------------------- +-------------------------------- + +-- sprite RAMs (no cpu access) +sprite_ram1 : entity work.gen_ram +generic map( dWidth => 8, aWidth => 8) +port map( + clk => clock_vidn, + we => sp_ram1_we, + addr => sp_ram_addr(9 downto 2), + d => wram_do, +-- d => dbg_wram_do, + q => sp_ram1_do +); + +sprite_ram2 : entity work.gen_ram +generic map( dWidth => 8, aWidth => 8) +port map( + clk => clock_vidn, + we => sp_ram2_we, + addr => sp_ram_addr(9 downto 2), + d => wram_do, +-- d => dbg_wram_do, + q => sp_ram2_do +); + +sprite_ram3 : entity work.gen_ram +generic map( dWidth => 8, aWidth => 8) +port map( + clk => clock_vidn, + we => sp_ram3_we, + addr => sp_ram_addr(9 downto 2), + d => wram_do, +-- d => dbg_wram_do, + q => sp_ram3_do +); + +sprite_ram4 : entity work.gen_ram +generic map( dWidth => 8, aWidth => 8) +port map( + clk => clock_vidn, + we => sp_ram4_we, + addr => sp_ram_addr(9 downto 2), + d => wram_do, +-- d => dbg_wram_do, + q => sp_ram4_do +); + +-- sprite line buffer 1 +sprlinebuf1a : entity work.gen_ram +generic map( dWidth => 18, aWidth => 6) +port map( + clk => clock_vidn, + we => sp_buffer_ram1_we, + addr => sp_buffer_ram1_addr, + d => sp_buffer_ram1_di, + q => sp_buffer_ram1_do +); + +-- sprite line buffer 2 +sprlinebuf2 : entity work.gen_ram +generic map( dWidth => 18, aWidth => 6) +port map( + clk => clock_vidn, + we => sp_buffer_ram2_we, + addr => sp_buffer_ram2_addr, + d => sp_buffer_ram2_di, + q => sp_buffer_ram2_do +); + +-- char graphics ROM 5N +ch_graphics : entity work.popeye_ch_bits +port map( + clk => clock_vidn, + addr => ch_code_line, + data => ch_graphx_do +); + +-- sprite graphics ROM 1E +sprite_graphics1 : entity work.popeye_sp_bits_1 +port map( + clk => clock_vidn, + addr => sp_code_line, + data => sp_graphx1_do +); + +-- sprite graphics ROM 1F +sprite_graphics2 : entity work.popeye_sp_bits_2 +port map( + clk => clock_vidn, + addr => sp_code_line, + data => sp_graphx2_do +); + +-- sprite graphics ROM 1J +sprite_graphics3 : entity work.popeye_sp_bits_3 +port map( + clk => clock_vidn, + addr => sp_code_line, + data => sp_graphx3_do +); + +-- sprite graphics ROM 1k +sprite_graphics4 : entity work.popeye_sp_bits_4 +port map( + clk => clock_vidn, + addr => sp_code_line, + data => sp_graphx4_do +); + +-- char palette +ch_palette : entity work.popeye_ch_palette_rgb +port map( + clk => clock_vidn, + addr => ch_palette_addr, + data => ch_palette_do +); + +-- background palette +bg_palette : entity work.popeye_bg_palette_rgb +port map( + clk => clock_vidn, + addr => bg_palette_addr, + data => bg_palette_do +); + +-- sprites palettes +sp_palette_rg : entity work.popeye_sp_palette_rg +port map( + clk => clock_vidn, + addr => sp_palette_addr, + data => sp_palette_rg_do +); + +sp_palette_gb : entity work.popeye_sp_palette_gb +port map( + clk => clock_vidn, + addr => sp_palette_addr, + data => sp_palette_gb_do +); + +ym2149 : entity work.ym2149 +port map ( +-- data bus + I_DA => cpu_do, --: in std_logic_vector(7 downto 0); + O_DA => ay_do, --: out std_logic_vector(7 downto 0); + O_DA_OE_L => open, --: out std_logic; +-- control + I_A9_L => '0', --: in std_logic; + I_A8 => '1', --: in std_logic; + I_BDIR => ay_bdir, --: in std_logic; + I_BC2 => '1', --: in std_logic; + I_BC1 => ay_bc1, --: in std_logic; + I_SEL_L => '1', --: in std_logic; +-- audio + O_AUDIO => ay_audio, --: out std_logic_vector(7 downto 0); +-- port a + I_IOA => ay_ioa_di, --: in std_logic_vector(7 downto 0); + O_IOA => open, --: out std_logic_vector(7 downto 0); + O_IOA_OE_L => open, --: out std_logic; +-- port b + I_IOB => "11111111", --: in std_logic_vector(7 downto 0); + O_IOB => ay_iob_do, --: out std_logic_vector(7 downto 0); + O_IOB_OE_L => open, --: out std_logic; + + ENA => ay_ena, --: in std_logic; -- clock enable for higher speed operation + RESET_L => '1', --: in std_logic; + CLK => clock_vid --: in std_logic -- note 6 Mhz! +); + +end struct; \ No newline at end of file diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_bg_palette_rgb.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_bg_palette_rgb.vhd new file mode 100644 index 00000000..fb2e0c68 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_bg_palette_rgb.vhd @@ -0,0 +1,24 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity popeye_bg_palette_rgb is +port ( + clk : in std_logic; + addr : in std_logic_vector(4 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of popeye_bg_palette_rgb is + type rom is array(0 to 31) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"FF",X"F5",X"D5",X"FE",X"EA",X"D8",X"FA",X"A4",X"BF",X"B7",X"64",X"51",X"AB",X"AC",X"48",X"B2", + X"FF",X"76",X"FA",X"BF",X"00",X"F0",X"FE",X"E9",X"FF",X"F4",X"48",X"D0",X"FC",X"F8",X"12",X"00"); +begin +process(clk) +begin + if rising_edge(clk) then + data <= rom_data(to_integer(unsigned(addr))); + end if; +end process; +end architecture; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_ch_bits.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_ch_bits.vhd new file mode 100644 index 00000000..bc48faaf --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_ch_bits.vhd @@ -0,0 +1,278 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity popeye_ch_bits is +port ( + clk : in std_logic; + addr : in std_logic_vector(11 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of popeye_ch_bits is + type rom is array(0 to 4095) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"1C",X"32",X"63",X"63",X"63",X"26",X"1C",X"00",X"18",X"1C",X"18",X"18",X"18",X"18",X"7E", + X"00",X"3E",X"63",X"70",X"3C",X"1E",X"07",X"7F",X"00",X"7E",X"30",X"18",X"3C",X"60",X"63",X"3E", + X"00",X"38",X"3C",X"36",X"33",X"7F",X"30",X"30",X"00",X"3F",X"03",X"3F",X"60",X"60",X"63",X"3E", + X"00",X"3C",X"06",X"03",X"3F",X"63",X"63",X"3E",X"00",X"7F",X"63",X"30",X"18",X"0C",X"0C",X"0C", + X"00",X"1E",X"23",X"27",X"1C",X"7B",X"61",X"3E",X"00",X"3E",X"63",X"63",X"7E",X"60",X"30",X"1E", + X"00",X"1C",X"36",X"63",X"63",X"7F",X"63",X"63",X"00",X"3F",X"63",X"63",X"3F",X"63",X"63",X"3F", + X"00",X"3C",X"66",X"03",X"03",X"03",X"66",X"3C",X"00",X"1F",X"33",X"63",X"63",X"63",X"33",X"1F", + X"00",X"7E",X"06",X"06",X"3E",X"06",X"06",X"7E",X"00",X"7F",X"03",X"03",X"3F",X"03",X"03",X"03", + X"00",X"7C",X"06",X"03",X"73",X"63",X"66",X"7C",X"00",X"63",X"63",X"63",X"7F",X"63",X"63",X"63", + X"00",X"7E",X"18",X"18",X"18",X"18",X"18",X"7E",X"00",X"60",X"60",X"60",X"60",X"60",X"63",X"3E", + X"00",X"63",X"33",X"1B",X"0F",X"1F",X"3B",X"73",X"00",X"06",X"06",X"06",X"06",X"06",X"06",X"7E", + X"00",X"63",X"77",X"7F",X"7F",X"6B",X"63",X"63",X"00",X"63",X"67",X"6F",X"7F",X"7B",X"73",X"63", + X"00",X"3E",X"63",X"63",X"63",X"63",X"63",X"3E",X"00",X"3F",X"63",X"63",X"63",X"3F",X"03",X"03", + X"00",X"3E",X"63",X"63",X"63",X"7B",X"33",X"5E",X"00",X"3F",X"63",X"63",X"73",X"1F",X"3B",X"73", + X"00",X"1E",X"33",X"03",X"3E",X"60",X"63",X"3E",X"00",X"7E",X"18",X"18",X"18",X"18",X"18",X"18", + X"00",X"63",X"63",X"63",X"63",X"63",X"63",X"3E",X"00",X"63",X"63",X"63",X"77",X"3E",X"1C",X"08", + X"00",X"63",X"63",X"6B",X"7F",X"7F",X"36",X"22",X"00",X"63",X"77",X"3E",X"1C",X"3E",X"77",X"63", + X"00",X"66",X"66",X"24",X"3C",X"18",X"18",X"18",X"00",X"7F",X"70",X"38",X"1C",X"0E",X"07",X"7F", + X"00",X"40",X"20",X"10",X"08",X"04",X"02",X"01",X"00",X"00",X"00",X"18",X"18",X"10",X"10",X"08", + X"00",X"00",X"00",X"00",X"00",X"18",X"18",X"00",X"00",X"08",X"49",X"2A",X"1C",X"2A",X"49",X"08", + X"00",X"55",X"2A",X"55",X"2A",X"55",X"2A",X"55",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"3C",X"00",X"3C",X"00",X"00",X"00",X"36",X"36",X"7F",X"36",X"36",X"7F",X"36", + X"00",X"1C",X"22",X"22",X"18",X"08",X"00",X"08",X"00",X"00",X"18",X"18",X"00",X"00",X"18",X"18", + X"00",X"60",X"70",X"38",X"18",X"04",X"01",X"03",X"00",X"08",X"18",X"08",X"04",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"0C",X"00",X"24",X"12",X"36",X"36",X"00",X"00",X"00", + X"00",X"6C",X"6C",X"48",X"24",X"00",X"00",X"00",X"00",X"00",X"4C",X"4C",X"4C",X"4C",X"7C",X"38", + X"00",X"00",X"0F",X"1B",X"1B",X"1B",X"0F",X"03",X"00",X"00",X"00",X"DE",X"96",X"9E",X"86",X"86", + X"00",X"00",X"00",X"3B",X"09",X"39",X"21",X"B9",X"00",X"3C",X"42",X"99",X"85",X"99",X"42",X"3C", + X"00",X"00",X"DB",X"A8",X"88",X"00",X"00",X"00",X"00",X"00",X"E0",X"80",X"80",X"00",X"00",X"00", + X"00",X"00",X"78",X"08",X"38",X"60",X"60",X"38",X"00",X"00",X"0C",X"1A",X"1A",X"1A",X"1A",X"0C", + X"00",X"00",X"8C",X"4E",X"4C",X"4C",X"4C",X"9E",X"00",X"00",X"31",X"6B",X"6B",X"6B",X"6B",X"31", + X"00",X"00",X"8C",X"5A",X"58",X"4C",X"46",X"9E",X"00",X"00",X"9E",X"48",X"4C",X"58",X"58",X"8E", + X"00",X"00",X"9E",X"42",X"4E",X"58",X"58",X"8E",X"00",X"00",X"9C",X"42",X"4E",X"5A",X"5A",X"8C", + X"00",X"00",X"19",X"B5",X"B5",X"B5",X"B5",X"19",X"00",X"00",X"63",X"D6",X"D6",X"D6",X"D6",X"63", + X"FE",X"FF",X"A8",X"AD",X"8D",X"AD",X"FF",X"FE",X"7F",X"FF",X"A8",X"AA",X"AC",X"8A",X"FF",X"7F", + X"00",X"00",X"00",X"00",X"04",X"0C",X"1C",X"3C",X"3C",X"1C",X"0C",X"04",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"3B",X"7D",X"00",X"00",X"00",X"00",X"00",X"00",X"EF",X"F7", + X"FF",X"FF",X"FF",X"5F",X"3F",X"0F",X"00",X"00",X"FB",X"FF",X"FF",X"FF",X"BD",X"7D",X"FB",X"07", + X"00",X"00",X"00",X"00",X"00",X"00",X"EE",X"DF",X"FF",X"FF",X"FF",X"BE",X"DC",X"00",X"00",X"00", + X"00",X"00",X"00",X"FF",X"FF",X"BF",X"FF",X"FF",X"00",X"00",X"00",X"03",X"FF",X"BF",X"FB",X"FF", + X"00",X"00",X"00",X"00",X"20",X"30",X"38",X"3C",X"3C",X"38",X"30",X"20",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"03",X"03",X"03",X"03",X"03",X"03",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"E0",X"F8",X"E6",X"80",X"E0",X"F8",X"E6",X"67",X"1F",X"07",X"01", + X"67",X"1F",X"07",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"E7",X"E7",X"FF", + X"FF",X"E7",X"E7",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"07",X"1F",X"67", + X"E6",X"F8",X"E0",X"80",X"00",X"00",X"00",X"00",X"01",X"07",X"1F",X"67",X"E6",X"F8",X"E0",X"80", + X"00",X"00",X"00",X"00",X"00",X"36",X"36",X"20",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"E0",X"10",X"00",X"E0",X"60",X"60",X"E0",X"00",X"FF",X"00",X"00",X"DC",X"D5",X"D5",X"D4", + X"00",X"FF",X"00",X"00",X"B9",X"9A",X"BA",X"19",X"00",X"7F",X"80",X"00",X"75",X"35",X"75",X"33", + X"60",X"60",X"00",X"00",X"00",X"00",X"00",X"00",X"DC",X"DC",X"00",X"00",X"00",X"00",X"00",X"00", + X"38",X"38",X"00",X"00",X"00",X"00",X"00",X"00",X"73",X"73",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"1C",X"B6",X"9A",X"92",X"12",X"9E",X"0C",X"00",X"01",X"02",X"12",X"82",X"D1",X"B2",X"8C", + X"00",X"00",X"00",X"30",X"4A",X"3E",X"09",X"70",X"00",X"00",X"00",X"90",X"88",X"DC",X"FE",X"25", + X"00",X"10",X"18",X"4C",X"EE",X"FF",X"FF",X"C9",X"5A",X"32",X"00",X"00",X"00",X"00",X"00",X"00", + X"5B",X"33",X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"80",X"40",X"40",X"20",X"20",X"00",X"00",X"00",X"03",X"04",X"04",X"08",X"08", + X"10",X"10",X"08",X"08",X"04",X"84",X"82",X"42",X"10",X"10",X"20",X"20",X"41",X"42",X"82",X"84", + X"00",X"00",X"80",X"80",X"40",X"40",X"20",X"20",X"41",X"21",X"20",X"10",X"10",X"08",X"08",X"04", + X"04",X"08",X"08",X"10",X"10",X"20",X"20",X"00",X"01",X"01",X"02",X"02",X"00",X"00",X"00",X"00", + X"10",X"10",X"08",X"08",X"04",X"04",X"02",X"03",X"00",X"00",X"00",X"80",X"F0",X"FC",X"FE",X"FF", + X"00",X"80",X"C0",X"EF",X"9F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"C1",X"0F", + X"01",X"07",X"F7",X"CF",X"3F",X"FF",X"07",X"F0",X"00",X"00",X"3F",X"FF",X"FF",X"F2",X"FC",X"FF", + X"00",X"00",X"00",X"01",X"03",X"07",X"07",X"03",X"FF",X"01",X"01",X"02",X"02",X"04",X"08",X"08", + X"FF",X"00",X"00",X"00",X"00",X"FC",X"04",X"08",X"FF",X"00",X"00",X"00",X"00",X"FF",X"00",X"00", + X"C0",X"C0",X"E0",X"E0",X"E0",X"C0",X"80",X"00",X"FF",X"FF",X"FF",X"FF",X"FE",X"FD",X"FD",X"FC", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"1F",X"1F",X"0F",X"0F",X"0F",X"07", + X"F8",X"00",X"00",X"00",X"00",X"FF",X"80",X"40",X"FF",X"80",X"80",X"40",X"40",X"20",X"10",X"10", + X"10",X"20",X"20",X"40",X"80",X"80",X"00",X"00",X"08",X"10",X"20",X"20",X"00",X"00",X"01",X"02", + X"40",X"20",X"10",X"10",X"08",X"04",X"84",X"42",X"08",X"04",X"04",X"02",X"01",X"01",X"00",X"00", + X"02",X"04",X"08",X"08",X"10",X"20",X"20",X"40",X"00",X"00",X"80",X"C0",X"E0",X"E0",X"F0",X"F0", + X"00",X"00",X"1F",X"3F",X"7F",X"FF",X"FF",X"FF",X"E0",X"F0",X"E0",X"D0",X"D0",X"D0",X"C9",X"CF", + X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"F9",X"F9",X"F9",X"FB",X"FB",X"FB",X"FF",X"FF", + X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"40",X"20",X"10",X"10",X"08",X"04",X"04",X"00", + X"00",X"00",X"E0",X"F0",X"F8",X"F8",X"FC",X"FC",X"F0",X"F0",X"F7",X"EF",X"EF",X"EF",X"CF",X"DF", + X"DF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"3F", + X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FC",X"FC",X"9F",X"9F",X"3F",X"7F",X"FF",X"FF",X"FF",X"EF", + X"FF",X"FF",X"FF",X"FE",X"FC",X"F9",X"E3",X"0F",X"FF",X"1F",X"EF",X"FF",X"FF",X"FF",X"7F",X"80", + X"FF",X"FE",X"F8",X"03",X"83",X"FD",X"FE",X"FF",X"FF",X"FF",X"01",X"FC",X"FF",X"FF",X"CF",X"83", + X"FF",X"FF",X"FC",X"F8",X"F9",X"F9",X"FD",X"FF",X"0F",X"E7",X"FB",X"FD",X"3F",X"CF",X"E7",X"F3", + X"00",X"03",X"07",X"0F",X"0E",X"0F",X"0F",X"0F",X"F8",X"F8",X"F0",X"E0",X"C0",X"00",X"00",X"00", + X"F7",X"FB",X"FB",X"FB",X"FB",X"FB",X"F8",X"F8",X"E3",X"87",X"0F",X"7F",X"FF",X"FF",X"FF",X"FF", + X"3F",X"07",X"00",X"00",X"03",X"FF",X"FF",X"FF",X"80",X"C0",X"C0",X"E0",X"F8",X"FF",X"7F",X"BF", + X"FF",X"FF",X"DF",X"BF",X"7F",X"7F",X"FF",X"FF",X"F3",X"F3",X"E3",X"E7",X"FF",X"FF",X"7E",X"1C", + X"07",X"07",X"07",X"03",X"03",X"01",X"00",X"00",X"F8",X"F0",X"F0",X"F0",X"E0",X"E0",X"C0",X"80", + X"FF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"C3",X"F0",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"7F",X"7F",X"7F",X"3F",X"1F",X"0F",X"37",X"8F",X"77",X"FB",X"FF",X"FF",X"7F",X"1F",X"80", + X"FF",X"7F",X"1E",X"CE",X"E6",X"E6",X"F3",X"F2",X"F1",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"F0",X"F1",X"F3",X"F3",X"E3",X"E3",X"E7",X"C7",X"CF",X"8F",X"9F",X"3F",X"7F",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"B8",X"C3",X"FF",X"FF",X"10",X"10",X"10",X"08",X"08",X"08",X"08",X"08", + X"00",X"00",X"00",X"10",X"10",X"10",X"10",X"10",X"08",X"04",X"04",X"84",X"84",X"84",X"84",X"42", + X"01",X"01",X"01",X"00",X"00",X"00",X"C0",X"30",X"FF",X"FE",X"FC",X"F8",X"E0",X"80",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"80",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F", + X"FF",X"FF",X"3F",X"0F",X"87",X"E3",X"F8",X"FE",X"33",X"38",X"3C",X"1E",X"1F",X"0F",X"07",X"01", + X"10",X"21",X"21",X"21",X"21",X"21",X"22",X"42",X"42",X"42",X"C2",X"02",X"02",X"01",X"01",X"01", + X"0C",X"03",X"00",X"00",X"80",X"60",X"18",X"06",X"00",X"60",X"18",X"06",X"01",X"00",X"00",X"00", + X"00",X"00",X"18",X"60",X"80",X"00",X"00",X"00",X"30",X"C0",X"00",X"00",X"01",X"06",X"18",X"60", + X"42",X"42",X"43",X"40",X"40",X"80",X"80",X"80",X"81",X"61",X"19",X"06",X"00",X"00",X"00",X"00", + X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"81",X"86",X"98",X"60",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"F8",X"BC",X"DC",X"BC",X"DC", + X"03",X"07",X"1C",X"3F",X"3F",X"7F",X"FF",X"FD",X"B8",X"70",X"C0",X"E0",X"A0",X"A0",X"90",X"40", + X"7D",X"BB",X"C7",X"FF",X"7D",X"1C",X"06",X"02",X"FF",X"9F",X"0F",X"07",X"07",X"07",X"0F",X"9F", + X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FF",X"FF",X"F8",X"F8",X"FC",X"FC",X"FC",X"FC",X"FE",X"FE", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FB",X"7F",X"7F",X"7F",X"7F",X"3F",X"1F",X"0F",X"03", + X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"7E",X"3C",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00", + X"00",X"C0",X"F0",X"F8",X"FC",X"FE",X"FE",X"FC",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"03",X"07",X"0F",X"1F",X"3F",X"3F",X"FC",X"FC",X"FC",X"FC",X"FC",X"7C",X"3C",X"3C", + X"FF",X"FF",X"FF",X"E1",X"C0",X"80",X"00",X"00",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF", + X"3C",X"3E",X"3E",X"7E",X"FE",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"07", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"0B",X"73",X"83",X"03",X"03",X"03",X"03",X"03", + X"00",X"00",X"03",X"FC",X"00",X"00",X"00",X"00",X"40",X"38",X"07",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"B8",X"8C",X"9C",X"A0",X"AC",X"BC",X"00",X"00",X"73",X"59",X"5B",X"79",X"7B",X"5B", + X"00",X"00",X"01",X"07",X"FC",X"FF",X"FF",X"FF",X"23",X"77",X"DE",X"3E",X"FC",X"FF",X"FF",X"FF", + X"14",X"BE",X"F7",X"73",X"39",X"FF",X"FF",X"FF",X"00",X"00",X"80",X"E0",X"BF",X"FF",X"FF",X"FF", + X"6E",X"FF",X"FF",X"5D",X"33",X"3E",X"77",X"77",X"E6",X"EE",X"CC",X"9C",X"3C",X"FF",X"FF",X"FF", + X"76",X"FF",X"FF",X"6A",X"9C",X"FC",X"EE",X"F6",X"F3",X"7B",X"79",X"7C",X"37",X"FF",X"FF",X"FF", + X"76",X"FF",X"FF",X"F7",X"6D",X"0E",X"0B",X"0B",X"1B",X"1B",X"1B",X"3B",X"37",X"37",X"77",X"77", + X"7C",X"FE",X"FF",X"FF",X"AE",X"54",X"D0",X"70",X"F8",X"F8",X"E8",X"EC",X"EC",X"F4",X"F6",X"F6", + X"00",X"00",X"09",X"0F",X"0F",X"1F",X"1B",X"1B",X"00",X"00",X"90",X"F0",X"F0",X"F8",X"E8",X"E8", + X"00",X"00",X"09",X"0D",X"0F",X"1F",X"3F",X"77",X"00",X"00",X"10",X"10",X"B0",X"F8",X"FC",X"F6", + X"00",X"00",X"00",X"08",X"1C",X"3F",X"FB",X"FF",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"22",X"77",X"7F",X"7F",X"7F",X"3E",X"1C",X"08",X"00",X"00",X"78",X"20",X"30",X"60",X"60",X"38", + X"00",X"00",X"2C",X"AC",X"BC",X"BC",X"AC",X"AC",X"00",X"00",X"E7",X"95",X"15",X"D7",X"97",X"F5", + X"3F",X"FE",X"FC",X"F8",X"F0",X"E0",X"E0",X"E0",X"00",X"00",X"03",X"07",X"0F",X"0F",X"1F",X"3F", + X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"3F",X"3F",X"3E",X"3E",X"3E",X"3F",X"3F",X"3F", + X"00",X"00",X"00",X"C0",X"FC",X"FF",X"F8",X"C0",X"00",X"00",X"FE",X"FF",X"FF",X"FF",X"FF",X"3F", + X"3E",X"1E",X"0F",X"0F",X"07",X"03",X"01",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00"); +begin +process(clk) +begin + if rising_edge(clk) then + data <= rom_data(to_integer(unsigned(addr))); + end if; +end process; +end architecture; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_ch_palette_rgb.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_ch_palette_rgb.vhd new file mode 100644 index 00000000..ec7a8c28 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_ch_palette_rgb.vhd @@ -0,0 +1,24 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity popeye_ch_palette_rgb is +port ( + clk : in std_logic; + addr : in std_logic_vector(4 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of popeye_ch_palette_rgb is + type rom is array(0 to 31) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"87",X"0F",X"09",X"5B",X"F8",X"2F",X"D0",X"52",X"00",X"C9",X"C0",X"8C",X"00",X"50",X"2F",X"FF", + X"87",X"0F",X"09",X"5B",X"F8",X"2F",X"D0",X"52",X"00",X"C9",X"C0",X"8C",X"00",X"50",X"2F",X"FF"); +begin +process(clk) +begin + if rising_edge(clk) then + data <= rom_data(to_integer(unsigned(addr))); + end if; +end process; +end architecture; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_1.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_1.vhd new file mode 100644 index 00000000..de6c89cd --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_1.vhd @@ -0,0 +1,534 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity popeye_sp_bits_1 is +port ( + clk : in std_logic; + addr : in std_logic_vector(12 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of popeye_sp_bits_1 is + type rom is array(0 to 8191) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"00",X"00",X"00",X"C0",X"00",X"E1",X"00",X"F1",X"00",X"F8",X"00",X"FC",X"00",X"F8",X"00",X"F0", + X"0F",X"00",X"07",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0E",X"00",X"1F",X"00",X"1E", + X"00",X"18",X"00",X"30",X"00",X"19",X"00",X"1B",X"00",X"3E",X"00",X"10",X"00",X"00",X"00",X"00", + X"F0",X"E0",X"E0",X"3F",X"7F",X"7F",X"1F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"C0",X"C0",X"80",X"80",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"03",X"07",X"07",X"07",X"87",X"C7",X"C7",X"E2",X"E0",X"E0",X"E0", + X"E0",X"C0",X"F0",X"38",X"18",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"14",X"1E",X"3F",X"1F",X"0F",X"0F",X"0F",X"0E", + X"0C",X"1C",X"18",X"38",X"30",X"70",X"60",X"60",X"E0",X"E0",X"70",X"70",X"20",X"20",X"00",X"00", + X"00",X"00",X"00",X"00",X"17",X"3B",X"0F",X"0F",X"01",X"00",X"19",X"3E",X"3F",X"1F",X"0C",X"00", + X"01",X"01",X"03",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"03",X"07",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"33",X"37",X"3F",X"3F",X"3F",X"FB",X"F1",X"F0", + X"B0",X"B0",X"B0",X"A0",X"E0",X"E0",X"F0",X"F8",X"FE",X"FE",X"5E",X"5E",X"DF",X"7F",X"FF",X"FF", + X"BF",X"7F",X"6E",X"DC",X"C0",X"00",X"00",X"FF",X"FF",X"1F",X"1F",X"3F",X"3F",X"7F",X"3F",X"1F", + X"0F",X"0F",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"90", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"0E",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"06",X"07",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00", + X"00",X"80",X"C0",X"00",X"20",X"70",X"78",X"FC",X"FF",X"FF",X"F8",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"01", + X"0D",X"0C",X"86",X"81",X"C0",X"40",X"00",X"07",X"23",X"1F",X"02",X"04",X"08",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"07",X"07", + X"03",X"01",X"00",X"00",X"00",X"00",X"04",X"07",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"7C",X"FF",X"FF",X"F9",X"E0",X"00",X"00",X"00",X"40",X"40",X"40",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"EF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3F",X"BF",X"9F",X"8F",X"DE", + X"BE",X"7F",X"7F",X"1F",X"7F",X"FF",X"FF",X"9F",X"7B",X"FB",X"E7",X"FF",X"7E",X"00",X"03",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"03",X"03",X"01",X"01",X"03",X"03",X"03",X"03",X"03",X"03",X"03",X"03", + X"03",X"03",X"01",X"0F",X"1F",X"3F",X"3F",X"7F",X"7F",X"7F",X"7C",X"7C",X"7C",X"7C",X"7C",X"7C", + X"38",X"70",X"FE",X"F1",X"FC",X"60",X"78",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"1F",X"DF",X"8F",X"CF",X"EF", + X"FF",X"FF",X"87",X"03",X"01",X"01",X"01",X"01",X"C1",X"39",X"7D",X"FF",X"D4",X"34",X"38",X"1C", + X"03",X"03",X"01",X"01",X"01",X"00",X"00",X"00",X"03",X"07",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F", + X"07",X"07",X"07",X"0F",X"1E",X"1F",X"1E",X"1F",X"0D",X"0E",X"03",X"00",X"00",X"00",X"00",X"00", + X"C0",X"60",X"20",X"80",X"E0",X"F0",X"F8",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F0",X"C0",X"80",X"00",X"00", + X"FF",X"0F",X"7F",X"FF",X"FF",X"FF",X"F8",X"F0",X"E1",X"E3",X"E3",X"E3",X"E3",X"E3",X"E3",X"E3", + X"80",X"00",X"23",X"63",X"E3",X"E3",X"E1",X"71",X"11",X"01",X"F1",X"F0",X"F0",X"F8",X"F0",X"E0", + X"C6",X"8F",X"9F",X"1F",X"3F",X"3F",X"3E",X"3E",X"1C",X"80",X"C1",X"FF",X"FF",X"FF",X"3F",X"07", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"07",X"07",X"07", + X"0F",X"0F",X"0F",X"0F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"0F",X"0F", + X"0F",X"07",X"07",X"07",X"03",X"03",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"04",X"00",X"10",X"00",X"00",X"20",X"00",X"00",X"20",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"50",X"04", + X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"20",X"00",X"08",X"00",X"00",X"00",X"00",X"01", + X"00",X"00",X"04",X"04",X"04",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"08",X"08",X"00",X"00",X"10",X"20",X"40",X"40",X"80",X"80",X"80",X"80",X"00",X"00", + X"00",X"00",X"30",X"30",X"30",X"30",X"30",X"F0",X"F0",X"30",X"30",X"30",X"F0",X"F0",X"00",X"00", + X"00",X"01",X"03",X"07",X"07",X"07",X"07",X"06",X"06",X"06",X"FE",X"FE",X"06",X"06",X"FE",X"FE", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"03",X"07",X"0F",X"1F",X"3F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"7C",X"38", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7F",X"7F",X"60",X"60",X"60",X"20",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7F",X"7F",X"7F",X"3F",X"1F",X"7F",X"7F",X"7F",X"3F",X"1F",X"7F",X"7F",X"7F",X"3F",X"1F",X"00", + X"78",X"7C",X"60",X"60",X"60",X"61",X"61",X"60",X"60",X"60",X"60",X"60",X"60",X"20",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"1F",X"3F",X"7F",X"7F",X"7F",X"7C",X"3C",X"1E",X"0F",X"07",X"00", + X"00",X"00",X"0C",X"0C",X"00",X"00",X"18",X"31",X"73",X"63",X"E3",X"E3",X"C3",X"C1",X"00",X"00", + X"00",X"00",X"0F",X"0F",X"03",X"03",X"03",X"0F",X"0F",X"03",X"03",X"03",X"0F",X"0F",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FC",X"F8",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"E3",X"E3",X"F3",X"FF",X"FF",X"FE", + X"FF",X"FF",X"FF",X"E3",X"C0",X"E0",X"60",X"70",X"78",X"3C",X"3E",X"1F",X"07",X"01",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"F8",X"F0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00", + X"00",X"00",X"78",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"CC",X"CC",X"CF",X"CF",X"0F",X"0F", + X"CF",X"CF",X"0C",X"1C",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"7E",X"7E",X"7E",X"7E",X"70",X"60",X"66",X"66",X"60",X"70",X"FF",X"FF",X"FF",X"FF",X"FE",X"F0", + X"00",X"C0",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"1F",X"0F",X"CF",X"CF",X"CF",X"CF", + X"CF",X"CF",X"0C",X"1C",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"3F",X"3F",X"3F",X"3F",X"38",X"30",X"33",X"33",X"30",X"38",X"FF",X"FF",X"BF",X"0F",X"01",X"00", + X"00",X"F0",X"F8",X"7D",X"DE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"0F",X"0F",X"CF",X"CF",X"0C",X"0C",X"CC",X"CC",X"0C",X"0C",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F", + X"FF",X"07",X"00",X"00",X"00",X"01",X"03",X"07",X"0F",X"1F",X"3F",X"7F",X"7F",X"7E",X"BC",X"F8", + X"F8",X"F8",X"F8",X"F8",X"FC",X"FE",X"FF",X"FF",X"7F",X"7F",X"7F",X"3F",X"1F",X"1F",X"0F",X"17", + X"1E",X"3E",X"3F",X"3F",X"1E",X"1E",X"1E",X"1E",X"1E",X"0E",X"0F",X"0F",X"07",X"00",X"00",X"00", + X"FF",X"07",X"00",X"00",X"00",X"01",X"03",X"07",X"0F",X"1F",X"3F",X"7F",X"7E",X"7C",X"BC",X"FC", + X"FC",X"FC",X"FC",X"FC",X"E0",X"E0",X"FC",X"FC",X"60",X"60",X"7F",X"3F",X"1F",X"1F",X"0F",X"17", + X"00",X"E0",X"00",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"33",X"00",X"3F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"3F",X"3F",X"3F",X"3F",X"3F",X"3F",X"3F",X"3F",X"3F",X"3F",X"1F",X"1F",X"0F",X"01",X"00", + X"20",X"99",X"83",X"C5",X"C1",X"6C",X"62",X"62",X"61",X"01",X"00",X"05",X"4D",X"26",X"16",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"07",X"0F",X"07",X"0F",X"07",X"00", + X"00",X"01",X"03",X"05",X"0E",X"03",X"01",X"00",X"00",X"00",X"00",X"05",X"4D",X"26",X"16",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"A0",X"A0",X"A8",X"48",X"50",X"10",X"00",X"08", + X"10",X"10",X"20",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"40",X"40",X"40",X"40",X"40",X"48",X"09",X"29",X"20",X"04",X"04",X"01",X"E3",X"E7",X"37", + X"1D",X"1D",X"0F",X"0F",X"06",X"00",X"04",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"81",X"01",X"51",X"42",X"92",X"22",X"44",X"05", + X"09",X"08",X"90",X"50",X"20",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"01",X"03",X"07",X"E7",X"FD",X"3D",X"0F",X"4F", + X"06",X"22",X"04",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"C0", + X"00",X"C0",X"00",X"80",X"78",X"00",X"30",X"0F",X"00",X"80",X"7F",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"01",X"03",X"07",X"E7",X"FD",X"3D",X"0F",X"0F", + X"06",X"00",X"00",X"00",X"00",X"00",X"01",X"02",X"1C",X"20",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"47",X"C0",X"F8",X"77",X"3F",X"01",X"02",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00", + X"80",X"80",X"C0",X"60",X"60",X"70",X"30",X"20",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"10", + X"10",X"08",X"00",X"04",X"84",X"89",X"92",X"84",X"80",X"88",X"82",X"80",X"80",X"80",X"80",X"40", + X"30",X"78",X"F8",X"F8",X"F1",X"69",X"03",X"07",X"1F",X"FF",X"EB",X"D7",X"0B",X"1F",X"1D",X"09", + X"01",X"01",X"81",X"01",X"81",X"81",X"81",X"81",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"3F",X"3F",X"1C",X"E0",X"E0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"18",X"38",X"F8",X"D8",X"D9",X"DC",X"8C",X"8F",X"1F",X"3F", + X"1E",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"E0",X"E0",X"E0",X"E0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"03",X"03",X"01",X"00", + X"00",X"00",X"00",X"00",X"17",X"3B",X"0F",X"0F",X"01",X"00",X"19",X"3E",X"3F",X"1F",X"0C",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"3C",X"18",X"18",X"3C",X"FF",X"FF",X"FF",X"FF", + X"01",X"01",X"01",X"03",X"02",X"02",X"02",X"01",X"06",X"04",X"08",X"00",X"00",X"01",X"1D",X"1C", + X"1F",X"4F",X"76",X"7C",X"7E",X"63",X"07",X"1F",X"1F",X"1F",X"1E",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"3C",X"18",X"18",X"3C",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C4",X"F0",X"F8",X"98",X"98",X"30",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C0",X"F0",X"F8",X"FC",X"FC",X"F8",X"78",X"90",X"E1",X"7B",X"BD",X"DC",X"EE",X"F2",X"FD",X"FE", + X"F8",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"BF",X"DF", + X"FF",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"FF",X"00",X"00",X"00",X"00", + X"00",X"FF",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"0F",X"38",X"60",X"7E",X"1F",X"03",X"00",X"40",X"60",X"10",X"0E",X"01",X"40",X"40",X"20",X"10", + X"0E",X"01",X"40",X"40",X"60",X"38",X"1F",X"07",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"EF",X"F7",X"FB",X"FB",X"FD",X"7D",X"DE",X"3E",X"2C",X"1C",X"08",X"18",X"58",X"68",X"EC",X"AC", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"20",X"F0",X"F0",X"E0",X"80",X"80", + X"00",X"78",X"7D",X"5E",X"5F",X"6F",X"EF",X"EF",X"E7",X"F3",X"F3",X"F3",X"F3",X"F9",X"F9",X"F9", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"23",X"47",X"47",X"13",X"21",X"41", + X"1F",X"0F",X"0F",X"0F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"0F",X"1F", + X"1F",X"1F",X"1F",X"FF",X"FF",X"FF",X"FF",X"EF",X"77",X"F7",X"77",X"17",X"37",X"77",X"37",X"3B", + X"00",X"00",X"80",X"CF",X"DF",X"EF",X"EF",X"EF",X"E7",X"F3",X"F3",X"F3",X"F3",X"F9",X"F9",X"F9", + X"F9",X"F9",X"F9",X"F9",X"F3",X"F3",X"F7",X"E7",X"EF",X"DF",X"DF",X"BF",X"3F",X"7E",X"F8",X"C0", + X"00",X"00",X"F0",X"FC",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"6F",X"17",X"37",X"77",X"37",X"3B", + X"7B",X"7B",X"F7",X"B7",X"6F",X"EF",X"9F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"1F",X"0F",X"03", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"03",X"03",X"03",X"03",X"03", + X"1F",X"1F",X"3F",X"7F",X"FF",X"E7",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"FF",X"7F",X"3F", + X"3E",X"3E",X"1D",X"1F",X"17",X"09",X"00",X"00",X"02",X"03",X"01",X"01",X"00",X"00",X"00",X"00", + X"07",X"83",X"86",X"06",X"05",X"07",X"87",X"C5",X"43",X"41",X"00",X"80",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"C7",X"8F",X"7F",X"FF",X"FF",X"FF",X"FC",X"BE",X"7D",X"7F",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"F0", + X"98",X"CC",X"EC",X"F6",X"FA",X"FD",X"7E",X"BE",X"DF",X"DF",X"DF",X"FF",X"FF",X"FB",X"FD",X"FD", + X"FE",X"FE",X"FE",X"FE",X"FC",X"F8",X"C0",X"80",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"E0", + X"F0",X"F0",X"F8",X"F8",X"F8",X"F8",X"F0",X"F0",X"E0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"C0",X"F0",X"1C",X"E7",X"F9",X"FE",X"FF",X"FF", + X"1F",X"CF",X"E7",X"EF",X"FD",X"FE",X"FF",X"7F",X"FF",X"DF",X"EF",X"F7",X"FB",X"FD",X"FE",X"FE", + X"FF",X"FF",X"BF",X"BF",X"5F",X"5F",X"DF",X"BF",X"7E",X"7C",X"F2",X"F3",X"EB",X"D7",X"F7",X"CF", + X"BF",X"FF",X"FF",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"00",X"00",X"00", + X"00",X"04",X"04",X"04",X"04",X"84",X"70",X"00",X"FF",X"FF",X"00",X"7F",X"FF",X"FF",X"FF",X"9F", + X"7C",X"FF",X"FF",X"FF",X"FF",X"FF",X"E0",X"DE",X"FF",X"FF",X"FF",X"7F",X"3F",X"FF",X"02",X"FE", + X"FD",X"FD",X"FD",X"FD",X"FC",X"BC",X"7C",X"7D",X"3F",X"AF",X"9E",X"9E",X"9D",X"1B",X"0F",X"0F", + X"07",X"01",X"00",X"00",X"30",X"39",X"3F",X"1F",X"FF",X"FF",X"3F",X"FF",X"FF",X"EE",X"9C",X"0C", + X"98",X"B8",X"B0",X"F0",X"FE",X"FE",X"FC",X"F8",X"F0",X"F8",X"F8",X"F9",X"FB",X"FB",X"F9",X"F9", + X"F8",X"F3",X"F7",X"FB",X"FB",X"FB",X"FB",X"F7",X"EE",X"DE",X"BC",X"FC",X"FC",X"FF",X"FF",X"FE", + X"FF",X"FF",X"7F",X"B6",X"01",X"39",X"4C",X"46",X"63",X"11",X"08",X"04",X"63",X"F3",X"70",X"A0", + X"7D",X"5A",X"36",X"EC",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"01",X"01",X"00",X"00", + X"01",X"05",X"05",X"07",X"07",X"07",X"03",X"03",X"03",X"03",X"07",X"07",X"07",X"0F",X"0F",X"0F", + X"0F",X"0F",X"0F",X"1F",X"1F",X"1F",X"1F",X"1F",X"0F",X"07",X"07",X"07",X"03",X"03",X"01",X"01", + X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"06",X"0D",X"0B",X"07",X"05",X"04", + X"04",X"06",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"F8",X"F7",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"BF",X"FF",X"DF",X"BF",X"FB",X"ED",X"0F", + X"CF",X"EF",X"EF",X"FF",X"7F",X"BF",X"FF",X"FF",X"F3",X"C0",X"80",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"04",X"06",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"03",X"03",X"03", + X"3F",X"3F",X"1F",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"07",X"4F",X"FF",X"FF",X"7F",X"3B", + X"CB",X"FD",X"76",X"0F",X"3F",X"1C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"C0",X"F0",X"FC",X"FE",X"FC",X"F0",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"0F", + X"00",X"00",X"00",X"00",X"00",X"01",X"07",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"CF", + X"00",X"00",X"00",X"01",X"07",X"0C",X"08",X"00",X"10",X"00",X"00",X"00",X"00",X"00",X"00",X"01", + X"1F",X"1F",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"C0",X"C0",X"C0", + X"00",X"80",X"80",X"00",X"00",X"00",X"80",X"C0",X"40",X"40",X"00",X"80",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"02",X"02",X"02",X"01",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FE",X"FE",X"FF",X"07",X"F1",X"FC",X"FE",X"FE",X"FE",X"0F",X"01",X"00",X"00",X"00",X"F8",X"07", + X"00",X"00",X"00",X"00",X"F8",X"07",X"00",X"00",X"00",X"00",X"FC",X"FF",X"07",X"00",X"01",X"FF", + X"7B",X"7B",X"FC",X"FF",X"EC",X"E9",X"DB",X"BC",X"7E",X"FF",X"F3",X"06",X"04",X"04",X"00",X"00", + X"01",X"02",X"04",X"04",X"00",X"00",X"01",X"06",X"04",X"00",X"00",X"01",X"07",X"06",X"03",X"00", + X"00",X"02",X"03",X"00",X"00",X"1F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"81",X"7E", + X"F3",X"F8",X"FD",X"FE",X"FF",X"FF",X"1F",X"EF",X"F7",X"F7",X"F7",X"F7",X"F3",X"E5",X"ED",X"DD", + X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"B7",X"9A",X"00",X"C0", + X"B0",X"CC",X"7C",X"00",X"C4",X"EE",X"FE",X"D4",X"A8",X"00",X"90",X"F0",X"70",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"7F",X"FE",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"1D", + X"81",X"7B",X"FF",X"FB",X"F7",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F7",X"F7",X"7B",X"7D", + X"7B",X"7B",X"FC",X"FF",X"EF",X"EF",X"DF",X"BE",X"7E",X"FE",X"FE",X"70",X"00",X"0F",X"07",X"07", + X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"0B",X"0B", + X"0B",X"0D",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"3E",X"DE",X"EE",X"72",X"BC",X"FE",X"FF",X"FF",X"FE",X"FE",X"FC",X"1C",X"F0",X"EE",X"DF",X"BF", + X"FF",X"FF",X"FF",X"FF",X"FE",X"FD",X"FD",X"FB",X"7B",X"7F",X"BF",X"BF",X"D7",X"C7",X"CF",X"87", + X"37",X"6F",X"5F",X"7F",X"7F",X"5F",X"3F",X"17",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"BB",X"77",X"F7",X"EF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"EF",X"F7",X"FB",X"FD",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"DD",X"E4",X"E0",X"00", + X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"03",X"03",X"07",X"07",X"07",X"07",X"07",X"07", + X"07",X"07",X"07",X"0F",X"0F",X"0F",X"0F",X"0F",X"1D",X"1A",X"17",X"1E",X"1D",X"0B",X"07",X"02", + X"00",X"00",X"00",X"07",X"0F",X"1F",X"7F",X"FF",X"FF",X"FF",X"7F",X"8F",X"73",X"F5",X"EA",X"FD", + X"DF",X"EF",X"FD",X"F9",X"F9",X"FF",X"FF",X"FF",X"F7",X"F3",X"F3",X"F3",X"67",X"67",X"67",X"4F", + X"CF",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"F8", + X"00",X"00",X"00",X"3E",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"7C",X"33",X"1F",X"3A",X"65", + X"DE",X"DF",X"BF",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"FF",X"DF",X"DE",X"E9",X"E3",X"F7",X"FF", + X"FF",X"FF",X"FF",X"BF",X"7F",X"3F",X"8E",X"9E",X"BE",X"1D",X"1D",X"3D",X"3D",X"7B",X"F7",X"E7", + X"36",X"35",X"6D",X"7F",X"7F",X"7F",X"7F",X"7F",X"3F",X"3F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F", + X"FF",X"FF",X"7F",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"3E",X"1F",X"1F",X"0F",X"0F",X"07",X"07", + X"07",X"07",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"01",X"01", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C0",X"60",X"70",X"70",X"B8",X"AF",X"6F",X"6F",X"6F",X"EF",X"CF",X"DF",X"DF",X"9F",X"BF",X"BE", + X"7D",X"63",X"0F",X"1F",X"03",X"09",X"09",X"04",X"04",X"04",X"04",X"04",X"04",X"08",X"08",X"30", + X"00",X"00",X"00",X"01",X"1F",X"3F",X"7F",X"7F",X"00",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"C7",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FD",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"CF",X"F1",X"FF",X"F5",X"F8",X"A3",X"C5",X"88", + X"08",X"1E",X"23",X"20",X"00",X"11",X"3B",X"3F",X"13",X"0A",X"04",X"06",X"03",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"19", + X"1F",X"1F",X"0F",X"1F",X"3F",X"3F",X"3F",X"3F",X"3F",X"3F",X"1F",X"0F",X"FF",X"FF",X"3F",X"0F", + X"1F",X"3B",X"73",X"63",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"7F",X"FF",X"FE",X"FC",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"0F", + X"00",X"00",X"08",X"0C",X"00",X"00",X"0F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"7F",X"0F",X"7D", + X"00",X"00",X"00",X"00",X"00",X"08",X"01",X"07",X"0F",X"0F",X"3F",X"3F",X"3F",X"3F",X"0F",X"7D", + X"00",X"00",X"00",X"80",X"E0",X"F0",X"F0",X"F0",X"E0",X"F8",X"FE",X"FF",X"FF",X"FF",X"FF",X"0F", + X"1E",X"E6",X"F8",X"FF",X"FF",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"F3",X"E3",X"DB",X"FF",X"FF",X"FF",X"7F",X"3F",X"BF",X"DF",X"DE",X"EC",X"E0",X"E0",X"E0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"09",X"1C",X"1E",X"3F",X"3F",X"3F",X"3F",X"0F",X"7D", + X"BB",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"02",X"0A",X"02",X"00",X"08",X"1D",X"1F",X"02",X"05",X"00",X"02",X"03",X"01",X"00",X"00",X"00", + X"00",X"00",X"01",X"01",X"03",X"07",X"09",X"1E",X"16",X"1D",X"1B",X"06",X"05",X"03",X"00",X"00", + X"00",X"00",X"00",X"08",X"0C",X"00",X"C0",X"E0",X"F0",X"FC",X"FC",X"FC",X"FF",X"FF",X"FF",X"0F", + X"00",X"00",X"00",X"20",X"31",X"07",X"07",X"0F",X"3F",X"7F",X"7F",X"7F",X"3F",X"3F",X"0F",X"7D", + X"00",X"80",X"C0",X"00",X"1E",X"7F",X"FF",X"FF",X"FF",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF",X"0F", + X"1E",X"E6",X"F8",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3E",X"BE",X"DC",X"DC",X"E8",X"E0",X"E0",X"E0",X"C0", + X"00",X"00",X"10",X"38",X"78",X"FC",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"0F",X"7D", + X"BB",X"77",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FB",X"F7",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"EF",X"F7",X"7B",X"7D",X"7E",X"BF",X"BF",X"FF",X"FF",X"3F",X"0D",X"00",X"00",X"00", + X"00",X"01",X"0F",X"00",X"08",X"1D",X"1F",X"0A",X"05",X"00",X"02",X"03",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"E0",X"F0",X"F0", + X"F0",X"F8",X"FA",X"FA",X"FA",X"F6",X"77",X"77",X"76",X"7E",X"7E",X"7C",X"3C",X"38",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"F0",X"04",X"F0",X"FE",X"FF",X"FF",X"1F",X"EF",X"77",X"FB", + X"FB",X"FD",X"FD",X"FE",X"FE",X"FE",X"FF",X"FD",X"FC",X"78",X"38",X"30",X"20",X"40",X"D0",X"D8", + X"D8",X"3C",X"FE",X"CF",X"3F",X"7F",X"FF",X"FF",X"FE",X"FE",X"FC",X"F8",X"E0",X"C0",X"C0",X"80", + X"00",X"00",X"00",X"00",X"00",X"0C",X"07",X"00",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00", + X"01",X"03",X"07",X"0F",X"31",X"F1",X"F9",X"FC",X"00",X"00",X"F9",X"F1",X"F3",X"F3",X"C6",X"C7", + X"C7",X"C0",X"E0",X"E0",X"E0",X"E0",X"DC",X"1F",X"0F",X"07",X"3F",X"7F",X"67",X"0F",X"1D",X"19", + X"18",X"B8",X"F6",X"FE",X"FC",X"F8",X"FE",X"FF",X"FF",X"38",X"98",X"58",X"70",X"70",X"70",X"E0", + X"E0",X"E0",X"F8",X"7C",X"78",X"7B",X"37",X"0F",X"00",X"00",X"00",X"3C",X"66",X"67",X"6F",X"77", + X"C3",X"DB",X"FB",X"DB",X"9B",X"79",X"EF",X"BE",X"BF",X"9F",X"FA",X"60",X"A0",X"10",X"00",X"00", + X"00",X"00",X"00",X"01",X"01",X"01",X"00",X"01",X"01",X"03",X"03",X"03",X"03",X"03",X"03",X"03", + X"03",X"01",X"01",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01", + X"03",X"01",X"03",X"03",X"05",X"2C",X"1F",X"07",X"0B",X"0B",X"05",X"02",X"01",X"00",X"00",X"00", + X"07",X"0F",X"0C",X"0C",X"0F",X"07",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"79",X"F9",X"FF",X"FE",X"FD",X"FD",X"FB", + X"FF",X"FF",X"FF",X"FF",X"7F",X"BE",X"41",X"7F",X"FF",X"FD",X"F4",X"E0",X"03",X"03",X"07",X"07", + X"0C",X"37",X"7F",X"3F",X"3F",X"3F",X"3F",X"3B",X"1B",X"1F",X"0D",X"0F",X"07",X"00",X"01",X"01", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"18",X"3E",X"7F",X"FF",X"BF",X"9B",X"01", + X"01",X"03",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03", + X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"02",X"08",X"04",X"03",X"01", + X"03",X"07",X"0F",X"0F",X"13",X"04",X"04",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"04",X"0C",X"18", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C7",X"CC",X"18",X"10",X"00",X"00",X"00",X"00",X"18",X"1C",X"0C",X"07",X"00",X"00",X"00",X"00", + X"9E",X"0C",X"0C",X"0C",X"0C",X"0C",X"0C",X"0C",X"1C",X"BC",X"EE",X"C8",X"00",X"00",X"00",X"00", + X"00",X"00",X"10",X"20",X"31",X"33",X"06",X"04",X"00",X"00",X"07",X"06",X"06",X"03",X"01",X"00", + X"E3",X"F3",X"31",X"31",X"31",X"31",X"31",X"31",X"31",X"31",X"31",X"FC",X"38",X"30",X"20",X"20", + X"1F",X"31",X"61",X"40",X"00",X"00",X"00",X"00",X"60",X"71",X"33",X"1E",X"00",X"00",X"00",X"00", + X"EF",X"FF",X"71",X"60",X"60",X"60",X"60",X"60",X"60",X"71",X"7F",X"6F",X"60",X"60",X"70",X"40", + X"00",X"00",X"00",X"00",X"78",X"30",X"30",X"30",X"30",X"30",X"30",X"30",X"70",X"F1",X"B9",X"23", + X"3F",X"78",X"E0",X"E0",X"F0",X"F0",X"7C",X"3F",X"0F",X"03",X"00",X"00",X"40",X"60",X"71",X"3F", + X"0F",X"18",X"18",X"18",X"1C",X"1F",X"0F",X"03",X"10",X"18",X"1C",X"0F",X"00",X"00",X"00",X"00", + X"E0",X"30",X"38",X"18",X"18",X"18",X"F8",X"18",X"18",X"32",X"67",X"C7",X"00",X"00",X"00",X"00", + X"BC",X"BC",X"EE",X"C6",X"86",X"86",X"86",X"86",X"86",X"86",X"C7",X"04",X"00",X"00",X"00",X"00", + X"EF",X"F9",X"60",X"60",X"61",X"67",X"6F",X"78",X"60",X"61",X"73",X"3F",X"00",X"00",X"00",X"00", + X"C0",X"60",X"70",X"30",X"30",X"30",X"F2",X"33",X"33",X"63",X"C2",X"90",X"18",X"18",X"0C",X"0F", + X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"05",X"07",X"06", + X"F3",X"61",X"61",X"61",X"61",X"61",X"61",X"61",X"63",X"77",X"7D",X"39",X"00",X"00",X"00",X"00", + X"FC",X"70",X"38",X"38",X"1C",X"0E",X"0E",X"07",X"07",X"03",X"06",X"06",X"0C",X"18",X"30",X"7C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7B",X"7F",X"7D",X"78",X"78",X"78",X"78",X"78",X"78",X"7D",X"7F",X"7B",X"78",X"78",X"78",X"78", + X"CF",X"CF",X"CF",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"F0",X"F0",X"C0",X"C0",X"00",X"00", + X"00",X"00",X"40",X"80",X"D8",X"D9",X"03",X"07",X"07",X"07",X"07",X"07",X"07",X"03",X"01",X"00", + X"01",X"07",X"0F",X"1E",X"1E",X"3E",X"3E",X"00",X"00",X"3E",X"3E",X"1E",X"1E",X"0F",X"07",X"01", + X"06",X"06",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"83",X"C3",X"E3",X"F3",X"F3",X"F3",X"F3",X"F3",X"F3",X"E3",X"C1",X"80",X"00",X"00",X"00",X"00", + X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"1E",X"1E",X"1E",X"1E", + X"EF",X"FF",X"F7",X"E3",X"E3",X"E3",X"E3",X"E3",X"E3",X"F7",X"FF",X"EF",X"00",X"00",X"00",X"00", + X"F0",X"B8",X"1C",X"1E",X"1E",X"1E",X"1E",X"1E",X"1E",X"1C",X"B8",X"F0",X"00",X"00",X"00",X"00", + X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"7C",X"FC",X"FC",X"BC",X"3C",X"00",X"00",X"00",X"00", + X"07",X"87",X"C7",X"E7",X"E7",X"E7",X"E7",X"E7",X"E7",X"C7",X"87",X"03",X"00",X"00",X"00",X"00", + X"7B",X"7B",X"79",X"79",X"78",X"78",X"78",X"78",X"F8",X"F8",X"78",X"78",X"00",X"00",X"00",X"00", + X"3E",X"3E",X"3C",X"FC",X"F8",X"78",X"78",X"F0",X"F0",X"E0",X"E0",X"E0",X"C0",X"C0",X"80",X"80", + X"E0",X"E1",X"E3",X"E7",X"E7",X"E7",X"E7",X"E7",X"E7",X"E3",X"F9",X"F8",X"E0",X"E0",X"C0",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"07",X"87",X"C7",X"E7",X"E7",X"E7",X"E7",X"E7",X"E7",X"C7",X"87",X"07",X"07",X"07",X"07",X"07", + X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3E",X"3F",X"1F",X"0E",X"00",X"00",X"00",X"00", + X"3E",X"77",X"E3",X"E3",X"E3",X"03",X"FF",X"FF",X"E3",X"E3",X"77",X"3E",X"00",X"00",X"00",X"00", + X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3E",X"1F",X"DF",X"CE",X"00",X"00",X"00",X"00", + X"E7",X"E7",X"E7",X"E7",X"E7",X"E7",X"E7",X"E7",X"E7",X"E7",X"E7",X"07",X"07",X"E7",X"E7",X"E7", + X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"06",X"0E",X"0E",X"1E", + X"0E",X"86",X"C0",X"E0",X"F0",X"F0",X"E0",X"C0",X"C0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"03",X"0F",X"3F",X"63",X"9B",X"7F",X"FF",X"F3",X"C3",X"83",X"03",X"03",X"03",X"03",X"83", + X"03",X"03",X"03",X"0F",X"0F",X"03",X"03",X"07",X"0E",X"0C",X"0C",X"0C",X"0C",X"06",X"02",X"00", + X"00",X"02",X"06",X"0C",X"0C",X"0C",X"0C",X"0C",X"0C",X"06",X"02",X"00",X"00",X"02",X"06",X"0C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"07",X"0D",X"08",X"0D",X"0F",X"1E",X"3E",X"33",X"31",X"31",X"39",X"3F",X"1F",X"1F",X"0F",X"07", + X"F1",X"F3",X"67",X"6D",X"DC",X"F8",X"71",X"3B",X"1E",X"4C",X"8C",X"18",X"00",X"21",X"61",X"00", + X"00",X"00",X"C0",X"F0",X"F8",X"F8",X"F7",X"FF",X"FF",X"EF",X"E0",X"E0",X"C0",X"C4",X"8C",X"8C", + X"44",X"44",X"8B",X"8A",X"17",X"17",X"20",X"20",X"40",X"A0",X"F0",X"E0",X"F0",X"F0",X"E0",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"18",X"DC",X"7C",X"3C",X"18",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"C0",X"F0",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F8",X"FC",X"FC",X"FC",X"FC", + X"00",X"00",X"03",X"02",X"07",X"07",X"00",X"00",X"00",X"A0",X"F0",X"E0",X"F0",X"F0",X"E0",X"80", + X"00",X"00",X"80",X"DC",X"DE",X"CE",X"C4",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"01",X"07", + X"00",X"00",X"03",X"03",X"01",X"01",X"03",X"01",X"01",X"03",X"03",X"01",X"00",X"00",X"00",X"00", + X"07",X"0E",X"0C",X"1C",X"18",X"18",X"18",X"10",X"10",X"D0",X"F0",X"F0",X"6A",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"C7",X"EE",X"FC",X"3C",X"0E",X"07", + X"C2",X"F0",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"40",X"40",X"40",X"00",X"20",X"20",X"20",X"10", + X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"00",X"01",X"01",X"01",X"01",X"01",X"03",X"03",X"01", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"06",X"0F",X"FF",X"FD",X"1C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"D0",X"F0",X"F0",X"F8",X"F8",X"F8", + X"C0",X"F9",X"F8",X"F8",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"F8",X"F0",X"60",X"60",X"40", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"06",X"1C",X"78",X"F0",X"E0",X"C0", + X"00",X"40",X"02",X"0C",X"00",X"02",X"06",X"0C",X"1C",X"19",X"3B",X"37",X"3F",X"7F",X"7B",X"60", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"D0",X"F8",X"3C",X"7C",X"FE",X"DF",X"B3",X"30",X"20", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"78",X"7C",X"30",X"30", + X"C0",X"F1",X"FB",X"FB",X"FD",X"FC",X"FC",X"FE",X"FE",X"FE",X"FE",X"FE",X"FC",X"F8",X"80",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"03",X"03",X"07",X"06",X"07",X"06",X"05",X"04",X"34",X"3C",X"3C",X"1A",X"00",X"00",X"00", + X"7C",X"FE",X"D4",X"00",X"30",X"38",X"0D",X"01",X"09",X"10",X"12",X"77",X"E6",X"E1",X"60",X"00", + X"07",X"0F",X"0E",X"0C",X"00",X"18",X"78",X"FF",X"FE",X"FE",X"FE",X"EE",X"47",X"6F",X"3F",X"1F", + X"00",X"00",X"01",X"03",X"03",X"1B",X"78",X"FF",X"FE",X"FE",X"FE",X"EE",X"47",X"6F",X"3F",X"1F", + X"00",X"00",X"00",X"00",X"00",X"40",X"20",X"00",X"00",X"B0",X"FC",X"84",X"7A",X"7D",X"B2",X"30", + X"C0",X"F0",X"FB",X"FB",X"FD",X"FC",X"FC",X"FC",X"FC",X"FC",X"F8",X"F0",X"E0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"08",X"18",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"38",X"00",X"00",X"60",X"60",X"FC",X"F8",X"F8",X"08",X"00", + X"00",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"61",X"00",X"00",X"00", + X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"00",X"00",X"0C",X"18",X"F8",X"FC",X"1E", + X"00",X"00",X"C0",X"F0",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"18",X"3C",X"06",X"7B",X"7E",X"30", + X"C0",X"F0",X"FB",X"FB",X"F9",X"FC",X"FC",X"FC",X"FC",X"FC",X"F8",X"F0",X"E0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"30",X"FC",X"C4",X"BA",X"7D",X"FA",X"30", + X"C0",X"F0",X"FA",X"FB",X"F9",X"FC",X"FC",X"FC",X"FC",X"FC",X"F8",X"F0",X"E0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"F8",X"7C",X"3C",X"18",X"18",X"10",X"10",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"E0",X"F8",X"1F",X"0F",X"07", + X"C3",X"E3",X"F1",X"F8",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"FF", + X"60",X"19",X"00",X"00",X"00",X"20",X"00",X"00",X"08",X"00",X"00",X"03",X"03",X"06",X"03",X"01", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"06",X"06",X"07",X"07",X"06",X"06",X"06",X"07",X"07",X"06",X"06",X"07",X"07", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"06",X"06",X"07",X"07",X"06",X"06",X"06",X"FE",X"FE",X"06",X"06",X"FE",X"FE", + X"FF",X"FF",X"FF",X"FF",X"FC",X"F1",X"63",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE", + X"FF",X"FE",X"00",X"83",X"83",X"81",X"89",X"8D",X"8D",X"89",X"81",X"C3",X"E7",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE", + X"0F",X"07",X"07",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"07",X"C0",X"FE",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"E0",X"01",X"0F",X"FF",X"FF", + X"F8",X"C0",X"00",X"00",X"01",X"01",X"03",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"1C",X"EC",X"F4",X"F8",X"FC",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"81",X"E3",X"FB",X"FC",X"FF",X"FF",X"FF",X"FE",X"7E",X"3D",X"3B",X"7F",X"7F",X"7F",X"7F",X"FF", + X"07",X"1F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FD",X"FC",X"0C",X"F0",X"FE",X"FF",X"FF",X"FF",X"FF", + X"FB",X"C7",X"DF",X"DF",X"BE",X"7E",X"DE",X"EC",X"F0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00", + X"80",X"C0",X"40",X"C0",X"00",X"80",X"80",X"C0",X"F0",X"E0",X"80",X"40",X"C0",X"80",X"00",X"00", + X"FF",X"FF",X"FF",X"1F",X"E3",X"FD",X"FE",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"FC",X"FC",X"F8", + X"88",X"20",X"7C",X"4C",X"4B",X"9B",X"97",X"97",X"37",X"2F",X"27",X"C1",X"C1",X"E0",X"F0",X"F8", + X"F8",X"F8",X"F8",X"80",X"7C",X"FE",X"E0",X"DC",X"B8",X"70",X"E0",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"02",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"40",X"61",X"01",X"03",X"07",X"0F",X"0F",X"1F",X"1F",X"1F",X"1F",X"0F",X"00",X"00", + X"00",X"00",X"40",X"81",X"CD",X"FD",X"FB",X"FB",X"3B",X"1B",X"0B",X"00",X"00",X"00",X"01",X"07", + X"07",X"0B",X"1B",X"3F",X"3F",X"3C",X"3B",X"17",X"07",X"03",X"00",X"00",X"04",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"01",X"17",X"3B",X"7B",X"63",X"FB",X"F1",X"47",X"EF",X"EF",X"77", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"06",X"06", + X"17",X"73",X"FB",X"FB",X"FB",X"F9",X"F9",X"FC",X"FC",X"FC",X"FD",X"F9",X"E9",X"C3",X"83",X"02", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"C0",X"80",X"84",X"88",X"80",X"C0",X"00",X"00",X"00",X"80",X"C0",X"80",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3C",X"7C",X"FC",X"FC",X"F4", + X"E4",X"40",X"03",X"07",X"06",X"0C",X"38",X"3F",X"0F",X"0F",X"0F",X"1F",X"3F",X"3F",X"0F",X"03", + X"10",X"18",X"80",X"00",X"80",X"00",X"00",X"00",X"10",X"48",X"E8",X"E0",X"E0",X"60",X"60",X"70", + X"30",X"B8",X"BD",X"9D",X"DD",X"D8",X"D8",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"E0", + X"C0",X"C0",X"42",X"04",X"00",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"1C",X"0E",X"07",X"3F",X"7E",X"F0",X"60",X"00",X"00",X"0C",X"0F",X"07",X"07",X"07",X"0F",X"0F", + X"0F",X"1F",X"3F",X"1F",X"1F",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"03",X"1F",X"3E",X"7C",X"F8",X"E3",X"DF",X"BE",X"3A",X"13",X"01",X"00",X"00",X"81",X"00", + X"F0",X"F0",X"F9",X"FB",X"EF",X"DF",X"FB",X"7D",X"9C",X"E8",X"20",X"D0",X"50",X"70",X"6C",X"F4", + X"F8",X"70",X"F0",X"F0",X"52",X"BE",X"F4",X"E8",X"D8",X"B0",X"80",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"61",X"03",X"03",X"01",X"01",X"01",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"01", + X"00",X"02",X"03",X"03",X"03",X"03",X"01",X"01",X"03",X"03",X"07",X"07",X"17",X"19",X"1F",X"1E", + X"3C",X"78",X"78",X"F8",X"7C",X"7E",X"7F",X"7F",X"3F",X"3F",X"1F",X"1F",X"0F",X"07",X"01",X"00", + X"00",X"00",X"00",X"3E",X"7C",X"FC",X"F8",X"FE",X"FF",X"FC",X"F3",X"6F",X"1B",X"0F",X"3F",X"FF", + X"FF",X"FF",X"FF",X"FF",X"7F",X"FF",X"3F",X"FD",X"F0",X"E0",X"C0",X"00",X"00",X"C0",X"A0",X"E0", + X"80",X"C0",X"C0",X"C0",X"F4",X"DC",X"9C",X"38",X"30",X"68",X"D8",X"B0",X"60",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"78",X"A0",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"02",X"03",X"03",X"07",X"07", + X"07",X"03",X"03",X"01",X"01",X"01",X"00",X"81",X"FF",X"FF",X"FF",X"81",X"03",X"07",X"0F",X"0F", + X"17",X"3C",X"3B",X"17",X"07",X"06",X"00",X"00",X"00",X"20",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"38",X"7F",X"7F",X"7F",X"FF",X"FF",X"CF",X"5B",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"F8",X"7C",X"5E",X"FF",X"FF",X"FF",X"FE",X"1C",X"E8",X"F0", + X"D8",X"E8",X"F0",X"F8",X"F8",X"FC",X"FC",X"FC",X"FF",X"DF",X"EB",X"F3",X"67",X"7F",X"7F",X"F2", + X"F2",X"64",X"CC",X"8C",X"1C",X"FC",X"FC",X"EC",X"70",X"79",X"F9",X"B9",X"7B",X"F3",X"FF",X"F7", + X"EF",X"E7",X"66",X"E3",X"E3",X"E1",X"E0",X"70",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"02",X"04",X"05",X"09",X"0B", + X"13",X"17",X"E7",X"07",X"0F",X"0E",X"1E",X"1E",X"1C",X"08",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"20",X"10",X"08",X"08",X"08",X"C8",X"E8",X"E8",X"EE",X"F3",X"8F", + X"FF",X"FF",X"0F",X"F3",X"FD",X"FE",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC", + X"0C",X"00",X"70",X"4D",X"4B",X"8B",X"95",X"96",X"16",X"2C",X"28",X"C0",X"C0",X"E0",X"F0",X"F8", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"02",X"0F",X"1F",X"1F",X"37",X"2F",X"6F",X"5E",X"1E",X"4E",X"7C",X"FC",X"F8",X"FC",X"71",X"3B", + X"00",X"00",X"00",X"00",X"00",X"0E",X"01",X"00",X"02",X"0F",X"1F",X"3F",X"E7",X"FB",X"FD",X"FF", + X"FF",X"0F",X"F3",X"FD",X"FE",X"BF",X"FF",X"FF",X"7F",X"BE",X"FE",X"7C",X"7C",X"FC",X"FC",X"F8", + X"C8",X"C0",X"30",X"4C",X"48",X"88",X"90",X"90",X"10",X"28",X"20",X"C0",X"C0",X"E0",X"F0",X"F8", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"01",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"06",X"0E",X"0E",X"0D",X"05",X"06",X"03",X"01",X"00",X"00",X"00",X"01",X"03", + X"00",X"00",X"00",X"00",X"00",X"00",X"8F",X"1F",X"1F",X"3E",X"3E",X"E7",X"FB",X"FB",X"FF",X"FF", + X"FF",X"3F",X"C7",X"F9",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F9",X"F8", + X"09",X"01",X"70",X"4D",X"4B",X"8A",X"94",X"94",X"10",X"28",X"20",X"C0",X"C0",X"E0",X"F0",X"F8", + X"F8",X"F8",X"F8",X"80",X"7D",X"FE",X"E0",X"DC",X"B0",X"70",X"E0",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"02",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"07",X"07",X"0F",X"0B",X"0D",X"07",X"02",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03", + X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"F0",X"E0",X"E1",X"00",X"F0",X"FC",X"FC",X"FE",X"08", + X"F2",X"FD",X"FE",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"F8",X"F8",X"78",X"B8",X"D8",X"D8", + X"D8",X"AC",X"76",X"F7",X"FF",X"7C",X"18",X"80",X"C0",X"80",X"80",X"F0",X"F8",X"7C",X"7B",X"2D", + X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"07",X"07",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"07",X"07",X"0F", + X"0E",X"1A",X"19",X"1C",X"3F",X"3F",X"3F",X"3F",X"1D",X"0E",X"06",X"00",X"00",X"00",X"00",X"00", + X"FE",X"FC",X"38",X"C0",X"E0",X"D8",X"E8",X"F0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"F0",X"F0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"9F",X"BF",X"7F",X"FF",X"FF",X"FF", + X"0E",X"F3",X"FD",X"FE",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FF",X"7F",X"FF",X"FF",X"FF",X"F7", + X"F7",X"F4",X"2F",X"9B",X"BC",X"FC",X"78",X"18",X"80",X"C0",X"80",X"80",X"F0",X"B8",X"DC",X"5B", + X"00",X"00",X"00",X"00",X"00",X"40",X"61",X"07",X"1E",X"1E",X"1E",X"BF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"06",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"1F",X"E3",X"FD",X"FE",X"FF",X"FF",X"EF",X"FE",X"CE",X"9E",X"AF",X"F7",X"FF",X"FF",X"EF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"1C",X"BE",X"EF",X"F7",X"FB",X"FD",X"FE",X"0F", + X"F3",X"FD",X"FE",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8", + X"D8",X"E8",X"F7",X"FE",X"FF",X"7B",X"1D",X"80",X"C0",X"80",X"80",X"F0",X"F8",X"7C",X"7B",X"2D", + X"AF",X"EC",X"DE",X"FE",X"FE",X"DC",X"5E",X"BE",X"FF",X"F1",X"CE",X"7C",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"38",X"7C",X"7E", + X"FA",X"FE",X"FD",X"FD",X"FC",X"FC",X"7C",X"7C",X"78",X"2C",X"D6",X"DE",X"64",X"7C",X"18",X"00", + X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"1F",X"CF",X"F3",X"FD",X"FD",X"FE",X"FE", + X"0F",X"F3",X"FD",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FD",X"FD",X"F8",X"F8",X"F8",X"F8",X"F9", + X"FB",X"F7",X"EF",X"DB",X"FD",X"FC",X"78",X"18",X"80",X"C0",X"80",X"80",X"F0",X"B8",X"DC",X"5B", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"18",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"07",X"0F",X"1F",X"1F", + X"3F",X"0E",X"72",X"6E",X"6E",X"72",X"3E",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"1E",X"37",X"29",X"36", + X"00",X"00",X"00",X"00",X"00",X"40",X"60",X"00",X"04",X"0E",X"1F",X"3F",X"47",X"3B",X"FD",X"FF", + X"FF",X"0F",X"F3",X"FD",X"FE",X"FF",X"FF",X"EF",X"FE",X"CE",X"9E",X"AF",X"F7",X"FF",X"FF",X"EF", + X"DE",X"D6",X"D9",X"DF",X"AE",X"B0",X"F8",X"78",X"18",X"80",X"C0",X"80",X"80",X"F8",X"BC",X"5B", + X"DD",X"BF",X"FC",X"FE",X"7E",X"7E",X"DC",X"5E",X"BE",X"FF",X"F1",X"CE",X"7C",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"1E",X"37",X"29",X"36", + X"37",X"0B",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00"); +begin +process(clk) +begin + if rising_edge(clk) then + data <= rom_data(to_integer(unsigned(addr))); + end if; +end process; +end architecture; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_2.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_2.vhd new file mode 100644 index 00000000..b5917629 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_2.vhd @@ -0,0 +1,534 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity popeye_sp_bits_2 is +port ( + clk : in std_logic; + addr : in std_logic_vector(12 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of popeye_sp_bits_2 is + type rom is array(0 to 8191) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"00",X"18",X"00",X"18",X"00",X"8E",X"00",X"9C",X"00",X"F0",X"00",X"60",X"00",X"00",X"00",X"00", + X"CC",X"00",X"FC",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"81",X"00",X"83",X"00",X"07",X"00",X"0F",X"00",X"07",X"00",X"03", + X"00",X"00",X"00",X"C0",X"F0",X"F0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"07",X"0F",X"1D",X"18",X"1C", + X"0E",X"0E",X"06",X"06",X"0C",X"8C",X"8C",X"8C",X"98",X"98",X"D8",X"F8",X"F0",X"70",X"30",X"30", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"3F",X"3F",X"1F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"C1",X"C1",X"C3",X"C3",X"C3",X"C3", + X"46",X"46",X"24",X"38",X"F8",X"F0",X"FC",X"DE",X"8F",X"0F",X"CF",X"EF",X"FF",X"7F",X"3F",X"9F", + X"DF",X"F7",X"EF",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FC",X"FC",X"F8",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"E0",X"E0",X"E0",X"C0",X"C0",X"C0",X"E0",X"E0",X"E0", + X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80", + X"80",X"C0",X"C0",X"40",X"00",X"00",X"80",X"80",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"EE",X"F8",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"06",X"06",X"07",X"03",X"07",X"07", + X"07",X"07",X"07",X"03",X"00",X"37",X"57",X"7F",X"1F",X"0C",X"00",X"73",X"7D",X"3F",X"1F",X"01", + X"04",X"44",X"63",X"63",X"E7",X"E6",X"C0",X"C3",X"FF",X"FE",X"80",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"0E",X"07",X"03",X"01",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"38",X"3C",X"1C",X"0E",X"07",X"03", + X"00",X"00",X"20",X"78",X"7F",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"04",X"08",X"09",X"1A",X"E6",X"20",X"00", + X"00",X"00",X"01",X"6E",X"3C",X"00",X"00",X"11",X"E3",X"C7",X"0E",X"04",X"80",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80", + X"00",X"00",X"40",X"20",X"00",X"07",X"3C",X"FE",X"FE",X"C8",X"00",X"04",X"18",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"09",X"84", + X"86",X"C3",X"E0",X"00",X"00",X"00",X"22",X"17",X"9F",X"07",X"03",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"23",X"61",X"70",X"30",X"18",X"04",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"1C",X"FE",X"FE",X"FE",X"FE",X"FC",X"FC",X"FC",X"FC",X"F8",X"F6",X"EF",X"DF", + X"DF",X"DF",X"FF",X"FF",X"FE",X"FC",X"F8",X"F8",X"F0",X"F0",X"E0",X"E0",X"C0",X"80",X"00",X"00", + X"00",X"00",X"80",X"E0",X"A0",X"E0",X"C0",X"C0",X"C0",X"C0",X"80",X"00",X"40",X"80",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"03",X"0F",X"3F",X"FC",X"F0",X"F0",X"E0",X"60",X"00",X"00",X"00", + X"01",X"00",X"00",X"00",X"80",X"3C",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"E3",X"E1",X"E1",X"E1",X"F8",X"78",X"F8",X"FC",X"FC",X"FE",X"3F",X"0F",X"0F",X"03",X"00", + X"00",X"01",X"06",X"8F",X"4F",X"0F",X"0F",X"01",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00", + X"DF",X"DF",X"FF",X"FF",X"FE",X"FC",X"F8",X"F8",X"F0",X"F0",X"E0",X"E0",X"C0",X"C0",X"80",X"00", + X"00",X"80",X"60",X"E0",X"E0",X"C0",X"C0",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"F1",X"E1",X"E1",X"E1",X"F1",X"70",X"78",X"BC",X"BE",X"DF",X"FF",X"FF",X"8F",X"81", + X"00",X"01",X"03",X"03",X"07",X"86",X"00",X"00",X"80",X"01",X"1E",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"E0",X"E0",X"E0", + X"F0",X"F0",X"F0",X"F0",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8",X"F0",X"F0", + X"F0",X"E0",X"E0",X"E0",X"C0",X"C0",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"F0",X"FE",X"FF",X"FF",X"FF",X"3F",X"1F",X"CF",X"8F",X"0F",X"0F",X"1F",X"FF",X"FF",X"FF", + X"1F",X"0F",X"87",X"C7",X"C7",X"C7",X"87",X"8F",X"8F",X"1F",X"1F",X"3F",X"7F",X"FF",X"7F",X"7F", + X"3F",X"1F",X"1F",X"1F",X"1F",X"1F",X"3F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"E0", + X"03",X"06",X"04",X"01",X"07",X"0F",X"1F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FE",X"FC",X"FC",X"FC",X"FC",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FE",X"FF",X"7F",X"3F",X"0F",X"03",X"01",X"00",X"00", + X"00",X"00",X"00",X"10",X"00",X"04",X"00",X"00",X"02",X"00",X"00",X"02",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"80",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"50",X"04", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"08",X"08",X"00",X"00",X"10",X"20",X"40",X"40",X"80",X"80",X"80",X"80",X"00",X"00", + X"00",X"00",X"0F",X"0F",X"03",X"03",X"03",X"0F",X"0F",X"03",X"03",X"03",X"0F",X"0F",X"00",X"00", + X"F8",X"FC",X"FE",X"FE",X"FE",X"FE",X"FC",X"F8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"04",X"04",X"04",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"80",X"C0",X"E0",X"F0",X"F8",X"FC",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3E",X"1C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F8",X"FC",X"00",X"00",X"00",X"00",X"00",X"60",X"60",X"60",X"60",X"60",X"60",X"20",X"00",X"00", + X"F8",X"FC",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"00", + X"78",X"7C",X"60",X"60",X"60",X"E0",X"E0",X"00",X"00",X"00",X"60",X"60",X"60",X"20",X"00",X"00", + X"78",X"7C",X"7E",X"7E",X"7E",X"FE",X"FE",X"FE",X"FE",X"FE",X"7E",X"7E",X"3E",X"FE",X"FE",X"00", + X"00",X"00",X"30",X"30",X"30",X"30",X"30",X"F0",X"F0",X"30",X"30",X"30",X"F0",X"F0",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"F0",X"F0",X"C0",X"C0",X"F8",X"FC",X"FC",X"FE",X"FE",X"FE",X"FE",X"FC",X"3C",X"18", + X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"1F",X"0F",X"0F",X"07",X"07",X"87",X"F7",X"FE",X"7C",X"00", + X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"E0",X"F8",X"FC",X"FE",X"FE",X"FF",X"FF",X"7F",X"3F",X"3F",X"3F",X"3F",X"3F", + X"3E",X"3E",X"3E",X"7C",X"FC",X"FC",X"F8",X"F0",X"EC",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF", + X"7E",X"7E",X"7E",X"7E",X"7C",X"7C",X"7C",X"78",X"70",X"60",X"F0",X"F0",X"E0",X"80",X"00",X"00", + X"00",X"00",X"00",X"83",X"DF",X"BF",X"FF",X"FF",X"FF",X"FF",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C", + X"3C",X"3C",X"0C",X"0E",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"30",X"30",X"32",X"32",X"32",X"32",X"32",X"32",X"30",X"30",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F", + X"00",X"03",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"33",X"33",X"33",X"33",X"03",X"03", + X"33",X"33",X"33",X"33",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"3C",X"3C",X"3F",X"3F",X"0C",X"CC",X"CF",X"CF",X"CC",X"CC",X"FF",X"FF",X"FF",X"FE",X"F0",X"00", + X"FF",X"E7",X"3D",X"0F",X"0F",X"C7",X"FB",X"FF",X"FF",X"FF",X"DF",X"8F",X"07",X"03",X"01",X"00", + X"00",X"00",X"00",X"00",X"21",X"73",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"67",X"67",X"FF",X"FF",X"67",X"67",X"67",X"67",X"67",X"67",X"FF",X"FF",X"FF",X"1F",X"0F",X"00", + X"FF",X"E7",X"3D",X"0F",X"0F",X"C7",X"FB",X"FF",X"FF",X"FF",X"83",X"01",X"02",X"02",X"02",X"04", + X"01",X"83",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F0",X"00",X"E0",X"00",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"1E",X"00",X"3F",X"00",X"1E", + X"00",X"D0",X"D0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F6",X"DF",X"DF",X"FC",X"FE",X"FE",X"FC",X"D8", + X"00",X"80",X"C0",X"E0",X"F0",X"60",X"44",X"0C",X"7C",X"98",X"40",X"B0",X"FC",X"0E",X"07",X"03", + X"00",X"68",X"64",X"32",X"20",X"00",X"18",X"18",X"40",X"E0",X"C0",X"F0",X"A0",X"C0",X"80",X"00", + X"00",X"80",X"C0",X"E0",X"F0",X"60",X"C4",X"8C",X"1C",X"38",X"30",X"A0",X"80",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"10",X"06",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"40",X"42",X"4A",X"29",X"25",X"04",X"04",X"22",X"E2",X"82",X"10",X"00",X"10",X"98",X"90",X"C8", + X"C8",X"90",X"90",X"00",X"10",X"20",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"20",X"A0",X"A0",X"A0",X"20",X"40",X"40",X"40",X"80",X"80",X"90",X"06", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"0C",X"06",X"0C",X"38",X"EC",X"86",X"03",X"07",X"05",X"84",X"81",X"C4",X"C0",X"81",X"B0",X"0C", + X"02",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"04", + X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"F0",X"00",X"00",X"00",X"00",X"00", + X"0C",X"06",X"0C",X"38",X"EC",X"86",X"03",X"03",X"05",X"84",X"82",X"C0",X"C0",X"80",X"82",X"41", + X"20",X"11",X"40",X"08",X"80",X"04",X"00",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"80",X"80",X"F3",X"DF",X"BE",X"F0",X"B0",X"60",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"90",X"90",X"10",X"20",X"20",X"20",X"40",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"08",X"48",X"50",X"90",X"20",X"20",X"40",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"0D",X"17",X"07",X"26",X"2C",X"38",X"10",X"80",X"88",X"8C",X"9E",X"9E",X"9F",X"9F",X"9F", + X"9F",X"9F",X"BF",X"BE",X"BC",X"B0",X"F0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"F8",X"F8",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3C",X"7C",X"EE",X"C6",X"0C",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"1F",X"3F",X"7F",X"70",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"0F",X"3F",X"F9",X"E3",X"C3",X"C3",X"C3", + X"46",X"46",X"24",X"38",X"F8",X"F0",X"BC",X"9E",X"0F",X"CF",X"EF",X"FF",X"FF",X"7F",X"3F",X"9F", + X"04",X"07",X"07",X"07",X"03",X"00",X"00",X"00",X"79",X"00",X"04",X"08",X"10",X"30",X"60",X"60", + X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"3C",X"18",X"18",X"3C",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"D8",X"5C",X"4C",X"24",X"20",X"C0",X"F0",X"E0", + X"C4",X"DE",X"7E",X"3E",X"26",X"70",X"F8",X"BC",X"3C",X"3C",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"F0",X"FC",X"FE",X"FE",X"3F",X"1F",X"1F",X"3F",X"FE",X"FE",X"FC",X"F0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"7E",X"F8",X"C0",X"00",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"F8",X"FC",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"F8", + X"F0",X"1C",X"06",X"7E",X"F8",X"C0",X"00",X"02",X"06",X"08",X"70",X"80",X"02",X"02",X"04",X"08", + X"70",X"80",X"02",X"02",X"06",X"1C",X"F8",X"E8",X"A8",X"28",X"20",X"00",X"00",X"00",X"00",X"00", + X"FF",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"FF",X"00",X"00",X"00",X"00", + X"00",X"FF",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F4",X"8C",X"F8",X"F0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80",X"C0",X"C0",X"C0",X"C0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"1F",X"3F",X"7E",X"FD",X"FF",X"FF",X"FF",X"FF", + X"F0",X"F0",X"E0",X"E0",X"F0",X"F0",X"F8",X"F8",X"F8",X"F8",X"FC",X"FC",X"FC",X"FC",X"FC",X"FE", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FD",X"F2",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FD", + X"00",X"00",X"30",X"80",X"E0",X"F0",X"F0",X"F8",X"F8",X"78",X"BC",X"BC",X"BC",X"BC",X"DC",X"C0", + X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"80",X"80",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"E0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"F0",X"F7",X"FB",X"FD",X"FD",X"FD",X"FD",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FD", + X"FD",X"FD",X"FB",X"F7",X"EF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"F8",X"F3", + X"00",X"00",X"00",X"00",X"00",X"00",X"39",X"3B",X"B7",X"B7",X"76",X"77",X"7F",X"7F",X"FF",X"FF", + X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3F",X"1F",X"07",X"01",X"01",X"01",X"01", + X"FC",X"FE",X"FC",X"FB",X"CF",X"9F",X"BF",X"3B",X"87",X"00",X"18",X"34",X"0A",X"85",X"C3",X"89", + X"FC",X"BC",X"5C",X"15",X"32",X"F7",X"E7",X"06",X"05",X"1F",X"FF",X"FF",X"7F",X"3C",X"00",X"00", + X"F0",X"F0",X"F8",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"78",X"E0",X"00",X"00",X"00",X"00",X"00", + X"1F",X"3F",X"7F",X"FF",X"FF",X"FE",X"FF",X"FF",X"F0",X"CF",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"0C",X"04",X"00",X"00",X"E0",X"F0",X"F8",X"FC",X"7E",X"7F",X"7F",X"7F",X"BF",X"BE",X"BC",X"80", + X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"F0", + X"98",X"CC",X"EC",X"F6",X"FA",X"FD",X"7E",X"BE",X"DF",X"DF",X"DF",X"FF",X"FF",X"FB",X"FD",X"FD", + X"FE",X"FE",X"FE",X"FE",X"FC",X"F8",X"C0",X"80",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"E0", + X"F0",X"F0",X"F8",X"F8",X"F8",X"F8",X"F0",X"F0",X"E0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"C0",X"F0",X"1C",X"E7",X"F9",X"FE",X"FF",X"FF", + X"1F",X"CF",X"E7",X"EF",X"FD",X"FE",X"FF",X"7F",X"FF",X"DF",X"EF",X"F7",X"FB",X"FD",X"FE",X"FE", + X"FF",X"FF",X"BF",X"BF",X"5F",X"5F",X"DF",X"BF",X"7E",X"7C",X"F2",X"F3",X"EB",X"D7",X"F7",X"CF", + X"BF",X"FF",X"FF",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"00",X"00",X"00", + X"00",X"04",X"04",X"04",X"04",X"84",X"70",X"00",X"FF",X"FF",X"00",X"7F",X"FF",X"FF",X"FF",X"9F", + X"7C",X"FF",X"FF",X"FF",X"FF",X"FF",X"E0",X"DE",X"FF",X"FF",X"FF",X"7F",X"3F",X"FF",X"02",X"FE", + X"FD",X"FD",X"FD",X"FD",X"FC",X"BC",X"7C",X"7D",X"3F",X"AF",X"9E",X"9E",X"9D",X"1B",X"0F",X"0F", + X"07",X"01",X"00",X"00",X"30",X"39",X"3F",X"1F",X"FF",X"FF",X"3F",X"FF",X"FF",X"EE",X"9C",X"0C", + X"98",X"B8",X"B0",X"F0",X"FE",X"FE",X"FC",X"F8",X"F0",X"F8",X"F8",X"F9",X"FB",X"FB",X"F9",X"F9", + X"F8",X"F3",X"F7",X"FB",X"FB",X"FB",X"FB",X"F7",X"EE",X"DE",X"BC",X"FC",X"FC",X"FF",X"FF",X"FE", + X"FF",X"FF",X"7F",X"B6",X"01",X"39",X"4C",X"46",X"63",X"11",X"08",X"04",X"63",X"F3",X"70",X"A0", + X"7D",X"5A",X"36",X"EC",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"01",X"01",X"00",X"00", + X"FF",X"3F",X"CF",X"F7",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"C7", + X"E7",X"FF",X"FF",X"FF",X"FF",X"DB",X"E0",X"E0",X"CE",X"0A",X"1A",X"16",X"34",X"EC",X"99",X"73", + X"4B",X"1F",X"18",X"01",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"1F",X"3F",X"7E",X"7D",X"FB",X"F7",X"EF",X"EF",X"FF",X"FF",X"FE",X"FE", + X"EF",X"E5",X"CF",X"6F",X"0E",X"0F",X"06",X"05",X"07",X"07",X"07",X"07",X"03",X"01",X"03",X"03", + X"0B",X"0D",X"1D",X"3E",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"F0", + X"E0",X"E0",X"F0",X"F0",X"78",X"38",X"18",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0", + X"00",X"06",X"04",X"02",X"0F",X"BF",X"BF",X"BF",X"7F",X"7F",X"BF",X"DF",X"FF",X"FF",X"C0",X"7F", + X"00",X"00",X"3E",X"E0",X"00",X"00",X"06",X"7F",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FB",X"EF",X"DE",X"38",X"3B",X"3B",X"3B",X"3B",X"19",X"1E",X"1E",X"1C",X"0D",X"0D",X"0D",X"04", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"0D",X"03",X"83",X"45",X"4E",X"4D",X"CF",X"8E",X"8F",X"2D",X"7A",X"65",X"00",X"00",X"00",X"00", + X"80",X"80",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80",X"C0",X"60",X"20",X"20",X"00",X"00", + X"80",X"40",X"20",X"20",X"00",X"00",X"80",X"60",X"20",X"00",X"00",X"80",X"60",X"60",X"C0",X"00", + X"FF",X"FF",X"FF",X"80",X"3F",X"FF",X"FF",X"FF",X"FF",X"F0",X"80",X"00",X"00",X"00",X"1F",X"E0", + X"00",X"00",X"00",X"00",X"1F",X"E0",X"00",X"00",X"00",X"00",X"3F",X"FF",X"E0",X"00",X"80",X"FF", + X"00",X"00",X"00",X"00",X"00",X"C0",X"E0",X"F0",X"F0",X"F0",X"80",X"C0",X"E0",X"F0",X"F8",X"F8", + X"C0",X"40",X"80",X"C0",X"E0",X"F0",X"F0",X"F0",X"F0",X"F0",X"E0",X"E0",X"C0",X"C0",X"C0",X"C0", + X"80",X"80",X"00",X"00",X"80",X"80",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F1",X"CF",X"BF",X"FF",X"FF",X"FF",X"FF",X"E0", + X"F7",X"EF",X"DF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"DF",X"FF", + X"FF",X"FF",X"FF",X"7F",X"DF",X"EF",X"F6",X"F8",X"FE",X"FF",X"FF",X"FF",X"FD",X"FE",X"FC",X"F0", + X"F8",X"F0",X"F8",X"48",X"09",X"03",X"0E",X"0D",X"01",X"03",X"03",X"01",X"00",X"00",X"00",X"00", + X"00",X"00",X"08",X"0C",X"00",X"00",X"00",X"01",X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"01",X"03",X"06",X"07",X"07",X"07",X"03",X"03",X"01",X"60",X"66",X"67", + X"67",X"77",X"BE",X"FF",X"FF",X"1F",X"0F",X"07",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"7C",X"FE",X"FE", + X"FF",X"FF",X"FF",X"7F",X"FF",X"FF",X"FE",X"FE",X"FE",X"FE",X"FC",X"FC",X"FC",X"F8",X"F8",X"F0", + X"F0",X"E0",X"E0",X"E0",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FB",X"FD",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F3",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"CF",X"D7",X"DB",X"9D",X"1E",X"9E",X"FF",X"FF",X"FF",X"FF",X"DF",X"BF",X"1B",X"07", + X"06",X"06",X"0E",X"3E",X"FC",X"FA",X"FB",X"FB",X"FB",X"FD",X"FD",X"FE",X"FE",X"FF",X"FE",X"FE", + X"FC",X"FC",X"F8",X"F8",X"F0",X"F0",X"F8",X"B8",X"7C",X"7C",X"7C",X"BC",X"C8",X"B0",X"70",X"E0", + X"00",X"80",X"C0",X"80",X"C0",X"E0",X"F0",X"F0",X"F0",X"F0",X"F0",X"E0",X"C0",X"F0",X"F0",X"76", + X"B0",X"D0",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8",X"F0",X"F0",X"F0",X"F8",X"F8",X"F8",X"F8", + X"F8",X"F8",X"F8",X"F0",X"F0",X"F0",X"E0",X"E0",X"C0",X"80",X"80",X"80",X"80",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"80",X"F8",X"FF",X"FF",X"FF",X"18",X"E7",X"DE",X"3D",X"FB",X"FF", + X"7F",X"BF",X"DF",X"EF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FD",X"FE",X"FE",X"7F",X"77",X"7B",X"7D", + X"7E",X"7E",X"7D",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"C0",X"E0",X"E1",X"80",X"38",X"F8",X"F0",X"C0",X"80",X"C0",X"E0",X"F0",X"F0",X"F8",X"FC",X"FE", + X"E9",X"E7",X"FF",X"DF",X"BF",X"BF",X"7F",X"7F",X"7F",X"BF",X"B7",X"8F",X"DF",X"FF",X"FF",X"FF", + X"FF",X"7F",X"AD",X"83",X"00",X"7F",X"7A",X"0E",X"C2",X"E1",X"C4",X"7E",X"5E",X"AE",X"8A",X"99", + X"FB",X"73",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"E0",X"F0",X"F8",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"7C",X"F8", + X"F8",X"F8",X"F8",X"F0",X"F0",X"F8",X"F8",X"F8",X"F8",X"D8",X"D0",X"D0",X"E0",X"C0",X"80",X"00", + X"60",X"38",X"1C",X"8C",X"CE",X"E6",X"F0",X"F8",X"30",X"DC",X"EE",X"F7",X"FF",X"FF",X"FF",X"80", + X"FC",X"FE",X"FE",X"1F",X"EE",X"F4",X"F8",X"0C",X"F6",X"F7",X"FB",X"FB",X"F9",X"FA",X"FA",X"F6", + X"F4",X"FD",X"FD",X"FD",X"FB",X"FB",X"FF",X"FF",X"FF",X"FF",X"CF",X"77",X"EB",X"1D",X"8D",X"8B", + X"C7",X"45",X"42",X"C4",X"04",X"D8",X"9C",X"CC",X"E0",X"F0",X"E0",X"E0",X"C0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"1C",X"3C",X"3C",X"7D",X"7B",X"F7",X"FF",X"FF", + X"FF",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"7F",X"7B",X"7D",X"3E",X"3F",X"1F",X"1F",X"1F",X"03",X"03",X"03",X"03",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"C0",X"C0",X"C0", + X"00",X"04",X"06",X"00",X"01",X"03",X"87",X"C7",X"E7",X"CF",X"FF",X"FF",X"FF",X"FF",X"80",X"9F", + X"00",X"40",X"60",X"07",X"07",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"80",X"9F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"E0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"E0",X"F0",X"F0",X"F8",X"F8",X"FC",X"FC",X"FE",X"FF", + X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"F8",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"40",X"60",X"01",X"03",X"0F",X"1F",X"07",X"00",X"00",X"C1",X"FF",X"FF",X"FF",X"80",X"9F", + X"FB",X"FD",X"FE",X"FF",X"FF",X"EF",X"DF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"C7",X"C2",X"86",X"26",X"74",X"F6",X"D6",X"E6",X"E0",X"B0",X"30",X"70",X"A0",X"00",X"00",X"00", + X"0E",X"FE",X"FE",X"FE",X"FE",X"FE",X"3F",X"DF",X"FF",X"7F",X"3F",X"CE",X"E0",X"C0",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0", + X"00",X"00",X"00",X"FC",X"F8",X"F0",X"F3",X"E7",X"EF",X"FF",X"FF",X"FF",X"FF",X"FF",X"80",X"9F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00",X"80",X"C0",X"C0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"E0",X"E0", + X"E0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"07",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"80",X"9F", + X"FB",X"FD",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"EF",X"EF",X"D7",X"DB",X"DD",X"DE",X"1F",X"9F",X"FF",X"FF",X"FF",X"FF",X"DF",X"BF",X"1B",X"07", + X"E3",X"C0",X"82",X"26",X"74",X"F6",X"D6",X"E6",X"60",X"30",X"70",X"F0",X"A0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"81",X"C1",X"01",X"01",X"01",X"00",X"00",X"00",X"00", + X"0F",X"0F",X"1F",X"1D",X"1B",X"1B",X"1B",X"3B",X"3C",X"1F",X"1F",X"0C",X"0D",X"0D",X"05",X"06", + X"7A",X"CE",X"B4",X"F2",X"E8",X"DA",X"77",X"6F",X"3D",X"1D",X"02",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"20",X"20",X"20",X"10",X"18",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"E0",X"F0",X"F0", + X"F0",X"F8",X"FA",X"FA",X"FA",X"F6",X"77",X"77",X"76",X"7E",X"7E",X"7C",X"3C",X"38",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"F0",X"04",X"F0",X"FE",X"FF",X"FF",X"1F",X"EF",X"77",X"FB", + X"FB",X"FD",X"FD",X"FE",X"FE",X"FE",X"FF",X"FD",X"FC",X"78",X"38",X"30",X"20",X"40",X"D0",X"D8", + X"D8",X"3C",X"FE",X"CF",X"3F",X"7F",X"FF",X"FF",X"FE",X"FE",X"FC",X"F8",X"E0",X"C0",X"C0",X"80", + X"00",X"00",X"00",X"00",X"00",X"0C",X"07",X"00",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00", + X"01",X"03",X"07",X"0F",X"31",X"F1",X"F9",X"FC",X"00",X"00",X"F9",X"F1",X"F3",X"F3",X"C6",X"C7", + X"C7",X"C0",X"E0",X"E0",X"E0",X"E0",X"DC",X"1F",X"0F",X"07",X"3F",X"7F",X"67",X"0F",X"1D",X"19", + X"18",X"B8",X"F6",X"FE",X"FC",X"F8",X"FE",X"FF",X"FF",X"38",X"98",X"58",X"70",X"70",X"70",X"E0", + X"E0",X"E0",X"F8",X"7C",X"78",X"7B",X"37",X"0F",X"00",X"00",X"00",X"3C",X"66",X"67",X"6F",X"77", + X"C3",X"DB",X"FB",X"DB",X"9B",X"79",X"EF",X"BE",X"BF",X"9F",X"FA",X"60",X"A0",X"10",X"00",X"00", + X"E0",X"F0",X"30",X"30",X"F0",X"E0",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"70",X"F8",X"F8",X"FC",X"FC",X"C0",X"EA",X"BE",X"BF", + X"3F",X"3F",X"5F",X"5F",X"7F",X"FF",X"FF",X"FE",X"FE",X"FE",X"5C",X"00",X"00",X"80",X"C4",X"FE", + X"7F",X"3F",X"9C",X"9C",X"DC",X"EC",X"7C",X"7C",X"DE",X"DF",X"BF",X"F6",X"EE",X"DE",X"DE",X"8C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"0F",X"BF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"E7",X"F9",X"FE",X"FC",X"F1",X"03",X"1F",X"3F",X"3F",X"7F",X"7A",X"38",X"90",X"C0", + X"E0",X"F0",X"C0",X"60",X"30",X"08",X"20",X"20",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"80", + X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"40",X"60",X"00",X"10",X"10",X"18",X"18", + X"E0",X"F0",X"F8",X"F0",X"78",X"0C",X"00",X"18",X"10",X"40",X"40",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C7",X"63",X"73",X"33",X"33",X"33",X"33",X"33",X"33",X"63",X"C3",X"81",X"00",X"00",X"00",X"00", + X"F8",X"70",X"70",X"70",X"70",X"70",X"70",X"70",X"70",X"70",X"70",X"70",X"70",X"70",X"70",X"F8", + X"00",X"00",X"00",X"00",X"F0",X"19",X"1D",X"0C",X"0C",X"0C",X"FC",X"0C",X"0C",X"18",X"B0",X"E1", + X"BE",X"E7",X"83",X"83",X"87",X"9E",X"BC",X"E0",X"80",X"86",X"CE",X"FC",X"00",X"00",X"00",X"00", + X"1E",X"8C",X"CC",X"CC",X"CC",X"CC",X"CC",X"CC",X"CC",X"8C",X"0E",X"08",X"00",X"00",X"0C",X"0C", + X"1E",X"8C",X"CC",X"CC",X"CC",X"CC",X"CC",X"CC",X"CC",X"CE",X"8F",X"07",X"00",X"00",X"00",X"00", + X"0E",X"1F",X"17",X"10",X"30",X"30",X"38",X"78",X"58",X"5C",X"CC",X"8C",X"8C",X"8E",X"06",X"8F", + X"C0",X"E0",X"60",X"20",X"00",X"00",X"00",X"00",X"C0",X"E0",X"E0",X"60",X"60",X"E0",X"C0",X"80", + X"C3",X"E6",X"6C",X"28",X"00",X"00",X"CF",X"EC",X"6C",X"66",X"63",X"C1",X"00",X"00",X"00",X"00", + X"7B",X"31",X"31",X"31",X"31",X"31",X"31",X"71",X"71",X"F1",X"B9",X"21",X"00",X"00",X"00",X"00", + X"38",X"7C",X"4C",X"0C",X"0C",X"0C",X"0C",X"0C",X"0C",X"0C",X"0C",X"7F",X"0E",X"0C",X"08",X"08", + X"87",X"CC",X"D8",X"D0",X"C0",X"80",X"1F",X"18",X"18",X"8C",X"86",X"03",X"00",X"00",X"00",X"00", + X"7C",X"38",X"38",X"38",X"38",X"38",X"38",X"38",X"F8",X"38",X"38",X"38",X"38",X"38",X"38",X"FC", + X"FE",X"87",X"83",X"E6",X"FC",X"3E",X"06",X"1C",X"78",X"CC",X"86",X"86",X"86",X"86",X"CC",X"78", + X"DE",X"8C",X"8C",X"8C",X"8C",X"8C",X"8C",X"8C",X"8C",X"8C",X"CE",X"08",X"00",X"00",X"0C",X"0C", + X"F8",X"70",X"70",X"70",X"70",X"70",X"F0",X"F0",X"F0",X"70",X"70",X"70",X"70",X"70",X"70",X"F8", + X"06",X"06",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C3",X"E3",X"E3",X"F3",X"F3",X"F3",X"F3",X"F3",X"F3",X"E3",X"EF",X"CF",X"03",X"03",X"00",X"00", + X"FC",X"FC",X"FC",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C",X"3C", + X"00",X"00",X"00",X"00",X"F8",X"DC",X"8E",X"8F",X"8F",X"8F",X"8F",X"8F",X"8F",X"8E",X"DC",X"F8", + X"E0",X"F8",X"3C",X"1E",X"1E",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1E",X"1E",X"3C",X"F8",X"E0", + X"0F",X"1D",X"38",X"78",X"78",X"00",X"00",X"78",X"78",X"38",X"1D",X"0F",X"00",X"00",X"00",X"00", + X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"C7",X"EF",X"FF",X"F7",X"E7",X"00",X"00",X"00",X"00", + X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00", + X"01",X"83",X"87",X"CF",X"CF",X"C0",X"C0",X"CF",X"CF",X"87",X"83",X"01",X"00",X"00",X"00",X"00", + X"78",X"78",X"78",X"78",X"78",X"78",X"78",X"78",X"7B",X"7B",X"7B",X"03",X"00",X"78",X"78",X"78", + X"1F",X"3B",X"71",X"F1",X"F1",X"01",X"FF",X"FF",X"F1",X"71",X"3B",X"1F",X"00",X"00",X"00",X"00", + X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"9E",X"BE",X"FF",X"DF",X"8E",X"00",X"00",X"00",X"00", + X"E0",X"E0",X"E0",X"FF",X"FF",X"F0",X"F0",X"78",X"78",X"3D",X"3D",X"3F",X"1F",X"1F",X"0F",X"0F", + X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"07",X"07",X"01",X"01",X"07",X"07", + X"F8",X"DC",X"8E",X"8F",X"8F",X"8F",X"8F",X"8F",X"8F",X"8E",X"DC",X"F8",X"00",X"00",X"00",X"00", + X"1F",X"3B",X"71",X"F1",X"F1",X"F1",X"F1",X"F1",X"F1",X"71",X"3B",X"1F",X"00",X"00",X"00",X"00", + X"BC",X"FE",X"DE",X"8F",X"8F",X"8F",X"8F",X"8F",X"8F",X"DE",X"FE",X"BC",X"80",X"80",X"80",X"80", + X"78",X"78",X"78",X"79",X"79",X"78",X"79",X"79",X"F9",X"F8",X"78",X"78",X"00",X"00",X"00",X"00", + X"0F",X"0F",X"8F",X"CF",X"CF",X"CF",X"CF",X"CF",X"CF",X"8F",X"3F",X"3F",X"0F",X"0F",X"00",X"00", + X"79",X"79",X"79",X"79",X"79",X"79",X"79",X"79",X"F9",X"F9",X"79",X"78",X"00",X"01",X"01",X"01", + X"81",X"C1",X"C1",X"E1",X"E1",X"B1",X"B1",X"99",X"99",X"8D",X"8D",X"87",X"87",X"83",X"83",X"81", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"20",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"80",X"C0",X"F0",X"FC",X"C6",X"D9",X"FE",X"FF",X"CF",X"C3",X"C1",X"C0",X"C0",X"C0",X"C0",X"C1", + X"C0",X"C0",X"C0",X"F0",X"F0",X"C0",X"C0",X"E0",X"70",X"30",X"30",X"30",X"30",X"60",X"40",X"00", + X"00",X"40",X"60",X"30",X"30",X"30",X"30",X"30",X"30",X"60",X"40",X"00",X"00",X"40",X"60",X"30", + X"00",X"00",X"01",X"02",X"05",X"05",X"8B",X"CB",X"D6",X"FE",X"FC",X"7F",X"7F",X"3C",X"30",X"00", + X"E0",X"B0",X"10",X"B0",X"F0",X"78",X"7C",X"CC",X"8C",X"8C",X"9C",X"FC",X"F8",X"F8",X"F0",X"E0", + X"EF",X"E7",X"A6",X"8C",X"EE",X"24",X"A6",X"F3",X"FF",X"2E",X"63",X"30",X"84",X"86",X"82",X"00", + X"00",X"00",X"00",X"00",X"20",X"60",X"C0",X"C0",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"01",X"01",X"02",X"00",X"00",X"00",X"01",X"03",X"03",X"0F",X"03",X"0D", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"05",X"0F",X"0F",X"07",X"0F",X"03",X"0D", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"05",X"8F",X"CF",X"C7",X"8F",X"83",X"0D", + X"7E",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3C",X"00",X"00",X"00", + X"F8",X"1C",X"0C",X"30",X"70",X"38",X"3C",X"1C",X"0C",X"18",X"30",X"30",X"34",X"BC",X"1C",X"08", + X"00",X"10",X"08",X"00",X"00",X"00",X"00",X"00",X"40",X"20",X"20",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"00",X"80",X"80",X"80",X"80",X"80",X"C0",X"C0",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"84",X"80",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"3E",X"7E",X"7C",X"7E",X"73",X"D9",X"DC",X"0C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"07",X"0F", + X"0E",X"1C",X"19",X"13",X"17",X"37",X"2F",X"2F",X"EF",X"DF",X"DF",X"BF",X"AF",X"0F",X"07",X"07", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"01",X"00", + X"00",X"03",X"07",X"0C",X"08",X"0A",X"08",X"08",X"09",X"0F",X"07",X"03",X"02",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"06",X"03",X"0D",X"1F",X"11",X"3F",X"7F",X"7F",X"1F",X"1F",X"2F",X"07",X"03",X"03",X"01",X"00", + X"FE",X"86",X"00",X"00",X"C0",X"C0",X"E0",X"E1",X"43",X"06",X"0C",X"0C",X"8D",X"2F",X"07",X"02", + X"00",X"00",X"18",X"BC",X"FC",X"7E",X"FE",X"FE",X"8E",X"8E",X"CE",X"FC",X"7C",X"38",X"F0",X"00", + X"E0",X"F0",X"A0",X"00",X"00",X"54",X"FC",X"F8",X"34",X"18",X"50",X"D0",X"18",X"F8",X"F0",X"C0", + X"00",X"00",X"F8",X"FC",X"A8",X"54",X"FC",X"F8",X"34",X"58",X"50",X"10",X"18",X"F8",X"F0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"80",X"C0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"18",X"00",X"0B",X"1F",X"1F",X"3C",X"70",X"00", + X"07",X"0F",X"1F",X"1F",X"0F",X"0F",X"0F",X"07",X"07",X"07",X"07",X"03",X"03",X"03",X"03",X"03", + X"00",X"00",X"00",X"10",X"78",X"5C",X"6C",X"74",X"6C",X"34",X"19",X"00",X"01",X"01",X"00",X"00", + X"00",X"07",X"0F",X"0F",X"1F",X"3F",X"3F",X"0F",X"0F",X"17",X"03",X"07",X"0F",X"06",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"04",X"06",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"83",X"0F",X"1F",X"78",X"F0", + X"60",X"C1",X"87",X"0F",X"1F",X"3F",X"1F",X"0F",X"0F",X"07",X"07",X"03",X"03",X"03",X"03",X"03", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"02",X"03",X"00",X"00",X"00",X"80",X"C0",X"00",X"00",X"00",X"04",X"02",X"01",X"0B",X"1E", + X"7C",X"F8",X"C1",X"03",X"0F",X"3F",X"7F",X"7F",X"3F",X"1F",X"0F",X"07",X"07",X"03",X"03",X"03", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"80",X"C0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"11",X"1B", + X"FE",X"FF",X"FF",X"FF",X"FF",X"7F",X"2F",X"0F",X"1F",X"07",X"03",X"07",X"0F",X"06",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"0F",X"1F",X"9E",X"0E",X"0C",X"06",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00", + X"00",X"07",X"0F",X"0F",X"1F",X"3F",X"3F",X"0F",X"17",X"07",X"03",X"07",X"0F",X"06",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"10",X"08",X"00",X"00",X"00",X"00",X"00",X"40",X"20",X"20",X"00", + X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"FF", + X"06",X"98",X"00",X"00",X"00",X"04",X"00",X"00",X"10",X"00",X"00",X"C0",X"C0",X"60",X"C0",X"80", + X"00",X"00",X"04",X"04",X"04",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F8",X"8C",X"06",X"02",X"02",X"06",X"8C",X"F8",X"00",X"00",X"FF",X"FF",X"00",X"00",X"FF",X"FF", + X"00",X"00",X"04",X"04",X"04",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F8",X"8C",X"06",X"02",X"02",X"06",X"8C",X"F8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F1",X"E7",X"C3",X"01",X"41",X"81",X"85",X"8D",X"8D",X"C5",X"C1",X"E3",X"FF",X"FC",X"FC",X"FC", + X"FC",X"F8",X"F9",X"F9",X"F1",X"F3",X"F3",X"E3",X"E7",X"C7",X"C7",X"CF",X"8F",X"8F",X"1F",X"1F", + X"8F",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FD", + X"F8",X"FA",X"FB",X"F3",X"F7",X"F7",X"E7",X"EF",X"EF",X"CF",X"CF",X"9F",X"9F",X"1F",X"3F",X"3F", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3F",X"1F",X"00",X"0C",X"0F",X"1F",X"1F",X"3F", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"1F",X"00",X"C0",X"FF", + X"C3",X"C1",X"E0",X"E0",X"F0",X"FC",X"FF",X"FE",X"F1",X"87",X"1F",X"7F",X"FF",X"FF",X"FF",X"FF", + X"30",X"0F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"C0", + X"00",X"00",X"C0",X"C0",X"F0",X"F8",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"3F",X"0F",X"03",X"00", + X"F8",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"80",X"DC",X"C0",X"E0",X"E0",X"E0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"80",X"80", + X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"80",X"E0",X"E0",X"E0",X"F0",X"F0",X"F8",X"F8",X"F8",X"D8",X"DC", + X"54",X"8C",X"FC",X"FC",X"78",X"FC",X"FC",X"AC",X"54",X"50",X"30",X"00",X"00",X"00",X"00",X"00", + X"6F",X"7F",X"7F",X"7E",X"7D",X"7B",X"7B",X"37",X"07",X"0F",X"07",X"07",X"0F",X"1F",X"1F",X"1F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"30",X"E0",X"EF",X"DF",X"DF",X"BF",X"BF",X"F0",X"EF",X"DF",X"9F",X"3F",X"7F",X"67", + X"C1",X"83",X"0F",X"3F",X"5F",X"5F",X"4F",X"6F",X"67",X"73",X"79",X"BC",X"38",X"70",X"FC",X"FE", + X"FF",X"8F",X"8F",X"07",X"05",X"ED",X"7B",X"DF",X"DF",X"3F",X"5F",X"17",X"0E",X"0D",X"0C",X"18", + X"00",X"00",X"00",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F0",X"80",X"80",X"80",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"00",X"00",X"00",X"00",X"00",X"40", + X"20",X"A0",X"80",X"00",X"00",X"06",X"84",X"80",X"80",X"80",X"80",X"A0",X"A0",X"20",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"03",X"07",X"07",X"0F",X"0F",X"0F",X"0F",X"07",X"07",X"07",X"07", + X"00",X"00",X"00",X"00",X"00",X"06",X"1E",X"07",X"3F",X"0F",X"03",X"07",X"0E",X"00",X"00",X"00", + X"00",X"00",X"F0",X"78",X"78",X"1D",X"3F",X"FF",X"FE",X"FE",X"FE",X"FE",X"FD",X"F9",X"F8",X"F0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"08",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"02",X"06",X"4D",X"7F",X"3F",X"1E",X"1C",X"00",X"01",X"01",X"01",X"05",X"0C",X"1E",X"1E",X"1F", + X"3F",X"3F",X"3F",X"3F",X"7F",X"7F",X"7F",X"3F",X"3F",X"1E",X"1E",X"1E",X"1E",X"1E",X"1C",X"1C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F0",X"F8",X"FC",X"FE",X"FE",X"FF",X"FF", + X"FF",X"FE",X"FE",X"FE",X"FE",X"FD",X"F1",X"01",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"80",X"F0",X"FC",X"7F",X"7D",X"2F",X"AF",X"EC",X"FE",X"FE",X"5C",X"DE",X"BE",X"F9",X"E6",X"7C", + X"00",X"08",X"9C",X"7E",X"5E",X"5E",X"BE",X"BF",X"7D",X"7D",X"75",X"78",X"7D",X"3F",X"3F",X"3F", + X"7E",X"DE",X"FE",X"FE",X"3E",X"7C",X"5C",X"30",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"E0",X"F0",X"F8",X"FC",X"FF",X"FF",X"FF",X"FF",X"7F", + X"7F",X"00",X"3F",X"4F",X"3F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FB",X"E7", + X"07",X"0F",X"1F",X"4F",X"67",X"73",X"79",X"3C",X"B3",X"AF",X"8F",X"BE",X"73",X"ED",X"DE",X"DE", + X"DF",X"E6",X"58",X"0A",X"0D",X"07",X"03",X"C1",X"F9",X"DF",X"DF",X"82",X"6A",X"EA",X"FE",X"7C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0F",X"FF",X"1F",X"E3",X"FD",X"FE",X"FF",X"FD",X"FE", + X"FE",X"FE",X"FC",X"F8",X"F0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"0C",X"04",X"80",X"C0",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00", + X"00",X"10",X"08",X"00",X"00",X"00",X"0D",X"3F",X"BC",X"9F",X"5C",X"FF",X"FD",X"F6",X"E0",X"C0", + X"C3",X"81",X"11",X"D4",X"AF",X"6F",X"4F",X"C0",X"6F",X"6F",X"6F",X"E0",X"FE",X"FA",X"FD",X"F5", + X"ED",X"1B",X"B7",X"5F",X"8F",X"3F",X"5B",X"27",X"1C",X"02",X"03",X"03",X"03",X"06",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"BC",X"7F",X"07",X"7F",X"BF",X"FF",X"FE",X"F0",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"10",X"20",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"30",X"70",X"E8",X"D8",X"F0",X"EC",X"FC",X"F8",X"C0", + X"E0",X"60",X"00",X"36",X"2A",X"7E",X"5F",X"5F",X"3F",X"1F",X"1F",X"3F",X"3F",X"71",X"6A",X"FB", + X"FB",X"FA",X"7E",X"FE",X"FC",X"FC",X"F8",X"70",X"20",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"81",X"07",X"0F",X"9F",X"BE",X"71",X"6F", + X"5F",X"BF",X"BF",X"7F",X"6F",X"DF",X"DF",X"DF",X"0F",X"0F",X"1F",X"16",X"19",X"1F",X"0F",X"06", + X"09",X"0E",X"0F",X"0F",X"07",X"03",X"07",X"3F",X"7E",X"FC",X"CF",X"B7",X"FB",X"78",X"3F",X"08", + X"0B",X"15",X"15",X"0E",X"3F",X"71",X"0E",X"0F",X"07",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"80",X"80",X"8C",X"9C",X"15",X"3B",X"BB",X"35",X"1E",X"3F",X"3F",X"3F",X"3F",X"3F",X"3E", + X"3E",X"3E",X"3E",X"7C",X"7C",X"B8",X"E8",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"07",X"07",X"0B", + X"0B",X"1B",X"1C",X"9B",X"D7",X"1B",X"0F",X"03",X"07",X"07",X"07",X"0F",X"0F",X"0F",X"1F",X"1F", + X"1F",X"1F",X"EF",X"CF",X"AE",X"B6",X"BA",X"FC",X"3D",X"19",X"02",X"00",X"7E",X"FE",X"FE",X"F7", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"40",X"40",X"40",X"40",X"80",X"80",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"19",X"1F",X"37",X"2F", + X"2F",X"7E",X"79",X"77",X"77",X"03",X"07",X"07",X"04",X"06",X"0E",X"0F",X"0F",X"1F",X"1F",X"1F", + X"39",X"77",X"EF",X"EF",X"E7",X"58",X"DE",X"F8",X"5D",X"89",X"02",X"00",X"7E",X"FE",X"FE",X"F7", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80", + X"80",X"80",X"80",X"00",X"00",X"00",X"80",X"80",X"80",X"C0",X"C0",X"E0",X"E0",X"E0",X"E0",X"E0", + X"E0",X"D0",X"40",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"01",X"01",X"06",X"0E",X"1E",X"1F",X"3F",X"3F",X"3F",X"3F",X"3F",X"1F", + X"0F",X"0E",X"01",X"C7",X"EF",X"E3",X"F3",X"CF",X"9A",X"AF",X"EF",X"F7",X"7F",X"7F",X"3F",X"1F", + X"1B",X"5D",X"6D",X"3B",X"02",X"3A",X"3E",X"3C",X"1D",X"09",X"02",X"00",X"7E",X"FE",X"FE",X"F7", + X"EB",X"FB",X"FB",X"F7",X"BF",X"1E",X"0D",X"03",X"03",X"03",X"83",X"07",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"80",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"08",X"14",X"2E",X"77",X"75",X"4B",X"FE",X"FC",X"FC", + X"FC",X"FC",X"F8",X"F8",X"F0",X"E0",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"C6",X"E0",X"E0",X"C0",X"C0",X"C0",X"80",X"80",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"30",X"01",X"03",X"07",X"04",X"03",X"07",X"07",X"03",X"00", + X"01",X"03",X"07",X"03",X"03",X"03",X"07",X"07",X"0F",X"0F",X"2F",X"FF",X"FE",X"FE",X"DE",X"46", + X"C1",X"E7",X"A2",X"A9",X"AC",X"2E",X"27",X"97",X"03",X"01",X"03",X"1F",X"3F",X"7E",X"7C",X"FC", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"04",X"C0",X"E8",X"E0",X"E0",X"E0", + X"60",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80",X"80", + X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"1C",X"3E",X"3F",X"1F",X"1F",X"0F",X"0E",X"06",X"03", + X"02",X"01",X"03",X"3F",X"7F",X"7F",X"FF",X"BF",X"7C",X"69",X"0A",X"0F",X"1F",X"1F",X"3F",X"72", + X"00",X"46",X"67",X"63",X"69",X"6C",X"2E",X"27",X"17",X"03",X"01",X"03",X"1F",X"3F",X"7F",X"7F", + X"80",X"80",X"80",X"80",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"40",X"00",X"00",X"00",X"40",X"00",X"40",X"00", + X"00",X"00",X"00",X"00",X"80",X"00",X"30",X"3C",X"7E",X"7E",X"3E",X"3E",X"6C",X"44",X"6C",X"6C", + X"6C",X"78",X"F8",X"F0",X"70",X"A0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"8F",X"0F",X"1F",X"1F",X"1F",X"1F",X"0F",X"0F",X"06", + X"01",X"03",X"07",X"03",X"03",X"03",X"07",X"07",X"0F",X"0F",X"0F",X"1F",X"1F",X"3F",X"3F",X"82", + X"81",X"67",X"E3",X"E9",X"EC",X"2E",X"27",X"17",X"03",X"01",X"03",X"1F",X"3F",X"7E",X"7C",X"FC", + X"FD",X"C3",X"BB",X"76",X"7E",X"7A",X"33",X"01",X"00",X"00",X"01",X"00",X"18",X"1C",X"08",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"08",X"08",X"00",X"90",X"C0",X"C0",X"C0",X"C0",X"00", + X"00",X"00",X"00",X"00",X"E0",X"F0",X"F0",X"F0",X"F0",X"88",X"98",X"D8",X"E8",X"68",X"78",X"F8", + X"70",X"A8",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"20",X"20",X"03",X"0F",X"1F",X"3F",X"3F",X"3E",X"3E",X"1D",X"0F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"30",X"7C",X"7F",X"7F",X"3F",X"3F",X"1F",X"1F",X"0F", + X"06",X"01",X"03",X"07",X"03",X"03",X"03",X"07",X"07",X"0F",X"8F",X"CF",X"FF",X"FF",X"FF",X"32", + X"01",X"47",X"67",X"63",X"69",X"6C",X"2E",X"27",X"17",X"03",X"01",X"03",X"1F",X"3F",X"7F",X"7F", + X"07",X"07",X"00",X"07",X"0F",X"07",X"07",X"07",X"0F",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF",X"BE", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80", + X"80",X"80",X"80",X"80",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"06",X"0F",X"0F",X"9F", + X"1F",X"0E",X"01",X"03",X"07",X"03",X"03",X"03",X"07",X"07",X"FF",X"FF",X"FF",X"FF",X"FF",X"BE", + X"91",X"03",X"47",X"67",X"63",X"69",X"6C",X"2E",X"27",X"17",X"03",X"01",X"03",X"1F",X"3F",X"7F", + X"BE",X"FD",X"C3",X"BB",X"76",X"7F",X"7A",X"33",X"01",X"00",X"00",X"01",X"00",X"00",X"00",X"00"); +begin +process(clk) +begin + if rising_edge(clk) then + data <= rom_data(to_integer(unsigned(addr))); + end if; +end process; +end architecture; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_3.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_3.vhd new file mode 100644 index 00000000..c297fcc1 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_3.vhd @@ -0,0 +1,534 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity popeye_sp_bits_3 is +port ( + clk : in std_logic; + addr : in std_logic_vector(12 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of popeye_sp_bits_3 is + type rom is array(0 to 8191) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"FC",X"00",X"FC",X"C0",X"1E",X"E0",X"1E",X"F0",X"0E",X"F8",X"06",X"FC",X"00",X"F8",X"00",X"F0", + X"0F",X"00",X"07",X"00",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F0",X"E0",X"E0",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"7F",X"3F",X"1F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"F0",X"F0",X"F0", + X"E0",X"E0",X"F0",X"FF",X"FF",X"FF",X"FF",X"FF",X"39",X"98",X"CC",X"CE",X"E6",X"E0",X"E0",X"E0", + X"E0",X"E0",X"F0",X"38",X"18",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"14",X"0A",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"06",X"0E",X"1E",X"1F",X"3F",X"3F", + X"1F",X"1F",X"0F",X"43",X"28",X"04",X"10",X"20",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00", + X"01",X"01",X"03",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"83",X"F7",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"FC",X"F8",X"F8",X"FC",X"FE", + X"FE",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FC",X"F8",X"F0",X"E1",X"C1",X"07",X"0E",X"3F", + X"7F",X"7F",X"7F",X"7F",X"FF",X"FF",X"1F",X"1F",X"0F",X"0E",X"A6",X"A6",X"47",X"87",X"8F",X"4F", + X"5F",X"BF",X"FF",X"FC",X"C0",X"00",X"00",X"00",X"00",X"0F",X"08",X"08",X"10",X"20",X"00",X"00", + X"0F",X"0F",X"07",X"0F",X"0F",X"07",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"12",X"07",X"03",X"00",X"00",X"10",X"00",X"80",X"C0",X"C0",X"E0",X"E0",X"F0",X"F8",X"FC", + X"00",X"10",X"00",X"00",X"7F",X"FE",X"1C",X"00",X"00",X"02",X"00",X"00",X"00",X"00",X"00",X"00", + X"03",X"03",X"07",X"03",X"01",X"00",X"C0",X"E0",X"E0",X"F0",X"F0",X"F8",X"F8",X"FC",X"FE",X"FF", + X"FF",X"7F",X"87",X"E0",X"F8",X"F0",X"00",X"80",X"01",X"0F",X"FF",X"FF",X"FF",X"7F",X"3F",X"0F", + X"40",X"70",X"30",X"10",X"00",X"04",X"00",X"00",X"60",X"70",X"19",X"00",X"00",X"00",X"00",X"00", + X"70",X"FC",X"FF",X"7F",X"1F",X"07",X"00",X"00",X"08",X"00",X"02",X"00",X"00",X"00",X"00",X"00", + X"50",X"78",X"70",X"30",X"10",X"01",X"03",X"03",X"05",X"0F",X"0F",X"47",X"63",X"71",X"BC",X"FF", + X"FF",X"FF",X"7F",X"7F",X"3F",X"1F",X"07",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"06",X"07",X"03",X"10",X"B8",X"DD",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F7",X"8F",X"06", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"3F",X"7F",X"BF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"F0", + X"00",X"00",X"00",X"08",X"0C",X"0E",X"02",X"00",X"00",X"06",X"0F",X"2F",X"7F",X"7F",X"7F",X"7F", + X"BF",X"DF",X"DF",X"7F",X"7F",X"3F",X"1F",X"2F",X"3F",X"1F",X"1F",X"0F",X"03",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01", + X"01",X"02",X"07",X"07",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"7C",X"FF",X"FF",X"7F",X"EF",X"CF",X"9F",X"DF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"1F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"01",X"81",X"C1",X"47",X"E9",X"73",X"A2", + X"40",X"80",X"80",X"E0",X"80",X"00",X"00",X"60",X"84",X"04",X"18",X"00",X"81",X"4F",X"83",X"03", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02", + X"02",X"02",X"01",X"0F",X"1F",X"3F",X"3F",X"7F",X"7F",X"7F",X"7C",X"7C",X"7C",X"7C",X"7C",X"7C", + X"00",X"0F",X"03",X"0F",X"03",X"1F",X"07",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"81",X"81",X"E3",X"25",X"F9",X"31",X"93", + X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"C0",X"80",X"00",X"2A",X"49",X"84",X"00", + X"02",X"02",X"01",X"01",X"01",X"00",X"00",X"00",X"03",X"07",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C0",X"60",X"20",X"80",X"E0",X"F0",X"F8",X"FC",X"FE",X"FF",X"FF",X"FF",X"87",X"83",X"C1",X"E0", + X"F0",X"F0",X"F0",X"F8",X"F8",X"F8",X"FC",X"FC",X"FC",X"F8",X"F8",X"FF",X"FF",X"FF",X"FF",X"F0", + X"F0",X"C1",X"C1",X"C3",X"C3",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F0",X"C0",X"80",X"00",X"00", + X"FF",X"0F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"07", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"07",X"07",X"07", + X"0F",X"0F",X"0F",X"0F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"0F",X"0F", + X"0F",X"07",X"07",X"07",X"03",X"03",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"60",X"38",X"0E",X"07",X"0F",X"3F",X"1F",X"1F",X"0F",X"07",X"07",X"07",X"03",X"00",X"00",X"00", + X"00",X"0E",X"3C",X"78",X"F0",X"C0",X"E0",X"E0",X"F0",X"F8",X"F8",X"F0",X"E0",X"80",X"00",X"00", + X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"07",X"07",X"07",X"07",X"07",X"03",X"01",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7E",X"EF",X"EE",X"C7",X"87",X"83",X"01",X"83",X"83",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"03",X"87",X"C7",X"8F",X"0D",X"09",X"08",X"98",X"C0",X"80",X"00",X"00",X"00", + X"00",X"04",X"0E",X"1C",X"38",X"31",X"3B",X"1F",X"0E",X"07",X"03",X"01",X"00",X"00",X"00",X"00", + X"F8",X"FC",X"FA",X"FA",X"FA",X"F6",X"FC",X"F8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"06",X"06",X"00",X"00",X"0C",X"18",X"38",X"30",X"70",X"70",X"60",X"60",X"00",X"00", + X"00",X"00",X"33",X"33",X"30",X"30",X"30",X"F0",X"F0",X"30",X"30",X"30",X"F0",X"F0",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"07",X"07",X"07",X"07",X"06",X"06",X"06",X"FE",X"FE",X"06",X"06",X"FE",X"FE", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"03",X"07",X"0F",X"1F",X"3F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"7C",X"38", + X"00",X"00",X"1F",X"1F",X"1F",X"1F",X"1F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"1F",X"1F",X"1F",X"00",X"00",X"1F",X"1F",X"1F",X"00",X"00",X"1F",X"1F",X"1F",X"00", + X"00",X"00",X"1E",X"1E",X"1E",X"1E",X"1E",X"1F",X"1F",X"1F",X"1E",X"1E",X"1E",X"1E",X"1E",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"0F",X"1E",X"1C",X"1C",X"1E",X"0F",X"07",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"03",X"03",X"03",X"01",X"00",X"00", + X"00",X"00",X"CF",X"CF",X"C3",X"C3",X"C3",X"CF",X"CF",X"C3",X"C3",X"C3",X"CF",X"CF",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7F",X"3F",X"8F",X"DF",X"FF",X"FF",X"FF",X"FF",X"F1",X"E1",X"E1",X"C1",X"81",X"81",X"8F",X"FE", + X"FF",X"FF",X"FF",X"E3",X"D8",X"FC",X"7F",X"7F",X"7F",X"3F",X"3F",X"1F",X"07",X"01",X"00",X"00", + X"E3",X"C3",X"83",X"07",X"06",X"0E",X"9C",X"F8",X"70",X"60",X"C0",X"80",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"07", + X"07",X"07",X"07",X"07",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"01",X"00",X"00",X"01",X"01",X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"03", + X"03",X"03",X"03",X"03",X"1F",X"1F",X"03",X"03",X"1F",X"1F",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"E0",X"00",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"33",X"00",X"FF",X"00",X"FF",X"00",X"FF",X"00",X"FE",X"00",X"FE",X"00",X"FC",X"00",X"FC",X"00", + X"FC",X"00",X"FC",X"00",X"FE",X"00",X"FF",X"00",X"FF",X"00",X"FE",X"00",X"FC",X"00",X"FC",X"00", + X"3F",X"3F",X"00",X"3F",X"2E",X"2C",X"2A",X"28",X"3F",X"3F",X"3F",X"60",X"E9",X"F5",X"7E",X"3E", + X"00",X"41",X"33",X"07",X"03",X"0F",X"1F",X"1F",X"1F",X"3F",X"3F",X"FE",X"FE",X"FF",X"6F",X"31", + X"00",X"03",X"07",X"0F",X"1F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FE",X"FC",X"78",X"71",X"39",X"0F", + X"00",X"01",X"03",X"07",X"0F",X"1F",X"3F",X"3F",X"3F",X"3F",X"3F",X"FE",X"FE",X"FF",X"6F",X"30", + X"00",X"00",X"00",X"00",X"00",X"C0",X"E0",X"E0",X"F0",X"F0",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8", + X"FF",X"FF",X"FF",X"FF",X"07",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"20",X"20",X"30",X"30",X"38",X"7C",X"1E",X"1E",X"3F",X"1F",X"1F",X"1F",X"0F",X"07", + X"03",X"03",X"0F",X"0F",X"07",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"60",X"F0",X"F2",X"FD",X"FD",X"FD",X"FB",X"FB", + X"F7",X"F7",X"6E",X"2C",X"18",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"81",X"C3",X"E7",X"1F",X"03",X"C3",X"7F",X"3F", + X"3F",X"1D",X"1B",X"0E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"60",X"F0",X"F0",X"F8",X"FC",X"FF",X"FF",X"FF", + X"CF",X"C0",X"E0",X"F0",X"F8",X"FC",X"FE",X"FF",X"FF",X"7F",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"07",X"07",X"03",X"03",X"0F",X"0F", + X"07",X"0F",X"1F",X"1F",X"3F",X"3F",X"7E",X"7C",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00", + X"00",X"47",X"C3",X"F9",X"7F",X"3E",X"03",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"03",X"01",X"01",X"00",X"88",X"C9",X"DD",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"EF",X"EE", + X"EC",X"F0",X"F9",X"F7",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7E",X"7C",X"78",X"20", + X"30",X"78",X"F8",X"F8",X"F1",X"6D",X"07",X"07",X"1F",X"FE",X"F4",X"C8",X"14",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"3F",X"3F",X"1F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"7F",X"0F",X"1F",X"3F",X"7F",X"E7",X"C7",X"07",X"27",X"E6",X"E0",X"F0",X"E3",X"D1",X"F3", + X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"C0",X"00",X"00",X"80",X"C0",X"C0",X"E0",X"E0",X"E0",X"E0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"01",X"02",X"00",X"00", + X"01",X"01",X"00",X"40",X"28",X"04",X"10",X"20",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00", + X"01",X"01",X"01",X"03",X"02",X"02",X"02",X"01",X"06",X"04",X"08",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"3A",X"0E",X"06",X"66",X"64",X"CC",X"38",X"F0",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C0",X"F0",X"F9",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"FE",X"FC",X"FE",X"FE",X"FF",X"FF", + X"F8",X"FC",X"FC",X"E0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C1",X"FF",X"FB", + X"00",X"00",X"FF",X"FF",X"00",X"00",X"FD",X"FD",X"FD",X"FD",X"FD",X"00",X"FD",X"FD",X"FD",X"FD", + X"FD",X"00",X"FD",X"FD",X"FD",X"FD",X"FD",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"7E", + X"00",X"00",X"03",X"01",X"20",X"2C",X"2D",X"2D",X"0D",X"2D",X"21",X"2C",X"2D",X"2D",X"0D",X"2D", + X"21",X"2C",X"2D",X"2D",X"0D",X"05",X"00",X"08",X"08",X"08",X"04",X"04",X"06",X"02",X"01",X"00", + X"FD",X"FE",X"FF",X"7F",X"1F",X"8F",X"26",X"C6",X"D4",X"E4",X"F0",X"E6",X"A4",X"94",X"10",X"50", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"00",X"00",X"00",X"00",X"00", + X"03",X"7B",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10", + X"18",X"18",X"1C",X"DF",X"EF",X"3F",X"1B",X"1D",X"9E",X"1F",X"9F",X"FF",X"DF",X"9F",X"DF",X"DF", + X"00",X"00",X"80",X"CF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"F8",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"83",X"FF", + X"FF",X"F7",X"3F",X"C0",X"FF",X"3F",X"1F",X"1F",X"9F",X"1F",X"9F",X"FF",X"DF",X"9F",X"DF",X"DF", + X"BF",X"BF",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"DF",X"0F",X"03",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"12",X"12",X"14",X"04",X"49",X"40",X"A0",X"98",X"81",X"C3",X"FF",X"FF",X"7F",X"7C",X"3E",X"06", + X"3F",X"3D",X"1E",X"1C",X"1C",X"0E",X"0F",X"17",X"07",X"0B",X"01",X"01",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"C1",X"E2",X"E0",X"70",X"3A",X"B8",X"B8",X"F4",X"78",X"F0",X"90",X"C8",X"00", + X"C0",X"C0",X"C0",X"C0",X"C7",X"8F",X"FF",X"FF",X"FF",X"E7",X"C3",X"FF",X"FF",X"FF",X"FF",X"E7", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"20",X"90", + X"F8",X"BD",X"BF",X"BF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"C0",X"80",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"C0",X"E0",X"E0",X"E0",X"E0",X"E0",X"C0",X"F0",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"F7",X"F3",X"F2",X"FD",X"FD",X"FD",X"3B",X"27",X"DF",X"EF",X"DF",X"3F",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"7F",X"FF",X"7E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F8",X"FB",X"FB",X"FB",X"FB",X"7B",X"8F",X"FF",X"FF",X"FF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"03", + X"07",X"07",X"07",X"07",X"07",X"4F",X"8F",X"8F",X"CF",X"5F",X"7F",X"7F",X"7F",X"FF",X"DF",X"C7", + X"80",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"03",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"01",X"01", + X"01",X"03",X"07",X"0F",X"1F",X"3F",X"FF",X"FF",X"FB",X"F7",X"7F",X"EF",X"DF",X"BF",X"7F",X"7F", + X"78",X"70",X"E0",X"E9",X"FE",X"C6",X"B3",X"B9",X"9C",X"EE",X"F7",X"FB",X"9C",X"0C",X"8F",X"5F", + X"82",X"A4",X"C8",X"10",X"E0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"08",X"0C",X"0F",X"0F",X"07",X"03",X"04",X"07",X"03",X"03",X"01",X"01", + X"01",X"01",X"00",X"00",X"01",X"00",X"02",X"01",X"01",X"01",X"01",X"02",X"04",X"08",X"0A",X"0B", + X"0B",X"09",X"1C",X"1E",X"27",X"03",X"05",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7F",X"FF",X"FF",X"FF",X"3F",X"3F",X"FE",X"FF",X"FE",X"4C",X"CC",X"FC",X"FF",X"DE",X"F6",X"F7", + X"79",X"78",X"BC",X"DC",X"DE",X"EF",X"F7",X"FB",X"30",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"07",X"0F",X"0B",X"09",X"07",X"03",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"03",X"03",X"03", + X"3F",X"3F",X"1F",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C4", + X"34",X"02",X"09",X"30",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"01",X"07",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F1",X"F1", + X"00",X"00",X"00",X"00",X"00",X"03",X"07",X"0F",X"0F",X"1F",X"1E",X"1E",X"0C",X"00",X"00",X"01", + X"1F",X"1F",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"C0",X"C0",X"C0",X"C0", + X"00",X"00",X"00",X"C0",X"E0",X"E0",X"70",X"38",X"B8",X"B8",X"F4",X"78",X"F0",X"90",X"C8",X"00", + X"03",X"07",X"16",X"0D",X"0D",X"0D",X"1E",X"0F",X"0E",X"17",X"01",X"02",X"00",X"00",X"00",X"00", + X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FD",X"05",X"00",X"D0",X"DE",X"DE",X"DE",X"DE",X"06",X"D8", + X"DE",X"DE",X"DE",X"DE",X"06",X"D8",X"DE",X"DE",X"DE",X"DE",X"02",X"00",X"F8",X"FF",X"00",X"00", + X"BE",X"BE",X"1F",X"1F",X"17",X"17",X"37",X"77",X"FF",X"FE",X"F0",X"00",X"02",X"02",X"02",X"02", + X"02",X"00",X"02",X"02",X"02",X"02",X"02",X"00",X"02",X"02",X"02",X"02",X"00",X"00",X"00",X"00", + X"07",X"05",X"04",X"03",X"00",X"1F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF", + X"3F",X"FF",X"FF",X"FF",X"FF",X"7F",X"BF",X"BF",X"DF",X"EF",X"FF",X"FF",X"FF",X"FE",X"FD",X"3E", + X"4F",X"33",X"82",X"FF",X"3A",X"10",X"00",X"28",X"50",X"F8",X"68",X"00",X"80",X"F8",X"F4",X"08", + X"F7",X"FF",X"FF",X"FF",X"7F",X"FE",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7E",X"1E", + X"FF",X"7F",X"FC",X"FC",X"4F",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"18",X"3E",X"7F",X"7F", + X"BE",X"BE",X"1F",X"1F",X"17",X"17",X"37",X"77",X"FB",X"FB",X"FB",X"73",X"07",X"0F",X"07",X"07", + X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"04", + X"04",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FE",X"FE",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"FC",X"FE",X"FC",X"F8", + X"F8",X"F0",X"F0",X"B0",X"B1",X"B2",X"B2",X"B4",X"DC",X"D8",X"E8",X"F8",X"F0",X"E0",X"C0",X"88", + X"08",X"10",X"20",X"00",X"00",X"20",X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF", + X"3F",X"3F",X"FF",X"BF",X"9F",X"8F",X"87",X"C3",X"61",X"F0",X"B0",X"F8",X"FA",X"FB",X"FF",X"7F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"05",X"08",X"01",X"02",X"04",X"00",X"01", + X"01",X"01",X"01",X"07",X"0F",X"1F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"F8",X"FC",X"FC",X"F8",X"F8",X"E0",X"E0",X"E0",X"F0",X"F0",X"F0",X"F0",X"E0",X"E0",X"E0",X"E0", + X"F0",X"C0",X"C0",X"80",X"80",X"80",X"80",X"C0",X"C0",X"E0",X"F0",X"FF",X"FF",X"FF",X"FC",X"00", + X"FE",X"FF",X"FF",X"FF",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"7F",X"3F",X"0F",X"1F",X"3F",X"7F", + X"FF",X"FF",X"FF",X"FF",X"9F",X"9F",X"FF",X"FF",X"FF",X"7F",X"FF",X"FF",X"7F",X"3F",X"3F",X"1F", + X"3F",X"1F",X"1F",X"5F",X"8F",X"CF",X"7F",X"6F",X"4F",X"EF",X"EF",X"CF",X"DF",X"BF",X"79",X"FE", + X"09",X"0A",X"12",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"81",X"47",X"7F",X"7F",X"3F",X"3F",X"01",X"0F",X"0F",X"06",X"06",X"02",X"02", + X"03",X"03",X"03",X"01",X"05",X"03",X"07",X"03",X"03",X"01",X"00",X"00",X"00",X"01",X"00",X"04", + X"03",X"07",X"0B",X"02",X"04",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C0",X"E0",X"F0",X"F0",X"F8",X"FC",X"FC",X"FC",X"DE",X"DE",X"BE",X"BE",X"BE",X"7C",X"78",X"79", + X"F2",X"E0",X"00",X"00",X"7C",X"F6",X"F6",X"FB",X"FB",X"FB",X"FB",X"FB",X"FB",X"F7",X"77",X"0E", + X"3F",X"3F",X"3F",X"1F",X"1F",X"3F",X"7F",X"7F",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"80",X"E0",X"FC",X"F7",X"F3",X"F9",X"FE",X"FF",X"7F",X"1F",X"DC",X"BA",X"F7", + X"F7",X"E1",X"5C",X"5F",X"7F",X"2E",X"04",X"00",X"0C",X"05",X"0B",X"19",X"00",X"03",X"05",X"02", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"07",X"0F",X"3F",X"3F",X"3F",X"36",X"26", + X"CF",X"07",X"03",X"19",X"3C",X"3F",X"3F",X"3F",X"0E",X"00",X"00",X"00",X"00",X"00",X"40",X"00", + X"00",X"04",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F7",X"FF",X"FF",X"7F",X"FF",X"FE",X"FC",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"1F",X"37",X"33",X"1F",X"01",X"0F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"70",X"30",X"7F", + X"00",X"00",X"00",X"00",X"0F",X"17",X"1F",X"1F",X"0F",X"0F",X"3F",X"3F",X"3F",X"30",X"30",X"7F", + X"80",X"E0",X"F0",X"F8",X"F8",X"F0",X"F0",X"F0",X"E0",X"F8",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FE",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"E0",X"F8", + X"FC",X"FF",X"FF",X"FB",X"FB",X"FB",X"FD",X"FE",X"FF",X"FF",X"FE",X"FC",X"F0",X"E0",X"60",X"C0", + X"00",X"00",X"00",X"00",X"03",X"07",X"05",X"0E",X"1F",X"1F",X"3F",X"3F",X"3F",X"30",X"30",X"7F", + X"FF",X"FF",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF", + X"7D",X"35",X"1D",X"3F",X"17",X"02",X"00",X"05",X"02",X"07",X"05",X"04",X"02",X"03",X"05",X"09", + X"00",X"00",X"00",X"00",X"00",X"00",X"06",X"01",X"09",X"02",X"04",X"09",X"02",X"00",X"00",X"00", + X"00",X"00",X"3E",X"37",X"13",X"0F",X"C7",X"E7",X"F7",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"0F",X"7F",X"FF",X"DE",X"CD",X"7F",X"07",X"0F",X"3F",X"7F",X"7F",X"7F",X"3F",X"30",X"30",X"7F", + X"FE",X"7F",X"3F",X"FF",X"1F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FE",X"FE",X"FE",X"FF",X"FF",X"0F",X"06",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01", + X"BF",X"BF",X"BF",X"DF",X"EF",X"F0",X"FF",X"FE",X"FE",X"FC",X"FC",X"F8",X"F0",X"E0",X"60",X"C0", + X"E0",X"E0",X"F0",X"F8",X"F8",X"FC",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F0",X"70",X"7F", + X"FF",X"FF",X"7F",X"7F",X"FF",X"FF",X"FF",X"F3",X"E4",X"48",X"40",X"C0",X"C0",X"E0",X"F0",X"F8", + X"3F",X"3F",X"FF",X"FF",X"DF",X"CF",X"C7",X"63",X"E1",X"B0",X"F8",X"3C",X"1E",X"0B",X"2F",X"1F", + X"7F",X"3E",X"10",X"3F",X"17",X"02",X"00",X"05",X"02",X"07",X"05",X"00",X"03",X"07",X"09",X"02", + X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"E0",X"F0",X"F0", + X"F0",X"F9",X"FB",X"FB",X"FB",X"FF",X"FF",X"7F",X"7E",X"7E",X"7E",X"7C",X"3C",X"38",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"80",X"C0",X"F0",X"FC",X"FE",X"0E",X"FC",X"F0",X"FE",X"FF",X"FF",X"7F",X"FF",X"7F",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FD",X"FC",X"F8",X"F8",X"F0",X"E0",X"C0",X"D0",X"F8", + X"F0",X"F0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"07",X"0F",X"0F",X"0F",X"0F",X"04",X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00", + X"01",X"03",X"07",X"1F",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"07",X"0F",X"0F",X"0F",X"3F",X"3F", + X"1F",X"04",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"60",X"A0",X"80",X"80",X"80",X"00", + X"00",X"00",X"08",X"0C",X"5C",X"7F",X"3F",X"0F",X"03",X"03",X"01",X"01",X"18",X"18",X"10",X"88", + X"3C",X"22",X"02",X"22",X"62",X"86",X"10",X"41",X"C0",X"E0",X"C0",X"E0",X"E0",X"10",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"06",X"2F",X"1E",X"0F",X"0F",X"0F",X"07",X"03",X"01",X"00",X"00",X"00", + X"07",X"0F",X"0C",X"0C",X"0F",X"07",X"00",X"00",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"F9",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"78",X"30",X"00",X"00", + X"03",X"08",X"00",X"00",X"00",X"00",X"00",X"04",X"04",X"00",X"02",X"00",X"00",X"00",X"01",X"01", + X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"07",X"FF",X"FF",X"FF",X"7F",X"FF",X"BF",X"9B",X"01", + X"01",X"03",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"06",X"0C",X"06",X"03",X"01", + X"00",X"00",X"00",X"08",X"1C",X"0C",X"06",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"06",X"0C",X"18", + X"3F",X"3F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"3F",X"3F",X"1F",X"1F",X"0F",X"07", + X"03",X"0F",X"1F",X"3F",X"3F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F", + X"7F",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC", + X"F8",X"F8",X"F0",X"F0",X"E0",X"E0",X"C0",X"C0",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"C0",X"E0",X"E0",X"F0",X"F0",X"F8",X"F8", + X"FC",X"FC",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"3F",X"1F", + X"03",X"07",X"1F",X"1F",X"3F",X"3F",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"7F",X"7F",X"3F",X"1F",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"03", + X"03",X"03",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"1E",X"3F", + X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3F",X"1F",X"07",X"00", + X"F8",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"7F",X"3F",X"1F",X"0F",X"0F",X"0F",X"1F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"1F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"1F", + X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"F0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"07",X"0F",X"0F",X"1F",X"1F",X"3F", + X"3F",X"3F",X"7F",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"7F",X"3F",X"3F",X"3F",X"3F", + X"1F",X"1F",X"1F",X"0F",X"0F",X"07",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"0F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"E0",X"C0",X"80",X"80",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"C0",X"F0",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"C0",X"F0",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3F",X"1F",X"1F",X"0F",X"0F",X"0F", + X"0F",X"0F",X"0F",X"1F",X"1F",X"3F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"F8",X"E0",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"03",X"07",X"07",X"0F",X"0F",X"1F",X"1F",X"1F",X"3F",X"3F",X"3F",X"3F",X"7F", + X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"3F", + X"3F",X"3F",X"3F",X"3F",X"3F",X"1F",X"1F",X"0F",X"07",X"03",X"01",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"78", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"C7",X"81",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"E3",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"03",X"0F",X"1F",X"3F",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FE", + X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"F8",X"F8",X"F0",X"F0",X"F0",X"E0",X"C0",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"07", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"03",X"07",X"07",X"0F",X"0F",X"1F",X"1F", + X"81",X"E3",X"FB",X"FC",X"FF",X"FF",X"FF",X"FE",X"7E",X"3D",X"3B",X"7F",X"7F",X"7F",X"7F",X"FF", + X"00",X"00",X"C0",X"E0",X"F0",X"F8",X"F8",X"FC",X"FC",X"FE",X"FE",X"FB",X"F9",X"F1",X"F1",X"E1", + X"FF",X"FE",X"FC",X"F8",X"F0",X"F0",X"E0",X"C0",X"C0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"03",X"0F",X"3F",X"7F",X"FF",X"FF",X"FF",X"F3",X"C3",X"83",X"03",X"03",X"03",X"03",X"83", + X"03",X"03",X"03",X"0F",X"0F",X"03",X"03",X"07",X"0E",X"0C",X"0C",X"0D",X"0D",X"07",X"03",X"01", + X"01",X"03",X"07",X"0D",X"0D",X"0C",X"0C",X"0D",X"0D",X"07",X"03",X"01",X"01",X"03",X"07",X"0D", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"07",X"0F",X"0F",X"0F",X"0F",X"1F",X"3F",X"3F",X"3F",X"3F",X"3F",X"3F",X"1E",X"1E",X"0F",X"06", + X"FF",X"FF",X"7F",X"7F",X"FF",X"FF",X"7F",X"3F",X"1E",X"4C",X"8C",X"18",X"00",X"21",X"61",X"00", + X"FC",X"F8",X"F8",X"F8",X"F8",X"F8",X"F2",X"F0",X"F0",X"F0",X"FE",X"FE",X"FC",X"FC",X"FC",X"FC", + X"FF",X"FE",X"FC",X"FC",X"F8",X"F8",X"FB",X"F9",X"F0",X"F0",X"F1",X"FF",X"7F",X"3F",X"7C",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"0F",X"06",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FC",X"F8",X"F8",X"F8",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F8",X"FC",X"FC",X"FC",X"FC", + X"FF",X"FE",X"FC",X"FC",X"F8",X"F8",X"FB",X"F9",X"F0",X"F0",X"F1",X"FF",X"7F",X"3F",X"7C",X"00", + X"00",X"00",X"80",X"FC",X"FE",X"CE",X"C4",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"01",X"01",X"02",X"00",X"00",X"03",X"03",X"01",X"00",X"00",X"00",X"00", + X"07",X"0E",X"0C",X"1C",X"18",X"18",X"18",X"11",X"10",X"D2",X"F4",X"F1",X"6A",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"C0",X"E0",X"F8",X"FC",X"FE",X"FF", + X"FE",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"06",X"1D",X"33",X"77",X"6F",X"EF",X"EF",X"EF",X"EF",X"EF",X"EF",X"EF",X"77",X"77",X"77",X"3B", + X"3B",X"1B",X"1D",X"0D",X"06",X"02",X"00",X"03",X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"01", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F0",X"F8",X"FD", + X"F0",X"F0",X"F8",X"F0",X"F0",X"F0",X"F8",X"F8",X"F8",X"F8",X"FC",X"FC",X"9E",X"8E",X"07",X"CB", + X"0E",X"1F",X"3F",X"3F",X"3F",X"3F",X"15",X"04",X"04",X"44",X"44",X"88",X"30",X"60",X"60",X"40", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"03",X"07",X"1F",X"7F",X"FF",X"FB",X"FB", + X"F6",X"A6",X"4F",X"0F",X"1F",X"1C",X"18",X"00",X"01",X"00",X"00",X"00",X"01",X"01",X"03",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"07",X"1F",X"0F",X"06",X"02",X"10",X"08",X"00",X"00",X"00",X"00", + X"FC",X"BC",X"5E",X"EC",X"FC",X"FC",X"FC",X"BE",X"DE",X"FF",X"FF",X"FF",X"87",X"83",X"CE",X"00", + X"00",X"33",X"3F",X"7F",X"7D",X"7C",X"3C",X"06",X"86",X"86",X"0E",X"1E",X"FC",X"F8",X"80",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"03",X"03",X"07",X"06",X"06",X"06",X"04",X"04",X"35",X"3D",X"3C",X"1A",X"00",X"00",X"00", + X"7C",X"FE",X"D4",X"00",X"00",X"00",X"01",X"01",X"01",X"00",X"02",X"07",X"07",X"01",X"00",X"00", + X"07",X"0F",X"0F",X"0C",X"00",X"00",X"08",X"3F",X"7F",X"7F",X"FF",X"FF",X"7F",X"7F",X"3F",X"1F", + X"00",X"00",X"01",X"03",X"03",X"07",X"0F",X"3F",X"7F",X"7F",X"FF",X"FF",X"7F",X"7F",X"3F",X"1F", + X"FC",X"3C",X"DE",X"EC",X"F4",X"FC",X"FC",X"FE",X"FE",X"FF",X"FF",X"87",X"03",X"01",X"CE",X"00", + X"00",X"32",X"7F",X"7F",X"7D",X"3C",X"0C",X"8C",X"9C",X"3C",X"78",X"F0",X"E0",X"00",X"00",X"00", + X"00",X"00",X"03",X"0F",X"1F",X"1E",X"34",X"34",X"20",X"10",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FE",X"FE",X"8E",X"0C",X"1C",X"18",X"38",X"70",X"F8",X"00",X"00",X"FC",X"F8",X"F8",X"F8",X"F8", + X"F8",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"00",X"00",X"00",X"00",X"03",X"07",X"0F",X"1F",X"3F",X"7B",X"73",X"C1",X"81",X"63",X"03",X"00", + X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FB",X"C3",X"07",X"06",X"0E",X"8E",X"CC",X"9E",X"9E",X"00",X"00",X"E0",X"FC",X"FE", + X"FC",X"F8",X"F8",X"F8",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FC",X"FC",X"FE",X"FC",X"FC",X"EC",X"D4",X"BC",X"BC",X"FE",X"FF",X"FF",X"C7",X"83",X"86",X"80", + X"00",X"32",X"7F",X"7F",X"79",X"3C",X"0C",X"0C",X"9C",X"3C",X"78",X"F0",X"E0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FC",X"FC",X"FE",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"FE",X"C6",X"83",X"01",X"87",X"03", + X"07",X"33",X"7F",X"7F",X"79",X"3C",X"0C",X"8C",X"9C",X"3C",X"78",X"F0",X"E0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"0F",X"07",X"02",X"12",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"E1",X"F9",X"FC",X"FE",X"FF", + X"FF",X"FF",X"FF",X"FC",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"01",X"07",X"0F",X"1F",X"3F",X"3F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"87",X"01",X"00",X"00", + X"00",X"03",X"1F",X"3F",X"7F",X"FF",X"3F",X"1F",X"1F",X"0F",X"0F",X"07",X"07",X"03",X"01",X"00", + X"7F",X"3F",X"3F",X"3F",X"3F",X"1F",X"1F",X"1F",X"1F",X"1F",X"1F",X"0F",X"0F",X"0F",X"07",X"00", + X"00",X"01",X"03",X"07",X"0F",X"1F",X"3F",X"3F",X"7F",X"7F",X"7F",X"7F",X"7F",X"7F",X"3E",X"1C", + X"FF",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"FF", + X"FF",X"FF",X"C0",X"60",X"60",X"10",X"18",X"18",X"04",X"04",X"06",X"01",X"03",X"07",X"03",X"01", + X"00",X"01",X"03",X"07",X"07",X"07",X"07",X"06",X"06",X"06",X"07",X"07",X"06",X"06",X"07",X"07", + X"00",X"01",X"03",X"06",X"06",X"07",X"07",X"06",X"06",X"06",X"07",X"07",X"06",X"06",X"07",X"07", + X"00",X"01",X"03",X"07",X"07",X"07",X"07",X"06",X"06",X"06",X"FE",X"FE",X"06",X"06",X"FE",X"FE", + X"00",X"01",X"03",X"06",X"06",X"07",X"07",X"06",X"06",X"06",X"FE",X"FE",X"06",X"06",X"FE",X"FE", + X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"0F",X"1F",X"1F",X"3F",X"3F",X"3F",X"3F",X"3F",X"3F", + X"3F",X"3F",X"3F",X"3F",X"1F",X"0F",X"07",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"03",X"03",X"01",X"09",X"0D",X"0D",X"09",X"01",X"43",X"67",X"7F",X"3F",X"3F", + X"3F",X"3F",X"1F",X"1F",X"0F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"FE",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"0F",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"E0",X"F0",X"F8",X"FC",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"81",X"E3",X"FB",X"FC",X"FF",X"FF",X"FF",X"FE",X"7E",X"3D",X"3B",X"7F",X"7F",X"7F",X"7F",X"FF", + X"07",X"1F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FD",X"FC",X"FC",X"F8",X"F8",X"F0",X"E0",X"E0",X"E0", + X"C4",X"C8",X"D0",X"F0",X"F0",X"FA",X"FE",X"FC",X"F0",X"E0",X"C0",X"C0",X"80",X"00",X"00",X"00", + X"00",X"00",X"80",X"00",X"80",X"00",X"00",X"40",X"F0",X"E0",X"C0",X"C0",X"C0",X"80",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"FC",X"FC",X"F8", + X"F8",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F6",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"78",X"FC",X"FE",X"FC",X"FC",X"F8",X"F0",X"E0",X"00",X"00",X"00",X"00",X"00", + X"03",X"07",X"07",X"07",X"07",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7F",X"FF",X"FF",X"FF",X"79",X"03",X"07",X"0F",X"0F",X"1F",X"1F",X"1F",X"1F",X"0F",X"00",X"02", + X"07",X"0B",X"01",X"01",X"0D",X"0F",X"1F",X"1F",X"1F",X"1F",X"0B",X"00",X"00",X"00",X"00",X"00", + X"00",X"04",X"04",X"00",X"00",X"03",X"04",X"08",X"08",X"08",X"08",X"1C",X"1C",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"04",X"04",X"1C",X"04",X"0E",X"38",X"10",X"10",X"08", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"06",X"0E", + X"1E",X"7E",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"EF",X"C7",X"83",X"02", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"60",X"F8",X"FC",X"3E",X"0F",X"07", + X"0F",X"1E",X"3E",X"3C",X"7C",X"7E",X"7F",X"7F",X"3F",X"FF",X"3F",X"0F",X"87",X"C3",X"83",X"01", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"03",X"03",X"52",X"90",X"00", + X"40",X"00",X"00",X"00",X"01",X"03",X"07",X"00",X"04",X"06",X"05",X"10",X"38",X"3C",X"0E",X"03", + X"2C",X"26",X"1F",X"07",X"03",X"03",X"07",X"0F",X"3E",X"3C",X"98",X"D0",X"C0",X"E0",X"E0",X"F0", + X"F0",X"FA",X"FB",X"FB",X"FB",X"FA",X"F8",X"88",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"87",X"4F",X"1F", + X"3E",X"3C",X"BE",X"FE",X"7F",X"FF",X"BF",X"BF",X"1F",X"1F",X"0F",X"0F",X"07",X"07",X"03",X"01", + X"00",X"00",X"00",X"00",X"01",X"43",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"06",X"04", + X"00",X"18",X"38",X"1C",X"1F",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"07",X"1C",X"20",X"41",X"41",X"40",X"40",X"40",X"E0",X"E1",X"00", + X"F0",X"F0",X"F9",X"FB",X"FF",X"FF",X"FF",X"FF",X"7C",X"18",X"C0",X"20",X"A0",X"80",X"90",X"08", + X"00",X"80",X"00",X"00",X"B2",X"7E",X"7C",X"F8",X"F8",X"F0",X"80",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"7F",X"FF",X"FF",X"FF",X"7B",X"03",X"01",X"01",X"01",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"05", + X"03",X"03",X"03",X"03",X"03",X"03",X"01",X"01",X"03",X"03",X"07",X"0F",X"1F",X"1F",X"1F",X"0E", + X"00",X"00",X"00",X"01",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FC",X"FE",X"FE",X"3E",X"7C",X"FC",X"F8",X"FE",X"FF",X"FF",X"FF",X"7F",X"1F",X"0F",X"3F",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"F8",X"E0",X"00",X"00",X"40",X"00", + X"40",X"00",X"00",X"00",X"34",X"3C",X"7C",X"F8",X"F8",X"F8",X"F8",X"F0",X"E0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"F8",X"E0",X"10", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"04",X"07", + X"07",X"03",X"03",X"01",X"01",X"01",X"00",X"01",X"00",X"00",X"00",X"01",X"00",X"00",X"00",X"00", + X"08",X"03",X"04",X"08",X"08",X"10",X"10",X"10",X"38",X"38",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"30",X"20",X"00",X"00", + X"00",X"00",X"00",X"00",X"FF",X"FF",X"FB",X"7C",X"7E",X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"F0", + X"F8",X"F8",X"F0",X"F8",X"F8",X"FC",X"0C",X"00",X"00",X"20",X"14",X"0C",X"88",X"C0",X"E0",X"FE", + X"FE",X"FA",X"F2",X"F2",X"E2",X"02",X"02",X"12",X"8E",X"87",X"07",X"47",X"87",X"0F",X"03",X"0B", + X"13",X"07",X"87",X"C3",X"E3",X"E1",X"E0",X"F0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"06",X"1D",X"3B",X"7B",X"77",X"F7", + X"EF",X"EF",X"1F",X"F7",X"6F",X"0F",X"1F",X"1E",X"1C",X"08",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"03",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"38",X"5C",X"6E",X"76",X"36",X"16",X"D6",X"F6",X"F4",X"F2",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC", + X"FC",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"09",X"11",X"11",X"20",X"60",X"30",X"00",X"00",X"00",X"00",X"08",X"00", + X"00",X"00",X"00",X"00",X"0F",X"11",X"1E",X"0F",X"03",X"0F",X"1F",X"3F",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"3F",X"1F",X"5F",X"3F",X"3F",X"BF",X"5E",X"1E",X"9C",X"9C",X"1C",X"3C",X"38", + X"38",X"3E",X"FE",X"FE",X"FC",X"FC",X"F8",X"F8",X"F8",X"F8",X"F0",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01", + X"03",X"07",X"07",X"07",X"07",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"02",X"01",X"01",X"01",X"02",X"02",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"FE",X"FF",X"FF",X"DF",X"1F",X"3E",X"3E",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FC",X"FC",X"FC",X"FC",X"F8",X"F8", + X"F8",X"FE",X"FF",X"FF",X"FF",X"FE",X"FC",X"FC",X"F8",X"F8",X"F0",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"78",X"FD",X"FE",X"FC",X"FC",X"F8",X"F0",X"E0",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"07",X"0F",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"C0",X"F0",X"F0",X"F1",X"E3",X"E2",X"F3",X"FB",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8", + X"F8",X"FC",X"FE",X"FE",X"FE",X"FC",X"F8",X"78",X"30",X"60",X"00",X"00",X"00",X"80",X"84",X"D2", + X"00",X"00",X"00",X"00",X"03",X"03",X"03",X"03",X"07",X"07",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"05",X"06",X"03",X"00",X"00",X"00",X"00",X"02",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FE",X"FC",X"F8",X"F0",X"F0",X"F8",X"F8",X"F0",X"E0",X"E0",X"E0",X"E0",X"E0",X"E0",X"F0",X"F0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"9F",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3E",X"3E",X"1C",X"1C",X"98",X"08",X"18",X"98",X"98", + X"FC",X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"F8",X"78",X"30",X"60",X"00",X"00",X"40",X"20",X"A4", + X"00",X"00",X"00",X"00",X"7F",X"FF",X"FF",X"7F",X"1E",X"1E",X"1E",X"BF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"07",X"0F",X"0F",X"07",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"C7",X"0F",X"0F",X"17",X"02",X"32",X"60",X"50",X"88",X"C0",X"F0",X"F8", + X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"1C",X"BE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"F8",X"F8",X"F8",X"F8",X"F8",X"F8", + X"F8",X"F8",X"FF",X"FF",X"FF",X"FF",X"FD",X"78",X"30",X"60",X"00",X"00",X"00",X"80",X"84",X"D2", + X"50",X"12",X"20",X"00",X"00",X"20",X"A6",X"7E",X"FF",X"FF",X"FE",X"7C",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01", + X"05",X"01",X"03",X"01",X"00",X"00",X"00",X"00",X"04",X"50",X"28",X"20",X"18",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"1F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE", + X"FF",X"FF",X"FF",X"FF",X"FD",X"FC",X"FC",X"F8",X"FC",X"FC",X"FC",X"F8",X"F8",X"F8",X"F8",X"F9", + X"FB",X"FF",X"FF",X"FF",X"FF",X"FC",X"F8",X"F8",X"78",X"30",X"60",X"00",X"00",X"40",X"20",X"A4", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"0F",X"1F",X"1F",X"3E",X"3C",X"3C",X"18",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"30",X"0C",X"10",X"10",X"0C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"08",X"16",X"09", + X"00",X"00",X"00",X"00",X"7C",X"FF",X"FF",X"7F",X"07",X"0F",X"1F",X"3F",X"7F",X"7F",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"C7",X"0F",X"0F",X"17",X"02",X"32",X"60",X"50",X"88",X"C0",X"F0",X"F8", + X"F0",X"F8",X"FF",X"FF",X"FE",X"FC",X"F8",X"F8",X"F8",X"78",X"30",X"60",X"00",X"00",X"40",X"A4", + X"22",X"40",X"02",X"00",X"80",X"80",X"20",X"A6",X"7E",X"FF",X"FF",X"FE",X"7C",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"03", + X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"08",X"16",X"09", + X"08",X"14",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00"); +begin +process(clk) +begin + if rising_edge(clk) then + data <= rom_data(to_integer(unsigned(addr))); + end if; +end process; +end architecture; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_4.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_4.vhd new file mode 100644 index 00000000..b41ed1ec --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_bits_4.vhd @@ -0,0 +1,534 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity popeye_sp_bits_4 is +port ( + clk : in std_logic; + addr : in std_logic_vector(12 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of popeye_sp_bits_4 is + type rom is array(0 to 8191) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"CC",X"00",X"FF",X"00",X"1F",X"00",X"0F",X"00",X"1F",X"00",X"1F",X"00",X"3F",X"00",X"3F",X"00", + X"3F",X"00",X"3F",X"00",X"1F",X"00",X"0F",X"00",X"0F",X"00",X"1F",X"00",X"3F",X"00",X"3F",X"00", + X"3F",X"00",X"3F",X"00",X"7E",X"01",X"7E",X"03",X"38",X"07",X"08",X"0F",X"00",X"07",X"00",X"03", + X"00",X"00",X"00",X"C0",X"F0",X"F0",X"F0",X"E0",X"C0",X"80",X"00",X"00",X"80",X"C0",X"F0",X"F8", + X"FC",X"FC",X"FC",X"F8",X"F8",X"F0",X"E0",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"3F",X"3F",X"1F",X"01",X"03",X"0F",X"1F",X"1F",X"3F",X"7F",X"7F",X"3F",X"1F",X"0F",X"07",X"03", + X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"C3",X"C7",X"CF",X"DF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"3F",X"1F",X"0F",X"27",X"73",X"F3",X"33",X"13",X"63",X"97",X"D7",X"67", + X"3F",X"FF",X"FF",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FC",X"FC",X"F8",X"F0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"20",X"60", + X"60",X"E0",X"C0",X"C0",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80", + X"80",X"C0",X"C0",X"40",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"EE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"7F", + X"3F",X"3F",X"3F",X"1F",X"0F",X"03",X"01",X"01",X"01",X"01",X"07",X"07",X"07",X"01",X"01",X"04", + X"02",X"04",X"02",X"00",X"91",X"48",X"28",X"00",X"20",X"43",X"03",X"04",X"02",X"00",X"61",X"7E", + X"3B",X"3B",X"18",X"03",X"07",X"06",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"18",X"38",X"3C",X"1C",X"00",X"00",X"60",X"30", + X"00",X"00",X"00",X"00",X"10",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"80",X"C0",X"C0",X"80",X"00",X"04",X"36",X"7E",X"FE",X"FC",X"7C",X"3E",X"1E",X"05",X"C0", + X"F0",X"E0",X"F8",X"00",X"00",X"00",X"00",X"08",X"90",X"60",X"C0",X"A0",X"E0",X"E0",X"C0",X"00", + X"04",X"86",X"00",X"00",X"00",X"00",X"1C",X"3F",X"7F",X"BF",X"FF",X"FF",X"7F",X"1F",X"07",X"00", + X"00",X"08",X"00",X"F0",X"E0",X"80",X"00",X"00",X"01",X"20",X"00",X"00",X"00",X"00",X"00",X"00", + X"06",X"07",X"03",X"00",X"00",X"B8",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"BF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"26",X"2F",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"9C",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"18",X"BE",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"7C",X"00", + X"00",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"06",X"8F",X"DF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"1F",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"38",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3F",X"0F",X"17",X"1F",X"0F",X"07",X"01", + X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"E0",X"C0",X"C0",X"80",X"80",X"80",X"80",X"80", + X"C0",X"E0",X"F0",X"FC",X"FE",X"FE",X"FE",X"FE",X"FC",X"7C",X"7C",X"7C",X"7C",X"FE",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"F8",X"F0",X"F0",X"E0",X"E0",X"C0",X"80",X"00",X"00", + X"00",X"00",X"00",X"00",X"40",X"00",X"00",X"00",X"00",X"00",X"60",X"C0",X"C0",X"E0",X"E0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"02",X"0E",X"3E",X"FF",X"FF",X"BF",X"8F",X"6F",X"0F",X"1F",X"1F", + X"1F",X"1F",X"3F",X"3F",X"FF",X"C3",X"00",X"00",X"08",X"00",X"00",X"00",X"00",X"00",X"10",X"00", + X"00",X"1C",X"1E",X"9E",X"9E",X"CE",X"C7",X"E7",X"E3",X"F3",X"F9",X"38",X"0D",X"0E",X"03",X"00", + X"12",X"0A",X"81",X"D0",X"C0",X"C0",X"80",X"02",X"00",X"00",X"00",X"02",X"01",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"F8",X"F0",X"F0",X"E0",X"E0",X"C0",X"C0",X"80",X"00", + X"00",X"00",X"80",X"00",X"00",X"20",X"20",X"20",X"20",X"20",X"40",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"0E",X"9E",X"9E",X"DE",X"CE",X"6F",X"E7",X"E3",X"F1",X"F8",X"FD",X"FE",X"8F",X"81", + X"00",X"00",X"00",X"00",X"00",X"00",X"07",X"1F",X"3F",X"3F",X"1F",X"1F",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"E0",X"E0",X"E0", + X"F0",X"F0",X"70",X"70",X"78",X"38",X"38",X"38",X"38",X"38",X"78",X"F8",X"F8",X"F8",X"F0",X"F0", + X"F0",X"E0",X"E0",X"E0",X"C0",X"C0",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"EF",X"F0",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"E0", + X"03",X"06",X"04",X"01",X"07",X"0F",X"1F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3F",X"0F",X"03",X"01",X"00",X"00", + X"00",X"00",X"00",X"00",X"C0",X"E0",X"E0",X"F0",X"F0",X"F0",X"F0",X"F0",X"E0",X"C0",X"00",X"00", + X"60",X"38",X"0E",X"07",X"0F",X"3F",X"1F",X"1F",X"0F",X"07",X"07",X"07",X"03",X"00",X"00",X"00", + X"00",X"0E",X"3C",X"78",X"F0",X"C0",X"E0",X"E0",X"F0",X"F8",X"F8",X"F0",X"E0",X"80",X"00",X"00", + X"01",X"03",X"07",X"0F",X"1F",X"3F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"7C",X"38", + X"00",X"00",X"80",X"40",X"C0",X"40",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"7E",X"EF",X"EE",X"C7",X"87",X"83",X"01",X"83",X"83",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"03",X"87",X"C7",X"8F",X"0D",X"09",X"08",X"98",X"C0",X"80",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"07",X"07",X"07",X"07",X"06",X"06",X"06",X"FE",X"FE",X"06",X"06",X"FE",X"FE", + X"00",X"00",X"06",X"06",X"00",X"00",X"0C",X"18",X"38",X"30",X"70",X"70",X"60",X"60",X"00",X"00", + X"00",X"00",X"CF",X"CF",X"C3",X"C3",X"C3",X"CF",X"CF",X"C3",X"C3",X"C3",X"CF",X"CF",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F8",X"FC",X"FA",X"FA",X"FA",X"F6",X"FC",X"F8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"80",X"C0",X"E0",X"F0",X"F8",X"FC",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3E",X"1C", + X"00",X"00",X"FE",X"FE",X"FE",X"FE",X"FE",X"1E",X"1E",X"1E",X"1E",X"1E",X"1E",X"1E",X"1E",X"00", + X"00",X"00",X"FE",X"FE",X"FE",X"1E",X"1E",X"FE",X"FE",X"FE",X"1E",X"1E",X"FE",X"FE",X"FE",X"00", + X"00",X"00",X"1E",X"1E",X"1E",X"1E",X"1E",X"FE",X"FE",X"FE",X"1E",X"1E",X"1E",X"1E",X"1E",X"00", + X"00",X"00",X"1E",X"1E",X"1E",X"1E",X"1E",X"FE",X"FE",X"1E",X"1E",X"1E",X"1E",X"FE",X"FE",X"00", + X"00",X"00",X"33",X"33",X"30",X"30",X"30",X"F0",X"F0",X"30",X"30",X"30",X"F0",X"F0",X"00",X"00", + X"00",X"00",X"33",X"33",X"33",X"33",X"3F",X"3F",X"3F",X"33",X"33",X"33",X"33",X"33",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FC",X"FC",X"F8",X"F0",X"C0",X"C0",X"B8",X"FC",X"FC",X"FE",X"FE",X"FE",X"FE",X"FC",X"3C",X"18", + X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"1F",X"8C",X"CC",X"E4",X"F6",X"F7",X"F7",X"FE",X"7C",X"00", + X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"70",X"F8",X"FC",X"FE",X"FF", + X"FF",X"FF",X"FF",X"FF",X"DE",X"8C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"98",X"98",X"00",X"00",X"98",X"98",X"98",X"98",X"98",X"98",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"7C",X"FE",X"FD",X"FD",X"FD",X"FB", + X"FE",X"7C",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F0",X"00",X"E0",X"00",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F0",X"F0",X"20",X"F0",X"90",X"B0",X"D0",X"90",X"F0",X"F4",X"F8",X"00",X"08",X"50",X"20",X"00", + X"F0",X"FC",X"FE",X"FE",X"FF",X"FF",X"FB",X"F3",X"E3",X"66",X"BC",X"C8",X"60",X"E0",X"F0",X"C0", + X"0C",X"FE",X"FF",X"FD",X"FF",X"FC",X"E4",X"E4",X"BC",X"1C",X"38",X"70",X"E0",X"C0",X"80",X"00", + X"F0",X"FC",X"FE",X"FE",X"FF",X"FF",X"FB",X"F3",X"E3",X"C6",X"CC",X"58",X"70",X"E0",X"C0",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FE",X"FF",X"F0",X"FE",X"FF",X"FF",X"1F",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"30",X"3E",X"3E",X"1F",X"1F",X"3F",X"1F",X"1F",X"1F",X"1F",X"2F",X"7F",X"EF",X"F7",X"FF",X"F7", + X"F7",X"EF",X"EF",X"FF",X"EE",X"98",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"40",X"60",X"60",X"60",X"60",X"E0",X"E0",X"E0",X"E0",X"FE",X"FF",X"F0",X"FE", + X"FF",X"1F",X"0F",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3C",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"CF",X"F3", + X"E1",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"06",X"FF",X"F0",X"FC", + X"FE",X"FF",X"0F",X"03",X"00",X"00",X"00",X"80",X"FC",X"F8",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"3C",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"BF", + X"DF",X"EF",X"8F",X"87",X"07",X"03",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"80",X"80",X"80",X"20",X"40",X"80",X"C0",X"80",X"40",X"00",X"00",X"00",X"00",X"00",X"00", + X"C0",X"F0",X"F8",X"F8",X"F8",X"F8",X"F0",X"F0",X"E0",X"E0",X"C0",X"C0",X"80",X"80",X"00",X"01", + X"03",X"AF",X"FE",X"FE",X"FC",X"FC",X"F8",X"F0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"03",X"0F",X"0F",X"1F",X"1F",X"1F",X"17",X"03", + X"03",X"03",X"07",X"07",X"0F",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F8",X"F8",X"F0",X"F0",X"F0",X"E0",X"E0",X"C0",X"C0",X"80",X"80",X"00",X"00",X"C0",X"E0",X"F8", + X"FC",X"FC",X"FC",X"F8",X"F0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"1F",X"3F",X"7F",X"73",X"03",X"07",X"07",X"0F",X"1F",X"1F",X"0F",X"03", + X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"00",X"00",X"01",X"07",X"1F",X"3F",X"7F",X"FF", + X"FF",X"FF",X"FF",X"7F",X"3F",X"1F",X"4F",X"67",X"F3",X"33",X"13",X"03",X"63",X"B7",X"D7",X"67", + X"04",X"07",X"07",X"07",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"B8",X"5C",X"4C",X"24",X"20",X"40",X"00",X"00", + X"00",X"00",X"80",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"F0",X"FC",X"FC",X"FE",X"FE",X"FE",X"FE",X"FC",X"FC",X"F0",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"3E",X"FF",X"FF",X"FF",X"80",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"03",X"03",X"07",X"FE",X"FE",X"FC", + X"00",X"00",X"F8",X"80",X"04",X"2C",X"EC",X"EC",X"E8",X"E4",X"8C",X"6C",X"EC",X"EC",X"E8",X"E4", + X"8C",X"6C",X"EC",X"EC",X"E8",X"E0",X"00",X"00",X"10",X"10",X"10",X"30",X"60",X"C0",X"80",X"00", + X"00",X"00",X"FF",X"FF",X"00",X"00",X"FD",X"FD",X"FD",X"FD",X"FD",X"00",X"FD",X"FD",X"FD",X"FD", + X"FD",X"00",X"FD",X"FD",X"FD",X"FD",X"FD",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"7E", + X"FC",X"7C",X"F8",X"F0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"E0",X"F0",X"78",X"F8",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"E0",X"E0",X"C0",X"C0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"02",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02", + X"03",X"03",X"03",X"07",X"FF",X"FF",X"FF",X"FF",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"3C",X"7E",X"4F",X"BF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"DE",X"C0", + X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"C0",X"80",X"80",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"E0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"E0", + X"E0",X"DF",X"BF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"48",X"48",X"88",X"88",X"80",X"80",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01", + X"20",X"00",X"40",X"83",X"0F",X"1E",X"3C",X"BC",X"F8",X"FF",X"E7",X"CB",X"F5",X"7A",X"3C",X"76", + X"03",X"43",X"A3",X"EA",X"CD",X"09",X"19",X"FB",X"FF",X"FF",X"FF",X"FF",X"7F",X"3C",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"1F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"1C",X"7E", + X"F3",X"FB",X"FF",X"FE",X"FE",X"FC",X"F8",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FE",X"FC",X"80", + X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"20",X"90", + X"F8",X"BD",X"BF",X"BF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FE",X"FC",X"F8",X"C0",X"80",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"C0",X"E0",X"E0",X"E0",X"E0",X"E0",X"C0",X"F0",X"FC",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"F7",X"F3",X"F2",X"FD",X"FD",X"FD",X"3B",X"27",X"DF",X"EF",X"DF",X"3F",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"7F",X"FF",X"7E",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F8",X"FB",X"FB",X"FB",X"FB",X"7B",X"8F",X"FF",X"FF",X"FF",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"03", + X"07",X"07",X"07",X"07",X"07",X"4F",X"8F",X"8F",X"CF",X"5F",X"7F",X"7F",X"7F",X"FF",X"DF",X"C7", + X"80",X"40",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"01",X"03",X"03",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"01",X"03",X"03",X"01",X"01", + X"01",X"03",X"07",X"0F",X"1F",X"3F",X"FF",X"FF",X"FB",X"F7",X"7F",X"EF",X"DF",X"BF",X"7F",X"7F", + X"78",X"70",X"E0",X"E9",X"FE",X"C6",X"B3",X"B9",X"9C",X"EE",X"F7",X"FB",X"9C",X"0C",X"8F",X"5F", + X"82",X"A4",X"C8",X"10",X"E0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"03",X"00",X"C0",X"00",X"00",X"40",X"80",X"00",X"01",X"11",X"39", + X"F9",X"3F",X"03",X"00",X"00",X"24",X"1F",X"9F",X"F1",X"75",X"65",X"69",X"CB",X"13",X"66",X"0C", + X"34",X"00",X"03",X"02",X"00",X"01",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F9",X"FF",X"FF",X"FF",X"DF",X"BF",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FE",X"EF",X"CD",X"8D",X"07",X"07",X"03",X"07",X"06",X"03",X"03",X"03",X"01",X"00",X"03",X"06", + X"0F",X"0F",X"0F",X"07",X"07",X"03",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0", + X"07",X"01",X"03",X"03",X"0F",X"BF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"0E",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FE",X"3E",X"3F",X"3F",X"3F",X"3F",X"1F",X"1E",X"1E",X"1F",X"0F",X"0F",X"0F",X"07", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F2",X"FC",X"7C",X"BA",X"B1",X"B2",X"30",X"71",X"70",X"D2",X"85",X"02",X"01",X"01",X"00",X"00", + X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"C0",X"C0", + X"40",X"80",X"C0",X"C0",X"C0",X"C0",X"40",X"80",X"C0",X"C0",X"C0",X"40",X"00",X"80",X"00",X"00", + X"62",X"7F",X"FF",X"FF",X"E7",X"E7",X"FF",X"E0",X"80",X"0F",X"5F",X"DF",X"DF",X"DF",X"C0",X"1F", + X"DF",X"DF",X"DF",X"DF",X"C0",X"1F",X"DF",X"DF",X"DF",X"DF",X"C0",X"00",X"1F",X"3F",X"00",X"00", + X"E0",X"F0",X"F8",X"F8",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"80",X"C0",X"E0",X"F0",X"F8",X"F8", + X"C0",X"C0",X"80",X"C0",X"E0",X"F0",X"F0",X"F0",X"F0",X"F0",X"E0",X"E0",X"C0",X"C0",X"C0",X"C0", + X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F1",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"1F", + X"FF",X"FF",X"FF",X"FF",X"FF",X"07",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"E3",X"DF", + X"6F",X"70",X"FD",X"FE",X"BE",X"BF",X"9F",X"9F",X"8F",X"87",X"83",X"81",X"82",X"81",X"C3",X"CF", + X"C7",X"EF",X"E7",X"77",X"16",X"1C",X"01",X"02",X"0E",X"0C",X"0C",X"06",X"07",X"03",X"01",X"00", + X"1F",X"3F",X"37",X"33",X"1E",X"00",X"00",X"01",X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80", + X"98",X"88",X"41",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"0F",X"23",X"40",X"E4",X"F8", + X"07",X"07",X"0B",X"0B",X"1B",X"1D",X"1E",X"1F",X"0F",X"0F",X"0F",X"07",X"03",X"01",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"80",X"80",X"80",X"40",X"30",X"40",X"80",X"00", + X"F8",X"7C",X"3E",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"F8",X"F8",X"F0",X"F0",X"C0",X"88", + X"40",X"20",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"00",X"00",X"00", + X"00",X"80",X"C0",X"C0",X"80",X"80",X"F8",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"9F",X"9F", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FB",X"FB",X"F7",X"F7",X"F7",X"F7",X"F7",X"F7",X"FB",X"FB",X"FD",X"0E", + X"03",X"03",X"02",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"04",X"02", + X"2F",X"6F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"7C",X"78",X"B8",X"B0",X"F0",X"E0", + X"C0",X"C0",X"D2",X"FC",X"FF",X"80",X"85",X"F1",X"3D",X"1E",X"3B",X"81",X"A1",X"51",X"75",X"66", + X"04",X"8C",X"FE",X"F0",X"70",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00", + X"00",X"00",X"00",X"00",X"0A",X"07",X"07",X"07",X"05",X"24",X"2C",X"28",X"00",X"00",X"00",X"00", + X"80",X"C0",X"E0",X"F0",X"F0",X"F8",X"FE",X"F8",X"F0",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FC",X"FE",X"FE",X"FF",X"FE",X"FC",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"3F", + X"1F",X"1F",X"3F",X"3F",X"7F",X"7F",X"F7",X"F7",X"CF",X"3F",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F", + X"3E",X"BE",X"BE",X"38",X"F8",X"24",X"60",X"30",X"18",X"0C",X"1C",X"18",X"38",X"F0",X"E0",X"90", + X"00",X"00",X"00",X"00",X"00",X"78",X"FC",X"FC",X"FC",X"FC",X"FD",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"F9",X"C7",X"3F",X"FF",X"FF",X"FF",X"7F",X"30",X"00",X"00",X"00",X"00",X"00",X"00", + X"30",X"7C",X"7F",X"77",X"77",X"77",X"37",X"37",X"17",X"0F",X"0F",X"02",X"03",X"03",X"03",X"01", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"C0",X"C0",X"C0", + X"0F",X"1B",X"99",X"CF",X"E1",X"F3",X"FF",X"FF",X"F7",X"CF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF", + X"7F",X"BF",X"9F",X"7F",X"07",X"BF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"E0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"02",X"03", + X"07",X"0F",X"FF",X"FE",X"FE",X"FC",X"F8",X"00",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"7F",X"BF",X"9F",X"79",X"83",X"CF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF", + X"FF",X"FF",X"FF",X"FF",X"CF",X"93",X"21",X"00",X"00",X"80",X"80",X"C0",X"E3",X"FF",X"FF",X"FF", + X"38",X"3C",X"78",X"D9",X"8B",X"09",X"28",X"18",X"1C",X"4C",X"CC",X"8C",X"5C",X"F8",X"F0",X"00", + X"0F",X"07",X"03",X"03",X"01",X"01",X"C2",X"23",X"03",X"87",X"C7",X"2E",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"80",X"C0",X"E0", + X"DC",X"FC",X"FC",X"FC",X"F8",X"F0",X"F3",X"E7",X"EF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF", + X"00",X"00",X"00",X"80",X"C0",X"C0",X"C0",X"80",X"80",X"00",X"00",X"00",X"80",X"C0",X"C0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"60",X"E0",X"E0", + X"E0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"01",X"03",X"03",X"01",X"00",X"00",X"03",X"07",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"F8",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"30",X"FE", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"1F",X"03",X"21",X"40",X"E4",X"F8", + X"1C",X"3E",X"7C",X"D9",X"8B",X"09",X"28",X"18",X"9C",X"CC",X"8C",X"0C",X"5C",X"F8",X"F0",X"80", + X"01",X"07",X"1F",X"7F",X"FF",X"FD",X"F9",X"71",X"31",X"E1",X"01",X"01",X"00",X"00",X"00",X"00", + X"0F",X"0F",X"1E",X"1E",X"1F",X"1F",X"0F",X"37",X"3F",X"1E",X"1E",X"0F",X"0F",X"0F",X"07",X"07", + X"03",X"33",X"4B",X"0F",X"17",X"25",X"0A",X"13",X"03",X"07",X"03",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"C0",X"E0",X"E0",X"E0",X"F0",X"F0",X"F8",X"F8",X"D8",X"D8",X"DC",X"5C",X"7C",X"7C",X"78",X"38", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"E0",X"F0",X"F0", + X"F0",X"F9",X"FB",X"FB",X"FB",X"FF",X"FF",X"7F",X"7E",X"7E",X"7E",X"7C",X"3C",X"38",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"80",X"C0",X"F0",X"FC",X"FE",X"0E",X"FC",X"F0",X"FE",X"FF",X"FF",X"7F",X"FF",X"7F",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FD",X"FC",X"F8",X"F8",X"F0",X"E0",X"C0",X"D0",X"F8", + X"F0",X"F0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"07",X"0F",X"0F",X"0F",X"0F",X"04",X"01",X"03",X"03",X"03",X"01",X"00",X"00",X"00",X"00", + X"01",X"03",X"07",X"1F",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"07",X"0F",X"0F",X"0F",X"3F",X"3F", + X"1F",X"04",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"60",X"A0",X"80",X"80",X"80",X"00", + X"00",X"00",X"08",X"0C",X"5C",X"7F",X"3F",X"0F",X"03",X"03",X"01",X"01",X"18",X"18",X"10",X"88", + X"3C",X"22",X"02",X"22",X"62",X"86",X"10",X"41",X"C0",X"E0",X"C0",X"E0",X"E0",X"10",X"00",X"00", + X"E0",X"F0",X"30",X"30",X"F0",X"E0",X"00",X"00",X"FF",X"FF",X"FF",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"E0",X"F0",X"F8",X"FC",X"8E",X"07",X"07",X"00",X"80",X"FE",X"FE",X"BE",X"BF", + X"BF",X"BF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FC",X"F8",X"F8",X"70",X"00",X"00", + X"82",X"C0",X"60",X"60",X"20",X"10",X"80",X"80",X"22",X"23",X"47",X"0E",X"1E",X"FE",X"DE",X"8C", + X"00",X"00",X"00",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"0F",X"BF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"F1",X"03",X"1F",X"3F",X"3F",X"7F",X"FA",X"F8",X"70",X"20", + X"00",X"00",X"00",X"20",X"30",X"18",X"30",X"60",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"60",X"20",X"30",X"10",X"18",X"18", + X"00",X"00",X"00",X"10",X"18",X"0C",X"0C",X"18",X"30",X"60",X"C0",X"80",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"F8", + X"C0",X"F0",X"F8",X"FC",X"FC",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE", + X"FE",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"3F",X"3F", + X"1F",X"1F",X"0F",X"0F",X"07",X"07",X"03",X"03",X"01",X"01",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"C0",X"E0",X"E0",X"F0",X"F0",X"F8",X"F8", + X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F8",X"F8",X"F8",X"F8",X"F0",X"E0", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"F0",X"E0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"1F",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80", + X"E0",X"F8",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"80",X"E0",X"F0",X"F8",X"FC",X"FC",X"FE",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FC",X"FC",X"FC",X"F8",X"F0",X"C0", + X"00",X"80",X"E0",X"F0",X"F8",X"F8",X"FC",X"FC",X"FC",X"FC",X"FE",X"FE",X"FE",X"FE",X"FE",X"FE", + X"FE",X"FE",X"FE",X"FE",X"FE",X"FE",X"FC",X"FC",X"FC",X"F8",X"F0",X"E0",X"C0",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"07",X"1F",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3F",X"1F",X"07",X"01",X"00",X"00", + X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"0F",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"80",X"C0",X"E0",X"F8",X"FC",X"FC",X"FC",X"FC",X"FE",X"FE",X"FE", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FC",X"FC",X"FC",X"FC",X"FC",X"F8",X"F0",X"F0", + X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"F0",X"F8",X"FC",X"FC",X"FC",X"FC",X"F8",X"F8",X"F0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"0F",X"3F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FE",X"FE",X"FC",X"FC",X"FC",X"FC",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"0F",X"03",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"03",X"03",X"03", + X"C7",X"EF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"7F",X"7F",X"3F",X"3F",X"1F",X"1F",X"1F",X"3F",X"3F",X"7F",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FC",X"E0", + X"F0",X"F8",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FE",X"FC",X"FC", + X"FC",X"FC",X"F8",X"F8",X"F8",X"F0",X"F0",X"F0",X"F0",X"F0",X"E0",X"E0",X"E0",X"E0",X"C0",X"C0", + X"C0",X"C0",X"C0",X"C0",X"80",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"03",X"07",X"07",X"0F",X"0F",X"1F",X"1F", + X"3F",X"3F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"F8",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80", + X"E7",X"F7",X"7E",X"7E",X"3E",X"3C",X"1C",X"1C",X"08",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"C0",X"C0",X"F0",X"F8",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"3F",X"0F",X"03",X"00", + X"80",X"C0",X"F0",X"FC",X"FE",X"FF",X"FF",X"FF",X"CF",X"C3",X"41",X"40",X"40",X"40",X"40",X"C1", + X"40",X"40",X"C0",X"F0",X"F0",X"C0",X"C0",X"E0",X"70",X"30",X"30",X"B0",X"B0",X"E0",X"C0",X"80", + X"80",X"C0",X"E0",X"B0",X"B0",X"30",X"30",X"B0",X"B0",X"E0",X"C0",X"80",X"80",X"C0",X"E0",X"B0", + X"00",X"00",X"01",X"03",X"07",X"07",X"8F",X"CF",X"DE",X"FE",X"FC",X"7F",X"7F",X"3C",X"30",X"00", + X"E0",X"F0",X"F0",X"F0",X"F0",X"F8",X"FC",X"FC",X"FC",X"FC",X"FC",X"FC",X"F8",X"B8",X"70",X"E0", + X"FF",X"FF",X"FE",X"FC",X"FE",X"FC",X"FE",X"FF",X"FF",X"2E",X"63",X"30",X"84",X"86",X"82",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"E0",X"70",X"38",X"F8",X"F0",X"C0",X"00",X"00",X"00", + X"01",X"00",X"01",X"01",X"03",X"03",X"03",X"03",X"07",X"1F",X"1F",X"1F",X"0C",X"0C",X"02",X"00", + X"31",X"70",X"F9",X"F9",X"9B",X"1B",X"1B",X"1B",X"1F",X"1F",X"1F",X"1F",X"0C",X"0C",X"02",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"E0",X"70",X"38",X"F8",X"F0",X"C0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"31",X"70",X"F9",X"F9",X"DB",X"DB",X"DB",X"DB",X"DF",X"DF",X"5F",X"1F",X"0C",X"0C",X"02",X"00", + X"00",X"41",X"2B",X"13",X"43",X"41",X"81",X"50",X"21",X"83",X"C3",X"7F",X"3C",X"00",X"00",X"00", + X"F8",X"1C",X"1D",X"0F",X"0F",X"87",X"03",X"0C",X"4D",X"1F",X"BF",X"3F",X"37",X"BD",X"1C",X"08", + X"1C",X"0E",X"07",X"0F",X"07",X"07",X"0E",X"9E",X"FC",X"FE",X"FE",X"CC",X"C0",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"60",X"38",X"4C",X"76",X"B6",X"BB",X"BB",X"BB",X"BB",X"BB",X"BB",X"BB",X"B6",X"76",X"76",X"74", + X"6C",X"68",X"58",X"50",X"A0",X"40",X"00",X"C0",X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"80", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"03",X"05",X"03",X"47",X"E7", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"80",X"80",X"80",X"00",X"80",X"C0",X"F0",X"E0",X"C0",X"84",X"10",X"10",X"20",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"80",X"00",X"03",X"07",X"0F", + X"0F",X"1F",X"1F",X"3F",X"3F",X"7F",X"FF",X"FF",X"7F",X"7F",X"FF",X"FF",X"EF",X"8F",X"07",X"07", + X"03",X"03",X"07",X"03",X"03",X"03",X"03",X"03",X"03",X"03",X"03",X"03",X"03",X"07",X"07",X"0F", + X"38",X"70",X"F0",X"E3",X"E7",X"C5",X"87",X"07",X"06",X"08",X"04",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"00",X"00",X"00", + X"C0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"04",X"06",X"0E",X"0E",X"11",X"00",X"00",X"14",X"14",X"21",X"00",X"01",X"03",X"01",X"00", + X"FE",X"A7",X"03",X"47",X"3F",X"3F",X"1F",X"19",X"83",X"06",X"2C",X"4C",X"8D",X"2F",X"07",X"02", + X"00",X"00",X"18",X"BC",X"FC",X"7E",X"FE",X"FE",X"FE",X"FE",X"FE",X"FC",X"FC",X"F8",X"F0",X"00", + X"E0",X"F0",X"F0",X"00",X"00",X"FC",X"FC",X"F8",X"FC",X"F8",X"F0",X"F0",X"F8",X"F8",X"F0",X"C0", + X"00",X"00",X"F8",X"FC",X"FC",X"FC",X"FC",X"F8",X"FC",X"F8",X"F0",X"F0",X"F8",X"F8",X"F0",X"C0", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"00",X"00",X"00", + X"00",X"00",X"80",X"C0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"70",X"F0",X"F0",X"F0",X"30",X"38",X"18",X"18",X"18",X"3C",X"33",X"07",X"1F",X"3F",X"7F",X"3F", + X"3F",X"1F",X"1F",X"1F",X"0F",X"0F",X"0F",X"07",X"07",X"07",X"07",X"03",X"03",X"03",X"03",X"03", + X"00",X"0D",X"9F",X"CF",X"84",X"A0",X"90",X"08",X"12",X"0B",X"07",X"03",X"03",X"01",X"00",X"00", + X"00",X"00",X"06",X"06",X"09",X"00",X"0A",X"0A",X"08",X"11",X"00",X"07",X"0F",X"06",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"07",X"0B",X"09",X"06",X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"83",X"CF",X"DF",X"9F",X"3F", + X"7F",X"FF",X"FF",X"FF",X"7F",X"3F",X"1F",X"0F",X"0F",X"07",X"07",X"03",X"03",X"03",X"03",X"03", + X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"03",X"01",X"00",X"01",X"00",X"F0",X"7E",X"3F",X"F3",X"03",X"07",X"07",X"0E",X"1F",X"07",X"07", + X"7F",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"7F",X"3F",X"1F",X"0F",X"07",X"07",X"03",X"03",X"03", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00", + X"00",X"00",X"80",X"C0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"10",X"70",X"7C",X"6F",X"76",X"31",X"3B",X"2A",X"00", + X"22",X"21",X"65",X"26",X"24",X"14",X"04",X"0B",X"10",X"01",X"00",X"07",X"0F",X"06",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80", + X"00",X"80",X"D0",X"F0",X"E0",X"E0",X"24",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"01",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"01",X"03",X"03",X"03",X"06", + X"18",X"30",X"36",X"66",X"E9",X"C0",X"83",X"08",X"10",X"01",X"00",X"07",X"0F",X"06",X"00",X"00", + X"00",X"00",X"00",X"00",X"1C",X"0E",X"07",X"0F",X"07",X"07",X"0E",X"9E",X"FC",X"FE",X"FE",X"CC", + X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"E0",X"F0",X"F8",X"FC",X"FC",X"FC",X"FC",X"F8",X"FC",X"FE",X"FE",X"FE",X"FE",X"FC",X"F8",X"00", + X"F8",X"FC",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FE",X"F4",X"F8",X"F8",X"F8",X"F8",X"F0",X"00", + X"00",X"F0",X"FC",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"DC",X"C0",X"80",X"00", + X"80",X"C0",X"E0",X"F0",X"F8",X"FC",X"FE",X"FE",X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"3E",X"1C", + X"FF",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"01",X"FF", + X"FF",X"FF",X"03",X"06",X"06",X"08",X"18",X"18",X"20",X"20",X"60",X"80",X"C0",X"E0",X"C0",X"80", + X"F8",X"FC",X"FE",X"FE",X"FE",X"FE",X"FC",X"F8",X"00",X"00",X"FF",X"FF",X"00",X"00",X"FF",X"FF", + X"F8",X"8C",X"06",X"02",X"02",X"06",X"8C",X"F8",X"00",X"00",X"FF",X"FF",X"00",X"00",X"FF",X"FF", + X"F8",X"FC",X"FE",X"FE",X"FE",X"FE",X"FC",X"F8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"F8",X"8C",X"06",X"02",X"02",X"06",X"8C",X"F8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"40",X"80",X"84",X"8C",X"8C",X"C4",X"C0",X"E2",X"FE",X"FC",X"FC",X"FC", + X"F8",X"F8",X"F0",X"F0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"E0",X"E0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0",X"F0", + X"E0",X"E0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0C",X"0F",X"1F",X"1F",X"3F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"C0",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"01",X"07",X"1F",X"7F",X"FF",X"FF",X"FF",X"FF", + X"00",X"0F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"C0", + X"00",X"00",X"C0",X"C0",X"F0",X"F8",X"FC",X"FE",X"FF",X"FF",X"FF",X"FF",X"3F",X"0F",X"03",X"00", + X"F8",X"FF",X"FF",X"FF",X"7F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"1E",X"BF",X"FF",X"DF",X"FE",X"FE",X"FC",X"F8",X"F8",X"70",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"80",X"E0",X"E0",X"C0",X"C0",X"00",X"00",X"00",X"00",X"20",X"20", + X"A8",X"70",X"00",X"00",X"00",X"00",X"00",X"50",X"28",X"28",X"00",X"00",X"00",X"00",X"00",X"00", + X"FF",X"FF",X"FF",X"FF",X"FF",X"7F",X"7F",X"3F",X"0F",X"0F",X"07",X"07",X"0F",X"1F",X"1F",X"1F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"70",X"F0",X"F0",X"E0",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"DF",X"9F",X"3F",X"7F",X"7F", + X"FF",X"FF",X"FF",X"FF",X"BF",X"BF",X"BF",X"9F",X"9F",X"8F",X"87",X"C3",X"47",X"02",X"00",X"00", + X"00",X"70",X"70",X"F8",X"FA",X"12",X"84",X"20",X"20",X"40",X"21",X"2B",X"1F",X"0F",X"0C",X"18", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"E0",X"70",X"38",X"38",X"1C",X"0E",X"0E",X"3E",X"FC", + X"F0",X"60",X"40",X"00",X"02",X"01",X"83",X"87",X"87",X"83",X"C3",X"77",X"7E",X"FE",X"5C",X"0C", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"01",X"03",X"03",X"87",X"C7",X"EF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"F0",X"F8",X"F0",X"1C",X"1E",X"0E", + X"0E",X"07",X"07",X"C7",X"E3",X"E2",X"C0",X"18",X"3F",X"3E",X"7E",X"7F",X"3F",X"39",X"78",X"F0", + X"00",X"00",X"00",X"00",X"80",X"80",X"80",X"00",X"00",X"00",X"06",X"02",X"06",X"0E",X"0E",X"0E", + X"0E",X"7C",X"FC",X"FC",X"C8",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"20",X"3C",X"79",X"79",X"F3",X"E7",X"CF",X"9F",X"9F",X"1F", + X"3F",X"3F",X"3F",X"3F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FE",X"FE",X"FE",X"FE",X"FE",X"FC",X"FC", + X"00",X"00",X"00",X"80",X"C0",X"E0",X"F0",X"78",X"3C",X"0C",X"86",X"C3",X"71",X"0D",X"1E",X"3E", + X"3E",X"3F",X"1E",X"1E",X"3F",X"FF",X"F1",X"01",X"03",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"80",X"82",X"D0",X"50",X"12",X"00",X"00",X"A0",X"26",X"7E",X"FF",X"FE",X"7C", + X"00",X"00",X"80",X"80",X"A0",X"A0",X"C0",X"C0",X"02",X"02",X"0A",X"07",X"02",X"00",X"00",X"00", + X"00",X"20",X"00",X"00",X"40",X"00",X"20",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"C0",X"C0",X"C0",X"E0",X"F0",X"F8",X"FC",X"FF",X"FF",X"FF",X"FF",X"7F", + X"7F",X"3F",X"3F",X"7F",X"3F",X"7F",X"7F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"BF",X"9F",X"8F",X"87",X"C3",X"CC",X"D0",X"F0",X"C1",X"0C",X"12",X"21",X"21", + X"20",X"19",X"25",X"47",X"84",X"C2",X"80",X"01",X"01",X"23",X"27",X"7C",X"94",X"14",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF", + X"FE",X"FE",X"FC",X"F8",X"F0",X"E0",X"C0",X"80",X"80",X"C0",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"3C",X"FE",X"FE",X"FC",X"F8",X"F0",X"C0",X"80",X"00",X"00",X"00",X"00", + X"3F",X"3F",X"1F",X"0F",X"00",X"00",X"01",X"00",X"43",X"60",X"A3",X"00",X"02",X"00",X"00",X"C0", + X"F3",X"DF",X"AF",X"EF",X"DF",X"9F",X"BF",X"FF",X"FF",X"FF",X"FF",X"FF",X"C0",X"05",X"02",X"0A", + X"12",X"E4",X"48",X"A0",X"70",X"40",X"24",X"18",X"03",X"07",X"1B",X"03",X"03",X"06",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"40",X"80",X"F8",X"80",X"40",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"F0",X"F8",X"F0",X"E0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"20",X"08",X"10",X"00",X"00",X"00", + X"00",X"00",X"00",X"08",X"14",X"00",X"20",X"20",X"00",X"00",X"00",X"00",X"00",X"0E",X"15",X"84", + X"84",X"84",X"80",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"41",X"C7",X"8F",X"9F",X"BF",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FB",X"D8",X"08",X"08",X"18",X"19",X"1F",X"1F",X"0F",X"0F", + X"0F",X"0F",X"0F",X"0F",X"07",X"03",X"00",X"00",X"01",X"03",X"33",X"4E",X"04",X"87",X"80",X"9F", + X"1C",X"1A",X"8A",X"1F",X"3F",X"7F",X"1F",X"0F",X"07",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"80",X"80",X"80",X"82",X"0A",X"04",X"84",X"0A",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"80",X"80",X"C0",X"E0",X"C0",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"08",X"0F",X"1F",X"3F",X"7F", + X"FF",X"FF",X"FF",X"FF",X"FF",X"DF",X"0F",X"03",X"07",X"07",X"07",X"0F",X"0F",X"0F",X"1F",X"1F", + X"1F",X"1F",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"3F",X"1F",X"03",X"00",X"01",X"01",X"01",X"08", + X"00",X"00",X"00",X"00",X"80",X"C0",X"C0",X"60",X"A0",X"A0",X"A0",X"A0",X"80",X"80",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"18",X"39",X"7F",X"FF",X"FF", + X"FF",X"FF",X"FF",X"FE",X"FC",X"B8",X"00",X"00",X"03",X"01",X"09",X"0C",X"0C",X"1C",X"1C",X"1E", + X"1E",X"3C",X"3C",X"3F",X"3F",X"BF",X"3F",X"3F",X"9F",X"0F",X"03",X"00",X"01",X"01",X"01",X"08", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"80", + X"80",X"80",X"80",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"CE",X"1E",X"1F",X"3F",X"3F",X"3F",X"3F",X"3F",X"1F", + X"0F",X"0E",X"01",X"07",X"0F",X"03",X"03",X"37",X"67",X"53",X"13",X"0B",X"03",X"03",X"03",X"07", + X"07",X"67",X"7F",X"3F",X"3F",X"3F",X"3F",X"3F",X"1F",X"0F",X"03",X"00",X"01",X"01",X"01",X"08", + X"14",X"04",X"04",X"08",X"40",X"41",X"43",X"43",X"43",X"E3",X"E3",X"07",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"40",X"C0",X"C0",X"80",X"80",X"00",X"80",X"80", + X"80",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"08",X"10",X"08",X"0A",X"34",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"FE",X"FF",X"FF",X"FF",X"EE",X"E0",X"C0",X"C0",X"C0",X"80",X"80",X"00", + X"00",X"00",X"00",X"00",X"3F",X"7F",X"7F",X"39",X"03",X"07",X"07",X"07",X"07",X"07",X"03",X"01", + X"01",X"03",X"07",X"03",X"03",X"03",X"07",X"07",X"0F",X"0F",X"0F",X"07",X"03",X"01",X"01",X"B9", + X"3F",X"3F",X"3F",X"37",X"33",X"31",X"38",X"18",X"0C",X"02",X"00",X"00",X"00",X"01",X"03",X"03", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"06",X"0C",X"1B",X"DE",X"F6",X"FC",X"FC",X"FC", + X"7C",X"18",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80", + X"00",X"00",X"00",X"00",X"3C",X"FC",X"FC",X"FC",X"FE",X"BF",X"1F",X"1F",X"0F",X"0F",X"07",X"03", + X"03",X"03",X"03",X"07",X"03",X"01",X"00",X"40",X"03",X"06",X"05",X"08",X"1C",X"1E",X"3F",X"FF", + X"7F",X"7F",X"7F",X"7F",X"77",X"73",X"31",X"38",X"18",X"0C",X"02",X"00",X"00",X"00",X"00",X"00", + X"80",X"80",X"80",X"80",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"60",X"D0",X"B0",X"E0",X"E0",X"E0",X"80",X"C0",X"80",X"C0", + X"C0",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"10",X"38",X"10",X"10", + X"10",X"00",X"00",X"00",X"80",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"FF",X"FF",X"FF",X"EF",X"8F",X"1F",X"1F",X"1F",X"1F",X"0F",X"0F",X"07", + X"03",X"03",X"07",X"03",X"03",X"03",X"07",X"07",X"0F",X"0F",X"0F",X"1F",X"1F",X"3F",X"3F",X"BF", + X"FF",X"FF",X"FF",X"F7",X"F3",X"31",X"38",X"18",X"0C",X"02",X"00",X"00",X"00",X"01",X"03",X"03", + X"02",X"3C",X"44",X"89",X"81",X"81",X"80",X"80",X"80",X"C0",X"C1",X"00",X"18",X"1C",X"08",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"18",X"14",X"34",X"3C",X"A8",X"F8",X"F8",X"F0",X"F0",X"30", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"70",X"60",X"20",X"10",X"10",X"00",X"00", + X"80",X"C0",X"C0",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"3F",X"7F",X"7F",X"6F",X"0F",X"1F",X"3F",X"3F",X"3F",X"3F",X"1F",X"0F", + X"00",X"00",X"00",X"00",X"C0",X"E0",X"E0",X"F0",X"FC",X"7F",X"7F",X"3F",X"3F",X"1F",X"1F",X"0F", + X"07",X"03",X"03",X"07",X"03",X"03",X"03",X"07",X"07",X"0F",X"0F",X"0F",X"1F",X"1F",X"3F",X"BF", + X"7F",X"7F",X"7F",X"7F",X"77",X"73",X"31",X"38",X"18",X"0C",X"02",X"00",X"00",X"00",X"00",X"00", + X"07",X"07",X"07",X"07",X"0F",X"07",X"06",X"06",X"0E",X"0E",X"1F",X"1F",X"1F",X"1F",X"3F",X"7F", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"80",X"C0",X"80",X"00",X"00",X"00",X"00",X"80", + X"80",X"80",X"80",X"80",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"80",X"00",X"00",X"00",X"00",X"00",X"00", + X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"0E",X"3E",X"FE",X"FF",X"EF",X"FF", + X"DF",X"0F",X"03",X"03",X"07",X"03",X"02",X"02",X"06",X"06",X"0F",X"0F",X"0F",X"1F",X"1F",X"7F", + X"7F",X"3F",X"7F",X"7F",X"7F",X"77",X"73",X"31",X"38",X"18",X"0C",X"02",X"00",X"00",X"00",X"00", + X"41",X"02",X"3C",X"44",X"89",X"80",X"81",X"80",X"80",X"80",X"C0",X"C1",X"00",X"00",X"00",X"00"); +begin +process(clk) +begin + if rising_edge(clk) then + data <= rom_data(to_integer(unsigned(addr))); + end if; +end process; +end architecture; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_palette_gb.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_palette_gb.vhd new file mode 100644 index 00000000..83947900 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_palette_gb.vhd @@ -0,0 +1,38 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity popeye_sp_palette_gb is +port ( + clk : in std_logic; + addr : in std_logic_vector(7 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of popeye_sp_palette_gb is + type rom is array(0 to 255) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"0F",X"0F",X"0F",X"0F",X"0F",X"07",X"05",X"00",X"0F",X"0F",X"05",X"0F",X"0F",X"0F",X"05",X"05", + X"0F",X"0F",X"00",X"0C",X"0F",X"0F",X"04",X"03",X"0F",X"00",X"0C",X"03",X"0F",X"0F",X"05",X"07", + X"0F",X"0F",X"0F",X"0F",X"0F",X"07",X"05",X"00",X"0F",X"0F",X"05",X"0F",X"0F",X"0F",X"05",X"00", + X"0F",X"0F",X"00",X"0C",X"0F",X"0E",X"00",X"03",X"0F",X"00",X"0C",X"03",X"0F",X"0F",X"05",X"0E", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"05",X"00",X"0F",X"0F",X"05",X"0F",X"0F",X"0F",X"05",X"06", + X"0F",X"0C",X"0F",X"0C",X"0F",X"0F",X"09",X"00",X"0F",X"00",X"0C",X"03",X"0F",X"0F",X"05",X"0B", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0D",X"0D",X"0F",X"0E",X"05",X"00",X"0F",X"0F",X"0F",X"0F", + X"0F",X"0F",X"05",X"0E",X"0F",X"00",X"00",X"00",X"0F",X"00",X"00",X"00",X"0F",X"00",X"00",X"00", + X"0F",X"0F",X"0F",X"0F",X"0F",X"07",X"0B",X"00",X"0F",X"0F",X"05",X"0F",X"0F",X"0F",X"05",X"05", + X"0F",X"0F",X"00",X"0C",X"0F",X"0F",X"04",X"03",X"0F",X"00",X"0C",X"03",X"0F",X"0F",X"05",X"07", + X"0F",X"0F",X"0F",X"0F",X"0F",X"07",X"0B",X"00",X"0F",X"0F",X"05",X"0F",X"0F",X"0F",X"05",X"00", + X"0F",X"0F",X"00",X"0C",X"0F",X"0E",X"00",X"03",X"0F",X"00",X"0C",X"03",X"0F",X"0F",X"05",X"0E", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0B",X"00",X"0F",X"0F",X"05",X"0F",X"0F",X"0F",X"05",X"06", + X"0F",X"0C",X"0F",X"0C",X"0F",X"0F",X"09",X"00",X"0F",X"00",X"0C",X"03",X"0F",X"0F",X"05",X"0B", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"0D",X"0D",X"0F",X"0E",X"05",X"00",X"0F",X"0F",X"0F",X"0F", + X"0F",X"0F",X"05",X"0E",X"0F",X"00",X"00",X"00",X"0F",X"00",X"00",X"00",X"0F",X"00",X"00",X"00"); +begin +process(clk) +begin + if rising_edge(clk) then + data <= rom_data(to_integer(unsigned(addr))); + end if; +end process; +end architecture; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_palette_rg.vhd b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_palette_rg.vhd new file mode 100644 index 00000000..88128ed9 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/rom/popeye_sp_palette_rg.vhd @@ -0,0 +1,38 @@ +library ieee; +use ieee.std_logic_1164.all,ieee.numeric_std.all; + +entity popeye_sp_palette_rg is +port ( + clk : in std_logic; + addr : in std_logic_vector(7 downto 0); + data : out std_logic_vector(7 downto 0) +); +end entity; + +architecture prom of popeye_sp_palette_rg is + type rom is array(0 to 255) of std_logic_vector(7 downto 0); + signal rom_data: rom := ( + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"00",X"00",X"0F",X"08",X"00",X"05",X"0F",X"08",X"00",X"0F", + X"0F",X"08",X"00",X"07",X"0F",X"03",X"08",X"0F",X"0F",X"09",X"07",X"0F",X"0F",X"0C",X"00",X"0B", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"00",X"00",X"0F",X"08",X"00",X"04",X"0F",X"08",X"00",X"00", + X"0F",X"08",X"09",X"09",X"0F",X"0B",X"09",X"0F",X"0F",X"09",X"07",X"0F",X"0F",X"03",X"00",X"00", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"00",X"00",X"0F",X"08",X"00",X"04",X"0F",X"08",X"00",X"07", + X"0F",X"07",X"0F",X"00",X"0F",X"0D",X"00",X"00",X"0F",X"09",X"07",X"0F",X"0F",X"0D",X"00",X"08", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"08",X"08",X"0F",X"0A",X"00",X"00",X"0F",X"08",X"0F",X"08", + X"0F",X"08",X"00",X"0A",X"0F",X"00",X"00",X"00",X"0F",X"00",X"00",X"00",X"0F",X"00",X"00",X"00", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"00",X"00",X"0F",X"08",X"00",X"05",X"0F",X"08",X"00",X"0F", + X"0F",X"08",X"00",X"07",X"0F",X"03",X"08",X"0F",X"0F",X"09",X"07",X"0F",X"0F",X"0C",X"00",X"0B", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"00",X"00",X"0F",X"08",X"00",X"04",X"0F",X"08",X"00",X"00", + X"0F",X"08",X"09",X"09",X"0F",X"0B",X"09",X"0F",X"0F",X"09",X"07",X"0F",X"0F",X"03",X"00",X"00", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"00",X"00",X"0F",X"08",X"00",X"04",X"0F",X"08",X"00",X"07", + X"0F",X"07",X"0F",X"00",X"0F",X"0D",X"00",X"00",X"0F",X"09",X"07",X"0F",X"0F",X"0D",X"00",X"08", + X"0F",X"0F",X"0F",X"0F",X"0F",X"0F",X"08",X"08",X"0F",X"0A",X"00",X"00",X"0F",X"08",X"0F",X"08", + X"0F",X"08",X"00",X"0A",X"0F",X"00",X"00",X"00",X"0F",X"00",X"00",X"00",X"0F",X"00",X"00",X"00"); +begin +process(clk) +begin + if rising_edge(clk) then + data <= rom_data(to_integer(unsigned(addr))); + end if; +end process; +end architecture; diff --git a/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/sdram.sv b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/sdram.sv new file mode 100644 index 00000000..2f65ee17 --- /dev/null +++ b/Arcade_MiST/Nintendo Popeye Hardware/Popeye_MiST/rtl/sdram.sv @@ -0,0 +1,323 @@ +// +// sdram.v +// +// sdram controller implementation for the MiST board +// https://github.com/mist-devel/mist-board +// +// Copyright (c) 2013 Till Harbaum +// Copyright (c) 2019 Gyorgy Szombathelyi +// +// This source file is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published +// by the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This source file is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// + +module sdram ( + + // interface to the MT48LC16M16 chip + inout reg [15:0] SDRAM_DQ, // 16 bit bidirectional data bus + output reg [12:0] SDRAM_A, // 13 bit multiplexed address bus + output reg SDRAM_DQML, // two byte masks + output reg SDRAM_DQMH, // two byte masks + output reg [1:0] SDRAM_BA, // two banks + output SDRAM_nCS, // a single chip select + output SDRAM_nWE, // write enable + output SDRAM_nRAS, // row address select + output SDRAM_nCAS, // columns address select + + // cpu/chipset interface + input init_n, // init signal after FPGA config to initialize RAM + input clk, // sdram clock + + input port1_req, + output reg port1_ack, + input port1_we, + input [23:1] port1_a, + input [1:0] port1_ds, + input [15:0] port1_d, + output [15:0] port1_q, + + input [15:1] cpu1_addr, + output reg [15:0] cpu1_q, + + input port2_req, + output reg port2_ack, + input port2_we, + input [23:1] port2_a, + input [1:0] port2_ds, + input [15:0] port2_d, + output [15:0] port2_q, + + input [15:1] gfx_addr, + output reg [15:0] gfx_q +); + +localparam RASCAS_DELAY = 3'd2; // tRCD=20ns -> 2 cycles@<100MHz +localparam BURST_LENGTH = 3'b000; // 000=1, 001=2, 010=4, 011=8 +localparam ACCESS_TYPE = 1'b0; // 0=sequential, 1=interleaved +localparam CAS_LATENCY = 3'd2; // 2/3 allowed +localparam OP_MODE = 2'b00; // only 00 (standard operation) allowed +localparam NO_WRITE_BURST = 1'b1; // 0= write burst enabled, 1=only single access write + +localparam MODE = { 3'b000, NO_WRITE_BURST, OP_MODE, CAS_LATENCY, ACCESS_TYPE, BURST_LENGTH}; + +// 64ms/8192 rows = 7.8us -> 842 cycles@108MHz +localparam RFRSH_CYCLES = 10'd842; + +// --------------------------------------------------------------------- +// ------------------------ cycle state machine ------------------------ +// --------------------------------------------------------------------- + +/* + SDRAM state machine for 2 bank interleaved access + 1 word burst, CL2 +cmd issued registered + 0 RAS0 cas1 + 1 ras0 + 2 CAS0 data1 returned + 3 RAS1 cas0 + 4 ras1 + 5 CAS1 data0 returned +*/ + +localparam STATE_RAS0 = 3'd0; // first state in cycle +localparam STATE_RAS1 = 3'd3; // Second ACTIVE command after RAS0 + tRRD (15ns) +localparam STATE_CAS0 = STATE_RAS0 + RASCAS_DELAY; // CAS phase - 3 +localparam STATE_CAS1 = STATE_RAS1 + RASCAS_DELAY; // CAS phase - 5 +localparam STATE_READ0 = 3'd0; //STATE_CAS0 + CAS_LATENCY + 1'd1; // 7 +localparam STATE_READ1 = 3'd3; +localparam STATE_LAST = 3'd5; + +reg [2:0] t; + +always @(posedge clk) begin + t <= t + 1'd1; + if (t == STATE_LAST) t <= STATE_RAS0; +end + +// --------------------------------------------------------------------- +// --------------------------- startup/reset --------------------------- +// --------------------------------------------------------------------- + +// wait 1ms (32 8Mhz cycles) after FPGA config is done before going +// into normal operation. Initialize the ram in the last 16 reset cycles (cycles 15-0) +reg [4:0] reset; +reg init = 1'b1; +always @(posedge clk, negedge init_n) begin + if(!init_n) begin + reset <= 5'h1f; + init <= 1'b1; + end else begin + if((t == STATE_LAST) && (reset != 0)) reset <= reset - 5'd1; + init <= !(reset == 0); + end +end + +// --------------------------------------------------------------------- +// ------------------ generate ram control signals --------------------- +// --------------------------------------------------------------------- + +// all possible commands +localparam CMD_INHIBIT = 4'b1111; +localparam CMD_NOP = 4'b0111; +localparam CMD_ACTIVE = 4'b0011; +localparam CMD_READ = 4'b0101; +localparam CMD_WRITE = 4'b0100; +localparam CMD_BURST_TERMINATE = 4'b0110; +localparam CMD_PRECHARGE = 4'b0010; +localparam CMD_AUTO_REFRESH = 4'b0001; +localparam CMD_LOAD_MODE = 4'b0000; + +reg [3:0] sd_cmd; // current command sent to sd ram +reg [15:0] sd_din; +// drive control signals according to current command +assign SDRAM_nCS = sd_cmd[3]; +assign SDRAM_nRAS = sd_cmd[2]; +assign SDRAM_nCAS = sd_cmd[1]; +assign SDRAM_nWE = sd_cmd[0]; + +reg [24:1] addr_latch[2]; +reg [24:1] addr_latch_next[2]; +reg [15:1] addr_last[2]; +reg [15:1] addr_last2[2]; +reg [15:0] din_latch[2]; +reg [1:0] oe_latch; +reg [1:0] we_latch; +reg [1:0] ds[2]; + +localparam PORT_NONE = 2'd0; +localparam PORT_CPU1 = 2'd1; +localparam PORT_REQ = 2'd2; + +localparam PORT_GFX = 2'd1; + +reg [2:0] next_port[2]; +reg [2:0] port[2]; + +reg refresh; +reg [10:0] refresh_cnt; +wire need_refresh = (refresh_cnt >= RFRSH_CYCLES); + +// PORT1: bank 0,1 +always @(*) begin + if (refresh) begin + next_port[0] = PORT_NONE; + addr_latch_next[0] = addr_latch[0]; + end else if (port1_req ^ port1_ack) begin + next_port[0] = PORT_REQ; + addr_latch_next[0] = { 1'b0, port1_a }; + end else if (cpu1_addr != addr_last[PORT_CPU1]) begin + next_port[0] = PORT_CPU1; + addr_latch_next[0] = { 9'd0, cpu1_addr }; + end else begin + next_port[0] = PORT_NONE; + addr_latch_next[0] = addr_latch[0]; + end +end + +// PORT2: bank 2,3 +always @(*) begin + if (port2_req ^ port2_ack) begin + next_port[1] = PORT_REQ; + addr_latch_next[1] = { 1'b1, port2_a }; + end else if (gfx_addr != addr_last2[PORT_GFX]) begin + next_port[1] = PORT_GFX; + addr_latch_next[1] = { 1'b1, 8'd0, gfx_addr }; + end else begin + next_port[1] = PORT_NONE; + addr_latch_next[1] = addr_latch[1]; + end +end + +always @(posedge clk) begin + + // permanently latch ram data to reduce delays + sd_din <= SDRAM_DQ; + SDRAM_DQ <= 16'bZZZZZZZZZZZZZZZZ; + { SDRAM_DQMH, SDRAM_DQML } <= 2'b11; + sd_cmd <= CMD_NOP; // default: idle + refresh_cnt <= refresh_cnt + 1'd1; + + if(init) begin + // initialization takes place at the end of the reset phase + if(t == STATE_RAS0) begin + + if(reset == 15) begin + sd_cmd <= CMD_PRECHARGE; + SDRAM_A[10] <= 1'b1; // precharge all banks + end + + if(reset == 10 || reset == 8) begin + sd_cmd <= CMD_AUTO_REFRESH; + end + + if(reset == 2) begin + sd_cmd <= CMD_LOAD_MODE; + SDRAM_A <= MODE; + SDRAM_BA <= 2'b00; + end + end + end else begin + // RAS phase + // bank 0,1 + if(t == STATE_RAS0) begin + addr_latch[0] <= addr_latch_next[0]; + port[0] <= next_port[0]; + { oe_latch[0], we_latch[0] } <= 2'b00; + + if (next_port[0] != PORT_NONE) begin + sd_cmd <= CMD_ACTIVE; + SDRAM_A <= addr_latch_next[0][22:10]; + SDRAM_BA <= addr_latch_next[0][24:23]; + addr_last[next_port[0]] <= addr_latch_next[0][15:1]; + if (next_port[0] == PORT_REQ) begin + { oe_latch[0], we_latch[0] } <= { ~port1_we, port1_we }; + ds[0] <= port1_ds; + din_latch[0] <= port1_d; + end else begin + { oe_latch[0], we_latch[0] } <= 2'b10; + ds[0] <= 2'b11; + end + end + end + + // bank 2,3 + if(t == STATE_RAS1) begin + refresh <= 1'b0; + addr_latch[1] <= addr_latch_next[1]; + { oe_latch[1], we_latch[1] } <= 2'b00; + port[1] <= next_port[1]; + + if (next_port[1] != PORT_NONE) begin + sd_cmd <= CMD_ACTIVE; + SDRAM_A <= addr_latch_next[1][22:10]; + SDRAM_BA <= addr_latch_next[1][24:23]; + addr_last2[next_port[1]] <= addr_latch_next[1][15:1]; + if (next_port[1] == PORT_REQ) begin + { oe_latch[1], we_latch[1] } <= { ~port2_we, port2_we }; + ds[1] <= port2_ds; + din_latch[1] <= port2_d; + end else begin + { oe_latch[1], we_latch[1] } <= 2'b10; + ds[1] <= 2'b11; + end + end + + if (next_port[1] == PORT_NONE && need_refresh && !we_latch[0] && !oe_latch[0]) begin + refresh <= 1'b1; + refresh_cnt <= 0; + sd_cmd <= CMD_AUTO_REFRESH; + end + end + + // CAS phase + if(t == STATE_CAS0 && (we_latch[0] || oe_latch[0])) begin + sd_cmd <= we_latch[0]?CMD_WRITE:CMD_READ; + { SDRAM_DQMH, SDRAM_DQML } <= ~ds[0]; + if (we_latch[0]) begin + SDRAM_DQ <= din_latch[0]; + port1_ack <= port1_req; + end + SDRAM_A <= { 4'b0010, addr_latch[0][9:1] }; // auto precharge + SDRAM_BA <= addr_latch[0][24:23]; + end + + if(t == STATE_CAS1 && (we_latch[1] || oe_latch[1])) begin + sd_cmd <= we_latch[1]?CMD_WRITE:CMD_READ; + { SDRAM_DQMH, SDRAM_DQML } <= ~ds[1]; + if (we_latch[1]) begin + SDRAM_DQ <= din_latch[1]; + port2_ack <= port2_req; + end + SDRAM_A <= { 4'b0010, addr_latch[1][9:1] }; // auto precharge + SDRAM_BA <= addr_latch[1][24:23]; + end + + // Data returned + if(t == STATE_READ0 && oe_latch[0]) begin + case(port[0]) + PORT_REQ: begin port1_q <= sd_din; port1_ack <= port1_req; end + PORT_CPU1: begin cpu1_q <= sd_din; end + default: ; + endcase; + end + if(t == STATE_READ1 && oe_latch[1]) begin + case(port[1]) + PORT_REQ: begin port2_q <= sd_din; port2_ack <= port2_req; end + PORT_GFX: begin gfx_q <= sd_din; end + default: ; + endcase; + end + end +end + +endmodule diff --git a/Arcade_MiST/README.txt b/Arcade_MiST/README.txt index 30f001d7..52546f6c 100644 --- a/Arcade_MiST/README.txt +++ b/Arcade_MiST/README.txt @@ -1,4 +1,4 @@ -Aviable Arcade Cores 123 +Aviable Arcade Cores 124 #Atari 6502 Black & White Raster Hardware Canyon Bomber @@ -141,6 +141,13 @@ Aviable Arcade Cores 123 #Namco Rally X Hardware Rally X +#Nintendo Popeye Hardware + Popeye + +#Nintendo Radar Scope Hardware + Donkey Kong + Donkey Kong Jr. + #Non Arcade 2048 Arkanoid @@ -177,10 +184,6 @@ Aviable Arcade Cores 123 Phoenix Pleiads -#Radar Scope Hardware - Donkey Kong - Donkey Kong Jr. - #Sega Zaxxon Hardware Zaxxon