2019 edit: my Patreon page is no longer up, so there is no point in having only the minified version here. Since there was no way to get the source code anyway, I updated the cart here to the readable, fully commented version.
Hey, everyone! This is the final version of my spinning Earth PICO-8 demo, now called Blue Marble.
It comes with two mostly accurate 3D textured spheres, lighting, realtime shadows and even some inspirational quotes that you can toggle by pressing the PICO-8 buttons :).
It's also able to do all this in 60 FPS, because well, why not?
If you're interested in how it's done, please check out my [b]Patreon page




I'm terrible at actually finishing games, but I'd like for these guys to find a home. All, except one, are four frame walking animations. Most are abstract characters.
Some of these I am quite proud of, like the running man, dog, and cat. I feel that these are as lifelike as you can get in 8x8.
Others, like the helicube and the orange hopper, I just have a fond attachment to.
Please feel free to use any of these guys in your games. All I ask is that you credit the creator.
Quick






Since the spritesheet and map share memory I got inspired to make a demo of how to use MSET to edit sprites in the sheet. Essentially I'm changing the bottom part of the map to edit the sprites that are located in page 3 of the sheet.
I'm sure this has been done before, so I did it mostly for my own entertainment. Feel free to copy this if you have a need for this kind of functionality!
(This is not a playable game.)
Cheers
// Jens




