[HN Gopher] Documented and annotated source code for Elite on th...
___________________________________________________________________
Documented and annotated source code for Elite on the Commodore 64
Author : thunderbong
Score : 145 points
Date : 2024-12-16 23:42 UTC (3 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| lyu07282 wrote:
| YouTube video/documentary about the game:
|
| "The game that couldn't be written" -
| https://youtu.be/lC4YLMLar5I
| mcraiha wrote:
| Maybe someone can now fix the following bug? "if you started the
| auto-dock on the wrong side of the station, it would crash into
| it instead"
| teddyh wrote:
| You aren't allowed to make any changes.
|
| _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
| _flux wrote:
| It seems though the person who did this repo already violated
| the copyright by adding these annotations to the source code,
| correct?
|
| 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..
| jfim wrote:
| The creator of the repository does mention it:
|
| > 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.
| glimshe wrote:
| 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?
| danielbln wrote:
| Two reasons: lobbying and the Mouse.
| ddingus wrote:
| The Mouse has not come back for a third round. Yet.
| MarkMoxon wrote:
| 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.
| glimshe wrote:
| 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.
| Pannoniae wrote:
| 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
| it, which happens fairly commonly.
|
| This is not a substantial barrier for making a patch like
| that.
| tialaramex wrote:
| > 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.
| teddyh wrote:
| Really? <https://en.wikipedia.org/w/index.php?title=Gener
| ic_trademark...>
| tialaramex wrote:
| Yes, genericization is not actually a risk that
| aggressive lawyers can help you with, except in the sense
| that if they bankrupt you now it's not a problem any
| more.
|
| 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!
| taneliv wrote:
| Is it perhaps as easy as adding the check on
| https://github.com/markmoxon/elite-source-code-commodore-64/...
| ?
| MarkMoxon wrote:
| 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. :-)
| voidUpdate wrote:
| Pretty much the first time I ever tried to dock, the
| docking computer set me down squarely on top of another
| player's ship. After trying my best to cancel the docking,
| I ended up losing my docking request, which meant I wasn't
| allowed to be there, and got the space police after me.
| I've not really played it much since
| MarkMoxon wrote:
| Yup. "Never fly without a rebuy", as they say!
| another2another wrote:
| Well that is some well documented code, and no mistake.
|
| It keeps mentioning a Cougar ship type, but I don't remember them
| in the game?
| MarkMoxon wrote:
| 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...
| another2another wrote:
| Hmm, I wonder if that's what the second mission was to find?
|
| 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.
| MarkMoxon wrote:
| 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...
| qsi wrote:
| Just scanned some files and I see a lot of NOPs, sometimes a few
| consecutively. Any idea why?
| MarkMoxon wrote:
| 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!
| FrustratedMonky wrote:
| Has anybody done something similar, but converted to a modern
| language?
| MarkMoxon wrote:
| 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.
| tialaramex wrote:
| 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.
| MarkMoxon wrote:
| 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
| FrustratedMonky wrote:
| anything would be great.
|
| 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.
| astrobe_ wrote:
| "Modern" means "we fixed the deficiencies of the old
| project and introduced our own". When I read "modern" I
| understand it's likely to be a variation of the second
| system effect [1]. When it's not just advertisement/PR BS.
|
| 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-...
| cptnapalm wrote:
| Note: there's a crash bug. If you try to look at the local
| sun, the game will try to explode it, but suns can't explode
| so the game crashes.
| Lerc wrote:
| Would you have any objection to your version being used as an
| AI test?
|
| 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.
| astrobe_ wrote:
| Oolite [1] is implemented in Objective-C and scripted in
| Javascript. The "strict mode" base game has the look'n'feel of
| the original - there's even an option for wireframe display
| somewhere - but its vast ecosystem of mods (500+ last time I
| played, some years ago) is much more interesting.
|
| 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.
|
| [1] https://oolite.space/ [2] https://www.luanti.org/
| Koshcheiushko wrote:
| 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.
| MarkMoxon wrote:
| 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.
| WillAdams wrote:
| That would be the domain of "Literate Programming":
|
| http://literateprogramming.com/
|
| esp. see:
|
| http://literateprogramming.com/adventure.pdf
| mgkimsal wrote:
| 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
| MarkMoxon wrote:
| 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. :-)
| WillAdams wrote:
| Have you considered turning this into a book?
|
| If you used Literate Programming principles:
|
| http://literateprogramming.com/
|
| then it could become a seamless narrative which could be very
| expressive.
| MarkMoxon wrote:
| 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...
| WillAdams wrote:
| Maybe just make a PDF and publish that to the site?
|
| I am doing that at:
|
| https://github.com/WillAdams/gcodepreview/blob/main/gcode
| pre...
|
| (but admittedly it's a very different project and no
| copyright complexities)
| MarkMoxon wrote:
| 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!
| kstrauser wrote:
| I understand and respect your opinion there. In the
| spectrum of copyright violation, I might be willing to
| let my kid install a copy of a game I bought on their own
| computer, but I would definitely _not_ sell copies of it.
|
| 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.
| WillAdams wrote:
| Cogent points.
|
| 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.
| hathawsh wrote:
| You don't need to be the copyright owner. All you need is
| a license from the copyright owner. It can't hurt to
| contact Ian Bell and see what you can negotiate.
| http://www.iancgbell.clara.net/
|
| 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...
| MarkMoxon wrote:
| 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...
| hathawsh wrote:
| Good for you! Keep it simple.
| 0xDEADFED5 wrote:
| I've never owned a C64 or played Elite, but the
| dedication shown to your hobby is inspiring, thanks for
| the effort, it's very cool.
| anyfoo wrote:
| The comments you pasted in particular are about stuff that
| makes sense and that someone who wants to fully understand some
| source code can readily figure out, if they put their mind to
| it.
|
| 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???")...
| MarkMoxon wrote:
| 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.
| robertlagrant wrote:
| I loved Elite on the BBC B as a kid. It was before my time, but
| we had inexpensive tastes in our personal computing growing up. I
| absolutely loved it, and I can definitely understand someone
| spending this much time on it.
___________________________________________________________________
(page generated 2024-12-20 23:01 UTC)