\('v')/
I make things.
Also, I'm like, poly-lingual. But only one of them isn't a coding language.
Anyway, picotron and pico 8 are pretty cool.
Oh, and before the terms of use update, I used AI to help me find what my code was doing wrong, or sometimes to write code for 3D stuff, so don't use any of my code from before June 22, 2026. But I'll have you know that I wasn't creating complete AI slop. Any posts beyond that date are AI free.
Wallpaper with a bunch of stats and cool airplanes.
To install, copy and run these commands, one line at a time, into the Picotron terminal:
cp -f bbs://runway_wallpaper.p64 /appdata/system/wallpapers/runway_wallpaper.p64 config wallpaper /appdata/system/wallpapers/runway_wallpaper.p64 ?"\^t\^w\f7\^oeffThank you for installing Runway Wallpaper!\n\^-t\^-wYou can change the wallpaper through Picotron's settings at\n/system/apps/settings.p64" |
I suppose this is probably a question for @zep
Is there a way to fetch the BBCode (asterisks, hashtags, etc. that format a BBS post) from a post? I'm planning on making a cart for picotron that is able to read and display things from the BBS. On that note, is there also a way to find out what the most recently posted posts are by using fetches?
That's it, thanks!

Easily remove processes!
Ever opened a cart from the BBS only to realize you can't close it without using the task manager???
This new widget allows you to easily remove that process with the click of a mouse!
And, you can easily move this widget around your tooltray by dragging that little bar on top!
Credits:
- Art and code created by Daniel Jorgensen
- Transparent interactive pixels and drag code by Picotron's bundled clock.p64
- Kll code (but not deciding what to kll) by Picotron's bundled kll.lua
- Bar design based on Fuzzy Detective Agency by @xietanu
(Unsandboxing required for use. Excludes its own process. Excludes root, wm, and pm. Terms and conditions apply. Anyone know if I'm allowed to type kll?)
I'm unsure if this is a bug with my code, or with picotron's. Anyway, the text editor in this code doesn't seem to be working, and the gui elements don't seem to be resizing. Any help would be appreciated.
--update the friend list to contain the user's data, such as icon or username
function ufl()
for i=#friends,1,-1 do
friends[i]=fetch("bbs://user/"..friends[i].user_id)
end
store(fl_path,friends)
end
function _init()
window{
width=200,
height=100,
title="♥ Podnet Friends ♥"
}
fl_path="/appdata/bbs/"..stat(101).."/friends.pod"
friends=fetch(fl_path) or {}
ufl()
width=200
height=100
gui=create_gui{
x=0,
y=0,
width=200,
height=100,
update=function(self,msg)
self.width=width
self.height=height
return true
end
}
add_friend=gui:attach{
x=0,
y=0,
width=100,
height=15,
cursor="pointer",
draw=function(self,msg)
if msg.has_pointer then
rectfill(0,0,self.width,self.height,25)
else
rectfill(0,0,self.width,self.height,9)
end
spr(1,4,4)
print("Add Friend",15,3,7)
end
}
te=gui:attach_text_editor{
x=80,
y=0,
width=100,
height=15,
max_lines=1,
margin_top=4,
margin_left=4,
text_callback=function(self,msg)
if (tonum(msg)) return true
end
--allows only numbers. credit to the user manual
}
friend_holder=gui:attach{
x=0,
y=15,
height=85,
width=200,
update=function(self,msg)
self.width=width
self.height=height-15
end
}
friend_holder:attach_scrollbars{
scroll_spd=1,
autohide=false
}
friend_holder:attach{
x=0,
y=0,
width=200,
height=0,
update=function(self,msg)
self.width=width
self.height=#friends*18
end,
draw=function(self,msg)
rectfill(0,0,self.width,self.height,18)
for i=1,#friends do
rectfill(0,(i-1)*18,self.width,i*18,13)
end
end
}
end
function _update()
local disp=get_display()
width=disp:width()
height=disp:height()
gui:update_all()
--gui IS updating
--I think
--something different happens if I comment it out
end
function _draw()
cls(1)
gui:draw_all()
end |

A cool little background, starring linear, quadratic, and cos equations!
It also shows some of your LXO stats.
I almost forgot, I used @Saturn91 's podnet stat code to help with measuring the percentage of how much your podnet holds.

To anyone out there:
Is there any way to fetch the username of someone based on their ID in picotron? I've figured out a way to fetch the icon, because the podnet folder of a user has their icon as the icon of the folder, but there's nothing else in the folder's metadata. And I want to be able to fetch it without needing to use scoresub tactics.
Also,
what are the limitations of using fetch and store on the podnet with code? An AI told me that you couldn't use store on podnets, but using store("podnet://80974/test.txt","hamburger") seemed to totally work in the terminal.

A TXT viewer made by me, with the official picotron manual as the file.
About the viewer:
This viewer includes a line highlighter, or whatever it's called, as well as line numbers, a text finder, and smooth scrolling. By default, it uses the picotron manual as the source file, but if you go around messing with the code, you can change the source file easier. But it was made specifically for the user manual. to use the find tool, simply type something out and press enter. Results will be highlighted in yellow, and you can navigate the results via the up/down arrow keys. You can also type in a line number to jump to it.
About the manual:
It was written by Joseph White, and is the official manual of picotron. I hope it's okay that I copied it into this p64.
The first few lines of the manual:
Picotron v0.3.0b https://www.picotron.net (c) Copyright 2022~26 Lexaloffle Games LLP Author: Joseph White // [email protected] Picotron is made with: SDL2 http://www.libsdl.org Lua 5.4 http://www.lua.org // see license.txt lz4 by Yann Collet https://www.lz4.org // see license.txt z8lua by Sam Hocevar https://github.com/samhocevar/z8lua GIFLIB http://giflib.sourceforge.net/ libb64 by Chris Venter Latest version of this manual: https://www.lexaloffle.com/picotron.php?page=resources |
DISCLAIMER
The code in this post may contain some AI code, which is now not allowed by the Terms of Use anymore (this post was made before the TOU update).
Here's a short code snippet that allows you to fetch the current user's icon/avatar gfx via podnet (in picotron). returns the gfx blob, or nil if it couldn't be fetched or the user is not signed in. You'll notice that if you go to podnet:// in filenav, the folders have the icons of the corresponding user, which is the basis of this function.
function get_icon()
if stat(64) then
local meta=fetch_metadata("podnet://"..(stat(64)))
if meta and meta.icon then
return meta.icon
end
end
end |

Welcome to ravin', a joust-like by your one and only Daniel Jorgensen (or goose2point0)! Your goal? have fun with your friends! Or, you could try hitting your opponents on their heads and hitting them while they're in an egg! Just use the arrows to move, O to jump, and X to bird. It's still a WIP though, so the bots don't do anything yet. And if you have any suggestions, let me know! Enjoy!
DISCLAIMER
The code in this post may contain some AI code, which is now not allowed by the Terms of Use anymore (this post was made before the TOU update).
Prev. versions:

While working on a game I was working on, I figured I should post a code snippet on how I made this cool wavy Text effect. feel free to use it and change it however you like. (this was designed for wide text. to use it for normal text, change x4 to x2 on the local tx line)
local k="victory!"
pal(12,1)
for i=1,#k do
local tx=64+(i*8)-((1+#k)*4)
local ty=20+(cos((time()+(i*0.1))*0.6)*5)
print("\^w\^t"..k[i],tx,ty+1,1)
print("\^w\^t"..k[i],tx,ty,
8+flr(((time()+(i*0.1))*2)%8))
end
pal() |
So, for some reason, if you try to divide a number by 0, picotron just completely freezes. That's it. Anyway, here's the code I was making when I encountered this bug.
function sprDim(s,getw)
local spr_data = s
if type(s) == "number" then
spr_data = get_spr(s)
end
if spr_data then
if(getw)then
return spr_data:width()
else
return spr_data:height()
end
end
return 0, 0
end
function tquad(src,x1,y1,x2,y2,x3,y3,x4,y4)
local dist12 = sqrt( ((x2-x1) ^ 2) + ((y2-y1) ^ 2) )
local dist34 = sqrt( ((x4-x3) ^ 2) + ((y4-y3) ^ 2) )
local maxDist = max(dist12, dist34)
if maxDist == 0 then return end
for i=0, maxDist do
local ti = i / maxDist
local xa = x1 + (x2 - x1) * ti
local ya = y1 + (y2 - y1) * ti
local xb = x3 + (x4 - x3) * ti
local yb = y3 + (y4 - y3) * ti
tline3d(src, xa, ya, xb, yb, ti*sprDim(src,true), 0, ti*sprDim(src,true), sprDim(src,false)-1)
end
end
function project(x,y,z,retX)
if retX then
return ((x*fov)/y)+240
else
return ((z*fov)/y)+135
end
end
function _init()
fov=1
floorCorners={
project(-1,0,1,true),project(-1,0,1,false),
project(1,0,1,true),project(1,0,1,false),
project(-1,1,1,true),project(-1,1,1,false),
project(1,1,1,true),project(1,1,1,false)
}
end
function printFloor(src)
tquad(src,unpack(floorCorners))
end
function _draw()
cls()
printFloor(1)
end
function _update()
end |
UPDATE:
turns out it's not actually because of dividing by zero. Instead, it's related to arguments put into tline3d. See @Werxzy comment for more details.

Super UFO Blaster: How to play
Welcome to the arcade game of Super UFO Blaster, or SUFOB for short. In SUFOB, your goal is to kick some alien butt! But to do that, you have to press 🅾 to shoot, ⬅ and ➡ to turn, and ⬆ to move forward. Keep in mind that running into an alien or the planet can seriously beat up your ship. Also, the planet has some gravity, so make sure that you keep your distance. Of course, you can also take advantage of the gravity by orbiting around the planet or sling-shooting yourself across. You can also warp around the screen, and you gain a heart whenever you clear a wave. Make sure your not lollygagging, or the aliens will speed up!
GOOD LUCK!
I decided to try to make a theme in picotron. I was sort of inspired by magma and rocks and stuff. Anyway, here's the theme:
In order to get the theme, you'll have to go into the cartridge's contents. Oh, also, for some reason when I click on a picotron window, the little buttons on the bar stay in the dormant window colors until I click on the bar.






0 comments




