I would have paid the weight of the disk in gold to get this when I was 17...
This game was so good that I had to delete it, it ate into my productivity to a degree that really wasn't healthy so one fine morning after I saw a viper on the wall of my little Amsterdam studio I decided enough was enough and wiped the disk.
I have a serious problem with that kind of addiction and need to do radical stuff to keep myself on the straight and narrow and this was the first time that I ran into my lack of self discipline. Kudos to Braben and Bell for what they built, they really set a new standard for video games on 8 bit personal computers.
I never played the older Elite, but Elite Dangerous was/is the same for me. I love that game. I haven't played in years because I don't want to get sucked in again. I imagine the source code is significantly larger and less interesting though.
A great background read about the game's conception and its authors. It's a long read but it's really worth your time to get the gist of the atmosphere in which many eighties classics were made.
You’d think (and I’d wish) that Trenz’s achievements would have been dissected in conferences and/or YouTube videos. If only. I want to know in advanced layman’s terms how he did it.
There is an actively developed project called Elite Harmless which includes a fully commented disassembly of the original C64 version plus various improvements: https://github.com/Kroc/elite-harmless
> Dave Braben is a god on the same level as Carmack.
I don't think they're at the same level. The restrictions that Braben & Bell were working under were orders of magnitude more limiting than what was available by the time 'Doom' rolled around. Doom was definitely also a game changer but the quantum leap between Elite and what came before it was in my opinion of a different magnitude.
That does not diminish Carmack in any way, what he did was amazing. But what Braben & Bell did was considered absolutely impossible from a cycles budget perspective. And Doom never struck me as 'impossible' on the hardware that it was run on.
Doom got you a great game, Elite got you a career. That said: it is next to impossible really qualitatively compare people born at different points in time. Given the same limitations who knows what Carmack would have some up with and if Braben & Bell were born a few decades later it may well have been the reverse.
One thing I know for sure: creativity thrives under constraints.
I agree. One of the problems I hear sometimes as an Elite Dangerous player is that the game is a “mile wide” , yet an inch deep. The game relies a lot on text (from the galnet news to the station boards) to convey what is happening. While that keeps things manageable from a time and money angle, the problem is that in this day and age it’s better/expected to show and let the players experience it. It also doesn’t trust the players with a lot of agency beyond visiting places and shooting/trading things. I think the game relies a lot on its legacy rather than new bold moves that elevate to the same status as its forbear.
That said, there is nothing like E:D out there right now, and it’s still a great achievement.
That was the game (I saw it first on an Apple ][) that seemed to take computer gaming to a whole other level. It may have actually been the game, even though I played it so briefly, that made me see the computer game as a beast that was suddenly unlike anything you might see in the arcade at the time. It could be escapist and a simulation at the same time — you could play at living some sort of Star Wars adventure.
I had a C64 (still do, it has a USB interface and some new caps. these days).
Elite was jaw dropping stuff when it came out. For me the tactical display - the oval thing with two pixel objects and elevation plotted from the current nominal plane was an absolute game changer. You could literally (OK graphically) see what the heck was going on around you. For me the Wing Commander series of games (PC) improved on that somewhat with more clues wrt velocity as well as position. I'm sure there are others - I grew up a bit!
As well as an amazing HUD thing, the scope of the game was incredible. I've read write ups on how the universe was done and it is very impressive.
Indeed, my first response was: "That's not possible". The second was: Let's take it apart and see how it works. That was something Braben and Bell had foreseen, Elite was very hard to reverse engineer, layer upon layer of tricks to stop you from getting to what actually ran. Very impressive stuff.
The whole idea that someone can make the computer that you think you know absolutely inside-out do stuff in real time that you'd have trouble doing at all no matter how much time you've got is what made it so intriguing.
One of the more interesting moments in trying to crack the copy protection that stopped you from seeing the naked assembly in the loader is that at some point the game code contains the string 'does your mother know that you are doing this?' or something to that effect. That was more effective than the last 10 hours or so of decryption stepping through the code in Exmon because I realized I was utterly outclassed...
The disassembly and analysis itself is impressive enough but the things he's done with it since are simply incredible for anyone who grew up playing the game... i mean a teletext version!! just ridiculous
I reverse engineered Starglider for DOS to put in a cheat just to convince myself that I really had seen a hopping robot as an enemy once above a certain game score.
i do have some fond memories of the bbc micro - in the 80s i wrote an implementation of the kermit file transfer protocol for it in basic, but it was glacially slow. a bit later i rewrote it in 6502 assembler, and incorporated a vt100 terminal emulator. everything was much faster - the 6502 could be pretty quick once you understood its addressing modes, which were peculiar.
No. Elite relied very heavily on being able to reprogram the video chip on the fly at different scanlines to produce custom modes. If you don't have the exact same video arrangement there is almost no chance that it will run unmodified.
Flipping modes on the VDU at specific scan lines on the Beeb was a standard thing that quite a few games and demos and applications did, e.g. Mode 4 or Mode 0 for B&W high resolution text, and Mode 2 or Mode 5 with some clever HAM for low-resolution but colourful graphics. The only mode switch that didn't work well was switching back and forth between Mode 7 (Teletext), it was mostly a timing issue, coupled with the fact the teletext character generator did weird things to the Beeb's video output.
I was pretty active in the BBC Scene at the time and had a front row seat to a whole pile of the backstory here, and yet I do not recall anybody that pulled this off in a stable and reproducible manner (T1 + some 6845 register hacks).
The problem was that timing the switch point in software was fraught with trouble because you just might end up making the switch at the wrong moment which caused it to jump vertically (or garble a part of your screen). The other problem was that if you wanted perfect timing it was possible but that left you without enough cycles to run your game. Braben & Bell solved this to the point that it was considered stable enough for inclusion in production. Similar hacks had been done on the Atom prior to the BBC so it wasn't as if the knowledge wasn't out there but no game publisher had - as far as I know - seen fit to release a game that used it.
It would be great if you could answer this and point out exactly where this was used prior to Elite on the Beeb, that would set the record straight on this once and for all.
I agree, I think Elite was the first commercial example of a split-screen mode on the BBC. It does flicker a bit at the switchover point when the disk is being accessed, as it is interrupt-based, but it's not too bad. There’s lots of detail on how it works here:
My favourite inplementation of this technology is in Geoff Crammond's Revs, which doesn't flicker at all, as the palette switches are cleverly done where they won't be seen if they aren’t perfect. Read all about it here:
What really gets me about this whole discussion is that lots of this stuff feels like yesterday to me. And yet, it's been almost 40 years. Mnemonics and register offsets for peripherals are all jumping to attention for immediate use. But don't ask me what I ate last week...
I am prettty sure I could write a decently sized Z80 or 6502 program for the Beeb or the Speccy from scratch without reference, or at least a decent set of 3D transformation functions. I could not tell you how to load a JSON file from a folder in Python if my life depended upon it. I have to write that latter code on an almost weekly basis. I will say that the internet and instant access to online references has absolutely destroyed my memory more than any amount of age or caffeine.
I think in part this is because the size of the building blocks has gone up tremendously. In the dark ages you'd write roughly as much code for your program as there was ROM in the machine to begin with. That balance made it possible to 'know' every byte of the map and to have an intimate understanding of the software that came with your machine, it's CPU and how it all hung together.
The balance has shifted to the point where your program is likely only an extremely small fraction of the total that is running on your machine and that powers your application. So it has simply become impossible to be that familiar with the remainder.
Having given this quite some thought over about 20+ or so years, and having written a little on the phenomenon, purely as an layman in psychology but as a professional in software development, and observing many developers, and myself as well, I have to strongly disagree on the point you make, but am open to discussion on the matter.
I believe that assistive technologies, from the most advanced tools we have today, to the most mundane of "hinting of parameters to a function" and code base navigation via "jump to definition/declaration" which first started appearing in Visual C++ 6.0 around 1998 there has been a degradation in committing facts about the architecture of the code and functions and APIs to memory.
This isn't a case of "bah humbug, the youth of today and their fancy geejaws" but very much a case of "why bother remembering that when the machine will remind me." I am sinful of this too. Guilty, as charged, m'lud.
My conclusions are very much observational but also align with the scant amount of professional research done on the subject. For confirmation bias, I recommend the Outer Limits episode "Stream of Consciousness."
I note that there are four areas in life where this is occuring most profoundly: cooking, navigation, software development, telephone numbers (and other contact details). Whilst it has been many years since I could tell what every cycle, byte and register was doing in any reasonably complex system I work on, I can still walk through most of what is going on in a system from the silicon running the code to the UI appearing on another person's screen on the other side of the world.
It isn't the understanding, it's the remembering what that function was called again, and where did I put that function I wrote ten minutes ago?!? And it isn't age related, because I've tested that hypothesis too both on myself and on others. Assistive technologies are wonderfully enabling, but they make us dumber.
I'm more than willing to concede that that memory assist is also a factor. But the amount of data is so large now that that too has a role, even if you really wanted to remember all of it you probably could not.
I can see the difference in my own head: the knowledge I have about the 8 bit systems that I worked on is pretty much complete, from the hardware schematic, instruction set, memory map, ROM contents all the way up to whatever code I wrote back in the day.
As opposed to the UNIX systems that I worked on, which for me really predated any assistive tech because I didn't use any. But my knowledge about the C-standard library, while good is not 100% coverage and I know I occasionally have to look up the parameters to various functions.
And then we come to today, where for my current project (pianojacq.com) I still don't use any assistive technologies (no, seriously) but I also know that I do not know more about the runtime environment than I absolutely need to get the job done.
I don't have a smartphone, obviously I'm getting older as well but my own code I know inside out, for all of those phases.
I don't recall if Elite was the first game or not to have stable mixed mode. It was most likely the first, and once demonstrated, other developers implemented the idea too. I recall that the mode 4 of Elite wasn't strict mode 4 because they wanted a certain amount of pixels that would divide evenly by a number, so when the interrupt fired, the mode could be changed. It's been a few years since I worked on the Beeb.
You probably already know this, but to fill in context the screen would flicker because the NMI that handles disc IO would fire, and would be serviced before IRQ1 if both fired together, and also you cannot interrupt an interrupt.
BBC Micro Advanced User Guide pages 359 and 370 detail the 6845 and ULA demonstrated Mode "8" and I recall Practical Computing and Acorn User also had listings for doing tricks with the interrupts and the mixed mode, though don't ask me issue numbers.
I picked a random video of yours "ABug 09 Explaining Elite" and jumped forward to 2:22 to skip the intro, and said "oh, that's a matrix transposition function" when the code popped up on the screen. It's funny how some of that crap sticks with you.
Author here, sorry to hear that. The side menu is quite large so there is a bit of a delay on loading - the project has grown pretty big, and so has the nav!
It works OK on my ancient iPhone 6, so it shouldn't really be unresponsive anywhere, but I'm clearly going to have to look into it. Apologies.
There are no ads or trackers on my site, so it can’t be that - it is just the page content and some JavaScript, nothing more. I suspect it’s because I’m using an old off-the-shelf script for the navigation, and the size of the nav has grown too big for it to run reliably on all devices. So I need to recode it more efficiently, which won’t help you right now, but will hopefully do so next time.
This is what you get when you get a site author who would rather be coding in 8 bits than in HTML. ;-)
This game was so good that I had to delete it, it ate into my productivity to a degree that really wasn't healthy so one fine morning after I saw a viper on the wall of my little Amsterdam studio I decided enough was enough and wiped the disk.
I have a serious problem with that kind of addiction and need to do radical stuff to keep myself on the straight and narrow and this was the first time that I ran into my lack of self discipline. Kudos to Braben and Bell for what they built, they really set a new standard for video games on 8 bit personal computers.