Anx - A game about social anxiety. Make your way to the safety of your home while avoiding humans and trying not to panic. Explore 3 different somewhat large 3d areas (defined using the 2d pico8 map tool) and get chased down by chatty pathfinding mobs look at you in your eyes and make your poor digital self flip out and lose touch with reality as the pixels of the world tremble and break apart.
Controls
up/down - forward/backwards
left/right - turn
A/B - strafe left/right (if using the keyboard, use X and C. If you want to reverse these there's an option in the menu.)
source on github - It's compiled into anx.p8 from a few different files then the whitespace and comments are stripped out into publish.p8. Start with main.lua which will be the easiest to read and which contains all the code and references to the other files.








A weird animated image generator, based on the screensaver "Electric Sheep" (except way less powerful).
USAGE INSTRUCTIONS
Press Z to generate a new flame.
Press S to save the current flame.
Press X to view saved flames.
When viewing saved flames, press Up/Down to move the cursor between saved flames.
When viewing saved flames, press F to select/deselect a flame.
When viewing saved flames, press Z to load the selected flame (instead of generating a new one).
If you have flames selected and you close the saved-flame-view (by pressing X), then any new flames that are generated will be bred from the flames that you've selected (as parents).
For example: If you select one flame, close the selector, and generate new ones, they will all at least vaguely resemble the one that you selected. If you select more than one parent and generate new ones, then the new ones will inherit traits from all selected parents (plus some randomized mutations).
Post me your prettiest children in the comments!

After using CMD+click to replace all tiles matching the tile under the cursor, the map editor stops allowing you to paint outside of a small area.
Reproduction.
- Download and load this cart in Pico 8:
- Select the map editor.
- Pan until the screen is centered on the colored tiles.
- The yellow "10" tiles should be just outside of the view on all sides.
- Select color #3, green.
- Select the paintbrush.
- CMD+click on one of the red "8" tiles.
- Pan in any direction so you can see the yellow "10" tiles again.
- Attempt to paint tiles inside the yellow rectangle.
- Attempt to paint on the yellow tiles.
- Attempt to paint outside the yellow tiles.
Expected results:
In step 7 all the red "8" tiles change to green "3" tiles. All the attempts to paint in steps 9, 10 and 11 succeed.
Actual results:
In step 7 all the red "8" tiles change to green "3" tiles, as expected.
In step 9 tiles are painted as expected.
In step 10 and 11, no tiles are painted. It is impossible to paint outside the area that was visible during step 7.
Okay, I think there's a very high chance of being misinterpreted here, so let me be 100% clear: I understand that sprite sheets #2 and #3 share RAM with the lower-half of the map data. That is not what I am reporting.
When I copy and paste an entire sprite in the sprite editor, with the destination in sprite page #2 or #3, then switch to the map editor, the corresponding change does not appear in the map editor.
Reproduction steps:
- Save this cart and load it in Pico-8.
- Select the map editor.
- Pan down to the yellow arrows.
- Select the sprite editor.
- Select sprite tab #3.
- Select sprite index 193.
- Press CTRL+C (or CMD+C).
- Select sprint index 195.
- Press CTRL+V (or CMD+V).
- Select the map editor.
Expected outcome:
The both yellow boxes of arrows should contain the same data. The left box corresponds to the memory for sprite index 193, and the right box corresponds to the memory for sprite index 195.
Actual outcome:
The yellow box on the right remains empty, as it was in step 3.
Observed in version: 0.1.10c on Mac
Analysis:
It seems the editor maintains separate GFX and map copies of the shared memory region and copies one to the other during some editing operations, but fails to keep them in sync during the paste operation.
Notes:
I think I also observed surprising behaviour in the other direction, where the pasted sprites were reverted after making unrelated map edits, but I've been unable to reproduce it when I try.
If I edit the sprite with the paintbrush after pasting it in step 9, I do see the expected outcome in the map editor. It's only when the last operation was paste that it seems to happen.

DrawINK
Submission for the 45th #1GAM game jam with the theme INK.
CONTROLS: Arrows/Mouse - Cursor movement, Z - Draw, X - Hide sidebars
USE:
[i][b]UPPER[/b][/i] - Pencil, Bucket, Rubber, Color picker, Line, Circle, Rectangle [i][b]LEFT[/b][/i] - Brush size [i][b]BOTTOM[/b][/i] - Colors [i][b]RIGHT[/b][/i] - Dithering |

SALEM
Submission for the 1st Fantasy Console Game Jam with the theme UNION by @kesi15 and @GrahmNesbitt.
CONTROLS: Arrows - Movement, Z - Left Turn, X - Right Turn, (spheres are shoot automatically)
OBJECTIVE: Survive all 25 waves by dodging spheres and avoiding enemies of different colors than the targeted character.

I recently wrote the following routine to scale text:
--scales some text, used for title function scale_text(text,tlx,tly,sx,sy,col) print(text,0,0,col) for y=0,7 do for x=0,#text*8-1 do local col=pget(x,y) if col!=0 then local nx=x*sx+tlx local ny=y*sy+tly rectfill(nx,ny,nx+sx,ny+sy,col) end end end print(text,0,0,0) end |
However it depends on first printing the text to the screen.
I was trying to think of ways I could enable scaled text printing while other things are going on. Right now I just keep a black strip at the top of the screen of my current game so that I can scale text whenever I would like.
One idea I had was to create a table outside of Pico-8 that matches the Pico-8 font, and each row would be a single byte where every bit is a pixel, 8 bytes each for all characters in the font, then look up the correct bit when scaling each character, instead. Problem with that is the space it could use up, I guess.
I was kinda hoping the font would be in some kind of pseudo "system ROM" readable using PEEK, but I didn't see this listed in the memory map.
Another idea I had was to print every character, read the pixels and keep the data in a table. It'd be a sort of ugly "blip" of text right as the game starts up, though, but it might be so fast nobody would notice...






Inspired by the true-life events of my good friend Ryan. My first game ever; I am not a programmer and taught myself what I could of PICO-8, making this whole thing up as I went along, so I'm sure the code is very inefficient and a mess, sorry! It's a simple game and is mostly a lifetime of inside jokes, but to the general public: I hope you enjoy it anyway!
Update 07/17/2017: Made a small change that draws a shadow under the first food item, which slides under the plate. It used to not have a shadow at all, and no one probably even noticed but it started to bother me!! I also made the secret a little less tedious to find...
Update 07/29/2017: I improved the food sprites, head animations, some code (some), and changed the ending big time, which I was never really satisfied with! Has anyone beaten the game yet?






Just got pico-8 yesterday! Had much fun messing around, this is the result.
It's a demonstration on the infallibility of gravity, I think... Oh, and particle physics. No, not that kind.
♪Infocommercial Jingle♪
Do you feel like there's something missing in your life?
Have you felt your heart shatter into a million pieces when your sweetheart found their sweetheart that's just not you?
Well, feel no more! With Beating Heart™ you too may find something to love.
Press c to pump the Beating Heart™. The more you pump, the faster it beats!
Features automatic heart rate slowing over time!
Requires 4AA batteries, computer sold separately.
WARNING, BEATING HEART(TM) IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND AS A MISGUIDED ATTEMPT TO WEIGHT LOSS.
IN NO EVENT SHALL ANYONE BUT THE USER BE LIABLE FOR ANY HEARTACHE, MUTILATION, DEATH, HEARTACHE, BURNT TOAST OR OTHER AILMENTS, WHETHER IN AN ACTION OF DEPRESSION, IRRATIONAL OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH ATTEMPTS TO LOVE THE BEATING HEART(TM) OR THE USE OR OTHER DEALINGS WITH THE BEATING HEART(TM). THE BEATING HEART(TM) IS NOT SENTIENT AND CANNOT THREATEN TO STAB THE USER.