PICO-8 is a virtual game console. I.e. it's an emulator for an oldschool game console that doesn't exist in reality. It's designed to be easy to code for while maintaining the limits and aesthetics of old game computers
PICO-8 games are, of course, distributed on cartridges. However because it's a virtual console, the cartridges are virtual too: they're PNG files.
Try browsing PICO-8 games here: https://www.lexaloffle.com/bbs/?sub=2&cat=7
Press the play button the play a game right inside the web browser, but be sure to click the little "Cart" link right below the playing area to see what's going on. You'll see it open a little PNG file.
That PNG file is the cartridge. It contains the entire game.
The file format is explained here: https://pico-8.fandom.com/wiki/P8PNGFileFormat. Obviously, because PICO-8 carts are purely digital, the format doesn't need any of the contrast, the error correction features or the orientation markers that QR-codes have. You can't take a picture of a cart with your phone and play it. You need the exact same, byte-for-byte PNG file. But it's still super cool.
So at any point while being copied from person to person, that game data could be lost.
>Naturally, a more accurate value can be obtained by using a bigger program.
That's delightful
That said, I think the PICO-8 ecosystem is a lot cooler than I made it sound :-)
EDIT, try watching this demo for example: https://www.youtube.com/watch?v=UR3MXKIefAI It's a demo, not a game, so not interactive and hence youtubeable. Tell me that isn't cool (and remember, it fits in is cartridge png).
E.g. on https://www.lexaloffle.com/bbs/?tid=29967
Takes you to https://www.lexaloffle.com/bbs/cposts/4/44467.p8.png
(I feel a little evil for even suggesting that)
When I still used my Pebble watch, my favorite watch face was just a QR-code of the time. So to tell what time it is, you have to scan your watch with your phone.
(If you want to take a guess at what I'm referencing, spoiler alert — the URL itself contains a clue: https://web.archive.org/web/20160129014847/http://i.emezeta.... )
Had to add a security exception only to receive
404 Not Found
nginx/1.18.0
:/You could probably use a data: URL to avoid needing a server at all, but if not, the server would just provide a launcher and not host the application code.
(It doesn't need a .NET runtime; it's fully self-contained and runs on Windows as a native app.)
Just print out stickers and put them up at restaurants, stores...
There are some interesting approaches listed at https://news.sophos.com/en-us/2019/10/17/beware-the-square-h...
(small process snapshot sizes and sandboxing capabilities)
Using the WebAssembly VM would be a good alternative for real applications.
And keep in mind, malicious software is going to be challenging, and there are much more clever ways to use QR codes.
E.g., imagine some store that has QR codes on the product aisles to access information on a product via a URL. I make a fake website that spoofs the legit product page, but offers the user a special "Buy online and save 25%" offer, which of course they are very tempted by due to the steep discount.
All the data is stored in the QR code.
https://aaronfrancis.com/2013/remaking-cellphone-snake-in-mi...
That would be the best way to transfer files in physical locations.
[1]: https://apple.stackexchange.com/questions/301563/what-is-the...
[2]: http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=H...
[3]: http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=H...
He also made a video about it: https://www.youtube.com/watch?v=ExwqNreocpg
https://smallbasic.github.io/images/screenshots/mira.bas.png
Unfortunately, scanning large QR codes doesn't seem to work too well in practice :(
...slightly larger than the executable shown in the video because I decided to add a little more functionalityBesides, that binary is small enough that it would be far easier to analyse than the piles of other software you use every day.