Log In  

I'm good :).

Cart #ahealthydoseofdungeon-5 | 2021-10-10 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A Healthy Dose of Dungeon. Made completely from scratch in 72 hours for ludum dare #49. You don't know how you ended up in a dungeon, but you must escape it with nothing but your bare hands. An experience like this could make anyone's mind unstable!

Standard PICO-8 controls (arrows/z/x). Press x to hit enemies. Press z to dodge roll. Use the arrows to move. Every time you hit an enemy, your attacks do more damage and your character is faster. When you take damage you enter into an angry state in which you are super strong and you cannot get hurt. Your character is also invincible while dodge rolling.

There are 6 different medical conditions the character can be diagnosed with at the end of the game. Here is how to get diagnosed with each one:

  • unstable - beat the game normally.
  • hyperactive - beat the game in under 1 minute.
  • healthy - beat the game without killing any enemy (except the boss).
  • insane - kill all enemies in the game.
  • obsessive - kill all enemies in the game without dying.
  • possessed - kill all enemies in the game without dying and beat the game in under 3 minutes.

View the game submission on Ludum Dare too:


P#98216 2021-10-04 22:51 ( Edited 2021-10-10 02:54)

Cart #mission_impopsicle-1 | 2021-07-18 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A game made in one day for this game jam: https://itch.io/jam/vetelinos-summer-jam-july-2021

You are a ninja agent penguin on a unicycle and must stop ice cream terrorists from doing something horrific.

Arrow keys to move. Z & X to shoot.

P#95018 2021-07-18 07:34

Cart #heytherekitty-0 | 2021-06-05 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Made for a 4 hour game jam that was on itch.io. Instructions are inside the game. Disclaimer: this game isn't finished, but it was fun to make none-the-less.

P#93053 2021-06-05 08:29

Cart #fare_well-1 | 2021-05-03 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

You must go deeper down the well to be safe from the dangers of the surface. Little did you know that the well is dangerous too!

This an updated version of my game for ludum dare #48. The theme was "deeper" and my ludum dare submission page is here.

Controls are:

  • Arrow keys to move
  • Z to jump
  • X to shoot

Have fun :).

P#91168 2021-04-27 00:53 ( Edited 2021-05-03 02:22)

Cart #neglected_bear-3 | 2021-03-06 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A game for the one hour game jam 306. The theme was "neglected". Everything made in about an hour.

P#88624 2021-03-06 21:16 ( Edited 2021-03-06 21:51)

Cart #candle_rain-3 | 2021-02-06 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A game for the one hour game jam #302. The music, sprites, and code were all made by me in about an hour.

P#87309 2021-02-06 21:11 ( Edited 2021-02-06 21:31)

Cart #fivebyefive-4 | 2021-01-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A game for the one hour game jam #301. I made everything including the music in about 70 minutes.

P#86983 2021-01-30 21:17 ( Edited 2021-01-30 23:29)

Cart #flyingpig-1 | 2020-08-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Your mom is sick. You must save her!

P#81347 2020-08-29 22:44 ( Edited 2020-08-29 22:48)

Cart #hojujerehu-1 | 2020-08-01 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Flag Away Dash, a game for the one hour game jam. Theme was "flags".

P#80215 2020-08-01 21:01 ( Edited 2020-08-01 21:17)

I just noticed that on the exported cartridge files, it says "www.pico-8.com" on the top (the .p8.png images). I tried going to that address, but I get a 406 error. That should probably be fixed somehow...

P#74324 2020-03-30 05:04

Cart #guitar_mike-0 | 2020-03-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

I made this for a week long game jam between me and a coworker. The theme was "music is a weapon"... I didn't follow the theme very well, but it was fun making this. Fun fact, the character is actually a rotoscoped + minimized version of me.

This game is super stupid, but I hope you enjoy!

P#74323 2020-03-30 04:36

Cart #shuying_ha-0 | 2019-12-26 | Code ▽ | Embed ▽ | No License

P#71407 2019-12-26 02:03

Cart #twep-0 | 2019-11-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

This is my submission for the #TweetTweetJam. Use the arrow keys to dodge things. I was able to fit saving and a sound in the 560 characters as well! Also play on itch.io.

P#69991 2019-11-17 22:17 ( Edited 2019-11-17 22:21)

Cart #a_parsing_bug-0 | 2019-09-15 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

So, there is a parsing bug with the unique "+=", "-=", "*=", "/=", and "%=" PICO-8 flavored lua syntax. In normal lua, something like this:


is valid syntax, treated as two separate expressions. That works in PICO-8, but this:


throws a syntax error. It's odd because this:


does not throw a syntax error. It seems to be only with the unique PICO-8 equals operators and directly after square brackets.

Fixing this could benefit people working on tweet carts as well as carts that are token & character/compression sensitive.

P#67711 2019-09-15 21:24 ( Edited 2019-09-29 01:49)

Cart #rugao_class-0 | 2019-05-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A game made by my middle school English students. Each class had 20 minutes to tell me what to make from scratch. There were 4 classes.

P#64649 2019-05-21 07:01

OS: Arch Linux
Browser: Chromium

