Log In  
Follow
dredds

I like making retro games.

Star Beasts 1.3
by dredds
Vandermonde (exploration/puzzle/action game)
by dredds
Caracol
by dredds
Rocket Rivals 1.2
by dredds
Holes
by dredds

Cart #fox_and_clocks-4 | 2026-09-27 | Code ▽ | Embed ▽ | No License
3

Work In Progress: music, more levels, etc. still to come.

Combine the clocks until there is only one clock showing 12 o'clock.

Features

  • clocks
  • blocks
  • rocks
  • a cute fox
  • multiple puzzles
  • play puzzles in any order
  • share your solutions with other players and play through other players' solutions
  • write your own puzzles and share with other people
  • paste other people's puzzles into the game

Gameplay

You control the orange fox.

The fox can push the clocks and red function blocks around. The fox cannot push rocks.

When the fox pushes a function block between two clocks, the clocks and block combine to form a new clock. The hour of the new clock is calculated by the function of the block and the hours of the two clocks it was pushed between.

For example:

  • Pushing an addition block between a clock showing 1 o'clock and a clock showing 3 o'clock will create a clock showing 4 o'clock.
  • Pushing an addition block between 10 o'clock and 3 o'clock will create a clock showing 1 o'clock, because there are only 12 hours on a clock, and after 12 the hand goes round to 1 again.
  • Pushing a subtraction block between 1 o'clock and 3 o'clock will create a clock showing 10 o'clock: 1-3 = -2, 12-2 = 10.

The goal of each puzzle is to end up with one clock showing 12 o'clock.

Note: division in clock arithmetic does not behave in the same way as normal arithmetic.

Controls

Use cursor keys to move.

Holding X enters undo mode. Icons at the top of the screen indicate if you can undo or redo. While holding X, press left to undo and right to redo.

 Pause Menu Options

On the title screen:

  • Delete progress: resets your saved progress

Gameplay:

  • Paste solution: pastes a solution so that you can navigate through it with undo and redo. You can only paste a solution when you have not made any moves.
  • Return to Title: abandons the level and returns to the title screen
  • Analogue/Digital: switches the clocks between analogue and digital.

Level Complete:

  • Copy solution: copies your solution to the system clipboard in text format. You can paste the solution into a notes app, or share by email, BBS comment, or social media.

Writing Your Own Puzzles

A puzzle is a 64-character code that defines the cells in the game grid, from the top-left corner, down to the bottom-right corner. The first character defines the first cell of the top row, the second character defines the second cell of the top row, ... the ninth character defines the first character of the second row, ... and so on until the 64th character defines the 8th cell of the 8th row.

The characters in a level code have the following meaning:

  • _ (underscore): Empty space
  • #: Wall
  • 1-9, a, b, c: A clock with the hour set to the value of the character interpreted as a hex digit. E.g. 1 means 1 o'clock, 2 means 2 o'clock, ... a means 10 o'clock, b means 11 o'clock, and c means 12 o'clock.
  • +: Addition
  • -: Subtraction
  • *: Multiplication
  • /: Division

0 (zero): The player's starting position

For example, this is the code for the first puzzle: ##1####_0+____####2##_*____#__b__###_/___#9#__##_-___##__#5__#__

Pasting a Puzzle into the Game

Before you can play a custom puzzle, you have to paste it into the game.

  • Copy the code of the puzzle.
  • Focus on the game
  • Paste the puzzle into the game using your system's paste key stroke, or the browser's Edit>Paste menu item. If in the browser, you also have to press Control-V (on all platforms, even the Mac) to load the contents of the clipboard into the game.
  • Select the last level slot in the level selector.
  • Press the Z key to store the pasted level in that level slot.

Sharing Puzzles

You can share puzzles on social media or in the comments below.

If you make your own puzzles, I'd love to see them.

History

This was originally written for the Pico-1k jam. The 1k version is here: https://www.lexaloffle.com/bbs/?tid=159163.

