My review of PICO-8

Originally I was going to briefly explain the console when I upload my Jar Field post in “Show Off”, but decided that I’ll just leave the infodump here and link to it. I tried to give a fair assessment to it based on my experience and comparing it to consoles similar to it

Fantasy console that is unfortunately not open source but with a large community. Its capabilities are an anachronistic mesh of new and old- retro from the surface, but arguably modern where it matters most. It boots directly into a command line, but this is a stylistic choice. Hitting ESC brings up the cart editor, which has a simplistic GUI for writing code and editing other spaces in the ROM like the graphics and sound data. Exterior files may be read in and code taken from them, with use of the PNG format for graphics and data storage. This allows a developer to use their normal code editor if they are somehow not happy with the PICO’s display (a comment which will make sense in the next paragraph). Overall, it is designed to be a challenge for tinkerers, while being simple for beginners.

Graphically, Its 16 base colors harken back to the Apple II or Commodore of the early 80s. This extreme limitation makes most of its library feel consistent, but it is a big artistic hurdle for detailed graphics. Its virtual display is likewise miniscule, at a mere 128x128. It is small even for a handheld system, with less real estate than even a Gameboy. The sprite bank is the same size as the screen at 128x128. The tilemap has 128x32 spaces, with an additional block of the same size sharing space with the sprite bank. These are decent for a retro console, as you will have no trouble fitting in your graphics as far as sprites go. The screen size, colors, and limited tilemap are some of the most stringent of the hard limitations of the console. The greatest downside to the small screen is that the integrated code editor, with its all caps font, fits less columns per line than even an Apple II. Scrolling is supported in both directions, but it is a headache for programmers.

For audio, four 8-bit channels are used. Sound patterns and sequences are created in the provided tracker (with storage for 64 of each). In the hands of an experienced tracker user, it can produce acceptable music. However with its base settings, the sounds coming out of the PICO will often be muted by players. It does not have the clean and crisp character of the NES / Gameboy, nor the complete control of the Commodore’s SID chip. Perhaps the weakest element of the system.

So far, on the surface, we are looking at an rather feeble machine. Its cart size inspires no further confidence. PICO-8’s “cartridge” is rather small, containing 32kb of RAM and 32kb of ROM. Even the humble NES quickly introduced carts with much larger ROM sizes than this, with memory mapper chips on board to load in data as needed. This small size greatly reduces the scope of the games created with PICO-8, especially when looking at modern development environments where games often balloon into the dozens of gigabytes. This architecture is a bit of a weakness, even compared to retro systems of the 80s, and so PICO-8 has a trump card: Lua.

Taking advantage of its existence as a virtual machine, PICO-8 is ferried around on a 2MB Lua RAM speedboat. This single feature makes the tiny console more powerful than even 16-bit retro consoles, and likewise it computes very fast using 16-bit numbers. Drawing shapes from formulas, tracking objects, and doing algebra/trig during each frame is much easier when compared to any the 8-bit systems that it resembles. No sprite flickering when spraying hundreds of bullets on screen. At 30fps, there isn’t much that will cause slowdown. At 60, you still need to be careful, but it runs very smooth for the most part. All of these features combined produce a “retro playground”, the limitations being tough but mostly fair. It has simple and nostalgic graphics with good performance, without the bloat and scope creep of having near infinite storage and CPU to work with.

The size of PICO can be a blessing for those who wish to focus on learning and avoid distraction. With very little experience, I was able to make a game in just a couple months, with most of the time spent learning. Retro enthusiasts and functional programmers may find the challenge of fitting as much as possible into the 32kb rom fun, as they emulate the struggles of developing for a limited platform.

To compare it directly to other “game engines” misses the point. I believe it is very good for learning and as a challenge. It is extremely easy to make a game in- a few minutes in the documentation will yield a simplistic representation of one. Demoscene enjoyers will have fun manipulating the screen with the 2MB of Lua. It is also an impressive prototyping tool, as we saw with Celeste (the original version being created in just 96 hours on the system). It is not a game engine to build a business off of. A 64-bit virtual machine called Picotron now exists, but for now I think that the two will remain solid for hobbyists and learners.

TLDR: PICO-8 is perfect for beginners with relatively small starting ambitions, as well as retro enthusiasts who like homebrew development. Personally, I had more fun with it than anything else I’ve used to make games (and I exclusively have made retro-styled games), but with the tiny square for a screen and mediocre audio capabilities it might not have the juice to go the distance.

-Dinny

2 Likes

I appreciate the write-up! There’s a lot of history here that I’m not very familiar with. I’ve had a passing interest in PICO-8 for a while and it makes sense to me that it might not really have the juice to build a business off of. Like bitsy, it seems a little too limited but it also seems like a fun toy to play with and learn things with.

Yeah. It’s not that you can’t make great games with it if you wanted to, its just that even for a $5 price point its an extremely hard sell for what most buyers would consider a primitive game and you’d still have a lot of competition.

1 Like

Thanks so much for the writeup! Been looking at PICO-8 for years now without ever making something in i.t

1 Like