ÎÌÌÌ̈ˆˆ¬ªªª¬ˆˆˆ¬ÌÌ̬ÌÀ̬ÌÀ̬ÌÀÌÌÌìÌÀÀî̬ÀÌÀ¬ÀÀÀ¬ÀÀÀ¬ÀÀÎÌÌÌ̈ˆˆ¬ªªª¬ˆˆˆ¬ÌÌ̬ÌÌ̬ÌÀ̬ÌÀÌÌÌìÌÀÀî̬ÀÌ̬ÀÀÀ¬ÀÀÀ¬ÀÀ¬ÌÌ̬ªªª¬ª¬ª¬ªÊ̬ªªªŒˆˆˆÌÀÌÎÌÌÎ̬̪ªÀ쬪ÀÀÀÌîÀìîÌÌîî¬ÌÌ̬ªªª¬ª¬ª¬ªÊ̬ªªªŒˆˆˆÌÀÌÎÌÌÎ̬̪ªÀ쬪ÀÀÀÌîÀìîÌÌîî >�?ðÿððÿðÿÿðÿÿðÿ0 ÿÿÿð�@ 0 @0ÿÿÿà»`0æ  ‚gP@ÿðÿ€Í€@ 0«@ ÿÿ€ €Þ�PÎ P¼ 0`P0ÿÿpîwPpà `Ð €Î r`@ÿÿ`´œ``° à €@”€0ÿà€­pPÀp% pÒ³ P¦�pP@ ðÿ€�p¾€€ € Pη0a0 ððÿxÎ`À�`0а @ €Î PPAÿÿgÒpU€ pp�f€Ð â´ r0ÿPâ�ssÐ`àÀ ` €ÐÀ `�'@F €Eá°€P  ‡à £€ððàP°�``�`Ð@ € €Ð p¶•80ðÿð€€À À0°xP '@' ÿð€º pÐpРà`�Ð à ˆÈ@ÿÓ‡Gà°€@` �€Þ J V@ÿðpâ 0F‚À�à°À @&à 8]  �q`ðÿÿ€°@fˆx PP 'ã°4ˆPððÀ�uР00ÀÐ P‚ c€Í¡€P£ @ÿÿèpР ‡@ p p`P` E`¤Yÿç àà° Ð p6p°€@8Þ¶�× PȺ`°€x `à ``c@€p è¼ ðWÞ €À�8Âp0` P p pPÇ €Í ðÿð WÐh0 à  P@ P&P@àP0 @ ÿðh ES' Ð`0€  3°x. �'@ðÿP# €'D°p@   @‚ x‚а#Pÿÿðp�VHà �ÐP°7`H p`xÕ €”ˆ`Cÿÿà@  Á` ˆ G0°7 kE, 4Â`P¥ u0 ðÿp€ €80ip 6` @”pà`+ Pÿ€Å �p 0@`  0à À`à€0 ‹• ;Ç¥ G@0æ p pR Àp`P PÀP 0€WÞ¼€ p5� @`@‚ €@P¦PŒÞ°p €FÀŠ `³€Ð`p´0Ѐ€P ¦#h ¢ pÿp uH `@`p (Ð0  ëÍ&Pÿ5I3 €ÀB€À P7°g:² ƒ@ÿ€F°WEÓ�`à;(G0 ’p }PähÞ4'ððÿ wà ¡Ð0j 0p`’àp`0x¼P4q 0ððÿàP @'pp ` °ÀQ P °P ‰ÿ€i @€p`PÀP ¥à€€ ÐˆVͦ«x`Pÿ€×@  €B�P �€@¤@0fÁ pÇ›’U0 ððÿç¬h°s<`  p À0¤ÐP�`ÐPä€çíÍ´š@ÿð€P”‰  € `À`€%×€ p0· �°„×< ‰p%ÿÿÄ›x p P@ ` `p 0 ` Žnµ)ÿÿWrvgå @æ %à°À Véá` P€ÞË« x`Pÿ0± $D# @#Ðd(G0€V ¥ €à¥›!Sÿ` €S4°€`0à �@@ xEsÍšÿðWàv ƒ@àPÀ�Р V €S€&ëxͺ“�@Vÿð0 YÑ4 ‘€Pp` p¡€ Ѐ � èVE*spî h WP`` P €@@p0 ·€VxÞ¼© h €ÍÐ (à  :  ° Ð`‘Pä n§x¾p5�t € �a0%`Ð ¶ àÀp PŽØÀK˜@0€Ð›`P°áp@6Pp €à€gKèÅ;’ €æ¼ŠF ‹ �°  € �`P @ pЀ]”š P��vÀ5p‘P( e 0Ð àxÐVxíÍ´0pçÍ«Yc ÐHÆGX`p`è@p ÉPÈ º "aPPWUNs’P  àÀ� °  00àè ¼:#@€`0šxVC£àPr `€€P 0Q €p°€ ±n¼D0Ô¼`$; qp 0`@p€�@Ð`�g €g…׌DPå pÆ`£@  €0 @¶ @ nV@î9 “ @à� À Ð0à @p0 à8 à0Ž~fzSè h@ {4 � P P�p  �‹x&‘€@xÍÐ àVÐa `€ €  `à@ÐxVx·vpÞ|U@ p  ~°À 0 `P^pˆ I€Pºš€‰4àÇ %@0pàs °ÀEƒç €p€ÞŒ†$ ÀE€±à1 p `€‘ €@�° €àÍ‹‰Æ 5m1 P€  P [`€ àÐS gS9}Wà0 | ` p‚PàPÀÐà ·V�pVL«)€`E'áV@D9¥`@ 0 p@p‘0 @ |0 d( s@`@€·F`Ð 8À�Ð  0 ‚0 €àxØ K ` Þl L0E3w   @€PpPà g!à€@Pà n\P@0«Ù�6Ààp!@`0U�P6Ð@€Љ×Vu0ÞpÞtPP“@ P �Ð 0p À °p€°“`ÄÞ¦0V è 0ZA  €'à0 0 Ð€pi`@è�V€‚·â`  GpŽ€��® ¸xÍ» ¸ @€2ÇÐ „ÀQ� °  PH@0 ‘pÞ·ÞŒÐa`P°p fs°Ð0PP Np,p€€`µ ‡w^“< Ð@°0`à�  pë «€ŽÅ@p¨– Ep`   € b €0€0Ѐ�q@�6àE«ÈF E[Ðp@c€   ° À@Ðpàp g€Ö ;€g}^šˆgÉ"H ;\p`@PpQ P D:àȰz²:E`^P ` 0€€ :@° €àFxÞYE@àvæ-Œà`h§‚°0À%Ðà° 0€@  а×… �  c0 �Ðp@`0P`@ ŽÐp®ÆØlk…l«g\@3%pÐt¢p@€   pb0€ pkP ~Pp`€ÞÇÞ P`Óp ¤ À °U pŒ‘­•xR×y `g0@PP@Ðà .€p°`€p€ŽÀ–:¹~` ¤` pp ` €  € ͰÍv`B1%p  �=  Ðpå€t �€èv^(!x`\#�°0   F0Up°à;  è l£�„“ƒL€ÀP•0€� €P €0и]@3耼 —å—UdS  Ð ° `pÐp  K€×LÕ< u Ò`Ðp¤0à% á `ç U€‡ç«˜†ty[â2p 7 €€ p°P` ŒpÐ\ ÝÌÖÊ‹ÚÀ@°@p°   PP€ ƒâ×|Nzp~ca’P� `€ `Ñ`à„@ €`  •‰¨‰0Ãba`0€�s  0°@€ ÍiBgR �r“&�À @ P 0€P= •Ä€…€pf|Pc#Q0�S pp`〕`¦p pà°0   ¼P�PA> Ò@W ÐÑ  à `Р€pà`J u P  á°P @ È`êÀ§Å)0à] +J à `€Ppp°@€°: ›-- title: Ball -- author: g0blinish -- desc: 1st place at Chaos Constructions 2024 -- site: website link -- license: MIT License (change this to your license of choice) -- version: 0.1 -- script: lua --font definition fo={ 0,0,0,0,0,0,0,0, 0,32,112,240,112,32,0,0, 0,32,80,32,80,32,80,32, 80,80,112,80,80,48,16,16, 224,128,192,176,160,48,32,32, 96,128,96,0,48,32,48,32, 128,128,128,224,48,32,48,32, 0,112,80,80,112,0,0,0, 0,32,112,32,0,112,0,0, 144,208,176,144,32,32,32,48, 160,160,160,64,48,16,16,16, 32,32,32,224,0,0,0,0, 0,0,0,224,32,32,32,32, 0,0,0,48,32,32,32,32, 32,32,32,48,0,0,0,0, 32,32,32,240,32,32,32,32, 0,112,0,0,0,0,0,0, 0,0,112,0,0,0,0,0, 0,0,0,112,0,0,0,0, 0,0,0,0,112,0,0,0, 0,0,0,0,0,112,0,0, 32,32,32,48,32,32,32,32, 32,32,32,224,32,32,32,32, 32,32,32,32,240,0,0,0, 0,0,0,0,240,32,32,32, 32,32,32,32,32,32,32,32, 0,16,32,64,32,16,112,0, 0,64,32,16,32,64,112,0, 0,240,80,80,80,80,0,0, 0,16,240,32,240,64,0,0, 48,64,224,64,112,208,64,0, 0,0,0,32,0,0,0,0, 0,0,0,0,0,0,0,0, 0,64,64,64,64,0,64,0, 0,160,160,0,0,0,0,0, 0,160,224,160,160,224,160,0, 64,64,160,64,32,160,64,64, 0,160,32,64,64,128,160,0, 64,160,64,160,160,192,96,0, 0,64,64,0,0,0,0,0, 0,32,64,64,64,64,32,0, 0,128,64,64,64,64,128,0, 0,160,64,224,64,160,0,0, 0,64,64,224,64,64,0,0, 0,0,0,0,0,64,64,128, 0,0,0,224,0,0,0,0, 0,0,0,0,0,64,64,0, 0,32,32,64,64,128,128,0, 0,64,160,224,160,160,64,0, 0,64,192,64,64,64,224,0, 0,64,160,32,64,128,224,0, 0,224,32,64,32,160,64,0, 0,32,96,160,224,32,32,0, 0,224,128,192,32,160,64,0, 0,96,128,192,160,160,64,0, 0,224,32,32,64,64,64,0, 0,64,160,64,160,160,64,0, 0,64,160,160,96,32,192,0, 0,0,64,0,0,64,0,0, 0,0,64,0,0,64,128,0, 0,0,32,64,128,64,32,0, 0,0,224,0,224,0,0,0, 0,0,128,64,32,64,128,0, 0,64,160,32,64,0,64,0, 0,64,160,160,128,128,96,0, 0,64,160,160,224,160,160,0, 0,192,160,192,160,160,192,0, 0,64,160,128,128,160,64,0, 0,192,160,160,160,160,192,0, 0,224,128,224,128,128,224,0, 0,224,128,224,128,128,128,0, 0,64,160,128,160,160,64,0, 0,160,160,224,160,160,160,0, 0,224,64,64,64,64,224,0, 0,32,32,32,32,160,64,0, 0,160,160,192,160,160,160,0, 0,128,128,128,128,128,224,0, 0,160,224,160,160,160,160,0, 0,32,160,224,224,160,128,0, 0,64,160,160,160,160,64,0, 0,192,160,160,192,128,128,0, 0,64,160,160,160,192,96,0, 0,192,160,160,192,160,160,0, 0,64,160,64,32,160,64,0, 0,224,64,64,64,64,64,0, 0,160,160,160,160,160,224,0, 0,160,160,160,160,160,64,0, 0,160,160,160,160,224,160,0, 0,160,160,64,160,160,160,0, 0,160,160,64,64,64,64,0, 0,224,32,64,64,128,224,0, 0,96,64,64,64,64,96,0, 0,128,128,64,64,32,32,0, 0,192,64,64,64,64,192,0, 0,64,160,0,0,0,0,0, 0,0,0,0,0,0,0,240, 0,128,64,0,0,0,0,0, 0,0,192,32,96,160,96,0, 0,128,128,192,160,160,192,0, 0,96,128,128,128,96,0, 0,32,32,96,160,160,96,0, 0,0,64,160,224,128,96,0, 0,32,64,224,64,64,64,0, 0,0,96,160,160,96,32,192, 0,128,128,192,160,160,160,0, 0,64,0,192,64,64,224,0, 0,32,0,96,32,32,32,192, 0,128,128,160,192,160,160,0, 0,64,64,64,64,64,64,0, 0,0,160,224,160,160,160,0, 0,0,192,160,160,160,160,0, 0,0,64,160,160,160,64,0, 0,0,192,160,160,192,128,128, 0,0,96,160,160,96,32,32, 0,0,96,128,128,128,128,0, 0,0,96,128,64,32,192,0, 0,64,64,224,64,64,64,0, 0,0,160,160,160,160,224,0, 0,0,160,160,160,160,64,0, 0,0,160,160,160,224,160,0, 0,0,160,160,64,160,160,0, 0,0,160,160,160,96,32,192, 0,0,224,32,64,128,224,0, 32,64,64,128,64,64,32,0, 64,64,64,0,64,64,64,0, 128,64,64,32,64,64,128,0, 0,0,192,96,0,0,0,0, 0,0,0,0,0,0,0,0, } --scrolly ts=" Greetings to CC24 Visitors! Welcome to Demoscene World. Feel, Touch and Enjoy Spirit" tp=1 t_dx=0 bw0=128 --setup palette for i=0,15 do poke(0x3fc0+i*3,i*17) poke(0x3fc1+i*3,i*17) poke(0x3fc2+i*3,i*17) end poke(0x3fed,224) poke(0x3fee,224) poke(0x3fef,0) --variables c=math.pi/180 bx={} by={} bz={} r=65 ci=0 ax=0 ay=0 az=0 ma=0 --scrolly s={} for i=0,255 do s[i]=math.floor(20+20*math.sin(i*math.pi/128)) end a0=0 --rasters dr=0.7 ras={ 0x10/dr,0x20/dr,0x30/dr,0x40/dr,0x50/dr,0x60/dr,0x70/dr, 0x60/dr,0x50/dr,0x40/dr,0x30/dr,0x20/dr,0x10/dr, } ra=0 ry=0 rl1={} rl2={} --precalc XYZ for t=-90,90,10 do for p=0,360,9 do bx[ci]=math.floor(r*math.cos(t*c)*math.cos(p*c)) by[ci]=math.floor(r*math.cos(t*c)*math.sin(p*c)) bz[ci]=math.floor(r*math.sin(t*c)) ci=ci+1 end end function ro(v1,v2,an) return v1*math.cos(an*c)+v2*math.sin(an*c) end --zero memory $8000,16320 memset(0x8000,0,16320) function TIC() --copy buffer memcpy(0,0x8000,16320) --raster move-- for i=0,15,1 do ry=math.floor(0.5+64+64*math.sin((ra-i*10)*c)) for j=0,15,1 do if rl1[j+ry]==0 then rl1[j+ry]=ras[j] if i>8 then rl2[j+ry]=ras[j] rl1[j+ry]=0 end end end end ra=(ra+2)%360 -- x0=120+60*(math.cos(ma*2*c)) y0=68+34*(math.sin(ma*c)) ma=(ma+1)%360 for i=0,778 do x=bx[i] y=by[i] z=bz[i] -- x1=x*math.cos(az*c)-y*math.sin(az*c) x1=ro(x,-y,az) -- y1=y*math.cos(az*c)+x*math.sin(az*c) y1=ro(y,x,az) z1=z x=x1 y=y1 -- x1=x*math.cos(ay*c)-z*math.sin(ay*c) x1=ro(x,-z,ay) y1=y -- z1=z*math.cos(ay*c)+x*math.sin(ay*c) z1=ro(z,x,ay) x=x1 y=y1 z=z1 x1=x -- y1=y*math.cos(ax*c)+z*math.sin(ax*c) y1=ro(y,z,ax) -- z1=z*math.cos(ax*c)-y*math.sin(ax*c) z1=ro(z,-y,ax) if z1>0 then cl=14 else cl=8 end rect(x1+x0,y1+y0,1,1,cl) end ax=(ax+1)%360 ay=(ay+1)%360 az=(az+2)%360 --fade for i=0,0x3fbf do fa=peek(i) if fa&15~=0 then fa=fa-1 end if fa&240~=0 then fa=fa-16 end poke (i+0x8000,fa) --poke (i,0) end --scrolly aa=a0 tt=tp bw=bw0 for sx=0,239,1 do ty=20+s[(aa+sx)&255]+s[(a0+sx)&255] tc=string.byte(string.sub(ts,tt,tt+1)) aa=aa+1 for py=0,8,1 do if bw&fo[tc*8+py]~=0 then pix(sx,py*2+ty,15) pix(sx,py*2+ty+1,15) end--bw&fo[tc*8+py]~=0 end--for py if sx&1~=0 then bw=bw>>1 if bw==8 then bw=128 tt=tt+1 if tt>string.len(ts) then tt=1 end--tt>string.len(ts) end--if bw=8 end-- if sx&1~=0 end--for sx --shift-- bw0=bw0>>1 if bw0==8 then bw0=128 a0=(a0+3)&255 tp=tp+1 if tp>string.len(ts) then tp=1 end--tt>string.len(ts) end --end draw,next frame a0=(a0+2)&255 end -- of TIC()