
So, I'm working on a toy musical keyboard program, and I want to use SDL scancodes to detect which keys are being held - but I know that PICO-8 will pause if you hit the "P" key (whatever key that happens to be in the user's keyboard layout). So I want to detect when a "P" input is being received and stop it...
...but my current code:
--interrupt pause on P while stat(30) do if stat(31)=="p" or "â—†" then --suppress pause poke(0x5f30,1) end end |
only works for the initial press - when the key starts repeating, stat(30) doesn't detect the input but PICO-8 pauses anyway.
Any suggestions? I'd rather not interrupt all pause inputs - that makes things difficult for Splore users.
Edit: Apologies to @dw817, whose explanations I apparently completely failed to parse: in the changelog for 0.2.2b it is noted that holding the pause button will always bring up the hardware pause menu, even when pause would otherwise be suppressed. This rules out any solution that involves the player holding down P that I can implement as cart programmer. (Shoutout to @cubee's


I thought I would start an interesting thread, what kind of code have you written in Pico-8, the method you used, that is NOT included in the instructions. Some nifty tips and tricks you're certain other coders are not familiar with.
Here is one I came across in P8SCII:
Now the P8SCII help line shows here how to repeat characters
1 "\*" repeat next character P0 times. ?"\*3a" --> aaa
While it does indeed go up to 15 with the F
hexadecimal 15, did you know it goes beyond that ?
So you can write code like this:
print("\#2\*w ") |
Which will neatly display a field of 32-characters across with dark violet background.
In this you can highlight a line of text thus:
print("\#2highlighted text\*w ") |
The spaces after the "*" will not spill to the next line, giving you:

What code have you discovered in Pico-8 that is not listed with the general instructions you could share with others ?


Curious Fishing is an aquatic puzzle game where you move a fishing hook around in a grid, trying to catch a variety of sea creatures which each embody different puzzle mechanics. Sort of Fishing + Sokoban.
The game started way back in 2016 as a jam game on the PICO-8 called Hook, Line and Thinker. In the full game I'm still using the lovely 16-color palette and 128x128 resolution, and all the game's audio was made in PICO-8 and then exported!
It's a free browser game that works on both desktop and mobile. You can check it out here:
https://rhythmlynx.itch.io/curious-fishing
The game is designed to be approachable and stress-free, so there are simple controls (including support for mouse, keyboard, gamepad and mobile touchscreen), no timers, you have an unlimited undo, and you can try the levels in almost any order so you won’t get stuck.
I thought I'd share in case anyone was interested. I hope you like it :)

.





CONTROLS
The game intended as a local multiplayer game. So directional controls for TWO PLAYERS, and some basic interaction are implemented.
STORY
Two kids need to go to school safely without dreaming - helpng each other to stay focussed.
WIP
This cart is work in progress. As we figure out a good connection between story and what acutally happens. anyway, you will see :)
Combining large map size (e.g. poke(0x5f56,0x80,0)
) with the new return value for out-of-bounds mget poke(0x5f36,0x10) poke(0x5f5a,255)
causes any tile 128+ to be returned as the defined return value instead of the actual map tile.
Map width 256: Unable to interact with blocks and treetop rendering does not detect tree tiles anymore.

If map width is less than 128, tiles from map edge to 128 return zero and 128+ return the defined return value.

At 128 tiles:


This is an unfinished project I used to work on a few months ago.
It includes a randomly-generating spider web.
Technical details:
Dots are placed randomly and they only connect with eachother when
they are <=(a certain distance) away.
The web doesn't lag pico-8 too much because it only gets generated
on the first frame and It's then stored in the extended memory and
redrawn from there every frame afterwards.
Use the arrow keys for your movement.
Press the X key to fire phasers.
Press Z to fire quantum torpedoes full spread. You start with a single spread of torpedoes, as you gain more Dilithium Crystals , your quantum torpedo attack increases in power!
Sometimes the Borg will also drop shield recharge cells !




Space Raid
[Oct 22, 2024]: Finally brought to parity with the itch.io version.
You've successfully infiltrated a key enemy base; steal their equipment and destroy them from inside!
Controls
Arrows - Move
Z / C - Fire
X - Retarget
Update log on the itch.io page










I'm trying to rotate a sprite from the sprite sheet, and I think I'm semi successful.
The problem I have been noticing is that when the sprite is turning it will have holes in the drawing, no matter which sprite it is. I think what is happening is that it's rounding of the coordinates to the closest, and this sometimes draws two pixels on top of each other. At least that's what I think is happening.
In what way do you typically solve this? Draw a color in the blanks that is a close match, or like a background color?
Can you cleverly ensure that pixels never get's drawn on top of each other?



Hi,
Playing with custom fonts, I found that the \n
escape sequence cannot be followed by an a
in the string (probably an issue also with 0
-9
and a
-f
). This doesn't occur in the default font mode (works as expected)...
poke(0x5600,8,8,8,0,0) -- setup 8x8 font -- Char 97 'a' poke(0x5600+(8* 97), 12,108,99,3,48,54,198,192) -- Works with "\n a" ?"\014 a\n a" -- Missing character with "\na" ?"\014 a\na" |
Possible bug: \na
shouldn't be treated as an escape code for custom fonts (just \n
).
here's my entry for pico1k 2022!
it's a 3D point-cloud renderer with SSAO - takes a minute or two to prepare the scene (may help to imagine a soothing voice saying stuff like "now we're going to add some happy-little-clouds"), then once it's done generating, it draws one "shimmery" image forever.
if you'd like to use this renderer to draw your own 3D scene (maybe for pico1k, maybe just for fun!), this thread has some info about how to use it:
[tweet]
in short, you tell it to draw a ton of 3D points (no triangles!), it uses a z-buffer (no sorting!), and allows four independent color-ramps (SSAO can darken a color, but never moves it into a different four-color group)


This is a little tool to convert a big ol' list of strings into the PICO-8 map.
This has some very specific usage cases, and there's probably a better way somehow, but heres an example of when you might use it:
Imagine you are making a big parkour game, with lots of fairly big levels. You can't possibly hold all of them in the PICO-8's map together. So you use this tool to load in a new map on demand.
In this case, you may want to use this.
Here's the cart:
controls:
arrow keys to move camera position
X/C etc to change to map 2
.jpg)


Attention!
Pilots needed urgently!
The star Mimiar imploded, and shattered a dwarf planet that was orbiting it.
Ginormous asteroids are now hurtling towards Thrawn, the home of millions of unsuspecting people.
We must destroy the asteroids before it is too late!
Buttons
X – Use power up.
Z – Build energy, release to fire.
Arrow keys – Movement.
How to play
Steer your ship across the screen, making sure to dodge the asteroids. Tap Z to fire a small bullet or
press and hold to build up energy. Collect the power ups that float across the screen, because they can
be very helpful. Press X to use them.
Your ship's energy meter is displayed in the top left corner. (Bottom

GALAXIS
A simple shmup reminiscent of the arcade era.
Galaxis was made using the Lazy Devs Shmup Tutorial on YouTube
Galaxis is also being submitted to the Lazy Devs Basic Shmup Jam on itch.io. Please check out all the other awesome submissions! Downloadable versions of many of the submissions are available over there.
Who the ♥♥♥♥ is ALF?
Controls


Hello, I'm looking for a way to draw 100 sprites on the screen at the same time. All sprites will have different coordinates. I don't want to write 100 times spr(), so I"m looking for another way. I wanted to use a loop, but from what I've noticed so far, the pico 8 has performance issues after that. Does anyone have any idea what to do with it?



