# VIC-20 “smooth move” revisited.

This is a quick follow-up to a post I did back in 2020. I had written this at the time, but never completed my experiments to post the results. Here is a video demo of using eight sets of two programmable characters to represent the 8×8 object at each position. This allows smooth horizontal positioning.

`5 GOSUB 500:rem poke 36869,25510 print"{clear}{reverse on}generating frames:"20 for c=0 to 7:print "{reverse on}";chr\$(65+c);chr\$(73+c);" -> {reverse off}";chr\$(65+c);chr\$(73+c):print:next25 get a\$:if a\$="" then 2528 poke 36869,25530 rem char row40 for r=0 to 750 read v:v1=v60 l1 = 7168+8+r70 l2 = 7168+8+(8*8)+r80 rem character90 for c=0 to 7100 poke l1+(c*8),v1110 v1=v1/2120 v2=(v and bt(c)-1) * bt(8-c)130 poke l2+(c*8),v2140 next150 next200 rem smooth move210 print "{reverse on}move: a/s  quit: q"220 c=0:f=0230 print chr\$(65+f);chr\$(73+f);"{left*2}";240 k=peek(197):if k=64 then 240250 if k=48 then 380260 if k=17 then 300270 if k=41 then 340280 goto 240290 rem left300 if f>0 then f=f-1:goto 230310 if c>0 then c=c-1:f=7:print"  {left*3}";320 goto 230330 rem right340 if f<7 then f=f+1:goto 230350 if c<20 then c=c+1:f=0:print" ";360 goto 230370 rem quit380 poke 36869,240:poke 198,0390 end500 rem initialize510 for z=0 to 7:bt(z)=2^z:next520 for z=7168+8 to 7168+8+16*8:poke z,0:next525 for z=7126+(32*8) to 7168+(32*8)+8:poke z,0:next530 return600 rem print bits610 for bt=0 to 7620 if v and bt(bt) then print"1";: goto 640630 print "0";640 next:return5000 rem 8x8 object5010 rem data 60,126,255,255,255,255,126,605020 DATA 24,60,126,60,255,126,255,255`

This site uses Akismet to reduce spam. Learn how your comment data is processed.