From b87d7e433cfc935c9e2a3c1aeadcde838e0cea30 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 31 Jan 2018 01:15:47 -0500 Subject: [PATCH] mode7_demo: merge in the rasterbars --- mode7_demo/mode7_demo.dsk | Bin 143360 -> 143360 bytes mode7_demo/mode7_demo.s | 2 +- mode7_demo/rasterbars.s | 347 ++++++++++++++---------------------- mode7_demo/starfield_demo.s | 3 + mode7_demo/zp.inc | 2 + 5 files changed, 136 insertions(+), 218 deletions(-) diff --git a/mode7_demo/mode7_demo.dsk b/mode7_demo/mode7_demo.dsk index 6121e157ab017d1ca209186cc207fce4a54f1339..016b250d3917bb5275a58d731af2ea6646e1bd29 100644 GIT binary patch literal 143360 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

MPpdb!u4F zW-N?_?~1m<3(ajixyI&;%@=n>ajXgX_Y5BrpEU9QISXFSdV3{XIJA3dK~|_rrA9M+~~!P-RkxQ7a6rtwIQUIK~@J!y7)f z#~mpWG58>uS+hiJhKLIGaA;N`KN-%B2Xeg4vCR?o8F3+T8DKzj?%e5pr_Y_^aUv*! zkRv-XnIMVJ$T)lUNnlXe;z9=6y@3zxJMH)gKx$hC&d!@mm=Vf;^6c4+3|!RNfgy1= z1w@`dz3%`fW!Thshfts4ljr>_zg8wg<(1{Ayr!nc0Kb}{LV!k&9EpHrs40hEO${bH zHUxWt1YCwnAlW%E6%FmcHFPAT4#gpY5Ob9~3lvg^!Zs2}L)}RRC}kw3Kr;ThH3K&V zNSNwQ!mYz3q46UfBoQ*3%}56NFEe~L*&T_(4>UDpB_*K)u*VU+haKMM=Gu?(&VC#W z`|tz87Vg|yoe{S^PO~wHW6-2uCVh<5#VGIqSB!WX1s9{j3=ZNM43e3Hks5xSIRs5I z$F*lS#~>Q1ix6Lk;L3n$vbqq-iqU~$IOGvuf)p8r&)RG}@IsL?8Yv()$=nZ0(;^wv z*MZd>4HuVZffw<`NKuF~K1SSuKpJsS4K7Xg?6Z3hs%c!>By%q`sSpL0Avji)Ans$N zfD%`G@|y=Ea{^Sm8La|Si^k=1Q69=EX-rrG?;Pq*eM=r%${lMRuWuc#*EVp6K)G$J z73JiicWY5jE_$a{v@{RBU5l3HqPMbIxWlHLo9S1mN66;h?tPpXpoO9P~V(jY15T06=I+ByHg zF(3Z-;eQ|g?<7pv(n(CXm|bpi#jHndI{_QU&i|XS9FYpT7=d4nOD;P16MlcqA=G%%%yX2 zdDH(NaOwZY0>J80|345E9B%sm%|89V!%V=Z|96-KctP=&ieoJ1Ah?o#+W8e{CJdUvEh>Y?x- z?BEs@{*D~ey5M}fgTnuIFT4+Q!MoK%;Xf+YtHOVA2ZjGUFA9Hata18{EBwox3jYf4 z3jg~$Dg2=g9t!_ng2Ep{Q1}DQL*d_nc4dWsd**h9|Gdr$f46Kdg+I>bRpGx4EBtE( zg+I>Yq44MI3jdv;@W(U{h5td9!hc^E3jc!+h5vvd)DJhT@VB%p{2vq){?}PAR``S6 zLIzkZxGDU9(Eaxn{_kF^!k>0m_=^OEzd}&>2MP-RZZ3tt*rD)OIu!mv4uyYrpTgg# z@b@YFZ&=}ft5e}WO5bX@4uyZAo?`V>qn_G>_4>tn$|7j__hN(r}kq)m7c28 zQwKXK{F_~h{4-A7K3D~~6#gyF#1pQ3zv^8Ie^C1`hJ)09V(ot_o=nEI$whLpTq2js zWpcS(Ay>-%HoL7^#A%R>Hh;j-{GeJFZAjE zefodTDFJ-?f8j~@`TzgH{r?Z#nEwBOcm4l?-$no5U%>wmI`#h$1^qvSSJD5Au>OCz zpydD7q2&M4yOO`ZyOKX5*0{G_$^Z3@EBRsa2v4v62)o6>O&!(kj`Xn}O8#I6x1i*A z_y4{L9B7ajVt-zb}ISb^RDC{)k(<@ zZSYX?x9PE0KZF3}f##v)??AgU$ZyZwuH>KGS;_B~&86hW*}N+GOR$nZUr_SnJRVAZ zt6j;z8kGE)=Aq=@?o#q^>O#rC-J#@{4xt)uSjqoZyOMv5pya>Kda;s!J67^bt?HI^sPOvL&^WTo_bSHmFYo^54!wpJ@uBJs?bv#u#!JlPvz^WEts%E zPtkg6dnYCTCobjv*G_%@=Wa^=UCzYMT=~B3Qpry)rWa`x@$}*&nGk)|9({#eT(p>W zL&8WYQi_!lrBo?X%9RSGQt78uDgBiJ%0Ok1QmsIq@&R|wKX9D*%7y>ihIpI*ujl_B z|F3o7f1)e=e-lir)CQkIZutK_AO82@e;@w$&Ho1`UVpOr|Nad4UnAgu2%Y#JqJaM) z{IB7EjSv4jX7#&9{C~&)9RC|S;eTj@2ma>;{0|}Ef1r8b{|>Y(p2j3vwd< z9{N_rbs+v1_0+3+%B-gt4D4UgQ;YRffu1VGi2n^e^^P89`UApJJ@vjGrupkQk6*0| z$?tT6`+7ITzuB3%&6SV45ybyb6FlONAS*fn^Ff|~xNGwh`HB4`eo{Y~pWIL3r}Xpl zQ~CM(1^5N}1^KCA>0b}|fQ#*q9r59RpZ&kj{@-W+@3a5^KRo}x5C312{@;iHowNG; z@PA3Q8?blH>hHt<9aj_Z;s5Xd0<-#8y3OkEk7vh6{v$_9gz5Ba+-CL1B!A=&KTN6w z63psvUk5-UkesvncTIu``0WJ>v-(S5dVYWB{QS-d|LwE-W0J&4f+_n2EElF8)`ERAQAxB~{5(a+N}*RQbW;EB>kgRiG+JrS?Of z@_|1#?02=^hyQ)}--rKw_}_>Befa-3UH=ah{jmNYgg*WM{~7y#pZ?!NOyJZ1`|SVW z!}w3A|M%g4VVXbRI)09I0I#@?-(OY#?=SKf`%C<#{xW~LzrtVX@8_@b_xBI*5A+Z6 zSF4bxe87dE|JV^?kIVl5SFiT};J^rLfWt)6OBsT?U&qL)2eAMDgV_K7A?(xtFm~q$ z7ypS=MHE#P#Y9nSqNw#z#N$yWSSEQXLu0OV%tc|Y&6rE);_~MIzuIO0-{(s9|1jmV zyZ!$%pZ&kj{@-W+@3a5^^V$D@ePjOrUwile|N3|F|MwU0KZH*F4^goHhwv))|Ca`W z|Nl*b|NlOR|Nm#+{r~+9+PNy253hf$k!yGT|NO>W|6{?!?2^L)-!;E~f4l2Hp1D7S zJfo!-&K;m@6KWLNm*nC4kLRb+KrX@c-@$oH7o1ObaQ*M=h4=O@cwsTXW)rNLeuh3Q zG{x)u{*QKW{U7DU^#9#h4#hw1-u!So+OF#QLbhv|O@ z+LcZJ+cUSD{*UTx`tO#_1^sb0ucrS6*!4e8aQ(-5JWT(~?XLeUxc+0Bhw1-jm+OCZ z7q0&m4%7crgQ;yd?D|i&yZ--8aQ(l|da>#MX6*W3?e6-&?Kg1!fA(5k|4Db(|L+9X ze{k{#*MD&F2iN~IF4zC>9j^Z^4%h!yhwJ~(KG*;9N+0z1L4OwU2we;G_j8*5YxJ$+ z>oEO)PEWn0r#{qEh1kOX?|N#Hp87}+Q~QJI|7(tk0Du5<0tmAJbTs{6?=tDHcUt+^ zxtacNa3*eY<@@Bnp!&Ch8-V*3APNu%NCKn*vH*F2B0w477oZC84+sbd3a z8RR^2KKT^+H2DJgBKZ<|lFTM4GKUe9OBgA+kjW(fPWbS@5C30geE7fGB^&VJ{|@u} z`|y7&<-`A8=J)sEe;@w$;eTPWzkiwlsJFZRWBh*^y+z#?SBr8kqj#uV;@Vdc)H@Sz zj*G8FOL4x@ab2wiZ^-OG+3Sf6GmAgJWZ&qawm_zP^2N zP9f{lX{LLp7*p;@xc#=_x7=*d502FhjE;(gY{USZF+20wd5=DL@01DS?z|)6ZzJM` zOhX`749*r2UiAKw%;%m+d*p!`Qzzb?k~}8iZzFHJbr_Tsryo2Ba;cO`xm+qnNGz4h zl}c62YE;~mU=Blt(x#>)b1& zTlgH?obWi?bY#zkY{IdVXq#@EQvez4*=&#vmsMcTb=pCKOlJ#hXKkl#XCXKZnV=no z$bRIYK;mi{PN!jCfJ!op@PRoLWn~q{tdA)m3XxQ5)}pNNi~iwjaDb5MIdgZUp;1=h znvplJ5sM)~0jH-ynqW~O%9>8s6yT&H#03ifGzu<3S!6*?g+B`9o>PFo&jHT8R$UG=5qXh zpa5wKf}tVG-0Gs-%z`&p&C<-qi!o$Ty zXw_Hd7*s$YxY-HFMHHYyd;mX4glGX#h7uBr5v@s}3HUEU1qnb)D1cN1KiI<#r#SxY z>5yigf}rST1pn|?1cCezYA&>=2%$Y*iuNP4zX;L6Npv{;7YWB6K>+7Cq|yEYdlbU` z@Nci=C$;(zLO&IwpCCkV1Ut1_IB*>uDn$p?>Vw6oAh;l@ARPaSaSFl#hYrHtJ)qIS z0{gL$e(<2Zrf7nYBNSbXqJ=&5Q8XOd|D6ZXkPuyjj0hP^P%xbo4*w;{SSX~RfP{nq zWQ3nR7J$1GvL+Z493(h|x>i}tai|V*X*AHej-Lju4%{Y?q=8)_q&le($45A=07!KK z=1c@OWn97j091+K-z_LWl?+ZPLY0N?>COYk9`o8uDeR>|o7L*gI6#h|0Pl+tq!l?* zfP!P?_CvgP5O5k4VJ}NuFiVWOA^7iBDEz}2bi+;7Knm<2Rie>I99i&*OYjjy1SZT5 z1+5}}3?uTw2T!R3*xpLMNoJBcW;LN7o~5}!oDCzE4-?eCEGTF}4a?wV=@-WmYuI(Cymr@#%{{-1*YhY3KX2{75}F zQ$Ks?%Ek}o+#FbS)4c^VqaKun-h1?+FFszgYsZIcrv(T7U#J$_@xOjmbaZ&eKv+VYl-g)-xO^>|( z>jO0mw)m9u6N%>5$AR13;T4l?wruF{O0&W ze;@z1TQ)vC;rR=n%#)SA7B-0OJw1O@hV|)@(g!{t{!ZoU@A<_AKdqUFK3DX~( zvmo;=wh6(IW$wnH+&=MeS23-HvxvjDGIMaygo7j;9Kb;?4r*`^41u{@b)R@%LmHN+ zsLTTw4>2QRe0W+(mZqg}RzqC^CpM$SvrItNjb>}(;r zHK)e+RYhBrUS?R3UeO7dab zn{sZZU!k7TQwxPD{mfYR|E!*Zc>q7aGyj3^{~vlh^B;=|q#n=wXX!NU-&&VWe~VMi zztK(izs{Ms!Ikgd|1I4=;BfbWCrA_|4w3{(gJePSAVrWe$S+70y!nKxv>XP#&lVR0jIFbN@l(#FJY5St=!4iTQehCWyWS@gPCGO%N*xql#dLfEgqS zmi5I>7l17~W*)T_y8vv%E&$tg%o(a4TlDYHF(#@xiaLQ^0Dg?3PDT-CmkR)JrDHA% zb46jUSQl4@7cK+!>o6i>n2CwOkvYRm@a+vB;mn&I90I;4h~Nm~bOduVv~xauf8zxK zVk4Pb;7|t5j*TR?hnpBwLS6vE^e{3Kg2q++{V6)W(ag)z@BcE&V#THWB` z7lqwDb%UqY4W3kIqEGSxkd99Q&gP_P@bo%}i6F+Tfg2+Ntp6X102IYE5G9wGt(}wh zbWZxdQ<914oW^+J^iqE3R+wP%y|zf|UlCMMM6C@vtCcFok-17LE5eKpDa)ni=N-!T zl*Jcy{5aT3pnG`o0^FB4rk25HSFX*LrTM0%<&cJ3Z9>7}LzAY@c|I$bt!X;Yir-@4 z@IQTe*7TuCSxL{^-$ei@V9WCE5CCoJ6G`=tbhK#zjzF9GMs{eEQ13aR-cRr?Gz;DY z`KT~z99(efxyWi1MZFYREsmo85m_ybqOu}kJtllBP|sr;>|e%I*#8sLVgGvM)z)Le z7w~1cfLeOi+?e`DcvBp-n`v@uIa8yvuMtnd6BpNM3EwyZ5hOSjDx zk!`eX?r*su0Db_@v_AlF*TZOcQ#APoZGey7H2AB!P0F%YoAOJ~{ zL^G90oTNmOL>!Y(l|xLD1XTDbfhwP&LXxRqG+>t;T(8lqZ}L49*GMad^k!=7q$l80g`b8mDqSAh~b3fAity z!#i*?z(f@g61h;?Wboq^kj=DylIk~|G+>e7GytK~X#k?&GyvgMoCap$MFVHiIXX34 zyU5TeGx!T5StxnQ_-nKf?QgfH7mV{4$1;Oqz!>dtFSvEEHWi!xqtwfg3Wol!a#WmT zu%Qkxv>@Rz4v(Sdk?HhPWCn3tZ2Zx1@@43h7w8xH-n5BVLI3rEP7{$Y(JymKxEMJ8 z!g?S{H3^0n=ofgcAU2u>Rbf8?mzM!FXAo5Umc51TUIvbI5Hn4B4!FAuxt?-xJ5L02 ze$WLc_)qLGO&a0i{f8G`@Fwu|ZE$ps(!K0Xi=r2ji?F6a6@OGo?d;%Xu*Qp* z!NpkPhaJ2OKwzPrD{ho?tysRr$X#*_0FrMoN^+L2t%QDKtc`qw`q}Aaa83vB8T)ew zFI93Nep{fD>Xn_m44@4jUIq`x;ROaE1TO=id3YIgpk3L@pgnWDm%$nk0n8^KUy_RN zi`hE0ssz{MsIOhpfU|k^GVqH9NrNPo%*3L*4w8nRvGkKF#XCeup* z!w0(4P1-Q!OKp$!(x5w zbJyW>a7<6}dP*HfY2!e=a8gg5(NiIDRG&DIJ6zCHk~k_H6E5p1c^nlL*U{%-u%Oo$ zK9L=PTBH`MC2FZ!rk1M}YNgswty24|1Jr?Pbr9+-9dPIU!^Vk!h5p~f|7V@}A0j^d z@5BE-{O`m6KKy?jP6Iyt@5BGj`3W4710VkPz~esrf4!ClKK$>){~0#0%EMcq;gje6 zE5B9-O9lL4@qb*%x#xtFIk3;>P@5q2x#y9eOh`or9vtV(%lR{-ha%*^dGnS&X9U8b z6Q|&ug-va%DTnO5$$p6DJb9MS$N)ZccHmo!7AX+Qc>eT04vsUPcXS;t-C%I!AARNw zQ~(E+7hfH)*&iY`wiB(GSaZ?Q)6z^Sl4Z(}JX4MonTi-`i8Mx5B8!oG_gTce*SNvO z`)kWT-1q$_Lz7|F}_t{6C8Se|F-3 zi1_fo5C8k{zYqWW@V^iL`}F@l{lA#uD4+hHT(BfHgUrZ}5tQma{lAB&flvRBoFLX@ z0(1$G^z7Lu=OCo8#f1z!D*%=Q`%b$sFZhQFAl77uG5})FIzenmoDD!M0uXxu6aQ5B z|1Xb!WgjDT5#kFGh#F)JQWqkb85~Rz@9sD7F?b#a{#MHk{=WMEV6_CHtNNt9fNy-f z1%j<@1Q>GKkL;lh(yrxq$-%VQkslw9zDC|FmG3C_Mt0&GVfs_?1bbY{Kh>#S)5!$? z#czRNc>Mp$Td?%6eD(+hI|TiI)m{je|5eZ2e%`_O)AldC1uOr;Cl99{{AY0D{QtOw z!K(ic=05>zFjlz!g|}ds^T)o~)Z!gwTeo};M(yWxw*-TyAD-`+Ww zpB&kcbbHgMU+t;?{NS!nx7Sy7%%luNP|@~J_ik;f@1i!v|MHVGIM8+ea_JX4zUhOWyno3+rYJKAb!&-dRE&ahF`ID~rS$V{dp>Py>Y}FZQe+Fb za$CB?y{MG#Dr?-u)$eKC(q!JXWzV(-kGi^h-e@7B5OIhkL>eLsk%uTklp%g0su2H> zfRI3#D@xQ&+)dI=+D+C?-c8X>+0C!ppX0?zs6+9L)Y$)jxSn{2AbJtROoGU9IsZ=p zFM8Mde@k@CFzOBLyq}Go|0x}_ky?tK|KGgQ`hUQcj=3nz)rz@vE-r8D|DABH|93Aq zXB$Yoj8zO1KN9FPlQtu*W~VxC;t)L{ZBgF{bRhk`#V#A zGk5=04zK<35wO~o-QB;UbJCX1NuPB}GBKUg7%!Y&%J19??CyUO9OEOXcOz{&NGdSW(WW3Afj0R^Ue(?IJ%_tLl#m)({Zl0McqCqfX+b1jgXwwf z?vHN;Y7VBsejcX6{wYj{{lcre`@;q7=G(q8CU0?Xkv3J2>*+?%k39_VCV*{IyO;{yOi= z1*Ua!7&pSNm4d6k4HNX4L-uhSY@pqC8;JuG$41lep z`#)|9klg1J=+X<}3Xc5QNTC#?_feoyhBlxmr3!5bA3rfE`Bow^>7L{X)22^Jo*Iq@ zDZ2ypCS@puCZ!hgq)eMOX+&Jyj2ScZNy&-RlBeh=Bu|T*k(_u>a@;-RXH1$hF)41^ zo%e*JG-WTeVZ;XXgfa##Lrau5qYXdC+@c#9K4!}F34~D9!%4~GCx&AfevAOdF^OZ0 z_YpG^Crl%zO(c>g64O$Wi9076jT2{#op9HPa8#{~fOa%Nfg8dJf)EN4>e_=#$K?<> zxb7{)B?`E1);|S?S$BDNMfX34;G76{;s1EA z_fc1=U^u_*O86hR(lHl>xp>T_b8&gY|E(_kKNHYem-s&( zK5*RdKj*{$j#&ZQr~C8ae_>KUHz`49tnb7BZc`9;p6<_w|8u1IFh4rX#;*tO;ok-S z``sA+_w$bb{eBnxKTg2^5IXTcL;?RpcoqCV#BD0Saqam3`*!?))Q)ro;5^Ze|5XnB zFZRIyuBrT>9QUdGCdL{??Nj+lZ(IT}#DT+I5&&opmH<515sN$0pY@Oc{LR7bJQ2*9 z+68A}2MNG#Z zklslG0B!J)0K^Is00=<>05lH?KnL2DB>?T2+a&-mca{LSWphaYa5k?JfG@BFV7DLv zzdq0N;QF0Mk4q0K7{AaI6an0Pm0h7>2-fh&q^^>_!$1*wiioctVf>TxY#l z0>EPlz%h3Tz|X&d1fb|zB>?N(B>*9U1VAfD0Qw6OfJm1FpqoPi(90nK7~qfqMEN8D zU4rO#34j;qeFeboB>ATDLxmX}SBx?kB!gwY)bQiXA!rgTyu>kR(l3+15+7EuqC45+ z7sIMvV4lw-z62>U3ZJ#vc;Mw}B%={tKx~q^A8=~X?{CVV;+)EFqP{ipI;Qfo>Zuw% z^&dU;170a$y`I{nrw-_;X1s(zy`I{whw1%*(4eP2!;}7XoXYQKdF6HMgxaf%QyZd!lb@%Tc&^@qwP!PR~QN-U}lm7!( zI_9DMuY`1JqR zI+qUp^SJ*{{Ew&ohe`fnqJPoMo-m=mBvFQxGsH7tV*l}B*!JprC-x7$F=;@kcWFTA z?;;JjSC9rk=#&OP6r=$VUPT%((oGt0Z@V;r2Wh|_yEVW$JL(lc^n-S3fYu=m(0G>y zKsoNxfCpoZ>UL>B$c;+_oEm+XGys}|F?}b^yd(Xe9?}30oxURnSPXa~dPn-24$=T@ zae$W;aCQQ&^~ElDzw?j=Jm`=Htnr-Kzo3IO;0-U*fG=W=&)m2)V3$)GzHrfTJJ{z%&nOK$}Y%aJ~y^K$}AvFlq=TzTt`eo7$xTFA36s>#P?`1KO}O;Jmvu zKpboOuP-6E_FAO@+ufxBgdh!w7Nh}#1!=&|E@?oRLmDv9Aq^PfkOmC(NdtV+0AT?^ z-^Bii`xq%eK(X3$VgOk4*_;4Eh|OqKK3dYad@jmEIVFt=OJLbj>K>;w;6Z)s#Osg- zY|~SXda6ZFox-4hhn{NEQ^)nx&sZApxt`jur!Hc`mwM`;o@(nP4Uh>F`(H+H!D;}o zZsBG04iy+z^lCh;TZj`C&P0El&wcBN?|b<5Q1$Td5zr&BM^F!SPt;S?Q`}S1Q`%G3 zQ{Ge2^G|~Rdxa9O+3o)m^u#oRSmLt$zZU>?j&s?+cXZ5X>RpWd-^0lNeI2udT8@Ey zu8tW?RYw7g2jss2gMZ>_7xD+Lbj(FzuJf2n=i<7rGZ%5zj{LbWW>yE}{|P}{2q(U= zTmC1&rwm5^-RzeCUqeH?MG}^F%l}c>@_$qpmj9!`@_*ECWcmL<7*TAuxffz?mjADZ zQQ6pJ-{}F68%C{gc>rAdLVtB()Hci}cmP~sp}&LnRvdI%{wu>Ne{AXR)dS#K7W(_q zY5D&n*vjFB{=&Ul{yS5DGt2)E9R~b&MG$X0EdM|5oK({}>61=LCZ=;5)9Fk-xY@6y4Q>RgFTV|eS#kVgjewc2=!WBU83_J10Wrj z%D_`<;Nbnn1NqO0g%@gbj&{-hV=zdP3WLkPV$o~gG{+Q;0`~|!(Ea?Yk{$7{#JMTdL@k6LfH*5#6qaFD_Cm{dp ztQRAH4En(t!EH&uOI_Fj*k7V;)h+lV!d7^pD6-;G!{Q5O)QI>f5*7#MmKE zz?_;GuPiAYb8z{6)@0S-XV59shU4_dWf3s(SkO4Cooy zGpMIJ6oraH#i5c=X{anz9;yiali>d-7ydVP!2gfBxeH8Tx#{WB_sHP}lkqiF=S32gRFqaf_#k#oe>&!)nhnWUXsUraYKLKdX-SXc9 z{~O_h#tr`;_Tm3dntvbu7cBqXqy(L@z7PLj(emGi|2;JS*N^`t4*ZYx{`e;c-9Mxy zIe(&=@)=+SaAUH7em5oy=;vJ)(C>GV1w16k0w8qC0w4;q00^%l3rKX61w7O)3pfk1 zfUoVcfXjBwD?sSkc3D7whb*9{cUb_G<1P!B9c%2-E(_4!xGW&ifyiC50B89U+aYZ-P~jWfsRCX{NEAZhx&!8Lj6MnLIXpCLe*NN75%^V&IUTF z^33CJCi9W+iJ`zu=Ih>@8ORKqft7=Lj_q===~t^nYB_|1Bo{zfrIMLF<1OwSI!` zNBw^wo;gbUQ2%F8{~wOg=TZMZ8>88n@NG^1LsT0^QH(0XsDu`^#u_EKHT{3vMEV~* z3H18^B-j63|3l`#PVC#P;&c6vng4wKzu3(G!u7vH)Bk0}q2&MnpE3ZkI0hivGXU|j zFo3m;0l-#e0I&-T0Jf7bfKTZdz}g%GxBv{`wRxE)(8(pT)@9OpgUkRVg#pytGXQuW zJp=(tr9>v zrz=nF+Xe=(L16$-8X3T&CI;|58wPMZk@{xw4B%yz0lZ?*0RGOx0N@%74B!UF0ALFY z0Okw~z%(~81IV46V*uZ?G63Ca8Uw)7Y#G2i$N+{J1Hf|(4B))X0Nw)zfO7^00J45* z7t05LG=JNCfHH*vEN`M!MKge-IR-<5L0nF7gfUDr3{$;HrC%qsdr)bBq+{r_k@^BR2& z_5Y7i|34q2FQNX=#^}+QaIdESA*v0dC`Q#_R6>hdV~rB3H2uGIBK^M_{(#Y~|BrC} z&-Fjo|Aeg4-_CGfu1Vne|6P|hriruDNnD+-%cuWKm!T7Y`$h+`<^g~^K(Uzs^NXVZ z^X)0X{L4ZCHZlqTTa^O9E>Hm2PC@}bt)l=NWeR}Op8y4TL#6;8S?w|kut}x>jS2-2 z>?r`ekDdZ-N~9t=3Lq6v0o00qjRL^sAO)~g<}1hVH&6gWO}}ymI0hIgfO7m-CJKO# z0~!TT&e@SC7OE(8nE;y<3h*l<1$f*<0ruEXfHxDVyNjm)gDM3WvZnysEEE8)!9W3) zGYSA(pa3vupa7=1i77ztwm8QyJG2|%p0DUbqvqPQvVTw*Z(W7 z0KEQxg!20TezJWparToPdplu!-(KSCCvpxBoHD=#H1BaPh|8HLZSM|Re^?x(W zvj4FP0P+KFpLhka8E(G3oRuA*1c>XV2cco)FLY z!n*lq*~H+nu{#x|;~j6u(?`>3`M~;H&z@~>hd6R}e%-=x5A57Ic5DzQ+sC~)5E8iN zb6@+;BTu>H766B!^B%SU7+B0&@J*pH-=P8M4~S9Lc7Ey&xpa z>MQH3>Z|K(>b(IHCtYU0j~eK{^$Dt;=z;PgtllGP>^S{=X0)rT>o?Z z-?NtM|5|YV$5nsK|F_fsWiac$sRH@}aQ)Bqe`_TEA=m#a#=E%w@1$J+bN$cs_xf>= z^YCh4Shuhp6#lt$W5>qMokP)1s&T{h{{R8DKomlOtN|&7@**(e)S<@@5j>333|sEssl9v zZ;%8_f{tKm&>3_E-9b-qhUoumc>aIyg{PxC|D?C^@PVC<;kd8$3tf%FvEf*6?67y| zRj{ldyRNtK)PHp~_Qp?@cE#bqg^kZ<|7~<%W;WOVT>mRw2)O@0_x~rg&9%h43_Jb_ zkk3Dr^?$Daxc;A7R{*~L&-FhFe6Iidh^M{hj`8u) z?yJaXFL8l;KkT)1hlsb^M_kaoZ$BCBA&}JJ$`Ef4adpoFb~JjBVAjY1;^`snKP1_~ z>RyuVC0=|t*By7f^n1|z@NO;Le$vuIsvjdWR{xvzeXu-O5v&YW1*?NKL2rnJNBpkNW4Q)^OR)jq(mV|SmqG);rPI^^@Jpi5C%4{X zd%6aI+eJ#TbKg#p-jCx$BHfE)w@Cj{oO%PmUyAfM820ZXeHOwp-MfiKnco=>$ z8lc*Ld4uqP(g5&B)d1OO+YFh0N|QjQS|+juc;h&;F{c%HvrtF zGysHmfF^&ZquAo_ohUZ=8;R1}umK?cD$pnh&SUx+X6Nk4FGOtZ2@6BNn5~1 zdjo*R%VGe~$^ZatRR93HU;qHyNelo|Is<^#oB;rM|D{gI1^{Jpp*u4G*en|W#1#Vo z(cS<6-bZf$usM+uas~hm#Tx)%-x@5#*9-vQa?k+aE^{fqa{K{<0l*iPX!Re0k$2~b z{I$sd;A=Lq_vMKlGZ+ADPQYyz+5-OCXaMlfCIf(nZ43bZJCW)#830^s-xly%o3?<* zRRe(6<8YsmA3XZDfcIJq0N@%71^_FV0RU{l008C;1^}kHi46d9C+7?R9)`;NO5X|<$42vS$PZqV!% zXi(%24>Tz8hX)!I_`?J3lV||I9%#@SfIZNz!&!Kc{Ta@~*vt(8xB&o904N#&Y)}mV zHYZ2Y1sDLln53^H>G>peV4eTVN%a2vLlV6IzyRRQBt4U)RXFihl8z>+*J1!LM>7Cu zPz?aWb_M`ueIF_hRfH--RiWxoO~@N2;gYZ;TpD(UU14|F6P_XZf7x7Nm#qK4%=G{L zn*N72L&6?a|Nk_eNz3@i7 z!zhYTevC?JQMcGcEux2(2y>UDGmWsrNWiON=G&m#^sNAo3WBRa7?w!@_BcWk5SB^6 zdAR0qRCpps0#+aiSdoVWtN;?QVwy<622uDYS%b4Z9SL|qqz~!|K#xcd;MWI5`e*?p z;I|@u4#Qp$>5CJQfYb6-oK{J|EQ!uRs25L7>m-52KrFLQ|~bn zum^WQb>DS4NdR1vH%jZG$~Dcx9k{02$w|N-g#^Gmv_<>hkJ9#N|Jf+r67Bz=D7_0w z0RAe_ui_kxU&mP(@5Ff+|8{Z`06#!835YQgFr+5|LwQKR5RibOkB$W32Y`_P`2#Q= zB;fNR-j)j`0aqJIz%7gfz;+T6aJ4-Nxcah?fZG`ffUQabU>8ULY$qWBt92yc_8bYQ z1QKvYCINM_;$;GQt4snGDB0n2Piz)6(^yd8)843Yr+0K${U*Sofr^!49wApvj=1`=>1BLT1l5&&}s5@4E} zm;~fb&XIuqRuZ5)O(Ow#nk@;qge2e`BLR4hfdo{@B*2-#>o$=9zeWN;=G!&|@GB%> zO%n|jO#o?ZKT#-X5H}i;q8Z;v$K2CwI28_Nk7q2 zktyv;56crbXUj5WPj`$uhC2>_A?xmiy=OWOcW0e&YRBQ~EIGV9OK{<|Yu)~i(HnZ# z`C6T974>$m{~<$Qt6~Mf_5Tja^*`7DQ?UZz`k$8q@KOLs=O4Y&O98G({cqOyk@84I zq%u+!sgBe{yaEwQ1cy*6I0cvB7CZvi|6Kob{m<9`trUW<|MT_#Kh_F>umAJ)f3yPR z`k(9nPRjK^*Z*vtl3M|Sb>HIavEF~N?Dq$zev2Llzd!6oAiMf;D*&$l>4jv$>;Gnb zFO&-vLZwh8R0}nNS0rMI=nzXqr|1&hqDPz|`agAL<^K<;`Tqkv|DU*ace;MjQd?yx z@vnV7?du(BbyJ@IZ%O0l>;LSpgl+at06hQyQY-1Yv@uPbolfHFbP;!_n|L}sjm|!2 zqpQ!==;Dy*OMLymt6kvv z|JR)=qdfng=l}b@()Nq8LsdQPuyyzK8|n^t{y#pGM?4PpXdYo(`D=M!Ia2B%2TAwA z?ovlL>{P%AUv^h0-u`I(gD%PKfeQH@BrBR@%8`W^8d~HUMv?Y z#7ePBtQKoTuSBF0$sv_WPRS*?C66>i^#5IR(MHV)z3Xo=)&GMlk+4s#|A*53by&Ke zz=Ho29f)U6(VFs|39A2LY?SDNDOmt~pjrTYfOUFc0kFu{0zf@F zZ599-1p%yT5PqOo0Q6fA9kw1iW;vA3SdV3FB5mH^dKH)g@IjP*vw`kyc|-lUo45572A@(8w$RPUtNFPUNuwH~|&_Cq6n00Q>+j3jp~8 zFdY^Et3BAz!p{l09(}p0CvFw0Jf7@0Ibnj z0Bp%w0Mvj5z^H5iFk3ElXO;6EvIW33iUmN@-U0yLM{fbpkw`V=EC3c2Zvn7IDa6;z z0O4}5kpEtDF}`yA2L=m(RwY{fhhXHcJds(G1ppZPF!KR@?Cw0V;|2?Wjs)Ch!2%#_ zv;g>}$pRo_V*xOhNd1G!0-)L60-)K(0^n`c0$?N#_ZhSRzz<-~0^s`=3jnwVg9X59 zW&r?OumFHLg9U(TZek07+{rl$fQ%IZ=uXot0Pr+h3ji?uYo!;M1puC7umGr*EdV@V z0f2J`Gr*u`0Wc?z1wc@-0Qh1P6^gb1IGwWqc!*g56!?7+0R+(kV2<7bK*(bOAm3U) zWEJ;?S^)g#R4oAB&@2Gpfd&SD@IY%`fDg2l3-E!~f))VmfwmOq-~sk2oQ3hzI1l6J zxCH>W0N@q?MOy%TL$v_tNRDhOzyd&5^beK(;0ACyNy`_~I#bw5nJpQM+PG-$B^ zXwWPG7NG@zOx5JAS>H?LQiW70RY}!SjpVH*wI#KV+R|EQt*h2u>#61XpX>igx&dnp{1c2** SZUMk80RBIu09+aR|9=6#Q{yQB literal 143360 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 diff --git a/mode7_demo/mode7_demo.s b/mode7_demo/mode7_demo.s index 84cb84c6..4aeced04 100644 --- a/mode7_demo/mode7_demo.s +++ b/mode7_demo/mode7_demo.s @@ -223,4 +223,4 @@ title_routine: .include "deater.scrolltext" .include "a2.scrolltext" .include "starfield_demo.s" - +.include "rasterbars.s" diff --git a/mode7_demo/rasterbars.s b/mode7_demo/rasterbars.s index 7be74eb2..bbab20de 100644 --- a/mode7_demo/rasterbars.s +++ b/mode7_demo/rasterbars.s @@ -1,126 +1,85 @@ ; Not quite a raster-bar, but why not -.include "zp.inc" - ;=========== ; CONSTANTS ;=========== ELEMENTS EQU 64 - +NUM_ROWS EQU 20 ;===================== ; Rasterbars ;===================== - ;================================ - ; Clear screen and setup graphics - ;================================ - - jsr clear_screens ; clear top/bottom of page 0/1 - jsr set_gr_page0 - - - ;=============== - ; Init Variables - ;=============== - lda #0 ; 2 - sta DRAW_PAGE ; 3 - sta SCREEN_Y - ;=========================== ;=========================== ; Main Loop ;=========================== ;=========================== -raster_loop: +draw_rasters: + ; clear rows - ldy #19 ; 2 - lda #0 -init_rows: - sta row_color,Y - dey - bpl init_rows + ldy #(NUM_ROWS-1) ; 2 + lda #0 ; 2 - jsr clear_top +init_rows: + sta row_color,Y ; 5 + dey ; 2 + bpl init_rows ; 2nt/3 ;================ ; set colors lda #COLOR_BOTH_AQUA ; aqua - sta COLOR ldy SCREEN_Y jsr set_row_color lda #COLOR_BOTH_MEDIUMBLUE ; medium blue - sta COLOR - iny jsr set_row_color lda #COLOR_BOTH_LIGHTGREEN ; light green - sta COLOR - iny jsr set_row_color lda #COLOR_BOTH_DARKGREEN ; green - sta COLOR - iny jsr set_row_color lda #COLOR_BOTH_YELLOW ; yellow - sta COLOR - iny jsr set_row_color lda #COLOR_BOTH_ORANGE ; orange - sta COLOR - iny jsr set_row_color lda #COLOR_BOTH_PINK ; pink - sta COLOR - iny jsr set_row_color lda #COLOR_BOTH_RED ; red - sta COLOR - iny jsr set_row_color ;================= ; draw rows - ldy #19 + ldy #(NUM_ROWS-1) ; 2 draw_rows_loop: - lda row_color,Y - sta COLOR + lda row_color,Y ; 5 + beq draw_rows_skip ; skip if black ; 2nt/3 - tya - pha - asl + sta COLOR ; 3 + + + tya ; 2 + pha ; 3 + asl ; 2 ldy #39 ; 2 sty V2 ; 3 ldy #0 ; 2 jsr hlin_double ; hlin y,V2 at A ; 63+(X*16) pla ; 4 - tay - dey - bpl draw_rows_loop - - - ;================== - ; flip pages - ;================== - - jsr page_flip ; 6 - - - ;================== - ; delay? - ;================== - + tay ; 2 +draw_rows_skip: + dey ; 2 + bpl draw_rows_loop ; 2 ;================== ; update y pointer @@ -134,127 +93,76 @@ not_there: sty SCREEN_Y - ;================== - ; loop forever - ;================== - - jmp raster_loop ; 3 - + rts + ;=================== ;=================== ; set_row_color ;=================== - ; color in COLOR + ;=================== + ; color in A ; Y=offset - ; Y preserved? -set_row_color: + ; Y incremented + ; A, X trashed - tya ; wrap y offset +set_row_color: + sta COLOR + tya ; wrap y offset and #(ELEMENTS-1) tax - lda fine_sine,X ; lookup sign value - cpx #33 ; check if > pi and - bpl sin_negative ; need to make negative + lda fine_sine,X ; lookup sine value + ; pre-shifted right by 4, sign-extended -sin_positive: - clc ; shift right by 4, zero-extend - ror - clc - ror - clc - ror - clc - ror clc adc #18 ; add in 18 to center on screen -; lsr ; shift once more - - jmp sin_no_more - - ; FIXME: precalculate as we shift same each time -sin_negative: - - sec - ror - sec - ror - sec - ror - sec - ror - clc - - adc #18 -; lsr sin_no_more: - pha - lsr - tax - pla - pha - jsr put_color + pha ; save row value + jsr put_color ; put color at row + pla ; restore row value - pla - tax + clc ; increment row value + adc #1 - cpy 32 - beq no_inc - bmi yes_inc + jsr put_color ; put color at row - dex - dex -yes_inc: - inx -no_inc: - txa ; horrific - pha - lsr - tax - pla - jsr put_color + iny ; increment for next time rts + ;================== + ; put_color + ;================== + ; A = row to set color of + ; A trashed put_color: - and #$1 ; see if even or odd - beq even_line + clc + ror ; row/2, with even/odd in carry + tax ; put row/2 in X - lda COLOR - and #$f0 - sta COLOR2 - - lda row_color,X - and #$0f - - jmp done_line + bcc even_line ; if even, skip to even +odd_line: + lda #$f0 ; load mask for odd + bcs finish_line even_line: - lda COLOR - and #$0f - sta COLOR2 + lda #$0f ; load mask for even +finish_line: + sta MASK - lda row_color,X - and #$f0 + and COLOR ; mask off color + sta COLOR2 ; store for later -done_line: - ora COLOR2 - sta row_color,X + lda MASK + eor #$ff ; invert mask + and row_color,X ; load existing color + + ora COLOR2 ; combine + sta row_color,X ; store back rts -;=============================================== -; External modules -;=============================================== - -.include "../asm_routines/pageflip.s" -.include "../asm_routines/gr_setpage.s" -;.include "../asm_routines/keypress.s" -.include "../asm_routines/gr_offsets.s" -.include "../asm_routines/gr_fast_clear.s" -.include "../asm_routines/gr_hlin.s" - ;====================== ; some arrays ;====================== @@ -263,69 +171,74 @@ row_color: .byte $00,$00,$00,$00,$00, $00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00, $00,$00,$00,$00,$00 +; arithmatically shifted right by 4 + +; FIXME: exploit symmetry and get rid of 3/4 of this table +; possibly not worth the extra code fine_sine: .byte $00 ; 0.000000 -.byte $19 ; 0.098017 -.byte $31 ; 0.195090 -.byte $4A ; 0.290285 -.byte $61 ; 0.382683 -.byte $78 ; 0.471397 -.byte $8E ; 0.555570 -.byte $A2 ; 0.634393 -.byte $B5 ; 0.707107 -.byte $C5 ; 0.773010 -.byte $D4 ; 0.831470 -.byte $E1 ; 0.881921 -.byte $EC ; 0.923880 -.byte $F4 ; 0.956940 -.byte $FB ; 0.980785 -.byte $FE ; 0.995185 -.byte $FF ; 1.000000 -.byte $FE ; 0.995185 -.byte $FB ; 0.980785 -.byte $F4 ; 0.956940 -.byte $EC ; 0.923880 -.byte $E1 ; 0.881921 -.byte $D4 ; 0.831470 -.byte $C5 ; 0.773010 -.byte $B5 ; 0.707107 -.byte $A2 ; 0.634393 -.byte $8E ; 0.555570 -.byte $78 ; 0.471397 -.byte $61 ; 0.382683 -.byte $4A ; 0.290285 -.byte $31 ; 0.195090 -.byte $19 ; 0.098017 +.byte $01 ; 0.098017 +.byte $03 ; 0.195090 +.byte $04 ; 0.290285 +.byte $06 ; 0.382683 +.byte $07 ; 0.471397 +.byte $08 ; 0.555570 +.byte $0A ; 0.634393 +.byte $0B ; 0.707107 +.byte $0C ; 0.773010 +.byte $0D ; 0.831470 +.byte $0E ; 0.881921 +.byte $0E ; 0.923880 +.byte $0F ; 0.956940 +.byte $0F ; 0.980785 +.byte $0F ; 0.995185 +.byte $0F ; 1.000000 +.byte $0F ; 0.995185 +.byte $0F ; 0.980785 +.byte $0F ; 0.956940 +.byte $0E ; 0.923880 +.byte $0E ; 0.881921 +.byte $0D ; 0.831470 +.byte $0C ; 0.773010 +.byte $0B ; 0.707107 +.byte $0A ; 0.634393 +.byte $08 ; 0.555570 +.byte $07 ; 0.471397 +.byte $06 ; 0.382683 +.byte $04 ; 0.290285 +.byte $03 ; 0.195090 +.byte $01 ; 0.098017 .byte $00 ; 0.000000 -.byte $E7 ; -0.098017 -.byte $CF ; -0.195090 -.byte $B6 ; -0.290285 -.byte $9F ; -0.382683 -.byte $88 ; -0.471397 -.byte $72 ; -0.555570 -.byte $5E ; -0.634393 -.byte $4B ; -0.707107 -.byte $3B ; -0.773010 -.byte $2C ; -0.831470 -.byte $1F ; -0.881921 -.byte $14 ; -0.923880 -.byte $0C ; -0.956940 -.byte $05 ; -0.980785 -.byte $02 ; -0.995185 -.byte $00 ; -1.000000 -.byte $02 ; -0.995185 -.byte $05 ; -0.980785 -.byte $0C ; -0.956940 -.byte $14 ; -0.923880 -.byte $1F ; -0.881921 -.byte $2C ; -0.831470 -.byte $3B ; -0.773010 -.byte $4B ; -0.707107 -.byte $5E ; -0.634393 -.byte $72 ; -0.555570 -.byte $88 ; -0.471397 -.byte $9F ; -0.382683 -.byte $B6 ; -0.290285 -.byte $CF ; -0.195090 -.byte $E7 ; -0.098017 + +.byte $FE ; -0.098017 +.byte $FC ; -0.195090 +.byte $FB ; -0.290285 +.byte $F9 ; -0.382683 +.byte $F8 ; -0.471397 +.byte $F7 ; -0.555570 +.byte $F5 ; -0.634393 +.byte $F4 ; -0.707107 +.byte $F3 ; -0.773010 +.byte $F2 ; -0.831470 +.byte $F1 ; -0.881921 +.byte $F1 ; -0.923880 +.byte $F0 ; -0.956940 +.byte $F0 ; -0.980785 +.byte $F0 ; -0.995185 +.byte $F0 ; -1.000000 +.byte $F0 ; -0.995185 +.byte $F0 ; -0.980785 +.byte $F0 ; -0.956940 +.byte $F1 ; -0.923880 +.byte $F1 ; -0.881921 +.byte $F2 ; -0.831470 +.byte $F3 ; -0.773010 +.byte $F4 ; -0.707107 +.byte $F5 ; -0.634393 +.byte $F7 ; -0.555570 +.byte $F8 ; -0.471397 +.byte $F9 ; -0.382683 +.byte $FB ; -0.290285 +.byte $FC ; -0.195090 +.byte $FE ; -0.098017 diff --git a/mode7_demo/starfield_demo.s b/mode7_demo/starfield_demo.s index e30d8366..89a1c6cf 100644 --- a/mode7_demo/starfield_demo.s +++ b/mode7_demo/starfield_demo.s @@ -121,6 +121,7 @@ starfield_credits: lda #0 ; 2 sta DRAW_PAGE ; 3 sta RANDOM_POINTER ; 3 + sta SCREEN_Y ; always multiply with low byte as zero sta NUM2L ; 3 sta FRAME_COUNT @@ -154,6 +155,8 @@ starcredits_loop: ; draw the rasterbars ;==================== + jsr draw_rasters + ;==================== ; draw the credits ;==================== diff --git a/mode7_demo/zp.inc b/mode7_demo/zp.inc index 33e0233c..60d37269 100644 --- a/mode7_demo/zp.inc +++ b/mode7_demo/zp.inc @@ -177,8 +177,10 @@ COLOR_BOTH_MEDIUMBLUE EQU $66 COLOR_BOTH_LIGHTBLUE EQU $77 COLOR_BOTH_BROWN EQU $88 COLOR_BOTH_ORANGE EQU $99 +COLOR_BOTH_PINK EQU $BB COLOR_BOTH_LIGHTGREEN EQU $CC COLOR_BOTH_YELLOW EQU $DD +COLOR_BOTH_AQUA EQU $EE COLOR_BOTH_WHITE EQU $FF AUX_BOTH_MEDIUMBLUE EQU $33 ; 0011 0011