Pico-8 Virtual Fantasy Console is an idealized constrained modern day game maker
hanselman.com
hanselman.com
There are tons of these little "retro console" devices lately—the Bittboy, LDK-game, etc.—that people just treat as emulation devices, when they actually have hidden potential for running native game software as well, with more power than you can get out of them through an emulator. (They're actually usually as powerful as the original PSP, but only have the GPU capabilities of the GBA, making these consoles into a sort of unique alternate-history blend of 2001-2004 era gaming.)
But no games are being written directly for these devices, because they're all slightly-differently specced: different screen-sizes; different amounts of RAM; etc.
A hypothetical PICO-16 "platform", in my mind, would basically be an abstraction over the cross-section of native capabilities of these devices (with maybe some additional tasteful constraints on top), while still allowing to take advantage of the full hardware in a way you can't by just e.g. writing SNES or GBA homebrew.
Maybe the "platform" could even come in a few separate "profiles", where games could be either targeted to a specific minimum profile, or could respec themselves to the highest profile supported (sort of like how Z-Machine games work in detecting the VM's multimedia capabilities.) Take it far enough and PICO-8 could just be the base PICO-16 profile!
One of the things I found myself doing with PICO-8's setup was prematurely optimizing code for size, which presented a new kind of puzzle(how to express things in fewer Lua tokens) but didn't feel good in terms of authoring finished work(I made a nice 3D maze wireframe renderer - and then stopped there). So with my own fantasy console I'm prioritizing other things beyond size/retro aesthetic, while still thinking about limitations. "Diversity" has become one of those things: you will have some ability to swap out graphics and sound cores, and use a variety of programming languages. The fixed spec approach makes it harder to make each part really distinctive and not just another "tiles and sprites and chiptunes" doddle.
Since I made the foolish decision to support 3D cores it's taken a while to get a renderer going, though, and I finally decided to speed things up by releasing with 2D first and adding more later.
Current release plan is to get some builds out late August/early September, both free and paid(paid simply gets the updates faster). Then later on, I can think about plans to open up development. PICO-8 took about two years from conception to release and I'm getting to around the end of year one of mine, and just about everything has had multiple iterations, but the first release will be a basic "run at the command line, code in your text editor, store assets in the file system" kind of environment. Releasing means I think the basic design is mostly settled, so after that all the UI and IDE functions will become possible.
The way I imagined it working was a simple instruction set emulator that mmap()ed ROM images and had a fixed RAM size (in the order of 64k). Have an adjustable resolution, but simple fantasy console style display. Also the option to allow the apps to call host commands.
It would be ideal for things like volume controls, and pop up calculators etc. Maybe a really lightweight Winamp style mpd front-end.
Initially this struck me as an idea when I was hunting for what was eating memory on a 256Meg machine. I found the Volume control (one slider, and a menu dock item) required 4meg to operate.
The CPU in the Playdate prototype runs at 216MHz.[2] The numbers aren't directly comparable, but I'd wager that the Playdate will have _significantly_ more headroom.
In other words, for my needs, TIC-80 is still entirely dominated by just using https://github.com/rust-console/gba to write GBA homebrew in Rust. (And everything has a GBA emulator. Everything!)
A viable PICO-16 platform, to me, would have to offer a clear improvement over the "GBA homebrew in Rust" solution.
(Even if all it is, come to think of it, is the GBA's ARM7TDMI ISA extended with some more hardware registers and instructions, and a PICO-8-like IDE for building those "GBA+" ROMs. Such an approach would come with the benefit that you could build a PICO-16 runtime by just starting with a GBA emulator and adding features. You could even choose encodings for the new ops such that they would look like NOPs to old GBA emulators, making PICO-16 "GBA+" ROMs gracefully degrade into regular GBA ROMs when run on a regular GBA emulator—very much like how Gameboy Color games work, or how SNES ROMhacks and homebrew support the MSU-1 audio chip.)
I've spent a ton of time trying to get into game development only to get stuck in researching the many frameworks, programs, and even the idea of making my own engine. Pico-8 just packs everything you need in it including code editor, mapper, pixel editor, sound editor, etc. so you can focus on making the game instead of figuring out your tech stack. Highly recommend it and well worth the money ($15)
Celeste is a great game. If I remember correctly you can actually play the pico-8 version within the newer version.
The Discord server and Forums are very active and friendly.
Specifically, Helder's Minty Pi[0], or various incarnations of the Game Boy Zero: Kite's Circuit Sword CM3+ AIO PCB[1], RenegadeLab's Game Boy Zero AIO PCB[2], and the always out of stock (but can be found on ebay with a markup) Retroflag GPi Case[3].
[0] https://heldergametech.com/shop/mintypi/mintypi-v3-pcb-kit/
[1] https://sudomod.com/forum/viewtopic.php?f=38&t=8488
[2] https://www.renegadelabs.net/product/gameboy-zero-aio-pro-pc...
[3] https://www.amazon.com/Retroflag-CASE-Raspberry-Zero-Shutdow...
At the end Scott Hanselman has a footnote about building or buying a physical Pico-8 console. One thing that is missing is most Pico-8 consoles focus on the play aspect of Pico-8, not the creation aspect of Pico-8 which is just as important to me if not more so. I own a PocketCHIP and the device is a decent handheld computer, but there are many aspects of it that make it painful to use, not due to the form factor but due to the quality of various components. The keyboard is bad although there are a variety of solutions, including 3D printed covers (https://www.thingiverse.com/glitchpudding/collections/pocket...) or rubber feet (https://androidarts.com/Amiga/PRBOOM.jpg). The quality of the screen and touch is also not great, so it was hard for me to draw pixel art on the device.
I'd like to build a custom handheld computer primarily for Pico-8 development built around this display https://shop.pimoroni.com/products/hyperpixel-4-square, probably using a Raspberry Pi Zero. One of my issues with Pocketchip was that the entire system felt kind of slow\high latency and more compute might be one of the only fixes for that, so rpi zero might not cut it. I'd probably have to print my own case and I still haven't found a great keyboard solution. The best option I've seen is Teensy Thumb keyboard (https://www.pjrc.com/handheld-tactile-switch-keyboard/), but I might go with a standard bluetooth thumb keyboard. If anyone on HN has built a handheld computer or has good resources I'd love to hear about it. My goal is to get something that feels like a Nintendo handheld (Switch, DS, GB) with good feeling physical thumb keyboard and can also be used to draw pixel art.
Cool project btw!
I do think it's very nearly almost too constrained, specifically in the code editor. But, it did it's job. A QBASIC-like interface would be appreciated.
Found it via this list https://github.com/paladin-t/fantasy.
(From the name, I went to read the docs, because I thought they emulated an "ideal" 8-bit processor, too.)
It's always fun to do some low level stuffs in these days.
It's a fun little daydream at least
Pico-8 has the "cartverse," which allows you to link between carts in various ways. It's all centralized around the BBS right now, though.