Ever noticed that when you load an old cart, sometimes it won't load because of API changes? You can see this for yourself if you try loading the popular cart "rougeris". After rougeris's release, 'do' was changed to not work with 'if' and vice versa. On desktop, fixing this is as easy as replacing 'do' with 'then', but on mobile or bbs, not as easy.
Now for the meat of this argument:
Why not make it so that old carts use an older version if pico-8? This doesn't need to be updated for every old cart, but maybe, when you submit a bbs cart from when/if this is changed to an API freeze, the bbs logs what version your cart uses, and when loaded, grabs a specific version of p8, loads it, then runs the cart in it, that would eliminate the possibility of future obsolete carts!
There's really no excuse not to do it, or not to even consider it. Every version of p8 (minus the mysterious "rc") is available to p8 owners on the download page under older versions.



I've found some interesting things tucked away in picotron's code, and I'd like to share them!
First off, you can edit and view any file by typing edit name.ext
, where name is the file and ext is the extension.
There are loads of gui features to mess with and ruin, and my favorite is notify_user(<text>)
. When called, it displays "text" in a little notification bar! Even works with vars! Another honorable mention is the gui text editor. It's buggy sometimes, but you can embed a text editor or code editor anywhere you want in your cart!
As for non-gui things, there are many. You can read keyboard presses (get_key_pressed(key)), actively playing sounds, running processes, open files, OPEN files, delete files, change and list directories, all from within your carts! I'm sure there's a way to make a program run in the background, so this could make for custom themes, keyboard remapping, BG music and sound effects, freaking integration with your, YOUR operating system, the list goes on.
The Pixel Toy (TpxT)
2nd picotron game ever made!?
To play, copy and paste code below (click "show") into picotron playground (or actual picotron when it comes out!)
If it says "clipboard can not be read", then don't use base Firefox. if you aren't using base Firefox, then give picotron clipboard permissions in site settings.

