
I'm not actually sure if this a bug or an intended feature (or possibly just an unforseen side-effect?), but I'm posting it here because it seems like it might be a good thing if this behavior was changed...I think it's worth consideration anyway :p
The new SFX instruments are great but the one thing I've noticed is that you can't really use them for syncopated rhythms where you need a note to be held over across SFX boundaries.
In case I'm not explaining it clearly enough, here is an example: let's say SFX 8 has a note in its last note-slot (31), and SFX 9 has that same note (same instrument, same pitch, same everything) in its first note-slot (0). Then you have a music pattern that plays SFX 8 followed by SFX 9. If the instrument used was a regular instrument, you would hear one unbroken tone across the "boundary" between SFX 8 and 9, but if it's an SFX instrument, the instrument is retriggered when the pattern switches from SFX 8 to 9.
Now the manual says that an SFX instrument note will only be retriggered if one of the following happens:
- the pitch changes
- the previous note has 0 volume
- effect 3 (drop) is used to manually retrigger the note
But as my example above indicates, there is one additional case in which it is apparently always retriggered: if it's the first note of an SFX. I'm guessing this may be because these rules are implemented in the context of a single SFX so the "previous note" of the first note in an SFX would be nonexistent and would therefore be taken to have a 0 volume...maybe??
In the context of my example above, however, when we look at note 0 of SFX 9, the "previous note" is not any different from this note, so no retrigger should occur (I would argue!).
So what I am trying to propose is: it might be better if the sfx instrument behavior was modified slightly to not retrigger in this case, since if you really want it to retrigger, you can always just use effect 3, but if you don't want to retrigger, you can't do anything to make it not retrigger. (In the actual song I am working on, I would just use homophonic non-SFX-instrument notes across the boundary to circumvent the issue, but in my case this is not possible because the notes are a lower octave that is impossible to play without using an SFX instrument!)
Sorry that took a lot of writing to explain :D

Has anyone beena ble to run PicoPi on a RaspberryPi Zero?
https://guillermoamaral.com/read/picopi/
It says to copy everything to a card and boot, but I got mine stuck on a black screen, nothing happens.
I want to make a standalone device booting straight to pico8 and this seems like the only option.




I'm having an issue saving a .p8.png of my game, to upload here.
I boot up Pico-8 on OSX, load my cart, and then run "save cartname.p8.png". That will give me a warning about not having a label, but will otherwise work fine. But when I run the cart, save a label with f7, and then try again to save, it fails silently, with no output. No new cart file, nothing printed out to the console. "save @clip" doesn't work either.
Any suggestions?



I bought PICO-8 for an Ubuntu 16.04 machine, and a Raspberry Pi, and it's simply a pain in the ass to install because the official app download comes in a .zip file with zero documentation on how to install. There's no install script in the contents of the unzipped files, and there's little to find online that helps. This installer didn't work for me: https://rombus.itch.io/pico-8-linux-installer/devlog/15013/pico-8-linux-installer-script
PICO-8 is a commercial product, please treat it as such, and have the download in a proper .deb file or anything more helpful than a .zip










It seems I'm using these a lot, so here they are:
----------------- -- table as string ----------------- function tab2str(t) local s="(" for i,v in pairs(t) do if type(i)=="number" then s=s.."["..i.."]=" else s=s..i..'=' end if type(v)=="boolean" then s=s..(v and "true" or "false") elseif type(v)=="table" then s=s..tab2str(v) else s=s..v end s=s..',' end s=sub(s,1,#s-1)--remove last comma return s..')' end ---------- -- example ---------- l={1,2,4,5,s=5} print(tab2str(l)) |
---------------- -- clone a table ---------------- function clone(t) local c={} for i,v in pairs(t) do c[i]=type(v)=="table" and clone(v) or v end return c end |
--------------------------------------------------- -- sort a table (insertion sort) -- cmp(a,b) should return true when a,b are ordered --------------------------------------------------- function insort(t,cmp) for n=2,#t do local i=n while i>1 and not cmp(t[i-1],t[i]) do t[i],t[i-1]=t[i-1],t[i] i-=1 end end end ---------- -- example ---------- function ascending_y(a,b) return a.y<=b.y end t={} for i=1,5 do add(t,{i=i,y=rnd(10)}) print(i..': '..t[i].i..' '..t[i].y) end print("----") insort(t,ascending_y) for i=1,#t do print(i..': '..t[i].i..' '..t[i].y) end |



Hey all,
I'm trying to upload a cart to itch.io. I've exported the cartridge to html, renamed the file to index.html, and zipped the html with the javascript file. When it starts on itch.io, it displays "booting cartridge" and the command prompt, but the game does not start. (If you need to see what I'm tryna describe... https://meganshaffer.itch.io/sneezr)
How do I make it so the game starts? Is there something I need to change with the html or js files?







This small Pico-8 tweetcart280 (278 chars in code editor without comments) is my homage/demake of Spike Dislike by Jayenkai. You can find the original one and lots of other games he has made here: agameaweek.com
Have fun!





An implementation of Rocket, from the Pairs Companion. The full rules are in the Pairs Companion, which you can download from Cheapass Games, but short version: there's 1 1, 2 2s, 3 3s, and so on through 10 10s in the deck. Don't get a pair.
The implementation actually works - up and down to change your bet, (X) to confirm, then (X) to hit or (O) to fold. There's some feedback now on what happened, but it's still pretty bare. I need to include actual in-game control notes, of course. And to make the art less hilariously awful. And maybe a nice card draw sound, hm.
