Pico8 demos

pico8, lua

Small demos playing around with Pico8

Introduction

Pico-8 is a fantasy console that let code, create sprites, sfx and music within the same application.

It has some limitations that remind of old school devices and demoscene restrictions which makes developing on it extra fun. For example, the display is 128x128 16 colors, the music has 4 channels, the sprites are 8x8.

Here you can see some of the experiments I have done using it:

Doom fire

This is based on the article by Fabien Sanglard on how the Doom's fire effect was done.

Pico8 Doom fire

The code was optimized to fit in a tweet:

poke(0x5F2C,3)f={}p={0,1,2,4,8,9,10,7}w=64
d=w*w
function s(t)e=f[t]i=flr(rnd(3))f[t-i+1-w]=e-band(i,1)end
for i=0,d do f[i]=i>d-w and 8 or 0 end
function _draw()
for x=0,w do for y=0,w-1 do s(y*w+x) end end
for x=0,d do pset(x%w,flr(x/w),p[f[x]]) end
end

You can give it a try at the pico-8 bbs.

Lines and dots

This one if based on my own implementation of this as you can see in the banner and background of this website.

Pico8 dots and lines

I also optimized its size fit in a tweet as the previous one:

p={}n=64w=128r=rnd
for i=0,n do p[i]={x=r(w),y=r(w),a=r(2)-1,b=r(2)-1}end
function _draw()cls()for i=0,n do
a=p[i]u=a.x v=a.y a.x=(u+a.a)%w a.y=(v+a.b)%w
for j=i,n do
b=p[j]x=u-b.x y=v-b.y d=sqrt(x*x+y*y)if(d<20)then line(u,v,b.x,b.y,d<13 and 12or 1)end end
circ(u,v,1,7)end
end

pico-8 bbs.

Circles and connections

This is another simple effect that you can see in the banner and background of this page. I also used it as an example for ECSY.

Pico8 Circles intersections

n=10w=128r=rnd
function p() return (r(w)+(r(2)-1)*t()*10)%w end
function _draw()
cls()
for i=0,n do
srand(i)
l1=r(20)+10
x=p()
y=p()
x=x%w
y=y%w
circ(x,y,l1,1)
for j=i,n do
srand(j)
l2=r(20)+10
u=p()
v=p()
dx=u-x
dy=v-y
d = sqrt(dy*dy+dx*dx)
if d<(l1+l2)and d>abs(l1-l2)then
a=(l1*l1-l2*l2+d*d)/(d*2)
x2=x+dx*a/d
y2=y+dy*a/d
h=sqrt(l1*l1-a*a)
rx=-dy*h/d
ry=dx*h/d
x0=x2+rx
x1=x2-rx
y0=y2+ry
y1=y2-ry
circ(x0,y0,2,7)
circ(x1,y1,2,7)
line(x0,y0,x1,y1,12)
end
end
end
end

Pico Fighter

As a huge fan of Street Fighter 2x I started playing around creating a simple base with input to jump, punches and kicks and input buffering to implement special movements like hadokens, shoryukens and tatsumakis.

This is only the early steps, but I really would like to grab some time in the future and expand it and make a playable game.

Pico8 Circles intersections