The joys of 8-bit programming
There is something strange about the word "retro" and material objects. The items that used to be retro become antique and receive the status of collectables to be permanently displayed as nostalgia items. These "retro" objects are often thought of not only being aged but also expensive. But retro computers and platforms are not only more accessible and mostly free, but also have aspects that are relevant to the modern computers and can be fun to engage with. Collecting and running 8-bit computers, which are now considered retro, does not have to be expensive. It is full of interesting challenges that are relevant to the new platforms that we develop programs for today.
Most likely the reasons for the older platforms like Nintendo NES, Commodore and ZX Spectrum to be gaining popularity is nostalgia. 8-bit computers that are several orders of magnitude slower and have less memory than a smartphone have become highly popular. People create YouTube channels about them, spend hours playing the old games, showing off that the muscle memory has not been lost and reviving the old good times. Nostalgia actually sells well judging from how many "Classic" editions of various gaming consoles have been sold out during the last few years. To be fair, some of the games have actually aged well and do look and feel good even today. At the same time there are new games being developed for these platforms.
Why would anyone care about the 8-bit today? Essentially, the way the computers work has not changed. The machine language commands, registers, flags, and memory stacks still work in the same way as forty years ago. Understanding these low level aspects of the computer operation enhances the understanding of more abstract and advanced aspects of operation today.
For example, some of the debugging tools created for the modern languagesâ€™ IDEs allow you to look at the disassembly code and see how it gets translated from the high level language down to the machine language. This knowledge allows you to appreciate the power of the modern computers on the one hand and shows you explicitly how spoiled we are on the other hand, that is how careless and inefficient some of the programs are with handling the resources. Working with 8-bit today is a good way to get a feel of what working with small single purpose devices looks like as well as how lower level programming of drivers looks like. Drivers require detailed knowledge of what and how the machines are doing on the low level and 8-bit computers are a great way to dig into that.
One of the most important reasons for popularity of the retro computers is the feeling they provide when you overcome the 8-bit challenges and experience "aha!" moments. A computer that can only do addition and subtraction requires some analysis and work to make multiplication and division possible. It needs to be optimized for speed and efficiency. There is no such thing as a random number, for instance, and there are multiple ways of overcoming that challenge. The idea of "less is more" is often applied for 8-bit development and solution that sounds ridiculous at first might be just be actually good enough. After understanding how the basics work, one starts understanding piece by piece how everything works in a game and how all of this fits into 48K of memory. The ideas build up and allow you to generate new ideas of doing the same but even better, faster and more efficiently. You can try out new ideas and those might actually work well in the way you thought or on the contrary, show you that there must be a better way.
Back in the 8-bit days the amount of expensive tools, books, information and community was limited in comparison to what is accessible about the 8-bit computers today. There are groups, forums, videos, books and enthusiasts who can help with getting started. In addition, most of it is free. The emulators and modern IDEs make it possible to write, test, and debug code with the speed, convenience, and forgiveness that developers using tapes and floppy disks could not dream of. There has been done so much around these systems that people come up with the tricks of doing something these computers were not build for. For example by calculating the cpu cycles and output frames, it is possible to mix the frames of different colors to create a new color that does not actually exist in the 8-bit framework. There are developers who dedicate their work just for the demo scene. They manage to make 3D-looking graphics and to use melodies that push the 8-bit machines to their limits.
It is possible to get one of these machines off the Internet and have a ritual of saving and loading a game from a tape, proving that it is not only on the emulator that your creation works but on the original hardware as well. For the original machines various hardware add-ons are available that connect old computers with the new ones for developing, deploying testing and debugging. Some add-ons even make it possible for the 8-bit computers make use of the Internet.
8-bit games are not only programming but also sounds, graphics and music. One person can do everything in those areas but there are enthusiasts who focus on just graphics and music. Many of the music ang graphics resources can be found on the Internet and are free. There are people who will help out with questions, ideas and might be willing to join development and provide help. The limits of 8-bit machines have actually become one of their most interesting aspects. There is no need for a team of developers, an orchestra or Photoshop to make it an interesting personal challenge. 8-bit computers provide for projects that one can work on. At the same time the scope of such a project can become a fun hobby activity for a small team.
For the developers working with 8-bit systems it is not just about learning a new programming language. It involves understanding the hardware and its limits. It provides getting as close as possible to executing commands to a machine with the most control. While for some it might look like activities that have no value today, for the others it could become an interesting exercise of creative thinking, optimizing, polishing the code and discovering something new. It might surprise you if you give it a try.