From 47e298590491725fa63871ad62a54d26714ac9c8 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Tue, 23 May 2023 09:59:30 +0200 Subject: [PATCH] Significant acceleration of drawing mountains on Atari --- Atari/gr_basics.asm | 37 ++++++++++++++++++++++++++++++++----- scorch.asm | 2 +- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 56537 -> 56585 bytes 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/Atari/gr_basics.asm b/Atari/gr_basics.asm index 467f8fe..5e350e1 100644 --- a/Atari/gr_basics.asm +++ b/Atari/gr_basics.asm @@ -204,11 +204,22 @@ drawmountainsloop sta ydraw sty ydraw+1 .IF FASTER_GRAF_PROCS = 1 + ; calculate lower opoint in one screen byte + lda xdraw + and #%00000111 ; only every 8th pixel + bne MinCalculated + ldy #7 +@ cmp (modify),y + bcs NotLower + lda (modify),y +NotLower + dey + bpl @- + sta temp2 + inc temp2 ; this is our minimum + iny +MinCalculated ; there was Drawline proc - lda #screenheight - sec - sbc ydraw - sta tempbyte01 jsr plot.MakePlot ; after plot we have: (xbyte),y - addres of screen byte; X - index in bittable (number of bit) ; jmp IntoDraw ; jumps inside Draw routine @@ -219,9 +230,25 @@ drawmountainsloop sta (xbyte),y ;IntoDraw adw xbyte #screenBytes - dec tempbyte01 + inc ydraw + lda ydraw + cmp temp2 ; this is our minimum bne @- ; end of Drawline proc +; and now fill bytes! + lda xdraw + and #%00000111 ; only every 8th pixel + bne NotFillBytes + ; A=0 is here + dec ydraw ; protection if temp2=screenheight +@ lda #0 + sta (xbyte),y + adw xbyte #screenBytes + inc ydraw + lda ydraw + cmp #screenheight + bne @- +NotFillBytes .ELSE ; there was Drawline proc drawline diff --git a/scorch.asm b/scorch.asm index 2be1c60..8afa173 100644 --- a/scorch.asm +++ b/scorch.asm @@ -23,7 +23,7 @@ ;--------------------------------------------------- .macro build - dta d"1.30" ; number of this build (4 bytes) + dta d"1.31" ; number of this build (4 bytes) .endm .macro RMTSong diff --git a/scorch.bin b/scorch.bin index a4a315e64480cb7db49eef07751dfcaeeb06e1a3..615f4981c3066c6b542eac6855a435397b8c882c 100644 GIT binary patch delta 2604 zcmZuy2~<>966N*6PXA^Zp;7TckkI0adPLmC1@W`UA{Z81KoVqPL_`b;HZ*(#&7$(4 zS=$lxlm3nh+R4cJ(V6^m z`7lab|a#FrR<~z)Au1u%-38!E>ISHdTKj3_T|6Y*dKdbQ_^2Lg&?oE|!k447GKt}60 zDWj)vk?&Sam(V(Vi^x~fsEMSm^pB3#0nACzb4~yqW_r8K)tn78!nRq&*rZblzJ(|_ zvLu96-SuNsU83G?uO(irDtis1f_%T05cA4F6iLQcPE|yfaKB;nDpti5u-lk@Y&w(A zW-xp4FqyMzIuuXBs$!^up;i8t>>L^bwM~I!n=0Dnyd} z6zSAu$}3ys=m^V=CYIHcQ510wTLj0rCTzZ2Pw9In`sE{+FH-=UE2e!*Nk!N+kCcx& zXK?PwO@hCKn`X5=7dB4m=b>K;D$SWskg*Eh2FPPAF9o90@-9HW*77nS-)iZqa#o?Fc*^2r0RNKiB`LJ5g7vmq zz_Oa@DiX3`hHqNAshHC5p-hF8ekVl(yAzJZ5$1=kyxK$2MWl3ta&lTZ_|S)d?yglO z2H?#-)ZCkN8tL2c)=bcUrcd$!DTkm05yRo%?lvWPgxr;Yn3o(93|>RXq=>iH3l4wH zz$@Eo(A8x%_#ecR(L-DE)68~YRYh6Euc{~z;HRWG!e`-Ao#mF35gHUAG3F~e72&CpXrD#qac@eh&Z6|Z%J?x6=>C*)4HpW*WJ-HSi7rUz7S}NK+ z2*trcv2DDYMGV(4E~>|W%kRj6*7Gv8Q^J*DGEmtzjBr17($M5$=?2-Q@&O+}JucWCS zq52)W3pLu>=5{x4zo6jI)e*RwY)IN_57^;G+Ov^#CHcBp8O{dMZB21A4kfpe=1hyx z^R``5Ydxz3=fjQvkD0e+&g@^oWWMopRDzf4*<;YD>~Uyd97Afhyp%+>;9i20eaOjo zWUl9$L)gK)Qf9Ds5T1s7(4;2&I39B79qi4w$f1^=yrY!tZ?;;@bd759Vh6JUJ^C~H zZP&_{5cU}OI0o;<@!mmt9;r|EUD5>XN-($oM4^^Uv( zrnc$a@ckbhh*0bciQ}1795@Rp;l-7<4x&o zIwPn0iz_!?+9(1SM<(mv40ME?&hjD`vL;E}g+Ye1rjQp|PA=@5(b3UibbGf)bauyS kF*-mx->-kO}YEsGoTHY)0G2PM>Jen1OWr%tldU z*e7`I@BunE6DKs|gcir*VKeVyY^K7-))YB zb9r<$0&*fIM&cXM%bvA#^|I#Mj&G$Uf=t9dM(O5n<9x-lX0yeIHuJ-AH;VP8a?I}g zuwSH)-$H{#3hFtJdz()@zBjL))$G)AF?gwdZPm z4&AD))Z9A6@E)uY|6`!He}s3rUTzl~W2q52IloL6Vq$q;cEI+44`2s)32U_dlUD-& zgF}jsYVdh-Ygv$A*%5BYF5_h&n_=KxStD&G)0WSY%rIaxS-zY`WkkO`Y;~{!U|tSA z?*&j3Yc<*QybC+Qb=$>QZ(tn09Z_)5!8neY3}qRU$hzr;M8Pp-D_91y`9jj15RQU~ zDj_H!=pa9pH8LE-?%_7Ed%0q^irdWo7MsY%gjrAvY(fnjs#{_hDkc$$8>iL%4)6oE zN6vq_=lqvo16@J76H5acY8`QqmAg1qW$zW2jf8>7N8=On|*WfGRgPpc_l3tfUh>Ij-g}+Cz0e-rV9wAFt zgrRs+yuyrTlh;-b$y!?=L9SgT_>I*J1e{oT1Z^f2$tuxxmb52hzr zsXD>awg4FZIeQJ)GWbvqv=Ht;fJ4<`MOk8OX%2f+F2?F+-VHy={# z9T%XY1j_E!2mU34@f+yzIxf&@0o&@JH;`>x)EH#vIH)W}&j1?3OYy}*P6xK~& zJ=;yu8N{5XnjTdLK8$gon{=wg036>QF{LXP zSq=7UHUTNVa z{>Dl-?NvI!XgH%~ zDJA&Z-0(i~$=Zm(v}1H5c~NNYeU2jI2^VPJM>jU-s6@{RiO5-q77-@L-#w#+K0v^1 zUrs&RNj!4buJLVgR*G&HMB?F`xNc#JT?|7QXSCqIR`r%c=P4{FDaXXH^igFltYbP2 z(9q*k*|Yp<*36f%m%;c73>&S@pN}E^xm}Rf%yq=$j|Tk-ih&ZDTo>vpZA~5YB=S5} z*!7LK z6+D$FJF$Ue6)MSh>t(+69dX>~q$@jW9fgab3N-pcrL@V@I%=)5%b}EJ7OEtf9Zri# zUuCC)8!ZF$%~$9-zJ;A}+$r#J3T}%Y>nM%L=Y=8hWl+?N^vuYJMd(bm40on7-*jdl z-+R0p-ml^9KF;*9mFel}th!AFb@6jvkNS-p`SxPkgM@5&Yw7(?ILJMY+#|?6W%?1{ z@3ii*-Gu{p2tz`g+Wv9C8odaDX z=_hceEE>EQeQGziiu>aKMC6ELn5|Hy?eM< uk2!JckjQK+8yBN>WMJnpk7S;`&pi%EA*(6^+}HEQ6M=(onae9$eE$Qi3qj}r diff --git a/scorch.xex b/scorch.xex index 32d514ef6b3df38ad2a647a5b755468475b87819..c9ac740962538bd045c9e9979ab71168b51b4589 100644 GIT binary patch delta 2710 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 F{{YL*&T;?% delta 2645 zcmZuz3se(V8qOr)tqceVg1`l%CcajsyKq#{wR^hAnQE(O)uKcVED)-K__hrM#zKJb zxSE8(@R9%{uiyxZHtO~$b#N=GyZETq?(v1G*2Y?2ySD6~_}K2*&YW}qd;kCY|NqW^ zzkBZ#9TQ#Y6PcGOLK@lVl*|pAK1vbfY!XCm*p$5?O|Z>d;Op(@!);XD6A|0E)oEW4 z#Bv;&F^ORDq6`I*k2^D>gpYOjX2xV<2KG{h$DRFz@>z_MDv^A@qcaAx0;ZCbT=eOa zKky*YfDSEDUXLb`UDKpw1@zbGi|t?}Vbsg~Ho9PMSNx71Y#TqjPw-P%k2Sx!e-1kdR`s>>45E?w3UoAW%h=*f*h> zK4dxBOmlY~ZMG!=EA~Gl-r?5h{6zC7(d!E~uxDd#uP;sYL3z8o6|uD+R49T>igYQh zC>P#IIiKodwcXij72er)M-J^e(>k88icNBUf%O>vwrU)a!ac8gn{c~Lr<*d;Te-KZ z69_+V)xdzybCj9bxTEO|yPWPv-nhOdLe;LL2De(uN6}f9Rio+b?yN;46?d-}!%0XQ{WV zOVn6xR5z$w)ogxOeoy}Bg5msZ)o_8Fb*CA0tE;(VfECIpBjAFy4e2FJZ=u zD^%zx-o%9Z6%<41y;*O%3(eKBE;K`NxQ>}9o~uI~KFd%<0S>5@EQ!+r%*$bCy#Q*a z`_0x;Sil>m2D=Eg>*Q=0-NlL_X=q-INp6dzuSYlRW)Tv>XchN`nh)r9>$1 zt__8Dur?58HC#K9h{L1na$y;@brNDd=IW9I3-_`CbeHw1BfRw?>kGN#bks&Ht4}4g zxV%0vG)~v~C8?1SR{t2wAZZgbgQVpWX%jG)NGc4Uu8$^G;}`W&W3>5c2M2s^oIg)? zoF`|BsE2C&$A)l!=^l0zg!W{|LMvv&9SLww!z@Rd&p(BPj6-L2clKhP>EW|msR4YZ zK|;*M-!*W=BwX8g!n=1rl*pxCfqq&nhZq?Liir*Q$pM-07L6mC5MUQJ#S^`_xG9w| zb3cM+o?9`hNCfsbD?7ritunDa(jXIBMO2=qgS^0xKyOwN|I{fuJTAyi^7E}8$Uh4O z$SD(E+&osreu6@>Bx~Lip(~Y=wLT(LQpvia%ZV_>i_|3zuLWOi5nl#^FXG!l)NA+( ztA{Ch(FmOk2-$qz+rEw`!BSVmyMmal;oU&oEaD?Te52u~fymSF6G5ER@NpmpHGHhq z6|GB_LIf(Quw#c%M)IWHs}=IT+xL$TsecxB6gWQQ8x1=`8>uAh)iNbwMxiB_WO7K$ zE|S?uQZU>|2BmvKzkKkQ9Fj`ID_UeBGYTOH69YDz(_C4iiau_rYZ0-z)I7g9_o*QoOKjn%8Hg zrW;lf>e)qoig&gxA2*{60^N}4d_>eGt?7i-A)I|Y+&0PMnwFnvcc}2#_9)^APH10B zv}30I&u;qSW+e)KAAjE(=1I5KE1-5aC_VP;P!q?ouH!vIg@-#n2GXW>fb-O*8JFPGNAx2=(v z^phwSe`bz^>U?XS<24KJ5xN!CY(WKB(mlo3abm*0WGt~H?+;Wo;^gjW>@a)MLWARU>|699wuR9M?Lg_n#$sRpDsK;7_Pd!`dB@DDwq{xT*bdzV^MX>1%5 z965FNoP`N!4@SMo?tmRMP_72Nwl`vobHECq(9Yr-kqjT}{oTa*4DV`oadKVm2tH`| z9}E*?I$)cPPxS_4=@D|qZ=e-#BG!x1RK|1w_Oq!8wmF)QQ;xh4$5x{r{Pbv8xH%xm zG?ebb*PEBnLsXkF#x!Jep@;g1;8xiRn8u@%g?Ekk+)=6cBcs!2ns02i(}y0q^BVP5 z-(=ri)s9)Y&ECXB;5dmv83D>EuavCoe}Q4Y23q{cgqNl_ zaI8HR810DUc0Y}zn@uDclfKTUgISRtF{z3oUwiX=!N@epMa3) zwF>3tyqc!=&xfwvd>nvgFI!(wQohf?oV5KM5w|>TC*8