I'm running the latest version (0.2.5e).
Pico8 works fine when you link your own SDL library and change the video driver.... Until you press alt+enter (fullscreen toggle). Pressing that makes pico8 have a segfault under linux:
> SDL_VIDEODRIVER=wayland /opt/pico8/pico8_dyn zsh: segmentation fault (core dumped) SDL_VIDEODRIVER=wayland /opt/pico8/pico8_dyn |
Same thing with kmsdrm:
> SDL_VIDEODRIVER=kmsdrm /opt/pico8/pico8_dyn zsh: segmentation fault (core dumped) SDL_VIDEODRIVER=kmsdrm /opt/pico8/pico8_dyn |
But it doesn't happen with the default for linux (x11):
> SDL_VIDEODRIVER=x11 /opt/pico8/pico8_dyn |
Here is an excerpt of my valgrind trace:
Memcheck, a memory error detector Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info Command: /opt/pico8/pico8_dyn -windowed 0 Invalid read of size 8 at 0x4974C15: SDL_GL_MakeCurrent_REAL (SDL_video.c:4114) by 0x48F0449: GL_ActivateRenderer (SDL_render_gl.c:268) by 0x48F0736: GL_DestroyTexture (SDL_render_gl.c:1520) by 0x48E7E84: SDL_DestroyTexture_REAL.part.0 (SDL_render.c:4394) by 0x48EEB04: SDL_DestroyTexture_REAL (SDL_render.c:4415) by 0x48EEB04: SDL_DestroyRenderer_REAL (SDL_render.c:4433) by 0x5111F2: codo_set_screen_plat (in /opt/pico8/pico8_dyn) by 0x50F1F4: codo_handle_system_messages (in /opt/pico8/pico8_dyn) by 0x4B7BD6: codo_main (in /opt/pico8/pico8_dyn) by 0x4B9528F: (below main) (libc_start_call_main.h:58) Address 0xb4a9f60 is 0 bytes inside a block of size 240 free'd at 0x484426F: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x4920BFE: SDL_free_REAL (SDL_malloc.c:5461) by 0x5111D6: codo_set_screen_plat (in /opt/pico8/pico8_dyn) by 0x50F1F4: codo_handle_system_messages (in /opt/pico8/pico8_dyn) by 0x4B7BD6: codo_main (in /opt/pico8/pico8_dyn) by 0x4B9528F: (below main) (libc_start_call_main.h:58) Block was alloc'd at at 0x4846A73: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x4920B60: SDL_calloc_REAL (SDL_malloc.c:5433) by 0x4975823: SDL_CreateWindow_REAL (SDL_video.c:1698) by 0x51150A: codo_set_screen_plat (in /opt/pico8/pico8_dyn) by 0x509DC4: codo_set_screen (in /opt/pico8/pico8_dyn) by 0x4082C9: codo_main_init (in /opt/pico8/pico8_dyn) by 0x4B7BBE: codo_main (in /opt/pico8/pico8_dyn) by 0x4B9528F: (below main) (libc_start_call_main.h:58) |
If I just completely skip the "SDL_DestroyRenderer" function call (by commenting it out in sdl & recompiling the library), then there is no segfault.
hi pico8 community. i'd like to introduce you all to radico8, the first 24/7 pico8 webradio. radico8 is a pico8 console/cart that is always online and playing specific tracks from specific carts. the radio is available as a youtube stream or audio stream.
tune into radico8 now: https://www.youtube.com/channel/UCNiwmNlnzY0Rg17Ii2RPIkw/live

