PICO-8 code available also at https://github.com/adam-sporka/pico-8-projects ** I am a game developer and composer. I work(ed) on Kingdom Come: Deliverance I and II, and contribute to Dying Light 2.
Hi all,
Just as PowKiddy RGB30 is the perfect handheld for PICO-8, I was wondering which handheld could y'all recommend to run Picotron, including its desktop and the entire development experience. I mean a device that has an option to connect a Bluetooth keyboard & mouse. Thinking about some "recreational coding" gear :-)










Generate pretty Bulgarian-looking pictures by specifying a sequence of L-system-like rules.
- Press Z to reset the shape
- Press UP to add 1 to the rule string
- Press DOWN to add 2 to the rule string
- Press RIGHT to add 0 to the rule string
- Press X to add a random rule to the string
Rule 1: -- ==> /\ (split segment to two, move midpoint outwards) Rule 2: -- ==> \/ (split segment to two, move midpoint inwards) Rule 0: -- ==> -- (split segment to two, leave midpoint on the original segment) |


How to use
Draw pictures by splitting and merging the squares.
This icon splits a square into four smaller ones:

This icon merges four squares of the same size into a bigger one:

Operation
Arrow keys to move the cursor.
Z to click an icon.
Press X to toggle mouse devkit for easier handling of the cursor. (Not on by default so that this cart can be used in a browser.)

The horizontal bars emit particles, every few seconds each. When a particle reaches the top or the bottom of the screen, one energy point is lost. The emitors work also as filters: When a particle hits a horizontal bar, it's absorbed and +1 score is awarded. Try scoring as much as possible before the energy reaches 0 and the game is over. My personal record is slightly over 540.
Hi guys, I collected some of my tweetcarts and put them all into a single cartridge. They were all within the 140 characters limit at the time of posting on twitter. I took two liberties: I renamed the labels in them from ::_:: to ::_1::, ::_2::, etc. so that they would be unique, and I added a btnp(5) test to each of their main cycle. I am sure there is a way how to do it more efficiently but it should be OK for now :)
2017-05-22: Added one more
2017-05-24: And one more. Now there are 10 of those :-)



I made a little tool exploring higher-order Lissajous patterns. Well, I'm not entirely sure they're actually called that, but this name sounds very mathematical :-). Some outputs look like human tongues or crests, some like butterflies, some like atomic mushrooms.

I'm sure everyone knows the principle of the basic Lissajous patterns. You iterate the following through a reasonable range of T and plot the points as you go:
X = sin(T / Rx) Y = cos(T / Ry) |
Rx == Ry gets you a circle, Rx == 2 and Ry == 1 is a paraboloid, and Rx == 1 and Ry == 2 looks like an hourglass. The images generated by my cart extend this a little bit. I sum a few "higher harmonics" before plotting the result:
X = 0 Y = 0 for I = 1 to speficied_order: X += sin(T * I / Rx) * R Y += cos(T * I / Ry) * R R *= 0.75 |

Remake of the classic Atari 800XL game Planetary Defense by Charles Bachand and Tom Hudson with a little but notable modification of the original gameplay: The amount of shots you can fire is limited and you need to recharge by staying near the green orbital base.
Shoot the giant red bombs out of the sky from the orbit. Don't hit your own planet. Don't let the bombs hit the planet either. Once any bomb reaches the core of the planet (coordinates 63:63 on the screen), game ends. 10 points for shooting a bomb.
Arrow keys: Aim
Z: Shoot
X+UP/DN: Alter the orbital speed






I always liked Kohonen Networks. They're simple and fun. This is a simple 9x9 2D-to-2D Kohonen network with constant neighborhood function, trying to adjust itself to the purple training set.
Use LEFT/RIGHT to switch between training sets.
Use Z to reset the network.
Yay for machine learning on PICO-8!


Here are two approaches to a micro rhythm machine: Programmable Sequencer (specify the rhythm, then play it) and a Real-time Sequencer (push the keys at the right time to record a rhythm).
PROGRAMMABLE SEQUENCER
Left/Right: Move cursor
Up/Down: Specify which instrument will play
X: Play/Stop
Update 2017-04-25: Better feedback during editing.
REAL-TIME SEQUENCER
A really simple beat machine with real-time performance recording and playback on a two-bar loop. The metronome can't be switched off and the tempo can't be set. And the playback can't be paused/restarted. Also, only one drum can sound at a time. Still fun!!
The latency between image and audio is kinda hindering its feasibility, especially when run in a browser. Sequencers as music makers in PICO-8 are perhaps better approach, e.g. 4-beat by 4mat. Anyway, step editing would be cool though and I'll add it later (and some fancier graphics along with that).




