Implementation and demo of the Smoothstep and Smootherstep easing functions.
See https://en.wikipedia.org/wiki/Smoothstep for more info.
Feel free to copy the functions into your own carts and tweak them as you need.

Part of the 2024 Pico-8 Advent Calendar.
Roll your snowball down the mountain. Make it as big as possible by the time it reaches the bottom. Who can make the biggest snowball? Post your best scores below...
How to Play
Steer your snowball as it rolls down the mountain. It collects snow and gets bigger as it rolls through the snow. It loses snow when it hits an obstacle or rolls over bare ground. You can jump over low obstacles and go under trees without damage if your snowball is very small. Moguls will launch your snowball into the air. You cannot steer when in the air, and don't collect snow, so time your jumps carefully.
You are scored by the size of your snowball when you reach the bottom of the mountain.
Your progress down the mountain and current size of your snowball are shown at the top of the screen.
Collect presents to get a temporary power-ups:
- Heavy: Your ball will squash moguls. The snow from the mogul will be added to your snowball.
- Ghost: You pass through obstacles without damage. Your ball is semi-transparent while in ghost mode.
- Slow-mo: Your ball travels more slowly. This makes it easier to avoid obstacles and and gives you more time to pick up snow.
- Sticky: Your ball collects snow faster.
Your ball emits magical sparkles while a power-up is active.
Controls
left/right: steer
🅾️ or ❎: jump



Submission to the 2024 Pico-8 Advent Calendar.
A cosy Christmas-themed interactive fiction.
Help Santa deliver the last presents of the night before Christmas. Make sure all the children in the house have their wishes fulfilled. Follow Christmas tradition for extra satisfaction.
There are four endings: two story endings, depending on whether you fulfilled the childrens' wishes, with two variations depending on whether you followed the Christmas tradition.
Controls
- Up/Down: Scroll text, or move the pointer between options
- 🅾️ button:
- In non-interactive screens, press 🅾️ to continue. If the text is longer than one screen, you'll have to scroll to the end before being able to continue.



This is my entry to TweetTweetJam 9, a game jam where games had to be written with at most 500 characters of code. I ended up using 484 characters.
Billabong is a two player strategy game. Players take turns to flood the maze with coloured liquid. One player fills the maze with red liquid, the other with blue. The player who fills the most of the screen with their colour wins.
To start flooding a channel, tap the screen if playing on a mobile device, or click with the mouse if playing on a desktop machine. The game works best on a mobile device so that the players don't have to share a single mouse.
The stats display at the bottom of the screen shows the players' scores and who has the next turn.

My family like the online word game Waffle but wanted to play more than once a day. So I wrote them this version in Pico-8. Along the way I reimagined it as an 8-bit console title with sound effects, music, particles, multiple levels, ramping difficulty, and a final “boss battle” that you unlock by completing all the preceding levels.
How to Play

Scrambled words are arranged in a grid. Unscramble all the words by swapping pairs of letters. You have a limited number of swaps to complete each level. Run out of swaps and you have to try again. Complete the level with swaps left over to score points.





SQUISHD!
A collect-em-up action game for one to four players.
Escape the maze, eat tomatoes, collect treasure, don't fall in the water, and don't get squishd by the side of the screen.
Features
- One-player or same-screen multiplayer for up to four players
- Five different zones in one huge scrolling map
- Persistent hiscores
- Team and individual hiscores
- "Coop-etetive" multiplayer gameplay: you have to work with the other players to have a chance of getting the individual hiscore
Gameplay
The players control "tetrapods", trapped in a maze. The view scrolls randomly, and you must stay on screen to survive.
The maze contains tomatoes and treasure. Collect them to score points.
After two minutes in the first zone, you will enter the second zone. There are five zones in all, each with different challenges. The scrolling gets faster as you progress through the zones, and the time in each zone gets shorter. After the fifth zone, you will reach the exit. Move onto the exit to escape the maze. In a multiplayer game, all players must escape the maze to win the game, and players earn a bonus if they escape the maze before other players.
You lose a life by being squishd by the side of the screen or by falling into water. Each player has three lives. The game ends if any player loses all their lives.
Extra lives are awarded to a player when they score 500 points, then 1000 points, 2000 points, and so on. There are a few collectible extra life items in the maze, but they are hard to reach. Will you risk trying to grab them?
Scoring
Tomato: 1 point
Silver coin: 5 points
Gold coin: 10 points
Gemstone: 50 points when the gem is the same colour as your character, otherwise 20 points
Escaping the maze (multiplayer games only): Bonus, calculated as the average score of all players who have not yet escaped.
Hiscores are recorded separately for one-player, two-player, three-player and four-player games.
In multiplayer games, the entire team earns a score, calculated as the average of the players' scores. You can win two hiscores: the team hiscore and the individual hiscore. The individual hiscore can only be won when the team has won the team hiscore. Until the team has achieved the team hiscore, players must cooperate to push up the average score. When the team has the team hiscore, a flashing star is displayed at the top of the screen. At this point, players no longer need to cooperate and can go all out to win the individual hiscore.
Controls
On the title screen:
- Each player: press 🅾️ on their controller to join or leave the team.
- All players: having joined the team, hold down ❎ to start the game.
In the game:
- Use the direction buttons to move your character.
- By default your character runs while you hold down a direction button.
- Hold the 🅾️ or ❎ button to "creep" slowly by a single step for each press of the direction button. This is useful when negotiating tight passages or making risky manoeuvres near the edge of the screen.
On the game over screen:
- All players: hold down ❎ to return to the title screen.
The pause menu has options to:
- turn the music on and off
- clear all recorded hiscores
- abandon the current game and return to the title screen
Inspiration
Squishd! is inspired by the classic 8-bit game Splat!, but is not a remake.




