From 3787823288e706afe279b4ad5eb0409837210dd2 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 12 Jun 2023 19:39:56 +0200 Subject: [PATCH] Fast SoilDown ready! ?? --- Atari/gr_basics.asm | 69 +++++++++++++++++++++++++++++--------------- scorch.asm | 3 +- scorch.xex | Bin 56393 -> 56438 bytes 3 files changed, 47 insertions(+), 25 deletions(-) diff --git a/Atari/gr_basics.asm b/Atari/gr_basics.asm index 5effad7..489f950 100644 --- a/Atari/gr_basics.asm +++ b/Atari/gr_basics.asm @@ -197,6 +197,14 @@ ClearPlot mva #1 color drawmountainsloop + jsr DrawMountainLine +NoMountain + inw modify + inw xdraw + cpw xdraw #screenwidth + bne drawmountainsloop + rts +DrawMountainLine .IF FASTER_GRAF_PROCS = 1 ; calculate lower point in one screen byte lda xdraw @@ -211,15 +219,26 @@ NotLower bpl @- sta temp2 inc temp2 ; this is our minimum + bit ClearSky + bpl NoClearSky + ; Clear Sky + mwa #0 ydraw + jsr plot.MakePlot +@ lda #$ff + sta (xbyte),y + adw xbyte #screenBytes + inc ydraw + lda ydraw + cmp temp2 + bne @- +NoClearSky MinCalculated -.ENDIF ldy #0 lda (modify),y cmp #screenheight beq NoMountain sta ydraw sty ydraw+1 -.IF FASTER_GRAF_PROCS = 1 ; there was Drawline proc jsr plot.MakePlot ; after plot we have: (xbyte),y - addres of screen byte; X - index in bittable (number of bit) @@ -254,6 +273,12 @@ MinCalculated bne @- NotFillBytes .ELSE + ldy #0 + lda (modify),y + cmp #screenheight + beq NoMountain + sta ydraw + sty ydraw+1 ; there was Drawline proc drawline jsr plot.MakePlot @@ -263,19 +288,14 @@ drawline bne drawline ; end of Drawline proc .ENDIF -NoMountain - inw modify - inw xdraw - cpw xdraw #screenwidth - bne drawmountainsloop rts .endp ;-------------------------------------------------- -.proc CalculateMountainTable +.proc CalcAndDrawMountains ;-------------------------------------------------- ; Calculate mountaintable from screen data ; for speedup SoilDown, etc. - + mva #$ff ClearSky ; Range alignment to full bytes. lda RangeLeft and #%11111000 @@ -287,17 +307,15 @@ NoMountain cpw RangeLeft RangeRight jcs NothingToFall ; convert range to bytes - mwa RangeLeft temp - lsr temp+1 ; temp / 8 + lda RangeLeft + sta temp + sta xdraw + lda RangeLeft+1 + sta xdraw+1 + lsr @ ; temp / 8 ror temp lsr temp ; max range is 511 ! (9 bits) lsr temp ; temp+1 = 0 - mva RangeRight temp+1 - mva RangeRight+1 temp2 - lsr temp2 ; temp+1 / 8 - ror temp+1 - lsr temp+1 ; max range is 511 ! (9 bits) - lsr temp+1 ; temp+1 = 0 ; mwa #0 temp+1 ; byte in screen line adw RangeLeft #mountaintable modify @@ -335,13 +353,18 @@ NoPixel ;ldy ydraw cpx #screenheight bne ColumnLoop ; next byte in colum - - adw modify #8 + ; redrawing a column (byte) of mountains uses the drawmountains fragment + mva #7 temp+1 ; draw 8 mountain columns +@ jsr drawmountains.DrawMountainLine + inw modify + inw xdraw + dec temp+1 + bpl @- inc temp - lda temp - cmp temp+1 + cpw xdraw RangeRight bne HorizontalByteLoop ; next column of bytes NothingToFall + mva #$00 ClearSky rts .endp ;-------------------------------------------------- @@ -350,9 +373,7 @@ NothingToFall ; fast SoilDown froc - test jsr ClearTanks NoClearTanks - jsr CalculateMountainTable - jsr ClearScreen - jsr drawmountains + jsr CalcAndDrawMountains jmp DrawTanks ;rts .endp diff --git a/scorch.asm b/scorch.asm index 0712bad..7962390 100644 --- a/scorch.asm +++ b/scorch.asm @@ -36,8 +36,9 @@ icl 'definitions.asm' ;--------------------------------------------------- -FirstZpageVariable = $56 +FirstZpageVariable = $55 .zpvar DliColorBack .byte = FirstZpageVariable + .zpvar ClearSky .byte ; $ff - Crear sky during drawmountains, 0 - no clear sky .zpvar PaddleState .byte ; old state 2nd button for 2 buttons joysticks .zpvar GradientNr .byte .zpvar GradientColors .word diff --git a/scorch.xex b/scorch.xex index fb392dbf069d9dbe86a0d57789130fad90f470ec..283eff5e653c91e9b96fdc45c44994340bbe558e 100644 GIT binary patch delta 2656 zcmZuy4^&iD8t2Xo42;Md5EU?{%OA~2TM09&M2LmNdY=%F* zME>ii!yg$Pfd}){k%3Wj+{WyPLl0Yh+G@6I9TzvwQreEDVP`wC-<#ZRPuqFtyzk!c z{=Pr=yT9*V>A3p4<7(HEH6-1gz2<8*Sqcl*#***cudMx$kSp*|!8Dc83>gKSN(<0c zkV?$(S%L92YgO`PJ>kS4{x5Xmrml6~os5*|pDaG1DAy?d^ z?=&m3#%;URxV>pLbt)plk-DoybnmE7B`EqEQZ?injKWPa;Qn%#O1*%VZW%6-Rl{!% zbNJ5@awH;a1WsBYf5{1)Q7g~3YcG_zRJ|ot`cZzv@P_1NdWvPp<@4y+TjCh#o1?=< z>_NRH(ntO-&@?X$=EO068RRu5MimJc_#&PYF7i29`9%xygRbVMQ$#Ia{Ij^eV*SnG zA|dC@pOxrmK9QXmV;M(1>#4dFNXrzhiZ=-brfzpqOFAJH?!4B;WJ0}pa8Um}Ey`}+ z+<8V^%KKhm5H`<<8Mb*MQThi|a ztcV<^K*Vu~PU3woxelu|B<%OA>6|7`39BSPZDnZ!HB48hsGt0(`9M}r=DG*EzBfdULz*}uVW_T|T_E0q*9Kc?V3$HbUaIvws~ z08Z_jLIAGrn@i3^w0(A@x^nG-LH*FVa}2^#)NDSiu+wO<6ie45>%>X;*N6`XOl$3r zYcRqb_|P65I$*_WIN15{xjmU22GxEy*#pP+zaNpVR4&-QhF*Jt!+2%wHRLjccNocX zc(Nk_p({EvNjmKB$X6xt?yydV;ND^dJ9!&U2-8DJm9NLIW`BUMgxRD73|*5gx2m1Y zMQKb{vn|`D(SUGeCy_)Jl456QAW9paLMKw}AI=jDJYCtisS~`S6UnA|1!-Un(jq$4yVN91I3j8LC z!6l|z3PI6cEoo6Ksg@E@EUuAeqPSHpO+_)QM*201^crct96}AN&;#3F<=m_?G7{q- z=fJp&J=L$UncM03Y?or@d`E=_i)%3NR<<7u-H#?%tGs25Z6o8|!q^HK7N>=HemWdC zp1;45VXuIx+c?Eqh0bhgxHb}4QX}w-jZDfHtQDNyNi%W%h;2nQYDI!1CcH>>Mcx(B zX(Jj`OPWT--~j{;V&>jo5sk~z5ll<*{Y$nnrhu*MeloEC9}p;dRDvnwTAM%rE9!>9lO2Rf@$N)Z5{NW0TT#v&9Co0ZxnmAYZ|u z1FMlP;RjzMCMZ7mSa?>wFof6k?6=s7b#U-tcFg+?xci}Gt6t5%)*zge6`_n_@}WmU z3mT-Uer2-o&=cfYC_VHNnFHqzEz(Y{?OI1ee-HN^hH<>Zz6Pr@#7?b+XPxCF0|uN~ zD(y~~aCj^E8X6Bzk1KBU2I+au8?5JZgtL6E@G+lrYz4EmlYf@3U) z4SI;|iH4OuQKT5&==t{Ht|qE(VVAXZt*iGj?LqIZdw10hALCE-&Sm`ZG#e^hGoH)_ zuXcHzPsRSpB+kT}q#AF`K_@?&d!5>?}^pzWO( zeiTu>gDxnhs9<}IQOc!@-D>mBXQXJPV3HNK_0D+c#x8c&uK&rg0|wF{}|FJ))J zxn3h_hkLzq;;-xy)yS20JbQX=z0yEM+4Syi*04))l-1X$((i_=eJ>FY%yLiCWHiyc z@SHn74)1~se4p6GyTvv96-?ZZEA3`Yy${UeFNeNCC3 zUbue5nEYwey{4*Wwxy)ybW3FGDdjyza(*vGxb7P7J3K!EQ;sH*K3H;eE>^eZ=yILQ zMsGG#Lkl&-jibLJpTm@6Qzp7>1;tw`s&}@wN5v)1NPX(JS$G8S{IOM9#4c-L8^Coe zF)APdJy3fa!-4h#-@*SBSQ3)?cex7$YB47Nr1ZNYDmjdSqDSy@?pQL_n?3>^KFv9;kwo-$^=wC`amg$`~-|wbYMFX7puVa z-*_i5x}UGgC*p_&zCIC4EbibxhBK-t5he^mm`dbt3-@BxBJ>Q#giaD|d*eJaMECi@ aJQA_AE=G2?e=t*bF-0XTbuaihO#g2uf}kS+ delta 2689 zcmZuy3s@A_73R(^u&l@|NWx3tf~ahyijPK(u|BGln9-`mM{L#c5$cLn0jY|(u)rv? zAjnk~Ru*{;?uaYk`dZ^k+UPbzQZpK%J`(GPkA$YlH}*?J8>2n5nkMa+Z@zENz32Sr zKlk2q?zs=osKhg>j^C_BAd8(rYduTds3NWF z$Dsw}`g;A_hLVI{9byF^?goBoYiowPiWcMLFcHgIag;O^M;Vzx^RTlDpF5xo3`Fp; zRng#chW#pl#v?5Fk>S=v+FeGAF>;6)EeGN8W-ldwULGc?aJLy}k>6)X!C@AM_KH4M zq&o)et{uy8E=k?67v(ztw&5*5wAeW|d#gV>=@fEH5t`tfkk?9~8P1!=C_mKZ94M|) zW|g}Ss9<{|%;glyBPYr~L3z%7d&eOV7b?c7k&_INFOk)GZ$G7q=2^YJL^t?f&gq~! zb4qjrT=xC!2A|Fx@qIak%&JL=xSu0Y_y2gGh5sskm53xY&x+F}jwKZ}@o^jZ%UmXZ zh099GO3zGzkN=p<;;(YqDcR|uOUWYd)l9+Re2ziGV+npXAQGB77p`;hFr5HqRj-=N5en1K1^BJr1}J8CClpzpagE!N1&7B zQT@uWOPuf$*Dehx{L%v<7=l}?nG$`M`23WF+nM}9_9GbU72n1HG@G|_>Laf)-)i73xpxF(vY>H0O zct=yckzvbrMn|-b3CKjoG&<2na;NcJP>6Coz71>f?RhMOcQl!iKqfcq(JN$4bDW=P z7o4$;BsYeV`sOhxgj{M)hb=o_ZJ`nDIfZXP^T}s?qUP#uPrIyQJ|bbQY4h3`}ee)!Wg*i|nRX%_ba+2uWA1&F}XeDNsA zJEh`2DS%)3#xrguK=jkZAlV?&VCmZ<`hmzP75zbsC>7&CV6&J6;zFr790X++e*q%I zEKZgDaLfuIU@Rq$ZIqrCX?c(x;?8xIE@Pth;K6Af-klXIJH%#Kx5~;`$eV{>i8GYA z3uxOG+MP?=Hqs1CH$tklFs}UQ=@y!4Bh`oXQHBy=vrPh9zt^M!;H@om@-40ltZ||>(Bw~{ShRLvnj1I zR`Lh0GFnzWEmL|Yo?(&iNE3w@W*;!ef>~1C`jI(Ycs4gNusku)n+!N4nCpiImg@s? ze3~~1HG5ox?tjDU6amXOcvTa~NH3Kb}Y$inByO|BnV3FS7q?QQfrIn?&E!05ev zpQOU$w=I);uZr4+@E6Ibl7;>)tYV39k z?yX_;wXGR@J#>@Lu8dtP{^_CRc=tqFj>aQNd&j6(M-sRHl5!8l{M8^NL9GZS$r>Eu9TjlZ5Oq0Q=Ap5L=sM%6+Xu*m&dGr#fa2_UdKL!7_D+3>(tzQb z+uT!WF%+uw;Q?}@bJWnT{S3AL`%3kBJCgqN0rs4MwFb{}AwDou;b!R^ba4uX}cEDS5iCGX{fVA?BVu-AQ_77;hc}r^s zT=Q^u6Ror}x1Bcla7wFeXROsi3wK;-<($G=?ix5>hfY{1g$jQr4rc>oVBQI$8D}Z4 zr&&CM^q+|Le{=tM0uv6&L4|G9pC7m+Fj3q%TLB5 zjuf1nh-Q;BCzoi8Z1~+8{GbLeAQ7iVkL{@8dW59%?V$oH&kYsMmG1}@sPeo}e0n}p zWLuw=TUc6UZ3>BuA2sf^nR6h6WZS6~{=lHGWmc0B*8Z2LL5(>Z-wbVlZ-MTBYstCOPt=x!m?raFG33UX zpkUvFllY!~U#`c~15Z~DSj?^%ZDoL`$CD%Ln3*KbrC0yO>h(wpwj2!SdklcS{{wnt z@KxYw299QU&ssb^OfGrP6*uJ`+zM8Eq`TWavo6&=qb`-5U)Nptpf1uDX`2gQq>Z(6 zS###h;WBIVP(Ce7S~4g9ZmGPQF_GA_n}%f6L3Xz)2|YklU?