vvv Code vvv
[hidden]
-- ThePixelToy -- by antibrain --[[ todo: maybe some sort of GOL type sounds/graphics/prebuilt maps when ptron 0.1 comes out scene loader from clipboard to make something like TPT's save browser more pixel types more reactions make neut/prot act like they do in TPT instead of acting like GAS/FIRE saving/loading saves to hard disc. maybe using printh as file? cartdata? chemestry? air pressure heat simulate each pixel individualy so we can track its heat, speed, mass, weight, etc. virus because virus in TPT is very satisfying make fill/line tool not terrible deco layers ability to change sim speed full keyboard support? ]]-- j=0 dc=5 size=0 sim=1 function _update() --update loop mx,my,mb=get_mouse() --get mouse data simulatepixels() --simulate pixels controls() --allow game to be controlled end function _draw() --draw loop mousedraw() --draw with mouse ui() --draw ui end function simulatepixels() if sim==1 then for i=1,4000 do --4000 times per frame (30fps?) local x=rnd(480) --get random x and local y=rnd(270) --y values and local c=pget(x,y) --get the color of that pixel. if c==8 then --is red if pget(x,y+1)!=5 and pget(x,y+1)!=7 then --check all bordering pixels and if any of them arent a wall pset(x,y+1,c) --then set it to red end if pget(x,y-1)!=5 and pget(x,y-1)!=7 then --repeat for all other bordering pixels pset(x,y-1,c) end if pget(x+1,y)!=5 and pget(x+1,y)!=7 then pset(x+1,y,c) end if pget(x-1,y)!=5 and pget(x-1,y)!=7 then pset(x-1,y,c) end end if c==15 then --sand if pget(x,y+1)==0 then --sand pset(x,y+1,c) --f a l l pset(x,y,0) end if pget(x,y+1)==12 then pset(x,y+1,c) pset(x,y,12) end if pget(x,y+1)==1 then pset(x,y+1,c) pset(x,y,1) end end if c==2 or c==10 or c==11 then --gas (fire?)/neut/prot (i couldnt get neut/prot to act normal so i gave up :p ) local j=flr(rnd(4)) --pick random number local q=flr(rnd(2)) if q==1 and c==2 then --decay randoly pset(x,y,0) end if q!=4 and j==0 and pget(x+1,y)==0 then --go in random direction pset(x,y,0) pset(x+1,y,c) end if q!=4 and j==1 and pget(x-1,y)==0 then pset(x,y,0) pset(x-1,y,c) end if q!=4 and j==2 and pget(x,y+1)==0 then pset(x,y,0) pset(x,y+1,c) end if q!=4 and j==3 and pget(x,y-1)==0 then pset(x,y,0) pset(x,y-1,c) end if c==11 then if pget(x+1,y)==1 and pget(x+1,y)==0 then pset(x+1,y,11) end if pget(x-1,y)==1 and pget(x-1,y)==0 then pset(x-1,y,11) end if pget(x,y+1)==1 and pget(x,y+1)==0 then pset(x,y+1,11) end if pget(x,y-1)==1 and pget(x,y-1)==0 then pset(x,y-1,11) end end if c==2 and pget(x,y+1)==12 or pget(x,y-1)==12 or pget(x-1,y)==12 or pget(x+1,y)==12 then pset(x,y,0) end end if c==12 or c==1 or c==9 then --warder/deut/lava physics if pget(x,y+1)==0 then --let it fall down pset(x,y,0) pset(x,y+1,c) elseif pget(x-1,y)==0 then --if there's an open space and it isnt in free-fall, pset(x-1,y,c) --allow it to drip left and pset(x,y,0) elseif pget(x+1,y)==0 then pset(x+1,y,c) --right as well pset(x,y,0) end if c==1 and pget(x,y+1)==11 or pget(x,y-1)==11 or pget(x-1,y)==11 or pget(x+1,y)==11 then pset(x,y,11) end end if c==16 then --remove fill border pset(x,y,0) end if c==3 or c==4 then --wood/plant/foliage if pget(x,y+1)==2 or pget(x,y+1)==9 then pset(x,y,2) end if pget(x,y-1)==2 or pget(x,y-1)==9 then pset(x,y,2) end if pget(x+1,y)==2 or pget(x+1,y)==9 then pset(x,y,2) end if pget(x-1,y)==2 or pget(x-1,y)==9 then pset(x,y,2) end if c==3 then if pget(x,y+1)==12 then pset(x,y+1,3) end if pget(x,y-1)==12 then pset(x,y-1,3) end if pget(x+1,y)==12 then pset(x+1,y,3) end if pget(x-1,y)==12 then pset(x-1,y,3) end end end if c==14 then if pget(x,y+1)==0 then pset(x,y,0) pset(x,y+1,14) end if pget(x,y+1)>0 and pget(x,y+1)!=5 and pget(x,y+1)!=14 and pget(x,y+1)!=29 then circfill(x-4,y-4,16,2) end end if c==6 then if pget(x,y+1)==10 or pget(x,y+1)==9 then pset(x,y,9) end if pget(x,y-1)==10 or pget(x,y-1)==9 then pset(x,y,9) end if pget(x+1,y)==10 or pget(x+1,y)==9 then pset(x,y,9) end if pget(x-1,y)==10 or pget(x-1,y)==9 then pset(x,y,9) end end if c==7 then if pget(x,y+1)==0 then pset(x,y,0) pset(x,y+1,7) end if pget(x,y+1)==12 then pset(x,y+1,7) end if pget(x,y-1)==12 then pset(x,y-1,7) end if pget(x+1,y)==12 then pset(x+1,y,7) end if pget(x-1,y)==12 then pset(x-1,y,7) end if pget(x,y+1)==2 or pget(x,y+1)==9 then pset(x,y,12) end if pget(x,y-1)==2 or pget(x,y-1)==9 then pset(x,y,12) end if pget(x+1,y)==2 or pget(x+1,y)==9 then pset(x,y,12) end if pget(x-1,y)==2 or pget(x-1,y)==9 then pset(x,y,12) end end if c==9 then local q if pget(x+1,y)==6 and q==0 then pset(x+1,y,c) end if pget(x-1,y)==6 and q==0 then pset(x-1,y,c) end if pget(x,y+1)==6 and q==0 then pset(x,y+1,c) end if pget(x,y-1)==6 and q==0 then pset(x,y-1,c) end if pget(x+1,y)==12 or pget(x-1,y)==12 or pget(x,y+1)==12 or pget(x,y-1)==12 then pset(x,y,6) q=1 else q=0 end end end end end function mousedraw() if mb==1 and not(btn(5)) then --if left click then circfill(mx,my,size,dc) --draw red/wall at mouse pos elseif mb==2 then --if right click (or ctrl click) circfill(mx,my,size,0) --erase (draw black at mouse pos) end if btn(5) then --check if x is pressed if mb==1 and j==0 then --only do this once per fill! ox=mx --set old mx to mc oy=my --same for old my j=1 --j end if mb==1 then-- if mousedown omb=1 --set old mouse click to 1 rect(ox,oy,mx,my,16) --fill outline elseif omb==1 then --if its one then rectfill(ox,oy,mx,my,dc) --fill omb=0 --set old mouse button to 0 (because mouse was released) ox=nil --nil ox and oy oy=nil j=0 --j end else ox=nil --if x isnt pressed, nil x and y, then j oy=nil j=0 end end function ui() --ui bar rectfill(0,0,480,8,29) --bar circfill(4,4,2,dc) --current color rect(0,0,8,8,5) --outline on current color print("size:"..flr(size),50,1,0)--brush size print(scolor,12,1,0) print("Cpu: "..flr(stat(1)*10),100,1,0) if sim==1 then print("running",445,1,0) else print("paused!",445,1,0) end if dc==0 then scolor="erase"end if dc==1 then scolor="deut"end if dc==2 then scolor="fire"end if dc==3 then scolor="plant"end if dc==4 then scolor="wood"end if dc==5 then scolor="wall"end if dc==6 then scolor="stone"end if dc==7 then scolor="snow"end if dc==8 then scolor="eater"end if dc==9 then scolor="lava"end if dc==10 then scolor="proton"end if dc==11 then scolor="neutron"end if dc==12 then scolor="water"end if dc==13 then scolor="paint"end if dc==14 then scolor="bomb"end if dc==15 then scolor="sand"end end function controls() --controls if btn(1) then dc+=0.1 end --change brush color if btn(0) then dc-=0.1 end if dc<0 then dc=0 end --dont let color be too much or little or else if dc>15 then dc=15 end --the screen dies :( if btn(2) then size+=0.1 end --change brush size if btn(3) then size-=0.1 end if size<0 then size=0 end--dont let it go negative if btn(4)==true then sim=0 else sim=1 end --pause when z is held if btn(1)==false and btn(0)==false then dc=flr(dc) end end |


1K Demo Collection By @AntiBrain (Me)
This is a collection of 5 democarts that are all under 1KB in total. you can find specific sizes and downloads at the links below or play them at the bottom of this post.
I recommend downloading the executables at my itch page below, because some of them can slow down the web player.
!!EPILEPSY WARNING!!
Many of these carts, especially GradGen and Barf, contain quickly flashing lights and colors. in barfs case, to make as much noise as possible, and in GradGen's case, to create a scrolling effect. if that sounds like it could hurt you, stay away from GradGen and Barf, and show discretion playing any carts here or in any other blog posts. your health always comes first.
Jam:
https://itch.io/jam/pico-1k-2023
Demo Collection Submission Page:
https://itch.io/jam/pico-1k-2023/rate/2262904
Itch.io page w/ downloads:
https://antibrain.itch.io/democollection1k
Individual carts:
GradGen:
[hidden]
I was looking at the Pico-8 changelog and saw that themes were made easier to change. this got me thinking, how hard would it be to make a custom theme, or even accompanying thememaker.exe program? this seemed really cool to me, so i threw myself headfirst into pico-8's files. here are my findings/questions i have.
Firstly, in "pico8.dat" i found that it not only contains data code which i have no idea what it contains, but it also contains a lot of pico-8 code! after a bit of digging, i found that in this order, this pico-8 code is:
1: the pico-8 boot sfx
2:pico-8 democarts
3: i have no clue
I also found around 5 copies of the same lines of terminal syntax (eg 'ls' 'folder' 'load' etc.), which is interesting. i was mainly looking for the color codes that tell pico-8 what colors certain UI elements are, but i could not find them. they had to be in the mess of .dat stuff.
After awhile, i found that pico8.dat is byte-checked, meaning that pico-8 wont boot if pico8.dat has been altered at all. makes sense, it would significantly impact monetary gain if everyone could just write their own pico-8.

Anyone know why the site was down for the past 7ish hours? maintenance? did we get hacked?
EDIT: DOWN AGAIN but it seems were back?
Ive also noticed its impossible to create posts/comments. strange. at least edits work?
@zep do you know whats going on? are we getting ddosed?
it also seems that times are incorrect. i am editing this at 10:09 GMT-7 , and the edit date is wrong.
edit 2: seems posts are back? someone posted abt their movement system, so i guess posts are back. comments still dont work. very odd.
edit 3: i guess posts are gone again. maybe its a me issue. someone try posting.
also ive noticed that if you try to post and cant, changing "pid=" in the search bar to "pid= any number" will, if there is a corresponding post, let you view that post as if you were editing posts. even drafts.
edit 4: ive still been getting update notifications from the automated lexaloffle thing, but the links are wrong. maybe an api is down or something broke somewhere.


Mangle08 (!!!SEIZURE WARNING!!!)
What this cart does is poke as many values as possible to mangle pico-8 into an almost unusable state. it will mess with colors, drawing, the map(?), and sounds.
This cart is best experienced when downloaded and ran on desktop pico-8, or at https://www.pico-8-edu.com/ . just type "load #mangle" to load it. after running it for a bit try messing around with the sprite editor, sounds, map, or anything else.


GROW
Simple Democart i made.
I came across this idea when working on my other game (info on my twitter :) ), and decided to horribly code unglue it from that game and edit it into a little pico-8 democart! I tried to keep it similar to p8's builtin demos, but i couldn't help myself from adding little sounds and stuff. (Also if you want it @zep , its yours :) ) feel free to yoink code from this cart if you feel like it! i commented out everything that needs it so that even beginners can make sense of whats going on under the floorboards. er- what makes the-- never mind. i also left some map spaces open if you want to make your own levels!
Thank you all from the pico-8 community for not yelling about my awful code! i really appreciate all the support from my other projects and im glad im apart of this little community.
PICOTEMPLATE
Nothing special, nothing crazy. just a simple template cart for making games.
How to use:
click the little cartridge icon in the corner of the cart and right click the image to download. then just load it and start making your own cart! don't forget to save it as a new filename after you make something so that it doesn't save to the template cart.
KAIZOLESTE: A NEW MOUNTAIN
A new mountain has been discovered where the impossible becomes possible and chaos becomes order and order becomes chaos. Random peaks, Deep caves, and penguins galore, Madeline faces her hardest challenge yet in Kaizoleste.
IMPORTANT:
This mod has SAAAAAVE DAAATAAA!!!! all of your progress is saved no matter where you play, even online! all your data is saved including: your current level; your total time played; your death count and; your berry count! if you click "delete save" in the pause menu, all of your savedata is gone. if you accidently click it, no worries! just beat your current level and you wont lose any progress.
Also credits to evercore team for evercore, because i used it as a base for this mod.
.png)









