Log In  

Aspiring game developer. I really like character action games. Pico-8 is my dream console - a system (and community!) that encourages fun games that you can customize and tweak.

[ :: Read More :: ]

Cart #adventure_island_wip-1 | 2024-05-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A little Adventure Island (or Wonder Boy for some of you) -like that I have been working on. I want to test it easily on my Rg353, and its just easier to grab it from SPLORE than to do the whole song and dance with an sd card.

It might be buggy! And no sound yet! Lemme know what you think.

P#146585 2024-04-14 01:24 ( Edited 2024-05-25 02:13)

[ :: Read More :: ]

Cart #bitty_dig-1 | 2023-08-15 | Code ▽ | Embed ▽ | No License

Bitty Dig

A small digging game made for Low Rez Jam 2023.

Use your arrow keys to dig. You will need to collect stars to get air. Try to find an efficient path through the blocks.

Tip: You can jump by pressing up, and you can move side to side a bit while jumping.

I really want to make a slower-paced drilling game. I might continue to poke at this for balance.

P#133080 2023-08-15 01:55 ( Edited 2023-08-15 02:16)

[ :: Read More :: ]

Cart #meterstoshade-0 | 2022-10-02 | Code ▽ | Embed ▽ | No License

100 Meters to Shade

Ludum Dare link: https://ldjam.com/events/ludum-dare/51/1000-meters-to-shade

My entry to LD51, where the theme is "Every 10 Seconds." Use the arrow keys to navigate 1000 meters to the right, towards shade. When a solar flare is coming, hide in the shade of a cactus.

Thanks for playing!

P#118396 2022-10-02 21:58 ( Edited 2022-10-04 12:06)

[ :: Read More :: ]

Cart #hot_diggin-0 | 2022-09-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Hot Diggin'

A game in less than 1kb for PICO-1K jam 2022

Help Digson get away from the falling lava! Dig as fast as you can! Why is the lava falling? Who knows!


  • arrow keys (or gamepad DPAD) - move left and right
  • action button (Z,C, or N on keyboard, "A" on XBOX gamepad) - dig!
    • you can dig left and right by holding that direction while digging. Otherwise, you will try to dig down. You can only dig when your feet are on hard ground.
  • Your only goal is to outrun the falling lava. Touching red blocks will make the lava run faster. You can dig through red blocks, but doing so will GREATLY speed up the lava, so try to avoid this.
  • If you lose, pause (ENTER OR START) to restart.

Thanks to https://liquidream.itch.io/ for hosting. Game made with pico-8.

P#118042 2022-09-27 12:47

[ :: Read More :: ]

Only gamepads 0-3 are recognized by pico-8

Hi folks,

I can't seem to get pico8 to recognize gamepads beyond 4. Granted, my testing mechanism is a little haphazard, but I am confident it is working correctly.

Test procedure

Since I don't actually own enough gamepads to test this, I am using a python script to create "virtual" gamepads on my machine. Script for this is here: https://github.com/paloblanco/bros_mansion/blob/master/gamepad_test.py . This script registers 8 controllers, then just presses the a button once a second (which ought to get a response from my game).

Here's a screenshot of the whole setup. Note that windows recognizes 8 gamepads being plugged in.

desktop while running gamepad test script

I wait 3 seconds in between "plugging in" controllers so that I can watch them get registered in pico8. Only the first 4 get registered. I can't catch a gif of the joystick prompt appearing, so you will have to take my word for it.

Last thing - I have also tried starting joysticks at player 3 (pico8 -joystick 2), and this still only registers 4 controllers, but I can control players 0 and 1 via the keyboard. So, it is not a player-count-thing, but a joystick-recognition-thing.

4 out of 8 gamepads recognized (players 2-5) and 2 players on keyboard (0-1)

Is this a bug? Has ANYONE ever tried 8 players via gamepad at once on pico8?

P#114405 2022-07-16 14:00

[ :: Read More :: ]

Big Mapper

Click here for Github Repo for BigMapper

This is a utility for pico8, designed for editing map data. It will eventually be expanded upon, allowing you to edit and save to the pico8 extended memory. Its current major feature is allowing you to edit maps at 256x256 pixels, giving you a lot of breathing room.

