Skip to navigation

Elite on the BBC Micro and NES

Different variants of the BBC Micro cassette version

This site contains the source code for two different variants of the BBC Micro cassette version of Elite:

  • The variant produced by the original source discs from Ian Bell's site
  • The variant built from the text sources from the same site

It turns out that the BASIC source files found on the original source disc on Ian Bell's site are slightly different to the text source files on the same site, hence the two different variants.

See below for comprehensive details of the differences between the variants, along with links to the relevant bits of the source code.

All these differences are implemented within the source code using BeebAsm IF statements, which determine which variant is compiled. These IF statements check the values of the relevant source code variables (_SOURCE_DISC and _TEXT_SOURCES), which are themselves set by parameters to the build command (such as variant=executive). See the associated repository for more about building different variants from the source.

To play Elite with an SSD disc image, load the disc image into drive 0 and press SHIFT-BREAK.

Ian Bell's source disc

The source disc from Ian Bell's site produces an early version of the game. The binaries produced may match the very first Acornsoft release of BBC Micro cassette Elite but investigations in this area are ongoing.

Default build in repositoryYes
Product detailsAcornsoft SBG38 (TBC)
Build command parametervariant=source-disc
Source code variable_SOURCE_DISC
Verification checksums (crc32)See the GitHub repository
Download SSD disc imageOriginal, Flicker-free
Play this variant onlineOriginal, Flicker-free

Ian Bell's text sources

The text files containing the source, also from Ian Bell's site, produce a different binary to the original source disc. This variant contains some refinements that were retained in the other versions of Elite, so it looks like this might be a later development than the source disc variant. Whether or not it was ever released is not yet known.

Default build in repositoryNo
Product detailsTBC
Build command parametervariant=text-sources
Source code variable_TEXT_SOURCES
Verification checksums (crc32)See the GitHub repository
Download SSD disc imageOriginal, Flicker-free
Play this variant onlineOriginal, Flicker-free

It has the following features that differentiate it from the other variants:

  • The galactic hyperdrive routine contains an extra JSR TT111 instruction at the start of the Ghy routine, which sets the current system to the nearest system. There is a bug in the BBC Micro cassette version where the galactic hyperdrive will take us to coordinates (96, 96) in the new galaxy, even if there isn't actually a system there, so if we jump when we are low on fuel, it is possible to get stuck in the middle of nowhere when changing galaxy. All the other versions contain a fix for this bug that involves adding an extra JSR TT111 instruction just after the coordinates are set to (96, 96), which finds the nearest system to those coordinates and sets that as the current system. The cassette version on the original source disc doesn't contain this instruction, and although the text sources do, it's in the wrong place, as the fix only works if it's done after the new coordinates are set, not before. See the code variations for Ghy for details.
  • In order to fit this extra call in (which takes three extra bytes), the text sources also contain four modifications that create space for the call, which together save five bytes (see WARP and KILLSHP).
  • The TTX66 routine, which is called when we change space view, stops laser pulsing by setting LAS2 to 0 instead of LASCT, which is slightly more efficient (see TTX66).

All these changes are carried through to all other versions of the game (although the Ghy modification moves to later in the routine in the other versions), so it looks like the text sources contain a slightly later variant of the game than the source disc.