Honest question: Why is this kind of retro programming at all attractive to younger people who didn’t grow up with that hardware?
For people like me, it’s clearly childhood nostalgia. But to be honest, 8-bit programming was so painful that people couldn’t wait to get rid of those limitations back then. (I tend to think the 16-bit era was the sweet spot in terms of capabilities vs. complexity.)
Mystery and craftsmanship. It's the same feeling as restoring an old car and being captivated with some very simple, ingenious and alien mechanics. Same with computers, the older it gets the more interesting it becomes, down to deciphering some 1947-1948 machine code running on the ENIAC.
1. It's a kind of code golf - or rather, it's about seeing how much one can squeeze out of a highly limited and fixed platform. Writing this, I think of things like Mahoney's Cubase64 ( https://www.youtube.com/watch?v=PTGkf21UpJ8 ), which uses a combination of skilled coding and creative (mis)use of hardware functionality to perform real-time effects on sampled audio data on the Commodore 64. As the demonstration itself states: "You need 32-bit, 2000MHz, 1GB at least; what if... 8-bit, 1MHz, 64KB is enough?".
2. Creating a game which can stand its own to the platform's contemporaries on an 8-bit ecosystem can be reasonably achieved by a bedroom coder in their spare time. To do so for modern consoles or machines, one typically needs a higher budget and multiple people.
For this point alone, though, there are arguably easier ways to accomplish this. PICO-8, the herald of the "fantasy computer" phenomenon, created a system inspired by 8-bit limitations in graphics and sound, but offering a modified Lua interpreter in place of coding assembly by hand, in an attempt to balance the stack more towards creativity and away from complexity. (And, of course, nobody is stopping anyone from simply making a retro-styled game with modern tools. Many indie games do exacly that. There's two separate "notable" Game Boy jams on Itch.io - one enforces games actually targetting the real platform, the other cares more about matching the look/feel.)
3. The ability to reason about every component of the system down to bare metal is a welcome retreat from writing complex, object-oriented code running on top of stacks on top of libraries on top of runtimes...
In the end, it's a novelty which tickles a particular part of my brain, I suppose. So long as I enjoy it...
The 10-liner BASIC competition, for example, can show you an answer: its fun, its powerful, and .. we seem to have lost something in the rush for the next upgrade.
The last two years' winners were both astonishing in completeness and functionality - in 10 lines, a LUNAR LANDER clone .. and then, a year later in another 10 lines of code, a DUNGEON CRAWLER.
When you go backwards and see how things were, you also see what we've lost.
I find programming where you get to know exactly what each instruction does is a very satisfying feeling. Makes me feel empowered, self-sufficient, excited, etc.
A bit like bootstrapping a village out of primitive resources in Minecraft.
The software stack is enormously deep. If you want to make a "real" game now, you do it in an engine, adding your code to a framework on top of libraries on top of an operating system, on top of drivers, on top of bios... You're just so far removed from anything tangible.
Tinkering with an 8-bit (or a virtual 8-bit) system feels much more tangible. Visceral.
Creative limitations would be a big reason. I'm sure someone else can explain it better, but being forced into a far smaller scope than you'd usually work in makes you have to consider the impact of every small thing. Its not just a programming thing, people do the same with music, art, any medium.
Its also quite nice as it acts as a levelling of the playing field. The limitations of modern tech are far outside the reach of most solo-devs, but put 100 devs on it, and you could reach it (and therefore create something more technically impressive). With those limitations on, a solo dev can far more conceivably create something technically impressive.
Unless it has real world consequences (eg you can export to a gameboy ROM or something), I don't really care if its based on an actual retro system or a fantasy one, they achieve those same results.
Having to program down to the bit (not byte) sparks a little something for me. I feel proudness in the craft, even if this is a bit (pun!) far frow nowadays’s constraints.
I just learned the hex decades (1, 16, 256, 4k, 64k, 1M, 16M, 256M, 4G…) and now if I need to generate a 1M empty file I know that `head /dev/zero -c $((0x100000)) > 1M.bin` would do without having to multiply 1024 three times. This kind of little things. :)
Nevertheless, it can still be useful if you write Linux device drivers or some other low-level tasks. Microcontroller programming, too, but without having to buy them in the first place (MCU shortage…).
Creativity flourishes with the right restrictions. In this case, the graphics and sound limitations. Also, just because you're targeting old platforms doesn't mean you need to use old platform's tools. Modern tools make it so much easier to develop on these old platforms, check out this talk about coding in C++17 for the Commodore 64 https://www.youtube.com/watch?v=zBkNBP00wJE
Hah. If you're keen bean on this sort of thing, check out the pico-8 [1] and make games in it! I'm not affiliated in any way, but I highly recommend the workflow and the experience.
I can also recommand WASM-4 (https://wasm4.org/), that has even more constraints (screen resolution, color count, …) and that you can program with your language of choice, as long as it can compile to WASM (eg. C, C++, Rust, probably Nim…).
That's really neat and it's not just 8-bit. There's a section for Verilog as well. The instant and continous feedback makes me bang out some small circuits just for fun.
Wow. "We'll run your design in real time in the browser, displaying the output on a simulated CRT." They have a book to use it with and say it would work on hardware (the linked hardware is out of stock of course).
Yes, I was just looking at the verilog part and the speed of development and feedback is certainly orders of magnitude quicker than other dev environments, and i've got some ideas of things to explore with it.
My personal favorite 8-bit gaming machine is the Arduboy. They combine an Atmega 32u4 with a minimum of hardware to create a surprisingly good console.
You can modify and extend it to your hearts content and there's a usable software stack and helpful community grown up around it.
For people like me, it’s clearly childhood nostalgia. But to be honest, 8-bit programming was so painful that people couldn’t wait to get rid of those limitations back then. (I tend to think the 16-bit era was the sweet spot in terms of capabilities vs. complexity.)