A downloadable tool for Windows and macOS

PICOSYNC acts as a bridge between your favorite coding/pixel art software and PICO-8. Changes to external files are merged into PICO-8 cart files automatically as you work.


How it works

PICOSYNC monitors Lua files and a sprites.png file in a folder containing a PICO-8 cart file (.p8). When a monitored file changes, the Lua code and sprite data are merged into the cart file which can then be reloaded in PICO-8 by pressing ctrl+r as usual.

  • Edit Lua source code in your favorite code editor in separate files.
  • Edit sprite data in your favorite image editor.
  • Automatically merge changes into PICO-8 cart files while preserving Map, Sound, and Music data. PICOSYNC will also create a backup before each merge.
  • Custom palette remapping allows mixing PICO-8 standard colors with colors from the secret palette.

What is a project?

A project is a folder that contains a .p8 file, a sprites.png file, zero or more Lua source files, and a picosync.json config file. The sprites.png and picosync.json files are created automatically when a project is loaded if they don't already exist.

How to load a project?

Drag a project folder onto the PICOSYNC window. By default the PICO-8 file that data will be merged into is <foldername>.p8 but this can be overwritten in the picosync.json config file (see below).


The picosync.json file

{
    //override the file name of the PICO-8 cart to merge into
    "picoFile":"",
    
    //use a custom palette to remap colors. useful for accessing secret palette
    "customPaletteFile":"palette.png",
    
    //a list of source files to merge sequentially
    "sources":[
        "main.lua",
        "render.lua"
    ]
}

You must add any new Lua source files that you create to the sources list in order for them to be monitored for changes and merged into the PICO-8 cart.

If no source files are listed, PICOSYNC will leave the Lua section of the cart unchanged. This is useful if you only want to only merge sprite data while coding in PICO-8. Likewise, transparent pixels in sprites.png will leave the corresponding pixel in the cart unchanged.

StatusReleased
CategoryTool
PlatformsWindows, macOS
Rating
Rated 5.0 out of 5 stars
(2 total ratings)
Authorkeen
Made withLÖVE
TagsPICO-8

Download

Download
picosync-windows.zip 4 MB
Version 1.108 Apr 15, 2020
Download
picosync-osx.zip 5 MB
Version 1.108 Apr 15, 2020

Development log

Comments

Log in with itch.io to leave a comment.

Banger

Nice! Btw, how do I mute it?

btw pico-8 now supports #include main.lua; see https://www.lexaloffle.com/bbs/?tid=33883

the sprite-merging (and especially the custom palette stuff) seems like it would be very useful – I’ll have to try this tool out sometime!

Is there a possibility to have this for Linux?

Windows version runs on wine, but it doesn't recognize the linux path for the carts

UwU

keen said on twitter that the mac app contains the love file that can be run with löve2d

(1 edit) (+1)

This looks amazing! I'm not quite clear on how the custom palette works, though - could you add some documentation for how to use it? I'm also not clear on how to do map work with this...

Can’t run it in macOS Mojave 10.14.6 (Early 2015). :(

Sounds like an amazing tool, thought.

(+1)

Unfortunately OSX gatekeeper causes lots of problems distributing free software. If you have the gatekeeper turned off and do the right click > open thing and still have issues, then I'm not sure whats wrong. You could try downloading the love2d app from https://love2d.org/, then grab the .love file from picosync.app/Contents/Resources/picosync.love and drag and drop it onto the love2d app.

https://love2d.org/wiki/Getting_Started

Hey Keen, thank you for the reply!

I just tested it again, downloading the latest version, and I can confirm it works now! For anyone that had any problems, I’m on macOS Catalina 10.15.6 now, same computer.

Gonna use it in my next Pico 8 project!

(3 edits)

Very useful tool, I'm new to PICO-8 and this is exactly what I was looking for


Edit: It says "Compiler.lua:52: attempt to index local 'section' (a nil value)" inside Picosync whenever I save my project

Edit: Nice, thanks!

(3 edits)

I just pushed a new version that probably fixes this. Also another related issue.