Having owned an Atari 2600 as my first ever games machine, and having cut my programming, art and game design teeth on the humble Commodore 64, I’ve always held a real affection for giant pixels, single-digit colour palettes, 3-channel chiptunes and generally all things ‘underpowered’. It’s why I’ve often cited the C64 demoscene as an example of constraints giving rise to focused, boundary-pushing creativity, why I love trying to replicate the effects of that era on CodePen, and why I love the concept of #LOREZJAM and other restrictive community events.
GOTO, and all the other trappings of my nerdy youth. Everything else one may want for even basic programs - clearing the screen, line and arc functions, text rendering, scrolling, regions, etc - would need to be built up as library functions using these very limited tools.
I imagined really flexing my core programming skills as I first created, then worked to overcome, the strict limitations of this ‘imaginary computer’. Then I Googled something recently and discovered that such a concept is actually known as a ‘fantasy console’, and that it’s already been done.
Everything Old Is New Again
The PICO-8 describes itself as ‘like a real-world console, but without the inconvenience of actual hardware’: a program which behaves as if it’s a NES-era games platform with the attendant restrictions on sound, graphics, CPU, memory and program size. It has a Canvas-powered low-res screen, limited palette, basic sound, yet boasts a built-in Lua code editor, sprite/tilemap tools and so on, meaning you could theoretically develop a PICO-8 game or demo right within the ‘machine’ itself. It even ‘boots up’ like a real console, with some visual garbage giving way to a splash/loading screen in gloriously pixellated text.
# specs - display: 128x128, fixed 16 colour palette - input: 6 buttons - cartridge size: 32k - sound: 4 channel, 64 definable chip blerps - code: lua, max 8192 tokens of code - sprites: single bank of 128 8x8 sprites + 128 shared - map: 128x32 8-bit cels + 128x32 shared
Programs are saved and distributed, amazingly, as PNG files that visually look like a game cartridge with label, screen grab etc, but with the actual program code embedded within the PNG file - an incredible, demoscene-worthy bit of hacky verisimilitude. There is a wealth of internal and external tools, documentation resources and hacks available for it, just like genuine retro consoles. It runs right in the browser, can be stuck on a bootable USB or Raspberry Pi for a more authentic hardware-based experience, and best of all is actually being made available as a legit hack-friendly handheld.
This has been around for over a year, with a vibrant community and ever-growing catalogue of games and demos. To be blunt, I can’t fucking believe I’m only discovering this now. It speaks to all my interests and fetishes in the world of retrogaming while also directly triggering the ‘constrained creative’ aspirations of my low-res Canvas/JS concept.
I certainly hope to still do my original idea as a programming exercise, and also because - not to be too much of a hipster - the PICO-8 clearly isn’t constrained enough for my tastes. But I just love this idea of modern browser and software development birthing the perfect ‘imaginary’ game console that we never had in our youths. It’s very much like recent synthwave/newretrowave electronica that sounds like the 80s we deserved - all neon chrome and cyborg sex under Sega sunsets, and Akira-style corporate-shadowed street menace - instead of what we actually got, which was The Smiths.
Watch this space in the near future for the fruits of my lo-res Canvas experiement, but frankly I’ll be too busy learning Lua and trying to make a PICO-8 roguelike to worry about it for a while, most likely.