3
9 comments



Cart #fox_clocks_blocks-0 | 2026-09-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

Combine the clocks until there is only one clock showing 12 o'clock.

Write your own puzzles and share with other players.

This was written for the Pico-1k Jam 2026, in which games have to use a maximum of 1024 bytes of compressed Pico-8 code. This game uses 1023 bytes. There was no room for niceties like a title screen, level selector, in-game instructions, etc.

A polished version of the game, with all those things and more levels is here: https://www.lexaloffle.com/bbs/?tid=159433

Paste a Puzzle

Before you can play, you have to paste a puzzle into the game:

Copy the text of one of the puzzles below, or a puzzle you wrote yourself, or received via social media.

[ Continue Reading.. ]

2
11 comments



Cart #gun_to_a_laser_fight-1 | 2026-09-02 | Code ▽ | Embed ▽ | No License
11

A fast paced, 1980s-style "laser-hell" shmup.

This was written for lowrezJAM, and so uses 64x64 pixel resolution.

Detailed instructions (including a printable instruction booklet) on the game's itch.io page: https://dredds.itch.io/you-brought-a-gun-to-a-laser-fight

Title music by ridgek https://ridgek.itch.io/20th-century-ops.

11
3 comments



ZX0 is a data compressor that provides a tradeoff between high compression ratio, and extremely simple fast decompression. It's especially appropriate for low-end platforms, including 8-bit computers like the ZX Spectrum.

This is an implementation of ZX0 decompression for Pico-8. You can compress data on your desktop computer using one of the existing ZX0 implementations, include the compressed data in your Pico-8 cart, and decompress it using these routines.

The source code is on GitHub at https://github.com/npryce/ZX0-Pico-8, along with documentation about how to use the library. The code is organised so that it is convenient to clone the GitHub repo and #include the code you need into your Pico-8 cart.

Demo

Cart #dredds_zx0_demo-2 | 2026-07-01 | Code ▽ | Embed ▽ | No License
4

[ Continue Reading.. ]

4
2 comments



Cart #dredds_dailydash-10 | 2026-06-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
9

Dash between platforms to score points. The farther you dash, the more you score. You can only visit each platform once. You double your points if you clear the entire board.

Use arrow keys to move. When you run out of moves, press X to play again.

Undo the previous move with the (O) button (Z or C key).

Every day there is a new challenge. How much can you score today?

Share your best score for the day on social media.

Scoring

When you move from one platform to another, you score one point for every grid square you travelled.

If you land on the platform with the cherries, you earn double the score for that move.

If you clear the entire board, and end up on the last remaining platform, your entire score is doubled.

Boasting

When run on the desktop (e.g. in Pico-8, via Splore, or by exporting a native build), you can use the pause menu to copy a boast about your highscore to your clipboard and paste it into social media to challenge your friends.

Notes

The game is designed for playing on mobile while on the go, either in a web browser or in

[ Continue Reading.. ]

9
8 comments



Cart #dredds_eilm-0 | 2026-05-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

You have started a new lawn mowing business on Easter Island.

Mow as much grass as you can. You get paid $1 for every square foot of grass you mow. You will have to mow around the giant stone heads in the gardens. You can push garden furniture out of your way but it will flattens any grass you push it on to. You don't get paid to flatten grass, only mow it.

There are twenty gardens that need maintenance. You start in one of the gardens chosen at random. When you cannot mow any more, reset the cart to start a new game in another garden chosen at random.

What is the most you can earn in each garden?

This game was written for TweetTweetJam, a game jam for games written in 500 characters or less. This game was written in 490 characters, and so had to forgo some niceties, such as keeping track of your best scores. You'll have to do that with a pencil and paper, I'm afraid.

[ Continue Reading.. ]

2
0 comments



A Lua snippet that implements a stack of nested camera contexts. This makes it easier to apply translations when drawing composite graphics.

