Log In  
Follow
scottmada
Follow

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.

P#26099 2016-07-29 16:07 ( Edited 2016-07-29 23:30)

Cart #23349 | 2016-06-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

View on Github.com

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:

[box=ffeedd]Either you download 
missing.lua

then copy the file contents into your .p8 project file, preferably before the rest of your code; or[/box]
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


P#22824 2016-06-13 06:11 ( Edited 2016-06-21 05:38)

Follow Lexaloffle:        
Generated 2020-08-09 12:08 | 0.110s | 4194k | Q:24