News for hackers. Stuff that matters.

MarkMoxon

Thank you, that's a good point. The site started off with just the BBC Micro version, and I never expanded the book references to be clearer.

Anyway, I have reworded every reference to books in the commentary so they now contain the full title and author list, so hopefully people will be able to find the relevant tomes. I've also linked to the books from my "useful links" page in a more prominent manner:

https://elite.bbcelite.com/about_site/useful_links.html

I hope that helps!

Glad you like it! I’ve been working on this for nearly five years, along with my other software archaeology projects - I started in May 2020, back in lockdown. It’s a true labour of love.

Here’s a timeline of the project so far:

https://elite.bbcelite.com/about_site/site_history.html

I’m sure it will keep growing, there’s always something more to write about…

Thank you! I came at it from the BBC Micro angle, which was the system I grew up with, and I have to say that analysing Elite been a brilliant way to learn about other 8-bit platforms. I’ve documented the NES version and now the Commodore 64, and the Apple II is next.

It’s the retro equivalent of discovering that if you like the Beatles, you’ll probably like the Stones, The Who and Pink Floyd. :-)

I keep a list of everything that isn’t 100% clear in my commentary, here:

https://elite.bbcelite.com/about_site/to-do_list.html

This is not a big list, and these are all pretty subtle aspects of the game. After 4 years of analysis, I think we’re pretty close to understanding pretty much everything, which is nice.

Well, exactly. This project is a hobby, and I’d like to try to keep it as my happy place!

Besides, I’ve published PDFs of my travel writing sites, and the thought of trying to keep a code repository, a website and a PDF in sync fills me with dread…

Honestly, for me personally and on this specific project with its specific history of copyright issues (look it up!), that would be crossing the line into disrespecting the copyright situation.

Websites are ethereal, in a sense, as they are easy to switch off and hard to copy and distribute. PDFs and books are the opposite. Sure, websites get archived and repos get forked, but I think PDFs and books fall into a different area.

I run these projects very cautiously and very carefully. I don't think publishing a book or PDF containing copyright material is a good idea in this instance, to be honest!

Yeah, it's a bit tricky when the code you are documenting is copyright, and you aren't the copyright owner. Website is one thing, but publishing a book? I suspect that is asking for trouble.

Also, books can't be updated, and I update this stuff all the time...

This should answer your question:

https://elite.bbcelite.com/about_site/about_this_project.htm...

Some parts of Elite were documented prior to my project, particularly the procedural generation and ship data blocks. But none of it was documented to this level; it's taken time, lots of it!

I love this game, and I figured it deserved a proper homage. Or, to put it another way, this is a labour of love. :-)

Oolite is normally quoted at this point. I think it's in Objective C? But exactly how much it relates to the original game's code, I don't know.

https://github.com/OoliteProject/oolite

The original Elite was reverse-engineered into C by Christian Pinder as part of the Elite: The New Kind project. The source is out there. It's a brilliant bit of work.

You can use a search engine to find it.

Yes. The original Elite was reverse-engineered into C by Christian Pinder as part of the Elite: The New Kind project. The source is out there. It's a brilliant bit of work.
All NOPs should be explained in the commentary, apart from the ones in the fast loader routine in the elite-gma1.asm file. Are these the ones you mean?

If so, I haven't documented the fast loader as it's not really a feature of Elite, but I think the NOPs there are for timing when talking to the CIA1. The fast loader is documented in the Elite Harmless project, here, which might help:

https://github.com/Kroc/elite-harmless/blob/kroc/src/boot/gm...

The long string of NOPs in the elite-firebird.asm source are padding to ensure the vector overrides align with the correct addresses, as described in the commentary.

Most other NOPs are commenting out the checksums if that feature is disabled by the build; again, they should be explained in situ.

If you're wondering about any others, I'd be happy to explain!

No, the Cougar is nothing to do with missions (in the 6502 versions, anyway - the other platforms have different mission code). It's just a rarely called part of the random spawning routine. Very rarely called.

The mission-related ship is the Constrictor, which you only bump into at the end of that mission.

Obligatory link: https://elite.bbcelite.com/deep_dives/the_constrictor_missio...

It is in-game, but it is astonishingly rare. Specifically, there is a 0.011% chance of spawning a Cougar during each ship spawning routine, which is around 1 in 9000 ship spawnings

And it's got a cloaking device so it doesn't appear on your scanner.

Anyone who has genuinely seen one of these in-game is a really lucky commander!

Lots of details here:

https://elite.bbcelite.com/deep_dives/the_elusive_cougar.htm...

Yup. "Never fly without a rebuy", as they say!
That's not fear, it's an indication of the respect in which I hold the original authors (whom I believe are still the copyright holders). If Bell or Braben asked me to take it this down, I'd roll with it. Same if Geoff Crammond asked me to take down my Aviator and Revs analyses; of course I'd comply. It's their code.

I have copyright content out there in the world (including the commentary aspects of this project), and I'd want to be able to control what happens to that too. Seems fair to me.

Unfortunately it isn't that simple. Check 3 only looks to see if we are moving backwards into the station slot. This is a bit pointless to calculate as falling backwards would mean that a number of the other checks (e.g. angle of approach) will already be failing.

This is why check 3 is omitted from later versions of Elite, including the C64 version; it isn't needed.

Lots of information on the docking checks here:

