Those games - and so many others - made me want to create my own games. I read every programming book I could find, trying to understand how the developers of the day crammed so much gameplay into such limited machines, with proportionally tiny amounts of CPU power and memory compared to the average systems of today. That fascination led me to a career as a professional software engineer, but I didn’t ship my first real game until very recently.
I created Code Like It’s 198x to be the resource I wish I’d had back in the day.
Right now, you can start on the ZX Spectrum (https://code198x.com/systems/sinclair-zx-spectrum/), building a series of BASIC games (https://code198x.com/systems/sinclair-zx-spectrum/basic/), or jump straight to Z80 assembly language (https://code198x.com/systems/sinclair-zx-spectrum/assembly/), building your first full game, Meteor Storm (https://code198x.com/systems/sinclair-zx-spectrum/assembly/m...). You can work directly in the browser, using the editors, assemblers and emulators I’ve embedded into the site, or you can download the tooling to use separately on Windows, macOS or Linux (Emulators: https://emu198x.github.io, Assemblers: https://asm198x.github.io).
The goals of the site are simple:
- Learn about the vintage systems and the cultural context around them
- Understand how they worked, what their limitations were, and how developers of the day worked around them
- Choose a system, and build a series of games for it in BASIC and/or Assembly (and maybe other languages later)
- Build a library of techniques that can be applied not only to games on these systems, but on projects for modern systems too
I’m actively working on content for the ZX Spectrum, Commodore 64 (https://code198x.com/systems/commodore-64/), NES (https://code198x.com/systems/nintendo-entertainment-system/), and Amiga (https://code198x.com/systems/commodore-amiga/), with other systems to follow based on demand from readers. You can also browse through the Pattern Library (https://code198x.com/patterns/), where I’m attempting to build a set of sample code that you can use in your own games, or explore The Vault (https://code198x.com/vault/), where I’m trying to connect the dots between all of the individuals and companies whose shoulders we stand on today.
The longer-term goal is to have a comprehensive set of documentation for each platform, helping readers to understand not only the systems, but the developers who worked with them and the techniques they discovered along the way. Much of this information is already available online, but not in one place, and some of it is buried in forum threads or hard-to-navigate wikis.
Focusing on vintage platforms allows us to understand how games are built, without all of the (necessary) abstraction layers that now sit between us and the machine, but many of the techniques are still applicable today - understanding how to write efficient code has never gone out of fashion, even when you have so much more headroom to play with.
At this stage, I’m interested in all feedback, positive or negative. If you have experience working on these systems already, I’d very much value your input. If not, please try to follow the lessons through - point out anything I’ve gotten wrong, anywhere the explanations are confusing or where you feel I’ve moved too fast or too slow. If you enjoy the site, or wish it had more content in certain areas, please also let me know - it’ll help guide me. All contributions are also welcome; the site, as well as the supporting tooling, is open-source and freely available, forever. It’s all up on GitHub (https://github.com/code198x/website).
Caveat: I’ve used AI extensively to help me research and write content for the site; I’ve been careful to reference primary sources wherever possible, and I aim to verify all code samples on the site - not only through my own tooling, but through selected third-party tools as well. Full details of that process are listed on the website.