larkstongue by Matt Current [web]
no screenshot yet.
platform :
type :
release date : may 2020
  • 4
  • 2
  • 0
popularity : 49%
  • 0.67
alltime top: #23677
added on the 2020-05-09 07:16:07 by jobe jobe

popularity helper

increase the popularity of this prod by spreading this URL:

or via: facebook twitter pinterest tumblr


Larkstongue is an asset packer for the PICO-8, written in Python. It can extract raw cart data from a .p8 file, compress and pack assets into the cart data of a .p8 cart, and generate code for unpacking that data.

Current features:

  • Extracts any cart data area
  • Special extract function for bitmaps with automatic cropping
  • Generates loader code according to the user's specifications
  • Hilbert curve mapping for bitmaps
  • Run length encoding
  • Huffman coding

Larkstongue is currently in early public alpha, so there will probably be a lot of quirks still. Remember to keep backups of any carts you use it on!

Give it a try! Do try to break it and tell me how you broke it 🙂
added on the 2020-05-09 07:18:13 by jobe jobe
rulez added on the 2020-05-09 07:42:37 by ham ham
tool thumbs
rulez added on the 2020-05-09 08:21:35 by sensenstahl sensenstahl
Looks good, thanks for sharing!
rulez added on the 2020-05-09 11:40:45 by mantratronic mantratronic


  • Hilbert curve mapping for bitmaps

I've been wondering about this myself - what are the typical gains from using using Hilbert curve mapping as opposed to eg. the zigzag pattern used in JPEG?
added on the 2020-05-09 17:32:32 by porocyon porocyon
rulez added on the 2020-05-09 17:32:56 by porocyon porocyon
I haven't tried the zigzag pattern. I did try the Z-order curve, and at least with my small sampling of test assets, it was actually worse than just a simple left-to-right mapping.

I should see if that zigzag pattern is better, and I am planning to expand Larkstongue to be modular, in a way, with support for several mappings and compression algorithms, with the packer including the ones that are most efficient for that particular set of assets in the cart.
added on the 2020-05-09 17:58:02 by jobe jobe
if you haven't you should really try LZ4 packing ( should fit perfectly with the platform regarding size/speed)
added on the 2020-05-10 10:31:12 by leonard leonard
You could even try using an arithmetic, ANS or range coder (like all the fancy packers do), but that might be a bit more tricky to implement. But then you could turn the RLE and Hilbert curve/zigzag/... mapping and LZ4 coding into prediction models, instead of having to bruteforce between all those options.
added on the 2020-05-10 16:11:05 by porocyon porocyon
I'll have to look into that. Although, right now it bruteforces through six options (left-to-right mapping and Hilbert mapping, then RLE, Huffman or both) and for now, that takes an insignificant amount of time :)

I'm going to try LZ4 as well. I tried LZW before, and it didn't really do well against RLE + Huffman in terms of compression ratio per code size. I'm not really looking for speed, as the PICO-8 has 2 megabytes of Lua memory and you can realistically just decompress everything as soon as the cart loads.
added on the 2020-05-10 18:56:38 by jobe jobe

submit changes

if this prod is a fake, some info is false or the download link is broken,

do not post about it in the comments, it will get lost.

instead, click here !

[previous edits]

add a comment