Log In  
Among Pico
[ :: Read More :: ]

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
5   pico8                                  0x109085496 codo_blit + 646
6   pico8                                  0x1090b2db2 codo_blit_back_page + 50
7   pico8                                  0x10906f940 codo_main + 752
8   pico8                                  0x108fc3e74 start + 52

Weirdly, I wanted to see if there were anything on the console and started it by hand from the terminal, and it ran without a crash, but if I run it from the .app folder it will crash.

Just thinking out loud there, but for building a project I had to install SDL2 as a framework (so inside /Library/Framework ) and I wonder which version of SDL it pick when running from the command line.

Weird2: Just ran open /Application/PICO-8.app from the command line and it ran without a crash.

I also have SDL2 installed through brew for other build project, so I'm quite unsure how dynamic links work between all the way to run the app, but up so far, starting from the Finder will trigger the crash in the blit.

Tried to remove the SDL2 framework in the PICO-8 bundle, and it pick the one from the /Library/Framework, but crash in the exact same way

I'm not sure what make a difference while running from the command like (the output from otool -Lis not really helpful:

% otool -L /Applications/PICO-8.app/Contents/MacOS/pico8
    @rpath/SDL2.framework/Versions/A/SDL2 (compatibility version 1.0.0, current version 12.0.0)
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 23.0.0)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)

If there is anything I can do to help, please tell me!

P#119990 2022-11-02 10:15 ( Edited 2022-11-13 10:30)

[ :: Read More :: ]

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.

P#97277 2021-09-13 10:09

[ :: Read More :: ]

Here is something I've been playing around for a couple of days:

Cart #paletteplay-0 | 2020-10-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

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:

A 8 colour per channel version:

Cart #paletteplay-2 | 2020-10-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


And a 6 colour per channel version:

Cart #paletteplay-1 | 2020-10-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


The difference between each is how much tiles are used for the palette.

I think the code is self explanatory, feel free to use any of these palettes if you see fit and to credit me if you use it :)

PS: cpc stand for "Colour per channel"

P#83493 2020-10-30 12:27 ( Edited 2020-10-30 12:31)

[ :: Read More :: ]

Cart #sadeyajzo-0 | 2020-10-19 | Code ▽ | Embed ▽ | No License

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 :(

Hope you will enjoy!

P#83117 2020-10-19 11:44 ( Edited 2020-10-20 11:11)

[ :: Read More :: ]

An old project of mine that I never finished, I was working on the bases loop from the song used in Tetrinet, never finished it, but just found the cart and wanted to share it :)


(The cart file last modification is tagged with the date 20/07/2016)

P#83115 2020-10-19 11:34 ( Edited 2020-10-19 23:26)

[ :: Read More :: ]

Cart #amongpico-0 | 2020-10-18 | Code ▽ | Embed ▽ | No License

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.

And then went, ok now, AU have multiples colours palette for players, let's add that:

Nothing really fancy, but always fun to play with the palette to try to find nice combinations that works.

Reasonably satisfied with that, I went. Ok what I want to play with next. I came to the visibility shadow which is in the original game, as wall tend to cast shadow so there are area you don't see what is in there.

I started to play around, trying to identify how to do that. First working on a poly fill:

which was way more buggy than I originally though :D (will fix is latter in many iterations)

Then trying to understand how to cast the shadow from a wall in the vision area:

As you can see the projection somewhat work, but the polyfill is really buggy :D

And I ran into the problem if the corner not getting filled:

And that's about at that time I decided to look around on how other people solved that type of thing to find the blog post of the author of Dank Tomb that explain thoughtfully how he does his lighting effect, and it was quite interesting.

I decided to see if I could use some of his idea (and in the end used some of his code) for the shadow cast.
It seemed to work reasonably fine, even not being fully satisfied with how it behaved, it felt good enough for the job:

It is also about when I found another issue with my polyfill:

Which was the result of a division by zero :D

Then I' ve continued doing test also adding the possibility to change the view radius on the fly:

Then decided to build some form of a room to see how the shadow react:

With some variants:

And decided it was time to play with a tilemap, and added one of top the wall and see how it behave:

It looks nice, but something is off. You are not supposed to see everything in rooms you are not in, but at least you should see the shape of non movable thing in there.
And I remembered about a tweet from Zep about some POKE magic, and played around with it:

And I was really happy with that, it does not cost CPU time, works really well, the only drawback is you need to make sure to not draw thing in the room you don't want the player to see, and choose palette correctly for thing will look in the shadow area.