The little pause/play button on the BBS player will pause and play the cart if you click it, but if you press the "enter" key on the dialogue to either continue or reset the cart, the pause/play button doesn't change (it should go back to the pause icon, but it remains as the play icon).

Here is a lil' cart to test it out real quick:

Cart #50783 | 2018-03-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

P#63682 2019-04-19 13:21

Operating System: Arch Linux.

In "config.txt" if

root_path ./

is set, then whenever you try to "cd" within PICO-8, you get a

cd failed

error message. But if you change the root path to something other than "./", then PICO-8 works fine. It even works fine if you replace the "./" with a "../", which is a bit silly :D. It also works if you delete the "root_path" line.

Here is what the error message looks like:


EDIT: Ok, cd also doesn't work when you use the "-root_path ./" command-line parameter, but I guess that should have been common sense I guess.

P#63679 2019-04-19 12:52 ( Edited 2019-04-19 14:39)

Cart #fisher-0 | 2019-02-06 | Code ▽ | Embed ▽ | No License

Z/X to go through textboxes. Please enjoy my fishing experience :D

P#61565 2019-02-06 02:00

Note: To see updates to this post, check out my blog here.

So I was working on making an improved version of "The Story of Zeldo" and realized a few weeks ago that outlining my sprites was taking up more CPU cycles than I wanted it to. I was using the outlining function where the palette is cleared to a color, then 8 sprites are drawn around the actual sprite to produce an outline effect as shown here. I decided to change all the sprites that needed outlines to 10x10 instead of 8x8.


You can see the 10x10 sprites at the bottom right of the graphic. Getting rid of the outlining function like this improved my CPU, but wasted sprite space. I later needed more sprite space, but didn't want to take a CPU hit. Then I thought, what if I use rectangles to draw the outline of sprites instead of drawing actual sprites for the outline?

So that's what I did and I thought I would share. There are two parts to this process. The first is generating the rectangles for all your sprites and caching them at the beginning of the game.

-- 175 tokens
g_out_cache = {}
function init_out_cache(s_beg, s_end)
   for sind=s_beg,s_end do
      local bounds, is_bkgd = {}, function(x, y)
         return mid(0,x,7) == x and sget(x+sind*8%128, y+flr(sind/16)*8) != 0

      local calc_bound = function(x)
         local top, bot

         for i=0,7 do
            top, bot = top or is_bkgd(x,i) and i-1, bot or is_bkgd(x,7-i) and 8-i

         return {top=top or 10, bot=bot or 0}

      g_out_cache[sind] = {}
      for i=0xffff,8 do
         -- prev, cur, next
         local p, c, n = calc_bound(i-1), calc_bound(i), calc_bound(i+1)
         local top, bot = min(min(p.top, c.top), n.top), max(max(p.bot, c.bot), n.bot)

         if bot >= top then
            add(g_out_cache[sind], {x1=i,y1=top,x2=i,y2=bot})

init_out_cache should be called on startup in the _init function, passing in the start and end of the sprites you want outlined. Then the other part to outlining sprites is to actually outline them!

-- 84 tokens
function spr_out(sind, x, y, sw, sh, xf, yf, col)
   local ox, x_mult, oy, y_mult = x, 1, y, 1
   if xf then ox, x_mult = 7+x, 0xffff end
   if yf then oy, y_mult = 7+y, 0xffff end

   foreach(g_out_cache[sind], function(r)

   spr(sind, x, y, sw, sh, xf, yf)

This function just takes the rectangle data created from the init function and draws them as rectangles. A little bit extra logic is needed for xf and yf to work. Using these snippets, CPU efficiency of outlines is better than the old method, but worse than having no outline at all.

Although I thought this was cool, there are four at least four drawbacks to using this method:

  • The token count is much higher than the old method (259 tokens instead of 59 tokens).
  • The init function is not very efficient, because I went for token count on that instead of efficiency.
  • Currently sw and sh are not implemented with this method. So it only works on 8x8 sprites.
  • If a sprite is hollow, then the entire hollow region will be filled with the outline color as seen below.


The green arrow is the old method, the red arrow is the new function.

Here is a demo of this sprite outline function in action!

Cart #efficient_outline-3 | 2020-02-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

As you can see, drawing 56 outlined sprites with this function saves over 15% of CPU usage compared with the old method!

As far as improvements go, here are a few areas this code could be improved on:

  • There are only up to 10 rectangles drawn for each 8x8 sprite, but some sprites could have less rectangles if extra code is added to check for duplicate rectangles.
  • Making variable sprite height and width, instead of just 8x8 (aka. sw and sh).

I am going to be using this in my Zeldo game in the future, but I will probably pre-process all the outlines I need and just store the rectangle data to save on token count. Comment if you have improvements for this, if you found this useful, or if you just have something to say. I might do another post like this in the future if I find people read this one :D.

P#61115 2019-01-22 22:38 ( Edited 2020-02-08 02:18)

Cart #52865 | 2018-05-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

A game made in an hour, for the OHGJ!!!!

There is sound BTW :).

P#52866 2018-05-19 17:26 ( Edited 2018-05-19 21:44)

View Older Posts
Follow Lexaloffle:        
Generated 2021-10-27 08:12:53 | 0.088s | Q:80