Log In  

Hi! I'm cubee.

Self-taught game dev, amateur artist, and low-poly 3D modeller.

If you would like to support me, many of my games are available over on itch.io: https://pixelshock.itch.io/

Or, my website: https://cubee.games/

Terra - A Terraria Demake
Ninja Cat
[ :: Read More :: ]

Cart #gridnight_wallpaper-1 | 2024-05-06 | Embed ▽ | No License

A scrolling purple grid wallpaper, designed to fit with the built-in Moonlight theme.
By default, the grid scrolls to the left, shifts slightly in response to mouse movement, and has a clock in the lower-left corner.

It has various settings that can be adjusted in the pod file located here after first start:



  • Start Time - How long the initial fade-in should take.
  • Boot Wait Time - How long to wait before starting to fade in, to ensure the boot splash has completed before starting.
  • Show Time - Adds a clock showing the date and time in the lower-left corner when you move the cursor there.
  • Show Time Always - If Show Time is on, this makes the clock visible at all times.
  • Scroll Speed - How fast the background scrolls horizontally. Set to negative to go the other way, 0 to disable.
  • Follow Mouse - If on, the background will shift in response to mouse movement as if you were looking around.
  • Look Smoothing - Increase to make the mouse-shifting effect smoother, decrease to make it follow more precisely. 1 to disable smoothing. This helps when the cursor leaves the window, so the background doesn't "jump" so suddenly when the cursor comes back in a different location.
  • Invert Brightness - Inverts the brightness of the grid lines, so they're bright at the intersections and dark in between.

To install, simply save the cart in the following location and choose it from System Settings:

P#143815 2024-03-19 09:00 ( Edited 2024-05-06 09:25)

[ :: Read More :: ]

Cart #desktop_pet-3 | 2024-04-08 | Embed ▽ | No License

Some little poorly-drawn cat friends!
They run around on the desktop, sleep, hop, climb the edges of the screen, and bonk their heads on the toolbar if they jump into it.

-- Features and change history --

As of rev2 (BBS release), you can now:

  • Give them head pats. Sometimes they will go to sleep afterward.
  • Pick them up.
  • Place them on the side of the screen.
  • Wake them up from sleep.
  • Interrupt them when they jump; to catch them or make them fall.

As of rev3, they will jump to and sit on desktop icons!
You can place them on the icons yourself too, or move the icon and they will fall. Sometimes they will fall off on their own, heh.
^^ rev3a fixes a crash in the BBS player due to it lacking desktop icon metadata.

As of rev4, you can add custom characters using extra .gfx files and select them using the command line! See the Alternate Pets section for more information.
The cart currently includes Scribble the cat and Jelly the tiny bird. Simply run desktopPet.p64 jelly to set Jelly as the pet.

-- Alternate Pets --

Feel free to make your own pets! If you'd like I might even include yours as an option in the base cart! (given permission to do so) Put some character.gfx files in /appdata/cubee/pet/ folder and the program will let you change between them.

You can pass --help to get a printout of installed characters and how to use the command:

> desktopPet.p64 --help
usage: desktopPet.p64 char
char - change which character bank to use. currently installed:
you can install extra characters by putting their .gfx file in /appdata/cubee/pet/

To change the character used when run from startup.lua you would add the following argv parameter:

create_process("/carts/desktopPet.p64", {argv = {"scribble"}})

Where scribble is replaced with the character's name as shown in the --help output.

-- Tips and how-to --

If you made too many or want to get rid of them, you can grab them with the mouse and press [X] to send them away.

If you'd like to have it autostart when Picotron opens, save the cart file somewhere, then edit or create "/appdata/system/startup.lua" and add the line:


... changing the path to lead to the cart file you just saved.
This will simply start the cart in the default workspace (the Desktop) as soon as Picotron boots.

-- Future plans --

I very much want to make them interact with other windows, but I don't know if there's a way to retrieve a list of window coordinates/dimensions at the moment. If I work something out, or you do, we can add the final piece of essential screenpet functionality! (that being, sitting on windows)

P#143729 2024-03-18 17:44 ( Edited 2024-04-08 01:22)

[ :: Read More :: ]

Cart #tomorrow-6 | 2023-11-24 | Code ▽ | Embed ▽ | No License

Made for the 20 Second Game Jam. See the game's submission page!

Use your oddly jar-shaped mallet to fling Tomorrow toward the end of the level and whack Krikz the robot before the timer runs out! There are 5 optional sandwiches to collect throughout the stage.

Mastering the controls and learning the level layout will be essential to completing it in time, especially so if you wish to collect all of the sandwiches as well.

To make the game more accessible, there is an alternative mode with timer pickups scattered through the stage, and another with no time limit at all. Though, these modes do go against the jam's limitation, hence being optional. Think of them as "exploration aids" to help you learn the stage and determine a route through with a more relaxed time limit, while you attempt to reach the under 20 seconds mark.

The story:

The player character, Tomorrow, is mad at Krikz the robot and needs to whack him on the head to calm down before the rage consumes her.

Ability/Controls notes:

  • Standard run-jump platformer controls, with O/jump and X/attack
  • X while on ground: hammer attack
  • X while in air: hammer spin
  • Hit the ground or an enemy while hammer-spinning to bounce forward. You can quickly build speed by chaining bounces
  • Hold down to fall faster
  • Wall jumping: touch a wall to slide, O to wall jump
  • You can walk past spikes, though falling into them will damage you
  • Falling onto spikes while hammer-spinning will cancel the spin and bounce you backward. Previously, this would completely destroy the hammer, leaving you unable to complete the game. Not fun!

Change history:


  • final rounds of testing
  • full release on lexaloffle and itch.io


  • add music - a short track for 20 seconds mode and a longer one that loops for the pickups and explore modes
  • restore hammer bounce sound effect that went missing at some point
  • add tick tock sounds to the time up screen
  • work around being able to accidentally kill krikz without triggering the cutscene (good luck getting through 32000 health points)


  • change fade transition to be a cutout of a jar of vegemite
    • this does drop performance to 30fps in certain performance-heavy cases, as it is covering the entire screen with tlines. fortunately, this is only during the end of the fade out animation so it does not affect gameplay
  • minor graphic adjustments
  • add hammer to the title screen


  • came up with a name related to the random story I came up with for it: "tomorrow's vege-mallet therapy (in 20 seconds or less)" which sounds like a cheesy advertisement and i'm all here for that
  • add title/help screens and game over/win screens with their own unique backgrounds
  • implement a tileset and decorations for the level, as well as a parallax background
  • overhauled text printing to have a border and drop-shadow effect thing
  • minor adjustments in a lot of places


  • adjusted wall-jumping physics to make wall jumping more consistent
  • sandwiches now give 1 hitpoint
  • add ending quick-time event
  • minor layout and graphics adjustments
  • moved health display to hud


  • fix a couple issues


  • The hammer is a massive jar of Vegemite (link) attached to a stick, hence why it used to shatter on spikes. Tomorrow's use of this hammer and its abilities fit the jam's themes "people are strange" and "overpowered"
  • The robot designs are similar to the Sonic the Hedgehog series. (is this a Sonic fangame now?)
  • The hammer mechanics are an evolution of an idea I had years ago for Amy Rose's moveset in a Sonic fangame that never came to fruition.

P#137899 2023-11-26 01:49

[ :: Read More :: ]

Cart #terra_edit-0 | 2023-08-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A world editor for Terra - A Terraria Demake.
This is an early version, there are a few bugs here and there, but I'm uploading it now so people have access to it. Post your creations!


You need a keyboard and mouse to use Terra-Edit.

Move view - Arrow Keys or ESDF
Tile palette - Tab
Tool action - Left click
Tool alt action - Right click
System menu - Enter


Terra-Edit starts with a world selection screen. Navigate this with the arrow keys and Z/X.
You can drop an existing world file to edit, or generate a new world using one of the other options. Once you have a world open, you can move the camera around with the arrow keys.
Select tools by clicking them along the top bar. Most tools have a tooltip at the bottom of the screen saying what the tool can do.
Once you're done editing, press Enter or click the wrench icon to open the system menu, where you can find the option to save your world. From this point, saving works exactly the same as Terra, so refer to that if needed.
Also in the system menu, you can find a few options to toggle certain rendering features like lighting and treetops.

Known Issues

  • When lighting is enabled, the UI darkens as well, in much the same way as Terra. Unlike Terra, this can be resolved easily as Terra-Edit's UI covers entire scanlines instead of arbitrary shapes.
  • Tiles selected by the copy tool follow the cursor when it's over the toolbar.
  • Tile selections may behave oddly when changing tools with a selection active.
  • The code is kind of bad. Like code-spaghetti bad. I need a bit more experience making editors.
P#133629 2023-08-27 22:38 ( Edited 2023-08-28 02:02)

[ :: Read More :: ]

Run export game.bin -i 1 (with a sprite in slot 1) while the editor is using a custom palette with the palette persist flag poke(0x5f2e,1)

The resulting executables will have icons using the default palette instead of the custom one the editors are currently using:

Source sprite:

(This also causes the command line to use the default palette temporarily while the command runs)

P#122677 2022-12-19 03:19

[ :: Read More :: ]

As the title states, as far as I can tell exported carts (via export cart.bin, HTML works fine) don't have 0.2.2b's "force-pause-menu" on hold feature implemented in any form.

This is preventing me from building an exported Terra, which has the saving functionality as an option in the pause menu, accessed by holding pause while the normal pause key press is used to open the inventory. And I can't work around it easily, because the pause key is only returned the first time it is pressed. (As you probably know, Terra doesn't exactly have much space to spare)

I feel like it should be there. Especially considering this can prevent controllers from exiting the game.
If it's intentional for tools, could it be added as an export flag? So say export cart.bin -s for a "safe" export with the forced pause enabled. Or the opposite, so it uses the same default behaviour as everything else and then an "unsafe" flag would disable it.

P#117137 2022-09-10 11:19

[ :: Read More :: ]

Combining large map size (e.g. poke(0x5f56,0x80,0)) with the new return value for out-of-bounds mget poke(0x5f36,0x10) poke(0x5f5a,255) causes any tile 128+ to be returned as the defined return value instead of the actual map tile.

Map width 256: Unable to interact with blocks and treetop rendering does not detect tree tiles anymore.

If map width is less than 128, tiles from map edge to 128 return zero and 128+ return the defined return value.

At 128 tiles:

P#117055 2022-09-08 04:24

[ :: Read More :: ]


I've been trying to figure out how to use PX9 to compress the spritesheets for my beat-em-up game, but I haven't been able to figure out how to use it properly.

I want to compress 2 spritesheets (and maybe the map as well) from the 0x8000 extended memory into the normal spritesheet/map, then decompress them back to the extended memory later.

Here's a look at the current sheets

World sheet
The existing compressed-looking data is copied directly from Wobblepaint. I'm not sure if it'll compress, and only the second one is used.

Actor sheet

If anyone could help, it would be greatly appreciated!

If you would like to see the details I've released so far about the game, you can look at my Twitter or its page on my website.

P#113129 2022-06-14 09:32 ( Edited 2022-06-14 09:32)

[ :: Read More :: ]

Cart #fnf_release-1 | 2022-03-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

I've finally decided to post an updated version of this outside the Pico Night Punkin' thread, since I figured out how to do "transparency" effects, and it kind of got buried by the insane amounts of comments the PNP thread got. (25 pages!?)

Anyway, it's a demake of the song Release from the Garcello mod for Friday Night Funkin'!

