Log In  

I aspire to out-Action 52 the Action 52 on PICO-8.

[ :: Read More :: ]

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


Witches study various ancient mysteries, but some mysteries are too arcane even for them. Such as retro technology.

This game is largely based on Falcom's 1984 Dragon Slayer, with my reference version being the MSX port. Much of the premise is the same: you collect different power-up items and bring them back to your base, which allows you to level up to allow you to fight stronger monsters and in the end you face the final boss -- which is the Dragon in Dragon Slayer, and the save icon in this game.

The initial enemies can easily kill the player, and the first course of action would be to start collecting various colored coins and bring them back to the purple magic circle. You will learn new magic spells as you kill enemies, and once you have killed 99 enemies (there's a counter on top-right) you can take care of the save icon and finish the game. Each time you kill an enemy, the game will spawn a new one, and they'll be stronger than before.

The rough estimate to defeat the boss is +5000 ATK and DEF, or there might be an easier way.

Falcom claims Dragon Slayer to be the first Japanese Action RPG (Hydlide also disputes this claim) and as such it is well-respected, but I found it to be not quite well-playing. In Dragon Slayer, the player can collect multiple power-up items and bring all of them to the base at once, except the crucial one that increases Attack which must be carried one at a time, around ~160 round trips.

Also, after the player slays the Dragon in Dragon Slayer, the player needs to find three "Crown" items that scatter to the random places, all the while fending off unbeatable ghost monster who will randomly take away your items and drop them in random places. I completely cut this part, as I found it an exercise of frustration. With these two major changes, the game came to feel a bit bland but I prefer a bland game than one that overstays its welcome.

The basis of this code is forked from about 1/4 of the way of Porklike tutorial, and the player character bumping into the wall would feel familiar to anyone who's played it. One of my goals with PICO-8 was to create something like Hydlide, and I think I'm coming close to it.

P#109388 2022-03-30 04:29 ( Edited 2022-03-31 09:33)

[ :: Read More :: ]

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


This is a re-interpretation of Bokosuka Wars by ASCII. You control up to 9 characters simultaneously, and combat will occur as they run into enemies.

Unlike in Bokosuka Wars, the enemies only move when the player moves, making this a turn-based game. Like in Bokosuka, the enemies may run into your direction and block your way, but they won't initiate a combat until you decide to engage them by running into them.

The characters have life bars. Defeating enemies will increase their max HP and ATK, and defeating five enemies will promote them, giving them a boost in growth -- but there's a limit to how strong a character can get. The characters heal slowly as they move as well.

The biggest deviation from the Bokosuka would be combat: in Bokosuka, the combat result was decided by the characters' ATK plus a dice roll, and the outcome of the battle was never certain. In Makaronomachia, there is a little bit of RNG in combat but the player can make reasonable expectations if an engagement will be successful or not. Maybe not the first time, but eventually.

A simple tutorial is included that explains the basic mechanics.

P#108874 2022-03-19 04:35 ( Edited 2022-03-19 14:34)

[ :: Read More :: ]

Cart #dambi2-3 | 2022-03-31 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


Minor bugfixes

  • Pressing O to skip the last cutscene didn't reset the game
  • One of the levels had an unintended moving platform


Dambi was running low of the essential winter supplies, and she decides to raid the nearby snowmen's den. After all, they're natural competition for the same ecological niche.

This is a sequel to Dambi Gest Ready for Winter, and as such it looks quite similar with the recycled assets all over the place. Gameplay-wise, it's quite different as the enemies now actively chase Dambi. These snowmen are the first enemies in my games that can go around obstacles and chase the player -- not in the most efficient manner, but still.

Pressing X jumps and pressing O will drop a radish. When a snowman comes in contact with a radish, it will turn green and be immobile for a brief period of time, and Dambi won't take damage from it in this state -- this will be necessary in some levels.

Dambi won't lose a life when contacting enemy as long as she has one or more radish -- she'll lose all radish but be able to continue. But when she falls below the level or touches an enemy when she has no radish, she'll lose a life and the stage will reset.

The game starts with 5 lives. While there's no extra life, the radish can be found on most levels. There are a total of 15 levels. The first level is always the same, but the rest of them appear in randomized order. I don't know, I just like doing this.

The way the levels are organized around the ladders and the movement patterns of the two enemy types take inspiration from Chuckie Egg on ZX Spectrum.

The controls may not feel right if you use a controller with an analogue stick, as it's easy to enter unwanted direction while moving up/down ladders. The game plays bad with a 360 controller (both stick and D-Pad), XBone is better if played with D-Pad, Saturn and SNES replicas feel pretty good. Maybe there's something I can do about the stick, but I'm not sure what yet.

P#108533 2022-03-13 07:34 ( Edited 2022-03-31 12:45)

[ :: Read More :: ]

Cart #mirrormaze_bomber-2 | 2022-03-06 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


  • Minor fix with the bomb spawn location. Sometimes they spawned slightly off the grid because I forgot to readjust their pos.
  • Fixed typo.


This is an amalgamation of Binary Land by Hudson and Bomberman, also by Hudson. I guess I really like Hudson more than I realized.

The player controls the two bomberbots simultaneously. The primary character (the one marked with "!") will respond to your directional input, whereas the secondary will move in the horizontally mirrored fashion like in Binary Land . But unlike in the original game, you can press O to change your primary at any time.

Pressing X will drop a bomb, both at the same time. The bomb can destroy the blocks and kill enemies. The bomberbots don't take damage from their own bomb blasts, but they can damage each other. Killing three enemies without taking damage in a row grants a shield, and the combo is displayed on the top right. (Sadly this is the only bonus from combo.) Dead enemies may also drop hearts which add one life.

The doors will open when there is no more enemy left in the level, and the stage is cleared when both bomberbots reach the exit. They don't need to be in two different doors; if you somehow get them to overlap and they end up in the same door tile, that also counts. Some levels are symmetrical but most levels aren't, and this is more of a puzzle than an action.

The game consists of 15 short levels. The first level is always a short tutorial level, the rest of them are shuffled in randomized order.

Story-wise, this is related to Bomba Cum Laude and Ka-Ka-Kaboom! as the characters re-appear; the chronology can be in any order. A lot of code from Bomba Cum Laude is also recycled here as well.


The game supports the 2-player mode where each player takes control of one bomberbot. All story cutscenes are removed from this mode and here, they can take damage from their own blast like in Bomberman. The immunity to own bomb was added to the single player otherwise it'd make it too difficult, but when one player controls one character this is probably not as needed. Two players share the same stock of lives so blowing each other up is not recommended.

I haven't tested multiplayer as much since I only have two arms. I'm not really keen on playing or making multiplayer games on PICO-8 but this game felt like a natural fit for it. One player or another may start with limited options to manoeuvre at the start of a level, but the other player should be able to get you out of there.

P#108076 2022-03-05 02:31 ( Edited 2022-03-06 23:01)

[ :: Read More :: ]

Cart #still_a_magical_girl-0 | 2022-02-26 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


An ex-magical girl's familiar cat leaves home, and she sets off to find her cat.

It's my first attempt to use 16x16 sprites, and I definitely feel that a scrolling game with 16x16 on PICO-8 was probably not the smartest design, I had very little room left for the levels, of which there are only two.

But as a prototype, I had a lot of fun figuring out how to make various mechanics work -- parallax, bouncing boulders, moving platforms, jumping down from a platform and a life bar. ...and as a result I think it's got a bit more spaghetti than even my usual, but the next time I use them I'll be able to handle them better. Maybe. Hopefully.

The game should take about 3~5 min to complete. Both the combat and the platforming are kept light, the only thing a player might want to be careful is not to overuse the drill, since the drill meter on the bottom also doubles as your health.

P#107680 2022-02-26 05:36 ( Edited 2022-02-26 05:54)

[ :: Read More :: ]

Cart #bomba_cum_laude-2 | 2022-03-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Note: I am aware that the title could sound pretty bad in English. The Latin title means "bomb with praise", which is a pun on the expression "summa cum laude". I made the title in Latin as I used it as an Ersatz of the fictional Matogan language, and this didn't come to my mind until it was pointed out. It's not something I mind too much, but please keep the comments civil.

Update 200317

Performance update. Instead of creating all crates and enemies per level at once, the game will create them as they come into screen and this reduced the slowdown at the beginning of a level.

Update 200221

A few tweaks have been made, including the boss Sinoa's own bomb attacks. Somehow I couldn't get this to work without too much slowdown before, but it felt like something that really shouldn't be cut. After all, boss battle.


If you've ever wanted to play Sokoban while playing Bomberman or vice versa, here's the game. If you haven't, well, here it still is. Push the boxes to the circles the Sokoban way, and lay bombs to destroy obstacles and enemies the Bomberman way.

Pushing a box to the red circles will give you a bomb, and to a blue circle will give you a chain.

X: Place bomb. The bomb will explode and damage the player, so move out of the way quickly.
O: Use chain. Face a box and press O, and the box will move in the input direction.

For each level, the exit door will open when:

  • There's no more boxes, or
  • When the boss is dead, when there is one.

You don't have to push every box to the circle. The bombs will also blow up the boxes, and that also counts -- so if you think you have enough bombs and you don't want to make roundabout trip to shove that one box, feel free to just blow it up. While the bomb stock is limited, you won't need to be super-efficient either.

There's no extra life, but each death will add 5 bombs to the inventory and restore all blocks (and enemies), but the destructible walls will remain destroyed. This is to minimize the chances of getting stuck in an unwinnable and unlosable situation.

Story-wise, this is a continuation of the other games that star Mina and Ka-Ka-Kaboom!, which I'm planning to revise later to tie it in better.

P#107282 2022-02-20 01:11 ( Edited 2022-03-17 18:22)

[ :: Read More :: ]

Cart #no_broomstick-2 | 2022-02-14 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Update 220214

The arcade in the mall was screaming for a minigame but it took me a while to think of one. The minigame can be played once per game and it doesn't affect the ending. Nari (the white witch) will alternate between moving randomly and actively chasing Dona in the shortest distance. It's technically beatable but just barely.

Edit: Can't believe I forgot this, Nari was always facing down in the previous version. Now she faces the direction she moves.


Dona the Witch needs to return a library book and that's the entire goal of the game, which can be accomplished in half a minute. But the underground mall has a lot of distractions should you decide to explore, and Dona has a tendency not to think before spending, or think too hard and rationalize the impulse buys.

X : jump
O (when landed) interact with stores
or (when jumping) fly with broomstick
or (when flying on broomstick) jump off broomstick

As a witch, she can fly over things on her broomstick. She can't walk past the stairs, but she'll ignore the stair collision while she's on broomstick and this will be necessary to reach certain areas in the mall. There's a limit to this, and the broomstick points can be charged with a cup of coffee in any café, which also serves as a respawn point. But there are security guards who will come after her if they see her flying in the mall. After all, you really shouldn't.

There are 12 items she can buy from the mall, and she can carry up to five. If you return the library book and head back to the metro (the starting location), you'll see different endings depending on what items you purchased. Each time Dona buys something, she'll think of what else she wants.

As a game, this is pretty light. The guards have been added to give a minimum condition to fail and thereby make this technically a game.

There's some performance issues, sometimes the camera can be slow to catch up. (I feel like this happens more when running on raspi version using Anbernic handheld than on PC.) I had to cut a lot of effects and decorations as a result, and hopefully I'll figure out how to optimize it down the line.

P#106576 2022-02-09 02:05 ( Edited 2022-02-14 11:38)

[ :: Read More :: ]

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

Update 220306

  • New: Combos. Successive killing enemies without taking damage ticks the combo count on the top right, and every 50 combo increases the score multiplier by 1. e.g. at 0 combo, the score multiplier is 1, but at 120 combo the multiplier is 3. Since all non-boss enemies have default score of 1, this effectively becomes the score per enemy.
  • New: High scores. The previous versions didn't need it because of the limited number of enemies with no multiplier, which set a ceiling for how high the score can get and pretty much every successful run would give score in the ballpark range between 1200-1300. Since that's not the case anymore, a high-score system is added. The score will be red when you're over the current high-score, and you'll see the current high score for each character on the title screen.
  • New: Progress percentage on the bottom right. It shows how close you're to finishing the game, which I think would be helpful as there's no stage division and little visual change as the game progresses.

I didn't set a cap for the score. The combo is capped at 999, and you'd need to kill 1,608 enemies with the max combo multiplier of 20 to reach 32167 and there aren't enough enemies to do so, making the overflow extremely unlikely.

This still isn't the kind of game for the high-score competition in the traditional sense due to the randomized nature which would affect the end result, but it could still be an incentive of sort to make an effort to dodge bullets. At least I know I didn't bother dodging boss bullets when I was sitting on 50+ shields.

Update 220214

  • Slight redesign of the player character sprites
  • Adding a parallax layer on the bottom and lots of clouds on the top
  • Increased starting shield from 5 to 10, hopefully making it a little easier to get into.
  • A few other minor graphical and mechanical adjustments

The added layer and the clouds serve two goals. First is to look nicer by giving an illusion of depth, the second is to trigger a slight slowdown when too many enemies/bullets appear at once because slowdown is a good thing when the screen gets too crowded in a shmup. Both the extra layer and the clouds are mostly dull and grey so the enemies and the bullets should still stand out. I think.


Meet Moran, the third playable character that was never to be. She was being developed in parallel but ultimately got axed as I ran out of tokens. Hopefully she'll star in her own game down the line.


Added 3 sec delay to the game over screen


Witch on a broomstick going kaboom. It's not the most original formula but not as cliché as a dude with a sword, so why not one more.

The game should be on the simpler side for the seasoned shmup players since most of the patterns are either just flying straight to left or right, or targets the player position at the time of firing. There can be quite a lot at once, but your hit box is a single blinking pixel on the character. (Might be hard to see on the gif)

There are two playable characters, Dona (the black one) and Nari (the white one). Hold X to rapid fire, but button O does different things depending on who you're playing as.

The stars will normally follow the character around, but Dona can lock them with O and make them move according to the directional input. Since the stars can block the enemy fire, this can be used defensively. Dona's secondary missiles fire diagonally both front and back, and Dona's stars will fire in the direction opposite to her movement, resetting to firing right when no movement input is given.

Nari is trickier, and she can be unlocked after finishing the game once with Dona. Nari's secondary missiles only fire either left or right, and the angles are narrower so they don't cover as much screen. Her stars will also always fire in the direction Nari is facing. Tapping O will make her turn back, which becomes necessary as the enemies will appear from both directions. If that's not enough, when you play as Nari the game starts at a higher rank with faster and more frequent enemy bullets.

Defeated enemies will sometimes leave green items behind. This increases the "shield" on top, which is basically your HP. There's no "max shield" and you can stock them as much as you can, but you can lose a lot at once if you're caught between enemy crossfire. This idea is taken Dariusburst, which inspired a few other things in the game. (Like, Dona's fire pattern is pretty similar to one of the Dariusburst ships.)

There's no other power ups. Earlier versions had it but I felt the gradual buildup doesn't make a lot of sense given the game's runtime. The enemy patterns are randomized, but some patterns only appear in the latter half of the game. There are boss fights, and the game should last about 10 mins, maybe a little less.

P#105914 2022-01-29 18:29 ( Edited 2022-03-06 09:54)

[ :: Read More :: ]

Cart #misty_forest-2 | 2022-01-28 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

1.11 (22/01/28)

There were occasions where the enemies appeared to move at inconsistent speed, as if they rush at the player as soon as they can. This was really bad since the game kind of depends on the player being able to predict the enemy moves. My suspicion was rounding, so instead of setting their speed at 0.25, every enemy now has a timer that they can move one pixel only every four frames, which should be morally equivalent to speed 0.25. At least as far as my brain can tell at 2AM, the problem seems to be resolved, or much mitigated at least.

1.1 (22/01/25)

Tweaked the control a little to make turning the corners smoother. Mina will steer herself around the corner when she's partially blocked by a wall.


Mina got back on her journey home after finding her way out of Miromina, but she managed to get herself lost again in a forest. The forest is full of thick fog and, for some strange reason, sweets.

This is a puzzle game based on a simple fog of war. Mina will reveal her surroundings as she moves, and the enemies will move towards her if they are in the cleared tiles. Mina can't fight back, but she can lure them to move them out of choke points.

The game consists of 20 levels which appear in randomized order. Some are slightly trickier than others, but I think most of them are similarly difficult. There's no time limit, and you start with five lives. While there's no extra life from score or items the remaining lives will reset to 5 after a cutscene after clearing the first 10 levels.

P#105601 2022-01-25 05:04 ( Edited 2022-01-28 07:13)

[ :: Read More :: ]

Update 03/08

Fix: Another bugfix, hopefully for the last. Dambi wasn't showing running and sliding animation and just sliding in the idle animation since 02/27 update, this is now fixed.

Update 02/27

Fix: The player states (e.g. standing, jumping, etc.) have been rewritten to become mutually exclusive, and this helped me get the ladder to work better. e.g. unlike before, Dambi will no longer automatically latch onto ladder when she comes in contact with it while airborne, and she will simply jump past it -- unless the player presses up/down while she's airborne and is in front of the ladder.

Tweak: Dambi has a bit more acceleration now and she jumps a bit further so jumping between two-tile gap does not need to be as precise as before. Also, she'll have a decent chance jumping over two spikes at once, if the timing is precise.

Added: More graphics in the background. Looks a bit less bland.

Update 01/31

New: Added a simple memory game as a minigame. The minigame can be entered from the title screen, and clearing it gives three additional lives. The effects do not stack, and last until the player finishes the game, gets game over or resets.

I was feeling stuck with another game and decided to do something short (even by PICO standard) and added it to this game as it had appropriate sprites, made some thematic sense and more token rooms.

Update 01/23

New: Double spikes. This has two spikes put close to each other in a single 8x8 tile, and can be jumped over at once. Functionally this isn't very different from the existing single spikes.

Fix: Slight rearrange on the first level. The first obstacle in the game had two single spikes placed next to each other, which probably helped making impression that they can be jumped over at once. The first occurrence of two single spikes next to each other is now at the top level of the first stage, by which the user has a better feel for Dambi's jump distance. Hopefully.

Update 01/22

Fix: The initial release had a few issues with the ladder. Dambi couldn't jump on top of a ladder, and she would shoot upwards when she latches on to the ladder while airborne and while UP is being pressed as she'd enter climb and jump state at the same time. The state machine has been revised over the week and while it could still use some further refinement, the control should make more sense now than before.

New: The remaining lives are added as bonus to the final score. I noticed I was just rushing and ignoring the enemies in the later stages if I had enough lives to make it, and that there's not a lot of incentives to open the present box when you have enough lives already.


Dambi was too busy playing PICO-8 that she forgot to stock food for the winter, and she realizes it's snowing outside. Now she hurries outside to gather cheesecakes, popsicles and macarons.

It's my first platformer and is mostly a rip-off of Ponpoko (1982) by Seibu Denshi (later Seibu Kaihatsu) and published by Sigma for arcade. The game remains pretty obscure in Japan and quite unknown in the West, but for some reason it became a smash hit in Korea and it could be commonly seen in arcades up until late 80s... so I've heard, I'm not actually that old.

This game is quite easier, though. You can control Dambi while she's airborne, and she won't die when she falls from the ledge. There is a timer, but you don't die when it runs down to zero (you just don't get score bonus); and you don't have to start the stage over when you take a hit, you just blink and lose a life.

The goal is simple, collect all items to clear the stage. The contents of the present box is randomized: 60% chance of extra life and 40% chance of spawning a ghost. The equivalent item in the original Ponpoko is not randomized, some always spawn enemies and others give points. There are 10 stages in total, and would take about 10 mins to finish.

I kept the way the enemies hover back and forth ignoring the gravity. Not only that this predictability is a big part of the gameplay in the original as you'd need to time your moves, this simple pattern made it much easier to code. She can jump between gaps up to two tiles but she can't jump over enemies so she'd need to wait on the ladder to wait until they go away.

It is technically possible to jump over two spikes at the same time, but it'd be much easier to jump over one at a time, because her collision is small enough for her to stand between them.

The core physics and movement codes come largely from Nerdy Teachers' Platformer Tutorial, with my addition to handle the ladder climbing. As a result, most of the existing problems with control involve the ladder.

P#105367 2022-01-19 15:49 ( Edited 2022-03-09 02:33)

[ :: Read More :: ]

Cart #sugarhigh_daun-2 | 2022-02-12 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Update 220211

The enemies have collision against each other and they're less likely to overlap. They pick a random direction when colliding and this can cause a little wobbling but at least they'll try to unstuck themselves. It's something I wanted to do in the first version but didn't know how to check collision against all other members in the same table/class..

Update 220119

The two known issues in the initial release are somewhat mitigated now. The ball will course-correct itself when it's one pixel off from being able to travel, and it's a little easier to shoot through gaps. Also, the ball hits the enemy when it comes into collision with both the wall and the enemy, but enough of the ball's width will need to overlap the enemy.


Daun has been dating an archdemon she met on Tinder for the past three weeks, but their relationship goes sour when the demon keeps proposing that she marries him.

This is a little hybrid of top-down action adventure à la Zelda and Breakout. Daun can fire up to five sugar balls at once which will deflect upon impact to a wall or destructible blocks, or damage an enemy and disappear. But this costs her sugar if she attempts to fire more balls than her current level: e.g. at level 2, she can shoot two with no extra cost, but the third shot will cost her extra sugar.

Defeated enemies will leave various dessert items for (somewhat) plot-plausible reasons, and this will replenish her sugar. Her blood sugar level depletes over time, so the player will need to actively search out for the demon's minions to stay afloat. While I sometimes get game overs when I'm not careful, the game shouldn't still be too challenging.

Daun does not get experience from defeating enemies. There are four macaron items in the dungeon that will increase her level by 1.

This game pulls ideas and code snippets from all my previous games plus a few new tricks I've learned along the way. The game should take about ~10 mins to finish.

Known issues that can be improved:

  1. When the ball hits an enemy standing next to a wall and the ball comes into collision with both the wall and the enemy, the ball is blocked by the wall and doesn't hit the enemy.
  2. When shooting the ball into a narrow gap, Daun's position needs to be exact or the ball will bounce back.

I might need some time to think how I might resolve these...

P#105161 2022-01-16 02:18 ( Edited 2022-02-20 19:13)

[ :: Read More :: ]

Cart #pakupaku_maze-5 | 2022-01-16 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

1.13 Update

New: The game now has Mode A and Mode B. In Mode A, Paku-paku will continue to travel in the same direction until it hits a collision. When a user gives vertical input while Paku-paku is traveling horizontally, it will continue moving horizontally until it comes to an intersection where it can turn vertically. In short, this is closer to the original Pac-Man. Mode B is the same as before, Paku-paku will only move when an input is given, and will come to a stop when there is none.

I thought about this and it came to my mind that since the game looks so similar to Pac-Man, players would also expect it to play like Pac-Man. So I felt like an option should be there. Mode A feels more fluent when turning corners as a result, whereas Mode B still makes it easier to ambush the ghost by camping next to a power pellet. As a result of this change, the game now saves 8 high scores, 4 for each ending multiplied by two modes.

New: There is only one key and its spawn position is now randomized. After repeated test plays I inevitably came to know where things are by heart, and I realized that I placed the keys too close to the exits, making 70% of the play field pointless to visit in any given run. Sure, I didn't want to make the game too hard, but maybe this was made too easy. Although there's only so many rooms to explore, I think this can still be a tad frustrating so here are the room coordinates where the key can spawn.

(5,1), (2,1), (6,1), (3,2)

Fix: The door bug is now fixed. After a bit of fiddling I gave up and decided to hard-code door coordinates, so all four doors open when there's no pellet and Paku-paku has a key.

1.12 Update

  • The About page is updated to have a simple sprite animation to explain the game flow.
  • Known issue: the exit door at (3,0) is open when Paku-paku enter the room with a key, and it can be entered to see the ending. There might be other bugged exits.

1.11 Quickfix

  • The player can turn corners more easily. If the player is one pixel short of being able to move, it will just move player so they can turn. Getting caught in the corner can still happen if the player is off by two or more pixels, but I hope it's a little better than before.
  • The walls better represent collision. The discrepancy between the visual representation and box collision definitely made the experience worse.
  • Fixed another oversight, the game was trying to move player diagonally which resulted in the player facing downward when moving left when the analogue stick was pointing down-left, for example. Now the player only faces the direction it's heading.
  • The ghost will blink for 45 frames (1.5sec) before the power pellet effect runs out and it becomes dangerous again.

I'm still thinking of how I could make its movement a little more fluent. Hmmm...


Pakupaku Maze is a dungeon crawler, starring a legendary hero who was cursed by the evil demons to become a yellow circular blob that is unable to leave any room unless he eats all the cookies that are on the floor. Alternatively, you might say it's a Pac-Man clone.

The game's based on an idea I had several years ago, what if Pac-Man can leave this maze and explore other areas. It was a pipe dream at the time, but now I can make it and see how it turns out. The entire game is made of 30 screens, and there is one key and four exits which lead to different endings. Don't worry, the key will work on any door. The game will save four high scores for each ending.

There's only one ghost, and this ghost isn't as smart as the original Pac-Man ghosts because I wrote its AI. I was too confused reading about A* and felt it could bog me down for days if not weeks, so I prioritized finishing the game with what I can write. I thought hard about adding a second ghost, but having a second ghost would crowd the screen too much and make the game too difficult.

Player's starting location is randomly chosen among 5 possible options, which I hope would extend the game's expiry date. I'm quite pleased with the end result here, and it's my first game that's not built off from a tutorial project. One day I'll do a Pac...no, Paku-paku Roguelike with randomly generated mazes...

And yes, it's possible for Pac-..no, Paku-Paku to go transgender during the game. Well, there's an item that puts a bowtie to make it look like Ms Pac-Man.

P#104528 2022-01-08 05:56 ( Edited 2022-03-06 23:36)

[ :: Read More :: ]

Cart #navader-1 | 2021-12-31 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Update 211231

1.1 update

  • New: Timer added to track how long it took for a player to beat the game. The game saves the best records for each mode on the cart.
  • Fix: Enemies now fire only when there's no living enemy below them in Mode A. The bullet intentionally spawns 8 pixels below the enemy.
  • Fix: Player bullet spawns right above the player in Mode B.
  • Fix: Ending text modified following feedback on Discord.
  • Partial fix: Slightly better enemy laser spawn position in Mode B.

Known issue: The enemy lasers in Mode B spawn where they should at first, but as game progresses and there are less enemies on the screen, the laser seems to spawn lower than they should. The intention is they spawn 4 pixels below the enemy, otherwise they sometimes move down and spawn laser at the same time, destroying themselves.

And with the fix in Mode A, I can now recreate Nagoya attack. In Space Invaders, there's a bug (or a feature?) where enemy bullets spawn one row below than their position, so when they're at the bottom row the bullet will spawn below the player, rendering the player invincible. There's a lot of risk playing it this way, both in the original and in this version, but it's something I wanted to include in this version as I heard this was how the 'cool kids' played the game back in the days.


This is a Space Invaders derivative. The title is a combination of nabi ("butterfly" in Korean) and Invader. There's not a lot of story here, you're a green butterfly and you shoot other green insects. The game has two modes, unimaginatively called Game A and Game B, kind of like how early Famicom/NES games had similarly named game modes.

Game A is your basic Invaders game. It's not a faithful port nor it's meant to be one, but the basic ideas are the same. You shoot only one bullet at a time, the enemy formation moves one step at a time, they come all the way down and you lose. The tempo is a tad faster than the original game. There's no barricade, but you can press O to activate barrier at any time, as long as you have barrier stocks.

Game B is more chaotic. You have rapid fire. A random enemy will be selected to attack and flash red, and it will shoot a long laser that destroys everything on its way -- including other enemies, long live friendly fire. Also, when the enemy reaches the bottom of the screen you don't lose, but just lose some points depending on how many escaped. The bottom row enemies still die in one hit, but the top ones will take a little more abuse before they die.

Once you reach 10000 points or higher the scoreboard will display !!!! instead of your current score. (Many Activision games did this on Atari 2600) Once you clear the current wave while the score displays !!!!, the next round will be a boss battle. In Game A, the boss takes 7 hits. In Game B, because of rapid fire, 50. Once that's done, you beat the game.

Usually it'd take Game A much longer to reach 10K than Game B, and so I made the UFO to appear only in Game A, and at a much higher frequency than in the original game.

Reaching !!!! in Game A

Boss fight in Game B

The game is quite easier than the original. If you get hit while you still have one or more barriers, you don't lose a life but lose all barriers instead. (An idea that I stole from Dodonpachi Resurrection which I just love.) With the default three lives, that means you can get hit 6 times before you get game over, and in both modes there's one extra life as you pass 5000 points.

There's no increase in difficulty as the game progresses. I played a good amount of Space Invaders Famicom version while making this to get ideas and I felt like the first levels were too easy whereas the later ones just too brutal. While making this derivative I went with a constant level of difficulty that I felt was "just right" -- so you could say that's a very self-centered balancing, it's a Goldilocks difficulty where I don't feel too stressed nor bored with, and my ball park was to be stimulating enough not to fall asleep, but too demanding as to lose focus during a Zoom meeting. But this is not something I'm 100% happy about, I'll need to re-think this later so that I can feel comfortable while the game getting gradually more challenging.

And I wanted to give it an exit point. With the arcade games with no end, you either quit because you inevitably lose, or because you lose interest and get bored. And neither leaves a good aftertaste. By adding an end boss and an ending you know you've played your game and leave with a sense of closure. Game A can be finished in 10~15 mins, Game B in 5~8.

Technically this is another case of noob coder's spaghetti code. I started buliding my version of it, got stuck, looked up some tutorials to see how others have done it, plagiarized, merged my own codes (which resulted in two modes) and I'm pretty sure this could have been better planned if I had the whole picture in my mind from the get go. Also the boss and the three-way shots took me an embarrassing number of hours. This doesn't look too stable but so far as I was testing I couldn't find any more major break points so I'm releasing this as it is. Maybe I'll look back at this and find a better way to do it later.

P#103814 2021-12-30 12:49 ( Edited 2022-02-21 15:14)

[ :: Read More :: ]

Cart #kakakaboom-4 | 2022-03-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Update 020322

  • Previously, extra lives were given at 200/400/600/800/1000 points. Now the first extra life is given at 300, and then every 400 points with no upper limit. The player can keep up to 8 lives.
  • Cutscene intervals are extended, appearing at every 1000 pts.
  • High score cap is removed.
  • And while at it, a little more embellishment on the title screen.

I wanted to go to bed, but somehow my brain thought of this change, and I couldn't fall asleep without letting this out of my system by implementing it.

Update 022020

  • Slight revision to the text to tie in with its plot sequel Bomba Cum Laude.
  • Minor retouching on portraits. Also, the white bomber had to go as Hudson references got removed.
  • The basket will move faster at later levels.
  • The next bomb will not be more than 48 pixels horizontally apart from the pervious one.


This is a Kaboom! clone with anime girls that nobody asked for. I started this as a side project while I was stuck with different phases of building Miromina. This was built upon an exercise I made from the Nerdy Teachers' tutorial game Fruit Drop.

The player begins with three lives, which are represented with the three baskets and it just stacks up if they can earn extra lives. All baskets have collision, so it's possible to sweep across the screen and catch bombs from either side of the basket stack, and that's the intended design. The bombs will be clustered around the center in the early levels, but they'll get more randomly scattered and faster. When the player loses a life by missing a bomb, the game will clear the current bombs and start a new wave with the randomness and speed scaled back a little. Extra lives are given at fixed score points.

At first I wasn't really sure if I wanted to publish it since it is a beginner exercise staple after all and you've all seen different interpretations of the Kaboom! formula, so to give more of a character to this cart, I added a story progression featuring pixellated anime girls. The cutscenes will appear at the beginning of the game and as the player reaches 500, 1000 and 1500 points, and after each cutscene the girl who appears on the top right will change.

The original plan was to make the girl move and drop bombs like the mad bomber in Kaboom!, but despite my best efforts I couldn't make it in 32x32, so I just decided to keep them stationary so they don't look like they have missing body parts when moving at least. While not intentional, it turned out not to be too bad since I can then spawn bombs from y=0 and that gives 32 more frames for the player to react to new bombs.

P#103530 2021-12-25 21:08 ( Edited 2022-03-22 05:59)

[ :: Read More :: ]

Cart #miromina-3 | 2022-02-25 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Update 220224

  • Minor bugfix on two items
  • Added 1 pixel movement buffer. It didn't feel too stiff on analogue stick, but I noticed the cornering was stiff on d-pad.

Update 220109

  • Fix: All items were part of the background map tiles in the original version, which gave them somewhat wonky collision when picking up and dropping them, and they showed the background when on the floor. Now they're treated as objects on top of the background, giving a much cleaner look.
  • Fix: A side effect of the above was that sometimes the chests will duplicate when you open them. This shouldn't happen anymore, as chests are also objects with box collision now.
  • Fix: Another side effect of the above, you could place an item and replace a tile that triggers events essential to complete the game, making the game unwinnable (like in front of the statue above). Since dropping items doesn't alter the map, this shouldn't happen anymore.
  • Fix: Some items had light green and it blended into background when carrying them over the grass area. They're now darker.
  • New: "About" page added to the main menu explaining the basic gameflow. Combined with the in-game text hints, I hope this should give enough information to the player now.
  • New: Game B added where the item locations are randomized. Some items always spawn in the same place (like a key shouldn't spawn behind the door that requires a key). I might want to revise this later so that the key items will be randomized, but still spawn within reach.

I played this for an unhealthy amount of time after the first release and I could see the shortcomings (especially about the tile-swap). I feel a little better about this game now than before. My only gripe against the game now is that the two of the three stage hazard items are honestly quite useless and there's rarely any reason to pick them up.


I accidentally came across PICO-8 last week and felt like I could do this, despite the last coding experience was two semesters of college Java back in 07/08 from which I remember very, very little.

So, here I present my first project: Miromina. The name is a portmanteau of miro meaning "maze" in Korean, and Mina which is the heroine's name. The game is basically a derivative of Adventure for Atari 2600. Some of the similarities are:

  • The protagonist is defenseless without a weapon item
  • You can only carry one item at a time
  • Find this and bring it there type of gameplay

But there are a few additions. Like the model this is based on, there are three enemies who guard the essential items, but they can only be killed with a specific item for them. The Moth can only be killed with a spray, the Frog can only be killed with a donut, etc. And these items do not spawn by default, they need to be crafted. There are four crafting stations in the game, and the craftable items are:

Sugar + Milk > Donut
Pepper + Can > Spray
Branch + Herb > Incense

Another addition is the stage hazards. Some rooms go completely dark making it hard to navigate; a lipstick will make her lips glow and she'll shine in the darkness. Dropping the lipstick will make the room dark again, but there's a switch to turn the light back on.

The map is somewhat larger than that of Adventure, so I placed two sets of the same crafting ingredients to help increase the chance of encountering them but there's still only one copy of the three stage hazard items (lipstick, earmuff and heels) and other items. The items chosen are... well, rather unorthodox for a self-claimed action adventure game but I didn't really want to use swords, crystals and other cliche items as they make more forgettable experiences. If you remember it as that one game that had anti-earthquake high heels I'd call it a success.

The old-timers (or the retro gamers in general) might remember the annoying bat from Adventure. This is recreated as a blue ghost that roams around the map until it comes in close vicinity with the player, but it won't steal any items and replace it with a random item like in the Atari game. It's because the map is bigger and there are more items that could be randomly swapped about, and it'd be too annoying to search the entire map for that one item. Instead, you will just lose a life.

As a little QoL, game shows the room coordinates to help you make a memo if you want to remember where you dropped an item to be picked up again, and there are scattered signs that should hint what needs to be done. I can't really tell if the game gives enough hints, but the intention was to make it on the easier, pick up and play side.

Code-wise, this is a Frankenstein of two different video tutorials and my bad coding. Mina essentially picks up the tile and replaces it with a tile appropriate for the room. Interacting directly with the tiles using if mget(tile) == such and such helped me create as many objects as I wanted -- I was initially trying to cook up a way to work with the different tile flags, and felt pretty smart about myself at first. Now I look back, I should have handled them with proper collision boxes at least.

But instead of refactoring this messy code I'll just leave it aside and move onto a next game. But hey, it doesn't crash and it can be played all the way to the end.

P#103347 2021-12-22 18:14 ( Edited 2022-02-25 00:08)