User: Password:   New User | [?]

  PICO-8 0.1.8
Hey All -- PICO-8 0.1.8 builds are now live on Lexaloffle and Humble! Note that there was no 0.1.7 release for Desktop; there were in-development versions of 0.1.7 released early for web and Pocket C.H.I.P. to resolve pressing issues, so I'm calling this 0.1.8 to keep version numbers in sync across platforms. New stuff:

60 FPS support

This breaks the 'every cart runs the same on all PICO-8s' rule of PICO-8's design philosophy a little bit, but I think it's worth it! On all of the desktop host platforms, it is now possible to make cartridges that display and update at 60 frames per second instead of 30. You don't get any more CPU though, so that means half the usual CPU allowance per frame. From the manual:

:: Running PICO-8 at 60fps

If _update60() is defined instead of _update(), PICO-8 will run in 60fps mode:
  - both _update60() and _draw() are called at 60fps
  - half the PICO-8 CPU is available per frame before dropping down to 30fps

** please note that not all PICO-8s support 60fps. On machines that do not support it, _update60() will instead be called twice per frame and _draw() at 30fps. You can check the behaviour of your program running at 30fps by adding the following snippet to the bottom of your code:

  u60=_update60 _update60=nil function _update() u60() u60() end

Button Glyphs

The two action buttons on the PICO-8 controller are called O (BTN(4)) and X (BTN(5)). To make it easier to print instruction in-game explaining the controls, you can now insert glyph characters directly into strings in your code with Shift - U D L R O X.

Long GIFs

Adjust the maximum GIF length in config.txt or by running PICO-8 with -gif_len n switch, where n is the number of seconds to record for (maximum: 120). The GIF output is not optimized, so you might want to run it through an optimizer to get smaller file sizes.

Custom Menu Items

It is now also possible to add your own items to the pause menu to trigger things like 'RESTART PUZZLE' or 'EXIT TO OVERWORLD'. Here's an example program:


function _draw()

function changecol()
  col = (col+1)

menuitem(1, "change colour", changecol)

The first parameter is the position (1-5) in the menu to insert the item, the second is the item's label, and the 3rd is a function to be called when the item is selected. I opted to keep this simple and quite rigid, so there's no way to have extra stuff going on in the background while the cart is paused, or to re-appropriate the pause button as an in-game button.

Music Exporter

To record a .wav of a PICO-8 tune, first navigate to the pattern you'd like to start from in the music editing mode, then press escape to enter the console and type:


If the song is looping, it will export around 4:30 that you can then manually trim in a sound editing program.

Pre-installed Games

There are now 5 BBS games that ship included with PICO-8, so that it's easy to get up and playing something more than the demo carts, even when internet access is not immediately available. To install them, use INSTALL_GAMES -- they will be accessible from your favourites list in SPLORE. The games are Celeste, Frog Home, Tower of Archeos, Hug Arena, and Dusk Child.

Linux Builds

I've included both statically and dynamically linked versions of the executables for i386, amd64 and Raspberry Pi. The RasPi build still depends on bcm, so it is tricky (impossible?) to get it up and running on Chromebooks.
I plan to look at better Chromebook support at some point, but it will probably have to be during beta. Pocket C.H.I.P. owners, and later on regular C.H.I.P. owners can expect updates too, of course --- but we are still sorting out details and it will take a while. o(_ _)o

Next up, 0.1.9 will be mostly ongoing bugfixes, and improvements to the web player (optimization, fold-out touch controls for mobile, and controller instructions).

