Picotron allows us to resize the map layers, which is awesome. However, I have never once wanted to resize each layer individually; if I'm resizing the map, I usually want to make each layer the same size. It's weird too that layers will just be centered if they're a different size than the other layers. It feels like there's no real use case for having differently sized layers.
Also, I often want to simply stretch the map in one direction instead of adding more size on both ends either vertically or horizontally. Like maybe I want the map to be taller but the bottom is good where it's at. I don't always know how much size to add either, so sometimes I'll estimate wrong, slide the whole map to align it correctly, and then need to take a few tiles off again and I'm forced to slide the map once again.
Request 1: A toggle button to lock all the layers' size when resizing them. Resizing one will resize the rest. The toggle is on by default.
Request 2: Clicking and dragging on the edge of a layer will resize it in that direction. For instance, if you click on the top of the map and drag upwards, it will add additional height to the top of the map (without adding to the bottom).
P.S. I wouldn't mind if Picotron was just changed so that the whole map is sized as one instead of individual layers. But some people might not appreciate having a feature taken away, even if it's one not commonly used.
The bug seems to stop sounds on my entire system, including picotron.
I have checked to see if picotron is muted and I checked my Linux settings and checked linux's settings as well, as soon as I close the program sound returns.
I even checked pico 8 and it seems to work fine, I am willing to post my hardware and any other details if needed.
Thanks in advance!
Update: it seems this issues happens when I close my laptop, and I have to close the app and wait like 30 seconds then reopen the app.
Quite odd.
When using split to convert strings to numbers (the default) it seems to have precision issues converting integers well below the 64 bit limit:
p=split("123456789", " ")
?p[1]
?math.type(p[1]) |
shows 123456792 and indicates the type is integer
p=split("123456789", " ", false)
n=tonum(p[1])
?n
?math.type(n) |
shows 123456789 and also indicates the type is integer.
So, Battlefield Balls has actually become a bit more of a game. It's kind of a 3D asteroids clone. Guide your ship around the arena and shoot down all the enemy ball things! Use the jump button to hover in the air. Use the fire button to shoot one missile at a time. When you've killed all the balls, more will respawn!
To-do:
- Enemy balls deplete shield/kill you
- Different coloured balls score different points
- Power ups/health?
Assume the role of a battle-hardened Holiday Ninja tasked with retrieving the stolen presents from Elf Mountain! Your weapon of choice? Bauble ornaments.
Released as part of the 2024 Pico-8 Advent Calendar, kindly organized by bikibird.


Basic Controls
Left/Right = Move left or right
X = Attack (ornament toss)
O = Jump
Gameplay Mechanics

some late night shape twisting.
I'm certain the for loops could be cut down, but I got it to 280 and I'm happy with it.
(280 chars)
v=sin::_::h=cos?'⁶1⁶c' for c=32,96,32do for r=32,96,32do e=min(1,(t()/5)%1.2)for b=0,.9,.25do a=.125-b+.25+e+(b-.5)*2l=a+.125 for j=0,20,3do x=c+h(b)*30+j*h(l)y=r+v(b)*30+j*v(l) for i=0,20-j/2do pset(x+h(a)*i,y+v(a)*i,7)pset(x+h(a+.25)*i,y+v(a+.25)*i,7) end end end end end goto _ |

issue
i'm trying out some object oriented programming but i've run into some confusion
when i make a value in a list derived from another list
class={
new=function(self,tbl)
tbl=tbl or {}
setmetatable(tbl,{
__index=self
})
return tbl
end,
}
entity=class:new({
--dsp is read by the main upd
--stands for despawn
--removes the entity from the
--list if true
--dsp=false,
--dspwait=false,
x=0,
y='smelly',
--o is for origin
ox=0,
oy=0,
sprn=1,
--s is for size
--the size of the spr that is
xs=1,
ys=1,
--a is for animation
asprnum=2,
--asp is how much to divide
--the tmr by
--so 1 is every frame,
--2 is evey other frame,
--3 is every third frame,
--etc.
aspd=1,
--update=function()
--if x< camera.x+8 or x> camera.x+128 then
--if
--dsp = true
--end
--end,
draw=function()
spr(sprn,x,y)
print(y)
end,
}) |
and then try to reference a value from that same table from a function (as seen in the draw function
in the entity class) it spits out nil. i have the entire cart up above as you likely have already seen, ignore that it's trying to draw a sprite at a position thats text. i set y to smelly for testing so i could easily see if it was spitting out smelly or it was spitting out nil.
wait you can paste pico-8 sprites in here

This app is a submission to the 2024 Pico-8 Advent Jam that creates digital folded paper snowflakes!
Cut a pattern into the digitally folded paper. Click "unfold" to reveal your masterpiece! Then save an image of your snowflake to share with friends, family, or right here on the bbs!
Detailed Instructions
Note: If you don't have a mouse connected, you can control the mouse using a controller as follows: the d-pad moves the mouse to various interactive elements on the screen, pressing x clicks, and pressing o moves the mouse to the bottom of the screen for easy button access.
When you load the cart you are greeted by the welcome screen which shows an example paper snowflake unfolding.

Part of the 2024 Advent Calendar
Pitch
Evil DJ penguins stole christmas presents for an early party! As a member of the "Get Out And Get Back These Presents" force, your task is to get things in order quick!
note: game has a single daily level, same for everyone!
How To Play
left/right: rotate
up/down: forward/backward
x+left/right: strafe
c: jump
Credits
z-buffer technique: idea from @Werxzy
music: snabisch
Changelog
1.1
- fixed: daily score not reset (dang!)
Pitch
Evil DJ pinguins stole christmas presents for an early party! As a member of the "Get Out And Get Back These Presents" force, your task is to get things in order quick!
note: game has a single daily level, same for everyone!
How To Play
left/right: rotate
up/down: forward/backward
x+left/right: strafe
c: jump
Credits:
Aim
This cartridge can be used for educational purposes to make simulations for the Monty Hall problem, a well-known probability conundrum that puzzles many people. The statement of the problem is the following:
-- Suppose you're on a game show, and you're given the choice of three doors: Behind one door is a car; behind the others, goats. You pick a door, say No. 1, and the host, who knows what's behind the doors, opens another door, say No. 3, which has a goat. He then says to you, "Do you want to pick door No. 2?" Is it to your advantage to switch your choice? [cited from the Wikipedia page]
For students attending a Probability course, this is an exercise about conditional probability. You can read more on the dedicated Wikipedia page.

PUSH (Picotron Upgraded SHell) is a modified version of terminal.lua I made that allows you to add modifications from lua modules. You can place modules in /appdata/system/terminal/ and PUSH will load them.
Without any modules, PUSH changes very little (cd with no arguments acts as cd /), but modules let you add more functionality.
In the repo, I have a list of examples of the sort of things you can do with PUSH, including changing the prompt, adding and overriding commands, and adding shortcuts.
cd.lua is my favorite module so far, I think. It adds replaces the default cd command and adds fish-style directory history.
https://github.com/Rayquaza01/picotron-upgraded-shell
This is very WIP, so if you have any trouble or suggestions for how to improve PUSH, let me know!
Changelog
2025.11.04
- Rebase to 0.2.1d terminal
- barecd no longer cds into bbs:// paths






0 comments







