Log In  

Picotron FAQ

What is a Fantasy Workstation? How Does Picotron Differ From PICO-8?

Although Picotron is conceptually similar to PICO-8 -- an imaginary, characterful machine that you can make shareable things for -- it aims to be a more practical development environment with one foot in the real world. It feels like a workstation that might have existed in the past, but is not modelled after any particular moment in history.

Picotron has a large display and cartridge capacity, a powerful audio synthesizer (PFX6416), and everything is built on top of a flexible workstation-like stack of components. There are no "hard-coded" built-in tools like in PICO-8; all of the software bundled with Picotron is itself made in regular Picotron userland. The design of the system favours flexibility and possibility; it is able to carry a broad range of software, from goofy desktop toys and widgets to specialised tools and commerical games.

In other words, Picotron does not concern itself with cosiness the same way that PICO-8 does. There is much greater freedom to get lost making weird, large and complex things, and that is a doubled-edged sword. Labelling Picotron as a 'Workstation' is both a promise and a warning!

Is Picotron Compatible with PICO-8?

Yes and no. Picotron supports PICO-8 style shorthand syntax, almost the whole API, and other compatibility features that make it relatively easy to port PICO-8 cartridges. However, it is not designed to run PICO-8 carts out of the box, because the underlying machinery is quite different. For example, Picotron uses 64-bit floating point numbers, and so can only approximate PICO-8's fixed point math behaviour. The underlying graphics and audio pipelines are also quite different even though the API functions used to manipulate them are very similar with PICO-8.

What Does a Picotron Cartridge Look Like?

A cartridge is functionally the same as a folder containing all of the .lua source files and resources (gfx, maps etc) that are needed by the cartridge (even though it is stored as a single .p64 file in reality). In the following tiny example, main.lua creates a 240x120 window with a title, and draws a star sprite found in 0.gfx 10 times.

// main.lua:
function _init()
  window{
    width = 240,
    height = 120,
    title = "Greetings"
  }
end

function _draw()
  cls(16)
  print("Hello from Picotron!", 70, 55, 7+(time()*4)%2)

  for i = 1, 10
    spr(1, 
       112+cos(time()/4+i/10)*80, 
        52+sin(time()/4+i/10)*40)
  end
end
  // 0.gfx:
  // Output:

Can I Use Picotron to Make Large Games?

For some definitions of "large", yes! Carts exported as stand-alone binaries/html do not have a size limit except for fitting in RAM, (32MB) and they can pull in an arbitrary amount of extra data via fetch(). Cartridges saved in .p64.png format however are limited to 256k of (compressed) data. This format is intended for posting cartridges on the Lexaloffle BBS, and targets small and medium sized projects. Picotron has some basic compression support for sprite and map data, so 256k can still mean quite a substantial project depending on the type of game and art style.

Can I sell my Picotron Cartridges?

There is no official Picotron store, but cartridges can be exported and distributed on other storefronts like itch.io or Steam. The Picotron license allows using html and binary exports of your cartridge however you wish, as long as you have permission from any other authors of the exported cartridge, and your cart does not load and run other carts. See: license.txt

Why Can My Exported Cartridge not Run Other Cartridges?

The exporters are targetted at authors wishing to export and distribute their own work, and this limitation aims to reduce unwanted exploitation of the Picotron ecosystem. It is still possible to bundle multiple .p64.rom cartridges together inside an export and run them with create_process(); just make sure you have permission from all of the included cartridges' authors first.

What is the Graphics Format?

Picotron has a 480x270 6-bit display, so 64 colours can be displayed at any one time. The palette can be defined with arbitrary RGB values; there are no hard-wired colours like PICO-8. There is a default system palette of 32 colours, with 32 empty slots, that is a combination of the standard PICO-8 palette and 16 extra colours. The extra colours are not the secret PICO-8 palette, but are intended to function nicely when recombined with the standard 16. Additional colours can also be displayed in the same frame by defining up to 3 alternative palettes and switching between them per scanline.

Default System Palette (32 colours): // this is likely the final version

Picotron's draw state includes a 4k colour table: a 2d 64x64 lookup table is observed by all Picotron gfx functions. Every time a pixel is drawn, the value written to video memory is determined by looking up the table using 2 indexes: the colour of the target pixel, and the draw colour. This can be used to implement effects like shadow rendering, fog, additive blending, and per-pixel clipping.

What kind of Audio does Picotron support?

Picotron has its own particular sound format: the PFX6416 is a synthesizer that aims to be lightweight enough to play in realtime on the web and have tiny synth definitions that can sit comfortably in a 256k cartridge. It is also very flexible: instruments definitions are a tree of "nodes", each one either generating or modifying a signal sourced from a wavetable, and then sequenced as notes in tracker-like format. A total of 64 nodes can be active across 16 channels. Raw audio data playback is also possible by feeding i16 data into wavetables if you really want to.

Messing around with the instrument editor:

Which Platforms does Picotron Support?

Currently Picotron can ran on (and export to) Windows, Mac, Linux (x86-64), and HTML5/wasm. Exports work from any machine. e.g. you don't need a Mac to export to Mac.

Longer term, Picotron's runtime will be made available as a C library that depends only on a small amount of OS-specific code, and uses SDL2 to implement this by default. Licensing for this is TBD, but the focus will be on allowing cartridge authors to port and customise their carts for additional platforms.





< Picotron Home