Welcome to the fully documented source code for the classic space game Elite on the BBC Micro Model B. Here's a quick summary of what you'll find on this site, whether you're looking to read about Elite and how it works, or you're just keen to get stuck into the source code.
Finding out how Elite works
- Read the about this project page for an introduction to this site.
- Read some of the deep dive articles to discover how Elite works under the hood. The following selection is a good place to start:
- The Elite memory map
- The split-screen mode
- Galaxy and system seeds
- The competition code
- Printing text tokens
- Check out the index of all deep dive articles to continue exploring.
Jumping straight into the source code
- See the map of the source code for an overview of the program structure.
- Read the notes on terminology used in this commentary, as without this it might be a bit tricky to follow the comments (in particular, you should understand the terminology I use for multi-byte numbers).
- There are loads of subroutines in Elite - literally hundreds. You can find them all listed and linked in the indexes of subroutines, variables, workspaces and macros.
- There's also an A-Z index of the whole source, which lists every single label across all the source files, a well as source code statistics, and an index of cross-references to help you find what you're looking for.
Tips for exploring the source code
- Important routines are flagged with a "*" in the site menu.
- You can explore the source code in two different ways. The easiest way is with each routine shown individually (see the "Elite source code by category" section in the site menu). These pages are small and easy to navigate in a browser. For example, the main game code starts at routine TT170, while the 3D scanner code is in SCAN.
- The other way is to explore the original source code file structure (see the "Elite source code by file" section in the site menu). The source files are pretty big and can be a bit unwieldy, but they do show the routines in their original context. The source splits into the following files:
- The Loader, which displays the loading screen, implements the copy protection and sets things up for the main game
- The main game source, which consists of Workspaces, Text tokens, Elite A, Elite B, Elite C, Elite D, Elite E, Elite F, Elite G and Ship blueprints
- The Big Code File, which concatenates the files produced by the above and adds a bit more copy protection
- See the page on Building Elite from the source for more about the original source files.
- You can flip between the two ways of looking at the source code using the "View in context" and "View individually" links in the header of each routine.
- When viewing the source code, you can click on variable and routine names to see more information in a popup. The source code also has syntax highlighting.
- The entry point for the main game code is routine TT170. If you want to follow the program flow all the way from the title screen around the main game loop, then there's a deep dive on program flow that has you covered.
Other helpful hints
- If you want to build the source on a modern computer, then check out the page on Building Elite from the source, and for the buildable source files you can visit the accompanying GitHub repository.
- The source code is designed to be read at an 80-column width and with a monospaced font, just like in the good old days. If you're viewing this on a phone, you may find it easier to view the source code pages in landscape.
- You can change the site's colour scheme by clicking the theme icons in the top-right corner. The dark themes are inspired by the colour schemes used in the BBC Micro Model B and 6502 Second Processor versions of the game, but with a modern, IDE-like twist.
I hope you enjoy exploring the inner workings of BBC Elite as much as I have.