-             PUUPPPUUUUPUUPPUUUUUPUUPPPPPUPPUUUUUUUUUPPPPPUPPUUUUUUUUUUPPUPPPPPPUPPUPUUUPUUPUPUUUPUPPPPPPPPUPPPUUPPPPPUUUUUPPPUPUUPPPPPUPUUUUUUPPPPUUPPPPPPUUUPPPUPUUUPPPPPPPPUUUPPUPPUUUUUUPUUUPPPUPPPUUUUUPUUUUUPUPUUUUPPUPPPPPPUUU      00 00000 00 0=33 @@ @@D@ @ @ DDD P PPUPPP PP P]UU PU]U U]UU ݻ ݪ Йݝ p 38:<=>????????????????????????   > `a`a`a``a`a`A`a`a"BB"""bB`BB"""4'@6'@7'6'L5'c4'````````````````4'CL6'cc9'c cC@0@04'@6'@7'c6'L5'C4'"""""bB`"B""4'CcDD@0@`a`a`a``a`a`A`KKsKK++s++KKsK++s++KKsKk++s++KKsK+sK skskLkKsKKK+s++kKsK++s++kKsKk++s++kKsK+sK skskKKKKKHk0ccscccscccc4) cccsccccc4) cccscccscccc4) cccsccccF 7) 1P0`0,`,400 0007:w=240 h=136 --t=0 math.randomseed(1) floor=math.floor min=math.min max=math.max pow=math.pow abs=math.abs sqrt=math.sqrt atan2=math.atan2 pi=math.pi rnd=math.random sin=math.sin cos=math.cos function len(ax,ay,bx,by) return sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by))end function mix(a,b,t) return (t*(b-a))+a end function mod(a,b) return ((a%b)+b)%b end function fract(x) return x-floor(x)end function clamp(a,b,c) return min(max(a,b),c)end function sign(x) if x>0 then return 1 elseif x<0 then return -1 else return 0 end end function sign3(x1,y1,x2,y2,x3,y3)return(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3)end function pow2(a,b) return pow(abs(a),b)*sign(a) end function pal(i,r,g,b) i=clamp(i,0,15)poke(0x3fc0+(i*3)+2,clamp(b,0,255))poke(0x3fc0+(i*3)+1,clamp(g,0,255))poke(0x3fc0+(i*3),clamp(r,0,255))end function res_pal() for i=0,47 do poke(0x3fc0+i,palette[i])end end function dot(a,b)s=0 for i=1,#a,1 do s=s+a[i]*b[i]end return s end function smoothstep(e0,e1,x)t=clamp((x-e0)/(e1-e0),0,1)return t*t*(3-2*t)end seed={a=500+rnd()*10000,fx=500+rnd()*10000,fy=500+rnd()*10000,px=rnd()-.5,py=rnd()-.5} function pseudorandom2d(x,y) return fract(sin(dot({x+seed.px,y+seed.py},{seed.fx,seed.fy}))*seed.a) end function point_in_tri(x,y,tx1,ty1,tx2,ty2,tx3,ty3) b1=sign3(x,y,tx1,ty1,tx2,ty2)<0 b2=sign3(x,y,tx2,ty2,tx3,ty3)<0 b3=sign3(x,y,tx3,ty3,tx1,ty1)<0 return ((b1==b2)and(b2==b3)) end function perlin(x,y) return mix( mix( pseudorandom2d(floor(x),floor(y)), pseudorandom2d(floor(x)+1,floor(y)), fract(x) ), mix( pseudorandom2d(floor(x),floor(y)+1), pseudorandom2d(floor(x)+1,floor(y)+1), fract(x) ), fract(y)) end function fnoise(x,y) x=x/15 y=y/15 iterations=4 sum=0 for i=0,iterations,1 do seed.a=500+((fract(sin((i+.512)*512)*725.63))*10000) sum=sum+perlin(x*(i+1),y*(i+1)) end return sum/iterations end function grey() for j=0,16,1 do pal( j, ((pow2(j/15,3))*255), ((pow2(j/15,3))*255), ((pow2(j/15,3))*255) ) end end tex_w=128 tex_h=128 function tex_fog() cls(0) for x=0,tex_w do texture[x]={} for y=0,tex_h do texture[x][y]=floor(clamp(fnoise(x,y),0,1)*16) end end end function tex_fractal(init) max_iter=20 for xo=0,2*w do tex_fract[xo]={} for yo=0,2*h do x0=((xo-w/6)/init/2-1.4) y0=(yo-h/2)/init/2 x=0 y=0 i=0 while x*x+y*y<=4 and i0.5 then for i=1,#g do ch=g:sub(i,i) x=w/2+6*(i-1) y=h/2+tt*i*cos(i) print(ch,x,y,(i+t)%15+1,true) end else for i=1,#g do ch=g:sub(i,i) x=w/2+6*(i-1) y=h/2+tt*i*cos(i) print(ch,x-1,h/2-1,15,true) print(ch,x,h/2,(i+t)%15+1,true) end end end function logo(x,y) drk[0]=0 logo_spr={[0]=0,2,4,6,8,2,2,10} for i=0,#logo_spr do spr(logo_spr[i],x+i*17,y,0,1,0,0,2,6)end for i=0,1 do print("Your friendly",x-4+i,y+28+i,15-i) print("Hackerspace",x+85+i,y+28+i,15-i) print("Saarbrooklyn",x+85+i,y+34+i,15-i) end end --------------------------------------- -- fwrk rnd=math.random parts={} fwrks={} function smthstp(d) return d*d*(3-2*d) end function addp(x,y) x=x or rnd(244) y=y or rnd(136) for i=0,10 do p={} p.x=x+rnd(-10,10) p.y=y+rnd(-10,10) p.vx=rnd(-2,2) p.vy=-2-rnd(2) p.c=11+rnd(3) if i<3 then p.t='s' p.s=6+rnd(10) p.vs=0.5 else p.t='s2' p.s=4+rnd(3) p.vs=0.1 end table.insert(parts,p) end c=rnd(2,11) for i=0,30 do p={} p.x=x+rnd(-3,3) p.y=y+rnd(-3,3) p.vx=rnd(-2,2) p.vy=rnd(-2,2) p.c=c p.t='f' p.s=1+rnd(2) p.vs=0.1 table.insert(parts,p) end for i=0,5 do p={} p.x=x+rnd(-3,3) p.y=y+rnd(-3,3) p.vx=rnd(-10,10)*0.01 p.vy=-1 p.c=(13+rnd(3))%16 p.t='a' p.s=1+rnd(1) p.vs=0.01 table.insert(parts,p) end end function updp() del={} for i=1,#parts do p=parts[i] pt=p.t if not p.a then p.a=0 end p.a=p.a+1 p.x=p.x+p.vx p.y=p.y+p.vy p.s=p.s-p.vs if p.s<=0 then table.insert(del,i) end if pt=='f' and rnd(10)>7 then pp={} pp.x=p.x-rnd(3) pp.y=p.y-rnd(3) pp.t='ft' pp.c=p.c+rnd(2)-1 pp.vx=p.vx*0.2 pp.vy=p.vy*0.2 pp.s=p.s pp.vs=p.vs table.insert(parts,pp) end end for i=#del,1,-1 do table.remove(parts,del[i]) end end function drawp() for i=1,#parts do p=parts[i] pt=p.t if pt=='s' or pt=='a' then circ(p.x,p.y,p.s,p.c) elseif pt=='s2' then circb(p.x,p.y,p.s,p.c) elseif pt=='f' or pt=='ft' then circ(p.x,p.y,p.s,p.c) end end end function fwrk(sx,sy,tx,ty) f={} f.t=0 f.tf=math.sqrt(((tx-sx)^2+(ty-sy)^2))*1 f.sx=sx f.sy=sy f.tx=tx f.ty=ty f.e=rnd()*2 table.insert(fwrks,f) end function updfwrk() del={} for i=1,#fwrks do f=fwrks[i] f.t=f.t+1 if f.t>=f.tf then f.t=f.tf addp(f.tx,f.ty) table.insert(del,i) end end for i=1,#del do table.remove(fwrks,del[i]) end end function drawfwrk() for i=1,#fwrks do f=fwrks[i] for j=1,10 do d=(f.t-1.3^j)/f.tf if d>0 then d=smthstp(d) x=f.sx+(f.tx-f.sx)*d^(1+f.e) y=f.sy+(f.ty-f.sy)*d pix(x,y,12) end end --pix(f.sx,f.sy,5) --pix(f.tx,f.ty,7) end end --------------------------------------- -- rocket rckt={{{10},{15},{10}},{{-10},{15},{10}},{{-10},{-10},{10}},{{10},{-10},{10}},{{10},{15},{-10}},{{-10},{15},{-10}},{{-10},{-10},{-10}},{{10},{-10},{-10}},{{0},{35},{0}},{{-15},{-45},{15}},{{15},{-45},{15}},{{-15},{-45},{-15}},{{15},{-45},{-15}},{{-20},{-95},{20}},{{20},{-95},{20}},{{-20},{-95},{-20}},{{20},{-95},{-20}},{{-20},{-135},{20}},{{20},{-135},{20}},{{-20},{-135},{-20}},{{20},{-135},{-20}}} lines={{1,2},{5,6},{2,3},{6,7},{3,4},{7,8},{1,4},{5,8},{1,5},{2,6},{3,7},{4,8},{1,9},{5,9},{2,9},{6,9},{10,3},{12,7},{11,4},{13,8},{10,11},{11,13},{12,13},{10,12},{10,14},{18,14},{11,15},{19,15},{12,16},{20,16},{13,17},{21,17},{14,15},{14,16},{17,15},{17,16},{18,19},{18,20},{21,19},{21,20}} --pm={{1,0,0},{0,1,0}} function dist(x1,y1,x2,y2) return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) end function drawline(inputs,from,to) line(inputs[from][1][1]+w/2,inputs[from][2][1]+h/2,inputs[to][1][1]+w/2,inputs[to][2][1]+h/2,12) end function rot3(rx,ry,rz) --tt=t/30 zrot={{cos(rz),-sin(rz),0},{sin(rz),cos(rz),0},{0,0,1}} yrot={{cos(ry),0,sin(ry)},{0,1,0},{-sin(ry), 0, cos(ry)}} xrot = {{1,0,0},{0,cos(rx),-sin(rx)},{0,sin(rx),cos(rx)}} return mm(mm(mm(pm, xrot),yrot),zrot) end function rocket(t) --spinning cube local pro={} local scale=0.7 local shift_x=35 local shift_y=0 local r=2 for i=1,#rckt do p=rckt[i] pr=mm(rot3(10,t/30,0),p) pr[2][1]=pr[2][1]-shift_x pr[1][1]=pr[1][1]+shift_y pr[2][1]=pr[2][1]*scale pr[1][1]=pr[1][1]*scale pro[i]=pr end local cx=pro[9][1][1]+w/2 local cy=pro[9][2][1]+h/2 for i=0,24,4 do circb(cx-3,cy,(t/2+i)%24,9) circb(cx+3,cy,(t/2+i)%24,9) end for i=1,#rckt do circ(pro[i][1][1]+w/2,pro[i][2][1]+h/2,r,12) end for i=1,#lines do l=lines[i] drawline(pro,l[1],l[2]) end if floor(t)%40<10 then circ(pro[9][1][1]+w/2,pro[9][2][1]+h/2,r,2) end end --------------------------------------- --- computahs computahs_run=false function BDR(r) if computahs_run then rnbw={ {255,239,0}, {255,100,0}, {255,23,0}, {0,192,17}, {48,65,255}, {143,15,207}, } i=math.floor(r/24)%#rnbw+1 poke(0x3fc0+3*5,rnbw[i][1]) poke(0x3fc0+3*5+1,rnbw[i][2]) poke(0x3fc0+3*5+2,rnbw[i][3]) end end function computahs() computahs_run=true t=time()/300 for x=0,10 do for y=0,6 do n=(x+y*10)%6 if math.floor(t%5) ~= n then spr(256+n*2,x*24,y*24,0,1,0,0,2,2) end end end end -------------------------------------- -- xor jdx=0 jdy=0 jcnt= 0 function xor() for x=0,239 do for y=0,135 do if (((x+jdx)//1)~((y+jdy)//1))%5==0 then c=jcnt*0.01 pix(x,y,2+((math.sin(c+1.5)*0.05*y+math.cos(c+0.75)*0.05*x)%14)) end end end jdx=jdx+math.sin(jt()+1.5) jdy=jdy+math.cos(jt()+2) jcnt=jcnt+1 end function jt() return time()*0.001 end --------------------------------------- function hacksaarpixel() t=time()/600 x=w/2-32*3/2+sin(t)*5 y=h/2-16*3/2+cos(t)*7 rect(x-3,y-3,32*3+6,16*3+6,13) spr(288,x,y,13,3,0,0,2,2) spr(290,x+48,y,13,3,0,0,2,2) end --------------------------------------- -- fractal function sign3(x1,y1,x2,y2,x3,y3) return (x1-x3)*(y2-y3)-(x2-x3)*(y1-y3) end function point_in_tri(x,y,tx1,ty1,tx2,ty2,tx3,ty3) b1=sign3(x,y,tx1,ty1,tx2,ty2)<0 b2=sign3(x,y,tx2,ty2,tx3,ty3)<0 b3=sign3(x,y,tx3,ty3,tx1,ty1)<0 return ((b1==b2)and(b2==b3)) end function mandelfract(tt) max_iter=20 for yo=0,135,2 do for xo=0,239,2 do x0=((xo-w/6)/tt/2-1.4) y0=(yo-h/2)/tt/2 x=0 y=0 i=0 while x*x+y*y<=4 and i100 then hacksaarpixel() end elseif tt < 450 then cls(0) xor() elseif tt < 1150 then --alt:1710neu:1190diff:520 computahs() sc(tt,450) elseif tt < 1150+#names*100 then res_pal() computahs_run=false cube(tt) index_r=(tt-1150)/100+1 gr(index_r,tt,1150) for i=1,#stars do pix(stars[i].x,stars[i].y,13) end water(88) elseif tt<2480 then cls() grey() tunnel(tt,tt>1490,1150+#names*100) water(136) elseif tt<2800 then res_pal() rocket(tt) elseif tt<3450 then cls() conn_dots(tt) elseif tt<4150 then cls(0) logo(50,20) drawp() updp() if #fwrks < 2 then hx=rnd()*w hy=rnd()*h/2 fwrk(w/2,80,hx,hy) end updfwrk() drawfwrk() for i=1,11 do drk[i]=14 end water(80) elseif tt<4180 then music(-1) else exit() end --print(tt,0,0) end