Full Changelog:

    Added: 60fps support
    Added: Music exporter
    Added: Custom GIF length (maximum 120 seconds)
    Added: -,+ to navigate sprite tabs, sfx, music patterns
    Added: sfx editor: navigate with home, end, pageup/down, mousewheel
    Added: <, > to modify sfx speed, or click and drag
    Added: Middle mouse button to pan around spritesheet / map
    Added: Shortcut command for splore: S
    Added: Pre-installed selection of BBS cart (use INSTALL_GAMES)
    Added: Warning when saving .p8.png with no label
    Added: (OSX) logging to ~/Library/Logs (viewable with
    Changed: Can not CTRL-S save over a loaded bbs cart
    Changed: Only .p8 files listed by dir() and by splore
    Changed: Command history increased to 256
    Changed: exit() / shutdown() have no effect while running cart
    Fixed: Memory useage (stat(0)) inconsistent across host platforms
    Fixed: Spinny disks shows when reloading current cart with load()
    Fixed: GIF saver does not respect 64x64 / mirrored modes
    Fixed: Miscellaneous multi-line comments / strings issues
    Fixed: Empty map cels cost cpu in mapdraw()
    Fixed: mapdraw() slowdown when drawing bottom half of map
    Fixed: preprocess changes semantics when += and : operators on same line
    Fixed: Identifiers starting with underscore counted as extra token
    Fixed: Saving .png exceeding compressed code limit fails silently
    Fixed: Right-clicking a sprite does not set the currently edited sprite
    Fixed: (Windows) extra space added to pasted lines
    Fixed: spr() expensive when drawn with low negative coordinates
    Fixed: pipe character identical to colon character
    Fixed: (Raspberry Pi) shift key appends a character when entering text
    Fixed: Editor mode buttons are still clickable during cart runtime
    Fixed: When loading a .p8.png file, label is reset and needs to be re-captured
    Fixed: export() does not report failure
    Fixed: mset()'d changes in shared memory not readable via peek() / sget()
    Fixed: cstore() saving edited code
    Fixed: audio pop between patterns during music playback

    Added: menuitem()
    Added: button glyphs in code (shift-L, R, U, D, X, O)
    Added: Customisable data directory (e.g. pico8 -home mydata)
    Added: Web gpio pins: read and write pico8_gpio[] in javscript
    Fixed: SPLORE search doesn't reset
    Fixed: Splore skipping 33rd cart listing after loading more items
    Fixed: Crash when selecting a local binary file in splore
    Fixed: Semicolon can't be used as a list or statement separator
    Fixed: Exported html can not cstore self

21 comments:: post a comment
Posted by zep 2016-06-26 10:41

  PICO-8 Jam #2 Results
The theme for the second PICO-8 Jam was Chain Reaction, and there were 35 entries. Thanks to everyone who contributed and made this jam a another splendid event. I hope you'll join me in congratulating the winning entry, which received a whopping 7.3 PICO-8 star average.. *theatrically opens invisible envelope*

NuSan! With Combo Pool.

Cartridge [#21659#] | 2016-05-29 | Link

As a token of gratitude for laying down this most excellent cartridge, NuSan will be receiving a commemorative cross-stitch based on the cart.

Also highly rated by participants was another disarming production by JTE: Nora's Mouse Chase, and the beautifully chaotic SPACETANK 9000 by arnodick.

You can play all of the entries by clicking on this montage:

That was fun -- let's do it again sometime soon!

15 comments:: post a comment
Posted by zep 2016-06-06 06:11

  PICO-8 Jam #2: Chain Reaction

If you'd like to take part in P8JAM2, please select one or more themes by clicking on the PICO-8 star next to it (you need to be logged in). You can change it anytime before the 24h voting phase ends -- at 00:00 PST on Saturday the 21st. Check out the jam thread for more details.

Edit: times's up! The winning theme is Chain Reaction. You have 9 days! Good luck!

40 comments:: post a comment
Posted by zep 2016-05-20 03:00

  New Website and Player Layout
Hey All

I'm in the process of simplifying the website a little. In particular, I wanted to improve the experience of playing cartridges in threads by removing clutter. They now look more like a page dedicated to the cart:

- The player starts open
- There's a big obvious play button and large thumbnail
- There's no banner at the top of each page

Cartridge [#20430#] | 2016-05-11 | Link

I removed the PLAY buttons from the thread previews, and autoplay, as I think they're no longer needed -- the whole playable region of a cart is now visible without scrolling after opening the cart's thread, and it's more obvious to new visitors what to do next.

There are still a few small things to finish, but let me know what you think of the new layout, and if there's anything that bugs you.

15 comments:: post a comment
Posted by zep 2016-05-17 16:25

  PICO-8 Jam #2
Time for another jam!  EDIT: The theme is Chain Reaction.

and... that's time! Thanks everyone who contributed a cartridge! If you submitted something with the p8jam2 tag, you can now rate other p8jam2-tagged carts at the top of the cart's thread.


If you'd like to continue working on your cartridges, feel free -- but please leave the compo version at the top of the p8jam2-tagged threads until voting finishes in one week (June 5, 24:00 PST). Good luck!

Cartridge [#20430#] | 2016-05-11 | Link

Same deal as last time, except with some limited theme voting:

Duration: The Jam will take place from 00:00 PST on Saturday the 21st of May 2016 and will finish at 24:00 PST on Sunday the 29th. So, it spans 2 weekends and 5 weekdays. You can spend as much or little time on your carts as you like. Tiny silly cartridges are more than welcome.

Theme: As is customary with other jams, a theme will be posted at the start and the goal is simply to make a cart (or some carts) during the jam that reflect your interpretation of the theme. Any type of cartridge is ok: games, toys, demos, music carts or pixels.

This time, the theme will be selected by a small twitter poll that begins 24 hours before the jam starts.

Submitting: To submit or update a jam cart before the deadline, just tag it with p8jam2. You can update your cartridge as often as you like before the deadline.

Voting: Jam participants will be able to use a voting widget on all p8jam2-tagged carts, and exactly 1 week after the jam finished, ratings will be tallied.

There will be a small mystery prize for the highest rated cart, but you should enter for glory and honor (or just for kicks).

During the jam, you'll be able to view all carts and posts tagged with p8jam2.

Rules: Teams / collaborations are allowed, in which case you should nominate one user to be the submitter (and voter). Re-using existing PICO-8 cart material is allowed as long as it is ok by the author, and that the carts are publicly available before the jam starts. Submissions should be mostly new material created during the jam, but it's ultimately up to other participants making ratings to decide what's cool and what's not.

24 comments:: post a comment
Posted by zep 2016-05-11 09:06

  PICO-8 is Coming to PocketC.H.I.P.!

If you're looking for a complete portable PICO-8 solution, good news! PICO-8 is going to ship pre-installed on Next Thing Co.'s upcoming PocketC.H.I.P. -- a complete portable mini-computer with built-in storage, wifi, keyboard, battery, touchscreen and everything else PICO-8 needs! The last few months, I've been working closely with the team at Next Thing Co. to create "PICO-8 C" -- a fully functioning and compatible edition designed to integrate nicely with NTC's hardware and software. It will be available to Kickstarter backers, or you can also pre-order one for just $49 bucks.

You can read more about the PocketC.H.I.P. over at

37 comments:: post a comment
Posted by zep 2016-05-03 09:19

  PICO-8 0.1.6
Here's 0.1.6! You can download it from your updates page while you're logged in, or from your Humble Store Library. Just a reminder, that if you're a Voxatron alpha customer, you also own PICO-8! (it should show up automatically in both places).

By far the biggest change is the addition of SPLORE, a complete bbs and local cartridge explorer. You can run it by typing SPLORE, or start PICO-8 with "pico-8 -splore". If you plug a joystick in and auto-boot into splore, it's possible to navigate everything using only the 6 buttons + menu button.

This version also has a lot of new data storage functionality. Cartridges can cstore() to themselves in order to save extra data, and this is now officially supported on the web, so don't feel like it's a weird hack that's going to break! (actually it might break, but it's supported, so I'll fix it :p).  Here's a demo:

Cartridge [#19844#] | 2016-04-17 | Link

Notes on cartridge storage, and the full change log:

  Cartridge Data

  Each cartidge is able to store 64 numbers (256 bytes) of persistent data
  on the user's PICO-8 (rather than on the cart itself). This can be used as
  a lightweight way to store things like high scores or to save player progress.
  If you need more than 256 bytes, it is also possible to write directly to the
  cartridge using cstore(). The disadvantage is that the data is tied to that
  particular version of the cartridge. e.g. if a game is updated, players will
  lose their savegames.
  Another alternative is to write directly to a second cartridge by specifying
  a fourth parameter to cstore(). This requires a cart swap though (so is
  slightly slower), and leaves data-cart litter when run from a local folder.


    Added: SPLORE local & bbs cartridge explorer
    Added: setmetatable(), cocreate(), coresume(), costatus(), yield()
    Added: Spinning cart icon to show when a cart is swapped / written to
    Added: Permanent storage when carts played in a browser
    Added: Adjustable aspect ratio (-aspect 420 for 1:1)
    Changed: Lua memory limit: 1024k (was 512k)
    Changed: Music channel now resumes after being clobbered by an sfx
    Changed: Arpeggios double speed when SFX speed <= 8
    Changed: Exceeding compressed code limit does not block saving in .p8 format
    Changed: spr() half as expensive, to be consistent with map()
    Changed: Fractional hex number notation: 0x0.3 == 0x0.3000, (was 0x0.0003)
    Changed: : operator doesn't count as an extra token (same as .)
    Changed: cstore() writes directly to disk
    Changed: cstore(), reload() return number of bytes read / written
    Changed: save() while running does nothing. (use cstore() instead)
    Changed: load() while running loads and runs the specified cartridge
    Fixed: Small pops in audio mixer caused by sound wave discontinuities
    Fixed: HTML5-exported sound clicks badly under Chrome
    Fixed: Display palette is not oberserved when exporting GIFs
    Fixed: Rapid keypresses causes duplicate readings in tracker & text editor
    Fixed: += inside comments breaks preprocessor
    Fixed: sspr() cpu cost the same when clipped
    Fixed: cartdata() with bad parameters crashes
    Fixed: EXPORT from commandline can not be used without brackets and quotes

42 comments:: post a comment
Posted by zep 2016-04-17 18:48

  PICO-8 for Raspberry Pi

A build of PICO-8 0.1.5 is now available for Raspberry Pi! Check your updates page or look in your Humble library under the Linux downloads section.

It works in fullscreen under either X Windows or directly from the terminal (using directfb). For speed, the default resolution is 280,280; you can set this with the -width and -height switches:

pico8 -width 720 -height 480

Known issues:

- After quitting, keypresses during the session are sometimes dumped to terminal (annoying if you quit by typing shutdown instead of CTRL-Q!)
- Freeze on exit (observed on a zero)
- Some math-heavy cartridges (e.g. /demos/cast.p8) don't run at full speed on first generation models.

There are two builds included in the archive. pico8 is compiled statically (so no need to install SDL2), and pico8_dyn dynamically loads libraries, in case you'd like to supply your own SDL2.

Have fun, and please post pictures if you get pico-8 running on any cute displays!

44 comments:: post a comment
Posted by zep 2016-02-26 17:14

  Tokyo Demo Fest 2016

This weekend (20th, 21st) I'll be at Tokyo Demo Fest 2016, giving a short PICO-8 seminar at 3pm on Sunday, and also making a wee demo for the Wild compo (also in PICO-8, naturally). If you're in Tokyo, come along! The venue is larger than last year -- 3331 Arts Chiyoda, which is around 8 minutes walk from Akihabara station. You can find the registration page and more information here.

Here's a 4k demo from last year (it won the combined pc section):

6 comments:: post a comment
Posted by zep 2016-02-14 12:06

  PICO-8 0.1.5
Hey All

Here's a quick update with music copying and keyboard configuration for controller buttons.

To configure buttons, use KEYCONFIG from the commandline.

To copy  a song from one cartridge to another:

1. In the song editor, click on the start pattern and then shift-click on the end pattern that you want to transport. They should light up green.
2. Control-C to copy the pattern data, along with the sfx they point to.
3. Load the cart you want to paste into, open the song view and click on the pattern index you want to paste to.
4. CTRL-V to paste. When pasting a song, any SFX that are needed are written to unused slots and then the pattern indexes are adjusted accordingly.


    Added: Keyboard configuration for player buttons (KEYCONFIG)
    Added: Music tracker select / copy / paste
    Added: Single-level undo in audio tools
    Added: Live preview of frequencies in sound editor
    Fixed: Command history extends past last reboot
    Fixed: Sfx exporter broken
    Fixed: Slashes at end of path resolve to double slashes
    Fixed: Load cart from commandline under Windows

15 comments:: post a comment
Posted by zep 2016-02-05 11:59

:: More

Join the Lexaloffle Newsletter:
Follow Lexaloffle:
More Indie Games:
Generated '16-08-28 08:37 / 0.064s / 1572k     About :: Contact :: Updates :: Terms of Use