Over the past few weeks I've been working on Celia, a TAS tool for PICO-8 based on picolove, and it's finally ready for its initial release
Celia comes with 2 tas tools, one that should work for any PICO-8 cart (with some caveats, in the repository readme), and one that's more specialized, built for Celeste and mods. The tas tool code is layed out in a way where you can extend it to create tas tools for specific games, enhancing the normal functionality, so it also doubles as a tasing "framework" (api documentation coming soon).
Celia is based on my personal fork of picolove, Which has much better compatibility with PICO-8 carts than other forks, from what I've seen.
I'd love to hear any feedback, bug reports, and feature requests/suggestions. In addition, if you make a tas using Celia, feel free to post it here, I'd love to see it!
As a demonstration of the tas tool, I made a tas of Get Out of this Dungeon by @Insanus, which you can check out here [youtube]00JR6MZk_ZA




recently, while investigating the pico-8 preproccesor, i found some really weird behaviour, which culminated in some very strange token optimizations, and an infinite token exploit
Arithmetic assignment save
often, you want to perform multiple arithmetic operations on a varible, then assign it to itself. for example, a=2*a+1
the 2 ways you'd do this normally in pico-8
are
a=2*a+1 -- 7 tokens a*=2 a+=1 -- 6 tokens |
however, using preproccesor trickery, we can reduce it even more:
a*=2 +1 -- 5 tokens |
the reason this works is because the preprocessor patching for += works line-wise, so this would be patched to
a= a*(2) +1 |
Infinite token exploit #1
this exploit allows you to run any code that is on 1 line, and doesn't use any pico-8 preproccesor based syntax extensions (i.e. +=, shorthand if, ?), while only costing 8 tokens
it works as follows:
a={} a["[t"]+=" < your code here > t( [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=119789#p) |