Fancy features:

  • Toggle for Ghost Tapping and Botplay in the pause menu, in addition to downscroll.
  • PCM audio for Garcello's voice in one part. You know the one.
  • Transparency effects for the smoke.
  • Slightly improved UI that shows your combo breaks.
  • Screen zooming on the beat.

If the audio lags behind the gameplay, try using a different browser or running it in standalone PICO-8.

P#109348 2022-03-29 07:10

[ :: Read More :: ]


If you want to play the singleplayer version you can find that here.

Important! Before you make any progress:

This version does not have any support for saving and loading your game! That was one of the things I decided to remove in order to fit the multiplayer functionality in without modifying the core gameplay and progression. If you'd rather I remove the Plantera boss or something instead, then I'll see what I can do.

In addition, this version tends to lag behind the main version in terms of updates, as making sure everything is ported over correctly takes time. I make no promises on when or if this version will recieve any updates.

A tiny fanmade demake of Terraria in PICO-8! Now with multiplayer!
If you haven't already, please consider getting the original game. This is only a small portion of what Terraria has to offer!

And if you enjoy this demake, please consider supporting me by buying one of my other games over on itch.io: https://pixelshock.itch.io/


How to play?

Due to PICO-8 only having 2 buttons, I've had to use the system pause key and a keyboard key for the inventory buttons. This unfortunately means that you have to use a keyboard for this.
If sitting that close together is uncomfortable (or impossible due to restrictions), you should be able to use 2 keyboards, one for each player, and sit an appropriate distance apart.

Player 1:
Z/C/N - Jump
X/V/M - Use item
Left/Right arrows - Move
Up/Down arrows - Aim tool up or down
P/Enter - Open crafting/inventory screen

Player 2:
Tab/W - Jump
Q/A - Use item
S/F - Move
E/D - Aim tool up or down
T - Open crafting/inventory screen

Inventory screen:
🅾️ - Pick up item or craft
❎ - Move selected item to trash
⬆️/⬇️ - Scroll / change selected item
⬅️ - Go to Left side
➡️(Left side) - Go to Right side
➡️(Right side) - Recover trashed item

General tips:

  • Cut trees with the axe, mine blocks with the pickaxe, and attack enemies with the sword.
  • To craft items, open the inventory and press left to go to the crafting column. There you can press O/Z to craft one of the highlighted item or hold it to keep crafting that item until you let go or run out of materials.
  • You can drop items one at a time by picking them up from your inventory (so it "floats" to the side) and then pressing the trash key. If done incorrectly, you can recover the item from trash by pressing right.
  • To change the selected item, open the inventory and press up or down, then close the inventory.
  • Platforms are placed one block lower while moving horizontally to make building platform bridges easier. Just hold the use item button and walk!
  • Hold down, X and left or right while holding a block to build a platform horizontally.
  • Hold down, X and jump while holding a block to build vertically.


  • A large map of 256x128 tiles, stored using the extended memory.
  • Various biomes: Forest, Jungle, Corruption, Underground, Caverns, and Underground Jungle.
  • 4 bosses: King Slime, Eye of Cthulhu, Ocram, and Plantera. (The Eye of Cthulhu and Ocram are night bosses and therefore can only be fought at night time)
  • Many enemies for each biome and underground, with most having multiple variants. (24 in total)
  • Slightly less fancy world generation with spaghetti caves.
  • Mining and crafting.
  • Various melee and ranged weapons. Ranged weapons automatically aim towards the nearest visible target, prioritising bosses.
  • A basic palette fade lighting system, with a day-night cycle.
  • Quite a few progression/recipe changes due to space limitations, details in the original version's thread. (Link in the banner above)
  • Life Crystals and Shadow Orbs to smash!


  • Unsure, but mobs may be unable to spawn around player one. I'll have to check to make sure.

Frequently Asked Questions (Probably) and Information

  • How do I do < insert something here >?
  • Why can't I save in this version?
    • I already answered that above, but anyway, unfortunately I had to scrap that, among other things, just to get split-screen to even work.
  • Why is this a separate cartridge?
    • Because there wasn't enough space in the main cart, and to my knowledge, there isn't much I can do to further optimise what's there.
  • Why is the performance so bad I want a refund.
    • First of all, it was pushing the limits already with one player, a second one just makes basically everything player-related cost twice as much (and I kind of just threw it together). Second, this is a free product!
P#108886 2022-03-20 09:36 ( Edited 2022-12-24 04:09)

[ :: Read More :: ]

I made this for use myself, because i couldn't find anything for this specific purpose. Thought I'd post it here in case anyone else gets some use out of it.

It converts a list of variables in the following format to a version optimised for tokens:

-- input

-- output

To use it, paste the original variables into the cart and it will output the "crunched" version out to the clipboard.
Bit of a warning though, this format gets unreadable fast.

It also seems (in most cases) to work if some of the values are already in this format as it simply pairs what's before the equals with what's after, e.g.:

-- input

-- output