I have chosen not to upload this to the bbs, for two reasons:

  1. It doesn't run properly on the web, due to the inability to pass commandline arguments to pico8 at startup.
  2. This is very much a "dev" tool, and not having it on your local PC doesn't make sense for its intended use case.

That being said, I encourage you to check it out, if for no other reason than to see how nice it is to have high-res utilities, and to see how easy it is to make them!


This cannot be run standalone - it must be run from the pico8 desktop client.

  1. Run this file from commandline, with the following arguments:
    pico8 -displays_x 2 -displays_y 2 mapper.p8
  2. Code editing only takes place in the upper-left quadrant, which is why i edit the code externally in mapper.lua.
  3. Usage instructions:
    Pan map around: ESDF
    Select a different sprite to place: Arrow Keys
    Switch between paint (point) and fill modes: B
    Save current map to cart ROM: 5
    Export current map to another cart (you will need to edit line 187): 4
    Paint or fill: Left mouse click
    Dropper: RIght mouse Click
    Undo: Z -- may be buggy!

Running in multi-display

If you are mostly interested in multi-display, this is my current understanding of it:

  1. You must run pico8 client from commandline, with the following args:
    pico8 -displays_x X -displays_y Y -- X and Y are how wide and tall the displays will be, integers
  2. Within your cart, you must enable multidisplay with a poke:
  3. You now have access to four displays! you must switch between them manually, and draw to them separately. This is a major CPU consumer!
    function _draw()
    for i=0,3,1 do

Check out my mapping cart for tips on drawing across all displays seemlessly!

P#113056 2022-06-12 14:15

[ :: Read More :: ]

Cart #mansion_bros-10 | 2022-07-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Mansion Bros

A fan game of a certain green fellow's exploits in trying to clean a mansion that is full of ghosts. Suck up ghosts, unlock doors, and find the trophy to conquer the mansion. Up to 8 players!

Disclaimer: I claim no ownership of the characters appearing in this game. This is a work of fanart, and I have no intention to profit from this work.

How to play

Arrows to move, any action button to use your vacuum. Suck up ghosts and find the trophy.
Other players can join in by pressing their action buttons. Game ends if all players run out of health. See if you can find every single diamond!


  • if you use your vacuum while holding a direction, you will suck in that direction. You can then strafe around by walking in any other direction.
  • want to play multiplayer but don't have a ton of controllers? If you have the pico8 desktop client, run the following command to have gamepad users start at player 3, and players 1 and 2 can use the keyboard (ESDF and SHIFT for p2):
    pico8 mansion_bros.p8 -joystick 2 
  • this game is fairly easy, but if you just want to ease up the difficulty even more, you can do so in the pause menu. The difficulty can be toggled to "kid mode" and back at any time.
  • Want to switch characters midgame? You can do so in the pause menu.
  • There is a continue function in this game, but no save feature. It's not a very long game, so this shouldn't be a big deal.


  • 2022-05-31 Added changes me nephew and I made:

    • King Boo is final boss
    • Added walls that need to be vacuumed up
    • added stomping bad guys
    • more health, better vacuum range
  • 2022-06-25 new changes before seeing family again:

    • level is longer
    • breakable walls
    • new enemies
    • title screen lets you select character
    • game defaults to "kid mode" - you do double damage and start with a ton of health
    • theoretically should support 8 players, but glitchy. not tested.
    • offscreen players snap to the lead player
  • 2022-06-28

    • lots of little layout changes
    • should be 8 player compatible. let me know if you can test!
  • 2022-07-06

    • first release
  • 2022-07-08
    • prepping for itch release. modified character names so they are, uh, original creations
    • added star system for when you beat the game. Can you figure out and get all 5 stars??
    • added a 6th star
    • better names for Pear and Daffodil
    • accidentally deleted the extra tail from a certain character.
P#112451 2022-05-29 16:36 ( Edited 2022-07-08 13:50)

[ :: Read More :: ]


I am working on a 3D raycaster game. It's largely working; see the gif below:

I am basically using zep's cast demo as a starter - if you look through my code you will see his draw_3d() function, albeit pretty heavily hacked at this point. I use tline() to draw my walls, and i apply a fillp() based on distance from the camera to get a (currently ugly) dithered lighting effect.

I would like to do the same thing for my floors! Except, I am drawing my floors vertically. See the next gif:

I only draw a floor (vertical line() downward) if my casted ray hits a wall OR a new tile type (thats how i get different floor colors).

Anyone have a cpu-conservative tip for how I could get a gradient similar to my walls on the floor? I COULD draw the floors first as a flood-fill, but this would ignore different colors and elevations. I can't think of any way to apply a smart horizontal-fill strategy, which would allow me to apply fillp() based on distance from the camera.

Here's the current cart, if anyone is interested:

Cart #sallyneptunefloors-0 | 2022-03-09 | Code ▽ | Embed ▽ | No License

P#108307 2022-03-09 02:36

[ :: Read More :: ]

Cart #sallyneptune-3 | 2022-10-16 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

My entry for Toy Box Jam 3, 2022. Help Sally Neptune escape from the evil Monocronies!

  • Move: arrow keys
  • Shoot and strafe: X. This will strafe if you are not targeting something, and will let you circle-strafe a target.
  • Jump: Z or C
  • Tips:
    • You will need keys to open doors.
    • Look for the giant Neptune coin to escape!
    • There are gun powerups around that will let your rainbow gun shoot faster. Try to find them all!

I've always wanted to make a game based on the cast.p8 demo, and this is it! I am very happy with how sprite occlusion turned out.

I wrote this game in multiple files, so it may be tough to read in the pico8 editor. When I get a repo up on github, I'll update this in case anyone wants to see how I made this. Enjoy!

--- October 16 2022 ---
I had originally wanted to flesh this game out more with extra levels, but that hasn't panned out. I did majorly optimize the graphics, so it runs faster and looks better. I wanted to share it here since it is much easier on the eyes now.

P#107497 2022-02-22 22:00 ( Edited 2022-10-16 15:59)

[ :: Read More :: ]

Cart #greatestthing-8 | 2021-04-28 | Code ▽ | Embed ▽ | No License

WARNING - sudden flashing lights and sounds.

The Greatest Thing

by PBG

My entry for the ludum dare 48 jam. Go on a pitfall-esque adventure in search of the greatest thing ever.

Arrow keys to move, Z/C jump, X/V carry things.

hotfix1 - fixed softlock in climbing room
hotfix2 - decided not to be a jerk and gave back key repeating by holding a button

P#91139 2021-04-26 19:35 ( Edited 2021-04-28 12:46)

[ :: Read More :: ]

Cart #class_inherit_example-1 | 2021-01-30 | Code ▽ | Embed ▽ | No License

Classing Example

While I like lua, it drives me crazy that it does not contain a simple class constructor like python, or newer version of javascript. I find the metatable concept to be very awkward and difficult to adjust to, coming from other scripting languages.

Here, I am demonstrating how I typically handle my actor objects when making games using an object-oriented approach. I like all of my game entities (like the player and NPC characters) to be their own objects with methods that are common to them (update and draw being the main needed items).

The snippet here is my starting templet for most of my games. The "Actor" table is my default object. The method "New" can be used for two things:

  • creating a subclass which will inherit all properties and methods of actor, unless they are overwritten explicitly
  • instantiating the "actor" into the game

If you are looking for a code snippet to get started and you want to use an object oriented approach, I encourage you to give this a try. Thanks!


P#86967 2021-01-30 16:00

[ :: Read More :: ]

Cart #myrtlecity-0 | 2020-01-01 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Myrtle Takes The City

My submission for Toy Box Jam 2019. Thanks to the organizers and content creators for putting together an awesome event!

Myrtle is visiting the big city, and wants to climb city hall! To get in, she needs to collect 7 gems. Maybe there are people in the city who can help?

How to play:
Arrows - walk
action key 1 (x, v) - run
action key 2 (z, c) - jump

There are not fatal hazards in this game, so don't be afraid to walk up to everything.