you can add to the playlist and learn how it works on github: https://github.com/alanxoc3/radico8
i've already added some of the songs i like from various pico8 carts into the radio playlist. if you have more song suggestions, don't hesitate to request them on github.
Made for Mini Jam 108. We started a day late and finished a day late. Standard PICO-8 controls. Z is select. X is back. Arrow keys move the selection.
It's can be hard for a lone hermit crab to survive in the wild. Luckily, this hermit has a giant sword! Chose between 9 action cards to defend yourself from predators!
Movement Cards (Green)
- Move - Move one tile in any direction
- Jump - Jump over a tile in any direction
- Charge - Charge in any direction until you hit something
Attack Cards (Red)
- Stab - Point your sword in any direction
- Thrust - Hit the tile in front of your sword, and return to your original position
- Spin - Hit all adjacent tiles
Utility Cards (Yellow)
- Idle - Stay stationary for a turn
- Swap - Swap positions with any enemy over land
- Rewind - Rewind your last played card
There are 50 levels, so don't feel like you have to beat all of them. The game also auto-saves, so you can continue where you left off.
Here's the itch.io link: https://alanxoc3.itch.io/stabby-crabby
alanxoc3 did the code (me).
greatcadet did the sfx/gfx (this guy: https://www.instagram.com/cadendrawsstuff/).
REWOB. Delay the inevitable destruction of animal shaped planets long enough for its inhabitants to escape! Standard PICO-8 controls. X or Z to shoot. UP/DOWN to thrust. LEFT/RIGHT to steer. P/ENTER to open the PICO-8 pause menu and reset your save progress. Wob means your death count, because why not?
Made in 72 hours for ludum dare #50. Polish was added the week after the jam ended based on feedback from people playing the game. If you want to play the original submission, that's here:
Rate the ludum dare entry here: https://ldjam.com/events/ludum-dare/50/rewob
Enjoy the game!
A Healthy Dose of Dungeon. Made completely from scratch in 72 hours for ludum dare #49. You don't know how you ended up in a dungeon, but you must escape it with nothing but your bare hands. An experience like this could make anyone's mind unstable!
Standard PICO-8 controls (arrows/z/x). Press x to hit enemies. Press z to dodge roll. Use the arrows to move. Every time you hit an enemy, your attacks do more damage and your character is faster. When you take damage you enter into an angry state in which you are super strong and you cannot get hurt. Your character is also invincible while dodge rolling.
There are 6 different medical conditions the character can be diagnosed with at the end of the game. Here is how to get diagnosed with each one:
- unstable - beat the game normally.
- hyperactive - beat the game in under 1 minute.
- healthy - beat the game without killing any enemy (except the boss).
- insane - kill all enemies in the game.
- obsessive - kill all enemies in the game without dying.
- possessed - kill all enemies in the game without dying and beat the game in under 3 minutes.
View the game submission on Ludum Dare too:
https://ldjam.com/events/ludum-dare/49/a-healthy-dose-of-dungeon
A game made in one day for this game jam: https://itch.io/jam/vetelinos-summer-jam-july-2021
You are a ninja agent penguin on a unicycle and must stop ice cream terrorists from doing something horrific.
Arrow keys to move. Z & X to shoot.
Made for a 4 hour game jam that was on itch.io. Instructions are inside the game. Disclaimer: this game isn't finished, but it was fun to make none-the-less.
You must go deeper down the well to be safe from the dangers of the surface. Little did you know that the well is dangerous too!
This an updated version of my game for ludum dare #48. The theme was "deeper" and my ludum dare submission page is here.
Controls are:
- Arrow keys to move
- Z to jump
- X to shoot
Have fun :).
A game for the one hour game jam 306. The theme was "neglected". Everything made in about an hour.
A game for the one hour game jam #302. The music, sprites, and code were all made by me in about an hour.
A game for the one hour game jam #301. I made everything including the music in about 70 minutes.
Your mom is sick. You must save her!
I just noticed that on the exported cartridge files, it says "www.pico-8.com" on the top (the .p8.png images). I tried going to that address, but I get a 406 error. That should probably be fixed somehow...
I made this for a week long game jam between me and a coworker. The theme was "music is a weapon"... I didn't follow the theme very well, but it was fun making this. Fun fact, the character is actually a rotoscoped + minimized version of me.
This game is super stupid, but I hope you enjoy!
So, there is a parsing bug with the unique "+=", "-=", "*=", "/=", and "%=" PICO-8 flavored lua syntax. In normal lua, something like this:
b=odds[2]b=b-1 |
is valid syntax, treated as two separate expressions. That works in PICO-8, but this:
b=odds[2]b-=1 |
throws a syntax error. It's odd because this:
odds={1,3,5}b-=1 |
does not throw a syntax error. It seems to be only with the unique PICO-8 equals operators and directly after square brackets.
Fixing this could benefit people working on tweet carts as well as carts that are token & character/compression sensitive.
A game made by my middle school English students. Each class had 20 minutes to tell me what to make from scratch. There were 4 classes.
OS: Arch Linux
Browser: Chromium
The little pause/play button on the BBS player will pause and play the cart if you click it, but if you press the "enter" key on the dialogue to either continue or reset the cart, the pause/play button doesn't change (it should go back to the pause icon, but it remains as the play icon).
Here is a lil' cart to test it out real quick:
View Older Posts