And that's when the first really laborious task of the project started. It was time to get a proper map to run around. So I went on google, search for the first AU map (the Sked) and found an image of it.
Then resize it to roughly match my sprite size (so thing don't feel too off), clean it to remove all art just keep the wall and floor, and map it in PICO-8. Yeah it actually fit in the normal tilemap (using the extended area) I was not expecting that at all! But it also come at the expense of limiting to only two tile banks, and well. That does not leave me with a lot of usable tiles in the end, but that's another story for later.

All the tiles used for the drawing all walls:

So after a while I came to that:

(You can also notice that the moving animation is more smooth and bouncy than it was, I don't remember exactly when, but I've done some tweak on it to make it looks better)

Also decided that the out of space was a bit dull so added a good old star effect:

Then came the second laborious task. mapping the wall to the actual map. I didn't really wanted to do that by hand, way too many change of error, so needed to have a break and came back with a, I think, clever idea, I temporarily change the main sprite as a single dot, and moved with it around and used printh to map all the wall corner in each of the three wall loop that map have. It really worked fine and was perfect on the first try!

Just needed to add some code to automatically create the wall list from each loop list of point, and voila:

But that's when I started to have to issues.
First, I needed to cull all the wall not on the vision area, because I had a lot of drop from 60 to 30fps, and second even after culling there were still some drops (less but still some) and found that on some wall the shadow was absolutely not behaving the way it should:

the red poly is the actual casted shadow for the wall in green, and of course that is not valid.
Can also see it in this test mode I implemented just for checking and debugging that issue:

I had to scratch my head a lot, and went into a complete rewrite of how I do extend the shadow, in a way which is still not perfect, there is still some overdraw and more than I really should draw:

But now does work in all conditions and in the expected way, and slightly unexpected bonus?

It now run at a constant 60fps! CPU use is still high, but that's to be expected there are a lot of math and drawing involved. Thing probably could be more optimised, but it is good enough for now.

Casting shadow is fun, but being a ghost walking through wall is fun for some time:

It was clearly time to make sure you cannot clip through the wall. It took me some time because I wanted to make it in a clever way, took me a couple of day away from the project to clear up my mind and get into a working solution:

And that's the current state of the project.

I'm happy if people are interested to explain how and where my shadow cast differ from @krajzeg solution, how my wall collision detection work, it is simple, probably not original, but I like how it works.

There are more thing to come with this project, including something it is way to early to talk about. I may stream working on that project on twitch at a later point.
I will post a cart a bit later I just need to make sure it is good enough for a demo release ;)

Hope the reading was interesting :)


Edit: I've added the cart on the top of the message and as all the key binding are not obvious:
Player1 ⬆️⬇️⬅️➡️ : move around
Player1 ❎🅾️: cycle between player color
Player2 ❎🅾️: change the visibility area

P#83072 2020-10-18 13:40 ( Edited 2020-10-18 14:03)

[ :: Read More :: ]

Cart #51208 | 2018-04-02 | Code ▽ | Embed ▽ | No License

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.

P#51209 2018-04-02 14:15 ( Edited 2019-11-09 13:30)

[ :: Read More :: ]

Cart #44692 | 2017-09-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

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)

P#44693 2017-09-27 17:52 ( Edited 2017-09-27 23:56)

[ :: Read More :: ]

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:

In the end, that was probably not really needed as one of the game that run the most was Hug Arena, and the astonishing Alone in Pico.
But while crawling in the existing carts, i've also discovered some really nice demos like Cartoon Cat Karaoke

So for the moment I will not publicly publish the source for the Offline BBS, at least not without ZEP consent, the use of this tool need to make a dump of the BSS content (or it will be empty) and if dozen of people start to dump the cart list, the Lexaloffle server will suffer from that.
So I will consider giving the sources for people that ask me with a reasonable project like making a PICO-8 stand or any situation where it is justified, but will the requirement to not publish it.

If you have any question, don't hesitate :)

P#32472 2016-11-14 15:54 ( Edited 2016-11-15 18:47)

[ :: Read More :: ]

Cart #32398 | 2016-11-11 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

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 ;)


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!!)

P#32399 2016-11-11 13:25 ( Edited 2016-11-11 18:34)

[ :: Read More :: ]

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 :)

P#27793 2016-08-31 20:05 ( Edited 2016-09-01 00:05)

[ :: Read More :: ]

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:

Cart #24893 | 2016-07-08 | Code ▽ | Embed ▽ | No License

P#24727 2016-07-06 13:51 ( Edited 2024-06-14 14:58)

[ :: Read More :: ]

Version 2 with more funny effect:

Cart #24427 | 2016-07-03 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Original version:

