As the title say, latest version for PICO-I8 do crash under the latest (non beta) version of Mac OS (13.0)
I suspect it is a bug in SDL2:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 AMDRadeonX6000MTLDriver 0x7ffa1dbe1c11 gfx10MtlSimpleCompute_Dispatch(GFX10SimpleComputeDispatcherRec*, GFXAAMD_MtlComputePipelineState const*, unsigned int const*, unsigned int const*, unsigned int, unsigned int*) + 1305 1 AMDRadeonX6000MTLDriver 0x7ffa1dbe1ea1 amdMtlDispatchInternalComputeShader(GFXAAMD_MtlCmdBuffer*, GFXAAMD_MtlComputePipelineState const*, unsigned int const*, unsigned int const*, MTLIOAccelResource**, unsigned long long*, unsigned int, MTLIOAccelResource**, unsigned int, GFXAAMD_MtlTexture**, unsigned int, bool, unsigned int, unsigned int*) + 453 2 AMDRadeonX6000MTLDriver 0x7ffa1dbe424f -[GFX10_MtlCmdBuffer commit] + 393 3 SDL2 0x10969bcf1 0x10968a000 + 72945 4 pico8 0x1090b525d codo_blit_to_video_plat + 1645 [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=119990#p) |




Ok it may just be on my side, not 100% sure, but in splore is I do a single word search it will work:

But once I start to search for more than one word separated with spaces it will reply "cannot connect to the BBS":
(had to make two images, gif record do seems to stop as soon as the error pop up at the bottom)
I can't check right now, but I suspect it is linked with how the URL to search on the BBS is generated.
Here is something I've been playing around for a couple of days:
This cart allow to use a "higher" colour count palette for PICO-8, and of course, there is a trick here: You only have a canvas of 64x64 area as a group of 2x2 pixels are used for each pixel you can display using dithering.
This is mostly a proof of concept, I know I'm not the only one trying this. The code can probably be optimised, and the palette themselves are probably not perfect.
The bonus is that I have 3 variante of the palette:
The first one with 10 colours per channel eating the full first tile bank:
![]() |
[0x0] |
That's a project I though I lost long ago. I was working on it on my PocketCHIP, tell you how old this is and had an issue with it and needed to reinstall everything and lost all the cart I was working on, this one was one of them, and I'm delighted that I had a copy somewhere else.
So this one is date from the 19 May 2016 (at least last modification of the file) and was at a time I was playing around trying to replicate exisiting music in PICO-8 (as for the Megaman in another cart of mine already published here) Also had fun working on replicating the screen from the original game.
I really like how the two song render in PICO-8, I'm pretty sure I started to work on some other but lost all the work :(

Hi everyone!
Been a while since I've posted something here, I've not been really active with pico-8 recently, but done a couple of stuff, really enjoy the platform, just lack of time :(
Anyway. Among Pico (not final name, if it will have a final name one day) is a test project I've started some time about (early September 2020) and been working a bit here and there since. Started just as a pure test for various effect we could do with PICO-8, ended with what it is now.
I will post a cart a bit later, need to do a bit of cleaning before posting it.
I don't have a lot of backup of old version, but I have plenty of GIF I made during the process, so let's start with that.
The name may not be clear, but the origin of the project started with Among Us in mind, and I first wanted play around the way your character move in AU and replicate that., So I made a inspired set of sprite and started to animate it on screen. Nothing really fancy and even if the bouncing is there, it don't really look good, but well I was pleased enough at the time.




This game was made in a game jam ran during a retrogaming event.
This year the theme was maze, a boss and the Odyssey.
My game is far from being finished, I didn't worked really long on it (4-5 hours maximum) and mostly only the rendering is done (and may still need some tweaks)
When playing the X button allow to display a debug view of the maze, which is for now, not generated randomly. I hope to update it at a later time to add all of what I wanted to include in it!
The final game should include some RPG elements, HP, EXP points, attack, treasure to find and grab, different levels and in the end the big boss that you have to kill to be able to escape the maze.
The polyfill function is from scgrn ( see https://www.lexaloffle.com/bbs/?tid=28312 ) modified to not directly write to memory to support the fill pattern.
If anyone have a better fillpoly function, one that can do even better dithering than using the fillp I will probably switch to it to have smoother gradients.



After seeing https://www.quaxio.com/tron/ I wanted to see the smallest version we can do in PICO-8
Currently 251 characters
I'm absolutely sure we can do even better!
(Yes it is useless, yes that probably the lamest game on earth, but who care? :D)



That was a requirement, for me, to have splore working as it is intended to, the problem is, there is no internet connexion, and I can't use my phone tethering as it wasn't in a location where I can use it.
The problem is, we can use splore for exploring folder, but you will have all the other part to be not working because, of course, no internet access.
After some quick test while using PICO-8, I finally found how it get data from lexaloffle servers, at least I found something, but there were missing informations.
The way ZEP have made that is in fact quite clever, as he used something similar as the way we save carts, all the data are transferred in the form of pictures, when PICO-8 request a new cart set from the BBS it receive a PNG file. The clever part is, it's not done the same way, but data about the cart is also stored in the picture in a similar way as it is done on the cart, it took me a couple of minute to figure how it is working.
As all my Pi (I manage to get 4 of them running during the convention) were to be connecter on the same network + a pocket chip on wifi, I took some standard network hub & wifi ap for that, nothing really fancy, but the tricky part was to make sure that everyone speak the same thing and especially that any device can connect without the need to spend hours in network configuration, especially because PICO-8 use hardcoded values to search for lexaloffle servers, so I had to trick it for that.
After some time spent on searching for a solution, I was going to use all the big tools for DNS/DHCP because haven't found a proper and simple tool, it was just when I read about dnsmasq which was the exact tool I needed for the job.
dnsmasq is a simple tool that provide:
- DHCP
- DNS cache and server
all of that using simple text file for the configuration (for those who have to install and configure a Bind server, you know how easy is it to configure this beast! :D)
So the next step was to install this tool on the Raspberry Pi that was to be used as the main server, and copy configure it to at least give proper name to my device that I was going to connect so I was able to remote connect on them without any hassle.
The last step was to make the offline BBS itself, it took me a couple of hour to have something that was looking like it's working, but hand't a PICO-8 to test, so I had to wait a little bit, and it worked on the first try.. :D
Where I was really impressed is my search is way more faster than the one the official BBS, but as my search is only done on cart name, I suppose that the official one, is going that on the full content of the BBS, including posts, that may explain the slight different in generating the answer.
My offline server also honour the "Featured" category, but with a really different algorithm. My server know how many times a cart has been requested by a PICO-8 and will use that metric for the featured list. Maybe not the best, but as there is no real BBS with the favorite star button, I can't use that.. ;-)
The other part of my offline BBS was to make a tool to dump the BBS, there are already some tools that you can find, but they way they get the cart is a bit clumsy and it does not work well, the one I've made was using my knowledge on how the BBS is working and use the same mechanism as what PICO use to get data from the BBS.
As a proof it is working here is a dump, in form of an HTML page, of the dump I've made just before the convention that has been used during the weekend:
http://box.godzil.net/~godzil/pico8/


I wasn't originaly planning making this cart. For a presentation about PICO-8 (that didn't happen in the end) I wanted to have a cart that was running in background while the audience was entering the room and waiting for the talk to start.
I really like the Hello World cart from ZEP and its music and selected this one, as a nice Hello World is good way to great people.
As I was boring trying to find things to say and what to show on stage, I started to play adding things to the original hello world cart, and playing with it playing with it, it ended in something that could be use for more than just a playfield, so I didn't stop adding thing to it and added what is the most essential to a demo/invitintro: a scroller.
So yes this cart is based on the Hello World cart and music, I hope ZEP will not take my pico-8 licence because of that.. ;)
And the block text effect is also from the invitintro for the second jam, there is a small change, but the base is that,
The moving logo use nearly the same code as the starfield.
I do like the final result, it's a simple but nice looking graphical art ;)
Enjoy!
Edit: Run it on PICO-8 for the best result, on the HTML version it seem to be a bit slower on some effect than on the real thing
(This demo look really nice on a Pi attached to a CRT!!)
So as I said in my previous blog entry, I'm making a Pico-8 stand for (retro) conventions, and the most important thing to do for such an event is something that make you visible, and nothing is better than a flashy logo for that.
As my stand is about Pico-8, the logo has to be Pico-8's!
I've resume working on the logo today on the electronic side and mais small PCBs to support the LEDs that will be used to illuminate the logo:

These PCB are incredibly small: 6*9 mm, yes they are really really small :)
They are intended to fit into one of the sandwitch layer of the full logo, that's why they are so tiny.