You can push new camera contexts with push_camera(x,y). This acts like a call to the standard camera function, but after this, all calls to camera are relative to x and y. You can return to the previous camera context by calling pop_camera().

You can push as many camera contexts onto the stack as memory allows.

An example of mixing push_camera and camera calls: Calling push_camera(-20,-30) sets the absolute camera coordinates to (-20,-30), like the standard camera function, and creates a new context. A subsequent call to camera(-1,2) sets the absolute camera coordinates to (-21,-28). Calling pop_camera() restores the absolute camera coordinates to the default of (0,0).

An example of pushing nested camera contexts: Calling to push_camera(-20,-30) sets the absolute camera coordinates to (-20,-30), like the standard camera function, and creates a new context. A subsequent call to push_camera(-1,2) sets the absolute camera coordinates to (-21,-28) and creates a new context. Calling pop_camera() restores the absolute camera coordinates to (-20,-30). Finally, calling pop_camera() restores the absolute camera coordinates to the default of (0,0).

do
 local cstack = {}
 local abscam = camera

 function push_camera(dx,dy)
  local cx,cy = peek2(0x5f28,2)
  add(cstack, {cx,cy})
  abscam(cx+dx,cy+dy)
 end

 function pop_camera()
  abscam(unpack(deli(cstack)))
 end

 function camera(dx,dy)
  local cx,cy =
    unpack(cstack

[ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=170984#p)
1 comment



Implementation and demo of the Smoothstep and Smootherstep easing functions.

See https://en.wikipedia.org/wiki/Smoothstep for more info.

Cart #dredds_smoothstep-0 | 2025-04-10 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
3

Feel free to copy the functions into your own carts and tweak them as you need.

3
1 comment



Part of the 2024 Pico-8 Advent Calendar.

Cart #dredds_snowball-12 | 2024-12-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
25

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

25
4 comments



Submission to the 2024 Pico-8 Advent Calendar.

Cart #dredds_lasthouse-10 | 2024-12-05 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
13

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.

[ Continue Reading.. ]

13
8 comments



Cart #dredds_billabong_ttj9-0 | 2024-05-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
7

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.

[ Continue Reading.. ]

7
1 comment



Cart #dredds_piffle-11 | 2022-10-16 | Code ▽ | Embed ▽ | No License
43

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.

[ Continue Reading.. ]

43
10 comments



The built-in help for the dset and dget functions states that the persistent memory starts at address 0x5f00. But correct adddress is 0x5e00.

1
0 comments



Does anyone know how to change the keyboard bindings in the HTML export?

I want to change the default key controls so that the keys are more natural for my game than the defaults for one and two-player play. Is that supported? In which file are the key bindings specified?

1
0 comments



Cart #dredds_squishd-3 | 2022-09-07 | Code ▽ | Embed ▽ | No License
30

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.

[ Continue Reading.. ]

30
7 comments



Hi. The W and S keys are close together and I find I often hit Control-W (quit) by accident when I mean to hit Control-S (save), and therefore lose unsaved work.

Could Pico-8 prompt before quitting if there is unsaved work? Similar to how it prompts to overwrite files when you save or export?

3
21 comments



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

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.

[ Continue Reading.. ]

28
17 comments



The export command and the -export command line option do not flatten #includes when exporting a .p8.png file. A cartridge exported from a .p8 program that uses #includes cannot be run.

2
3 comments



On the Mac, when Pico 8 is running when the Mac hibernates, after I un-hibernate the Mac Pico-8 no longer plays sounds. I have to restart Pico 8 to get audio working again.

I'm using MacOS Catalina 10.15.7 and Pico 8 0.2.3

1
3 comments



Does anyone have a code snippet that can turn a number into a decimal string, treating the bit pattern as a 32-bit unsigned integer instead of 16.16 bit fixed point?

1 comment





Top    Load More Posts ->