This maybe not new for some users, but I did search the forums and I didn't found any post about this, so...
ANSI escape codes do work on Pico-8!
when using printh()
Let me explain. ANSI escape codes are sets of commands to use in terminals to "control the formatting, color, and other output options on video text terminals".
Yes. And what? (you say)
It means a lot! Look at this piece of code. It clears the screen on _init(). And it sets text to green, then resets it to the default color afterwards. (PSST... It may be useful for debugging purposes!)
function _init() init_console() printh("what is this? color??") end function init_console() -- note: ansi escape codes -- are case-sensitive. -- note: printh still adds a -- new line each time you -- call it, even if it only -- contains escape codes. -- clear the screen -- ("\27" is esc char) -- ("\74" is capital j) a_clear = "\27[2\74" -- reset the cursor top left -- ("\72" is capital h) a_cur_tl = "\27[1;1\72" -- set to green a_col_gr = "\27[32m" -- reset color to default a_col_df = "\27[39;49m" -- let's print some text printh( a_clear .. a_cur_tl .. a_col_gr .. "==> console initialized..." .. a_col_df ) end |
It should work out-of-the-box on Linux. For Windows, Wikipedia says it should work on a Windows 10 command line prompt. Here's the result on a OS X terminal:

There you go. I hope it helps.
You miss built-in lua functions such as ipairs or getmetatable in pico-8? Well, fear no more.
Currently supported Lua "built-in" functions
getmetatable setmetatable rawget unpack ipairs table.pack table.unpack as an alias to unpack table.insert table.remove table.sort |
Tested to imitate their counterparts
Travis-CI is set to test missing.lua against test.lua, which compares results of this library functions with the built-in ones. Well, tests may be incomplete, so do not hesitate to flag a bug to the issue tracker if something goes wrong.
How to use
Heads up to the latest release. Then, there's two options:
Either you download
missing.lua
then copy the file contents into your .p8 project file, preferably before the rest of your code; or
you load missing.p8 in pico-8 to test it out first.
About this license
This library is under creative commons license CC4-BY-NC-SA. See LICENSE.md. It's the same license as the optional one on Lexaloffle's website if you choose to publish a cart.
So, if you happen to publish a cart using this library, it would be nice if you mention it.
Thanks
To Lexaloffle, which this library would not exist without pico-8.
Changes
0.2
Add some table functions.
table.pack
table.unpack as an alias to unpack
table.insert
table.remove
table.sort
Refactor
ipairs
to make it return an iter function, as the native one does.
0.1
Add
getmetatable
setmetatable
rawget
unpack
ipairs