Hello guys,
I'm new to Pico-8, but not new to programming in general. Before, I used Codea, Love2D, Corona, Gideros, Polycode and tried some other frameworks. I managed to code some, more or less, simple apps (mostly for drawing/animating stuff) but no games at all. I want to change that, because I love games and the good ol' days! Pico seems to be quite accessible. - With all its constraints it might be even the right tool and should be able to hold me back from overestimate myself. It might also help me to understand the hardware side of things a little better. (Which is very important to me.)
As of right now, I have a hard time to wrap my head around everything, since I was used to have a handful of helpful little functions, like tweens, meshes, etc. Also the lack of math knowledge seems to fight me also, as I now have to write all these function myself. But I think I get there slowly...
Since ever I dreamed to make a small rpg. Something like Pokemon or a some sort of a [b]survival game

This is my work in progress for global game jam 2016. I decided to go solo this year and give pico8 a whirl. You have to use the available weapons and work with your friends to survive the onslaught. The gun can kill monsters, but their angry spirits will come after you. Use the torch to exorcise the body and banish the spirit. The medikit can revive fallen teammates.

-up and down arrows control character
-character has a fan that clears clouds away
This is a game conceived during Ludum Dare 34. I didn't finish it by the deadline, but I used the two themes presented during the game jam: "growing" and "two buttons". This is the first game I've completion. Let me know what you think!

Every day, Professor Miggles goes to work. And every day he snoozes in bed until the last possible moment. To keep the points you get for snoozing, make sure to head out in time without forgetting to put your trousers on.
v1.1: Fixed high score bug, and added persistent high score (when played from pico-8)

So, it's 1am and this is what is keeping me up.
Boot up pico-8. Bask in it's glory. Hit esc to jump into the editor.
Type something, mess with mouse. Text selection. Go to icon editor, and the mouse is your main tool. So - clearly the pico-8 fantasy hardware supports a mouse.
Why can't my programs read the mouse? Possible answers:
1) The editors are "special" (do not like! seems unfair somehow.)
2) You can, it's just hidden or undocumented (ooh)
3) Because the editors are not written in the language we are using and have special access (probably the real answer, but very unsatisfying. breaks the illusion/metaphor of fantasy hardware.)
Or maybe something else? I noticed that you can poke in values to monkey with screen modes; if there were peeks somewhere that read the mouse x/y and buttons that we have yet to discover, that would be just kinda awesome.
If there are not - would be super cool to see them someday. Even if they were slipped in quietly for the community to accidentally discover via experimentation. Just sayin.
-- Your Friend Biggles

Hello everyone,
Does anyone know of an easy way to export music from one cart and import it into another? I got someone to make some music (thanks Pizza!) for a game I'm nearly finished but I can't really think of a way to get it into my cart.
I know copying and pasting the data to/from the .p8 file as text works in theory, but I already have sound effect/music in my game, so I know they won't really transfer properly because the indexes for the sound effects will be off.
Any advice would be much appreciated! Thanks!

I've grown quite fond of Pico-8, and am hoping to use it in a future Ludum Dare. To familiarize myself with the tool, I created an enhanced version of my LD33 entry.
Tapping Z and X at the same time toggles the music.
All feedback is welcome. If you find a level particularly difficult, please let me know.
Update 8/10/16 - Finally got around to fixing a bug with the tank.
Update 9/28/20 - Fixed a typo. Also, updated the behavior of the arrow to better indicate the player's off screen position.
This is our first PICO-8 project, made in a little game jam with some friends!
Our prompt was generated by the Cowface Games Ludum Dare theme generator: Underworld and Retreat!
The story goes:
You are Jonathan, a meek demon spy sent to collect Heaven's magical relic. When combined with the one in Hell, it will create the ultimate weapon. The game starts after Jonathan has already infiltrated Heaven and stolen the relic - now take a leap and make your way back home!
This is unfinished so far, but collecting the purity from innocent beings (rainbows, butterflies, etc) will add to your strength in the second half of the game (which doesn't exist yet).
Jetpack - PICO-8 edition, 30 hot levels and various enemies
Jetman does not know how to jump.
Jetman uses his jetpack if you press C.
Jetman can not have more than 4 lives.
Level restart (if you get stuck and can not die) - press X
That's me playing level 12:
Level 1 to 12 - if you get past level 12, it gets easier ;)
Have fun!

