From d1ce94441d5e0bffafeb959c505bf3d3975a0a35 Mon Sep 17 00:00:00 2001 From: sparky4 <sparky4@cock.li> Date: Tue, 14 Jul 2015 07:35:06 -0500 Subject: [PATCH] OH OH OH MY GOD ON HO OH!! modified: 16.exe modified: fonttes0.exe modified: maptest.exe modified: palettec.exe modified: pcxtest.exe modified: src/fonttes0.c modified: src/lib/modex16.c modified: src/lib/modex16.h modified: test.exe modified: test2.exe --- 16.exe | Bin 53950 -> 54308 bytes fonttes0.exe | Bin 43028 -> 43370 bytes maptest.exe | Bin 53369 -> 53727 bytes palettec.exe | Bin 39666 -> 40024 bytes pcxtest.exe | Bin 69421 -> 69779 bytes src/fonttes0.c | 3 +- src/lib/modex16.c | 1998 ++++++++++++++++++++++----------------------- src/lib/modex16.h | 2 +- test.exe | Bin 40119 -> 40477 bytes test2.exe | Bin 45281 -> 45639 bytes 10 files changed, 999 insertions(+), 1004 deletions(-) diff --git a/16.exe b/16.exe index e48b8aef3ba9b7b5bdddacd2eabd1ecd6fdf9e08..9017de370c1a7e715118909fb882e28eb8ddb641 100644 GIT binary patch delta 12846 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 LE40%4u;Tv!=o**J delta 11979 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 diff --git a/fonttes0.exe b/fonttes0.exe index 4cc28256a65059b63811f6a3c999605618e1d378..6a0d03e696caea4a8e6ad9b998bf43fe86b1b458 100644 GIT binary patch delta 13696 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 delta 12750 zcmZu%30zc1((iZ7FbcypFn|Yw+~NVo5Kj~p(5wOi!6?dz!XObCghA98LDA@Qa6H=0 zVJ?xx?7I1OH6*)4jUiw>5~HFyP!f;TO$ITBXqNR_`2O89fXQ#+SMOE-tGc?nySlpH zdvo)=xa*u)F?;@AGK%aXVI)N8?w+A08bTK92niteKj#!eN<bFSWl;DWLdrmUKy{!q zpi7`m(6m%Sz65oEbZLaV3aU&e<TS|b8A9SgmqbGDfpiif<0Mi+W`dc427dv);6+G| zHzCJCCw<T$Nbn`Z1X=<53+Q9eanQG*tDygY1V2LDLC=B$2N3ecKtkRJg$^QQ0_b~x zLWT?>WKJL<xu6}O8qm4G3PS!pl#u^|R6*!9=rz!c5JJqL?Vv9}S3wb>gggOC23-y( zBx(#H2SC4o%;V4~XyJH522UWQ6tolc2Iwrv1`;O{G5{0?8VgDT6;|M~5wsQbXVAx> zWs?XQ77K4d_t`y;5DIz+^eN~jNIjL1$)GnuAA&-r5wa4rd^+x+mq5<(gj9oG0ZmRI zWMm>Co_`=@KIlcz>!6Caa5)TW26@hc_n;Ec8=&K$M<AEkgbV~t0%e2NfnEZg1pNex zl`~a|NrWr`*+BO|(~}8V1lkSS2RZ`!7IYVMy8XY~@y7y;J}(Yj^s6mZ)YlIsDbc5F zo5iYQa=WVPzWhRv@<sFY=Iar-#&rK<gN)01d5*q5hNQ&V7D2CndyBq4j-*tdx6NVI zwkABXmBG?%4#nD`F56<-DGsUdX2s}+6A7KJq&-z%pG{J1f><vQzyLL*eUiRDAK)#a zUhD(I_4UgEek;^V4$z&n>+E3T<Dk;Soy9fAvT41nB;3J$1Mc@MM}O_Mh=0FFUy=eV zW{S37#p?506K>dkkkEScsg(K-65X0oKSiiMp8`C()3!#Qu%fec+KGe*M2PNg507eS zUi(1#MR^!?13Jyuny=T(r1@G(^L17s(Kbu2TKj;Q-L_2qD(c3@ga_s`^=_p7i-h)i zo7H1ugZaMAEJk-Sn>0xF7Ov27azOY|)}QuIGW7Lp(ZK^Ksk>J^(ARH7X)h}&w-y?* z<~Pv|azg+0vL)d`jDil)ujJ9X7iHH2nwaD2S7i5?z14Ee-kmb_Qw?@55>pRls;V=( zY%+~g`3%WaSzBt1qVh%54dvV5sLD{Icvea1s$U>N&9;q}tA-9{I-P2x7+@Y0eJZ-M zo|P>LUCNz)0O{XVV@BQ5!IgQLO=)vdGv+>{{HyAgZ%oY?QAv0dQxhX@U2B8M>T`#V zN!A8y%h9paPfayU{42zDAE<v4d}pC_Go~g9w_7naDWY;&Nw^(TlUnzY=7Hp!4j82j z+&W@vo)widTzh`q7cQd(akosnwLTuZ<%tz5F2x+*v|A?a-_-*Rb4~KMI4ey`^TzXK z-WwarJoNR|7`z>w7})ymZd(bZt`WjE`mw8z;7Y%C4G42{v1WByCR)s*^<rmYfA=ys zrA7JN=IoJZy}UWTyS<GU=g~oK0m42y$t_^iyUyJ!x;`S(VS!i@?scztWXX77o8@Uq z0Mli=@4+Xj=}}rL#)Uam?dHoo-shI!`KHQx(IUey|Bs0JK=&uRooJWadm?V{xm$EZ zNU>eHi$w&Fy5+WiciH0T(;k&feA;7?7ZcyS(<=_>*4O*eDW1~??RL^vUrMng*rK~_ zZDhjQTjie0Lj-*lv;UUoLcvP^>lr8%&>^~^Q8UFuC#9%{+tICuPD!=}?zg9{dsr#F z(4Uo(P-^e6g^KGQ63Grtpv!e(e!)V@VTstD|HYc+8GYU&{|8>mDf;>+=|SB9m+5fq z55FKh_4R4=Tityjmo|I(RixP~MRfeG(kdavlI3Od0Ir8ICs=0o)UdZ1mhS(|Exima zjB7hevU1YqWsm(vck+k_+%uM2Sf2ke%9bp-xxKkvYLT)?J=tSz*pehyUX$uYopAmJ z0`TW832vdAofcx@G(DoHy@xyV6>wELp}s0nN&n_7ls`Ru(zU9|t@3(DsN(;f6k6^7 zjU;_%N36}3>p(9{mJ7`{?f;>bv6m!LHp${DlIn)YlM|XtoDmK6U+d^kdcXc(NtR1e zOK8nE5_R_(JRJ5LLoKl|tHgG~w)&oAmg4TdJ*;8>0kS{&gQzb9L-)2wp_@Z5N_3u2 zPQ?SMTK!0}d}sM=?+qy+v`bP@`J<DrpRAW7&mJIm_gBUKfaZPczx1yCL8^AONwqg| zyCv1$#;rqo;-~u4-nDnY|0>mY6WbXV+cK9FEN|<jM_aLbSsOocC-s7G_ixXdCs<nQ z>vh$iADQ8nmXcb1)_UcT_@j=-`VJP`b#$SxpO8t*eYcBeyzBb;nS@j}c!>H5>d&PW zITqKG(#BKfd?X0v^XOJ<i_)P0vdtNyG$F{7l{=WZWr1M7N9#(`1M9`;ZsZ6{e1B`B zlGGK-%+SvV1gVZowczdy7*PSemi9WHa;jpFqnrH{{c)-7neKMoXIYPwxw7?AbSpBS zk|?%K>9$@%y|(i1rnFS0iB~$*O}h1`rFwT_JJ*jRyvY3S)}N7-mbPt=QkBO4AvxDp z_9!iO4$B?ph;<J#Rp!v>R$KoeTy+BaW!Ay}){in(mc;(nPr38u{g4E0dxqj_y~w)o z-N4}*wABzgL9eFngFa=2mUXemq`HfP%)$UZeE$2i7X6>JNKvCVww8^A{iFM}G|%4@ ziq3l>J=^8hi;9ynSA-aO1!H?pK}E&&PujXi{yRh$=yp_JvbJ{X|Ei_02F3uu)G*tz zP-zVe6&GfzF!b8`a}sXq=!W_564nkECRtlPIv!VZPO|9FOExJ;H7=^^JgGe=DJU!F zDsNP@U$Bo6D)zJ27w6l@H@ZR5pOb3OOEfEZsIR@vLt2aL5pB&;?Fn^%nFQFPF4I?n z(<6%I!_Ue}*XEP!9u~```pU^-nX0Nu-QF=iQ7GwDE^kQ`+J9cxRV-8Qka61e^5J5p zZCm$ny-YJh28g(ohm1_mRHfAK)~3Mol={8=j;V~fCt3U-NEX*eQg=+JRMVifjU<QR zPHXJ}t)hQlTeBB~{JOUGZEfvQ0DH7GyKy_Bt$kBldq_*~holObb+ba>6JQ@h{ywx1 zXxTVnTF_VJoCQW~o9@nkY>#7ef$eO8SQ%;&?<t>Fx>`ipda-Ive^RFBvgn4|{o301 zv~*VZs1VH1Y&GUYzfW89CoPh?63;9s-uB%zcAvKPPg=SsJZ9oP0qeuI@nQR}6A4|J zs`jmY`>K3UQkpJY7n-6^;f#@~TGzBdL@;DMVj;w)n|el!6aOyO&5no@(WPyXbDXu< z@GoXquXHE;+O2n?KgE<{6=y#+#f!OL72BvK=C&<awy5qcn?BRlefX3~cCt&{Y2?JA zjBg07=}*%qe&i4SQdO+GOv<FTb!5`j?(%!8L1Y5vxm1Em<fOgstSUCY32IqhG074m z((fmYo+Znc7$UcS5#7M<wX)pazz4`OtG^N>%H!^rxG8s)M&+LE!-q;E#(fkQPjHpx zau>U%S#Gax*C?(ChS*@_1?weC%m><yo#xna$ICSqFX7I(#`5_XIO`?lF7|IoTpp85 z;Sx)^{5w3{j>CzKon--z0%2OOj61%<#SWnD+wE~}i%E~c0JJrl%l=nezK1fY|74%Z znB2RzwGX-f3Y?vQR!aL>ruS!qQ?ARJpV?%$Z+HG|dnFqg8`nRfR#Wrjcl+Ci^VbP# zPZ~1iLpB+gEc$eMZA!r7BImd_S!!wJspVi?il{;sK`^MNPhu&QWs&^|>G!lOi@-h- z38Kb-KN84$T7E)toZk4FvG~7-CA?pYbkuL-sWMd-OBKo&R=`S2^(D(wmSho%wytli ztxAmDNc(4La~x+sHSa(TY%tlRgh!aqU^cqdSzU(_u325{9v+iQopHXB%$lku&-S0& z4w5!XtSzu=kuB*W)-9^SU)nuAISl@mJ-%`tDPGESwsxu;d8{ch_O(+MzsQx1Li8z1 zjAJ!ikB|S&4*x_#yYt_*81<(5dfaG4;$SwWt(CDFIy<olW2#)RwrttdDbUXn%|2i8 zl{oY}%v73VN7?e$XIh#v<1GZb@{RS1Wo@UD@&1-SqC)qKE3B<nOV*<;Z=u{aGhe)) zSeO2Ek;FI3ny)04I|=SMC@YN@Zem+;<p&3|b3Jh%cdk5;jj~n!jTGJbhYz0qGO)TO z5`~B+r3L3N_Z8o_w?v%d;c`&6=)aPvSJF^+SZS$omleIcJijTrp(!n6u5uiM$Y!85 zy4&K9NNzQ2$6YSzhxxu@G05#d^Vw0>h{^(aW4C##QU;Z>xcW@GK50TE7U^NTLb=%f zVH#&^V5Gt9r8HR#o)#yeMI~az!vR~;cr|yRKMhX~adY?r)qYj65HCm`0L+qw%}VnB zN}2$o8<WEVpmzz+0}kJuc@tF?NGS<$bs_vXog9b+bvrpIhM8nOzu{<hTt{h5dt24o zu0f?z+o*0{l|6~bIBDFqsk)RC%5fM-Oo^VvTEU``OH|nD5WP(n{Y1I>y462c7A{zv z*o4mE!OoQ=7T`@5SBDDyFl8#D&e~EL+agINQI!u<%H;Q5+np*O4lVI}Ux$V_BTQJv zoI?HQtoC88HD9&BIBRCz!%S6~dffvr`nNg5;RB8=uJqa*-7wxCS5Nt<m)v~K+Bmnl z?e06eQ+MAsv>&whCFzkR)>Dpj^`!o(gDNKCneLIIkCkgZ<@U{~T&2d|1o~H|K?`!v z?i4HAMxWvuwXt%|an}>-iLw`~$abs@N9@*k%Hx_!+?7u!31sb4c(@f#PO-Ih@oE$N zJ>}9c<zn+SL}swkV!Iq<-{3xrnJ5cqD$h*8s%y!@Kt(sSpFG^%-Tn(C^t;pqbZgy- zW7>#M4+wFI=+)i*2E)9jIjM6Itse<Obc6NMC&#q4joR7_IxB4|wj*oH33a1ZAScur z^tH4}{8YpcdNnPch14ZzMy7{kGgd;V*+jxOUdKUgg8s5pGDEp=P{x`3LOa4&I!xSo zFYHHgcbv+q&si_B1tc`#<ZW$WD{5c^GLc;mYf)i~=wSL(#M-av3a)FP8H%nbjn>xY ze}3kVPG9Iu6sDLZ#7bqdFvZsW0I_|CHv=*K{Fw@*j<OL5WSWw3mGPq(|J2-g7<*wZ zGu$xuNo>NMbLR<Szkbv(&)ccr^5RJ$IsNF`c@esP_zNGlI%0f4NKSte&5E>Ro_{D~ z`ekQ^M2*f_XqSy<NS`V%Qp<c=7m)d$Aid-J4n4bIl2jF6Mco#Tki6tfI(gy1kY9%4 z1x~<Hyc#28qn={?pYf)N2nh@csKaYA;`IuxSXe5IqjwhuslLXGvSV~$R*>*2otzb> zQbGGYx-2V5JUD}H&k9vtdzui8S*DJj$#NHOJWa0x>;PE8L4U(Tta!X;DljcsmQzk7 zDS(DA8X*MJj78&w!F2ng(C`lg<J$ruYlJs(HU15kkA;r~Vr&9;S`b8IBbYP7)w;`z z(glx9l|V{Ng$br2b1BT>2smx=7%56zLsu^zCXE-(^xefFL2JY#A`!O-8t<cSrTCGE zj*;&@@kWnK0V1ledeWa4cSJDX%!S3p*#)q*TfPG=ckxGDF9?E!)Gv^X#5jn?P)*LD z-}NMlK9LjcUo7pESW72`LQ_sIhH@FJZmdNsE2V0>J|`?_r}Tu(ow*J04QZHcybgxQ z_&5FpE?f?$r*p#H$H<fIdLeN4DR~l=bKeY}B5&c~c>!y4WJ#{MtfYvD+sGE^7=OfN zhP;6u&mAUhk$<3fbH_+jzCwo?Bb|Sc$Eoa&71JHdyr|h2F5Q;L(6@}k<ngLT6%`76 zG)AqAcfhK{^p-I~Zd6@hs2?4jH&8mRI!9CTMo3?&+Gu5-pVXrIfxezMLcXawqlVHb z`Y3Ot%N^BmwQ(-SaD#dSjaeElol)<l*-JkQ|3<yr$+%oi$Sw6<wQ&JwZmEf}m~%g? zjV3!plk$g4d!0T;B`<n4ZxH>zd{1egQ$20WA0;1kI-o&QWllSt@M6>HPjvZnqvQjc zMh1?c&CjiJsnZ<Q7|Zec`-tWU%~&=<Zq$6wq@!TR)#(-l$2BeVi)Evw%bM?Z7Oa+j z(0ol_D2S3S_q$FH6l{@x=+{ao6^2VU`a99eqG6gt{RwI7FFMoR05#6x40Q5wCPeET zL^}&3q;Th%4AYu{jc}fh>t^8seN^b{W;7Da5T;YyAwTV00IiWyvU46iSQIW5IA5mU z6{U|ZbN<@dxX=afc%7}z#JCaMF6Rr*#tmRza;|YUuHwu~kX3=(<GhD1HVu!u?Cj#= zn9A&eT(cQrrd~$HA}anBV{g0y)f>)EF2>7XR4ytPdejsyxwuTEZKk0v9xh{DjAONg zjBy!5eTqkFCb~3nYxG*NjxH(=35a+3*v0rhG_qW>T!`@qxR+gC26r6X2QDAbcZx?! z$6SKwH^t*zPP+`&8Yj9E((Tes2QH6v57x$Nd32WpjL?p!8Ow*c$7-Log9ial)27qy z%Oj;{wcF{@<>?iRwVU02E7hS0UdJ-SJ8HK6oSt+;cjn>pz83x%mw-F0Jq)f8+!xv} zz}12KUTbqTz7OWE_Ft|>1&rQR?@EksfXjC+bv3>YrWg#Y9R$0|^{T7!0GO*_@cjbt zeU$#|`n{X+9vGe5B{$<)Ffnd1Zp3&UoZ`04&G=6+Tfsp8Ke%jj``XRe3Fd1sFhY!x z?u10UZ+188!HjpG;coN>GXo5S0k}Nt{;WGO4g>ch)L5O(0(CD9leW9J(($DO^e?-A z?QUEL$zk`y(6oTN;C_KVS2{xa&fSmhhRRiUy@&A{1cHa)L5%I-yga<<=cS?Y0FP^) z^poX!+TZ+i#ZZrnp2j*41eeD~PvaIa+dU{Mybtajk2RjggJ3@KSmkNl2j*Lk?;$$? zZk6XMBu2Y$Vc>+h2x66lmB2FE%HsT$xdr7Vy}_;ir{_SOJsMZ8WciNG<4IxF*i|SL z*$XMzdAU=wOIbQBup`q<1*Q@d3t7<^ie`TF^ugz&&3M<ESvE)-q>H4h%SH^&fy8LV zWr!|9XWR-VOcw?{C|>cT$I3#2hU*e}^Tx{%M(L*Oj2FO+*NxW^Bg^p9b<?TKib28= z8nGfoXrsw1f`vqCUNHqHZiAtyte_yfBp2bvzL+7$6Jl6WYR)b(8;JCjR}YkAG8^KH zOl5gX4YP9#O(m-!U5qbW_6mmFmHAA69aWe6k2uzcC&s5wPb1Q4AcULd?HLkM;teI{ zA|ie1P3M$H`km>mQCgT?P+(YsafZ1w-t>><qZaSRs^goF!H`{&w}QxT_5luLZyy4c zB}9I^4`3=lo<(AZ53J9I>>^Xqn5T$b?7(Q~${`gCFcFSs4Ed(TL_Q|<0!F@<$@?C& znp~V)lxD`r6_yft|6_t_1*X#6oL*7Z@7j%tCi05kW25mE>DWqdA2twtpp5wixrX90 z^AZfh58kw6Wr*-D)vpTGUDG=TJ-^62HfANnD{1nouz7pgXGT86MmB^dR<RfBL1erh z?Cqm*X>N8gkx%{}N;R#>Eg|yf4xFA{<*Ui*8K|FE1q$y_kJWy-My?(dw~u|fWX(Dv z;6hK?5fbw0$IQd!(NAyzk<av)-@H1~>!;pYMq^1XoBE%8>50`rd86<#)ZQzD3FB=r z7G&p@Li{8?kU9b?$HXN>3K-a<Yb<p@8+st41K0|H*Tea%G}pjKnMm{Loae(vo*mRv zpWy|D#brigZV4KDX>f025C8`D5#9HE=&TI?-YPjJyGbH-_kpEL%gi~Z@*+bi4;0kX z;|nhDkkO$o|J4yX)OSsou!v4s6B02y(4kb4U6g}LTYJi-c0fLd!DF#Zt!oBXeAPF? zOUg<Xmn<XlcYRP=dfc=>%u1e1<jcPU)00z(e6<f;vUn9XQu&{cAxrZMa)^AR4=FN@ z#j?562N)76u$Gs?&jJ=S-}Fg}OA%an>)sP@dAVkTX+;5sB6|s3yxAuy$t^XTN^&2U z-tLpy$BETsvqj|2KGCe=X@xn4S@}hPA3P4H<P|1m7XoeRLrq96&mrZ?7k`807cmSU zCwlyZ9y_<ntqzE4)(#nTpl1dQ_P8$3H!n35mgZq{>gcq!W5q86=?iPaD{e#29$#34 zNQp(c*(`$8Lw^e!IT``f5!?wgi}KB><|3TnNA#h6;O0IsAtApg->zEy7|KB!Troh? z)#G?VMS$2blrF7^9L^qd98EE!hB)L=_%%DI2gdBM+zKp;eo~<y!k&M6e1mC61^EDi zl?UFh6(Pb>I-qj+@TWo@eRHe;mcNPgSD=r@xgD&dC6yzE!?dO{OsJx#D#I)M@EZh2 zGsPulwy@qB<}e43ic63&N{e%suq8ixxI>V;BD<g`54_m}vJu51D?pAQ(vinelX)pt zajz_Ngu{%n&^%_s(p;87clBTi*xGYaOlZ}RU@9rhW_#MZBOMjea?SH|OH3)*Y)O7I zlKy4gKw&yPv2K`n;YoUTU5MBfLkFx65!~sN^}~cHx@`TZ0aNfu>F6J}%{Z2qvk~hU zLiz!e^5~WI!-aX&rD}xOF`iDSiky8HzrL{7DC*7HcrIcX-@1xe)?S>OM`ZCabT;N_ z1_X}WEjvWCuIkAF$MCxihedmGl|Sf7IpT&<fk*Ib4Tp=RSfWczg)IIJL{|40N!<{f zb@I1bxg{k<CJe)+-@@_JlV=0H`8zZ<E-5h{_=Df!Gm|pnW&zjIuQo&pK2)_aG&lr5 z9N{a-VCc!>PLmxTI+FM#n!GV&&~rc?ie<$)+2-87gk49sZ}bzto=pF;F+}jC%^M@U z<KlXI$p*n#jAoBew-+PDhjDb`i;+G))A|$&%1W2oBesODeKA}pr|-TPD(s+VUW^d_ zM(@2CCjK~$25t%!^mN9iaG{Vc-!wol)9OuwXZ+nUv?>E1A|luK0)`xHIc(hUpaj=N zq89PYE9Q?WB+{Dcy{*q2GaF_4%cju4U43YLkvX?yZpO^%@yVDPP0!Sf-5fUXP+toM zzD|jJ)B(}en}am?z{I16zOy+fo}Gdmp_IlCdC$(YAA=lVJT{!)L3X`)&|BYQNvi~D z8hY9ot3(U+^f@KO<JxpbFUriOYz%NL-J^sE+4Q&)f%V>@3=VMVYu*r_kZ9m5+(=~C z9?K)PglX`##qRKeEy2Prx^9biEPp9uKR^~PW*ICQXD^&l%P^1fvBw5r_S9)<GfUI6 z7qhM6IauY{>Z>h*y1&NvI9E_$caKtyCD`-VgkIbZFQKuPV9fRsOK|Wm{M^XCIHsFs zCZ(sMQ{MvOahGGtHxuc8BK?acVz?GRJ+dpZ^_f><Dra%s3-Ys;19jb59XVuuuZZdA z7BPp>6?`_bcm3(=VFIOP)guPK1WiYrW2am8OmR|f`E0h<(ZE3ZNwxRDsk3@D;&PrV zD>cUzn#z#Ekl5(Y)lotX4cI!Y;<MR39vTvJ%`=l{+t1iH`(PwE2V7*b`zm`rHeX2z z*ne@>^?D3L+A$mK`{l&PVUrys*k2rhPET!h7PR#1tzp9=l6pMBiogq;Y?gyZ{tk=+ z_9Tt7`btFFhI^o93L4<E`J6RClkRAZ?zD#by!v=u!xEgyS?3Sav(_lFHHiw_d{SRY z?rGCdx)j^WG92;kc}{BX6ZMS%k&nCDo5S-0?`2Q-*YvuvEl`N2)!TxF1@z#yFiof6 zn7ganf(I^3am)$JsX2?WgPHA9EN!AgwhtWiXUOgGVklh9?Grhpr%xH%!+bW(=~2KS z8G6o^+v%?D!#v*Xk(J`Kho1f)J-eMHqt5Lk^g~m7>LJe|iSY-4p>*7iVFPWwBEz($ z%hJ>5^#(yOUArSf7oFBqwXigQH9Lhz(?dHV0;l%k1{Qa-vy1RFTY`g7vHf`Z4=V2* z=I!)MPi<qb#EDMZ877RS%XWqjnb#{{+#@G=W<hwcKQH?J&WSFoP!LHI4lv)k)jilb zL-ce!YqQ7j#dsVlCEIA;AHz&u;!u*Q$|nJ0ri#r6`(uv;A~}Is5XC4MswV64n?5{Q z@IQ7+v6~jfV%|VCEDR8$U|~4f4NcO|t~rQnzK!QBnY}c{-v~PAHJ#6Cj<j)P6HwOf z3wXCAysUHT;Ic#-_mW?p9=(#e79n^~$A5`RNPz>%R0RNIe+%)E$o^;l#j2x#TNFqn zad2H0@yd?uQK=omy__2WPiyI?FL_5C<2u+@;mLF8Ig44lHmhOR4&~b2FL`S-@H8dk zhbhe1Mdr7ba^zijk2eMk(forW*YtG3%f3T?;RW^>iIoTQ`#>*n7w}?$?4il8d3#$i z?y~p}ALkiB-(xy-$1C32C_HS*B73$YWGZhik0b1%j@4fGmhQ=abA&y55wZz2`~K_` zHUkn_WY1ZI^oM*T?@aWo-cKIpl0|r)!VftAN6qV8&K{)*Spqr$9qyNNIG*QZ@dI8y z_=>mFJFqT`2k4it_-X#ld7S2Nzv8Q5Kev^|+kw>eRbS^ryl|P<Li?H<yo~d8(yP8c z+5o1>KPHfJOluT#Qzi4bp<Kp4F_5!x<VBcRs2a)Rrjg5@qMyF%=QKEw**HwEfuF|t zDk|*ub24$>j|T4c(-sY7Iv1XV84^i_w{+T<IMNlv5KnIN5J%kUI@G<v`6yZg-Y<yN zokBkaKacZy^cwh$oS#R9*Zj0~obSLH6cf(8_rAsvb}Gg1Ye84x{R?d3eR6}DJ$Aap zuVq1Fc%MaH>n~i!j+Xf4E$9bciw#=`mz<nP8(#Bus=!l*Ec(zZulYIsne!pE8~iVv ze~u1$-Op(j0znpi>16OLI3Gt1uls2}<UCGqm9P6cUE>8G`WBRe!dQiJ`U&`_IlqHm z0bj!TztL_~ex36;#Ra_K>vW74^mOtYe%?QEzHmBo+zk}N<BdggHXc=EksZ_s@#US| z$q{x)BLux7ww_LEFLB9uJ|Orw@UqU?CxX?!*`wjSpO>d_>ugy5#mn{6>6F)fwOTv_ z$s#*V5mLz)P8>(FafBgcD9wIZHzc1URUE-POTxl=p$gMYZt+H#%V)UGRMv<}<h34f zWEZc+@+BjCzL?Hk>3-8&TN24yXU8Q%5_pX5=LkC};d2f5=L$!5Br-(eQHLaoTD$1; zZ~1AHIL}T$_?<l;s&_fU4n2f0Z##MhLVKG_D3@?cBL<CNmiV!UIE$=C&mUGa^5SkT zufe$m!_KVx9Ono-;NV>|=nk{)SYdNUGHY6D+T-W5lJo5Nfw$qH09b!P<;5pR9>w&= zFoa@4w4-^Moh(@LVk5qaBdr|CKnpIA*fVTGf0mC?%SnUOEsN1~M2(-*NX{>yvupgE zQ#t<)YAvM8YrMTHd6^#)h#%0Ho_00&xMaf|+JHcq7|qPF?H(V`_`omch#osR9N@?s z9AVo&KJIYjdycT(o{*Uw2^!7a!ak1S=SUVu*v?MKXMB?X%n`PW;}t&B(fr7fvCptv z=;ZnYGck{TyLXT5qFX(fK3_W*54jg=gT&WGdTXyA^>{m2D5f!Qe>Zfbrd*OECCNvU wMtMo{z=#==6g20J(752>i7Dw%4wlB(jd^E=ppu73gTAQSweP$rmmmQC9}Tz`xc~qF diff --git a/maptest.exe b/maptest.exe index e86cd95d52cd62dd795180ffd56f916f66adbf09..f267d6cd1aee7894b9c4d8b0f49a027f532ac0c9 100644 GIT binary patch delta 11276 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 RiL}1{`o$emX?hw${{wI~N2&k- delta 10211 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 Zu77ZK79-}oMV?pdr+vGN;~uLK`XAzTFTwx- diff --git a/palettec.exe b/palettec.exe index 925e1a651501622da4c6d0655018692a7f5f899e..81fd61aacb62244e4aa3511f62562a5067a2fcad 100644 GIT binary patch delta 10990 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 delta 10846 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 TJYE|2e%HJw$B6P%aR2`gl)969 diff --git a/pcxtest.exe b/pcxtest.exe index 3be4c9071cdb28fe6ba6ed3d05222058b3468d7f..61cc8d882923db3fb5b4ec54a8e7ab468c11006b 100644 GIT binary patch delta 18378 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 delta 17367 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 O*+AwumTS&J=>GuMWq<ep diff --git a/src/fonttes0.c b/src/fonttes0.c index a59dfc10..4365b812 100644 --- a/src/fonttes0.c +++ b/src/fonttes0.c @@ -171,7 +171,8 @@ void main(int argc, char near *argv[]) //printf("%02x\n", l[i] & j); //modexPutPixel(xp, i, l[i] & j ? 15:0); //modexpixelwr(xp, i, 0, l[i] & j ? 15:0); - modexClearRegion(&page, xp*4, i*4, 4, 4, l[i] & j ? 15:0); + modexputPixel(xp, i, l[i] & j ? 15:0); + //modexClearRegion(&page, xp*4, i*4, 4, 4, l[i] & j ? 15:0); //while(!getch()); xp++; j>>=1; diff --git a/src/lib/modex16.c b/src/lib/modex16.c index 2b2818fe..e61df5a1 100644 --- a/src/lib/modex16.c +++ b/src/lib/modex16.c @@ -1,1004 +1,998 @@ -/* Project 16 Source Code~ - * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 - * - * This file is part of Project 16. - * - * Project 16 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. - * - * Project 16 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 <http://www.gnu.org/licenses/>, or - * write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -#include <dos.h> -#include <string.h> -#include <mem.h> -#include <conio.h> -#include <stdio.h> -#include <stdlib.h> -#include "src/lib/modex16.h" - -byte far* VGA=(byte far*) 0xA0000000; /* this points to video memory. */ - -static void fadePalette(sbyte fade, sbyte start, word iter, byte *palette); -static byte tmppal[PAL_SIZE]; - -static void -vgaSetMode(byte mode) -{ - union REGS regs; - - regs.h.ah = SET_MODE; - regs.h.al = mode; - int86(VIDEO_INT, ®s, ®s); -} - - -/* -========================= Entry Points ==========================- */ -void -modexEnter() { - word i; - dword far*ptr=(dword far*)VGA; /* used for faster screen clearing */ - word CRTParms[] = { - 0x0d06, /* vertical total */ - 0x3e07, /* overflow (bit 8 of vertical counts) */ - 0x4109, /* cell height (2 to double-scan */ - 0xea10, /* v sync start */ - 0xac11, /* v sync end and protect cr0-cr7 */ - 0xdf12, /* vertical displayed */ - 0x0014, /* turn off dword mode */ - 0xe715, /* v blank start */ - 0x0616, /* v blank end */ - 0xe317 /* turn on byte mode */ - }; - int CRTParmCount = sizeof(CRTParms) / sizeof(CRTParms[0]); - - /* TODO save current video mode and palette */ - vgaSetMode(VGA_256_COLOR_MODE); - - /* disable chain4 mode */ - outpw(SC_INDEX, 0x0604); - - /* synchronous reset while setting Misc Output */ - outpw(SC_INDEX, 0x0100); - - /* select 25 MHz dot clock & 60 Hz scanning rate */ - outp(MISC_OUTPUT, 0xe3); - - /* undo reset (restart sequencer) */ - outpw(SC_INDEX, 0x0300); - - /* reprogram the CRT controller */ - outp(CRTC_INDEX, 0x11); /* VSync End reg contains register write prot */ - outp(CRTC_DATA, 0x7f); /* get current write protect on varios regs */ - - /* send the CRTParms */ - for(i=0; i<CRTParmCount; i++) { - outpw(CRTC_INDEX, CRTParms[i]); - } - - /* clear video memory */ - outpw(SC_INDEX, 0x0f02); - for(i=0; i<0x8000; i++) { - ptr[i] = 0x0000; - } -} - - -void -modexLeave() { - /* TODO restore original mode and palette */ - vgaSetMode(TEXT_MODE); -} - - -page_t -modexDefaultPage() { - page_t page; - - /* default page values */ - page.data = VGA; - page.dx = 0; - page.dy = 0; - page.width = SCREEN_WIDTH; - page.height = SCREEN_HEIGHT; - page.id = 0; - - return page; -} - -/* returns the next page in contiguous memory - * the next page will be the same size as p, by default - */ -page_t -modexNextPage(page_t *p) { - page_t result; - - result.data = p->data + (p->width/4)*p->height; /* compute the offset */ - result.dx = 0; - result.dy = 0; - result.width = p->width; - result.height = p->height; - result.id = p->id+1; - - return result; -} - -//next page with defined dimentions~ -page_t -modexNextPage0(page_t *p, word x, word y) -{ - page_t result; - - result.data = p->data + (p->width/4)*p->height; /* compute the offset */ - result.dx = 0; - result.dy = 0; - result.width = x; - result.height = y; - result.id = p->id+1; - - return result; -} - - -void -modexShowPage(page_t *page) { - word high_address; - word low_address; - word offset; - byte crtcOffset; - - /* calculate offset */ - offset = (word) page->data; - offset += page->dy * (page->width >> 2 ); - offset += page->dx >> 2; - - /* calculate crtcOffset according to virtual width */ - crtcOffset = page->width >> 3; - - high_address = HIGH_ADDRESS | (offset & 0xff00); - low_address = LOW_ADDRESS | (offset << 8); - - /* wait for appropriate timing and then program CRTC */ - while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE)); - outpw(CRTC_INDEX, high_address); - outpw(CRTC_INDEX, low_address); - outp(CRTC_INDEX, 0x13); - outp(CRTC_DATA, crtcOffset); - - /* wait for one retrace */ - while (!(inp(INPUT_STATUS_1) & VRETRACE)); - - /* do PEL panning here */ - outp(AC_INDEX, 0x33); - outp(AC_INDEX, (page->dx & 0x03) << 1); -} - - -void -modexPanPage(page_t *page, int dx, int dy) { - page->dx = dx; - page->dy = dy; -} - - -void -modexSelectPlane(byte plane) { - outp(SC_INDEX, MAP_MASK); /* select plane */ - outp(SC_DATA, plane); -} - - -void -modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) { - word pageOff = (word) page->data; - word xoff=x/4; /* xoffset that begins each row */ - word scanCount=w/4; /* number of iterations per row (excluding right clip)*/ - word poffset = pageOff + y*(page->width/4) + xoff; /* starting offset */ - word nextRow = page->width/4-scanCount-1; /* loc of next row */ - byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ - byte rclip[] = {0x00, 0x01, 0x03, 0x07}; - byte left = lclip[x&0x03]; - byte right = rclip[(x+w)&0x03]; - - /* handle the case which requires an extra group */ - if((x & 0x03) && !((x+w) & 0x03)) { - right=0x0f; - } - - __asm { - MOV AX, SCREEN_SEG ; go to the VGA memory - MOV ES, AX - MOV DI, poffset ; go to the first pixel - MOV DX, SC_INDEX ; point to the map mask - MOV AL, MAP_MASK - OUT DX, AL - INC DX - MOV AL, color ; get ready to write colors - SCAN_START: - MOV CX, scanCount ; count the line - MOV BL, AL ; remember color - MOV AL, left ; do the left clip - OUT DX, AL ; set the left clip - MOV AL, BL ; restore color - STOSB ; write the color - DEC CX - JZ SCAN_DONE ; handle 1 group stuff - - ;-- write the main body of the scanline - MOV BL, AL ; remember color - MOV AL, 0x0f ; write to all pixels - OUT DX, AL - MOV AL, BL ; restore color - REP STOSB ; write the color - SCAN_DONE: - MOV BL, AL ; remeber color - MOV AL, right - OUT DX, AL ; do the right clip - MOV AL, BL ; restore color - STOSB ; write pixel - ADD DI, nextRow ; go to the next row - DEC h - JNZ SCAN_START - } -} - - -void -oldDrawBmp(byte far* page, int x, int y, bitmap_t *bmp, byte sprite) -{ - byte plane; - word px, py; - word offset; - - /* TODO Make this fast. It's SLOOOOOOW */ - for(plane=0; plane < 4; plane++) { - modexSelectPlane(PLANE(plane+x)); - for(px = plane; px < bmp->width; px+=4) { - offset=px; - for(py=0; py<bmp->height; py++) { - if(!sprite || bmp->data[offset]) - page[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset]; - offset+=bmp->width; - } - } - } -} - - -void -modexDrawBmp(page_t *page, int x, int y, bitmap_t *bmp) { - /* draw the region (the entire freakin bitmap) */ - modexDrawBmpRegion(page, x, y, 0, 0, bmp->width, bmp->height, bmp); -} - - -void -modexDrawBmpRegion(page_t *page, int x, int y, - int rx, int ry, int rw, int rh, bitmap_t *bmp) { - word poffset = (word) page->data + y*(page->width/4) + x/4; - byte *data = bmp->data;//+bmp->offset; - word bmpOffset = (word) data + ry * bmp->width + rx; - word width = rw; - word height = rh; - byte plane = 1 << ((byte) x & 0x03); - word scanCount = width/4 + (width%4 ? 1 :0); - word nextPageRow = page->width/4 - scanCount; - word nextBmpRow = (word) bmp->width - width; - word rowCounter; - byte planeCounter = 4; - - //code is a bit slow here - __asm { - MOV AX, SCREEN_SEG ; go to the VGA memory - MOV ES, AX - - MOV DX, SC_INDEX ; point at the map mask register - MOV AL, MAP_MASK ; - OUT DX, AL ; - - PLANE_LOOP: - MOV DX, SC_DATA ; select the current plane - MOV AL, plane ; - OUT DX, AL ; - - ;-- begin plane painting - MOV AX, height ; start the row counter - MOV rowCounter, AX ; - MOV DI, poffset ; go to the first pixel - MOV SI, bmpOffset ; go to the bmp pixel - ROW_LOOP: - MOV CX, width ; count the columns - SCAN_LOOP: - MOVSB ; copy the pixel - SUB CX, 3 ; we skip the next 3 - ADD SI, 3 ; skip the bmp pixels - LOOP SCAN_LOOP ; finish the scan - - MOV AX, nextPageRow - ADD DI, AX ; go to the next row on screen - MOV AX, nextBmpRow - ADD SI, AX ; go to the next row on bmp - - DEC rowCounter - JNZ ROW_LOOP ; do all the rows - ;-- end plane painting - - MOV AL, plane ; advance to the next plane - SHL AL, 1 ; - AND AL, 0x0f ; mask the plane properly - MOV plane, AL ; store the plane - - INC bmpOffset ; start bmp at the right spot - - DEC planeCounter - JNZ PLANE_LOOP ; do all 4 planes - } -} - - -void -modexDrawPlanarBuf(page_t *page, int x, int y, planar_buf_t *bmp) { - /* TODO - adapt from test code */ - int plane; - for(plane=0; plane < 4; plane++) - { - //fack - } -} - - -void -modexDrawSprite(page_t *page, int x, int y, bitmap_t *bmp) { - /* draw the whole sprite */ - modexDrawSpriteRegion(page, x, y, 0, 0, bmp->width, bmp->height, bmp); -} - -void -modexDrawSpriteRegion(page_t *page, int x, int y, - int rx, int ry, int rw, int rh, bitmap_t *bmp) { - word poffset = (word)page->data + y*(page->width/4) + x/4; - byte *data = bmp->data;//+bmp->offset; - word bmpOffset = (word) data + ry * bmp->width + rx; - word width = rw; - word height = rh; - byte plane = 1 << ((byte) x & 0x03); - word scanCount = width/4 + (width%4 ? 1 :0); - word nextPageRow = page->width/4 - scanCount; - word nextBmpRow = (word) bmp->width - width; - word rowCounter; - byte planeCounter = 4; - - __asm { - MOV AX, SCREEN_SEG ; go to the VGA memory - MOV ES, AX - - MOV DX, SC_INDEX ; point at the map mask register - MOV AL, MAP_MASK ; - OUT DX, AL ; - - PLANE_LOOP: - MOV DX, SC_DATA ; select the current plane - MOV AL, plane ; - OUT DX, AL ; - - ;-- begin plane painting - MOV AX, height ; start the row counter - MOV rowCounter, AX ; - MOV DI, poffset ; go to the first pixel - MOV SI, bmpOffset ; go to the bmp pixel - ROW_LOOP: - MOV CX, width ; count the columns - SCAN_LOOP: - LODSB - DEC SI - CMP AL, 0 - JNE DRAW_PIXEL ; draw non-zero pixels - - INC DI ; skip the transparent pixel - ADD SI, 1 - JMP NEXT_PIXEL - DRAW_PIXEL: - MOVSB ; copy the pixel - NEXT_PIXEL: - SUB CX, 3 ; we skip the next 3 - ADD SI, 3 ; skip the bmp pixels - LOOP SCAN_LOOP ; finish the scan - - MOV AX, nextPageRow - ADD DI, AX ; go to the next row on screen - MOV AX, nextBmpRow - ADD SI, AX ; go to the next row on bmp - - DEC rowCounter - JNZ ROW_LOOP ; do all the rows - ;-- end plane painting - - MOV AL, plane ; advance to the next plane - SHL AL, 1 ; - AND AL, 0x0f ; mask the plane properly - MOV plane, AL ; store the plane - - INC bmpOffset ; start bmp at the right spot - - DEC planeCounter - JNZ PLANE_LOOP ; do all 4 planes - } -} - - -/* copy a region of video memory from one page to another. - * It assumes that the left edge of the tile is the same on both - * regions and the memory areas do not overlap. - */ -void -modexCopyPageRegion(page_t *dest, page_t *src, - word sx, word sy, - word dx, word dy, - word width, word height) -{ - word doffset = (word)dest->data + dy*(dest->width/4) + dx/4; - word soffset = (word)src->data + sy*(src->width/4) + sx/4; - word scans = width/4; - word nextSrcRow = src->width/4 - scans - 1; - word nextDestRow = dest->width/4 - scans - 1; - byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ - byte rclip[] = {0x0f, 0x01, 0x03, 0x07}; - byte left = lclip[sx&0x03]; - byte right = rclip[(sx+width)&0x03]; - - __asm { - MOV AX, SCREEN_SEG ; work in the vga space - MOV ES, AX ; - MOV DI, doffset ; - MOV SI, soffset ; - - MOV DX, GC_INDEX ; turn off cpu bits - MOV AX, 0008h ; - OUT DX, AX - - MOV AX, SC_INDEX ; point to the mask register - MOV DX, AX ; - MOV AL, MAP_MASK ; - OUT DX, AL ; - INC DX ; - - ROW_START: - PUSH DS - MOV AX, ES - MOV DS, AX - MOV CX, scans ; the number of latches - - MOV AL, left ; do the left column - OUT DX, AL ; - MOVSB ; - DEC CX ; - - MOV AL, 0fh ; do the inner columns - OUT DX, AL - REP MOVSB ; copy the pixels - - MOV AL, right ; do the right column - OUT DX, AL - MOVSB - POP DS - - MOV AX, SI ; go the start of the next row - ADD AX, nextSrcRow ; - MOV SI, AX ; - MOV AX, DI ; - ADD AX, nextDestRow ; - MOV DI, AX ; - - DEC height ; do the rest of the actions - JNZ ROW_START ; - - MOV DX, GC_INDEX+1 ; go back to CPU data - MOV AL, 0ffh ; none from latches - OUT DX, AL ; - } -} - - -/* fade and flash */ -void -modexFadeOn(word fade, byte *palette) { - fadePalette(-fade, 64, 64/fade+1, palette); -} - - -void -modexFadeOff(word fade, byte *palette) { - fadePalette(fade, 0, 64/fade+1, palette); -} - - -void -modexFlashOn(word fade, byte *palette) { - fadePalette(fade, -64, 64/fade+1, palette); -} - - -void -modexFlashOff(word fade, byte *palette) { - fadePalette(-fade, 0, 64/fade+1, palette); -} - - -static void -fadePalette(sbyte fade, sbyte start, word iter, byte *palette) { - word i; - byte dim = start; - - /* handle the case where we just update */ - if(iter == 0) { - modexPalUpdate1(palette); - return; - } - - while(iter > 0) { /* FadeLoop */ - for(i=0; i<PAL_SIZE; i++) { /* loadpal_loop */ - tmppal[i] = palette[i] - dim; - if(tmppal[i] > 127) { - tmppal[i] = 0; - } else if(tmppal[i] > 63) { - tmppal[i] = 63; - } - } - modexPalUpdate1(tmppal); - iter--; - dim += fade; - } -} - - -/* save and load */ -void -modexPalSave(byte *palette) { - int i; - - outp(PAL_READ_REG, 0); /* start at palette entry 0 */ - for(i=0; i<PAL_SIZE; i++) { - palette[i] = inp(PAL_DATA_REG); /* read the palette data */ - } -} - - -byte * -modexNewPal() { - byte *ptr; - ptr = malloc(PAL_SIZE); - - /* handle errors */ - if(!ptr) { - printf("Could not allocate palette.\n"); - exit(-1); - } - - return ptr; -} - - -void -modexLoadPalFile(byte *filename, byte **palette) { - FILE *file; - byte *ptr; - - /* free the palette if it exists */ - if(*palette) { - free(*palette); - } - - /* allocate the new palette */ - *palette = modexNewPal(); - - /* open the file */ - file = fopen(filename, "rb"); - if(!file) { - printf("Could not open palette file: %s\n", filename); - exit(-2); - } - - /* read the file */ - ptr = *palette; - while(!feof(file)) { - *ptr++ = fgetc(file); - } - - fclose(file); -} - - -void -modexSavePalFile(char *filename, byte *pal) { - unsigned int i; - FILE *file; - - /* open the file for writing */ - file = fopen(filename, "wb"); - if(!file) { - printf("Could not open %s for writing\n", filename); - exit(-2); - } - - /* write the data to the file */ - fwrite(pal, 1, PAL_SIZE, file); - fclose(file); -} - - -/* blanking */ -void -modexPalBlack() { - fadePalette(-1, 64, 1, tmppal); -} - - -void -modexPalWhite() { - fadePalette(-1, -64, 1, tmppal); -} - - -/* utility */ -void -modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqoffset) -{ - byte *p = bmp->palette; - word w=0; - word q=0; - word qq=0; - static word a[PAL_SIZE]; //palette array of change values! - word z=0, aq=0, aa=0, pp=0; - - modexWaitBorder(); - if((*i)==0) - { - memset(a, -1, sizeof(a)); - outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ - } - else if(qp==0) - { - q=(*i); - } - else - { - q=(*i); - qq=(*i)/3; -// printf("q: %02d\n", (q)); -// printf("qq: %02d\n", (qq)); - //printf(" (*i)-q=%02d\n", (*i)-q); - outp(PAL_WRITE_REG, qq); /* start at the beginning of palette */ - } - if((*i)<PAL_SIZE/2 && w==0) - { - for(; (*i)<PAL_SIZE/2; (*i)++) - { - //if(i%3==0 && (p[i+5]==p[i+4] && p[i+4]==p[i+3] && p[i+3]==p[i+2] && p[i+2]==p[i+1] && p[i+1]==p[i] && p[i+5]==p[i])) -//____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else - if(((((*i)-q)%3==0)) && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) - { - w++; - break; - } - else if(qp>0 && (*i)>=(qp) && (*i)<((qp)+3)) - { - //printf("qp=%d\n", qp); - //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); - printf(" %d's color=%d\n", (*i), (a[qp])-(bmp->offset*3)+qp); - //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! - if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; } - } - else - { - if(bmp->offset==0 && (*i)<3 && q==0) outp(PAL_DATA_REG, 0); - else - if(qp==0) outp(PAL_DATA_REG, p[(*i)-q]); - else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]); - printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp); } - } - } - //if(qp>0) printf("qp=%d\n", qp); - //if(qp>0) printf(" (*i)=%d\n", (*i)/3); - } - modexWaitBorder(); /* waits one retrace -- less flicker */ - if((*i)>=PAL_SIZE/2 && w==0) - { - for(; (*i)<PAL_SIZE; (*i)++) - { -//____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else - if(((((*i)-q)%3==0)) && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) - { - w++; - break; - } - else if(qp>0 && (*i)>=(qp) && (*i)<((qp)+3)) - { - //printf("qp=%d\n", qp); - //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); - printf(" %d's color=%d\n", (*i), (a[qp]-(bmp->offset*3)+qp)); - //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! - if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; } - } - else - { - if(qp==0) outp(PAL_DATA_REG, p[(*i)-q]); - else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]); - printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp); } - } - } - //printf(" (*i)=%d\n", (*i)/3); - } - -printf("\nqqqqqqqq\n\n"); - - //palette checker~ - if(q>0 && qp==0) - { - long lq; - long bufSize = (bmp->width * bmp->height); - pp = q; - //printf("1(*i)=%02d\n", (*i)/3); - //printf("1z=%02d\n", z/3); - chkcolor(bmp, &q, &a, &aa, &z, i); - //printf("2(*i)=%02d\n", (*i)/3); - //printf("2z=%02d\n", z/3); - aq=0; -aqpee: - while(aq<=aa) - { -// printf("a[%02d]=(%d)\n", aq, a[aq]); - if(a[aq]==-1) aq++; - else { aqoffset++; break; } - } -//update the image data here! - for(lq=0; lq<bufSize; lq++) - { - /* - note to self - use a[qp] instead of bmp->offset for this spot! - NO! wwww - */ - - /* - Facking bloody point the values of the changed palette to correct values.... major confusion! wwww - */ - - //(offset/bmp->offset)*bmp->offset - - - //printf("%02d ",bmp->data[lq]+bmp->offset); - //if(lq > 0 && lq%bmp->width==0) printf("\n"); - //printf("%02d_", bmp->data[lq]+bmp->offset); - /*if(bmp->data[lq]+bmp->offset==aq) - { - //printf("%02d", bmp->data[lq]); - //printf("\n%02d\n", bmp->offset); - printf("aq=%02d ", aq); - printf("a[aq]=%02d ", a[aq]); - printf("a[aq]+aqpp=%02d ", a[aq]+aqpp); - printf("a[aq]-aqpp=%02d\n", a[aq]-aqpp); - //bmp->data[lq]=((bmp->data[lq]+bmp->offset)-a[aq]); -//++++ bmp->data[lq]=a[aq]-aqpp; -// printf("_%d ", bmp->data[lq]); - //if(lq > 0 && lq%bmp->width==0) printf("\n"); - } - else if(bmp->data[lq]+bmp->offset < ((*i)/3)-aqpp) - { - if(bmp->data[lq]+bmp->offset >= aq) - { - bmp->data[lq]=(bmp->data[lq]+bmp->offset)-aqpp;//-((z-(*i))/3); - //printf("_%d ", bmp->data[lq]+bmp->offset)-aqpp-((z-(*i))/3); - } - else bmp->data[lq]+=(bmp->offset-aqpp); - }*/ - - //printf("%02d`", bmp->data[lq]); - //if(lq > 0 && lq%bmp->width==0) printf("\n"); - } - -//printf(" aq=%02d\n", aq); -//printf(" aa=%02d\n", aa); - - //update the palette~ - modexPalUpdate(bmp, &pp, aq, aqoffset); - (*i)=pp; - - if(aq<aa){ pp=q; aq++; goto aqpee; } - } -} - -void -modexPalUpdate1(byte *p) -{ - int i; - modexWaitBorder(); - outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ - for(i=0; i<PAL_SIZE/2; i++) - { - outp(PAL_DATA_REG, p[i]); - } - modexWaitBorder(); /* waits one retrace -- less flicker */ - for(; i<PAL_SIZE; i++) - { - outp(PAL_DATA_REG, p[(i)]); - } -} - -void -modexPalUpdate0(byte *p) -{ - int i; - modexWaitBorder(); - outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ - for(i=0; i<PAL_SIZE/2; i++) - { - outp(PAL_DATA_REG, rand()); - } - modexWaitBorder(); /* waits one retrace -- less flicker */ - for(; i<PAL_SIZE; i++) - { - outp(PAL_DATA_REG, rand()); - } -} - -//color checker~ -//i want to make another vesion that checks the palette when the palette is being appened~ -void chkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i/*, word *offset*/) -{ - byte *pal; - word zz=0; - pal = modexNewPal(); - modexPalSave(pal); - //printf("q: %02d\n", (*q)); - printf("chkcolor start~\n"); - printf("1 (*z): %d\n", (*z)/3); - printf("1 (*i): %d\n", (*i)/3); -// printf("1 offset of color in palette (*q): %d\n", (*q)/3); - printf("wwwwwwwwwwwwwwww\n"); - //check palette for dups - for(; (*z)<PAL_SIZE; (*z)+=3) - { - //printf("\n z: %d\n", (*z)); - //printf(" q: %d\n", (*q)); - //printf(" z+q: %d\n\n", ((*z)+(*q))); - //if((*z)%3==0) - //{ -//---- if(pal[(*z)]==pal[(*z)+3] && pal[(*z)+1]==pal[(*z)+4] && pal[(*z)+2]==pal[(*z)+5]) - if((*z)==(*i)) - { -// printf("\n%d [%02d][%02d][%02d]\n", (*z), pal[(*z)], pal[(*z)+1], pal[(*z)+2]); -// printf("%d [%02d][%02d][%02d]\n\n", (*z)+3, pal[(*z)+3], pal[(*z)+4], pal[(*z)+5]); -//0000 (*z)-=3; - break; - } - else for(zz=0; zz<(*q); zz+=3) - { - //printf("zz: %02d\n", zz/3); - if(zz%3==0) - { - if(pal[((*z)+(*q))]==pal[((*z)+(*q))+3] && pal[((*z)+(*q))+1]==pal[((*z)+(*q))+4] && pal[((*z)+(*q))+2]==pal[((*z)+(*q))+5]) //break if duplicate colors found in palette because it have reached the end of the current data of the palette - { -// (*z)-=3; -// (*i)-=3; -// printf("\nzq1:%d[%02d][%02d][%02d]\n", (zz+q), pal[(zz+q)], pal[(zz+q)+1], pal[(zz+q)+2]); -// printf("zq2:%d[%02d][%02d][%02d]\n\n", (zz+q)+3, pal[(zz+q)+3], pal[(zz+q)+4], pal[(zz+q)+5]); - break; - } - else if(pal[zz]==pal[((*z)+(*q))] && pal[zz+1]==pal[((*z)+(*q))+1] && pal[zz+2]==pal[((*z)+(*q))+2]) - { -// printf("\n\nwwwwwwwwwwwwwwww\n"); -// printf(" zq: %d [%02d][%02d][%02d] value that is needing to be changed~\n", ((*z)+(*q))/3, pal[((*z)+(*q))], pal[((*z)+(*q))+1], pal[((*z)+(*q))+2]); -// printf(" zz: %d [%02d][%02d][%02d] value that the previous value is going to change to~\n", (zz)/3, pal[zz], pal[zz+1], pal[zz+2]); -// //printf(" zv: %d [%02d][%02d][%02d] wwww\n", (zz-z+q)/3, pal[(zz-z+q)], pal[(zz-z+q)+1], pal[(zz-z+q)+2]); -// printf(" z : %d [%02d][%02d][%02d] offset value~\n", (*z)/3, pal[(*z)], pal[(*z)+1], pal[(*z)+2]); -//++++ (*i)--; -// (*z)--; - //expand dong here -/* -planned features that i plan to implement~ -image that has values on the pallete list! -wwww -no... wait.... no wwww -*/ - //for(zzii=0; zzii<3; zzii++) - //{ - //printf("z+q: %d\n\n", ((*z)+(*q))); - a[(((*z)+(*q)))]=zz; - //} - (*aa)=(((*z)+(*q))); - printf("!! a[%02d]: %d\n", (((*z)+(*q))/3), zz/3); -// printf("\n aa: %d\n\n", (*aa)); -// printf(" a[%02d]=(%02d) offset array i think the palette should be updated again~\n", ((*z)+(*q))/3, a[((*z)+(*q))/3]); -// printf("wwwwwwwwwwwwwwww\n\n"); - } - /*else - { - printf("================\n"); - printf("zq: %d [%02d][%02d][%02d]\n", ((*z)+(*q))/3, pal[((*z)+(*q))], pal[((*z)+(*q))+1], pal[((*z)+(*q))+2]); - printf("zz: %d [%02d][%02d][%02d]\n", (zz)/3, pal[zz], pal[zz+1], pal[zz+2]); - printf("z : %d [%02d][%02d][%02d]\n", (*z)/3, pal[(*z)], pal[(*z)+1], pal[(*z)+2]); - printf("================\n"); - }*/ - //printf("[%d]", (zz+q)); - } - } - } - printf("wwwwwwwwwwwwwwww\n"); - printf("2 (*z): %d\n", (*z)/3); - printf("2 (*i): %d\n", (*i)/3); -// printf("2 offset of color in palette (*q): %d\n", (*q)/3); - printf("chkcolor end~\n"); - free(pal); -} - -void modexpixelwr(word xx, word yy, word PageBase, word Color) -{ - word x=xx; - word y=yy; - __asm - { - push bp //preserve caller’s stack frame - mov bp,sp //point to local stack frame - - mov ax,SCREEN_WIDTH - mul [bp+4/*y*/] //offset of pixel’s scan line in page - mov bx,[bp+4/*x*/] - shr bx,1 - shr bx,1 //X/4 = offset of pixel in scan line - add bx,ax //offset of pixel in page - add bx,[bp+0/*PageBase*/] //offset of pixel in display memory - mov ax,SCREEN_SEG - mov es,ax //point ES:BX to the pixel’s address - - mov cl,byte ptr [bp+4/*x*/] - and cl,011b //CL = pixel’s plane - mov ax,0100h + MAP_MASK //AL = index in SC of Map Mask reg - shl ah,cl //set only the bit for the pixel’s plane to 1 - mov dx,SC_INDEX //set the Map Mask to enable only the - out dx,ax // pixel’s plane - - mov al,byte ptr [bp+15/*Color*/] - mov es:[bx],al //draw the pixel in the desired color - - pop bp //restore caller’s stack frame - } -} - +/* Project 16 Source Code~ + * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 + * + * This file is part of Project 16. + * + * Project 16 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. + * + * Project 16 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 <http://www.gnu.org/licenses/>, or + * write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include <dos.h> +#include <string.h> +#include <mem.h> +#include <conio.h> +#include <stdio.h> +#include <stdlib.h> +#include "src/lib/modex16.h" + +byte far* VGA=(byte far*) 0xA0000000; /* this points to video memory. */ + +static void fadePalette(sbyte fade, sbyte start, word iter, byte *palette); +static byte tmppal[PAL_SIZE]; + +static void +vgaSetMode(byte mode) +{ + union REGS regs; + + regs.h.ah = SET_MODE; + regs.h.al = mode; + int86(VIDEO_INT, ®s, ®s); +} + + +/* -========================= Entry Points ==========================- */ +void +modexEnter() { + word i; + dword far*ptr=(dword far*)VGA; /* used for faster screen clearing */ + word CRTParms[] = { + 0x0d06, /* vertical total */ + 0x3e07, /* overflow (bit 8 of vertical counts) */ + 0x4109, /* cell height (2 to double-scan */ + 0xea10, /* v sync start */ + 0xac11, /* v sync end and protect cr0-cr7 */ + 0xdf12, /* vertical displayed */ + 0x0014, /* turn off dword mode */ + 0xe715, /* v blank start */ + 0x0616, /* v blank end */ + 0xe317 /* turn on byte mode */ + }; + int CRTParmCount = sizeof(CRTParms) / sizeof(CRTParms[0]); + + /* TODO save current video mode and palette */ + vgaSetMode(VGA_256_COLOR_MODE); + + /* disable chain4 mode */ + outpw(SC_INDEX, 0x0604); + + /* synchronous reset while setting Misc Output */ + outpw(SC_INDEX, 0x0100); + + /* select 25 MHz dot clock & 60 Hz scanning rate */ + outp(MISC_OUTPUT, 0xe3); + + /* undo reset (restart sequencer) */ + outpw(SC_INDEX, 0x0300); + + /* reprogram the CRT controller */ + outp(CRTC_INDEX, 0x11); /* VSync End reg contains register write prot */ + outp(CRTC_DATA, 0x7f); /* get current write protect on varios regs */ + + /* send the CRTParms */ + for(i=0; i<CRTParmCount; i++) { + outpw(CRTC_INDEX, CRTParms[i]); + } + + /* clear video memory */ + outpw(SC_INDEX, 0x0f02); + for(i=0; i<0x8000; i++) { + ptr[i] = 0x0000; + } +} + + +void +modexLeave() { + /* TODO restore original mode and palette */ + vgaSetMode(TEXT_MODE); +} + + +page_t +modexDefaultPage() { + page_t page; + + /* default page values */ + page.data = VGA; + page.dx = 0; + page.dy = 0; + page.width = SCREEN_WIDTH; + page.height = SCREEN_HEIGHT; + page.id = 0; + + return page; +} + +/* returns the next page in contiguous memory + * the next page will be the same size as p, by default + */ +page_t +modexNextPage(page_t *p) { + page_t result; + + result.data = p->data + (p->width/4)*p->height; /* compute the offset */ + result.dx = 0; + result.dy = 0; + result.width = p->width; + result.height = p->height; + result.id = p->id+1; + + return result; +} + +//next page with defined dimentions~ +page_t +modexNextPage0(page_t *p, word x, word y) +{ + page_t result; + + result.data = p->data + (p->width/4)*p->height; /* compute the offset */ + result.dx = 0; + result.dy = 0; + result.width = x; + result.height = y; + result.id = p->id+1; + + return result; +} + + +void +modexShowPage(page_t *page) { + word high_address; + word low_address; + word offset; + byte crtcOffset; + + /* calculate offset */ + offset = (word) page->data; + offset += page->dy * (page->width >> 2 ); + offset += page->dx >> 2; + + /* calculate crtcOffset according to virtual width */ + crtcOffset = page->width >> 3; + + high_address = HIGH_ADDRESS | (offset & 0xff00); + low_address = LOW_ADDRESS | (offset << 8); + + /* wait for appropriate timing and then program CRTC */ + while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE)); + outpw(CRTC_INDEX, high_address); + outpw(CRTC_INDEX, low_address); + outp(CRTC_INDEX, 0x13); + outp(CRTC_DATA, crtcOffset); + + /* wait for one retrace */ + while (!(inp(INPUT_STATUS_1) & VRETRACE)); + + /* do PEL panning here */ + outp(AC_INDEX, 0x33); + outp(AC_INDEX, (page->dx & 0x03) << 1); +} + + +void +modexPanPage(page_t *page, int dx, int dy) { + page->dx = dx; + page->dy = dy; +} + + +void +modexSelectPlane(byte plane) { + outp(SC_INDEX, MAP_MASK); /* select plane */ + outp(SC_DATA, plane); +} + + +void +modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) { + word pageOff = (word) page->data; + word xoff=x/4; /* xoffset that begins each row */ + word scanCount=w/4; /* number of iterations per row (excluding right clip)*/ + word poffset = pageOff + y*(page->width/4) + xoff; /* starting offset */ + word nextRow = page->width/4-scanCount-1; /* loc of next row */ + byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ + byte rclip[] = {0x00, 0x01, 0x03, 0x07}; + byte left = lclip[x&0x03]; + byte right = rclip[(x+w)&0x03]; + + /* handle the case which requires an extra group */ + if((x & 0x03) && !((x+w) & 0x03)) { + right=0x0f; + } + + __asm { + MOV AX, SCREEN_SEG ; go to the VGA memory + MOV ES, AX + MOV DI, poffset ; go to the first pixel + MOV DX, SC_INDEX ; point to the map mask + MOV AL, MAP_MASK + OUT DX, AL + INC DX + MOV AL, color ; get ready to write colors + SCAN_START: + MOV CX, scanCount ; count the line + MOV BL, AL ; remember color + MOV AL, left ; do the left clip + OUT DX, AL ; set the left clip + MOV AL, BL ; restore color + STOSB ; write the color + DEC CX + JZ SCAN_DONE ; handle 1 group stuff + + ;-- write the main body of the scanline + MOV BL, AL ; remember color + MOV AL, 0x0f ; write to all pixels + OUT DX, AL + MOV AL, BL ; restore color + REP STOSB ; write the color + SCAN_DONE: + MOV BL, AL ; remeber color + MOV AL, right + OUT DX, AL ; do the right clip + MOV AL, BL ; restore color + STOSB ; write pixel + ADD DI, nextRow ; go to the next row + DEC h + JNZ SCAN_START + } +} + + +void +oldDrawBmp(byte far* page, int x, int y, bitmap_t *bmp, byte sprite) +{ + byte plane; + word px, py; + word offset; + + /* TODO Make this fast. It's SLOOOOOOW */ + for(plane=0; plane < 4; plane++) { + modexSelectPlane(PLANE(plane+x)); + for(px = plane; px < bmp->width; px+=4) { + offset=px; + for(py=0; py<bmp->height; py++) { + if(!sprite || bmp->data[offset]) + page[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset]; + offset+=bmp->width; + } + } + } +} + + +void +modexDrawBmp(page_t *page, int x, int y, bitmap_t *bmp) { + /* draw the region (the entire freakin bitmap) */ + modexDrawBmpRegion(page, x, y, 0, 0, bmp->width, bmp->height, bmp); +} + + +void +modexDrawBmpRegion(page_t *page, int x, int y, + int rx, int ry, int rw, int rh, bitmap_t *bmp) { + word poffset = (word) page->data + y*(page->width/4) + x/4; + byte *data = bmp->data;//+bmp->offset; + word bmpOffset = (word) data + ry * bmp->width + rx; + word width = rw; + word height = rh; + byte plane = 1 << ((byte) x & 0x03); + word scanCount = width/4 + (width%4 ? 1 :0); + word nextPageRow = page->width/4 - scanCount; + word nextBmpRow = (word) bmp->width - width; + word rowCounter; + byte planeCounter = 4; + + //code is a bit slow here + __asm { + MOV AX, SCREEN_SEG ; go to the VGA memory + MOV ES, AX + + MOV DX, SC_INDEX ; point at the map mask register + MOV AL, MAP_MASK ; + OUT DX, AL ; + + PLANE_LOOP: + MOV DX, SC_DATA ; select the current plane + MOV AL, plane ; + OUT DX, AL ; + + ;-- begin plane painting + MOV AX, height ; start the row counter + MOV rowCounter, AX ; + MOV DI, poffset ; go to the first pixel + MOV SI, bmpOffset ; go to the bmp pixel + ROW_LOOP: + MOV CX, width ; count the columns + SCAN_LOOP: + MOVSB ; copy the pixel + SUB CX, 3 ; we skip the next 3 + ADD SI, 3 ; skip the bmp pixels + LOOP SCAN_LOOP ; finish the scan + + MOV AX, nextPageRow + ADD DI, AX ; go to the next row on screen + MOV AX, nextBmpRow + ADD SI, AX ; go to the next row on bmp + + DEC rowCounter + JNZ ROW_LOOP ; do all the rows + ;-- end plane painting + + MOV AL, plane ; advance to the next plane + SHL AL, 1 ; + AND AL, 0x0f ; mask the plane properly + MOV plane, AL ; store the plane + + INC bmpOffset ; start bmp at the right spot + + DEC planeCounter + JNZ PLANE_LOOP ; do all 4 planes + } +} + + +void +modexDrawPlanarBuf(page_t *page, int x, int y, planar_buf_t *bmp) { + /* TODO - adapt from test code */ + int plane; + for(plane=0; plane < 4; plane++) + { + //fack + } +} + + +void +modexDrawSprite(page_t *page, int x, int y, bitmap_t *bmp) { + /* draw the whole sprite */ + modexDrawSpriteRegion(page, x, y, 0, 0, bmp->width, bmp->height, bmp); +} + +void +modexDrawSpriteRegion(page_t *page, int x, int y, + int rx, int ry, int rw, int rh, bitmap_t *bmp) { + word poffset = (word)page->data + y*(page->width/4) + x/4; + byte *data = bmp->data;//+bmp->offset; + word bmpOffset = (word) data + ry * bmp->width + rx; + word width = rw; + word height = rh; + byte plane = 1 << ((byte) x & 0x03); + word scanCount = width/4 + (width%4 ? 1 :0); + word nextPageRow = page->width/4 - scanCount; + word nextBmpRow = (word) bmp->width - width; + word rowCounter; + byte planeCounter = 4; + + __asm { + MOV AX, SCREEN_SEG ; go to the VGA memory + MOV ES, AX + + MOV DX, SC_INDEX ; point at the map mask register + MOV AL, MAP_MASK ; + OUT DX, AL ; + + PLANE_LOOP: + MOV DX, SC_DATA ; select the current plane + MOV AL, plane ; + OUT DX, AL ; + + ;-- begin plane painting + MOV AX, height ; start the row counter + MOV rowCounter, AX ; + MOV DI, poffset ; go to the first pixel + MOV SI, bmpOffset ; go to the bmp pixel + ROW_LOOP: + MOV CX, width ; count the columns + SCAN_LOOP: + LODSB + DEC SI + CMP AL, 0 + JNE DRAW_PIXEL ; draw non-zero pixels + + INC DI ; skip the transparent pixel + ADD SI, 1 + JMP NEXT_PIXEL + DRAW_PIXEL: + MOVSB ; copy the pixel + NEXT_PIXEL: + SUB CX, 3 ; we skip the next 3 + ADD SI, 3 ; skip the bmp pixels + LOOP SCAN_LOOP ; finish the scan + + MOV AX, nextPageRow + ADD DI, AX ; go to the next row on screen + MOV AX, nextBmpRow + ADD SI, AX ; go to the next row on bmp + + DEC rowCounter + JNZ ROW_LOOP ; do all the rows + ;-- end plane painting + + MOV AL, plane ; advance to the next plane + SHL AL, 1 ; + AND AL, 0x0f ; mask the plane properly + MOV plane, AL ; store the plane + + INC bmpOffset ; start bmp at the right spot + + DEC planeCounter + JNZ PLANE_LOOP ; do all 4 planes + } +} + + +/* copy a region of video memory from one page to another. + * It assumes that the left edge of the tile is the same on both + * regions and the memory areas do not overlap. + */ +void +modexCopyPageRegion(page_t *dest, page_t *src, + word sx, word sy, + word dx, word dy, + word width, word height) +{ + word doffset = (word)dest->data + dy*(dest->width/4) + dx/4; + word soffset = (word)src->data + sy*(src->width/4) + sx/4; + word scans = width/4; + word nextSrcRow = src->width/4 - scans - 1; + word nextDestRow = dest->width/4 - scans - 1; + byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ + byte rclip[] = {0x0f, 0x01, 0x03, 0x07}; + byte left = lclip[sx&0x03]; + byte right = rclip[(sx+width)&0x03]; + + __asm { + MOV AX, SCREEN_SEG ; work in the vga space + MOV ES, AX ; + MOV DI, doffset ; + MOV SI, soffset ; + + MOV DX, GC_INDEX ; turn off cpu bits + MOV AX, 0008h ; + OUT DX, AX + + MOV AX, SC_INDEX ; point to the mask register + MOV DX, AX ; + MOV AL, MAP_MASK ; + OUT DX, AL ; + INC DX ; + + ROW_START: + PUSH DS + MOV AX, ES + MOV DS, AX + MOV CX, scans ; the number of latches + + MOV AL, left ; do the left column + OUT DX, AL ; + MOVSB ; + DEC CX ; + + MOV AL, 0fh ; do the inner columns + OUT DX, AL + REP MOVSB ; copy the pixels + + MOV AL, right ; do the right column + OUT DX, AL + MOVSB + POP DS + + MOV AX, SI ; go the start of the next row + ADD AX, nextSrcRow ; + MOV SI, AX ; + MOV AX, DI ; + ADD AX, nextDestRow ; + MOV DI, AX ; + + DEC height ; do the rest of the actions + JNZ ROW_START ; + + MOV DX, GC_INDEX+1 ; go back to CPU data + MOV AL, 0ffh ; none from latches + OUT DX, AL ; + } +} + + +/* fade and flash */ +void +modexFadeOn(word fade, byte *palette) { + fadePalette(-fade, 64, 64/fade+1, palette); +} + + +void +modexFadeOff(word fade, byte *palette) { + fadePalette(fade, 0, 64/fade+1, palette); +} + + +void +modexFlashOn(word fade, byte *palette) { + fadePalette(fade, -64, 64/fade+1, palette); +} + + +void +modexFlashOff(word fade, byte *palette) { + fadePalette(-fade, 0, 64/fade+1, palette); +} + + +static void +fadePalette(sbyte fade, sbyte start, word iter, byte *palette) { + word i; + byte dim = start; + + /* handle the case where we just update */ + if(iter == 0) { + modexPalUpdate1(palette); + return; + } + + while(iter > 0) { /* FadeLoop */ + for(i=0; i<PAL_SIZE; i++) { /* loadpal_loop */ + tmppal[i] = palette[i] - dim; + if(tmppal[i] > 127) { + tmppal[i] = 0; + } else if(tmppal[i] > 63) { + tmppal[i] = 63; + } + } + modexPalUpdate1(tmppal); + iter--; + dim += fade; + } +} + + +/* save and load */ +void +modexPalSave(byte *palette) { + int i; + + outp(PAL_READ_REG, 0); /* start at palette entry 0 */ + for(i=0; i<PAL_SIZE; i++) { + palette[i] = inp(PAL_DATA_REG); /* read the palette data */ + } +} + + +byte * +modexNewPal() { + byte *ptr; + ptr = malloc(PAL_SIZE); + + /* handle errors */ + if(!ptr) { + printf("Could not allocate palette.\n"); + exit(-1); + } + + return ptr; +} + + +void +modexLoadPalFile(byte *filename, byte **palette) { + FILE *file; + byte *ptr; + + /* free the palette if it exists */ + if(*palette) { + free(*palette); + } + + /* allocate the new palette */ + *palette = modexNewPal(); + + /* open the file */ + file = fopen(filename, "rb"); + if(!file) { + printf("Could not open palette file: %s\n", filename); + exit(-2); + } + + /* read the file */ + ptr = *palette; + while(!feof(file)) { + *ptr++ = fgetc(file); + } + + fclose(file); +} + + +void +modexSavePalFile(char *filename, byte *pal) { + unsigned int i; + FILE *file; + + /* open the file for writing */ + file = fopen(filename, "wb"); + if(!file) { + printf("Could not open %s for writing\n", filename); + exit(-2); + } + + /* write the data to the file */ + fwrite(pal, 1, PAL_SIZE, file); + fclose(file); +} + + +/* blanking */ +void +modexPalBlack() { + fadePalette(-1, 64, 1, tmppal); +} + + +void +modexPalWhite() { + fadePalette(-1, -64, 1, tmppal); +} + + +/* utility */ +void +modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqoffset) +{ + byte *p = bmp->palette; + word w=0; + word q=0; + word qq=0; + static word a[PAL_SIZE]; //palette array of change values! + word z=0, aq=0, aa=0, pp=0; + + modexWaitBorder(); + if((*i)==0) + { + memset(a, -1, sizeof(a)); + outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ + } + else if(qp==0) + { + q=(*i); + } + else + { + q=(*i); + qq=(*i)/3; +// printf("q: %02d\n", (q)); +// printf("qq: %02d\n", (qq)); + //printf(" (*i)-q=%02d\n", (*i)-q); + outp(PAL_WRITE_REG, qq); /* start at the beginning of palette */ + } + if((*i)<PAL_SIZE/2 && w==0) + { + for(; (*i)<PAL_SIZE/2; (*i)++) + { + //if(i%3==0 && (p[i+5]==p[i+4] && p[i+4]==p[i+3] && p[i+3]==p[i+2] && p[i+2]==p[i+1] && p[i+1]==p[i] && p[i+5]==p[i])) +//____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else + if(((((*i)-q)%3==0)) && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) + { + w++; + break; + } + else if(qp>0 && (*i)>=(qp) && (*i)<((qp)+3)) + { + //printf("qp=%d\n", qp); + //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); + printf(" %d's color=%d\n", (*i), (a[qp])-(bmp->offset*3)+qp); + //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! + if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; } + } + else + { + if(bmp->offset==0 && (*i)<3 && q==0) outp(PAL_DATA_REG, 0); + else + if(qp==0) outp(PAL_DATA_REG, p[(*i)-q]); + else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]); + printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp); } + } + } + //if(qp>0) printf("qp=%d\n", qp); + //if(qp>0) printf(" (*i)=%d\n", (*i)/3); + } + modexWaitBorder(); /* waits one retrace -- less flicker */ + if((*i)>=PAL_SIZE/2 && w==0) + { + for(; (*i)<PAL_SIZE; (*i)++) + { +//____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else + if(((((*i)-q)%3==0)) && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) + { + w++; + break; + } + else if(qp>0 && (*i)>=(qp) && (*i)<((qp)+3)) + { + //printf("qp=%d\n", qp); + //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]); + printf(" %d's color=%d\n", (*i), (a[qp]-(bmp->offset*3)+qp)); + //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit! + if((*i)+1==(qp)+3){ w++; /*(*i)++;*/ break; } + } + else + { + if(qp==0) outp(PAL_DATA_REG, p[(*i)-q]); + else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]); + printf("p[]=%d qp=%d p[]-qp=%d\n", ((*i)-(bmp->offset*3)), qp, ((*i)-(bmp->offset*3))+qp); } + } + } + //printf(" (*i)=%d\n", (*i)/3); + } + +printf("\nqqqqqqqq\n\n"); + + //palette checker~ + if(q>0 && qp==0) + { + long lq; + long bufSize = (bmp->width * bmp->height); + pp = q; + //printf("1(*i)=%02d\n", (*i)/3); + //printf("1z=%02d\n", z/3); + chkcolor(bmp, &q, &a, &aa, &z, i); + //printf("2(*i)=%02d\n", (*i)/3); + //printf("2z=%02d\n", z/3); + aq=0; +aqpee: + while(aq<=aa) + { +// printf("a[%02d]=(%d)\n", aq, a[aq]); + if(a[aq]==-1) aq++; + else { aqoffset++; break; } + } +//update the image data here! + for(lq=0; lq<bufSize; lq++) + { + /* + note to self + use a[qp] instead of bmp->offset for this spot! + NO! wwww + */ + + /* + Facking bloody point the values of the changed palette to correct values.... major confusion! wwww + */ + + //(offset/bmp->offset)*bmp->offset + + + //printf("%02d ",bmp->data[lq]+bmp->offset); + //if(lq > 0 && lq%bmp->width==0) printf("\n"); + //printf("%02d_", bmp->data[lq]+bmp->offset); + /*if(bmp->data[lq]+bmp->offset==aq) + { + //printf("%02d", bmp->data[lq]); + //printf("\n%02d\n", bmp->offset); + printf("aq=%02d ", aq); + printf("a[aq]=%02d ", a[aq]); + printf("a[aq]+aqpp=%02d ", a[aq]+aqpp); + printf("a[aq]-aqpp=%02d\n", a[aq]-aqpp); + //bmp->data[lq]=((bmp->data[lq]+bmp->offset)-a[aq]); +//++++ bmp->data[lq]=a[aq]-aqpp; +// printf("_%d ", bmp->data[lq]); + //if(lq > 0 && lq%bmp->width==0) printf("\n"); + } + else if(bmp->data[lq]+bmp->offset < ((*i)/3)-aqpp) + { + if(bmp->data[lq]+bmp->offset >= aq) + { + bmp->data[lq]=(bmp->data[lq]+bmp->offset)-aqpp;//-((z-(*i))/3); + //printf("_%d ", bmp->data[lq]+bmp->offset)-aqpp-((z-(*i))/3); + } + else bmp->data[lq]+=(bmp->offset-aqpp); + }*/ + + //printf("%02d`", bmp->data[lq]); + //if(lq > 0 && lq%bmp->width==0) printf("\n"); + } + +//printf(" aq=%02d\n", aq); +//printf(" aa=%02d\n", aa); + + //update the palette~ + modexPalUpdate(bmp, &pp, aq, aqoffset); + (*i)=pp; + + if(aq<aa){ pp=q; aq++; goto aqpee; } + } +} + +void +modexPalUpdate1(byte *p) +{ + int i; + modexWaitBorder(); + outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ + for(i=0; i<PAL_SIZE/2; i++) + { + outp(PAL_DATA_REG, p[i]); + } + modexWaitBorder(); /* waits one retrace -- less flicker */ + for(; i<PAL_SIZE; i++) + { + outp(PAL_DATA_REG, p[(i)]); + } +} + +void +modexPalUpdate0(byte *p) +{ + int i; + modexWaitBorder(); + outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ + for(i=0; i<PAL_SIZE/2; i++) + { + outp(PAL_DATA_REG, rand()); + } + modexWaitBorder(); /* waits one retrace -- less flicker */ + for(; i<PAL_SIZE; i++) + { + outp(PAL_DATA_REG, rand()); + } +} + +//color checker~ +//i want to make another vesion that checks the palette when the palette is being appened~ +void chkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i/*, word *offset*/) +{ + byte *pal; + word zz=0; + pal = modexNewPal(); + modexPalSave(pal); + //printf("q: %02d\n", (*q)); + printf("chkcolor start~\n"); + printf("1 (*z): %d\n", (*z)/3); + printf("1 (*i): %d\n", (*i)/3); +// printf("1 offset of color in palette (*q): %d\n", (*q)/3); + printf("wwwwwwwwwwwwwwww\n"); + //check palette for dups + for(; (*z)<PAL_SIZE; (*z)+=3) + { + //printf("\n z: %d\n", (*z)); + //printf(" q: %d\n", (*q)); + //printf(" z+q: %d\n\n", ((*z)+(*q))); + //if((*z)%3==0) + //{ +//---- if(pal[(*z)]==pal[(*z)+3] && pal[(*z)+1]==pal[(*z)+4] && pal[(*z)+2]==pal[(*z)+5]) + if((*z)==(*i)) + { +// printf("\n%d [%02d][%02d][%02d]\n", (*z), pal[(*z)], pal[(*z)+1], pal[(*z)+2]); +// printf("%d [%02d][%02d][%02d]\n\n", (*z)+3, pal[(*z)+3], pal[(*z)+4], pal[(*z)+5]); +//0000 (*z)-=3; + break; + } + else for(zz=0; zz<(*q); zz+=3) + { + //printf("zz: %02d\n", zz/3); + if(zz%3==0) + { + if(pal[((*z)+(*q))]==pal[((*z)+(*q))+3] && pal[((*z)+(*q))+1]==pal[((*z)+(*q))+4] && pal[((*z)+(*q))+2]==pal[((*z)+(*q))+5]) //break if duplicate colors found in palette because it have reached the end of the current data of the palette + { +// (*z)-=3; +// (*i)-=3; +// printf("\nzq1:%d[%02d][%02d][%02d]\n", (zz+q), pal[(zz+q)], pal[(zz+q)+1], pal[(zz+q)+2]); +// printf("zq2:%d[%02d][%02d][%02d]\n\n", (zz+q)+3, pal[(zz+q)+3], pal[(zz+q)+4], pal[(zz+q)+5]); + break; + } + else if(pal[zz]==pal[((*z)+(*q))] && pal[zz+1]==pal[((*z)+(*q))+1] && pal[zz+2]==pal[((*z)+(*q))+2]) + { +// printf("\n\nwwwwwwwwwwwwwwww\n"); +// printf(" zq: %d [%02d][%02d][%02d] value that is needing to be changed~\n", ((*z)+(*q))/3, pal[((*z)+(*q))], pal[((*z)+(*q))+1], pal[((*z)+(*q))+2]); +// printf(" zz: %d [%02d][%02d][%02d] value that the previous value is going to change to~\n", (zz)/3, pal[zz], pal[zz+1], pal[zz+2]); +// //printf(" zv: %d [%02d][%02d][%02d] wwww\n", (zz-z+q)/3, pal[(zz-z+q)], pal[(zz-z+q)+1], pal[(zz-z+q)+2]); +// printf(" z : %d [%02d][%02d][%02d] offset value~\n", (*z)/3, pal[(*z)], pal[(*z)+1], pal[(*z)+2]); +//++++ (*i)--; +// (*z)--; + //expand dong here +/* +planned features that i plan to implement~ +image that has values on the pallete list! +wwww +no... wait.... no wwww +*/ + //for(zzii=0; zzii<3; zzii++) + //{ + //printf("z+q: %d\n\n", ((*z)+(*q))); + a[(((*z)+(*q)))]=zz; + //} + (*aa)=(((*z)+(*q))); + printf("!! a[%02d]: %d\n", (((*z)+(*q))/3), zz/3); +// printf("\n aa: %d\n\n", (*aa)); +// printf(" a[%02d]=(%02d) offset array i think the palette should be updated again~\n", ((*z)+(*q))/3, a[((*z)+(*q))/3]); +// printf("wwwwwwwwwwwwwwww\n\n"); + } + /*else + { + printf("================\n"); + printf("zq: %d [%02d][%02d][%02d]\n", ((*z)+(*q))/3, pal[((*z)+(*q))], pal[((*z)+(*q))+1], pal[((*z)+(*q))+2]); + printf("zz: %d [%02d][%02d][%02d]\n", (zz)/3, pal[zz], pal[zz+1], pal[zz+2]); + printf("z : %d [%02d][%02d][%02d]\n", (*z)/3, pal[(*z)], pal[(*z)+1], pal[(*z)+2]); + printf("================\n"); + }*/ + //printf("[%d]", (zz+q)); + } + } + } + printf("wwwwwwwwwwwwwwww\n"); + printf("2 (*z): %d\n", (*z)/3); + printf("2 (*i): %d\n", (*i)/3); +// printf("2 offset of color in palette (*q): %d\n", (*q)/3); + printf("chkcolor end~\n"); + free(pal); +} + +void modexputPixel(int x, int y, byte color) +{ + /* Each address accesses four neighboring pixels, so set + Write Plane Enable according to which pixel we want + to modify. The plane is determined by the two least + significant bits of the x-coordinate: */ + outp(SC_INDEX, 0x02); + outp(SC_DATA, 0x01 << (x & 3)); + + /* The offset of the pixel into the video segment is + offset = (width * y + x) / 4, and write the given + color to the plane we selected above. Heed the active + page start selection. */ + VGA[(unsigned)((SCREEN_WIDTH/4) * y) + (x / 4) + 0] = color; + +} + +byte modexgetPixel(int x, int y) +{ + /* Select the plane from which we must read the pixel color: */ + outpw(GC_INDEX, 0x04); + outpw(GC_INDEX+1, x & 3); + + return VGA[(unsigned)((SCREEN_WIDTH/4) * y) + (x / 4) + 0]; + +} + void bputs(/*bmp_t *bmp, */unsigned x, unsigned y, const char *s) { - byte far *font; - //bmp_t src; - - //font = bios_8x8_font(); - //src.wd = 8; - //src.ht = 8; - //src.ops = &g_ops1; - for(; *s != '\0'; s++) - { - //src.raster = font + 8 * (*s); - //blit1(&src, bmp, x, y); - x += 8; - } -} - -void -modexWaitBorder() { - while(inp(INPUT_STATUS_1) & 8) { - /* spin */ - } - - while(!(inp(INPUT_STATUS_1) & 8)) { - /* spin */ - } -} + byte far *font; + //bmp_t src; + + //font = bios_8x8_font(); + //src.wd = 8; + //src.ht = 8; + //src.ops = &g_ops1; + for(; *s != '\0'; s++) + { + //src.raster = font + 8 * (*s); + //blit1(&src, bmp, x, y); + x += 8; + } +} + +void +modexWaitBorder() { + while(inp(INPUT_STATUS_1) & 8) { + /* spin */ + } + + while(!(inp(INPUT_STATUS_1) & 8)) { + /* spin */ + } +} diff --git a/src/lib/modex16.h b/src/lib/modex16.h index d748e4be..159f72ba 100644 --- a/src/lib/modex16.h +++ b/src/lib/modex16.h @@ -92,7 +92,7 @@ void modexPalUpdate(bitmap_t *bmp, word *i, word qp, word aqoffset); void modexPalUpdate1(byte *p); void modexPalUpdate0(byte *p); void chkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i/*, word *offset*/); -void modexpixelwr(word xx, word yy, word PageBase, word Color); +void modexputPixel(int x, int y, byte color); void bputs(/*bmp_t *bmp, */unsigned x, unsigned y, const char *s); void modexWaitBorder(); diff --git a/test.exe b/test.exe index bd8ed8e35f7deeab195909f7909196735549a988..8b9d9f96648a7ce07002119109966473c0e49039 100644 GIT binary patch delta 10779 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 UTIZvZnws8u&0CcIoI=R|0&4-g1ONa4 delta 10966 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 diff --git a/test2.exe b/test2.exe index d54bbbd57c281a6b7cd9b8d1c85ea846493513db..b9df462399a2c272364647c674ae78732fff6a06 100644 GIT binary patch delta 10975 zcmai430PD|wywK0o7fUjWVewWj6zggP~r-r2q=niqXPm;WV7i8lQ9Beh+G;wY8f@# z%(Q4;UUq{sA1<FkiAoj|(Yy>|qDB~P#TW;D#!&+AuevP8$$anfoqMa!R;Ny#I``aa ze*959)h^Chu>35EAPNa2VM0%j!Hzf(GDSm(j;PlgDTLetOj=AxC7=t?wuF$ese~8+ z?`)efuC&mXkjWzn`75Np0L1tak^&e!iV%N5EZ_j(Fu>2BkZ`~hz@h*`+(QUi4#)*m z0rmr&LJ3&~2pLVtRKQxm20#_y8sP0G2{{cgjUmKyEGZ=^V+r{L@Hrs!DMGdY7L0=d z;|W;}cnPot&;a-zFk%8BqX8yBDc}vj&?p!Nm;+b^cn<Ifz)rx&fF{5hz)e8SBtkCE zA|!1#A%C7-N=U^VLOugr26)C|mVjVD0$`HHpgD(U8(?f4A@c#1fNg;P0vrci1l$As zG?$PG@r0xUN&qhab^_i9`~<iUSTGOX09XNk2V6_W?H<5=KHLRZ30M#K29TV9K0sPP zNGD)xA`DC-WE$XEfF0J>127&i9k3Gc5}hG_AC{r9eQOtGeNJOe>xv4u%hp)Zx~D5~ za+Eb!gZ^3#I(AWIF<BZKC#?`yYv^7n(a)fnRV8;^S8lG-r!{t^EL^%o`A5Y~x76fC zhu4#uW?Kt&m7n%)8>z(JP*QJJo;CSZHkf?e>UWT2xB6l!S$SaloEFL-3SZHYnsp=I z^Hmy^W+nEDIrgfO+Wt#+>o3_YwpZ({8h=4pPfys*5yO3`v;EV9JbgRbmD|b}wkLdP zs=dxRQ(AP$ps7jiwmt1jU$Wm7WzblT9sYGlMdOgNw%b99?`LvQjqg!e`d-CYn$2y% zo|Mh!ns2CoL1i(=X_AA-NH5=-26Jn3oBC&x4tMu}^@wb4m0E(VN9kq<-*Biu9%PPz zRwd>lRNGyajna%ed&3&u{g}L)bRgoiU(lWgIjAb=7(L^V^~@Ey#;#p9e{Vjq=POwk zbX8U$d+^sGpJr&nzxkNldAB0wYnhnb>-X8$el6E%&&aiB@%UD*{SJ>7dE8I+d+lpm z(f(ep?;*AgKDOaL$%hPdi=&VDq6>ZBak5j1&oc)SPWvU-8|crDcSA3FPwVM1O+Jz4 zP?qGR>xiqDiOuG1Npp&9;D{J=s*`ft7T{CoJjhK5+2dWYsf!o~VcpHMoo!!wJDx)G z-fSlaqxXrGcIG$-^HL|9j|ZLS?CEXLD7R}`Ef;#+u4t6|eEF9(e%jO1(P?|1mN~n5 zHTWnkY0DZ@7N#y$jw#>O!(T0C-*&Az<|^IqJaroDAL=1JZo{N{7h-$XlXLJcBlWns zNlMFgQ`aKp_`g$V*x)bcdHGa4=rM(}IR@4D^l%%Fi=@NL=IvG4U_4#1$$^-zR(}5C zm3l{FJL1vN+L3FHb(kg+W6m^z7_$+H|6nuyl|HR~TG&oYwbkMbZ#rnm7=+rCAv)n( zx?)I(7~@VWhpZERrvDuBT12xK##y!k^IDXu#=3iyH9%5gyP~W?(w0p&CAPcf%%RUD zOM|85Xoy4)xomf2^t+5+x8#YNg2z;JZ$w#R@VFUeoh~UCmDpQR)|pb>a@T)J9<zZ* zHx`fEQP#PV@-=6lC)MSSh!li&`X_gHmv+t6(&E;rlbhQ$q~rVgc6!o1Nz@IZBRuAa zj?OgA!%ZlrCXY3u){$QH81GRu)EwJo#_lNV?Axo0uvH-#?&$%Yb3EgoxTUe2H_Pyf z??GbsanGmi^exX1K%4JX<2qAFwv~2NeCC9Z=#j7gZ?|n5z2Q{`>N@ZAVT@XRqo1nl zajRcNFMH4OYIks}X-ziA+9G>w*GcrIn<Yb)hs|wK6;K}IlO|lGZ~6EMN9d<Mqat1t z4>d^<4YwjM9Qs_cRk+-mRsOI{c+rXVOz3sowiS!z4~e9rGUyY&!5%q6@?nYCyslf) zhDM$>%fH;I_)JD>d4VqU^>p3~yE<$YpV_(9e@#n#|0P_e>qmN&eys|9e(f=#;bO8m zZJ2F8@NQ6M56w)U9rQgdCfi=S#x>=DEA@fRjGnAC*(@40@?1z4VjVtJPAY$|`r%^{ zL2yfXsN8ODt2)-)Rxc3UKM$Rd&RrH(KfI;f-Y>s)u5G_~?uys(bN7Xos1v>clF(Q+ z7I~EK8dXs<_UxgrrJt2AnVyLD<~H5!L*Gckmp}g}4b}Fm(h#52TesK&8>t~E+U+LY zpgU&Ic2#-IAv)b}uaHUq;djP^VfdDGyQ)QIeyZ|<X$<z-Q5*ew)Z!UAHiS#x)?U%r zF)qj)CkB~ED6>T{DZ?x+R_tboTFxu>%2I}efTaZ@*yf7%DqZdWZU7%6_I|WovQ(UD z)+S1opBr<S{1=fIz<XN(ibe(uhcQax1Iziy9&9D^94E_hC9yk*iBWxkza~MdMQd}w zlWyQ^>8OJSOG`yef<#P?id%w2zX<RW!Er5M$^?VP7!-NIc4jbVipBs&S17)45C+CM zS&nh7C5~{C?ch+{E$5l;)W8~H8Ep$po*dA&FqNe&+bq1Rj1rbZX;M0EgWLGRaHVG7 zTUxXBw$|FIJ!N-KCOX^O7i{4)Hz>*F(v?qBHHT+wl<umg@`tG!`el%(h{v^{@k2|m zR5c^tA5LXdTlvEb4Sh1$Q_RrR#Rq>Q%5Z%<^$v^4>UFOT?!Cd?%N({;gui@k@azpO zkGS3}bQrF<VD`NMgKSzXp=0IeCQaIMP?aw&Kr1aZt>%g5BoU0Z^aqv;N)%T@KMk8d zn8`+dZjQRDMIg`-;jvE4vDPN}lwDKZn($-d8iNK2VQ{^T<psOQ2BsI*9L`I$v>ZG+ z!)lXZqipN;(oBx1I7@16vVy*HrmVfR<D8niA?T>ei_4j;r6saKakI&_H{{;_DZ88W zl`+o@Vl;E?-Do>!4ecCrfW>dC*=>r3emHjIZ-^~p-(vB6fyML2h(FC`f>wBd%`CPH z0|r#yGwEv5x(_dskg&=h9+Ha&-HUUQj1CozLpy%HzMovD#L@znm}T=~(Q=^{l5RI> zMr3jjd~LFWA#UwjE22BCOBtrde9duYUY8QpuC2XV*AiJHG7AxgQ#CYqydSfuA;@}< z?ihd27wuL?ASUU0Ihl63r{uoIn?xg6iX^bCo3O`)$wFPUU8h_;%^Y=``b0gI&?%dv zZpj^AMmDf#ZKvGPphjGRlM;1Xp8PMv5ao_?T)A)i>qF%@W;&LWqqUuKiL=USlsjrV z929LQeIqI`n2mCDkyI8`F5Op-m1)Z**>b*OqZ2W?^{xe`UVDRHi;BQzRText^KNAh z-|NGfq1{Rhn>US~I8nPnM6G2ze5+%}sn~7<Et}{y)SxMEgtJ?ev@VtuSU7z!F?49! zw=>LX-O7WGucM2*40p@B->0^TVV=xA=BS(6%6rC`$tO!3%)^Av$;V5Uqn;T($zviX zm&l+xKSB+`piJyG2qs-`=N9AIJ^5s@Gh{bT^7LXn${n*&d`#LM^!<}YjK?JJ*uo$1 z$ty4+8v2SH&9j}@LX^0sEnm^7s#Z<<rlYL3v#x8>RzWb-ZJDxgkQP<u`BclLp4huR zZZR5qbB;kUP<`xlSB#8cc%UW5>(yzth@R@rztT@)n|Y*`#oVRUaZ~tml*Kg2k|Cn( zVX{g7MB8Cs_HdNJ;}cg{RCUhM!sPDLj=0f@ceOC2vHl)^q_FbV(#rORL4$pW?cHd0 zi_$c=S$rpHgmY$lpi&m{Y`~c$mH`^g+CCPVH8<a#sc61zh6Ix>e`wH{?8+Z#HMC=H z_-tp5;&xwaYid<aDd$kf;GKY7Z#>OiW!5@tj%qc{KU$72ZN7eIpX=v$_Ub$KtF*)} zbBwbl94vHsyjN+IhHVqKNt#+`O-I!t&SO=FMBQg{U?ZB443slwFxl2$;2gD+G}imb zr%@U$6I{+}M@3B-R%gxRMuUrT40YS4iFlO?P19}HySZ4jud}8oSUKPPW93<6fYM@{ z?qtsiC!(S>v^(Bi#KV2w|14z7V?82kTu1=kzRK})Hz1%z%`c<qttT#%&y@JF^k%U; zDo0+Je_-BeznYeCbV3`I7StUs#Xoekgr4Ecupepf2#uNVpTM<Fh3BTi;>d=^6x6#X zu?ozD3z0o|Q^=JUjDsg%G&o{&Tr%tBj-R=C%0^LHDOdIwXDV>>1=9>v?H|mK4#Vz0 ztTL2{9e+*XO)Hc%7>8jw^+V0}LW@R3Dmg-jCPdru@$b=;gg~}yTC7u%uZ@lsF-PQX z6AFF)ra)wDL0Nj%R^9{RO{m14w6sY0q>1)DLO)6f(LuHqOWtelAU<kEDLzPIVf`wY z_Dg~v!rWtlKkm~OjKq6bO$svJ;dgABZp6$<uo)Jta>Ncp99M5{qAd$dZg2Bkary5o zJbRb3`p>`8)ro%@0><wwm&}{)DXE`SzuH8HCS7Llp9}Z`t^RWp?Mm8#!L}tUxO*)e zg-<T!xaC6gl@q>E2>5$(!gQkqtz}8Vblcc}VP>7&Y(}PQ7X}Dzbz2rbFL|=5Np?qM zn@Ctp^?gu8yPc%ECBsVDM0gOGTu>p@oUxo|Yc4cekII$?76e`mNV6{LIvm04?TE~x z#P&|7(r9VLhsP;<l;AfPF2#52DFjFPsV;5kv5$orao8z$-qq`uH7;DV6oi9<5ZPd9 z{j^J4`#@Ve6W@;!4NLFPx+T#_DVCN~b`P`yIb}CfL%WttWl4jf=+mjOtlbI$T9aCc zw&_W%5|x%-X6>=8ePihyxG3V8nYb4{GXaU}zn^(s7^{2i3d{^H(ycDYEig<A%yc4! zD^}sD)2%P$4;@Wk9vc6c$m89Ruopt7=$Lfm<D|#>^sVK-rH|qMLpOazV8m0It5m&D z{RgH#^neBbKPPQlzNIdI#auB|i=;`2K;jbOa5zFHg-777JAk7hqRV3#T@Q|g$gm1} zX;qQ%22Dxx*G!BiB#!<e&0p9=|C|=ADZ}x~BKjrzXX(%AUs^<nOe0si(lL4$p^ZMR z57yiP&cJb-^uJ6tXaur4w_x?U5+X@=#hVymkdRqYV8|rzpzR_$351*z1PM`(gDb|F z$yjgKefX?JL~(|ru&ne<U{EQ>ul7R8@F*LR>Wr&f<;SotQeE2GrJ~D|u7rrhN5tJO z0&RNuU2pp1b7#Yt5@TLrVR|kUw`)4NCD(B8wL~DPaWg;)kmwKV9v@RD)j8ze8jL-T zLn|g<*YkXySUPMdyt@>$v6Gw#$t%dr+E8dRCg*I(%7xbj5X5Z`+kIMnh`80SN!S4H zb+2H^CgFKB^VKE~O>}daG1;zAx!dP|d~ggXlrZ%SJD`3|)+6e1EC>CqKHk3nS^rsB zA&fC(8BK<KBCO_P6hrT2pAk6DtP(EKOB=mqZ{KiV+Ou)A&jFCKFXA@RH`F)#2Q-3x zgTV;Sv95IPi-7^7edG9W*<;|{2;bSh+5Tuu@txvJvYGQ|14XyJxC-0x=NDfP9In7+ zY^mw`(ie5ZB(<Z_>-9PL#;3;Vvo_=yiR{*kr`odfYoMP=5Te%?6lUe?vvbqe6zOrc zhqG6r;xh|4g-DZheZ1L4y{I?)P}#kReL!$Igj!LSK07Bj3)&1cu{?CyHJsn7V`b;1 z=OPqA>Bse9WPEV(IWV)c5u1fXPJA4-sGvB@K;-1UnVczicbJX2V`KxpU9Kx#^oT@G zK?acz$^BZhS?mzGUE7b*Ct>O-MnhJ5UJ;RPj}T_DS!DK;=Jk%jY)j8C$d8I7a_Zx_ zr?3%Td1-`jgZ|e`!NW%Q_fI<8kj0!a!k=Dw$=_`m2;5WLM+jx+j`h^5BFN{dfIb<% zWcrdE<63=Q(HbyJ2%u>d6UC$ex~n2YD5MP)Zp*5`uKFBa%`xh;(+%K!Z$L?Ge148` zkukrBNFNPg2aryI{o}>P=H%z7tlB_2_KzW@N92A#tu`4l4C{#e*#IhK@r+sX6Oxt^ z`Q&5B#YxFTZW=(Y&UoGkw}0^nW^GPxCXv4yz~mQ9nn>i<0faubG<lAGZF+uYE?e-U z1C+ud1O|>X`(g!~RbNn?t1mL9uZD?d2PlTDB4dFe>rv`=15`CmnIu~WB3~RJB^1ue z%hV_2<O6->QFQW}yu|c8U>gRo1x0!3&lSMNW52=W<TD)Vzdk#`$HT9&7ex<L`Z-+f z>-<ou!wa^%GE^v{AuorG**35;MVMfg!H{2owXOXvdd}>m1;EzPvX@7AG(JX)PfVSW z0P1)2<Ci0FI`!kr;W)P&yg69-kWRq;2fAu=$Z!YzM$(%HSeRxPLZX7czByDlPCwfm zApAtHgSU%5Q8ipxN`tFHgq1Y8Dr8u3Xs;YH%%rFdkQy9DYpMdpiD9&^Dj+mqbT8e2 zH3T)YuV17hWE-Z=w(WLBCv2vEio3(jK4;8O`~^z0l%N1Bq<Dnu^?jMA0zcGngL@Ot zLHdyrBwVH6DPiJ}u~e)M7sDgy*y=H2L<H4Wj}RWvlIk$nzNdP$7(b4lsU8hy{8~MF zLEE^#spt16p<BH+u#KM2l2At08Y16*1iJwHWG)E3si?Eh=wkCE;Q;-}JbH8md)>1X znpwbu44V@UcmOQ7JNpr254Eou<7tndfz&m~S5t+2vo{sdq?*w}58YT3P<m=&ACtb& zV9bWb1yg#*!4@bqU>%AIvsSYl{t(p#Hz2DxJ-08hCrs@{vMf<#G~^=b6Y04}u?5Dp zS&z`Z?Wg4#$4^<C#TI$yv|cT-c>iW57hqI<Y=I#!-3a26m|kK^mT`HOp&&V(t^6P9 zvMt_1CoSGG+OK?0|0L$*8?y{cQ{!jPNzxPfZl4<)w*-6LdL$9+XBgHL6S=d`AsUOn z15U-5zfhK1{O7Rr&pKGK6l1!<sDCD2&CR{YIS9YUP%7Ut@MZK0)7=)ou($h-%Pc6u z%RHS;_`S!F5x{*yyDjcAk(^^`k45KjALg(~ropfH__*PhIdv`dEHkMax6sHEvrjBd zf5qG5ZvX5!k;wP@=C<<{|Fr=F@^M+l_@o6$8jy`2K*PDc==_2;hJq4!&w0QH`ovhI zGrY~TkKhopM!lMTqI%KPZ|f)_m(JcAA~e#xts$N#2S(spa|)OMhOVF=ZS|aZB(8s6 z0|pTJK5S=mhxhp)eWS0$Fbuzan@;qeOGj-B6vxb^@!LiXO~lWVy$*^Wzko=IbLorQ z0)=c^yDe0xrl+@sI<Oy&+3L~mZ9ya6?&rs<=vU)i%|fk-MsJUBv-Q*1R#lxL*=YIp z;lg#gYkT;}Rrrll9gHz#<)>$`vP8z&nL5Ca+rxx>>P(+xzsgWA_j~>P`h@f%W32k( z_L)cXsJl==U#4S)jr4CcaOgf1>|C+QSdb2T#02^i4G;qpsOydpF)o2l+u^N?=^ch8 zlR2?**tgg&*+ib+H~jNEf*o+CquTP$j)29_B=p&vQ<RqhWBCr^UlD3emX{HawM;_M zf>1XhS<7Ah;iT6um^mvYzGyL<C5j}B!oyPcs-LT&Pq8UCSG9O4UHoc*YdwC)Rp-%* z4o;-zR|AD5bpNZvg>-uA)iG`biG4;PJN4CX1$5BPFs}*t*;n<ie%9J`ix)5J57_lI zd1tWyrhfYDg80P6i{PnaK*21Q9Z{4@ZS?h>A;NvyxHEL9oYJeU2-OByT~lcH&R~Zo zd}m+~1ATH=fY%?u!^PQaF*5`C&ZsV`w2S8M^71~|r$evL%itkN<e7c`uH6;nx?^#l z$$3RNFR%dLLBHP>D(s_nyGM$isWf<ZsPG(JxZ4%?tlh!*V%xGi1ivHwZTA<>HSCjz zOdN!Y-KDPPwYg$o-<JscN?{vj19rXoZNfe*GEm+XkxTUI8{zn(4j{Kh19gAX2geQg zHjxY(nPlMWu?$mUmnT3Z=j?G88&Jq52rj6gpMBHAFW9Al;M_;hL1r{*XJ4F-T!eUY znYHxwH%AIv>7h4$aOj{@NyLb=9Q9KF8Kbv@hbna#wZ1IAjq&iyKfa>|t{^l;@*}5j z;Ulrn$(Mj_>es1qtDK8<Ow%r`Dsdv%lq3LPrO&=KT)0Pz-x^uE5T5|DxWyT0LZK>z z(KQaN+kdG>?d6>8^MsJUzzG8v`>qzrQ=^zB_W1x0Leok-tr|PrSsFgcTWIuN>=h}J zZ?d>h20B*Fa}Z*Ns;o@#6c_p<=GpYSCZ(fdm&F^<K?wd;<dI7?+05xE@3-x9AAFp5 zc#%)e)1!a#7{#i3Lh!Nq$fXJ<fg-b-{`5QU^PlIPLe4D0#(_&^9u~-$zXHXo2^%1y zrP8-yDP-{;qtj&T@Y2J)Z-5j6{&)D>IlYL}xwrdyRDI6DOdl&m31NG7;8N*taQbCV z-#I`;i_?dYQ=Fj~!{Ahe(2;*}Fa3~r#{N4u@jyh#;t!l2{u^`E(PnTut5yj)^gHrp zoPM0s!+(eVHlvq{KXHa3zr*kaSJ1`j&;AbGIg}Z=5_ff@4zQ>Oj^lJz787!8fQXh# z&jV$JjPjV#e)`P}*`!7CDp$bjW*o!-?t{mQ4Dslta<+2L&770%s4m9I*4%z1w96u; zxmFMRc;2?s8nn0Z_Eq}6)x+U1Z=+N`ZFP6J#ycpOe?rF_j+0s0Ja~`0{Yu_hN=NVU zaH!&K6weDl_#5wBrn!4Oo^I!DR!9@l4Cv-I+p%u{rP|E??@AW=sTlbNv}Z(|6w&E> zhuiPslnQ!zkH_#%-e&bM<`1ZG#GYg`TQUh7PZoPPrHPUIFV($ioX(15#K+)%A{y%W ztHv;SR)4C=Nyhl<KH0}97B<pj$wQUA!s+|CBwIE+Ci%Nr(1gH7KINQ+;B?@e!`P7h zm#R}hE|W!8E0Xa<i~9~f{O>KciL<h@knqgv%?)RcBauu=E?v3T!#<R^8|lWq9wU=@ zo7HoKq{3nrB5I1;-RDk+i<}3QS@T|Z2N5S1GON%2iOy)=K~?s|K6m?7ypv5M_IcPV zyj@L`_jwHZn78Nk`Oy9%@4rpAf-ex!Ad5Eo@jj2?n|Pa5VT3#ZNa&N8dxBH)IYnaR z{!3lYJDk3r(+5Fn;8N-9alR^x8|TvxtnT{Pc!$+wgp>_%qNOsQ=Jdb>MjG`Sy82G} zUrvwXbY|wu7|^I;oQY`h_gLw2e80)!>&%0XExxMbWlm=WoSGk8@Kj$hZ*m!SP&sg^ zc6D<ZR-54;8-Ir$g>aWeR-@q`6W<z;MoU$&jx#JtWF%HS3|uPxBTi=p9E=$tqNUP* z=5$uY5yD;F&!f^OU_Z$stKu^84}`y2CzW9nXSlzJ$vO86vxZ84m(y8chkrt3xBg3| zU*hz4xW9u4U0CZn4F3-)i@eMu9`MN`z5*<{RdUJ>n){B2eFJarqcvy`n#?4gqwk{~ z&)aX%uh1^!?IU$J-}yukKN6|%-yU@b-xUPmNqYD_oiMTP`}gJw?sn0Vy}$H=tK@LX YPm;z-Qn0kiRg&xKLO(bl$tGC-e~UDC;{X5v delta 10062 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 E2cB&WbpQYW -- 2.39.5