Live data from Hacker News

Documented and annotated source code for Elite on the Commodore 64

github.com

21–30 of 56 posts

Re: Documented and annotated source code for Elite on the Commodore 64

#21
post #9

Earlier quoted context omitted.

Long copyrights are a cancer in our society. Just notice the fear in his writing - "without hesitation". We're talking about a ~40 year piece of work here. 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?

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), a…

I admire your integrity. At the same time, these "rights" come from flawed laws. The code should no longer be "theirs".

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.

Re: Documented and annotated source code for Elite on the Commodore 64

#22

Earlier quoted context omitted.

That is true, but that doesn't mean that someone can't do it anyway. Copyright is a right, not an obligation (unlike trademarks where enforcement is required to preserve the trademark) 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…

> unlike trademarks where enforcement is required to preserve the trademark That's a myth. It suits trademark lawyers and aggressive owners to pretend this is obligatory but it isn't.

Really? https://en.wikipedia.org/w/index.php?title=Generic_trademark...>

Re: Documented and annotated source code for Elite on the Commodore 64

#23
post #20

Just scanned some files and I see a lot of NOPs, sometimes a few consecutively. Any idea why?

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!

Re: Documented and annotated source code for Elite on the Commodore 64

#25

Has anybody done something similar, but converted to a modern language?

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.

Re: Documented and annotated source code for Elite on the Commodore 64

#27

This is really good resource for someone, who wants to learn assembly. Can somebody please share this good or closer documented source code in other languages such as C++, C or any other.

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.

Re: Documented and annotated source code for Elite on the Commodore 64

#28

Has anybody done something similar, but converted to a modern language?

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.

Although C probably counted as a modern language back then (after all it's not B) today I think "modern" probably means at least Java and likely something from this century like Rust or Typescript.

Re: Documented and annotated source code for Elite on the Commodore 64

#29

Earlier quoted context omitted.

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.

Although C probably counted as a modern language back then (after all it's not B) today I think "modern" probably means at least Java and likely something from this century like Rust or Typescript.

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

Re: Documented and annotated source code for Elite on the Commodore 64

#30
Very curious how Mark Moxon was able to understand and comment so much of the code. Just... a very big fan with a lot of free time?

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

Post reply on HN