Feel free to post your best times, for both any % and 100%.


Notes for launcher:
cart name: myrtlecity-0
alias on itchio: Myrtle Takes The City
itchio link: https://paloblancogames.itch.io/myrtle-takes-the-city

P#71637 2020-01-01 19:23 ( Edited 2020-01-01 19:27)

[ :: Read More :: ]

Running PICOPi on the Retroflag GPi case

I just got a Retroflag GPi case, which is a cool little enclosure for a Raspberry Pi 0(W) that has the form factor of a GameBoy. This gadget is intended primarily for emulation, but I REALLY wanted to use it as a portable pico-8.

Spoiler alert - I did.

Most tutorials for the GPi case focus on getting RetroPie running, and there are also resources out there for getting pico-8 running in conjunction with RetroPie. This is fine, but I really wanted a gadget that quickly boots into pico-8, no questions asked. Luckily, a software engineer going by Gamaral developed an image for all raspberry pi models that fast-boots into pico-8. This is, to my knowledge, the closest we can get today to dedicated pico-8 hardware.

Goal of this tutorial

This tutorial will focus on getting PICOPi running properly on a raspberry pi 0(W) in conjunction with the GPi case. You can find all of these materials for purchase on most online retailers. There are plenty of tutorials showing how to build the thing once you get all the materials (non-trivial!). I will not cover this.