https://elite.bbcelite.com/deep_dives/docking_checks.html

Besides, is this a bug or a feature? Elite lore says that machine intelligence is banned in the galaxy, so I like to think of this as fitting in with that. Docking computers can kill you in Elite - and it's the same in Elite Dangerous. :-)

I love the BASIC assembler on the BBC Micro and Archimedes. It is a work of art.

Incidentally, the fully buildable Lander source code in the website's accompanying git repository is also in BBC BASIC format - as an attempt to imagine what the original source might have looked like.

A Python script converts it to vasm-compatible format for compiling, but you can also build it on a real Archimedes if you want to. See https://lander.bbcelite.com/about_site/building_lander.html for details.

OK, I guess if Braben says it's a demo, then it's a demo - fair point!

I still think it's a harsh term, especially when Lander has features that Zarch doesn't, and a really different atmosphere.

Ah well, me and Lander will be hovering here in the corner, throwing rocks at Zarch and all its fancy features. ;-)

I've always felt that calling Lander a "demo" was harsh. It's a fully featured game in itself, and has features that Zarch doesn't (such as falling rocks and hover mode). Yes, Zarch was the result of continued development of Lander, but Lander stands on its own, and to me, that makes it a game in its own right, not a demo.

It's also a lot more relaxing to play. There's nothing more chill than flying over the bucolic landscape of Lander - no aliens or viruses in this version!

That's a good point - I wondered what the correct term was, and Fourier synthesis makes a lot more sense! I will update the article accordingly; thank you for pointing that out.
It is procedurally generated (of course it is, this is David Braben we’re talking about!).

I’ve written a deep dive on how it works, here:

https://lander.bbcelite.com/deep_dives/generating_the_landsc...

It’s basically a Fourier analysis. Very, very clever!

Yeah, I’ve had to add the same disclaimer to all my analyses of old code (e.g. Elite, Revs, Aviator). I’m not sure there’s any other solution - the original copyright owners still hold the copyright, and that’s just how it is. You can’t grant a license if you don’t own the rights…
In terms of scale, there is the concept of the tile size, which is set to 0x01000000, and everything uses the same coordinate units, so it’s possible to extrapolate this to give some sense of scale.

You can see the configuration variables here:

https://lander.bbcelite.com/source/all/workspaces.html

I’ll probably add more scaling information as I do the deep dives.

And now I post that I see that I have failed to link to this file from the left nav, which won’t have helped! So I’ll sort that out…

The coordinates of the shadow are calculated here:

https://lander.bbcelite.com/source/main/subroutine/drawobjec...

and they are drawn here:

https://lander.bbcelite.com/source/main/subroutine/drawobjec...

The shadow is a very simple projection straight down onto the landscape, which isn’t totally accurate, but it’s quick and easy and looks good enough. The shadow doesn’t drape over the shape of the landscape, and the ship shadow appears on the ground beneath objects rather than on top of them, but you don’t really notice.

Lovely, simple, effective code. Much like the rest of Lander, really!

Technically, Lander was written for the ARM1, as it originated on an Acorn ARM Evaluation System. As a result there are no MUL instructions in Lander, as they only got added in the ARM2.

That makes Lander first ever ARM game, and probably the only game ever written for the ARM1.

Re:Documented source code for Elite on the NES on Saturday October 07, 2023 @07:31AM (#37800824)
It is indeed different on PAL vs NTSC. The code relies on the NMI being called at 50Hz - as a result a number of timings are wrong on the NTSC version, so the music is too fast, the combat demo auto-play doesn't work properly, the time reported for completing the combat demo is wrong, and so on. The NTSC version is unfinished, and this is just one area where it shows.
Re:Documented source code for Elite on the NES on Saturday October 07, 2023 @07:16AM (#37800763)
A shout-out is definitely due to Ian Bell and his website. This is where you can find the original source code for the BBC Micro version. Those original disks form the basis for all my Elite commentaries, including the NES project we're talking about here.

The core of the 1991 NES version (around 30% of the 128K ROM) is essentially the 1986 BBC Master version, which itself is a development of the original BBC Micro version from 1984. The Commodore 64 and Apple II versions are also cut from the same cloth (and they were developed on a BBC Micro, too).

Most of the code in banks 0, 1 and 2 is directly copied from the original BBC version, with a bit more in bank 7. There are new graphics, sound and controller routines bolted on the front, but the beating heart is still the Beeb version...

Re:Documented source code for Elite on the NES on Saturday October 07, 2023 @06:52AM (#37800650)
The quote is:

  My greatest published achievements technically would have to be fitting BBC Cassette "Elite" into 32K of RAM including the screen, and later the Nintendo Entertainment System conversion of "Elite" that used a character mapped display and a single NES controller. The NES is my favourite published conversion and was not thought technically feasible until we'd done it.
See http://www.elitehomepage.org/archive/b5081501.htm for the full interview

I interpret this as meaning his favourite version is the BBC Micro cassette version, while his favourite conversion is the NES one. But I'm a BBC fanboy, so that might just be me being hopeful. :-)

Re:Documented source code for Elite on the NES on Saturday October 07, 2023 @06:45AM (#37800617)
Indeed - "slaves" got changed to "robot slaves", while "narcotics" became "rare species" and "liquor/wines" became "beverages". You can still trade firearms, though, so its not entirely squeaky clean...

Older »