Log In  
[back to top]

:: Unfold ::

So I've just been thinking: wouldn't it be much more convinient to be able to "push" a new version of a cartridge to the BBS?

So I came up with three concept commands:

  • "PUSH"
  • "LOGIN"
  • "LOGOUT"

First, the login command. The syntax would be as follows:


The screen would then be cleared and a login request would be sent to the BBS servers. If all goes well, then the login would be remembered until you logout. This would allow for things like viewing favourited cartridges and seeing them stored on other devices and on the BBS itself.

"LOGOUT" is self explanatory.

Now, the push command. It can only be used when a cartridge is loaded in memory. The syntax is as follows:


CARTID being the normal ID, without the version(so "cart", not "cart-0" or "cart-1"). This would then execute the following steps:

  • Check if logged in
    • Send check request to BBS servers, asking if the cart id in question is owned by the current user
      • If all goes well, send the cartridge to the BBS and get it uploaded
    • If cartridge not owned by user, say so
  • If not logged in, say so

This way, small modifications won't have to include going into the browser at all.

*modify some stuff*
Verification Successful!
Cartridge uploaded at #CART-1#

This would be a blessing to me.

P#90762 2021-04-18 13:25

:: Unfold ::

I was listening to Missile Command's music, and really liked it, so I decided to export it to a .wav . I selected patterns 0-19 and, in the terminal, type the command:


The result was, indeed, a .wav file, but played around a quarter of the first note of pattern 19. That's it. I'm quite annoyed since the menu music in Missile Command is very good, but that's not the point. The point is there's a bug.

P#90680 2021-04-16 09:56

:: Unfold ::

Cart #voroterrain-5 | 2021-06-26 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Another season, another terrain generator.

Below is an old version of the pipeline that was used for the generator. This has since been reworked a bit to add features.

  • Generate every possible syllable through structure "CV(n)" (Consonant, vowel, and an optional "n")
  • Pregenerate name with 2-5 syllables

  • Create n points and n/16 biome centres
  • Generate basic (polygonal) shape using voronoi
  • Apply "life" n/6.4 generations

  • Add name on screen

Tada! You've got yourself a basic map. You can also disable the "terrain" boolean to make it just generate a voronoi diagram, but that's boring and I don't need it so I leave "terrain" as True in the above cart. Feel free to play around though.

Here are some examples of pretty islands:

Have fun generating endless islands with silly names. Later!

P.S. v1.2.1 has introduced "Manual Mode". At any time in the generation process, you can press Z. When generation is over, you should see that the name of the landmass and the names of the nations don't show up. This is so that you can hide either. If you want the name of the landmass to show up, press Z during Manual Mode. Do the same for nations but with X instead of Z. This should let you have more versatility with my little toy.

Notes for modders:

  • The "quality" variable is what defines A) The amount of points for veronoi rendering B) The amount of biome centres and C) The amount of generations to run my little life thing(n, n/16 and n/6.4 respectively)
  • The syllable generator generates every single syllable in the given CV(n) structure. The code for this is very simple:
for c in all(consonants) do
    for v in all(vowels) do

Since v1.2.2, there is another syllable type, generated separately: VV.

for v in all(vowels)do
    for ov in all(vowels)do
  • The voronoi calculations can certainly be improved; I just don't know how. I'm not a pro at optimization or math.
  • The "biomes" are just sets of colours. There is no limit to the amount of colours each biome can have(I wanted as free of an environment as possible)
  • Do not uncomment "music()". It's for your own good.
  • The "colex" table simply excludes colours from being switched to their secondary palette alternatives. This is simply to make it look nice.

Have fun doing deranged things to the island generator. I hope that was a comprehensive list of notes.

Possible ideas:

  • Maybe a mode where you can look around the map with a zoomed in camera?

