No idea how this will be formatted, but the level of understanding in the comments is quite deep for just having access to the original source. Or did the original source have this level of comments as well?
How long does a project like this take to comment?
.QQ22 SKIP 2 ; The two hyperspace countdown counters ; ; Before a hyperspace jump, both QQ22 and QQ22+1 are ; set to 15 ; ; QQ22 is an internal counter that counts down by 1 ; each time TT102 is called, which happens every ; iteration of the main game loop. When it reaches ; zero, the on-screen counter in QQ22+1 gets ; decremented, and QQ22 gets set to 5 and the countdown ; continues (so the first tick of the hyperspace counter ; takes 15 iterations to happen, but subsequent ticks ; take 5 iterations each) ; ; QQ22+1 contains the number that’s shown on-screen ; during the countdown. It counts down from 15 to 1, and ; when it hits 0, the hyperspace engines kick in
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. :-)
If you used Literate Programming principles:
http://literateprogramming.com/
then it could become a seamless narrative which could be very expressive.
Also, books can't be updated, and I update this stuff all the time...
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 am doing that at:
https://github.com/WillAdams/gcodepreview/blob/main/gcodepre...
(but admittedly it's a very different project and no copyright complexities)
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!
Edit: never mind, it sounds like Ian sold his copyright and now there's a mess. Hmm. https://arstechnica.com/gaming/2017/03/elite-dangerous-crowd...
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…
But it’s a massive bummer to me that copyright is preventing someone from publishing their research on a 40 year old game that hasn’t been available for sale in decades. I don’t know exactly where that lands on my moral spectrum, but I put it far closer to the left than to the right, legalities aside.
If you are able to get permission for a game code and then do this sort of analysis as a Literate Program and publish that as a book, you'd be in rather rarified company, and I'd certainly buy a copy.
Seriously, thanks for the details. This was a bit of a pivotal game for me in ... '86 IIRC. It's been interesting to see so much of a following over the decades. Just confirms that whatever was intriguing to me connected with so many other people too!
It's when things don't make sense that it gets interesting, because then you have to guess the original author's intentions, suspect a bug, question your understanding, or deal with other uncertainties. That's usually when a bunch of question marks start to appear in reverse engineering comments (e.g. "increment xyz???")...
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.
Can somebody please share this good or closer documented source code in other languages such as C++, C or any other.
You can use a search engine to find it.
http://literateprogramming.com/
esp. see:
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. :-)
Under GitHub's rules, you have the right to read and fork this repository... but that's it. No other use is permitted, I'm afraid.
— README.md
It wouldn't be a reason or validation for others doing the same, of course.
However, whatever one would choose to do, it's best not to do it in GitHub..
> My hope is that the educational and non-profit intentions of this repository will enable it to stay hosted and available, but the original copyright holders do have the right to ask for it to be taken down, in which case I will comply without hesitation. I do hope, though, that along with the various other disassemblies and commentaries of this source, it will remain viable.
Patents last 20 years and people keep filing them in the millions. We remain an inventive species. Obviously the protection works. Why do we need to protect copyrights for near a century?
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.
I won't write a long and boring critique of the current copyright length, but this work should be in the public domain at this point - nobody should be entitled to ask you to take it down. It should belong to you as much as it does to them. Like Algebra and Hamlet.
It in fact belongs to humanity, as the creation of the work itself was built on top of everything that came before it.
If someone makes a patch and publishes it, the rightsholders do have a case against whoever published it, but that requires enforcement in the form of a C&D or a lawsuit. The rightsholder might very well decide to not do anything about it, which happens fairly commonly.
This is not a substantial barrier for making a patch like that.
That's a myth. It suits trademark lawyers and aggressive owners to pretend this is obligatory but it isn't.
Genericization occurs when more or less everybody uses your word mark instead of a generic product class. But you can't actually sue everybody. And if you chase say, popular media, it just becomes a joke - Stephen Colbert can't use the word literally everybody you know uses because his bosses will get sued, ha ha, but it doesn't stop you and it won't stop genericization from happening. Notice you won't find any courts checking that you spent enough on legal fees as otherwise you lose for inadequate enforcement. They only care that ordinary people, who you wouldn't sue anyway, used this word in a generic way.
Beyond that, it's not at all obvious that this is a problem you'd want to prevent. Why are Kleenex and Xerox so well known? It's surely not because they're unsuccessful!
It keeps mentioning a Cougar ship type, but I don't remember them in the game?
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...
I played it on the CBM64, and seem to remember being given a mission to find a stealth ship. Flew around loads, but never found it as far as I can remember.
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...
"The game that couldn't be written" - https://youtu.be/lC4YLMLar5I
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!
I don't play it anymore because I'm more interested in building games and game building now (with Luanti [2]), but it is IMO one of the top FOSS titles.
It seems plausible that AIs could port this code to other architecures. It seems like a good large scale task that most systems probably can't manage right now, but perhaps soon.
Oolite does look like Mac, done in COCO? Even Mac/Coco looks dated. Not the screens, they actual look is great.
A Rust version would be cool.
When it's part of a request, it generally means "I don't know tech XYZ but I'm pretty sure I could enjoy it and contribute if it was using a tech I know". Which is generally a form of procrastination.
I dislike Javascript and I don't know Objective-C, and it didn't prevent me to tinker with Oolite, which uses both, because I like the game (now, tbh assembly is "hardcore" so OP's request is legitimate).
[1] https://www.joelonsoftware.com/2000/04/06/things-you-should-...