-- bad saturn
-- alexthescott
-- 22/6/29
-- ty to @aebrer for this maths
rng = stat(6)
if rng == "" then
rng=tostr(rnd(-1)\1)..","..tostr(1+rnd(3)\1)..","..tostr(rnd(16)\1)..","
end
rng_vals = {}
c_num = ""
for i=1,#rng do
if sub(rng,i,i) != "," then
c_num = c_num..sub(rng,i,i)
else
add(rng_vals,tonum(c_num))
c_num = ""
end
end
srand(rng_vals[1])
function forward()
v=c[1]
del(c,v)
c[#c+1]=v
pal(c,1)
end
p1={7,6,135,10,138,11,139,3,131,12,140,1,129,130,128,0}
p2={7,135,10,9,15,143,142,137,14,136,8,2,130,133,128,0}
p3={7,15,143,142,14,8,136,137,9,10,135,138,11,139,12,140}
p={p1,p2,p3}
c=p[rng_vals[2]]
pal(c,1)
for i=1,rnd(rng_vals[3]) do
forward()
end
t=rnd()
r=rnd()
p=rnd()
c,s=sin,cos
cls()
::♥::
if time()<2 then
print("bad saturn",46,59)
print("seed:"..rng_vals[1],46,65)
else
party=rnd()<(1+sin(0.5-t))/2
for i=0,1000 do
x=rnd(128)
y=rnd(128)
-- radial burn
if not party then
a=atan2((64-x)/128,(64-y)/128)
x2=x-cos(a)
y2=y-sin(a)
pset(x2,y2,max(pget(x,y)-1,0))
-- og burn
else
pset(x,y,max(pget(x,y)-1,0))
end
end
for o=1,6 do
j=o*13
for i=1,128 do
k=o/12
a=(i-1)/128
b=i/128
x,y=64+s(r+k)*c(a+t)*j,64+s(a)*j
u,v=64-c(p+k)*c(b)*j,64+s(b)*j
line(x,y,u,v,10-o)
end
end
t+=0.001
r+=0.0002
r+=0.0006
if rnd(0.7)<(1+sin(t/2))/2 then
if t*100%8<=4 then
w=3+rnd(10)
h=10+rnd(86)
else
w=10+rnd(86)
h=3+rnd(10)
end
x=rnd(128-w)
y=rnd(128-h)
xo=rnd(4)*(1-2*(rnd(2)\1))
yo=rnd(4)*(1-2*(rnd(2)\1))
sspr(x,y,w,h,x+xo,y+yo,w,h)
end
poke(0x5f55,0x6000,8192)
end
flip()
goto ♥