Log In  

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)

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)

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)

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)

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)

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)

P#24727 2016-07-06 13:51 ( Edited 2016-07-15 17:56)

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)

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)

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)

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)

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)

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)


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)

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)

Cart #20630 | 2016-05-16 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Cart #20578 | 2016-05-14 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Nothing really serious there, it's basically just some test converting famitracker music to Pico-8, I hope to have a working tool soon :)
Edit after a few release: Ok I also have a good fun doing some stupid thing with it :D

(the conversion in this cart was done by hand, and I though that some people would like to play with it)

15/05/2016: New Turbo version with more Unicorn inside!
15/05/2016 a bit later: Another new version, Super Turbo, with even more Unicorn!
17/05/2015: Super Turbo Alpha Plus: What is new? Some new Unicorn, especially I've added my music debugger as a demo, up will show or hide it, down will change the note display mode. Have fun! (I've also changed a bit the effect/instruments to sounds better)
Version Plus+ Correct a silly mistake in the music debug function (see the other thread)
20/05/2016: All hail to Low Definition! With this version you will enjoy the Low Definition Remix of the original Cart! Bonus, you can swtich between the original resolution and the new shiny LD using UP/Down Keys. Also include more Unicorn with one new track and some stuning visual and sound effects!

P#20581 2016-05-14 19:04 ( Edited 2016-05-21 00:08)

Follow Lexaloffle:        
Generated 2020-09-23 12:34 | 0.143s | 4194k | Q:194