From 4e73e406a3cafce435604c3473825e3e533eee0a Mon Sep 17 00:00:00 2001 From: Pecusx Date: Tue, 23 May 2023 14:23:09 +0200 Subject: [PATCH] Significant acceleration of drawing mountains on C64 :) --- Atari/gr_basics.asm | 2 +- C64/gr_basics.asm | 47 ++++++++++++++++++++++++++++++++++++++++++-- scorchC64.prg | Bin 39623 -> 39685 bytes 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/Atari/gr_basics.asm b/Atari/gr_basics.asm index 5e350e1..bb6c9f8 100644 --- a/Atari/gr_basics.asm +++ b/Atari/gr_basics.asm @@ -204,7 +204,7 @@ drawmountainsloop sta ydraw sty ydraw+1 .IF FASTER_GRAF_PROCS = 1 - ; calculate lower opoint in one screen byte + ; calculate lower point in one screen byte lda xdraw and #%00000111 ; only every 8th pixel bne MinCalculated diff --git a/C64/gr_basics.asm b/C64/gr_basics.asm index dbbc461..2999463 100644 --- a/C64/gr_basics.asm +++ b/C64/gr_basics.asm @@ -191,6 +191,22 @@ drawmountainsloop sta ydraw sty ydraw+1 .IF FASTER_GRAF_PROCS = 1 + ; calculate lower point in one screen byte + lda xdraw + and #%00000111 ; only every 8th pixel + bne MinCalculated + ; A=0 + 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 @@ -222,10 +238,37 @@ drawmountainsloop lda linetableH,y adc xdraw+1 sta xbyte+1 + tya ldy #0 - dec tempbyte01 + 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 + tay + sta (xbyte),y + inc ydraw + lda xdraw +; lda xdraw +; and #%11111000 + ;sta xbyte + ;--- + ldy ydraw + clc + adc linetableL,y + sta xbyte + lda linetableH,y + adc xdraw+1 + sta xbyte+1 + tya + cmp #screenheight + bne @- +NotFillBytes .ELSE ; there was Drawline proc drawline @@ -240,7 +283,7 @@ NoMountain inw modify inw xdraw cpw xdraw #screenwidth - bne drawmountainsloop + jne drawmountainsloop rts .endp ;-------------------------------------------------- diff --git a/scorchC64.prg b/scorchC64.prg index f03bcff8f4fd5c8e04979577b3b5bece6155cbcd..c0b74cbb3fbfc0455e55cbcfe49ab49fad89478b 100644 GIT binary patch delta 2691 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 delta 2703 zcmZuy3s_TE66W57hd~is(V#XSTzmwTg1Q!{kBx~o>cv-eeM^8yMezlZ1QH++E+CKu zJj4eGx>+veQgltE{%gof~ak_uF&7@6MT-|IC>) zGiMHclstEYbZnjLcgidluy(AS8%JKxavqwSMG(iaG$Dc*h36%t5aaQogb73qzLhYV zd||{v^CZ)AwbY*9A-{6uYvCtSYqANpIA zx&@SkiaFttpzpMJ!@S4j6D>}hZwBIgIDZ!zYqQrC$y;meb$Rl;-3Q%|T4b`;eRjID zWrnP^!EP2QTI8};)^1kHS`@O@&+O(bdCN>$tIO$HWG6|Z(V4VF;ZNk_##KuQk@Lq@ zjU=(s`G>^$B$0}rB*pbRsbQKu0_y1c#&lOIj!XWEIO+6FnLq%ERZkQScvMe2UFv=G z;k*1l)Agtx=dSA^&uw#NrTs|yPNq|e)YzOpcKCju_P;3Howu{xZE}_q%Q(D}y`Palk z{L|*Be3cd4>XD0@T`#ptSFcv7TBb|UrRg$t*}5aT!@7;xeRBrnOw~=*A^m9mc)iPT z&M;9wRWH{s((ia?5!Bh`ZNbkh z9SRj2NIO_xx}GxRu_3g>{e)G9fka5xyC1L;5d4c5qt!Z8q(d7v&0wFFF|FIVngYA6_Z5km}EMeNujeCHLXPk9G@|g?6TmbjC|rG zzL60DKKf-Q4qluO3monq@A1F)9>2>%#bZNe>W~!%-Us0;9}dJR#A&2R1P1{#KV}Xg z|Eb4f&1ASM^EDG^tuU->ZVSHI9;X0cw19Hyy^b6h`nA+goF?43MnR|jQZ4b0o771S zMAhLIv4h|*WQV`9`=urt%u^O4cv8;`-2vX&RIeIh$5K17cv}SFkEd>Pl8+7e@itfg zm3*Lm_p4FvQWfvr@vJi9T|8SWB^)?Y8xCNbR!OYH*R-jG!8uchh`3Kph+YL3voW0^ zo1{Vy+ASsB0xHVHklag{bQW+uUc!*l6WnxnA9OqoeWj*0;ri@B`J=SxOj^X61p-u9 z9+4OwV3JPff;>yO{=iU$oF9n#I*_R1EGP942^@Df;L&(g83@upYHA|CpEzFr(F04{Osqtlf z4%F%*!xqAdPaEzMez+w!k;uh;^VSkH&d3`dm|DzqxdkX8lZwI3c}v7sO5m7X5xar~ zR6z-I!p#$YjtA$D4k#|+MtXQ=R{kU+3G4G0K__a@|G-~X)R>O;EyogrL`1Xu)o`dT zN`@82LPCYl85a;zEH20;`r(}gV+adAQ6Pqjx>67?w3Jd7Jg9IIp~iCyBS}js4$?`m zt?*5JOtGzQLy$epYMpY4`KsR^b2c~dvsDDv>;5UGxS@eE7lH$ch zks*9Xg_~3FYLasU-F|2~wiZPW>1U=ESG=wz|0ceUHUjI>Q;YH6ilpS}3fx;XY1s1$ zRsiX=Lk`icG-&YsZDShXJ~9kkQvl-~WgquFXg7B&*J{8}>mTvVa;5MlMk{bt`M8h;IF`8t z56-2tm*4@(0;#G(g7262A@d-QdL_WYMWwP3*T<|*4k7}bmp8n zbLfoSQYf0Is~a-n{;|fBOr5XBPb)S}Ia&>mj*d?j0mlDN{1oH9V}E@X5~Wz4Wpte69`%Z&XRWvF z*!}whhmIWk^Ho8g;LuUB*$Y3)DJZQucINWG{iQL#iJLk@ZLy#2deKi3`N6!5J*PT* zUWU(2*;-kB;PVSN9@%#OJaF?a$