Physical stuff you need

  1. Retroflag GPi case
  2. Raspberry pi 0 (the W model has wifi onboard, but the setup is the same, and it doesn't matter since the picopi image has no widi support anyway)
  3. SD card formatted to FAT32

Software you need

  1. Patch files for GPi case http://download.retroflag.com/
  2. PICOPi download for Raspberry Pi A-B-0 original site is down https://github.com/paloblanco/rpi-buildroot/tree/rpi/dist
  3. Raspberry Pi build of pico-8 (You can get this from the downloads page here on lexaloffle)

What you need to do

NOTE Since I am not sure about the licensing on the code I am linking to, I have opted not to copy-paste the exact code you will be copying around. Trust me, though, it's pretty easy.

DOUBLE NOTE as with all DIY projects, you are taking on the risk yourself in installing all of this software - I am not responsible for any bricked hardware.

  1. Assemble the GPi case and the Pi 0 (I am not going to help you with this)
  2. Insert your sd card into a computer (win/linux/mac doesnt matter)
  3. Follow the PICOPi directions for setting up your SD card
  4. Here is where things get a tiny bit tricky. Extract the contents of the GPI case patch somewhere on your computer, then navigate to GPi_Case_patch\GPi_Case_patch\patch_files. You should see two items here, config.txt and a directory named "overlays".
  5. Open config.txt, and copy all the contents of the file to you clipboard. Navigate to your SD card, open config.txt, and paste all of these contents ABOVE all the contents on the SD card. Your config.txt on your sd card should flow like this:
    1. All text from GPI patch config.txt
    2. All text from PICOpi config.txt
  6. In SD\config.txt, navigate to the #OVERCLOCK section, and remove the pound sign from all the overclock specifications. You need these to run pico8 properly
  7. Copy the overlays directory from the GPi patch, and copy this to the root of your SD card.
  8. The GPi instructions might have told you to flip the "safe shutdown" switch under the battery cover to "on." We want it "off," since PICOPi already has safe shutdown built in to it.
  9. Thats it! plug in your sd card and you should be ready to go! I was impressed by how easy this was.

You will need to pull the sd card in and out of the case to load new games, since PICOPi has no wifi support, but that is a small price to pay for the ULTIMATE pico8 handheld. Enjoy!


P#69927 2019-11-15 19:16 ( Edited 2020-05-07 11:53)

[ :: Read More :: ]

Cart #wunuwenohi-1 | 2019-04-30 | Code ▽ | Embed ▽ | No License

I made this in about an hour for ld44's jam! Not much to see here, just really wanted to see if I could throw something together that fast.

Arrows to move. Collect booty from the shipwreck. Find a good ship and sale away to paradise.

My best time is 28 seconds (100% completion). Can you beat it?

Ludum Dare entry for this: https://ldjam.com/events/ludum-dare/44/risk-it-all-for-booty

P#64061 2019-04-29 21:37 ( Edited 2019-04-30 13:43)

[ :: Read More :: ]

Cart #dubayubeno-3 | 2018-12-04 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Hungry Harry is back! Help Harry as he travels around the world putting a stop to the mushroom gang!


Walk - arrow keys

Jump - Z or C

Lick things - X

High Jump - jump while licking

Long Jump - jump while licking AND holding a direction.

GOAL: Find the portal at the end of each level. Harry will get hungry over time, so make sure to eat enemy mushrooms as well as berries you find sitting around the levels.


Blue mushrooms are tough and can't be licked normally. If you eat a spicy pepper, Harry will turn red-hot for a few seconds. Use this time to eat the blue mushrooms.
If you lick while in the air, Harry can get a little extra boost. By licking on the ground and then jumping soon after, Harry can jump extra high or extra far, depending on whether or not you are holding a direction key down.
See if you can find every present in the game! You can get lots of berries from presents by licking them.


Is Harry too easy for you? Pause the game with ENTER and choose hard mode!

v1.1 - fixed possible softlock in level 2.
v1.2 - made hard mode accessible from menu instead of a weird code noone can do. Fixed some trouble areas.
v1.3 - fixed present count.

P#59509 2018-12-01 01:27 ( Edited 2018-12-04 13:12)

[ :: Read More :: ]

Cart #45729 | 2017-11-01 | Code ▽ | Embed ▽ | No License

Wow! I finally made a finished version of my LD39 game. Overall, I am fairly satisfied with this game, if not super enthused. I had to make many concessions to fit it into the token count. However, it is a surprisingly fully-featured procedural platformer, and it is something I am proud of.

Help Harry escape the procedurally generated caves!

How to play:

​Walk and climb - arrow keys
Burp (attack) - X
Jump - Z or C
Dig - down arrow


  • Harry will starve if you don't eat mushrooms along the way. Make sure to grab them!
  • ​the caves are randomly generated every game. If you get a tough set of caves, don't be afraid to try again!
  • If you get enough mushrooms, a powerup will appear above harry. GRAB THESE! they are they key to running faster, jumping higher, and burping harder!

​PRO tips:

  • ​when harry digs on flat ground, he will pile up the ground behind him. Use this to build platforms to help you climb higher.
  • the escape for each level is at the top, in the middle. If you find a way to break the ceiling, however, you can use that too!
  • Your hunger will occur at a faster rate each level. Mushrooms are almost always worth a detour.
  • You can jump for quite a while after walking off a ledge. Use this to your advantage!

v1.1 - Oct 31 '17

  • added text to harry's intro that points out your burping ability. Non-pico8 players did not know to try pushing X.
  • increased frequency factor of mushrooms from 1.5 to 2. SHould make things a bit easier.
P#45673 2017-10-30 21:48 ( Edited 2018-03-30 15:35)

[ :: Read More :: ]

Anyone try this? I've tried on the old 3DS and it silently fails to load the canvas. Can someone give this a go? this would sell a new 3DS for me.

P#45460 2017-10-25 12:51 ( Edited 2017-10-25 19:28)

[ :: Read More :: ]

Cart #43140 | 2017-08-09 | Code ▽ | Embed ▽ | No License

Poor Harry! He was taking a nap when the ice broke from under him! Help him climb out of the caves, and make sure he gets enough mushrooms to eat before he starves!

To play:
Arrow keys - move
Z - jump
Down - dig a hole
Up - climb most surfaces

I can't believe I finished this in time. It is pretty bare bones, but I am happy with it. I wish I had the time to add in enemies, but there you go.

Here is the link on Ludum Dare's site: https://ldjam.com/events/ludum-dare/39/hungry-harrys-climb

Congrats to everyone who finished LD39!


--edit Aug 1:
I've tried to clear up some confusion for LD39 participants. It is now hopefully clearer that the first level is actually a level that can be beaten. Also, i added a super-jump (hold up and jump) that should help with some of the trickier levels. The super-jump burns food though, so don't go crazy.

--second edit:
I removed the super-jump. This felt against the spirit of ludum dare, in that i was adding an ability after the competition ended. However, i DID fix the level generator so that all levels can be beaten - i feel that this was a bug fix.

-- edit 3
People keep digging through the floor, so I had to hardcode that to be impossible. Fix made for LD participants

P#42934 2017-07-30 19:47 ( Edited 2017-08-09 04:13)

[ :: Read More :: ]

*Edit July 28

I've been happy with this little cave-generator that i made. I might want to use some of it for Ludum Dare this weekend, so I am releasing the current code under the creative commons license.

You can try playing it now! it takes a few seconds to generate a level. There is no "win" state currently, but i envision a game where you have to avoid obstacles, collect stuff, and climb to the top of the cave.

I am using the algorithm i describe below, with a few improvements. If the cave that gets generated is "empty," which would make it impossible to climb, the algorithm will stick some bridges and ladders to climb into the structure. This process is dynamic, so if the cave is dense fewer will generate. Likewise, if you have a very dense cave, there is a safety-check that will make sure the cave can be completed by punching holes through blockages.

If you are interested in using some of this code and have questions, please let me know. The level-generation is almost entirely separate from the character code, so you can choose one or the other. If you are interested, I recommend looking at the callback functions (_init, _update60, and _draw) to understand the basic flow first. There is a lot of code here, about 3500 tokens, but most of it is lumped in the level generation and can be kept as is.

I imagine this being useful for quickly banging out a metroidvania or something along those lines. I hope you enjoy!



I recently started making a little game about a critter who falls into a cave and has to climb out. I wanted to create a big world, but I didn't want to actually design it, so i wrote a little script to generate a large cave-like structure.

The algorithm is pretty slow - it is based on a paper i read in grad school (but cannot remember) for modeling the nucleation and growth of particles in solution. I start with an empty space (64x128 array of zeros) and first create walls by making all of the border values 1. Then, I 'seed' the space by randomly selecting a fraction of the array locations and setting them to 1. I then run a kinetic-monte-carlo simulation. Every step, every single '1' in the array a small chance that it will attempt to move 1 space in a random direction. In chemistry, this represents the random movements small particles or even molecules will make in solution, brownian motion.

If a '1' element in the array is next to another '1', a stickiness factor is applied, making it harder for the element to move away - this encourages the growth of clusters. it is possible to modify this stickiness factor to create more spherical shapes, long shapes, etc. I could also seed the space with regular shapes like boxes or lines and use this algorithm to make them appear more organic.

Anyways, in the demo above, you can watch the simulation run - as it runs, you can see clusters forming. It usually takes me about 4000 frames before the level looks nice (i need to speed up the code!). There's actually a game here too - press z to hop into the caves and explore!

I cooked this up pretty quickly, and I really like how it looks. I will definitely flesh this out into a full game, but I thought this was a fun little demo so I decided to share.



P#42702 2017-07-22 02:34 ( Edited 2018-10-03 01:42)

[ :: Read More :: ]

Cart #30745 | 2016-10-12 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


9HOLE is a platformer where you are also golfing! Hit the ball to the hole (under par!) and then get to the hole yourself!

C,Z: Jump
X: Swing your club (hold the button for a harder swing!)

Arrows: Move the ball (a little bit!)
C,Z: releas ball control and control the character again.

SECRET: if you find the game a little easy, try pressing "Up" repeatedly on the title screen!

I will be doing more of a post-mortem in a bit, but I wanted to get this game online. Happy playing!



  • added tutorial text to level 1
  • fixed (hopefully!) spraying particles when your ball sits next to a wall
  • increased particle counts and lifetimes across the board (makes the game a little flashier)
  • fixed level 2 so that there is no point of no return
  • adjusted a jump on level 5 so it is a little more forgiving

in the future:

  • bug fixes as they get reported
  • I would like to flesh out the music with one more layer
  • ...that's it? I kind of feel like I've explored this idea to my content.

old version:

Cart #30451 | 2016-10-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

P#30452 2016-10-09 15:27 ( Edited 2016-10-12 19:51)

View Older Posts