
Forgive me if this suggestion isn't applicable, I'm new to music creation in Picotron and still learning what can be done with it in general. I realise what I'm suggesting could probably be achieved with code, too.
Could we have a repeat counter so we may repeat patterns a certain amount of times and break out to the next pattern number? Perhaps like this:

Right now we have to copy/paste patterns that we want repeating a few times but not infinitely, which creates pattern duplicates and wastes pattern slots.
To keep backwards compatibility the repeat counter can default to empty (infinite) but when you add a number it counts down when played, eventually breaking out to the next pattern when it hits zero.
That way we can carry out this kind of example:
Intro (Pattern 00), verse (pattern 01), chorus (pattern 02), verse (pattern 01), chorus (pattern 02), outro (pattern 03)
For simplicity, the repeat point should go only to the most recent repeat start point. I realise this may still require some pattern duplication, but at least keeps things backwards compatible and simple.





Are there any plans for a picotron education edition, like there was for the Pico 8? Either that or a version of picotron that runs in your browser, being purchased in the same way as normal picotron? I know that you can run individual carts in a browser, but I'm wondering about a full port, whether it's an education edition, or something else.



A simple JSON parser for Picotron!
I think someone else uploaded one of these. But the more the merrier, right?
Currently the web version doesn't do anything. But if you load it and run it from the terminal, it'll run through some test cases and print out the results. (Not sure how to get it to do that on web - if anyone knows, I'm all ears!)
Limitations:
- Escape characters in strings not supported
- Exponents in numbers not supported
- Null values in arrays are excluded from the array - a limitation of
table.insert
. But nulls do weird things to arrays anyway, so maybe that's a good thing?
You can print inline images (one off characters) using an escape code (\^:<character>
). For example, \^:447cb67c3e7f0106
will print a cat.
The format is 8 bytes in hexadecimal representing a row, and each bit representing a column, for a 8x8 monochrome image. However, writing it out by hand is obviously a pain. I found some editors for Pico8 (https://www.lexaloffle.com/bbs/?tid=50298), but I couldn't find one for Picotron. So I made one.
There is a 8x8 grid of tiles, representing the image. Clicking a tile inverts it. The escape code and character preview are shown at the bottom of the window.
Ctrl+V to paste an image from clipboard and load it into the editor
Ctrl+C to copy the image in hexadecimal format

.jpg)



A small selection of pride flags waving in the wind.
❎ button cycles between rainbow, trans and non-binary pride flags.
(295 chars)
--pride flags --by mabbees fs={{8,9,10,11,12,2},{12,14,7,14,12},{10,7,2,0}} z=0 function _update60() if(btnp(❎))z+=1 z%=#fs f=fs[z+1] end function _draw() cls(1)t=2*time()h=108/#f for x=0,127 do for i,c in ipairs(f) do y=12+h*i-h+3*(sin(t+x/144)-sin(t)) line(x,y,x,y+h,c) end end end |




Anim-8 Comes to Picotron
Ever wish you could see your sprites animate while you're drawing them?
Anim-8 (pe) launches inside Picotron's current workspace and shows sprites from the numbered gfx files in /ram/cart/gfx/
- Anim-8 (pe) must be run unsandboxed to access the sprites in /ram/cart/gfx/0.gfx
- Right click Anim-8 (pe) cart > About > Uncheck [x] Sandboxed
- Changes must be saved with CTRL-S before they show up in Anim-8 (pe).
"May this tool help bring your creations to life 🙇♂️" -Wash

Change Log
v0.3 (2025-03-26)
- Change: Controls completly rewritten to support
mouse gui
- Change: Cleaned up cart folder structure
- Change: Click to choose animation frames
- Change: Renamed T variable to F for GUI
compatability
- Change: Removed "pe" from icon cause it felt too




Have been working on a little tetris clone.
Alot more rules to tetris than I originally thought. Had no Idea wall kicks were a thing.
Still missing the ability to hold blocks.
First time trying to implement real music in pico8.
Pixel art done all by myself!
CONTROLS:
- x: rotate clockwise
- c: rorate counter clockwise
- up: drop
- arrow keys: move

I made this as my submission for Pico 1k Jam 2024, but I never actually posted it on the BBS.
Move with Left+Right, Jump with Z (O). Try and dodge the parachuting enemies. See how long you can last!
Additional Links:
- Balloon Run on Itch (contains the compressed 1021 byte version) - https://rayquaza01.itch.io/balloon-run
- Source code gist - https://gist.github.com/Rayquaza01/802ccea3ac1ce22a9a812d17f84e6bd6
After way, way too many months I'm finally mostly finished with that little throwback to Astro Attack on Amstrad CPC.
It's pretty short and there is no music, but it was an incredible exercise in game design and I learned a ton of things. Games be hard!
(Edit: uploaded the proper, non-test version. You'd think that's the first thing I would have tested. Could have sworn I had. x_x)




TMGFX is an editor that allows creating textmode graphics. Select a tile, foreground color, background color, and start drawing! You can press ctrl + e
to export the image as a png. (!Though, for the BBS, this just puts it into /appdata/bbs/tmgfx/textmode/
and I don't see a good way to extract it.) You can find out more by opening the readme text file from the menu button on the top left.

(for the desktop version of picotron 0.1.1e, there seems to be a small issue with loading the cart, requiring the version number. so instead use #tmgfx-5
or bbs://tmgfx-5.p64
)
The textmode rendering system that the editor is built on isn't completely ready for outside use yet for other games or applications. I'll likely make it available during version 0.2.0 of TMGFX. Mostly needing to work on making it easier to use and more closely mirror picotron's draw functions. There's still a few features I'm planning to add to TMGFX, but I'm open to some suggestions.

I installed Picotron v0.1.1e this morning and was not entirely surprised to find that a project of mine doesn't fully work with the current version. Seemed like buttons weren't working, but the project runs fine. After some testing around, I think the issue is that GUI mouse events aren't triggered when that GUI Element is inside of code that is loaded at runtime, using the load() function. (I'm also not getting any error popups for broken syntax, the cart just refuses to run, but this is unrelated.)
Here's a cart that demonstrates the issue I'm having, and I have confirmed that it works like I'd expect on 0.1.1d:
In the cart above, each button has code to draw a rectangle, but one is defined in the source code of the cart, and the other is defined in a string that is loaded in _init() using the load() function and passing it a table with the same contents as the _ENV table

Hello,
here's a small mecha themed incremental game inspired by Overcooked with some basic roguelike elements i've been working on.
The game is a bit rubbish: there are big problems with balancing and gameplay.
And then visually it's very basic (it's more of a prototype than anything else).
Please don't look at my code, it's too painful for the eyes: I made the mistake of poorly organizing my project at the start of development and it bothered me throughout.
You play as the operating of a mech.
You will receive “requests” from the pilot who will ask you to take over the management of all the vehicle’s peripherals (cooling system, battery, etc.).
Be quick; you have to complete the mission within a given time limit.
.png)


Pico-8 doesn't provide a built-in way to sort arrays.
However it does provide a way to remove items from an array as well as a way to add them to a random position.
A lot of the time a full array-sorting function isn't needed; sometimes it's just enough to be able to insert one item into an already sorted array.
I did look around in the bbs but I didn't find a function for doing it, so here it is:
do local lt=function(a,b) return a<b end function oadd(arr,obj,cmp) cmp=cmp or lt local l,r,m=1,#arr while l<=r do m=(l+r)\2 if cmp(arr[m],obj) then l=m+1 else r=m-1 end end add(arr,obj,l) return l end end |
The function figures out where to insert the item in an already sorted array (using the same algorithm as quicksort) and inserts the new item there.
For arrays of integers or strings it is a drop-in replacement for the built-in add
function. The numbers will just be inserted in the right place so that they are sorted. The third optional parameter allows for using different comparation functions. Example: