DVID3B2 Maths (Arithmetic) |
- The advanced versions have a check to ensure the DVID3B2 routine doesn't try to divide by zero, a check the other versions lack.
|
DVID4 / dvid4_duplicate Maths (Arithmetic) |
- There are two differences in the DVID4 routine between the original versions and the advanced versions that look like they would affect the result of the division; I haven't yet worked out what this is all about.
|
EQSHP Equipment |
- The cassette and Electron versions reset the MCNT main loop counter when we refuel, which the other versions don't. I don't know why it would do this - perhaps it's a remnant of some other code that was cleared out in later versions?
|
EXNO Sound |
- The 6502SP version contains a bug fix to make sure very distant ships (i.e. where z_sign is non-zero) explode silently.
|
FMLTU Maths (Arithmetic) |
- The FMLTU routine in the advanced versions uses logarithms to speed up the multiplication.
- In the FMLTU multiplication routine, the Master version omits half of the logarithm algorithm when compared to the 6502SP version. The effect of this in-game is most noticeable in the Short-range Chart, where the fuel circle is a different shape to the other versions (the Master version looks rather less smooth, as if it has a slightly larger step size, though it's actually down to the less accurate FMLTU routine).
|
FX200 Utility routines |
- There's an extra RTS in the cassette and Electron versions that is never used, which is only noteworthy because spare bytes are very hard to come by in that version, as it's so heavily optimised for compactness of code.
|
Ghy Flight |
- Early cassette versions have a bug where performing a galactic hyperspace can drop you in the middle of nowhere in the next galaxy, with no escape. The bug is in the original source disc, and the text sources contain an attempted fix for the bug, which doesn't work, but which was refined in the later Stairway to Hell variant to fix the issue.
- Part of the bug fix for the "hyperspace while docking" bug (see below).
|
GTNME / GTNMEW Save and load |
- The disc version has a delay in the routine to fetch a commander name, though I'm not sure why.
|
HANGER Ship hangar |
- The ship hangar in the advanced versions draws the vertical lines for the backdrop 60 times, when it only needs to do this 15 times. Is this a quick way of making the hangar display hang around for longer, or is it just a mistake?
|
hyp Flight |
- Part of the bug fix for the "hyperspace while docking" bug (see below).
|
hyp1 Universe |
- The main bug fix for the "hyperspace while docking" bug, which affects the cassette, disc and Electron versions. Without the fix, if your hyperspace counter hits 0 just as you're docking, then you will magically appear in the station in your hyperspace destination, without having to go to the effort of actually flying there.
|
LL28 Maths (Arithmetic) |
- The LL28 routine in the advanced versions uses logarithms to speed up the multiplication.
- The Master version omits half of the logarithm algorithm when compared to the 6502SP version.
- The advanced versions of LL28 return the remainder in A, which the other versions don't.
|
LOIN (Part 2 of 7) / LOINQ (Part 2 of 7) Drawing lines |
- Part 2 of the LOIN routine in the advanced versions uses logarithms to speed up the multiplication.
- The Master version omits half of the logarithm algorithm when compared to the 6502SP version.
|
LOIN (Part 3 of 7) / LOINQ (Part 3 of 7) Drawing lines |
- The original versions contain a bug where the last pixel is skipped instead of the first pixel, but only when drawing lines that go right and up or left and down. This leads to a messy line join between this kind of line and lines with different slopes. This bug was fixed in the advanced versions.
|
LOIN (Part 5 of 7) / LOINQ (Part 5 of 7) Drawing lines |
- Part 5 of the LOIN routine in the advanced versions uses logarithms to speed up the multiplication.
- Part 5 of the LOIN routine in the advanced versions uses logarithms to speed up the multiplication.
- The Master version omits half of the logarithm algorithm when compared to the 6502SP version.
|
Main flight loop (Part 2 of 16) Main loop |
- The cassette and Electron versions have an extra CLC that isn't needed and could be culled.
|
Main game loop (Part 2 of 6) Main loop |
- A bug fix for the first version of disc Elite, in which asteroids never appeared.
|
Main game loop (Part 5 of 6) Main loop |
- The cassette version disables keyboard interrupts at the start of the minimal game loop, though I'm not entirely sure why.
|
MEBRK Save and load |
- This might be a bug fix? The 6502SP version returns from the disc access break handler if the error printing routine loops through a whole page, so it always exits. The other versions could crash if there is no null value in the block pointed to by (&FD &FE), so perhaps this fixes this issue?
|
MLS2 Maths (Arithmetic) |
- There's an extra bit of code in the disc version of the MLS2 routine that has no effect.
|
MU11 Maths (Arithmetic) |
- The loop in the MU11 routine in the advanced versions is unrolled to speed it up.
|
MULT1 Maths (Arithmetic) |
- The loop of the MULT1 routine in the advanced versions is unrolled to speed it up.
|
MV40 Moving |
- A CLC instruction is omitted from the cassette version in the rotation routine in MV40; it isn't needed, so this claws back one precious byte.
|
PIXEL Drawing pixels |
- The Master version doesn't draw single-pixel dots, as it omits the logic to check for distant dots and plot them using one pixel. The Long-range Chart is a good example of this, where the Master version draws a two-pixel yellow dash for every system.
|
PLANET Drawing planets |
- In the cassette version, in part 14 of the main flight loop, we didn't remove the planet/sun if it was behind us, so we do it here instead.
|
PLL1 (Part 1 of 3) Drawing planets |
- The disc version contains various bits of copy protection code injected into the Saturn-drawing routine in the loader. In the original versions of Elite, the only self-modifying code is in the copy protection, though later versions do use this technique in the main game code.
- The cassette and Electron versions contain various bits of copy protection code injected into part 1 of the Saturn-drawing routine in the loader.
|
PLL1 (Part 2 of 3) Drawing planets |
- The cassette and Electron versions contain various bits of copy protection code injected into part 2 of the Saturn-drawing routine in the loader.
|
PLL1 (Part 3 of 3) Drawing planets |
- The disc version contains various bits of copy protection code injected into part 3 of the Saturn-drawing routine in the loader. In the original versions of Elite, the only self-modifying code is in the copy protection, though later versions do use this technique in the main game code.
|
refund Equipment |
- This is a bug fix for the laser refund bug in the first version of disc Elite, where buying a laser that you already owned affected your credit balance.
|
SPIN Universe |
- This might be a bug fix? It prevents the value in A from being changed from a random number to the cargo type to be spawned, which would stop the amount of cargo being spawned from being random (so presumably the 6502SP and Master versions always spawn the same amount of cargo from each ship type, with no random factor at all?).
|
SVE Save and load |
- This is a bug fix in the enhanced versions to stop the competition code being printed with a decimal point, which can sometimes happen in the cassette and Electron versions.
|
TACTICS (Part 6 of 7) Tactics |
- This might be a bug fix? When enemies have no lasers, the cassette version still allows them to damage us if they are pointing at us, and it even makes the laser noise. This is fixed in other versions.
|
TITLE Start and end |
- The disc version contains various bits of copy protection code injected into the loader, and the results get checked in the main title sequence to make sure nothing has been changed.
|
TT102 Keyboard |
- This might be a bug fix? If "O" is pressed in the advanced versions, then the target system is set to home, and the routine terminates, which is different to the other versions; they stick around for one more move of the cursor, so presumably this fixes a bug where pressing "O" might not always move the cursor exactly to the current system.
|
TT103 Charts |
- The cassette and Electron versions don't draw crosshairs in routine TT103 if this is a space view, but the other versions don't do this check, so perhaps it isn't required?
|
TT111 Universe |
- The Master version fixes a bug in the code to calculate the distance between two systems, which can overflow in the other versions and give an incorrect result.
|
TT18 Flight |
- This might be a bug fix? The 6502SP version makes sure we don't end up with a negative fuel amount should we try a hyperspace jump that we don't have enough fuel for, though quite how we would get to this point is not clear.
|
TT219 Market |
- This is presumably a bug fix, as it skips the "Cargo?" prompt if we didn't enter a number when buying cargo.
|
Ze Universe |
- When spawning hostile ships in space, the cassette and 6502SP versions reuse the previous random number in X for the 4% check (i.e. the one used to determine the x and y signs of the new ship), while the disc version generates a new random number instead of reusing, so this change presumably improves the randomness of the spawning in the disc version somehow.
|
ZES2 Utility routines |
- The disc version's flight code has a different ZES2 routine - it still zero-fills a part of a page, but it fills the opposite part of the page to the other versions.
|