I've just ordered them so I should not get them before about 2 weeks, I hope less but it's unlikely.
As soon as they are there and mounted I will show you the result on the logo :)
Next update will be about the Raspberry Pi light Pico-8 OS :)
Long time ago I had a project of the demake of a specific game on retro hardware (this project is not dead yet, I just lack time to work on it)
And a few days ago, I crossed some data for that project and my brain told me
- Why not see if it's possible with Pico-8?
My answer was quite simple: - Challenge accepted!
It's not a game perse, but I'm currently more advanced than on the original project, there is no cartridge for now, as the code is a mess and it's basically just testing some of my original ideas, I have a lot of things to do before I could say "it's a playable game" right now I've just tested the level generation, so nothing really fancy for now.
So, I present you the first moving picture of PPPPPPPP:

(the starfield come from the same effect in the tweetjam, I used it to test the transparency)
Edit: added the cart here:


I was thinking about the current #tweetjam #tweetcart and wanted to do something fun an interactive, and though about a logo interpreter, i've made one then i've started to work on making it the shorter as possible, this is the current size it's about 200 chars, but I'm sure it can be done smaller.
How to use:
Left/Right select the logo command:
FW : Forward
TL : Turn Left
TR : Turn Right
Up/Down select the value for the current command, in degres for the rotation (TL/TR) and in pixel for moving (FW)
The top row is used to display the current command:
"A>CC VV"
where A is the current angle rotation (0 is going to the top, 90 to the right, etc..) CC is the currently selected command, and VV the command value.
To "run" the command BTN 4 (Z) is to be used!
This version is a really small subset of the Logo language, and is not interpreted as logo is of course, without a real keyboard it would be really difficult to do something better..
I will post a longer version that support most of the logo turtle commands but not as a language, only as a direct command mode.
Have fun!
It's not the code in the cart, but I've trimed it a bit, it was 346 chars it's now 314! \o/
But this one ditch the left button so you can only select in order FW → TL → TR → FW → ...
z={"fw","tl","tr"} s=1 v=0 a=0 x=64 y=64 cls() function _draw() if(btnp(1))s+=1 s=s%3+1 if(btn(2)and v<360)v+=0.5 if(btn(3)and v>0)v-=0.5 if btnp(4)then f=sin(-a/360)*v g=-cos(a/360)*v if(s==1)line(x,y,x+f,y+g)x+=f y+=g if(s==2)a-=v if(s==3)a+=v end a%=360 rectfill(0,0,128,8,0)print(a..">"..z[s].." "..v,0,0,7)end |
The classical fire effect found in lots of demos.
Pico is not really adapted for such an effect as pget will take the real color palette number and working, even on 64x64 buffer pixel per pixel is a really slow process.
Anyway, the rendered effet is not too bad 'even with only 7 colours used in the palette :D)
Enjoy!