Update 2019-05-13: Use the "Enter Menu" to "load" some code examples.
Update 2017-05-14: The sonification can be switched off :-) (or rather, you need to explicitly turn it on in the X-menu).
Update 2017-05-05: Added crazily sounding sonification.
Update 2017-04-24: Made the UI a bit more clear and fixed some bugs.
TL;DR:
Hold X, pres DOWN once, release X, and watch the nerdy numbers fill your screen.
MORE INFO
Hey all, I made a very simple visual IDE for writing and running code in Urban Müller's Brainfuck programming language. https://en.wikipedia.org/wiki/Brainfuck
Top part of the screen is your code.
Bottom left is your memory.




... Adam and I work for Warhorse Studios in Prague (designing and implementing adaptive music in the title called Kingdom Come: Deliverance) and for the Czech Technical University in Prague (a researcher and an assistant professor). I also contribute to the Overmare Studios' RPG as the music team leader. I co-founded and write and produce for a band called the Wasteland Wailers which started performing live this year (Berlin, Baltimore). I am interested in interactive audio and music.
My twitter is @adam_sporka.
My SoundCloud is https://soundcloud.com/adam_sporka.
A tiny silly cartridge with firework particles for the #p8jam2 :-)
Update 1.2
"Score" is shown. Not that you can anyhow alter the outcome, but it still feels kinda nice when you go over 1000. Once I scored over 1700. The thrill of it! :-)
'Z' will restart with the score shown at the end of the firework.
'X' will restart with the score visible during the process.
Update 1.1
Added more colors.
Sometimes the particles pop diagonally.









There is a massive noise in your precious recording of 4'33" by John Cage in Carnegie Hall. Instead of four and a half minutes of silence -- electronic disaster in your headhones! Get rid of it by applying various filters to reach silence. Each slider controls one filter, which removes one element of noise when set to correct position.
- Not all filters are needed every time.
- Sometimes only one noise element is active.
- Getting rid of one element makes others louder.
LEFT, RIGHT: Choose the filter
UP, DOWN: Move the filter slider
You need sound output to play this minigame.
Warning: Squeaky noises ensue! :-)
Perhaps this is going to be useful for someone. This is a little keyboard handler I'm using in my code. It extends the functionality of the standard btn(k) function with detection of the onset of the key and its release. Sometimes it's useful to have those two and avoid btnp(k) repetition.
-- is_held(k) is true if the key k is held down -- is_pressed(k) is true if the key has just been pressed by the user -- is_released(k) is true if the key has just been released by the user keys={} function is_held(k) return band(keys[k], 1) == 1 end function is_pressed(k) return band(keys[k], 2) == 2 end function is_released(k) return band(keys[k], 4) == 4 end function upd_key(k) if keys[k] == 0 then if btn(k) then keys[k] = 3 end elseif keys[k] == 1 then if btn(k) == false then keys[k] = 4 end elseif keys[k] == 3 then if btn(k) then keys[k] = 1 else keys[k] = 4 end elseif keys[k] == 4 then if btn(k) then keys[k] = 3 else keys[k] = 0 end end end function init_keys() for a = 0,5 do keys[a] = 0 end end function upd_keys() for a = 0,5 do upd_key(a) end end |






You're the driver of a semi-automatic roof repairing cart and you're undoing the damage caused by the meteorites. The roof of each house can only take so much damage before the entire house is destroyed.
Controls:
LEFT, RIGHT: Drive left and right.
UP, DOWN: Extend or retract the arm of the vehicle, holding the the repair rig.
Z: Use the repair rig on the roof. Make sure you're properly aligned with it (or get a perk which will do that for you)
X: Install an auto-repair unit (ARU) if you have some.
Scoring:
+25 points to undo the damage caused by one meteorite strike.
Level up after every 200 points scored. A randomly chosen house will grow in size upon leveling up. A perk shop dialog window appears.




My first attempt at coding something which resembles a video game in Pico-8 :-)
You're the driver of a semi-automatic roof repairing cart and you're undoing the damage caused by the meteorites. The roof of each house can only take so much damage before the entire house is destroyed.
Controls:
LEFT, RIGHT: Drive left and right.
UP, DOWN: Extend or retract the arm of the vehicle.
Z: Make the arm repair the roof. Make sure you're properly aligned with the roof.
Scoring:
+25 points to undo the damage caused by one meteorite strike.
Level up after 200 points scored. A randomly chosen house will grow in size upon leveling up.
Thanks for playing :)