Hi,
first off, Pico8 totally blasts me - developing games with it is like a flash back into the 80ies, only with suitable tools. Great work! Too, I like the idea of the strict limitations of the system, but there are some things which may extend them without breaking the idea.
At the moment, the rom in the cartridge supports space for all built in editors. There is sprite space, map space, sound and music space. They are all sufficient for the general "hardware" of Pico8. But the rom lacks of one thing - user space! There is a user space in the ram, following the rom mirrors for all the build in editor data. But why isn't it possible to use the user space in the rom?
This leads to the situation, that one has to initialize all user data in code space. This seems to me a waste of space and tokens. True, from adding the user space to the rom, one problem arises: How to fill it? I spent some thoughts on this with the premise to keep the general idea of Pico8 and its workflow. So, how about this:
1.) Add the user space to the rom. Shouldn't be much work and shouldn't break existing cartidges, although some version tag might be necessary.
2.) Add a general function _build aside to _init, _update and _draw. As you obviously have access to the tokens, I would remove this one from the export versions and wouldn't count the tokens in this function (Including the function itself), but leave the 256kb limit.
This would allow to poke data into the user space without wasting any tokens. One could even preprocess the data, like adding preprocessed line feeds to string data, create lookup tables and such. Further, this would allow us to store an initial titlescreen into the screen ram on boot time... This would be a simple, but great extension of the general build process without touching any of the grounding principels.
A hex editor as an additional tool would be pro, but not required.
Another bigger feature I would love is bank switching. As the "CPU" is definitly an 8 bit one, it could address 64kb of ram. Sure. Virtual ram space is expensive in our imaginary 80ies development world, in which Pico8 exists. But as Pico8 tries to mock up an 8 bit console system, there always was the possibility, that the cartridge-rom was bigger than the system ram. So, how about picking this up by adding a banking space at $8000-$8fff, which is read only and maps to one or more rom banks within the cartridge? They should be limited, up to max 32kb, no doubt, but I think adding bank management would add some extra spice to this retro style development and this wouldn't break anything else either. Initialization would work with the _build function as well. A nice addition to this would be a _switch(a,b) function, which is called, if f1-f4 are pressed and which handles copying editor specific data between the banks, leaving the risk to handle this correctly to the developer him/herself.
Some other features, I would wish for, which are simpler to explain:
a) Add a ceil function, that one is missing painfully.
b) Add some kind of tooltip if you are over a function with the cursor, which shows the token count of that specific function.
c) A simple find with ctrl+f would be great. Currently, I'm using NotePad++ beside Pico8 constantly open for that...
d) Reading the character value as numeric from a strings position. I know, requested several times and there is a workaround, but I don't think this workaround should be needed...
e) Would be nice to be able to set the border color and the background color (e.g. for cls). Could be either background(col) and cls(col) or color(drawcol,clscol,bordercol).
f) Hidden directories are never a good idea to store things, the user shall access or copy by hand. Maybe an extra document directory for cartridges would be nice...
g) Anonymous Functions? Would be great to be able to write code like
h) A modulo function. Needed, writing an own is a waste of space and tokens.
i) The ability to call a function or other code from a string. Maybe something like eval("myfunc(3)")?
startscrolling("Hello World",10,begin cls() end)
Reading, this would trigger a scrolltext with Hello World scrolling over the screen and calling the anonymous function when finished, clearing the screen.
h) A goto line with ctrl+g. Bonus: Accept the name of a function as input.
These are my suggestions so far, maybe they are of some use :)
Keep up the great work!
BOING is my very first game. It is a not so accurate recreation of Pong. This is release 1.11. As it stands, it is quite playable, but I might add new features later on.
Player controls:
Player 1: up and down arrows.
Player 2: E and D
Press X to skip intro and confirm menu selection.
version 1.11
General playability tweaks:
- tweaked paddle speed, ball speed and direction on reflection
- lowered difficulty in 1 player vs cpu mode.
version 1.0
- First official release.





4 comments