-- input (don't put crunched variables on the last line)

-- output (note the extra commas on the end)

On that note, it won't work properly if multiple equals signs are on the same line.

Make sure to press ctrl+c to copy

Here's the cart:

Cart #var_cruncher-0 | 2022-02-23 | Code ▽ | Embed ▽ | No License

P#107532 2022-02-23 10:09 ( Edited 2022-02-23 10:10)

[ :: Read More :: ]

Cart #terra_1cart-43 | 2023-08-16 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

You can get downloadable versions of Terra and the character editor which are usable offline from Terra's itch.io page!

Also, a member of the community has started work on a Fandom Wiki and Discord server.
I will contribute to these when I am available to do so.

A tiny fanmade demake of Terraria in PICO-8!
If you haven't already, please consider getting the original game. This is only a small portion of what Terraria has to offer!

And if you enjoy this demake, please consider supporting me by buying one of my other games over on itch.io: https://pixelshock.itch.io/

If you would like to play with another person, there is an (outdated) multiplayer version available here!
Just keep in mind that this multiplayer version does lack saving functionality, and a few changes from more recent updates.


How to play?

(Please note that this game was made in PICO-8 0.2.5. It won't work at all on versions older than 0.2.4 even if you manage to load it)

Change between Controller Mode and Mouse Mode by holding the pause button while in-game until the menu pops up and pressing "TOGGLE MOUSE".

Game (Controller Mode):
🅾️ - Jump
❎ - Use item
⬅️/➡️ - Move
⬆️/⬇️ - (Tools) Aim up or down
Pause/Enter - Open crafting/inventory screen

Game (Keyboard+Mouse Mode):
Space/Right Click: Jump
Left Click: Use item at mouse location
Scroll Wheel: Change selected item.
A/D: Move left/right
E/Enter/Scroll Wheel Click - Open crafting/inventory screen

Inventory screen:
🅾️ - Move item to hovering slot or craft
❎ - Recover trashed item. (With hovering item: Move hovering item to trash)
⬆️/⬇️ - Scroll / change selected item
⬅️ - Go to Left side
➡️ - Go to Right side

General tips:

  • Cut trees with the axe, mine blocks with the pickaxe, and attack enemies with the sword.
  • To craft items, open the inventory and press left to go to the crafting column. There you can press O/Z to craft one of the highlighted item or hold it to keep crafting that item until you let go or run out of materials.

Tips for Controller Mode:

  • To change the selected item, open the inventory and press up or down, then close the inventory.
  • Platforms are placed one block lower while moving horizontally to make building platform bridges easier. Just hold the use item button and walk!
  • Hold down, X and left or right while holding a block to build a platform horizontally.
  • Hold down, X and jump while holding a block to build vertically.

Tips for Mouse Mode:

  • You can place and break blocks anywhere within a small circular range around the player.
  • Due to a helpful feature from Controller Mode, platforms are placed one block lower while moving. Position the mouse cursor accordingly!


  • A large map of 256x128 tiles, stored using the extended memory.
  • Various biomes: Forest, Jungle, Corruption, Underground, Caverns, and Underground Jungle.
  • 4 bosses: King Slime, Eye of Cthulhu, Ocram, and Plantera. (The Eye of Cthulhu and Ocram are night bosses and therefore can only be fought at night time)
  • Many enemies for each biome and underground, with most having multiple variants. (9 types, with 25 variations in total)
  • Fancy world generation with spaghetti caves.
  • Mining and crafting.
  • Various melee and ranged weapons. Ranged weapons automatically aim towards the nearest visible target, prioritising bosses.
  • A basic palette fade lighting system, with a day-night cycle.
  • Quite a few progression/recipe changes due to space limitations, details in the [Terra Wiki] section
  • A separate character creator cartridge that is completely optional. (You don't lose any content with just the game cart)
  • Optional keyboard + mouse controls!
  • Life Crystals and Shadow Orbs to smash!

How to save your worlds and players:

Please note that as far as I can tell this won't work on mobile. (at least for the majority of devices)

The pause menu can be brought up by holding the pause button, where there will be an option to save. Alternatively, on the web player version above, you can click the pause button to the right of the game.

  • When saving, the player, then the world will be copied to the clipboard. Paste these into an empty text file each to save them! If you're overwriting an existing file, make sure that you empty it completely first. (for example, in most text editors you would press ctrl+a to select all, then backspace to delete the old save, then ctrl+v to paste the new one, then save it with ctrl+s)
  • When loading, simply drag and drop each file onto Terra when it asks and it will load them for you. Alternatively, you can copy the contents of the file and paste them onto the game.

Here is a video for a visual demonstration:

Just a note, Terra does not check if the file has valid data before loading it due to token limits, so it will blindly load whatever you put into it.
For example, if you try to load a world file when it asks for a player file, the game will restart. Loading a player file for the world will spawn you in a new world, with whatever "random" data Terra interpreted from the player file spread across the top of the world.

Terra Wiki

A Terra Wiki is being built on Fandom.

There is also an itch.io thread that you can refer to in the meantime:


The parts other than save file formats are here mostly due to running out of space in the cart, do with them what you will.

World save file format

A 32KB file of characters, stored as the CHR() of the tile id plus 32. So tile 1 is stored as CHR(1+32), which is "!", and tile 65 becomes CHR(65+32), which is "a".

Due to how Terra loads save files, any multi-byte characters (emojis, etc...) will be loaded as multiple tiles. This is the reason why the location of the tree trunk sprites changed in 1.3, not that anyone noticed, and also why I have to move items around whenever someone wants me to add more tiles.

Here is a simple program that loads a world file and allows you to pan the camera around:
(outdated, some tiles may be missing or different)

Cart #terraworldviewer-3 | 2022-01-04 | Code ▽ | Embed ▽ | No License

Player save file format

-- 1.3 to 1.3.2b --

-- 1.3.2c to 1.3.2d --

-- 1.3.3 to 1.4.1c --

-- 1.4.2+ --

php: Player's current health
php_max: Player's maximum health
hurtsound: This character's hurt sound (0: default, 12: high, 24: deep)
orb_counter: Stores how many Shadow Orbs this character has smashed.
world_time: The time the world was in when the player was saved. This is loaded for any world you open, so if it's night time when you save, all worlds loaded with that character will be night.
id: Item ID
amount: Amount of last item ID
gfxdata: Hex representation of the 7x1 sprite data used for the player. It's the same format as is copied from the PICO-8 sprite editor, minus the GFX tags and the first 4 numbers used to store width and height. If empty, it simply uses the default guy that is stored in the game cart's spritesheet.

As some examples, here is the character I used to test version 1.3.1:


And a newer one with graphics data and the hurt sound included:


Sprite Flags

0 - Solid
1 - Breakable with pickaxe
2 - BG wall (breakable with hammer)
3 - Not used (top-solid platforms in earlier versions)
4 - Needs support (breaks when tile below is broken, like the workbench and life crystals)
5 - Door (If solid flag is set, the next sprite is the OPEN door. Otherwise, the previous sprite is the CLOSED door)
6 - Draw automatic BG walls (workbench, torch, etc...)
7 - Produce light (torches, campfires)

Mob List Format

Each mob has a section of the stats string in the following format:


Use 1/0 for true/false on angry and rspr.

colour is the colour of the particles that this mob creates when damaged.

ai determines how this mob behavies:

  • fighter: Zombies, skeletons, etc. Increase vmod: Walks faster.
  • slime: Standard slime AI. Increase vmod: jumps more often and more quickly.
  • flying: Eaters of Souls, hornets, bats. Increase vmod: Moves faster.
  • eye: Demon Eye AI. vmod has no effect.
  • projectile: Shoots directly towards the player's position when spawned. Increase vmod: Moves faster.
  • eoc: Eye of Cthulhu and Ocram AI. Ocram shoots lasers and continues spawning servants in phase 2. Increase vmod: Moves faster.

knockback multiplier for how much knockback this mob takes from the player's weapons.
vmod is a multiplier for the speed of this mob. Some AIs don't support this.
angry is useful for making slimes instantly hostile on spawning.
If rspr is false, use sx as the sprite id. Otherwise if rspr is true, sx,sy are the map coordinates of the centre of the sprite. w,h are the tile dimensions of the sprite.
If palette swapping is wanted, fill pal with the palette. If you set the following values, make sure to at least set pal to 1, otherwise the sprite may look broken as colour 1 gets replaced with 0 when pal is supplied but empty.
phaseswitch determines the health value at which EOC AI will move to phase 2.
scale sets how large this mob should be.

Palette format:
Overwrites the colours in order from 1-15. So for the most optimal palette swapping, draw the base sprite using colours starting from 1.

Drop format:
If amount is negative, then the item id will always drop the positive amount. Otherwise, the drop quantity will be randomised with later entries losing more drops. i.e 4th drop with amount=10 will drop 6-10 items, 2nd drop with amount=2 will drop 0-2 items.

Recipe Format:


output_id: sprite id of item to craft.
output_amount: how many items to craft. (default 1, can be omitted)
required_tile: what tile id is needed to be near in order to craft. (default none, can be omitted)

id: sprite id of required ingredient.
amount: amount of ingredient required. (default 1, can be omitted)

Separate them using semicolons.
Place these in the recipes string.

Item Stats Format


damage: How much damage the item does to mobs on hit, or for items of type=="hpup", how much health is given.

type: Can be: melee, ranged, pick, axe, hammer, block, item, hpup, summon, boot for specific functionality:

  • melee: Standard melee weapon.
  • ranged: Shoots projectiles, consuming ammo with the item id specified in value.
  • pick: Mines blocks.
  • axe: Chops trees.
  • hammer: Breaks background tiles.
  • block: A tile that can be placed.
  • item: (Default) An item usually used for crafting, otherwise has no use.
  • hpup: Heals player or increases player's max HP, if value is 0 or 1 respectively.
  • summon: Spawns a mob to the left of the player, consuming the item.
  • boot: While in the inventory, sets the player's max speed to value and jump power to scale.
  • armour: While in the inventory, sets the player's defence to the value of damage.

You can also set it to a unique value to be used as ammo for specific ranged weapons:

  • bullet: Consumed by bullet weapons. (Guns)
  • arrow: Consumed by arrow weapons. (Bows and Repeaters)
  • gel: Consumed by gel weapons. (Wand of Sparking and Flamethrower)
    If you add a custom ranged weapon, you can also make your own item type for custom ammo.

usetime: Higher value = slower swing speed and longer mining time

value varies based on type

  • type="melee": Multiplier for how far mobs get knocked back when damaged. Increasing primarily affects slimes, decreasing affects everything.
  • type="ranged": Item type to be used as ammo (usually bullet or arrow, gel for Wand of Sparking and Flamethrower)
  • type="summon": Entity id to spawn
  • type="hpup": If 1, increases the player's max HP (life crystal) to a maximum of 400, otherwise simply heals the player (potions).

autoswing: Set to 1 to enable autoswing for a ranged or melee weapon. Omit it if it isn't supposed to have autoswing.

scale: Determines how large this item should be when used.

for type="ammo":

  • usetime sets the projectile's speed.
  • value is the sprite id that the projectile uses when fired.
  • scale determines how many times the projectile can hit enemies before disappearing. 0 is unlimited.
    In addition, you can set sprite flags to modify ammo behaviour:
  • Flag 0: Apply gravity to the projectile.
  • Flag 1: Do not consume this item when fired.

Certain flags work for all items:

  • Flag 7: prevent this item from being swung. Useful for ammo, boot, and other types that utilise the usetime and scale parameters for other purposes.

Place it at the index of the item's sprite id in the toolstat string.

Music Layout

Music by Jo560hs:
0: Overworld
12: Underground
22: Corruption
31: Jungle
41: Boss 1

Music by cubee:
53: Night music


The history of Terra!

1.0: Release Time!

  • Initial release (8191 tokens)

1.1: Fixing Of Bugs!

  • Read some feedback
  • Reduced respawn cooldown and made mobs despawn instantly upon dying
  • Optimised player collisions for tokens and maybe a minor performance boost?
  • Moved selected item text above player's head to be more obvious
  • Optimised recipe list for tokens using split (8097 tokens)
  • Moved some stuff around
  • Made generation text use the centre print function instead of doing it manually there (8084 tokens)
  • Added ability to play night music in forest biome
  • Made increased spawns while moving only work underground
  • Reduced spawn rates as count approaches cap
  • Fixed walls not being blocks
  • Added wooden door, grey brick, and red brick (8188 tokens)
  • Made ranged attacks prioritise aiming towards bosses if they're alive and in line of sight (8169 tokens)
  • Reduced stats of bosses slightly due to lack of armour/accessories
  • Reduced gravity effect on arrows and increased their velocity slightly
  • Added dropped health pickups from enemies and the Eye Of Cthulhu's servants (8189 tokens)
  • Broke the inventory, it's off the screen now
  • Fixed the inventory, it's on the screen now
  • Reduced tokens some more (8180 tokens)
  • Made respawning happen when the player presses a button instead of after a timer
  • Changed mob despawn range into a circle instead of a square (8163 tokens)

1.1b: EoC Fix

  • EoC's servants had their drop item set as their defence, which caused a crash when attacking them

1.1c: A few fixes

  • Can now place tiles that need support (workbench, torch) on top of platforms.
  • Hopefully fixed a crash related to items with missing stats

1.2: Trash, balance and bugfixes

  • Fixed the Eye of Cthulhu servants' drops (for real this time)
  • Reduced mob cap to 8 (from 16)
  • Made bosses able to spawn even if the mob cap is reached (8183 tokens)
  • Added ❎ to delete selected item in inventory (8192 tokens)
  • Reduced tokens in worldgen
  • Modified corruption generation (8117 tokens) (it does usually take longer, but i needed to save tokens)
  • Added trash slot, trash selected item with ❎ and recover trashed item with ➡️ (8154 tokens)
  • Fixed crashes with empty inventory (8185 tokens)

1.2.1: More bugfixes

  • Fixed grey and red bricks dropping barriers
  • Fixed crash when placing a picked up item into an empty inventory
  • Demonite bars now need a furnace to craft
  • Reduced tokens by moving a few items into data strings that weren't already
  • Reverted a token saving change that broke surface cave generation. Now you shouldn't spawn in a rectangular hole in the ground anymore (8186 tokens)
  • Doors now break when the tile below them is broken
  • Applied token-saving techniques elsewhere (8163 tokens)
  • Made the secret boss bigger and added its second phase sprites
  • Fixed a bug where hitting a tree with a hammer caused the game to freeze. Caused by a leftover sprite flag from early on in development.
  • Added sound effect for magic mirror (8166 tokens)

1.2.1b: Shadow orb fix

  • Shadow orbs now drop items in order properly, I had put the current item counter where ANY wall would trigger it, instead of just shadow orbs.

1.2.2: Music update!

  • Added music by @jo560hs
  • Replaced the death sound with the enemy hit sound and removed an unused sound to save sfx slots
  • Added a night theme
  • Made items able to land on platforms (8169 tokens)

1.2.3: Walls and bugfixes

  • Added automatic background walls behind certain tiles when they are next to one for a nicer look in houses. (mostly furniture)
  • Reworked the BIGMAP() function to peek the camera coordinates, and merged it into the draw loop.
  • Due to the above 2 changes, blocks now also display in front of tree leaves.
  • Fixed anvils being unbreakable outside of destroying the tile beneath them.
  • Fixed the boss music continuing to play after the boss is defeated or despawns until touching a biome tile. (8170 tokens)
  • Added the campfire as an alternate light source. (doesn't provide campfire buff)

1.2.4: Ammo and WORLD SAVING preparation update! (Alternatively, the "How am I still under the limits!?" update)

  • Removed ADDPROJECTILE function to save tokens, since it was only used in one spot. (8148 tokens)
  • Added support for different arrow/bullet types for bows and guns. Put the ammo you want to use closest to the top of your inventory bar. (8158 tokens)
  • Moved layer heights upwards slightly to add a tiny bit more underground space, and to prepare for PICO-8 0.2.4's memory offset features. (which will change the map dimensions slightly)
  • Reduced furnace stone requirement from 20 to 10.
  • Made the selected recipe reset to the top upon closing the inventory.
  • Prevented changing to the crafting side of the inventory if there are no recipes available. (8170 tokens)
  • Added some new ammo types, including INFINITE AMMO!!!
  • Copper tools are now wooden tools since copper doesn't exist.
  • Added recipes for wooden tools for if you accidentally trash all of your tools somehow.
  • Added sound effect for shooting ranged weapons and did some more token optimisations.
  • Replaced fired bullets with that iconic orange line that Terrarian guns fire. (8171 tokens)
  • This update also marks return of the DEATH SOUND!!!
  • Found some more token optimisations. (8163 tokens)
  • Fixed a bug where the music would change back to the biome music while fighting a boss if the inventory is open.
  • Adjusted how distance and depth light levels are calculated to be a LOT more token efficient. (8102 tokens)
  • Moved the tree trunk sprites to make the next change more possible:
  • Added functionality for saving and loading players and worlds! (the currently unused functions take 92 tokens)
    • (Currently disabled due to token limits, will enable it if possible after PICO-8 0.2.4 is released)

1.3: 0.2.4 BIGMAP() and saving update!

  • Added autoswing capability for melee weapons. (put "autoswing" into an melee weapon's toolstat "value" to enable it)
  • Reached 8192 tokens while adding a barebones modes system.
  • Saved more tokens in world generation. (8130 tokens)
  • Night's Edge now has autoswing.
  • Added a title screen and menu system, complete with a rotatey logo! (8192 tokens)
  • Allowed grass in front of walls at worldgen to free some tokens, and some other token optimisations. (8178 tokens)
  • Waiting for PICO-8 0.2.4...
  • Implemented 0.2.4's BIG MAP! (i finally saw the token count dip below 8000!)
  • World size is now 256x128, instead of 252x136.
  • Saving and loading are now things that exist! (8191 tokens, just like the original version)
    • The pause menu can be brought up by holding the pause button, where there will be an option to save.
    • When saving, the player, then the world will be copied to the clipboard. Paste these into an empty text file each to save them!
    • When loading, simply drag and drop each file onto Terra when it asks and it will load them for you.
    • Just a note, Terra does not check if the file has valid data before loading it due to token limits, so it will blindly load whatever you put into it. This shouldn't break too much, but try to stick to loading what Terra outputs :)
  • For some reason the token count is now 8186, what did i do?
  • Fixed player falling out of the world. (due to using MGET() now instead of the BGET() function i had made that automatically made anything outside the map solid) (8191 tokens)
  • Optimised tokens in worldgen by hardcoding the world size variables, since it's not going to change. (8165 tokens)
  • Added a background for the world and title screen to make the world look that little bit nicer. Now we got PARALLAX! (8191 tokens)
  • Rebalanced shadow orb loot. Now the order is: Bow, Mirror, then Musket and the damage output of the ranged weapons has been reduced slightly.
  • Other rebalancing changes.
  • Added Wand Of Sparking as a ranged weapon that consumes gel as ammo, crafted at a workbench with wood and torches.

1.3.1: Plantera update! (The update made with even more wizardry)

  • Just a note, I have to be very careful with what I change from now on now that save files exist. Don't want to break them or change people's inventories!
  • Merged King Slime's ninja with his body sprite to save a sprite slot and some tokens. (8174 tokens)
  • Modified how autoswing is applied to weapons to allow ranged weapons to also have autoswing and optimised item update code for tokens. (8164 tokens)
  • Increase drop rates of gel and added a drop for some enemies that didn't have one.
  • Added some new weapons: Blade of Grass, Minishark, and Flamethrower. Also added some healing items. (8168 tokens)
  • Modified progression into 2 sections: before and after the secret boss.
  • Fixed some recipes that broke due to changing the shadow orb loot order.
  • Fixed a consumable items duplication bug that was introduced with the 1.2 trashing items update.
  • Made Eye of Cthulhu actually leave at daytime again, it seems I forgot to re-enable it after testing at some point. (saved 2 tokens)
  • Saved a bunch of tokens in the AI section. (8120 tokens)
  • Removed timer-based mob despawning, leaving only distance based despawning. (8092 tokens)
  • Moved more mob stat constants to the mob strings to save more tokens. (AAAAA it's less than 8000 again what's happening!?)
  • Added Plantera, bringing the total amount of bosses to 4. Craft her summon at the new Cursed Forge crafting station using the seeds dropped by Jungle Bats. (8190 tokens)
  • Some bosses now need to be summoned in a specific biome. (Implemented by checking what music is playing) (8191 tokens)
  • Now that he's actually important to progression, I've decided that he shouldn't be a secret anymore. The secret boss is Ocram, from the pre-1.3 versions of non-PC Terraria!
  • Optimised more tokens and fixed a bug where mobs with zero knockback (e.g. bosses) had their velocity set to zero when hit by a projectile.
  • Added randomness to mob drops. They now randomly drop one more or less of their drop, except for bosses. (8179 tokens)
  • Dogblaster is no longer craftable, it is now obtained from Plantera and is an endgame weapon, as it should be. It is the Dogblaster, after all.
  • Haha, Plantera's seeds redirect towards the player whenever she is hit. That makes it a bit harder to, you know, not die. Caused by not resetting the HIT variable if this mob is an enemy projectile.
  • Added a different mob cap for EoC and Ocram's servants, now there is a limit of 8 mobs plus 4 extra that can only be servants, just so that they can still be a threat when the cap is reached. (8185 tokens)
  • Menu screen now progresses as (player, world) instead of (title, player, world) to save tokens. Also removes the button press required before being able to load saves. (8168 tokens)
  • Fixed crafting recipes not being updated on trashing or recovering an item. (8172 tokens)
  • Discovered and removed an AI that became unused after moving the mobs into strings. (8112 tokens AAAAAAAA)
  • Fixed King slime so he actually gets faster as was intended, the only thing in the way was a variable that was wrong.
  • Collision code and various "magic number" optimisations. How is there still stuff to do? (8067 tokens)
  • Buffed Ocram. Now he is more like his original self, shooting lasers and all that. (Just the lasers) (8105 tokens)
  • Optimised tokens in the enemy-player angle calculations.
  • Enemies no longer have gap assist like the player does, to save tokens. (8125 tokens)
  • Plantera's second phase now has the tentacles (8192 tokens, 100.38% compressed size)
  • Fixed bullets having gravity (8192 tokens, 100.48% compressed size)
  • Fixed the recipe for silver bullets. They needed something like 60 silver bars before.

Final stat counts: 8192 tokens, 42234/65535 chars, 99.56% compressed size

1.3.2: Many a fix, and some new stuff (Thanks to @Sup3raw3som3gam3r)
(Sup3raw3som3gam3r's modifications)

  • Mob strings combined into one string.
  • Palette swap for Jungle Bat.
  • Added Terra Blade and Golden Seed.
  • Optimised compressed size.
  • Modified MGET to handle tiles outside the map the same way BGET used to. Now the world edges function as they did before 1.3. (8205 tokens)
  • Simplified flying AI to use "face player" rather than "turn towards player". (8156 tokens) Honestly, I don't see much of a difference, and at least it works again.
  • Added palette swapping for mobs, now 4 sprites that were used for slimes are free. (4 sprites, 8149 tokens)
  • Added Gel Pack, an endless variant of gel. (only usable as ammo)
  • Changed the trash slot sprite to a palette swap of the inventory slot sprite to get 2 more sprite spaces (6 sprites, 8162 tokens)
  • Added a mass crafting feature to the crafting system: hold Z/O to keep crafting the same item until you release or run out of materials. (8182 tokens)
  • You can now hold the up or down buttons to scroll the inventory and crafting bars.
  • Prevented Ocram from being summoned during the day. (8192 tokens)
  • Plantera now drops a Golden Seed, used to craft the Terra Blade and... a dog gun?
  • Fixed mass crafting related performance issues in the inventory.
  • Adjusted position of inventory item text to be more in the centre. (still 8192 tokens)
  • Projectiles now use a sprite defined in the ammo's USETIME parameter. Flaming arrows now look like flaming arrows! (toggling if ammo is consumable is now handled by AUTOSWING) (8185 tokens)
  • Enemies can no longer randomly drop one extra item, but they can still drop one less. (8183 tokens)
  • Fixed blue slimes being automatically angry upon spawning.
  • Added Cochineal Beetle and Lac Beetle enemies that drop Beetle Husks.
  • Added 2 repeaters: Demonite Repeater obtainable after EoC, and Beetle Bow obtainable after Ocram.
  • Fixed potions not being consumable when the player had 400 max health. (8189 tokens)
  • Potion recipe now uses 2 Mushrooms and a Beetle Husk instead of 2 Mushrooms and 2 Gel.
  • Reduced the amount of Plantera's tentacles slightly.
  • Prevented auto-aim from aiming at enemy projectiles. (8190 tokens)

Final final stat counts: 8190 tokens, 42569/65535 chars, 99.34% compressed size

1.3.2b: Return of the bugfix letters.

  • Fixed EoC's servants being Plantera due to an oversight in the mob string translations.
  • Bats, Slimes, and Beetles are no longer invisible due to width/height being zero.
  • Fixed BTNP() repeat causing all items to have technically autoswing after the 1.3.2 update.
  • Removed a function that was used in only one spot. (8185 tokens)

Stat counts: 8185 tokens, 42540/65535 chars, 99.34% compressed size

1.3.2c: Block bug fixes

  • Added a secret feature. (Please don't spoil it if you figure it out)
  • This does include a minor save file format change, however, it appears to be compatible with existing saves.
  • Fixed blocks having no autoswing.
  • Reverted a change that made blocks lose their fast placement speed, making building incredibly hard to do.
  • Various token optimisations.

Stat counts: 8183 tokens, 42618/65535 chars, 99.46% compressed size

1.3.3: Some world generation changes

  • A slight update to the secret feature. This includes another minor save file format change, but it's still compatible with existing saves.
  • The player now respawns with half health to prevent "death healing".
  • Caves can now go off the edge of the map, meaning that there should no longer be lines of emptiness at the world edges.
  • Fixed a bug where the world would only generate one surface cave, and they can now also generate in the corruption. (8192 tokens)
  • Generation order modified so corrupt chasms generate after surface caves.
  • The Jungle and Corruption now generate all the way to the edges of the world on their respective sides.

Stat counts: 8192 tokens, 42510/65535 chars, 99.42% compressed size

1.3.3b: Bugfixes! Again! Yay!

  • Fixed a bug where having a tree trunk without a stump below it would freeze the game. (Found via Sup3rAw3som3Gam3r's TEdit cart, not reproduceable in normal gameplay)
  • Player respawns with a minimum of 100HP like in Terraria

1.3.3c: Sort of giving in to multicart; the Custom Character Cart!

  • The secret feature from recent updates is the ability to load custom character sprites!
    • Use the Character Creator cart to generate a new save file with the sprite data for your character!
    • You can also use any sprite you want, just copy a 7x1 section of sprites and paste the GFX portion of it between the last two pipes in the save. (|)
  • Re-added the higher pitched hurt sound, and added a new lower pitched hurt sound. (Both only accessible via the Character Creator)
  • The Main Cart is still completely standalone, ignoring the Character Creator will just leave you with the default Terra Guy as before.
  • Equally, the Character Creator is also standalone compatible, allowing you to simply create characters and not play as them if that's your thing.

1.3.4: Gotta go fast to fix those bugs.
WARNING: pre-1.3.4 world saves will have tables replace corruption dirt walls

  • AKA The update you definitely didn't see coming because it's GOING TOO FAST!
  • Saved some tokens in worldgen.
  • Changed the mob spawning timer to take less tokens. (8161 tokens)
  • Fixed a bug where summoning King Slime would reset the player's sprites to Terra Guy until reloading the save. (8174 tokens)
  • The game will no longer crash when you trash your entire inventory. (8182 tokens)
  • Saved some more tokens in worldgen.
  • Added Hermes Boots! They function from the inventory and increase your max speed! Craft them with 10 Leafy Seeds and 2 Demonite Bars at an anvil. (8177 tokens)
  • The walls in the Corruption are now actually dirt walls, instead of the Worldgen Corruption walls. (8187 tokens)
  • Added a table, a decorative tile for building.

Stat counts: 8191 tokens, 42671/65535 chars, 99.99% (eek!) compressed size

1.3.4b: Some bug fixes.

  • Fixed the ebonstone and ebonstone wall recipes using corruption dirt and tables. (tables used to be corruption dirt walls)
  • Fixed Plantera's second phase crashing the game. For some reason I had removed the variable the tentacles used to find their Plantera (8192 tokens)

Stat counts: 8192 tokens, 42676/65535 chars, 100% compressed size (it just barely fits, doesn't it?)

1.3.5: Plantera buff and craftable grass

  • The three grass types are now craftable using dirt or mud and leafy seeds, with corrupt grass using rotten chunks instead.
  • Beetle Bow is now craftable, as it no longer uses itself in its recipe.
  • Plantera now continues to shoot seeds at a slower rate in her second phase.
  • Plantera's tentacles rotate slightly faster now, so they can block shots more effectively.

Stat counts: 8190/8192 tokens, 42692/65535 chars, 100% compressed size

1.4: Journey's End?

  • King Slime is now only summonable in the Forest during the Day to prevent summoning him while Plantera is alive, as his sprite overwrites hers.
  • Saved 5 tokens in Plantera's phase 2 palette swap.
  • Added the ability to paste save file strings to load them. (around 8244 tokens, forgot to record it)
  • MASSIVELY optimised tokens in the mob spawning lists by replacing them with a function. (8149 tokens)
  • Doors now play a sound when opened or closed (8159 tokens)
  • The title screen logo now rotates slower, not that that's really important.
  • Mobs can now have multiple drops. Later drops are more likely to drop less, except those dropped by bosses. (8177 tokens)
  • Ocram now drops Demonite Bars in addition to his Soul of Blight, to make re-fights at least worth something.
  • Skeletons now sometimes drop an iron bar, and they should now drop less arrows on average.
  • King Slime now drops small portions of all three minable ores instead of just a heap of gold.
  • Certain slimes now carry a bonus drop specific to that slime type.
  • The Demon Eyes' AI has been adjusted to make them more accurate. (8179 tokens)
  • Added new variants for Hornets (Honey, Leafy), Skeletons (Pantless, Headache), Demon Eyes (Cataract, Green), Zombies (Twiggy, Bald, Female), and Beetles (Cyan Beetle) via palette swapping. (Compressed Size go Bye Bye)
  • Technically there are now 24 enemies, though most of them are variations of existing enemies.
  • Found and removed some code in the tile breaking section that has been unused since the item string format was implemented. (8164 tokens)
  • Moved door interactions and tree generation into functions to save tokens.
  • Added saplings to grow trees. (8189 tokens)
  • Black Slimes now use the same slime sprites as Blue Slimes, because they're supposed to be smaller than yellow slimes.
  • Fixed a memory leak that would occur due to the lights list not being cleared while the inventory was open.
  • Beetle Bow now uses 5 Beetle Husks instead of 10.
  • Wall and Grass recipes have been moved to be near the bottom of the recipe list.
  • Vertical crafting station reach reduced to match Terraria's better.
  • Reduced the amount of tile checks in the enemy line of sight check to hopefully improve performance a bit.
  • Completely disabled line of sight and distance checks for enemy projectiles. (8190 tokens)
  • Saved some tokens in the camera position limiting code.
  • Ocram now moves to his second phase earlier and shoots lasers less rapidly.
  • Eye of Cthulhu and Ocram now stop moving while they transition to their second phases. (8191 tokens)

Stat counts: 8191/8192 tokens, 42028/65535 chars, 99.9% compressed size

1.4.1: Finally, MOUSE SUPPORT! How does it fit? No clue!

  • We have officially entered the realm of extreme token saving wizardry. (i.e. using incomplete compound variable assignment to set multiple values to nil, to be treated as false. Yeah. I've gone THAT far)
  • Added an option to toggle mouse controls in the in-game pause menu!
    • Move with ESDF, and jump with the right mouse button.
    • The inventory is still controlled by the keyboard as usual.
    • Tools and block placement have limited range, but ranged weapons can be aimed freely!
    • You can swap items using the scroll wheel, and as originally suggested by "oh lord he bacc", toggle the inventory by clicking it.
  • The annoying "CTRL+C TO COMPLETE COPY" prompt while running on the BBS should now no longer appear while loading save files. (Thanks @shy for the workaround!)
  • Modified cave generation. There should no longer be a massive hole along the bottom of the world. (Apparently I broke it in 1.3, ha)
  • Slowed down random tree tick slightly.
  • Removed a check for flag zero in the biome music code that served no purpose as all of the valid IDs have that flag set anyway.
  • Item collisions have been simplified to save tokens.
  • Removed item drop override check for wall tile drops to save tokens.
  • Removed a weird "til" variable from the tool code which may be either a leftover or a typo that happened to not break anything.
  • Hammers now break their tiles in the same way pickaxes and axes do, but with a faster speed modifier. (Saved a lot of tokens)
  • Shadow orbs now replace themselves with an ebonstone wall when broken, to improve the illusion of multiple tile layers.
  • Furniture tiles such as workbenches, furnaces, and torches now break walls if the player tries to place them over one.

Stat counts: 8191/8192 tokens, 41232/65535 chars, 99.96% compressed size

1.4.1b: E to jump

  • Added the E key as an alternate jump.

Stat counts: 8192/8192 tokens, 41232/65535 chars, 99.96% compressed size

1.4.1c: 0.2.5 sub() bugfix

  • Fixed the Terra logo, custom player sprites, and Plantera being unable to load due to sub() reverting to its pre-0.2.4 behaviour.

Stat counts: 8185/8192 tokens, 41239/65535 chars, 99.94% compressed size

1.4.2: EXTREME quality of life and polish update.

  • Saved 87 (!!) tokens using more false->null style optimisations, also replacing foreach(x) with next, x, rnd(x) with rnd"x" (this became an issue once 0.2.5 released) and so on. (8105 tokens)
  • Replaced the dedicated sky tile with tile zero, as tile zero isn't even drawn anyway.
  • So, now I have a spare sprite and a significant amount of tokens. Why does this keep happening?
  • Moved the Shadow Orb counter to the player save, meaning you should no longer get duplicate items from them after reloading unless you break more than 3 orbs. (8115 tokens)
  • (For @EpsiCron ) Mob drops with a negative amount are now guaranteed, this means beetles now always drop their husks. (8117 tokens)
  • Some more optimisations involving unpack+split. (Oh gosh it keeps going) (8104 tokens)
  • Treetops now render in front of tiles again. (8125 tokens)
  • The state of the mouse cursor is now remembered across sessions. (8141 tokens)
  • Optimised Plantera's phase 2 palette. (8128 tokens)
  • Fixed the player's trashy tile step-up implementation.
  • Mobs now drop through platforms if the player is below them. (8144 tokens)
  • World time is now saved in the player save file. (8150 tokens)
  • Edited Corruption Grass texture to look nicer.
  • Changed keyboard controls to WASD+Space.
  • Added mouse controls for the inventory. (8191 tokens)
  • Optimised mob data code. (8178 tokens)
  • PICO-8 0.2.5c released, fixing the aforementioned rnd"x" issue
  • Platforms are no longer offset while moving if mouse controls are enabled.
  • (Sorry speedrunners...) Improved wall blockswap so furniture tiles are no longer overpowered hammers. (8174 tokens)
  • (For @CrownDeluxe and those who lost important items) Item trashing has been modified to help prevent accidental trashing: Now you can only trash an item after pressing 🅾️/Z/Click to first make it "hover" next to the hotbar, THEN you can trash it with ❎/X/Right Click. If the hovering slot is empty, you can recover trash instead by pressing ❎/X/Right Click. (8180 tokens)
  • E has been added as an inventory key, and removed old functionality for left/right keys to hover items, as the left key moves to the crafting side. (8185 tokens)
  • Hornets now shoot stingers when the player is in line of sight.
  • Updated to the latest pd_rotate() function from @TheRoboZ to save tokens. This also allows rotated sprites to be scaled!
  • EoC and Ocram are now bigger.
  • Ocram's hitbox is more reasonably sized relative to his body, and his servants now spin.
  • Fixed many bugs introduced while changing and optimising things.
  • Bosses are now summoned randomly on either the left or right side of the player. (8190 tokens)
  • You can now craft 2 Potions using 3 spare Life Crystals at a Cursed Forge.
  • A sound effect now plays when you craft things. (8189 tokens)
  • Fixed the stray pixel that would appear on the large slimes' squash frame after loading a custom character.
  • Fixed the occasional flickering of the digging overlay and moved it to be behind all entities. (8191 tokens)
  • Digging overlay now has only 3 frames to better match the digging animation and sounds. (4 sprites)
  • (For @CrownDeluxe ) Added Sliver Brick, a smoother white block. (3 sprites)
  • Added one new enemy: the Spiked Jungle Slime! (boooooo!) They're like slimes, but they shoot at you! (8194 tokens, 1 sprite)
  • Ocram and Plantera's health have been buffed a little.
  • Added Tentacle Spike as a rare drop from Eaters of Souls, because the Corruption seemed lacking in content. (8189 tokens)
  • Asymmetrical item sprites such as axes have been flipped so they match Terraria, now the lighting on items in the world comes from above rather than below.
  • (For controller users) Added a basic failsafe for the crash when an invalid player file is loaded (e.g. a world file), by resetting the cart if the player's health is not a number. (8192 tokens)
  • Optimised health bar rendering and re-implemented vertical scrolling on the background because I accidentally removed it. (8167 tokens)

Character Editor changes:

  • Added 3 new clothing styles based on the Terraria ones.
  • Each clothing and hair style option now has a name.
  • Grey and Light Grey are no longer usable as clothing colours because that was weird, considering the player's skin colour is grey.

Stat counts: 8167/8192 tokens, 41386/65535 chars, 99.82% compressed size

1.4.2b: A couple of bugfixes and a use for campfires

  • Some more token optimisations. (8147 tokens)
  • Silver Brick is now actually a block. (oops)
  • Fixed platform placement being broken. I was checking the target tile before offsetting it instead of after.
  • Reverted a token optimisation that accidentally removed mouse-based block placement. It appears this also fixed diagonal mining without the mouse.
  • Mobs can no longer spawn within a 17x15 tile rectangle centred on a campfire. Due to this, campfires are now a bit more expensive to craft, requiring 3 torches instead of 1. (8190 tokens)

Stat counts: 8190/8192 tokens, 41420/65535 chars, 100% compressed size

1.4.3 (The NEW final final update!): Weapon updates, armour, and performance improvements, oh my!

  • Wand of Sparking and Flamethrower's flame projectiles now have piercing, and as such their damage has been lowered.
    • Their projectiles are no longer affected by gravity.
  • Saved a ridiculous amount of tokens by changing a portion of the mob code to remap _ENV. (8018 tokens)
    • This may break some things. Please let me know if you find any weird mob behaviour.
  • Fixed boss music being broken after the _ENV change. (8031 tokens)
  • Reverted a token-saving change to free up the first sprite slot. (8037 tokens)
  • Gave the Terra Blade its (pre Terraria 1.4.4) projectile and removed the unused ammoid variable. (8083 tokens)
  • Weapons now have a scale modifier. (8117 tokens)
    • Due to this, many weapons have been made larger.
  • Tried a minifier. Results: 8108 tokens, 35818 chars and 88% compressed size. We're doing pretty ok!
  • Changed projectile gravity and infinite ammo to be determined by flag 0-1 rather than sprite id and autoswing.
    • If flag 0 is set, the fired projectile will be affected by gravity.
    • If flag 1 is set, the item will not be consumed upon firing.
  • Fixed the day-night cycle palette fade so it actually happens again. (8123 tokens)
  • Changed how summon items work so they don't use the autoswing value to store the required music.
    • Reformat eoc:53 to eoc-53. (8136 tokens)
  • Fixed EoC and Ocram's phase 2 transition animations. (8138 tokens)
  • Fixed underground mobs spawning on certain surface tiles for the rest of the session after going underground.
  • Now uses the new default out-of-bounds map value to save a few tokens.
    • This should also reduce the performance impact of map checks, which happen quite frequently.
  • Eaters of Souls are now larger. (8116 tokens)
  • When the inventory is closed, unselected hotbar slots will progress off-screen to reduce screen clutter.
  • The inventory slots are now culled to improve performance when the player has a lot of different items. (8164 tokens)
  • A few graphical updates.
    • Black has been replaced with its corresponding secret palette colour on the lightest two palettes.
    • Some mobs and items have had minor changes.
    • Most walls and a couple of blocks have been changed.
  • Added a defence system for the player, and three different armour items to craft throughout a playthrough. (8189 tokens)
    • These function from the inventory, the same way Hermes Boots do. Only the strongest armour piece counts toward defence.
    • Some enemy and boss stats have been increased as a result.
  • Optimised inventory drawing code for tokens. (8172 tokens)
    • The quantity of items in the "hovering" slot and the trash slot are now displayed.
  • The crafting screen now displays the items required for the selected recipe. (8187 tokens)

Stat counts: 8187/8192 tokens, 41136/65535 chars, 99.88% compressed size
I still have no clue why it's still possible to fit more in, but whatever.

1.4.4 - The Are We There Yet? Update (aka The Quality Presentation Update)
Code-golfing Extreme! PLUS ULTRA!
With feedback and ideas from Yeggplant (YouTube)

  • Small performance and token optimisation for when collisions are happening between blocks and mobs/player. (8160 tokens)
  • Bouncing enemies (Demon Eyes, Bats, etc...) now have a minimum bouncing velocity so they stop vibrating against walls.
  • Saved tokens in inventory item updating using _ENV. (8161 tokens)
  • Saved tokens in crafting. (8166 tokens)
  • Added a boss health bar. (8208 tokens)
  • Saved a massive amount of tokens in the mob creation function using _ENV. (8159 tokens)
  • Added health values to the boss bar. (8170 tokens)
  • Added the sun and moon to the sky. (8191 tokens)
  • More _ENV token savings.
  • Added mob death/damage particles and tile breaking particles. (8184 tokens)
  • Adjusted fighter AI physics to be more accurate.
  • Enemies hit by projectiles are now knocked back in its movement direction instead of away from its centre. (8177 tokens)
  • Tiles needing support now spawn particles when the tile beneath them is removed. (8190 tokens)
  • Finally optimised the tokens tokens in time-based light levels. (8149 tokens)
  • ( Suggestion: @lastofavari ) Added a menu option to mute the music. (8187 tokens)
    • This persists across sessions.
  • Fixed the Terra Blade's projectile crashing the game after the past _ENV changes. (8190 tokens)
  • Saved tokens by using strings for sfx() calls. (8174 tokens)
  • Moved many sound effects to a ssfx() (semi-sfx) function, allowing multiple smaller sounds to be packed together.
  • Added new sounds for Flamethrower and Wand of Sparking, and picking up items. (8190 tokens)
  • Fixed an issue where running out of a stack of items would cause the next slot to be used immediately, leading to unintentional block placement or consumable usage. (8188 tokens)
  • Reintroduced the add_projectile() function to save tokens for the Terra Blade's projectile.
  • Saved tokens by replacing calls to fget(mget()) to a merged fmget() function. (8158 tokens)
  • The surface background is no longer drawn while the player is underground.
  • Underground and Caverns layers now have their own parallax backgrounds. (8190 tokens)
    • As with the surface background, these are not drawn while the player is on the surface.
  • Swapped ammo sprite and velocity values so that ammo items don't have insanely high use durations. (some were over 200 frames!)
  • Removed the check to not drop hearts for projectiles, as they have been changed to despawn on hit rather than die. (8189 tokens)
  • [REVERTED] Can no longer change items or open the inventory while using an item, to prevent weirdness when changing items mid-swing.
  • Fixed an issue where changing items while using another item would cause the first item's swing animation to break. (8191 tokens)
    • Previously, changing items to a Minishark while using a Potion (for example) would cause the Potion to orbit the player rapidly.
  • Fixed the world/player saving screen using the current display palette black (which is dark brown in the lighter palettes) instead of forcing the normal palette black.
  • A different sound effect now plays when an enemy is defeated. (8192 tokens)
  • Fixed various oversights, and a few issues arising from previous ENV changes.
  • Music now reserves the first two audio channels, which should reduce instances of sound effects interrupting the music. (8189 tokens)
  • Fixed some major issues with the crafting system that caused it to allow crafting when it shouldn't have, also fixing the "need more materials" pop-up. (8187 tokens)
    • For example, you could pick an item up, then any recipe using multiple items would not consume the held item. Single-item recipes would simply not craft the item.
    • Same goes for holding the craft key: if it was a multi-ingredient recipe, it would just keep crafting as long as one of the items exists.
  • Fixed the infamous Flying Terra Blade bug, which caused any non-ranged item with a scale factor over 1 to fly away from the user's hand while the inventory was open. (8183 tokens)
  • Fixed a new bug where the player's hurt sounds wouldn't play. (8192 tokens)
  • Adjusted Forest Day music channels to hopefully avoid most annoying sound effect interruptions.
  • Refactored the inventory item drawing to use just the small border sprite for both sizes, now there's three more sprites available. (8180 tokens)
  • Enemies can now have a scaling factor applied in their data. (8185 tokens)
    • Blue and Black Slimes now use a scaled-down version of the large slime sprites to free up two more sprites.
    • Merged previously code-driven enemy scale adjustments into their data strings. (8173 tokens)
  • Made melee weapons use their value as a knockback multiplier.
    • Some weapons now deal more knockback than others.
  • Made ammo items use their scale as pierce value.
    • Gel-based weapons no longer have infinite pierce. Gel has 2 pierce and the Gel Booster has 3.
  • (Yeggplant on YouTube) Added a new melee weapon, an upgrade for the Hermes Boots, and three new types of ammo. (8188 tokens)
    • Two of these ammo items are piercing arrows and bullets.
  • Fixed player hurt sounds not working when damaged by an enemy. (8189 tokens)
  • Fixed a missing sprite flag on the campfire which caused it to remain floating when the tile below it was broken.
  • The Furnace and Cursed Forge now emit light. They are on fire, after all!
  • Certain items with no use function can no longer be used, to prevent items which use the usetime and scale stats for other purposes from making the screen flash.
  • Tools now use their value parameter as digging speed. Higher is faster, defaults to 1. (8191 tokens)
    • Most tools have now been made even faster depending on their tier.
    • Previously, this was dependant on the item's use speed: Three swings to break a tile. Now it's three swings divided by the item's value parameter, so value three means one swing per block.
  • Removed the E variable from the player and enemy collisions code, and replaced it with break. (8170 tokens)
  • Player now moves on X directly after checking for X collisions to avoid clipping into corners and stopping.
  • Implemented a more token-efficient way of determining if a mob can shoot stingers. (8159 tokens)
    • if del(list_copy,id) then is a way to do Python's if id in list: if the list you're working on can be safely modified. In this case, the list is recreated every time.
  • Item amounts 1000 and up now display as 1k, 2k, etc... (8170 tokens)
  • Found some places where I forgot to replace things. (8159 tokens)
  • Fixed inconsistencies with scaled items' collision box and visuals. They are now held in the player's hand properly.
  • Boots can now modify the player's jump height. (8174 tokens)
  • Torches, Campfires, Furnaces, and Cursed Forges now emit particles. (8191 tokens)
  • Redrew several sprites, including Dirt, Mud, and Plantera's Bulb.
  • Fixed a memory leak where flame particles were being constantly created while the inventory was open.
  • Optimised tokens in the tree creation function.
  • Restored the block dithering between biomes that was lost at some point. No more straight lines between biomes! (8184 tokens)
    • This is not retroactive, so worlds generated in previous versions will still have straight biome edges.
    • Also, optimised tokens. Of course.
  • Rearranged the map data to make better use of space, and expanded the underground parallax backgrounds to reduce map calls for full screen coverage. (8171 tokens)
  • Removed the pause button blocking poke in the genprint function.
  • Various adjustments and fixes to world generation, so there can be more varied terrain. (8165 tokens)
    • Fixes an edge case where tables could appear in the Corruption.
  • Slimes should more easily be able to jump past tiles they run into. (8163 tokens)
  • The fact that I'm still finding token savings is incredible.
  • Rewrote the furniture tile automatic background walls code. (8160 tokens)
  • Fixed a new bug where the pause menu would appear while pressing enter on the saving screens.
  • Ores now generate a little further down, to incentivise getting the earlier tiers before going for gold. (8163 tokens)
  • Adding a tribute...
  • Removed the check to see if the Underground parallax should be drawn since PICO-8 handles not rendering off-screen maps anyway. (8183 tokens)
  • Finished adding tribute (8192 tokens)
  • Rebalanced a few stats:
    • Ocram and Plantera have slightly more health to compensate for the new ammo types.
    • Nerfed Minishark and Dogblaster a bit to bring them back and make it more viable to choose literally any other weapon over them.
    • Minor adjustments to a few other weapons.
  • The itch.io versions have a new icon, except for the MacOS version because I don't have a Mac and can't be bothered working it out.
    • The Windows downloads have the icon integrated into the .exe files.
    • The Linux and Raspberry Pi downloads include the icon's PNG file, you should be able to set it as the icon if I remember correctly.
    • The Mac downloads include the icon's PNG file, in case you can use that somehow. I dunno, the only Macs I've ever used are the blue CRT-looking ones.

Character Editor:

  • Fixed the hair colour icon always being green, regardless of the selected hair colour.

Known issues:

  • The performance drops to 30fps while the player is standing around where the underground background starts. Performance returns to normal after going further underground.

Stat counts: 8192/8192 tokens, 40909/65535 chars, 99.96% compressed size.


  • Using tline sprite rotation function from TheRoboZ and distance function from Freds72.
  • Music by @jo560hs.
  • @Sup3rAw3som3Gam3r helped with multiple ideas and a few optimisations.
  • Everyone who has played and found bugs for me to fix!
P#97269 2021-09-13 06:10 ( Edited 2024-01-17 02:33)

[ :: Read More :: ]

Cart #beatwise_trigger-1 | 2022-03-01 | Code ▽ | Embed ▽ | No License

A rhythm-based dungeon crawler inspired by Enter The Gungeon and Crypt of the Necrodancer.
Originally made for RNDGAMEJAM 2, BEATWISE TRIGGER has been reworked since the jam to be more fun to play.

itch.io page: https://pixelshock.itch.io/a-rhythm-based-dungeon-crawler

If you experience laggy audio in this version, try playing it in the PICO-8 desktop app, or download the game from the itch.io link above.


You can only shoot and reload on the beat.

Defeat enemies and break barrels to gain gold, and find shops to buy better weapons and tools to give Diot new abilities.

Find the exit on each floor to travel deeper into the ruins, and discover new areas.

What awaits Diot in the twisting tunnels below Raven Manor?


You can change control styles using an option in the pause menu.


  • Arrows or EDSF to move
  • Z or C to shoot
  • X or V to reload
  • Auto-aim enabled

Keyboard and mouse:

  • Arrows or ESDF to move
  • Left click to shoot
  • Right click to reload
  • Aim with mouse


BT 1.1 Changelog:

  • All guns now reload to max in one beat.
  • Reloading can now be done at any time the player is standing still.
  • There is now an indicator on the title screen showing what controller style the game is currently using.
  • There are now audio indicators when Diot has fired his last bullet and when he has reloaded.
  • Updated some graphics for consistency, most notably Diot and a few of the enemies.
  • Most area names and their descriptions have been changed to reflect lore established since the jam version was made.
  • The music has been adjusted to make the beat clearer in the second and third areas.
  • Diot now only opens doors in front of him, instead of every door around him at once. Saves tokens AND makes more sense!
  • The ghosts in Lab Outpost are now restricted to the beat like everything else.
  • The boxes in Lab Outpost now only shoot while Diot is in range, rather than indefinitely after being activated.
  • The ending animation now has transitions between the images.
  • The title screen logo now beats slower in the first part of the music so it's in sync with the beat in that part.
  • Most of the printed text now has borders, mainly to make the area and upgrade pop-ups more readable.
  • Some slight rebalancing for weapon damage and enemy quantity on each floor.
  • The guns now have muzzle flashes, a recoil visual effect, and their bullets now spawn at the end of the gun instead of on the player.
  • There are now particle effects for defeating enemies and picking up gold.
  • (spoiler) The final boss now has a different attack pattern when the hands have been defeated.
  • (spoiler) The piano in the final room is quieter, since Maya and the piano are actually outside, and the piano now resumes after PATSCII-TRON is defeated.
  • Added a new gun: the Zapper!
  • Weapons now have descriptions that appear when you pick them up.
  • Updated SFX for shooting and reloading.
  • Bullets make objects emit particles on hit.
  • Diot's bullets are now faster.
  • Barrels are now solid.
  • The second upgrade has been replaced with a dash ability, allowing Diot to dodge over bullets and enemies once obtained.
  • Barrels now drop a more random amount of gold.
  • Floor generation updated:
    • Fixed shop generation so it actually generates on the end of its path instead of having a random dead end coming off it, and it now has slightly rounded corners.
    • Each floor now has randomised variant tiles scattered over the floor.
    • Upgrades are now obtained one floor earlier.
    • Rooms no longer have to be square, and they now line up with the paths as was originally intended.
    • Enemies can now spawn anywhere in a room instead of just the bottom right quadrant.
    • The base number of enemies in a room is now 2 instead of 1.
  • Visual upgrades to shop item and reload animations.
  • Enemies drop less gold to compensate for how many more there are.
  • That annoying "unknown extcmd" error on start while running in the BBS player should now be fixed.
  • ...
  • And an extremely overpowered secret weapon?

Technical Changes:

  • The music function now automatically reserves the first 3 channels to prevent sound effects from overriding the music, especially the beat channel.
  • The beat is now checked using the more accurate stat(50) instead of stat(20).
  • The beat timing is now slightly less forgiving. (2/4 notes per beat rather than 3/4)
  • The game map now uses the extended memory bigmap. As there is more space here, the later floors should be less crammed.
  • The gun is now drawn using tline, rather than pset.


I can't believe it took me this long to notice the first version was titled "BEATWISE TIGGER"
Cart #beatwise_trigger-0 | 2021-08-01 | Code ▽ | Embed ▽ | No License

P#95542 2021-08-01 03:25 ( Edited 2022-03-01 08:19)

[ :: Read More :: ]

Cart #break-0 | 2021-04-25 | Code ▽ | Embed ▽ | No License

Made within 48 hours for Ludum Dare 48

Punch with X

Punch the green tubes to cut the room's power and activate the emergency door unlock to travel deeper (and deeper) into the ship and destroy the main engine.

Ludum Dare page

P#91066 2021-04-25 12:52 ( Edited 2021-04-26 06:21)

[ :: Read More :: ]

Cart #ninjoe_dragon-4 | 2021-12-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Made for TOY BOX JAM 2020


It was a lengthy battle that left you wounded and weak. You cannot recall what the fighting was for but as you wandered the battlefield, exhaustion took hold and the darkness consumed you. (XX) , collapsing where you stood.

The fall was great, you did not see the opening before you fell and you did not have the strength to battle the fatigue. Perhaps you were lucky for in this state your body was able to absorb the impact.

Time passed and you wake in a strange cavern, this was the battlefield no longer. You notice a door behind you, trying it proves futile. You expected it wouldn't open. The door was oddly recessed into the wall, looking out of place for an exit. A wall ahead of you held a lock; it looked like it may open if only you had the tools. Your equipment stripped, no picks at hand, you search something of use.

You spot opening underneath you, or so you suspect, it seems as though it is something you may enter and with luck may provide a way out. If nothing else, it isn't here.

However you have arrived in this place, it was certainly by the devising of some creature.

You are Ninjoe,

You have arrived in the Dragon's Lair, this lair is not one of the Dragon's making but the making of another. The Dragon is trapped here by a curse, the hoard has been scattered as well as the cursed treasures within it.

Once the treasures are separated the curse strengthens its hold on the occupants of the lair... perhaps if they were brought back together... ?

Help Ninjoe escape the Dragon's Lair, if you can ... but will you also help the Dragon?

... Do you even want to?


  • Jump on enemies to defeat them
  • Pick up keys to open doors
  • If you die, you will reappear at the start of the level as long as you have at least 10 coins
  • Drop-in drop-out multiplayer for up to 8 players (It may not be a good idea to play with more than 3, but the option's there) Press X to join or leave the game.

itch.io: pixel shock


most recent change last

19 dec, 2020

  • joined jam
  • added platformer code
  • added objects
  • fixed tile layering to allow background tiles

20 dec, 2020

  • added coin collection
  • ai for some enemies (red, snek, bat)
  • stomping enemies, with that smb stomp from wisdom4.zip
  • skull is animated in code
  • sometime today, solved the challenge

21 dec, 2020

  • added level functions
  • removed y scrolling from the camera
  • fixed the positions of objects to be aligned to the grid
  • added a level
  • added in-game music
  • put a shared hp bar at the bottom, shows all player hp
  • added a background

22 dec, 2020

  • skull boss has an attack for second phase
  • added 4 more areas
  • bats are now basically invincible
  • they are now the most powerful beings this world has ever seen
  • skull boss is now grey

23 dec, 2020

  • added some new areas
  • added skull boss's ai
  • some story text before boss

24 dec, 2020

  • updated skull boss's ai
  • added collisions for its fire
  • some new story text after the battle
  • you can skip the boss, may or may not fix it
  • decided to fix it
  • fixed it
  • added an intro cutscene

25 dec, 2020

  • probably won't work on it today
  • ... nevermind i guess, added another level anyway
  • fixed the intro cutscene to be fake 3d
  • first level is now stored uncompressed in the first row (leaves space for another level below)
  • moved the levels around in the map area. added a small area just before the first boss
  • moved prime skull's music to kyle, and gave it [#8 boss] from picotunes 1 instead
  • began making kyle's ai (modified prime skull)
  • so much for not working on it today

26 dec, 2020

  • added story and a bunch of empty-looking areas for kyle's story events
  • goodbye, test level. you were great for, well.. testing
  • fixed a few missing reds
  • changed prime skull's music because i didn't like the one i changed it to
  • added wavy print function
  • added a restart level button
  • restarting can duplicate keys and coins. need to fix that
  • fixed it
  • made it constantly rain fire slowly in kyle's boss fight
  • ❎ can jump now

27 dec, 2020

  • added another level
  • added another level again
  • now there's only space for 1 big area or 2 small areas
  • the total will be 18-19 areas
  • made kyle's fire rain appear around the player instead

tokens: 7656/8192
cmprsd: 73%

28 dec, 2020

  • fixed restarting a level messing up the story position and summoning bosses early
  • replaced the arrow with numerals because there was a sprite for an i (area 7)
  • added the last level before kyle's boss arena area
  • there should be 90 total coins (collecting all of them gives you 9 more tries)
  • set music for the newer areas
  • freed up some tiles
  • re-arranged a bunch of tiles
  • added big tiles

tokens: 7936/8192
cmprsd: 78%

29 dec, 2020

  • added multiplayer (since it already existed in my platforming engine)
  • fixed player palettes (was passing an empty string to split instead of a comma)
  • fixed dark palette to account for colour 15 being blue now
  • p2 is blue now (daba dee daba dai)
  • fixed the camera position after a player dies in co-op
  • added a smooth camera to smooth towards the next position instead of instantly changing after a player dies
  • smooth camera now only applies when 2+ players are alive
  • oh no token limit
  • removed unused tile detection for coins (they are objects)

tokens: 8174/8192
cmprsd: 82%

30 dec, 2020

  • added the ability to drop players in co-op
  • fixed the background fillp scrolling while moving even when the camera isn't
  • made the randomised tiles use a seed: srand(level_index)
  • replaced the semi-solid under the door in the vertical bat room with solid ground
  • reset velocity of players that get added after dropping out
  • put more bats in the bat rooms

tokens: i'm here to write code and use tokens, but i'm all outta tokens
cmprsd: 83%

31 dec, 2020

  • fixed: p2 only high bounces when p1 is also holding jump
  • found lots of tokens
  • replaced the invisible walls around the boss areas with visible walls
  • made the title logo on the win screen also wavy
  • players now drop their keys when dropping out or fainting
  • stopped last alive player from being able to drop out

tokens: 8143/8192
cmprsd: 85%

1 jan, 2020

  • yay, release day!

2 jan, 2020

  • fixed a bug where defeating the dragon while it's on a platform or wall will leave you stuck in the boss arena

version 1.2

  • major changes to level design and boss difficulty for balance
  • multiple endings

version 1.2.1

  • adjusted coin-life rules: coins won't count for a life until the next level to prevent duplicating them in levels with more than 10 coins
  • sleeping dragon no longer deals damage in the vault rooms

version 1.2.2 (post-jam)

  • hopefully fixed a crash upon restarting a level


why did i make this?
Cart #not_marshmallow-0 | 2021-01-01 | Code ▽ | Embed ▽ | No License

P#86005 2021-01-01 05:45 ( Edited 2021-12-22 03:16)

[ :: Read More :: ]

Cart #tweet_invaders-0 | 2020-11-07 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Most of Space Invaders in exactly 560 chars for TweetTweetJam 5.

P#83922 2020-11-07 14:20

[ :: Read More :: ]

Some carts I have made


Cart #cavebears-1 | 2020-09-01 | Code ▽ | Embed ▽ | No License

A cave generator with a blue bear as the player.


Cart #nufefdeyo-0 | 2020-09-01 | Code ▽ | Embed ▽ | No License

When the tanks jump, they spin.


Cart #floppydisk-0 | 2020-09-01 | Code ▽ | Embed ▽ | No License

A spinning floppy disk.


Cart #laserbird-0 | 2020-09-01 | Code ▽ | Embed ▽ | No License

A shmup with a bird that shoots lasers.


Cart #papyrus-0 | 2020-09-01 | Code ▽ | Embed ▽ | No License

Undertale battle system scaled down to PICO-8. You can fight or flee.


Cart #pico_os-1 | 2020-09-02 | Code ▽ | Embed ▽ | No License

A graphical desktop for PICO-8. It has paint with four canvases and a very poorly optimised game menu.
You can also set the wallpaper to one of four preset backgrounds or one of the paint canvases
The game menu won't work in the online version!


Cart #woolcat_old-0 | 2020-09-01 | Code ▽ | Embed ▽ | No License

An early version of Woolcat, called Lemon Cat because an earlier version had a person collecting lemons.


Cart #bleep-0 | 2020-09-01 | Code ▽ | Embed ▽ | No License

My first PICO-8 cart, after moving from TIC-80.

P#81421 2020-09-01 11:09 ( Edited 2021-05-29 05:33)

[ :: Read More :: ]

Cart #cubg_dungeon-5 | 2020-08-16 | Code ▽ | Embed ▽ | No License

An endless dungeon crawler made for LOWREZJAM 2020.

Also available on itch.io

Find the exit to move to the next floor. The dungeons will get larger as you complete floors. Walk into an enemy to attack it. They can also attack you if you go into the space they are moving into. Pots can be broken by walking into them. They can have gold, sneks, bombs, spike traps, or a life up in them.

After each floor a shop will open where you can buy items:

  • Life Ups will heal you.
  • Damage Ups make your attacks stronger.
  • Escape Ropes return you to the entrance of the floor you are on if you die. You can only carry one at a time.
  • Gems modify the generation of the next floors.

Open the inventory screen with X or M. It shows:

  • The map
  • Which floor you are on
  • How much gold you have
  • The escape rope in the bottom left corner, if you have one


  • Green gels move horizontally
  • Blue gels move vertically
  • Red gels move randomly
  • Bombs explode and deal damage when the red and white lines touch
  • Sneks stay still and hiss sometimes. If you move into a tile near the snek while it is hissing it will bite you
  • Skulls move horizontally and shoot blue lasers downwards which move when you move
  • Red and green dogblasters shoot slow-moving lasers right and left respectively
  • Ghosts slowly float through walls towards you.
  • Angry boxes chase you.
  • Rule breakers move towards you even if you aren't moving



  • Added title screen
  • Changed dungeon generation slightly
  • Changed the colour of some sprites again
  • Added AI for angry box and ghost
  • Released on itch.io


  • Stopped the shop from having duplicate items
  • Fixed a bug where enemies wouldn't appear in the dungeon
  • Now prevents you from buying an escape rope if you already have one
  • Now shows escape rope in the map screen if you have one
  • Updated some sprites
  • Fixed enemies being deleted after being saved by the escape rope
  • Added more enemies that appear in deeper floors


  • Changed player sprite slightly
  • Made enemies have more variety ad you move through floors
  • Added snek. It sometimes appears after breaking a pot
  • Fixed enemies dealing 3 damage instead of 1 if a bomb appeared
  • Player now bounces back after breaking a pot
  • Bombs can damage enemies
  • Updated map to show room exits
  • Made spike traps less common
  • Hopefully fixed a bug that would cause the exit to be placed off the map
  • Changed dungeon generation to make larger dungeons as you go down
  • Added a shop after each floor


  • Changed colour of walls
  • Made floors start on the space the last one ended at
  • Added particles
  • Fixed a bug where spikes would kill you instantly
  • Changed map screen
  • Added game over screen
  • Bombs can break pots
  • Added HP display


  • Added player sprites
  • Added bombs that sometimes appear when a pot is broken
  • Added a map screen
  • Added HP bars for enemies


  • Release
P#80625 2020-08-11 09:30 ( Edited 2023-07-24 09:53)

[ :: Read More :: ]

Cart #ninjacat-10 | 2021-01-28 | Code ▽ | Embed ▽ | No License

Hey all!
Ninja Cat Remewstered is out now with improved visuals and gameplay options!
You can buy it from itch.io or the Google Play Store.

A platformer about a ninja cat with a grappling hook, where you die in one hit.

You have nine lives. Make them count.

Also available on itch.io.

How to play

  • Jump with O/Z.
  • Attack with X.
  • Press the jump button in the air near a grapple point to grapple to it. (Press up while grappled to reel in faster)
  • Hit targets with a star to open a nearby door.
  • Hit enemies while they're not looking to deal bonus damage.
  • Once you get the sword, you can switch weapons by pressing DOWN or UP twice. (Current weapon is shown under the health bar)
  • Use the sword to dash past searchlights without being caught.

At the end of most levels, destroy the gem cage and steal the gem to finish. But don't touch the case, as it's covered in electricity and will electrocute you.


1.0 - Big update, items are in the order they were added.

There are a LOT of changes in this update.

  • Removed a section of a level that you couldn't escape from.
  • Added space for more levels. (string storage, no compression)
  • Gem case now takes 2 hits to break. (was 3)
  • (removed later) Added toggle for music in pause menu.
  • (world 2) Final boss from previous version is now the mid-game boss.
  • Changed boss AI.
  • (world 2) Added new sprites for second boss encounter.
  • Changed the target doors to be red.
  • Added green targets which open green doors anywhere in the level.
  • Stars now fall if the tile they are on is removed.
  • Now red ninjas will only jump if they reach an edge or a wall.
  • Small changes to sprites.
  • Moved weapon display to under the lives bar.
  • Fixed a problem where the cat could get stuck inside offscreen map data.
  • Debug mode makes the camera move vertically to see offscreen tiles.
  • There is now an 8 frame window where you can still jump after walking off a ledge.
  • (world 2) Started working on the 2nd world levels.
  • Made stars able to be thrown upwards through semi-solid platforms.
  • Moved the title screen up a little bit.
  • (world 2) Added 1 new level.
  • (world 2) Added a third weapon: the Glove. It punches upwards, allowing the cat to double jump.
  • Removed some unused sfx and music so more that might be used can be added instead.
  • Optimised star and dust object systems (93%)
  • Made stars brighter to see them more easily.
  • Fixed an issue where camera pan tiles could allow the camera to see out of bounds near the end of the level.
  • Fixed an issue where the sword would deal the knockback of the last star created. It has its own knockback now.
  • Adjusted the background to be less bright.
  • Time now slows down while switching weapons. (94%)
  • (world 2) Added 2 more levels.
  • Added extra effects to the boss's appear animation. (96%)
  • Fixed a few problems resulting from decimal timer values after time was slowed down.
  • Added an instructions screen. It shows up on the title screen menu.
  • Press up to view the version on the press to start screen. (99.83%)
  • Combined the boss's two sprite sets into one, using palette swapping to achieve the same look. (96%)
  • Adjusted the order of levels after getting the sword to let the player actually try it out without falling to their death shortly afterwards.
  • Added a timer, displayed on the win screen when you finish the game.
  • Added a fastest run save system. Enter your name to be permanently displayed as the best Ninja Cat player who ever lived! ... at least until someone beats your time.
  • (world 2) Added 2 more levels.
  • Armoured Ninjas no longer move unless you attack them.
  • Made gem mimics (probably) easier to see when unstable. (far away)
  • Fixed bomb droppers not dropping bombs after the switching weapons time slowdown. (decimal timers again)
  • Oh no... 100.00% compressed size.. gonna need some more optimisations.
  • (world 2) Second world is about halfway complete (101%), might need to use a minifier when it's done.
  • (world 2) Added 2 more levels.
  • Stars no longer stick to semi-solid platforms at all.
  • There is space for probably 4 more levels and the final boss arena in the second map.
  • (world 2) Added another level, the boss arena, and the last area with the (spoiler for the ending) Golden Cat trophy.
  • (world 2) Added placeholders for the last 2 levels. (103%)
  • (world 2) Added the second last level before the boss. There will be 22 levels in total, or 19 if you don't count the 2 boss rooms and the trophy room.
  • (world 2) (removed later) Final boss cycles attacks faster. (104%)
  • (world 2) All the levels are finished! or at least, they've been created.
  • (world 2) Final boss no longer cycles attacks faster.
  • Compressed by removing comments, debug features, and empty lines. (94%)
  • Bug 1: best time screen appears after game over screen for some reason
  • Bug 2: you can walk through armour ninjas when they are not moving
  • Fixed 1, both the OVER and WIN states use the same update loop. Made it only switch to HISCORE if the mode is WIN.
  • Fixed 2, armour ninjas had OB_DMG set to false when idle for some reason.
  • Bug: green targets are broken. (in the new levels only version, at least)
  • Haha, it was because i didn't include the main cart in the export.
  • The bug where the boss gets stuck exploding is still there, might have to force him to stop existing after a few seconds.
  • Changed glove weapon to a double jump scroll.
  • Deleted level 16 because it was terrible.
  • Probably fixed the boss's endless exploding. (haven't tested yet)
  • Added double jump. Also stopped it from triggering near a grapple so you can jump, swing, then jump again in midair. Really cool.
  • Allowed ending the level while using the sword since it breaks the case in one hit now.
  • Added easy mode and set enemies that are removed in the first world when chosen.
  • Adjusted the range that enemy tiles are turned into real enemies.
  • Replaced level 16 with a new level
  • Spikes now make you slow down a lot while walking through them. (in case it's not obvious, running through sharp objects at high speed is not a good idea)
  • Broke the boss, it does the appear animation when defeated.
  • Double jump animation continues while grappling.
  • Fixed the above 2 bugs.
  • The boss explosion fix seems to work.
  • Reduced second boss's health.
  • Added double tap up/down to change weapons.
  • Slowed down the boss's attacks to make them easier.


  • Moved thread to cartridges.
  • Score now resets properly when you die.
  • Added another level, with a new enemy. (9 levels total)
  • Added the final boss and arena.
  • Changed how the searchlights move.
  • Moved the moon down slightly to fit on the screen properly.
  • Fixed the cutout on the moon not flashing with the rest of the sky on the title screen.
  • Added new end and game over screens.
  • Added a few challenge options and a menu on the title screen to choose between them.
  • Added a menuitem to enable debug mode, which displays a minimap and gives you the sword.


  • Added the background to the title screen.
  • Added another level. (8 total)
  • Made placeholders for 2 more levels.
  • Changed some levels and graphics slightly.
  • Changed the title screen music to a remix of the main game music.


  • Added new title screen with graphics.
  • Enemy facing directions should be consistent on each run.
  • New label image of the title screen.
  • Added a score display for gold.
  • Added 2 more levels. (now up to 7)
  • Now you get the sword in level 4 instead of starting with it.
  • Added an invisible tile which pans the camera over to the right when stepped in front of.
  • Made some of the levels slightly easier.


  • Reduced air friction. (was stopping too quickly after releasing rope)
  • Moved background into a smaller area of the map.
  • Added level 4 and 5.
  • Added targets and doors. Hitting a target with a star opens the door.


  • Added new weapon: Sword. (Switch by pressing DOWN, then X while on the ground)
  • Fixed the hitbox of the case at the end of the levels.
  • Updated the design of the platform holding the gem.
  • Made the placeholder title screen look better.


  • Added simple level transitions.
  • Added level 3.
  • Changed directions to change on button press rather than velocity.
  • New label image with the right colours.


  • First version.

Older Versions

Cart #ninjacat-8 | 2020-07-21 | Code ▽ | Embed ▽ | No License

Cart #ninjacat-6 | 2020-07-18 | Code ▽ | Embed ▽ | No License

Cart #ninjacat-5 | 2020-07-14 | Code ▽ | Embed ▽ | No License

Cart #ninjacat-4 | 2020-07-12 | Code ▽ | Embed ▽ | No License

Cart #ninjacat-3 | 2020-07-11 | Code ▽ | Embed ▽ | No License

Cart #ninjacat-1 | 2020-07-09 | Code ▽ | Embed ▽ | No License

Cart #ninjacat-0 | 2020-06-17 | Code ▽ | Embed ▽ | No License

Cart #ninjacat_prototype-0 | 2020-07-13 | Code ▽ | Embed ▽ | No License

P#78187 2020-06-17 10:03 ( Edited 2024-02-14 09:45)

[ :: Read More :: ]

Cart #woolcat_3d-1 | 2020-12-15 | Code ▽ | Embed ▽ | No License

WoolCat! Now in 3D!

Remade using Instant 3D (Modified to work with the original 64px resolution).

How to play

Keep Woolly's spirits up on his way home, be careful and keep an eye on his happiness meter, collect all the balls of wool to keep him moving forward.

  • Run around with the arrow keys.
  • Collect all the wool to move to the next level.
  • Collecting wool refills the happiness meter a little bit.
  • Touching water or oil removes some happiness and restarts the area.
  • There are 15 new levels for a total of 81.
  • To move diagonally, press two directions at the same time.
  • Meow with Z or X.


  • Made it easier to move diagonally

Developed by cubee (Website)
Original Game: Woolcat

Development GIFs.

Instant 3D code directly pasted into unmodified WoolCat:

Fixed 64px rendering:

Scaled up to final version with new sprites:

P#76305 2020-05-10 10:59 ( Edited 2020-12-15 08:53)

View Older Posts