Your ship has stopped in deep space to perform repairs. The crew are on a spacewalk when suddenly predators warp in from hyperspace. Save the crew!
Frantic shoot-em-up action inspired by 8-bit classics such as Uridium, Defender, Robotron, Asteroids and Thrust.

The controls are explained on the title screen.
You'll get a higher score the more risky your play:
- fly fast to get a score multiplier for each kill
- the bogies evolve to more dangerous forms that are worth more points
- you can earn big points by rescuing crew members far from the ship
There are four different ships. You'll encounter new challenges on later missions, and need to adapt your tactics.








My entry for the TweetTweetJam 4 game jam -- a game that fits into two tweets. The code for this game is 559 characters.
Instructions:
- Avoid the green meanie.
- Shoot it to score points.
- If you miss, the walls close in.
Controls:
- Move: arrow keys
- Shoot: X while moving
What's the highest score you can reach?


 (1).gif)
Escape from Vandermonde by finding your way through the passages to the teleporter. Avoid the robots that patrol the passages or program them to help you.
There are 14 levels of exploring, puzzle solving and action, all intertwined on the one large map.
Gameplay is introduced within the game. You can choose any level to play at the title screen. However, to beat the game you have to play all the way through from level 1.


A physics-based puzzle game with fifteen levels.
Guide the ball around obstacles, to the target.
On the title screen, use the arrow buttons to select a level and O or X button to start play. You can quit a level and return to the level select screen from the pause menu. Gameplay is explained by in-game instructions.
Scoring is like golf: the fewer shots required to hit the target the better. Best scores and times are persisted.
Levels can be played in any order. However, earlier levels introduce game elements used by later levels.
If you're interested in designing levels, let me know in the comments and I'll write up how to activate and use the level design mode.





A board game.
The goal is to trap the other player on a single square.
On each turn, the player can move their piece one square, causing a hole to appear beside their opponent, or jump their piece two squares (possibly over a hole), leaving a hole where their piece was.
There are different options for play:
- two player, one controller (pass the controller back and forth between turns)
- two player, two controllers (each player has their own controller)
- one player, easy AI
- one player, challenging AI
You can choose from a number of board layouts. If you download the cart is easy to add your own board layouts with the sprite editor.
In the menu, use the direction buttons to move between menu entries, and the X and O buttons to cycle through the options of menu entry, or perform a menu action.
In the game, use the direction buttons to move your piece, or hold down the X or O buttons and use the direction buttons to jump your piece. Use the pause menu if you want to abandon a game and return to the title menu.
Gameplay screen shots:



Rocket Rivals, a one-button multiplayer game of brinkmanship.
Each player has a single control button that controls their thrust. Players earn points by flying higher than the other players, but lose everything if they hit the laser beam top of the screen.
Each match lasts one minute.
You can choose active players and their characters on the title screen (at the moment only controller 1 navigates the menu).
Credits:
- uses @electricgryphon's fast triangle drawing function



Each ball is drawn in the same colour (brown) but it appears red, green or blue depending on which colour stripes are drawn over it.
Inspired by an image shared on twitter. (See https://twitter.com/testingham/status/1139558284631789568)
I thought i'd see if pico-8 can create the illusion even with its limited palette. The answer is: yes it can! :-)
And unlike an image, in pico-8 you can read the source code to confirm the illusion acts as stated.
