In the early days of computing, and well into the era where home computers were common but not particularly powerful, programming these machines was a delicate balance of managing hardware with getting the most out of the software. Memory had to be monitored closely, clock cycles taken into account, and even video outputs had to be careful not to overwhelm the processor. This can seem foreign in the modern world where double-digit gigabytes of memory is not only common, it’s expected, but if you want to hone your programming skills there’s no better way to do it than with the limitations imposed by something like a retro computer or a Raspberry Pi Pico.
This project is called Kaleidoscopio, built by [Linus Åkesson] aka [lft] and goes deep into the hardware of the Pi Pico in order to squeeze as much out of the small, inexpensive platform as possible. The demo is written with 17,000 lines of assembly using the RISC-V instruction set. The microcontroller has two cores on it, with one core acting as the computer’s chipset and the other acts as the CPU, rendering the effects. The platform has no dedicated audio or video components, so everything here is done in software using this setup to act as a PC from the 80s might. In this case, [lft] is taking inspiration from the Amiga platform, his favorite of that era.
The only hardware involved in this project apart from the Pi Pico itself are a few resistors, an audio jack, and a VGA port, further demonstrating that the software is the workhorse in this build. It’s impressive not only for wringing out as much as possible from the platform but for using the arguably weaker RISC-V cores instead of the ARM cores, as the Pi Pico includes both. [lft] goes into every detail on the project’s page as well, for those who are still captivated by the era of computer programming where every bit mattered. For more computing demos like this, take a look at this one which is based on [lft]’s retrocomputer of choice, the Amiga.
That demo is frickin’ amazing.
The real hack is how in the earth he can focus himself learning and build such a long demo with all we saw? That guy is a mental hacker in the first place – and even more if you look all of his projects.
Yeah, I also like miniature setups. Break throughs indeed
An really unbelievable demo he did in 2008 on an Atmega 88:
https://www.linusakesson.net/scene/craft/
It is still amazing and unbelievable today to making a VGA demo on a microcontroller with 1k RAM.
Outstanding.
I saw the thru hole resistors on a paper templated perfboard, I instantly recognized lft’s signature style. Always a joy :)
Indeed, seen the same style on the one sided C64 cartridge https://www.linusakesson.net/hardware/autostart/index.php
BTW that was a nice hack too – using AVR and only one side of cartridge pins to blindly (=no address bus) load code on the fly into C64 RAM
That was pretty clever. It wasn’t completely blind, since he did have a clock and a ROM (cart) select signal, so he could provide data at the proper time. But it’s a cool exercise in working within limitations vs. just assuming that it can’t be done.
I’ve been playing with the 2350 and the pimoroni presto. Very impressed with it’s speed. I’m getting over 2000 flat shaded triangles at 60fps at 480×480 index colour. And the code is just basic C code, no optimisations or coding tricks all one one core too.
This reminds me of my friends enthusiastic work in the early 90s implementing Amiga demo effects on his 486 PC. The tricky part of all that was that the PC just had a VGA graphics card without any kind of graphics co-processors. In opposite on the Amiga there were such things like “copper” (for screen effects), “blitter” for (block copying, line/polygon drawing). All these things had to be re-implemented on the x86 PC just using the CPU. He even won 2nd place in a demo competition in Denmark back in the 90s.
Have a look: https://www.youtube.com/watch?v=DcfjlIyfBWY
There is something so wonderfully TRON about that :-)
Nifty. Very cool. And here I keep ‘thinking’ I need to kick the wheels of RISC-V assembly on the PICO 2 (not the PICO as stated in article), but here we have a person that wrote an awesome application fully in RISC-V assembly. All I’ve got to say is that’s dedication and is ‘awesome’. Hat’s off.
BTW, Pico and Pico 2s (and all the other vendor RP2040 and RP2350 based boards) are sure fun to work with. Currently working with a Adafruit Metro RP2350 with PSRAM. Like potato chips … one is never enough, or two, or three… I used a Kitronik simple robotics base board and a Pico 2 for building the two servo ‘Exceptionally useless box’. A bit overkill, but not that expensive and servo control was made easy with the robotics board…
Nice subtle nod to the amiga ball in that demo.