start = true 
width = 127 
height = 127  
function neighbours(x1,y1)
    local value =0
    for xx = x1-1,x1+1 do         
        for yy= y1-1,y1+1 do                       
            local current = pget(xx,yy)                  
            if ( current == 5 or current == 6) then                  
                if (xx ~= x1 or yy ~= y1) then
                    value = value +1
                end             
            end         
        end     
    end     
    return value 
end  
function nextcell(x,y)
    count = neighbours(x,y)     
    col = pget(x,y)     
    if (col == 0 and count == 3) then  
        -- cell is born as white
        pset(x,y,7)     
    end      
    if (col == 5) then         
        if (count == 2 or count == 3) then     
            -- cell lives on as a light grey
            pset(x,y, 6)         
        end     
    end 
end  
function _draw()      
    if (start) then cls(0)                   
        for x=0,width/2 do             
            for y=0,height/2 do
                if (flr(rnd(3))== 0) then
                    -- 1 in 3 cells should be alive
                    pset(x+width/4,y+width/4,7)
                else
                    pset(x+width/4,y+width/4,0)
                end             
            end         
        end         
        start = false     
    else           
        for x=0,width do 
            for y = 0,height do                 
                if(pget(x,y) == 7) then
                    -- age a cell on the screen from dark grey to grey
                    pset(x,y, 5)                 
                end             
            end         
        end          
        for x=0,width do             
            for y=0,height do                 
                nextcell(x,y)             
            end         
        end           
        for x=0,width do             
            for y=0,height do                 
                col = pget(x,y)                 
                if (col == 6) then   
                    -- age cell from light grey to white
                    pset(x,y,7)                 
                end                                     
                if (col==5) then   
                    -- dark grey cells dies
                    pset(x,y,0)                 
                end             
            end         
        end     
    end  
end

What?
Zero Mem Life was a thought exercise in making a game of life simulator in Pico8 without using memory other than the screen to store cell state. It's otherwise unoptimised and written in a verbose style.  
Why?
I'm using it to understand how to upload projects to Itch.  

Leave a comment

Log in with itch.io to leave a comment.