I made a function that can turn the custom instruments into single-channel chords.
Sure, you can just use the arpeggio effects, but this code gives you fuller-sounding chords, and it allows you to put multiple chords in the same four-note group, so you can play syncopated chords!
function set_chords(wave,start,bass,filter,...)
local harmonics={...}
local addr=0x3200+68*start
for i in all(harmonics) do
for j in all(i) do
for k=0,63 do
poke(addr+k,peek(addr+k)+wave(k/64*j)*127/#i)
end
end
poke(addr+66,128)
poke(addr+65,bass and 1 or 0)
if (filter) poke(addr+64,filter)
addr+=68
end
end |

A basic color changing pong demo
(260 chars)
::➡️:: bx=60by=60bw=8bh=8ba=1bb=2 py=0s=127k=0 r=rectfill::😐::cls(k)bx+=ba by+=bb k=time()\6 color(k-5) r(bx,by,bx+8,by+8)r(0,py,8,py+64)py=py+1/8*(by-py-34)if bx+8>s or bx<7 then ba*=-1end if by+8>126 or by<0then bb*=-1end if bx+8<0then goto ➡️ end flip()goto 😐 |
The first exhibition of PICO-8 postcarts is happening at Pico Pico Cafe in Tokyo later this month! Each postcart is displayed as a physical 15x15cm card with the author, title and source code (<= 300 chars of PICO-8 code) on the back. A card reading machine hooked up to a crt tv can be used by guests to view the postcarts in their animated form.
We already have over 100 postcarts lined up for the exhibition, including some vintage tweetcarts and rare unposted postcarts. But the more the merrier! If you would like to show something, just check the permission box when submitting it BEFORE THE 15TH OF NOVEMBER, although we can probably include some stragglers before the opening on the 20th. I'm also happy to accept URLs via email (e.g. to old tweetcarts or personal webpages where src is visible) if you prefer: hey at lexaloffle dot come with "postcart" somewhere in the subject field.
This function replaces an sfx slot in a given music/pattern. Useful for dynamically changing music, making drum machines etc.
This function will also turn the channel "on" for you.
function replace_music_channel(music_id,sfx_id,channel_id) target_channel_offset=channel_id pattern_addr=0x3100+music_id*4 goal_addr=pattern_addr+target_channel_offset poke(goal_addr,sfx_id) end |
Call it with a pattern id(0-63), an sfx slot(0-63) and the channel id to change (0-3).
im not announcing a release date but i can confirm that its gonna be a lil toolkit that* i will (hopefully) use but im not gonna confirm anything yet, i will announce updates over time and dont be suprised if i end up canceling the project and releasing early src... i have a tendancy to do that when i announce a project and realise how much i put on the projects goals, currently my goal is to just make pico-8 code editing a tad bit easyer
-- upd1 - fixed a typo
Andy's Arcade Presents
CROSS ROADS MAZE RUNNER.
Controls:
PLR1: Controller or
keyboard Arrow keys to move and "N" to fire. "M" for menu
PLR2: Controller or
keyboard "E" , "S" , "D" , "F" to move and "TAB" to fire. "Q" for menu
While in players menu: press up and down to view options
and press right to purchase.
Press "Enter" to pause the game.
Aim of the game:
Navigate your way around 16 mazes filled with 9 different creatures each with its own skills to take you out.
Armed with a pistol with recyclable bullets, you start your quest in a labyrinth with unfriendly monsters. As you shoot and blow apart each foul creature many colored pixels fly everywhere. As you pickup these particles, they become useful in crafting a range of tools. At the end of each round you get a chance to do damage to the maze by calling in an air strike. Once all mazes have been neutralized you will have completed your quest.
This game idea came from memories of playing the C64 game Cross Roads and Cross Roads 2. Pico 8 seemed like a good platform to make a similar game. Enjoy.
This game is not complete.
Other Tittles from Andy's Arcade.
https://andy67.itch.io/space-invaders-co-op
https://andy67.itch.io/elevator-action-pico-8
https://andy67.itch.io/hexplore
This pico-8 demo features the main combat loop. Progression loops, RPG-esque elements and meta game content is planned but not in this demo. This is just all action baby! All content is work-in-progress and not final. Select single or 2-player mode. Should work with most game pads, though the button mapping between controllers is anyone's guess. On keyboard the basic attack is X and the super spell, once acquired is Z. Movement is the up and down arrow keys.
This is a project I made a few months ago. Original post (from reddit) below:
'Inspired by the pico 8 game I found on the 'splore page 'tad' and dedicated to my partner as a birthday gift, I made this little pond simulation!
Pond Sim is a basic simulation of a pond ecosystem, with algae, small herbivore fish which eat the algae and large fish which eat the smaller fish.
Poke around here!'

This is FlockSim, a tiny simulation of a flock for inside your computer.
The flock is simulated using a boids algorithm. The various meadow effects are mostly variations of combining and subtracting different sine waves. There is even a little doggy! They wander around and chase after sheep occasionally, but will also go where you click!
Enjoy!
Feedback welcome.

Intro and Credits
This game is an extension of the original work made by Fresh-D and maaax published under MIT license on Github.
The main difference of this version is that you can play agains CPU to a max of 4 players.
To make space to the added logic the game became a multicart, and with the increased space I included some extras like the items description.
How to Play
This is an homage to a classic arcade game where the goal is to drop bombs and eliminate the other players.
It’s just a small game with no real meaning. Break stones, upgrade the drill, blow things up, and melt things with a laser. But keep an eye on the fuel and money so you don’t end up in a dead‑end situation.
Controls:
Arow keys — Move,
X — Menu,
Z — Use tool (tap for dynamite, hold for laser).
Have fun digging!

I'm a software dev. Like anyone else in the field, AI has changed my job very quickly. I was looking for something to goof off with on the side so I could exercise my coding muscles and I stumbled on pico-8. This is my first attempt. I'm not really familiar with lua but I'm excited to learn all the tips/tricks/optimizations. Give it a play if you want. Feedback/suggestions greatly appreciated. Happy hacking.
for i=1,16do for i=24576+rnd(4),32767,rnd(4)do poke(i,@i>>1&113)end flip()end |
Use like this:
if btnp(X) then for i=1,16do for i=24576+rnd(4),32767,rnd(4)do poke(i,@i>>1&113)end flip()end --fade stops entirey program next_level() end |
Preview:
About:
takes each byte from screen memory and performs (byte>>1)&0b1110001 to lower the colors, inspired by:https://www.lexaloffle.com/bbs/?pid=197936#p

Created for the Desert Bus for Hope 2026 game jam
This is my first real project in PICO-8! I would have liked to have done more, such as more particles and having some music, but I was quite invested in just watching Desert Bus for Hope. Maybe I'll learn more about those things for PICO-8 in a future game.
There were four themes for this jam, each given by one of the four shifts: Pong, Chaos, Fish, and Posthumous.
Theme Explanations:
Pong - You bounce bubbles to defeat the mutant Freshies
Chaos - There is a lot happening on the screen
Fish - You play as a fish.
Posthumous - Freshy has died but more Freshies have come to attack
Go alone or grab your buddy and jump on a bike in this western themed 2 player action extravaganza, compete to get a high score, ram each other, steal sidecars, shoot the enemies, chase down the brain train.
instructions:
.fill the power gauge by shooting enemies
. once the gauge is full a sidecar will appear from the top
. ride onto the side car to gain extra fire power or shoot to cancel bullets
X=fire
O=launch sidecar
start menu to erase highscore / pvp tally

Usage
This should be used to learn how the video memory works at the low level.
What this function does
It gives you a higher level wrapper for PICO-8s 4-bit framebuffer (0x6000-0x7fff) (lower 4-bits: left pixel, upper 4-bits: right pixel), and does some bitwise math and multiplication to put a single pixel on screen.
setp is recommended because it's the officially documented way writing single pixels directly.
Code Snippet
NOTE: This function should be only used sparingly, it's expensive to use and not fully optimized (e.g. batching and minimizing the code to only required calculations) (using it heavily can cause severe lag).
function putpixel(x,y,col) -- floor x & y to stop rounding errors in pixel position calculations x, y = flr(x), flr(y) -- prevent pixel from wrapping around the screen horizontally if x > 127 or x < 0 then return end -- get 1 dimensional bit offset, multiplying y by the screen width to iterate by line local pixel_pos = x + (y*128) -- divide the pixel position in half to fit into the 4-bit offset to a 2 pixel pair in memory local offset = 0x6000 + pixel_pos\2 -- do not draw pixels if they are outside the framebuffer if offset < 0x6000 or offset > 0x7fff then return end -- get the 2 pixel pair of colors we are writing to local pixel = peek(offset) -- get which nybble (4-bit) offset the color resides on local nybble_shift = (pixel_pos&1) * 4 -- mask and set the pixel color from `nybble_shift` offset pixel &= ~(0x0f << nybble_shift) pixel |= col << nybble_shift -- write pixel to framebuffer poke(offset, pixel) end |
Example Cartridge
This example shows how the putpixel function only overrides pixels at their specified positions without completely removing other unrelated pixels from the screen.






2 comments

.png)

