Log In  


Hi !

I'm looking to do something a bit weird with the PICO-8 and didn't find anything in the manual that would point to a solution. Maybe someone has done something along those lines already ?

What I would like to do is to control the PICO-8 console itself, irrespective of the cartridge running, through an external program.
Mainly, I would want to reset the console and/or change the cartridge via the external program, without having a specific cartridge loaded, inputs on the PICO-8 itself or closing and restarting the PICO-8. (I believe that resetting only could work, by loading a specific path for the cartridge and changing the file directly ?)

I don't really have a preference on the way this control could be done, just being able to would be enough.
Maybe the PICO-8 could be integrated in the program itself, as in Celeste, but I haven't found anything related to that while searching the web.

It's a bit of a specific use case (I'm trying to use a physical cartridge to use on the PICO-8), but I would appreciate any help or pointers !

Thanks in advance



celeste classic in the full steam release was ported and completely rewritten in c#, so that specific scenario is a bit of a misnomer, however, i did come across a bbs post from a while ago (https://www.lexaloffle.com/bbs/?tid=46310) that details how this user made a physical pico-8 console using floppy disks as cartridges (and originally prototyped using sd cards), so that could be of some help in your project.


yes, you can write a cart that reads and writes date with the outside world! one example: https://www.lexaloffle.com/bbs/?tid=38732

doc: https://www.lexaloffle.com/dl/docs/pico-8_manual.html#Serial


Thanks both for your answers !

> celeste classic in the full steam release was ported and completely rewritten in c#, so that specific scenario is a bit of a misnomer

Interesting, that's quite neat ! Doesn't help me very much indeed, but good to know.

> i did come across a bbs post from a while ago (https://www.lexaloffle.com/bbs/?tid=46310) that details how this user made a physical pico-8 console using floppy disks as cartridges (and originally prototyped using sd cards), so that could be of some help in your project.

Interesting, thanks for the reference, it's a nice project! It seems that it doesn't really fit my needs however : they appear to be just starting the whole PICO-8 program, not really controlling it.
That would work, for sure, but not really as integrated as I would prefer.

> yes, you can write a cart that reads and writes date with the outside world! one example: https://www.lexaloffle.com/bbs/?tid=38732

I did see this part of the documentation, but as I said I would like to do that with any cartridge (as long as it's not a multi-cartridge thing, I don't have the space for more). But that's a cool example, thanks for sharing it !

I understand that what I want to do is quite specific. As amongoose showed there are ways to achieve a similar result, but not quite as integrated as I would hope :)

Thanks again for your inputs, I appreciate the help


I’m afraid the goals you describe in the original post and the replies you wrote here are inconsistent! Do you want to build a physical console or not? or embed into another program?


The title of the thread is "Control the PICO-8 with an external program", which most of the first post is about. I added that I wanted to use a physical cartridge with the PICO-8, but that's really it: just some external storage on a PC, not a whole physical console :)

As per my first post, what I want to is that the external program would read the data from the external cartridge (which could very much not exist for the sake of the argument, the cartridge data could come from somewhere else and the issue would be the same) and be able to reset the PICO-8 and/or change the loaded cartridge, without closing and opening the PICO-8 program again.

Put another way, what I am looking for would be some kind of inter-process communication where the PICO-8 exposes some of its core functionalities (reset, cartridge load). If that is possible only by embedding the PICO-8 in another program so be it, but I don't mind either way.

Again, I get that it might not be possible at all and appreciate any time considering my issue !


ah! to achieve that, you would need to inject custom code into each cart that is loaded. then you can use serial (that I linked) to communicate with an outside driver program and react to events to reset or load carts.


Oh, I didn't think of injecting code into the loaded cartridges indeed.
I'll have to try it, but I fear it might depend quite a bit on the cartridge (how its event loop is made and the events handled for example). Put differently, I can't juste plug my serial handling loop at the beggining and be done with it :D

Anyway, thanks a lot, it's a good idea and gives me something to think about !



[Please log in to post a comment]