PICO-8
PICO-8 is a virtual machine and game engine created by Lexaloffle Games. It is a fantasy video game console[2] that mimics the limited graphical and sound capabilities of 8-bit systems of the 1980s. The goal of this is to spur one's creativity and ingenuity in producing games, and avoid being overwhelmed with the many possibilities of modern tools and machines. Such a design also allows PICO-8 games to have a familiar look and feel.[3]
![]() | |
Developer(s) | Lexaloffle Games |
---|---|
Initial release | April 2015 |
Operating system | Windows, Mac OS, Linux |
Platform | PC, Raspberry Pi, HTML5 (player only) |
Included with | PocketCHIP[1] |
Available in | English |
Type | Virtual machine, Game engine |
License | Proprietary |
Website | lexaloffle![]() |
Notable games released for the system include the original version of Celeste, which was created in four days as part of a game jam.
Capabilities
The PICO-8 program integrates a Lua code editor, sprite and map creation tools, and an audio sound effect and music editor. The program can load games saved locally on a computer, in the form of text or as specially encoded .png images. The interface also supports a splore mode, where games uploaded to the BBS can be previewed and then played in the PICO-8 program. The PocketCHIP miniature computer shipped preloaded with PICO-8.[4]
PICO-8 games, as well as the program's interface itself, are limited to a 128x128 pixel, 16-color display, and a 4-channel audio output.[5]
The PICO-8 palette contains the following colors:
Number | Hexadecimal RGB value | Name |
---|---|---|
0 | #000000 | Black |
1 | #1d2b53 | Dark blue |
2 | #7e2553 | Dark magenta |
3 | #008751 | Dark green |
4 | #ab5236 | Brown |
5 | #5f574f | Dark gray |
6 | #c2c3c7 | Light gray |
7 | #fff1e8 | White |
8 | #ff004d | Red |
9 | #ffa300 | Yellow-orange |
10 | #ffec27 | Yellow |
11 | #00e436 | Green |
12 | #29adff | Cyan |
13 | #83769c | Indigo |
14 | #ff77a8 | Pink |
15 | #ffccaa | Peach |
The following colors can be accessed by entering specific instructions:
Number | Hexadecimal RGB value | Name |
---|---|---|
128 | #291814 | Ultra dark brown |
129 | #111d35 | Midnight dark blue |
130 | #422136 | Dark maroon |
131 | #125359 | Ultra dark green |
132 | #742f29 | Dark brown |
133 | #49333b | Dark purple |
134 | #a28879 | Dark saturated tan |
135 | #f3ef7d | Bright yellow |
136 | #be1250 | Dark red |
137 | #ff6c24 | Orange |
138 | #a8e72e | Green-yellow |
139 | #00b543 | Dark green |
140 | #065ab5 | Blue |
141 | #754665 | Purple |
142 | #ff6e59 | Red-pink |
143 | #ff9d81 | Red-peach |
Development
Coding on the PICO-8 is accomplished through a Lua-based environment,[6] in which users can create music, sound effects, sprites, maps, and games.
Users are able to export their games as HTML5 web games or upload their creations to Lexaloffle's official BBS where other users are able to play the games in a web browser, and view the source code.[7] Pico-8 games can also be exported to "binaries", which will run on Windows, macOS, or Linux.[8]
Adoption
The release of PICO-8 attracted the attention of programmers and video game developers who enjoyed the challenge of developing under these limitations, and spurred the development of similar game engines with intentional retro-style limitations. These engines are now commonly dubbed "fantasy consoles", based on a definition of the term on PICO-8's website, and roughly simulate the strict limitations of old game consoles and computers. Among these are TIC-80, which styles itself as a "fantasy computer," and Pixel Vision 8, which allows the user to specify the simulated hardware limitations they wish to develop under. The development of fantasy consoles, as well as development of games for them, has evolved into its own, almost exclusively hobbyist, sub-community of game development and programming.
PICO-8 has also seen interest among the demoscene, due to its harsh restrictions attracting programmers and musicians who wish to make retro-style demos for the console.[9][10][11]
PICO-8 gained additional attention in 2018 with the release of Celeste. Originally created as a PICO-8 game for a game jam, Celeste Classic became one of the most popular games on the PICO-8 BBS, prompting the developers to expand the concept into a more expansive, fully realized game. The original PICO-8 version of Celeste is fully playable as an easter egg in the full version of the game.
Releases
PICO-8 releases | ||
---|---|---|
Version | Date | Key features |
0.0.1 | Unreleased | First alpha.[12] |
0.0.2 | Unreleased | Player 2 support. Boot sequence. Windows and 64-bit Linux builds. CPU cost of API functions. Memory mapping. Copy and paste support for graphics data.[12] |
0.0.3 | Unreleased | Map selection and stamp tool. Palette mapping. Memory mapping for audio data. PNG cart format.[12] |
0.0.4 | Unreleased | "Jelpi" demo cartridge. Joystick support. Undo and redo support in code editor. Scroll wheel support for code editor. Additional API - btnp.[12] |
0.0.5 | Unreleased | Search and replace support for code editor. Unary operators. Additional API - srand, time, band, bor, bxor, bnot, shl, shr, dir, help.[12] |
0.1.0 | 19 Apr 2015 | Initial public release. "Hello" demo cartridge. Keyboard shortcut to run cartridge. Consistent CPU costs.[13] |
0.1.1 | 12 Jun 2015 | GIF recording. Token counting. Freeform sprite and map editing. Additional API added - sqrt, atan2, sub. Palette mapping. Keyboard shortcuts for saving and loading.[14] |
0.1.2 | 2 Oct 2015 | HTML5 exporter. 8-player joystick support. Persistent cartridge save data. Additional API - pairs, printh.[15] |
0.1.3 | 15 Oct 2015 | Bug fix release. Fixed inaccessible Lua standard library. Paste into command line support.[16] |
0.1.4 | 2 Jan 2016 | Changes to token counting. Import/export of spritesheet and sound effects. Added filename parameter to external cartridge access. Additional API - assert, type.[17] |
0.1.5 | 5 Feb 2016 | Keyboard configuration. Copy and paste support in music tracker. Was the first release to support Raspberry Pi.[18] |
0.1.6 | 7 Apr 2016 | Integrated BBS and local cartridge explorer "SPLORE". Additional data storage functionality. Additional API - setmetatable, cocreate, coresume, costatus, yield. Persistent data support in HTML5 builds.[19] |
0.1.7 | Unknown | Development-only build for web and PocketCHIP issues. Button glyphs. Additional API - menuitem.[20] |
0.1.8 | 26 Jun 2016 | 60 FPS support. Custom GIF length, up to 120 seconds. Custom menu items. Music exporter. Five pre-installed games. Linux builds.[20] |
0.1.9 | 11 Sep 2016 | Export cartridges to clipboard. Raspberry PI GPIO support. 60 FPS HTML5 support. Pixel-perfect scaling. "Jam" category added to BBS and SPLORE. Alternative editor colors.[21] |
0.1.9b | 6 Oct 2016 | Bug fix update. Updated SDL2 version on Windows. Alternative glyph entry mode.[22] |
0.1.10 | 7 Dec 2016 | Multicart exporter. Glitchy reset. Additional demo cartridges. Code editor improvements. Raspberry Pi installation improvements. Cart label support in .p8 format. Additional API - extcmd.[23] |
0.1.11 | 9 Nov 2017 | Core functionality is feature complete. Binary exporter. SFX instruments. Fill patterns. Tabs added to code editor. Command line script integration. HTML template support. Binary notation support. Load cartridges directly from the BBS. Changes to pre-existing API functions. Additional API - tostr, tonum, ls, getmetatable. New stat parameters.[24] |
0.1.12 | 16 Apr 2019 | Unlimited undo. Import external files with #INCLUDE. SFX snippets. HTML export template. Raspberry Pi and WebAssembly export support. Serial communication support for Raspberry Pi. New code editor shortcuts. Changes to pre-existing API. Additional API - serial, peek2, poke2, rawset, rawget, rawlen, rawequal, next. Additional command line parameters.[25] |
0.2.0 | 8 May 2020 | First beta release. Full 8-bit character set. Audio effect organizer. Bitwise operators. Adjustments to CPU and token capacities. Custom button repeat delays. Shape drawing tools. Map tile moving. ZIP export support. Additional API - tline, pack, unpack, ord, chr, ipairs.[26] |
0.2.1 | 4 Jul 2020 | Oval support. Additional serial I/O. Drag and drop support. Binary storage. HTML iOS touch support. Changes to existing API. Additional API - oval, ovalfill, split.[27] |
0.2.2 | 15 Feb 2021 | Audio filters. Character control code standard - P8SCII. Custom font support. Sprite fill pattern support. Locked mouse pointer. Custom menu control. Map export. Memory poke functions support multiple values.[28] |
0.2.2c | 3 Mar 2021 | Series of bug fix release. Export source code to image.[29] |
0.2.3 | 6 Sep 2021 | Fixed runtime issues. "Lucky Draw" added to SPLORE. Highlight live token count. Print statement shorthand. Newly formatted user manual. Export to 32kB file. Support for numbers larger than 16-bit.[30] |
0.2.4 | 3 Dec 2021 | Expansion of base RAM to 64kB. Video sprite map memory remapping. Improved audio sync. Pre-existing API changes. Increased support for various cartridge formats. 64-bit Raspberry Pi builds. Security vulnerability patched, BBS uploads limited to 0.2.4 and above. Restoration of text-only version of the manual.[31] |
References
- "Next Thing Co. PocketC.H.I.P. Documentation". Archived from the original on 2018-04-20.
- Debock, Arnaud (August 2015). PICO-8 Zine #1. Retrieved November 17, 2016.
- "PICO-8 website". PICO-8 Fantasy Console. Retrieved 12 March 2020.
- "PocketCHIP online documentation". Next Thing Co. Archived from the original on 8 April 2018. Retrieved 19 January 2017.
- Hossam, Mostafa (August 16, 2016). "Alone in the Dark is still creepy in its brightly-colored remake". Kill Screen. Archived from the original on November 17, 2016. Retrieved November 17, 2016.
- Wawro, Alex (May 3, 2016). "PICO-8 'fantasy console' to become an actual handheld console -- sort of". Gamasutra. UBM TechWeb. Archived from the original on November 17, 2016. Retrieved November 17, 2016.
- "PICO-8 BBS". Lexaloffle. Retrieved 20 February 2019.
- "PICO-8 Fantasy Console". www.lexaloffle.com. Retrieved 2020-05-15.
- "Puroresu No Seishin, a demo made with Pico-8". Lexaloffle. Retrieved 12 March 2020.
- "Ad Astra". Lexaloffle. Retrieved 12 March 2020.
- "PICOCHAK". Lexaloffle.
- "PICO-8 Version History". Lexaloffle. Retrieved 4 April 2022.
- "Hello World". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.1". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.2". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.3". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.4". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.5". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.6". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.8". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.9". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.9b". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.10". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.11". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.1.12". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.2 (Beta!)". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.2.1". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.2.2". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.2.2b". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.2.3". Lexaloffle. Retrieved 4 April 2022.
- "PICO-8 0.2.4". Lexaloffle. Retrieved 4 April 2022.
External links
- Official website
- PICO-8 and the Search for Cosy Design Spaces: a talk by Joseph White, PICO-8's creator