I can't think of any technology that has changed as much as computers. Having been in the games business for 27 odd years now it's remarkable to see just how far things have come (and to realise how much work has been involved in constantly having to adapt and learn as the technology changed underneath us).
These days I can expect to work on systems that have gigabytes of RAM and I have access to various computing cores that have a staggering amount of processing power. Some of my game levels use up to 16 internally rendered screens that are composited to form the final output. For each and every pixel on each and every one of those screens I can run fairly complex programs in parallel and still not drop any frames. It's amazing.
Before that, you felt yourself fortunate even to have a few internal buffers and to be able to do a bit of bilinear interpolation if you were lucky.
Before *that*, you were grateful to have a dot-addressable bitmap at all, and the bottleneck was how quickly you could simply move stuff around on it, never mind any fancy processing or anything.
Go back further and you had only character displays, if you were lucky with "sprites" on top. You could only move certain things in certain ways, and if you ran out of things and couldn't fool the machine into giving you any extra then you just had to grit your teeth and constrain your game design.
Back further still, and even sprites weren't there; you were lucky if you could change the bitmaps in your characters, and colour was only for posh people.
Go right back, close to the very dawn of game-historical time, and you find the Atari VCS. A machine so staggeringly primitive that it beggars belief that anybody got anything decent out of it, yet a machine which was on the market continuously for well over a decade, and upon which some absolute miracles of programming were wrought by some of the best assembly language programmers of all time.
The Atari VCS had 128 bytes of RAM. Not 128k, mind, I mean 128 individual little bytes of RAM. No separate space for system variables, no video RAM, just 128 bytes for everything. That and a chip called the TIA, Television Interface Adapter.
The TIA is kind of like a really primitive game display system - like something that you would expect to do no more than create PONG with - but which someone forgot to fully build. So it'll do some stuff for you but you basically have to do most of the tricky stuff on your own, in software, with bugger all RAM and a slow 8-bit CPU. It was known as a tough beast to code on and the number of crap games that came out for it is a testament to the difficulty of the coding and the fact that most people who attempted the task weren't up to it.
However it was this very nature of the machine which inspired true brilliance from some who coded it, brilliance which brought into existence games which should never have been possible on such a limited, primitive old beast, and which kept the VCS alive for many years after it ought to have sunk into obscurity.
It's not even dead yet, really. In these days where most coding is done in high level languages and abstracted so far away from the underlying hardware that writing optimised code is almost an irrelevance, there are a few hobbyists who have taken to coding the old VCS just for the fun and challenge of it. It's easy to find the tools you need, and you don't even need a real VCS; there are great emulators available for free.
I kinda miss the days of hacking 6502 myself, and I've never programmed the VCS before, but always thought that one day I'd enjoy the challenge of at least getting something simple going on there. Since in the week I've been super busy finishing up things for the imminent release of GR+++, and today was too rubbish and rainy to go out, I've taken to doing a bit of VCS noodling myself; that picture shows as far as I've got :). It may look a bit rubbish but trust me just getting the llama and goat up there and some colour in them takes a fair bit. The change from solid colour to Venetian blind colours in the background occurs at that exact horizontal position due to counting out the precise time taken by every instruction in your inner loop.
OK, I can't really explain more without sounding excessively nerdy. But it's fun and strangely enough quite relaxing :). And it's fun to do some proper manly coding again, bang on the metal, and remember where we came from and where we've been :).