Log In  

I code things sometimes.

Celeste and Hollow Knight and Portal 2 and Baba Is You and Prey and Outer Wilds and Ori and Minecraft.

[ :: Read More :: ]

Cart #baba_demake-2 | 2024-06-12 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Disclaimer: While this demake does contain an introduction level for each new element, I would highly recommend you play the original game before this! Because the demake is a lot shorter than the original, the difficulty ramps up faster than it probably should.


Arrows - Move
X/V - Undo
C/Z - Idle
R - Restart level
T - Title screen


There are 4 "worlds" containing 8 levels each, adding up to 32 levels in total.

Save Data

Your progress will be saved automatically. It will keep track of which levels you've unlocked, which one you were currently on, and your time. You can clear your save data from the pause menu.


Since some text can be hard to read depending on the background, there is an option in the pause menu to disable text darkening whenever a piece of text isn't part of a sentence.


Baba Is You - By Hempuli (Arvi Teikari)
Baba Is You Demake - By ooooggll (me)
Playtesting - The Baba Is You Discord
PICO-8 - By Lexaloffle

Making of Baba Is You Demake

This project started over a year ago, in a different form. Originally it was called Ba Is Yo, as I was using a larger text size that only allowed for two letters per word (the rest of the word had to be extrapolated by the player). I got pretty far into this project but ran into severe lag issues which killed my motivation. I also got a little ambitious with some of the features, namely the fact that I tried to implement WORD. A few months later, I restarted basically from scratch, with much better optimizations in place. I also managed to get condition-type text working with the text interpreter! The last few optimizations were related to autotiling and didn't actually happen until the last minute, for some reason. I'm really happy with how smoothly it runs now though.



  • Changed ` keybind (which unlocks all levels) to "U", which should hopefully work in the browser now


  • Fixed "darken text" menuitem not showing up
  • Added missing "skull is kill" rule to level 21
P#149645 2024-06-08 20:40 ( Edited 2024-06-12 16:02)

[ :: Read More :: ]

Cart #mapshuffle-0 | 2024-04-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

I made this tool for myself, for reordering levels to fix difficulty curves. But I thought I'd share it in case anyone else finds it useful.

How it works:

  • Press X to select a room, and then X again to swap the two rooms
  • Press C to preview a room
  • Maps are imported/exported manually using cstore. Cry about it :(

Note: Mapshuffle cannot import/export maps in the web player. You must download the cart and use it in immediate mode.


  • Back up your project in case something goes wrong.
  • Download mapshuffle.p8 and place the cart in the same folder as your project.
  • Open your project, type the following line into the terminal, and hit enter:
    cstore(0x0000, 0x0000, 0x3000, "mapshuffle.p8")
  • Now open mapshuffle.p8. The map and sprites should be copied over.
  • Shuffle the map to your heart's content.
  • Once it's done, type this line into the console of mapshuffle.p8, replacing "yourcart.p8" with the name of your project.
    cstore(0x1000, 0x1000, 0x2000, "yourcart.p8")
  • Finally, open your project back up and the shuffled map should be imported.

Also, credits to Maddy Thorson and Noel Berry for making Celeste Classic, which is the default map used in MapShuffle.

P#147322 2024-04-25 19:26 ( Edited 2024-04-25 19:34)

[ :: Read More :: ]

Cart #rest_in_pyrite-2 | 2023-11-16 | Code ▽ | Embed ▽ | No License

--- CONTROLS ---
Arrow keys to walk
C to jump
X to grapple (in goblin mode)
X to float (in ghost mode)

--- STORY ---
You are a greedy goblin looking for some gold in a dungeon. Unfortunately, the Evil Spirit of the Dungeon™ has cursed all of the gold so that whoever steals it becomes a ghost. There is a catch though: if you bring the gold back to the chest at the beginning of the level, you become alive again somehow!

Use your goblin grappling hook and ghostly floating abilities to make your way to the gold and back!

--- MAKING OF ---
This game was made by two people (ooooggll and Ummmm_ok) way back in October, for a game jam in a game design class. The jam lasted roughly 3 weeks I think. As a result, some features in the game might feel incomplete as we had to get it done by the deadline.

Technically we won this competition, but the teacher is a bit behind and hasn't formally announced this victory yet. I guess we were waiting for the announcement before we published our game to the BBS? But now I'm publishing it anyways. Enjoy!

Special thanks to @jasondelaat for the rotated sine wave function!

P#145799 2024-04-05 13:54 ( Edited 2024-04-18 02:37)

[ :: Read More :: ]

Here's a couple of tweetcarts I've made. Nothing too crazy (compared to the other insane tweetcarts I've seen here).

Cart #spiraltweet-0 | 2024-03-14 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

I was messing around with spirals and found some interesting patterns. Every once in a while, the arms of the spiral align and they even count down (6 arms, then 5 arms, then 4...). If you enable line mode, it creates shapes with the corresponding amount of sides (hexagon, pentagon...)

X to toggle line mode
C to stop spinning
Up/Down to speed up and slow down
Right/Left to step forward or back (most useful when it's fully stopped)

Cart #flappytweet-0 | 2024-03-14 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

This second one is just a flappy bird clone. C to jump. You also play as your score apparently.

P#142932 2024-03-22 02:29

[ :: Read More :: ]

Cart #rift-1 | 2023-12-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Use a Time Crystal to travel between the past (purple timeline) and present (green timeline). Your actions in the past affect the present, but not the other way around.

If you collect a berry in the past, it's vanished in the future.

If you collect a berry in the future, then get it in the past, the one you already got disappears from your total because it was never there for you to grab in the first place.

Length: 17 levels
Total Berries: 4
Made in 6 days for the 12 Days of Christmas Jam



  • Changed 500m and 700m to make the solutions a bit more obvious and less annoying


  • Added indicator for traveling to present/past in the bottom right corner
  • Made berry blocks disappear if the berry inside it was already collected
P#138784 2023-12-16 22:35 ( Edited 2023-12-19 23:49)

[ :: Read More :: ]

Cart #lab_cat-6 | 2024-02-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Welcome to the Laboratory!

You are a test subject in an experiment involving the effect of puzzles on the feline brain.

Procedure 1: All boxes need to be relocated to their designated sensors.

Procedure 2: Portals have been placed for your convenience. Use them wisely.

Procedure 3: Portals are not always stationary; they can also exist on boxes.


Arrow Keys - Move
C - Select
X - Undo
Enter - Pause Menu


  • Coding, art, levels:
  • Ideas and moral support:
  • Playtesting
    Aidan Southam
    And more!
  • Sprite help
  • Inspiration
  • Music
  • Label Image Art
  • Guest levels

About Lab Cat

This is probably the longest amount of time I've ever put into making a game (almost 10 months, although I didn't work on it much over the summer), and even before that, I was developing the idea. I'm very passionate about this game, but I think it's finally finished. Also, Lab Cat wouldn't be the same without my amazing friends who made music, art, and pointed out each and every bug they found.

Tokens: 8187/8192
Characters: 49790/65535
Sprites: 254/255
Map: 100%
Sounds: 48/64
Music: 44/64

I hope you enjoy it!

Play it on itch.io instead: https://ooooggll.itch.io/lab-cat
Full walkthrough: https://www.youtube.com/watch?v=QO0UBZiF-RA&t=6s



  • Added persistent save data and a button to clear save data
  • Now level progress, achievements, and settings will be remembered even if the cartridge is stopped


  • Fixed "it's shtuck" achievement not awarding correctly


  • Added a setting to change the move delay to behave more similar to btnp for a better (?) mobile experience
  • Added descriptions to all settings


  • Fixed a bug where barriers' powered state was not restored correctly when undoing
  • Changed the laser box in Level 22 to a wall-mounted laser to prevent an unintended solution


  • Fixed a bug allowing the player to phase through walls when undoing to the starting point
  • Fixed a bug where the menu music continued to play when entering level 1 from the level select menu
P#136390 2023-10-25 21:29 ( Edited 2024-02-13 21:48)

[ :: Read More :: ]

Cart #staminaleste-1 | 2023-12-02 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

So there I was, spamming the C key, wall jumping from left to right 100 times a second, when I thought, "wouldn't madeline get tired after all that? I, for one, can't do 2304809 wall jumps in a row." So I added stamina. It goes down if you jump, dash, or wall jump.

Cart #lageste-0 | 2023-11-18 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

This mod simply adds input lag to Celeste. I'd recommend 10 frames of lag, but you can modify it from the title screen to make it harder or easier. I challenge you to beat it on 60+ frames of lag >:)

Cart #celeste_teleport-0 | 2023-05-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Your dash has been replaced with the ability to teleport to the ceiling. I wish I had this ability irl, I would use it every day

Cart #celeste_clip-0 | 2023-05-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

You can phase through walls while dashing. I wish I had this ability irl, I would use it every day

P#129894 2023-05-19 00:08 ( Edited 2023-12-02 03:12)

[ :: Read More :: ]

Cart #budgetceleste-0 | 2023-04-01 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A few months ago I thought it would be funny to try to remake Celeste completely from memory. That means the physics, the sprites, the levels, the music, etc. I did get stuck a few times and have to reference Celeste briefly but most of it was made by me. Anyways I never finished the project so here it is as an April Fool's thing I guess.

Also, it only goes up to 2400m.

P#127963 2023-04-01 14:20

[ :: Read More :: ]

Cart #fivedayforecast-0 | 2023-03-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Yet another result of "I'm bored, let's open Pico-8 and see what happens." Also a result of watching too much bill wurtz probably.

P#127529 2023-03-24 01:09

[ :: Read More :: ]

Cart #innerleste-0 | 2023-03-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Made in like 40 minutes for some reason. Actually made throughout one day when I was bored in school but I ended up losing the cart (as per my last post) and remaking it as fast as possible.
You can stand on the little dots inside the ground (for beatability purposes).

P.S. I generally don't like naming mods ___este but I had to.

P#127431 2023-03-22 00:02

[ :: Read More :: ]

I was making a game on pico-8-edu.com and when I saved it, everything appeared to work normally. But when I tried to open that cart again on the education edition, it said it couldn't fetch the cart. Luckily I had the cart open in another tab so I saved it as a .p8.png this time. The image wouldn't open either. I renamed the .p8 to a .txt and it showed as an empty txt file. It also says both the .p8 and the .p8.png are 0 bytes. I need to restart my chromebook tomorrow so how can I save my cart (obviously without leaving the tab open)? I really don't want to lose the game, I've put a lot of hard work into it.

P#127422 2023-03-21 20:57

[ :: Read More :: ]

Cart #catlegs-0 | 2023-01-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

(requires a mouse)
(press c to flip cat)

P#124585 2023-01-20 03:37

[ :: Read More :: ]

Some usernames have spaces in them and thus are impossible to @ (Alex K. for example). I thought while creating an account it didn't even let you add spaces anyways so I don't know how they got those usernames. Not sure exactly how it could be fixed but it's annoying trying to reply to somebody who is literally impossible to reply to.

P#122448 2022-12-15 02:51

[ :: Read More :: ]

This is probably a huge request, but it would be super useful for me.

Nowadays, most of my Pico-8ing takes place on pico-8-edu.com on a school-issued chromebook. Which means it's bad. It randomly decides to sign me out, reload tabs, and/or clear my downloads folder. So I have to backup all my projects to Github daily or I risk losing my project. My friend @Ummmm_ok lost progress on like 3 games he'd been working on when his tabs reloaded and hadn't backed up in a while (he has the same situation as me).

It would be extremely nice (in my opinion) if the education edition worked a bit more like Scratch, where the projects are linked to an account and saved in the cloud. That way, it wouldn't be as much work to back it up all the time.

Perhaps there would just be a button in the top right corner with your username and profile picture. When you click it, it gives you a list of all carts saved on your account. Then you can click one to load it. It would autosave like every 30 seconds or so, or alternatively you'd have to manually save like it is currently.

Again, this would probably be pretty hard to do, but it would be super handy.

P#121656 2022-12-01 02:11

[ :: Read More :: ]

No, it's not a duolingo demake.

Cart #duo-0 | 2022-11-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

It's a simple demake of Duet, a (primarily) mobile game by Kumobius. Made in about 2 days.
Also featuring auto-generated levels! Yay! Let me know your highscore (or when you gave up because you were bored).

P#121646 2022-11-30 23:15

[ :: Read More :: ]

I just discovered that you can use W for next sprite and Q for previous sprite in the map editor. I think it would be really neat if instead, you could use WASD to move the sprite selection around. It would be super helpful to avoid moving the mouse back and forth, click to select a tile, place a single one, switch tiles again. As far as I know, ASD don't have any current uses so it would work pretty nicely.

P#120961 2022-11-18 21:43

[ :: Read More :: ]

The fifth parameter of clip() controls whether to make the previous clip smaller, or replace it. For instance...

clip(16, 16, 16, 16) -- small box in upper left
clip(64, 64, 32, 16) -- wide box in middle-ish
rectfill(0, 0, 127, 127, 12) -- fill clipped region with blue

This only fills the second region, since the first one was replaced with the second. But if I put true as the fifth parameter, like this:

clip(16, 16, 16, 16, true)
clip(64, 64, 32, 16, true)
rectfill(0, 0, 127, 127, 12)

This draws nothing, since the second clip didn't intersect with the first, and therefore canceled it out. So my question is, can I add on to the clipped region rather than subtracting from it or replacing it? Like maybe...

clip(16, 16, 16, 16, "add")
clip(64, 64, 32, 16, "add")
rectfill(0, 0, 127, 127, 12) -- fill both regions with blue

If there isn't an equivalent of this already, then this is a suggestion. True and false could still be accepted as arguments for backwards compatibility, but additionally, "replace", "intersect", and "add" could be accepted. Possibly 0, 1, and 2 also.

@zep, you better add this, OR ELSE.

P#120400 2022-11-09 22:04 ( Edited 2022-11-11 17:15)

[ :: Read More :: ]

So according to the wiki, if you poke(0x5f2d, 0x4), it turns on pointer lock mode, and then you can use stat(38) and stat(39) to read X and Y mouse movement. This isn't working for me, though. Both stat()s just return 0 no matter what. I'm not sure if you have to poke(0x5f2d, 0x1) first too, but either way it's not changing anything.

Here's a little demo cart to demonstrate:

Cart #cursorlock-0 | 2022-10-06 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

I haven't seen anybody else use it, so is it even possible? The only thing saying it's possible is the wiki.

P#118685 2022-10-06 23:11

[ :: Read More :: ]

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

Made for the Pico 1k Jam 2022. This was kinda my backup project since I couldn't get the other one under the 1024 byte limit.

You can change the mode from "auto" to "manual" in the pause menu and then use your mouse to place fireworks rather than them going off automatically!

Only 675/1024 bytes!

I definitely could've been more creative with it since it's quite a bit under the byte limit but whatever.

P#117821 2022-09-22 21:40

[ :: Read More :: ]

Cart #hallowneste-0 | 2022-07-03 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Explore the land of Hallownest as Madeline from Celeste Classic.
Gather Geo, defeat enemies, and purchase charms at Iselda's shop!

-- A Celeste Classic mod made by ooooggll and Ummmm_ok --
-- Made in a bit over a month for the CCMAMJ --

Ummmm_ok and ooooggll - code, sprites, and mapping
Maddy Thorson and Noel Berry - original game
Team Cherry - Hollow Knight
Evercore Developers - obvious reasons
Sheet music from:

  • Neimex23: Dirtmouth
  • Carnivorous Cannibal: Crossroads
  • And of course Christopher Larkin

Special thanks to the Celeste Classic Discord server!

P#113914 2022-07-03 00:32

View Older Posts