As I already says in a topic in the Pico8 forum, I'm going to make a Pico-8 stand for a French retro-gaming convention during Fall (at least this one, but I hope to be able to deploy my stand in more locations!)
My goal with this stand is to allow people to discover Pico-8 and I will also run a simple jam for the interested people.
The stand will be made from Raspberry Pi (I have a few of them) connected to CRT monitors (or whatever is available) potentially two CHIP as soon as there is the update that include Pico-8 also connected on CRT or other screen, depending on the availability (hopefully the people that organise that even can lend monitors, that's really handy! :D) and my Picade with a rPi3.
Basically all of the Pi/CHIP will be connected together on a private network (I want this stand to be autonomous, because some convention can't provide an internet access, so I want them to be able to run without an internet access.
So on that network, either a computer, or one of the "Pico computer" will also have an offline BBS that will allow splore to work as if it were online.
I've found how the BBS is working and it's not really hard to make it work using DNS spoofing, but I really hope that ZEP will provide at some point a way to have our own offline BBS (at least an option in the config file to change the BBS address for such uses)
The best would also to directly submit a cart from Pico-8 that would be marvellous, but I may ask too much there :)
Anyway, all the Pi (and I will see for the CHIPs) will run a specialised version of Linux that boot directly into Pico-8 and will provide a way to upload cart to the offline BBS, need to check for that.
Anyway, I'm going back to the original goal of this blog entry.
There is something that all good stand need: a stunning logo, and the Pico-8 logo is a really stunning one because it's blocky and colourful! And how to make it even better? make it shine in the dark using LEDs.
I've been working on that for a few weeks now, and I've finally done the mechanical part, as I have access to a laser cutter, I had great fun today with it, and cut what will be the shiniest Pico-8 logo!
Older versions:
-- My week was more booked than expected and didn't had a lot of time working on this project, I hope to finish the principle of it before the deadline. At least, there is no music and fancy graphics, but the first part of this mini game is done! --
Welcome new researcher, and welcome to the CERP, as you already now, the CERP stand for "Centre d'Etude pour la Recherche Pixeleaire" also know as the Center for Studying Pixels.
You've joined us to run the the SPC, the Small Pixel Collider, and despite some controversy, we hope a lot from that device as it will help us to understand more about the matter we are made from.
So please take a seat in front of that computer, and train with the SPC simulator installed on it, to be ready to use the real one as soon as you are confortable with the device!
First part of the experiment:
As you know, to run a pixel collider, we have to make the pixel move fast enough for the final collision.
Your first task will be to accelerate the pixel using alternatively the Left and Right button up to 88mph, once that's done, press que Z key start the experiment and go to the second part of the experiment.
We have a lots of hope in you and the SPC and we are sure we will find all the answer to our existential questions!
--
It is not linked to my game, but when writing the presentation it made me think about that comic:
http://www.bouletcorp.com/hidden/quantum-pixel/


This is a work in progress tool, which currently allow you to look at the Pico-8 memory content.
It's really crude but do it's job:
Left will substract 0x10 to the current address, Right will add 0x100, UP will remove 0x100, Down add 0x100.
The display is in three parts, the top that show the top address, the middle with alternating bluish/pink that show a gris of 16*16 bytes from memory starting from address, and the value are show in Hexadecimal
The bottom part show the first half of the same memory as in hexadecimal, but will display the values as character and not hex, useful to look for string!
Hi ZEP,
I'm going to make a Pico-8 stand for a retrogaming convention later this year, and I was thinking on how to organise it.
And I would really want to use Splore as the browser for existing cart, especially because it works really well in my arcade cabinet.
But as you know apart from the "local folder" tab, Splore can only be used when the computer is online and have access to your website.
As Pico-8 is, I think, using standard web services for Splore, it would be nice if the base URL could be changed in the config, instead of using fake DNS, for such a (unusual) use.
But that would also mean that the BBS protocol should be documented in a way too.
My idea for the stand is to have multiple devices connected together on a network (wired/wireless doesn't matter), so I can have access to all the computer (which will mostly be rPi and probably my CHIP) so they could share data, and as Splore is a really good browser for that, it would be really nice to have access to it.
By the way, it would be nice too to have a way to directly push a new cart from Pico-8 and not have to rely on the web browser, but that's another problem.
As my goal is really to try to make the cluster of Pico-8 to be autonomous from the internet, this functionality will allow me to let people share their production on all the pico8 available using the offline bbs, without the need of having a web browser running on the Pi.
Especially as I will want to make it run Pico-8 directly and to not have access to anything else, like if it was a real console hardware.
I think I may add more about this project on my "blog" part here with the advancement of this project as I want it to be useful for other people making event around Pico-8
Cheers

This cart is basically a demonstration of a simple tool/function I've made to check/debug the music playing in one of my project, the function need no external dependency and should not clobber your variables as all of them are declared as local. You only need to call the function with the Y position as parameter (positive number are relative to the top of the screen, negative from the bottom) in your update screen function to display a bar with the current status of music playing.
There are four zone, one for each channel, the green/red bubble indicate is the channel is playing or not (green == playing, red, not playing) the number next to the bubble is the pattern used on that channel, and the bar on the bottom is the current position in the pattern.
The function itself:
function debug_music(y) if y < 0 then y = 128 - 17 + y end rectfill(0, y, 127, y+18, 0) rect(1, y+1, 125, y+16, 7) for c=0,3 do local p = stat(16+c) local b = stat(20+c)*25 / 32 local col = 8 if p > -1 then col = 11 end circfill(9+c*32, 6+y, 2, col) print(p, 15+c*32, 4+y, 7) rectfill(3+c*32, 10+y, 27+c*32, 13+y, 6) if p >= 0 then rectfill(3+c*32, 10+y, 3+b+c*32, 13+y, 3) end end end |