Cart #24424 | 2016-07-03 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Yet another music visualiser, using the Woo demo music by ZEP

P#24425 2016-07-03 11:13 ( Edited 2016-11-14 20:09)

[ :: Read More :: ]

Cart #24326 | 2016-07-02 | Code ▽ | Embed ▽ | No License

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:


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
end a%=360 rectfill(0,0,128,8,0)print(a..">"..z[s].." "..v,0,0,7)end

Older code version:

336 chars versions:

z={"fw","tl","tr"} s=1 v=0 a=0 x=64 y=64 cls() function _draw()
if(btnp(0)and s>1)s-=1
if(btnp(1)and s<3)s+=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
end a%=360 rectfill(0,0,128,8,0)print(a..">"..z[s].." "..v,0,0,7)end

346 chars version:

z={"fw","tl","tr"} s=1 v=0 a=0 x=64 y=64 cls() function _draw()
if(btnp(0)and s>1)s-=1
if(btnp(1)and s<3)s+=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 then line(x,y,x+f,y+g) x+=f y+=g end
end a%=360 rectfill(0,0,128,8,0)print(a..">"..z[s].." "..v,0,0,7)end

For the people interested in that code:
S is the currently selected command
A is the current angle [0..360[
X is the current turtle X position
Y is the current turtle Y position
V is the current selected value for the command
F and G are temporary values used for moving the turtle (basically F is next X position G the next Y position)

P#24402 2016-07-03 07:33 ( Edited 2016-07-03 13:18)

[ :: Read More :: ]

Cart #23766 | 2016-06-27 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

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)


P#23767 2016-06-27 18:40 ( Edited 2016-06-28 11:05)

[ :: Read More :: ]

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!

The video is not showing the final version of the electronics for the logo, I've just tucked a ws2812b ribbon on the back to check if the light guide was working well and...yeah as you can see, it works really well! The LED are just driven a 50% then are not even at full power, I let you imagine what it would be at full power.. (and there is still the plastic protection in the front, which is opaque :D

The final version will be using the same sort of components, so it's close to what it will be.
So I will use the variant of ws2812b with RGB+warm white, as it makes better white than mixing R+G+B, an ESP8266 using NodeMCU as firmware, and that's all.

The funny part is that I've especially choose the ESP8266 because it's cheap, but mainly because it's a Wifi chip use NodeMCU because it's a Lua interpreter!
You may ask yourself, "but for what Wifi would be needed for just a logo?"
Simple, it allow you to either:

  • update the firmware without the need of a cable
  • you can change settings while it's running, like for exemple changing the colour pattern, so we can do funny thing one the logo is set!
    If Pico-8 start to have some sort of networking features, we can even think about controlling the logo using Pico-8.. Wouldn't that been fun? :D

So yeah the next step for that part of my project will be to build the electronic for it, (which is basically, fitting it inside) but I'm waiting for some components before I can go further, and make the full application that will run on it, right now, it's just a collection of small test to make sure that it was possible to make that :)

And for the logo, I will put the dxf file somewhere (maybe on github) for people that would want to cut their own, and if ZEP allow me, as it's his logo after all, I may be able sell for the price of the material and the time taken to build it if you don't want it as a kit without LEDs it can also be cun in smaller size.
ZEP if you read this do you have any objection about that? (anyway I'm not even sure that anyone would want a Pico-8 logo at home.. :D

Anyway, that's all for that blog post, next time I will put more on the firmware running in the logo or on the electronic part and a "behind the scene" about the internal of it :)


P#22576 2016-06-09 22:22 ( Edited 2016-06-10 02:24)

[ :: Read More :: ]

Cart #21618 | 2016-05-29 | Code ▽ | Embed ▽ | No License

Older versions:

Cart #21018 | 2016-05-21 | Code ▽ | Embed ▽ | No License

-- 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:

P#21020 2016-05-21 13:29 ( Edited 2016-06-21 16:05)

[ :: Read More :: ]

Cart #20870 | 2016-05-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

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!

P#20871 2016-05-19 18:55 ( Edited 2016-05-19 22:56)

[ :: Read More :: ]


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


P#20862 2016-05-19 15:12 ( Edited 2016-05-19 20:17)

[ :: Read More :: ]

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
   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 
       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)

18/05/2016: Version 0.2 - New functionalities, see below
Version 0.2r2: correct a bug on effect calculation

I hope it will be useful to someone :)

I used the demo Woo as a base to demonstrate the function in the demo cart.

P#20640 2016-05-16 10:40 ( Edited 2016-05-18 18:46)

View Older Posts