Version history:
  • V1.0.X: Initial Version
  • v1.1.X: Biome Update
  • v1.2.X: Nation Update
    • v1.2.1: Manual Mode
    • v1.2.2:
      • One new syllable type, VV
      • Experimental roughing which uses a symbol instead of a circle to rough up the edges of the islands
  • P#90637 2021-04-15 17:18 ( Edited 2021-06-26 11:20)

    :: Unfold ::

    I know this is kind of lazy, and you could just loop over a table with "pairs" and collect all of the keys, but is there a built in function that will return a table of any given table's keys? If not, then I'll implement my own, but I don't want to waste tokens where unnecessary.

    Cheers in advance!

    P#90319 2021-04-10 11:38

    :: Unfold ::

    So, I'm making a game as a birthday present for my friend. As I always do, I forgot to do it before and am sitting here on the day before. Now, this game is tile based, and I need to mass generate some tiles which do the same thing with different values. Here is a simplified version of this problem:

    for v,i in ipairs({33,34,35,36})do

    My question is, will this work, and if not, how would I go around doing this?

    P#90116 2021-04-07 09:51

    :: Unfold ::

    So I was working on a random visualiser thing, when I realised, uhh,


    I've never seen the sprite counter in hexadecimal, and don't remember a feature like that being announced nor me toggling it..

    Someone help I'm confused ; _ ;

    P#90072 2021-04-06 12:28

    :: Unfold ::

    Second post in less than half an hour!

    I think this bug exists because @zep might have been a bit lazy when coding cursor changes for code tabs, so instead of checking if there's an actual tab in the position, he just made the cursor change when it is in a certain square where the tabs could be. To be fully honest, I don't blame him. Most of us here are programmers and you can't say you never get lazy with something in code.

    TL;DR: Cursor changing doesn't check if tab is actually there.

    P#89969 2021-04-04 12:53

    :: Unfold ::

    Got some random inspiration from @thattomhall's "Who stole the coal?", specifically the graphics, so I decided to start my own little thingy. It uses Screen Mode 2, for those who are curious.


    You are Unnamed Wizard, and you're hanging with your friends, when some Big Bird King who calls himself "Haponke" swoops down and steals your wand! Now, according to WizTown law, all who call themselves "Wizard" and don't have a wand are outcasts and should have their backside kicked into the Great Beyond. You know this, so obviously, you RUN!

    On the way out of WizTown, you find a strange, L-Shaped, steel thingy. Carved on it, are the words "GLOCK-19".

     Alright then! Guess I'm going back to town.
        - You, 5 seconds ago

    Don't have much yet, but I hope to release a demo soon!

    P#89967 2021-04-04 12:45

    :: Unfold ::

    Cart #planets_n_sol-0 | 2021-04-03 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

    Completely innacurate, but still looks cool IMO.

    Also, space music!

    I wanted to make a space game that looks like this, but eventually gave up and just made it a visualisation of the first four planets of our Solar System. I think it look cool, and am especially proud of the music.

    Enjoy watching the rock spheres spin around and around. I sure did!

    P#89911 2021-04-03 08:53 ( Edited 2021-04-03 08:57)

    :: Unfold ::

    So, I've been aware of this bug for a while but was too lazy to write a bug report. But here we are.
    Let's represent the cursor as "|".

    -- |Title
    -- Author

    Pressed: Down

    -- Title
    -- |Author

    Pressed: Up

    |-- Title
    -- Author

    Here's a GIF that demonstrates this in the editor:

    It's a very minor issue, but it annoys my OCD nontheless.

    P#89669 2021-03-27 11:09

    :: Unfold ::

    I am making a puzzle game on a 6x6 grid at the moment. Every cell has two values: 1) The colour/type of cell 2) the variable of that cell
    Thus every cell is two hexadecimal digits. I've made a level editer and all but I've run into a problem with level loading. Shortened to the problematic code, here is the problem:

    function loadlevel(n)
        local ltol=levels[n]
        for i=1,#ltol/2do
            local s1=1+(i-1)*2
            local s2=s1+1
    function _init()
    function _update()
        local nogo=false
        for i=1, 16do
            if level[i]!="00"then
        if go and not nogo then

    Error code:

    runtime error line 8 tab 0
        for i=1,#ltol/2do
    attempt to get length of local 'ltol' (a nil value)
    at line 0 (tab 0)

    I really can't seem to figure out a solution to this.
    Cheers in advance!

    P#89110 2021-03-17 17:27

    :: Unfold ::

    So, as shown in my previous two posts, I'm making an operating system for Pico-8 called P8OS.
    I am making it so that Z, closest to the window/whatever key, activates the app menu, and X, right next to it activates the task menu, where you can see which windows/programs are active. I need to check for both of them every frame. Shortened down to the problematic code, here is where it goes wrong:

    function btnk(k)
      local p=stat(30)and stat(31)
      if k!=nil then
        if(p==k)return true
        if(p!=k)return false
        return p
    if(btnk('z'))inmenu=not inmenu
    if(btnk('x'))intask=not intask

    It will not detect pressing X unless Z is pressed in the same frame, which is even more confusing.
    Clearly something has gone desperately wrong somewhere in this code. I just can't pinpoint what.

    P.S. Keep in mind that if you want to reproduce this you will need to call poke(24365,1) or equivalents at the start of your code.

    P#88683 2021-03-08 18:41 ( Edited 2021-03-12 16:37)

    :: Unfold ::

    This is my manifesto of sorts on how I plan to implement P8OS in the forseeable future. I will keep writing it over time. Basically, you'll see the post progress as I write it down.

    Part 0: Decisions, decisions, decisions

    First, I'll have to make some choices to fit the limitations of PICO-8. First and formost; will we allow external programs that can be installed onto any given person's copy of the OS? And if so, how will we fit this into PICO-8?
    I have the answer to both of those questions. 1) Yes. 2) A VM.
    A VM is perfect for this. If you manage to design a compact and efficient bytecode and run it efficiently, then you're set.
    Second decision: Should our OS have multitasking? And, once again, if so, how?
    Here are the answers: 1) Yes. 2) Instancing.
    If we build our VM modularly, we should be able to have a single instance of the VM for each program, which if run asynchronously, would allow for multitasking.
    Third decision: Should we use the mouse and keyboard?
    As demonstrated by my extremely early and nonfunctional version of the OS, yes to both.
    There are more decisions that I'll add in here later. For now, we're set.

    Please give feedback on the current version. I want to know what you think!

    P#88661 2021-03-08 08:06

    :: Unfold ::

    Cart #p8os_early-1 | 2021-03-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

    This is a very early version of P8OS(v0.2 as of now), a very creatively named operating system built on the one Pico-8 already has. I'm trying to do what the original Windows did, which is piggybacking on an existing framework and building off of that.

    It really isn't much just yet, but here's a few lists for those who like them.

    Existing features:

    • Mouse and keyboard reading(really not much to brag about)
    • Removed v0.2: A system clock on the menu bar
    • A basic menu bar
    • A (yet nonfunctional) app menu you can toggle with Z(closest to the Windows button)
    • A very clever way of storing program names
    • v0.2: An (also nonfunctional) task menu you can toggle with X(next to the app button)
    • v0.2: Hover-enabled user and clock buttons

    Planned Features:

    • Custom VM with bytecode transfered through sprites
    • A framework for said VM with access to writing files and stuff like that
    • A code editor for the VM in the OS. So... a VM inside a VM with an editor for that VM inside an operating system built in an editor on an operating system.

    I want to make it so that you can paste in programs you made for the VM from the clipboard since that would be cool and I like cool.

    Anyways, I hope you enjoy doing nothing interesting in this glorified button pressing simulator. Give ideas if you can!

    P.S. Please do check out my very clever way of storing program names. I'm too proud of it for you not to notice ;_;
    P.P.S. I'm planning on making the program icons/names even clever-er since every icon is essentially a 1-bit image, meaning I can pack four icon pixels into a single actual pixel. Haven't done that yet, but it's planned.

    P#88649 2021-03-07 18:48 ( Edited 2021-03-13 10:36)

    :: Unfold ::

    Cart #nocliplost-1 | 2021-03-05 | Code ▽ | Embed ▽ | No License

    Finally, track four! This is a short one.
    It sounds like something from a trailer so there's one use idea!

    If you want to translate the symbols, the language is Korean(I'm not Korean but it looks cool so...). Of course, if you already knew Korean, you would know that it was in Korean and you would understand the Korean since you already knew Korean. Y e a h . Anyways, enjoy!

    P#88588 2021-03-05 17:57 ( Edited 2021-03-05 18:45)

    :: Unfold ::

    So, I'm expanding my previously released map generator. I've added stuff like biomes, biome generation types, so on so on.
    The thing is, I'm making this generator because I want to start an RP community with stuff like being able to claim territory.
    My problem: The map is too small. 128x128 is not a high enough resolution for this map. I've modified for the map generator to work on 256x256 pixels, but that would mean I would have to take four screenshots and manually stitch them together, which is a very frustrating process.
    So, my question is, is it possible to take a 256x256px screenshot?
    EDIT: I think it's worth noting that for automatically taking screenshots in my code is done with


    which could be a slight problem.

    P#88404 2021-03-02 09:37 ( Edited 2021-03-02 09:39)

    :: Unfold ::

    Cart #terrainauto-0 | 2021-02-28 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

    This is a terrain/island generator, based on one of my tweetcarts:
    I modified it to automatically do the following things:

    • First, run the program as normal.
    • When there are no black/empty pixels, start a timer.
    • Once the timer reaches a certain treshold, do the following:

    • Automatically make screenshot
    • Enable pause menu(you'll see why)
    • Reset cart

    The reason it pauses after the screenshot is so that when you leave it unattended it will not just make ten thousand different islands without you knowing. Enjoy!

    P#88290 2021-02-28 11:15

    :: Unfold ::

    Cart #disposablewowee-0 | 2021-02-27 | Code ▽ | Embed ▽ | No License

    I participated in the third Wowee Game Jam. The above is my submission!

    Can't believe this is my third jam this year...

    P#88252 2021-02-27 12:58 ( Edited 2021-02-27 13:22)

    :: Unfold ::

    Cart #noclipexistential-0 | 2021-02-25 | Code ▽ | Embed ▽ | No License

    Here's the third song in Noclip! Made it last night. It's the longest track I've made so far! I'm pretty proud of it. Let me know what you think!

    P#88151 2021-02-25 10:43 ( Edited 2021-02-25 17:28)

    :: Unfold ::

    Cart #kindahotproto-0 | 2021-02-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

    Making my own tiny, tile based version of SuperHot. Here's the prototype!

    Arrows for movement
    Z/C to use weapon if equiped. Otherwise punches
    X to pick up weapon. Later, you will be able to throw them too.
    S to skip a turn.

    When you go past the top of the screen, you will be sent to the start. Later versions are planned to update the room when you exit it.

    Bullets don't do anything yet since I haven't had enough time to do that yet(remote learning. Ughh.) Punching doesn't do anything either. One enemy is at the end of the room, but, once again, does not do anything. You can go through him if you want. I do want to keep working on this. Let me know what you think!

    P#88001 2021-02-22 11:37

    View Older Posts
    Follow Lexaloffle:          
    Generated 2022-12-05 14:58:35 | 0.106s | Q:54