READ THIS FIRST
Click the cartridge icon at the bottom of the cart and right click on the image to save it, then just plop it in your /carts/
folder. To use it in desktop pico-8, just put it in your carts folder. For use in pico-8-edu, go to immediate mode (the terminal) and type load #picobrowser
, then type save [NAME].p8
where name is whatever you want. then, in pico-8 or edu, just type load name.p8
, again where [name] is what you named the file.
more info:
This cart was made using @dw817 's "free roaming directory" cart. Their version, however could only see in /carts/ and couldn't load anything.





Text game!!
read this for context:
Update 2.0!!!
changelog:
added more blocks and geometry to play around with.
made the air lifty thing easier to see.
added some spikes
made it harder to fall out of the world
fixed collision being terrible
revised code
Bug fixes:
fixed left/right collision for all objects
fixed jumping on spikes
fixed momentum being terrible
fixed top collison sometimes eating jump inputs
fixed top collision sometimes not existing
fixed visual bug where player would be in the ground
made blocks and players and other objects easier to see/differentiate against other objects
Info/credits:
this is a pico 8 "game" made without the sprite sheet or sprite, draw, fill, map, or any graphical tool outside of just the basic print()
command! every asset in the game is a built-in text character! all code was made by me, which explains how messy it is, and was written in about 1 week.
this is really meant as a demo/proof of concept thing and more for learning purposes. since everything and more can be drawn as a simple text char, and most data is made up of basic math, this cart has a really low file size, and can be used to save space for sprites, tokens, map data... really anything that can be represented by a simple text character!
if you need any more info, or want to know how to implement these concepts into your own projects, just click "view code", or download the cart and boot it. dont worry if you are new to pico-8, because the whole program is heavily commented out, with even an entire tab dedicated to explanations/credits!
i hope everyone finds this cart as cool and interesting as i did! have fun creating!
...Oh yeah! almost forgot! controls are arrow keys to move and X to jump! have fun!!
vv OLD VERSION vv
Celeste without gravity!
this was really fun to make! i hope you enjoy!
INSTRUCTIONS
Celeste mountain seems to have flown off into space somehow! get ready for the weird gravity and the mood-like surroundings to get to the top! sounds and music have slowed down and everything is all moon-like and gray!
IMPORTANT
Original game make by Matt Thorson and Noel Berry. make sure to check out the og game too!
If you get stuck, you can retry your current level in the pause menu. (Enter/P to open)
Make sure to grab balloons to get another dash when your stuck!
Have fun!





