So, this may not work in future versions of Pico-8, but right now, I've noticed that if you do a load() within your game game code, you still have your base ram untouched until you run run(). With that info, you can use objelisks technique (https://www.lexaloffle.com/bbs/?tid=1860) and use cstore(x,y,z) and some empty space in the spritesheet to transfer info from one cartrige to another. Then use run() to switch to the new cartrige and peek to read back the transfered info. A single sprite equals 32 bytes with is good enough for a metroidvania.
As I said, there's no guarantee that load() will work like that in the future and it probably wouldn't work like that on a "real" Pico-8 console, so in a way it could be considered cheating. But right now it works.


You can also use the GPIO pins in the web browser. I don't think the BBS does anything with them, but you can if you're self-hosting the games. Since the GPIO pins are written to a javascript array, you can store data in to that and have the website switch cartridges (and then read the data back from GPIO pins.)
There's no way to automatically know when the cart has written to the GPIO array though*.
- You can manually patch the .js file so it runs a callback upon write, which would let you do this smoothly in the browser. I haven't tested that much.
[Please log in to post a comment]